<?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>127887</bug_id>
          
          <creation_ts>2014-01-29 21:53:19 -0800</creation_ts>
          <short_desc>Make it possible to implement JS builtins in JS</short_desc>
          <delta_ts>2014-03-20 13:19:17 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>alecflett</cc>
    
    <cc>berto</cc>
    
    <cc>bfulgham</cc>
    
    <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jsbell</cc>
    
    <cc>ossy</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>sergio</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>973597</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-29 21:53:19 -0800</bug_when>
    <thetext>Make it possible to implement JS builtins in JS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973599</commentid>
    <comment_count>1</comment_count>
      <attachid>222627</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-29 22:26:59 -0800</bug_when>
    <thetext>Created attachment 222627
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973600</commentid>
    <comment_count>2</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-29 22:31:37 -0800</bug_when>
    <thetext>Waiting for all the bots to turn as this will no doubt hose the lot while i get the various build systems going again.  Help would be appreciated for anyone not using DerivedSources.make</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973730</commentid>
    <comment_count>3</comment_count>
      <attachid>222669</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-30 08:14:26 -0800</bug_when>
    <thetext>Created attachment 222669
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973737</commentid>
    <comment_count>4</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-01-30 08:25:30 -0800</bug_when>
    <thetext>Let me check the EFL build. ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973738</commentid>
    <comment_count>5</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-30 08:26:28 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Let me check the EFL build. ;)

I have probably got the CMake build commands completely wrong.  Would &lt;3 cake calling Derivedsources.make</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973740</commentid>
    <comment_count>6</comment_count>
      <attachid>222670</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-30 08:34:41 -0800</bug_when>
    <thetext>Created attachment 222670
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973743</commentid>
    <comment_count>7</comment_count>
      <attachid>222669</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-01-30 08:47:22 -0800</bug_when>
    <thetext>Comment on attachment 222669
Patch

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

I still have build failures, but I&apos;m on fixing them.

&gt; Source/JavaScriptCore/CMakeLists.txt:820
&gt; +    # JSCBuiltins

Please don&apos;t indent this.

&gt; Source/JavaScriptCore/CMakeLists.txt:825
&gt; +    COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/generate-js-builtins JSCBuiltins.h JSCBuiltins.cpp

JSCBuiltins.h -&gt; ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/JSCBuiltins.h
JSCBuiltins.cpp -&gt; ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/JSCBuiltins.cpp

&gt; Source/JavaScriptCore/CMakeLists.txt:830
&gt;  list(APPEND JavaScriptCore_SOURCES
&gt;      ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/InspectorJSBackendDispatchers.cpp
&gt;      ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/InspectorJSFrontendDispatchers.cpp

Add ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/JSCBuiltins.cpp here and 
${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/JSCBuiltins.h to JavaScriptCore_HEADERS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973746</commentid>
    <comment_count>8</comment_count>
      <attachid>222671</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-30 08:53:32 -0800</bug_when>
    <thetext>Created attachment 222671
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973753</commentid>
    <comment_count>9</comment_count>
      <attachid>222671</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-01-30 09:26:48 -0800</bug_when>
    <thetext>Comment on attachment 222671
Patch

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

I still get same build failures as the EFL EWS notices, but still debugging.

&gt; Source/JavaScriptCore/CMakeLists.txt:827
&gt; +# JSCBuiltins
&gt; +add_custom_command(
&gt; +    OUTPUT ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/JSCBuiltins.cpp ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/JSCBuiltins.h
&gt; +    MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/generate-js-builtins
&gt; +    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/builtins/*.js
&gt; +    COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/generate-js-builtins  ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/JSCBuiltins.h  ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/JSCBuiltins.cpp
&gt; +    VERBATIM)
&gt; +

I played a little bit with it, but it still needs fine tuning, 
because the input wasn&apos;t passed to the generator command.

The following code generated the cpp and the h for me:

# JSCBuiltins
file(GLOB JSCBuiltins_js_files &quot;${CMAKE_CURRENT_SOURCE_DIR}/builtins/*.js&quot;)
add_custom_command(
    OUTPUT ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/JSCBuiltins.cpp ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/JSCBuiltins.h
    MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/generate-js-builtins
    DEPENDS ${JSCBuiltins_js_files}
    COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/generate-js-builtins ${JSCBuiltins_js_files} ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/JSCBuiltins.h ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/JSCBuiltins.cpp
    VERBATIM)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973758</commentid>
    <comment_count>10</comment_count>
      <attachid>222674</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-30 09:30:44 -0800</bug_when>
    <thetext>Created attachment 222674
Patch

more efl fixing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973760</commentid>
    <comment_count>11</comment_count>
      <attachid>222675</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-30 09:32:46 -0800</bug_when>
    <thetext>Created attachment 222675
Patch

more efl fixing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973766</commentid>
    <comment_count>12</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-01-30 09:44:43 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Created an attachment (id=222671) [details]
&gt; Patch

I managed to reach linking (but still fail) with it and the
fix I suggested in comment #9 with some more fixes:
- added #include &quot;Operations.h&quot; back to Source/JavaScriptCore/bytecode/CodeBlock.h
- added #include &quot;JSFunctionInlines.h&quot; to Source/JavaScriptCore/runtime/JSCellInlines.h
- added &quot;${JAVASCRIPTCORE_DIR}/builtins&quot; to set(JavaScriptCore_INCLUDE_DIRECTORIES in Source/JavaScriptCore/CMakeLists.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973771</commentid>
    <comment_count>13</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-01-30 09:51:42 -0800</bug_when>
    <thetext>I got the following:

Linking CXX shared library ../../lib/libjavascriptcore_efl.so
CMakeFiles/JavaScriptCore.dir/runtime/JSPromiseConstructor.cpp.o: In function `JSC::JSPromiseConstructorFuncAll(JSC::ExecState*)&apos;:
JSPromiseConstructor.cpp:(.text._ZN3JSCL27JSPromiseConstructorFuncAllEPNS_9ExecStateE+0x315): undefined reference to `JSC::JSString::getStringPropertySlot(JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&amp;)&apos;
JSPromiseConstructor.cpp:(.text._ZN3JSCL27JSPromiseConstructorFuncAllEPNS_9ExecStateE+0x86d): undefined reference to `JSC::JSString::getStringPropertySlot(JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&amp;)&apos;
JSPromiseConstructor.cpp:(.text._ZN3JSCL27JSPromiseConstructorFuncAllEPNS_9ExecStateE+0xa4d): undefined reference to `JSC::JSString::getStringPropertySlot(JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&amp;)&apos;
JSPromiseConstructor.cpp:(.text._ZN3JSCL27JSPromiseConstructorFuncAllEPNS_9ExecStateE+0x1282): undefined reference to `JSC::JSString::getStringPropertySlot(JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&amp;)&apos;
CMakeFiles/JavaScriptCore.dir/runtime/JSPromiseConstructor.cpp.o: In function `JSC::JSPromiseConstructorFuncRace(JSC::ExecState*)&apos;:
JSPromiseConstructor.cpp:(.text._ZN3JSCL28JSPromiseConstructorFuncRaceEPNS_9ExecStateE+0x2da): undefined reference to `JSC::JSString::getStringPropertySlot(JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&amp;)&apos;
CMakeFiles/JavaScriptCore.dir/runtime/JSPromiseConstructor.cpp.o:JSPromiseConstructor.cpp:(.text._ZN3JSCL28JSPromiseConstructorFuncRaceEPNS_9ExecStateE+0x637): more undefined references to `JSC::JSString::getStringPropertySlot(JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&amp;)&apos; follow
CMakeFiles/JavaScriptCore.dir/runtime/RegExpConstructor.cpp.o: In function `JSC::RegExpConstructor::getBackref(JSC::ExecState*, unsigned int)&apos;:
RegExpConstructor.cpp:(.text._ZN3JSC17RegExpConstructor10getBackrefEPNS_9ExecStateEj+0x131): undefined reference to `JSC::JSString::getStringPropertySlot(JSC::ExecState*, unsigned int, JSC::PropertySlot&amp;)&apos;
CMakeFiles/JavaScriptCore.dir/runtime/RegExpConstructor.cpp.o: In function `JSC::RegExpConstructor::getLastParen(JSC::ExecState*)&apos;:
RegExpConstructor.cpp:(.text._ZN3JSC17RegExpConstructor12getLastParenEPNS_9ExecStateE+0x131): undefined reference to `JSC::JSString::getStringPropertySlot(JSC::ExecState*, unsigned int, JSC::PropertySlot&amp;)&apos;
collect2: error: ld returned 1 exit status

Any idea?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973772</commentid>
    <comment_count>14</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-30 09:53:21 -0800</bug_when>
    <thetext>EFL really needs to fix the file mime type, and not strip the build failures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973773</commentid>
    <comment_count>15</comment_count>
      <attachid>222678</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-30 09:53:30 -0800</bug_when>
    <thetext>Created attachment 222678
Patch

more efl fixing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973775</commentid>
    <comment_count>16</comment_count>
      <attachid>222679</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-30 09:55:29 -0800</bug_when>
    <thetext>Created attachment 222679
Patch

more efl fixing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973809</commentid>
    <comment_count>17</comment_count>
      <attachid>222684</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-30 10:33:29 -0800</bug_when>
    <thetext>Created attachment 222684
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973812</commentid>
    <comment_count>18</comment_count>
      <attachid>222685</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-30 10:41:27 -0800</bug_when>
    <thetext>Created attachment 222685
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973815</commentid>
    <comment_count>19</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-01-30 10:49:37 -0800</bug_when>
    <thetext>Windows is failing to build because it can&apos;t find the new BuiltinExecutables.h file:

&gt;C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\obj32\JavaScriptCore\DerivedSources\JSCBuiltins.cpp(34): fatal error C1083: Cannot open include file: &apos;BuiltinExecutables.h&apos;: No such file or directory

We control the include search path in our Visual Studio property sheets.

You need to add &quot;..\bindings\;&quot; to the &lt;AdditionalIncludeDirectories&gt; in Source\JavaScriptCore\JavaScriptCore.vcxproj\JavaScriptCoreCommon.props

That should fix the build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973816</commentid>
    <comment_count>20</comment_count>
      <attachid>222686</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-30 10:50:19 -0800</bug_when>
    <thetext>Created attachment 222686
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973831</commentid>
    <comment_count>21</comment_count>
      <attachid>222686</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-01-30 11:04:38 -0800</bug_when>
    <thetext>Comment on attachment 222686
Patch

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

&gt; Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreCommon.props:8
&gt; +      &lt;AdditionalIncludeDirectories&gt;..\;..\tools\;..\runtime\;..\llint\;..\jit\;..\disassembler\;..\heap\;..\debugger\;..\assembler\;..\profiler\;..\yarr\;..\interpreter\;..\bytecode\;..\builtins\;..\dfg\;..\bytecompiler\;..\parser\;..\API\;..\ftl\;..\bindings\;..\inspector\;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\JavaScriptCore\DerivedSources\;$(ConfigurationBuildDir)\include\;$(ConfigurationBuildDir)\include\JavaScriptCore\;$(ConfigurationBuildDir)\include\private\;$(WebKit_Libraries)\include;$(WebKit_Libraries)\include\private;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;

Yay!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973835</commentid>
    <comment_count>22</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-01-30 11:07:38 -0800</bug_when>
    <thetext>I&apos;m seeing a few errors that look like:

EFL and GTK fail because of:

make: *** No rule to make target `DerivedSources/JavaScriptCore/JSCBuiltins.cpp&apos;, needed by `DerivedSources/JavaScriptCore/LLIntDesiredOffsets.h&apos;.  Stop.

Windows:
make: *** No rule to make target `/home/buildbot/WebKit/Source/JavaScriptCore/JSCBuiltins.h&apos;, needed by `JSCBuiltins&apos;.  Stop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973840</commentid>
    <comment_count>23</comment_count>
      <attachid>222686</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-01-30 11:12:40 -0800</bug_when>
    <thetext>Comment on attachment 222686
Patch

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

&gt; Source/JavaScriptCore/DerivedSources.make:86
&gt; +JSCBuiltins: $(JavaScriptCore)/JSCBuiltins.h $(JavaScriptCore)/JSCBuiltins.cpp

I think this needs to be the build target; It thinks it should be finding &quot;Source/JavaScriptCore/JSCBuiltins.{h,cpp}&quot;, but they are actually build in &quot;${WebKit_Output}/${Configuration}/DerivedSources/JavaScriptCore/&quot; (or something like that).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973849</commentid>
    <comment_count>24</comment_count>
      <attachid>222694</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-30 11:20:12 -0800</bug_when>
    <thetext>Created attachment 222694
Patch

Fix derived sources makefile properly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973892</commentid>
    <comment_count>25</comment_count>
      <attachid>222704</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-30 11:59:58 -0800</bug_when>
    <thetext>Created attachment 222704
Patch

hopefully get all the includes right</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973961</commentid>
    <comment_count>26</comment_count>
      <attachid>222722</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-30 13:26:05 -0800</bug_when>
    <thetext>Created attachment 222722
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974038</commentid>
    <comment_count>27</comment_count>
      <attachid>222744</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-30 15:01:49 -0800</bug_when>
    <thetext>Created attachment 222744
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974063</commentid>
    <comment_count>28</comment_count>
      <attachid>222750</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-30 15:20:38 -0800</bug_when>
    <thetext>Created attachment 222750
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974086</commentid>
    <comment_count>29</comment_count>
      <attachid>222757</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-30 16:30:19 -0800</bug_when>
    <thetext>Created attachment 222757
Patch

Lets just try and make the compiler stop complaining about this warning</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974102</commentid>
    <comment_count>30</comment_count>
      <attachid>222762</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-30 16:59:22 -0800</bug_when>
    <thetext>Created attachment 222762
Patch

Lets not include random characters</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974142</commentid>
    <comment_count>31</comment_count>
      <attachid>222762</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-01-30 17:44:33 -0800</bug_when>
    <thetext>Comment on attachment 222762
Patch

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

r=me.  Make sure all EWS go green!

&gt; Source/JavaScriptCore/ChangeLog:15
&gt; +        without breaking the offset extractor.  This result of this refactoring

&quot;This result&quot; =&gt; &quot;The result&quot;

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:549
&gt; +            

Eliminate whitespace

&gt; Source/JavaScriptCore/generate-js-builtins:2
&gt; +# Copyright (C) 2013 Apple Inc. All rights reserved.

Update year.

&gt; Source/JavaScriptCore/runtime/CommonIdentifiers.h:137
&gt; +    macro(promise) \

Shouldn&apos;t this be in a different patch?

&gt; Source/JavaScriptCore/runtime/CommonIdentifiers.h:140
&gt; +    macro(resolve) \

Ditto

&gt; Source/JavaScriptCore/runtime/CommonIdentifiers.h:168
&gt; +    macro(writable) \
&gt; +    macro(iterator) \
&gt; +    macro(iteratorNext) \
&gt; +    macro(reject) \
&gt; +    macro(fulfillmentHandler) \
&gt; +    macro(rejectionHandler) \
&gt; +    macro(deferred) \
&gt; +    macro(countdownHolder) \

Ditto

&gt; Source/JavaScriptCore/runtime/JSStringInlines.h:2
&gt; + * Copyright (C) 2012, 2013 Apple Inc. All rights reserved.

Update copyright year.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974144</commentid>
    <comment_count>32</comment_count>
      <attachid>222771</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-30 17:53:11 -0800</bug_when>
    <thetext>Created attachment 222771
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974146</commentid>
    <comment_count>33</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-30 17:55:38 -0800</bug_when>
    <thetext>&gt; &gt; Source/JavaScriptCore/runtime/JSStringInlines.h:2
&gt; &gt; + * Copyright (C) 2012, 2013 Apple Inc. All rights reserved.
&gt; 
&gt; Update copyright year.
No new code here, this is code motion, so i&apos;m keeping the existing copyright dates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974152</commentid>
    <comment_count>34</comment_count>
      <attachid>222774</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-30 18:09:07 -0800</bug_when>
    <thetext>Created attachment 222774
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974159</commentid>
    <comment_count>35</comment_count>
      <attachid>222777</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-30 18:25:08 -0800</bug_when>
    <thetext>Created attachment 222777
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974185</commentid>
    <comment_count>36</comment_count>
      <attachid>222784</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-30 19:45:53 -0800</bug_when>
    <thetext>Created attachment 222784
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974187</commentid>
    <comment_count>37</comment_count>
      <attachid>222785</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-30 19:57:47 -0800</bug_when>
    <thetext>Created attachment 222785
Patch

i can haz fix windows\?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974196</commentid>
    <comment_count>38</comment_count>
    <who name="Sergio Correia (qrwteyrutiyoup)">sergio</who>
    <bug_when>2014-01-30 20:44:29 -0800</bug_when>
    <thetext>Trying to build it on EFL, it gives this:
JSFunction.h:102:21: error: inline function &apos;bool JSC::JSFunction::isHostFunction() const&apos; used but never defined [-Werror]

I removed the inlne keyword from there and the build went on, breaking on WK2, due to not finding JSCBuiltins.h, which was solved by adding &quot;${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}&quot; to the WebKit2_INCLUDE_DIRECTORIES list of WebKit2/CMakeLists.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974267</commentid>
    <comment_count>39</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-01-31 04:27:39 -0800</bug_when>
    <thetext>The GTK port builds with an additional JSCJSValueInlines.h inclusion added in Source/JavaScriptCore/dfg/DFGJITCode.cpp, but there are WebProcess crashes when running layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974300</commentid>
    <comment_count>40</comment_count>
      <attachid>222816</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-31 08:25:01 -0800</bug_when>
    <thetext>Created attachment 222816
Patch

and now to not break literally every build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974303</commentid>
    <comment_count>41</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-31 08:28:27 -0800</bug_when>
    <thetext>(In reply to comment #38)
&gt; Trying to build it on EFL, it gives this:
&gt; JSFunction.h:102:21: error: inline function &apos;bool JSC::JSFunction::isHostFunction() const&apos; used but never defined [-Werror]
&gt; 
&gt; I removed the inlne keyword from there and the build went on, breaking on WK2, due to not finding JSCBuiltins.h, which was solved by adding &quot;${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}&quot; to the WebKit2_INCLUDE_DIRECTORIES list of WebKit2/CMakeLists.txt

Yeah, i realised that the inline keyword there was causing the inline foo warning.  I may update the style bot to disallow inline directives inside class/struct definitions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974306</commentid>
    <comment_count>42</comment_count>
      <attachid>222817</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-31 08:43:20 -0800</bug_when>
    <thetext>Created attachment 222817
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974310</commentid>
    <comment_count>43</comment_count>
      <attachid>222819</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-31 08:53:41 -0800</bug_when>
    <thetext>Created attachment 222819
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974313</commentid>
    <comment_count>44</comment_count>
      <attachid>222820</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-31 09:03:20 -0800</bug_when>
    <thetext>Created attachment 222820
Patch

i hate this</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974342</commentid>
    <comment_count>45</comment_count>
      <attachid>222824</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-31 10:28:21 -0800</bug_when>
    <thetext>Created attachment 222824
Patch

lets see if efl and gtk builds now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974373</commentid>
    <comment_count>46</comment_count>
      <attachid>222828</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-31 11:06:05 -0800</bug_when>
    <thetext>Created attachment 222828
Patch

now lets try efl</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974396</commentid>
    <comment_count>47</comment_count>
      <attachid>222832</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-31 11:45:52 -0800</bug_when>
    <thetext>Created attachment 222832
Patch

now lets try windows</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974406</commentid>
    <comment_count>48</comment_count>
      <attachid>222833</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-31 12:05:15 -0800</bug_when>
    <thetext>Created attachment 222833
Patch

dammit efl build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974407</commentid>
    <comment_count>49</comment_count>
      <attachid>222834</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-31 12:08:10 -0800</bug_when>
    <thetext>Created attachment 222834
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974410</commentid>
    <comment_count>50</comment_count>
      <attachid>222834</attachid>
    <who name="Sergio Correia (qrwteyrutiyoup)">sergio</who>
    <bug_when>2014-01-31 12:11:54 -0800</bug_when>
    <thetext>Comment on attachment 222834
Patch

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

&gt; Tools/DumpRenderTree/CMakeLists.txt:61
&gt; +    &quot;{DERIVED_SOURCES_JAVASCRIPTCORE_DIR}

${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}

Hopefully the last thing needed :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974417</commentid>
    <comment_count>51</comment_count>
      <attachid>222835</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-31 12:28:49 -0800</bug_when>
    <thetext>Created attachment 222835
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974434</commentid>
    <comment_count>52</comment_count>
      <attachid>222838</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-31 12:50:53 -0800</bug_when>
    <thetext>Created attachment 222838
Patch

Rebase to convince windows to apply the patch properly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974451</commentid>
    <comment_count>53</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-01-31 13:30:06 -0800</bug_when>
    <thetext>Committed r163195: &lt;http://trac.webkit.org/changeset/163195&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979663</commentid>
    <comment_count>54</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-02-11 16:54:06 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979664</commentid>
    <comment_count>55</comment_count>
      <attachid>223913</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-02-11 16:54:11 -0800</bug_when>
    <thetext>Created attachment 223913
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979665</commentid>
    <comment_count>56</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-11 16:57:44 -0800</bug_when>
    <thetext>Attachment 223913 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/CommonIdentifiers.h:229:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 69 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979677</commentid>
    <comment_count>57</comment_count>
      <attachid>223919</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-02-11 17:17:59 -0800</bug_when>
    <thetext>Created attachment 223919
fix release builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979678</commentid>
    <comment_count>58</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-11 17:19:23 -0800</bug_when>
    <thetext>Attachment 223919 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/CommonIdentifiers.h:229:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 69 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979700</commentid>
    <comment_count>59</comment_count>
      <attachid>223919</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-02-11 17:59:46 -0800</bug_when>
    <thetext>Comment on attachment 223919
fix release builds

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

r=me.  Get the EWS bots green before checkin.

&gt; Source/JavaScriptCore/builtins/Array.prototype.js:46
&gt; +        if (!(i in array))
&gt; +            continue;
&gt; +        if (!callback.@call(thisArg, array[i], i, array))
&gt; +            return false;

Is there any concerns that the array will be mutated by the callback?  Is the &quot;i in array&quot; check considered enough?

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:548
&gt; +            

Extra space.

&gt; Source/JavaScriptCore/generate-js-builtins:89
&gt; +
&gt; +
&gt; +

One one blank line between function definitions.

&gt; Source/JavaScriptCore/generate-js-builtins:127
&gt; +        
&gt; +

One one blank line between function definitions.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:761
&gt; +bool isSafeIdentifier(VM&amp; vm, const Identifier* ident)

This should be called isSafeBuiltinIdentifier().

&gt; Source/JavaScriptCore/runtime/CommonIdentifiers.h:237
&gt; +        

Extra space

&gt; Source/JavaScriptCore/runtime/PropertySlot.h:47
&gt; +    BuiltinOrFunction = Builtin | Function, // helper only used by static hashtables

Indent the &apos;=&apos; the same as most other Attribute values (e.g. Accessor).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979734</commentid>
    <comment_count>60</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-02-11 19:54:17 -0800</bug_when>
    <thetext>(In reply to comment #59)
&gt; (From update of attachment 223919 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=223919&amp;action=review
&gt; 
&gt; r=me.  Get the EWS bots green before checkin.
&gt; 
&gt; &gt; Source/JavaScriptCore/builtins/Array.prototype.js:46
&gt; &gt; +        if (!(i in array))
&gt; &gt; +            continue;
&gt; &gt; +        if (!callback.@call(thisArg, array[i], i, array))
&gt; &gt; +            return false;
&gt; 
&gt; Is there any concerns that the array will be mutated by the callback?  Is the &quot;i in array&quot; check considered enough?

This is the spec behaviour, and happily this is in JS so it&apos;s all memory safe :)

&gt; 
&gt; &gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:548
&gt; &gt; +            
&gt; 
&gt; Extra space.
&gt; 
&gt; &gt; Source/JavaScriptCore/generate-js-builtins:89
&gt; &gt; +
&gt; &gt; +
&gt; &gt; +
&gt; 
&gt; One one blank line between function definitions.
&gt; 
&gt; &gt; Source/JavaScriptCore/generate-js-builtins:127
&gt; &gt; +        
&gt; &gt; +
&gt; 
&gt; One one blank line between function definitions.
&gt; 
&gt; &gt; Source/JavaScriptCore/parser/Lexer.cpp:761
&gt; &gt; +bool isSafeIdentifier(VM&amp; vm, const Identifier* ident)
&gt; 
&gt; This should be called isSafeBuiltinIdentifier().
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/CommonIdentifiers.h:237
&gt; &gt; +        
&gt; 
&gt; Extra space
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/PropertySlot.h:47
&gt; &gt; +    BuiltinOrFunction = Builtin | Function, // helper only used by static hashtables
&gt; 
&gt; Indent the &apos;=&apos; the same as most other Attribute values (e.g. Accessor).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979917</commentid>
    <comment_count>61</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-02-12 10:56:27 -0800</bug_when>
    <thetext>Windows build fix attempted in http://trac.webkit.org/changeset/163967.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979919</commentid>
    <comment_count>62</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-02-12 10:59:36 -0800</bug_when>
    <thetext>(In reply to comment #61)
&gt; Windows build fix attempted in http://trac.webkit.org/changeset/163967.

That worked.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222627</attachid>
            <date>2014-01-29 22:26:59 -0800</date>
            <delta_ts>2014-01-30 08:13:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140129222656.patch</filename>
            <type>text/plain</type>
            <size>189200</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MjNlNzk3Nzg0MWNhZDQyMWQxOThlYjBkMTQ5MDU3YzRhODM4ZmRjLi42MTY0YzEzZGFjMjM0ZTRm
YjU4MGQ0N2UzMTk2NDZjNDUyOWM3MzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
IFRoaXMgcmVzdWx0IG9mIHRoaXMgcmVmYWN0b3JpbmcKKyAgICAgICAgaXMgdGhhdCBDb21tb25J
ZGVudGlmaWVycywgYW5kIGEgZmV3IG90aGVyIG1pc2NlbGxhbmVvdXMgaGVhZGVycyBub3cKKyAg
ICAgICAgbmVlZCB0byBiZSBpbmNsdWRlZCBkaXJlY3RseSBhcyB0aGV5IHdlcmUgZm9ybWVybHkg
Y2FwdHVyZWQgdGhyb3VnaCBvdGhlcgorICAgICAgICBwYXRocy4KKworICAgICAgICBJbiBhZGRp
dGlvbiB0aGlzIGFkZHMgYSBmbGFnIHRvIHRoZSBMb29rdXAgdGFibGUncyBoYXNoZW50cnkgdG8g
aW5kaWNhdGUKKyAgICAgICAgdGhhdCBhIHN0YXRpYyBmdW5jdGlvbiBpcyBhY3R1YWxseSBiYWNr
ZWQgYnkgSlMuIFRoZXJlIGlzIHRoZW4gYSBsb3Qgb2YKKyAgICAgICAgbG9naWMgdG8gdGhyZWFk
IHRoZSBzcGVjaWFsIG5hdHVyZSBvZiB0aGUgZnVuY3RvbiB0byB3aGVyZSBpdCBtYXR0ZXJzLgor
ICAgICAgICBUaGlzIGFsbG93cyB0b1N0cmluZygpLCAuY2FsbGVyLCBldGMgdG8gbWltaWMgdGhl
IGJlaGF2aW91ciBvZiBhIGhvc3QKKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAgICAgTm90ZXMg
b24gd3JpdGluZyBidWlsdGluczoKKyAgICAgICAgIC0gRWFjaCBmdW5jdGlvbiBpcyBjb21waWxl
ZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBvdGhlcnMsIGFuZCB0aG9zZQorICAgICAgICAgICBpbXBs
ZW1lbnRhdGlvbnMgY2Fubm90IGN1cnJlbnRseSBjYXB0dXJlIGFsbCBnbG9iYWwgcHJvcGVydGll
cyAoYXMKKyAgICAgICAgICAgdGhhdCBjb3VsZCBiZSBwb3RlbnRpYWxseSB1bnNhZmUpLiBJZiBh
IGZ1bmN0aW9uIGRvZXMgY2FwdHVyZSBhCisgICAgICAgICAgIGdsb2JhbCB3ZSB3aWxsIGRlbGli
ZXJhdGVseSBjcmFzaC4KKyAgICAgICAgIC0gRm9yIHRob3NlICJnbG9iYWwiIHByb3BlcnRpZXMg
dGhhdCB3ZSBkbyB3YW50IGFjY2VzcyB0bywgd2UgdXNlCisgICAgICAgICAgIHRoZSBAIHByZWZp
eCwgZS5nLiBPYmplY3QodGhpcykgYmVjb21lcyBAT2JqZWN0KHRoaXMpLiBUaGUgQCBpZGVudGlm
aWVycworICAgICAgICAgICBhcmUgcHJpdmF0ZSBuYW1lcywgYW5kIGJlaGF2ZSBqdXN0IGxpa2Ug
cmVndWxhciBwcm9wZXJ0aWVzLCBvbmx5CisgICAgICAgICAgIHdpdGhvdXQgdGhlIHJpc2sgb2Yg
YWR1bHRlcmF0aW9uLiBBZ2FpbiwgaW4gdGhlIEBPYmplY3QgY2FzZSwgd2UKKyAgICAgICAgICAg
ZXhwbGljaXRseSBkdXBsaWNhdGUgdGhlIE9iamVjdENvbnN0cnVjdG9yIHJlZmVyZW5jZSBvbiB0
aGUgR2xvYmFsT2JqZWN0CisgICAgICAgICAgIHNvIHRoYXQgd2UgaGF2ZSBndWFyYW50ZWVkIGFj
Y2VzcyB0byB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgY29uc3RydWN0
b3IuCisgICAgICAgICAtIGNhbGwsIGFwcGx5LCBldmFsLCBhbmQgRnVuY3Rpb24gYXJlIGFsbCBy
ZWplY3RlZCBpZGVudGlmaWVycywgYWdhaW4KKyAgICAgICAgICAgdG8gcHJldmVudCBhbnl0aGlu
ZyBmcm9tIGFjY2lkZW50YWxseSB1c2luZyBhbiBhZHVsdGVyYXRlZCBvYmplY3QuCisgICAgICAg
ICAgIEluc3RlYWQgQGNhbGwgYW5kIEBhcHBseSBhcmUgYXZhaWxhYmxlLCBhbmQgaGFwcGlseSB0
aGV5IGNvbXBsZXRlbHkKKyAgICAgICAgICAgZHJvcCB0aGUgbmVxX3B0ciBpbnN0cnVjdGlvbiBh
cyB0aGV5J3JlIGRlZmluZWQgYXMgYWx3YXlzIGJlaW5nIHRoZQorICAgICAgICAgICBvcmlnaW5h
bCBjYWxsL2FwcGx5IGZ1bmN0aW9ucy4KKworICAgICAgICBUaGVzZSByZXN0cmljdGlvbnMgYXJl
IGp1c3QgaW50ZW5kZWQgdG8gbWFrZSBpdCBoYXJkZXIgdG8gYWNjaWRlbnRhbGx5CisgICAgICAg
IG1ha2UgY2hhbmdlcyB0aGF0IGFyZSBpbmNvcnJlY3QgKGZvciBpbnN0YW5jZSBjYWxsaW5nIHdo
YXRldmVyIGhhcyBiZWVuCisgICAgICAgIGFzc2lnbmVkIHRvIGdsb2JhbC5PYmplY3QsIGluc3Rl
YWQgb2YgdGhlIG9yaWdpbmFsIGNvbnN0cnVjdG9yIGZ1bmN0aW9uKS4KKyAgICAgICAgSG93ZXZl
ciwgbWFraW5nIGEgbWlzdGFrZSBsaWtlIHRoaXMgc2hvdWxkIHJlc3VsdCBpbiBhIHB1cmVseSBz
ZW1hbnRpYworICAgICAgICBlcnJvciBhcyBmdW5kYW1lbnRhbGx5IHRoZXNlIGZ1bmN0aW9ucyBh
cmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlCisgICAgICAgIHJlZ3VsYXIgSlMgY29kZSBp
biB0aGUgaG9zdCBnbG9iYWwsIGFuZCBoYXZlIG5vIG1vcmUgcHJpdmlsZWdlcyB0aGFuCisgICAg
ICAgIGFueSBvdGhlciBKUy4KKworICAgICAgICBUaGUgaW5pdGlhbCBwcm9vZiBvZiBjb25jZXB0
IGlzIEFycmF5LnByb3RvdHlwZS5ldmVyeSwgdGhpcyBzaG93cyBhIDY1JQorICAgICAgICBwZXJm
b3JtYW5jZSBpbXByb3ZlbWVudCwgYW5kIHRoYXQgaW1wcm92ZW1lbnQgaXMgc2lnbmlmaWNhbnRs
eSBodXJ0IGJ5CisgICAgICAgIG91ciBwb29yIG9wdGltaXNhdGlvbiBvZiBvcF9pbi4KKworICAg
ICAgICBBcyB0aGlzIGlzIHN1Y2ggYSBsaW1pdGVkIGZ1bmN0aW9uLCB3ZSBoYXZlIG5vdCB5ZXQg
ZXhwb3J0ZWQgYWxsIHN5bWJvbHMKKyAgICAgICAgdGhhdCB3ZSBjb3VsZCBwb3NzaWJseSBuZWVk
LCBidXQgYXMgd2UgaW1wbGVtZW50IG1vcmUsIHRoZSBsaWtlbGlob29kCisgICAgICAgIG9mIGVu
Y291bnRlcmluZyBtaXNzaW5nIGZlYXR1cmVzIHdpbGwgcmVkdWNlLgorCisgICAgICAgIFRoaXMg
ZGlkIHJlcXVpcmUgYnJlYWtpbmcgb3V0IGEgSlNTdHJpbmdJbmxpbmVzIGhlYWRlciwgYW5kIHJl
cXVpcmVkCisgICAgICAgIGZpeGluZyBhIGZldyBvYmplY3RzIHRoYXQgd2VyZSB0cnlpbmcgdG8g
dXNpbmcgUHJvcGVydHlOYW1lOjpwdWJsaWNOYW1lCisgICAgICAgIHJhdGhlciB0aGFuIFByb3Bl
cnR5TmFtZTo6dWlkLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0
eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dCk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRpY1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWNGdW5jdGlvbkdl
dHRlcik6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tH
ZXR0ZXIpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBidWlsdGlucy9BcnJheS5wcm90b3R5cGUuanM6CisgICAgICAgIChldmVyeSk6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkJ1aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKToKKyAgICAgICAgKEpTQzo6
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSk6CisgICAgICAgICog
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVj
dXRhYmxlczo6Y3JlYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tG
b3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6dG9TdHJpY3RuZXNzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNCdWlsdGluRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBjcmVhdGVfaGFz
aF90YWJsZToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZ2Vu
ZXJhdGUtanMtYnVpbHRpbnM6IEFkZGVkLgorICAgICAgICAoZ2V0Q29weXJpZ2h0KToKKyAgICAg
ICAgKGdldEZ1bmN0aW9ucyk6CisgICAgICAgIChnZW5lcmF0ZUNvZGUpOgorICAgICAgICAobWFu
Z2xlTmFtZSk6CisgICAgICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSWRlbnRp
Zmllcik6CisgICAgICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChTb3VyY2VDb2RlKToK
KyAgICAgICAgKFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKFZNKToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvUHJvdG9DYWxsRnJhbWUuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUp
OgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpM
ZXhlcik6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpM
ZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFy
Pjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAg
ICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcik6CisgICAgICAgICog
cGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OnNldENsb3NlZFZh
cmlhYmxlcyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
Tm9kZTo6Y2FwdHVyZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OnNldENs
b3NlZFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmluaXNoUGFy
c2luZyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRU
b2tlblRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OmdldFVzZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNsb3NlZFZhcmlh
Ymxlcyk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9k
ZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAgICAgICogcnVudGlt
ZS9BcmdMaXN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAg
ICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJh
dG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpn
ZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpD
b21tb25JZGVudGlmaWVycyk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQ
cml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQdWJsaWNO
YW1lKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzRXhjZXB0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxl
OjpleGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpleGVj
dXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aXNCdWlsdGlu
RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1l
L0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFi
bGVHZXQpOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0KToKKyAg
ICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgICogcnVudGltZS9K
U0NlbGxJbmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6c291cmNlQ29kZSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzSG9zdE9y
QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6aXNCdWlsdGluRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIpOgorICAgICAg
ICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9w
ZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgICogcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6Om9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpnZXRDbGFzc1Byb3BlcnR5TmFtZXMpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZ0lubGlu
ZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjppbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9i
amVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgICAgRG9uJ3QgcmVw
b3J0IHByaXZhdGUgbmFtZXMuCisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6c3ltYm9s
VGFibGVQdXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChKU0M6OnNldFVwU3RhdGlj
RnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlND
OjpIYXNoRW50cnk6OmJ1aWx0aW5HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpIYXNoRW50cnk6
OnByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpwcm9wZXJ0eVB1dHRl
cik6CisgICAgICAgIChKU0M6Okhhc2hUYWJsZTo6ZW50cnkpOgorICAgICAgICAoSlNDOjpnZXRT
dGF0aWNQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpnZXRTdGF0aWNWYWx1ZVNsb3QpOgor
ICAgICAgICAoSlNDOjpwdXRFbnRyeSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6YnVp
bHRpbkV4ZWN1dGFibGVzKToKKwogMjAxNC0wMS0yOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jh
cm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IERlYWRsb2NrIGhpdHRpbmcg
YnJlYWtwb2ludCB3aGlsZSBpbnNwZWN0aW5nIEpTQ29udGV4dApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGVkOWFk
MjJlYTZmNjI1MWE2NTRlMjk2OTZjMTk5NzQ2NWJhZGVkZmMuLjg3ZjlkZGI2ZjU1NzkwMzhlZTE3
ODM0YTQ0NWI5ZWRkYmM1MzJlMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxNC0w
MS0yOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgaXQg
cG9zc2libGUgdG8gaW1wbGVtZW50IEpTIGJ1aWx0aW5zIGluIEpTCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc4ODcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGluZyBmb3IgdGhlIG5ld2x5IHJl
cXVpcmVkIGhlYWRlcnMuCisKKyAgICAgICAgVGVzdDoganMvcmVncmVzcy9hcnJheS1wcm90b3R5
cGUtZXZlcnkuaHRtbAorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU1N0
cmluZ0lubGluZXMuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0lEQkFueUN1
c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHA6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHA6CisKIDIw
MTQtMDEtMjkgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCBNYWMgQnVpbGQgZml4IGFmdGVyIHIxNjMwNDYuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCmluZGV4IDViZTA1
M2YxZTA4NmI0M2U2ODZjMzY3NGRhZTdjNTE2MDVhMjg2ZTcuLjBlY2VkNTFmM2UyZDViNjIxZGFk
ZjA1NzQ5ZjVlNzQ2NmEwNmY1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCkBAIC0xMzYsNyArMTM2LDcgQEAgYm9v
bCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGUKICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhp
c09iamVjdCk7CiAgICAgUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAg
ICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgp
KSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAg
ICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBq
c0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIC8v
IG9wdGlvbmFsIG9wdGltaXphdGlvbiB0byBieXBhc3MgZ2V0UHJvcGVydHkgaW4gY2FzZXMgd2hl
biB3ZSBvbmx5IG5lZWQgdG8ga25vdyBpZiB0aGUgcHJvcGVydHkgZXhpc3RzCiAgICAgICAgICAg
ICBpZiAoSlNPYmplY3RIYXNQcm9wZXJ0eUNhbGxiYWNrIGhhc1Byb3BlcnR5ID0ganNDbGFzcy0+
aGFzUHJvcGVydHkpIHsKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIEpTQ2FsbGJhY2tPYmplY3Q8
UGFyZW50Pjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cAogICAgIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwogICAgIEpTVmFs
dWVSZWYgdmFsdWVSZWYgPSB0b1JlZihleGVjLCB2YWx1ZSk7CiAgICAgCi0gICAgaWYgKFN0cmlu
Z0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmlu
Z0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNz
UmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0g
anNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdFNldFByb3Bl
cnR5Q2FsbGJhY2sgc2V0UHJvcGVydHkgPSBqc0NsYXNzLT5zZXRQcm9wZXJ0eSkgewogICAgICAg
ICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lUmVmKQpAQCAtMzQzLDcgKzM0Myw3IEBAIGJvb2wg
SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvCiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNP
YmplY3QpOwogICAgIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwogICAg
IAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkg
eworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CiAgICAg
ICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iamVjdC0+Y2xhc3NSZWYoKTsganND
bGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgICAgICBpZiAo
SlNPYmplY3REZWxldGVQcm9wZXJ0eUNhbGxiYWNrIGRlbGV0ZVByb3BlcnR5ID0ganNDbGFzcy0+
ZGVsZXRlUHJvcGVydHkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5TmFtZVJlZikK
QEAgLTU2NCw3ICs1NjQsNyBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0
U3RhdGljVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcAogewogICAgIEpTT2Jq
ZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzKTsKICAgICAKLSAgICBpZiAoU3RyaW5nSW1wbCog
bmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCog
bmFtZSA9IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganND
bGFzcyA9IGNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFz
cykgewogICAgICAgICAgICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZSogc3Rh
dGljVmFsdWVzID0ganNDbGFzcy0+c3RhdGljVmFsdWVzKGV4ZWMpKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKFN0YXRpY1ZhbHVlRW50cnkqIGVudHJ5ID0gc3RhdGljVmFsdWVzLT5nZXQobmFtZSkp
IHsKQEAgLTYwMCw3ICs2MDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBh
cmVudD46OnN0YXRpY0Z1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRQogICAgIGlmIChQ
YXJlbnQ6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QyKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90Mi5nZXRWYWx1ZShleGVj
LCBwcm9wZXJ0eU5hbWUpKTsKIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlO
YW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlO
YW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iai0+
Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAg
ICAgICAgICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlKiBzdGF0aWNG
dW5jdGlvbnMgPSBqc0NsYXNzLT5zdGF0aWNGdW5jdGlvbnMoZXhlYykpIHsKICAgICAgICAgICAg
ICAgICBpZiAoU3RhdGljRnVuY3Rpb25FbnRyeSogZW50cnkgPSBzdGF0aWNGdW5jdGlvbnMtPmdl
dChuYW1lKSkgewpAQCAtNjI2LDcgKzYyNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkCiAg
ICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmopOwogICAgIFJlZlB0cjxPcGFx
dWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBu
YW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBu
YW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0Ns
YXNzID0gdGhpc09iai0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBh
cmVudENsYXNzKSB7CiAgICAgICAgICAgICBpZiAoSlNPYmplY3RHZXRQcm9wZXJ0eUNhbGxiYWNr
IGdldFByb3BlcnR5ID0ganNDbGFzcy0+Z2V0UHJvcGVydHkpIHsKICAgICAgICAgICAgICAgICBp
ZiAoIXByb3BlcnR5TmFtZVJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCAyN2JjNGMxN2YzZGZlZWI2MWQyNTIzMjNmZDg3OGM0NDc4MGY3NGM1Li5lOWYyNTE5Y2MzMTIx
ZmJlMGJhMzg0ZGQ4NzE1ZDlhZDQwYTQ1ZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC01Miw2ICs1Miw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAg
YmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcAogICAgIGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAog
CisgICAgYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAorCiAgICAgYnl0ZWNvZGUvQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCiAg
ICAgYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcApAQCAtODE1LDYgKzgxNywxNCBAQCBh
ZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0ph
dmFTY3JpcHRDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0vQ29kZUdlbmVyYXRvckluc3BlY3Rv
ci5weSAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTLmpz
b24gLS1vdXRwdXRfaF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0i
IC0tb3V0cHV0X2NwcF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0i
IC0tb3V0cHV0X2pzX2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIg
LS1vdXRwdXRfdHlwZSBKYXZhU2NyaXB0IC0td3JpdGVfYWx3YXlzICYmIG1rZGlyIC1wICR7REVS
SVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yICYmIGNwICR7REVSSVZF
RF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hl
cnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTRnJv
bnRlbmREaXNwYXRjaGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0v
SW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09S
RV9ESVJ9L2luc3BlY3RvcgogICAgIFZFUkJBVElNKQogCisgICAgIyBKU0NCdWlsdGlucworYWRk
X2N1c3RvbV9jb21tYW5kKAorICAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBU
Q09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09S
RV9ESVJ9L0pTQ0J1aWx0aW5zLmgKKyAgICBNQUlOX0RFUEVOREVOQ1kgJHtDTUFLRV9DVVJSRU5U
X1NPVVJDRV9ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zCisgICAgREVQRU5EUyAke0NNQUtFX0NV
UlJFTlRfU09VUkNFX0RJUn0vYnVpbHRpbnMvKi5qcworICAgIENPTU1BTkQgJHtQWVRIT05fRVhF
Q1VUQUJMRX0gJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5z
IEpTQ0J1aWx0aW5zLmggSlNDQnVpbHRpbnMuY3BwCisgICAgVkVSQkFUSU0pCisKIGxpc3QoQVBQ
RU5EIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NS
SVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmNwcAogICAgICR7REVS
SVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNGcm9udGVuZERpc3Bh
dGNoZXJzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRl
eCAxMTU2ZTk3ZmQ4ODYyNTU3YzljZjhkM2I2OGJmNGQwM2MzZThiYThmLi4yNjZhYTVmMDgxNGI3
MjBmZWI1NmI3ZDQxY2YxNzNjNTBjNWE0YjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQpAQCAtNTcsNiArNTcsNyBAQCBhbGwgOiBcCiAgICAgUmVnRXhwT2Jq
ZWN0Lmx1dC5oIFwKICAgICBTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgdWRpczg2X2l0
YWIuaCBcCisgICAgSlNDQnVpbHRpbnMgXAogIwogCiAjIGxvb2t1cCB0YWJsZXMgZm9yIGNsYXNz
ZXMKQEAgLTc5LDYgKzgwLDE0IEBAIEtleXdvcmRMb29rdXAuaDogS2V5d29yZExvb2t1cEdlbmVy
YXRvci5weSBLZXl3b3Jkcy50YWJsZQogdWRpczg2X2l0YWIuaDogJChKYXZhU2NyaXB0Q29yZSkv
ZGlzYXNzZW1ibGVyL3VkaXM4Ni9pdGFiLnB5ICQoSmF2YVNjcmlwdENvcmUpL2Rpc2Fzc2VtYmxl
ci91ZGlzODYvb3B0YWJsZS54bWwKIAkoUFlUSE9OUEFUSD0kKEphdmFTY3JpcHRDb3JlKS9kaXNh
c3NlbWJsZXIvdWRpczg2IHB5dGhvbiAkKEphdmFTY3JpcHRDb3JlKS9kaXNhc3NlbWJsZXIvdWRp
czg2L2l0YWIucHkgJChKYXZhU2NyaXB0Q29yZSkvZGlzYXNzZW1ibGVyL3VkaXM4Ni9vcHRhYmxl
LnhtbCB8fCBleGl0IDEpCiAKKyMgYnVpbHRpbiBmdW5jdGlvbnMKKy5QSE9OWTogSlNDQnVpbHRp
bnMKKworSlNDQnVpbHRpbnM6IEpTQ0J1aWx0aW5zLmggSlNDQnVpbHRpbnMuY3BwCitKU0NCdWls
dGlucy5oOiAkKEphdmFTY3JpcHRDb3JlKS9nZW5lcmF0ZS1qcy1idWlsdGlucyAkKEphdmFTY3Jp
cHRDb3JlKS9idWlsdGlucy8qLmpzCisJcHl0aG9uICReICRACisKK0pTQ0J1aWx0aW5zLmNwcDog
SlNDQnVpbHRpbnMuaAogCiAjIEluc3BlY3RvciBpbnRlcmZhY2VzCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggY2RiNTQyNmIwNmI1MmE5ODI1NmVlOTA1
OGJiYThmMTFlZWE2OWVlMC4uYWJkMTdhM2JlZDM3NzA1YzBjMWQzNTFhMTQzMzM5M2QxZjliNGNl
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTEwMiw2
ICsxMDIsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MvU2NyaXB0T2JqZWN0LmggXAogICAgIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAgXAogICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5oIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbmdFeGVjdXRhYmxlcy5jcHAgXAorICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9CdWlsdGluZ0V4ZWN1dGFibGVzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAgXApAQCAtMTI0MSw3ICsxMjQzLDkg
QEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcCBcCiAJRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmggXAogCURl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmNwcCBc
Ci0JRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMu
aAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJz
LmggXAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmNwcCBcCisJ
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNDQnVpbHRpbnMuaAogCiBsbGludF9ub3Nv
dXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4
IDVlZGVmZGJlODU1Zjk2YTYyNjhkODU3M2JlYzFkMGMzZDg1OGFhNWMuLmExMmRiMTgzNDg2ZGZi
YmNhODNmM2E3OGU5Y2Y5ODYzMWIyNjUzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvagpAQCAtMzA5LDYgKzMwOSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0T2JqZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdFZhbHVlLmNwcCIgLz4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5UHJvZmlsZS5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeXRlY29kZUJhc2ljQmxvY2su
Y3BwIiAvPgpAQCAtNzIxLDYgKzcyMiw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3Bl
Y3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwIiAv
PgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ0J1
aWx0aW5zLmNwcCIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hp
dGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcQXJyYXlDb25zdHJ1Y3Rvci5s
dXQuaCIgLz4KQEAgLTc1MCw2ICs3NTIsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXFJlZ0V4cE9iamVjdC5sdXQuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0
ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xSZWdFeHBQcm90b3R5cGUubHV0
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
U3RyaW5nQ29uc3RydWN0b3IubHV0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuaCIgLz4KICAgPC9JdGVtR3JvdXA+CiAg
IDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcQVBJQ2FsbGJhY2tG
dW5jdGlvbi5oIiAvPgpAQCAtNzk4LDYgKzgwMSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdE9iamVjdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0VmFsdWUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxlcy5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlQcm9maWxlLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeVZhbEluZm8uaCIgLz4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA4N2UxMmE0NzE1
OGJiNjIyNGQ0OWZkNjIyOTc4YzRhOWM0NDM1YTY1Li44NjljMWY1ODliY2I2ODZlYjljZjIwYzA5
NmJlMWI4M2E1NTFlMjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvai5maWx0ZXJzCkBAIC03LDYgKzcsOSBAQAogICAgIDxGaWx0ZXIgSW5jbHVkZT0iYmlu
ZGluZ3MiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezBiYWNlMTIzLTQ1ODItZWViYy05MzE0
LTc4MTliMzc2YzE5OH08L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CisgICAgPEZp
bHRlciBJbmNsdWRlPSJidWlsdGlucyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57M2I5ZDcy
YTUtMTM1Yi00M2IzLWE1MjQtYzZkMmI5ZDI5ZDM1fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8
L0ZpbHRlcj4KICAgICA8RmlsdGVyIEluY2x1ZGU9ImJ5dGVjb2RlIj4KICAgICAgIDxVbmlxdWVJ
ZGVudGlmaWVyPns3NjYwODhhMC0xMjE2LTQ4NTQtYWE0My01NjBjNWUyODM2Njh9PC9VbmlxdWVJ
ZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgpAQCAtMTA4LDYgKzExMSw5IEBACiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcTWFjcm9Bc3NlbWJsZXIuY3BwIj4KICAgICAgIDxG
aWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWlsdGluRXhlY3V0YWJsZXMuY3BwIj4KKyAgICAgIDxG
aWx0ZXI+YnVpbHRpbnM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIj4KICAgICAg
IDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTEzMjksNiAr
MTMzNSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJj
ZXNcSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZCBT
b3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuY3BwIj4KKyAgICAgIDxGaWx0
ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgIDwvSXRlbUdy
b3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEFQSUNh
bGxiYWNrRnVuY3Rpb24uaCI+CkBAIC0xNDU0LDYgKzE0NjMsOSBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cYXNzZW1ibGVyXFg4NkFzc2VtYmxlci5oIj4KICAgICAgIDxGaWx0ZXI+YXNz
ZW1ibGVyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxidWlsdGluc1xCdWlsdGluRXhlY3V0YWJsZXMuaCI+CisgICAgICA8RmlsdGVyPmJ1aWx0
aW5zPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmgiPgogICAgICAgPEZpbHRlcj5ieXRl
Y29kZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMjU1MCw2ICsyNTYyLDkgQEAKICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xBcnJheVByb3Rv
dHlwZS5sdXQuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVp
bGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXEpTQ0J1aWx0aW5zLmgiPgorICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0Zp
bHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcVk0uaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVk
ZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjdlODc2NzQwYTk2NGIwMjg5ODRl
ZDY3ODE2MTgyMGE1ZGNmNzdjNC4uOTExNTczYWIxN2QzMzk3NGFhN2M5YTAxMWRiMjAwYjA5YWY3
OGJmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkyMiw3ICs5MjIsNiBAQAog
CQlBNTAzRkExOTE4OEUwRkIwMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExMzE4OEUw
RkFGMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi87IH07CiAJCUE1MDNGQTFB
MTg4RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNDE4OEUwRkFGMDAxMTBGMTQg
LyogSmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQlBNTAzRkExQjE4OEUwRkIwMDAxMTBG
MTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE1MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFT
Y3JpcHRDYWxsRnJhbWUuY3BwICovOyB9OwotCQlBNTAzRkExQzE4OEUwRkIwMDAxMTBGMTQgLyog
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTAzRkExNjE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2Fs
bEZyYW1lLmggKi87IH07CiAJCUE1MDNGQTFEMTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3Jp
cHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTUwM0ZBMTcxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENh
bGxGcmFtZVByb3RvdHlwZS5jcHAgKi87IH07CiAJCUE1MDNGQTFFMTg4RTBGQjAwMDExMEYxNCAv
KiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE4MTg4RTBGQjAwMDExMEYxNCAvKiBKU0ph
dmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaCAqLzsgfTsKIAkJQTUwM0ZBMjExODhFRkY2ODAw
MTEwRjE0IC8qIFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTFGMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRCcmVh
a3BvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTEwMjQsNiArMTAyMyw3IEBACiAJCUE3MEIwODMyMTdBMEI3OUIwMERBRjE0QiAvKiBERkdC
aW5hcnlTd2l0Y2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTcwQjA4MzAxN0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5jcHAgKi87
IH07CiAJCUE3MEIwODMzMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MEIwODMxMTdBMEI3
OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guaCAqLzsgfTsKIAkJQTcxMjM2RTUxMTk1RjMz
QzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzEyMzZFNDExOTVGMzNDMDBCRDIxNzQgLyogSklUT3Bj
b2RlczMyXzY0LmNwcCAqLzsgfTsKKwkJQTcxREE4MEYxODgwREJBQjAwRDFGMjk5IC8qIEpTU3Ry
aW5nSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTcxREE4MEUxODgwREJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3MjAyOEI2MTc5NzYw
MUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyMDI4QjQxNzk3NjAxRTAwOTgwMjhDIC8qIEpT
Q1Rlc3RSdW5uZXJVdGlscy5jcHAgKi87IH07CiAJCUE3MjAyOEI4MTc5NzYwMUUwMDk4MDI4QyAv
KiBKU0NUZXN0UnVubmVyVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3MjAyOEI1MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRp
bHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlB
NzIwMjhCQTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklubGluZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjAyOEI5MTc5NzYwM0QwMDk4
MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0xMTUwLDYgKzExNTAsMTAgQEAKIAkJQTdDQTNBRTgxN0RB
NDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTdDQTNBRTIxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5o
ICovOyB9OwogCQlBN0NBM0FFQjE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDQTNBRTkxN0RB
NTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCAqLzsgfTsKIAkJQTdDQTNBRUMxN0RBNTE2
ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBN0NBM0FFQTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEu
aCAqLzsgfTsKKwkJQTdEODAxQTQxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxl
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4
MDFBMTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCAqLzsgfTsKKwkJ
QTdEODAxQTUxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTIxODgwRDY2RTAw
MjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3RDgwMUE4MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NC
dWlsdGlucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBN0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwICovOyB9OworCQlB
N0Q4MDFBOTE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDgwMUE3MTg4MEQ2QTgwMDI2QzM5QiAv
KiBKU0NCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUE3RDg5Q0YyMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDg5Q0UzMTdB
MEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNwcCAqLzsgfTsKIAkJQTdEODlDRjMxN0Ew
QjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDg5Q0U0MTdBMEI4Q0MwMDc3M0FEOCAv
KiBERkdCbG9ja0luc2VydGlvblNldC5jcHAgKi87IH07CiAJCUE3RDg5Q0Y0MTdBMEI4Q0MwMDc3
M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODlDRTUxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2Nr
SW5zZXJ0aW9uU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTI0NjIsNiArMjQ2Niw4IEBACiAJCUE3MTIzNkU0MTE5NUYzM0MwMEJEMjE3NCAv
KiBKSVRPcGNvZGVzMzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSklUT3Bjb2RlczMyXzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcx
OEY2MUExMTc1NEEyMTAwMjQ2NUE3IC8qIFJlZ0V4cEppdFRhYmxlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBKaXRUYWJsZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTcxOEY4MjExMTc4RUI0QjAwMjQ2NUE3IC8qIGNyZWF0ZV9yZWdleF90YWJs
ZXMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHRleHQu
c2NyaXB0LnB5dGhvbjsgZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IGNyZWF0ZV9yZWdleF90YWJs
ZXM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MURBODBEMTg4MEQ3MUYwMEQxRjI5
OSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsg
cGF0aCA9ICJnZW5lcmF0ZS1qcy1idWlsdGlucyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE3MURBODBFMTg4MERCQUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdJbmxpbmVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI0MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVu
bmVyVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDVGVz
dFJ1bm5lclV0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyMDI4QjUx
Nzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0NUZXN0UnVubmVyVXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTcyMDI4QjkxNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRnVuY3Rpb25JbmxpbmVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTkwLDYgKzI1OTYsMTEgQEAKIAkJQTdD
QTNBRTIxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1dlYWtNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTdDQTNBRTkxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYWtNYXBEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTdDQTNBRUExN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtNYXBEYXRhLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUEwMTg4MEQ2NkUwMDI2QzM5QiAvKiBBcnJheS5w
cm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBBcnJh
eS5wcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUExMTg4
MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTIxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVj
dXRhYmxlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdWlsdGluRXhlY3V0
YWJsZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTYxODgwRDZBODAw
MjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQ0J1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdE
ODAxQTcxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTQ0J1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE3RDg5Q0UzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Jhc2ljQmxvY2suY3BwOyBwYXRoID0g
ZGZnL0RGR0Jhc2ljQmxvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0Q4
OUNFNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwOyBw
YXRoID0gZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTdEODlDRTUxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Jsb2NrSW5zZXJ0aW9uU2V0
Lmg7IHBhdGggPSBkZmcvREZHQmxvY2tJbnNlcnRpb25TZXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTI5MjYsNiArMjkzNyw3IEBACiAJCQkJODYwNEY0RjIxNDNBNkM0NDAwQjI5
NUY1IC8qIENoYW5nZUxvZyAqLywKIAkJCQlGNjkyQTg1NDAyNTU1OTdEMDFGRjYwRjcgLyogY3Jl
YXRlX2hhc2hfdGFibGUgKi8sCiAJCQkJQTcxOEY4MjExMTc4RUI0QjAwMjQ2NUE3IC8qIGNyZWF0
ZV9yZWdleF90YWJsZXMgKi8sCisJCQkJQTcxREE4MEQxODgwRDcxRjAwRDFGMjk5IC8qIGdlbmVy
YXRlLWpzLWJ1aWx0aW5zICovLAogCQkJCTQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4NCAvKiBqc2Mu
Y3BwICovLAogCQkJCUY2OEVCQjhDMDI1NUQ0QzYwMUZGNjBGNyAvKiBjb25maWcuaCAqLywKIAkJ
CQlGNUMyOTBFNjAyODRGOThFMDE4NjM1Q0EgLyogSmF2YVNjcmlwdENvcmVQcmVmaXguaCAqLywK
QEAgLTI5MzQsNiArMjk0Niw3IEBACiAJCQkJMTQzMkVCRDcwQTM0Q0FENDAwNzE3QjlGIC8qIEFQ
SSAqLywKIAkJCQk5Njg4Q0IxMjBFRDEyQjRFMDAxRDY0OUYgLyogYXNzZW1ibGVyICovLAogCQkJ
CUE1NENGMkVBMTg0RUE3MzkwMDIzN0YxOSAvKiBiaW5kaW5ncyAqLywKKwkJCQlBN0Q4MDE5RjE4
ODBENjZFMDAyNkMzOUIgLyogYnVpbHRpbnMgKi8sCiAJCQkJOTY5QTA3OEYwRUQxRDNBRTAwRjFG
NjgxIC8qIGJ5dGVjb2RlICovLAogCQkJCTdFMzlEODFEMEVDMzhFRkEwMDNBRjExQSAvKiBieXRl
Y29tcGlsZXIgKi8sCiAJCQkJMUM5MDUxM0UwQkE5RTg4MzAwODFFOUQwIC8qIENvbmZpZ3VyYXRp
b25zICovLApAQCAtMzUwOSw2ICszNTIyLDggQEAKIAkJNjUwRkRGOEQwOUQwRkNBNzAwNzY5RTU0
IC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJQTdEODAxQTYxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCAq
LywKKwkJCQlBN0Q4MDFBNzE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCAqLywKIAkJ
CQlCQzE4QzUyMzBFMTZGQzhBMDBCMzQ0NjAgLyogQXJyYXlQcm90b3R5cGUubHV0LmggKi8sCiAJ
CQkJQkNEMjAzRTcwRTE3MThGNDAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUubHV0LmggKi8sCiAJ
CQkJQTUxM0U1QzYxODVGOTQzNjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggKi8s
CkBAIC0zODExLDYgKzM4MjYsNyBAQAogCQkJCUE3OTBERDZBMTgyRjQ5OTcwMDU4ODgwNyAvKiBK
U1NldEl0ZXJhdG9yLmggKi8sCiAJCQkJQkMwMkU5QjYwRTE4NDJGQTAwMEY5Mjk3IC8qIEpTU3Ry
aW5nLmNwcCAqLywKIAkJCQlGNjkyQTg2MjAyNTU1OTdEMDFGRjYwRjcgLyogSlNTdHJpbmcuaCAq
LywKKwkJCQlBNzFEQTgwRTE4ODBEQkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxpbmVzLmggKi8s
CiAJCQkJODZFODU1MzgxMTFCOTk2ODAwMUFGNTFFIC8qIEpTU3RyaW5nQnVpbGRlci5oICovLAog
CQkJCTI2MDBCNUE0MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5jcHAgKi8sCiAJ
CQkJMjYwMEI1QTUxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVyLmggKi8sCkBAIC00
NTYxLDYgKzQ1NzcsMTYgQEAKIAkJCXBhdGggPSByZW1vdGU7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwogCQl9OworCQlBN0Q4MDE5RjE4ODBENjZFMDAyNkMzOUIgLyogYnVpbHRpbnMgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUE3RDgwMUEwMTg4
MEQ2NkUwMDI2QzM5QiAvKiBBcnJheS5wcm90b3R5cGUuanMgKi8sCisJCQkJQTdEODAxQTExODgw
RDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi8sCisJCQkJQTdEODAxQTIx
ODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oICovLAorCQkJKTsKKwkJCXBh
dGggPSBidWlsdGluczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAvKiBFbmQg
UEJYR3JvdXAgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0
aW9uICovCkBAIC00NjA2LDExICs0NjMyLDExIEBACiAJCQkJODZBREQxNDUwRkRERUE5ODAwMDZF
RUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUNFRUUxNTE4N0Yz
QkFEMDBFNTVDOTkgLyogSW5zcGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1QzAy
ODVEMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuaCBpbiBIZWFkZXJzICovLAotIAkJ
CQkyQTY4Mjk1QjE4NzVGODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5oIGluIEhlYWRl
cnMgKi8sCi0gICAgICAgICAgICAgICAgMkE0RUM5MEMxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRl
QmFycmllckJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkE2ODI5NUIxODc1RjgwNTAwQjZD
M0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTJBNEVDOTBDMTg2
MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZFNTkzMkE4MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE1MzI0MzkzMTg1Njk3MDkwMDJFRDY5MiAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9y
U3RyaW5ncy5weSBpbiBIZWFkZXJzICovLAotIAkJCQlBNTMyNDM5MjE4NTY5NzA5MDAyRUQ2OTIg
LyogQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSBpbiBIZWFkZXJzICovLAorCQkJCUE1MzI0Mzky
MTg1Njk3MDkwMDJFRDY5MiAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYyNEU1NEYxN0VFMjc0OTAwQUJCMjE3IC8qIFRlbXBSZWdpc3RlclNldC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTUwRTRCNjQxODgwOURENTAwNjhBNDZEIC8qIEpTR2xvYmFsT2Jq
ZWN0UnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUI1OEMxNTE4N0I4QjE2MDA5
OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLywKQEAgLTQ2MjIsNyAr
NDY0OCw3IEBACiAJCQkJMEY4MzM1QjgxNjM5QzFFQTAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlv
blByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwRTI5MTg3Q0E1RTYwMDg0M0IxMCAv
KiBpbmxpbmUtYW5kLW1pbmlmeS1zdHlsZXNoZWV0cy1hbmQtc2NyaXB0cy5weSBpbiBIZWFkZXJz
ICovLAogCQkJCUE1ODQwRTJCMTg3Q0E3NUIwMDg0M0IxMCAvKiBqc21pbi5weSBpbiBIZWFkZXJz
ICovLAotIAkJCQlBNTMyNDM5ODE4NTZBNDg5MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlMuanNvbiBp
biBIZWFkZXJzICovLAorCQkJCUE1MzI0Mzk4MTg1NkE0ODkwMDJFRDY5MiAvKiBJbnNwZWN0b3JK
Uy5qc29uIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMkExODdDQTc1OTAwODQzQjEwIC8qIHh4
ZC5wbCBpbiBIZWFkZXJzICovLAogCQkJCUZFQTA4NjIwMTgyQjdBMDQwMEY2RDg1MSAvKiBCcmVh
a3BvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzNTE3QURCNUYzMDA1QUIxNzQgLyog
QXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNDczMyw3ICs0NzU5LDcgQEAKIAkJCQlB
MUEwMDlDMDE4MzFBMjJEMDBDRjg3MTEgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODZFQzlEQzUxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVDb2RlUGFyc2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyODE4N0RGREVDMDA4M0I2ODcgLyogRlRMQXZh
aWxhYmxlUmVjb3ZlcnkuaCBpbiBIZWFkZXJzICovLAotICAgICAgICAgICAgICAgIEE1OTNDRjg3
MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAq
LywKKwkJCQlBNTkzQ0Y4NzE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3Ry
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNTZDMzYxNjI3QjBBRDAwN0YyNzgzIC8qIERGR0Nh
bGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkZGQzk1ODE0RUY5MEEyMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCBpbiBIZWFk
ZXJzICovLApAQCAtNDg3Miw2ICs0ODk4LDcgQEAKIAkJCQkwRkVBMEExRDE3MDhCMDA3MDBCQjcy
MkMgLyogRlRMQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEExRjE3MDhC
MDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTU5NDU1OTMxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJs
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdEODAxQTkxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1
aWx0aW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEEwQTE3MDUxM0RCMDBCQjcyMkMgLyog
RlRMQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyQTE4N0RGREVDMDA4
M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTIz
MTcwOTYwNjkwMEJCNzIyQyAvKiBGVExDb21tb25WYWx1ZXMuaCBpbiBIZWFkZXJzICovLApAQCAt
NDk0Niw2ICs0OTczLDcgQEAKIAkJCQlCQzE4QzQwRjBFMTZGNUNEMDBCMzQ0NjAgLyogSWRlbnRp
Zmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzI1RjhCQ0UxNTc1NDRBOTAwMjQ1QjcxIC8qIElu
Y3JlbWVudGFsU3dlZXBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTkxNUVEOEU0NjAw
RjE2N0IyIC8qIEluZGV4aW5nSGVhZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0Q4MDFBNTE4
ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkI3RjM5QTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXJJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkI3RjM5QjE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdUeXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNFRkFCMDE4MDVDQTZEMDA0NzJDRTQgLyogSW5pdGlh
bGl6ZUxMVk0uaCBpbiBIZWFkZXJzICovLApAQCAtNTIxOCw2ICs1MjQ2LDcgQEAKIAkJCQlBNTMy
NDM4ODE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDMThDNDU2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBQcm90ZWN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxNDc0QzMzQjE2QUEyRDk1MDA2MkYwMUQgLyogUHJvdG90eXBl
TWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzFEQTgwRjE4ODBEQkFCMDBEMUYyOTkgLyogSlNT
dHJpbmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMzJBNDE0Q0E3REQ5MDA4NUYz
QzYgLyogUHV0QnlJZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQ0Q0QzIxNUYxQTYw
NzAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0Mw
MDhDRTcxODc2MzFCNjAwOTU1QzI0IC8qIE1pY3JvdGFzay5oIGluIEhlYWRlcnMgKi8sCkBAIC01
ODM2LDYgKzU4NjUsNyBAQAogCQkJCUE3RDg5Q0YyMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNp
Y0Jsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MEIwODMyMTdBMEI3OUIwMERBRjE0QiAv
KiBERkdCaW5hcnlTd2l0Y2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlDRjMxN0EwQjhD
QzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUE3RDgwMUE0MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJODZFQzlEQzQxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVDb2RlUGFy
c2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDgyRTIxMTQxNzJDRTMwMDE3OUM5NCAvKiBE
RkdDYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGRkM5NTcxNEVGOTBBMDAw
QzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTg1Miw2ICs1ODgy
LDcgQEAKIAkJCQkwRkZGQzk1OTE0RUY5MEE2MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEYyRkM3NzIxNkUxMkY3MTAwMzhEOTc2IC8qIERGR0RDRVBoYXNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEYyQjk5MTcyRjA0RkYwMDdEQkRBNSAvKiBERkdE
ZXNpcmVkSWRlbnRpZmllcnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTdEODAxQTgxODgwRDZB
ODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3M0UxMzMw
MTc5NjI0Q0QwMEU0REVBOCAvKiBERkdEZXNpcmVkU3RydWN0dXJlQ2hhaW5zLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUMyQzBGN0NEMTdCQkZDNUIwMDQ2NEZFNCAvKiBERkdEZXNpcmVkVHJhbnNp
dGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFODUzNEIxNzIzQ0RBNTAwQjYxOEY1IC8q
IERGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU5NzYsNyArNjAw
Nyw3IEBACiAJCQkJMEY2QjFDQzUxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVud2luZEluZm8uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5RDMzOUExODAzQURCNzAwNzNDMkJDIC8qIEZUTFN0YWNr
TWFwcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEExNjE3MDZCQjkwMDBCQjcyMkMgLyog
RlRMU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCi0gCQkJCTdDMDA4Q0QyMTg2RjhBOTMwMDk1NUMy
NCAvKiBKU1Byb21pc2VGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0MwMDhDRDIx
ODZGOEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjZCMUNCNTE4NUZDOUU5MDA4NDVEOTcgLyogRlRMSlNDYWxsLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGMjM1QkUxMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExUaHVua3MuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTU5M0NGN0MxODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ViNDJmNWNjNDMz
ZjE2MzYzNDNiZmM5ODJhYTJhYWZiMzM2ZTk0OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMKQEAgLTAsMCArMSw1MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9u
IGV2ZXJ5KGNhbGxiYWNrIC8qLCB0aGlzQXJnICovKSB7CisgICAgInVzZSBzdHJpY3QiOworICAg
IGlmICh0aGlzID09PSBudWxsKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXku
cHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIik7CisgICAg
CisgICAgaWYgKHRoaXMgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJy
b3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5k
ZWZpbmVkIik7CisgICAgCisgICAgdmFyIGFycmF5ID0gQE9iamVjdCh0aGlzKTsKKyAgICB2YXIg
bGVuZ3RoID0gYXJyYXkubGVuZ3RoID4+PiAwOworICAgIAorICAgIGlmICh0eXBlb2YgY2FsbGJh
Y2sgIT09ICJmdW5jdGlvbiIpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5w
cm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7CisKKyAgICB2YXIg
dGhpc0FyZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVk
OworICAgIAorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAg
aWYgKCEoaSBpbiBhcnJheSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFj
YWxsYmFjay5AY2FsbCh0aGlzQXJnLCBhcnJheVtpXSwgaSwgYXJyYXkpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ODhlNTgyMzM5ZmY3NWE5YTc3ZjgzNDNjY2NjMmZiZjY0MGVhOWZmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5F
eGVjdXRhYmxlcy5jcHAKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJ1
aWx0aW5FeGVjdXRhYmxlcy5oIgorCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1
ZGUgIlBhcnNlci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworQnVpbHRpbkV4ZWN1dGFibGVzOjpC
dWlsdGluRXhlY3V0YWJsZXMoVk0mIHZtKQorICAgIDogbV92bSh2bSkKKyNkZWZpbmUgSU5JVElB
TElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSAs
IG1fIyNuYW1lIyNTb3VyY2UobWFrZVNvdXJjZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJh
bChzXyMjbmFtZSwgbGVuZ3RoKSwgU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoIjxidWls
dGluPiIpKSkKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOKElOSVRJQUxJWkVfQlVJTFRJTl9TT1VS
Q0VfTUVNQkVSUykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJTl9TVFJJTkdTCit7Cit9CisKK1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUJ1aWx0aW5F
eGVjdXRhYmxlKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgSWRlbnRpZmllciYgbmFt
ZSkKK3sKKyAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lOworICAg
IFBhcnNlckVycm9yIGVycm9yOworICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9IHBh
cnNlPFByb2dyYW1Ob2RlPigmbV92bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIEpTUGFyc2VC
dWlsdGluLCBKU1BhcnNlUHJvZ3JhbUNvZGUsIGVycm9yLCAmcG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZSk7CisKKyAgICBpZiAoIXByb2dyYW0pIHsKKyAgICAgICAgZGF0YUxvZygiRmF0YWwgZXJy
b3IgY29tcGlsaW5nIGJ1aWx0aW4gZnVuY3Rpb24gJyIsIG5hbWUuc3RyaW5nKCksICInOiAiLCBl
cnJvci5tX21lc3NhZ2UpOworICAgICAgICBDUkFTSCgpOworICAgIH0KKworICAgIFN0YXRlbWVu
dE5vZGUqIGV4cHJTdGF0ZW1lbnQgPSBwcm9ncmFtLT5zaW5nbGVTdGF0ZW1lbnQoKTsKKyAgICBS
RUxFQVNFX0FTU0VSVChleHByU3RhdGVtZW50KTsKKyAgICBSRUxFQVNFX0FTU0VSVChleHByU3Rh
dGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CisgICAgRXhwcmVzc2lvbk5vZGUqIGZ1bmNFeHBy
ID0gc3RhdGljX2Nhc3Q8RXhwclN0YXRlbWVudE5vZGUqPihleHByU3RhdGVtZW50KS0+ZXhwcigp
OworICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmNFeHByKTsKKyAgICBSRUxFQVNFX0FTU0VSVChmdW5j
RXhwci0+aXNGdW5jRXhwck5vZGUoKSk7CisgICAgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSA9IHN0
YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGZ1bmNFeHByKS0+Ym9keSgpOworICAgIFJFTEVBU0Vf
QVNTRVJUKCFwcm9ncmFtLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKKyAgICAKKyAgICBib2R5
LT5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKKyAgICBSRUxFQVNF
X0FTU0VSVChib2R5KTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5LT5pZGVudCgpLmlzTnVsbCgp
KTsKKyAgICAKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgYW4gaW5wdXQgc3RyaW5nIHRo
YXQgd291bGQgcmVzdWx0IGluIGEgc2luZ2xlIGFub255bW91cyBmdW5jdGlvbiBleHByZXNzaW9u
LgorICAgIGJvZHktPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKGJvZHkpOworICAgIGZvciAoY29uc3QgYXV0byYgY2xvc2VkVmFy
aWFibGUgOiBwcm9ncmFtLT5jbG9zZWRWYXJpYWJsZXMoKSkgeworICAgICAgICBpZiAoY2xvc2Vk
VmFyaWFibGUgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMuaW1wbCgpKQorICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAgIGlmIChjbG9zZWRWYXJpYWJsZSA9PSBtX3Zt
LnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQuaW1wbCgpKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNsb3NlZFZhcmlhYmxlLT5pc0VtcHR5VW5p
cXVlKCkpOworICAgIH0KKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25F
eGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmbV92bSwgc291
cmNlLCBib2R5LCB0cnVlLCBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbik7CisgICAgZnVuY3Rpb25F
eGVjdXRhYmxlLT5tX25hbWVWYWx1ZS5zZXQobV92bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBqc1N0
cmluZygmbV92bSwgbmFtZS5zdHJpbmcoKSkpOworICAgIHJldHVybiBmdW5jdGlvbkV4ZWN1dGFi
bGU7Cit9CisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rp
b25OYW1lLCBsZW5ndGgpIFwKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhl
Y3V0YWJsZXM6Om5hbWUjI0V4ZWN1dGFibGUoKSBcCit7XAorICAgIGlmICghbV8jI25hbWUjI0V4
ZWN1dGFibGUpXAorICAgICAgICBtXyMjbmFtZSMjRXhlY3V0YWJsZSA9IGNyZWF0ZUJ1aWx0aW5F
eGVjdXRhYmxlKG1fIyNuYW1lIyNTb3VyY2UsIG1fdm0ucHJvcGVydHlOYW1lcy0+ZnVuY3Rpb25O
YW1lKTtcCisgICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1wKK30KK0pTQ19G
T1JFQUNIX0JVSUxUSU4oREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgRVhQT1NF
X0JVSUxUSU5fU09VUkNFUworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDlhMTllMjYxNTA3OTRhNjY5
ZWM5OGUzOTliZjY3ZjdmNzEwNjQxOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaApAQCAtMCwwICsxLDY3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBCdWls
dGluRXhlY3V0YWJsZXNfaAorI2RlZmluZSBCdWlsdGluRXhlY3V0YWJsZXNfaAorCisjaW5jbHVk
ZSAiSlNDQnVpbHRpbnMuaCIKKyNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSAiV2Vh
ay5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIElkZW50aWZpZXI7CitjbGFz
cyBWTTsKKworY2xhc3MgQnVpbHRpbkV4ZWN1dGFibGVzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc093blB0cjxCdWlsdGluRXhlY3V0YWJsZXM+IGNyZWF0ZShWTSYgdm0pCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEJ1aWx0aW5FeGVjdXRhYmxlcyh2bSkpOworICAgIH0K
KyAgICAKKyNkZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25O
YW1lLCBsZW5ndGgpIFwKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuYW1lIyNFeGVjdXRh
YmxlKCk7IFwKK2NvbnN0IFNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIHsgcmV0dXJuIG1fIyNu
YW1lIyNTb3VyY2U7IH0KKyAgICAKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOKEVYUE9TRV9CVUlM
VElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX1NPVVJDRVMKKyAgICAKK3By
aXZhdGU6CisgICAgQnVpbHRpbkV4ZWN1dGFibGVzKFZNJik7CisgICAgVk0mIG1fdm07CisgICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKGNvbnN0
IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJik7CisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJ
Tl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aClcCisgICAgU291cmNl
Q29kZSBtXyMjbmFtZSMjU291cmNlOyBcCisgICAgV2VhazxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZT4gbV8jI25hbWUjI0V4ZWN1dGFibGU7CisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTihERUNM
QVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJD
RV9NRU1CRVJTCit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAyNjNlYzdjYWRmNGY3OWNhODEwMjQ0MWU2MmJmMmEw
NWI1ZGRjM2YyLi43NTE1MDY1NDIzNzZkN2VkYzU5OWFhMDBmOWIxMjY4NWNkYTM1MmNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNDMsMTEg
KzQzLDEzIEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNs
dWRlICJKU0FjdGl2YXRpb24uaCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAi
SlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAi
SlNOYW1lU2NvcGUuaCIKICNpbmNsdWRlICJMTEludEVudHJ5cG9pbnQuaCIKICNpbmNsdWRlICJM
b3dMZXZlbEludGVycHJldGVyLmgiCisjaW5jbHVkZSAiTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
IgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5o
IgogI2luY2x1ZGUgIlBvbHltb3JwaGljUHV0QnlJZExpc3QuaCIKICNpbmNsdWRlICJSZWR1Y2VX
aGl0ZXNwYWNlLmgiCkBAIC0xNTY5LDcgKzE1NzEsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhT
Y3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxp
bgogCiAgICAgc2V0Q29uc3RhbnRSZWdpc3RlcnModW5saW5rZWRDb2RlQmxvY2stPmNvbnN0YW50
UmVnaXN0ZXJzKCkpOwogICAgIGlmICh1bmxpbmtlZENvZGVCbG9jay0+dXNlc0dsb2JhbE9iamVj
dCgpKQotICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW3VubGlua2VkQ29kZUJsb2NrLT5nbG9i
YWxPYmplY3RSZWdpc3RlcigpLm9mZnNldCgpXS5zZXQoKm1fdm0sIG93bmVyRXhlY3V0YWJsZSwg
bV9nbG9iYWxPYmplY3QuZ2V0KCkpOworICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW3VubGlu
a2VkQ29kZUJsb2NrLT5nbG9iYWxPYmplY3RSZWdpc3RlcigpLnRvQ29uc3RhbnRJbmRleCgpXS5z
ZXQoKm1fdm0sIG93bmVyRXhlY3V0YWJsZSwgbV9nbG9iYWxPYmplY3QuZ2V0KCkpOwogICAgIG1f
ZnVuY3Rpb25EZWNscy5yZXNpemVUb0ZpdCh1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5j
dGlvbkRlY2xzKCkpOwogICAgIGZvciAoc2l6ZV90IGNvdW50ID0gdW5saW5rZWRDb2RlQmxvY2st
Pm51bWJlck9mRnVuY3Rpb25EZWNscygpLCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSA9IHVubGlu
a2VkQ29kZUJsb2NrLT5mdW5jdGlvbkRlY2woaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggNjhiYzAzNzlmNTc0NGM5YThmNzQzMWRiNjRmOGFiNTRl
NmUxMDUzZi4uNDk5NWM1MmNmOGIyYjFiNGQ2MjgwNDUzZWVkMjdjNzc0YTQ5NTU4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtNTYsNyArNTYsNiBA
QAogI2luY2x1ZGUgIkhhbmRsZXJJbmZvLmgiCiAjaW5jbHVkZSAiT2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGUuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgog
I2luY2x1ZGUgIlB1dFByb3BlcnR5U2xvdC5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAj
aW5jbHVkZSAiSklUQ29kZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0
Y2hwb2ludC5jcHAKaW5kZXggOTg2ZTAzZDBjYmE3MTg1YjM5Y2VlMDIzZjRhYjZiYzliOGNjYjZl
NC4uNmYyZDVlYmExY2E0NWRkZWIxZGY2NWZkMDUxMjMzZTVmMTM4YmUwZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25p
bmdXYXRjaHBvaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJv
ZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCkBAIC0zMSw2ICszMSw3IEBA
CiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVk
ZSAiREZHRXhpdFByb2ZpbGUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggMWRmYjVhYzZhZDkwOTNmOGY4MTEwMWVmN2Yy
ZTYxMjMxMWFjMTkzOS4uNDMzOTBkOTY1ZmM1MDM0MDE2ZjdiZmZmMjNlNjhiYjFlMDU0NTUyYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suY3BwCkBAIC00OSw5ICs0OSw5IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZFByb2dy
YW1Db2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayIsCiBjb25z
dCBDbGFzc0luZm8gVW5saW5rZWRFdmFsQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZEV2
YWxDb2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVu
bGlua2VkRXZhbENvZGVCbG9jaykgfTsKIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrIiwgJkJhc2U6
OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKSB9OwogCi1zdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5j
dGlvbkNvZGVCbG9jayhWTSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRh
YmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2lu
ZCwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwg
UGFyc2VyRXJyb3ImIGVycm9yKQorc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdl
bmVyYXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIGtpbmQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9m
aWxlck1vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3Im
IGVycm9yKQogewotICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBib2R5ID0gcGFyc2U8RnVu
Y3Rpb25Cb2R5Tm9kZT4oJnZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhl
Y3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpID8gSlNQYXJz
ZVN0cmljdCA6IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VGdW5jdGlvbkNvZGUsIGVycm9yKTsKKyAg
ICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSA9IHBhcnNlPEZ1bmN0aW9uQm9keU5vZGU+
KCZ2bSwgc291cmNlLCBleGVjdXRhYmxlLT5wYXJhbWV0ZXJzKCksIGV4ZWN1dGFibGUtPm5hbWUo
KSwgZXhlY3V0YWJsZS0+dG9TdHJpY3RuZXNzKCksIEpTUGFyc2VGdW5jdGlvbkNvZGUsIGVycm9y
KTsKIAogICAgIGlmICghYm9keSkgewogICAgICAgICBBU1NFUlQoZXJyb3IubV90eXBlICE9IFBh
cnNlckVycm9yOjpFcnJvck5vbmUpOwpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhWTSYgdm0sIFVubGlu
a2VkRnVuYwogICAgIGJvZHktPmZpbmlzaFBhcnNpbmcoZXhlY3V0YWJsZS0+cGFyYW1ldGVycygp
LCBleGVjdXRhYmxlLT5uYW1lKCksIGV4ZWN1dGFibGUtPmZ1bmN0aW9uTmFtZUlzSW5TY29wZVRv
Z2dsZSgpKTsKICAgICBleGVjdXRhYmxlLT5yZWNvcmRQYXJzZShib2R5LT5mZWF0dXJlcygpLCBi
b2R5LT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKICAgICAKLSAgICBVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUoJnZt
LCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFibGVJbmZvKGJvZHktPm5lZWRzQWN0aXZhdGlvbigpLCBi
b2R5LT51c2VzRXZhbCgpLCBib2R5LT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29u
c3RydWN0KSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxl
SW5mbyhib2R5LT5uZWVkc0FjdGl2YXRpb24oKSwgYm9keS0+dXNlc0V2YWwoKSwgYm9keS0+aXNT
dHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVu
bGlua2VkQnVpbHRpbkZ1bmN0aW9uKSk7CiAgICAgT3duUHRyPEJ5dGVjb2RlR2VuZXJhdG9yPiBn
ZW5lcmF0b3IoYWRvcHRQdHIobmV3IEJ5dGVjb2RlR2VuZXJhdG9yKHZtLCBib2R5LmdldCgpLCBy
ZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlKSkpOwogICAgIGVycm9yID0gZ2VuZXJh
dG9yLT5nZW5lcmF0ZSgpOwogICAgIGJvZHktPmRlc3Ryb3lEYXRhKCk7CkBAIC04MiwxMyArODIs
MTQgQEAgdW5zaWduZWQgVW5saW5rZWRDb2RlQmxvY2s6OmFkZE9yRmluZENvbnN0YW50KEpTVmFs
dWUgdikKICAgICByZXR1cm4gYWRkQ29uc3RhbnQodik7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5v
ZGUsIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSkKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJvb2wgaXNG
cm9tR2xvYmFsQ29kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCkKICAgICA6IEJhc2UoKnZt
LCBzdHJ1Y3R1cmUpCiAgICAgLCBtX251bUNhcHR1cmVkVmFyaWFibGVzKG5vZGUtPmNhcHR1cmVk
VmFyaWFibGVDb3VudCgpKQogICAgICwgbV9mb3JjZVVzZXNBcmd1bWVudHMobm9kZS0+dXNlc0Fy
Z3VtZW50cygpKQogICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChub2RlLT5pc1N0cmljdE1vZGUo
KSkKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMobm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJs
ZXMoKSkKICAgICAsIG1faXNGcm9tR2xvYmFsQ29kZShpc0Zyb21HbG9iYWxDb2RlKQorICAgICwg
bV9pc0J1aWx0aW5GdW5jdGlvbihraW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uKQogICAg
ICwgbV9uYW1lKG5vZGUtPmlkZW50KCkpCiAgICAgLCBtX2luZmVycmVkTmFtZShub2RlLT5pbmZl
cnJlZE5hbWUoKSkKICAgICAsIG1fcGFyYW1ldGVycyhub2RlLT5wYXJhbWV0ZXJzKCkpCkBAIC0x
NjYsNyArMTY3LDcgQEAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OmNvZGVCbG9ja0ZvcihWTSYgdm0sIGNvbnMKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCi0gICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVG
dW5jdGlvbkNvZGVCbG9jayh2bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRl
YnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CisgICAgVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayh2bSwgdGhpcywgc291
cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBpc0J1
aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1h
bEZ1bmN0aW9uLCBlcnJvcik7CiAgICAgCiAgICAgaWYgKGVycm9yLm1fdHlwZSAhPSBQYXJzZXJF
cnJvcjo6RXJyb3JOb25lKQogICAgICAgICByZXR1cm4gMDsKQEAgLTIxMCw2ICsyMTEsNyBAQCBV
bmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgQ29kZVR5cGUgY29kZQogICAgICwgbV9pc1N0cmljdE1vZGUoaW5mby5tX2lzU3Ry
aWN0TW9kZSkKICAgICAsIG1faXNDb25zdHJ1Y3RvcihpbmZvLm1faXNDb25zdHJ1Y3RvcikKICAg
ICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0
aW9uKGluZm8ubV9pc0J1aWx0aW5GdW5jdGlvbikKICAgICAsIG1fZmlyc3RMaW5lKDApCiAgICAg
LCBtX2xpbmVDb3VudCgwKQogICAgICwgbV9lbmRDb2x1bW4oVUlOVF9NQVgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IGI5
ZGFlMmQ1YzY5Yzc5Y2VhYWE4MDIzZDJhM2ExZjI2ZDQ2MDk0M2IuLmFiZjZjZjM1YjkzMDZhNGY3
YTMwMWFiMGRmNzY2NmVjNjEyZTM3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC02NiwyNiArNjYsMzUgQEAgdHlwZWRl
ZiB1bnNpZ25lZCBVbmxpbmtlZE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOwogdHlwZWRlZiB1bnNp
Z25lZCBVbmxpbmtlZExMSW50Q2FsbExpbmtJbmZvOwogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8g
ewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFs
LCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yKQorICAgIEV4ZWN1dGFibGVJ
bmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9k
ZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKQogICAgICAgICA6
IG1fbmVlZHNBY3RpdmF0aW9uKG5lZWRzQWN0aXZhdGlvbikKICAgICAgICAgLCBtX3VzZXNFdmFs
KHVzZXNFdmFsKQogICAgICAgICAsIG1faXNTdHJpY3RNb2RlKGlzU3RyaWN0TW9kZSkKICAgICAg
ICAgLCBtX2lzQ29uc3RydWN0b3IoaXNDb25zdHJ1Y3RvcikKKyAgICAgICAgLCBtX2lzQnVpbHRp
bkZ1bmN0aW9uKGlzQnVpbHRpbkZ1bmN0aW9uKQogICAgIHsKICAgICB9Ci0gICAgYm9vbCBtX25l
ZWRzQWN0aXZhdGlvbjsKLSAgICBib29sIG1fdXNlc0V2YWw7Ci0gICAgYm9vbCBtX2lzU3RyaWN0
TW9kZTsKLSAgICBib29sIG1faXNDb25zdHJ1Y3RvcjsKKyAgICBib29sIG1fbmVlZHNBY3RpdmF0
aW9uIDogMTsKKyAgICBib29sIG1fdXNlc0V2YWwgOiAxOworICAgIGJvb2wgbV9pc1N0cmljdE1v
ZGUgOiAxOworICAgIGJvb2wgbV9pc0NvbnN0cnVjdG9yIDogMTsKKyAgICBib29sIG1faXNCdWls
dGluRnVuY3Rpb24gOiAxOworfTsKKworZW51bSBVbmxpbmtlZEZ1bmN0aW9uS2luZCB7CisgICAg
VW5saW5rZWROb3JtYWxGdW5jdGlvbiwKKyAgICBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwKIH07
CiAKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGljIEpTQ2VsbCB7CiBw
dWJsaWM6CisgICAgZnJpZW5kIGNsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlczsKICAgICBmcmllbmQg
Y2xhc3MgQ29kZUNhY2hlOworICAgIGZyaWVuZCBjbGFzcyBWTTsKICAgICB0eXBlZGVmIEpTQ2Vs
bCBCYXNlOwotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZN
KiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlLCBi
b29sIGlzRnJvbUdsb2JhbENvZGUgPSBmYWxzZSkKKyAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVu
Y3Rpb25Cb2R5Tm9kZSogbm9kZSwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlLCBVbmxpbmtlZEZ1bmN0
aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCkKICAgICB7Ci0gICAgICAgIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVhcCkpIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCks
IHNvdXJjZSwgbm9kZSwgaXNGcm9tR2xvYmFsQ29kZSk7CisgICAgICAgIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVhcCkpIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNv
dXJjZSwgbm9kZSwgaXNGcm9tR2xvYmFsQ29kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQpOwogICAg
ICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oKnZtKTsKICAgICAgICAgcmV0dXJuIGluc3Rh
bmNlOwogICAgIH0KQEAgLTk5LDYgKzEwOCwxNCBAQCBwdWJsaWM6CiAgICAgfQogICAgIHNpemVf
dCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0OwogICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBj
b25zdCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0OyB9CisgICAgSlNQYXJzZXJTdHJpY3Ru
ZXNzIHRvU3RyaWN0bmVzcygpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9pc0J1aWx0aW5G
dW5jdGlvbikKKyAgICAgICAgICAgIHJldHVybiBKU1BhcnNlQnVpbHRpbjsKKyAgICAgICAgaWYg
KG1faXNJblN0cmljdENvbnRleHQpCisgICAgICAgICAgICByZXR1cm4gSlNQYXJzZVN0cmljdDsK
KyAgICAgICAgcmV0dXJuIEpTUGFyc2VOb3JtYWw7CisgICAgfQogICAgIEZ1bmN0aW9uTmFtZUlz
SW5TY29wZVRvZ2dsZSBmdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGUoKSBjb25zdCB7IHJldHVy
biBtX2Z1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZTsgfQogCiAgICAgdW5zaWduZWQgZmlyc3RM
aW5lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdExpbmVPZmZzZXQ7IH0KQEAgLTE0Miw4
ICsxNTksMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0ltbW9ydGFsU3Ry
dWN0dXJlID0gdHJ1ZTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCisgICAg
Ym9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rp
b247IH0KKwogcHJpdmF0ZToKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0
cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbkJvZHlOb2RlKiwgYm9vbCBpc0Zy
b21HbG9iYWxDb2RlKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVj
dHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbkJvZHlOb2RlKiwgYm9vbCBpc0Zyb21H
bG9iYWxDb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCk7CiAgICAgV3JpdGVCYXJyaWVyPFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fY29kZUJsb2NrRm9yQ2FsbDsKICAgICBXcml0ZUJhcnJp
ZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3Q7CiAK
QEAgLTE1Miw2ICsxNzEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0luU3RyaWN0Q29udGV4
dCA6IDE7CiAgICAgYm9vbCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIDogMTsKICAgICBib29sIG1f
aXNGcm9tR2xvYmFsQ29kZSA6IDE7CisgICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsK
IAogICAgIElkZW50aWZpZXIgbV9uYW1lOwogICAgIElkZW50aWZpZXIgbV9pbmZlcnJlZE5hbWU7
CkBAIC0zMTksNiArMzM5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNOdW1lcmljQ29tcGFy
ZUZ1bmN0aW9uKGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKSB7IG1faXNOdW1lcmljQ29t
cGFyZUZ1bmN0aW9uID0gaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CiAgICAgYm9vbCBpc051
bWVyaWNDb21wYXJlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzTnVtZXJpY0NvbXBhcmVG
dW5jdGlvbjsgfQogCisgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1faXNCdWlsdGluRnVuY3Rpb247IH0KKyAgICAKICAgICB2b2lkIHNocmlua1RvRml0KCkKICAg
ICB7CiAgICAgICAgIG1fanVtcFRhcmdldHMuc2hyaW5rVG9GaXQoKTsKQEAgLTUwMCw2ICs1MjIs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1N0cmljdE1vZGUgOiAxOwogICAgIGJvb2wgbV9p
c0NvbnN0cnVjdG9yIDogMTsKICAgICBib29sIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgOiAxOwor
ICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CiAgICAgdW5zaWduZWQgbV9maXJzdExp
bmU7CiAgICAgdW5zaWduZWQgbV9saW5lQ291bnQ7CiAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCmluZGV4IDY4MTBhYjgwMDJjZTZiYjhkNzhlN2ZmMjIyN2Y0YzZlYTdi
NzU4YzIuLmVjNTIxYjUzMDQ2MzkyM2U3NGMwMTBmYTIxOGU1OWVkMmE5YTNjYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCkBAIC0xNzUsNiArMTc1LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2Rl
R2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFAKICNl
bmRpZgogICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKICAgICAsIG1fZXhwcmVzc2lvblRv
b0RlZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGZhbHNlKQogewogICAgIGlm
IChtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKQogICAgICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNG
dWxsU2NvcGVDaGFpbih0cnVlKTsKQEAgLTIyMiw3ICsyMjMsMTMgQEAgQnl0ZWNvZGVHZW5lcmF0
b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb25C
b2R5LCBVbmwKICNlbmRpZgogICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKICAgICAsIG1f
ZXhwcmVzc2lvblRvb0RlZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGNvZGVC
bG9jay0+aXNCdWlsdGluRnVuY3Rpb24oKSkKIHsKKyAgICBpZiAobV9pc0J1aWx0aW5GdW5jdGlv
bikgeworICAgICAgICBtX3Nob3VsZEVtaXRQcm9maWxlSG9va3MgPSBmYWxzZTsKKyAgICAgICAg
bV9zaG91bGRFbWl0RGVidWdIb29rcyA9IGZhbHNlOworICAgIH0KKwogICAgIGlmIChtX3Nob3Vs
ZEVtaXREZWJ1Z0hvb2tzKQogICAgICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNGdWxsU2NvcGVD
aGFpbih0cnVlKTsKIApAQCAtNDM4LDYgKzQ0NSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRl
Y29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29k
CiAjZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAgICAgLCBtX2V4cHJlc3Np
b25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihmYWxzZSkKIHsKICAg
ICBtX2NvZGVCbG9jay0+c2V0TmVlZHNGdWxsU2NvcGVDaGFpbih0cnVlKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CmluZGV4IDRlOWYyMTNjOWJmYTZjZjE5NGIxYTE0ZmU5MTllODMzMzdhZTM1ZDkuLjE1ODQyNzRi
NzhlYTZjMGJkMGVmYjBiOTgyNWM4MThiZTBkYmMwNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ2MSw3
ICs0NjEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBzaG91bGRFbWl0RGVidWdI
b29rcygpIHsgcmV0dXJuIG1fc2hvdWxkRW1pdERlYnVnSG9va3M7IH0KICAgICAgICAgCiAgICAg
ICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzU3Ry
aWN0TW9kZSgpOyB9Ci0KKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisgICAgICAgIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMYWJlbDsKICAgICAgICAgCkBAIC01NDMsNyAr
NTQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogbWFrZUZ1bmN0aW9uKEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3Jl
YXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgYm9keSk7CisgICAgICAgICAgICByZXR1
cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+
c291cmNlKCksIGJvZHksIGZhbHNlLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWls
dGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uKTsKICAgICAgICAgfQogCiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRJbml0TGF6eVJlZ2lzdGVyKFJlZ2lzdGVySUQqKTsKQEAgLTY3
Nyw2ICs2NzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIG1fdXNlc0V4Y2Vw
dGlvbnM7CiAgICAgICAgIGJvb2wgbV9leHByZXNzaW9uVG9vRGVlcDsKKyAgICAgICAgYm9vbCBt
X2lzQnVpbHRpbkZ1bmN0aW9uOwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAxZmZkNGYzMTE4ODJk
MGVlNWM1NTE0ZjViOGIyNTkzOWQ5NzVlMzc5Li42MmVjYTM2YTEwZDc3MDhhOTI4ZDQzYWMwM2Yy
ZmM4NjE1Y2VjYTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0yNiwxMCArMjYsMTAgQEAKIAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCi0jaW5jbHVkZSAiTm9kZUNvbnN0cnVjdG9ycy5o
IgogCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUu
aCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgi
CiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtMzgsNiArMzgs
NyBAQAogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJMYWJlbFNjb3BlLmgiCiAj
aW5jbHVkZSAiTGV4ZXIuaCIKKyNpbmNsdWRlICJOb2RlQ29uc3RydWN0b3JzLmgiCiAjaW5jbHVk
ZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlByb3BlcnR5
TmFtZUFycmF5LmgiCkBAIC01MzUsMzYgKzUzNiwzOSBAQCBSZWdpc3RlcklEKiBDYWxsRnVuY3Rp
b25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
CiAgICAgUmVmUHRyPExhYmVsPiBlbmQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwogICAgIGdl
bmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJl
c3Npb25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0
aW9uKGRzdCksIGJhc2UuZ2V0KCksIG1faWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBm
dW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9u
KGRzdCksIGJhc2UuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuY2FsbCk7CiAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRp
b24oZHN0LCBmdW5jdGlvbi5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5j
dGlvbkNhbGwoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKKyAgICBib29sIGVtaXRD
YWxsQ2hlY2sgPSAhZ2VuZXJhdG9yLmlzQnVpbHRpbkZ1bmN0aW9uKCk7CisgICAgaWYgKGVtaXRD
YWxsQ2hlY2spCisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKGZ1
bmN0aW9uLmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7CisKICAgICB7CiAgICAgICAgIGlmIChtX2Fy
Z3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpIHsKICAgICAgICAg
ICAgIEFyZ3VtZW50TGlzdE5vZGUqIG9sZExpc3QgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CiAgICAg
ICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsK
LQorICAgICAgICAgICAgCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0
aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwg
YmFzZS5nZXQoKSk7CiAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2Vu
ZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1
bWVudHMudGhpc1JlZ2lzdGVyKCksIG9sZExpc3QtPm1fZXhwcik7CiAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9F
eHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7Ci0K
ICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9sZExpc3Q7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJh
dG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7
CiAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2Fy
Z3MpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1Jl
Z2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxs
KHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlv
biwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOwogICAgICAgICB9CiAgICAg
fQotICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOwotICAgIHsKLSAgICAg
ICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2Uu
Z2V0KCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1
bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCks
IGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5l
bWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOworICAgICAgICB7CisgICAgICAgICAgICBDYWxsQXJn
dW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkp
OworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5j
dGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICB9CisgICAgICAgIGdlbmVyYXRvci5l
bWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQu
Z2V0KCkpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZS5nZXQoKTsKIH0KIApAQCAtNTg1LDY1ICs1
ODksNjcgQEAgUmVnaXN0ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICBSZWZQdHI8TGFiZWw+IGVuZCA9
IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2Vu
ZXJhdG9yLmVtaXROb2RlKG1fYmFzZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5m
byhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Np
b25FbmQoKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVt
aXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgbV9p
ZGVudCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uOwogICAgIFJlZlB0cjxSZWdp
c3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVu
Y3Rpb24uZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25BcHBseShm
dW5jdGlvbi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkpOwotICAgIHsKLSAgICAgICAgaWYgKG1heUJl
Q2FsbCkgewotICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1f
bGlzdE5vZGUtPm1fZXhwcikgewotICAgICAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIG9s
ZExpc3QgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7Ci0gICAgICAgICAgICAgICAgaWYgKG1fYXJncy0+
bV9saXN0Tm9kZS0+bV9uZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2FyZ3Mt
Pm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByLT5pc1NpbXBsZUFycmF5KCkpOwotICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoIW1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX25leHQpOwot
ICAgICAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBzdGF0aWNfY2FzdDxBcnJh
eU5vZGUqPihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByKS0+dG9Bcmd1bWVudExp
c3QoZ2VuZXJhdG9yLnZtKCksIDAsIDApOwotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1w
RGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIENhbGxB
cmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAgICAgICAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBv
bGRMaXN0LT5tX2V4cHIpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwo
cmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9u
LCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0
Tm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwotICAgICAgICAgICAgICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVy
YXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAg
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdp
c3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3Rl
ZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5v
ZGUgPSBvbGRMaXN0OworICAgIGJvb2wgZW1pdENhbGxDaGVjayA9ICFnZW5lcmF0b3IuaXNCdWls
dGluRnVuY3Rpb24oKTsKKyAgICBpZiAoZW1pdENhbGxDaGVjaykgeworICAgICAgICBmdW5jdGlv
biA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCks
IGJhc2UuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYXBwbHkpOworICAgICAgICBn
ZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHkoZnVuY3Rpb24uZ2V0KCksIHJlYWxD
YWxsLmdldCgpKTsKKyAgICB9CisgICAgaWYgKG1heUJlQ2FsbCkgeworICAgICAgICBpZiAobV9h
cmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKSB7CisgICAgICAg
ICAgICBBcmd1bWVudExpc3ROb2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAg
ICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KSB7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHItPmlzU2ltcGxlQXJy
YXkoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4
dC0+bV9uZXh0KTsKKyAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBzdGF0aWNf
Y2FzdDxBcnJheU5vZGUqPihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByKS0+dG9B
cmd1bWVudExpc3QoZ2VuZXJhdG9yLnZtKCksIDAsIDApOworICAgICAgICAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9y
LnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBDYWxs
QXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRM
aXN0LT5tX2V4cHIpOworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5W
YWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxB
cmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG1fYXJncy0+
bV9saXN0Tm9kZS0+bV9uZXh0OwogICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBy
ZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlv
bihkc3QpLCBiYXNlLmdldCgpKTsKICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxB
cmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKKyAg
ICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0
ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENh
bGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0
aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwog
ICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gb2xkTGlzdDsK
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUg
JiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHByb2ZpbGVIb29rUmVnaXN0ZXI7Ci0gICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLnNo
b3VsZEVtaXRQcm9maWxlSG9va3MoKSkKLSAgICAgICAgICAgICAgICBwcm9maWxlSG9va1JlZ2lz
dGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERl
c3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHRoaXNSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2FyZ3MtPm1fbGlzdE5vZGUt
Pm1fZXhwcik7Ci0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXJnc1JlZ2lzdGVyOwot
ICAgICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogYXJncyA9IG1fYXJncy0+bV9saXN0Tm9kZS0+
bV9uZXh0OwotICAgICAgICAgICAgaWYgKGFyZ3MtPm1fZXhwci0+aXNSZXNvbHZlTm9kZSgpICYm
IGdlbmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHN0YXRpY19jYXN0PFJlc29sdmVOb2Rl
Kj4oYXJncy0+bV9leHByKS0+aWRlbnRpZmllcigpKSkKLSAgICAgICAgICAgICAgICBhcmdzUmVn
aXN0ZXIgPSBnZW5lcmF0b3IudW5jaGVja2VkUmVnaXN0ZXJGb3JBcmd1bWVudHMoKTsKLSAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1p
dE5vZGUoYXJncy0+bV9leHByKTsKLQotICAgICAgICAgICAgLy8gRnVuY3Rpb24ucHJvdG90eXBl
LmFwcGx5IGlnbm9yZXMgZXh0cmEgYXJndW1lbnRzLCBidXQgd2Ugc3RpbGwKLSAgICAgICAgICAg
IC8vIG5lZWQgdG8gZXZhbHVhdGUgdGhlbSBmb3Igc2lkZSBlZmZlY3RzLgotICAgICAgICAgICAg
d2hpbGUgKChhcmdzID0gYXJncy0+bV9uZXh0KSkKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdE5vZGUoYXJncy0+bV9leHByKTsKLQotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxs
VmFyYXJncyhyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCB0aGlzUmVnaXN0
ZXIuZ2V0KCksIGFyZ3NSZWdpc3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBw
cm9maWxlSG9va1JlZ2lzdGVyLmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOworICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwg
bV9hcmdzKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRo
aXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVu
Y3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
CiAgICAgICAgIH0KLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1f
bGlzdE5vZGUtPm1fbmV4dCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9maWxlSG9v
a1JlZ2lzdGVyOworICAgICAgICBpZiAoZ2VuZXJhdG9yLnNob3VsZEVtaXRQcm9maWxlSG9va3Mo
KSkKKyAgICAgICAgICAgIHByb2ZpbGVIb29rUmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0
b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsK
KyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0
Tm9kZShtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcik7CisgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBhcmdzUmVnaXN0ZXI7CisgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MgPSBtX2Fy
Z3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKKyAgICAgICAgaWYgKGFyZ3MtPm1fZXhwci0+aXNSZXNv
bHZlTm9kZSgpICYmIGdlbmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHN0YXRpY19jYXN0
PFJlc29sdmVOb2RlKj4oYXJncy0+bV9leHByKS0+aWRlbnRpZmllcigpKSkKKyAgICAgICAgICAg
IGFyZ3NSZWdpc3RlciA9IGdlbmVyYXRvci51bmNoZWNrZWRSZWdpc3RlckZvckFyZ3VtZW50cygp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1p
dE5vZGUoYXJncy0+bV9leHByKTsKKworICAgICAgICAvLyBGdW5jdGlvbi5wcm90b3R5cGUuYXBw
bHkgaWdub3JlcyBleHRyYSBhcmd1bWVudHMsIGJ1dCB3ZSBzdGlsbAorICAgICAgICAvLyBuZWVk
IHRvIGV2YWx1YXRlIHRoZW0gZm9yIHNpZGUgZWZmZWN0cy4KKyAgICAgICAgd2hpbGUgKChhcmdz
ID0gYXJncy0+bV9uZXh0KSkKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShhcmdzLT5t
X2V4cHIpOworCisgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbFZhcmFyZ3MocmV0dXJuVmFsdWUu
Z2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBhcmdzUmVnaXN0
ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcHJvZmlsZUhvb2tSZWdpc3Rlci5n
ZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICB9Ci0gICAgZ2Vu
ZXJhdG9yLmVtaXRMYWJlbChyZWFsQ2FsbC5nZXQoKSk7Ci0gICAgeworICAgIGlmIChlbWl0Q2Fs
bENoZWNrKSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOworICAgICAg
ICBnZW5lcmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKICAgICAgICAgQ2FsbEFyZ3Vt
ZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwogICAg
ICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgp
LCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQo
KSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsK
ICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0KCkpOwogICAgIHJldHVybiBy
ZXR1cm5WYWx1ZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2NyZWF0ZV9oYXNoX3RhYmxlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3Rh
YmxlCmluZGV4IDM5Nzk3NmIwNmM3YTliNTgzNjMzMjkwMGE2ZWJiOTNlYzY4Yjc0ODYuLmNhZDY1
YmM0Y2M4ODhlMzE0Zjg4ZDY2NWRkNGE2ZTY0NWEwOWEzNTUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvY3JlYXRlX2hhc2hfdGFibGUKQEAgLTI4OSw3ICsyODksMTcgQEAgc3ViIG91dHB1dCgpIHsK
ICAgICAgICAgICAgICRpbnRyaW5zaWMgPSAiUmVnRXhwVGVzdEludHJpbnNpYyIgaWYgKCRrZXkg
ZXEgInRlc3QiKTsKICAgICAgICAgfQogCisgICAgICAgIGlmICgkdmFsdWVzWyRpXXsidHlwZSJ9
IGVxICJGdW5jdGlvbiIpICB7CisgICAgICAgICAgICBteSAkdGFibGVIZWFkID0gJG5hbWU7Cisg
ICAgICAgICAgICAkdGFibGVIZWFkID1+IHMvVGFibGUkLy87CisgICAgICAgICAgICBwcmludCAi
ICNpZiBKU0NfQlVJTFRJTl9FWElTVFMoIiAuIHVjKCR0YWJsZUhlYWQgLiAka2V5KSAuIilcbiI7
CisgICAgICAgICAgICBwcmludCAiICAgeyBcIiRrZXlcIiwgKCgkYXR0cnNbJGldKSAmIH5GdW5j
dGlvbikgfCBCdWlsdGluLCAkaW50cmluc2ljLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8QnVpbHRp
bkdlbmVyYXRvcj4oIiAuICR0YWJsZUhlYWQgLiB1Y2ZpcnN0KCRrZXkpIC4gIkNvZGVHZW5lcmF0
b3IpLCAoaW50cHRyX3QpJHNlY29uZFZhbHVlIH0sXG4iOworICAgICAgICAgICAgcHJpbnQgIiAj
ZWxzZVxuIgorICAgICAgICB9CiAgICAgICAgIHByaW50ICIgICB7IFwiJGtleVwiLCAkYXR0cnNb
JGldLCAkaW50cmluc2ljLCAoaW50cHRyX3QpIiAuICRmaXJzdENhc3RTdHIgLiAiKCRmaXJzdFZh
bHVlKSwgKGludHB0cl90KSIgLiAkc2Vjb25kQ2FzdFN0ciAuICIoJHNlY29uZFZhbHVlKSB9LFxu
IjsKKyAgICAgICAgaWYgKCR2YWx1ZXNbJGldeyJ0eXBlIn0gZXEgIkZ1bmN0aW9uIikgIHsKKyAg
ICAgICAgICAgIHByaW50ICIgI2VuZGlmXG4iCisgICAgICAgIH0KICAgICAgICAgJGkrKzsKICAg
ICB9CiAgICAgcHJpbnQgIiAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIDAsIDAgfVxuIjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDJmZjBjMzQxNDZl
MmMwYmEyZmY3NmM0ZDNmN2M0NmJhM2UyNTUxNDcuLjkwNDRjZGM2YjhjM2FkNGExZTk0MTg4ZGQx
ZDBlMjAwZTY5ZmI5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2lu
Y2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKKyNpbmNsdWRlICJKU1N0cmlu
Z0lubGluZXMuaCIKICNpbmNsdWRlICJOYW1lSW5zdGFuY2UuaCIKICNpbmNsdWRlICJPYmplY3RD
b25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzM0NTczYWVlZDRjZjY4OTE1
MzRmOTkyM2RmMTJlZWRmZGMyYmU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5zCkBAIC0wLDAgKzEsMzAzIEBACisjIS91c3IvYmlu
L3B5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisjIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
IyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisjIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorIyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisjIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGZpbGVjbXAKK2ltcG9ydCBmbm1hdGNoCitp
bXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHNodXRpbAoraW1wb3J0IHN5cworaW1wb3J0IGRh
dGV0aW1lCitpbXBvcnQganNvbgorCitjb3B5cmlnaHRUZXh0ID0gIiIiICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi9cbgorIiIiCisKK2dlbmVyYXRvclN0cmluZyA9ICIv
KiBHZW5lcmF0ZWQgYnkgJXMgZG8gbm90IGhhbmQgZWRpdC4gKi9cbiIgJSBvcy5wYXRoLmJhc2Vu
YW1lKF9fZmlsZV9fKQorCitmdW5jdGlvbkhlYWRSZWdFeHAgPSByZS5jb21waWxlKHIiZnVuY3Rp
b25ccytcdytccypcKC4qP1wpIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK2Z1bmN0aW9uTmFtZVJl
Z0V4cCA9IHJlLmNvbXBpbGUociJmdW5jdGlvblxzKyhcdyspXHMqXCgiLCByZS5NVUxUSUxJTkUg
fCByZS5TKQorZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIgPSByZS5jb21waWxlKHIiXmZ1bmN0aW9u
XHMrKD86XHcrKVxzKlwoKCg/OlxzKlx3Kyk/XHMqKD86XHMqLFxzKlx3KykqKT9cKSIsIHJlLk1V
TFRJTElORSB8IHJlLlMpCisKK211bHRpbGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIi
XC9cKi4qP1wqXC8iLCByZS5NVUxUSUxJTkUgfCByZS5TKQorc2luZ2xlTGluZUNvbW1lbnRSZWdF
eHAgPSByZS5jb21waWxlKHIiXC9cLy4qP1xuIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKKworZGVm
IGdldENvcHlyaWdodChzb3VyY2UpOgorICAgIGNvcHlyaWdodEJsb2NrID0gbXVsdGlsaW5lQ29t
bWVudFJlZ0V4cC5maW5kYWxsKHNvdXJjZSlbMF0KKyAgICBjb3B5cmlnaHRCbG9jayA9IGNvcHly
aWdodEJsb2NrWzpjb3B5cmlnaHRCbG9jay5pbmRleCgiUmVkaXN0cmlidXRpb24iKV0KKyAgICBj
b3B5UmlnaHRMaW5lcyA9IFtdCisKKyAgICBmb3IgbGluZSBpbiBjb3B5cmlnaHRCbG9jay5zcGxp
dCgiXG4iKToKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiLyoiLCAiIikKKyAgICAgICAg
bGluZSA9IGxpbmUucmVwbGFjZSgiKi8iLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFj
ZSgiKiIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCJDb3B5cmlnaHQiLCAiIikK
KyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiY29weXJpZ2h0IiwgIiIpCisgICAgICAgIGxp
bmUgPSBsaW5lLnJlcGxhY2UoIihDKSIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNl
KCIoYykiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgICAgICBpZiBsZW4o
bGluZSkgPT0gMDoKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgY29weVJpZ2h0TGlu
ZXMuYXBwZW5kKGxpbmUpCisgICAgCisgICAgcmV0dXJuIGxpc3Qoc2V0KGNvcHlSaWdodExpbmVz
KSkKKworCisKK2RlZiBnZXRGdW5jdGlvbnMoc291cmNlKToKKworICAgIHNvdXJjZSA9IG11bHRp
bGluZUNvbW1lbnRSZWdFeHAuc3ViKCIvKiovIiwgc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAuc3Vi
KCIvL1xuIiwgc291cmNlKSkKKworICAgIG1hdGNoZXMgPSBbIGYgZm9yIGYgaW4gZnVuY3Rpb25I
ZWFkUmVnRXhwLmZpbmRpdGVyKHNvdXJjZSldCisgICAgZnVuY3Rpb25Cb3VuZHMgPSBbXQorICAg
IHN0YXJ0ID0gMAorICAgIGVuZCA9IDAKKyAgICBmb3IgbWF0Y2ggaW4gbWF0Y2hlczoKKyAgICAg
ICAgc3RhcnQgPSBtYXRjaC5zdGFydCgpCisgICAgICAgIGlmIHN0YXJ0IDwgZW5kOgorICAgICAg
ICAgICAgY29udGludWUKKyAgICAgICAgZW5kID0gbWF0Y2guZW5kKCkKKyAgICAgICAgd2hpbGUg
c291cmNlW2VuZF0gIT0gJ3snOgorICAgICAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICBk
ZXB0aCA9IDEKKyAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICB3aGlsZSBkZXB0aCA+IDA6
CisgICAgICAgICAgICBpZiBzb3VyY2VbZW5kXSA9PSAneyc6CisgICAgICAgICAgICAgICAgZGVw
dGggPSBkZXB0aCArIDEKKyAgICAgICAgICAgIGVsaWYgc291cmNlW2VuZF0gPT0gJ30nOgorICAg
ICAgICAgICAgICAgIGRlcHRoID0gZGVwdGggLSAxCisgICAgICAgICAgICBlbmQgPSBlbmQgKyAx
CisgICAgICAgIGZ1bmN0aW9uQm91bmRzLmFwcGVuZCgoc3RhcnQsIGVuZCkpCisKKyAgICBmdW5j
dGlvbnMgPSBbc291cmNlW3N0YXJ0OmVuZF0uc3RyaXAoKSBmb3IgKHN0YXJ0LCBlbmQpIGluIGZ1
bmN0aW9uQm91bmRzXQorICAgIHJlc3VsdCA9IFtdCisgICAgZm9yIGZ1bmN0aW9uIGluIGZ1bmN0
aW9uczoKKyAgICAgICAgZnVuY3Rpb24gPSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLnN1YigiIiwg
ZnVuY3Rpb24pCisgICAgICAgIGZ1bmN0aW9uTmFtZSA9IGZ1bmN0aW9uTmFtZVJlZ0V4cC5maW5k
YWxsKGZ1bmN0aW9uKVswXQorICAgICAgICBmdW5jdGlvblBhcmFtZXRlcnMgPSBmdW5jdGlvblBh
cmFtZXRlckZpbmRlci5maW5kYWxsKGZ1bmN0aW9uKVswXS5zcGxpdCgnLCcpCisgICAgICAgIGlm
IGxlbihmdW5jdGlvblBhcmFtZXRlcnNbMF0pID09IDA6CisgICAgICAgICAgICBmdW5jdGlvblBh
cmFtZXRlcnMgPSBbXQorICAgICAgICAgICAgCisgICAgICAgIHJlc3VsdC5hcHBlbmQoKGZ1bmN0
aW9uTmFtZSwgZnVuY3Rpb24sIGZ1bmN0aW9uUGFyYW1ldGVycykpCisgICAgcmV0dXJuIHJlc3Vs
dAorICAgICAgICAKKworZGVmIGdlbmVyYXRlQ29kZShzb3VyY2UpOgorICAgIGlucHV0RmlsZSA9
IG9wZW4oc291cmNlLCAiciIpCisgICAgYmFzZU5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHNvdXJj
ZSkucmVwbGFjZSgiLmpzIiwgIiIpCisgICAgCisgICAgc291cmNlID0gIiIKKyAgICBmb3IgbGlu
ZSBpbiBpbnB1dEZpbGU6CisgICAgICAgIHNvdXJjZSA9IHNvdXJjZSArIGxpbmUKKyAgICAKKyAg
ICBpZiBzeXMucGxhdGZvcm0gPT0gImN5Z3dpbiI6CisgICAgICAgIGtleXdvcmRzVGV4dCA9IGtl
eXdvcmRzVGV4dC5yZXBsYWNlKCJcclxuIiwgIlxuIikKKyAgICByZXR1cm4gKGJhc2VOYW1lLCBn
ZXRGdW5jdGlvbnMoc291cmNlKSwgZ2V0Q29weXJpZ2h0KHNvdXJjZSkpCisKK2RlZiBtYW5nbGVO
YW1lKG9iamVjdCwgbmFtZSk6CisgICAgcU5hbWUgPSBvYmplY3QgKyAiLiIgKyBuYW1lCisgICAg
bWFuZ2xlZE5hbWUgPSAiIgorICAgIGkgPSAwCisgICAgd2hpbGUgaSA8IGxlbihxTmFtZSk6Cisg
ICAgICAgIGlmIHFOYW1lW2ldID09ICcuJzoKKyAgICAgICAgICAgIG1hbmdsZWROYW1lID0gbWFu
Z2xlZE5hbWUgKyBxTmFtZVtpICsgMV0udXBwZXIoKQorICAgICAgICAgICAgaSA9IGkgKyAxCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lICsgcU5h
bWVbaV0KKyAgICAgICAgaSA9IGkgKyAxCisgICAgcmV0dXJuIG1hbmdsZWROYW1lCisKK2J1aWx0
aW5zID0gW10KKworYmFzZU5hbWUgPSBzeXMuYXJndlstMV0KK2J1aWx0aW5fZGVmaW5pdGlvbnMg
PSBzeXMuYXJndlsxOi0xXQorKG91dHB1dF9iYXNlLCBfKSA9IG9zLnBhdGguc3BsaXRleHQoc3lz
LmFyZ3ZbLTFdKQorCitjb3B5cmlnaHRzID0gW10KK2ZvciBmaWxlIGluIGJ1aWx0aW5fZGVmaW5p
dGlvbnM6CisgICAgaWYgZm5tYXRjaC5mbm1hdGNoKGZpbGUsICcqLmpzJyk6CisgICAgICAgIChi
YXNlTmFtZSwgZnVuY3Rpb25zLCBvYmplY3RDb3B5cmlnaHRzKSA9IGdlbmVyYXRlQ29kZShmaWxl
KQorICAgICAgICBjb3B5cmlnaHRzLmV4dGVuZChvYmplY3RDb3B5cmlnaHRzKQorICAgICAgICBi
dWlsdGlucy5hcHBlbmQoKGJhc2VOYW1lLCBmdW5jdGlvbnMpKQorCitjb3B5cmlnaHRzID0gbGlz
dChzZXQoY29weXJpZ2h0cykpCisKK2NvcHlyaWdodEJvZHkgPSAiIgorZm9yIGNvcHlyaWdodCBp
biBjb3B5cmlnaHRzOgorICAgIGNvcHlyaWdodEJvZHkgPSBjb3B5cmlnaHRCb2R5ICsiICogQ29w
eXJpZ2h0IChDKSAiICsgY29weXJpZ2h0ICsgIlxuIgorCitidWlsdGluc0hlYWRlciA9IG9wZW4o
b3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgInciKQorYnVpbHRpbnNJbXBsZW1lbnRhdGlvbiA9IG9w
ZW4ob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCAidyIpCitjb3B5cmlnaHRUZXh0ID0gIi8qXG4i
ICsgY29weXJpZ2h0Qm9keSArIGNvcHlyaWdodFRleHQKK2J1aWx0aW5zSGVhZGVyLndyaXRlKCIi
IiVzCislcworCisjaWZuZGVmIEpTQ0J1aWx0aW5zX0gKKyNkZWZpbmUgSlNDQnVpbHRpbnNfSAor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgSWRl
bnRpZmllcjsKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OworY2xhc3MgU291cmNlQ29kZTsKK2NsYXNz
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgVk07CisKK0Z1bmN0aW9uRXhlY3V0
YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUoVk0mLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKKworIiIiICUgKGdlbmVyYXRvclN0cmluZywgY29w
eXJpZ2h0VGV4dCkpCisKK2NvZGVSZWZlcmVuY2VzID0gW10KKworZm9yIChvYmplY3ROYW1lLCBm
dW5jdGlvbnMpIGluIGJ1aWx0aW5zOgorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIvKiAlcyBm
dW5jdGlvbnMgKi9cbiIgJSBvYmplY3ROYW1lKQorICAgIGZvciAobmFtZSwgaW1wbGVtZW50YXRp
b24sIF8pIGluIGZ1bmN0aW9uczoKKyAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVOYW1lKG9i
amVjdE5hbWUsIG5hbWUpCisgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWVbMF0ubG93
ZXIoKSArIG1hbmdsZWROYW1lWzE6XSArICJDb2RlIgorICAgICAgICBjb2RlUmVmZXJlbmNlcy5h
cHBlbmQoKG1hbmdsZWROYW1lLCBuYW1lLCBpbXBsZW1lbnRhdGlvbikpCisgICAgICAgIGJ1aWx0
aW5zSGVhZGVyLndyaXRlKCJleHRlcm4gY29uc3QgY2hhciogc18lcztcbiIgJSBtYW5nbGVkTmFt
ZSkKKyAgICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoImV4dGVybiBjb25zdCBpbnQgc18lc0xl
bmd0aDtcbiIgJSBtYW5nbGVkTmFtZSkKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiXG4iKQor
ICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19GT1JFQUNIXyVzX0JVSUxUSU4o
bWFjcm8pIFxcXG4iICUgb2JqZWN0TmFtZS5yZXBsYWNlKCIuIiwgIl8iKS51cHBlcigpKQorICAg
IGZvciAobmFtZSwgaW1wbGVtZW50YXRpb24sIGFyZ3VtZW50cykgaW4gZnVuY3Rpb25zOgorICAg
ICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZU5hbWUob2JqZWN0TmFtZSwgbmFtZSkKKyAgICAgICAg
YnVpbHRpbnNIZWFkZXIud3JpdGUoIiAgICBtYWNybyglcywgJXMsICVkKSBcXFxuIiAlIChuYW1l
LCBtYW5nbGVkTmFtZSwgbGVuKGFyZ3VtZW50cykpKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRl
KCJcbiIpCisgICAgZm9yIChuYW1lLCBpbXBsZW1lbnRhdGlvbiwgYXJndW1lbnRzKSBpbiBmdW5j
dGlvbnM6CisgICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19CVUlMVElO
XyVzIDFcbiIgJSBtYW5nbGVOYW1lKG9iamVjdE5hbWUsIG5hbWUpLnVwcGVyKCkpCisgICAgYnVp
bHRpbnNIZWFkZXIud3JpdGUoIlxuXG4iKQorbmFtZXMgPSBbXQorYnVpbHRpbnNIZWFkZXIud3Jp
dGUoIiNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTihtYWNybylcXFxuIikKK2ZvciAoY29kZVJl
ZmVyZW5jZSwgZnVuY3Rpb25OYW1lLCBzb3VyY2UpIGluIGNvZGVSZWZlcmVuY2VzOgorICAgIGJ1
aWx0aW5zSGVhZGVyLndyaXRlKCIgICAgbWFjcm8oJXMsICVzLCBzXyVzTGVuZ3RoKSBcXFxuIiAl
IChjb2RlUmVmZXJlbmNlLCBmdW5jdGlvbk5hbWUsIGNvZGVSZWZlcmVuY2UpKQorICAgIG5hbWVz
LmFwcGVuZChmdW5jdGlvbk5hbWUpCisKK2J1aWx0aW5zSGVhZGVyLndyaXRlKCJcblxuIikKK2J1
aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05f
TkFNRShtYWNybykgXFxcbiIpCitmb3IgbmFtZSBpbiBzb3J0ZWQoc2V0KG5hbWVzKSk6CisgICAg
YnVpbHRpbnNIZWFkZXIud3JpdGUoIiAgICBtYWNybyglcykgXFxcbiIgJSBuYW1lKQorYnVpbHRp
bnNIZWFkZXIud3JpdGUoIiIiCisKKyNkZWZpbmUgSlNDX0RFQ0xBUkVfQlVJTFRJTl9HRU5FUkFU
T1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKKyAgICBGdW5jdGlv
bkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoVk0mKTsKKworSlNDX0ZPUkVBQ0hfQlVJ
TFRJTihKU0NfREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBKU0NfREVDTEFSRV9C
VUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5lIEpTQ19CVUlMVElOX0VYSVNUUyhuYW1lKSBkZWZp
bmVkKEpTQ19CVUlMVElOXyMjbmFtZSkKKworfQorCisjZW5kaWYKKworIiIiKQorCitidWlsdGlu
c0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIiVzCislcworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgorCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVz
LmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIK
KyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworIiIiICAlIChnZW5lcmF0b3JT
dHJpbmcsIGNvcHlyaWdodFRleHQpKQorCitmb3IgKGNvZGVSZWZlcmVuY2UsIG5hbWUsIHNvdXJj
ZSkgaW4gY29kZVJlZmVyZW5jZXM6CisgICAgc291cmNlID0gIihmdW5jdGlvbiAiICsgc291cmNl
W3NvdXJjZS5pbmRleCgiKCIpOl0gKyAiKSIKKyAgICBsaW5lcyA9IGpzb24uZHVtcHMoc291cmNl
KVsxOi0xXS5zcGxpdCgiXFxuIikKKyAgICBzb3VyY2VMZW5ndGggPSBsZW4oc291cmNlKQorICAg
IHNvdXJjZSA9ICIiCisgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgIHNvdXJjZSA9IHNv
dXJjZSArICgiICAgIFwiJXNcXG5cIiBcXFxuIiAlIGxpbmUpCisgICAgYnVpbHRpbnNJbXBsZW1l
bnRhdGlvbi53cml0ZSgiY29uc3QgY2hhciogc18lcyA9XG4lcztcblxuIiAlIChjb2RlUmVmZXJl
bmNlLCBzb3VyY2UpKQorICAgIGJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoImNvbnN0IGlu
dCBzXyVzTGVuZ3RoID0gJWQ7XG5cbiIgJSAoY29kZVJlZmVyZW5jZSwgc291cmNlTGVuZ3RoICsg
MSkpICMgKyAxIGZvciBcbgorCitidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIgorRnVu
Y3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShWTSYgdm0sIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSkKK3sKKyAgICB1bnNpZ25lZCBsaW5lQ291bnQgPSB1bmxpbmtlZEV4ZWN1dGFibGUt
PmxpbmVDb3VudCgpOworICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gMTsKKyAgICB1bnNpZ25l
ZCBzb3VyY2VMZW5ndGggPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnNvdXJjZUxlbmd0aCgpOworICAg
IGJvb2wgZW5kQ29sdW1uSXNPblN0YXJ0TGluZSA9ICFsaW5lQ291bnQ7CisgICAgdW5zaWduZWQg
ZW5kQ29sdW1uRXhjbHVkaW5nQnJhY2VzID0gdW5saW5rZWRFeGVjdXRhYmxlLT51bmxpbmtlZEJv
ZHlFbmRDb2x1bW4oKSArIChlbmRDb2x1bW5Jc09uU3RhcnRMaW5lID8gMCA6IDEpOworICAgIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0ID0gdW5saW5rZWRFeGVjdXRhYmxlLT5zdGFydE9mZnNldCgpOwor
ICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0RXhjbHVkaW5nT3BlbkJyYWNlID0gc3RhcnRPZmZzZXQg
KyAxOworICAgIHVuc2lnbmVkIGVuZE9mZnNldEV4Y2x1ZGluZ0Nsb3NlQnJhY2UgPSBzdGFydE9m
ZnNldCArIHNvdXJjZUxlbmd0aCAtIDE7CisgICAgU291cmNlQ29kZSBib2R5U291cmNlKHNvdXJj
ZS5wcm92aWRlcigpLCBzdGFydE9mZnNldEV4Y2x1ZGluZ09wZW5CcmFjZSwgZW5kT2Zmc2V0RXhj
bHVkaW5nQ2xvc2VCcmFjZSwgMCwgc3RhcnRDb2x1bW4pOworICAgIHJldHVybiBGdW5jdGlvbkV4
ZWN1dGFibGU6OmNyZWF0ZSh2bSwgYm9keVNvdXJjZSwgdW5saW5rZWRFeGVjdXRhYmxlLCAwLCBs
aW5lQ291bnQsIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW5FeGNsdWRpbmdCcmFjZXMsIGZhbHNlKTsK
K30KKworI2RlZmluZSBKU0NfREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5j
dGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCitGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1l
IyNHZW5lcmF0b3IoVk0mIHZtKSBcXAoreyBcXAorICAgIHJldHVybiBjcmVhdGVCdWlsdGluRXhl
Y3V0YWJsZSh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxl
KCksIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyBcXAorfQor
CitKU0NfRk9SRUFDSF9CVUlMVElOKEpTQ19ERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5k
ZWYgSlNDX0RFRklORV9CVUlMVElOX0dFTkVSQVRPUgorfQorCisiIiIpCisKK2J1aWx0aW5zSGVh
ZGVyLmNsb3NlKCkKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24uY2xvc2UoKQorCitpZiAobm90IG9z
LnBhdGguZXhpc3RzKG91dHB1dF9iYXNlICsgIi5oIikpIG9yIChub3QgZmlsZWNtcC5jbXAob3V0
cHV0X2Jhc2UgKyAiLmgudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmgiLCBzaGFsbG93PUZhbHNlKSk6
CisgICAgb3MucmVuYW1lKG91dHB1dF9iYXNlICsgIi5oLnRtcCIsIG91dHB1dF9iYXNlICsgIi5o
IikKK2Vsc2U6CisgICAgb3MucmVtb3ZlKG91dHB1dF9iYXNlICsgIi5oLnRtcCIpCisKK2lmIChu
b3Qgb3MucGF0aC5leGlzdHMob3V0cHV0X2Jhc2UgKyAiLmNwcCIpKSBvciAobm90IGZpbGVjbXAu
Y21wKG91dHB1dF9iYXNlICsgIi5jcHAudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmNwcCIsIHNoYWxs
b3c9RmFsc2UpKToKKyAgICBvcy5yZW5hbWUob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCBvdXRw
dXRfYmFzZSArICIuY3BwIikKK2Vsc2U6CisgICAgb3MucmVtb3ZlKG91dHB1dF9iYXNlICsgIi5j
cHAudG1wIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCmluZGV4IGNhODkwYjA2ZWEzM2ZhOWU3ZjFmYTUxYTM1ZWEyZDQ4ZDAwOWEzOGEu
LjZjOWJmOTZjMTVmNjA5ZTI2NWNlMjUwYTQ1YmYwODYxZDA2Y2QxZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNTEsNiAr
NTEsNyBAQAogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJK
U1N0YWNrSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNTdHJp
bmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNsdWRlICJMTEludENM
b29wLmgiCiAjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuY3BwCmluZGV4IGYwZTAyYmE0ZTQ3
NmY5OWNjOTEzYjA0NjJhZDI3OTUwMDYwOWZhM2EuLjFjMjQwZGNkNzFiZTUyOWQ4OGNiZjQ2MWQx
ODY4ZjVlYjJiMDJhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIlBy
b3RvQ2FsbEZyYW1lLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggY2E3
YWQxMWYyZTBiOGEzYjhiMTg1ODkxZDdlNTIyYmFlNDAzYTIzNi4uY2I1NTA3YmVhYzU1YmY4ZWIx
YjM3ZWM5MGZjYWIxOTM0ZmI0OGVhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUg
IkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDk4ZDEwYTNmNGRjYjEyZDg5ZjM3
YTEyZjIyNjA0Yjk0NmUwOGU2MjcuLmRkMDM1Mzc3OWU4YmRmOThmNDY1OGEzMDdlMzJkMDZlNDcy
NDQxNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkpJ
VElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlu
bGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggOTI4ZGQ1MGZiMDE2ZTI3MTY0NGE1NzVlMzBh
YjVmMjUxNmViNTBlYy4uNDk4NzBlNjhhODdiZTE5ZTE1OGEwNmQxYzY0ZmVjOWI4YmQwODIyMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC00MSw2
ICs0MSw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9uV3JhcHBl
cnMuaCIKICNpbmNsdWRlICJKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIgor
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHAKaW5kZXggMjZkZDRkMWFmNzQ1YWZhMWZiYzUzYTljMDIzYTZlNDc0MWE2
NmEwOS4uZGYxYmQzYTljZmE0MDJjNTJhNTIxMWNmMWFjY2U2N2Q1MTIxYjdlZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTI5LDEx
ICsyOSwxMyBAQAogI2luY2x1ZGUgIkpJVC5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisj
aW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJHQ0F3YXJlSklUU3R1YlJv
dXRpbmUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJJbnRlcnByZXRl
ci5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5j
bHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5j
bHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTVmFyaWFibGVPYmpl
Y3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzMzJfNjQuY3BwCmluZGV4IGQxOGZlYTcxNWNiMDNiMzdhYTkyNmQ4NDlhOGU1YWI5NTYzZWNk
M2QuLjMyNjFiM2FmNmVlYWJkNmYyNmE0M2EwOGQyMDRiYzYyYjA2NTg5YjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApA
QCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklU
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNWYXJpYWJsZU9iamVjdC5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcAppbmRleCA0MDc4NGI0OTQzMWZlMDJlOGU0NTIyZjE2MzA4YzkwMjQ3MTZkMjM2Li4yZjc5
NTU1NGIwOTFkZWViYmMwM2JmMmJlOGM3NGY0MWFlNTQxZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTUHJv
eHkuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5o
IgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKICNp
bmNsdWRlICJTdGFja1Zpc2l0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDY2NDQ0YmFhMDhiNTYyZGQ2OTdlMGNjZDc3MjFlNTVj
MTViYTQ5MTMuLmQ4MmU5ZTljMjgxODQ2MWUzMDVmZjg2NWQyZmIxNjhhNzhjYmI0ZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtNDAs
NyArNDAsNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIK
ICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5j
bHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0
aW9ucy5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9B
U1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApp
bmRleCA4ZWMxZmQzMmEzYWRhMjJlMTI1MjI5NTcwZGNmN2ZmMjhlYWJmMWVkLi40NmE3Yzc2YjJm
OTAxZmMzY2MzNmQxY2UwYzA3MzUzZWIwNmIyZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtODg4LDkgKzg4OCw5IEBAIEV4cHJlc3Npb25Ob2RlKiBB
U1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uCiAgICAgQVNTRVJUKGZ1bmMtPmlzRG90QWNjZXNzb3JOb2RlKCkpOwogICAgIERvdEFj
Y2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4oZnVuYyk7CiAg
ICAgRnVuY3Rpb25DYWxsRG90Tm9kZSogbm9kZTsKLSAgICBpZiAoZG90LT5pZGVudGlmaWVyKCkg
PT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y2FsbCkKKyAgICBpZiAoZG90LT5pZGVudGlmaWVyKCkg
PT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y2FsbCB8fCBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3Zt
LT5wcm9wZXJ0eU5hbWVzLT5jYWxsUHJpdmF0ZU5hbWUpCiAgICAgICAgIG5vZGUgPSBuZXcgKG1f
dm0pIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5p
ZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7Ci0gICAgZWxz
ZSBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXBwbHkpCisg
ICAgZWxzZSBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXBw
bHkgfHwgZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXBwbHlQcml2
YXRlTmFtZSkKICAgICAgICAgbm9kZSA9IG5ldyAobV92bSkgQXBwbHlGdW5jdGlvbkNhbGxEb3RO
b2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90
LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiAgICAgZWxzZQogICAgICAgICBub2RlID0gbmV3ICht
X3ZtKSBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVu
dGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IGNhNGJiNGYwYWRlOGQ2YmM4MjY5MWE2YzAw
MDE0Y2YxOThiZDg4YmQuLmNjYjA3OWQ5NzVhMTQxYzVjNGIyZDdiNjIzMTMwMDA3MDk3Nzc4Mjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC0yNSwxMCArMjUsMTAg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMZXhlci5oIgogCisjaW5jbHVkZSAi
Q29tbW9uSWRlbnRpZmllcnMuaCIKKyNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
SlNGdW5jdGlvbklubGluZXMuaCIKLQogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25z
LmgiCi0jaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk5vZGVJbmZvLmgiCiAjaW5j
bHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlIDx3dGYvZHRvYS5oPgpAQCAtOTAsNiArOTAsNyBAQCBl
bnVtIENoYXJhY3RlclR5cGUgewogCiAgICAgLy8gT3RoZXIgdHlwZXMgKG9ubHkgb25lIHNvIGZh
cikKICAgICBDaGFyYWN0ZXJXaGl0ZVNwYWNlLAorICAgIENoYXJhY3RlclByaXZhdGVJZGVudGlm
aWVyU3RhcnQKIH07CiAKIC8vIDI1NiBMYXRpbi0xIGNvZGVzCkBAIC0xNTgsNyArMTU5LDcgQEAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IHR5cGVzT2ZMYXRpbjFDaGFyYWN0ZXJzWzI1Nl0g
PSB7CiAvKiAgNjEgLSA9ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyRXF1YWwsCiAvKiAg
NjIgLSA+ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyR3JlYXRlciwKIC8qICA2MyAtID8g
ICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJRdWVzdGlvbiwKLS8qICA2NCAtIEAgICAgICAg
ICAgICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyogIDY0IC0gQCAgICAgICAgICAgICAg
ICAgICovIENoYXJhY3RlclByaXZhdGVJZGVudGlmaWVyU3RhcnQsCiAvKiAgNjUgLSBBICAgICAg
ICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAogLyogIDY2IC0gQiAgICAg
ICAgICAgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKIC8qICA2NyAtIEMgICAg
ICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCkBAIC00ODYsOSArNDg3
LDEwIEBAIHN0YXRpYyBjb25zdCBMQ2hhciBzaW5nbGVDaGFyYWN0ZXJFc2NhcGVWYWx1ZXNGb3JB
U0NJSVsxMjhdID0gewogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1MZXhlcjxUPjo6TGV4
ZXIoVk0qIHZtKQorTGV4ZXI8VD46OkxleGVyKFZNKiB2bSwgSlNQYXJzZXJTdHJpY3RuZXNzIHN0
cmljdG5lc3MpCiAgICAgOiBtX2lzUmVwYXJzaW5nKGZhbHNlKQogICAgICwgbV92bSh2bSkKKyAg
ICAsIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbihzdHJpY3RuZXNzID09IEpTUGFyc2VCdWlsdGlu
KQogewogfQogCkBAIC03NTMsNyArNzU1LDI3IEBAIGlubGluZSB2b2lkIExleGVyPFQ+OjpyZWNv
cmQxNihpbnQgYykKICAgICBBU1NFUlQoYyA8PSBzdGF0aWNfY2FzdDxpbnQ+KFVTSFJUX01BWCkp
OwogICAgIG1fYnVmZmVyMTYuYXBwZW5kKHN0YXRpY19jYXN0PFVDaGFyPihjKSk7CiB9Ci0KKyAg
ICAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECitib29sIGlzU2FmZUlkZW50aWZpZXIoVk0mIHZtLCBj
b25zdCBJZGVudGlmaWVyKiBpZGVudCkKK3sKKyAgICBpZiAoIWlkZW50KQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAvKiBKdXN0IGJsb2NrIGFueSB1c2Ugb2Ygc3VzcGljaW91cyBpZGVudGlm
aWVycy4gIFRoaXMgaXMgaW50ZW5kZWQgdG8KKyAgICAgKiBiZSB1c2VkIGFzIGEgc2FmZXR5IG5l
dCB3aGlsZSBpbXBsZW1lbnRpbmcgYnVpbHRpbnMuCisgICAgICovCisgICAgaWYgKCppZGVudCA9
PSB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KCppZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5hcHBseSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+ZXZhbCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+RnVuY3Rpb24p
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorICAg
IAogdGVtcGxhdGUgPD4KIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFM
V0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwYXJzZUlkZW50aWZpZXIoSlNU
b2tlbkRhdGEqIHRva2VuRGF0YSwgdW5zaWduZWQgbGV4ZXJGbGFncywgYm9vbCBzdHJpY3RNb2Rl
KQogewpAQCAtNzY1LDcgKzc4NywxMSBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVu
dGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAogICAgICAg
ICAgICAgcmV0dXJuIGtleXdvcmQgPT0gUkVTRVJWRURfSUZfU1RSSUNUICYmICFzdHJpY3RNb2Rl
ID8gSURFTlQgOiBrZXl3b3JkOwogICAgICAgICB9CiAgICAgfQotCisgICAgCisgICAgYm9vbCBp
c1ByaXZhdGVOYW1lID0gbV9jdXJyZW50ID09ICdAJyAmJiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rp
b247CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgIHNoaWZ0KCk7CisgICAgCiAgICAg
Y29uc3QgTENoYXIqIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKICAgICB1
bnNpZ25lZCBpZGVudGlmaWVyTGluZVN0YXJ0ID0gY3VycmVudExpbmVTdGFydE9mZnNldCgpOwog
ICAgIApAQCAtNzc5LDE1ICs4MDUsMjYgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRl
bnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKIAogICAg
IGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gMDsKICAgICAKLSAgICBpZiAoc2hvdWxkQ3JlYXRl
SWRlbnRpZmllcikgeworICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyIHx8IG1fcGFyc2lu
Z0J1aWx0aW5GdW5jdGlvbikgewogICAgICAgICBpbnQgaWRlbnRpZmllckxlbmd0aCA9IGN1cnJl
bnRTb3VyY2VQdHIoKSAtIGlkZW50aWZpZXJTdGFydDsKICAgICAgICAgaWRlbnQgPSBtYWtlSWRl
bnRpZmllcihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwotCisgICAgICAgIGlm
IChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKKyAgICAgICAgICAgIGlmICghaXNTYWZlSWRl
bnRpZmllcigqbV92bSwgaWRlbnQpICYmICFpc1ByaXZhdGVOYW1lKSB7CisgICAgICAgICAgICAg
ICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJUaGUgdXNlIG9mICciLCBpZGVudC0+
c3RyaW5nKCksICInIGlzIGRpc2FsbG93ZWQgaW4gYnVpbHRpbiBmdW5jdGlvbnMuIik7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgICAgICAgICAgaWRlbnQgPSBtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5nZXRQcml2YXRlTmFtZSgqaWRlbnQpOworICAgICAgICAgICAgZWxzZSBpZiAoKmlk
ZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQpCisgICAgICAgICAg
ICAgICAgdG9rZW5EYXRhLT5pZGVudCA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRL
ZXl3b3JkUHJpdmF0ZU5hbWU7CisgICAgICAgICAgICBpZiAoIWlkZW50KQorICAgICAgICAgICAg
ICAgIHJldHVybiBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzsKKyAgICAgICAgfQogICAg
ICAgICB0b2tlbkRhdGEtPmlkZW50ID0gaWRlbnQ7CiAgICAgfSBlbHNlCiAgICAgICAgIHRva2Vu
RGF0YS0+aWRlbnQgPSAwOwogCi0gICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tl
bkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMp
KSkgeworICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICEo
bGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlzUHJpdmF0
ZU5hbWUpIHsKICAgICAgICAgQVNTRVJUKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpOwogICAgICAg
ICBpZiAocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHsKICAgICAgICAgICAgIGNvbnN0IEhh
c2hFbnRyeSogZW50cnkgPSBtX3ZtLT5rZXl3b3Jkcy0+Z2V0S2V5d29yZCgqaWRlbnQpOwpAQCAt
ODE0LDYgKzg1MSwxMCBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBB
TFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAgICAgICAgICAgcmV0
dXJuIGtleXdvcmQgPT0gUkVTRVJWRURfSUZfU1RSSUNUICYmICFzdHJpY3RNb2RlID8gSURFTlQg
OiBrZXl3b3JkOwogICAgICAgICB9CiAgICAgfQorICAgIAorICAgIGJvb2wgaXNQcml2YXRlTmFt
ZSA9IG1fY3VycmVudCA9PSAnQCcgJiYgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uOworICAgIGlm
IChpc1ByaXZhdGVOYW1lKQorICAgICAgICBzaGlmdCgpOwogCiAgICAgY29uc3QgVUNoYXIqIGlk
ZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKICAgICBpbnQgaWRlbnRpZmllckxp
bmVTdGFydCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKQEAgLTgyNiw2ICs4NjcsNyBAQCB0
ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9r
ZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAgIH0KICAgICAKICAgICBpZiAoVU5MSUtFTFkobV9j
dXJyZW50ID09ICdcXCcpKSB7CisgICAgICAgIEFTU0VSVCghaXNQcml2YXRlTmFtZSk7CiAgICAg
ICAgIHNldE9mZnNldEZyb21Tb3VyY2VQdHIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGlu
ZVN0YXJ0KTsKICAgICAgICAgcmV0dXJuIHBhcnNlSWRlbnRpZmllclNsb3dDYXNlPHNob3VsZENy
ZWF0ZUlkZW50aWZpZXI+KHRva2VuRGF0YSwgbGV4ZXJGbGFncywgc3RyaWN0TW9kZSk7CiAgICAg
fQpAQCAtODM3LDE4ICs4NzksMjkgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRp
Zmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAKIAogICAgIGNv
bnN0IElkZW50aWZpZXIqIGlkZW50ID0gMDsKICAgICAKLSAgICBpZiAoc2hvdWxkQ3JlYXRlSWRl
bnRpZmllcikgeworICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyIHx8IG1fcGFyc2luZ0J1
aWx0aW5GdW5jdGlvbikgewogICAgICAgICBpbnQgaWRlbnRpZmllckxlbmd0aCA9IGN1cnJlbnRT
b3VyY2VQdHIoKSAtIGlkZW50aWZpZXJTdGFydDsKICAgICAgICAgaWYgKGlzQWxsOEJpdCkKICAg
ICAgICAgICAgIGlkZW50ID0gbWFrZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hhcihpZGVudGlmaWVy
U3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBpZGVu
dCA9IG1ha2VJZGVudGlmaWVyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCk7Ci0g
ICAgICAgIAorICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CisgICAgICAg
ICAgICBpZiAoIWlzU2FmZUlkZW50aWZpZXIoKm1fdm0sIGlkZW50KSAmJiAhaXNQcml2YXRlTmFt
ZSkgeworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZygiVGhl
IHVzZSBvZiAnIiwgaWRlbnQtPnN0cmluZygpLCAiJyBpcyBkaXNhbGxvd2VkIGluIGJ1aWx0aW4g
ZnVuY3Rpb25zLiIpOworICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPSzsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICAgICAgICAgIGlk
ZW50ID0gbV92bS0+cHJvcGVydHlOYW1lcy0+Z2V0UHJpdmF0ZU5hbWUoKmlkZW50KTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRL
ZXl3b3JkKQorICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAmbV92bS0+cHJvcGVy
dHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZFByaXZhdGVOYW1lOworICAgICAgICAgICAgaWYgKCFp
ZGVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9QUklWQVRFX05BTUVfRVJST1JU
T0s7CisgICAgICAgIH0KICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IGlkZW50OwogICAgIH0g
ZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gMDsKICAgICAKLSAgICBpZiAoVU5MSUtF
TFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxhZ3MgJiBMZXhlckZs
YWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpKSB7CisgICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcg
PCBtYXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2Vy
dmVkV29yZHMpKSAmJiAhaXNQcml2YXRlTmFtZSkgewogICAgICAgICBBU1NFUlQoc2hvdWxkQ3Jl
YXRlSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkg
ewogICAgICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IG1fdm0tPmtleXdvcmRzLT5n
ZXRLZXl3b3JkKCppZGVudCk7CkBAIC0xNjU4LDYgKzE3MTEsNyBAQCBpbk51bWJlckFmdGVyRGVj
aW1hbFBvaW50OgogICAgICAgICBBU1NFUlQoaXNJZGVudFN0YXJ0KG1fY3VycmVudCkpOwogICAg
ICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNlIENoYXJhY3RlckJhY2tTbGFzaDoKKyAgICAgICAg
cGFyc2VJZGVudDoKICAgICAgICAgaWYgKGxleGVyRmxhZ3MgJiBMZXhleEZsYWdzRG9udEJ1aWxk
S2V5d29yZHMpCiAgICAgICAgICAgICB0b2tlbiA9IHBhcnNlSWRlbnRpZmllcjxmYWxzZT4odG9r
ZW5EYXRhLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKTsKICAgICAgICAgZWxzZQpAQCAtMTY3MCw2
ICsxNzI0LDExIEBAIGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ6CiAgICAgICAgIG1fdGVybWlu
YXRvciA9IHRydWU7CiAgICAgICAgIG1fbGluZVN0YXJ0ID0gbV9jb2RlOwogICAgICAgICBnb3Rv
IHN0YXJ0OworICAgIGNhc2UgQ2hhcmFjdGVyUHJpdmF0ZUlkZW50aWZpZXJTdGFydDoKKyAgICAg
ICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikKKyAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudDsKKworICAgICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNlIENoYXJhY3RlckludmFsaWQ6
CiAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gaW52YWxpZENoYXJhY3Rlck1lc3NhZ2UoKTsK
ICAgICAgICAgdG9rZW4gPSBFUlJPUlRPSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTGV4ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
aAppbmRleCAyOGM2MWJhMTk4ZDJjMTVhNDliYjE4NTJlZDMwYmVmZWI4OTA0MDA4Li5iODg3M2U5
OTUwMjg2NDRiZjhjYmIzZDRjMmRhNTYyZTkzZTBlOGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9MZXhlci5oCkBAIC03Miw3ICs3Miw3IEBAIGNsYXNzIExleGVyIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIAogcHVibGljOgotICAgIExleGVyKFZNKik7CisgICAgTGV4ZXIo
Vk0qLCBKU1BhcnNlclN0cmljdG5lc3MpOwogICAgIH5MZXhlcigpOwogCiAgICAgLy8gQ2hhcmFj
dGVyIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMuCkBAIC0yMzgsNiArMjM4LDcgQEAgcHJpdmF0ZToK
ICAgICBJZGVudGlmaWVyQXJlbmEqIG1fYXJlbmE7CiAKICAgICBWTSogbV92bTsKKyAgICBib29s
IG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKIH07CiAKIHRlbXBsYXRlIDw+CkBAIC0zMzUsNiAr
MzM2LDEyIEBAIEFMV0FZU19JTkxJTkUgY29uc3QgSWRlbnRpZmllciogTGV4ZXI8VD46Om1ha2VM
Q2hhcklkZW50aWZpZXIoY29uc3QgVUNoYXIqIGNoYXJhCiAgICAgcmV0dXJuICZtX2FyZW5hLT5t
YWtlSWRlbnRpZmllckxDaGFyRnJvbVVDaGFyKG1fdm0sIGNoYXJhY3RlcnMsIGxlbmd0aCk7CiB9
CiAKKyNpZiBBU1NFUlRfRElTQUJMRUQKK0FMV0FZU19JTkxJTkUgYm9vbCBpc1NhZmVJZGVudGlm
aWVyKFZNJiwgY29uc3QgSWRlbnRpZmllciopIHsgcmV0dXJuIHRydWU7IH0KKyNlbHNlCitib29s
IGlzU2FmZUlkZW50aWZpZXIoVk0mLCBjb25zdCBJZGVudGlmaWVyKik7CisjZW5kaWYKKwogdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+Ojps
ZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW4qIHRva2VuUmVjb3JkLCB1bnNpZ25lZCBsZXhlckZs
YWdzLCBib29sIHN0cmljdE1vZGUpCiB7CkBAIC0zNzAsMTAgKzM3NywxNSBAQCBBTFdBWVNfSU5M
SU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW4qIHRv
a2VuUmVjb3JkLCB1bgogICAgIEFTU0VSVChjdXJyZW50T2Zmc2V0KCkgPj0gY3VycmVudExpbmVT
dGFydE9mZnNldCgpKTsKIAogICAgIC8vIENyZWF0ZSB0aGUgaWRlbnRpZmllciBpZiBuZWVkZWQK
LSAgICBpZiAobGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250QnVpbGRLZXl3b3JkcykKKyAgICBp
ZiAobGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250QnVpbGRLZXl3b3JkcworI2lmICFBU1NFUlRf
RElTQUJMRUQKKyAgICAgICAgJiYgIW1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbgorI2VuZGlmCisg
ICAgICAgICkKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IDA7CiAgICAgZWxzZQogICAgICAg
ICB0b2tlbkRhdGEtPmlkZW50ID0gbWFrZUxDaGFySWRlbnRpZmllcihzdGFydCwgcHRyIC0gc3Rh
cnQpOworCiAgICAgdG9rZW5Mb2NhdGlvbi0+bGluZSA9IG1fbGluZU51bWJlcjsKICAgICB0b2tl
bkxvY2F0aW9uLT5saW5lU3RhcnRPZmZzZXQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CiAg
ICAgdG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZzZXQgPSBvZmZzZXRGcm9tU291cmNlUHRyKHN0YXJ0
KTsKQEAgLTM4MSw2ICszOTMsMTMgQEAgQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxU
Pjo6bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rva2VuKiB0b2tlblJlY29yZCwgdW4KICAgICBBU1NF
UlQodG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZzZXQgPj0gdG9rZW5Mb2NhdGlvbi0+bGluZVN0YXJ0
T2Zmc2V0KTsKICAgICB0b2tlblJlY29yZC0+bV9zdGFydFBvc2l0aW9uID0gc3RhcnRQb3NpdGlv
bjsKICAgICB0b2tlblJlY29yZC0+bV9lbmRQb3NpdGlvbiA9IGN1cnJlbnRQb3NpdGlvbigpOwor
I2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7
CisgICAgICAgIGlmICghaXNTYWZlSWRlbnRpZmllcigqbV92bSwgdG9rZW5EYXRhLT5pZGVudCkp
CisgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7CisgICAgfQorI2VuZGlmCisKICAgICBtX2xh
c3RUb2tlbiA9IElERU5UOwogICAgIHJldHVybiBJREVOVDsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggZmM5Y2NkOWY2YzU3NmMxYWVmNTQ3ZjIxMWZkZDU5
NmY0MmUwNTgwNi4uZDk1MmJhNmE5NGQyZjZiNDE4MjE1NTAwNGQwYTk3MDg0MjliZDc4YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTEzMiw2ICsxMzIsMTIgQEAg
UGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4gUHJvZ3JhbU5vZGU6OmNyZWF0ZShWTSogdm0sIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQKICAgICByZXR1cm4gbm9kZS5yZWxlYXNlKCk7CiB9CiAK
Kwordm9pZCBQcm9ncmFtTm9kZTo6c2V0Q2xvc2VkVmFyaWFibGVzKGNvbnN0IFZlY3RvcjxSZWZQ
dHI8U3RyaW5nSW1wbD4+JiYgY2xvc2VkVmFyaWFibGVzKQoreworICAgIG1fY2xvc2VkVmFyaWFi
bGVzID0gc3RkOjptb3ZlKGNsb3NlZFZhcmlhYmxlcyk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSBFdmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
CiBpbmxpbmUgRXZhbE5vZGU6OkV2YWxOb2RlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNp
Z25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0
YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFy
aWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywg
aW50IG51bUNvbnN0YW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCBk
Nzc5YTE3OGQ5NTZmZjk5ZmQwYmVkNWQ1ZjQ1NGFhM2U2YjUwODc5Li44MTZmZjAwMWFiZjAzNzZj
NjQyZjFhOTM4ZDBlMGE5ZjUyOWNhNmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oCkBAIC0xNDMxLDYgKzE0MzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBu
ZWVkc0FjdGl2YXRpb24oKSBjb25zdCB7IHJldHVybiAoaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkg
fHwgKG1fZmVhdHVyZXMgJiAoRXZhbEZlYXR1cmUgfCBXaXRoRmVhdHVyZSB8IENhdGNoRmVhdHVy
ZSkpOyB9CiAgICAgICAgIGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVy
biAhIW1fY2FwdHVyZWRWYXJpYWJsZXMuc2l6ZSgpOyB9CiAgICAgICAgIHNpemVfdCBjYXB0dXJl
ZFZhcmlhYmxlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2NhcHR1cmVkVmFyaWFibGVzLnNpemUo
KTsgfQorICAgICAgICBjb25zdCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcygpIGNv
bnN0IHsgcmV0dXJuIG1fY2FwdHVyZWRWYXJpYWJsZXM7IH0KICAgICAgICAgYm9vbCBjYXB0dXJl
cyhjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgeyByZXR1cm4gbV9jYXB0dXJlZFZhcmlhYmxlcy5j
b250YWlucyhpZGVudC5pbXBsKCkpOyB9CiAKICAgICAgICAgVmFyU3RhY2smIHZhclN0YWNrKCkg
eyByZXR1cm4gbV92YXJTdGFjazsgfQpAQCAtMTQ0Niw2ICsxNDQ3LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCgpIGNvbnN0OwogCiAg
ICAgICAgIHZvaWQgZW1pdFN0YXRlbWVudHNCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqIGRlc3RpbmF0aW9uKTsKKyAgICAgICAgCisgICAgICAgIHZvaWQgc2V0Q2xvc2Vk
VmFyaWFibGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYpIHsgfQogCiAgICAg
cHJvdGVjdGVkOgogICAgICAgICB2b2lkIHNldFNvdXJjZShjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UpIHsgbV9zb3VyY2UgPSBzb3VyY2U7IH0KQEAgLTE0NzUsMTEgKzE0NzgsMTMgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9uID0g
ZmFsc2U7CiAKKyAgICAgICAgdm9pZCBzZXRDbG9zZWRWYXJpYWJsZXMoY29uc3QgVmVjdG9yPFJl
ZlB0cjxTdHJpbmdJbXBsPj4mJik7CisgICAgICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5n
SW1wbD4+JiBjbG9zZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2Nsb3NlZFZhcmlhYmxl
czsgfQogICAgIHByaXZhdGU6CiAgICAgICAgIFByb2dyYW1Ob2RlKFZNKiwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0
YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sq
LCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2Rl
RmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwot
CisgICAgICAgIFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+IG1fY2xvc2VkVmFyaWFibGVzOwog
ICAgICAgICB1bnNpZ25lZCBtX3N0YXJ0Q29sdW1uOwogICAgICAgICB1bnNpZ25lZCBtX2VuZENv
bHVtbjsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4
IDI5NzY2NmU3MjZlNDVkMDgzZWYxMzQ5ZGRmZmRmMzdlZjgwMGRmN2EuLjUwYmVjNzlmZTM4YWRm
OGYzYTA0ZjZiNDZjYmQyYTVjYmZjZjI0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5jcHAKQEAgLTIwNCw4ICsyMDQsOSBAQCBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2Vy
KFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcnMqCiAg
ICAgLCBtX2xhc3RJZGVudGlmaWVyKDApCiAgICAgLCBtX2xhc3RGdW5jdGlvbk5hbWUobnVsbHB0
cikKICAgICAsIG1fc291cmNlRWxlbWVudHMoMCkKKyAgICAsIG1fcGFyc2luZ0J1aWx0aW4oc3Ry
aWN0bmVzcyA9PSBKU1BhcnNlQnVpbHRpbikKIHsKLSAgICBtX2xleGVyID0gYWRvcHRQdHIobmV3
IExleGVyVHlwZSh2bSkpOworICAgIG1fbGV4ZXIgPSBhZG9wdFB0cihuZXcgTGV4ZXJUeXBlKHZt
LCBzdHJpY3RuZXNzKSk7CiAgICAgbV9hcmVuYSA9IG1fdm0tPnBhcnNlckFyZW5hLmdldCgpOwog
ICAgIG1fbGV4ZXItPnNldENvZGUoc291cmNlLCBtX2FyZW5hKTsKICAgICBtX3Rva2VuLm1fbG9j
YXRpb24ubGluZSA9IHNvdXJjZS5maXJzdExpbmUoKTsKQEAgLTI1Niw2ICsyNTcsNyBAQCBTdHJp
bmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoKQogICAgIElkZW50aWZpZXJTZXQgY2Fw
dHVyZWRWYXJpYWJsZXM7CiAgICAgYm9vbCBtb2RpZmllZFBhcmFtZXRlciA9IGZhbHNlOwogICAg
IHNjb3BlLT5nZXRDYXB0dXJlZFZhcmlhYmxlcyhjYXB0dXJlZFZhcmlhYmxlcywgbW9kaWZpZWRQ
YXJhbWV0ZXIpOworICAgIAogICAgIENvZGVGZWF0dXJlcyBmZWF0dXJlcyA9IGNvbnRleHQuZmVh
dHVyZXMoKTsKICAgICBpZiAoc2NvcGUtPnN0cmljdE1vZGUoKSkKICAgICAgICAgZmVhdHVyZXMg
fD0gU3RyaWN0TW9kZUZlYXR1cmU7CkBAIC0yNjMsMjEgKzI2NSwzNiBAQCBTdHJpbmcgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlSW5uZXIoKQogICAgICAgICBmZWF0dXJlcyB8PSBTaGFkb3dzQXJn
dW1lbnRzRmVhdHVyZTsKICAgICBpZiAobW9kaWZpZWRQYXJhbWV0ZXIpCiAgICAgICAgIGZlYXR1
cmVzIHw9IE1vZGlmaWVkUGFyYW1ldGVyRmVhdHVyZTsKLQorICAgIAorICAgIFZlY3RvcjxSZWZQ
dHI8U3RyaW5nSW1wbD4+IGNsb3NlZFZhcmlhYmxlczsKKyAgICBpZiAobV9wYXJzaW5nQnVpbHRp
bikgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghY2FwdHVyZWRWYXJpYWJsZXMuc2l6ZSgpKTsK
KyAgICAgICAgSWRlbnRpZmllclNldCB1c2VkVmFyaWFibGVzOworICAgICAgICBzY29wZS0+Z2V0
VXNlZFZhcmlhYmxlcyh1c2VkVmFyaWFibGVzKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiB2
YXJpYWJsZSA6IHVzZWRWYXJpYWJsZXMpIHsKKyAgICAgICAgICAgIGlmIChzY29wZS0+aGFzRGVj
bGFyZWRWYXJpYWJsZShJZGVudGlmaWVyKG1fdm0sIHZhcmlhYmxlLmdldCgpKSkpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChzY29wZS0+
aGFzRGVjbGFyZWRQYXJhbWV0ZXIoSWRlbnRpZmllcihtX3ZtLCB2YXJpYWJsZS5nZXQoKSkpKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgY2xvc2VkVmFyaWFibGVzLmFw
cGVuZCh2YXJpYWJsZSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgZGlkRmluaXNoUGFyc2luZyhz
b3VyY2VFbGVtZW50cywgY29udGV4dC52YXJEZWNsYXJhdGlvbnMoKSwgY29udGV4dC5mdW5jRGVj
bGFyYXRpb25zKCksIGZlYXR1cmVzLAotICAgICAgICBjb250ZXh0Lm51bUNvbnN0YW50cygpLCBj
YXB0dXJlZFZhcmlhYmxlcyk7CisgICAgICAgIGNvbnRleHQubnVtQ29uc3RhbnRzKCksIGNhcHR1
cmVkVmFyaWFibGVzLCBzdGQ6Om1vdmUoY2xvc2VkVmFyaWFibGVzKSk7CiAKICAgICByZXR1cm4g
cGFyc2VFcnJvcjsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHZvaWQgUGFy
c2VyPExleGVyVHlwZT46OmRpZEZpbmlzaFBhcnNpbmcoU291cmNlRWxlbWVudHMqIHNvdXJjZUVs
ZW1lbnRzLCBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrPiogdmFy
U3RhY2ssIAotICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25T
dGFjaz4qIGZ1bmNTdGFjaywgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRz
LCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcnMpCisgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xh
cmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiogZnVuY1N0YWNrLCBDb2RlRmVhdHVyZXMgZmVh
dHVyZXMsIGludCBudW1Db25zdGFudHMsIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFycywgY29u
c3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJiBjbG9zZWRWYXJpYWJsZXMpCiB7CiAgICAg
bV9zb3VyY2VFbGVtZW50cyA9IHNvdXJjZUVsZW1lbnRzOwogICAgIG1fdmFyRGVjbGFyYXRpb25z
ID0gdmFyU3RhY2s7CiAgICAgbV9mdW5jRGVjbGFyYXRpb25zID0gZnVuY1N0YWNrOwogICAgIG1f
Y2FwdHVyZWRWYXJpYWJsZXMuc3dhcChjYXB0dXJlZFZhcnMpOworICAgIG1fY2xvc2VkVmFyaWFi
bGVzID0gY2xvc2VkVmFyaWFibGVzOwogICAgIG1fZmVhdHVyZXMgPSBmZWF0dXJlczsKICAgICBt
X251bUNvbnN0YW50cyA9IG51bUNvbnN0YW50czsKIH0KQEAgLTIzNDYsNiArMjM2MywxMCBAQCB0
ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPiB2b2lkIFBhcnNlcjxMZXhlclR5cGU+Ojpwcmlu
dFVuZXhwZWN0ZWRUb2tlblRleHQoVwogICAgIGNhc2UgUkVTRVJWRUQ6CiAgICAgICAgIG91dC5w
cmludCgiVW5leHBlY3RlZCB1c2Ugb2YgcmVzZXJ2ZWQgd29yZCAnIiwgZ2V0VG9rZW4oKSwgIici
KTsKICAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJP
UlRPSzoKKyAgICAgICAgb3V0LnByaW50KCJJbnZhbGlkIHByaXZhdGUgbmFtZSAnIiwgZ2V0VG9r
ZW4oKSwgIiciKTsKKyAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAgICAgY2FzZSBJREVO
VDoKICAgICAgICAgb3V0LnByaW50KCJVbmV4cGVjdGVkIGlkZW50aWZpZXIgJyIsIGdldFRva2Vu
KCksICInIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBiNjk4ZWY5
MzY4Y2I4YzhmMTk3Y2NkMDAwYWNhYTZkZmIxMWJhMjQ0Li45MDMzODUwYzhjOTdmNTdlMjFkYTVl
ZWRiMDJkMDQ0ZjRjODk3OGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgK
QEAgLTIzLDYgKzIzLDcgQEAKICNpZm5kZWYgUGFyc2VyX2gKICNkZWZpbmUgUGFyc2VyX2gKIAor
I2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNp
bmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgpAQCAt
MjU5LDYgKzI2MCwxMCBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICByZXR1cm4gaXNWYWxpZFN0
cmljdE1vZGUgPyBCaW5kaW5nU3VjY2VlZGVkIDogU3RyaWN0QmluZGluZ0ZhaWxlZDsKICAgICB9
CiAKKyAgICB2b2lkIGdldFVzZWRWYXJpYWJsZXMoSWRlbnRpZmllclNldCYgdXNlZFZhcmlhYmxl
cykKKyAgICB7CisgICAgICAgIHVzZWRWYXJpYWJsZXMuc3dhcChtX3VzZWRWYXJpYWJsZXMpOwor
ICAgIH0KIAogICAgIHZvaWQgdXNlVmFyaWFibGUoY29uc3QgSWRlbnRpZmllciogaWRlbnQsIGJv
b2wgaXNFdmFsKQogICAgIHsKQEAgLTQxNCw2ICs0MTksNyBAQCBwdWJsaWM6CiAgICAgUGFzc1Jl
ZlB0cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYpOwogCiAgICAgSlNUZXh0UG9zaXRp
b24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4ZXItPnBv
c2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsgfQorICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3Ry
aW5nSW1wbD4+JiYgY2xvc2VkVmFyaWFibGVzKCkgeyByZXR1cm4gc3RkOjptb3ZlKG1fY2xvc2Vk
VmFyaWFibGVzKTsgfQogCiBwcml2YXRlOgogICAgIHN0cnVjdCBBbGxvd0luT3ZlcnJpZGUgewpA
QCAtNTQwLDcgKzU0Niw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIHBhcnNlSW5uZXIoKTsKIAog
ICAgIHZvaWQgZGlkRmluaXNoUGFyc2luZyhTb3VyY2VFbGVtZW50cyosIFBhcnNlckFyZW5hRGF0
YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+KiwgCi0gICAgICAgIFBhcnNlckFyZW5hRGF0
YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qLCBDb2RlRmVhdHVyZXMsIGludCwg
SWRlbnRpZmllclNldCYpOworICAgICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFj
a3M6OkZ1bmN0aW9uU3RhY2s+KiwgQ29kZUZlYXR1cmVzLCBpbnQsIElkZW50aWZpZXJTZXQmLCBj
b25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmKTsKIAogICAgIC8vIFVzZWQgdG8gZGV0
ZXJtaW5lIHR5cGUgb2YgZXJyb3IgdG8gcmVwb3J0LgogICAgIGJvb2wgaXNGdW5jdGlvbkJvZHlO
b2RlKFNjb3BlTm9kZSopIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC04NDAsOSArODQ2LDExIEBAIHBy
aXZhdGU6CiAgICAgY29uc3QgSWRlbnRpZmllciogbV9sYXN0RnVuY3Rpb25OYW1lOwogICAgIFJl
ZlB0cjxTb3VyY2VQcm92aWRlckNhY2hlPiBtX2Z1bmN0aW9uQ2FjaGU7CiAgICAgU291cmNlRWxl
bWVudHMqIG1fc291cmNlRWxlbWVudHM7CisgICAgYm9vbCBtX3BhcnNpbmdCdWlsdGluOwogICAg
IFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+KiBtX3ZhckRlY2xh
cmF0aW9uczsKICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9u
U3RhY2s+KiBtX2Z1bmNEZWNsYXJhdGlvbnM7CiAgICAgSWRlbnRpZmllclNldCBtX2NhcHR1cmVk
VmFyaWFibGVzOworICAgIFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+IG1fY2xvc2VkVmFyaWFi
bGVzOwogICAgIENvZGVGZWF0dXJlcyBtX2ZlYXR1cmVzOwogICAgIGludCBtX251bUNvbnN0YW50
czsKICAgICAKQEAgLTk1Nyw2ICs5NjUsMTAgQEAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBwYXJz
ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25QYXJhbWV0ZXIKICAg
ICAgICAgUmVmUHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2Rl
PihlcnJvcik7CiAgICAgICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAg
ICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVM
YXN0TmV3bGluZSgpOworICAgICAgICBpZiAoc3RyaWN0bmVzcyA9PSBKU1BhcnNlQnVpbHRpbikg
eworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKKyAgICAgICAgICAgIHJlc3Vs
dC0+c2V0Q2xvc2VkVmFyaWFibGVzKHN0ZDo6bW92ZShwYXJzZXIuY2xvc2VkVmFyaWFibGVzKCkp
KTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKICAgICB9CiAg
ICAgUGFyc2VyPExleGVyPFVDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIHBhcmFtZXRlcnMsIG5h
bWUsIHN0cmljdG5lc3MsIHBhcnNlck1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXJNb2Rlcy5oCmluZGV4IDRlOWExN2NkMjFjYTM0MTQ2YmJkNDgxNTZhMzcyY2Q0MDRk
ZWY2MGMuLmY3YTc1YmY3YzM3ODU3ZTQ0YjZkNWQ3MWY0NTI5YmIxYWMxY2Y1ZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKQEAgLTI5LDcgKzI5LDcgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gSlNQYXJzZXJTdHJpY3RuZXNzIHsgSlNQYXJzZU5v
cm1hbCwgSlNQYXJzZVN0cmljdCB9OworZW51bSBKU1BhcnNlclN0cmljdG5lc3MgeyBKU1BhcnNl
Tm9ybWFsLCBKU1BhcnNlQnVpbHRpbiwgSlNQYXJzZVN0cmljdCB9OwogZW51bSBKU1BhcnNlck1v
ZGUgeyBKU1BhcnNlUHJvZ3JhbUNvZGUsIEpTUGFyc2VGdW5jdGlvbkNvZGUgfTsKIAogZW51bSBQ
cm9maWxlck1vZGUgeyBQcm9maWxlck9mZiwgUHJvZmlsZXJPbiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXggODJhMjY2MzlhNzkyMjBhMDg0NDU2
YjQ4ZjMyODUyZDE0M2M3MzlkMC4uOGM4N2FkOWZhZGJkYzRhZjM5YWM5OWRiMmQ4NDQ1ZTEzZmZm
ZDM1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tl
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCkBA
IC0xNDksNiArMTQ5LDcgQEAgZW51bSBKU1Rva2VuVHlwZSB7CiAgICAgSU5WQUxJRF9OVU1FUklD
X0xJVEVSQUxfRVJST1JUT0sgPSA3IHwgRXJyb3JUb2tlbkZsYWcsCiAgICAgVU5URVJNSU5BVEVE
X1NUUklOR19MSVRFUkFMX0VSUk9SVE9LID0gOCB8IEVycm9yVG9rZW5GbGFnIHwgVW50ZXJtaW5h
dGVkRXJyb3JUb2tlbkZsYWcsCiAgICAgSU5WQUxJRF9TVFJJTkdfTElURVJBTF9FUlJPUlRPSyA9
IDkgfCBFcnJvclRva2VuRmxhZywKKyAgICBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSyA9
IDEwIHwgRXJyb3JUb2tlbkZsYWcKIH07CiAKIHN0cnVjdCBKU1RleHRQb3NpdGlvbiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwCmluZGV4IGUxMzEwNGRmNTkyMmQw
Nzc2MjU3ZDA1Y2I1ZTg3MDUzN2QyMTQyOGEuLjI0YzA2YmJiMWMyYzM0YjlkYTVlZjg0YjI1NWM5
OTAwZGFmODU5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
Z0xpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3Bw
CkBAIC0yMiw3ICsyMiw3IEBACiAjaW5jbHVkZSAiQXJnTGlzdC5oIgogCiAjaW5jbHVkZSAiSGVh
cFJvb3RWaXNpdG9yLmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pT
VmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJPcGVyYXRp
b25zLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3Vt
ZW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCmlu
ZGV4IDhmZDE5NWNiOWI1ZjdlZjViZjNkMmZkOTMzNDJiMDEwMjcyNWZhZjEuLjRmYmFjNjg4NjM0
ODYxNzE2NDlhMzM0ZDYxYjVkY2MzODE0ZGQ1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJndW1lbnRzLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkFyZ3Vt
ZW50cy5oIgogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lSW5saW5lcy5oIgorI2luY2x1ZGUgIkNvbW1v
bklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNB
cmd1bWVudHNJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKaW5kZXggMThmMzg5MTcxMzg1MjM2MmM3YTc1
YTMwNTNiNDYzMTQxN2JlYjgxYi4uZjE2ZmQzZGU0MDU1OTcwYmE5ZDljNmYwYWU2MzE4ZjIyMDRi
NjU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKQEAgLTI1
LDYgKzI1LDcgQEAKICNkZWZpbmUgQXJndW1lbnRzX2gKIAogI2luY2x1ZGUgIkNvZGVPcmlnaW4u
aCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlv
bi5oIgogI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNGdW5j
dGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1l
bnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmNwcAppbmRleCBhZmI1OTc5MGNiMDA5OTg5
YmI3YjQyODYzZTkxODIzMzU3NmI4YWFjLi45MWNhY2RmYTg1N2ViNjkzNzZhMzA4MWE4YzcwMmFj
OWMyMTdjYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1
bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Bcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmNwcApAQCAtMjcsNiArMjcsNyBA
QAogI2luY2x1ZGUgIkFyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuaCIKIAogI2luY2x1ZGUg
IkFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmll
cnMuaCIKICNpbmNsdWRlICJKU0FyZ3VtZW50c0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3Rv
dHlwZS5jcHAKaW5kZXggZGQwODk0ZjE0YTAyMWQ1ZjEyNjU4YWNiMDFlNzIxZmNkNmQzNDhjYy4u
NWI0YWU4NzE2YjA1NTNiZTQ2MjM5NTVlOTllMWI0M2ViZjE4ZmUyYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJv
dG90eXBlLmNwcApAQCAtMjYsNyArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmgiCiAKKyNpbmNsdWRlICJDb21tb25JZGVu
dGlmaWVycy5oIgogI2luY2x1ZGUgIkpTQXJndW1lbnRzSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJK
U0NKU1ZhbHVlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IGM4NjU5ZWVlMjc0
Yzg0ZWEwZjM5M2VlZTdiNmM0MTM1NTFmMjBlZTMuLjgyYzc2ZjkwZTZjZGI4NTE2Yjk0ZDUxZTkx
NjE0YzQ1Zjk5ZWM2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheVByb3RvdHlwZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNp
bmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1N0cmluZ0J1aWxkZXIuaCIK
KyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJKU1N0cmluZ0pvaW5lci5o
IgogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgpAQCAt
NTYsNyArNTcsNiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVBy
b3RvRnVuY1NsaWNlKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b0Z1bmNTb3J0KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTcGxpY2UoRXhlY1N0YXRlKik7CiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1VuU2hpZnQoRXhl
Y1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3Rv
RnVuY0V2ZXJ5KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlQcm90b0Z1bmNGb3JFYWNoKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTb21lKEV4ZWNTdGF0ZSopOwogc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNJbmRleE9mKEV4ZWNT
dGF0ZSopOwpAQCAtOTU2LDY5ICs5NTYsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5UHJvdG9GdW5jTWFwKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdEFycmF5KTsKIH0KIAotLy8gRG9jdW1lbnRhdGlvbiBmb3IgdGhlc2UgdGhy
ZWUgaXMgYXZhaWxhYmxlIGF0OgotLy8gaHR0cDovL2RldmVsb3Blci10ZXN0Lm1vemlsbGEub3Jn
L2VuL2RvY3MvQ29yZV9KYXZhU2NyaXB0XzEuNV9SZWZlcmVuY2U6T2JqZWN0czpBcnJheTpldmVy
eQotLy8gaHR0cDovL2RldmVsb3Blci10ZXN0Lm1vemlsbGEub3JnL2VuL2RvY3MvQ29yZV9KYXZh
U2NyaXB0XzEuNV9SZWZlcmVuY2U6T2JqZWN0czpBcnJheTpmb3JFYWNoCi0vLyBodHRwOi8vZGV2
ZWxvcGVyLXRlc3QubW96aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0phdmFTY3JpcHRfMS41X1JlZmVy
ZW5jZTpPYmplY3RzOkFycmF5OnNvbWUKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvRnVuY0V2ZXJ5KEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBKU09iamVjdCogdGhp
c09iaiA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9P
YmplY3QoZXhlYyk7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpc09iai0+Z2V0KGV4ZWMsIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpLnRvVUludDMyKGV4ZWMpOwotICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKLQotICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBleGVjLT5hcmd1bWVudCgwKTsKLSAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRh
KGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0KLSAgICBKU1ZhbHVlIGFw
cGx5VGhpcyA9IGV4ZWMtPmFyZ3VtZW50KDEpOwotCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jv
b2xlYW4odHJ1ZSk7Ci0KLSAgICB1bnNpZ25lZCBrID0gMDsKLSAgICBpZiAoY2FsbFR5cGUgPT0g
Q2FsbFR5cGVKUyAmJiBpc0pTQXJyYXkodGhpc09iaikpIHsKLSAgICAgICAgSlNGdW5jdGlvbiog
ZiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZnVuY3Rpb24pOwotICAgICAgICBKU0FycmF5KiBhcnJh
eSA9IGFzQXJyYXkodGhpc09iaik7Ci0gICAgICAgIENhY2hlZENhbGwgY2FjaGVkQ2FsbChleGVj
LCBmLCAzKTsKLSAgICAgICAgZm9yICg7IGsgPCBsZW5ndGggJiYgIWV4ZWMtPmhhZEV4Y2VwdGlv
bigpOyArK2spIHsKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWSghYXJyYXktPmNhbkdldEluZGV4
UXVpY2tseShrKSkpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgICAgIGNhY2hlZENhbGwuc2V0VGhpcyhhcHBseVRoaXMpOwotICAgICAgICAgICAgY2FjaGVk
Q2FsbC5zZXRBcmd1bWVudCgwLCBhcnJheS0+Z2V0SW5kZXhRdWlja2x5KGspKTsKLSAgICAgICAg
ICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoMSwganNOdW1iZXIoaykpOwotICAgICAgICAgICAg
Y2FjaGVkQ2FsbC5zZXRBcmd1bWVudCgyLCB0aGlzT2JqKTsKLSAgICAgICAgICAgIEpTVmFsdWUg
cmVzdWx0ID0gY2FjaGVkQ2FsbC5jYWxsKCk7Ci0gICAgICAgICAgICBpZiAoIXJlc3VsdC50b0Jv
b2xlYW4oZXhlYykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4oZmFsc2UpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBmb3IgKDsgayA8IGxlbmd0aCAm
JiAhZXhlYy0+aGFkRXhjZXB0aW9uKCk7ICsraykgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dCh0aGlzT2JqKTsKLSAgICAgICAgaWYgKCF0aGlzT2JqLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywg
aywgc2xvdCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBlYWNoQXJndW1lbnRzOwotICAgICAgICBlYWNoQXJndW1lbnRzLmFwcGVuZChzbG90
LmdldFZhbHVlKGV4ZWMsIGspKTsKLSAgICAgICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQoanNOdW1i
ZXIoaykpOwotICAgICAgICBlYWNoQXJndW1lbnRzLmFwcGVuZCh0aGlzT2JqKTsKLQotICAgICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCi0gICAgICAgIGJvb2wgcHJlZGljYXRlUmVzdWx0ID0g
Y2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBhcHBseVRoaXMsIGVhY2hB
cmd1bWVudHMpLnRvQm9vbGVhbihleGVjKTsKLSAgICAgICAgaWYgKCFwcmVkaWNhdGVSZXN1bHQp
IHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGpzQm9vbGVhbihmYWxzZSk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKLX0KLQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0Zv
ckVhY2goRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhlYy0+
aG9zdFRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IDUxMGUz
ODNmYWU1NzVhYWRhODE3NmMwNDQxZWU3MjViNDNhNGM3MzIuLmQzMDQ4NzdmZTljZGUxYzA5MTlm
ZDQ1OTVmODExZWNhYmNlNzcyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29kZUNhY2hlLmNwcApAQCAtMTQ0LDI0ICsxNDQsMjYgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIENvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUoVk0m
IHYKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lOwogICAgIFJl
ZlB0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9IHBhcnNlPFByb2dyYW1Ob2RlPigmdm0sIHNvdXJj
ZSwgMCwgSWRlbnRpZmllcigpLCBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlUHJvZ3JhbUNvZGUsIGVy
cm9yLCAmcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CiAgICAgaWYgKCFwcm9ncmFtKSB7Ci0g
ICAgICAgIEFTU0VSVChlcnJvci5tX3R5cGUgIT0gUGFyc2VyRXJyb3I6OkVycm9yTm9uZSk7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGVycm9yLm1fdHlwZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JO
b25lKTsKICAgICAgICAgbV9zb3VyY2VDb2RlLnJlbW92ZShhZGRSZXN1bHQuaXRlcmF0b3IpOwog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMg
YW4gaW5wdXQgc3RyaW5nIHRoYXQgd291bGQgcmVzdWx0IGluIGEgc2luZ2xlIGFub255bW91cyBm
dW5jdGlvbiBleHByZXNzaW9uLgogICAgIFN0YXRlbWVudE5vZGUqIGV4cHJTdGF0ZW1lbnQgPSBw
cm9ncmFtLT5zaW5nbGVTdGF0ZW1lbnQoKTsKLSAgICBBU1NFUlQoZXhwclN0YXRlbWVudCk7Ci0g
ICAgQVNTRVJUKGV4cHJTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKKyAgICBSRUxFQVNF
X0FTU0VSVChleHByU3RhdGVtZW50KTsKKyAgICBSRUxFQVNFX0FTU0VSVChleHByU3RhdGVtZW50
LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CiAgICAgRXhwcmVzc2lvbk5vZGUqIGZ1bmNFeHByID0gc3Rh
dGljX2Nhc3Q8RXhwclN0YXRlbWVudE5vZGUqPihleHByU3RhdGVtZW50KS0+ZXhwcigpOwotICAg
IEFTU0VSVChmdW5jRXhwcik7CisgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHIpOwogICAgIFJF
TEVBU0VfQVNTRVJUKGZ1bmNFeHByLT5pc0Z1bmNFeHByTm9kZSgpKTsKICAgICBGdW5jdGlvbkJv
ZHlOb2RlKiBib2R5ID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZnVuY0V4cHIpLT5ib2R5
KCk7CisgICAgUkVMRUFTRV9BU1NFUlQoIXByb2dyYW0tPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkp
OworICAgIAogICAgIGJvZHktPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xp
bmUpOwotICAgIEFTU0VSVChib2R5KTsKLSAgICBBU1NFUlQoYm9keS0+aWRlbnQoKS5pc051bGwo
KSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keS0+
aWRlbnQoKS5pc051bGwoKSk7CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVu
Y3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0s
IHNvdXJjZSwgYm9keSwgdHJ1ZSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1
bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZt
LCBzb3VyY2UsIGJvZHksIHRydWUsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24pOwogICAgIGZ1bmN0
aW9uRXhlY3V0YWJsZS0+bV9uYW1lVmFsdWUuc2V0KHZtLCBmdW5jdGlvbkV4ZWN1dGFibGUsIGpz
U3RyaW5nKCZ2bSwgbmFtZS5zdHJpbmcoKSkpOwogCiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IFNvdXJjZUNvZGVWYWx1ZSh2bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBtX3NvdXJjZUNv
ZGUuYWdlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuY3BwCmluZGV4IDNmNWM2NDVjMDk4ZDUyN2ZjMGM3MjU5ZTk0NDdlZmJlODg2
OGEyOWMuLjJmYzJiNzI3YWZjZWVlMWVjMmM2MjVkZTU2NzViM2JlMWNmNjBkNzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAK
QEAgLTI3LDcgKzI3LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAjZGVmaW5lIElOSVRJQUxJWkVf
UFJPUEVSVFlfTkFNRShuYW1lKSAsIG5hbWUodm0sICNuYW1lKQogI2RlZmluZSBJTklUSUFMSVpF
X0tFWVdPUkQobmFtZSkgLCBuYW1lIyNLZXl3b3JkKHZtLCAjbmFtZSkKLSNkZWZpbmUgSU5JVElB
TElaRV9QUklWQVRFX05BTUUobmFtZSkgLCBuYW1lIyNQcml2YXRlTmFtZShJZGVudGlmaWVyOjpm
cm9tKFByaXZhdGVOYW1lKCkpKQorI2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFNRShuYW1l
KSBcCisgICAgLCBuYW1lIyNQcml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tKFByaXZhdGVOYW1l
KCkpKSBcCisgICAgLCBtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpcihuYW1lLCBuYW1lIyNQcml2
YXRlTmFtZSkgXAorCiAKIENvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyhWTSog
dm0pCiAgICAgOiBudWxsSWRlbnRpZmllcigpCkBAIC0zOCw4ICs0MSwyNiBAQCBDb21tb25JZGVu
dGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMoVk0qIHZtKQogICAgICwgaGFzTmV4dElkZW50aWZp
ZXIodm0sICJoYXNOZXh0IikKICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZV09S
RChJTklUSUFMSVpFX0tFWVdPUkQpCiAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BS
T1BFUlRZX05BTUUoSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKQorICAgIEpTQ19GT1JFQUNIX0JV
SUxUSU5fRlVOQ1RJT05fTkFNRShJTklUSUFMSVpFX1BST1BFUlRZX05BTUUpCiAgICAgSlNDX0NP
TU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpFX1BS
SVZBVEVfTkFNRSkKIHsKIH0KIAorY29uc3QgSWRlbnRpZmllciogQ29tbW9uSWRlbnRpZmllcnM6
OmdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAoreworI2RlZmlu
ZSBSRVRVUk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMobmFtZSkgaWYgKG1fIyNuYW1lIyNQdWJs
aWNTdHJpbmdQYWlyLmZpcnN0ID09IGlkZW50KSByZXR1cm4gJm1fIyNuYW1lIyNQdWJsaWNTdHJp
bmdQYWlyLnNlY29uZDsKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9Q
Uk9QRVJUWV9OQU1FKFJFVFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hFUykKKyN1bmRlZiBSRVRV
Uk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMKKyAgICByZXR1cm4gMDsKK30KKworSWRlbnRpZmll
ciBDb21tb25JZGVudGlmaWVyczo6Z2V0UHVibGljTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCkgY29uc3QKK3sKKyNkZWZpbmUgUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKG5hbWUp
IGlmIChtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpci5zZWNvbmQgPT0gaWRlbnQpIHJldHVybiBt
XyMjbmFtZSMjUHVibGljU3RyaW5nUGFpci5maXJzdDsKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVf
SURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKFJFVFVSTl9JRl9QUklWQVRFX05BTUVfTUFU
Q0hFUykKKyN1bmRlZiBSRVRVUk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMKKyAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBlbXB0eUlkZW50aWZpZXI7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggZThmOWVkODJiYzc5NDYyMDM4MjY2YjMwMjA3ODIy
NDdiMWZhMjdhMy4uOTI0ZDM2YWM2OTEzNTAzNTdjYjM4MmIxZWYzYjQwYTBhMDhjMGFiYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
CkBAIC0yMiw2ICsyMiw3IEBACiAjZGVmaW5lIENvbW1vbklkZW50aWZpZXJzX2gKIAogI2luY2x1
ZGUgIklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgogCiAvLyBNYXJrZWRBcmd1bWVudEJ1ZmZlciBvZiBwcm9wZXJ0eSBu
YW1lcywgcGFzc2VkIHRvIGEgbWFjcm8gc28gd2UgY2FuIGRvIHNldCB0aGVtIHVwIHZhcmlvdXMK
QEAgLTEzMyw4ICsxMzQsMTAgQEAKICAgICBtYWNybyhvc3JFeGl0cykgXAogICAgIG1hY3JvKHBh
cnNlKSBcCiAgICAgbWFjcm8ocHJvZmlsZWRCeXRlY29kZXMpIFwKKyAgICBtYWNybyhwcm9taXNl
KSBcCiAgICAgbWFjcm8ocHJvcGVydHlJc0VudW1lcmFibGUpIFwKICAgICBtYWNybyhwcm90b3R5
cGUpIFwKKyAgICBtYWNybyhyZXNvbHZlKSBcCiAgICAgbWFjcm8oc2V0KSBcCiAgICAgbWFjcm8o
c2l6ZSkgXAogICAgIG1hY3JvKHNsaWNlKSBcCkBAIC0xNTUsNyArMTU4LDE0IEBACiAgICAgbWFj
cm8odmFsdWVzKSBcCiAgICAgbWFjcm8odmFsdWVPZikgXAogICAgIG1hY3JvKHdpbmRvdykgXAot
ICAgIG1hY3JvKHdyaXRhYmxlKQorICAgIG1hY3JvKHdyaXRhYmxlKSBcCisgICAgbWFjcm8oaXRl
cmF0b3IpIFwKKyAgICBtYWNybyhpdGVyYXRvck5leHQpIFwKKyAgICBtYWNybyhyZWplY3QpIFwK
KyAgICBtYWNybyhmdWxmaWxsbWVudEhhbmRsZXIpIFwKKyAgICBtYWNybyhyZWplY3Rpb25IYW5k
bGVyKSBcCisgICAgbWFjcm8oZGVmZXJyZWQpIFwKKyAgICBtYWNybyhjb3VudGRvd25Ib2xkZXIp
IFwKIAogI2RlZmluZSBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZV09SRChtYWNybykg
XAogICAgIG1hY3JvKGJyZWFrKSBcCkBAIC0yMDMsNyArMjEzLDcgQEAKICAgICBtYWNybyh2b2lk
KSBcCiAgICAgbWFjcm8od2hpbGUpIFwKICAgICBtYWNybyh3aXRoKSBcCi0gICAgbWFjcm8oeWll
bGQpCisgICAgbWFjcm8oeWllbGQpIFwKIAogI2RlZmluZSBKU0NfQ09NTU9OX1BSSVZBVEVfSURF
TlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKG1hY3JvKSBcCiAgICAgbWFjcm8oaXRlcmF0b3Ip
IFwKQEAgLTIxNiw3ICsyMjYsMTIgQEAKICAgICBtYWNybyhpbmRleCkgXAogICAgIG1hY3JvKHZh
bHVlcykgXAogICAgIG1hY3JvKGRlZmVycmVkKSBcCi0gICAgbWFjcm8oY291bnRkb3duSG9sZGVy
KQorICAgIG1hY3JvKGNvdW50ZG93bkhvbGRlcikgXAorICAgIG1hY3JvKE9iamVjdCkgXAorICAg
IG1hY3JvKFR5cGVFcnJvcikgXAorICAgIG1hY3JvKHVuZGVmaW5lZEtleXdvcmQpIFwKKyAgICBt
YWNybyhjYWxsKSBcCisgICAgbWFjcm8oYXBwbHkpCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0y
NDAsMTEgKzI1NSwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjZGVmaW5lIEpTQ19J
REVOVElGSUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwobmFtZSkgY29uc3QgSWRlbnRp
ZmllciBuYW1lOwogICAgICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlf
TkFNRShKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFMKQorICAgICAg
ICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoSlNDX0lERU5USUZJRVJfREVDTEFS
RV9QUk9QRVJUWV9OQU1FX0dMT0JBTCkKICN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BS
T1BFUlRZX05BTUVfR0xPQkFMCiAKLSNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklW
QVRFX1BST1BFUlRZX05BTUVfR0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSMjUHJp
dmF0ZU5hbWU7CisjZGVmaW5lIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJU
WV9OQU1FX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWUjI1ByaXZhdGVOYW1lOyBj
b25zdCBzdGQ6OnBhaXI8SWRlbnRpZmllciwgSWRlbnRpZmllcj4gbV8jI25hbWUjI1B1YmxpY1N0
cmluZ1BhaXI7CiAgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BS
T1BFUlRZX05BTUUoSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVf
R0xPQkFMKQogI3VuZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9O
QU1FX0dMT0JBTAorICAgICAgICAKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciogZ2V0UHJpdmF0
ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OworICAgICAgICBJZGVudGlmaWVyIGdldFB1
YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogICAgIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKaW5kZXggMDc1ODc1ZmIyMzE2YTU1NTcwNTBhNjY5MGNkMGY5ODgyNDg0ZjVmMy4u
NWFmOTA4NzU0ZTc0N2Y4Y2FlMGNkMDRhZjhkNDkxNTAwNDY4YzJhNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC00MSw3ICs0
MSw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRl
ICJKU0FjdGl2YXRpb24uaCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlND
SlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgog
I2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzRXhjZXB0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHNFeGNlcHRpb25zLmNwcAppbmRleCA1NTMzNGJlMmY5ODBhOThmN2ZlYTQyYTA1
YmUwZjIwYzAxOWZmMGRkLi4xNmViYWQxMGU0ZTQyYjZiNzg1ZTk3OGQzOGU4NzBlM2I1YTZjNDlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHNFeGNlcHRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHNFeGNlcHRpb25zLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNh
bGxGcmFtZS5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlv
bnMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkxMSW50Q29t
bW9uLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQ29tbW9uU2xvd1BhdGhzIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAK
aW5kZXggMDVlMTFlMGI4MGEzNDMwYWVhYjIyYjAyMjJhMjEyZjRhOGUyYzQ5Yi4uMzY0Y2M3MTY2
NjA4YjUwMDdkNDc3ZDg3MzkxOGE1ZDY0YjE2ODY1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKQEAgLTgxLDYgKzgxLDExIEBA
IEpTT2JqZWN0KiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKIAogSlNPYmplY3QqIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKIHsKKyAgICAKKyAgICBpZiAoaWRl
bnQuaW1wbCgpLT5pc0VtcHR5VW5pcXVlKCkpIHsKKyAgICAgICAgU3RyaW5nIG1lc3NhZ2UobWFr
ZVN0cmluZygiQ2FuJ3QgZmluZCBwcml2YXRlIHZhcmlhYmxlOiBAIiwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLmdldFB1YmxpY05hbWUoaWRlbnQpLnN0cmluZygpKSk7CisgICAgICAgIHJldHVybiBj
cmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBtZXNzYWdlKTsKKyAgICB9CiAgICAgU3RyaW5nIG1l
c3NhZ2UobWFrZVN0cmluZygiQ2FuJ3QgZmluZCB2YXJpYWJsZTogIiwgaWRlbnQuc3RyaW5nKCkp
KTsKICAgICByZXR1cm4gY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgbWVzc2FnZSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggMTk4OTc2YmIz
ZmU2ZTZlOTExNzk4MTJkMWNhZjliOGJmOWJmZDBiYi4uY2YwZTc1M2E3YzVmNTQ0NjdiNjRkOGUy
YTliM2ZiYTI3MTUwMDAxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuaApAQCAtNDg0LDcgKzQ4NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJDb2Rl
KCk7CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJu
IEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1v
ZGUoKSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25z
dCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwg
aXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZhcmlh
YmxlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsg
fQogICAgIHVuc2lnbmVkIG51bWJlck9mRnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIG1fdW5saW5r
ZWRFdmFsQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsgfQpAQCAtNTQwLDcgKzU0
MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAKLSAgICBFeGVjdXRhYmxl
SW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRz
QWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UpOyB9CisgICAg
RXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxl
SW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNl
LCBmYWxzZSk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJs
ZTsKQEAgLTYyOCw3ICs2MjgsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYmFz
ZWxpbmVDb2RlQmxvY2tGb3Ioa2luZCk7CiAgICAgfQotICAgICAgICAKKworICAgIGJvb2wgaXNC
dWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNC
dWlsdGluRnVuY3Rpb24oKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUoKSB7IHJldHVy
biBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZSgpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYg
aW5mZXJyZWROYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmluZmVycmVkTmFt
ZSgpOyB9CiAgICAgSlNTdHJpbmcqIG5hbWVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5r
ZWRFeGVjdXRhYmxlLT5uYW1lVmFsdWUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCmluZGV4IGMxYjA4YWYyZDgxOGRhZTU3
ZTFiMDBmZGExNzNhODE2MTM3NTI5YjUuLjEyNDkwYzQwZjMzNDE3ZWNhOTIzODUwYTBkYzY2MmRi
YmNkNDBmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvblByb3RvdHlwZS5jcHAKQEAgLTIyLDEyICsyMiwxMyBAQAogI2luY2x1ZGUgIkZ1bmN0aW9u
UHJvdG90eXBlLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJJbnRlcnBy
ZXRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNs
dWRlICJKU1N0cmluZ0J1aWxkZXIuaCIKLSNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1
ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIkxleGVyLmgiCiAjaW5jbHVkZSAiT3Bl
cmF0aW9ucy5oIgogCkBAIC0xMDgsNyArMTA5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVl
LmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZnVu
Y3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KHRoaXNWYWx1ZSk7Ci0gICAgICAgIGlmIChmdW5j
dGlvbi0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RPckJ1
aWx0aW5GdW5jdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01h
a2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJmdW5jdGlvbiAiLCBmdW5jdGlvbi0+bmFtZShleGVj
KSwgIigpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59IikpOwogICAgICAgICBGdW5jdGlvbkV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUgPSBmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCk7CiAgICAgICAgIFN0
cmluZyBzb3VyY2VTdHJpbmcgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS50b1N0cmluZygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKaW5kZXggNzJl
ZDFjNzEyNDA2MTE2OGIwYWRkZDMxMTZmNzU1YTExN2I4ZmI5MC4uYjM3NDk0MzA5OWUyMTU1YTM5
NzcxMzMxMzQ3MDJjMmEyNGFjYzg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FjdGl2YXRpb24uY3BwCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgSlNBY3RpdmF0aW9u
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAKIGlu
bGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50
cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7
CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChw
cm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChlbnRyeS5pc051bGwoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkBAIC03Miw3ICs3Miw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6
c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90CiAK
IGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAgIFN5bWJv
bFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1l
LnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxl
KCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChlbnRyeS5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC04OSw3ICs4OSw3IEBAIGlubGluZSBib29s
IEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBBU1NFUlQoIUhlYXA6
OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwog
ICAgIAotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVH
ZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRy
eSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlm
IChlbnRyeS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChlbnRyeS5p
c1JlYWRPbmx5KCkpIHsKQEAgLTEzNiw3ICsxMzYsNyBAQCBpbmxpbmUgYm9vbCBKU0FjdGl2YXRp
b246OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJv
cAogICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIHJlZzsKICAgICB7CiAgICAgICAgIENv
bmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlKCktPm1fbG9jayk7Ci0gICAgICAg
IFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZSgpLT5maW5kKGxv
Y2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgICAgIFN5bWJvbFRhYmxlOjpN
YXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZSgpLT5maW5kKGxvY2tlciwgcHJvcGVydHlO
YW1lLnVpZCgpKTsKICAgICAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUoKS0+ZW5kKGxvY2tl
cikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkm
IGVudHJ5ID0gaXRlci0+dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwCmluZGV4IDJmY2Y4ODE1YzA1NjgwNTgxMmE3
OTkxYTVmZjA2M2Q2ODczOTcxNjQuLjlhOTI1ODNhYTBlYzkwZGJiMzI4ZWNkNTBkYzMxMzlhZWYw
MjczYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1l
bnRzSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJn
dW1lbnRzSXRlcmF0b3IuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiSlNBcmd1bWVu
dHNJdGVyYXRvci5oIgogCiAjaW5jbHVkZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheS5jcHAKaW5kZXggOTAwN2I1ZjdkM2YxMDNiMWQyMWIxYTM2NWEyNmMy
MTVjMzJiNGQyOC4uYmEwYTJkMzhlOWM1M2UxNTkzN2Q0NmE4OTUxYThjOGM0NTA3OTI2NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAj
aW5jbHVkZSAiSW5kZXhpbmdIZWFkZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKICNpbmNsdWRlICJSZWplY3Qu
aCIKICNpbmNsdWRlIDx3dGYvQVZMVHJlZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKaW5kZXggZDUwNmM0ZWJkMjYyMGVmZDcwNzkz
YTg3M2QwODUyZmJkOTc4Mjg1OS4uY2YzNzA5N2VjMGM2OTI1YTg2N2I4YzAxMGMwZWZjNDA3NDQ4
NWYxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRl
cmF0b3IuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGlu
ZXMuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCmluZGV4IGNj
YTY4ODhiZjk4YTAyODY0NmNhM2RkZGYzNzYyN2NlMGU3ZDkzMDIuLjMzOWE3YWI3ZjU5NTE1ZTk2
YWZiN2VjNGI4NzQxZTdhYThlMTY2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuY3BwCkBAIC0zMiw3ICszMiw5IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNOb3RBbk9iamVj
dC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk51bWJlck9iamVj
dC5oIgorI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCmluZGV4IGY3Yzg0NDY0NTA5MmIyNTA4MDVlNmU4
ZDQ4MzJjOTk4YmRiODliNTQuLmQ3OTVkZDU2YTk3ZGRiNTk3YzA5MGZjMmUwYjdmMzA4ZTMzZWJj
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgK
QEAgLTI3LDggKzI3LDEwIEBACiAjZGVmaW5lIEpTQ2VsbElubGluZXNfaAogCiAjaW5jbHVkZSAi
Q2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJE
ZWZlckdDLmgiCiAjaW5jbHVkZSAiSGFuZGxlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1
ZGUgIkpTU3RyaW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uY3BwCmluZGV4IDI0MTk2NDYxMGJiNDQyN2IxODYzNzMzNDZlMjRmNWE4MmQwY2RjYzQuLjdi
ZWY1OTFiMTRmMzVmMWE5MzQ4YWRlOWE5ZTBmNTkwZWI2YWRmODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0xMDksNiArMTA5LDE0IEBAIHZv
aWQgSlNGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBOYXRpdmVFeGVjdXRhYmxlKiBl
eGVjdXRhYmxlLCBpbnQgbGVuZ3RoCiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRF
bnVtKTsKIH0KIAorSlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9u
KFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQoreworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY3JlYXRlKHZtLCBl
eGVjdXRhYmxlLCBnbG9iYWxPYmplY3QpOworICAgIGZ1bmN0aW9uLT5wdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKCZ2bSwgZXhlY3V0YWJsZS0+bmFtZSgpLnN0
cmluZygpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIGZ1bmN0aW9u
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoZXhlY3V0
YWJsZS0+cGFyYW1ldGVyQ291bnQoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVt
KTsKKyAgICByZXR1cm4gZnVuY3Rpb247Cit9CisKIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKiBK
U0Z1bmN0aW9uOjpjcmVhdGVBbGxvY2F0aW9uUHJvZmlsZShFeGVjU3RhdGUqIGV4ZWMsIHNpemVf
dCBpbmxpbmVDYXBhY2l0eSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpAQCAtMTQyLDcg
KzE1MCw3IEBAIGNvbnN0IFN0cmluZyBKU0Z1bmN0aW9uOjpjYWxjdWxhdGVkRGlzcGxheU5hbWUo
RXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gZXhwbGljaXROYW1lOwogICAgIAogICAg
IGNvbnN0IFN0cmluZyBhY3R1YWxOYW1lID0gbmFtZShleGVjKTsKLSAgICBpZiAoIWFjdHVhbE5h
bWUuaXNFbXB0eSgpIHx8IGlzSG9zdEZ1bmN0aW9uKCkpCisgICAgaWYgKCFhY3R1YWxOYW1lLmlz
RW1wdHkoKSB8fCBpc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gYWN0
dWFsTmFtZTsKICAgICAKICAgICByZXR1cm4ganNFeGVjdXRhYmxlKCktPmluZmVycmVkTmFtZSgp
LnN0cmluZygpOwpAQCAtMTUwLDEwICsxNTgsMjAgQEAgY29uc3QgU3RyaW5nIEpTRnVuY3Rpb246
OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMpCiAKIGNvbnN0IFNvdXJjZUNv
ZGUqIEpTRnVuY3Rpb246OnNvdXJjZUNvZGUoKSBjb25zdAogewotICAgIGlmIChpc0hvc3RGdW5j
dGlvbigpKQorICAgIGlmIChpc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQogICAgICAgICByZXR1
cm4gMDsKICAgICByZXR1cm4gJmpzRXhlY3V0YWJsZSgpLT5zb3VyY2UoKTsKIH0KKyAgICAKK2Jv
b2wgSlNGdW5jdGlvbjo6aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSBjb25zdAoreworICAgIHJl
dHVybiBpc0hvc3RGdW5jdGlvbigpIHx8IGlzQnVpbHRpbkZ1bmN0aW9uKCk7Cit9CisKK2Jvb2wg
SlNGdW5jdGlvbjo6aXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiAhaXNI
b3N0RnVuY3Rpb24oKSAmJiBqc0V4ZWN1dGFibGUoKS0+aXNCdWlsdGluRnVuY3Rpb24oKTsKK30K
IAogdm9pZCBKU0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCiB7CkBAIC0yNzcsNyArMjk1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNGdW5j
dGlvbjo6Y2FsbGVyR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgc2xvdEJh
c2UKICAgICBpZiAoIWNhbGxlci5pc09iamVjdCgpIHx8ICFhc09iamVjdChjYWxsZXIpLT5pbmhl
cml0cyhKU0Z1bmN0aW9uOjppbmZvKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNhbGxlcik7CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+
KGNhbGxlcik7Ci0gICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpIHx8ICFmdW5jdGlv
bi0+anNFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpKQorICAgIGlmIChmdW5jdGlvbi0+aXNI
b3N0T3JCdWlsdGluRnVuY3Rpb24oKSB8fCAhZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5pc1N0
cmljdE1vZGUoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsZXIpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJGdW5jdGlvbi5jYWxsZXIgdXNlZCB0byByZXRyaWV2ZSBzdHJpY3QgY2FsbGVyIikpKTsKIH0K
QEAgLTI5OSw3ICszMTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Z1bmN0aW9uOjpuYW1lR2V0dGVy
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIHNsb3RCYXNlLCBFbmNvZAogYm9vbCBKU0Z1bmN0
aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
SlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsKLSAg
ICBpZiAodGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICBpZiAodGhpc09iamVjdC0+
aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIEJhc2U6OmdldE93blBy
b3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCiAgICAg
aWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlKSB7CkBA
IC0zNjEsNyArMzc5LDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KIHZvaWQgSlNGdW5jdGlv
bjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9k
ZSBtb2RlKQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlv
bio+KG9iamVjdCk7Ci0gICAgaWYgKCF0aGlzT2JqZWN0LT5pc0hvc3RGdW5jdGlvbigpICYmICht
b2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKSB7CisgICAgaWYgKCF0aGlzT2JqZWN0
LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpICYmIChtb2RlID09IEluY2x1ZGVEb250RW51bVBy
b3BlcnRpZXMpKSB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFzIGJlZW4gcmVp
ZmllZC4KICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCk7CiAgICAgICAgIHRo
aXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBl
eGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBzbG90KTsKQEAgLTM3Nyw3ICsz
OTUsNyBAQCB2b2lkIEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsCiB2b2lkIEpTRnVuY3Rpb246OnB1dChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTRnVuY3Rpb24qIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNlbGwpOwotICAgIGlmICh0aGlzT2JqZWN0
LT5pc0hvc3RGdW5jdGlvbigpKSB7CisgICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRp
bkZ1bmN0aW9uKCkpIHsKICAgICAgICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDI1LDcg
KzQ0Myw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wCiBib29sIEpTRnVuY3Rpb246OmRlZmlu
ZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBi
b29sIHRocm93RXhjZXB0aW9uKQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNGdW5jdGlvbio+KG9iamVjdCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0
aW9uKCkpCisgICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAg
ICAgICAgIHJldHVybiBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pOwogCiAgICAgaWYgKHByb3BlcnR5
TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggN2NkMTRiOGMyZDgwMGY2MWJkYzEy
ZWRkMmRmMDRkMzVmYTA2MTliNi4uOTk1YzlkMTFiZDg5ODM4NmY3YTIwYzQxNjM0ZmE3Y2M5Yjc2
OThlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAt
NjgsNiArNjgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBmdW5jdGlv
bjsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0
ZUJ1aWx0aW5GdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTR2xvYmFsT2JqZWN0
Kik7CisgICAgICAgIAogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAg
ICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG5hbWUoRXhlY1N0YXRlKik7
CkBAIC0xNDUsNiArMTQ3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4g
bV9hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ7CiAgICAgICAgIH0KIAorICAgICAgICBib29s
IGlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNCdWlsdGlu
RnVuY3Rpb24oKSBjb25zdDsKKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgY29uc3Qgc3RhdGlj
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
SW1wbGVtZW50c0hhc0luc3RhbmNlIHwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IE92ZXJyaWRl
c0dldFByb3BlcnR5TmFtZXMgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3JJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCmluZGV4IDJkZGMyOWY3MTg5
N2JiNTFkMzkwYjA2YjI1YTczODMzODc0YmEwYzEuLmVkZDM0NDljZTQ3YjE3MzVlOGU1ZGJiMDVm
MzE4ZTNkNTVmM2JlNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rv
cklubGluZXMuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBKU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0NvbnN0cnVjdG9ySW5saW5lc19oCiAjZGVmaW5lIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3JJbmxpbmVzX2gKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAj
aW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAi
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lu
bGluZXMuaAppbmRleCA2ZGI4NjI3NGMzYjg3NGFhYWRlNTE1MTg5ODI2NzI2ZmIxMzZjMTczLi5m
MjRlYTczMDNkZjk2OWRiZDJkY2E1MmM4NmQxMWM3OGMwMGRiOWVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0lubGluZXMuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBKU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0lubGluZXNfaAogCiAjaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCisjaW5jbHVk
ZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJEZWZlckdDLmgiCiAjaW5jbHVkZSAi
RXJyb3IuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlw
ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oCmluZGV4IDQ1OTk5N2E0NjRiOTExOTQ3N2IxYmU4
NGUzNmM0ZTI5NjZhY2VmODUuLjhlNWZmODI3OTFlNmZmOGQ0ZWI5YzM3MzY5MWU0MzNlYjdkMTZh
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oCkBAIC0y
Niw2ICsyNiw3IEBACiAjaWZuZGVmIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5s
aW5lc19oCiAjZGVmaW5lIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lc19o
CiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRl
eCAyYzI3NGMxYTdkNDgxYzA3ZGYwZDJiZWIzYjI5MzFhMzkwN2E1ZTY2Li4wNmU1NGM4NGU3N2I5
MDMyYmFhMWQyZGY0N2ExYzcyZTgwYjdkZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0zNDYsNyArMzQ2LDggQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAKICAgICAvLyBDb25zdHJ1
Y3RvcnMKIAotICAgIEpTQ2VsbCogb2JqZWN0Q29uc3RydWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rv
cjo6Y3JlYXRlKHZtLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwor
ICAgIE9iamVjdENvbnN0cnVjdG9yKiBvYmplY3RDb25zdHJ1Y3RvciA9IE9iamVjdENvbnN0cnVj
dG9yOjpjcmVhdGUodm0sIE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7
CisgICAgbV9vYmplY3RDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIG9iamVjdENvbnN0cnVjdG9y
KTsKICAgICBKU0NlbGwqIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBGdW5jdGlvbkNvbnN0cnVjdG9y
OjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkp
OwogICAgIEpTQ2VsbCogYXJyYXlDb25zdHJ1Y3RvciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0
ZSh2bSwgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0
aW9uUHJvdG90eXBlLmdldCgpKSwgbV9hcnJheVByb3RvdHlwZS5nZXQoKSk7CiAKQEAgLTQzMiw3
ICs0MzMsMTAgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgR2xvYmFsUHJvcGVydHlJbmZvIHN0YXRpY0dsb2JhbHNbXSA9IHsKICAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPk5hTiwganNOYU4oKSwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+SW5maW5pdHksIGpzTnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91
YmxlPjo6aW5maW5pdHkoKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKLSAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdv
cmQsIGpzVW5kZWZpbmVkKCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KQorICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29y
ZCwganNVbmRlZmluZWQoKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29y
ZFByaXZhdGVOYW1lLCBqc1VuZGVmaW5lZCgpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFk
T25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5PYmpl
Y3RQcml2YXRlTmFtZSwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PlR5cGVFcnJvclByaXZhdGVOYW1lLCBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250
RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSkKICAgICB9OwogICAgIGFkZFN0YXRpY0dsb2Jh
bHMoc3RhdGljR2xvYmFscywgV1RGX0FSUkFZX0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CiAgICAg
CkBAIC02MDgsNiArNjEyLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX3N5bnRheEVycm9yQ29uc3RydWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX3R5cGVFcnJvckNvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9VUklFcnJvckNvbnN0cnVjdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9vYmplY3RDb25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fcHJvbWlzZUNvbnN0cnVjdG9yKTsKIAogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX2V2YWxGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBiMGNhZDNkYzU0NzBmN2M3YTBlNTcwYmRj
ZDJkZmZhODk1ZTJhYTBjLi4zYTYxNmM2ZjA1ZWRmMWQyOTVhZjg0NDFhYTY2NTAwZmI5MmE0YTQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
QEAgLTY3LDYgKzY3LDcgQEAgY2xhc3MgSlNTdGFjazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKIGNsYXNzIE1pY3JvdGFzazsKIGNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I7Citj
bGFzcyBPYmplY3RDb25zdHJ1Y3RvcjsKIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBQ
cm9ncmFtRXhlY3V0YWJsZTsKIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yOwpAQCAtMTU4LDYgKzE1
OSw3IEBAIHByb3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
cj4gbV90eXBlRXJyb3JDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvcj4gbV9VUklFcnJvckNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxKU1By
b21pc2VDb25zdHJ1Y3Rvcj4gbV9wcm9taXNlQ29uc3RydWN0b3I7CisgICAgV3JpdGVCYXJyaWVy
PE9iamVjdENvbnN0cnVjdG9yPiBtX29iamVjdENvbnN0cnVjdG9yOwogCiAgICAgV3JpdGVCYXJy
aWVyPEpTRnVuY3Rpb24+IG1fZXZhbEZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0
aW9uPiBtX2NhbGxGdW5jdGlvbjsKQEAgLTMzMCw2ICszMzIsNyBAQCBwdWJsaWM6CiAgICAgUmVn
RXhwQ29uc3RydWN0b3IqIHJlZ0V4cENvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWdF
eHBDb25zdHJ1Y3Rvci5nZXQoKTsgfQogCiAgICAgRXJyb3JDb25zdHJ1Y3RvciogZXJyb3JDb25z
dHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQorICAg
IE9iamVjdENvbnN0cnVjdG9yKiBvYmplY3RDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1f
b2JqZWN0Q29uc3RydWN0b3IuZ2V0KCk7IH0KICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBl
dmFsRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXZhbEVycm9yQ29uc3RydWN0
b3IuZ2V0KCk7IH0KICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiByYW5nZUVycm9yQ29uc3Ry
dWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQog
ICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHJlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IoKSBj
b25zdCB7IHJldHVybiBtX3JlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KQEAgLTU4
MSw3ICs1ODQsNyBAQCBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6aGFzT3duUHJvcGVydHlG
b3JXcml0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZQogCiBpbmxpbmUgYm9vbCBKU0ds
b2JhbE9iamVjdDo6c3ltYm9sVGFibGVIYXNQcm9wZXJ0eShQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxp
bmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBl
bnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAg
IHJldHVybiAhZW50cnkuaXNOdWxsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmNwcAppbmRleCAyYjY3YTFkOWVlZDg0ZTk5NTZmOGJiOTY4Mzg0Yzg0Y2Fl
YTUzY2ZmLi4yZWEyYzI0ZTZlYWI0Y2QwZDdmZmVkNjY1ZWY0YWU0MWFmMDc1MGYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC04Nyw3ICs4Nyw3IEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCBnZXRDbGFzc1Byb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBDbGFzc0luZm8qIGNsYXNzCiAgICAgICAgIGludCBoYXNoU2l6ZU1hc2sgPSB0YWJs
ZS0+Y29tcGFjdFNpemUgLSAxOwogICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gdGFi
bGUtPnRhYmxlOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8PSBoYXNoU2l6ZU1hc2s7ICsr
aSwgKytlbnRyeSkgewotICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkoKSAmJiAoIShlbnRyeS0+
YXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3Bl
cnRpZXMpKSAmJiAhKChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pICYmIGRpZFJlaWZ5
KSkKKyAgICAgICAgICAgIGlmIChlbnRyeS0+a2V5KCkgJiYgKCEoZW50cnktPmF0dHJpYnV0ZXMo
KSAmIERvbnRFbnVtKSB8fCAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgJiYg
ISgoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSAmJiBkaWRSZWlmeSkp
CiAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZW50cnktPmtleSgpKTsKICAgICAg
ICAgfQogICAgIH0KQEAgLTE2MTgsNyArMTYxOCw3IEBAIHZvaWQgSlNPYmplY3Q6OnJlaWZ5U3Rh
dGljRnVuY3Rpb25zRm9yRGVsZXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzKTsKICAgICAgICAgZm9yIChIYXNo
VGFibGU6OkNvbnN0SXRlcmF0b3IgaXRlciA9IGhhc2hUYWJsZS0+YmVnaW4odm0pOyBpdGVyICE9
IGhhc2hUYWJsZS0+ZW5kKHZtKTsgKytpdGVyKSB7Ci0gICAgICAgICAgICBpZiAoaXRlci0+YXR0
cmlidXRlcygpICYgRnVuY3Rpb24pCisgICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygp
ICYgQnVpbHRpbk9yRnVuY3Rpb24pCiAgICAgICAgICAgICAgICAgc2V0VXBTdGF0aWNGdW5jdGlv
blNsb3QoZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgKml0ZXIsIHRoaXMsIElkZW50aWZp
ZXIoJnZtLCBpdGVyLT5rZXkoKSksIHNsb3QpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjIzNiw2
ICsyMjM2LDE2IEBAIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uCiAgICAgcHV0RGlyZWN0KHZtLCBw
cm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsKIH0KIAordm9pZCBKU09iamVjdDo6
cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZnVuY3Rpb25FeGVjdXRhYmxlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQoreworICAgIFN0cmlu
Z0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOworICAgIGlmICghbmFtZSkK
KyAgICAgICAgbmFtZSA9IHZtLnByb3BlcnR5TmFtZXMtPmFub255bW91cy5pbXBsKCk7CisgICAg
QVNTRVJUKG5hbWUpOworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3Jl
YXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihm
dW5jdGlvbkV4ZWN1dGFibGUpLCBnbG9iYWxPYmplY3QpOworICAgIHB1dERpcmVjdCh2bSwgcHJv
cGVydHlOYW1lLCBmdW5jdGlvbiwgYXR0cmlidXRlcyk7Cit9CisKIHZvaWQgSlNPYmplY3Q6OnB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgdW5z
aWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRy
aW5zaWMgaW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIFN0cmluZ0ltcGwq
IG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmgKaW5kZXggMDJiMTM3YjM1MGMyZmE4MzI1YmQzYjk2NDcxMTJhYmU4
NzZmMzgzZi4uZGRlNTk3ZWZmYWVjMGYxYjhkNDRjMjkxMTk1MDMwMWYwNjAwN2U5OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC0yOSw3ICsyOSw2IEBACiAj
aW5jbHVkZSAiQnV0dGVyZmx5LmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAi
Q2xhc3NJbmZvLmgiCi0jaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJD
b3B5V3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSAiRGVmZXJHQy5oIgogI2luY2x1ZGUgIkhlYXAu
aCIKQEAgLTU4MSw2ICs1ODAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXREaXJlY3RVbmRlZmlu
ZWQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSB7IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNl
dFVuZGVmaW5lZCgpOyB9CiAKICAgICB2b2lkIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxl
bmd0aCwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7Cisg
ICAgdm9pZCBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNv
bnN0IFByb3BlcnR5TmFtZSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpOwogICAgIHZvaWQgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rp
b25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMp
OwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3Jp
cHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAppbmRleCA2OGE4YmQ4N2Qz
OGFkYmJiOWRkMmFjOWVjNGI0OWQ1ZWY0NTQ5ZDU2Li4yMzdjNDJiYjBkYTBmMTY2NzZlYjExYWRl
ODE4MGE3YjA2ZDk4ZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcApAQCAtMjksNyArMjksOSBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKIAor
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3Qu
aCIKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAppbmRleCBmNDM2MmZmMzU0ZWU2YTUwMjIx
YmI3MzFkMWEyNjExZTZkZDYxYmMwLi5kMDczNzE5ZGUxNjBkMmYyOTIxMTBhNTk2YTEwNWUyZmEy
MTE1ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5oCkBAIC0zMSw3ICszMSw2IEBACiAKICNpbmNsdWRlICJKU09i
amVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgog
I2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCAyYjFjZGRkYzU4NDFkNjBk
MTU3YTJlNjFmNzAyYjBlZTVmYTFkNjc2Li5lMzkzNDE2MGFlYTkyNmVmMTU5MzJmODc5MGUyNGM1
MmFmMDJkMzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKQEAg
LTI0LDcgKzI0LDYgQEAKICNkZWZpbmUgSlNTdHJpbmdfaAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1l
LmgiCi0jaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiUHJvcGVydHlEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlT
bG90LmgiCkBAIC00NzIsMzMgKzQ3MSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGlubGluZSBK
U1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5n
JiBzKSB7IHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoJmV4ZWMtPnZtKCksIHMpOyB9CiAgICAg
aW5saW5lIEpTU3RyaW5nKiBqc093bmVkU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3Ry
aW5nJiBzKSB7IHJldHVybiBqc093bmVkU3RyaW5nKCZleGVjLT52bSgpLCBzKTsgfQogCi0gICAg
QUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
Ci0gICAgewotICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5sZW5ndGgpIHsKLSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udEVudW0gfCBE
b250RGVsZXRlIHwgUmVhZE9ubHksIGpzTnVtYmVyKG1fbGVuZ3RoKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5h
bWUuYXNJbmRleCgpOwotICAgICAgICBpZiAoaSA8IG1fbGVuZ3RoKSB7Ci0gICAgICAgICAgICBB
U1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOyAvLyBObyBuZWVkIGZvciBhbiBl
eHBsaWNpdCBjaGVjaywgdGhlIGFib3ZlIHRlc3Qgd291bGQgYWx3YXlzIGZhaWwhCi0gICAgICAg
ICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnREZWxldGUgfCBSZWFkT25seSwgZ2V0SW5kZXgo
ZXhlYywgaSkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgICAgICAgICAgCi0gICAgQUxXQVlTX0lOTElORSBi
b29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKLSAgICB7Ci0gICAgICAgIGlm
IChwcm9wZXJ0eU5hbWUgPCBtX2xlbmd0aCkgewotICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0
aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIHByb3BlcnR5TmFtZSkp
OwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotCiAgICAgaW5saW5lIGJvb2wgaXNKU1N0cmluZyhKU1ZhbHVlIHYpIHsg
cmV0dXJuIHYuaXNDZWxsKCkgJiYgdi5hc0NlbGwoKS0+Y2xhc3NJbmZvKCkgPT0gSlNTdHJpbmc6
OmluZm8oKTsgfQogCiAgICAgLy8gLS0tIEpTVmFsdWUgaW5saW5lcyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCkBAIC01MjgsMzIgKzUwMCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICByZXR1cm4gdG9XVEZTdHJpbmdTbG93Q2FzZShleGVjKTsKICAgICB9CiAKLSAgICBBTFdBWVNf
SU5MSU5FIFN0cmluZyBpbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcoY29uc3QgSlNWYWx1
ZSYgdmFsdWUsIEV4ZWNTdGF0ZSogZXhlYykKLSAgICB7Ci0gICAgICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpCi0gICAgICAgICAgICByZXR1cm4g
dm0ubnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVlLmFzSW50MzIoKSk7Ci0gICAgICAgIGlmICh2YWx1
ZS5pc0RvdWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuIHZtLm51bWVyaWNTdHJpbmdzLmFkZCh2
YWx1ZS5hc0RvdWJsZSgpKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzVHJ1ZSgpKQotICAgICAgICAg
ICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPnRydWVLZXl3b3JkLnN0cmluZygpOwotICAgICAg
ICBpZiAodmFsdWUuaXNGYWxzZSgpKQotICAgICAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFt
ZXMtPmZhbHNlS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQot
ICAgICAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPm51bGxLZXl3b3JkLnN0cmluZygp
OwotICAgICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgICAgIHJldHVybiB2
bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLnN0cmluZygpOwotICAgICAgICByZXR1
cm4gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwotICAgIH0KLQotICAgIEFMV0FZ
U19JTkxJTkUgU3RyaW5nIEpTVmFsdWU6OnRvV1RGU3RyaW5nSW5saW5lKEV4ZWNTdGF0ZSogZXhl
YykgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChpc1N0cmluZygpKQotICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEpTU3RyaW5nKj4oYXNDZWxsKCkpLT52YWx1ZShleGVjKTsKLQotICAg
ICAgICByZXR1cm4gaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKCp0aGlzLCBleGVjKTsK
LSAgICB9Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gSlNTdHJpbmdfaApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zNzhjMDVmYzgwZDg4ZTg1MzdjOWQyYTVlYWI5ZmYwYmE5YjYwYTc1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgK
QEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgSlNTdHJpbmdJbmxpbmVzX2gKKyNkZWZpbmUgSlNTdHJpbmdJ
bmxpbmVzX2gKKworI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCisjaW5jbHVkZSAiSlND
SlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorCituYW1lc3BhY2UgSlND
IHsKKworQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3Qo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCit7CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
bGVuZ3RoKSB7CisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgUmVhZE9ubHksIGpzTnVtYmVyKG1fbGVuZ3RoKSk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsK
KyAgICBpZiAoaSA8IG1fbGVuZ3RoKSB7CisgICAgICAgIEFTU0VSVChpICE9IFByb3BlcnR5TmFt
ZTo6Tm90QW5JbmRleCk7IC8vIE5vIG5lZWQgZm9yIGFuIGV4cGxpY2l0IGNoZWNrLCB0aGUgYWJv
dmUgdGVzdCB3b3VsZCBhbHdheXMgZmFpbCEKKyAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBE
b250RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIGkpKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKworQUxXQVlTX0lOTElO
RSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBpZiAocHJv
cGVydHlOYW1lIDwgbV9sZW5ndGgpIHsKKyAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250
RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIHByb3BlcnR5TmFtZSkpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCitBTFdB
WVNfSU5MSU5FIFN0cmluZyBpbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcoY29uc3QgSlNW
YWx1ZSYgdmFsdWUsIEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpCisgICAgICAgIHJldHVybiB2bS5udW1lcmljU3Ry
aW5ncy5hZGQodmFsdWUuYXNJbnQzMigpKTsKKyAgICBpZiAodmFsdWUuaXNEb3VibGUoKSkKKyAg
ICAgICAgcmV0dXJuIHZtLm51bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZS5hc0RvdWJsZSgpKTsKKyAg
ICBpZiAodmFsdWUuaXNUcnVlKCkpCisgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT50
cnVlS2V5d29yZC5zdHJpbmcoKTsKKyAgICBpZiAodmFsdWUuaXNGYWxzZSgpKQorICAgICAgICBy
ZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+ZmFsc2VLZXl3b3JkLnN0cmluZygpOworICAgIGlmICh2
YWx1ZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPm51bGxLZXl3
b3JkLnN0cmluZygpOworICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1
cm4gdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZC5zdHJpbmcoKTsKKyAgICByZXR1
cm4gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworfQorICAgIAorQUxXQVlTX0lO
TElORSBTdHJpbmcgSlNWYWx1ZTo6dG9XVEZTdHJpbmdJbmxpbmUoRXhlY1N0YXRlKiBleGVjKSBj
b25zdAoreworICAgIGlmIChpc1N0cmluZygpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
SlNTdHJpbmcqPihhc0NlbGwoKSktPnZhbHVlKGV4ZWMpOworICAgIAorICAgIHJldHVybiBpbmxp
bmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcoKnRoaXMsIGV4ZWMpOworfQorCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJs
ZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxl
T2JqZWN0LmNwcAppbmRleCAyYWMyNTI0YzVkZmRhM2QxMjI0OWQ3NzkwYWRjMzEyOWUzYzBlODcx
Li5mYmM4Yjg5NWVhZTZhZjc4ODgzOWJlYjVlODNkN2I2Yjk3OTI4ZmFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcApA
QCAtNjQsNiArNjQsOCBAQCB2b2lkIEpTU3ltYm9sVGFibGVPYmplY3Q6OmdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdAogICAgICAgICBDb25jdXJy
ZW50SklUTG9ja2VyIGxvY2tlcih0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5tX2xvY2spOwog
ICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBlbmQgPSB0aGlzT2JqZWN0LT5zeW1i
b2xUYWJsZSgpLT5lbmQobG9ja2VyKTsKICAgICAgICAgZm9yIChTeW1ib2xUYWJsZTo6TWFwOjpp
dGVyYXRvciBpdCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmJlZ2luKGxvY2tlcik7IGl0
ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgaWYgKGl0LT5rZXktPmlzRW1wdHlVbmlxdWUo
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmICghKGl0LT52YWx1
ZS5nZXRBdHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVt
UHJvcGVydGllcykpCiAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmll
cihleGVjLCBpdC0+a2V5LmdldCgpKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAppbmRleCBiNWIyMGE4NDVi
NmFiNjQ0MjRiMzdlMzFiMjc3NGVmOTA1MzUzZjdmLi5kMDNiMjQ1MTFjMmRlMTk1OWZiNWY1NmQ2
NDljNjRkMGVmZTA2ODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCkBAIC03Miw3ICs3Miw3IEBAIGlubGluZSBib29sIHN5
bWJvbFRhYmxlR2V0KAogewogICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3Qt
PnN5bWJvbFRhYmxlKCk7CiAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFi
bGUubV9sb2NrKTsKLSAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9s
VGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJv
bFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJv
cGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2Vy
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50
cnkgPSBpdGVyLT52YWx1ZTsKQEAgLTg3LDcgKzg3LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFi
bGVHZXQoCiB7CiAgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9s
VGFibGUoKTsKICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xv
Y2spOwotICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5m
aW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGU6
Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5h
bWUudWlkKCkpOwogICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBlbnRyeSA9IGl0
ZXItPnZhbHVlOwpAQCAtMTA0LDcgKzEwNCw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0
KAogewogICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxl
KCk7CiAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsK
LSAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChs
b2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlOjpNYXA6
Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVp
ZCgpKTsKICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52
YWx1ZTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dCgKICAg
ICB7CiAgICAgICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRh
YmxlKCk7CiAgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRh
YmxlLm1fbG9jaywgZXhlYy0+dm0oKS5oZWFwKTsKLSAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6
aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVi
bGljTmFtZSgpKTsKKyAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5
bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgICAgICBpZiAo
aXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgYm9vbCB3YXNGYXQ7CkBAIC0xNTksNyArMTU5LDcgQEAgaW5saW5lIGJvb2wg
c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcygKICAgICB7CiAgICAgICAgIFN5bWJvbFRhYmxl
JiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgICAgIENvbmN1cnJl
bnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAgICAgIFN5bWJvbFRh
YmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVy
dHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9y
IGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAg
ICAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5ID0gaXRlci0+dmFs
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAppbmRleCBhODA2ZGQw
NTJhMGNiZWU0Y2FjMmNhYTZlMDhjNjcxNjAwNWMyNzBjLi5hOTc2NTIwMWI5ZjUxODY0MTQyM2Rk
ZTBmZTBlMmU1MWE4Y2U3M2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Mb29rdXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1
cC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBIYXNoVGFibGU6OmRlbGV0ZVRhYmxlKCkgY29u
c3QKIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBI
YXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCogdGhpc09iaiwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEFTU0VSVCh0aGlzT2JqLT5nbG9iYWxP
YmplY3QoKSk7Ci0gICAgQVNTRVJUKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbik7Cisg
ICAgQVNTRVJUKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbik7CiAgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCA9IHRoaXNPYmotPmdldERpcmVjdE9mZnNldCh2bSwgcHJvcGVydHlO
YW1lLCBhdHRyaWJ1dGVzKTsKQEAgLTc5LDkgKzc5LDEzIEBAIGJvb2wgc2V0VXBTdGF0aWNGdW5j
dGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVj
dCoKICAgICAgICAgaWYgKHRoaXNPYmotPnN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb24oCi0gICAgICAgICAgICB2bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHBy
b3BlcnR5TmFtZSwgZW50cnktPmZ1bmN0aW9uTGVuZ3RoKCksCi0gICAgICAgICAgICBlbnRyeS0+
ZnVuY3Rpb24oKSwgZW50cnktPmludHJpbnNpYygpLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAg
ICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluKQorICAgICAgICAgICAgdGhp
c09iai0+cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKHZtLCB0aGlzT2JqLT5nbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lLCBlbnRyeS0+YnVpbHRpbkdlbmVyYXRvcigpKHZtKSwgZW50cnktPmF0
dHJpYnV0ZXMoKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhpc09iai0+cHV0RGly
ZWN0TmF0aXZlRnVuY3Rpb24oCisgICAgICAgICAgICAgICAgdm0sIHRoaXNPYmotPmdsb2JhbE9i
amVjdCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5mdW5jdGlvbkxlbmd0aCgpLAorICAgICAgICAg
ICAgICAgIGVudHJ5LT5mdW5jdGlvbigpLCBlbnRyeS0+aW50cmluc2ljKCksIGVudHJ5LT5hdHRy
aWJ1dGVzKCkpOworICAgICAgICB9CiAgICAgICAgIG9mZnNldCA9IHRoaXNPYmotPmdldERpcmVj
dE9mZnNldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKICAgICAgICAgQVNTRVJUKGlz
VmFsaWRPZmZzZXQob2Zmc2V0KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9M
b29rdXAuaAppbmRleCBiZGU4M2Q0YTZmYzM1NTc3ODUwZTMxZTg4YmMzOWZkMDVmN2JjZTUyLi5k
YmEzODllOWUyNDNkZDBlY2IyYmE5OGYzOTRkNDA3OWY5ZGVhOTM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Mb29rdXAuaApAQCAtNDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAvLyBpZS4gdHlwZWRlZiBKU1ZhbHVlICgqR2V0RnVuY3Rpb24pKEV4ZWNTdGF0ZSosIEpT
T2JqZWN0KiBiYXNlT2JqZWN0KQogICAgIHR5cGVkZWYgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmMgR2V0RnVuY3Rpb247CiAgICAgdHlwZWRlZiBQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
YyBQdXRGdW5jdGlvbjsKKyAgICB0eXBlZGVmIEZ1bmN0aW9uRXhlY3V0YWJsZSogKCpCdWlsdGlu
R2VuZXJhdG9yKShWTSYpOwogCiAgICAgY2xhc3MgSGFzaEVudHJ5IHsKICAgICAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC02OCwxMSArNjksMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICByZXR1cm4gbV9pbnRyaW5zaWM7CiAgICAgICAgIH0KIAorICAgICAgICBCdWls
dGluR2VuZXJhdG9yIGJ1aWx0aW5HZW5lcmF0b3IoKSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0
ZXMgJiBCdWlsdGluKTsgcmV0dXJuIG1fdS5idWlsdGluR2VuZXJhdG9yLmdlbmVyYXRvclZhbHVl
OyB9CiAgICAgICAgIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uKCkgY29uc3QgeyBBU1NFUlQobV9h
dHRyaWJ1dGVzICYgRnVuY3Rpb24pOyByZXR1cm4gbV91LmZ1bmN0aW9uLmZ1bmN0aW9uVmFsdWU7
IH0KICAgICAgICAgdW5zaWduZWQgY2hhciBmdW5jdGlvbkxlbmd0aCgpIGNvbnN0IHsgQVNTRVJU
KG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKTsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXI+KG1fdS5mdW5jdGlvbi5sZW5ndGgpOyB9CiAKLSAgICAgICAgR2V0RnVuY3Rpb24gcHJvcGVy
dHlHZXR0ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKSk7IHJl
dHVybiBtX3UucHJvcGVydHkuZ2V0OyB9Ci0gICAgICAgIFB1dEZ1bmN0aW9uIHByb3BlcnR5UHV0
dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBGdW5jdGlvbikpOyByZXR1cm4g
bV91LnByb3BlcnR5LnB1dDsgfQorICAgICAgICBHZXRGdW5jdGlvbiBwcm9wZXJ0eUdldHRlcigp
IGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1dGVzICYgQnVpbHRpbk9yRnVuY3Rpb24pKTsgcmV0
dXJuIG1fdS5wcm9wZXJ0eS5nZXQ7IH0KKyAgICAgICAgUHV0RnVuY3Rpb24gcHJvcGVydHlQdXR0
ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEJ1aWx0aW5PckZ1bmN0aW9uKSk7
IHJldHVybiBtX3UucHJvcGVydHkucHV0OyB9CiAKICAgICAgICAgaW50cHRyX3QgbGV4ZXJWYWx1
ZSgpIGNvbnN0IHsgQVNTRVJUKCFtX2F0dHJpYnV0ZXMpOyByZXR1cm4gbV91LmxleGVyLnZhbHVl
OyB9CiAKQEAgLTk0LDYgKzk2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAg
IGludHB0cl90IGxlbmd0aDsgLy8gbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgZnVuY3Rpb24KICAg
ICAgICAgICAgIH0gZnVuY3Rpb247CiAgICAgICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAg
ICAgIEJ1aWx0aW5HZW5lcmF0b3IgZ2VuZXJhdG9yVmFsdWU7CisgICAgICAgICAgICAgICAgaW50
cHRyX3QgdW51c2VkOworICAgICAgICAgICAgfSBidWlsdGluR2VuZXJhdG9yOworICAgICAgICAg
ICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICBHZXRGdW5jdGlvbiBnZXQ7CiAgICAgICAgICAg
ICAgICAgUHV0RnVuY3Rpb24gcHV0OwogICAgICAgICAgICAgfSBwcm9wZXJ0eTsKQEAgLTIwOSw3
ICsyMTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBBTFdBWVNf
SU5MSU5FIGNvbnN0IEhhc2hFbnRyeSogZW50cnkoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkg
Y29uc3QKICAgICAgICAgewotICAgICAgICAgICAgU3RyaW5nSW1wbCogaW1wbCA9IHByb3BlcnR5
TmFtZS5wdWJsaWNOYW1lKCk7CisgICAgICAgICAgICBTdHJpbmdJbXBsKiBpbXBsID0gcHJvcGVy
dHlOYW1lLnVpZCgpOwogICAgICAgICAgICAgaWYgKCFpbXBsKQogICAgICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICAKQEAgLTI0OSw3ICsyNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgaWYgKCFlbnRyeSkgLy8gbm90IGZvdW5kLCBmb3J3YXJkIHRvIHBhcmVudAogICAgICAg
ICAgICAgcmV0dXJuIFBhcmVudEltcDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmosIGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKLSAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkg
JiBGdW5jdGlvbikKKyAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JG
dW5jdGlvbikKICAgICAgICAgICAgIHJldHVybiBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChleGVj
LCBlbnRyeSwgdGhpc09iaiwgcHJvcGVydHlOYW1lLCBzbG90KTsKIAogICAgICAgICBzbG90LnNl
dENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqLCBlbnRyeS0+YXR0cmlidXRlcygpLCBlbnRyeS0+cHJv
cGVydHlHZXR0ZXIoKSk7CkBAIC0yODYsNyArMjkyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGlmICghZW50cnkpIC8vIG5vdCBmb3VuZCwgZm9yd2FyZCB0byBwYXJlbnQKICAgICAgICAg
ICAgIHJldHVybiBQYXJlbnRJbXA6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogCi0gICAgICAgIEFTU0VSVCghKGVudHJ5LT5hdHRyaWJ1dGVz
KCkgJiBGdW5jdGlvbikpOworICAgICAgICBBU1NFUlQoIShlbnRyeS0+YXR0cmlidXRlcygpICYg
QnVpbHRpbk9yRnVuY3Rpb24pKTsKIAogICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0
aGlzT2JqLCBlbnRyeS0+YXR0cmlidXRlcygpLCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjk1LDcgKzMwMSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIGlubGluZSB2b2lkIHB1dEVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5
KiBlbnRyeSwgSlNPYmplY3QqIGJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKICAgICB7CiAgICAgICAgIC8vIElmIHRo
aXMgaXMgYSBmdW5jdGlvbiBwdXQgaXQgYXMgYW4gb3ZlcnJpZGUgcHJvcGVydHkuCi0gICAgICAg
IGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pIHsKKyAgICAgICAgaWYgKGVudHJ5
LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikgewogICAgICAgICAgICAgaWYgKEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHNsb3QudGhpc1Zh
bHVlKCkpKQogICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgp
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKICAgICAgICAgfSBlbHNlIGlmICghKGVudHJ5LT5hdHRy
aWJ1dGVzKCkgJiBSZWFkT25seSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZDVlNzI4YzJjZDEw
MjBhNDdlNGFkY2Q2NDljZDFmZmZhNWNkNmE4My4uZGNhMmZkOGQxZjZhYzIzYjhmZjgxN2NiYjE4
ZmFhZTdiY2Q1OTcwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTM4LDYgKzM4LDIwIEBAIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3I6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAordm9pZCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0sIG5hbWUpOworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsK
KyAgICAKKyAgICBOYXRpdmVFcnJvclByb3RvdHlwZSogcHJvdG90eXBlID0gTmF0aXZlRXJyb3JQ
cm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5h
bWUsIHRoaXMpOworICAgIAorICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoLCBqc051bWJlcigxKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOyAvLyBF
Q01BIDE1LjExLjcuNQorICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90
eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBt
X2Vycm9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0
dXJlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSkpOworICAgIEFTU0VSVChtX2Vycm9yU3Ry
dWN0dXJlKTsKKyAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZS0+aXNPYmplY3QoKSk7Cit9CisK
IHZvaWQgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcio+KGNlbGwpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ci5oCmluZGV4IDc0MGQzZjkzMzI5MmZkMmFjY2I0Yjk5MDM0NDMxMmI5MzE5YWUxMTAuLjQzOGEz
YWZiOWJiMGY2NDEyYzk3OTMyMjMwYzg4NzEwOTYxZjU0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKQEAgLTUx
LDE5ICs1MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdHJ1Y3R1cmUqIGVycm9yU3Ry
dWN0dXJlKCkgeyByZXR1cm4gbV9lcnJvclN0cnVjdHVyZS5nZXQoKTsgfQogCiAgICAgcHJvdGVj
dGVkOgotICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKLSAgICAgICAgewotICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0s
IG5hbWUpOwotICAgICAgICAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwotCi0gICAgICAg
ICAgICBOYXRpdmVFcnJvclByb3RvdHlwZSogcHJvdG90eXBlID0gTmF0aXZlRXJyb3JQcm90b3R5
cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5hbWUsIHRo
aXMpOwotCi0gICAgICAgICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0
aCwganNOdW1iZXIoMSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsgLy8gRUNN
QSAxNS4xMS43LjUKLSAgICAgICAgICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsK
LSAgICAgICAgICAgIG1fZXJyb3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBFcnJvckluc3RhbmNl
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlKSk7Ci0gICAgICAg
ICAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZSk7Ci0gICAgICAgICAgICBBU1NFUlQobV9lcnJv
clN0cnVjdHVyZS0+aXNPYmplY3QoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1
cmUsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCmluZGV4IGQ5MzhmYTMxNjQ1YWYyNmI3NTg1MTRkYjZi
MjQ3OGYxODNlOWVlZTEuLmNmZTljNGQzMmJhNzY4Yzc0ZTRmZmJiMTkxMzUyNzlkZWJmMTE3NjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCkBAIC00
Miw2ICs0Miw4IEBAIGVudW0gQXR0cmlidXRlIHsKICAgICBGdW5jdGlvbiAgICAgPSAxIDw8IDQs
ICAvLyBwcm9wZXJ0eSBpcyBhIGZ1bmN0aW9uIC0gb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFi
bGVzCiAgICAgQWNjZXNzb3IgICAgID0gMSA8PCA1LCAgLy8gcHJvcGVydHkgaXMgYSBnZXR0ZXIv
c2V0dGVyCiAgICAgQ3VzdG9tQWNjZXNzb3IgPSAxIDw8IDYsCisgICAgQnVpbHRpbiAgICAgICAg
ID0gMSA8PCA3LCAvLyBwcm9wZXJ0eSBpcyBhIGJ1aWx0aW4gZnVuY3Rpb24gLSBvbmx5IHVzZWQg
Ynkgc3RhdGljIGhhc2h0YWJsZXMKKyAgICBCdWlsdGluT3JGdW5jdGlvbiA9IEJ1aWx0aW4gfCBG
dW5jdGlvbiwgLy8gaGVscGVyIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogfTsKIAog
Y2xhc3MgUHJvcGVydHlTbG90IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBQcm90b3R5cGUuY3BwCmluZGV4IDg5ZDdhYzFiOGNiZjFkYjBlMTI2ZjFmYzc5NmRm
ZDVmYzg0YjJlNTkuLjlkZGEwYmE4ZGUxNDEyZWFmNGQyOTFkY2YwYzZiMzk2NTdmYjY3N2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNw
cApAQCAtMjQsNyArMjQsNyBAQAogI2luY2x1ZGUgIkFycmF5UHJvdG90eXBlLmgiCiAjaW5jbHVk
ZSAiRXJyb3IuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5o
IgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5o
IgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAppbmRleCBiMjAz
ODg4ZDNjMTZjZGEzYzAwMzUwNjIwOGFlMDg2OTVkYzVkYWFhLi5kMDI2NmE1OWVmM2Y1NWFhMzY5
NGY1Zjc0MThjZjc4ZTBhZTBkOGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSlND
ZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNT
ZXQuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJNYXBEYXRhLmgi
CiAjaW5jbHVkZSAiU2V0UHJvdG90eXBlLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdPYmplY3QuY3BwCmluZGV4IDQ0MGE2MDk0MjE5MzM4MDMxZTU5MjdhZjQ2
YjI4OWRiY2ZiNWE3MjguLjgwZTdlYWE4YzQ5MWNiNmQ1NGE4MzI0Y2U2NDdhNmNkYjdlODg3ODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApA
QCAtMjIsNyArMjIsOSBAQAogI2luY2x1ZGUgIlN0cmluZ09iamVjdC5oIgogCiAjaW5jbHVkZSAi
RXJyb3IuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3Bl
cmF0aW9ucy5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDA0MjkxZjdlOGRkMjRlOGFi
MzNkNzVhZjFkYTQ1NjhmMmJjOTllNjguLjFlY2FiODVjMGJkYjI4Njk4OTQ1NzdhNzQxMjU0ZTM2
NDQxNDlkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNw
cApAQCAtMjcsMTIgKzI3LDE4IEBACiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAKICNpbmNsdWRl
ICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUg
IkR1bXBDb250ZXh0LmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
T2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUg
IkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgorI2luY2x1ZGUgIlByb3Bl
cnR5TWFwSGFzaFRhYmxlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKKyNpbmNs
dWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgor
I2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0
YUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
CmluZGV4IDUyY2NmNDIzYTEwNDNlMTA3OWYyZDhiMTg5NDIxOTg5MGU3MWYyYmMuLjkxYWQ1NTdl
Mjg5YjQ3MzcwN2I4MzlmNmNlNzBjYTM0NDE4NmE1ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJBcmdMaXN0LmgiCiAjaW5j
bHVkZSAiQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuaCIKICNpbmNsdWRlICJBcnJheUJ1ZmZl
ck5ldXRlcmluZ1dhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIK
ICNpbmNsdWRlICJDYWxsRnJhbWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAj
aW5jbHVkZSAiQ29kZUNhY2hlLmgiCkBAIC01NSw3ICs1NiwxMCBAQAogI2luY2x1ZGUgIkpTQVBJ
VmFsdWVXcmFwcGVyLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNB
cnJheS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxs
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9u
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVk
ZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKQEAgLTY4LDEzICs3MiwxNiBA
QAogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk1hcERhdGEuaCIKICNpbmNsdWRlICJO
b2Rlcy5oIgorI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlBhcnNlckFyZW5hLmgiCisj
aW5jbHVkZSAiUHJvcGVydHlNYXBIYXNoVGFibGUuaCIKICNpbmNsdWRlICJSZWdFeHBDYWNoZS5o
IgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlNpbXBsZVR5cGVkQXJyYXlD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU291cmNlUHJvdmlkZXJDYWNoZS5oIgogI2luY2x1ZGUg
IlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5o
IgogI2luY2x1ZGUgIldlYWtNYXBEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NJRC5oPgpA
QCAtMjI2LDYgKzIzMyw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlw
ZSkKICAgICAsIG1faW5EZWZpbmVPd25Qcm9wZXJ0eShmYWxzZSkKICAgICAsIG1fY29kZUNhY2hl
KENvZGVDYWNoZTo6Y3JlYXRlKCkpCiAgICAgLCBtX2VuYWJsZWRQcm9maWxlcihudWxscHRyKQor
ICAgICwgbV9idWlsdGluRXhlY3V0YWJsZXMoQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGUoKnRo
aXMpKQogewogICAgIGludGVycHJldGVyID0gbmV3IEludGVycHJldGVyKCp0aGlzKTsKICAgICBT
dGFja0JvdW5kcyBzdGFjayA9IHd0ZlRocmVhZERhdGEoKS5zdGFjaygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKaW5kZXggNWE4NDEwNWVhZmI3YWJiYTVmYTQzMWVlZWRkNTVkN2E4OWY1
NWNlMi4uNjk1OGFjMzkzYjFhZWZjMGJlZmJmNmU0ZWI4YjY4MjVjZjdjOWEwYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiUHJpdmF0
ZU5hbWUuaCIKICNpbmNsdWRlICJQcm90b3R5cGVNYXAuaCIKICNpbmNsdWRlICJTbWFsbFN0cmlu
Z3MuaCIKKyNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU3Ryb25nLmgiCiAjaW5j
bHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheUNvbnRyb2xsZXIu
aCIKQEAgLTY5LDYgKzcwLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQXJpdHlD
aGVja0ZhaWxSZXR1cm5UaHVua3M7CisgICAgY2xhc3MgQnVpbHRpbkV4ZWN1dGFibGVzOwogICAg
IGNsYXNzIENvZGVCbG9jazsKICAgICBjbGFzcyBDb2RlQ2FjaGU7CiAgICAgY2xhc3MgQ29tbW9u
SWRlbnRpZmllcnM7CkBAIC00OTcsNiArNDk5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgcmVnaXN0ZXJXYXRjaHBvaW50Rm9ySW1wdXJlUHJvcGVydHkoY29uc3QgSWRlbnRpZmll
ciYsIFdhdGNocG9pbnQqKTsKICAgICAgICAgLy8gRklYTUU6IFVzZSBBdG9taWNTdHJpbmcgb25j
ZSBpdCBnb3QgbWVyZ2VkIHdpdGggSWRlbnRpZmllci4KICAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBhZGRJbXB1cmVQcm9wZXJ0eShjb25zdCBTdHJpbmcmKTsKKyAgICAgICAgCisgICAg
ICAgIEJ1aWx0aW5FeGVjdXRhYmxlcyogYnVpbHRpbkV4ZWN1dGFibGVzKCkgeyByZXR1cm4gbV9i
dWlsdGluRXhlY3V0YWJsZXMuZ2V0KCk7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CkBAIC01MzcsMTAgKzU0MSw5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBKU1ZhbHVlIG1fZXhjZXB0aW9uOwogICAgICAgICBib29sIG1f
aW5EZWZpbmVPd25Qcm9wZXJ0eTsKICAgICAgICAgT3duUHRyPENvZGVDYWNoZT4gbV9jb2RlQ2Fj
aGU7Ci0gICAgICAgIFJlZkNvdW50ZWRBcnJheTxTdGFja0ZyYW1lPiBtX2V4Y2VwdGlvblN0YWNr
OwotCiAgICAgICAgIExlZ2FjeVByb2ZpbGVyKiBtX2VuYWJsZWRQcm9maWxlcjsKLQorICAgICAg
ICBPd25QdHI8QnVpbHRpbkV4ZWN1dGFibGVzPiBtX2J1aWx0aW5FeGVjdXRhYmxlczsKKyAgICAg
ICAgUmVmQ291bnRlZEFycmF5PFN0YWNrRnJhbWU+IG1fZXhjZXB0aW9uU3RhY2s7CiAgICAgICAg
IEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8V2F0Y2hwb2ludFNldD4+IG1faW1wdXJlUHJvcGVydHlX
YXRjaHBvaW50U2V0czsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3
YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oIGIvU291cmNlL1dlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
MGZjYzM4NGU4ZWRmYzM0YjE0MDgzYjg2NWQzNzM4MjBmNDE2NWM0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU1N0cmluZ0lubGlu
ZXMuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSlNTdHJpbmdJbmxpbmVz
X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfSlNTdHJpbmdJbmxpbmVzX2gKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU1N0cmluZ0lubGluZXMuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVu
dC5jcHAKaW5kZXggMmVkZGNkYmI5ZjAwNmNhNzYyNjY1MGI0MjAyNzg2MjZiOTI2MTQxNy4uM2M0
ZTBkN2JiYjMxY2FiMTJiNWU2Yzk3NWM3NGQzZjQ4NGU5Y2IxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJ
Q2FzdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcAppbmRleCA1NjQ5Yzg1Y2Ew
OTU4Nzc0OGEzZGEwNmNkZGQwY2E5OTllNTBiOGU3Li4zZjRkOGVmYWViNTdmMzMwMDNlNzNhN2U3
ODQyZTQyYzczY2U2NDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0lEQkFueUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJB
bnlDdXN0b20uY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiSlNJREJPYmplY3RTdG9y
ZS5oIgogI2luY2x1ZGUgIkpTSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oPgogCiB1
c2luZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSURCRGF0YWJhc2VDdXN0b20uY3BwCmluZGV4IDllYWU3NTY5YzcwNjAzYTRmZWQwYWYxNGM0
Zjg3MThjZGU2NGE2ZTEuLmY0OWRmZTkwYjRlODJkMzllZGNiZjliYTI5ZjJhZTc5OWMwZGRmMjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0
b20uY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKICNp
bmNsdWRlICJKU0lEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgot
I2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmcuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5n
SW5saW5lcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwCmluZGV4IDc0ZmQz
NTRiMjg2MDdjZjc4MjJmODA1MzQ3OTcwZjVkN2FjOGM4MzIuLjU0MzRiM2I3ZDZjNTZlY2IwYTAz
YTI3OTRjNjczNmE5YWRmYjcwZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5j
bHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJKU0lEQkluZGV4LmgiCiAjaW5jbHVk
ZSA8cnVudGltZS9FcnJvci5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmcuaD4KKyNpbmNs
dWRlIDxydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggMGRjODJhYTg4Yjc0ZWM1MjlkZjJhZDBhNWQwMzExNWJhNjhkMDFkMi4uYWVlYmYz
ZmE3NTI3YmJlNWFlZWZiY2ZkZmM4MjYzMTFkOGZkNjQ1NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBA
CisyMDE0LTAxLTI5ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAg
TWFrZSBpdCBwb3NzaWJsZSB0byBpbXBsZW1lbnQgSlMgYnVpbHRpbnMgaW4gSlMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzg4NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgdGhlIHRlc3Qg
cmVzdWx0cyBmb3IgbmV3IGVycm9yIG1lc3NhZ2VzIChub3cgdGhhdCB0aGV5J3JlCisgICAgICAg
IGFjdHVhbGx5IGhlbHBmdWwpLCBhbmQgYWRkZWQgYSBqcy1yZWdyZXNzIHRlc3QgdG8gdHJhY2sg
cGVyZm9ybWFuY2UuCisKKyAgICAgICAgKiBqcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICoganMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBqcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5LXByb3RvdHlw
ZS1ldmVyeS5qczogQWRkZWQuCisgICAgICAgICh0ZXN0MSk6CisgICAgICAgICh0ZXN0Mik6Cisg
ICAgICAgICh0ZXN0Myk6CisKIDIwMTQtMDEtMjkgIEJlbSBKb25lcy1CZXkgIDxiam9uZXNiZUBh
ZG9iZS5jb20+CiAKICAgICAgICAgVXBkYXRlIGNsaXAtcGF0aCB0ZXN0cyB0byB1c2UgbmV3IHNo
YXBlIHN5bnRheApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0CmluZGV4IDU0
MWI4YzM1OGYwNjhhMGNlYTg4MmMxMDUxNzUzMjUxMTRjZDMzZjcuLmNjYTM2M2RjZTU4ZmJhOTVh
NThjZTQ2ZmNiNDhjMzhiZjU4YWRmNTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2FycmF5
LWV2ZXJ5LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJheS1ldmVyeS1leHBl
Y3RlZC50eHQKQEAgLTMwLDEyICszMCwxMiBAQCBQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZl
cnkoaXNCaWdFbm91Z2hBbmRFeGNlcHRpb24pIHRocmV3IGV4Y2VwdGlvbiBleGNlcHRpbwogUEFT
UyBbMTIsIDU0LCAxOCwgMTMwLCA0NF0uZXZlcnkoaXNCaWdFbm91Z2hBbmRFeGNlcHRpb24pIHRo
cmV3IGV4Y2VwdGlvbiBleGNlcHRpb24gZnJvbSBmdW5jdGlvbi4KIAogNS4wIFdyb25nIFR5cGUg
Zm9yIENhbGxiYWNrIFRlc3QKLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSg1KSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwg
NDRdLmV2ZXJ5KCd3cm9uZycpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3Iu
Ci1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkobmV3IE9iamVjdCgpKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2
ZXJ5KG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsx
MiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0
XS5ldmVyeSg1KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZl
cnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRd
LmV2ZXJ5KCd3cm9uZycpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlw
ZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMw
LCA0NF0uZXZlcnkobmV3IE9iamVjdCgpKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJh
eS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIs
IDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFy
cmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsx
MiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgor
UEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KIAog
Ni4wIEVhcmx5IEV4aXQgKCJTaG9ydCBDaXJjdWl0aW5nIikKIFBBU1MgWzEyLCA1LCA4LCAxMzAs
IDQ0XS5ldmVyeShpc0JpZ0Vub3VnaFNob3J0Q2lyY3VpdCkgaXMgZmFsc2UKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2pzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0
ZWQudHh0CmluZGV4IDJjMmE2OGNiMTA2ZGExMGYwODZiMjJjNWJmMmJmNWM4ZmU3OWUzM2UuLjVk
OWVjYjc1YThkYTc5YmE2NTYwNWU3ZWI5Y2Y4ZmMyNWZlMThhZmIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2pzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvanMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVk
LnR4dApAQCAtMTUsNyArMTUsNyBAQCBQQVNTIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHVu
ZGVmaW5lZCwgMCwgMSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZQogUEFTUyBBcnJh
eS5wcm90b3R5cGUuc29ydC5jYWxsKHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlw
ZS5zb3J0LmNhbGwodW5kZWZpbmVkKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNh
bGwodW5kZWZpbmVkLCAwLCAxKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQg
aXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxs
KHVuZGVmaW5lZCwgMCwgMSknKS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuY2FsbCh1
bmRlZmluZWQsIHt9KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90
IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuY2FsbCh1bmRl
ZmluZWQsIHt9KScpLgotUEFTUyBBcnJheS5wcm90b3R5cGUuZXZlcnkuY2FsbCh1bmRlZmluZWQs
IHRvU3RyaW5nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFu
IG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVk
LCB0b1N0cmluZyknKS4KK1BBU1MgQXJyYXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVk
LCB0b1N0cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2
ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSB1bmRlZmluZWQuCiBQQVNTIEFycmF5LnBy
b3RvdHlwZS5mb3JFYWNoLmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZykgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5
LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZyknKS4KIFBBU1MgQXJy
YXkucHJvdG90eXBlLnNvbWUuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJy
YXkucHJvdG90eXBlLnNvbWUuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKScpLgogUEFTUyBBcnJh
eS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnBy
b3RvdHlwZS5pbmRleE9mLmNhbGwodW5kZWZpbmVkLCAwKScpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjEyOTBjMGVlZmY4ZGU0MjE4MzNkOTJkMjdlOTUyNDE5MTc2MDRiOTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVy
eS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL2FycmF5LXByb3RvdHlw
ZS1ldmVyeQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRp
b24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUt
ZXZlcnkuaHRtbCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmU1Y2MxNzFjNDg3NWEzNTg1YmYxNGU1NDE1ZjVjZDBlNTgxZDU0
NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90
eXBlLWV2ZXJ5Lmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJzY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3Rz
L2FycmF5LXByb3RvdHlwZS1ldmVyeS5qcyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0
LXRlc3RzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTRhYTE2MWMwY2U5
OGIyYWIxOGEzYTFhMWYwZGZhYWM5ZDdkMmUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzCkBAIC0w
LDAgKzEsMjkgQEAKK3ZhciByZXN1bHQgPSAwOworZnVuY3Rpb24gdGVzdDEoYSkgeworICAgIHJl
c3VsdCA8PCAxOworICAgIHJlc3VsdCsrOworICAgIHJldHVybiB0cnVlOworfQorZnVuY3Rpb24g
dGVzdDIoYSxiKSB7CisgICAgcmVzdWx0IF49IDM7CisgICAgcmVzdWx0ICo9IDM7CisgICAgcmV0
dXJuIHRydWU7Cit9CitmdW5jdGlvbiB0ZXN0MyhhLGIsYykgeworICAgIHJlc3VsdCBePSByZXN1
bHQgPj4gMTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordmFyIHJlc3VsdCA9IDA7Cit2YXIgYXJy
YXkgPSBbXQorZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkKKyAgICBhcnJheVtpXSA9
IDE7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTA7IGkrKykgeworICAgIGFycmF5LmV2ZXJ5KHRl
c3QxKTsKKyAgICBhcnJheS5ldmVyeSh0ZXN0Mik7CisgICAgYXJyYXkuZXZlcnkodGVzdDMpOwor
fQorCitpZiAocmVzdWx0ICE9IDE0Mjg4MTA0OTYpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVz
dWx0OiAiICsgcmVzdWx0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222669</attachid>
            <date>2014-01-30 08:14:26 -0800</date>
            <delta_ts>2014-01-30 08:53:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140130081409.patch</filename>
            <type>text/plain</type>
            <size>189177</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NjBlMTQzNTgwZTZkYzc1ZmEwNjY2YzlhMWUyZGMxZmMzZWYyY2MyLi4yNzBmZTZjZjRmNDQ2OGM4
NGRlNGViMjI3M2VmM2U4NTM4N2YxODBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
IFRoaXMgcmVzdWx0IG9mIHRoaXMgcmVmYWN0b3JpbmcKKyAgICAgICAgaXMgdGhhdCBDb21tb25J
ZGVudGlmaWVycywgYW5kIGEgZmV3IG90aGVyIG1pc2NlbGxhbmVvdXMgaGVhZGVycyBub3cKKyAg
ICAgICAgbmVlZCB0byBiZSBpbmNsdWRlZCBkaXJlY3RseSBhcyB0aGV5IHdlcmUgZm9ybWVybHkg
Y2FwdHVyZWQgdGhyb3VnaCBvdGhlcgorICAgICAgICBwYXRocy4KKworICAgICAgICBJbiBhZGRp
dGlvbiB0aGlzIGFkZHMgYSBmbGFnIHRvIHRoZSBMb29rdXAgdGFibGUncyBoYXNoZW50cnkgdG8g
aW5kaWNhdGUKKyAgICAgICAgdGhhdCBhIHN0YXRpYyBmdW5jdGlvbiBpcyBhY3R1YWxseSBiYWNr
ZWQgYnkgSlMuIFRoZXJlIGlzIHRoZW4gYSBsb3Qgb2YKKyAgICAgICAgbG9naWMgdG8gdGhyZWFk
IHRoZSBzcGVjaWFsIG5hdHVyZSBvZiB0aGUgZnVuY3RvbiB0byB3aGVyZSBpdCBtYXR0ZXJzLgor
ICAgICAgICBUaGlzIGFsbG93cyB0b1N0cmluZygpLCAuY2FsbGVyLCBldGMgdG8gbWltaWMgdGhl
IGJlaGF2aW91ciBvZiBhIGhvc3QKKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAgICAgTm90ZXMg
b24gd3JpdGluZyBidWlsdGluczoKKyAgICAgICAgIC0gRWFjaCBmdW5jdGlvbiBpcyBjb21waWxl
ZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBvdGhlcnMsIGFuZCB0aG9zZQorICAgICAgICAgICBpbXBs
ZW1lbnRhdGlvbnMgY2Fubm90IGN1cnJlbnRseSBjYXB0dXJlIGFsbCBnbG9iYWwgcHJvcGVydGll
cyAoYXMKKyAgICAgICAgICAgdGhhdCBjb3VsZCBiZSBwb3RlbnRpYWxseSB1bnNhZmUpLiBJZiBh
IGZ1bmN0aW9uIGRvZXMgY2FwdHVyZSBhCisgICAgICAgICAgIGdsb2JhbCB3ZSB3aWxsIGRlbGli
ZXJhdGVseSBjcmFzaC4KKyAgICAgICAgIC0gRm9yIHRob3NlICJnbG9iYWwiIHByb3BlcnRpZXMg
dGhhdCB3ZSBkbyB3YW50IGFjY2VzcyB0bywgd2UgdXNlCisgICAgICAgICAgIHRoZSBAIHByZWZp
eCwgZS5nLiBPYmplY3QodGhpcykgYmVjb21lcyBAT2JqZWN0KHRoaXMpLiBUaGUgQCBpZGVudGlm
aWVycworICAgICAgICAgICBhcmUgcHJpdmF0ZSBuYW1lcywgYW5kIGJlaGF2ZSBqdXN0IGxpa2Ug
cmVndWxhciBwcm9wZXJ0aWVzLCBvbmx5CisgICAgICAgICAgIHdpdGhvdXQgdGhlIHJpc2sgb2Yg
YWR1bHRlcmF0aW9uLiBBZ2FpbiwgaW4gdGhlIEBPYmplY3QgY2FzZSwgd2UKKyAgICAgICAgICAg
ZXhwbGljaXRseSBkdXBsaWNhdGUgdGhlIE9iamVjdENvbnN0cnVjdG9yIHJlZmVyZW5jZSBvbiB0
aGUgR2xvYmFsT2JqZWN0CisgICAgICAgICAgIHNvIHRoYXQgd2UgaGF2ZSBndWFyYW50ZWVkIGFj
Y2VzcyB0byB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgY29uc3RydWN0
b3IuCisgICAgICAgICAtIGNhbGwsIGFwcGx5LCBldmFsLCBhbmQgRnVuY3Rpb24gYXJlIGFsbCBy
ZWplY3RlZCBpZGVudGlmaWVycywgYWdhaW4KKyAgICAgICAgICAgdG8gcHJldmVudCBhbnl0aGlu
ZyBmcm9tIGFjY2lkZW50YWxseSB1c2luZyBhbiBhZHVsdGVyYXRlZCBvYmplY3QuCisgICAgICAg
ICAgIEluc3RlYWQgQGNhbGwgYW5kIEBhcHBseSBhcmUgYXZhaWxhYmxlLCBhbmQgaGFwcGlseSB0
aGV5IGNvbXBsZXRlbHkKKyAgICAgICAgICAgZHJvcCB0aGUgbmVxX3B0ciBpbnN0cnVjdGlvbiBh
cyB0aGV5J3JlIGRlZmluZWQgYXMgYWx3YXlzIGJlaW5nIHRoZQorICAgICAgICAgICBvcmlnaW5h
bCBjYWxsL2FwcGx5IGZ1bmN0aW9ucy4KKworICAgICAgICBUaGVzZSByZXN0cmljdGlvbnMgYXJl
IGp1c3QgaW50ZW5kZWQgdG8gbWFrZSBpdCBoYXJkZXIgdG8gYWNjaWRlbnRhbGx5CisgICAgICAg
IG1ha2UgY2hhbmdlcyB0aGF0IGFyZSBpbmNvcnJlY3QgKGZvciBpbnN0YW5jZSBjYWxsaW5nIHdo
YXRldmVyIGhhcyBiZWVuCisgICAgICAgIGFzc2lnbmVkIHRvIGdsb2JhbC5PYmplY3QsIGluc3Rl
YWQgb2YgdGhlIG9yaWdpbmFsIGNvbnN0cnVjdG9yIGZ1bmN0aW9uKS4KKyAgICAgICAgSG93ZXZl
ciwgbWFraW5nIGEgbWlzdGFrZSBsaWtlIHRoaXMgc2hvdWxkIHJlc3VsdCBpbiBhIHB1cmVseSBz
ZW1hbnRpYworICAgICAgICBlcnJvciBhcyBmdW5kYW1lbnRhbGx5IHRoZXNlIGZ1bmN0aW9ucyBh
cmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlCisgICAgICAgIHJlZ3VsYXIgSlMgY29kZSBp
biB0aGUgaG9zdCBnbG9iYWwsIGFuZCBoYXZlIG5vIG1vcmUgcHJpdmlsZWdlcyB0aGFuCisgICAg
ICAgIGFueSBvdGhlciBKUy4KKworICAgICAgICBUaGUgaW5pdGlhbCBwcm9vZiBvZiBjb25jZXB0
IGlzIEFycmF5LnByb3RvdHlwZS5ldmVyeSwgdGhpcyBzaG93cyBhIDY1JQorICAgICAgICBwZXJm
b3JtYW5jZSBpbXByb3ZlbWVudCwgYW5kIHRoYXQgaW1wcm92ZW1lbnQgaXMgc2lnbmlmaWNhbnRs
eSBodXJ0IGJ5CisgICAgICAgIG91ciBwb29yIG9wdGltaXNhdGlvbiBvZiBvcF9pbi4KKworICAg
ICAgICBBcyB0aGlzIGlzIHN1Y2ggYSBsaW1pdGVkIGZ1bmN0aW9uLCB3ZSBoYXZlIG5vdCB5ZXQg
ZXhwb3J0ZWQgYWxsIHN5bWJvbHMKKyAgICAgICAgdGhhdCB3ZSBjb3VsZCBwb3NzaWJseSBuZWVk
LCBidXQgYXMgd2UgaW1wbGVtZW50IG1vcmUsIHRoZSBsaWtlbGlob29kCisgICAgICAgIG9mIGVu
Y291bnRlcmluZyBtaXNzaW5nIGZlYXR1cmVzIHdpbGwgcmVkdWNlLgorCisgICAgICAgIFRoaXMg
ZGlkIHJlcXVpcmUgYnJlYWtpbmcgb3V0IGEgSlNTdHJpbmdJbmxpbmVzIGhlYWRlciwgYW5kIHJl
cXVpcmVkCisgICAgICAgIGZpeGluZyBhIGZldyBvYmplY3RzIHRoYXQgd2VyZSB0cnlpbmcgdG8g
dXNpbmcgUHJvcGVydHlOYW1lOjpwdWJsaWNOYW1lCisgICAgICAgIHJhdGhlciB0aGFuIFByb3Bl
cnR5TmFtZTo6dWlkLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0
eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dCk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRpY1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWNGdW5jdGlvbkdl
dHRlcik6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tH
ZXR0ZXIpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBidWlsdGlucy9BcnJheS5wcm90b3R5cGUuanM6CisgICAgICAgIChldmVyeSk6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkJ1aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKToKKyAgICAgICAgKEpTQzo6
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSk6CisgICAgICAgICog
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVj
dXRhYmxlczo6Y3JlYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tG
b3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6dG9TdHJpY3RuZXNzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNCdWlsdGluRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBjcmVhdGVfaGFz
aF90YWJsZToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZ2Vu
ZXJhdGUtanMtYnVpbHRpbnM6IEFkZGVkLgorICAgICAgICAoZ2V0Q29weXJpZ2h0KToKKyAgICAg
ICAgKGdldEZ1bmN0aW9ucyk6CisgICAgICAgIChnZW5lcmF0ZUNvZGUpOgorICAgICAgICAobWFu
Z2xlTmFtZSk6CisgICAgICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSWRlbnRp
Zmllcik6CisgICAgICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChTb3VyY2VDb2RlKToK
KyAgICAgICAgKFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKFZNKToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvUHJvdG9DYWxsRnJhbWUuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUp
OgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpM
ZXhlcik6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpM
ZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFy
Pjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAg
ICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcik6CisgICAgICAgICog
cGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OnNldENsb3NlZFZh
cmlhYmxlcyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
Tm9kZTo6Y2FwdHVyZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OnNldENs
b3NlZFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmluaXNoUGFy
c2luZyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRU
b2tlblRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OmdldFVzZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNsb3NlZFZhcmlh
Ymxlcyk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9k
ZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAgICAgICogcnVudGlt
ZS9BcmdMaXN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAg
ICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJh
dG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpn
ZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpD
b21tb25JZGVudGlmaWVycyk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQ
cml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQdWJsaWNO
YW1lKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzRXhjZXB0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxl
OjpleGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpleGVj
dXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aXNCdWlsdGlu
RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1l
L0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFi
bGVHZXQpOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0KToKKyAg
ICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgICogcnVudGltZS9K
U0NlbGxJbmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6c291cmNlQ29kZSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzSG9zdE9y
QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6aXNCdWlsdGluRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIpOgorICAgICAg
ICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9w
ZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgICogcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6Om9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpnZXRDbGFzc1Byb3BlcnR5TmFtZXMpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZ0lubGlu
ZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjppbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9i
amVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgICAgRG9uJ3QgcmVw
b3J0IHByaXZhdGUgbmFtZXMuCisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6c3ltYm9s
VGFibGVQdXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChKU0M6OnNldFVwU3RhdGlj
RnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlND
OjpIYXNoRW50cnk6OmJ1aWx0aW5HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpIYXNoRW50cnk6
OnByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpwcm9wZXJ0eVB1dHRl
cik6CisgICAgICAgIChKU0M6Okhhc2hUYWJsZTo6ZW50cnkpOgorICAgICAgICAoSlNDOjpnZXRT
dGF0aWNQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpnZXRTdGF0aWNWYWx1ZVNsb3QpOgor
ICAgICAgICAoSlNDOjpwdXRFbnRyeSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6YnVp
bHRpbkV4ZWN1dGFibGVzKToKKwogMjAxNC0wMS0yOSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3Nz
eUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikgbGVmdG92ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTEzZjE4OGFlNjUyYjk1ZjNiNTcyYWMxNzcwZWEx
MjViYmFlNzVkMi4uNjMyYWNjNDNkYzE2YzcxMzRkNThjMDRiN2E1Y2U1NmE5MTk4ZWNjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE0LTAxLTI5ICBPbGl2ZXIgSHVudCAgPG9saXZl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBpbXBsZW1lbnQgSlMg
YnVpbHRpbnMgaW4gSlMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNzg4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVwZGF0aW5nIGZvciB0aGUgbmV3bHkgcmVxdWlyZWQgaGVhZGVycy4KKworICAgICAg
ICBUZXN0OiBqcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sCisKKyAgICAgICAg
KiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oOiBBZGRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcDoKKwogMjAxNC0wMS0zMCAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViUGFnZTo6ZGV0ZXJtaW5lUHJpbWFyeVNu
YXBzaG90dGVkUGx1Z0luIGlzIHNsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggNWJlMDUzZjFlMDg2YjQzZTY4
NmMzNjc0ZGFlN2M1MTYwNWEyODZlNy4uMGVjZWQ1MWYzZTJkNWI2MjFkYWRmMDU3NDlmNWU3NDY2
YTA2ZjUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBib29sIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZQogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKICAg
ICBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHByb3BlcnR5TmFtZVJlZjsKICAgICAKLSAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpT
Q2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xh
c3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgLy8gb3B0aW9uYWwgb3B0
aW1pemF0aW9uIHRvIGJ5cGFzcyBnZXRQcm9wZXJ0eSBpbiBjYXNlcyB3aGVuIHdlIG9ubHkgbmVl
ZCB0byBrbm93IGlmIHRoZSBwcm9wZXJ0eSBleGlzdHMKICAgICAgICAgICAgIGlmIChKU09iamVj
dEhhc1Byb3BlcnR5Q2FsbGJhY2sgaGFzUHJvcGVydHkgPSBqc0NsYXNzLT5oYXNQcm9wZXJ0eSkg
ewpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiAgICAgUmVmUHRy
PE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgSlNWYWx1ZVJlZiB2YWx1ZVJl
ZiA9IHRvUmVmKGV4ZWMsIHZhbHVlKTsKICAgICAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9
IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJl
bnRDbGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBz
ZXRQcm9wZXJ0eSA9IGpzQ2xhc3MtPnNldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFwcm9wZXJ0eU5hbWVSZWYpCkBAIC0zNDMsNyArMzQzLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm8KICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CiAgICAg
UmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0Ns
YXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNz
ID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdERlbGV0
ZVByb3BlcnR5Q2FsbGJhY2sgZGVsZXRlUHJvcGVydHkgPSBqc0NsYXNzLT5kZWxldGVQcm9wZXJ0
eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lUmVmKQpAQCAtNTY0LDcgKzU2
NCw3IEBAIEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiB7CiAgICAgSlNPYmplY3RSZWYgdGhpc1Jl
ZiA9IHRvUmVmKHRoaXMpOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gY2xhc3NS
ZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAg
ICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXMgPSBq
c0NsYXNzLT5zdGF0aWNWYWx1ZXMoZXhlYykpIHsKICAgICAgICAgICAgICAgICBpZiAoU3RhdGlj
VmFsdWVFbnRyeSogZW50cnkgPSBzdGF0aWNWYWx1ZXMtPmdldChuYW1lKSkgewpAQCAtNjAwLDcg
KzYwMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGlj
RnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFCiAgICAgaWYgKFBhcmVudDo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdDIpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QyLmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFt
ZSkpOwogCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsK
ICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqLT5jbGFzc1JlZigpOyBq
c0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlm
IChPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGUqIHN0YXRpY0Z1bmN0aW9ucyA9IGpz
Q2xhc3MtPnN0YXRpY0Z1bmN0aW9ucyhleGVjKSkgewogICAgICAgICAgICAgICAgIGlmIChTdGF0
aWNGdW5jdGlvbkVudHJ5KiBlbnRyeSA9IHN0YXRpY0Z1bmN0aW9ucy0+Z2V0KG5hbWUpKSB7CkBA
IC02MjYsNyArNjI2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpjYWxsYmFja0dldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWQKICAgICBKU09iamVjdFJl
ZiB0aGlzUmVmID0gdG9SZWYodGhpc09iaik7CiAgICAgUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBw
cm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2Jq
LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsK
ICAgICAgICAgICAgIGlmIChKU09iamVjdEdldFByb3BlcnR5Q2FsbGJhY2sgZ2V0UHJvcGVydHkg
PSBqc0NsYXNzLT5nZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlO
YW1lUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDI3YmM0YzE3ZjNk
ZmVlYjYxZDI1MjMyM2ZkODc4YzQ0NzgwZjc0YzUuLmU5ZjI1MTljYzMxMjFmYmUwYmEzODRkZDg3
MTVkOWFkNDBhNDVmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUy
LDYgKzUyLDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9TY3Jp
cHRPYmplY3QuY3BwCiAgICAgYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCiAKKyAgICBidWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCisKICAgICBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Q
cm9maWxlLmNwcAogICAgIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9C
eXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC04MTUsNiArODE3LDE0IEBAIGFkZF9jdXN0b21fY29t
bWFuZCgKICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENvcmVf
SU5TUEVDVE9SX1NDUklQVFNfRElSfS9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5ICR7REVSSVZF
RF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlMuanNvbiAtLW91dHB1dF9o
X2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIgLS1vdXRwdXRfY3Bw
X2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIgLS1vdXRwdXRfanNf
ZGlyICIke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9IiAtLW91dHB1dF90eXBl
IEphdmFTY3JpcHQgLS13cml0ZV9hbHdheXMgJiYgbWtkaXIgLXAgJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IgJiYgY3AgJHtERVJJVkVEX1NPVVJDRVNfSkFW
QVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oICR7REVSSVZF
RF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNo
ZXJzLmggJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU1R5
cGVCdWlsZGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVj
dG9yCiAgICAgVkVSQkFUSU0pCiAKKyAgICAjIEpTQ0J1aWx0aW5zCithZGRfY3VzdG9tX2NvbW1h
bmQoCisgICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlND
QnVpbHRpbnMuY3BwICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVp
bHRpbnMuaAorICAgIE1BSU5fREVQRU5ERU5DWSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0v
Z2VuZXJhdGUtanMtYnVpbHRpbnMKKyAgICBERVBFTkRTICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0Vf
RElSfS9idWlsdGlucy8qLmpzCisgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NN
QUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMgSlNDQnVpbHRpbnMu
aCBKU0NCdWlsdGlucy5jcHAKKyAgICBWRVJCQVRJTSkKKwogbGlzdChBUFBFTkQgSmF2YVNjcmlw
dENvcmVfU09VUkNFUwogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0v
SW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwCiAgICAgJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDExNTZlOTdmZDg4
NjI1NTdjOWNmOGQzYjY4YmY0ZDAzYzNlOGJhOGYuLjI2NmFhNWYwODE0YjcyMGZlYjU2YjdkNDFj
ZjE3M2M1MGM1YTRiMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCkBAIC01Nyw2ICs1Nyw3IEBAIGFsbCA6IFwKICAgICBSZWdFeHBPYmplY3QubHV0LmggXAog
ICAgIFN0cmluZ0NvbnN0cnVjdG9yLmx1dC5oIFwKICAgICB1ZGlzODZfaXRhYi5oIFwKKyAgICBK
U0NCdWlsdGlucyBcCiAjCiAKICMgbG9va3VwIHRhYmxlcyBmb3IgY2xhc3NlcwpAQCAtNzksNiAr
ODAsMTQgQEAgS2V5d29yZExvb2t1cC5oOiBLZXl3b3JkTG9va3VwR2VuZXJhdG9yLnB5IEtleXdv
cmRzLnRhYmxlCiB1ZGlzODZfaXRhYi5oOiAkKEphdmFTY3JpcHRDb3JlKS9kaXNhc3NlbWJsZXIv
dWRpczg2L2l0YWIucHkgJChKYXZhU2NyaXB0Q29yZSkvZGlzYXNzZW1ibGVyL3VkaXM4Ni9vcHRh
YmxlLnhtbAogCShQWVRIT05QQVRIPSQoSmF2YVNjcmlwdENvcmUpL2Rpc2Fzc2VtYmxlci91ZGlz
ODYgcHl0aG9uICQoSmF2YVNjcmlwdENvcmUpL2Rpc2Fzc2VtYmxlci91ZGlzODYvaXRhYi5weSAk
KEphdmFTY3JpcHRDb3JlKS9kaXNhc3NlbWJsZXIvdWRpczg2L29wdGFibGUueG1sIHx8IGV4aXQg
MSkKIAorIyBidWlsdGluIGZ1bmN0aW9ucworLlBIT05ZOiBKU0NCdWlsdGlucworCitKU0NCdWls
dGluczogSlNDQnVpbHRpbnMuaCBKU0NCdWlsdGlucy5jcHAKK0pTQ0J1aWx0aW5zLmg6ICQoSmF2
YVNjcmlwdENvcmUpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0
aW5zLyouanMKKwlweXRob24gJF4gJEAKKworSlNDQnVpbHRpbnMuY3BwOiBKU0NCdWlsdGlucy5o
CiAKICMgSW5zcGVjdG9yIGludGVyZmFjZXMKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQppbmRleCBjZGI1NDI2YjA2YjUyYTk4MjU2ZWU5MDU4YmJhOGYxMWVlYTY5
ZWUwLi5hZmU5NjcyYjViMWVlOTI3MTFiZWRkNDc1ZTlhMTI4MjAzYzgxMzY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTAyLDYgKzEwMiw4IEBAIGph
dmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5k
aW5ncy9TY3JpcHRPYmplY3QuaCBcCiAgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdz
L1NjcmlwdFZhbHVlLmNwcCBcCiAgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Nj
cmlwdFZhbHVlLmggXAorICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
RXhlY3V0YWJsZXMuY3BwIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbkV4ZWN1dGFibGVzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eUFsbG9jYXRpb25Qcm9maWxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FycmF5UHJvZmlsZS5jcHAgXApAQCAtMTI0MSw3ICsxMjQzLDkgQEAgamF2YXNjcmlwdGNv
cmVfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9y
SlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmggXAogCURlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmNwcCBcCi0JRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaAorCURlcml2ZWRTb3Vy
Y2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmggXAorCURlcml2ZWRT
b3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvSlNDQnVpbHRpbnMuaAogCiBsbGludF9ub3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDVlZGVmZGJlODU1Zjk2
YTYyNjhkODU3M2JlYzFkMGMzZDg1OGFhNWMuLmExMmRiMTgzNDg2ZGZiYmNhODNmM2E3OGU5Y2Y5
ODYzMWIyNjUzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAt
MzA5LDYgKzMwOSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3Jp
cHRGdW5jdGlvbkNhbGwuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGlu
Z3NcU2NyaXB0T2JqZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRp
bmdzXFNjcmlwdFZhbHVlLmNwcCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ1aWx0
aW5zXEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5UHJvZmlsZS5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeXRlY29kZUJhc2ljQmxvY2suY3BwIiAvPgpAQCAtNzIx
LDYgKzcyMiw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTRnJvbnRlbmRE
aXNwYXRjaGVycy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwIiAvPgorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmNwcCIgLz4K
ICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcQXJyYXlDb25zdHJ1Y3Rvci5sdXQuaCIgLz4KQEAgLTc1
MCw2ICs3NTIsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVp
bGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXFJlZ0V4cE9iamVjdC5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2pl
Y3ROYW1lKVxEZXJpdmVkU291cmNlc1xSZWdFeHBQcm90b3R5cGUubHV0LmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcU3RyaW5nQ29uc3RydWN0
b3IubHV0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcSlNDQnVpbHRpbnMuaCIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcQVBJQ2FsbGJhY2tGdW5jdGlvbi5oIiAvPgpA
QCAtNzk4LDYgKzgwMSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xT
Y3JpcHRGdW5jdGlvbkNhbGwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRp
bmdzXFNjcmlwdE9iamVjdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGlu
Z3NcU2NyaXB0VmFsdWUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5z
XEJ1aWx0aW5FeGVjdXRhYmxlcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0
ZWNvZGVcQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cYnl0ZWNvZGVcQXJyYXlQcm9maWxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxieXRlY29kZVxCeVZhbEluZm8uaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmls
dGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA4N2UxMmE0NzE1OGJiNjIyNGQ0OWZkNjIy
OTc4YzRhOWM0NDM1YTY1Li44NjljMWY1ODliY2I2ODZlYjljZjIwYzA5NmJlMWI4M2E1NTFlMjRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJz
CkBAIC03LDYgKzcsOSBAQAogICAgIDxGaWx0ZXIgSW5jbHVkZT0iYmluZGluZ3MiPgogICAgICAg
PFVuaXF1ZUlkZW50aWZpZXI+ezBiYWNlMTIzLTQ1ODItZWViYy05MzE0LTc4MTliMzc2YzE5OH08
L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJi
dWlsdGlucyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57M2I5ZDcyYTUtMTM1Yi00M2IzLWE1
MjQtYzZkMmI5ZDI5ZDM1fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KICAgICA8
RmlsdGVyIEluY2x1ZGU9ImJ5dGVjb2RlIj4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns3NjYw
ODhhMC0xMjE2LTQ4NTQtYWE0My01NjBjNWUyODM2Njh9PC9VbmlxdWVJZGVudGlmaWVyPgogICAg
IDwvRmlsdGVyPgpAQCAtMTA4LDYgKzExMSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
Llxhc3NlbWJsZXJcTWFjcm9Bc3NlbWJsZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVy
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxi
dWlsdGluc1xCdWlsdGluRXhlY3V0YWJsZXMuY3BwIj4KKyAgICAgIDxGaWx0ZXI+YnVpbHRpbnM8
L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5
dGVjb2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNv
ZGU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTEzMjksNiArMTMzNSw5IEBACiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNU
eXBlQnVpbGRlcnMuY3BwIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+
CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuY3BwIj4KKyAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3Vy
Y2VzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdy
b3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEFQSUNhbGxiYWNrRnVuY3Rpb24u
aCI+CkBAIC0xNDU0LDYgKzE0NjMsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNz
ZW1ibGVyXFg4NkFzc2VtYmxlci5oIj4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxidWlsdGluc1xC
dWlsdGluRXhlY3V0YWJsZXMuaCI+CisgICAgICA8RmlsdGVyPmJ1aWx0aW5zPC9GaWx0ZXI+Cisg
ICAgPC9DbENvbXBpbGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJh
eUFsbG9jYXRpb25Qcm9maWxlLmgiPgogICAgICAgPEZpbHRlcj5ieXRlY29kZTwvRmlsdGVyPgog
ICAgIDwvQ2xJbmNsdWRlPgpAQCAtMjU1MCw2ICsyNTYyLDkgQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xBcnJheVByb3RvdHlwZS5sdXQuaCI+CiAg
ICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0
aW5zLmgiPgorICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KKyAgICA8L0Ns
SW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVk0uaCI+CiAgICAg
ICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggMjdlODc2NzQwYTk2NGIwMjg5ODRlZDY3ODE2MTgyMGE1ZGNm
NzdjNC4uOTExNTczYWIxN2QzMzk3NGFhN2M5YTAxMWRiMjAwYjA5YWY3OGJmYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkyMiw3ICs5MjIsNiBAQAogCQlBNTAzRkExOTE4OEUw
RkIwMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExMzE4OEUwRkFGMDAxMTBGMTQgLyog
SmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi87IH07CiAJCUE1MDNGQTFBMTg4RTBGQjAwMDExMEYx
NCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNDE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlwdENh
bGxGcmFtZS5oICovOyB9OwogCQlBNTAzRkExQjE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1MDNGQTE1MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUu
Y3BwICovOyB9OwotCQlBNTAzRkExQzE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2Fs
bEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NTAzRkExNjE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmggKi87IH07
CiAJCUE1MDNGQTFEMTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90
b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTUwM0ZBMTcxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlw
ZS5jcHAgKi87IH07CiAJCUE1MDNGQTFFMTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRD
YWxsRnJhbWVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1MDNGQTE4MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJh
bWVQcm90b3R5cGUuaCAqLzsgfTsKIAkJQTUwM0ZBMjExODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlw
dEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1MDNGQTFGMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRCcmVha3BvaW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwMjQsNiArMTAy
Myw3IEBACiAJCUE3MEIwODMyMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwQjA4MzAx
N0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5jcHAgKi87IH07CiAJCUE3MEIwODMz
MTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MEIwODMxMTdBMEI3OUIwMERBRjE0QiAvKiBE
RkdCaW5hcnlTd2l0Y2guaCAqLzsgfTsKIAkJQTcxMjM2RTUxMTk1RjMzQzAwQkQyMTc0IC8qIEpJ
VE9wY29kZXMzMl82NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNzEyMzZFNDExOTVGMzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0LmNwcCAq
LzsgfTsKKwkJQTcxREE4MEYxODgwREJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxREE4MEUxODgw
REJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3MjAyOEI2MTc5NzYwMUUwMDk4MDI4QyAvKiBK
U0NUZXN0UnVubmVyVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTcyMDI4QjQxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGls
cy5jcHAgKi87IH07CiAJCUE3MjAyOEI4MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVy
VXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
MjAyOEI1MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzIwMjhCQTE3OTc2MDNE
MDA5ODAyOEMgLyogSlNGdW5jdGlvbklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjAyOEI5MTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0
aW9uSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0xMTUwLDYgKzExNTAsMTAgQEAKIAkJQTdDQTNBRTgxN0RBNDFBRTAwNjUzOEFGIC8q
IEpTV2Vha01hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTdDQTNBRTIxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5oICovOyB9OwogCQlBN0NB
M0FFQjE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDQTNBRTkxN0RBNTE2ODAwNjUzOEFGIC8q
IFdlYWtNYXBEYXRhLmNwcCAqLzsgfTsKIAkJQTdDQTNBRUMxN0RBNTE2ODAwNjUzOEFGIC8qIFdl
YWtNYXBEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBN0NBM0FFQTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuaCAqLzsgfTsKKwkJQTdE
ODAxQTQxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4MDFBMTE4ODBENjZFMDAy
NkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCAqLzsgfTsKKwkJQTdEODAxQTUxODgwRDY2
RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTIxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0
aW5FeGVjdXRhYmxlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUE3RDgwMUE4MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4MDFBNjE4ODBE
NkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwICovOyB9OworCQlBN0Q4MDFBOTE4ODBENkE4
MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3RDgwMUE3MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3RDg5
Q0YyMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDg5Q0UzMTdBMEI4Q0MwMDc3M0FEOCAv
KiBERkdCYXNpY0Jsb2NrLmNwcCAqLzsgfTsKIAkJQTdEODlDRjMxN0EwQjhDQzAwNzczQUQ4IC8q
IERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3RDg5Q0U0MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2Vy
dGlvblNldC5jcHAgKi87IH07CiAJCUE3RDg5Q0Y0MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9j
a0luc2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTdEODlDRTUxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI0NjIs
NiArMjQ2Niw4IEBACiAJCUE3MTIzNkU0MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJf
NjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUT3Bjb2RlczMy
XzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxOEY2MUExMTc1NEEyMTAw
MjQ2NUE3IC8qIFJlZ0V4cEppdFRhYmxlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZWdFeHBKaXRUYWJsZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcx
OEY4MjExMTc4RUI0QjAwMjQ2NUE3IC8qIGNyZWF0ZV9yZWdleF90YWJsZXMgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsg
ZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IGNyZWF0ZV9yZWdleF90YWJsZXM7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE3MURBODBEMTg4MEQ3MUYwMEQxRjI5OSAvKiBnZW5lcmF0ZS1q
cy1idWlsdGlucyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9ICJnZW5lcmF0
ZS1qcy1idWlsdGlucyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MURBODBFMTg4
MERCQUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNTdHJpbmdJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE3MjAyOEI0MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDVGVzdFJ1bm5lclV0aWxzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyMDI4QjUxNzk3NjAxRTAwOTgwMjhD
IC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0NUZXN0UnVubmVyVXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcy
MDI4QjkxNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRnVuY3Rpb25JbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yNTkwLDYgKzI1OTYsMTEgQEAKIAkJQTdDQTNBRTIxN0RBNDFBRTAw
NjUzOEFGIC8qIEpTV2Vha01hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1dlYWtNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdDQTNBRTkxN0RBNTE2
ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYWtNYXBEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTdDQTNBRUExN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtNYXBEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUE3RDgwMUEwMTg4MEQ2NkUwMDI2QzM5QiAvKiBBcnJheS5wcm90b3R5cGUuanMgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBBcnJheS5wcm90b3R5cGUuanM7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAv
KiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTdEODAxQTIxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdWlsdGluRXhlY3V0YWJsZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTYxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1
aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ0J1aWx0
aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTcxODgwRDZBODAw
MjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTQ0J1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RDg5Q0UzMTdB
MEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IERGR0Jhc2ljQmxvY2suY3BwOyBwYXRoID0gZGZnL0RGR0Jhc2ljQmxv
Y2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0Q4OUNFNDE3QTBCOENDMDA3
NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwOyBwYXRoID0gZGZnL0RGR0Js
b2NrSW5zZXJ0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdEODlD
RTUxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBkZmcv
REZHQmxvY2tJbnNlcnRpb25TZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5
MjYsNiArMjkzNyw3IEBACiAJCQkJODYwNEY0RjIxNDNBNkM0NDAwQjI5NUY1IC8qIENoYW5nZUxv
ZyAqLywKIAkJCQlGNjkyQTg1NDAyNTU1OTdEMDFGRjYwRjcgLyogY3JlYXRlX2hhc2hfdGFibGUg
Ki8sCiAJCQkJQTcxOEY4MjExMTc4RUI0QjAwMjQ2NUE3IC8qIGNyZWF0ZV9yZWdleF90YWJsZXMg
Ki8sCisJCQkJQTcxREE4MEQxODgwRDcxRjAwRDFGMjk5IC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5z
ICovLAogCQkJCTQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4NCAvKiBqc2MuY3BwICovLAogCQkJCUY2
OEVCQjhDMDI1NUQ0QzYwMUZGNjBGNyAvKiBjb25maWcuaCAqLywKIAkJCQlGNUMyOTBFNjAyODRG
OThFMDE4NjM1Q0EgLyogSmF2YVNjcmlwdENvcmVQcmVmaXguaCAqLywKQEAgLTI5MzQsNiArMjk0
Niw3IEBACiAJCQkJMTQzMkVCRDcwQTM0Q0FENDAwNzE3QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4
Q0IxMjBFRDEyQjRFMDAxRDY0OUYgLyogYXNzZW1ibGVyICovLAogCQkJCUE1NENGMkVBMTg0RUE3
MzkwMDIzN0YxOSAvKiBiaW5kaW5ncyAqLywKKwkJCQlBN0Q4MDE5RjE4ODBENjZFMDAyNkMzOUIg
LyogYnVpbHRpbnMgKi8sCiAJCQkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2Rl
ICovLAogCQkJCTdFMzlEODFEMEVDMzhFRkEwMDNBRjExQSAvKiBieXRlY29tcGlsZXIgKi8sCiAJ
CQkJMUM5MDUxM0UwQkE5RTg4MzAwODFFOUQwIC8qIENvbmZpZ3VyYXRpb25zICovLApAQCAtMzUw
OSw2ICszNTIyLDggQEAKIAkJNjUwRkRGOEQwOUQwRkNBNzAwNzY5RTU0IC8qIERlcml2ZWQgU291
cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQTdE
ODAxQTYxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCAqLywKKwkJCQlBN0Q4MDFB
NzE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCAqLywKIAkJCQlCQzE4QzUyMzBFMTZG
QzhBMDBCMzQ0NjAgLyogQXJyYXlQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJQkNEMjAzRTcwRTE3
MThGNDAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJQTUxM0U1QzYxODVG
OTQzNjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggKi8sCkBAIC0zODExLDYgKzM4
MjYsNyBAQAogCQkJCUE3OTBERDZBMTgyRjQ5OTcwMDU4ODgwNyAvKiBKU1NldEl0ZXJhdG9yLmgg
Ki8sCiAJCQkJQkMwMkU5QjYwRTE4NDJGQTAwMEY5Mjk3IC8qIEpTU3RyaW5nLmNwcCAqLywKIAkJ
CQlGNjkyQTg2MjAyNTU1OTdEMDFGRjYwRjcgLyogSlNTdHJpbmcuaCAqLywKKwkJCQlBNzFEQTgw
RTE4ODBEQkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxpbmVzLmggKi8sCiAJCQkJODZFODU1Mzgx
MTFCOTk2ODAwMUFGNTFFIC8qIEpTU3RyaW5nQnVpbGRlci5oICovLAogCQkJCTI2MDBCNUE0MTUy
QkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5jcHAgKi8sCiAJCQkJMjYwMEI1QTUxNTJC
QUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVyLmggKi8sCkBAIC00NTYxLDYgKzQ1NzcsMTYg
QEAKIAkJCXBhdGggPSByZW1vdGU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9Owor
CQlBN0Q4MDE5RjE4ODBENjZFMDAyNkMzOUIgLyogYnVpbHRpbnMgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUE3RDgwMUEwMTg4MEQ2NkUwMDI2QzM5QiAv
KiBBcnJheS5wcm90b3R5cGUuanMgKi8sCisJCQkJQTdEODAxQTExODgwRDY2RTAwMjZDMzlCIC8q
IEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi8sCisJCQkJQTdEODAxQTIxODgwRDY2RTAwMjZDMzlC
IC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oICovLAorCQkJKTsKKwkJCXBhdGggPSBidWlsdGluczsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAvKiBFbmQgUEJYR3JvdXAgc2VjdGlv
biAqLwogCiAvKiBCZWdpbiBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC00NjA2
LDExICs0NjMyLDExIEBACiAJCQkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNz
ZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUNFRUUxNTE4N0YzQkFEMDBFNTVDOTkgLyog
SW5zcGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1QzAyODVEMTcxNzk2NjgwMDM1
MUUzNSAvKiBBUk12N0RPcGNvZGUuaCBpbiBIZWFkZXJzICovLAotIAkJCQkyQTY4Mjk1QjE4NzVG
ODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5oIGluIEhlYWRlcnMgKi8sCi0gICAgICAg
ICAgICAgICAgMkE0RUM5MEMxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMkE2ODI5NUIxODc1RjgwNTAwQjZDM0UyIC8qIENvcHlXcml0
ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTJBNEVDOTBDMTg2MEQ2QzIwMDk0Rjc4MiAv
KiBXcml0ZUJhcnJpZXJCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNTkzMkE4MTgzQzVB
MjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MzI0Mzkz
MTg1Njk3MDkwMDJFRDY5MiAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weSBpbiBI
ZWFkZXJzICovLAotIAkJCQlBNTMyNDM5MjE4NTY5NzA5MDAyRUQ2OTIgLyogQ29kZUdlbmVyYXRv
ckluc3BlY3Rvci5weSBpbiBIZWFkZXJzICovLAorCQkJCUE1MzI0MzkyMTg1Njk3MDkwMDJFRDY5
MiAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1
NEYxN0VFMjc0OTAwQUJCMjE3IC8qIFRlbXBSZWdpc3RlclNldC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTUwRTRCNjQxODgwOURENTAwNjhBNDZEIC8qIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUI1OEMxNTE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JI
YW5kbGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLywKQEAgLTQ2MjIsNyArNDY0OCw3IEBACiAJCQkJ
MEY4MzM1QjgxNjM5QzFFQTAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1ODQwRTI5MTg3Q0E1RTYwMDg0M0IxMCAvKiBpbmxpbmUtYW5kLW1p
bmlmeS1zdHlsZXNoZWV0cy1hbmQtc2NyaXB0cy5weSBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQw
RTJCMTg3Q0E3NUIwMDg0M0IxMCAvKiBqc21pbi5weSBpbiBIZWFkZXJzICovLAotIAkJCQlBNTMy
NDM5ODE4NTZBNDg5MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlMuanNvbiBpbiBIZWFkZXJzICovLAor
CQkJCUE1MzI0Mzk4MTg1NkE0ODkwMDJFRDY5MiAvKiBJbnNwZWN0b3JKUy5qc29uIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTU4NDBFMkExODdDQTc1OTAwODQzQjEwIC8qIHh4ZC5wbCBpbiBIZWFkZXJz
ICovLAogCQkJCUZFQTA4NjIwMTgyQjdBMDQwMEY2RDg1MSAvKiBCcmVha3BvaW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBN0E4QUYzNTE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuaCBp
biBIZWFkZXJzICovLApAQCAtNDczMyw3ICs0NzU5LDcgQEAKIAkJCQlBMUEwMDlDMDE4MzFBMjJE
MDBDRjg3MTEgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZF
QzlEQzUxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVDb2RlUGFyc2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjQ4NTMyODE4N0RGREVDMDA4M0I2ODcgLyogRlRMQXZhaWxhYmxlUmVjb3Zlcnku
aCBpbiBIZWFkZXJzICovLAotICAgICAgICAgICAgICAgIEE1OTNDRjg3MTg0MDM4Q0EwMEJGQ0Uy
NyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTkzQ0Y4
NzE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYyNTZDMzYxNjI3QjBBRDAwN0YyNzgzIC8qIERGR0NhbGxBcnJheUFsbG9jYXRv
clNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdCMjk0QjE0QzNDRDJG
MDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZGQzk1
ODE0RUY5MEEyMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtNDg3
Miw2ICs0ODk4LDcgQEAKIAkJCQkwRkVBMEExRDE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJh
Y3RIZWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEExRjE3MDhCMDA3MDBCQjcyMkMgLyog
RlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU5NDU1OTMx
ODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQTdEODAxQTkxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkVBMEEwQTE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ2FwYWJpbGl0aWVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyQTE4N0RGREVDMDA4M0I2ODcgLyogRlRMUmVj
b3ZlcnlPcGNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTIzMTcwOTYwNjkwMEJCNzIy
QyAvKiBGVExDb21tb25WYWx1ZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNDk0Niw2ICs0OTczLDcg
QEAKIAkJCQlCQzE4QzQwRjBFMTZGNUNEMDBCMzQ0NjAgLyogSWRlbnRpZmllci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQzI1RjhCQ0UxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTkxNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4
aW5nSGVhZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0Q4MDFBNTE4ODBENjZFMDAyNkMzOUIg
LyogQnVpbHRpbkV4ZWN1dGFibGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5QTE1RUQ4
RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkI3RjM5QjE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdUeXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkNFRkFCMDE4MDVDQTZEMDA0NzJDRTQgLyogSW5pdGlhbGl6ZUxMVk0uaCBpbiBI
ZWFkZXJzICovLApAQCAtNTIxOCw2ICs1MjQ2LDcgQEAKIAkJCQlBNTMyNDM4ODE4NTY4MzM1MDAy
RUQ2OTIgLyogSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMThDNDU2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBQcm90ZWN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxNDc0QzMzQjE2QUEyRDk1MDA2MkYwMUQgLyogUHJvdG90eXBlTWFwLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlBNzFEQTgwRjE4ODBEQkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMzJBNDE0Q0E3REQ5MDA4NUYzQzYgLyogUHV0QnlJZFN0
YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQ0Q0QzIxNUYxQTYwNzAwMzJGMUMwIC8qIFB1
dERpcmVjdEluZGV4TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MwMDhDRTcxODc2MzFCNjAw
OTU1QzI0IC8qIE1pY3JvdGFzay5oIGluIEhlYWRlcnMgKi8sCkBAIC01ODM2LDYgKzU4NjUsNyBA
QAogCQkJCUE3RDg5Q0YyMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE3MEIwODMyMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0
Y2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlDRjMxN0EwQjhDQzAwNzczQUQ4IC8qIERG
R0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3RDgwMUE0MTg4MEQ2
NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
ODZFQzlEQzQxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVDb2RlUGFyc2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRDgyRTIxMTQxNzJDRTMwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGRkM5NTcxNEVGOTBBMDAwQzcyNTMyIC8qIERGR0NG
QVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTg1Miw2ICs1ODgyLDcgQEAKIAkJCQkwRkZG
Qzk1OTE0RUY5MEE2MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEYyRkM3NzIxNkUxMkY3MTAwMzhEOTc2IC8qIERGR0RDRVBoYXNlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGOEYyQjk5MTcyRjA0RkYwMDdEQkRBNSAvKiBERkdEZXNpcmVkSWRlbnRpZmll
cnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTdEODAxQTgxODgwRDZBODAwMjZDMzlCIC8qIEpT
Q0J1aWx0aW5zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3M0UxMzMwMTc5NjI0Q0QwMEU0REVB
OCAvKiBERkdEZXNpcmVkU3RydWN0dXJlQ2hhaW5zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMy
QzBGN0NEMTdCQkZDNUIwMDQ2NEZFNCAvKiBERkdEZXNpcmVkVHJhbnNpdGlvbnMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZFODUzNEIxNzIzQ0RBNTAwQjYxOEY1IC8qIERGR0Rlc2lyZWRXYXRj
aHBvaW50cy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU5NzYsNyArNjAwNyw3IEBACiAJCQkJMEY2
QjFDQzUxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVud2luZEluZm8uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEY5RDMzOUExODAzQURCNzAwNzNDMkJDIC8qIEZUTFN0YWNrTWFwcy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkVBMEExNjE3MDZCQjkwMDBCQjcyMkMgLyogRlRMU3RhdGUuY3BwIGlu
IFNvdXJjZXMgKi8sCi0gCQkJCTdDMDA4Q0QyMTg2RjhBOTMwMDk1NUMyNCAvKiBKU1Byb21pc2VG
dW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0MwMDhDRDIxODZGOEE5MzAwOTU1QzI0
IC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNCNTE4
NUZDOUU5MDA4NDVEOTcgLyogRlRMSlNDYWxsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1
QkUxMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTU5M0NGN0MxODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0FycmF5LnByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9B
cnJheS5wcm90b3R5cGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ViNDJmNWNjNDMzZjE2MzYzNDNiZmM5ODJh
YTJhYWZiMzM2ZTk0OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9uIGV2ZXJ5KGNhbGxiYWNr
IC8qLCB0aGlzQXJnICovKSB7CisgICAgInVzZSBzdHJpY3QiOworICAgIGlmICh0aGlzID09PSBu
dWxsKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5
IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIik7CisgICAgCisgICAgaWYgKHRoaXMg
PT09IHVuZGVmaW5lZCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3Rv
dHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkIik7CisgICAg
CisgICAgdmFyIGFycmF5ID0gQE9iamVjdCh0aGlzKTsKKyAgICB2YXIgbGVuZ3RoID0gYXJyYXku
bGVuZ3RoID4+PiAwOworICAgIAorICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICJmdW5jdGlv
biIpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZXZlcnkg
Y2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7CisKKyAgICB2YXIgdGhpc0FyZyA9IGFyZ3Vt
ZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkOworICAgIAorICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKCEoaSBpbiBhcnJh
eSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFjYWxsYmFjay5AY2FsbCh0
aGlzQXJnLCBhcnJheVtpXSwgaSwgYXJyYXkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ODhlNTgyMzM5ZmY3NWE5YTc3ZjgzNDNjY2NjMmZiZjY0MGVhOWZmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAK
QEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxl
cy5oIgorCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlBhcnNlci5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworQnVpbHRpbkV4ZWN1dGFibGVzOjpCdWlsdGluRXhlY3V0YWJs
ZXMoVk0mIHZtKQorICAgIDogbV92bSh2bSkKKyNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX1NP
VVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSAsIG1fIyNuYW1lIyNTb3Vy
Y2UobWFrZVNvdXJjZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChzXyMjbmFtZSwgbGVu
Z3RoKSwgU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoIjxidWlsdGluPiIpKSkKKyAgICBK
U0NfRk9SRUFDSF9CVUlMVElOKElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1
bmRlZiBFWFBPU0VfQlVJTFRJTl9TVFJJTkdTCit7Cit9CisKK1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSkKK3sKKyAgICBKU1Rl
eHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lOworICAgIFBhcnNlckVycm9yIGVy
cm9yOworICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9IHBhcnNlPFByb2dyYW1Ob2Rl
PigmbV92bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIEpTUGFyc2VCdWlsdGluLCBKU1BhcnNl
UHJvZ3JhbUNvZGUsIGVycm9yLCAmcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CisKKyAgICBp
ZiAoIXByb2dyYW0pIHsKKyAgICAgICAgZGF0YUxvZygiRmF0YWwgZXJyb3IgY29tcGlsaW5nIGJ1
aWx0aW4gZnVuY3Rpb24gJyIsIG5hbWUuc3RyaW5nKCksICInOiAiLCBlcnJvci5tX21lc3NhZ2Up
OworICAgICAgICBDUkFTSCgpOworICAgIH0KKworICAgIFN0YXRlbWVudE5vZGUqIGV4cHJTdGF0
ZW1lbnQgPSBwcm9ncmFtLT5zaW5nbGVTdGF0ZW1lbnQoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChl
eHByU3RhdGVtZW50KTsKKyAgICBSRUxFQVNFX0FTU0VSVChleHByU3RhdGVtZW50LT5pc0V4cHJT
dGF0ZW1lbnQoKSk7CisgICAgRXhwcmVzc2lvbk5vZGUqIGZ1bmNFeHByID0gc3RhdGljX2Nhc3Q8
RXhwclN0YXRlbWVudE5vZGUqPihleHByU3RhdGVtZW50KS0+ZXhwcigpOworICAgIFJFTEVBU0Vf
QVNTRVJUKGZ1bmNFeHByKTsKKyAgICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwci0+aXNGdW5jRXhw
ck5vZGUoKSk7CisgICAgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSA9IHN0YXRpY19jYXN0PEZ1bmNF
eHByTm9kZSo+KGZ1bmNFeHByKS0+Ym9keSgpOworICAgIFJFTEVBU0VfQVNTRVJUKCFwcm9ncmFt
LT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKKyAgICAKKyAgICBib2R5LT5zZXRFbmRQb3NpdGlv
bihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5KTsK
KyAgICBSRUxFQVNFX0FTU0VSVChib2R5LT5pZGVudCgpLmlzTnVsbCgpKTsKKyAgICAKKyAgICAv
LyBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgYW4gaW5wdXQgc3RyaW5nIHRoYXQgd291bGQgcmVzdWx0
IGluIGEgc2luZ2xlIGFub255bW91cyBmdW5jdGlvbiBleHByZXNzaW9uLgorICAgIGJvZHktPnNl
dEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOworICAgIFJFTEVBU0VfQVNT
RVJUKGJvZHkpOworICAgIGZvciAoY29uc3QgYXV0byYgY2xvc2VkVmFyaWFibGUgOiBwcm9ncmFt
LT5jbG9zZWRWYXJpYWJsZXMoKSkgeworICAgICAgICBpZiAoY2xvc2VkVmFyaWFibGUgPT0gbV92
bS5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMuaW1wbCgpKQorICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgCisgICAgICAgIGlmIChjbG9zZWRWYXJpYWJsZSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMt
PnVuZGVmaW5lZEtleXdvcmQuaW1wbCgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGNsb3NlZFZhcmlhYmxlLT5pc0VtcHR5VW5pcXVlKCkpOworICAgIH0K
KyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmbV92bSwgc291cmNlLCBib2R5LCB0cnVl
LCBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbik7CisgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5tX25h
bWVWYWx1ZS5zZXQobV92bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBqc1N0cmluZygmbV92bSwgbmFt
ZS5zdHJpbmcoKSkpOworICAgIHJldHVybiBmdW5jdGlvbkV4ZWN1dGFibGU7Cit9CisKKyNkZWZp
bmUgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgp
IFwKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6Om5hbWUj
I0V4ZWN1dGFibGUoKSBcCit7XAorICAgIGlmICghbV8jI25hbWUjI0V4ZWN1dGFibGUpXAorICAg
ICAgICBtXyMjbmFtZSMjRXhlY3V0YWJsZSA9IGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKG1fIyNu
YW1lIyNTb3VyY2UsIG1fdm0ucHJvcGVydHlOYW1lcy0+ZnVuY3Rpb25OYW1lKTtcCisgICAgcmV0
dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1wKK30KK0pTQ19GT1JFQUNIX0JVSUxUSU4o
REVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgRVhQT1NFX0JVSUxUSU5fU09VUkNF
UworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDlhMTllMjYxNTA3OTRhNjY5ZWM5OGUzOTliZjY3Zjdm
NzEwNjQxOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBCdWlsdGluRXhlY3V0YWJsZXNf
aAorI2RlZmluZSBCdWlsdGluRXhlY3V0YWJsZXNfaAorCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMu
aCIKKyNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSAiV2Vhay5oIgorI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIElkZW50aWZpZXI7CitjbGFzcyBWTTsKKworY2xhc3Mg
QnVpbHRpbkV4ZWN1dGFibGVzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxCdWls
dGluRXhlY3V0YWJsZXM+IGNyZWF0ZShWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IEJ1aWx0aW5FeGVjdXRhYmxlcyh2bSkpOworICAgIH0KKyAgICAKKyNkZWZpbmUg
RVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwK
K1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuYW1lIyNFeGVjdXRhYmxlKCk7IFwKK2NvbnN0
IFNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIHsgcmV0dXJuIG1fIyNuYW1lIyNTb3VyY2U7IH0K
KyAgICAKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVT
KQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX1NPVVJDRVMKKyAgICAKK3ByaXZhdGU6CisgICAgQnVp
bHRpbkV4ZWN1dGFibGVzKFZNJik7CisgICAgVk0mIG1fdm07CisgICAgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKGNvbnN0IFNvdXJjZUNvZGUmLCBj
b25zdCBJZGVudGlmaWVyJik7CisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVS
UyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aClcCisgICAgU291cmNlQ29kZSBtXyMjbmFtZSMj
U291cmNlOyBcCisgICAgV2VhazxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4gbV8jI25hbWUj
I0V4ZWN1dGFibGU7CisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTihERUNMQVJFX0JVSUxUSU5fU09V
UkNFX01FTUJFUlMpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCit9Owor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAppbmRleCAyNjNlYzdjYWRmNGY3OWNhODEwMjQ0MWU2MmJmMmEwNWI1ZGRjM2YyLi43NTE1
MDY1NDIzNzZkN2VkYzU5OWFhMDBmOWIxMjY4NWNkYTM1MmNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNDMsMTEgKzQzLDEzIEBACiAjaW5j
bHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRp
b24uaCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIK
ICNpbmNsdWRlICJMTEludEVudHJ5cG9pbnQuaCIKICNpbmNsdWRlICJMb3dMZXZlbEludGVycHJl
dGVyLmgiCisjaW5jbHVkZSAiTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIk9i
amVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBv
bHltb3JwaGljUHV0QnlJZExpc3QuaCIKICNpbmNsdWRlICJSZWR1Y2VXaGl0ZXNwYWNlLmgiCkBA
IC0xNTY5LDcgKzE1NzEsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxl
KiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbgogCiAgICAgc2V0Q29u
c3RhbnRSZWdpc3RlcnModW5saW5rZWRDb2RlQmxvY2stPmNvbnN0YW50UmVnaXN0ZXJzKCkpOwog
ICAgIGlmICh1bmxpbmtlZENvZGVCbG9jay0+dXNlc0dsb2JhbE9iamVjdCgpKQotICAgICAgICBt
X2NvbnN0YW50UmVnaXN0ZXJzW3VubGlua2VkQ29kZUJsb2NrLT5nbG9iYWxPYmplY3RSZWdpc3Rl
cigpLm9mZnNldCgpXS5zZXQoKm1fdm0sIG93bmVyRXhlY3V0YWJsZSwgbV9nbG9iYWxPYmplY3Qu
Z2V0KCkpOworICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW3VubGlua2VkQ29kZUJsb2NrLT5n
bG9iYWxPYmplY3RSZWdpc3RlcigpLnRvQ29uc3RhbnRJbmRleCgpXS5zZXQoKm1fdm0sIG93bmVy
RXhlY3V0YWJsZSwgbV9nbG9iYWxPYmplY3QuZ2V0KCkpOwogICAgIG1fZnVuY3Rpb25EZWNscy5y
ZXNpemVUb0ZpdCh1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCkpOwog
ICAgIGZvciAoc2l6ZV90IGNvdW50ID0gdW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rp
b25EZWNscygpLCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSA9IHVubGlua2VkQ29kZUJsb2NrLT5m
dW5jdGlvbkRlY2woaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgKaW5kZXggNjhiYzAzNzlmNTc0NGM5YThmNzQzMWRiNjRmOGFiNTRlNmUxMDUzZi4uNDk5NWM1
MmNmOGIyYjFiNGQ2MjgwNDUzZWVkMjdjNzc0YTQ5NTU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtNTYsNyArNTYsNiBAQAogI2luY2x1ZGUgIkhh
bmRsZXJJbmZvLmgiCiAjaW5jbHVkZSAiT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaCIKICNpbmNs
dWRlICJPcHRpb25zLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlB1dFBy
b3BlcnR5U2xvdC5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiSklUQ29k
ZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2ZpbGVk
Q29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAKaW5k
ZXggOTg2ZTAzZDBjYmE3MTg1YjM5Y2VlMDIzZjRhYjZiYzliOGNjYjZlNC4uNmYyZDVlYmExY2E0
NWRkZWIxZGY2NWZkMDUxMjMzZTVmMTM4YmUwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tK
ZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVkZSAiREZHRXhpdFByb2Zp
bGUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAKaW5kZXggMWRmYjVhYzZhZDkwOTNmOGY4MTEwMWVmN2YyZTYxMjMxMWFjMTkzOS4u
NDMzOTBkOTY1ZmM1MDM0MDE2ZjdiZmZmMjNlNjhiYjFlMDU0NTUyYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC00
OSw5ICs0OSw5IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s6OnNf
aW5mbyA9IHsgIlVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayIsCiBjb25zdCBDbGFzc0luZm8gVW5s
aW5rZWRFdmFsQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZEV2YWxDb2RlQmxvY2siLCAm
QmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlua2VkRXZhbENvZGVC
bG9jaykgfTsKIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpzX2lu
Zm8gPSB7ICJVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKSB9OwogCi1zdGF0
aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhW
TSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgRGVidWdnZXJNb2Rl
IGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVy
cm9yKQorc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlRnVuY3Rpb25D
b2RlQmxvY2soVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIERl
YnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFVubGlu
a2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yKQogewotICAg
IFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBib2R5ID0gcGFyc2U8RnVuY3Rpb25Cb2R5Tm9kZT4o
JnZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgp
LCBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpID8gSlNQYXJzZVN0cmljdCA6IEpTUGFy
c2VOb3JtYWwsIEpTUGFyc2VGdW5jdGlvbkNvZGUsIGVycm9yKTsKKyAgICBSZWZQdHI8RnVuY3Rp
b25Cb2R5Tm9kZT4gYm9keSA9IHBhcnNlPEZ1bmN0aW9uQm9keU5vZGU+KCZ2bSwgc291cmNlLCBl
eGVjdXRhYmxlLT5wYXJhbWV0ZXJzKCksIGV4ZWN1dGFibGUtPm5hbWUoKSwgZXhlY3V0YWJsZS0+
dG9TdHJpY3RuZXNzKCksIEpTUGFyc2VGdW5jdGlvbkNvZGUsIGVycm9yKTsKIAogICAgIGlmICgh
Ym9keSkgewogICAgICAgICBBU1NFUlQoZXJyb3IubV90eXBlICE9IFBhcnNlckVycm9yOjpFcnJv
ck5vbmUpOwpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
ayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhWTSYgdm0sIFVubGlua2VkRnVuYwogICAgIGJv
ZHktPmZpbmlzaFBhcnNpbmcoZXhlY3V0YWJsZS0+cGFyYW1ldGVycygpLCBleGVjdXRhYmxlLT5u
YW1lKCksIGV4ZWN1dGFibGUtPmZ1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZSgpKTsKICAgICBl
eGVjdXRhYmxlLT5yZWNvcmRQYXJzZShib2R5LT5mZWF0dXJlcygpLCBib2R5LT5oYXNDYXB0dXJl
ZFZhcmlhYmxlcygpKTsKICAgICAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1
bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUoJnZtLCBGdW5jdGlvbkNvZGUs
IEV4ZWN1dGFibGVJbmZvKGJvZHktPm5lZWRzQWN0aXZhdGlvbigpLCBib2R5LT51c2VzRXZhbCgp
LCBib2R5LT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KSk7CisgICAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5mbyhib2R5LT5uZWVk
c0FjdGl2YXRpb24oKSwgYm9keS0+dXNlc0V2YWwoKSwgYm9keS0+aXNTdHJpY3RNb2RlKCksIGtp
bmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1
bmN0aW9uKSk7CiAgICAgT3duUHRyPEJ5dGVjb2RlR2VuZXJhdG9yPiBnZW5lcmF0b3IoYWRvcHRQ
dHIobmV3IEJ5dGVjb2RlR2VuZXJhdG9yKHZtLCBib2R5LmdldCgpLCByZXN1bHQsIGRlYnVnZ2Vy
TW9kZSwgcHJvZmlsZXJNb2RlKSkpOwogICAgIGVycm9yID0gZ2VuZXJhdG9yLT5nZW5lcmF0ZSgp
OwogICAgIGJvZHktPmRlc3Ryb3lEYXRhKCk7CkBAIC04MiwxMyArODIsMTQgQEAgdW5zaWduZWQg
VW5saW5rZWRDb2RlQmxvY2s6OmFkZE9yRmluZENvbnN0YW50KEpTVmFsdWUgdikKICAgICByZXR1
cm4gYWRkQ29uc3RhbnQodik7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9t
R2xvYmFsQ29kZSkKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSwg
VW5saW5rZWRGdW5jdGlvbktpbmQga2luZCkKICAgICA6IEJhc2UoKnZtLCBzdHJ1Y3R1cmUpCiAg
ICAgLCBtX251bUNhcHR1cmVkVmFyaWFibGVzKG5vZGUtPmNhcHR1cmVkVmFyaWFibGVDb3VudCgp
KQogICAgICwgbV9mb3JjZVVzZXNBcmd1bWVudHMobm9kZS0+dXNlc0FyZ3VtZW50cygpKQogICAg
ICwgbV9pc0luU3RyaWN0Q29udGV4dChub2RlLT5pc1N0cmljdE1vZGUoKSkKICAgICAsIG1faGFz
Q2FwdHVyZWRWYXJpYWJsZXMobm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkKICAgICAsIG1f
aXNGcm9tR2xvYmFsQ29kZShpc0Zyb21HbG9iYWxDb2RlKQorICAgICwgbV9pc0J1aWx0aW5GdW5j
dGlvbihraW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uKQogICAgICwgbV9uYW1lKG5vZGUt
PmlkZW50KCkpCiAgICAgLCBtX2luZmVycmVkTmFtZShub2RlLT5pbmZlcnJlZE5hbWUoKSkKICAg
ICAsIG1fcGFyYW1ldGVycyhub2RlLT5wYXJhbWV0ZXJzKCkpCkBAIC0xNjYsNyArMTY3LDcgQEAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNv
ZGVCbG9ja0ZvcihWTSYgdm0sIGNvbnMKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9j
ayh2bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJv
ZmlsZXJNb2RlLCBlcnJvcik7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0
ID0gZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayh2bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXph
dGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBpc0J1aWx0aW5GdW5jdGlvbigp
ID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBlcnJv
cik7CiAgICAgCiAgICAgaWYgKGVycm9yLm1fdHlwZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25l
KQogICAgICAgICByZXR1cm4gMDsKQEAgLTIxMCw2ICsyMTEsNyBAQCBVbmxpbmtlZENvZGVCbG9j
azo6VW5saW5rZWRDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZVR5
cGUgY29kZQogICAgICwgbV9pc1N0cmljdE1vZGUoaW5mby5tX2lzU3RyaWN0TW9kZSkKICAgICAs
IG1faXNDb25zdHJ1Y3RvcihpbmZvLm1faXNDb25zdHJ1Y3RvcikKICAgICAsIG1faGFzQ2FwdHVy
ZWRWYXJpYWJsZXMoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8ubV9pc0J1
aWx0aW5GdW5jdGlvbikKICAgICAsIG1fZmlyc3RMaW5lKDApCiAgICAgLCBtX2xpbmVDb3VudCgw
KQogICAgICwgbV9lbmRDb2x1bW4oVUlOVF9NQVgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IGI5ZGFlMmQ1YzY5Yzc5Y2Vh
YWE4MDIzZDJhM2ExZjI2ZDQ2MDk0M2IuLmFiZjZjZjM1YjkzMDZhNGY3YTMwMWFiMGRmNzY2NmVj
NjEyZTM3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5oCkBAIC02NiwyNiArNjYsMzUgQEAgdHlwZWRlZiB1bnNpZ25lZCBVbmxp
bmtlZE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOwogdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZExM
SW50Q2FsbExpbmtJbmZvOwogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFi
bGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0
TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNB
Y3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0
cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKQogICAgICAgICA6IG1fbmVlZHNBY3RpdmF0
aW9uKG5lZWRzQWN0aXZhdGlvbikKICAgICAgICAgLCBtX3VzZXNFdmFsKHVzZXNFdmFsKQogICAg
ICAgICAsIG1faXNTdHJpY3RNb2RlKGlzU3RyaWN0TW9kZSkKICAgICAgICAgLCBtX2lzQ29uc3Ry
dWN0b3IoaXNDb25zdHJ1Y3RvcikKKyAgICAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGlzQnVp
bHRpbkZ1bmN0aW9uKQogICAgIHsKICAgICB9Ci0gICAgYm9vbCBtX25lZWRzQWN0aXZhdGlvbjsK
LSAgICBib29sIG1fdXNlc0V2YWw7Ci0gICAgYm9vbCBtX2lzU3RyaWN0TW9kZTsKLSAgICBib29s
IG1faXNDb25zdHJ1Y3RvcjsKKyAgICBib29sIG1fbmVlZHNBY3RpdmF0aW9uIDogMTsKKyAgICBi
b29sIG1fdXNlc0V2YWwgOiAxOworICAgIGJvb2wgbV9pc1N0cmljdE1vZGUgOiAxOworICAgIGJv
b2wgbV9pc0NvbnN0cnVjdG9yIDogMTsKKyAgICBib29sIG1faXNCdWlsdGluRnVuY3Rpb24gOiAx
OworfTsKKworZW51bSBVbmxpbmtlZEZ1bmN0aW9uS2luZCB7CisgICAgVW5saW5rZWROb3JtYWxG
dW5jdGlvbiwKKyAgICBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwKIH07CiAKIGNsYXNzIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6CisgICAgZnJp
ZW5kIGNsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlczsKICAgICBmcmllbmQgY2xhc3MgQ29kZUNhY2hl
OworICAgIGZyaWVuZCBjbGFzcyBWTTsKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0
YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNKiB2bSwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlLCBib29sIGlzRnJvbUdsb2Jh
bENvZGUgPSBmYWxzZSkKKyAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNy
ZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSog
bm9kZSwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtl
ZEZ1bmN0aW9uS2luZCkKICAgICB7Ci0gICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlPih2bS0+aGVhcCkpIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+
dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwg
aXNGcm9tR2xvYmFsQ29kZSk7CisgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBp
bnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlPih2bS0+aGVhcCkpIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgaXNG
cm9tR2xvYmFsQ29kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQpOwogICAgICAgICBpbnN0YW5jZS0+
ZmluaXNoQ3JlYXRpb24oKnZtKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KQEAg
LTk5LDYgKzEwOCwxNCBAQCBwdWJsaWM6CiAgICAgfQogICAgIHNpemVfdCBwYXJhbWV0ZXJDb3Vu
dCgpIGNvbnN0OwogICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBt
X2lzSW5TdHJpY3RDb250ZXh0OyB9CisgICAgSlNQYXJzZXJTdHJpY3RuZXNzIHRvU3RyaWN0bmVz
cygpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9pc0J1aWx0aW5GdW5jdGlvbikKKyAgICAg
ICAgICAgIHJldHVybiBKU1BhcnNlQnVpbHRpbjsKKyAgICAgICAgaWYgKG1faXNJblN0cmljdENv
bnRleHQpCisgICAgICAgICAgICByZXR1cm4gSlNQYXJzZVN0cmljdDsKKyAgICAgICAgcmV0dXJu
IEpTUGFyc2VOb3JtYWw7CisgICAgfQogICAgIEZ1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZSBm
dW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFt
ZUlzSW5TY29wZVRvZ2dsZTsgfQogCiAgICAgdW5zaWduZWQgZmlyc3RMaW5lT2Zmc2V0KCkgY29u
c3QgeyByZXR1cm4gbV9maXJzdExpbmVPZmZzZXQ7IH0KQEAgLTE0Miw4ICsxNTksMTAgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0ltbW9ydGFsU3RydWN0dXJlID0gdHJ1ZTsK
ICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCisgICAgYm9vbCBpc0J1aWx0aW5G
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KKwogcHJpdmF0
ZToKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVjdHVyZSosIGNvbnN0
IFNvdXJjZUNvZGUmLCBGdW5jdGlvbkJvZHlOb2RlKiwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlKTsK
KyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVjdHVyZSosIGNvbnN0IFNv
dXJjZUNvZGUmLCBGdW5jdGlvbkJvZHlOb2RlKiwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlLCBVbmxp
bmtlZEZ1bmN0aW9uS2luZCk7CiAgICAgV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2s+IG1fY29kZUJsb2NrRm9yQ2FsbDsKICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jaz4gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3Q7CiAKQEAgLTE1Miw2ICsxNzEs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0luU3RyaWN0Q29udGV4dCA6IDE7CiAgICAgYm9v
bCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIDogMTsKICAgICBib29sIG1faXNGcm9tR2xvYmFsQ29k
ZSA6IDE7CisgICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKIAogICAgIElkZW50aWZp
ZXIgbV9uYW1lOwogICAgIElkZW50aWZpZXIgbV9pbmZlcnJlZE5hbWU7CkBAIC0zMTksNiArMzM5
LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKGJvb2wg
aXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKSB7IG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uID0g
aXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CiAgICAgYm9vbCBpc051bWVyaWNDb21wYXJlRnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQogCisg
ICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVu
Y3Rpb247IH0KKyAgICAKICAgICB2b2lkIHNocmlua1RvRml0KCkKICAgICB7CiAgICAgICAgIG1f
anVtcFRhcmdldHMuc2hyaW5rVG9GaXQoKTsKQEAgLTUwMCw2ICs1MjIsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9pc1N0cmljdE1vZGUgOiAxOwogICAgIGJvb2wgbV9pc0NvbnN0cnVjdG9yIDog
MTsKICAgICBib29sIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgOiAxOworICAgIGJvb2wgbV9pc0J1
aWx0aW5GdW5jdGlvbiA6IDE7CiAgICAgdW5zaWduZWQgbV9maXJzdExpbmU7CiAgICAgdW5zaWdu
ZWQgbV9saW5lQ291bnQ7CiAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CmluZGV4IDY4MTBhYjgwMDJjZTZiYjhkNzhlN2ZmMjIyN2Y0YzZlYTdiNzU4YzIuLmVjNTIxYjUz
MDQ2MzkyM2U3NGMwMTBmYTIxOGU1OWVkMmE5YTNjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0x
NzUsNiArMTc1LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2
bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFAKICNlbmRpZgogICAgICwgbV91
c2VzRXhjZXB0aW9ucyhmYWxzZSkKICAgICAsIG1fZXhwcmVzc2lvblRvb0RlZXAoZmFsc2UpCisg
ICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGZhbHNlKQogewogICAgIGlmIChtX3Nob3VsZEVtaXRE
ZWJ1Z0hvb2tzKQogICAgICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNGdWxsU2NvcGVDaGFpbih0
cnVlKTsKQEAgLTIyMiw3ICsyMjMsMTMgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2Vu
ZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb25Cb2R5LCBVbmwKICNlbmRp
ZgogICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKICAgICAsIG1fZXhwcmVzc2lvblRvb0Rl
ZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGNvZGVCbG9jay0+aXNCdWlsdGlu
RnVuY3Rpb24oKSkKIHsKKyAgICBpZiAobV9pc0J1aWx0aW5GdW5jdGlvbikgeworICAgICAgICBt
X3Nob3VsZEVtaXRQcm9maWxlSG9va3MgPSBmYWxzZTsKKyAgICAgICAgbV9zaG91bGRFbWl0RGVi
dWdIb29rcyA9IGZhbHNlOworICAgIH0KKwogICAgIGlmIChtX3Nob3VsZEVtaXREZWJ1Z0hvb2tz
KQogICAgICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNGdWxsU2NvcGVDaGFpbih0cnVlKTsKIApA
QCAtNDM4LDYgKzQ0NSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihW
TSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kCiAjZW5kaWYKICAgICAs
IG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAgICAgLCBtX2V4cHJlc3Npb25Ub29EZWVwKGZhbHNl
KQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihmYWxzZSkKIHsKICAgICBtX2NvZGVCbG9jay0+
c2V0TmVlZHNGdWxsU2NvcGVDaGFpbih0cnVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDRlOWYyMTNj
OWJmYTZjZjE5NGIxYTE0ZmU5MTllODMzMzdhZTM1ZDkuLjE1ODQyNzRiNzhlYTZjMGJkMGVmYjBi
OTgyNWM4MThiZTBkYmMwNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ2MSw3ICs0NjEsOSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBzaG91bGRFbWl0RGVidWdIb29rcygpIHsgcmV0dXJu
IG1fc2hvdWxkRW1pdERlYnVnSG9va3M7IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNTdHJp
Y3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOyB9Ci0K
KyAgICAgICAgCisgICAgICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBMYWJlbDsKICAgICAgICAgCkBAIC01NDMsNyArNTQ1LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
bWFrZUZ1bmN0aW9uKEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2Nv
cGVOb2RlLT5zb3VyY2UoKSwgYm9keSk7CisgICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIGJvZHks
IGZhbHNlLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBV
bmxpbmtlZE5vcm1hbEZ1bmN0aW9uKTsKICAgICAgICAgfQogCiAgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRJbml0TGF6eVJlZ2lzdGVyKFJlZ2lzdGVySUQqKTsKQEAgLTY3Nyw2ICs2NzksNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIG1fdXNlc0V4Y2VwdGlvbnM7CiAgICAgICAg
IGJvb2wgbV9leHByZXNzaW9uVG9vRGVlcDsKKyAgICAgICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0
aW9uOwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAxZmZkNGYzMTE4ODJkMGVlNWM1NTE0ZjViOGIy
NTkzOWQ5NzVlMzc5Li42MmVjYTM2YTEwZDc3MDhhOTI4ZDQzYWMwM2YyZmM4NjE1Y2VjYTc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCkBAIC0yNiwxMCArMjYsMTAgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIk5vZGVzLmgiCi0jaW5jbHVkZSAiTm9kZUNvbnN0cnVjdG9ycy5oIgogCiAjaW5jbHVkZSAi
Qnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJD
b21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiSklU
LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUg
IkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJMYWJlbFNjb3BlLmgiCiAjaW5jbHVkZSAiTGV4ZXIu
aCIKKyNpbmNsdWRlICJOb2RlQ29uc3RydWN0b3JzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5o
IgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCkBA
IC01MzUsMzYgKzUzNiwzOSBAQCBSZWdpc3RlcklEKiBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgUmVmUHRyPExh
YmVsPiBlbmQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
YmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwogICAgIGdlbmVyYXRvci5lbWl0RXhw
cmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Npb25TdGFydCgpLCBz
dWJleHByZXNzaW9uRW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbiA9IGdl
bmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2Uu
Z2V0KCksIG1faWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbiA9IGdlbmVy
YXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0
KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuY2FsbCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBmdW5jdGlv
bi5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkNhbGwoZnVuY3Rp
b24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKKyAgICBib29sIGVtaXRDYWxsQ2hlY2sgPSAhZ2Vu
ZXJhdG9yLmlzQnVpbHRpbkZ1bmN0aW9uKCk7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2spCisgICAg
ICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKGZ1bmN0aW9uLmdldCgpLCBy
ZWFsQ2FsbC5nZXQoKSk7CisKICAgICB7CiAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUg
JiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpIHsKICAgICAgICAgICAgIEFyZ3VtZW50TGlz
dE5vZGUqIG9sZExpc3QgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CiAgICAgICAgICAgICBtX2FyZ3Mt
Pm1fbGlzdE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKLQorICAgICAgICAgICAg
CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9y
LmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAg
ICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3Mp
OwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lz
dGVyKCksIG9sZExpc3QtPm1fZXhwcik7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwo
cmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9u
LCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7Ci0KICAgICAgICAgICAgIG1f
YXJncy0+bV9saXN0Tm9kZSA9IG9sZExpc3Q7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdl
bmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICBD
YWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5k
ZWZpbmVkKCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdl
dCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50
cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQotICAgIGdlbmVyYXRv
ci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOwotICAgIHsKLSAgICAgICAgQ2FsbEFyZ3VtZW50
cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVt
aXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwotICAgICAg
ICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBO
b0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKKyAgICAgICAgZ2VuZXJhdG9y
LmVtaXRKdW1wKGVuZC5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENh
bGwuZ2V0KCkpOworICAgICAgICB7CisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1
bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3Zl
KGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOworICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9F
eHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOworICAgICAgICB9CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdl
dCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0KCkpOwogICAgIHJl
dHVybiByZXR1cm5WYWx1ZS5nZXQoKTsKIH0KIApAQCAtNTg1LDY1ICs1ODksNjcgQEAgUmVnaXN0
ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwKICAgICBSZWZQdHI8TGFiZWw+IGVuZCA9IGdlbmVyYXRvci5uZXdM
YWJlbCgpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2Rl
KG1fYmFzZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9u
RGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0gICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVy
YXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CisgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5W
YWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuY3Rpb24uZ2V0KCkpOwot
ICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25BcHBseShmdW5jdGlvbi5nZXQoKSwg
cmVhbENhbGwuZ2V0KCkpOwotICAgIHsKLSAgICAgICAgaWYgKG1heUJlQ2FsbCkgewotICAgICAg
ICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhw
cikgewotICAgICAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIG9sZExpc3QgPSBtX2FyZ3Mt
Pm1fbGlzdE5vZGU7Ci0gICAgICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9u
ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1f
bmV4dC0+bV9leHByLT5pc1NpbXBsZUFycmF5KCkpOwotICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoIW1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX25leHQpOwotICAgICAgICAgICAgICAg
ICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBzdGF0aWNfY2FzdDxBcnJheU5vZGUqPihtX2FyZ3Mt
Pm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByKS0+dG9Bcmd1bWVudExpc3QoZ2VuZXJhdG9yLnZt
KCksIDAsIDApOwotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1
bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0
KSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFy
Z3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIp
OwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0
KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRz
LCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG1fYXJncy0+
bV9saXN0Tm9kZS0+bV9uZXh0OwotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGlu
YXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIENhbGxBcmd1bWVu
dHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAgICAgICAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0
LT5tX2V4cHIpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJu
VmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxs
QXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBvbGRMaXN0Owor
ICAgIGJvb2wgZW1pdENhbGxDaGVjayA9ICFnZW5lcmF0b3IuaXNCdWlsdGluRnVuY3Rpb24oKTsK
KyAgICBpZiAoZW1pdENhbGxDaGVjaykgeworICAgICAgICBmdW5jdGlvbiA9IGdlbmVyYXRvci5l
bWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIGdl
bmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYXBwbHkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEp1
bXBJZk5vdEZ1bmN0aW9uQXBwbHkoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKKyAg
ICB9CisgICAgaWYgKG1heUJlQ2FsbCkgeworICAgICAgICBpZiAobV9hcmdzLT5tX2xpc3ROb2Rl
ICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKSB7CisgICAgICAgICAgICBBcmd1bWVudExp
c3ROb2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgICAgICAgICAgaWYgKG1f
YXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKG1fYXJn
cy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHItPmlzU2ltcGxlQXJyYXkoKSk7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9uZXh0KTsKKyAg
ICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBzdGF0aWNfY2FzdDxBcnJheU5vZGUq
PihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByKS0+dG9Bcmd1bWVudExpc3QoZ2Vu
ZXJhdG9yLnZtKCksIDAsIDApOworICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBy
ZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlv
bihkc3QpLCBiYXNlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxB
cmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwor
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVh
bEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90
KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9u
ZXh0OwogICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBn
ZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdl
dCgpKTsKICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJh
dG9yLCBtX2FyZ3MpOwotICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJn
dW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+
bV9leHByKTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUu
Z2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1l
bnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgfQor
ICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gb2xkTGlzdDsKICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xp
c3ROb2RlLT5tX25leHQpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb2ZpbGVI
b29rUmVnaXN0ZXI7Ci0gICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLnNob3VsZEVtaXRQcm9maWxl
SG9va3MoKSkKLSAgICAgICAgICAgICAgICBwcm9maWxlSG9va1JlZ2lzdGVyID0gZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpOwogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5j
dGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCks
IGJhc2UuZ2V0KCkpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNSZWdpc3Rl
ciA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcik7Ci0gICAg
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXJnc1JlZ2lzdGVyOwotICAgICAgICAgICAgQXJn
dW1lbnRMaXN0Tm9kZSogYXJncyA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwotICAgICAg
ICAgICAgaWYgKGFyZ3MtPm1fZXhwci0+aXNSZXNvbHZlTm9kZSgpICYmIGdlbmVyYXRvci53aWxs
UmVzb2x2ZVRvQXJndW1lbnRzKHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oYXJncy0+bV9leHBy
KS0+aWRlbnRpZmllcigpKSkKLSAgICAgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0
b3IudW5jaGVja2VkUmVnaXN0ZXJGb3JBcmd1bWVudHMoKTsKLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9l
eHByKTsKLQotICAgICAgICAgICAgLy8gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5IGlnbm9yZXMg
ZXh0cmEgYXJndW1lbnRzLCBidXQgd2Ugc3RpbGwKLSAgICAgICAgICAgIC8vIG5lZWQgdG8gZXZh
bHVhdGUgdGhlbSBmb3Igc2lkZSBlZmZlY3RzLgotICAgICAgICAgICAgd2hpbGUgKChhcmdzID0g
YXJncy0+bV9uZXh0KSkKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+
bV9leHByKTsKLQotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsVmFyYXJncyhyZXR1cm5W
YWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCB0aGlzUmVnaXN0ZXIuZ2V0KCksIGFyZ3NS
ZWdpc3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm9maWxlSG9va1JlZ2lz
dGVyLmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICAg
ICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBq
c1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1
ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1
bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIH0KLSAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4
dCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9maWxlSG9va1JlZ2lzdGVyOworICAg
ICAgICBpZiAoZ2VuZXJhdG9yLnNob3VsZEVtaXRQcm9maWxlSG9va3MoKSkKKyAgICAgICAgICAg
IHByb2ZpbGVIb29rUmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2Vu
ZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKKyAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHRoaXNSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2FyZ3MtPm1f
bGlzdE5vZGUtPm1fZXhwcik7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhcmdzUmVnaXN0
ZXI7CisgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MgPSBtX2FyZ3MtPm1fbGlzdE5vZGUt
Pm1fbmV4dDsKKyAgICAgICAgaWYgKGFyZ3MtPm1fZXhwci0+aXNSZXNvbHZlTm9kZSgpICYmIGdl
bmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4o
YXJncy0+bV9leHByKS0+aWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIGFyZ3NSZWdpc3RlciA9
IGdlbmVyYXRvci51bmNoZWNrZWRSZWdpc3RlckZvckFyZ3VtZW50cygpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9l
eHByKTsKKworICAgICAgICAvLyBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkgaWdub3JlcyBleHRy
YSBhcmd1bWVudHMsIGJ1dCB3ZSBzdGlsbAorICAgICAgICAvLyBuZWVkIHRvIGV2YWx1YXRlIHRo
ZW0gZm9yIHNpZGUgZWZmZWN0cy4KKyAgICAgICAgd2hpbGUgKChhcmdzID0gYXJncy0+bV9uZXh0
KSkKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShhcmdzLT5tX2V4cHIpOworCisgICAg
ICAgIGdlbmVyYXRvci5lbWl0Q2FsbFZhcmFyZ3MocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5j
dGlvbi5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBhcmdzUmVnaXN0ZXIuZ2V0KCksIGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKSwgcHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwg
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJl
bChyZWFsQ2FsbC5nZXQoKSk7Ci0gICAgeworICAgIGlmIChlbWl0Q2FsbENoZWNrKSB7CisgICAg
ICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1p
dExhYmVsKHJlYWxDYWxsLmdldCgpKTsKICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1l
bnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxB
cmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwogICAgICAgICBnZW5lcmF0b3Iu
ZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVu
Y3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICB9Ci0gICAgZ2Vu
ZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0KCkpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZS5nZXQo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3Rh
YmxlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlCmluZGV4IDM5Nzk3
NmIwNmM3YTliNTgzNjMzMjkwMGE2ZWJiOTNlYzY4Yjc0ODYuLmNhZDY1YmM0Y2M4ODhlMzE0Zjg4
ZDY2NWRkNGE2ZTY0NWEwOWEzNTUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9j
cmVhdGVfaGFzaF90YWJsZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hf
dGFibGUKQEAgLTI4OSw3ICsyODksMTcgQEAgc3ViIG91dHB1dCgpIHsKICAgICAgICAgICAgICRp
bnRyaW5zaWMgPSAiUmVnRXhwVGVzdEludHJpbnNpYyIgaWYgKCRrZXkgZXEgInRlc3QiKTsKICAg
ICAgICAgfQogCisgICAgICAgIGlmICgkdmFsdWVzWyRpXXsidHlwZSJ9IGVxICJGdW5jdGlvbiIp
ICB7CisgICAgICAgICAgICBteSAkdGFibGVIZWFkID0gJG5hbWU7CisgICAgICAgICAgICAkdGFi
bGVIZWFkID1+IHMvVGFibGUkLy87CisgICAgICAgICAgICBwcmludCAiICNpZiBKU0NfQlVJTFRJ
Tl9FWElTVFMoIiAuIHVjKCR0YWJsZUhlYWQgLiAka2V5KSAuIilcbiI7CisgICAgICAgICAgICBw
cmludCAiICAgeyBcIiRrZXlcIiwgKCgkYXR0cnNbJGldKSAmIH5GdW5jdGlvbikgfCBCdWlsdGlu
LCAkaW50cmluc2ljLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8QnVpbHRpbkdlbmVyYXRvcj4oIiAu
ICR0YWJsZUhlYWQgLiB1Y2ZpcnN0KCRrZXkpIC4gIkNvZGVHZW5lcmF0b3IpLCAoaW50cHRyX3Qp
JHNlY29uZFZhbHVlIH0sXG4iOworICAgICAgICAgICAgcHJpbnQgIiAjZWxzZVxuIgorICAgICAg
ICB9CiAgICAgICAgIHByaW50ICIgICB7IFwiJGtleVwiLCAkYXR0cnNbJGldLCAkaW50cmluc2lj
LCAoaW50cHRyX3QpIiAuICRmaXJzdENhc3RTdHIgLiAiKCRmaXJzdFZhbHVlKSwgKGludHB0cl90
KSIgLiAkc2Vjb25kQ2FzdFN0ciAuICIoJHNlY29uZFZhbHVlKSB9LFxuIjsKKyAgICAgICAgaWYg
KCR2YWx1ZXNbJGldeyJ0eXBlIn0gZXEgIkZ1bmN0aW9uIikgIHsKKyAgICAgICAgICAgIHByaW50
ICIgI2VuZGlmXG4iCisgICAgICAgIH0KICAgICAgICAgJGkrKzsKICAgICB9CiAgICAgcHJpbnQg
IiAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIDAsIDAgfVxuIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDJmZjBjMzQxNDZlMmMwYmEyZmY3NmM0ZDNm
N2M0NmJhM2UyNTUxNDcuLjkwNDRjZGM2YjhjM2FkNGExZTk0MTg4ZGQxZDBlMjAwZTY5ZmI5OWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtNDgs
NiArNDgsNyBAQAogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIlZNLmgiCiAj
aW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNp
bmNsdWRlICJOYW1lSW5zdGFuY2UuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9nZW5lcmF0ZS1qcy1idWlsdGlucyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1q
cy1idWlsdGlucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjAyZWUzNTQ4Nzk1MTEyMjQzMzBlZjQxZDI1MGI3MTIw
M2QwZmI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRl
LWpzLWJ1aWx0aW5zCkBAIC0wLDAgKzEsMzAzIEBACisjIS91c3IvYmluL3B5dGhvbgorIyBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyMg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisjIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorIyBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisj
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorIyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisjIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworaW1wb3J0IGZpbGVjbXAKK2ltcG9ydCBmbm1hdGNoCitpbXBvcnQgb3MKK2ltcG9y
dCByZQoraW1wb3J0IHNodXRpbAoraW1wb3J0IHN5cworaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQg
anNvbgorCitjb3B5cmlnaHRUZXh0ID0gIiIiICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi9cbgorIiIiCisKK2dlbmVyYXRvclN0cmluZyA9ICIvKiBHZW5lcmF0ZWQgYnkg
JXMgZG8gbm90IGhhbmQgZWRpdC4gKi9cbiIgJSBvcy5wYXRoLmJhc2VuYW1lKF9fZmlsZV9fKQor
CitmdW5jdGlvbkhlYWRSZWdFeHAgPSByZS5jb21waWxlKHIiZnVuY3Rpb25ccytcdytccypcKC4q
P1wpIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK2Z1bmN0aW9uTmFtZVJlZ0V4cCA9IHJlLmNvbXBp
bGUociJmdW5jdGlvblxzKyhcdyspXHMqXCgiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorZnVuY3Rp
b25QYXJhbWV0ZXJGaW5kZXIgPSByZS5jb21waWxlKHIiXmZ1bmN0aW9uXHMrKD86XHcrKVxzKlwo
KCg/OlxzKlx3Kyk/XHMqKD86XHMqLFxzKlx3KykqKT9cKSIsIHJlLk1VTFRJTElORSB8IHJlLlMp
CisKK211bHRpbGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cKi4qP1wqXC8iLCBy
ZS5NVUxUSUxJTkUgfCByZS5TKQorc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxl
KHIiXC9cLy4qP1xuIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKKworZGVmIGdldENvcHlyaWdodChz
b3VyY2UpOgorICAgIGNvcHlyaWdodEJsb2NrID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5maW5k
YWxsKHNvdXJjZSlbMF0KKyAgICBjb3B5cmlnaHRCbG9jayA9IGNvcHlyaWdodEJsb2NrWzpjb3B5
cmlnaHRCbG9jay5pbmRleCgiUmVkaXN0cmlidXRpb24iKV0KKyAgICBjb3B5UmlnaHRMaW5lcyA9
IFtdCisKKyAgICBmb3IgbGluZSBpbiBjb3B5cmlnaHRCbG9jay5zcGxpdCgiXG4iKToKKyAgICAg
ICAgbGluZSA9IGxpbmUucmVwbGFjZSgiLyoiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVw
bGFjZSgiKi8iLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKiIsICIiKQorICAg
ICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCJDb3B5cmlnaHQiLCAiIikKKyAgICAgICAgbGluZSA9
IGxpbmUucmVwbGFjZSgiY29weXJpZ2h0IiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxh
Y2UoIihDKSIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIoYykiLCAiIikKKyAg
ICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgICAgICBpZiBsZW4obGluZSkgPT0gMDoKKyAg
ICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgY29weVJpZ2h0TGluZXMuYXBwZW5kKGxpbmUp
CisgICAgCisgICAgcmV0dXJuIGxpc3Qoc2V0KGNvcHlSaWdodExpbmVzKSkKKworCisKK2RlZiBn
ZXRGdW5jdGlvbnMoc291cmNlKToKKworICAgIHNvdXJjZSA9IG11bHRpbGluZUNvbW1lbnRSZWdF
eHAuc3ViKCIvKiovIiwgc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAuc3ViKCIvL1xuIiwgc291cmNl
KSkKKworICAgIG1hdGNoZXMgPSBbIGYgZm9yIGYgaW4gZnVuY3Rpb25IZWFkUmVnRXhwLmZpbmRp
dGVyKHNvdXJjZSldCisgICAgZnVuY3Rpb25Cb3VuZHMgPSBbXQorICAgIHN0YXJ0ID0gMAorICAg
IGVuZCA9IDAKKyAgICBmb3IgbWF0Y2ggaW4gbWF0Y2hlczoKKyAgICAgICAgc3RhcnQgPSBtYXRj
aC5zdGFydCgpCisgICAgICAgIGlmIHN0YXJ0IDwgZW5kOgorICAgICAgICAgICAgY29udGludWUK
KyAgICAgICAgZW5kID0gbWF0Y2guZW5kKCkKKyAgICAgICAgd2hpbGUgc291cmNlW2VuZF0gIT0g
J3snOgorICAgICAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICBkZXB0aCA9IDEKKyAgICAg
ICAgZW5kID0gZW5kICsgMQorICAgICAgICB3aGlsZSBkZXB0aCA+IDA6CisgICAgICAgICAgICBp
ZiBzb3VyY2VbZW5kXSA9PSAneyc6CisgICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCArIDEK
KyAgICAgICAgICAgIGVsaWYgc291cmNlW2VuZF0gPT0gJ30nOgorICAgICAgICAgICAgICAgIGRl
cHRoID0gZGVwdGggLSAxCisgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgIGZ1bmN0
aW9uQm91bmRzLmFwcGVuZCgoc3RhcnQsIGVuZCkpCisKKyAgICBmdW5jdGlvbnMgPSBbc291cmNl
W3N0YXJ0OmVuZF0uc3RyaXAoKSBmb3IgKHN0YXJ0LCBlbmQpIGluIGZ1bmN0aW9uQm91bmRzXQor
ICAgIHJlc3VsdCA9IFtdCisgICAgZm9yIGZ1bmN0aW9uIGluIGZ1bmN0aW9uczoKKyAgICAgICAg
ZnVuY3Rpb24gPSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLnN1YigiIiwgZnVuY3Rpb24pCisgICAg
ICAgIGZ1bmN0aW9uTmFtZSA9IGZ1bmN0aW9uTmFtZVJlZ0V4cC5maW5kYWxsKGZ1bmN0aW9uKVsw
XQorICAgICAgICBmdW5jdGlvblBhcmFtZXRlcnMgPSBmdW5jdGlvblBhcmFtZXRlckZpbmRlci5m
aW5kYWxsKGZ1bmN0aW9uKVswXS5zcGxpdCgnLCcpCisgICAgICAgIGlmIGxlbihmdW5jdGlvblBh
cmFtZXRlcnNbMF0pID09IDA6CisgICAgICAgICAgICBmdW5jdGlvblBhcmFtZXRlcnMgPSBbXQor
ICAgICAgICAgICAgCisgICAgICAgIHJlc3VsdC5hcHBlbmQoKGZ1bmN0aW9uTmFtZSwgZnVuY3Rp
b24sIGZ1bmN0aW9uUGFyYW1ldGVycykpCisgICAgcmV0dXJuIHJlc3VsdAorICAgICAgICAKKwor
ZGVmIGdlbmVyYXRlQ29kZShzb3VyY2UpOgorICAgIGlucHV0RmlsZSA9IG9wZW4oc291cmNlLCAi
ciIpCisgICAgYmFzZU5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHNvdXJjZSkucmVwbGFjZSgiLmpz
IiwgIiIpCisgICAgCisgICAgc291cmNlID0gIiIKKyAgICBmb3IgbGluZSBpbiBpbnB1dEZpbGU6
CisgICAgICAgIHNvdXJjZSA9IHNvdXJjZSArIGxpbmUKKyAgICAKKyAgICBpZiBzeXMucGxhdGZv
cm0gPT0gImN5Z3dpbiI6CisgICAgICAgIHNvdXJjZSA9IHNvdXJjZS5yZXBsYWNlKCJcclxuIiwg
IlxuIikKKyAgICByZXR1cm4gKGJhc2VOYW1lLCBnZXRGdW5jdGlvbnMoc291cmNlKSwgZ2V0Q29w
eXJpZ2h0KHNvdXJjZSkpCisKK2RlZiBtYW5nbGVOYW1lKG9iamVjdCwgbmFtZSk6CisgICAgcU5h
bWUgPSBvYmplY3QgKyAiLiIgKyBuYW1lCisgICAgbWFuZ2xlZE5hbWUgPSAiIgorICAgIGkgPSAw
CisgICAgd2hpbGUgaSA8IGxlbihxTmFtZSk6CisgICAgICAgIGlmIHFOYW1lW2ldID09ICcuJzoK
KyAgICAgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWUgKyBxTmFtZVtpICsgMV0udXBw
ZXIoKQorICAgICAgICAgICAgaSA9IGkgKyAxCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBt
YW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lICsgcU5hbWVbaV0KKyAgICAgICAgaSA9IGkgKyAxCisg
ICAgcmV0dXJuIG1hbmdsZWROYW1lCisKK2J1aWx0aW5zID0gW10KKworYmFzZU5hbWUgPSBzeXMu
YXJndlstMV0KK2J1aWx0aW5fZGVmaW5pdGlvbnMgPSBzeXMuYXJndlsxOi0xXQorKG91dHB1dF9i
YXNlLCBfKSA9IG9zLnBhdGguc3BsaXRleHQoc3lzLmFyZ3ZbLTFdKQorCitjb3B5cmlnaHRzID0g
W10KK2ZvciBmaWxlIGluIGJ1aWx0aW5fZGVmaW5pdGlvbnM6CisgICAgaWYgZm5tYXRjaC5mbm1h
dGNoKGZpbGUsICcqLmpzJyk6CisgICAgICAgIChiYXNlTmFtZSwgZnVuY3Rpb25zLCBvYmplY3RD
b3B5cmlnaHRzKSA9IGdlbmVyYXRlQ29kZShmaWxlKQorICAgICAgICBjb3B5cmlnaHRzLmV4dGVu
ZChvYmplY3RDb3B5cmlnaHRzKQorICAgICAgICBidWlsdGlucy5hcHBlbmQoKGJhc2VOYW1lLCBm
dW5jdGlvbnMpKQorCitjb3B5cmlnaHRzID0gbGlzdChzZXQoY29weXJpZ2h0cykpCisKK2NvcHly
aWdodEJvZHkgPSAiIgorZm9yIGNvcHlyaWdodCBpbiBjb3B5cmlnaHRzOgorICAgIGNvcHlyaWdo
dEJvZHkgPSBjb3B5cmlnaHRCb2R5ICsiICogQ29weXJpZ2h0IChDKSAiICsgY29weXJpZ2h0ICsg
IlxuIgorCitidWlsdGluc0hlYWRlciA9IG9wZW4ob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgInci
KQorYnVpbHRpbnNJbXBsZW1lbnRhdGlvbiA9IG9wZW4ob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAi
LCAidyIpCitjb3B5cmlnaHRUZXh0ID0gIi8qXG4iICsgY29weXJpZ2h0Qm9keSArIGNvcHlyaWdo
dFRleHQKK2J1aWx0aW5zSGVhZGVyLndyaXRlKCIiIiVzCislcworCisjaWZuZGVmIEpTQ0J1aWx0
aW5zX0gKKyNkZWZpbmUgSlNDQnVpbHRpbnNfSAorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
RnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgSWRlbnRpZmllcjsKK2NsYXNzIEpTR2xvYmFsT2Jq
ZWN0OworY2xhc3MgU291cmNlQ29kZTsKK2NsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
OworY2xhc3MgVk07CisKK0Z1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1dGFi
bGUoVk0mLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsK
KworIiIiICUgKGdlbmVyYXRvclN0cmluZywgY29weXJpZ2h0VGV4dCkpCisKK2NvZGVSZWZlcmVu
Y2VzID0gW10KKworZm9yIChvYmplY3ROYW1lLCBmdW5jdGlvbnMpIGluIGJ1aWx0aW5zOgorICAg
IGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIvKiAlcyBmdW5jdGlvbnMgKi9cbiIgJSBvYmplY3ROYW1l
KQorICAgIGZvciAobmFtZSwgaW1wbGVtZW50YXRpb24sIF8pIGluIGZ1bmN0aW9uczoKKyAgICAg
ICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVOYW1lKG9iamVjdE5hbWUsIG5hbWUpCisgICAgICAgIG1h
bmdsZWROYW1lID0gbWFuZ2xlZE5hbWVbMF0ubG93ZXIoKSArIG1hbmdsZWROYW1lWzE6XSArICJD
b2RlIgorICAgICAgICBjb2RlUmVmZXJlbmNlcy5hcHBlbmQoKG1hbmdsZWROYW1lLCBuYW1lLCBp
bXBsZW1lbnRhdGlvbikpCisgICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJleHRlcm4gY29u
c3QgY2hhciogc18lcztcbiIgJSBtYW5nbGVkTmFtZSkKKyAgICAgICAgYnVpbHRpbnNIZWFkZXIu
d3JpdGUoImV4dGVybiBjb25zdCBpbnQgc18lc0xlbmd0aDtcbiIgJSBtYW5nbGVkTmFtZSkKKyAg
ICBidWlsdGluc0hlYWRlci53cml0ZSgiXG4iKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIj
ZGVmaW5lIEpTQ19GT1JFQUNIXyVzX0JVSUxUSU4obWFjcm8pIFxcXG4iICUgb2JqZWN0TmFtZS5y
ZXBsYWNlKCIuIiwgIl8iKS51cHBlcigpKQorICAgIGZvciAobmFtZSwgaW1wbGVtZW50YXRpb24s
IGFyZ3VtZW50cykgaW4gZnVuY3Rpb25zOgorICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZU5h
bWUob2JqZWN0TmFtZSwgbmFtZSkKKyAgICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiAgICBt
YWNybyglcywgJXMsICVkKSBcXFxuIiAlIChuYW1lLCBtYW5nbGVkTmFtZSwgbGVuKGFyZ3VtZW50
cykpKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJcbiIpCisgICAgZm9yIChuYW1lLCBpbXBs
ZW1lbnRhdGlvbiwgYXJndW1lbnRzKSBpbiBmdW5jdGlvbnM6CisgICAgICAgIGJ1aWx0aW5zSGVh
ZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19CVUlMVElOXyVzIDFcbiIgJSBtYW5nbGVOYW1lKG9iamVj
dE5hbWUsIG5hbWUpLnVwcGVyKCkpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuXG4iKQor
bmFtZXMgPSBbXQorYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJ
TFRJTihtYWNybylcXFxuIikKK2ZvciAoY29kZVJlZmVyZW5jZSwgZnVuY3Rpb25OYW1lLCBzb3Vy
Y2UpIGluIGNvZGVSZWZlcmVuY2VzOgorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIgICAgbWFj
cm8oJXMsICVzLCBzXyVzTGVuZ3RoKSBcXFxuIiAlIChjb2RlUmVmZXJlbmNlLCBmdW5jdGlvbk5h
bWUsIGNvZGVSZWZlcmVuY2UpKQorICAgIG5hbWVzLmFwcGVuZChmdW5jdGlvbk5hbWUpCisKK2J1
aWx0aW5zSGVhZGVyLndyaXRlKCJcblxuIikKK2J1aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5l
IEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykgXFxcbiIpCitmb3IgbmFt
ZSBpbiBzb3J0ZWQoc2V0KG5hbWVzKSk6CisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiAgICBt
YWNybyglcykgXFxcbiIgJSBuYW1lKQorYnVpbHRpbnNIZWFkZXIud3JpdGUoIiIiCisKKyNkZWZp
bmUgSlNDX0RFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwg
YXJndW1lbnRDb3VudCkgXFwKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5l
cmF0b3IoVk0mKTsKKworSlNDX0ZPUkVBQ0hfQlVJTFRJTihKU0NfREVDTEFSRV9CVUlMVElOX0dF
TkVSQVRPUikKKyN1bmRlZiBKU0NfREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5l
IEpTQ19CVUlMVElOX0VYSVNUUyhuYW1lKSBkZWZpbmVkKEpTQ19CVUlMVElOXyMjbmFtZSkKKwor
fQorCisjZW5kaWYKKworIiIiKQorCitidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIiVz
CislcworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgor
CisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5o
IgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworIiIiICAlIChnZW5lcmF0b3JTdHJpbmcsIGNvcHlyaWdodFRleHQpKQorCitm
b3IgKGNvZGVSZWZlcmVuY2UsIG5hbWUsIHNvdXJjZSkgaW4gY29kZVJlZmVyZW5jZXM6CisgICAg
c291cmNlID0gIihmdW5jdGlvbiAiICsgc291cmNlW3NvdXJjZS5pbmRleCgiKCIpOl0gKyAiKSIK
KyAgICBsaW5lcyA9IGpzb24uZHVtcHMoc291cmNlKVsxOi0xXS5zcGxpdCgiXFxuIikKKyAgICBz
b3VyY2VMZW5ndGggPSBsZW4oc291cmNlKQorICAgIHNvdXJjZSA9ICIiCisgICAgZm9yIGxpbmUg
aW4gbGluZXM6CisgICAgICAgIHNvdXJjZSA9IHNvdXJjZSArICgiICAgIFwiJXNcXG5cIiBcXFxu
IiAlIGxpbmUpCisgICAgYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiY29uc3QgY2hhciog
c18lcyA9XG4lcztcblxuIiAlIChjb2RlUmVmZXJlbmNlLCBzb3VyY2UpKQorICAgIGJ1aWx0aW5z
SW1wbGVtZW50YXRpb24ud3JpdGUoImNvbnN0IGludCBzXyVzTGVuZ3RoID0gJWQ7XG5cbiIgJSAo
Y29kZVJlZmVyZW5jZSwgc291cmNlTGVuZ3RoICsgMSkpICMgKyAxIGZvciBcbgorCitidWlsdGlu
c0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIgorRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVCdWls
dGluRXhlY3V0YWJsZShWTSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtl
ZEV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKK3sKKyAgICB1bnNpZ25lZCBs
aW5lQ291bnQgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPmxpbmVDb3VudCgpOworICAgIHVuc2lnbmVk
IHN0YXJ0Q29sdW1uID0gMTsKKyAgICB1bnNpZ25lZCBzb3VyY2VMZW5ndGggPSB1bmxpbmtlZEV4
ZWN1dGFibGUtPnNvdXJjZUxlbmd0aCgpOworICAgIGJvb2wgZW5kQ29sdW1uSXNPblN0YXJ0TGlu
ZSA9ICFsaW5lQ291bnQ7CisgICAgdW5zaWduZWQgZW5kQ29sdW1uRXhjbHVkaW5nQnJhY2VzID0g
dW5saW5rZWRFeGVjdXRhYmxlLT51bmxpbmtlZEJvZHlFbmRDb2x1bW4oKSArIChlbmRDb2x1bW5J
c09uU3RhcnRMaW5lID8gMCA6IDEpOworICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gdW5saW5r
ZWRFeGVjdXRhYmxlLT5zdGFydE9mZnNldCgpOworICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0RXhj
bHVkaW5nT3BlbkJyYWNlID0gc3RhcnRPZmZzZXQgKyAxOworICAgIHVuc2lnbmVkIGVuZE9mZnNl
dEV4Y2x1ZGluZ0Nsb3NlQnJhY2UgPSBzdGFydE9mZnNldCArIHNvdXJjZUxlbmd0aCAtIDE7Cisg
ICAgU291cmNlQ29kZSBib2R5U291cmNlKHNvdXJjZS5wcm92aWRlcigpLCBzdGFydE9mZnNldEV4
Y2x1ZGluZ09wZW5CcmFjZSwgZW5kT2Zmc2V0RXhjbHVkaW5nQ2xvc2VCcmFjZSwgMCwgc3RhcnRD
b2x1bW4pOworICAgIHJldHVybiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgYm9keVNv
dXJjZSwgdW5saW5rZWRFeGVjdXRhYmxlLCAwLCBsaW5lQ291bnQsIHN0YXJ0Q29sdW1uLCBlbmRD
b2x1bW5FeGNsdWRpbmdCcmFjZXMsIGZhbHNlKTsKK30KKworI2RlZmluZSBKU0NfREVGSU5FX0JV
SUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxc
CitGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoVk0mIHZtKSBcXAoreyBc
XAorICAgIHJldHVybiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSh2bSwgdm0uYnVpbHRpbkV4ZWN1
dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCksIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygp
LT5jb2RlTmFtZSMjU291cmNlKCkpOyBcXAorfQorCitKU0NfRk9SRUFDSF9CVUlMVElOKEpTQ19E
RUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgSlNDX0RFRklORV9CVUlMVElOX0dFTkVS
QVRPUgorfQorCisiIiIpCisKK2J1aWx0aW5zSGVhZGVyLmNsb3NlKCkKK2J1aWx0aW5zSW1wbGVt
ZW50YXRpb24uY2xvc2UoKQorCitpZiAobm90IG9zLnBhdGguZXhpc3RzKG91dHB1dF9iYXNlICsg
Ii5oIikpIG9yIChub3QgZmlsZWNtcC5jbXAob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgb3V0cHV0
X2Jhc2UgKyAiLmgiLCBzaGFsbG93PUZhbHNlKSk6CisgICAgb3MucmVuYW1lKG91dHB1dF9iYXNl
ICsgIi5oLnRtcCIsIG91dHB1dF9iYXNlICsgIi5oIikKK2Vsc2U6CisgICAgb3MucmVtb3ZlKG91
dHB1dF9iYXNlICsgIi5oLnRtcCIpCisKK2lmIChub3Qgb3MucGF0aC5leGlzdHMob3V0cHV0X2Jh
c2UgKyAiLmNwcCIpKSBvciAobm90IGZpbGVjbXAuY21wKG91dHB1dF9iYXNlICsgIi5jcHAudG1w
Iiwgb3V0cHV0X2Jhc2UgKyAiLmNwcCIsIHNoYWxsb3c9RmFsc2UpKToKKyAgICBvcy5yZW5hbWUo
b3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCBvdXRwdXRfYmFzZSArICIuY3BwIikKK2Vsc2U6Cisg
ICAgb3MucmVtb3ZlKG91dHB1dF9iYXNlICsgIi5jcHAudG1wIikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGNhODkwYjA2ZWEz
M2ZhOWU3ZjFmYTUxYTM1ZWEyZDQ4ZDAwOWEzOGEuLjZjOWJmOTZjMTVmNjA5ZTI2NWNlMjUwYTQ1
YmYwODYxZDA2Y2QxZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIkpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1N0YWNrSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNX
aXRoU2NvcGUuaCIKICNpbmNsdWRlICJMTEludENMb29wLmgiCiAjaW5jbHVkZSAiTExJbnRUaHVu
a3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90
b0NhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9D
YWxsRnJhbWUuY3BwCmluZGV4IGYwZTAyYmE0ZTQ3NmY5OWNjOTEzYjA0NjJhZDI3OTUwMDYwOWZh
M2EuLjFjMjQwZGNkNzFiZTUyOWQ4OGNiZjQ2MWQxODY4ZjVlYjJiMDJhZDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcApA
QCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCiAKICNpbmNsdWRl
ICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUg
IlN0YWNrQWxpZ25tZW50LmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggY2E3YWQxMWYyZTBiOGEzYjhiMTg1ODkxZDdlNTIy
YmFlNDAzYTIzNi4uY2I1NTA3YmVhYzU1YmY4ZWIxYjM3ZWM5MGZjYWIxOTM0ZmI0OGVhMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJK
U0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Nl
bGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQu
Y3BwCmluZGV4IDk4ZDEwYTNmNGRjYjEyZDg5ZjM3YTEyZjIyNjA0Yjk0NmUwOGU2MjcuLmRkMDM1
Mzc3OWU4YmRmOThmNDY1OGEzMDdlMzJkMDZlNDcyNDQxNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0Fy
cmF5LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGwu
aCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5k
ZXggOTI4ZGQ1MGZiMDE2ZTI3MTY0NGE1NzVlMzBhYjVmMjUxNmViNTBlYy4uNDk4NzBlNjhhODdi
ZTE5ZTE1OGEwNmQxYzY0ZmVjOWI4YmQwODIyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiSklULmgi
CiAjaW5jbHVkZSAiSklUT3BlcmF0aW9uV3JhcHBlcnMuaCIKICNpbmNsdWRlICJKSVRUb0RGR0Rl
ZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU05h
bWVTY29wZS5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggMjZkZDRk
MWFmNzQ1YWZhMWZiYzUzYTljMDIzYTZlNDc0MWE2NmEwOS4uZGYxYmQzYTljZmE0MDJjNTJhNTIx
MWNmMWFjY2U2N2Q1MTIxYjdlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTI5LDExICsyOSwxMyBAQAogI2luY2x1ZGUgIkpJVC5o
IgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMu
aCIKICNpbmNsdWRlICJHQ0F3YXJlSklUU3R1YlJvdXRpbmUuaCIKICNpbmNsdWRlICJHZXR0ZXJT
ZXR0ZXIuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVElubGluZXMu
aCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
ICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5oIgogI2luY2x1ZGUgIkpTVmFyaWFibGVPYmplY3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IGQxOGZlYTcx
NWNiMDNiMzdhYTkyNmQ4NDlhOGU1YWI5NTYzZWNkM2QuLjMyNjFiM2FmNmVlYWJkNmYyNmE0M2Ew
OGQyMDRiYzYyYjA2NTg5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
IkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJy
YXkuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNW
YXJpYWJsZU9iamVjdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCA0MDc4NGI0OTQzMWZlMDJl
OGU0NTIyZjE2MzA4YzkwMjQ3MTZkMjM2Li4yZjc5NTU1NGIwOTFkZWViYmMwM2JmMmJlOGM3NGY0
MWFlNTQxZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1
ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTUHJveHkuaCIKICNpbmNsdWRlICJKU1N0cmluZy5o
IgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIK
ICNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKICNpbmNsdWRlICJTdGFja1Zpc2l0b3IuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDY2
NDQ0YmFhMDhiNTYyZGQ2OTdlMGNjZDc3MjFlNTVjMTViYTQ5MTMuLmQ4MmU5ZTljMjgxODQ2MWUz
MDVmZjg2NWQyZmIxNjhhNzhjYmI0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtNDAsNyArNDAsNyBAQAogI2luY2x1ZGUgIkpJVC5o
IgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIK
LSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
ICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTmFtZVNj
b3BlLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCA4ZWMxZmQzMmEzYWRhMjJlMTI1MjI5
NTcwZGNmN2ZmMjhlYWJmMWVkLi40NmE3Yzc2YjJmOTAxZmMzY2MzNmQxY2UwYzA3MzUzZWIwNmIy
ZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtODg4
LDkgKzg4OCw5IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxs
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uCiAgICAgQVNTRVJUKGZ1bmMtPmlz
RG90QWNjZXNzb3JOb2RlKCkpOwogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nh
c3Q8RG90QWNjZXNzb3JOb2RlKj4oZnVuYyk7CiAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZSogbm9k
ZTsKLSAgICBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y2Fs
bCkKKyAgICBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y2Fs
bCB8fCBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5jYWxsUHJpdmF0
ZU5hbWUpCiAgICAgICAgIG5vZGUgPSBuZXcgKG1fdm0pIENhbGxGdW5jdGlvbkNhbGxEb3ROb2Rl
KGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBk
aXZvdFN0YXJ0LCBkaXZvdEVuZCk7Ci0gICAgZWxzZSBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0g
bV92bS0+cHJvcGVydHlOYW1lcy0+YXBwbHkpCisgICAgZWxzZSBpZiAoZG90LT5pZGVudGlmaWVy
KCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXBwbHkgfHwgZG90LT5pZGVudGlmaWVyKCkgPT0g
bV92bS0+cHJvcGVydHlOYW1lcy0+YXBwbHlQcml2YXRlTmFtZSkKICAgICAgICAgbm9kZSA9IG5l
dyAobV92bSkgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwg
ZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiAg
ICAgZWxzZQogICAgICAgICBub2RlID0gbmV3IChtX3ZtKSBGdW5jdGlvbkNhbGxEb3ROb2RlKGxv
Y2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZv
dFN0YXJ0LCBkaXZvdEVuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmlu
ZGV4IGNhNGJiNGYwYWRlOGQ2YmM4MjY5MWE2YzAwMDE0Y2YxOThiZDg4YmQuLmNjYjA3OWQ5NzVh
MTQxYzVjNGIyZDdiNjIzMTMwMDA3MDk3Nzc4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTGV4ZXIuY3BwCkBAIC0yNSwxMCArMjUsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJMZXhlci5oIgogCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKKyNpbmNs
dWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKLQogI2lu
Y2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCi0jaW5jbHVkZSAiSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIk5vZGVJbmZvLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlIDx3
dGYvZHRvYS5oPgpAQCAtOTAsNiArOTAsNyBAQCBlbnVtIENoYXJhY3RlclR5cGUgewogCiAgICAg
Ly8gT3RoZXIgdHlwZXMgKG9ubHkgb25lIHNvIGZhcikKICAgICBDaGFyYWN0ZXJXaGl0ZVNwYWNl
LAorICAgIENoYXJhY3RlclByaXZhdGVJZGVudGlmaWVyU3RhcnQKIH07CiAKIC8vIDI1NiBMYXRp
bi0xIGNvZGVzCkBAIC0xNTgsNyArMTU5LDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0
IHR5cGVzT2ZMYXRpbjFDaGFyYWN0ZXJzWzI1Nl0gPSB7CiAvKiAgNjEgLSA9ICAgICAgICAgICAg
ICAgICAgKi8gQ2hhcmFjdGVyRXF1YWwsCiAvKiAgNjIgLSA+ICAgICAgICAgICAgICAgICAgKi8g
Q2hhcmFjdGVyR3JlYXRlciwKIC8qICA2MyAtID8gICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0
ZXJRdWVzdGlvbiwKLS8qICA2NCAtIEAgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJbnZh
bGlkLAorLyogIDY0IC0gQCAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlclByaXZhdGVJZGVu
dGlmaWVyU3RhcnQsCiAvKiAgNjUgLSBBICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRl
bnRpZmllclN0YXJ0LAogLyogIDY2IC0gQiAgICAgICAgICAgICAgICAgICovIENoYXJhY3Rlcklk
ZW50aWZpZXJTdGFydCwKIC8qICA2NyAtIEMgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJ
ZGVudGlmaWVyU3RhcnQsCkBAIC00ODYsOSArNDg3LDEwIEBAIHN0YXRpYyBjb25zdCBMQ2hhciBz
aW5nbGVDaGFyYWN0ZXJFc2NhcGVWYWx1ZXNGb3JBU0NJSVsxMjhdID0gewogfTsKIAogdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci1MZXhlcjxUPjo6TGV4ZXIoVk0qIHZtKQorTGV4ZXI8VD46OkxleGVy
KFZNKiB2bSwgSlNQYXJzZXJTdHJpY3RuZXNzIHN0cmljdG5lc3MpCiAgICAgOiBtX2lzUmVwYXJz
aW5nKGZhbHNlKQogICAgICwgbV92bSh2bSkKKyAgICAsIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlv
bihzdHJpY3RuZXNzID09IEpTUGFyc2VCdWlsdGluKQogewogfQogCkBAIC03NTMsNyArNzU1LDI3
IEBAIGlubGluZSB2b2lkIExleGVyPFQ+OjpyZWNvcmQxNihpbnQgYykKICAgICBBU1NFUlQoYyA8
PSBzdGF0aWNfY2FzdDxpbnQ+KFVTSFJUX01BWCkpOwogICAgIG1fYnVmZmVyMTYuYXBwZW5kKHN0
YXRpY19jYXN0PFVDaGFyPihjKSk7CiB9Ci0KKyAgICAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECiti
b29sIGlzU2FmZUlkZW50aWZpZXIoVk0mIHZtLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCkKK3sK
KyAgICBpZiAoIWlkZW50KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAvKiBKdXN0IGJsb2Nr
IGFueSB1c2Ugb2Ygc3VzcGljaW91cyBpZGVudGlmaWVycy4gIFRoaXMgaXMgaW50ZW5kZWQgdG8K
KyAgICAgKiBiZSB1c2VkIGFzIGEgc2FmZXR5IG5ldCB3aGlsZSBpbXBsZW1lbnRpbmcgYnVpbHRp
bnMuCisgICAgICovCisgICAgaWYgKCppZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCppZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVz
LT5hcHBseSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJv
cGVydHlOYW1lcy0+ZXZhbCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgqaWRlbnQg
PT0gdm0ucHJvcGVydHlOYW1lcy0+RnVuY3Rpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorICAgIAogdGVtcGxhdGUgPD4KIHRlbXBsYXRlIDxi
b29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4
ZXI8TENoYXI+OjpwYXJzZUlkZW50aWZpZXIoSlNUb2tlbkRhdGEqIHRva2VuRGF0YSwgdW5zaWdu
ZWQgbGV4ZXJGbGFncywgYm9vbCBzdHJpY3RNb2RlKQogewpAQCAtNzY1LDcgKzc4NywxMSBAQCB0
ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9r
ZW5UeXBlIExleGVyPExDaGFyPjo6cAogICAgICAgICAgICAgcmV0dXJuIGtleXdvcmQgPT0gUkVT
RVJWRURfSUZfU1RSSUNUICYmICFzdHJpY3RNb2RlID8gSURFTlQgOiBrZXl3b3JkOwogICAgICAg
ICB9CiAgICAgfQotCisgICAgCisgICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gbV9jdXJyZW50ID09
ICdAJyAmJiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUp
CisgICAgICAgIHNoaWZ0KCk7CisgICAgCiAgICAgY29uc3QgTENoYXIqIGlkZW50aWZpZXJTdGFy
dCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTGluZVN0YXJ0
ID0gY3VycmVudExpbmVTdGFydE9mZnNldCgpOwogICAgIApAQCAtNzc5LDE1ICs4MDUsMjYgQEAg
dGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rv
a2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKIAogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0g
MDsKICAgICAKLSAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcikgeworICAgIGlmIChzaG91
bGRDcmVhdGVJZGVudGlmaWVyIHx8IG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgewogICAgICAg
ICBpbnQgaWRlbnRpZmllckxlbmd0aCA9IGN1cnJlbnRTb3VyY2VQdHIoKSAtIGlkZW50aWZpZXJT
dGFydDsKICAgICAgICAgaWRlbnQgPSBtYWtlSWRlbnRpZmllcihpZGVudGlmaWVyU3RhcnQsIGlk
ZW50aWZpZXJMZW5ndGgpOwotCisgICAgICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24p
IHsKKyAgICAgICAgICAgIGlmICghaXNTYWZlSWRlbnRpZmllcigqbV92bSwgaWRlbnQpICYmICFp
c1ByaXZhdGVOYW1lKSB7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBtYWtl
U3RyaW5nKCJUaGUgdXNlIG9mICciLCBpZGVudC0+c3RyaW5nKCksICInIGlzIGRpc2FsbG93ZWQg
aW4gYnVpbHRpbiBmdW5jdGlvbnMuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9L
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAg
ICAgICAgICAgaWRlbnQgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZXRQcml2YXRlTmFtZSgqaWRl
bnQpOworICAgICAgICAgICAgZWxzZSBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMt
PnVuZGVmaW5lZEtleXdvcmQpCisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9ICZt
X3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkUHJpdmF0ZU5hbWU7CisgICAgICAg
ICAgICBpZiAoIWlkZW50KQorICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEX1BSSVZBVEVf
TkFNRV9FUlJPUlRPSzsKKyAgICAgICAgfQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gaWRl
bnQ7CiAgICAgfSBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAwOwogCi0gICAgaWYg
KFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYg
TGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMpKSkgeworICAgIGlmIChVTkxJS0VMWSgocmVt
YWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICEobGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25v
cmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsKICAgICAgICAgQVNTRVJUKHNo
b3VsZENyZWF0ZUlkZW50aWZpZXIpOwogICAgICAgICBpZiAocmVtYWluaW5nIDwgbWF4VG9rZW5M
ZW5ndGgpIHsKICAgICAgICAgICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSBtX3ZtLT5rZXl3
b3Jkcy0+Z2V0S2V5d29yZCgqaWRlbnQpOwpAQCAtODE0LDYgKzg1MSwxMCBAQCB0ZW1wbGF0ZSA8
Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExl
eGVyPFVDaGFyPjo6cAogICAgICAgICAgICAgcmV0dXJuIGtleXdvcmQgPT0gUkVTRVJWRURfSUZf
U1RSSUNUICYmICFzdHJpY3RNb2RlID8gSURFTlQgOiBrZXl3b3JkOwogICAgICAgICB9CiAgICAg
fQorICAgIAorICAgIGJvb2wgaXNQcml2YXRlTmFtZSA9IG1fY3VycmVudCA9PSAnQCcgJiYgbV9w
YXJzaW5nQnVpbHRpbkZ1bmN0aW9uOworICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICBz
aGlmdCgpOwogCiAgICAgY29uc3QgVUNoYXIqIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3Vy
Y2VQdHIoKTsKICAgICBpbnQgaWRlbnRpZmllckxpbmVTdGFydCA9IGN1cnJlbnRMaW5lU3RhcnRP
ZmZzZXQoKTsKQEAgLTgyNiw2ICs4NjcsNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJ
ZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAg
IH0KICAgICAKICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50ID09ICdcXCcpKSB7CisgICAgICAg
IEFTU0VSVCghaXNQcml2YXRlTmFtZSk7CiAgICAgICAgIHNldE9mZnNldEZyb21Tb3VyY2VQdHIo
aWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGluZVN0YXJ0KTsKICAgICAgICAgcmV0dXJuIHBh
cnNlSWRlbnRpZmllclNsb3dDYXNlPHNob3VsZENyZWF0ZUlkZW50aWZpZXI+KHRva2VuRGF0YSwg
bGV4ZXJGbGFncywgc3RyaWN0TW9kZSk7CiAgICAgfQpAQCAtODM3LDE4ICs4NzksMjkgQEAgdGVt
cGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2Vu
VHlwZSBMZXhlcjxVQ2hhcj46OnAKIAogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gMDsK
ICAgICAKLSAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcikgeworICAgIGlmIChzaG91bGRD
cmVhdGVJZGVudGlmaWVyIHx8IG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgewogICAgICAgICBp
bnQgaWRlbnRpZmllckxlbmd0aCA9IGN1cnJlbnRTb3VyY2VQdHIoKSAtIGlkZW50aWZpZXJTdGFy
dDsKICAgICAgICAgaWYgKGlzQWxsOEJpdCkKICAgICAgICAgICAgIGlkZW50ID0gbWFrZUlkZW50
aWZpZXJMQ2hhckZyb21VQ2hhcihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBpZGVudCA9IG1ha2VJZGVudGlmaWVyKGlkZW50aWZp
ZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCk7Ci0gICAgICAgIAorICAgICAgICBpZiAobV9wYXJz
aW5nQnVpbHRpbkZ1bmN0aW9uKSB7CisgICAgICAgICAgICBpZiAoIWlzU2FmZUlkZW50aWZpZXIo
Km1fdm0sIGlkZW50KSAmJiAhaXNQcml2YXRlTmFtZSkgeworICAgICAgICAgICAgICAgIG1fbGV4
RXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZygiVGhlIHVzZSBvZiAnIiwgaWRlbnQtPnN0cmluZygp
LCAiJyBpcyBkaXNhbGxvd2VkIGluIGJ1aWx0aW4gZnVuY3Rpb25zLiIpOworICAgICAgICAgICAg
ICAgIHJldHVybiBFUlJPUlRPSzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpc1By
aXZhdGVOYW1lKQorICAgICAgICAgICAgICAgIGlkZW50ID0gbV92bS0+cHJvcGVydHlOYW1lcy0+
Z2V0UHJpdmF0ZU5hbWUoKmlkZW50KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCppZGVudCA9PSBt
X3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkKQorICAgICAgICAgICAgICAgIHRv
a2VuRGF0YS0+aWRlbnQgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZFBy
aXZhdGVOYW1lOworICAgICAgICAgICAgaWYgKCFpZGVudCkKKyAgICAgICAgICAgICAgICByZXR1
cm4gSU5WQUxJRF9QUklWQVRFX05BTUVfRVJST1JUT0s7CisgICAgICAgIH0KICAgICAgICAgdG9r
ZW5EYXRhLT5pZGVudCA9IGlkZW50OwogICAgIH0gZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlk
ZW50ID0gMDsKICAgICAKLSAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVu
Z3RoKSAmJiAhKGxleGVyRmxhZ3MgJiBMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpKSB7
CisgICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIShsZXhl
ckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMpKSAmJiAhaXNQcml2YXRlTmFt
ZSkgewogICAgICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAgIGlm
IChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgewogICAgICAgICAgICAgY29uc3QgSGFzaEVu
dHJ5KiBlbnRyeSA9IG1fdm0tPmtleXdvcmRzLT5nZXRLZXl3b3JkKCppZGVudCk7CkBAIC0xNjU4
LDYgKzE3MTEsNyBAQCBpbk51bWJlckFmdGVyRGVjaW1hbFBvaW50OgogICAgICAgICBBU1NFUlQo
aXNJZGVudFN0YXJ0KG1fY3VycmVudCkpOwogICAgICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNl
IENoYXJhY3RlckJhY2tTbGFzaDoKKyAgICAgICAgcGFyc2VJZGVudDoKICAgICAgICAgaWYgKGxl
eGVyRmxhZ3MgJiBMZXhleEZsYWdzRG9udEJ1aWxkS2V5d29yZHMpCiAgICAgICAgICAgICB0b2tl
biA9IHBhcnNlSWRlbnRpZmllcjxmYWxzZT4odG9rZW5EYXRhLCBsZXhlckZsYWdzLCBzdHJpY3RN
b2RlKTsKICAgICAgICAgZWxzZQpAQCAtMTY3MCw2ICsxNzI0LDExIEBAIGluTnVtYmVyQWZ0ZXJE
ZWNpbWFsUG9pbnQ6CiAgICAgICAgIG1fdGVybWluYXRvciA9IHRydWU7CiAgICAgICAgIG1fbGlu
ZVN0YXJ0ID0gbV9jb2RlOwogICAgICAgICBnb3RvIHN0YXJ0OworICAgIGNhc2UgQ2hhcmFjdGVy
UHJpdmF0ZUlkZW50aWZpZXJTdGFydDoKKyAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5j
dGlvbikKKyAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudDsKKworICAgICAgICBGQUxMVEhST1VH
SDsKICAgICBjYXNlIENoYXJhY3RlckludmFsaWQ6CiAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdl
ID0gaW52YWxpZENoYXJhY3Rlck1lc3NhZ2UoKTsKICAgICAgICAgdG9rZW4gPSBFUlJPUlRPSzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAppbmRleCAyOGM2MWJhMTk4ZDJjMTVhNDli
YjE4NTJlZDMwYmVmZWI4OTA0MDA4Li5iODg3M2U5OTUwMjg2NDRiZjhjYmIzZDRjMmRhNTYyZTkz
ZTBlOGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCkBAIC03Miw3ICs3Miw3
IEBAIGNsYXNzIExleGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAogcHVibGlj
OgotICAgIExleGVyKFZNKik7CisgICAgTGV4ZXIoVk0qLCBKU1BhcnNlclN0cmljdG5lc3MpOwog
ICAgIH5MZXhlcigpOwogCiAgICAgLy8gQ2hhcmFjdGVyIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMu
CkBAIC0yMzgsNiArMjM4LDcgQEAgcHJpdmF0ZToKICAgICBJZGVudGlmaWVyQXJlbmEqIG1fYXJl
bmE7CiAKICAgICBWTSogbV92bTsKKyAgICBib29sIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsK
IH07CiAKIHRlbXBsYXRlIDw+CkBAIC0zMzUsNiArMzM2LDEyIEBAIEFMV0FZU19JTkxJTkUgY29u
c3QgSWRlbnRpZmllciogTGV4ZXI8VD46Om1ha2VMQ2hhcklkZW50aWZpZXIoY29uc3QgVUNoYXIq
IGNoYXJhCiAgICAgcmV0dXJuICZtX2FyZW5hLT5tYWtlSWRlbnRpZmllckxDaGFyRnJvbVVDaGFy
KG1fdm0sIGNoYXJhY3RlcnMsIGxlbmd0aCk7CiB9CiAKKyNpZiBBU1NFUlRfRElTQUJMRUQKK0FM
V0FZU19JTkxJTkUgYm9vbCBpc1NhZmVJZGVudGlmaWVyKFZNJiwgY29uc3QgSWRlbnRpZmllciop
IHsgcmV0dXJuIHRydWU7IH0KKyNlbHNlCitib29sIGlzU2FmZUlkZW50aWZpZXIoVk0mLCBjb25z
dCBJZGVudGlmaWVyKik7CisjZW5kaWYKKwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBBTFdBWVNf
SU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW4q
IHRva2VuUmVjb3JkLCB1bnNpZ25lZCBsZXhlckZsYWdzLCBib29sIHN0cmljdE1vZGUpCiB7CkBA
IC0zNzAsMTAgKzM3NywxNSBAQCBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+Ojps
ZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW4qIHRva2VuUmVjb3JkLCB1bgogICAgIEFTU0VSVChj
dXJyZW50T2Zmc2V0KCkgPj0gY3VycmVudExpbmVTdGFydE9mZnNldCgpKTsKIAogICAgIC8vIENy
ZWF0ZSB0aGUgaWRlbnRpZmllciBpZiBuZWVkZWQKLSAgICBpZiAobGV4ZXJGbGFncyAmIExleGV4
RmxhZ3NEb250QnVpbGRLZXl3b3JkcykKKyAgICBpZiAobGV4ZXJGbGFncyAmIExleGV4RmxhZ3NE
b250QnVpbGRLZXl3b3JkcworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgJiYgIW1fcGFy
c2luZ0J1aWx0aW5GdW5jdGlvbgorI2VuZGlmCisgICAgICAgICkKICAgICAgICAgdG9rZW5EYXRh
LT5pZGVudCA9IDA7CiAgICAgZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gbWFrZUxD
aGFySWRlbnRpZmllcihzdGFydCwgcHRyIC0gc3RhcnQpOworCiAgICAgdG9rZW5Mb2NhdGlvbi0+
bGluZSA9IG1fbGluZU51bWJlcjsKICAgICB0b2tlbkxvY2F0aW9uLT5saW5lU3RhcnRPZmZzZXQg
PSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CiAgICAgdG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZz
ZXQgPSBvZmZzZXRGcm9tU291cmNlUHRyKHN0YXJ0KTsKQEAgLTM4MSw2ICszOTMsMTMgQEAgQUxX
QVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rv
a2VuKiB0b2tlblJlY29yZCwgdW4KICAgICBBU1NFUlQodG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZz
ZXQgPj0gdG9rZW5Mb2NhdGlvbi0+bGluZVN0YXJ0T2Zmc2V0KTsKICAgICB0b2tlblJlY29yZC0+
bV9zdGFydFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbjsKICAgICB0b2tlblJlY29yZC0+bV9lbmRQ
b3NpdGlvbiA9IGN1cnJlbnRQb3NpdGlvbigpOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBp
ZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CisgICAgICAgIGlmICghaXNTYWZlSWRlbnRp
ZmllcigqbV92bSwgdG9rZW5EYXRhLT5pZGVudCkpCisgICAgICAgICAgICByZXR1cm4gRVJST1JU
T0s7CisgICAgfQorI2VuZGlmCisKICAgICBtX2xhc3RUb2tlbiA9IElERU5UOwogICAgIHJldHVy
biBJREVOVDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXgg
ZmM5Y2NkOWY2YzU3NmMxYWVmNTQ3ZjIxMWZkZDU5NmY0MmUwNTgwNi4uZDk1MmJhNmE5NGQyZjZi
NDE4MjE1NTAwNGQwYTk3MDg0MjliZDc4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5jcHAKQEAgLTEzMiw2ICsxMzIsMTIgQEAgUGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4gUHJv
Z3JhbU5vZGU6OmNyZWF0ZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQKICAg
ICByZXR1cm4gbm9kZS5yZWxlYXNlKCk7CiB9CiAKKwordm9pZCBQcm9ncmFtTm9kZTo6c2V0Q2xv
c2VkVmFyaWFibGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYgY2xvc2VkVmFy
aWFibGVzKQoreworICAgIG1fY2xvc2VkVmFyaWFibGVzID0gc3RkOjptb3ZlKGNsb3NlZFZhcmlh
Ymxlcyk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFdmFsTm9kZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBpbmxpbmUgRXZhbE5vZGU6OkV2YWxOb2Rl
KFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1l
bnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3Rh
Y2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCBkNzc5YTE3OGQ5NTZmZjk5ZmQwYmVkNWQ1ZjQ1
NGFhM2U2YjUwODc5Li44MTZmZjAwMWFiZjAzNzZjNjQyZjFhOTM4ZDBlMGE5ZjUyOWNhNmJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xNDMxLDYgKzE0MzEsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBuZWVkc0FjdGl2YXRpb24oKSBjb25zdCB7IHJl
dHVybiAoaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkgfHwgKG1fZmVhdHVyZXMgJiAoRXZhbEZlYXR1
cmUgfCBXaXRoRmVhdHVyZSB8IENhdGNoRmVhdHVyZSkpOyB9CiAgICAgICAgIGJvb2wgaGFzQ2Fw
dHVyZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiAhIW1fY2FwdHVyZWRWYXJpYWJsZXMuc2l6
ZSgpOyB9CiAgICAgICAgIHNpemVfdCBjYXB0dXJlZFZhcmlhYmxlQ291bnQoKSBjb25zdCB7IHJl
dHVybiBtX2NhcHR1cmVkVmFyaWFibGVzLnNpemUoKTsgfQorICAgICAgICBjb25zdCBJZGVudGlm
aWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2FwdHVyZWRWYXJp
YWJsZXM7IH0KICAgICAgICAgYm9vbCBjYXB0dXJlcyhjb25zdCBJZGVudGlmaWVyJiBpZGVudCkg
eyByZXR1cm4gbV9jYXB0dXJlZFZhcmlhYmxlcy5jb250YWlucyhpZGVudC5pbXBsKCkpOyB9CiAK
ICAgICAgICAgVmFyU3RhY2smIHZhclN0YWNrKCkgeyByZXR1cm4gbV92YXJTdGFjazsgfQpAQCAt
MTQ0Niw2ICsxNDQ3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0YXRlbWVudE5vZGUq
IHNpbmdsZVN0YXRlbWVudCgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgZW1pdFN0YXRlbWVudHNC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9uKTsKKyAg
ICAgICAgCisgICAgICAgIHZvaWQgc2V0Q2xvc2VkVmFyaWFibGVzKGNvbnN0IFZlY3RvcjxSZWZQ
dHI8U3RyaW5nSW1wbD4+JiYpIHsgfQogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2b2lkIHNl
dFNvdXJjZShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpIHsgbV9zb3VyY2UgPSBzb3VyY2U7IH0K
QEAgLTE0NzUsMTEgKzE0NzgsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGlj
IGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9uID0gZmFsc2U7CiAKKyAgICAgICAgdm9pZCBzZXRD
bG9zZWRWYXJpYWJsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJik7CisgICAg
ICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiBjbG9zZWRWYXJpYWJsZXMoKSBj
b25zdCB7IHJldHVybiBtX2Nsb3NlZFZhcmlhYmxlczsgfQogICAgIHByaXZhdGU6CiAgICAgICAg
IFByb2dyYW1Ob2RlKFZNKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1
bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmll
clNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMp
OwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwotCisgICAgICAgIFZlY3RvcjxSZWZQdHI8U3Ry
aW5nSW1wbD4+IG1fY2xvc2VkVmFyaWFibGVzOwogICAgICAgICB1bnNpZ25lZCBtX3N0YXJ0Q29s
dW1uOwogICAgICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKICAgICB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDI5NzY2NmU3MjZlNDVkMDgzZWYxMzQ5ZGRm
ZmRmMzdlZjgwMGRmN2EuLjUwYmVjNzlmZTM4YWRmOGYzYTA0ZjZiNDZjYmQyYTVjYmZjZjI0NmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTIwNCw4ICsyMDQs
OSBAQCBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBGdW5jdGlvblBhcmFtZXRlcnMqCiAgICAgLCBtX2xhc3RJZGVudGlmaWVyKDApCiAg
ICAgLCBtX2xhc3RGdW5jdGlvbk5hbWUobnVsbHB0cikKICAgICAsIG1fc291cmNlRWxlbWVudHMo
MCkKKyAgICAsIG1fcGFyc2luZ0J1aWx0aW4oc3RyaWN0bmVzcyA9PSBKU1BhcnNlQnVpbHRpbikK
IHsKLSAgICBtX2xleGVyID0gYWRvcHRQdHIobmV3IExleGVyVHlwZSh2bSkpOworICAgIG1fbGV4
ZXIgPSBhZG9wdFB0cihuZXcgTGV4ZXJUeXBlKHZtLCBzdHJpY3RuZXNzKSk7CiAgICAgbV9hcmVu
YSA9IG1fdm0tPnBhcnNlckFyZW5hLmdldCgpOwogICAgIG1fbGV4ZXItPnNldENvZGUoc291cmNl
LCBtX2FyZW5hKTsKICAgICBtX3Rva2VuLm1fbG9jYXRpb24ubGluZSA9IHNvdXJjZS5maXJzdExp
bmUoKTsKQEAgLTI1Niw2ICsyNTcsNyBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
SW5uZXIoKQogICAgIElkZW50aWZpZXJTZXQgY2FwdHVyZWRWYXJpYWJsZXM7CiAgICAgYm9vbCBt
b2RpZmllZFBhcmFtZXRlciA9IGZhbHNlOwogICAgIHNjb3BlLT5nZXRDYXB0dXJlZFZhcmlhYmxl
cyhjYXB0dXJlZFZhcmlhYmxlcywgbW9kaWZpZWRQYXJhbWV0ZXIpOworICAgIAogICAgIENvZGVG
ZWF0dXJlcyBmZWF0dXJlcyA9IGNvbnRleHQuZmVhdHVyZXMoKTsKICAgICBpZiAoc2NvcGUtPnN0
cmljdE1vZGUoKSkKICAgICAgICAgZmVhdHVyZXMgfD0gU3RyaWN0TW9kZUZlYXR1cmU7CkBAIC0y
NjMsMjEgKzI2NSwzNiBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoKQog
ICAgICAgICBmZWF0dXJlcyB8PSBTaGFkb3dzQXJndW1lbnRzRmVhdHVyZTsKICAgICBpZiAobW9k
aWZpZWRQYXJhbWV0ZXIpCiAgICAgICAgIGZlYXR1cmVzIHw9IE1vZGlmaWVkUGFyYW1ldGVyRmVh
dHVyZTsKLQorICAgIAorICAgIFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+IGNsb3NlZFZhcmlh
YmxlczsKKyAgICBpZiAobV9wYXJzaW5nQnVpbHRpbikgeworICAgICAgICBSRUxFQVNFX0FTU0VS
VCghY2FwdHVyZWRWYXJpYWJsZXMuc2l6ZSgpKTsKKyAgICAgICAgSWRlbnRpZmllclNldCB1c2Vk
VmFyaWFibGVzOworICAgICAgICBzY29wZS0+Z2V0VXNlZFZhcmlhYmxlcyh1c2VkVmFyaWFibGVz
KTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiB2YXJpYWJsZSA6IHVzZWRWYXJpYWJsZXMpIHsK
KyAgICAgICAgICAgIGlmIChzY29wZS0+aGFzRGVjbGFyZWRWYXJpYWJsZShJZGVudGlmaWVyKG1f
dm0sIHZhcmlhYmxlLmdldCgpKSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGlmIChzY29wZS0+aGFzRGVjbGFyZWRQYXJhbWV0ZXIoSWRlbnRp
ZmllcihtX3ZtLCB2YXJpYWJsZS5nZXQoKSkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgY2xvc2VkVmFyaWFibGVzLmFwcGVuZCh2YXJpYWJsZSk7CisgICAgICAgIH0K
KyAgICB9CiAgICAgZGlkRmluaXNoUGFyc2luZyhzb3VyY2VFbGVtZW50cywgY29udGV4dC52YXJE
ZWNsYXJhdGlvbnMoKSwgY29udGV4dC5mdW5jRGVjbGFyYXRpb25zKCksIGZlYXR1cmVzLAotICAg
ICAgICBjb250ZXh0Lm51bUNvbnN0YW50cygpLCBjYXB0dXJlZFZhcmlhYmxlcyk7CisgICAgICAg
IGNvbnRleHQubnVtQ29uc3RhbnRzKCksIGNhcHR1cmVkVmFyaWFibGVzLCBzdGQ6Om1vdmUoY2xv
c2VkVmFyaWFibGVzKSk7CiAKICAgICByZXR1cm4gcGFyc2VFcnJvcjsKIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIExleGVyVHlwZT4KIHZvaWQgUGFyc2VyPExleGVyVHlwZT46OmRpZEZpbmlzaFBh
cnNpbmcoU291cmNlRWxlbWVudHMqIHNvdXJjZUVsZW1lbnRzLCBQYXJzZXJBcmVuYURhdGE8RGVj
bGFyYXRpb25TdGFja3M6OlZhclN0YWNrPiogdmFyU3RhY2ssIAotICAgIFBhcnNlckFyZW5hRGF0
YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qIGZ1bmNTdGFjaywgQ29kZUZlYXR1
cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZh
cnMpCisgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNr
PiogZnVuY1N0YWNrLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMsIElk
ZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFycywgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBs
Pj4mJiBjbG9zZWRWYXJpYWJsZXMpCiB7CiAgICAgbV9zb3VyY2VFbGVtZW50cyA9IHNvdXJjZUVs
ZW1lbnRzOwogICAgIG1fdmFyRGVjbGFyYXRpb25zID0gdmFyU3RhY2s7CiAgICAgbV9mdW5jRGVj
bGFyYXRpb25zID0gZnVuY1N0YWNrOwogICAgIG1fY2FwdHVyZWRWYXJpYWJsZXMuc3dhcChjYXB0
dXJlZFZhcnMpOworICAgIG1fY2xvc2VkVmFyaWFibGVzID0gY2xvc2VkVmFyaWFibGVzOwogICAg
IG1fZmVhdHVyZXMgPSBmZWF0dXJlczsKICAgICBtX251bUNvbnN0YW50cyA9IG51bUNvbnN0YW50
czsKIH0KQEAgLTIzNDYsNiArMjM2MywxMCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBl
PiB2b2lkIFBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRUb2tlblRleHQoVwogICAg
IGNhc2UgUkVTRVJWRUQ6CiAgICAgICAgIG91dC5wcmludCgiVW5leHBlY3RlZCB1c2Ugb2YgcmVz
ZXJ2ZWQgd29yZCAnIiwgZ2V0VG9rZW4oKSwgIiciKTsKICAgICAgICAgcmV0dXJuOworCisgICAg
Y2FzZSBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzoKKyAgICAgICAgb3V0LnByaW50KCJJ
bnZhbGlkIHByaXZhdGUgbmFtZSAnIiwgZ2V0VG9rZW4oKSwgIiciKTsKKyAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgCiAgICAgY2FzZSBJREVOVDoKICAgICAgICAgb3V0LnByaW50KCJVbmV4
cGVjdGVkIGlkZW50aWZpZXIgJyIsIGdldFRva2VuKCksICInIik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaAppbmRleCBiNjk4ZWY5MzY4Y2I4YzhmMTk3Y2NkMDAwYWNhYTZkZmIx
MWJhMjQ0Li45MDMzODUwYzhjOTdmNTdlMjFkYTVlZWRiMDJkMDQ0ZjRjODk3OGViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTIzLDYgKzIzLDcgQEAKICNpZm5kZWYg
UGFyc2VyX2gKICNkZWZpbmUgUGFyc2VyX2gKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJz
LmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgi
CiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgpAQCAtMjU5LDYgKzI2MCwxMCBAQCBzdHJ1Y3QgU2Nv
cGUgewogICAgICAgICByZXR1cm4gaXNWYWxpZFN0cmljdE1vZGUgPyBCaW5kaW5nU3VjY2VlZGVk
IDogU3RyaWN0QmluZGluZ0ZhaWxlZDsKICAgICB9CiAKKyAgICB2b2lkIGdldFVzZWRWYXJpYWJs
ZXMoSWRlbnRpZmllclNldCYgdXNlZFZhcmlhYmxlcykKKyAgICB7CisgICAgICAgIHVzZWRWYXJp
YWJsZXMuc3dhcChtX3VzZWRWYXJpYWJsZXMpOworICAgIH0KIAogICAgIHZvaWQgdXNlVmFyaWFi
bGUoY29uc3QgSWRlbnRpZmllciogaWRlbnQsIGJvb2wgaXNFdmFsKQogICAgIHsKQEAgLTQxNCw2
ICs0MTksNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBwYXJzZShQYXJz
ZXJFcnJvciYpOwogCiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGlu
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4ZXItPnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsg
fQorICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYgY2xvc2VkVmFyaWFibGVz
KCkgeyByZXR1cm4gc3RkOjptb3ZlKG1fY2xvc2VkVmFyaWFibGVzKTsgfQogCiBwcml2YXRlOgog
ICAgIHN0cnVjdCBBbGxvd0luT3ZlcnJpZGUgewpAQCAtNTQwLDcgKzU0Niw3IEBAIHByaXZhdGU6
CiAgICAgU3RyaW5nIHBhcnNlSW5uZXIoKTsKIAogICAgIHZvaWQgZGlkRmluaXNoUGFyc2luZyhT
b3VyY2VFbGVtZW50cyosIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3Rh
Y2s+KiwgCi0gICAgICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rp
b25TdGFjaz4qLCBDb2RlRmVhdHVyZXMsIGludCwgSWRlbnRpZmllclNldCYpOworICAgICAgICBQ
YXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KiwgQ29kZUZl
YXR1cmVzLCBpbnQsIElkZW50aWZpZXJTZXQmLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0lt
cGw+PiYmKTsKIAogICAgIC8vIFVzZWQgdG8gZGV0ZXJtaW5lIHR5cGUgb2YgZXJyb3IgdG8gcmVw
b3J0LgogICAgIGJvb2wgaXNGdW5jdGlvbkJvZHlOb2RlKFNjb3BlTm9kZSopIHsgcmV0dXJuIGZh
bHNlOyB9CkBAIC04NDAsOSArODQ2LDExIEBAIHByaXZhdGU6CiAgICAgY29uc3QgSWRlbnRpZmll
ciogbV9sYXN0RnVuY3Rpb25OYW1lOwogICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlckNhY2hlPiBt
X2Z1bmN0aW9uQ2FjaGU7CiAgICAgU291cmNlRWxlbWVudHMqIG1fc291cmNlRWxlbWVudHM7Cisg
ICAgYm9vbCBtX3BhcnNpbmdCdWlsdGluOwogICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlv
blN0YWNrczo6VmFyU3RhY2s+KiBtX3ZhckRlY2xhcmF0aW9uczsKICAgICBQYXJzZXJBcmVuYURh
dGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KiBtX2Z1bmNEZWNsYXJhdGlvbnM7
CiAgICAgSWRlbnRpZmllclNldCBtX2NhcHR1cmVkVmFyaWFibGVzOworICAgIFZlY3RvcjxSZWZQ
dHI8U3RyaW5nSW1wbD4+IG1fY2xvc2VkVmFyaWFibGVzOwogICAgIENvZGVGZWF0dXJlcyBtX2Zl
YXR1cmVzOwogICAgIGludCBtX251bUNvbnN0YW50czsKICAgICAKQEAgLTk1Nyw2ICs5NjUsMTAg
QEAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBwYXJzZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgRnVuY3Rpb25QYXJhbWV0ZXIKICAgICAgICAgUmVmUHRyPFBhcnNlZE5vZGU+IHJl
c3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvcik7CiAgICAgICAgIGlmIChwb3Np
dGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOworICAgICAgICBpZiAo
c3RyaWN0bmVzcyA9PSBKU1BhcnNlQnVpbHRpbikgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQocmVzdWx0KTsKKyAgICAgICAgICAgIHJlc3VsdC0+c2V0Q2xvc2VkVmFyaWFibGVzKHN0ZDo6
bW92ZShwYXJzZXIuY2xvc2VkVmFyaWFibGVzKCkpKTsKKyAgICAgICAgfQogICAgICAgICByZXR1
cm4gcmVzdWx0LnJlbGVhc2UoKTsKICAgICB9CiAgICAgUGFyc2VyPExleGVyPFVDaGFyPj4gcGFy
c2VyKHZtLCBzb3VyY2UsIHBhcmFtZXRlcnMsIG5hbWUsIHN0cmljdG5lc3MsIHBhcnNlck1vZGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCmluZGV4IDRlOWEx
N2NkMjFjYTM0MTQ2YmJkNDgxNTZhMzcyY2Q0MDRkZWY2MGMuLmY3YTc1YmY3YzM3ODU3ZTQ0YjZk
NWQ3MWY0NTI5YmIxYWMxY2Y1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyTW9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlck1vZGVzLmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0g
SlNQYXJzZXJTdHJpY3RuZXNzIHsgSlNQYXJzZU5vcm1hbCwgSlNQYXJzZVN0cmljdCB9OworZW51
bSBKU1BhcnNlclN0cmljdG5lc3MgeyBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlQnVpbHRpbiwgSlNQ
YXJzZVN0cmljdCB9OwogZW51bSBKU1BhcnNlck1vZGUgeyBKU1BhcnNlUHJvZ3JhbUNvZGUsIEpT
UGFyc2VGdW5jdGlvbkNvZGUgfTsKIAogZW51bSBQcm9maWxlck1vZGUgeyBQcm9maWxlck9mZiwg
UHJvZmlsZXJPbiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJUb2tlbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5z
LmgKaW5kZXggODJhMjY2MzlhNzkyMjBhMDg0NDU2YjQ4ZjMyODUyZDE0M2M3MzlkMC4uOGM4N2Fk
OWZhZGJkYzRhZjM5YWM5OWRiMmQ4NDQ1ZTEzZmZmZDM1YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCkBAIC0xNDksNiArMTQ5LDcgQEAgZW51bSBKU1Rv
a2VuVHlwZSB7CiAgICAgSU5WQUxJRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0sgPSA3IHwgRXJy
b3JUb2tlbkZsYWcsCiAgICAgVU5URVJNSU5BVEVEX1NUUklOR19MSVRFUkFMX0VSUk9SVE9LID0g
OCB8IEVycm9yVG9rZW5GbGFnIHwgVW50ZXJtaW5hdGVkRXJyb3JUb2tlbkZsYWcsCiAgICAgSU5W
QUxJRF9TVFJJTkdfTElURVJBTF9FUlJPUlRPSyA9IDkgfCBFcnJvclRva2VuRmxhZywKKyAgICBJ
TlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSyA9IDEwIHwgRXJyb3JUb2tlbkZsYWcKIH07CiAK
IHN0cnVjdCBKU1RleHRQb3NpdGlvbiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcmdMaXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
Z0xpc3QuY3BwCmluZGV4IGUxMzEwNGRmNTkyMmQwNzc2MjU3ZDA1Y2I1ZTg3MDUzN2QyMTQyOGEu
LjI0YzA2YmJiMWMyYzM0YjlkYTVlZjg0YjI1NWM5OTAwZGFmODU5MTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwCkBAIC0yMiw3ICsyMiw3IEBACiAjaW5jbHVk
ZSAiQXJnTGlzdC5oIgogCiAjaW5jbHVkZSAiSGVhcFJvb3RWaXNpdG9yLmgiCi0jaW5jbHVkZSAi
SlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNPYmplY3QuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCmluZGV4IDhmZDE5NWNiOWI1ZjdlZjViZjNkMmZk
OTMzNDJiMDEwMjcyNWZhZjEuLjRmYmFjNjg4NjM0ODYxNzE2NDlhMzM0ZDYxYjVkY2MzODE0ZGQ1
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcApAQCAt
MjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgogCiAjaW5jbHVkZSAiQ2FsbEZy
YW1lSW5saW5lcy5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAi
SlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNBcmd1bWVudHNJdGVyYXRvci5oIgogI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FyZ3VtZW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRz
LmgKaW5kZXggMThmMzg5MTcxMzg1MjM2MmM3YTc1YTMwNTNiNDYzMTQxN2JlYjgxYi4uZjE2ZmQz
ZGU0MDU1OTcwYmE5ZDljNmYwYWU2MzE4ZjIyMDRiNjU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNkZWZpbmUgQXJndW1l
bnRzX2gKIAogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlm
aWVycy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvckNvbnN0cnVj
dG9yLmNwcAppbmRleCBhZmI1OTc5MGNiMDA5OTg5YmI3YjQyODYzZTkxODIzMzU3NmI4YWFjLi45
MWNhY2RmYTg1N2ViNjkzNzZhMzA4MWE4YzcwMmFjOWMyMTdjYTdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvckNv
bnN0cnVjdG9yLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50c0l0ZXJh
dG9yQ29uc3RydWN0b3IuaCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBl
LmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJKU0FyZ3VtZW50
c0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJK
U0NlbGxJbmxpbmVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKaW5kZXggZGQwODk0ZjE0YTAy
MWQ1ZjEyNjU4YWNiMDFlNzIxZmNkNmQzNDhjYy4uNWI0YWU4NzE2YjA1NTNiZTQ2MjM5NTVlOTll
MWI0M2ViZjE4ZmUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtMjYsNyArMjYsOSBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90
eXBlLmgiCiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkpTQXJn
dW1lbnRzSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQ
cm90b3R5cGUuY3BwCmluZGV4IDI3YWM2ZDQ4YTcxZjc5NTUwMmExMGNlYTY0Nzg2NTQxMzVhNDYz
YTAuLjZkYzdiZTU2OTY5ZGU2N2Y2MjEwN2JiM2E1MWEzMDhmYTNiYTc2YmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTMzLDYg
KzMzLDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJKU1N0cmluZ0J1aWxkZXIuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMu
aCIKICNpbmNsdWRlICJKU1N0cmluZ0pvaW5lci5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2lu
Y2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgpAQCAtNTYsNyArNTcsNiBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NsaWNlKEV4ZWNTdGF0ZSopOwog
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTb3J0KEV4
ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b0Z1bmNTcGxpY2UoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheVByb3RvRnVuY1VuU2hpZnQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0V2ZXJ5KEV4ZWNTdGF0ZSopOwogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNGb3JFYWNoKEV4
ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b0Z1bmNTb21lKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlQcm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0ZSopOwpAQCAtOTU0LDY5ICs5NTQsNiBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jTWFwKEV4ZWNTdGF0
ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdEFycmF5KTsKIH0KIAot
Ly8gRG9jdW1lbnRhdGlvbiBmb3IgdGhlc2UgdGhyZWUgaXMgYXZhaWxhYmxlIGF0OgotLy8gaHR0
cDovL2RldmVsb3Blci10ZXN0Lm1vemlsbGEub3JnL2VuL2RvY3MvQ29yZV9KYXZhU2NyaXB0XzEu
NV9SZWZlcmVuY2U6T2JqZWN0czpBcnJheTpldmVyeQotLy8gaHR0cDovL2RldmVsb3Blci10ZXN0
Lm1vemlsbGEub3JnL2VuL2RvY3MvQ29yZV9KYXZhU2NyaXB0XzEuNV9SZWZlcmVuY2U6T2JqZWN0
czpBcnJheTpmb3JFYWNoCi0vLyBodHRwOi8vZGV2ZWxvcGVyLXRlc3QubW96aWxsYS5vcmcvZW4v
ZG9jcy9Db3JlX0phdmFTY3JpcHRfMS41X1JlZmVyZW5jZTpPYmplY3RzOkFycmF5OnNvbWUKLQot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0V2ZXJ5KEV4ZWNTdGF0
ZSogZXhlYykKLXsKLSAgICBKU09iamVjdCogdGhpc09iaiA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUo
KS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7Ci0gICAgdW5zaWduZWQg
bGVuZ3RoID0gdGhpc09iai0+Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgp
LnRvVUludDMyKGV4ZWMpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQotICAgIEpTVmFsdWUgZnVu
Y3Rpb24gPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBD
YWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAg
aWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYyk7Ci0KLSAgICBKU1ZhbHVlIGFwcGx5VGhpcyA9IGV4ZWMtPmFyZ3VtZW50KDEp
OwotCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4odHJ1ZSk7Ci0KLSAgICB1bnNpZ25l
ZCBrID0gMDsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVKUyAmJiBpc0pTQXJyYXkodGhp
c09iaikpIHsKLSAgICAgICAgSlNGdW5jdGlvbiogZiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZnVu
Y3Rpb24pOwotICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodGhpc09iaik7Ci0gICAg
ICAgIENhY2hlZENhbGwgY2FjaGVkQ2FsbChleGVjLCBmLCAzKTsKLSAgICAgICAgZm9yICg7IGsg
PCBsZW5ndGggJiYgIWV4ZWMtPmhhZEV4Y2VwdGlvbigpOyArK2spIHsKLSAgICAgICAgICAgIGlm
IChVTkxJS0VMWSghYXJyYXktPmNhbkdldEluZGV4UXVpY2tseShrKSkpCi0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0VGhpcyhh
cHBseVRoaXMpOwotICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudCgwLCBhcnJheS0+
Z2V0SW5kZXhRdWlja2x5KGspKTsKLSAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQo
MSwganNOdW1iZXIoaykpOwotICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudCgyLCB0
aGlzT2JqKTsKLSAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FjaGVkQ2FsbC5jYWxsKCk7
Ci0gICAgICAgICAgICBpZiAoIXJlc3VsdC50b0Jvb2xlYW4oZXhlYykpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKLSAgICAgICAgfQot
ICAgIH0KLSAgICBmb3IgKDsgayA8IGxlbmd0aCAmJiAhZXhlYy0+aGFkRXhjZXB0aW9uKCk7ICsr
aykgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqKTsKLSAgICAgICAgaWYgKCF0
aGlzT2JqLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaywgc2xvdCkpCi0gICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBlYWNoQXJndW1lbnRzOwotICAg
ICAgICBlYWNoQXJndW1lbnRzLmFwcGVuZChzbG90LmdldFZhbHVlKGV4ZWMsIGspKTsKLSAgICAg
ICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQoanNOdW1iZXIoaykpOwotICAgICAgICBlYWNoQXJndW1l
bnRzLmFwcGVuZCh0aGlzT2JqKTsKLQotICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCi0g
ICAgICAgIGJvb2wgcHJlZGljYXRlUmVzdWx0ID0gY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5
cGUsIGNhbGxEYXRhLCBhcHBseVRoaXMsIGVhY2hBcmd1bWVudHMpLnRvQm9vbGVhbihleGVjKTsK
LSAgICAgICAgaWYgKCFwcmVkaWNhdGVSZXN1bHQpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGpz
Qm9vbGVhbihmYWxzZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKLX0KLQogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0ZvckVhY2goRXhlY1N0YXRlKiBleGVjKQogewog
ICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpLnRvVGhpcyhleGVj
LCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IDUxMGUzODNmYWU1NzVhYWRhODE3NmMwNDQxZWU3MjVi
NDNhNGM3MzIuLmQzMDQ4NzdmZTljZGUxYzA5MTlmZDQ1OTVmODExZWNhYmNlNzcyNzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtMTQ0LDI0ICsx
NDQsMjYgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNoZTo6Z2V0RnVuY3Rp
b25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUoVk0mIHYKICAgICBKU1RleHRQb3NpdGlvbiBwb3Np
dGlvbkJlZm9yZUxhc3ROZXdsaW5lOwogICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9
IHBhcnNlPFByb2dyYW1Ob2RlPigmdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBKU1BhcnNl
Tm9ybWFsLCBKU1BhcnNlUHJvZ3JhbUNvZGUsIGVycm9yLCAmcG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZSk7CiAgICAgaWYgKCFwcm9ncmFtKSB7Ci0gICAgICAgIEFTU0VSVChlcnJvci5tX3R5cGUg
IT0gUGFyc2VyRXJyb3I6OkVycm9yTm9uZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVycm9y
Lm1fdHlwZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKICAgICAgICAgbV9zb3VyY2VDb2Rl
LnJlbW92ZShhZGRSZXN1bHQuaXRlcmF0b3IpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAK
ICAgICAvLyBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgYW4gaW5wdXQgc3RyaW5nIHRoYXQgd291bGQg
cmVzdWx0IGluIGEgc2luZ2xlIGFub255bW91cyBmdW5jdGlvbiBleHByZXNzaW9uLgogICAgIFN0
YXRlbWVudE5vZGUqIGV4cHJTdGF0ZW1lbnQgPSBwcm9ncmFtLT5zaW5nbGVTdGF0ZW1lbnQoKTsK
LSAgICBBU1NFUlQoZXhwclN0YXRlbWVudCk7Ci0gICAgQVNTRVJUKGV4cHJTdGF0ZW1lbnQtPmlz
RXhwclN0YXRlbWVudCgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChleHByU3RhdGVtZW50KTsKKyAg
ICBSRUxFQVNFX0FTU0VSVChleHByU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CiAgICAg
RXhwcmVzc2lvbk5vZGUqIGZ1bmNFeHByID0gc3RhdGljX2Nhc3Q8RXhwclN0YXRlbWVudE5vZGUq
PihleHByU3RhdGVtZW50KS0+ZXhwcigpOwotICAgIEFTU0VSVChmdW5jRXhwcik7CisgICAgUkVM
RUFTRV9BU1NFUlQoZnVuY0V4cHIpOwogICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmNFeHByLT5pc0Z1
bmNFeHByTm9kZSgpKTsKICAgICBGdW5jdGlvbkJvZHlOb2RlKiBib2R5ID0gc3RhdGljX2Nhc3Q8
RnVuY0V4cHJOb2RlKj4oZnVuY0V4cHIpLT5ib2R5KCk7CisgICAgUkVMRUFTRV9BU1NFUlQoIXBy
b2dyYW0tPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpOworICAgIAogICAgIGJvZHktPnNldEVuZFBv
c2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwotICAgIEFTU0VSVChib2R5KTsKLSAg
ICBBU1NFUlQoYm9keS0+aWRlbnQoKS5pc051bGwoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9k
eSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keS0+aWRlbnQoKS5pc051bGwoKSk7CiAKLSAgICBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgYm9keSwgdHJ1ZSk7CisgICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIGJvZHksIHRydWUsIFVubGlu
a2VkTm9ybWFsRnVuY3Rpb24pOwogICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+bV9uYW1lVmFsdWUu
c2V0KHZtLCBmdW5jdGlvbkV4ZWN1dGFibGUsIGpzU3RyaW5nKCZ2bSwgbmFtZS5zdHJpbmcoKSkp
OwogCiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IFNvdXJjZUNvZGVWYWx1ZSh2bSwg
ZnVuY3Rpb25FeGVjdXRhYmxlLCBtX3NvdXJjZUNvZGUuYWdlKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCmluZGV4IDNmNWM2
NDVjMDk4ZDUyN2ZjMGM3MjU5ZTk0NDdlZmJlODg2OGEyOWMuLjJmYzJiNzI3YWZjZWVlMWVjMmM2
MjVkZTU2NzViM2JlMWNmNjBkNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKQEAgLTI3LDcgKzI3LDEwIEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAjZGVmaW5lIElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRShuYW1lKSAsIG5hbWUo
dm0sICNuYW1lKQogI2RlZmluZSBJTklUSUFMSVpFX0tFWVdPUkQobmFtZSkgLCBuYW1lIyNLZXl3
b3JkKHZtLCAjbmFtZSkKLSNkZWZpbmUgSU5JVElBTElaRV9QUklWQVRFX05BTUUobmFtZSkgLCBu
YW1lIyNQcml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tKFByaXZhdGVOYW1lKCkpKQorI2RlZmlu
ZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFNRShuYW1lKSBcCisgICAgLCBuYW1lIyNQcml2YXRlTmFt
ZShJZGVudGlmaWVyOjpmcm9tKFByaXZhdGVOYW1lKCkpKSBcCisgICAgLCBtXyMjbmFtZSMjUHVi
bGljU3RyaW5nUGFpcihuYW1lLCBuYW1lIyNQcml2YXRlTmFtZSkgXAorCiAKIENvbW1vbklkZW50
aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyhWTSogdm0pCiAgICAgOiBudWxsSWRlbnRpZmllcigp
CkBAIC0zOCw4ICs0MSwyNiBAQCBDb21tb25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMo
Vk0qIHZtKQogICAgICwgaGFzTmV4dElkZW50aWZpZXIodm0sICJoYXNOZXh0IikKICAgICBKU0Nf
Q09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZV09SRChJTklUSUFMSVpFX0tFWVdPUkQpCiAgICAg
SlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElaRV9QUk9Q
RVJUWV9OQU1FKQorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShJTklUSUFM
SVpFX1BST1BFUlRZX05BTUUpCiAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VB
Q0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpFX1BSSVZBVEVfTkFNRSkKIHsKIH0KIAorY29uc3Qg
SWRlbnRpZmllciogQ29tbW9uSWRlbnRpZmllcnM6OmdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50
aWZpZXImIGlkZW50KSBjb25zdAoreworI2RlZmluZSBSRVRVUk5fSUZfUFJJVkFURV9OQU1FX01B
VENIRVMobmFtZSkgaWYgKG1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQYWlyLmZpcnN0ID09IGlkZW50
KSByZXR1cm4gJm1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQYWlyLnNlY29uZDsKKyAgICBKU0NfQ09N
TU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKFJFVFVSTl9JRl9QUklW
QVRFX05BTUVfTUFUQ0hFUykKKyN1bmRlZiBSRVRVUk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMK
KyAgICByZXR1cm4gMDsKK30KKworSWRlbnRpZmllciBDb21tb25JZGVudGlmaWVyczo6Z2V0UHVi
bGljTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK3sKKyNkZWZpbmUgUkVUVVJO
X0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKG5hbWUpIGlmIChtXyMjbmFtZSMjUHVibGljU3RyaW5n
UGFpci5zZWNvbmQgPT0gaWRlbnQpIHJldHVybiBtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpci5m
aXJzdDsKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9O
QU1FKFJFVFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hFUykKKyN1bmRlZiBSRVRVUk5fSUZfUFJJ
VkFURV9OQU1FX01BVENIRVMKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBlbXB0eUlkZW50aWZpZXI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXgg
ZThmOWVkODJiYzc5NDYyMDM4MjY2YjMwMjA3ODIyNDdiMWZhMjdhMy4uOTI0ZDM2YWM2OTEzNTAz
NTdjYjM4MmIxZWYzYjQwYTBhMDhjMGFiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0yMiw2ICsyMiw3IEBACiAjZGVmaW5l
IENvbW1vbklkZW50aWZpZXJzX2gKIAogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKKyNpbmNsdWRl
ICJKU0NCdWlsdGlucy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiAvLyBNYXJr
ZWRBcmd1bWVudEJ1ZmZlciBvZiBwcm9wZXJ0eSBuYW1lcywgcGFzc2VkIHRvIGEgbWFjcm8gc28g
d2UgY2FuIGRvIHNldCB0aGVtIHVwIHZhcmlvdXMKQEAgLTEzMyw4ICsxMzQsMTAgQEAKICAgICBt
YWNybyhvc3JFeGl0cykgXAogICAgIG1hY3JvKHBhcnNlKSBcCiAgICAgbWFjcm8ocHJvZmlsZWRC
eXRlY29kZXMpIFwKKyAgICBtYWNybyhwcm9taXNlKSBcCiAgICAgbWFjcm8ocHJvcGVydHlJc0Vu
dW1lcmFibGUpIFwKICAgICBtYWNybyhwcm90b3R5cGUpIFwKKyAgICBtYWNybyhyZXNvbHZlKSBc
CiAgICAgbWFjcm8oc2V0KSBcCiAgICAgbWFjcm8oc2l6ZSkgXAogICAgIG1hY3JvKHNsaWNlKSBc
CkBAIC0xNTUsNyArMTU4LDE0IEBACiAgICAgbWFjcm8odmFsdWVzKSBcCiAgICAgbWFjcm8odmFs
dWVPZikgXAogICAgIG1hY3JvKHdpbmRvdykgXAotICAgIG1hY3JvKHdyaXRhYmxlKQorICAgIG1h
Y3JvKHdyaXRhYmxlKSBcCisgICAgbWFjcm8oaXRlcmF0b3IpIFwKKyAgICBtYWNybyhpdGVyYXRv
ck5leHQpIFwKKyAgICBtYWNybyhyZWplY3QpIFwKKyAgICBtYWNybyhmdWxmaWxsbWVudEhhbmRs
ZXIpIFwKKyAgICBtYWNybyhyZWplY3Rpb25IYW5kbGVyKSBcCisgICAgbWFjcm8oZGVmZXJyZWQp
IFwKKyAgICBtYWNybyhjb3VudGRvd25Ib2xkZXIpIFwKIAogI2RlZmluZSBKU0NfQ09NTU9OX0lE
RU5USUZJRVJTX0VBQ0hfS0VZV09SRChtYWNybykgXAogICAgIG1hY3JvKGJyZWFrKSBcCkBAIC0y
MDMsNyArMjEzLDcgQEAKICAgICBtYWNybyh2b2lkKSBcCiAgICAgbWFjcm8od2hpbGUpIFwKICAg
ICBtYWNybyh3aXRoKSBcCi0gICAgbWFjcm8oeWllbGQpCisgICAgbWFjcm8oeWllbGQpIFwKIAog
I2RlZmluZSBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1F
KG1hY3JvKSBcCiAgICAgbWFjcm8oaXRlcmF0b3IpIFwKQEAgLTIxNiw3ICsyMjYsMTIgQEAKICAg
ICBtYWNybyhpbmRleCkgXAogICAgIG1hY3JvKHZhbHVlcykgXAogICAgIG1hY3JvKGRlZmVycmVk
KSBcCi0gICAgbWFjcm8oY291bnRkb3duSG9sZGVyKQorICAgIG1hY3JvKGNvdW50ZG93bkhvbGRl
cikgXAorICAgIG1hY3JvKE9iamVjdCkgXAorICAgIG1hY3JvKFR5cGVFcnJvcikgXAorICAgIG1h
Y3JvKHVuZGVmaW5lZEtleXdvcmQpIFwKKyAgICBtYWNybyhjYWxsKSBcCisgICAgbWFjcm8oYXBw
bHkpCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0yNDAsMTEgKzI1NSwxNSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgCiAjZGVmaW5lIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJPUEVSVFlf
TkFNRV9HTE9CQUwobmFtZSkgY29uc3QgSWRlbnRpZmllciBuYW1lOwogICAgICAgICBKU0NfQ09N
TU9OX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShKU0NfSURFTlRJRklFUl9ERUNMQVJF
X1BST1BFUlRZX05BTUVfR0xPQkFMKQorICAgICAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNU
SU9OX05BTUUoSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJUWV9OQU1FX0dMT0JBTCkKICN1
bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFMCiAKLSNkZWZp
bmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMKG5h
bWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSMjUHJpdmF0ZU5hbWU7CisjZGVmaW5lIEpTQ19JREVO
VElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTChuYW1lKSBjb25zdCBJ
ZGVudGlmaWVyIG5hbWUjI1ByaXZhdGVOYW1lOyBjb25zdCBzdGQ6OnBhaXI8SWRlbnRpZmllciwg
SWRlbnRpZmllcj4gbV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXI7CiAgICAgICAgIEpTQ19DT01N
T05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSlNDX0lERU5USUZJRVJf
REVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMKQogI3VuZGVmIEpTQ19JREVOVElG
SUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTAorICAgICAgICAKKyAgICAg
ICAgY29uc3QgSWRlbnRpZmllciogZ2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNv
bnN0OworICAgICAgICBJZGVudGlmaWVyIGdldFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYp
IGNvbnN0OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggMDc1ODc1ZmIyMzE2
YTU1NTcwNTBhNjY5MGNkMGY5ODgyNDg0ZjVmMy4uNWFmOTA4NzU0ZTc0N2Y4Y2FlMGNkMDRhZjhk
NDkxNTAwNDY4YzJhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCkBAIC00MSw3ICs0MSw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAj
aW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKLSNpbmNsdWRl
ICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRl
ICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAj
aW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcApp
bmRleCA1NTMzNGJlMmY5ODBhOThmN2ZlYTQyYTA1YmUwZjIwYzAxOWZmMGRkLi4xNmViYWQxMGU0
ZTQyYjZiNzg1ZTk3OGQzOGU4NzBlM2I1YTZjNDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcApA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgogI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgQ29tbW9uU2xvd1BhdGhzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggMDVlMTFlMGI4MGEzNDMwYWVhYjIy
YjAyMjJhMjEyZjRhOGUyYzQ5Yi4uMzY0Y2M3MTY2NjA4YjUwMDdkNDc3ZDg3MzkxOGE1ZDY0YjE2
ODY1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9u
SGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9u
SGVscGVycy5jcHAKQEAgLTgxLDYgKzgxLDExIEBAIEpTT2JqZWN0KiBjcmVhdGVTdGFja092ZXJm
bG93RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogSlNPYmplY3QqIGNyZWF0
ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCkKIHsKKyAgICAKKyAgICBpZiAoaWRlbnQuaW1wbCgpLT5pc0VtcHR5VW5pcXVlKCkp
IHsKKyAgICAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2FuJ3QgZmluZCBwcml2YXRl
IHZhcmlhYmxlOiBAIiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdldFB1YmxpY05hbWUoaWRlbnQp
LnN0cmluZygpKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBt
ZXNzYWdlKTsKKyAgICB9CiAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogIiwgaWRlbnQuc3RyaW5nKCkpKTsKICAgICByZXR1cm4gY3JlYXRlUmVmZXJl
bmNlRXJyb3IoZXhlYywgbWVzc2FnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmgKaW5kZXggMTk4OTc2YmIzZmU2ZTZlOTExNzk4MTJkMWNhZjliOGJmOWJm
ZDBiYi4uY2YwZTc1M2E3YzVmNTQ0NjdiNjRkOGUyYTliM2ZiYTI3MTUwMDAxMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtNDg0LDcgKzQ4NCw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBl
eGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZh
dGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UpOyB9CisgICAgRXhlY3V0
YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhu
ZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxz
ZSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRF
dmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mRnVu
Y3Rpb25EZWNscygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1iZXJPZkZ1
bmN0aW9uRGVjbHMoKTsgfQpAQCAtNTQwLDcgKzU0MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
Y2xlYXJDb2RlKCk7CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0
IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBp
c1N0cmljdE1vZGUoKSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUlu
Zm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNl
c0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSk7IH0KIAogcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKQEAgLTYyOCw3ICs2MjgsOCBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2tGb3Ioa2luZCk7CiAg
ICAgfQotICAgICAgICAKKworICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKTsgfQogICAgIGNv
bnN0IElkZW50aWZpZXImIG5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFt
ZSgpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgaW5mZXJyZWROYW1lKCkgeyByZXR1cm4gbV91
bmxpbmtlZEV4ZWN1dGFibGUtPmluZmVycmVkTmFtZSgpOyB9CiAgICAgSlNTdHJpbmcqIG5hbWVW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1lVmFsdWUoKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5
cGUuY3BwCmluZGV4IGMxYjA4YWYyZDgxOGRhZTU3ZTFiMDBmZGExNzNhODE2MTM3NTI5YjUuLjEy
NDkwYzQwZjMzNDE3ZWNhOTIzODUwYTBkYzY2MmRiYmNkNDBmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKQEAgLTIyLDEy
ICsyMiwxMyBAQAogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAKICNpbmNsdWRlICJB
cmd1bWVudHMuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXku
aCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1N0cmluZ0J1aWxkZXIuaCIKLSNp
bmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkxleGVyLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCkBAIC0xMDgsNyArMTA5
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByb3RvRnVuY1RvU3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RU
aGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8o
KSkpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+
KHRoaXNWYWx1ZSk7Ci0gICAgICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSkKKyAg
ICAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQogICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJm
dW5jdGlvbiAiLCBmdW5jdGlvbi0+bmFtZShleGVjKSwgIigpIHtcbiAgICBbbmF0aXZlIGNvZGVd
XG59IikpOwogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBmdW5jdGlv
bi0+anNFeGVjdXRhYmxlKCk7CiAgICAgICAgIFN0cmluZyBzb3VyY2VTdHJpbmcgPSBleGVjdXRh
YmxlLT5zb3VyY2UoKS50b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQWN0aXZhdGlvbi5jcHAKaW5kZXggNzJlZDFjNzEyNDA2MTE2OGIwYWRkZDMxMTZmNzU1
YTExN2I4ZmI5MC4uYjM3NDk0MzA5OWUyMTU1YTM5NzcxMzMxMzQ3MDJjMmEyNGFjYzg2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCkBAIC01
OCw3ICs1OCw3IEBAIHZvaWQgSlNBY3RpdmF0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAKIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3lt
Ym9sVGFibGVHZXQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVH
ZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRy
eSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlm
IChlbnRyeS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC03Miw3ICs3Miw3
IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90CiAKIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6
c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xU
YWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9s
VGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUu
dWlkKCkpOwogICAgIGlmIChlbnRyeS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CkBAIC04OSw3ICs4OSw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQ
dXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOCiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAo
dmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwogICAgIAotICAgIFN5bWJvbFRhYmxlRW50cnkg
ZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUo
KSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdl
dChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChlbnRyeS5pc051bGwoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGlmIChlbnRyeS5pc1JlYWRPbmx5KCkpIHsKQEAgLTEzNiw3ICsx
MzYsNyBAQCBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJp
YnV0ZXMoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcAogICAgIFdyaXRlQmFycmllckJhc2U8VW5r
bm93bj4qIHJlZzsKICAgICB7CiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5
bWJvbFRhYmxlKCktPm1fbG9jayk7Ci0gICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9y
IGl0ZXIgPSBzeW1ib2xUYWJsZSgpLT5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05h
bWUoKSk7CisgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xU
YWJsZSgpLT5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICAgICAgaWYgKGl0
ZXIgPT0gc3ltYm9sVGFibGUoKS0+ZW5kKGxvY2tlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5ID0gaXRlci0+dmFsdWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3Iu
Y3BwCmluZGV4IDJmY2Y4ODE1YzA1NjgwNTgxMmE3OTkxYTVmZjA2M2Q2ODczOTcxNjQuLjlhOTI1
ODNhYTBlYzkwZGJiMzI4ZWNkNTBkYzMxMzlhZWYwMjczYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwCkBAIC0yNyw2
ICsyNyw3IEBACiAjaW5jbHVkZSAiSlNBcmd1bWVudHNJdGVyYXRvci5oIgogCiAjaW5jbHVkZSAi
QXJndW1lbnRzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKaW5kZXgg
OTAwN2I1ZjdkM2YxMDNiMWQyMWIxYTM2NWEyNmMyMTVjMzJiNGQyOC4uYmEwYTJkMzhlOWM1M2Ux
NTkzN2Q0NmE4OTUxYThjOGM0NTA3OTI2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgi
CiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSW5kZXhpbmdIZWFkZXJJbmxp
bmVzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlO
YW1lQXJyYXkuaCIKICNpbmNsdWRlICJSZWplY3QuaCIKICNpbmNsdWRlIDx3dGYvQVZMVHJlZS5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJh
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5j
cHAKaW5kZXggZDUwNmM0ZWJkMjYyMGVmZDcwNzkzYTg3M2QwODUyZmJkOTc4Mjg1OS4uY2YzNzA5
N2VjMGM2OTI1YTg2N2I4YzAxMGMwZWZjNDA3NDQ4NWYxZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3BwCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJTbG90VmlzaXRv
cklubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWUuY3BwCmluZGV4IGNjYTY4ODhiZjk4YTAyODY0NmNhM2RkZGYzNzYy
N2NlMGU3ZDkzMDIuLjMzOWE3YWI3ZjU5NTE1ZTk2YWZiN2VjNGI4NzQxZTdhYThlMTY2ZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCkBAIC0zMiw3
ICszMiw5IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiSlNOb3RBbk9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5s
aW5lcy5oIgogI2luY2x1ZGUgIk51bWJlck9iamVjdC5oIgorI2luY2x1ZGUgIk9wZXJhdGlvbnMu
aCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRy
YXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5o
CmluZGV4IGY3Yzg0NDY0NTA5MmIyNTA4MDVlNmU4ZDQ4MzJjOTk4YmRiODliNTQuLmQ3OTVkZDU2
YTk3ZGRiNTk3YzA5MGZjMmUwYjdmMzA4ZTMzZWJjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKQEAgLTI3LDggKzI3LDEwIEBACiAjZGVmaW5l
IEpTQ2VsbElubGluZXNfaAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29t
bW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJEZWZlckdDLmgiCiAjaW5jbHVkZSAiSGFuZGxl
LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIK
ICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDI0MTk2NDYxMGJiNDQy
N2IxODYzNzMzNDZlMjRmNWE4MmQwY2RjYzQuLjdiZWY1OTFiMTRmMzVmMWE5MzQ4YWRlOWE5ZTBm
NTkwZWI2YWRmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uY3BwCkBAIC0xMDksNiArMTA5LDE0IEBAIHZvaWQgSlNGdW5jdGlvbjo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBpbnQgbGVuZ3RoCiAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCks
IERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KIAorSlNGdW5jdGlvbiogSlNG
dW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxl
KiBleGVjdXRhYmxlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIEpTRnVu
Y3Rpb24qIGZ1bmN0aW9uID0gY3JlYXRlKHZtLCBleGVjdXRhYmxlLCBnbG9iYWxPYmplY3QpOwor
ICAgIGZ1bmN0aW9uLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3Ry
aW5nKCZ2bSwgZXhlY3V0YWJsZS0+bmFtZSgpLnN0cmluZygpKSwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5IHwgRG9udEVudW0pOworICAgIGZ1bmN0aW9uLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoZXhlY3V0YWJsZS0+cGFyYW1ldGVyQ291bnQoKSksIERv
bnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICByZXR1cm4gZnVuY3Rpb247Cit9
CisKIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKiBKU0Z1bmN0aW9uOjpjcmVhdGVBbGxvY2F0aW9u
UHJvZmlsZShFeGVjU3RhdGUqIGV4ZWMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSkKIHsKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwpAQCAtMTQyLDcgKzE1MCw3IEBAIGNvbnN0IFN0cmluZyBKU0Z1
bmN0aW9uOjpjYWxjdWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBy
ZXR1cm4gZXhwbGljaXROYW1lOwogICAgIAogICAgIGNvbnN0IFN0cmluZyBhY3R1YWxOYW1lID0g
bmFtZShleGVjKTsKLSAgICBpZiAoIWFjdHVhbE5hbWUuaXNFbXB0eSgpIHx8IGlzSG9zdEZ1bmN0
aW9uKCkpCisgICAgaWYgKCFhY3R1YWxOYW1lLmlzRW1wdHkoKSB8fCBpc0hvc3RPckJ1aWx0aW5G
dW5jdGlvbigpKQogICAgICAgICByZXR1cm4gYWN0dWFsTmFtZTsKICAgICAKICAgICByZXR1cm4g
anNFeGVjdXRhYmxlKCktPmluZmVycmVkTmFtZSgpLnN0cmluZygpOwpAQCAtMTUwLDEwICsxNTgs
MjAgQEAgY29uc3QgU3RyaW5nIEpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVj
U3RhdGUqIGV4ZWMpCiAKIGNvbnN0IFNvdXJjZUNvZGUqIEpTRnVuY3Rpb246OnNvdXJjZUNvZGUo
KSBjb25zdAogewotICAgIGlmIChpc0hvc3RGdW5jdGlvbigpKQorICAgIGlmIChpc0hvc3RPckJ1
aWx0aW5GdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gJmpzRXhlY3V0
YWJsZSgpLT5zb3VyY2UoKTsKIH0KKyAgICAKK2Jvb2wgSlNGdW5jdGlvbjo6aXNIb3N0T3JCdWls
dGluRnVuY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBpc0hvc3RGdW5jdGlvbigpIHx8IGlz
QnVpbHRpbkZ1bmN0aW9uKCk7Cit9CisKK2Jvb2wgSlNGdW5jdGlvbjo6aXNCdWlsdGluRnVuY3Rp
b24oKSBjb25zdAoreworICAgIHJldHVybiAhaXNIb3N0RnVuY3Rpb24oKSAmJiBqc0V4ZWN1dGFi
bGUoKS0+aXNCdWlsdGluRnVuY3Rpb24oKTsKK30KIAogdm9pZCBKU0Z1bmN0aW9uOjp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CkBAIC0yNzcsNyAr
Mjk1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgc2xvdEJhc2UKICAgICBpZiAoIWNhbGxlci5pc09iamVj
dCgpIHx8ICFhc09iamVjdChjYWxsZXIpLT5pbmhlcml0cyhKU0Z1bmN0aW9uOjppbmZvKCkpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxlcik7CiAgICAgSlNGdW5jdGlvbiog
ZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxlcik7Ci0gICAgaWYgKGZ1bmN0aW9u
LT5pc0hvc3RGdW5jdGlvbigpIHx8ICFmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCktPmlzU3RyaWN0
TW9kZSgpKQorICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSB8fCAh
ZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShjYWxsZXIpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJGdW5jdGlvbi5jYWxsZXIgdXNlZCB0byBy
ZXRyaWV2ZSBzdHJpY3QgY2FsbGVyIikpKTsKIH0KQEAgLTI5OSw3ICszMTcsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0Z1bmN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
IHNsb3RCYXNlLCBFbmNvZAogYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsKLSAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0RnVu
Y3Rpb24oKSkKKyAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkK
ICAgICAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlKSB7CkBAIC0zNjEsNyArMzc5LDcgQEAgYm9vbCBKU0Z1
bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU4KIHZvaWQgSlNGdW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkm
IHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewogICAgIEpTRnVuY3Rpb24q
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdCk7Ci0gICAgaWYgKCF0aGlz
T2JqZWN0LT5pc0hvc3RGdW5jdGlvbigpICYmIChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3Bl
cnRpZXMpKSB7CisgICAgaWYgKCF0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigp
ICYmIChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKSB7CiAgICAgICAgIC8vIE1h
a2Ugc3VyZSBwcm90b3R5cGUgaGFzIGJlZW4gcmVpZmllZC4KICAgICAgICAgUHJvcGVydHlTbG90
IHNsb3QodGhpc09iamVjdCk7CiAgICAgICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdl
dE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
cHJvdG90eXBlLCBzbG90KTsKQEAgLTM3Nyw3ICszOTUsNyBAQCB2b2lkIEpTRnVuY3Rpb246Omdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsCiB2b2lkIEpTRnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlv
bio+KGNlbGwpOwotICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RGdW5jdGlvbigpKSB7CisgICAg
aWYgKHRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpIHsKICAgICAgICAgQmFz
ZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtNDI1LDcgKzQ0Myw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wCiBib29sIEpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJv
cGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQogewogICAg
IEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdCk7Ci0g
ICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgaWYgKHRoaXNPYmplY3Qt
PmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBCYXNlOjpkZWZpbmVP
d25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdGhyb3dF
eGNlcHRpb24pOwogCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkucHJvdG90eXBlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmgKaW5kZXggN2NkMTRiOGMyZDgwMGY2MWJkYzEyZWRkMmRmMDRkMzVmYTA2MTliNi4uOTk1Yzlk
MTFiZDg5ODM4NmY3YTIwYzQxNjM0ZmE3Y2M5Yjc2OThlNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtNjgsNiArNjgsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbjsKICAgICAgICAgfQogICAgICAgICAKKyAg
ICAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihWTSYsIEZ1bmN0
aW9uRXhlY3V0YWJsZSosIEpTR2xvYmFsT2JqZWN0Kik7CisgICAgICAgIAogICAgICAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgU3RyaW5nIG5hbWUoRXhlY1N0YXRlKik7CkBAIC0xNDUsNiArMTQ3LDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbV9hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9p
bnQ7CiAgICAgICAgIH0KIAorICAgICAgICBib29sIGlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkg
Y29uc3Q7CisgICAgICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdDsKKwogICAgIHBy
b3RlY3RlZDoKICAgICAgICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgT3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU09iamVj
dDo6U3RydWN0dXJlRmxhZ3M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVj
dG9ySW5saW5lcy5oCmluZGV4IDJkZGMyOWY3MTg5N2JiNTFkMzkwYjA2YjI1YTczODMzODc0YmEw
YzEuLmVkZDM0NDljZTQ3YjE3MzVlOGU1ZGJiMDVmMzE4ZTNkNTVmM2JlNjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29u
c3RydWN0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaApAQCAtMjYsNiArMjYsNyBA
QAogI2lmbmRlZiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lc19oCiAj
ZGVmaW5lIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzX2gKIAorI2lu
Y2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRl
ICJKU0FycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25z
dHJ1Y3Rvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCA2ZGI4NjI3NGMzYjg3
NGFhYWRlNTE1MTg5ODI2NzI2ZmIxMzZjMTczLi5mMjRlYTczMDNkZjk2OWRiZDJkY2E1MmM4NmQx
MWM3OGMwMGRiOWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtMjcsNiArMjcs
NyBAQAogI2RlZmluZSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXNfaAogCiAjaW5jbHVk
ZSAiQXJyYXlCdWZmZXJWaWV3LmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNp
bmNsdWRlICJEZWZlckdDLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25IZWxwZXJzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5o
CmluZGV4IDQ1OTk5N2E0NjRiOTExOTQ3N2IxYmU4NGUzNmM0ZTI5NjZhY2VmODUuLjhlNWZmODI3
OTFlNmZmOGQ0ZWI5YzM3MzY5MWU0MzNlYjdkMTZhZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJvdG90eXBlSW5saW5lcy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lc19oCiAjZGVmaW5lIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lc19oCiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlm
aWVycy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5o
IgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAyYzI3NGMxYTdkNDgxYzA3ZGYwZDJiZWIz
YjI5MzFhMzkwN2E1ZTY2Li4wNmU1NGM4NGU3N2I5MDMyYmFhMWQyZGY0N2ExYzcyZTgwYjdkZWEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCkBAIC0zNDYsNyArMzQ2LDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1
ZSBwcm90b3R5cGUpCiAKICAgICAvLyBDb25zdHJ1Y3RvcnMKIAotICAgIEpTQ2VsbCogb2JqZWN0
Q29uc3RydWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBPYmplY3RDb25zdHJ1
Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgp
KSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOworICAgIE9iamVjdENvbnN0cnVjdG9yKiBvYmpl
Y3RDb25zdHJ1Y3RvciA9IE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIE9iamVjdENvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCkpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9vYmplY3RDb25zdHJ1Y3Rvci5z
ZXQodm0sIHRoaXMsIG9iamVjdENvbnN0cnVjdG9yKTsKICAgICBKU0NlbGwqIGZ1bmN0aW9uQ29u
c3RydWN0b3IgPSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQo
KSksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwogICAgIEpTQ2VsbCogYXJyYXlDb25zdHJ1
Y3RvciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9hcnJh
eVByb3RvdHlwZS5nZXQoKSk7CiAKQEAgLTQzMiw3ICs0MzMsMTAgQEAgdm9pZCBKU0dsb2JhbE9i
amVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgR2xvYmFsUHJvcGVydHlJbmZvIHN0
YXRpY0dsb2JhbHNbXSA9IHsKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPk5hTiwganNOYU4oKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAog
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+SW5maW5pdHksIGpz
TnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSksIERvbnRFbnVt
IHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQsIGpzVW5kZWZpbmVkKCksIERvbnRFbnVt
IHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KQorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCwganNVbmRlZmluZWQoKSwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZFByaXZhdGVOYW1lLCBqc1VuZGVmaW5lZCgp
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5PYmplY3RQcml2YXRlTmFtZSwgb2JqZWN0Q29uc3Ry
dWN0b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPlR5cGVFcnJvclByaXZhdGVOYW1lLCBtX3R5
cGVFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25s
eSkKICAgICB9OwogICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFscywgV1RGX0FSUkFZ
X0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CiAgICAgCkBAIC02MDgsNiArNjEyLDcgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5bnRheEVycm9yQ29u
c3RydWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3R5cGVFcnJvckNv
bnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9VUklFcnJvckNv
bnN0cnVjdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9vYmplY3RDb25z
dHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvbWlzZUNvbnN0
cnVjdG9yKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2V2YWxGdW5jdGlv
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApp
bmRleCBiMGNhZDNkYzU0NzBmN2M3YTBlNTcwYmRjZDJkZmZhODk1ZTJhYTBjLi4zYTYxNmM2ZjA1
ZWRmMWQyOTVhZjg0NDFhYTY2NTAwZmI5MmE0YTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTY3LDYgKzY3LDcgQEAgY2xhc3MgSlNT
dGFjazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIE1pY3JvdGFzazsKIGNs
YXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I7CitjbGFzcyBPYmplY3RDb25zdHJ1Y3RvcjsKIGNs
YXNzIFByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsKIGNsYXNzIFJl
Z0V4cENvbnN0cnVjdG9yOwpAQCAtMTU4LDYgKzE1OSw3IEBAIHByb3RlY3RlZDoKICAgICBXcml0
ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV90eXBlRXJyb3JDb25zdHJ1Y3RvcjsK
ICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV9VUklFcnJvckNvbnN0
cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VDb25zdHJ1Y3Rvcj4gbV9wcm9taXNl
Q29uc3RydWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPE9iamVjdENvbnN0cnVjdG9yPiBtX29iamVj
dENvbnN0cnVjdG9yOwogCiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fZXZhbEZ1bmN0
aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2NhbGxGdW5jdGlvbjsKQEAgLTMz
MCw2ICszMzIsNyBAQCBwdWJsaWM6CiAgICAgUmVnRXhwQ29uc3RydWN0b3IqIHJlZ0V4cENvbnN0
cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBDb25zdHJ1Y3Rvci5nZXQoKTsgfQogCiAg
ICAgRXJyb3JDb25zdHJ1Y3RvciogZXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1f
ZXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQorICAgIE9iamVjdENvbnN0cnVjdG9yKiBvYmplY3RD
b25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0Q29uc3RydWN0b3IuZ2V0KCk7IH0K
ICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBldmFsRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1fZXZhbEVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KICAgICBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yKiByYW5nZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3Jh
bmdlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3Iq
IHJlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5jZUVy
cm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KQEAgLTU4MSw3ICs1ODQsNyBAQCBpbmxpbmUgYm9vbCBK
U0dsb2JhbE9iamVjdDo6aGFzT3duUHJvcGVydHlGb3JXcml0ZShFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZQogCiBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6c3ltYm9sVGFibGVIYXNQ
cm9wZXJ0eShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIFN5bWJvbFRhYmxlRW50
cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05h
bWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGlu
ZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIHJldHVybiAhZW50cnkuaXNOdWxsKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCAyYjY3
YTFkOWVlZDg0ZTk5NTZmOGJiOTY4Mzg0Yzg0Y2FlYTUzY2ZmLi4yZWEyYzI0ZTZlYWI0Y2QwZDdm
ZmVkNjY1ZWY0YWU0MWFmMDc1MGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBnZXRDbGFz
c1Byb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzCiAg
ICAgICAgIGludCBoYXNoU2l6ZU1hc2sgPSB0YWJsZS0+Y29tcGFjdFNpemUgLSAxOwogICAgICAg
ICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gdGFibGUtPnRhYmxlOwogICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8PSBoYXNoU2l6ZU1hc2s7ICsraSwgKytlbnRyeSkgewotICAgICAgICAgICAg
aWYgKGVudHJ5LT5rZXkoKSAmJiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8
IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKSAmJiAhKChlbnRyeS0+YXR0cmli
dXRlcygpICYgRnVuY3Rpb24pICYmIGRpZFJlaWZ5KSkKKyAgICAgICAgICAgIGlmIChlbnRyeS0+
a2V5KCkgJiYgKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCAobW9kZSA9PSBJ
bmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgJiYgISgoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1
aWx0aW5PckZ1bmN0aW9uKSAmJiBkaWRSZWlmeSkpCiAgICAgICAgICAgICAgICAgcHJvcGVydHlO
YW1lcy5hZGQoZW50cnktPmtleSgpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE2MTgsNyArMTYx
OCw3IEBAIHZvaWQgSlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGVsZXRlKEV4ZWNT
dGF0ZSogZXhlYykKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBQcm9wZXJ0eVNsb3Qg
c2xvdCh0aGlzKTsKICAgICAgICAgZm9yIChIYXNoVGFibGU6OkNvbnN0SXRlcmF0b3IgaXRlciA9
IGhhc2hUYWJsZS0+YmVnaW4odm0pOyBpdGVyICE9IGhhc2hUYWJsZS0+ZW5kKHZtKTsgKytpdGVy
KSB7Ci0gICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pCisgICAg
ICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pCiAgICAg
ICAgICAgICAgICAgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoZ2xvYmFsT2JqZWN0KCktPmdsb2Jh
bEV4ZWMoKSwgKml0ZXIsIHRoaXMsIElkZW50aWZpZXIoJnZtLCBpdGVyLT5rZXkoKSksIHNsb3Qp
OwogICAgICAgICB9CiAgICAgfQpAQCAtMjIzNiw2ICsyMjM2LDE2IEBAIHZvaWQgSlNPYmplY3Q6
OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uCiAgICAgcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRy
aWJ1dGVzKTsKIH0KIAordm9pZCBKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBw
cm9wZXJ0eU5hbWUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzKQoreworICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUu
cHVibGljTmFtZSgpOworICAgIGlmICghbmFtZSkKKyAgICAgICAgbmFtZSA9IHZtLnByb3BlcnR5
TmFtZXMtPmFub255bW91cy5pbXBsKCk7CisgICAgQVNTRVJUKG5hbWUpOworICAgIEpTRnVuY3Rp
b24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBzdGF0
aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBnbG9iYWxP
YmplY3QpOworICAgIHB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCBmdW5jdGlvbiwgYXR0cmli
dXRlcyk7Cit9CisKIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQ
cm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2
ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKQogewogICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGlj
TmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggMDJi
MTM3YjM1MGMyZmE4MzI1YmQzYjk2NDcxMTJhYmU4NzZmMzgzZi4uZGRlNTk3ZWZmYWVjMGYxYjhk
NDRjMjkxMTk1MDMwMWYwNjAwN2U5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQnV0dGVyZmx5LmgiCiAjaW5j
bHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ2xhc3NJbmZvLmgiCi0jaW5jbHVkZSAiQ29t
bW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJDb3B5V3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVk
ZSAiRGVmZXJHQy5oIgogI2luY2x1ZGUgIkhlYXAuaCIKQEAgLTU4MSw2ICs1ODAsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBwdXREaXJlY3RVbmRlZmluZWQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSB7
IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNldFVuZGVmaW5lZCgpOyB9CiAKICAgICB2b2lk
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9w
ZXJ0eU5hbWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24sIEludHJp
bnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgdm9pZCBwdXREaXJlY3RCdWlsdGluRnVu
Y3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEZ1bmN0aW9u
RXhlY3V0YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIHZvaWQgcHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3Qg
UHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJ
bnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmNwcAppbmRleCA2OGE4YmQ4N2QzOGFkYmJiOWRkMmFjOWVjNGI0OWQ1ZWY0NTQ5
ZDU2Li4yMzdjNDJiYjBkYTBmMTY2NzZlYjExYWRlODE4MGE3YjA2ZDk4ZWI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmNwcApAQCAtMjksNyArMjksOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKIAorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgi
CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0
b3IuaAppbmRleCBmNDM2MmZmMzU0ZWU2YTUwMjIxYmI3MzFkMWEyNjExZTZkZDYxYmMwLi5kMDcz
NzE5ZGUxNjBkMmYyOTIxMTBhNTk2YTEwNWUyZmEyMTE1ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCkBAIC0z
MSw3ICszMSw2IEBACiAKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5n
LmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5
LmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuaAppbmRleCAyYjFjZGRkYzU4NDFkNjBkMTU3YTJlNjFmNzAyYjBlZTVmYTFkNjc2Li5l
MzkzNDE2MGFlYTkyNmVmMTU5MzJmODc5MGUyNGM1MmFmMDJkMzVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKQEAgLTI0LDcgKzI0LDYgQEAKICNkZWZpbmUgSlNT
dHJpbmdfaAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiQ29tbW9uSWRlbnRp
ZmllcnMuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlEZXNj
cmlwdG9yLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCkBAIC00NzIsMzMgKzQ3MSw2IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIGlubGluZSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5n
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBqc05vbnRyaXZpYWxT
dHJpbmcoJmV4ZWMtPnZtKCksIHMpOyB9CiAgICAgaW5saW5lIEpTU3RyaW5nKiBqc093bmVkU3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBqc093bmVkU3Ry
aW5nKCZleGVjLT52bSgpLCBzKTsgfQogCi0gICAgQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5n
OjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi0gICAgewotICAgICAgICBpZiAocHJvcGVy
dHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKLSAgICAgICAgICAgIHNs
b3Quc2V0VmFsdWUodGhpcywgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGpzTnVt
YmVyKG1fbGVuZ3RoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOwotICAgICAgICBpZiAo
aSA8IG1fbGVuZ3RoKSB7Ci0gICAgICAgICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5v
dEFuSW5kZXgpOyAvLyBObyBuZWVkIGZvciBhbiBleHBsaWNpdCBjaGVjaywgdGhlIGFib3ZlIHRl
c3Qgd291bGQgYWx3YXlzIGZhaWwhCi0gICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERv
bnREZWxldGUgfCBSZWFkT25seSwgZ2V0SW5kZXgoZXhlYywgaSkpOwotICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAg
ICAgICAgICAgCi0gICAgQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9w
ZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKLSAgICB7Ci0gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPCBtX2xlbmd0aCkg
ewotICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHks
IGdldEluZGV4KGV4ZWMsIHByb3BlcnR5TmFtZSkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCiAgICAgaW5saW5l
IGJvb2wgaXNKU1N0cmluZyhKU1ZhbHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxsKCkgJiYgdi5hc0Nl
bGwoKS0+Y2xhc3NJbmZvKCkgPT0gSlNTdHJpbmc6OmluZm8oKTsgfQogCiAgICAgLy8gLS0tIEpT
VmFsdWUgaW5saW5lcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC01MjgsMzIgKzUw
MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gdG9XVEZTdHJpbmdTbG93Q2Fz
ZShleGVjKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIFN0cmluZyBpbmxpbmVKU1ZhbHVl
Tm90U3RyaW5ndG9TdHJpbmcoY29uc3QgSlNWYWx1ZSYgdmFsdWUsIEV4ZWNTdGF0ZSogZXhlYykK
LSAgICB7Ci0gICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgICAgIGlmICh2YWx1ZS5p
c0ludDMyKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0ubnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVl
LmFzSW50MzIoKSk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc0RvdWJsZSgpKQotICAgICAgICAgICAg
cmV0dXJuIHZtLm51bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZS5hc0RvdWJsZSgpKTsKLSAgICAgICAg
aWYgKHZhbHVlLmlzVHJ1ZSgpKQotICAgICAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMt
PnRydWVLZXl3b3JkLnN0cmluZygpOwotICAgICAgICBpZiAodmFsdWUuaXNGYWxzZSgpKQotICAg
ICAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPmZhbHNlS2V5d29yZC5zdHJpbmcoKTsK
LSAgICAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIHZtLnByb3Bl
cnR5TmFtZXMtPm51bGxLZXl3b3JkLnN0cmluZygpOwotICAgICAgICBpZiAodmFsdWUuaXNVbmRl
ZmluZWQoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRL
ZXl3b3JkLnN0cmluZygpOwotICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgU3RyaW5nIEpTVmFsdWU6OnRv
V1RGU3RyaW5nSW5saW5lKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKLSAgICB7Ci0gICAgICAgIGlm
IChpc1N0cmluZygpKQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTU3RyaW5nKj4o
YXNDZWxsKCkpLT52YWx1ZShleGVjKTsKLQotICAgICAgICByZXR1cm4gaW5saW5lSlNWYWx1ZU5v
dFN0cmluZ3RvU3RyaW5nKCp0aGlzLCBleGVjKTsKLSAgICB9Ci0KIH0gLy8gbmFtZXNwYWNlIEpT
QwogCiAjZW5kaWYgLy8gSlNTdHJpbmdfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZ0lubGluZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzhjMDVmYzgwZDg4ZTg1MzdjOWQy
YTVlYWI5ZmYwYmE5YjYwYTc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNTdHJp
bmdJbmxpbmVzX2gKKyNkZWZpbmUgSlNTdHJpbmdJbmxpbmVzX2gKKworI2luY2x1ZGUgIkNvbW1v
bklkZW50aWZpZXJzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRl
ICJKU1N0cmluZy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworQUxXQVlTX0lOTElORSBib29sIEpT
U3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgaWYgKHByb3BlcnR5
TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CisgICAgICAgIHNsb3Quc2V0
VmFsdWUodGhpcywgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGpzTnVtYmVyKG1f
bGVuZ3RoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25l
ZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaSA8IG1fbGVuZ3RoKSB7Cisg
ICAgICAgIEFTU0VSVChpICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCk7IC8vIE5vIG5lZWQg
Zm9yIGFuIGV4cGxpY2l0IGNoZWNrLCB0aGUgYWJvdmUgdGVzdCB3b3VsZCBhbHdheXMgZmFpbCEK
KyAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGdldElu
ZGV4KGV4ZWMsIGkpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHJl
dHVybiBmYWxzZTsKK30KKworQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQ
cm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYgc2xvdCkKK3sKKyAgICBpZiAocHJvcGVydHlOYW1lIDwgbV9sZW5ndGgpIHsKKyAg
ICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4
KGV4ZWMsIHByb3BlcnR5TmFtZSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitBTFdBWVNfSU5MSU5FIFN0cmluZyBpbmxpbmVKU1Zh
bHVlTm90U3RyaW5ndG9TdHJpbmcoY29uc3QgSlNWYWx1ZSYgdmFsdWUsIEV4ZWNTdGF0ZSogZXhl
YykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGlmICh2YWx1ZS5pc0ludDMyKCkp
CisgICAgICAgIHJldHVybiB2bS5udW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNJbnQzMigpKTsK
KyAgICBpZiAodmFsdWUuaXNEb3VibGUoKSkKKyAgICAgICAgcmV0dXJuIHZtLm51bWVyaWNTdHJp
bmdzLmFkZCh2YWx1ZS5hc0RvdWJsZSgpKTsKKyAgICBpZiAodmFsdWUuaXNUcnVlKCkpCisgICAg
ICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT50cnVlS2V5d29yZC5zdHJpbmcoKTsKKyAgICBp
ZiAodmFsdWUuaXNGYWxzZSgpKQorICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+ZmFs
c2VLZXl3b3JkLnN0cmluZygpOworICAgIGlmICh2YWx1ZS5pc051bGwoKSkKKyAgICAgICAgcmV0
dXJuIHZtLnByb3BlcnR5TmFtZXMtPm51bGxLZXl3b3JkLnN0cmluZygpOworICAgIGlmICh2YWx1
ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZp
bmVkS2V5d29yZC5zdHJpbmcoKTsKKyAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOworfQorICAgIAorQUxXQVlTX0lOTElORSBTdHJpbmcgSlNWYWx1ZTo6dG9XVEZT
dHJpbmdJbmxpbmUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIGlmIChpc1N0cmluZygp
KQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNTdHJpbmcqPihhc0NlbGwoKSktPnZhbHVl
KGV4ZWMpOworICAgIAorICAgIHJldHVybiBpbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmco
KnRoaXMsIGV4ZWMpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAppbmRleCAyYWMyNTI0YzVk
ZmRhM2QxMjI0OWQ3NzkwYWRjMzEyOWUzYzBlODcxLi5mYmM4Yjg5NWVhZTZhZjc4ODgzOWJlYjVl
ODNkN2I2Yjk3OTI4ZmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcApAQCAtNjQsNiArNjQsOCBAQCB2b2lkIEpTU3lt
Ym9sVGFibGVPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdAogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcih0aGlzT2Jq
ZWN0LT5zeW1ib2xUYWJsZSgpLT5tX2xvY2spOwogICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjpp
dGVyYXRvciBlbmQgPSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5lbmQobG9ja2VyKTsKICAg
ICAgICAgZm9yIChTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdCA9IHRoaXNPYmplY3QtPnN5
bWJvbFRhYmxlKCktPmJlZ2luKGxvY2tlcik7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAg
ICAgaWYgKGl0LT5rZXktPmlzRW1wdHlVbmlxdWUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIGlmICghKGl0LT52YWx1ZS5nZXRBdHRyaWJ1dGVzKCkgJiBEb250RW51
bSkgfHwgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpCiAgICAgICAgICAgICAg
ICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcihleGVjLCBpdC0+a2V5LmdldCgpKSk7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3lt
Ym9sVGFibGVPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9s
VGFibGVPYmplY3QuaAppbmRleCBiNWIyMGE4NDViNmFiNjQ0MjRiMzdlMzFiMjc3NGVmOTA1MzUz
ZjdmLi5kMDNiMjQ1MTFjMmRlMTk1OWZiNWY1NmQ2NDljNjRkMGVmZTA2ODU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCkBA
IC03Miw3ICs3Miw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogewogICAgIFN5bWJv
bFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgQ29uY3Vy
cmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICBTeW1ib2xUYWJs
ZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5
TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIg
PSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAo
aXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1ZTsKQEAgLTg3LDcg
Kzg3LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiB7CiAgICAgU3ltYm9sVGFibGUm
IHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9sVGFibGUoKTsKICAgICBDb25jdXJyZW50SklU
TG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2spOwotICAgIFN5bWJvbFRhYmxlOjpNYXA6
Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1
YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJv
bFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChpdGVyID09
IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgU3lt
Ym9sVGFibGVFbnRyeTo6RmFzdCBlbnRyeSA9IGl0ZXItPnZhbHVlOwpAQCAtMTA0LDcgKzEwNCw3
IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogewogICAgIFN5bWJvbFRhYmxlJiBzeW1i
b2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgQ29uY3VycmVudEpJVExvY2tl
ciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVy
YXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNO
YW1lKCkpOworICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJs
ZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoaXRlciA9PSBzeW1i
b2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFN5bWJvbFRh
YmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1ZTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBp
bmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dCgKICAgICB7CiAgICAgICAgIFN5bWJvbFRhYmxlJiBz
eW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgICAgIEdDU2FmZUNvbmN1
cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jaywgZXhlYy0+dm0oKS5oZWFw
KTsKLSAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxl
LmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICAgICAgU3ltYm9s
VGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9w
ZXJ0eU5hbWUudWlkKCkpOwogICAgICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9j
a2VyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYm9vbCB3YXNGYXQ7CkBA
IC0xNTksNyArMTU5LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRl
cygKICAgICB7CiAgICAgICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5
bWJvbFRhYmxlKCk7CiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRh
YmxlLm1fbG9jayk7Ci0gICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBz
eW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAg
ICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxv
Y2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFi
bGUuZW5kKGxvY2tlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIFN5bWJv
bFRhYmxlRW50cnkmIGVudHJ5ID0gaXRlci0+dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTG9va3VwLmNwcAppbmRleCBhODA2ZGQwNTJhMGNiZWU0Y2FjMmNhYTZlMDhjNjcxNjAw
NWMyNzBjLi5hOTc2NTIwMWI5ZjUxODY0MTQyM2RkZTBmZTBlMmU1MWE4Y2U3M2JjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9p
ZCBIYXNoVGFibGU6OmRlbGV0ZVRhYmxlKCkgY29uc3QKIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlv
blNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCog
dGhpc09iaiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIEFTU0VSVCh0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSk7Ci0gICAgQVNTRVJUKGVudHJ5
LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbik7CisgICAgQVNTRVJUKGVudHJ5LT5hdHRyaWJ1dGVz
KCkgJiBCdWlsdGluT3JGdW5jdGlvbik7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICB1
bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHRoaXNPYmot
PmdldERpcmVjdE9mZnNldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKQEAgLTc5LDkg
Kzc5LDEzIEBAIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCoKICAgICAgICAgaWYgKHRoaXNPYmotPnN0
YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAK
LSAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oCi0gICAgICAgICAgICB2
bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZW50cnktPmZ1bmN0aW9u
TGVuZ3RoKCksCi0gICAgICAgICAgICBlbnRyeS0+ZnVuY3Rpb24oKSwgZW50cnktPmludHJpbnNp
YygpLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVz
KCkgJiBCdWlsdGluKQorICAgICAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0QnVpbHRpbkZ1bmN0
aW9uKHZtLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBlbnRyeS0+YnVp
bHRpbkdlbmVyYXRvcigpKHZtKSwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oCisgICAgICAg
ICAgICAgICAgdm0sIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5
LT5mdW5jdGlvbkxlbmd0aCgpLAorICAgICAgICAgICAgICAgIGVudHJ5LT5mdW5jdGlvbigpLCBl
bnRyeS0+aW50cmluc2ljKCksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAgICAgICB9CiAgICAg
ICAgIG9mZnNldCA9IHRoaXNPYmotPmdldERpcmVjdE9mZnNldCh2bSwgcHJvcGVydHlOYW1lLCBh
dHRyaWJ1dGVzKTsKICAgICAgICAgQVNTRVJUKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAppbmRleCBiZGU4M2Q0YTZmYzM1
NTc3ODUwZTMxZTg4YmMzOWZkMDVmN2JjZTUyLi5kYmEzODllOWUyNDNkZDBlY2IyYmE5OGYzOTRk
NDA3OWY5ZGVhOTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9M
b29rdXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaApAQCAt
NDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAvLyBpZS4gdHlwZWRlZiBKU1ZhbHVl
ICgqR2V0RnVuY3Rpb24pKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBiYXNlT2JqZWN0KQogICAgIHR5
cGVkZWYgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgR2V0RnVuY3Rpb247CiAgICAgdHlwZWRl
ZiBQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYyBQdXRGdW5jdGlvbjsKKyAgICB0eXBlZGVm
IEZ1bmN0aW9uRXhlY3V0YWJsZSogKCpCdWlsdGluR2VuZXJhdG9yKShWTSYpOwogCiAgICAgY2xh
c3MgSGFzaEVudHJ5IHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC02OCwx
MSArNjksMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbV9pbnRyaW5z
aWM7CiAgICAgICAgIH0KIAorICAgICAgICBCdWlsdGluR2VuZXJhdG9yIGJ1aWx0aW5HZW5lcmF0
b3IoKSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBCdWlsdGluKTsgcmV0dXJuIG1fdS5i
dWlsdGluR2VuZXJhdG9yLmdlbmVyYXRvclZhbHVlOyB9CiAgICAgICAgIE5hdGl2ZUZ1bmN0aW9u
IGZ1bmN0aW9uKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pOyByZXR1
cm4gbV91LmZ1bmN0aW9uLmZ1bmN0aW9uVmFsdWU7IH0KICAgICAgICAgdW5zaWduZWQgY2hhciBm
dW5jdGlvbkxlbmd0aCgpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKTsg
cmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KG1fdS5mdW5jdGlvbi5sZW5ndGgpOyB9
CiAKLSAgICAgICAgR2V0RnVuY3Rpb24gcHJvcGVydHlHZXR0ZXIoKSBjb25zdCB7IEFTU0VSVCgh
KG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVydHkuZ2V0OyB9Ci0g
ICAgICAgIFB1dEZ1bmN0aW9uIHByb3BlcnR5UHV0dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0
dHJpYnV0ZXMgJiBGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5LnB1dDsgfQorICAgICAg
ICBHZXRGdW5jdGlvbiBwcm9wZXJ0eUdldHRlcigpIGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1
dGVzICYgQnVpbHRpbk9yRnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0eS5nZXQ7IH0KKyAg
ICAgICAgUHV0RnVuY3Rpb24gcHJvcGVydHlQdXR0ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1fYXR0
cmlidXRlcyAmIEJ1aWx0aW5PckZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVydHkucHV0OyB9
CiAKICAgICAgICAgaW50cHRyX3QgbGV4ZXJWYWx1ZSgpIGNvbnN0IHsgQVNTRVJUKCFtX2F0dHJp
YnV0ZXMpOyByZXR1cm4gbV91LmxleGVyLnZhbHVlOyB9CiAKQEAgLTk0LDYgKzk2LDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIGludHB0cl90IGxlbmd0aDsgLy8gbnVtYmVy
IG9mIGFyZ3VtZW50cyBmb3IgZnVuY3Rpb24KICAgICAgICAgICAgIH0gZnVuY3Rpb247CiAgICAg
ICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgICAgIEJ1aWx0aW5HZW5lcmF0b3IgZ2VuZXJh
dG9yVmFsdWU7CisgICAgICAgICAgICAgICAgaW50cHRyX3QgdW51c2VkOworICAgICAgICAgICAg
fSBidWlsdGluR2VuZXJhdG9yOworICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAg
ICBHZXRGdW5jdGlvbiBnZXQ7CiAgICAgICAgICAgICAgICAgUHV0RnVuY3Rpb24gcHV0OwogICAg
ICAgICAgICAgfSBwcm9wZXJ0eTsKQEAgLTIwOSw3ICsyMTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBwcml2YXRlOgogICAgICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IEhhc2hFbnRyeSogZW50
cnkoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKICAgICAgICAgewotICAgICAgICAg
ICAgU3RyaW5nSW1wbCogaW1wbCA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CisgICAgICAg
ICAgICBTdHJpbmdJbXBsKiBpbXBsID0gcHJvcGVydHlOYW1lLnVpZCgpOwogICAgICAgICAgICAg
aWYgKCFpbXBsKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAKQEAgLTI0OSw3
ICsyNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaWYgKCFlbnRyeSkgLy8gbm90IGZv
dW5kLCBmb3J3YXJkIHRvIHBhcmVudAogICAgICAgICAgICAgcmV0dXJuIFBhcmVudEltcDo6Z2V0
T3duUHJvcGVydHlTbG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKLSAg
ICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikKKyAgICAgICAgaWYgKGVu
dHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikKICAgICAgICAgICAgIHJldHVy
biBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChleGVjLCBlbnRyeSwgdGhpc09iaiwgcHJvcGVydHlO
YW1lLCBzbG90KTsKIAogICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqLCBl
bnRyeS0+YXR0cmlidXRlcygpLCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSk7CkBAIC0yODYsNyAr
MjkyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGlmICghZW50cnkpIC8vIG5vdCBmb3Vu
ZCwgZm9yd2FyZCB0byBwYXJlbnQKICAgICAgICAgICAgIHJldHVybiBQYXJlbnRJbXA6OmdldE93
blByb3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCi0gICAg
ICAgIEFTU0VSVCghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikpOworICAgICAgICBB
U1NFUlQoIShlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pKTsKIAogICAg
ICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqLCBlbnRyeS0+YXR0cmlidXRlcygp
LCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjk1
LDcgKzMwMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGlubGluZSB2b2lkIHB1dEVudHJ5KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIGJhc2UsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKICAgICB7CiAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBmdW5jdGlvbiBwdXQgaXQgYXMg
YW4gb3ZlcnJpZGUgcHJvcGVydHkuCi0gICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYg
RnVuY3Rpb24pIHsKKyAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JG
dW5jdGlvbikgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU09iamVjdCo+KHNsb3QudGhpc1ZhbHVlKCkpKQogICAgICAgICAgICAgICAgIHRo
aXNPYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKICAg
ICAgICAgfSBlbHNlIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBSZWFkT25seSkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggZDVlNzI4YzJjZDEwMjBhNDdlNGFkY2Q2NDljZDFmZmZhNWNkNmE4
My4uZGNhMmZkOGQxZjZhYzIzYjhmZjgxN2NiYjE4ZmFhZTdiY2Q1OTcwMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTM4LDYgKzM4LDIwIEBAIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6Ok5hdGl2ZUVy
cm9yQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAordm9p
ZCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25z
dCBTdHJpbmcmIG5hbWUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIG5hbWUpOwor
ICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICAKKyAgICBOYXRpdmVFcnJvclByb3Rv
dHlwZSogcHJvdG90eXBlID0gTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5hbWUsIHRoaXMpOworICAgIAorICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOyAvLyBFQ01BIDE1LjExLjcuNQorICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUg
fCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBtX2Vycm9yU3RydWN0dXJlLnNldCh2bSwgdGhp
cywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSkpOworICAgIEFTU0VSVChtX2Vycm9yU3RydWN0dXJlKTsKKyAgICBBU1NFUlQobV9lcnJv
clN0cnVjdHVyZS0+aXNPYmplY3QoKSk7Cit9CisKIHZvaWQgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
cjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewog
ICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8TmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvcio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCmluZGV4IDc0MGQzZjkzMzI5MmZkMmFj
Y2I0Yjk5MDM0NDMxMmI5MzE5YWUxMTAuLjQzOGEzYWZiOWJiMGY2NDEyYzk3OTMyMjMwYzg4NzEw
OTYxZjU0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUVycm9yQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
YXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKQEAgLTUxLDE5ICs1MSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlKCkgeyByZXR1cm4gbV9lcnJvclN0
cnVjdHVyZS5nZXQoKTsgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBw
cm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkKLSAgICAgICAgewotICAgICAg
ICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIG5hbWUpOwotICAgICAgICAgICAgQVNTRVJU
KGluaGVyaXRzKGluZm8oKSkpOwotCi0gICAgICAgICAgICBOYXRpdmVFcnJvclByb3RvdHlwZSog
cHJvdG90eXBlID0gTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5hbWUsIHRoaXMpOwotCi0gICAgICAgICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIERvbnREZWxldGUg
fCBSZWFkT25seSB8IERvbnRFbnVtKTsgLy8gRUNNQSAxNS4xMS43LjUKLSAgICAgICAgICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnRE
ZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKLSAgICAgICAgICAgIG1fZXJyb3JTdHJ1Y3R1
cmUuc2V0KHZtLCB0aGlzLCBFcnJvckluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlKSk7Ci0gICAgICAgICAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVy
ZSk7Ci0gICAgICAgICAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZS0+aXNPYmplY3QoKSk7Ci0g
ICAgICAgIH0KKyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKFZNJiwgU3RydWN0
dXJlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eVNsb3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCmlu
ZGV4IGQ5MzhmYTMxNjQ1YWYyNmI3NTg1MTRkYjZiMjQ3OGYxODNlOWVlZTEuLmNmZTljNGQzMmJh
NzY4Yzc0ZTRmZmJiMTkxMzUyNzlkZWJmMTE3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCkBAIC00Miw2ICs0Miw4IEBAIGVudW0gQXR0cmlidXRl
IHsKICAgICBGdW5jdGlvbiAgICAgPSAxIDw8IDQsICAvLyBwcm9wZXJ0eSBpcyBhIGZ1bmN0aW9u
IC0gb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCiAgICAgQWNjZXNzb3IgICAgID0gMSA8
PCA1LCAgLy8gcHJvcGVydHkgaXMgYSBnZXR0ZXIvc2V0dGVyCiAgICAgQ3VzdG9tQWNjZXNzb3Ig
PSAxIDw8IDYsCisgICAgQnVpbHRpbiAgICAgICAgID0gMSA8PCA3LCAvLyBwcm9wZXJ0eSBpcyBh
IGJ1aWx0aW4gZnVuY3Rpb24gLSBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKKyAgICBC
dWlsdGluT3JGdW5jdGlvbiA9IEJ1aWx0aW4gfCBGdW5jdGlvbiwgLy8gaGVscGVyIG9ubHkgdXNl
ZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogfTsKIAogY2xhc3MgUHJvcGVydHlTbG90IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCmluZGV4
IDg5ZDdhYzFiOGNiZjFkYjBlMTI2ZjFmYzc5NmRmZDVmYzg0YjJlNTkuLjlkZGEwYmE4ZGUxNDEy
ZWFmNGQyOTFkY2YwYzZiMzk2NTdmYjY3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcApAQCAtMjQsNyArMjQsNyBAQAogI2luY2x1
ZGUgIkFycmF5UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJKU0Fy
cmF5LmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAj
aW5jbHVkZSAiSlNTdHJpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NldENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NldENvbnN0cnVjdG9yLmNwcAppbmRleCBiMjAzODg4ZDNjMTZjZGEzYzAwMzUwNjIwOGFlMDg2
OTVkYzVkYWFhLi5kMDI2NmE1OWVmM2Y1NWFhMzY5NGY1Zjc0MThjZjc4ZTBhZTBkOGIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCkBA
IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
R2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTZXQuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lu
bGluZXMuaCIKICNpbmNsdWRlICJNYXBEYXRhLmgiCiAjaW5jbHVkZSAiU2V0UHJvdG90eXBlLmgi
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCmlu
ZGV4IDQ0MGE2MDk0MjE5MzM4MDMxZTU5MjdhZjQ2YjI4OWRiY2ZiNWE3MjguLjgwZTdlYWE4YzQ5
MWNiNmQ1NGE4MzI0Y2U2NDdhNmNkYjdlODg3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAtMjIsNyArMjIsOSBAQAogI2luY2x1ZGUg
IlN0cmluZ09iamVjdC5oIgogCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNT
dHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlByb3Bl
cnR5TmFtZUFycmF5LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwCmluZGV4IDA0MjkxZjdlOGRkMjRlOGFiMzNkNzVhZjFkYTQ1NjhmMmJjOTllNjguLjFl
Y2FiODVjMGJkYjI4Njk4OTQ1NzdhNzQxMjU0ZTM2NDQxNDlkODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMjcsMTIgKzI3LDE4IEBACiAjaW5j
bHVkZSAiU3RydWN0dXJlLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJD
b21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkR1bXBDb250ZXh0LmgiCisjaW5jbHVkZSAi
SlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1
ZGUgIkxvb2t1cC5oIgorI2luY2x1ZGUgIlByb3BlcnR5TWFwSGFzaFRhYmxlLmgiCiAjaW5jbHVk
ZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIK
ICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMu
aCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYv
Q29tbWFQcmludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDUyY2NmNDIzYTEwNDNlMTA3OWYy
ZDhiMTg5NDIxOTg5MGU3MWYyYmMuLjkxYWQ1NTdlMjg5YjQ3MzcwN2I4MzlmNmNlNzBjYTM0NDE4
NmE1ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbmNsdWRlICJBcmdMaXN0LmgiCiAjaW5jbHVkZSAiQXJpdHlDaGVja0ZhaWxSZXR1cm5U
aHVua3MuaCIKICNpbmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaCIKKyNp
bmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWVJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29kZUNhY2hlLmgiCkBAIC01
NSw3ICs1NiwxMCBAQAogI2luY2x1ZGUgIkpTQVBJVmFsdWVXcmFwcGVyLmgiCiAjaW5jbHVkZSAi
SlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFs
dWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVu
Y3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNO
YW1lU2NvcGUuaCIKQEAgLTY4LDEzICs3MiwxNiBAQAogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2lu
Y2x1ZGUgIk1hcERhdGEuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgorI2luY2x1ZGUgIlBhcnNlci5o
IgogI2luY2x1ZGUgIlBhcnNlckFyZW5hLmgiCisjaW5jbHVkZSAiUHJvcGVydHlNYXBIYXNoVGFi
bGUuaCIKICNpbmNsdWRlICJSZWdFeHBDYWNoZS5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5o
IgogI2luY2x1ZGUgIlNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU291
cmNlUHJvdmlkZXJDYWNoZS5oIgogI2luY2x1ZGUgIlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCiAj
aW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIK
ICNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgogI2luY2x1ZGUgIldlYWtNYXBEYXRhLmgi
CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NJRC5oPgpAQCAtMjI2LDYgKzIzMyw3IEBAIFZNOjpWTShW
TVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1faW5EZWZpbmVPd25Qcm9w
ZXJ0eShmYWxzZSkKICAgICAsIG1fY29kZUNhY2hlKENvZGVDYWNoZTo6Y3JlYXRlKCkpCiAgICAg
LCBtX2VuYWJsZWRQcm9maWxlcihudWxscHRyKQorICAgICwgbV9idWlsdGluRXhlY3V0YWJsZXMo
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGUoKnRoaXMpKQogewogICAgIGludGVycHJldGVyID0g
bmV3IEludGVycHJldGVyKCp0aGlzKTsKICAgICBTdGFja0JvdW5kcyBzdGFjayA9IHd0ZlRocmVh
ZERhdGEoKS5zdGFjaygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggNWE4NDEw
NWVhZmI3YWJiYTVmYTQzMWVlZWRkNTVkN2E4OWY1NWNlMi4uNjk1OGFjMzkzYjFhZWZjMGJlZmJm
NmU0ZWI4YjY4MjVjZjdjOWEwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC00
NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiUHJpdmF0ZU5hbWUuaCIKICNpbmNsdWRlICJQcm90b3R5
cGVNYXAuaCIKICNpbmNsdWRlICJTbWFsbFN0cmluZ3MuaCIKKyNpbmNsdWRlICJTb3VyY2VDb2Rl
LmgiCiAjaW5jbHVkZSAiU3Ryb25nLmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAj
aW5jbHVkZSAiVHlwZWRBcnJheUNvbnRyb2xsZXIuaCIKQEAgLTY5LDYgKzcwLDcgQEAKIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3M7CisgICAg
Y2xhc3MgQnVpbHRpbkV4ZWN1dGFibGVzOwogICAgIGNsYXNzIENvZGVCbG9jazsKICAgICBjbGFz
cyBDb2RlQ2FjaGU7CiAgICAgY2xhc3MgQ29tbW9uSWRlbnRpZmllcnM7CkBAIC00OTcsNiArNDk5
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcmVnaXN0ZXJXYXRjaHBvaW50Rm9y
SW1wdXJlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciYsIFdhdGNocG9pbnQqKTsKICAgICAgICAg
Ly8gRklYTUU6IFVzZSBBdG9taWNTdHJpbmcgb25jZSBpdCBnb3QgbWVyZ2VkIHdpdGggSWRlbnRp
Zmllci4KICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRJbXB1cmVQcm9wZXJ0eShj
b25zdCBTdHJpbmcmKTsKKyAgICAgICAgCisgICAgICAgIEJ1aWx0aW5FeGVjdXRhYmxlcyogYnVp
bHRpbkV4ZWN1dGFibGVzKCkgeyByZXR1cm4gbV9idWlsdGluRXhlY3V0YWJsZXMuZ2V0KCk7IH0K
IAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CkBAIC01MzcsMTAgKzU0MSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU1ZhbHVl
IG1fZXhjZXB0aW9uOwogICAgICAgICBib29sIG1faW5EZWZpbmVPd25Qcm9wZXJ0eTsKICAgICAg
ICAgT3duUHRyPENvZGVDYWNoZT4gbV9jb2RlQ2FjaGU7Ci0gICAgICAgIFJlZkNvdW50ZWRBcnJh
eTxTdGFja0ZyYW1lPiBtX2V4Y2VwdGlvblN0YWNrOwotCiAgICAgICAgIExlZ2FjeVByb2ZpbGVy
KiBtX2VuYWJsZWRQcm9maWxlcjsKLQorICAgICAgICBPd25QdHI8QnVpbHRpbkV4ZWN1dGFibGVz
PiBtX2J1aWx0aW5FeGVjdXRhYmxlczsKKyAgICAgICAgUmVmQ291bnRlZEFycmF5PFN0YWNrRnJh
bWU+IG1fZXhjZXB0aW9uU3RhY2s7CiAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8V2F0
Y2hwb2ludFNldD4+IG1faW1wdXJlUHJvcGVydHlXYXRjaHBvaW50U2V0czsKICAgICB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3Ry
aW5nSW5saW5lcy5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9K
U1N0cmluZ0lubGluZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MGZjYzM4NGU4ZWRmYzM0YjE0MDgzYjg2NWQz
NzM4MjBmNDE2NWM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGlu
Z0hlYWRlcnMvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5k
ZWYgV2ViQ29yZV9GV0RfSlNTdHJpbmdJbmxpbmVzX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfSlNT
dHJpbmdJbmxpbmVzX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ0lubGluZXMu
aD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1
aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1
Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAKaW5kZXggMmVkZGNkYmI5ZjAwNmNh
NzYyNjY1MGI0MjAyNzg2MjZiOTI2MTQxNy4uM2M0ZTBkN2JiYjMxY2FiMTJiNWU2Yzk3NWM3NGQz
ZjQ4NGU5Y2IxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1
aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwCkBAIC00Niw2ICs0Niw3IEBA
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQmFzZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWVJbmxp
bmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSURCQW55Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURC
QW55Q3VzdG9tLmNwcAppbmRleCA1NjQ5Yzg1Y2EwOTU4Nzc0OGEzZGEwNmNkZGQwY2E5OTllNTBi
OGU3Li4zZjRkOGVmYWViNTdmMzMwMDNlNzNhN2U3ODQyZTQyYzczY2U2NDkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFueUN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwCkBAIC00Nyw2ICs0Nyw3
IEBACiAjaW5jbHVkZSAiSlNJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIkpTSURCVHJhbnNh
Y3Rpb24uaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxy
dW50aW1lL0pTU3RyaW5nSW5saW5lcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwCmlu
ZGV4IDllYWU3NTY5YzcwNjAzYTRmZWQwYWYxNGM0Zjg3MThjZGU2NGE2ZTEuLmY0OWRmZTkwYjRl
ODJkMzllZGNiZjliYTI5ZjJhZTc5OWMwZGRmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwCkBAIC0zNyw3ICszNyw3IEBACiAj
aW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJKU0lEQk9iamVjdFN0b3JlLmgi
CiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmcu
aD4KKyNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9i
amVjdFN0b3JlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2Jq
ZWN0U3RvcmVDdXN0b20uY3BwCmluZGV4IDc0ZmQzNTRiMjg2MDdjZjc4MjJmODA1MzQ3OTcwZjVk
N2FjOGM4MzIuLjU0MzRiM2I3ZDZjNTZlY2IwYTAzYTI3OTRjNjczNmE5YWRmYjcwZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0
b20uY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKICNp
bmNsdWRlICJKU0lEQkluZGV4LmgiCiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgotI2luY2x1
ZGUgPHJ1bnRpbWUvSlNTdHJpbmcuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nSW5saW5l
cy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjI1ZjlmNzAyOTJmZGMxNGI4
Y2E1MzM3NzBjMDRkNGI3MDA3ZjYzYy4uODhjN2FkNzk0ZDIwZjVkNDg5ZWI4NWQwNzc5NTg1MWQz
NDVhMjA3MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE0LTAxLTI5ICBPbGl2ZXIgSHVudCAg
PG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBpbXBsZW1l
bnQgSlMgYnVpbHRpbnMgaW4gSlMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyNzg4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVwZGF0ZWQgdGhlIHRlc3QgcmVzdWx0cyBmb3IgbmV3IGVycm9yIG1lc3Nh
Z2VzIChub3cgdGhhdCB0aGV5J3JlCisgICAgICAgIGFjdHVhbGx5IGhlbHBmdWwpLCBhbmQgYWRk
ZWQgYSBqcy1yZWdyZXNzIHRlc3QgdG8gdHJhY2sgcGVyZm9ybWFuY2UuCisKKyAgICAgICAgKiBq
cy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvZG9tL2FycmF5LXByb3Rv
dHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9yZWdyZXNzL2FycmF5
LXByb3RvdHlwZS1ldmVyeS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jl
c3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jl
c3Mvc2NyaXB0LXRlc3RzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5qczogQWRkZWQuCisgICAgICAg
ICh0ZXN0MSk6CisgICAgICAgICh0ZXN0Mik6CisgICAgICAgICh0ZXN0Myk6CisKIDIwMTQtMDEt
MjkgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBQbGF5IEJyZWFrcG9pbnQgU291bmQgaW4gRnJvbnRlbmQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pz
L2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dAppbmRleCA1NDFiOGMzNThmMDY4YTBjZWE4ODJjMTA1
MTc1MzI1MTE0Y2QzM2Y3Li5jY2EzNjNkY2U1OGZiYTk1YTU4Y2U0NmZjYjQ4YzM4YmY1OGFkZjU5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0CkBAIC0zMCwxMiArMzAs
MTIgQEAgUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KGlzQmlnRW5vdWdoQW5kRXhjZXB0
aW9uKSB0aHJldyBleGNlcHRpb24gZXhjZXB0aW8KIFBBU1MgWzEyLCA1NCwgMTgsIDEzMCwgNDRd
LmV2ZXJ5KGlzQmlnRW5vdWdoQW5kRXhjZXB0aW9uKSB0aHJldyBleGNlcHRpb24gZXhjZXB0aW9u
IGZyb20gZnVuY3Rpb24uCiAKIDUuMCBXcm9uZyBUeXBlIGZvciBDYWxsYmFjayBUZXN0Ci1QQVNT
IFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoNSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
VHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSgnd3JvbmcnKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwg
NDRdLmV2ZXJ5KG5ldyBPYmplY3QoKSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBl
cnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShudWxsKSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5
KHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1Mg
WzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IuCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoNSkgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBm
dW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSgnd3JvbmcnKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBi
ZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KG5ldyBPYmplY3Qo
KSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxi
YWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShu
dWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2Fs
bGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5
KHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2
ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0
XS5ldmVyeSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVy
eSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCiAKIDYuMCBFYXJseSBFeGl0ICgiU2hvcnQg
Q2lyY3VpdGluZyIpCiBQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoaXNCaWdFbm91Z2hT
aG9ydENpcmN1aXQpIGlzIGZhbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vYXJy
YXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9t
L2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAppbmRleCAyYzJhNjhjYjEw
NmRhMTBmMDg2YjIyYzViZjJiZjVjOGZlNzllMzNlLi41ZDllY2I3NWE4ZGE3OWJhNjU2MDVlN2Vi
OWNmOGZjMjVmZTE4YWZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9kb20vYXJyYXktcHJv
dG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9h
cnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQKQEAgLTE1LDcgKzE1LDcgQEAg
UEFTUyBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh1bmRlZmluZWQsIDAsIDEpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGUKIFBBU1MgQXJyYXkucHJvdG90eXBlLnNvcnQuY2FsbCh1
bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4g
b2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUuc29ydC5jYWxsKHVuZGVmaW5lZCkn
KS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKHVuZGVmaW5lZCwgMCwgMSkgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1
YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbCh1bmRlZmluZWQsIDAsIDEpJykuCiBQ
QVNTIEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmNhbGwodW5kZWZpbmVkLCB7fSkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcg
J0FycmF5LnByb3RvdHlwZS51bnNoaWZ0LmNhbGwodW5kZWZpbmVkLCB7fSknKS4KLVBBU1MgQXJy
YXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZykgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0Fy
cmF5LnByb3RvdHlwZS5ldmVyeS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpJykuCitQQVNTIEFy
cmF5LnByb3RvdHlwZS5ldmVyeS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlz
fCBub3QgYmUgdW5kZWZpbmVkLgogUEFTUyBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHVu
ZGVmaW5lZCwgdG9TdHJpbmcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBp
cyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxs
KHVuZGVmaW5lZCwgdG9TdHJpbmcpJykuCiBQQVNTIEFycmF5LnByb3RvdHlwZS5zb21lLmNhbGwo
dW5kZWZpbmVkLCB0b1N0cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVk
IGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5zb21lLmNhbGwo
dW5kZWZpbmVkLCB0b1N0cmluZyknKS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2Fs
bCh1bmRlZmluZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBu
b3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKHVu
ZGVmaW5lZCwgMCknKS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXkt
cHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJy
YXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMjkwYzBlZWZmOGRl
NDIxODMzZDkyZDI3ZTk1MjQxOTE3NjA0Yjk2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTAgQEAKK0pTUmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkKKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwgYi9MYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlNWNj
MTcxYzQ4NzVhMzU4NWJmMTRlNTQxNWY1Y2QwZTU4MWQ1NDQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sCkBAIC0wLDAg
KzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9y
ZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2FycmF5
LXByb3RvdHlwZS1ldmVyeS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Jl
Z3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZlcnku
anMgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJheS1wcm90b3R5cGUt
ZXZlcnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjk0YWExNjFjMGNlOThiMmFiMThhM2ExYTFmMGRmYWFjOWQ3
ZDJlMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRl
c3RzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5qcwpAQCAtMCwwICsxLDI5IEBACit2YXIgcmVzdWx0
ID0gMDsKK2Z1bmN0aW9uIHRlc3QxKGEpIHsKKyAgICByZXN1bHQgPDwgMTsKKyAgICByZXN1bHQr
KzsKKyAgICByZXR1cm4gdHJ1ZTsKK30KK2Z1bmN0aW9uIHRlc3QyKGEsYikgeworICAgIHJlc3Vs
dCBePSAzOworICAgIHJlc3VsdCAqPSAzOworICAgIHJldHVybiB0cnVlOworfQorZnVuY3Rpb24g
dGVzdDMoYSxiLGMpIHsKKyAgICByZXN1bHQgXj0gcmVzdWx0ID4+IDE7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3ZhciByZXN1bHQgPSAwOwordmFyIGFycmF5ID0gW10KK2ZvciAodmFyIGkgPSAw
OyBpIDwgMTAwMDAwOyArK2kpCisgICAgYXJyYXlbaV0gPSAxOworCitmb3IgKHZhciBpID0gMDsg
aSA8IDEwOyBpKyspIHsKKyAgICBhcnJheS5ldmVyeSh0ZXN0MSk7CisgICAgYXJyYXkuZXZlcnko
dGVzdDIpOworICAgIGFycmF5LmV2ZXJ5KHRlc3QzKTsKK30KKworaWYgKHJlc3VsdCAhPSAxNDI4
ODEwNDk2KQorICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222670</attachid>
            <date>2014-01-30 08:34:41 -0800</date>
            <delta_ts>2014-01-30 08:53:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140130083435.patch</filename>
            <type>text/plain</type>
            <size>189244</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NjBlMTQzNTgwZTZkYzc1ZmEwNjY2YzlhMWUyZGMxZmMzZWYyY2MyLi4yNzBmZTZjZjRmNDQ2OGM4
NGRlNGViMjI3M2VmM2U4NTM4N2YxODBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
IFRoaXMgcmVzdWx0IG9mIHRoaXMgcmVmYWN0b3JpbmcKKyAgICAgICAgaXMgdGhhdCBDb21tb25J
ZGVudGlmaWVycywgYW5kIGEgZmV3IG90aGVyIG1pc2NlbGxhbmVvdXMgaGVhZGVycyBub3cKKyAg
ICAgICAgbmVlZCB0byBiZSBpbmNsdWRlZCBkaXJlY3RseSBhcyB0aGV5IHdlcmUgZm9ybWVybHkg
Y2FwdHVyZWQgdGhyb3VnaCBvdGhlcgorICAgICAgICBwYXRocy4KKworICAgICAgICBJbiBhZGRp
dGlvbiB0aGlzIGFkZHMgYSBmbGFnIHRvIHRoZSBMb29rdXAgdGFibGUncyBoYXNoZW50cnkgdG8g
aW5kaWNhdGUKKyAgICAgICAgdGhhdCBhIHN0YXRpYyBmdW5jdGlvbiBpcyBhY3R1YWxseSBiYWNr
ZWQgYnkgSlMuIFRoZXJlIGlzIHRoZW4gYSBsb3Qgb2YKKyAgICAgICAgbG9naWMgdG8gdGhyZWFk
IHRoZSBzcGVjaWFsIG5hdHVyZSBvZiB0aGUgZnVuY3RvbiB0byB3aGVyZSBpdCBtYXR0ZXJzLgor
ICAgICAgICBUaGlzIGFsbG93cyB0b1N0cmluZygpLCAuY2FsbGVyLCBldGMgdG8gbWltaWMgdGhl
IGJlaGF2aW91ciBvZiBhIGhvc3QKKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAgICAgTm90ZXMg
b24gd3JpdGluZyBidWlsdGluczoKKyAgICAgICAgIC0gRWFjaCBmdW5jdGlvbiBpcyBjb21waWxl
ZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBvdGhlcnMsIGFuZCB0aG9zZQorICAgICAgICAgICBpbXBs
ZW1lbnRhdGlvbnMgY2Fubm90IGN1cnJlbnRseSBjYXB0dXJlIGFsbCBnbG9iYWwgcHJvcGVydGll
cyAoYXMKKyAgICAgICAgICAgdGhhdCBjb3VsZCBiZSBwb3RlbnRpYWxseSB1bnNhZmUpLiBJZiBh
IGZ1bmN0aW9uIGRvZXMgY2FwdHVyZSBhCisgICAgICAgICAgIGdsb2JhbCB3ZSB3aWxsIGRlbGli
ZXJhdGVseSBjcmFzaC4KKyAgICAgICAgIC0gRm9yIHRob3NlICJnbG9iYWwiIHByb3BlcnRpZXMg
dGhhdCB3ZSBkbyB3YW50IGFjY2VzcyB0bywgd2UgdXNlCisgICAgICAgICAgIHRoZSBAIHByZWZp
eCwgZS5nLiBPYmplY3QodGhpcykgYmVjb21lcyBAT2JqZWN0KHRoaXMpLiBUaGUgQCBpZGVudGlm
aWVycworICAgICAgICAgICBhcmUgcHJpdmF0ZSBuYW1lcywgYW5kIGJlaGF2ZSBqdXN0IGxpa2Ug
cmVndWxhciBwcm9wZXJ0aWVzLCBvbmx5CisgICAgICAgICAgIHdpdGhvdXQgdGhlIHJpc2sgb2Yg
YWR1bHRlcmF0aW9uLiBBZ2FpbiwgaW4gdGhlIEBPYmplY3QgY2FzZSwgd2UKKyAgICAgICAgICAg
ZXhwbGljaXRseSBkdXBsaWNhdGUgdGhlIE9iamVjdENvbnN0cnVjdG9yIHJlZmVyZW5jZSBvbiB0
aGUgR2xvYmFsT2JqZWN0CisgICAgICAgICAgIHNvIHRoYXQgd2UgaGF2ZSBndWFyYW50ZWVkIGFj
Y2VzcyB0byB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgY29uc3RydWN0
b3IuCisgICAgICAgICAtIGNhbGwsIGFwcGx5LCBldmFsLCBhbmQgRnVuY3Rpb24gYXJlIGFsbCBy
ZWplY3RlZCBpZGVudGlmaWVycywgYWdhaW4KKyAgICAgICAgICAgdG8gcHJldmVudCBhbnl0aGlu
ZyBmcm9tIGFjY2lkZW50YWxseSB1c2luZyBhbiBhZHVsdGVyYXRlZCBvYmplY3QuCisgICAgICAg
ICAgIEluc3RlYWQgQGNhbGwgYW5kIEBhcHBseSBhcmUgYXZhaWxhYmxlLCBhbmQgaGFwcGlseSB0
aGV5IGNvbXBsZXRlbHkKKyAgICAgICAgICAgZHJvcCB0aGUgbmVxX3B0ciBpbnN0cnVjdGlvbiBh
cyB0aGV5J3JlIGRlZmluZWQgYXMgYWx3YXlzIGJlaW5nIHRoZQorICAgICAgICAgICBvcmlnaW5h
bCBjYWxsL2FwcGx5IGZ1bmN0aW9ucy4KKworICAgICAgICBUaGVzZSByZXN0cmljdGlvbnMgYXJl
IGp1c3QgaW50ZW5kZWQgdG8gbWFrZSBpdCBoYXJkZXIgdG8gYWNjaWRlbnRhbGx5CisgICAgICAg
IG1ha2UgY2hhbmdlcyB0aGF0IGFyZSBpbmNvcnJlY3QgKGZvciBpbnN0YW5jZSBjYWxsaW5nIHdo
YXRldmVyIGhhcyBiZWVuCisgICAgICAgIGFzc2lnbmVkIHRvIGdsb2JhbC5PYmplY3QsIGluc3Rl
YWQgb2YgdGhlIG9yaWdpbmFsIGNvbnN0cnVjdG9yIGZ1bmN0aW9uKS4KKyAgICAgICAgSG93ZXZl
ciwgbWFraW5nIGEgbWlzdGFrZSBsaWtlIHRoaXMgc2hvdWxkIHJlc3VsdCBpbiBhIHB1cmVseSBz
ZW1hbnRpYworICAgICAgICBlcnJvciBhcyBmdW5kYW1lbnRhbGx5IHRoZXNlIGZ1bmN0aW9ucyBh
cmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlCisgICAgICAgIHJlZ3VsYXIgSlMgY29kZSBp
biB0aGUgaG9zdCBnbG9iYWwsIGFuZCBoYXZlIG5vIG1vcmUgcHJpdmlsZWdlcyB0aGFuCisgICAg
ICAgIGFueSBvdGhlciBKUy4KKworICAgICAgICBUaGUgaW5pdGlhbCBwcm9vZiBvZiBjb25jZXB0
IGlzIEFycmF5LnByb3RvdHlwZS5ldmVyeSwgdGhpcyBzaG93cyBhIDY1JQorICAgICAgICBwZXJm
b3JtYW5jZSBpbXByb3ZlbWVudCwgYW5kIHRoYXQgaW1wcm92ZW1lbnQgaXMgc2lnbmlmaWNhbnRs
eSBodXJ0IGJ5CisgICAgICAgIG91ciBwb29yIG9wdGltaXNhdGlvbiBvZiBvcF9pbi4KKworICAg
ICAgICBBcyB0aGlzIGlzIHN1Y2ggYSBsaW1pdGVkIGZ1bmN0aW9uLCB3ZSBoYXZlIG5vdCB5ZXQg
ZXhwb3J0ZWQgYWxsIHN5bWJvbHMKKyAgICAgICAgdGhhdCB3ZSBjb3VsZCBwb3NzaWJseSBuZWVk
LCBidXQgYXMgd2UgaW1wbGVtZW50IG1vcmUsIHRoZSBsaWtlbGlob29kCisgICAgICAgIG9mIGVu
Y291bnRlcmluZyBtaXNzaW5nIGZlYXR1cmVzIHdpbGwgcmVkdWNlLgorCisgICAgICAgIFRoaXMg
ZGlkIHJlcXVpcmUgYnJlYWtpbmcgb3V0IGEgSlNTdHJpbmdJbmxpbmVzIGhlYWRlciwgYW5kIHJl
cXVpcmVkCisgICAgICAgIGZpeGluZyBhIGZldyBvYmplY3RzIHRoYXQgd2VyZSB0cnlpbmcgdG8g
dXNpbmcgUHJvcGVydHlOYW1lOjpwdWJsaWNOYW1lCisgICAgICAgIHJhdGhlciB0aGFuIFByb3Bl
cnR5TmFtZTo6dWlkLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0
eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dCk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRpY1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWNGdW5jdGlvbkdl
dHRlcik6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tH
ZXR0ZXIpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBidWlsdGlucy9BcnJheS5wcm90b3R5cGUuanM6CisgICAgICAgIChldmVyeSk6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkJ1aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKToKKyAgICAgICAgKEpTQzo6
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSk6CisgICAgICAgICog
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVj
dXRhYmxlczo6Y3JlYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tG
b3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6dG9TdHJpY3RuZXNzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNCdWlsdGluRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBjcmVhdGVfaGFz
aF90YWJsZToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZ2Vu
ZXJhdGUtanMtYnVpbHRpbnM6IEFkZGVkLgorICAgICAgICAoZ2V0Q29weXJpZ2h0KToKKyAgICAg
ICAgKGdldEZ1bmN0aW9ucyk6CisgICAgICAgIChnZW5lcmF0ZUNvZGUpOgorICAgICAgICAobWFu
Z2xlTmFtZSk6CisgICAgICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSWRlbnRp
Zmllcik6CisgICAgICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChTb3VyY2VDb2RlKToK
KyAgICAgICAgKFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKFZNKToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvUHJvdG9DYWxsRnJhbWUuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUp
OgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpM
ZXhlcik6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpM
ZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFy
Pjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAg
ICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcik6CisgICAgICAgICog
cGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OnNldENsb3NlZFZh
cmlhYmxlcyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
Tm9kZTo6Y2FwdHVyZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OnNldENs
b3NlZFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmluaXNoUGFy
c2luZyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRU
b2tlblRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OmdldFVzZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNsb3NlZFZhcmlh
Ymxlcyk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9k
ZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAgICAgICogcnVudGlt
ZS9BcmdMaXN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAg
ICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJh
dG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpn
ZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpD
b21tb25JZGVudGlmaWVycyk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQ
cml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQdWJsaWNO
YW1lKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzRXhjZXB0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxl
OjpleGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpleGVj
dXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aXNCdWlsdGlu
RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1l
L0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFi
bGVHZXQpOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0KToKKyAg
ICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgICogcnVudGltZS9K
U0NlbGxJbmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6c291cmNlQ29kZSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzSG9zdE9y
QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6aXNCdWlsdGluRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIpOgorICAgICAg
ICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9w
ZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgICogcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6Om9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpnZXRDbGFzc1Byb3BlcnR5TmFtZXMpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZ0lubGlu
ZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjppbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9i
amVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgICAgRG9uJ3QgcmVw
b3J0IHByaXZhdGUgbmFtZXMuCisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6c3ltYm9s
VGFibGVQdXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChKU0M6OnNldFVwU3RhdGlj
RnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlND
OjpIYXNoRW50cnk6OmJ1aWx0aW5HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpIYXNoRW50cnk6
OnByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpwcm9wZXJ0eVB1dHRl
cik6CisgICAgICAgIChKU0M6Okhhc2hUYWJsZTo6ZW50cnkpOgorICAgICAgICAoSlNDOjpnZXRT
dGF0aWNQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpnZXRTdGF0aWNWYWx1ZVNsb3QpOgor
ICAgICAgICAoSlNDOjpwdXRFbnRyeSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6YnVp
bHRpbkV4ZWN1dGFibGVzKToKKwogMjAxNC0wMS0yOSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3Nz
eUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikgbGVmdG92ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTEzZjE4OGFlNjUyYjk1ZjNiNTcyYWMxNzcwZWEx
MjViYmFlNzVkMi4uNjMyYWNjNDNkYzE2YzcxMzRkNThjMDRiN2E1Y2U1NmE5MTk4ZWNjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE0LTAxLTI5ICBPbGl2ZXIgSHVudCAgPG9saXZl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBpbXBsZW1lbnQgSlMg
YnVpbHRpbnMgaW4gSlMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNzg4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVwZGF0aW5nIGZvciB0aGUgbmV3bHkgcmVxdWlyZWQgaGVhZGVycy4KKworICAgICAg
ICBUZXN0OiBqcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sCisKKyAgICAgICAg
KiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oOiBBZGRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcDoKKwogMjAxNC0wMS0zMCAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViUGFnZTo6ZGV0ZXJtaW5lUHJpbWFyeVNu
YXBzaG90dGVkUGx1Z0luIGlzIHNsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggNWJlMDUzZjFlMDg2YjQzZTY4
NmMzNjc0ZGFlN2M1MTYwNWEyODZlNy4uMGVjZWQ1MWYzZTJkNWI2MjFkYWRmMDU3NDlmNWU3NDY2
YTA2ZjUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBib29sIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZQogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKICAg
ICBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHByb3BlcnR5TmFtZVJlZjsKICAgICAKLSAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpT
Q2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xh
c3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgLy8gb3B0aW9uYWwgb3B0
aW1pemF0aW9uIHRvIGJ5cGFzcyBnZXRQcm9wZXJ0eSBpbiBjYXNlcyB3aGVuIHdlIG9ubHkgbmVl
ZCB0byBrbm93IGlmIHRoZSBwcm9wZXJ0eSBleGlzdHMKICAgICAgICAgICAgIGlmIChKU09iamVj
dEhhc1Byb3BlcnR5Q2FsbGJhY2sgaGFzUHJvcGVydHkgPSBqc0NsYXNzLT5oYXNQcm9wZXJ0eSkg
ewpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiAgICAgUmVmUHRy
PE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgSlNWYWx1ZVJlZiB2YWx1ZVJl
ZiA9IHRvUmVmKGV4ZWMsIHZhbHVlKTsKICAgICAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9
IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJl
bnRDbGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBz
ZXRQcm9wZXJ0eSA9IGpzQ2xhc3MtPnNldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFwcm9wZXJ0eU5hbWVSZWYpCkBAIC0zNDMsNyArMzQzLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm8KICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CiAgICAg
UmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0Ns
YXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNz
ID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdERlbGV0
ZVByb3BlcnR5Q2FsbGJhY2sgZGVsZXRlUHJvcGVydHkgPSBqc0NsYXNzLT5kZWxldGVQcm9wZXJ0
eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lUmVmKQpAQCAtNTY0LDcgKzU2
NCw3IEBAIEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiB7CiAgICAgSlNPYmplY3RSZWYgdGhpc1Jl
ZiA9IHRvUmVmKHRoaXMpOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gY2xhc3NS
ZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAg
ICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXMgPSBq
c0NsYXNzLT5zdGF0aWNWYWx1ZXMoZXhlYykpIHsKICAgICAgICAgICAgICAgICBpZiAoU3RhdGlj
VmFsdWVFbnRyeSogZW50cnkgPSBzdGF0aWNWYWx1ZXMtPmdldChuYW1lKSkgewpAQCAtNjAwLDcg
KzYwMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGlj
RnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFCiAgICAgaWYgKFBhcmVudDo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdDIpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QyLmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFt
ZSkpOwogCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsK
ICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqLT5jbGFzc1JlZigpOyBq
c0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlm
IChPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGUqIHN0YXRpY0Z1bmN0aW9ucyA9IGpz
Q2xhc3MtPnN0YXRpY0Z1bmN0aW9ucyhleGVjKSkgewogICAgICAgICAgICAgICAgIGlmIChTdGF0
aWNGdW5jdGlvbkVudHJ5KiBlbnRyeSA9IHN0YXRpY0Z1bmN0aW9ucy0+Z2V0KG5hbWUpKSB7CkBA
IC02MjYsNyArNjI2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpjYWxsYmFja0dldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWQKICAgICBKU09iamVjdFJl
ZiB0aGlzUmVmID0gdG9SZWYodGhpc09iaik7CiAgICAgUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBw
cm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2Jq
LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsK
ICAgICAgICAgICAgIGlmIChKU09iamVjdEdldFByb3BlcnR5Q2FsbGJhY2sgZ2V0UHJvcGVydHkg
PSBqc0NsYXNzLT5nZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlO
YW1lUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDI3YmM0YzE3ZjNk
ZmVlYjYxZDI1MjMyM2ZkODc4YzQ0NzgwZjc0YzUuLmU5ZjI1MTljYzMxMjFmYmUwYmEzODRkZDg3
MTVkOWFkNDBhNDVmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUy
LDYgKzUyLDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9TY3Jp
cHRPYmplY3QuY3BwCiAgICAgYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCiAKKyAgICBidWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCisKICAgICBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Q
cm9maWxlLmNwcAogICAgIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9C
eXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC04MTUsNiArODE3LDE0IEBAIGFkZF9jdXN0b21fY29t
bWFuZCgKICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENvcmVf
SU5TUEVDVE9SX1NDUklQVFNfRElSfS9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5ICR7REVSSVZF
RF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlMuanNvbiAtLW91dHB1dF9o
X2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIgLS1vdXRwdXRfY3Bw
X2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIgLS1vdXRwdXRfanNf
ZGlyICIke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9IiAtLW91dHB1dF90eXBl
IEphdmFTY3JpcHQgLS13cml0ZV9hbHdheXMgJiYgbWtkaXIgLXAgJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IgJiYgY3AgJHtERVJJVkVEX1NPVVJDRVNfSkFW
QVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oICR7REVSSVZF
RF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNo
ZXJzLmggJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU1R5
cGVCdWlsZGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVj
dG9yCiAgICAgVkVSQkFUSU0pCiAKKyAgICAjIEpTQ0J1aWx0aW5zCithZGRfY3VzdG9tX2NvbW1h
bmQoCisgICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlND
QnVpbHRpbnMuY3BwICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVp
bHRpbnMuaAorICAgIE1BSU5fREVQRU5ERU5DWSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0v
Z2VuZXJhdGUtanMtYnVpbHRpbnMKKyAgICBERVBFTkRTICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0Vf
RElSfS9idWlsdGlucy8qLmpzCisgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NN
QUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMgSlNDQnVpbHRpbnMu
aCBKU0NCdWlsdGlucy5jcHAKKyAgICBWRVJCQVRJTSkKKwogbGlzdChBUFBFTkQgSmF2YVNjcmlw
dENvcmVfU09VUkNFUwogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0v
SW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwCiAgICAgJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDExNTZlOTdmZDg4
NjI1NTdjOWNmOGQzYjY4YmY0ZDAzYzNlOGJhOGYuLjI2NmFhNWYwODE0YjcyMGZlYjU2YjdkNDFj
ZjE3M2M1MGM1YTRiMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCkBAIC01Nyw2ICs1Nyw3IEBAIGFsbCA6IFwKICAgICBSZWdFeHBPYmplY3QubHV0LmggXAog
ICAgIFN0cmluZ0NvbnN0cnVjdG9yLmx1dC5oIFwKICAgICB1ZGlzODZfaXRhYi5oIFwKKyAgICBK
U0NCdWlsdGlucyBcCiAjCiAKICMgbG9va3VwIHRhYmxlcyBmb3IgY2xhc3NlcwpAQCAtNzksNiAr
ODAsMTQgQEAgS2V5d29yZExvb2t1cC5oOiBLZXl3b3JkTG9va3VwR2VuZXJhdG9yLnB5IEtleXdv
cmRzLnRhYmxlCiB1ZGlzODZfaXRhYi5oOiAkKEphdmFTY3JpcHRDb3JlKS9kaXNhc3NlbWJsZXIv
dWRpczg2L2l0YWIucHkgJChKYXZhU2NyaXB0Q29yZSkvZGlzYXNzZW1ibGVyL3VkaXM4Ni9vcHRh
YmxlLnhtbAogCShQWVRIT05QQVRIPSQoSmF2YVNjcmlwdENvcmUpL2Rpc2Fzc2VtYmxlci91ZGlz
ODYgcHl0aG9uICQoSmF2YVNjcmlwdENvcmUpL2Rpc2Fzc2VtYmxlci91ZGlzODYvaXRhYi5weSAk
KEphdmFTY3JpcHRDb3JlKS9kaXNhc3NlbWJsZXIvdWRpczg2L29wdGFibGUueG1sIHx8IGV4aXQg
MSkKIAorIyBidWlsdGluIGZ1bmN0aW9ucworLlBIT05ZOiBKU0NCdWlsdGlucworCitKU0NCdWls
dGluczogSlNDQnVpbHRpbnMuaCBKU0NCdWlsdGlucy5jcHAKK0pTQ0J1aWx0aW5zLmg6ICQoSmF2
YVNjcmlwdENvcmUpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0
aW5zLyouanMKKwlweXRob24gJF4gJEAKKworSlNDQnVpbHRpbnMuY3BwOiBKU0NCdWlsdGlucy5o
CiAKICMgSW5zcGVjdG9yIGludGVyZmFjZXMKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQppbmRleCBjZGI1NDI2YjA2YjUyYTk4MjU2ZWU5MDU4YmJhOGYxMWVlYTY5
ZWUwLi5hZmU5NjcyYjViMWVlOTI3MTFiZWRkNDc1ZTlhMTI4MjAzYzgxMzY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTAyLDYgKzEwMiw4IEBAIGph
dmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5k
aW5ncy9TY3JpcHRPYmplY3QuaCBcCiAgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdz
L1NjcmlwdFZhbHVlLmNwcCBcCiAgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Nj
cmlwdFZhbHVlLmggXAorICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
RXhlY3V0YWJsZXMuY3BwIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbkV4ZWN1dGFibGVzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eUFsbG9jYXRpb25Qcm9maWxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FycmF5UHJvZmlsZS5jcHAgXApAQCAtMTI0MSw3ICsxMjQzLDkgQEAgamF2YXNjcmlwdGNv
cmVfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9y
SlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmggXAogCURlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmNwcCBcCi0JRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaAorCURlcml2ZWRTb3Vy
Y2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmggXAorCURlcml2ZWRT
b3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvSlNDQnVpbHRpbnMuaAogCiBsbGludF9ub3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDVlZGVmZGJlODU1Zjk2
YTYyNjhkODU3M2JlYzFkMGMzZDg1OGFhNWMuLmExMmRiMTgzNDg2ZGZiYmNhODNmM2E3OGU5Y2Y5
ODYzMWIyNjUzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAt
MzA5LDYgKzMwOSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3Jp
cHRGdW5jdGlvbkNhbGwuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGlu
Z3NcU2NyaXB0T2JqZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRp
bmdzXFNjcmlwdFZhbHVlLmNwcCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ1aWx0
aW5zXEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5UHJvZmlsZS5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeXRlY29kZUJhc2ljQmxvY2suY3BwIiAvPgpAQCAtNzIx
LDYgKzcyMiw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTRnJvbnRlbmRE
aXNwYXRjaGVycy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwIiAvPgorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmNwcCIgLz4K
ICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcQXJyYXlDb25zdHJ1Y3Rvci5sdXQuaCIgLz4KQEAgLTc1
MCw2ICs3NTIsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVp
bGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXFJlZ0V4cE9iamVjdC5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2pl
Y3ROYW1lKVxEZXJpdmVkU291cmNlc1xSZWdFeHBQcm90b3R5cGUubHV0LmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcU3RyaW5nQ29uc3RydWN0
b3IubHV0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcSlNDQnVpbHRpbnMuaCIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcQVBJQ2FsbGJhY2tGdW5jdGlvbi5oIiAvPgpA
QCAtNzk4LDYgKzgwMSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xT
Y3JpcHRGdW5jdGlvbkNhbGwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRp
bmdzXFNjcmlwdE9iamVjdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGlu
Z3NcU2NyaXB0VmFsdWUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5z
XEJ1aWx0aW5FeGVjdXRhYmxlcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0
ZWNvZGVcQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cYnl0ZWNvZGVcQXJyYXlQcm9maWxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxieXRlY29kZVxCeVZhbEluZm8uaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmls
dGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA4N2UxMmE0NzE1OGJiNjIyNGQ0OWZkNjIy
OTc4YzRhOWM0NDM1YTY1Li44NjljMWY1ODliY2I2ODZlYjljZjIwYzA5NmJlMWI4M2E1NTFlMjRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJz
CkBAIC03LDYgKzcsOSBAQAogICAgIDxGaWx0ZXIgSW5jbHVkZT0iYmluZGluZ3MiPgogICAgICAg
PFVuaXF1ZUlkZW50aWZpZXI+ezBiYWNlMTIzLTQ1ODItZWViYy05MzE0LTc4MTliMzc2YzE5OH08
L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJi
dWlsdGlucyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57M2I5ZDcyYTUtMTM1Yi00M2IzLWE1
MjQtYzZkMmI5ZDI5ZDM1fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KICAgICA8
RmlsdGVyIEluY2x1ZGU9ImJ5dGVjb2RlIj4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns3NjYw
ODhhMC0xMjE2LTQ4NTQtYWE0My01NjBjNWUyODM2Njh9PC9VbmlxdWVJZGVudGlmaWVyPgogICAg
IDwvRmlsdGVyPgpAQCAtMTA4LDYgKzExMSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
Llxhc3NlbWJsZXJcTWFjcm9Bc3NlbWJsZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVy
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxi
dWlsdGluc1xCdWlsdGluRXhlY3V0YWJsZXMuY3BwIj4KKyAgICAgIDxGaWx0ZXI+YnVpbHRpbnM8
L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5
dGVjb2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNv
ZGU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTEzMjksNiArMTMzNSw5IEBACiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNU
eXBlQnVpbGRlcnMuY3BwIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+
CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuY3BwIj4KKyAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3Vy
Y2VzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdy
b3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEFQSUNhbGxiYWNrRnVuY3Rpb24u
aCI+CkBAIC0xNDU0LDYgKzE0NjMsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNz
ZW1ibGVyXFg4NkFzc2VtYmxlci5oIj4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxidWlsdGluc1xC
dWlsdGluRXhlY3V0YWJsZXMuaCI+CisgICAgICA8RmlsdGVyPmJ1aWx0aW5zPC9GaWx0ZXI+Cisg
ICAgPC9DbENvbXBpbGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJh
eUFsbG9jYXRpb25Qcm9maWxlLmgiPgogICAgICAgPEZpbHRlcj5ieXRlY29kZTwvRmlsdGVyPgog
ICAgIDwvQ2xJbmNsdWRlPgpAQCAtMjU1MCw2ICsyNTYyLDkgQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xBcnJheVByb3RvdHlwZS5sdXQuaCI+CiAg
ICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0
aW5zLmgiPgorICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KKyAgICA8L0Ns
SW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVk0uaCI+CiAgICAg
ICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggMjdlODc2NzQwYTk2NGIwMjg5ODRlZDY3ODE2MTgyMGE1ZGNm
NzdjNC4uOTExNTczYWIxN2QzMzk3NGFhN2M5YTAxMWRiMjAwYjA5YWY3OGJmYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkyMiw3ICs5MjIsNiBAQAogCQlBNTAzRkExOTE4OEUw
RkIwMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExMzE4OEUwRkFGMDAxMTBGMTQgLyog
SmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi87IH07CiAJCUE1MDNGQTFBMTg4RTBGQjAwMDExMEYx
NCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNDE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlwdENh
bGxGcmFtZS5oICovOyB9OwogCQlBNTAzRkExQjE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1MDNGQTE1MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUu
Y3BwICovOyB9OwotCQlBNTAzRkExQzE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2Fs
bEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NTAzRkExNjE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmggKi87IH07
CiAJCUE1MDNGQTFEMTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90
b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTUwM0ZBMTcxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlw
ZS5jcHAgKi87IH07CiAJCUE1MDNGQTFFMTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRD
YWxsRnJhbWVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1MDNGQTE4MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJh
bWVQcm90b3R5cGUuaCAqLzsgfTsKIAkJQTUwM0ZBMjExODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlw
dEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1MDNGQTFGMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRCcmVha3BvaW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwMjQsNiArMTAy
Myw3IEBACiAJCUE3MEIwODMyMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwQjA4MzAx
N0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5jcHAgKi87IH07CiAJCUE3MEIwODMz
MTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MEIwODMxMTdBMEI3OUIwMERBRjE0QiAvKiBE
RkdCaW5hcnlTd2l0Y2guaCAqLzsgfTsKIAkJQTcxMjM2RTUxMTk1RjMzQzAwQkQyMTc0IC8qIEpJ
VE9wY29kZXMzMl82NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNzEyMzZFNDExOTVGMzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0LmNwcCAq
LzsgfTsKKwkJQTcxREE4MEYxODgwREJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxREE4MEUxODgw
REJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3MjAyOEI2MTc5NzYwMUUwMDk4MDI4QyAvKiBK
U0NUZXN0UnVubmVyVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTcyMDI4QjQxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGls
cy5jcHAgKi87IH07CiAJCUE3MjAyOEI4MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVy
VXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
MjAyOEI1MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzIwMjhCQTE3OTc2MDNE
MDA5ODAyOEMgLyogSlNGdW5jdGlvbklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjAyOEI5MTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0
aW9uSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0xMTUwLDYgKzExNTAsMTAgQEAKIAkJQTdDQTNBRTgxN0RBNDFBRTAwNjUzOEFGIC8q
IEpTV2Vha01hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTdDQTNBRTIxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5oICovOyB9OwogCQlBN0NB
M0FFQjE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDQTNBRTkxN0RBNTE2ODAwNjUzOEFGIC8q
IFdlYWtNYXBEYXRhLmNwcCAqLzsgfTsKIAkJQTdDQTNBRUMxN0RBNTE2ODAwNjUzOEFGIC8qIFdl
YWtNYXBEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBN0NBM0FFQTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuaCAqLzsgfTsKKwkJQTdE
ODAxQTQxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4MDFBMTE4ODBENjZFMDAy
NkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCAqLzsgfTsKKwkJQTdEODAxQTUxODgwRDY2
RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTIxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0
aW5FeGVjdXRhYmxlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUE3RDgwMUE4MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4MDFBNjE4ODBE
NkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwICovOyB9OworCQlBN0Q4MDFBOTE4ODBENkE4
MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3RDgwMUE3MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3RDg5
Q0YyMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDg5Q0UzMTdBMEI4Q0MwMDc3M0FEOCAv
KiBERkdCYXNpY0Jsb2NrLmNwcCAqLzsgfTsKIAkJQTdEODlDRjMxN0EwQjhDQzAwNzczQUQ4IC8q
IERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3RDg5Q0U0MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2Vy
dGlvblNldC5jcHAgKi87IH07CiAJCUE3RDg5Q0Y0MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9j
a0luc2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTdEODlDRTUxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI0NjIs
NiArMjQ2Niw4IEBACiAJCUE3MTIzNkU0MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJf
NjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUT3Bjb2RlczMy
XzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxOEY2MUExMTc1NEEyMTAw
MjQ2NUE3IC8qIFJlZ0V4cEppdFRhYmxlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZWdFeHBKaXRUYWJsZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcx
OEY4MjExMTc4RUI0QjAwMjQ2NUE3IC8qIGNyZWF0ZV9yZWdleF90YWJsZXMgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsg
ZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IGNyZWF0ZV9yZWdleF90YWJsZXM7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE3MURBODBEMTg4MEQ3MUYwMEQxRjI5OSAvKiBnZW5lcmF0ZS1q
cy1idWlsdGlucyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9ICJnZW5lcmF0
ZS1qcy1idWlsdGlucyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MURBODBFMTg4
MERCQUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNTdHJpbmdJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE3MjAyOEI0MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDVGVzdFJ1bm5lclV0aWxzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyMDI4QjUxNzk3NjAxRTAwOTgwMjhD
IC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0NUZXN0UnVubmVyVXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcy
MDI4QjkxNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRnVuY3Rpb25JbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yNTkwLDYgKzI1OTYsMTEgQEAKIAkJQTdDQTNBRTIxN0RBNDFBRTAw
NjUzOEFGIC8qIEpTV2Vha01hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1dlYWtNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdDQTNBRTkxN0RBNTE2
ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYWtNYXBEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTdDQTNBRUExN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtNYXBEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUE3RDgwMUEwMTg4MEQ2NkUwMDI2QzM5QiAvKiBBcnJheS5wcm90b3R5cGUuanMgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBBcnJheS5wcm90b3R5cGUuanM7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAv
KiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTdEODAxQTIxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdWlsdGluRXhlY3V0YWJsZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTYxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1
aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ0J1aWx0
aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTcxODgwRDZBODAw
MjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTQ0J1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RDg5Q0UzMTdB
MEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IERGR0Jhc2ljQmxvY2suY3BwOyBwYXRoID0gZGZnL0RGR0Jhc2ljQmxv
Y2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0Q4OUNFNDE3QTBCOENDMDA3
NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwOyBwYXRoID0gZGZnL0RGR0Js
b2NrSW5zZXJ0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdEODlD
RTUxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBkZmcv
REZHQmxvY2tJbnNlcnRpb25TZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5
MjYsNiArMjkzNyw3IEBACiAJCQkJODYwNEY0RjIxNDNBNkM0NDAwQjI5NUY1IC8qIENoYW5nZUxv
ZyAqLywKIAkJCQlGNjkyQTg1NDAyNTU1OTdEMDFGRjYwRjcgLyogY3JlYXRlX2hhc2hfdGFibGUg
Ki8sCiAJCQkJQTcxOEY4MjExMTc4RUI0QjAwMjQ2NUE3IC8qIGNyZWF0ZV9yZWdleF90YWJsZXMg
Ki8sCisJCQkJQTcxREE4MEQxODgwRDcxRjAwRDFGMjk5IC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5z
ICovLAogCQkJCTQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4NCAvKiBqc2MuY3BwICovLAogCQkJCUY2
OEVCQjhDMDI1NUQ0QzYwMUZGNjBGNyAvKiBjb25maWcuaCAqLywKIAkJCQlGNUMyOTBFNjAyODRG
OThFMDE4NjM1Q0EgLyogSmF2YVNjcmlwdENvcmVQcmVmaXguaCAqLywKQEAgLTI5MzQsNiArMjk0
Niw3IEBACiAJCQkJMTQzMkVCRDcwQTM0Q0FENDAwNzE3QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4
Q0IxMjBFRDEyQjRFMDAxRDY0OUYgLyogYXNzZW1ibGVyICovLAogCQkJCUE1NENGMkVBMTg0RUE3
MzkwMDIzN0YxOSAvKiBiaW5kaW5ncyAqLywKKwkJCQlBN0Q4MDE5RjE4ODBENjZFMDAyNkMzOUIg
LyogYnVpbHRpbnMgKi8sCiAJCQkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2Rl
ICovLAogCQkJCTdFMzlEODFEMEVDMzhFRkEwMDNBRjExQSAvKiBieXRlY29tcGlsZXIgKi8sCiAJ
CQkJMUM5MDUxM0UwQkE5RTg4MzAwODFFOUQwIC8qIENvbmZpZ3VyYXRpb25zICovLApAQCAtMzUw
OSw2ICszNTIyLDggQEAKIAkJNjUwRkRGOEQwOUQwRkNBNzAwNzY5RTU0IC8qIERlcml2ZWQgU291
cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQTdE
ODAxQTYxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCAqLywKKwkJCQlBN0Q4MDFB
NzE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCAqLywKIAkJCQlCQzE4QzUyMzBFMTZG
QzhBMDBCMzQ0NjAgLyogQXJyYXlQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJQkNEMjAzRTcwRTE3
MThGNDAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJQTUxM0U1QzYxODVG
OTQzNjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggKi8sCkBAIC0zODExLDYgKzM4
MjYsNyBAQAogCQkJCUE3OTBERDZBMTgyRjQ5OTcwMDU4ODgwNyAvKiBKU1NldEl0ZXJhdG9yLmgg
Ki8sCiAJCQkJQkMwMkU5QjYwRTE4NDJGQTAwMEY5Mjk3IC8qIEpTU3RyaW5nLmNwcCAqLywKIAkJ
CQlGNjkyQTg2MjAyNTU1OTdEMDFGRjYwRjcgLyogSlNTdHJpbmcuaCAqLywKKwkJCQlBNzFEQTgw
RTE4ODBEQkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxpbmVzLmggKi8sCiAJCQkJODZFODU1Mzgx
MTFCOTk2ODAwMUFGNTFFIC8qIEpTU3RyaW5nQnVpbGRlci5oICovLAogCQkJCTI2MDBCNUE0MTUy
QkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5jcHAgKi8sCiAJCQkJMjYwMEI1QTUxNTJC
QUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVyLmggKi8sCkBAIC00NTYxLDYgKzQ1NzcsMTYg
QEAKIAkJCXBhdGggPSByZW1vdGU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9Owor
CQlBN0Q4MDE5RjE4ODBENjZFMDAyNkMzOUIgLyogYnVpbHRpbnMgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUE3RDgwMUEwMTg4MEQ2NkUwMDI2QzM5QiAv
KiBBcnJheS5wcm90b3R5cGUuanMgKi8sCisJCQkJQTdEODAxQTExODgwRDY2RTAwMjZDMzlCIC8q
IEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi8sCisJCQkJQTdEODAxQTIxODgwRDY2RTAwMjZDMzlC
IC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oICovLAorCQkJKTsKKwkJCXBhdGggPSBidWlsdGluczsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAvKiBFbmQgUEJYR3JvdXAgc2VjdGlv
biAqLwogCiAvKiBCZWdpbiBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC00NjA2
LDExICs0NjMyLDExIEBACiAJCQkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNz
ZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUNFRUUxNTE4N0YzQkFEMDBFNTVDOTkgLyog
SW5zcGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1QzAyODVEMTcxNzk2NjgwMDM1
MUUzNSAvKiBBUk12N0RPcGNvZGUuaCBpbiBIZWFkZXJzICovLAotIAkJCQkyQTY4Mjk1QjE4NzVG
ODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5oIGluIEhlYWRlcnMgKi8sCi0gICAgICAg
ICAgICAgICAgMkE0RUM5MEMxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMkE2ODI5NUIxODc1RjgwNTAwQjZDM0UyIC8qIENvcHlXcml0
ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTJBNEVDOTBDMTg2MEQ2QzIwMDk0Rjc4MiAv
KiBXcml0ZUJhcnJpZXJCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNTkzMkE4MTgzQzVB
MjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MzI0Mzkz
MTg1Njk3MDkwMDJFRDY5MiAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weSBpbiBI
ZWFkZXJzICovLAotIAkJCQlBNTMyNDM5MjE4NTY5NzA5MDAyRUQ2OTIgLyogQ29kZUdlbmVyYXRv
ckluc3BlY3Rvci5weSBpbiBIZWFkZXJzICovLAorCQkJCUE1MzI0MzkyMTg1Njk3MDkwMDJFRDY5
MiAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1
NEYxN0VFMjc0OTAwQUJCMjE3IC8qIFRlbXBSZWdpc3RlclNldC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTUwRTRCNjQxODgwOURENTAwNjhBNDZEIC8qIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUI1OEMxNTE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JI
YW5kbGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLywKQEAgLTQ2MjIsNyArNDY0OCw3IEBACiAJCQkJ
MEY4MzM1QjgxNjM5QzFFQTAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1ODQwRTI5MTg3Q0E1RTYwMDg0M0IxMCAvKiBpbmxpbmUtYW5kLW1p
bmlmeS1zdHlsZXNoZWV0cy1hbmQtc2NyaXB0cy5weSBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQw
RTJCMTg3Q0E3NUIwMDg0M0IxMCAvKiBqc21pbi5weSBpbiBIZWFkZXJzICovLAotIAkJCQlBNTMy
NDM5ODE4NTZBNDg5MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlMuanNvbiBpbiBIZWFkZXJzICovLAor
CQkJCUE1MzI0Mzk4MTg1NkE0ODkwMDJFRDY5MiAvKiBJbnNwZWN0b3JKUy5qc29uIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTU4NDBFMkExODdDQTc1OTAwODQzQjEwIC8qIHh4ZC5wbCBpbiBIZWFkZXJz
ICovLAogCQkJCUZFQTA4NjIwMTgyQjdBMDQwMEY2RDg1MSAvKiBCcmVha3BvaW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBN0E4QUYzNTE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuaCBp
biBIZWFkZXJzICovLApAQCAtNDczMyw3ICs0NzU5LDcgQEAKIAkJCQlBMUEwMDlDMDE4MzFBMjJE
MDBDRjg3MTEgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZF
QzlEQzUxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVDb2RlUGFyc2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjQ4NTMyODE4N0RGREVDMDA4M0I2ODcgLyogRlRMQXZhaWxhYmxlUmVjb3Zlcnku
aCBpbiBIZWFkZXJzICovLAotICAgICAgICAgICAgICAgIEE1OTNDRjg3MTg0MDM4Q0EwMEJGQ0Uy
NyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTkzQ0Y4
NzE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYyNTZDMzYxNjI3QjBBRDAwN0YyNzgzIC8qIERGR0NhbGxBcnJheUFsbG9jYXRv
clNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdCMjk0QjE0QzNDRDJG
MDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZGQzk1
ODE0RUY5MEEyMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtNDg3
Miw2ICs0ODk4LDcgQEAKIAkJCQkwRkVBMEExRDE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJh
Y3RIZWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEExRjE3MDhCMDA3MDBCQjcyMkMgLyog
RlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU5NDU1OTMx
ODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQTdEODAxQTkxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkVBMEEwQTE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ2FwYWJpbGl0aWVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyQTE4N0RGREVDMDA4M0I2ODcgLyogRlRMUmVj
b3ZlcnlPcGNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTIzMTcwOTYwNjkwMEJCNzIy
QyAvKiBGVExDb21tb25WYWx1ZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNDk0Niw2ICs0OTczLDcg
QEAKIAkJCQlCQzE4QzQwRjBFMTZGNUNEMDBCMzQ0NjAgLyogSWRlbnRpZmllci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQzI1RjhCQ0UxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTkxNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4
aW5nSGVhZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0Q4MDFBNTE4ODBENjZFMDAyNkMzOUIg
LyogQnVpbHRpbkV4ZWN1dGFibGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5QTE1RUQ4
RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkI3RjM5QjE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdUeXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkNFRkFCMDE4MDVDQTZEMDA0NzJDRTQgLyogSW5pdGlhbGl6ZUxMVk0uaCBpbiBI
ZWFkZXJzICovLApAQCAtNTIxOCw2ICs1MjQ2LDcgQEAKIAkJCQlBNTMyNDM4ODE4NTY4MzM1MDAy
RUQ2OTIgLyogSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMThDNDU2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBQcm90ZWN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxNDc0QzMzQjE2QUEyRDk1MDA2MkYwMUQgLyogUHJvdG90eXBlTWFwLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlBNzFEQTgwRjE4ODBEQkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMzJBNDE0Q0E3REQ5MDA4NUYzQzYgLyogUHV0QnlJZFN0
YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQ0Q0QzIxNUYxQTYwNzAwMzJGMUMwIC8qIFB1
dERpcmVjdEluZGV4TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MwMDhDRTcxODc2MzFCNjAw
OTU1QzI0IC8qIE1pY3JvdGFzay5oIGluIEhlYWRlcnMgKi8sCkBAIC01ODM2LDYgKzU4NjUsNyBA
QAogCQkJCUE3RDg5Q0YyMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE3MEIwODMyMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0
Y2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlDRjMxN0EwQjhDQzAwNzczQUQ4IC8qIERG
R0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3RDgwMUE0MTg4MEQ2
NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
ODZFQzlEQzQxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVDb2RlUGFyc2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRDgyRTIxMTQxNzJDRTMwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGRkM5NTcxNEVGOTBBMDAwQzcyNTMyIC8qIERGR0NG
QVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTg1Miw2ICs1ODgyLDcgQEAKIAkJCQkwRkZG
Qzk1OTE0RUY5MEE2MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEYyRkM3NzIxNkUxMkY3MTAwMzhEOTc2IC8qIERGR0RDRVBoYXNlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGOEYyQjk5MTcyRjA0RkYwMDdEQkRBNSAvKiBERkdEZXNpcmVkSWRlbnRpZmll
cnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTdEODAxQTgxODgwRDZBODAwMjZDMzlCIC8qIEpT
Q0J1aWx0aW5zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3M0UxMzMwMTc5NjI0Q0QwMEU0REVB
OCAvKiBERkdEZXNpcmVkU3RydWN0dXJlQ2hhaW5zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMy
QzBGN0NEMTdCQkZDNUIwMDQ2NEZFNCAvKiBERkdEZXNpcmVkVHJhbnNpdGlvbnMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZFODUzNEIxNzIzQ0RBNTAwQjYxOEY1IC8qIERGR0Rlc2lyZWRXYXRj
aHBvaW50cy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU5NzYsNyArNjAwNyw3IEBACiAJCQkJMEY2
QjFDQzUxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVud2luZEluZm8uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEY5RDMzOUExODAzQURCNzAwNzNDMkJDIC8qIEZUTFN0YWNrTWFwcy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkVBMEExNjE3MDZCQjkwMDBCQjcyMkMgLyogRlRMU3RhdGUuY3BwIGlu
IFNvdXJjZXMgKi8sCi0gCQkJCTdDMDA4Q0QyMTg2RjhBOTMwMDk1NUMyNCAvKiBKU1Byb21pc2VG
dW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0MwMDhDRDIxODZGOEE5MzAwOTU1QzI0
IC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNCNTE4
NUZDOUU5MDA4NDVEOTcgLyogRlRMSlNDYWxsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1
QkUxMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTU5M0NGN0MxODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0FycmF5LnByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9B
cnJheS5wcm90b3R5cGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ViNDJmNWNjNDMzZjE2MzYzNDNiZmM5ODJh
YTJhYWZiMzM2ZTk0OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9uIGV2ZXJ5KGNhbGxiYWNr
IC8qLCB0aGlzQXJnICovKSB7CisgICAgInVzZSBzdHJpY3QiOworICAgIGlmICh0aGlzID09PSBu
dWxsKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5
IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIik7CisgICAgCisgICAgaWYgKHRoaXMg
PT09IHVuZGVmaW5lZCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3Rv
dHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkIik7CisgICAg
CisgICAgdmFyIGFycmF5ID0gQE9iamVjdCh0aGlzKTsKKyAgICB2YXIgbGVuZ3RoID0gYXJyYXku
bGVuZ3RoID4+PiAwOworICAgIAorICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICJmdW5jdGlv
biIpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZXZlcnkg
Y2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7CisKKyAgICB2YXIgdGhpc0FyZyA9IGFyZ3Vt
ZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkOworICAgIAorICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKCEoaSBpbiBhcnJh
eSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFjYWxsYmFjay5AY2FsbCh0
aGlzQXJnLCBhcnJheVtpXSwgaSwgYXJyYXkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ODhlNTgyMzM5ZmY3NWE5YTc3ZjgzNDNjY2NjMmZiZjY0MGVhOWZmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAK
QEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxl
cy5oIgorCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlBhcnNlci5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworQnVpbHRpbkV4ZWN1dGFibGVzOjpCdWlsdGluRXhlY3V0YWJs
ZXMoVk0mIHZtKQorICAgIDogbV92bSh2bSkKKyNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX1NP
VVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSAsIG1fIyNuYW1lIyNTb3Vy
Y2UobWFrZVNvdXJjZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChzXyMjbmFtZSwgbGVu
Z3RoKSwgU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoIjxidWlsdGluPiIpKSkKKyAgICBK
U0NfRk9SRUFDSF9CVUlMVElOKElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1
bmRlZiBFWFBPU0VfQlVJTFRJTl9TVFJJTkdTCit7Cit9CisKK1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSkKK3sKKyAgICBKU1Rl
eHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lOworICAgIFBhcnNlckVycm9yIGVy
cm9yOworICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9IHBhcnNlPFByb2dyYW1Ob2Rl
PigmbV92bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIEpTUGFyc2VCdWlsdGluLCBKU1BhcnNl
UHJvZ3JhbUNvZGUsIGVycm9yLCAmcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CisKKyAgICBp
ZiAoIXByb2dyYW0pIHsKKyAgICAgICAgZGF0YUxvZygiRmF0YWwgZXJyb3IgY29tcGlsaW5nIGJ1
aWx0aW4gZnVuY3Rpb24gJyIsIG5hbWUuc3RyaW5nKCksICInOiAiLCBlcnJvci5tX21lc3NhZ2Up
OworICAgICAgICBDUkFTSCgpOworICAgIH0KKworICAgIFN0YXRlbWVudE5vZGUqIGV4cHJTdGF0
ZW1lbnQgPSBwcm9ncmFtLT5zaW5nbGVTdGF0ZW1lbnQoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChl
eHByU3RhdGVtZW50KTsKKyAgICBSRUxFQVNFX0FTU0VSVChleHByU3RhdGVtZW50LT5pc0V4cHJT
dGF0ZW1lbnQoKSk7CisgICAgRXhwcmVzc2lvbk5vZGUqIGZ1bmNFeHByID0gc3RhdGljX2Nhc3Q8
RXhwclN0YXRlbWVudE5vZGUqPihleHByU3RhdGVtZW50KS0+ZXhwcigpOworICAgIFJFTEVBU0Vf
QVNTRVJUKGZ1bmNFeHByKTsKKyAgICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwci0+aXNGdW5jRXhw
ck5vZGUoKSk7CisgICAgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSA9IHN0YXRpY19jYXN0PEZ1bmNF
eHByTm9kZSo+KGZ1bmNFeHByKS0+Ym9keSgpOworICAgIFJFTEVBU0VfQVNTRVJUKCFwcm9ncmFt
LT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKKyAgICAKKyAgICBib2R5LT5zZXRFbmRQb3NpdGlv
bihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5KTsK
KyAgICBSRUxFQVNFX0FTU0VSVChib2R5LT5pZGVudCgpLmlzTnVsbCgpKTsKKyAgICAKKyAgICAv
LyBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgYW4gaW5wdXQgc3RyaW5nIHRoYXQgd291bGQgcmVzdWx0
IGluIGEgc2luZ2xlIGFub255bW91cyBmdW5jdGlvbiBleHByZXNzaW9uLgorICAgIGJvZHktPnNl
dEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOworICAgIFJFTEVBU0VfQVNT
RVJUKGJvZHkpOworICAgIGZvciAoY29uc3QgYXV0byYgY2xvc2VkVmFyaWFibGUgOiBwcm9ncmFt
LT5jbG9zZWRWYXJpYWJsZXMoKSkgeworICAgICAgICBpZiAoY2xvc2VkVmFyaWFibGUgPT0gbV92
bS5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMuaW1wbCgpKQorICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgCisgICAgICAgIGlmIChjbG9zZWRWYXJpYWJsZSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMt
PnVuZGVmaW5lZEtleXdvcmQuaW1wbCgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGNsb3NlZFZhcmlhYmxlLT5pc0VtcHR5VW5pcXVlKCkpOworICAgIH0K
KyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmbV92bSwgc291cmNlLCBib2R5LCB0cnVl
LCBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbik7CisgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5tX25h
bWVWYWx1ZS5zZXQobV92bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBqc1N0cmluZygmbV92bSwgbmFt
ZS5zdHJpbmcoKSkpOworICAgIHJldHVybiBmdW5jdGlvbkV4ZWN1dGFibGU7Cit9CisKKyNkZWZp
bmUgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgp
IFwKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6Om5hbWUj
I0V4ZWN1dGFibGUoKSBcCit7XAorICAgIGlmICghbV8jI25hbWUjI0V4ZWN1dGFibGUpXAorICAg
ICAgICBtXyMjbmFtZSMjRXhlY3V0YWJsZSA9IGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKG1fIyNu
YW1lIyNTb3VyY2UsIG1fdm0ucHJvcGVydHlOYW1lcy0+ZnVuY3Rpb25OYW1lKTtcCisgICAgcmV0
dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1wKK30KK0pTQ19GT1JFQUNIX0JVSUxUSU4o
REVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgRVhQT1NFX0JVSUxUSU5fU09VUkNF
UworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDlhMTllMjYxNTA3OTRhNjY5ZWM5OGUzOTliZjY3Zjdm
NzEwNjQxOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBCdWlsdGluRXhlY3V0YWJsZXNf
aAorI2RlZmluZSBCdWlsdGluRXhlY3V0YWJsZXNfaAorCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMu
aCIKKyNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSAiV2Vhay5oIgorI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIElkZW50aWZpZXI7CitjbGFzcyBWTTsKKworY2xhc3Mg
QnVpbHRpbkV4ZWN1dGFibGVzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxCdWls
dGluRXhlY3V0YWJsZXM+IGNyZWF0ZShWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IEJ1aWx0aW5FeGVjdXRhYmxlcyh2bSkpOworICAgIH0KKyAgICAKKyNkZWZpbmUg
RVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwK
K1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuYW1lIyNFeGVjdXRhYmxlKCk7IFwKK2NvbnN0
IFNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIHsgcmV0dXJuIG1fIyNuYW1lIyNTb3VyY2U7IH0K
KyAgICAKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVT
KQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX1NPVVJDRVMKKyAgICAKK3ByaXZhdGU6CisgICAgQnVp
bHRpbkV4ZWN1dGFibGVzKFZNJik7CisgICAgVk0mIG1fdm07CisgICAgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKGNvbnN0IFNvdXJjZUNvZGUmLCBj
b25zdCBJZGVudGlmaWVyJik7CisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVS
UyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aClcCisgICAgU291cmNlQ29kZSBtXyMjbmFtZSMj
U291cmNlOyBcCisgICAgV2VhazxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4gbV8jI25hbWUj
I0V4ZWN1dGFibGU7CisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTihERUNMQVJFX0JVSUxUSU5fU09V
UkNFX01FTUJFUlMpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCit9Owor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAppbmRleCAyNjNlYzdjYWRmNGY3OWNhODEwMjQ0MWU2MmJmMmEwNWI1ZGRjM2YyLi43NTE1
MDY1NDIzNzZkN2VkYzU5OWFhMDBmOWIxMjY4NWNkYTM1MmNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNDMsMTEgKzQzLDEzIEBACiAjaW5j
bHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRp
b24uaCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIK
ICNpbmNsdWRlICJMTEludEVudHJ5cG9pbnQuaCIKICNpbmNsdWRlICJMb3dMZXZlbEludGVycHJl
dGVyLmgiCisjaW5jbHVkZSAiTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIk9i
amVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBv
bHltb3JwaGljUHV0QnlJZExpc3QuaCIKICNpbmNsdWRlICJSZWR1Y2VXaGl0ZXNwYWNlLmgiCkBA
IC0xNTY5LDcgKzE1NzEsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxl
KiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbgogCiAgICAgc2V0Q29u
c3RhbnRSZWdpc3RlcnModW5saW5rZWRDb2RlQmxvY2stPmNvbnN0YW50UmVnaXN0ZXJzKCkpOwog
ICAgIGlmICh1bmxpbmtlZENvZGVCbG9jay0+dXNlc0dsb2JhbE9iamVjdCgpKQotICAgICAgICBt
X2NvbnN0YW50UmVnaXN0ZXJzW3VubGlua2VkQ29kZUJsb2NrLT5nbG9iYWxPYmplY3RSZWdpc3Rl
cigpLm9mZnNldCgpXS5zZXQoKm1fdm0sIG93bmVyRXhlY3V0YWJsZSwgbV9nbG9iYWxPYmplY3Qu
Z2V0KCkpOworICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW3VubGlua2VkQ29kZUJsb2NrLT5n
bG9iYWxPYmplY3RSZWdpc3RlcigpLnRvQ29uc3RhbnRJbmRleCgpXS5zZXQoKm1fdm0sIG93bmVy
RXhlY3V0YWJsZSwgbV9nbG9iYWxPYmplY3QuZ2V0KCkpOwogICAgIG1fZnVuY3Rpb25EZWNscy5y
ZXNpemVUb0ZpdCh1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCkpOwog
ICAgIGZvciAoc2l6ZV90IGNvdW50ID0gdW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rp
b25EZWNscygpLCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSA9IHVubGlua2VkQ29kZUJsb2NrLT5m
dW5jdGlvbkRlY2woaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgKaW5kZXggNjhiYzAzNzlmNTc0NGM5YThmNzQzMWRiNjRmOGFiNTRlNmUxMDUzZi4uNDk5NWM1
MmNmOGIyYjFiNGQ2MjgwNDUzZWVkMjdjNzc0YTQ5NTU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtNTYsNyArNTYsNiBAQAogI2luY2x1ZGUgIkhh
bmRsZXJJbmZvLmgiCiAjaW5jbHVkZSAiT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaCIKICNpbmNs
dWRlICJPcHRpb25zLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlB1dFBy
b3BlcnR5U2xvdC5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiSklUQ29k
ZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2ZpbGVk
Q29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAKaW5k
ZXggOTg2ZTAzZDBjYmE3MTg1YjM5Y2VlMDIzZjRhYjZiYzliOGNjYjZlNC4uNmYyZDVlYmExY2E0
NWRkZWIxZGY2NWZkMDUxMjMzZTVmMTM4YmUwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tK
ZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVkZSAiREZHRXhpdFByb2Zp
bGUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAKaW5kZXggMWRmYjVhYzZhZDkwOTNmOGY4MTEwMWVmN2YyZTYxMjMxMWFjMTkzOS4u
NDMzOTBkOTY1ZmM1MDM0MDE2ZjdiZmZmMjNlNjhiYjFlMDU0NTUyYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC00
OSw5ICs0OSw5IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s6OnNf
aW5mbyA9IHsgIlVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayIsCiBjb25zdCBDbGFzc0luZm8gVW5s
aW5rZWRFdmFsQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZEV2YWxDb2RlQmxvY2siLCAm
QmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlua2VkRXZhbENvZGVC
bG9jaykgfTsKIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpzX2lu
Zm8gPSB7ICJVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKSB9OwogCi1zdGF0
aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhW
TSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgRGVidWdnZXJNb2Rl
IGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVy
cm9yKQorc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlRnVuY3Rpb25D
b2RlQmxvY2soVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIERl
YnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFVubGlu
a2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yKQogewotICAg
IFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBib2R5ID0gcGFyc2U8RnVuY3Rpb25Cb2R5Tm9kZT4o
JnZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgp
LCBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpID8gSlNQYXJzZVN0cmljdCA6IEpTUGFy
c2VOb3JtYWwsIEpTUGFyc2VGdW5jdGlvbkNvZGUsIGVycm9yKTsKKyAgICBSZWZQdHI8RnVuY3Rp
b25Cb2R5Tm9kZT4gYm9keSA9IHBhcnNlPEZ1bmN0aW9uQm9keU5vZGU+KCZ2bSwgc291cmNlLCBl
eGVjdXRhYmxlLT5wYXJhbWV0ZXJzKCksIGV4ZWN1dGFibGUtPm5hbWUoKSwgZXhlY3V0YWJsZS0+
dG9TdHJpY3RuZXNzKCksIEpTUGFyc2VGdW5jdGlvbkNvZGUsIGVycm9yKTsKIAogICAgIGlmICgh
Ym9keSkgewogICAgICAgICBBU1NFUlQoZXJyb3IubV90eXBlICE9IFBhcnNlckVycm9yOjpFcnJv
ck5vbmUpOwpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
ayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhWTSYgdm0sIFVubGlua2VkRnVuYwogICAgIGJv
ZHktPmZpbmlzaFBhcnNpbmcoZXhlY3V0YWJsZS0+cGFyYW1ldGVycygpLCBleGVjdXRhYmxlLT5u
YW1lKCksIGV4ZWN1dGFibGUtPmZ1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZSgpKTsKICAgICBl
eGVjdXRhYmxlLT5yZWNvcmRQYXJzZShib2R5LT5mZWF0dXJlcygpLCBib2R5LT5oYXNDYXB0dXJl
ZFZhcmlhYmxlcygpKTsKICAgICAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1
bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUoJnZtLCBGdW5jdGlvbkNvZGUs
IEV4ZWN1dGFibGVJbmZvKGJvZHktPm5lZWRzQWN0aXZhdGlvbigpLCBib2R5LT51c2VzRXZhbCgp
LCBib2R5LT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KSk7CisgICAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5mbyhib2R5LT5uZWVk
c0FjdGl2YXRpb24oKSwgYm9keS0+dXNlc0V2YWwoKSwgYm9keS0+aXNTdHJpY3RNb2RlKCksIGtp
bmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1
bmN0aW9uKSk7CiAgICAgT3duUHRyPEJ5dGVjb2RlR2VuZXJhdG9yPiBnZW5lcmF0b3IoYWRvcHRQ
dHIobmV3IEJ5dGVjb2RlR2VuZXJhdG9yKHZtLCBib2R5LmdldCgpLCByZXN1bHQsIGRlYnVnZ2Vy
TW9kZSwgcHJvZmlsZXJNb2RlKSkpOwogICAgIGVycm9yID0gZ2VuZXJhdG9yLT5nZW5lcmF0ZSgp
OwogICAgIGJvZHktPmRlc3Ryb3lEYXRhKCk7CkBAIC04MiwxMyArODIsMTQgQEAgdW5zaWduZWQg
VW5saW5rZWRDb2RlQmxvY2s6OmFkZE9yRmluZENvbnN0YW50KEpTVmFsdWUgdikKICAgICByZXR1
cm4gYWRkQ29uc3RhbnQodik7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9t
R2xvYmFsQ29kZSkKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSwg
VW5saW5rZWRGdW5jdGlvbktpbmQga2luZCkKICAgICA6IEJhc2UoKnZtLCBzdHJ1Y3R1cmUpCiAg
ICAgLCBtX251bUNhcHR1cmVkVmFyaWFibGVzKG5vZGUtPmNhcHR1cmVkVmFyaWFibGVDb3VudCgp
KQogICAgICwgbV9mb3JjZVVzZXNBcmd1bWVudHMobm9kZS0+dXNlc0FyZ3VtZW50cygpKQogICAg
ICwgbV9pc0luU3RyaWN0Q29udGV4dChub2RlLT5pc1N0cmljdE1vZGUoKSkKICAgICAsIG1faGFz
Q2FwdHVyZWRWYXJpYWJsZXMobm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkKICAgICAsIG1f
aXNGcm9tR2xvYmFsQ29kZShpc0Zyb21HbG9iYWxDb2RlKQorICAgICwgbV9pc0J1aWx0aW5GdW5j
dGlvbihraW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uKQogICAgICwgbV9uYW1lKG5vZGUt
PmlkZW50KCkpCiAgICAgLCBtX2luZmVycmVkTmFtZShub2RlLT5pbmZlcnJlZE5hbWUoKSkKICAg
ICAsIG1fcGFyYW1ldGVycyhub2RlLT5wYXJhbWV0ZXJzKCkpCkBAIC0xNjYsNyArMTY3LDcgQEAg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNv
ZGVCbG9ja0ZvcihWTSYgdm0sIGNvbnMKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9j
ayh2bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJv
ZmlsZXJNb2RlLCBlcnJvcik7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0
ID0gZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayh2bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXph
dGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBpc0J1aWx0aW5GdW5jdGlvbigp
ID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBlcnJv
cik7CiAgICAgCiAgICAgaWYgKGVycm9yLm1fdHlwZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25l
KQogICAgICAgICByZXR1cm4gMDsKQEAgLTIxMCw2ICsyMTEsNyBAQCBVbmxpbmtlZENvZGVCbG9j
azo6VW5saW5rZWRDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZVR5
cGUgY29kZQogICAgICwgbV9pc1N0cmljdE1vZGUoaW5mby5tX2lzU3RyaWN0TW9kZSkKICAgICAs
IG1faXNDb25zdHJ1Y3RvcihpbmZvLm1faXNDb25zdHJ1Y3RvcikKICAgICAsIG1faGFzQ2FwdHVy
ZWRWYXJpYWJsZXMoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8ubV9pc0J1
aWx0aW5GdW5jdGlvbikKICAgICAsIG1fZmlyc3RMaW5lKDApCiAgICAgLCBtX2xpbmVDb3VudCgw
KQogICAgICwgbV9lbmRDb2x1bW4oVUlOVF9NQVgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IGI5ZGFlMmQ1YzY5Yzc5Y2Vh
YWE4MDIzZDJhM2ExZjI2ZDQ2MDk0M2IuLmFiZjZjZjM1YjkzMDZhNGY3YTMwMWFiMGRmNzY2NmVj
NjEyZTM3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5oCkBAIC02NiwyNiArNjYsMzUgQEAgdHlwZWRlZiB1bnNpZ25lZCBVbmxp
bmtlZE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOwogdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZExM
SW50Q2FsbExpbmtJbmZvOwogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFi
bGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0
TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNB
Y3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0
cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKQogICAgICAgICA6IG1fbmVlZHNBY3RpdmF0
aW9uKG5lZWRzQWN0aXZhdGlvbikKICAgICAgICAgLCBtX3VzZXNFdmFsKHVzZXNFdmFsKQogICAg
ICAgICAsIG1faXNTdHJpY3RNb2RlKGlzU3RyaWN0TW9kZSkKICAgICAgICAgLCBtX2lzQ29uc3Ry
dWN0b3IoaXNDb25zdHJ1Y3RvcikKKyAgICAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGlzQnVp
bHRpbkZ1bmN0aW9uKQogICAgIHsKICAgICB9Ci0gICAgYm9vbCBtX25lZWRzQWN0aXZhdGlvbjsK
LSAgICBib29sIG1fdXNlc0V2YWw7Ci0gICAgYm9vbCBtX2lzU3RyaWN0TW9kZTsKLSAgICBib29s
IG1faXNDb25zdHJ1Y3RvcjsKKyAgICBib29sIG1fbmVlZHNBY3RpdmF0aW9uIDogMTsKKyAgICBi
b29sIG1fdXNlc0V2YWwgOiAxOworICAgIGJvb2wgbV9pc1N0cmljdE1vZGUgOiAxOworICAgIGJv
b2wgbV9pc0NvbnN0cnVjdG9yIDogMTsKKyAgICBib29sIG1faXNCdWlsdGluRnVuY3Rpb24gOiAx
OworfTsKKworZW51bSBVbmxpbmtlZEZ1bmN0aW9uS2luZCB7CisgICAgVW5saW5rZWROb3JtYWxG
dW5jdGlvbiwKKyAgICBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwKIH07CiAKIGNsYXNzIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6CisgICAgZnJp
ZW5kIGNsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlczsKICAgICBmcmllbmQgY2xhc3MgQ29kZUNhY2hl
OworICAgIGZyaWVuZCBjbGFzcyBWTTsKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0
YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNKiB2bSwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlLCBib29sIGlzRnJvbUdsb2Jh
bENvZGUgPSBmYWxzZSkKKyAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNy
ZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSog
bm9kZSwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtl
ZEZ1bmN0aW9uS2luZCkKICAgICB7Ci0gICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlPih2bS0+aGVhcCkpIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+
dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwg
aXNGcm9tR2xvYmFsQ29kZSk7CisgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBp
bnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlPih2bS0+aGVhcCkpIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgaXNG
cm9tR2xvYmFsQ29kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQpOwogICAgICAgICBpbnN0YW5jZS0+
ZmluaXNoQ3JlYXRpb24oKnZtKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KQEAg
LTk5LDYgKzEwOCwxNCBAQCBwdWJsaWM6CiAgICAgfQogICAgIHNpemVfdCBwYXJhbWV0ZXJDb3Vu
dCgpIGNvbnN0OwogICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBt
X2lzSW5TdHJpY3RDb250ZXh0OyB9CisgICAgSlNQYXJzZXJTdHJpY3RuZXNzIHRvU3RyaWN0bmVz
cygpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9pc0J1aWx0aW5GdW5jdGlvbikKKyAgICAg
ICAgICAgIHJldHVybiBKU1BhcnNlQnVpbHRpbjsKKyAgICAgICAgaWYgKG1faXNJblN0cmljdENv
bnRleHQpCisgICAgICAgICAgICByZXR1cm4gSlNQYXJzZVN0cmljdDsKKyAgICAgICAgcmV0dXJu
IEpTUGFyc2VOb3JtYWw7CisgICAgfQogICAgIEZ1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZSBm
dW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFt
ZUlzSW5TY29wZVRvZ2dsZTsgfQogCiAgICAgdW5zaWduZWQgZmlyc3RMaW5lT2Zmc2V0KCkgY29u
c3QgeyByZXR1cm4gbV9maXJzdExpbmVPZmZzZXQ7IH0KQEAgLTE0Miw4ICsxNTksMTAgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0ltbW9ydGFsU3RydWN0dXJlID0gdHJ1ZTsK
ICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCisgICAgYm9vbCBpc0J1aWx0aW5G
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KKwogcHJpdmF0
ZToKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVjdHVyZSosIGNvbnN0
IFNvdXJjZUNvZGUmLCBGdW5jdGlvbkJvZHlOb2RlKiwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlKTsK
KyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVjdHVyZSosIGNvbnN0IFNv
dXJjZUNvZGUmLCBGdW5jdGlvbkJvZHlOb2RlKiwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlLCBVbmxp
bmtlZEZ1bmN0aW9uS2luZCk7CiAgICAgV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2s+IG1fY29kZUJsb2NrRm9yQ2FsbDsKICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jaz4gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3Q7CiAKQEAgLTE1Miw2ICsxNzEs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0luU3RyaWN0Q29udGV4dCA6IDE7CiAgICAgYm9v
bCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIDogMTsKICAgICBib29sIG1faXNGcm9tR2xvYmFsQ29k
ZSA6IDE7CisgICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKIAogICAgIElkZW50aWZp
ZXIgbV9uYW1lOwogICAgIElkZW50aWZpZXIgbV9pbmZlcnJlZE5hbWU7CkBAIC0zMTksNiArMzM5
LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKGJvb2wg
aXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKSB7IG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uID0g
aXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CiAgICAgYm9vbCBpc051bWVyaWNDb21wYXJlRnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQogCisg
ICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVu
Y3Rpb247IH0KKyAgICAKICAgICB2b2lkIHNocmlua1RvRml0KCkKICAgICB7CiAgICAgICAgIG1f
anVtcFRhcmdldHMuc2hyaW5rVG9GaXQoKTsKQEAgLTUwMCw2ICs1MjIsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9pc1N0cmljdE1vZGUgOiAxOwogICAgIGJvb2wgbV9pc0NvbnN0cnVjdG9yIDog
MTsKICAgICBib29sIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgOiAxOworICAgIGJvb2wgbV9pc0J1
aWx0aW5GdW5jdGlvbiA6IDE7CiAgICAgdW5zaWduZWQgbV9maXJzdExpbmU7CiAgICAgdW5zaWdu
ZWQgbV9saW5lQ291bnQ7CiAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CmluZGV4IDY4MTBhYjgwMDJjZTZiYjhkNzhlN2ZmMjIyN2Y0YzZlYTdiNzU4YzIuLmVjNTIxYjUz
MDQ2MzkyM2U3NGMwMTBmYTIxOGU1OWVkMmE5YTNjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0x
NzUsNiArMTc1LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2
bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFAKICNlbmRpZgogICAgICwgbV91
c2VzRXhjZXB0aW9ucyhmYWxzZSkKICAgICAsIG1fZXhwcmVzc2lvblRvb0RlZXAoZmFsc2UpCisg
ICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGZhbHNlKQogewogICAgIGlmIChtX3Nob3VsZEVtaXRE
ZWJ1Z0hvb2tzKQogICAgICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNGdWxsU2NvcGVDaGFpbih0
cnVlKTsKQEAgLTIyMiw3ICsyMjMsMTMgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2Vu
ZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb25Cb2R5LCBVbmwKICNlbmRp
ZgogICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKICAgICAsIG1fZXhwcmVzc2lvblRvb0Rl
ZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGNvZGVCbG9jay0+aXNCdWlsdGlu
RnVuY3Rpb24oKSkKIHsKKyAgICBpZiAobV9pc0J1aWx0aW5GdW5jdGlvbikgeworICAgICAgICBt
X3Nob3VsZEVtaXRQcm9maWxlSG9va3MgPSBmYWxzZTsKKyAgICAgICAgbV9zaG91bGRFbWl0RGVi
dWdIb29rcyA9IGZhbHNlOworICAgIH0KKwogICAgIGlmIChtX3Nob3VsZEVtaXREZWJ1Z0hvb2tz
KQogICAgICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNGdWxsU2NvcGVDaGFpbih0cnVlKTsKIApA
QCAtNDM4LDYgKzQ0NSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihW
TSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kCiAjZW5kaWYKICAgICAs
IG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAgICAgLCBtX2V4cHJlc3Npb25Ub29EZWVwKGZhbHNl
KQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihmYWxzZSkKIHsKICAgICBtX2NvZGVCbG9jay0+
c2V0TmVlZHNGdWxsU2NvcGVDaGFpbih0cnVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDRlOWYyMTNj
OWJmYTZjZjE5NGIxYTE0ZmU5MTllODMzMzdhZTM1ZDkuLjE1ODQyNzRiNzhlYTZjMGJkMGVmYjBi
OTgyNWM4MThiZTBkYmMwNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ2MSw3ICs0NjEsOSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBzaG91bGRFbWl0RGVidWdIb29rcygpIHsgcmV0dXJu
IG1fc2hvdWxkRW1pdERlYnVnSG9va3M7IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNTdHJp
Y3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOyB9Ci0K
KyAgICAgICAgCisgICAgICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBMYWJlbDsKICAgICAgICAgCkBAIC01NDMsNyArNTQ1LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
bWFrZUZ1bmN0aW9uKEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2Nv
cGVOb2RlLT5zb3VyY2UoKSwgYm9keSk7CisgICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIGJvZHks
IGZhbHNlLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBV
bmxpbmtlZE5vcm1hbEZ1bmN0aW9uKTsKICAgICAgICAgfQogCiAgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRJbml0TGF6eVJlZ2lzdGVyKFJlZ2lzdGVySUQqKTsKQEAgLTY3Nyw2ICs2NzksNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIG1fdXNlc0V4Y2VwdGlvbnM7CiAgICAgICAg
IGJvb2wgbV9leHByZXNzaW9uVG9vRGVlcDsKKyAgICAgICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0
aW9uOwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAxZmZkNGYzMTE4ODJkMGVlNWM1NTE0ZjViOGIy
NTkzOWQ5NzVlMzc5Li42MmVjYTM2YTEwZDc3MDhhOTI4ZDQzYWMwM2YyZmM4NjE1Y2VjYTc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCkBAIC0yNiwxMCArMjYsMTAgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIk5vZGVzLmgiCi0jaW5jbHVkZSAiTm9kZUNvbnN0cnVjdG9ycy5oIgogCiAjaW5jbHVkZSAi
Qnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJD
b21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiSklU
LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUg
IkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJMYWJlbFNjb3BlLmgiCiAjaW5jbHVkZSAiTGV4ZXIu
aCIKKyNpbmNsdWRlICJOb2RlQ29uc3RydWN0b3JzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5o
IgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCkBA
IC01MzUsMzYgKzUzNiwzOSBAQCBSZWdpc3RlcklEKiBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgUmVmUHRyPExh
YmVsPiBlbmQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
YmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwogICAgIGdlbmVyYXRvci5lbWl0RXhw
cmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Npb25TdGFydCgpLCBz
dWJleHByZXNzaW9uRW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbiA9IGdl
bmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2Uu
Z2V0KCksIG1faWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbiA9IGdlbmVy
YXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0
KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuY2FsbCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBmdW5jdGlv
bi5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkNhbGwoZnVuY3Rp
b24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKKyAgICBib29sIGVtaXRDYWxsQ2hlY2sgPSAhZ2Vu
ZXJhdG9yLmlzQnVpbHRpbkZ1bmN0aW9uKCk7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2spCisgICAg
ICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKGZ1bmN0aW9uLmdldCgpLCBy
ZWFsQ2FsbC5nZXQoKSk7CisKICAgICB7CiAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUg
JiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpIHsKICAgICAgICAgICAgIEFyZ3VtZW50TGlz
dE5vZGUqIG9sZExpc3QgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CiAgICAgICAgICAgICBtX2FyZ3Mt
Pm1fbGlzdE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKLQorICAgICAgICAgICAg
CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9y
LmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAg
ICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3Mp
OwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lz
dGVyKCksIG9sZExpc3QtPm1fZXhwcik7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwo
cmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9u
LCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7Ci0KICAgICAgICAgICAgIG1f
YXJncy0+bV9saXN0Tm9kZSA9IG9sZExpc3Q7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdl
bmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICBD
YWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5k
ZWZpbmVkKCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdl
dCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50
cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQotICAgIGdlbmVyYXRv
ci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOwotICAgIHsKLSAgICAgICAgQ2FsbEFyZ3VtZW50
cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVt
aXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwotICAgICAg
ICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBO
b0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKKyAgICAgICAgZ2VuZXJhdG9y
LmVtaXRKdW1wKGVuZC5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENh
bGwuZ2V0KCkpOworICAgICAgICB7CisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1
bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3Zl
KGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOworICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9F
eHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOworICAgICAgICB9CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdl
dCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0KCkpOwogICAgIHJl
dHVybiByZXR1cm5WYWx1ZS5nZXQoKTsKIH0KIApAQCAtNTg1LDY1ICs1ODksNjcgQEAgUmVnaXN0
ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwKICAgICBSZWZQdHI8TGFiZWw+IGVuZCA9IGdlbmVyYXRvci5uZXdM
YWJlbCgpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2Rl
KG1fYmFzZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9u
RGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0gICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVy
YXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CisgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5W
YWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuY3Rpb24uZ2V0KCkpOwot
ICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25BcHBseShmdW5jdGlvbi5nZXQoKSwg
cmVhbENhbGwuZ2V0KCkpOwotICAgIHsKLSAgICAgICAgaWYgKG1heUJlQ2FsbCkgewotICAgICAg
ICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhw
cikgewotICAgICAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIG9sZExpc3QgPSBtX2FyZ3Mt
Pm1fbGlzdE5vZGU7Ci0gICAgICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9u
ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1f
bmV4dC0+bV9leHByLT5pc1NpbXBsZUFycmF5KCkpOwotICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoIW1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX25leHQpOwotICAgICAgICAgICAgICAg
ICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBzdGF0aWNfY2FzdDxBcnJheU5vZGUqPihtX2FyZ3Mt
Pm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByKS0+dG9Bcmd1bWVudExpc3QoZ2VuZXJhdG9yLnZt
KCksIDAsIDApOwotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1
bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0
KSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFy
Z3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIp
OwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0
KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRz
LCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG1fYXJncy0+
bV9saXN0Tm9kZS0+bV9uZXh0OwotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGlu
YXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIENhbGxBcmd1bWVu
dHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAgICAgICAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0
LT5tX2V4cHIpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJu
VmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxs
QXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBvbGRMaXN0Owor
ICAgIGJvb2wgZW1pdENhbGxDaGVjayA9ICFnZW5lcmF0b3IuaXNCdWlsdGluRnVuY3Rpb24oKTsK
KyAgICBpZiAoZW1pdENhbGxDaGVjaykgeworICAgICAgICBmdW5jdGlvbiA9IGdlbmVyYXRvci5l
bWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIGdl
bmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYXBwbHkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEp1
bXBJZk5vdEZ1bmN0aW9uQXBwbHkoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKKyAg
ICB9CisgICAgaWYgKG1heUJlQ2FsbCkgeworICAgICAgICBpZiAobV9hcmdzLT5tX2xpc3ROb2Rl
ICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKSB7CisgICAgICAgICAgICBBcmd1bWVudExp
c3ROb2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgICAgICAgICAgaWYgKG1f
YXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKG1fYXJn
cy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHItPmlzU2ltcGxlQXJyYXkoKSk7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9uZXh0KTsKKyAg
ICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBzdGF0aWNfY2FzdDxBcnJheU5vZGUq
PihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByKS0+dG9Bcmd1bWVudExpc3QoZ2Vu
ZXJhdG9yLnZtKCksIDAsIDApOworICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBy
ZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlv
bihkc3QpLCBiYXNlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxB
cmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwor
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVh
bEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90
KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9u
ZXh0OwogICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBn
ZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdl
dCgpKTsKICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJh
dG9yLCBtX2FyZ3MpOwotICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJn
dW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+
bV9leHByKTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUu
Z2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1l
bnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgfQor
ICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gb2xkTGlzdDsKICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xp
c3ROb2RlLT5tX25leHQpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb2ZpbGVI
b29rUmVnaXN0ZXI7Ci0gICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLnNob3VsZEVtaXRQcm9maWxl
SG9va3MoKSkKLSAgICAgICAgICAgICAgICBwcm9maWxlSG9va1JlZ2lzdGVyID0gZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpOwogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5j
dGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCks
IGJhc2UuZ2V0KCkpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNSZWdpc3Rl
ciA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcik7Ci0gICAg
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXJnc1JlZ2lzdGVyOwotICAgICAgICAgICAgQXJn
dW1lbnRMaXN0Tm9kZSogYXJncyA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwotICAgICAg
ICAgICAgaWYgKGFyZ3MtPm1fZXhwci0+aXNSZXNvbHZlTm9kZSgpICYmIGdlbmVyYXRvci53aWxs
UmVzb2x2ZVRvQXJndW1lbnRzKHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oYXJncy0+bV9leHBy
KS0+aWRlbnRpZmllcigpKSkKLSAgICAgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0
b3IudW5jaGVja2VkUmVnaXN0ZXJGb3JBcmd1bWVudHMoKTsKLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9l
eHByKTsKLQotICAgICAgICAgICAgLy8gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5IGlnbm9yZXMg
ZXh0cmEgYXJndW1lbnRzLCBidXQgd2Ugc3RpbGwKLSAgICAgICAgICAgIC8vIG5lZWQgdG8gZXZh
bHVhdGUgdGhlbSBmb3Igc2lkZSBlZmZlY3RzLgotICAgICAgICAgICAgd2hpbGUgKChhcmdzID0g
YXJncy0+bV9uZXh0KSkKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+
bV9leHByKTsKLQotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsVmFyYXJncyhyZXR1cm5W
YWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCB0aGlzUmVnaXN0ZXIuZ2V0KCksIGFyZ3NS
ZWdpc3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm9maWxlSG9va1JlZ2lz
dGVyLmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICAg
ICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBq
c1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1
ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1
bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIH0KLSAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4
dCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9maWxlSG9va1JlZ2lzdGVyOworICAg
ICAgICBpZiAoZ2VuZXJhdG9yLnNob3VsZEVtaXRQcm9maWxlSG9va3MoKSkKKyAgICAgICAgICAg
IHByb2ZpbGVIb29rUmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2Vu
ZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKKyAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHRoaXNSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2FyZ3MtPm1f
bGlzdE5vZGUtPm1fZXhwcik7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhcmdzUmVnaXN0
ZXI7CisgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MgPSBtX2FyZ3MtPm1fbGlzdE5vZGUt
Pm1fbmV4dDsKKyAgICAgICAgaWYgKGFyZ3MtPm1fZXhwci0+aXNSZXNvbHZlTm9kZSgpICYmIGdl
bmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4o
YXJncy0+bV9leHByKS0+aWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIGFyZ3NSZWdpc3RlciA9
IGdlbmVyYXRvci51bmNoZWNrZWRSZWdpc3RlckZvckFyZ3VtZW50cygpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9l
eHByKTsKKworICAgICAgICAvLyBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkgaWdub3JlcyBleHRy
YSBhcmd1bWVudHMsIGJ1dCB3ZSBzdGlsbAorICAgICAgICAvLyBuZWVkIHRvIGV2YWx1YXRlIHRo
ZW0gZm9yIHNpZGUgZWZmZWN0cy4KKyAgICAgICAgd2hpbGUgKChhcmdzID0gYXJncy0+bV9uZXh0
KSkKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShhcmdzLT5tX2V4cHIpOworCisgICAg
ICAgIGdlbmVyYXRvci5lbWl0Q2FsbFZhcmFyZ3MocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5j
dGlvbi5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBhcmdzUmVnaXN0ZXIuZ2V0KCksIGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKSwgcHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwg
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJl
bChyZWFsQ2FsbC5nZXQoKSk7Ci0gICAgeworICAgIGlmIChlbWl0Q2FsbENoZWNrKSB7CisgICAg
ICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1p
dExhYmVsKHJlYWxDYWxsLmdldCgpKTsKICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1l
bnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxB
cmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwogICAgICAgICBnZW5lcmF0b3Iu
ZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVu
Y3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICB9Ci0gICAgZ2Vu
ZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0KCkpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZS5nZXQo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3Rh
YmxlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlCmluZGV4IDM5Nzk3
NmIwNmM3YTliNTgzNjMzMjkwMGE2ZWJiOTNlYzY4Yjc0ODYuLmNhZDY1YmM0Y2M4ODhlMzE0Zjg4
ZDY2NWRkNGE2ZTY0NWEwOWEzNTUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9j
cmVhdGVfaGFzaF90YWJsZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hf
dGFibGUKQEAgLTI4OSw3ICsyODksMTcgQEAgc3ViIG91dHB1dCgpIHsKICAgICAgICAgICAgICRp
bnRyaW5zaWMgPSAiUmVnRXhwVGVzdEludHJpbnNpYyIgaWYgKCRrZXkgZXEgInRlc3QiKTsKICAg
ICAgICAgfQogCisgICAgICAgIGlmICgkdmFsdWVzWyRpXXsidHlwZSJ9IGVxICJGdW5jdGlvbiIp
ICB7CisgICAgICAgICAgICBteSAkdGFibGVIZWFkID0gJG5hbWU7CisgICAgICAgICAgICAkdGFi
bGVIZWFkID1+IHMvVGFibGUkLy87CisgICAgICAgICAgICBwcmludCAiICNpZiBKU0NfQlVJTFRJ
Tl9FWElTVFMoIiAuIHVjKCR0YWJsZUhlYWQgLiAka2V5KSAuIilcbiI7CisgICAgICAgICAgICBw
cmludCAiICAgeyBcIiRrZXlcIiwgKCgkYXR0cnNbJGldKSAmIH5GdW5jdGlvbikgfCBCdWlsdGlu
LCAkaW50cmluc2ljLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8QnVpbHRpbkdlbmVyYXRvcj4oIiAu
ICR0YWJsZUhlYWQgLiB1Y2ZpcnN0KCRrZXkpIC4gIkNvZGVHZW5lcmF0b3IpLCAoaW50cHRyX3Qp
JHNlY29uZFZhbHVlIH0sXG4iOworICAgICAgICAgICAgcHJpbnQgIiAjZWxzZVxuIgorICAgICAg
ICB9CiAgICAgICAgIHByaW50ICIgICB7IFwiJGtleVwiLCAkYXR0cnNbJGldLCAkaW50cmluc2lj
LCAoaW50cHRyX3QpIiAuICRmaXJzdENhc3RTdHIgLiAiKCRmaXJzdFZhbHVlKSwgKGludHB0cl90
KSIgLiAkc2Vjb25kQ2FzdFN0ciAuICIoJHNlY29uZFZhbHVlKSB9LFxuIjsKKyAgICAgICAgaWYg
KCR2YWx1ZXNbJGldeyJ0eXBlIn0gZXEgIkZ1bmN0aW9uIikgIHsKKyAgICAgICAgICAgIHByaW50
ICIgI2VuZGlmXG4iCisgICAgICAgIH0KICAgICAgICAgJGkrKzsKICAgICB9CiAgICAgcHJpbnQg
IiAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIDAsIDAgfVxuIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDJmZjBjMzQxNDZlMmMwYmEyZmY3NmM0ZDNm
N2M0NmJhM2UyNTUxNDcuLjkwNDRjZGM2YjhjM2FkNGExZTk0MTg4ZGQxZDBlMjAwZTY5ZmI5OWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtNDgs
NiArNDgsNyBAQAogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIlZNLmgiCiAj
aW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNp
bmNsdWRlICJOYW1lSW5zdGFuY2UuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9nZW5lcmF0ZS1qcy1idWlsdGlucyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1q
cy1idWlsdGlucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjRiNmQ0OTlmMDI1YzA1M2IyZjk3YjZmMTAwZTg1NTA0
NmYzZTUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRl
LWpzLWJ1aWx0aW5zCkBAIC0wLDAgKzEsMzA0IEBACisjIS91c3IvYmluL3B5dGhvbgorIyBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyMg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisjIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorIyBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisj
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorIyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisjIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworaW1wb3J0IGZpbGVjbXAKK2ltcG9ydCBmbm1hdGNoCitpbXBvcnQgb3MKK2ltcG9y
dCByZQoraW1wb3J0IHNodXRpbAoraW1wb3J0IHN5cworaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQg
anNvbgorCitjb3B5cmlnaHRUZXh0ID0gIiIiICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi9cbgorIiIiCisKK2dlbmVyYXRvclN0cmluZyA9ICIvKiBHZW5lcmF0ZWQgYnkg
JXMgZG8gbm90IGhhbmQgZWRpdC4gKi9cbiIgJSBvcy5wYXRoLmJhc2VuYW1lKF9fZmlsZV9fKQor
CitmdW5jdGlvbkhlYWRSZWdFeHAgPSByZS5jb21waWxlKHIiZnVuY3Rpb25ccytcdytccypcKC4q
P1wpIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK2Z1bmN0aW9uTmFtZVJlZ0V4cCA9IHJlLmNvbXBp
bGUociJmdW5jdGlvblxzKyhcdyspXHMqXCgiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorZnVuY3Rp
b25QYXJhbWV0ZXJGaW5kZXIgPSByZS5jb21waWxlKHIiXmZ1bmN0aW9uXHMrKD86XHcrKVxzKlwo
KCg/OlxzKlx3Kyk/XHMqKD86XHMqLFxzKlx3KykqKT9cKSIsIHJlLk1VTFRJTElORSB8IHJlLlMp
CisKK211bHRpbGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cKi4qP1wqXC8iLCBy
ZS5NVUxUSUxJTkUgfCByZS5TKQorc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxl
KHIiXC9cLy4qP1xuIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKKworZGVmIGdldENvcHlyaWdodChz
b3VyY2UpOgorICAgIGNvcHlyaWdodEJsb2NrID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5maW5k
YWxsKHNvdXJjZSlbMF0KKyAgICBjb3B5cmlnaHRCbG9jayA9IGNvcHlyaWdodEJsb2NrWzpjb3B5
cmlnaHRCbG9jay5pbmRleCgiUmVkaXN0cmlidXRpb24iKV0KKyAgICBjb3B5UmlnaHRMaW5lcyA9
IFtdCisKKyAgICBmb3IgbGluZSBpbiBjb3B5cmlnaHRCbG9jay5zcGxpdCgiXG4iKToKKyAgICAg
ICAgbGluZSA9IGxpbmUucmVwbGFjZSgiLyoiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVw
bGFjZSgiKi8iLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKiIsICIiKQorICAg
ICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCJDb3B5cmlnaHQiLCAiIikKKyAgICAgICAgbGluZSA9
IGxpbmUucmVwbGFjZSgiY29weXJpZ2h0IiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxh
Y2UoIihDKSIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIoYykiLCAiIikKKyAg
ICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgICAgICBpZiBsZW4obGluZSkgPT0gMDoKKyAg
ICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgY29weVJpZ2h0TGluZXMuYXBwZW5kKGxpbmUp
CisgICAgCisgICAgcmV0dXJuIGxpc3Qoc2V0KGNvcHlSaWdodExpbmVzKSkKKworCisKK2RlZiBn
ZXRGdW5jdGlvbnMoc291cmNlKToKKworICAgIHNvdXJjZSA9IG11bHRpbGluZUNvbW1lbnRSZWdF
eHAuc3ViKCIvKiovIiwgc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAuc3ViKCIvL1xuIiwgc291cmNl
KSkKKworICAgIG1hdGNoZXMgPSBbIGYgZm9yIGYgaW4gZnVuY3Rpb25IZWFkUmVnRXhwLmZpbmRp
dGVyKHNvdXJjZSldCisgICAgZnVuY3Rpb25Cb3VuZHMgPSBbXQorICAgIHN0YXJ0ID0gMAorICAg
IGVuZCA9IDAKKyAgICBmb3IgbWF0Y2ggaW4gbWF0Y2hlczoKKyAgICAgICAgc3RhcnQgPSBtYXRj
aC5zdGFydCgpCisgICAgICAgIGlmIHN0YXJ0IDwgZW5kOgorICAgICAgICAgICAgY29udGludWUK
KyAgICAgICAgZW5kID0gbWF0Y2guZW5kKCkKKyAgICAgICAgd2hpbGUgc291cmNlW2VuZF0gIT0g
J3snOgorICAgICAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICBkZXB0aCA9IDEKKyAgICAg
ICAgZW5kID0gZW5kICsgMQorICAgICAgICB3aGlsZSBkZXB0aCA+IDA6CisgICAgICAgICAgICBp
ZiBzb3VyY2VbZW5kXSA9PSAneyc6CisgICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCArIDEK
KyAgICAgICAgICAgIGVsaWYgc291cmNlW2VuZF0gPT0gJ30nOgorICAgICAgICAgICAgICAgIGRl
cHRoID0gZGVwdGggLSAxCisgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgIGZ1bmN0
aW9uQm91bmRzLmFwcGVuZCgoc3RhcnQsIGVuZCkpCisKKyAgICBmdW5jdGlvbnMgPSBbc291cmNl
W3N0YXJ0OmVuZF0uc3RyaXAoKSBmb3IgKHN0YXJ0LCBlbmQpIGluIGZ1bmN0aW9uQm91bmRzXQor
ICAgIHJlc3VsdCA9IFtdCisgICAgZm9yIGZ1bmN0aW9uIGluIGZ1bmN0aW9uczoKKyAgICAgICAg
ZnVuY3Rpb24gPSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLnN1YigiIiwgZnVuY3Rpb24pCisgICAg
ICAgIGZ1bmN0aW9uTmFtZSA9IGZ1bmN0aW9uTmFtZVJlZ0V4cC5maW5kYWxsKGZ1bmN0aW9uKVsw
XQorICAgICAgICBmdW5jdGlvblBhcmFtZXRlcnMgPSBmdW5jdGlvblBhcmFtZXRlckZpbmRlci5m
aW5kYWxsKGZ1bmN0aW9uKVswXS5zcGxpdCgnLCcpCisgICAgICAgIGlmIGxlbihmdW5jdGlvblBh
cmFtZXRlcnNbMF0pID09IDA6CisgICAgICAgICAgICBmdW5jdGlvblBhcmFtZXRlcnMgPSBbXQor
ICAgICAgICAgICAgCisgICAgICAgIHJlc3VsdC5hcHBlbmQoKGZ1bmN0aW9uTmFtZSwgZnVuY3Rp
b24sIGZ1bmN0aW9uUGFyYW1ldGVycykpCisgICAgcmV0dXJuIHJlc3VsdAorICAgICAgICAKKwor
ZGVmIGdlbmVyYXRlQ29kZShzb3VyY2UpOgorICAgIGlucHV0RmlsZSA9IG9wZW4oc291cmNlLCAi
ciIpCisgICAgYmFzZU5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHNvdXJjZSkucmVwbGFjZSgiLmpz
IiwgIiIpCisgICAgCisgICAgc291cmNlID0gIiIKKyAgICBmb3IgbGluZSBpbiBpbnB1dEZpbGU6
CisgICAgICAgIHNvdXJjZSA9IHNvdXJjZSArIGxpbmUKKyAgICAKKyAgICBpZiBzeXMucGxhdGZv
cm0gPT0gImN5Z3dpbiI6CisgICAgICAgIHNvdXJjZSA9IHNvdXJjZS5yZXBsYWNlKCJcclxuIiwg
IlxuIikKKyAgICByZXR1cm4gKGJhc2VOYW1lLCBnZXRGdW5jdGlvbnMoc291cmNlKSwgZ2V0Q29w
eXJpZ2h0KHNvdXJjZSkpCisKK2RlZiBtYW5nbGVOYW1lKG9iamVjdCwgbmFtZSk6CisgICAgcU5h
bWUgPSBvYmplY3QgKyAiLiIgKyBuYW1lCisgICAgbWFuZ2xlZE5hbWUgPSAiIgorICAgIGkgPSAw
CisgICAgd2hpbGUgaSA8IGxlbihxTmFtZSk6CisgICAgICAgIGlmIHFOYW1lW2ldID09ICcuJzoK
KyAgICAgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWUgKyBxTmFtZVtpICsgMV0udXBw
ZXIoKQorICAgICAgICAgICAgaSA9IGkgKyAxCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBt
YW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lICsgcU5hbWVbaV0KKyAgICAgICAgaSA9IGkgKyAxCisg
ICAgcmV0dXJuIG1hbmdsZWROYW1lCisKK2J1aWx0aW5zID0gW10KKworYmFzZU5hbWUgPSBzeXMu
YXJndlstMV0KK2J1aWx0aW5fZGVmaW5pdGlvbnMgPSBzeXMuYXJndlsxOi0xXQorKG91dHB1dF9i
YXNlLCBfKSA9IG9zLnBhdGguc3BsaXRleHQoc3lzLmFyZ3ZbLTFdKQorCitjb3B5cmlnaHRzID0g
W10KK2ZvciBmaWxlIGluIGJ1aWx0aW5fZGVmaW5pdGlvbnM6CisgICAgaWYgZm5tYXRjaC5mbm1h
dGNoKGZpbGUsICcqLmpzJyk6CisgICAgICAgIChiYXNlTmFtZSwgZnVuY3Rpb25zLCBvYmplY3RD
b3B5cmlnaHRzKSA9IGdlbmVyYXRlQ29kZShmaWxlKQorICAgICAgICBjb3B5cmlnaHRzLmV4dGVu
ZChvYmplY3RDb3B5cmlnaHRzKQorICAgICAgICBidWlsdGlucy5hcHBlbmQoKGJhc2VOYW1lLCBm
dW5jdGlvbnMpKQorCitjb3B5cmlnaHRzID0gbGlzdChzZXQoY29weXJpZ2h0cykpCisKK2NvcHly
aWdodEJvZHkgPSAiIgorZm9yIGNvcHlyaWdodCBpbiBjb3B5cmlnaHRzOgorICAgIGNvcHlyaWdo
dEJvZHkgPSBjb3B5cmlnaHRCb2R5ICsiICogQ29weXJpZ2h0IChDKSAiICsgY29weXJpZ2h0ICsg
IlxuIgorCitidWlsdGluc0hlYWRlciA9IG9wZW4ob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgInci
KQorYnVpbHRpbnNJbXBsZW1lbnRhdGlvbiA9IG9wZW4ob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAi
LCAidyIpCitjb3B5cmlnaHRUZXh0ID0gIi8qXG4iICsgY29weXJpZ2h0Qm9keSArIGNvcHlyaWdo
dFRleHQKK2J1aWx0aW5zSGVhZGVyLndyaXRlKCIiIiVzCislcworCisjaWZuZGVmIEpTQ0J1aWx0
aW5zX0gKKyNkZWZpbmUgSlNDQnVpbHRpbnNfSAorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
RnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgSWRlbnRpZmllcjsKK2NsYXNzIEpTR2xvYmFsT2Jq
ZWN0OworY2xhc3MgU291cmNlQ29kZTsKK2NsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
OworY2xhc3MgVk07CisKK0Z1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1dGFi
bGUoVk0mLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsK
KworIiIiICUgKGdlbmVyYXRvclN0cmluZywgY29weXJpZ2h0VGV4dCkpCisKK2NvZGVSZWZlcmVu
Y2VzID0gW10KKworZm9yIChvYmplY3ROYW1lLCBmdW5jdGlvbnMpIGluIGJ1aWx0aW5zOgorICAg
IHByaW50KCJHZW5lcmF0aW5nIGJpbmRpbmdzIGZvciB0aGUgJXMgYnVpbHRpbi4iICUgb2JqZWN0
TmFtZSkKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiLyogJXMgZnVuY3Rpb25zICovXG4iICUg
b2JqZWN0TmFtZSkKKyAgICBmb3IgKG5hbWUsIGltcGxlbWVudGF0aW9uLCBfKSBpbiBmdW5jdGlv
bnM6CisgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlTmFtZShvYmplY3ROYW1lLCBuYW1lKQor
ICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lWzBdLmxvd2VyKCkgKyBtYW5nbGVkTmFt
ZVsxOl0gKyAiQ29kZSIKKyAgICAgICAgY29kZVJlZmVyZW5jZXMuYXBwZW5kKChtYW5nbGVkTmFt
ZSwgbmFtZSwgaW1wbGVtZW50YXRpb24pKQorICAgICAgICBidWlsdGluc0hlYWRlci53cml0ZSgi
ZXh0ZXJuIGNvbnN0IGNoYXIqIHNfJXM7XG4iICUgbWFuZ2xlZE5hbWUpCisgICAgICAgIGJ1aWx0
aW5zSGVhZGVyLndyaXRlKCJleHRlcm4gY29uc3QgaW50IHNfJXNMZW5ndGg7XG4iICUgbWFuZ2xl
ZE5hbWUpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuIikKKyAgICBidWlsdGluc0hlYWRl
ci53cml0ZSgiI2RlZmluZSBKU0NfRk9SRUFDSF8lc19CVUlMVElOKG1hY3JvKSBcXFxuIiAlIG9i
amVjdE5hbWUucmVwbGFjZSgiLiIsICJfIikudXBwZXIoKSkKKyAgICBmb3IgKG5hbWUsIGltcGxl
bWVudGF0aW9uLCBhcmd1bWVudHMpIGluIGZ1bmN0aW9uczoKKyAgICAgICAgbWFuZ2xlZE5hbWUg
PSBtYW5nbGVOYW1lKG9iamVjdE5hbWUsIG5hbWUpCisgICAgICAgIGJ1aWx0aW5zSGVhZGVyLndy
aXRlKCIgICAgbWFjcm8oJXMsICVzLCAlZCkgXFxcbiIgJSAobmFtZSwgbWFuZ2xlZE5hbWUsIGxl
bihhcmd1bWVudHMpKSkKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiXG4iKQorICAgIGZvciAo
bmFtZSwgaW1wbGVtZW50YXRpb24sIGFyZ3VtZW50cykgaW4gZnVuY3Rpb25zOgorICAgICAgICBi
dWlsdGluc0hlYWRlci53cml0ZSgiI2RlZmluZSBKU0NfQlVJTFRJTl8lcyAxXG4iICUgbWFuZ2xl
TmFtZShvYmplY3ROYW1lLCBuYW1lKS51cHBlcigpKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRl
KCJcblxuIikKK25hbWVzID0gW10KK2J1aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19G
T1JFQUNIX0JVSUxUSU4obWFjcm8pXFxcbiIpCitmb3IgKGNvZGVSZWZlcmVuY2UsIGZ1bmN0aW9u
TmFtZSwgc291cmNlKSBpbiBjb2RlUmVmZXJlbmNlczoKKyAgICBidWlsdGluc0hlYWRlci53cml0
ZSgiICAgIG1hY3JvKCVzLCAlcywgc18lc0xlbmd0aCkgXFxcbiIgJSAoY29kZVJlZmVyZW5jZSwg
ZnVuY3Rpb25OYW1lLCBjb2RlUmVmZXJlbmNlKSkKKyAgICBuYW1lcy5hcHBlbmQoZnVuY3Rpb25O
YW1lKQorCitidWlsdGluc0hlYWRlci53cml0ZSgiXG5cbiIpCitidWlsdGluc0hlYWRlci53cml0
ZSgiI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFxcXG4i
KQorZm9yIG5hbWUgaW4gc29ydGVkKHNldChuYW1lcykpOgorICAgIGJ1aWx0aW5zSGVhZGVyLndy
aXRlKCIgICAgbWFjcm8oJXMpIFxcXG4iICUgbmFtZSkKK2J1aWx0aW5zSGVhZGVyLndyaXRlKCIi
IgorCisjZGVmaW5lIEpTQ19ERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5j
dGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBjb2Rl
TmFtZSMjR2VuZXJhdG9yKFZNJik7CisKK0pTQ19GT1JFQUNIX0JVSUxUSU4oSlNDX0RFQ0xBUkVf
QlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgSlNDX0RFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IK
KworI2RlZmluZSBKU0NfQlVJTFRJTl9FWElTVFMobmFtZSkgZGVmaW5lZChKU0NfQlVJTFRJTl8j
I25hbWUpCisKK30KKworI2VuZGlmCisKKyIiIikKKworYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53
cml0ZSgiIiIlcworJXMKKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiSlNDQnVp
bHRpbnMuaCIKKworI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkV4
ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiVk0uaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKKyIiIiAgJSAoZ2VuZXJhdG9yU3RyaW5nLCBjb3B5cmlnaHRU
ZXh0KSkKKworZm9yIChjb2RlUmVmZXJlbmNlLCBuYW1lLCBzb3VyY2UpIGluIGNvZGVSZWZlcmVu
Y2VzOgorICAgIHNvdXJjZSA9ICIoZnVuY3Rpb24gIiArIHNvdXJjZVtzb3VyY2UuaW5kZXgoIigi
KTpdICsgIikiCisgICAgbGluZXMgPSBqc29uLmR1bXBzKHNvdXJjZSlbMTotMV0uc3BsaXQoIlxc
biIpCisgICAgc291cmNlTGVuZ3RoID0gbGVuKHNvdXJjZSkKKyAgICBzb3VyY2UgPSAiIgorICAg
IGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICBzb3VyY2UgPSBzb3VyY2UgKyAoIiAgICBcIiVz
XFxuXCIgXFxcbiIgJSBsaW5lKQorICAgIGJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoImNv
bnN0IGNoYXIqIHNfJXMgPVxuJXM7XG5cbiIgJSAoY29kZVJlZmVyZW5jZSwgc291cmNlKSkKKyAg
ICBidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCJjb25zdCBpbnQgc18lc0xlbmd0aCA9ICVk
O1xuXG4iICUgKGNvZGVSZWZlcmVuY2UsIHNvdXJjZUxlbmd0aCArIDEpKSAjICsgMSBmb3IgXG4K
KworYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiIiIKK0Z1bmN0aW9uRXhlY3V0YWJsZSog
Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUoVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogdW5saW5rZWRFeGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCit7CisgICAg
dW5zaWduZWQgbGluZUNvdW50ID0gdW5saW5rZWRFeGVjdXRhYmxlLT5saW5lQ291bnQoKTsKKyAg
ICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IDE7CisgICAgdW5zaWduZWQgc291cmNlTGVuZ3RoID0g
dW5saW5rZWRFeGVjdXRhYmxlLT5zb3VyY2VMZW5ndGgoKTsKKyAgICBib29sIGVuZENvbHVtbklz
T25TdGFydExpbmUgPSAhbGluZUNvdW50OworICAgIHVuc2lnbmVkIGVuZENvbHVtbkV4Y2x1ZGlu
Z0JyYWNlcyA9IHVubGlua2VkRXhlY3V0YWJsZS0+dW5saW5rZWRCb2R5RW5kQ29sdW1uKCkgKyAo
ZW5kQ29sdW1uSXNPblN0YXJ0TGluZSA/IDAgOiAxKTsKKyAgICB1bnNpZ25lZCBzdGFydE9mZnNl
dCA9IHVubGlua2VkRXhlY3V0YWJsZS0+c3RhcnRPZmZzZXQoKTsKKyAgICB1bnNpZ25lZCBzdGFy
dE9mZnNldEV4Y2x1ZGluZ09wZW5CcmFjZSA9IHN0YXJ0T2Zmc2V0ICsgMTsKKyAgICB1bnNpZ25l
ZCBlbmRPZmZzZXRFeGNsdWRpbmdDbG9zZUJyYWNlID0gc3RhcnRPZmZzZXQgKyBzb3VyY2VMZW5n
dGggLSAxOworICAgIFNvdXJjZUNvZGUgYm9keVNvdXJjZShzb3VyY2UucHJvdmlkZXIoKSwgc3Rh
cnRPZmZzZXRFeGNsdWRpbmdPcGVuQnJhY2UsIGVuZE9mZnNldEV4Y2x1ZGluZ0Nsb3NlQnJhY2Us
IDAsIHN0YXJ0Q29sdW1uKTsKKyAgICByZXR1cm4gRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUo
dm0sIGJvZHlTb3VyY2UsIHVubGlua2VkRXhlY3V0YWJsZSwgMCwgbGluZUNvdW50LCBzdGFydENv
bHVtbiwgZW5kQ29sdW1uRXhjbHVkaW5nQnJhY2VzLCBmYWxzZSk7Cit9CisKKyNkZWZpbmUgSlND
X0RFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVu
dENvdW50KSBcXAorRnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKFZNJiB2
bSkgXFwKK3sgXFwKKyAgICByZXR1cm4gY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUodm0sIHZtLmJ1
aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLCB2bS5idWlsdGluRXhl
Y3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpKTsgXFwKK30KKworSlNDX0ZPUkVBQ0hfQlVJ
TFRJTihKU0NfREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIEpTQ19ERUZJTkVfQlVJ
TFRJTl9HRU5FUkFUT1IKK30KKworIiIiKQorCitidWlsdGluc0hlYWRlci5jbG9zZSgpCitidWls
dGluc0ltcGxlbWVudGF0aW9uLmNsb3NlKCkKKworaWYgKG5vdCBvcy5wYXRoLmV4aXN0cyhvdXRw
dXRfYmFzZSArICIuaCIpKSBvciAobm90IGZpbGVjbXAuY21wKG91dHB1dF9iYXNlICsgIi5oLnRt
cCIsIG91dHB1dF9iYXNlICsgIi5oIiwgc2hhbGxvdz1GYWxzZSkpOgorICAgIG9zLnJlbmFtZShv
dXRwdXRfYmFzZSArICIuaC50bXAiLCBvdXRwdXRfYmFzZSArICIuaCIpCitlbHNlOgorICAgIG9z
LnJlbW92ZShvdXRwdXRfYmFzZSArICIuaC50bXAiKQorCitpZiAobm90IG9zLnBhdGguZXhpc3Rz
KG91dHB1dF9iYXNlICsgIi5jcHAiKSkgb3IgKG5vdCBmaWxlY21wLmNtcChvdXRwdXRfYmFzZSAr
ICIuY3BwLnRtcCIsIG91dHB1dF9iYXNlICsgIi5jcHAiLCBzaGFsbG93PUZhbHNlKSk6CisgICAg
b3MucmVuYW1lKG91dHB1dF9iYXNlICsgIi5jcHAudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmNwcCIp
CitlbHNlOgorICAgIG9zLnJlbW92ZShvdXRwdXRfYmFzZSArICIuY3BwLnRtcCIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCBj
YTg5MGIwNmVhMzNmYTllN2YxZmE1MWEzNWVhMmQ0OGQwMDlhMzhhLi42YzliZjk2YzE1ZjYwOWUy
NjVjZTI1MGE0NWJmMDg2MWQwNmNkMWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRl
ICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdGFja0lubGluZXMuaCIK
ICNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5jbHVkZSAiTExJbnRDTG9vcC5oIgogI2luY2x1ZGUg
IkxMSW50VGh1bmtzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvUHJvdG9DYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL1Byb3RvQ2FsbEZyYW1lLmNwcAppbmRleCBmMGUwMmJhNGU0NzZmOTljYzkxM2IwNDYyYWQy
Nzk1MDA2MDlmYTNhLi4xYzI0MGRjZDcxYmU1MjlkODhjYmY0NjFkMTg2OGY1ZWIyYjAyYWQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxG
cmFtZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5oIgog
CiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
ICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGNhN2FkMTFmMmUwYjhhM2I4YjE4
NTg5MWQ3ZTUyMmJhZTQwM2EyMzYuLmNiNTUwN2JlYWM1NWJmOGViMWIzN2VjOTBmY2FiMTkzNGZi
NDhlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2RlczMyXzY0LmNwcAppbmRleCA5OGQxMGEzZjRkY2IxMmQ4OWYzN2ExMmYyMjYwNGI5NDZlMDhl
NjI3Li5kZDAzNTM3NzllOGJkZjk4ZjQ2NThhMzA3ZTMyZDA2ZTQ3MjQ0MTU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC0zNCw2ICszNCw3
IEBACiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCmluZGV4IDkyOGRkNTBmYjAxNmUyNzE2NDRhNTc1ZTMwYWI1ZjI1MTZlYjUwZWMuLjQ5
ODcwZTY4YTg3YmUxOWUxNThhMDZkMWM2NGZlYzliOGJkMDgyMjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1
ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbldyYXBwZXJzLmgiCiAjaW5jbHVkZSAi
SklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5j
bHVkZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmlu
ZGV4IDI2ZGQ0ZDFhZjc0NWFmYTFmYmM1M2E5YzAyM2E2ZTQ3NDFhNjZhMDkuLmRmMWJkM2E5Y2Zh
NDAyYzUyYTUyMTFjZjFhY2NlNjdkNTEyMWI3ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0yOSwxMSArMjksMTMgQEAKICNpbmNs
dWRlICJKSVQuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkNvbW1vbklk
ZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgiCiAjaW5jbHVk
ZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJK
SVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlO
YW1lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1ZhcmlhYmxlT2JqZWN0LmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRl
eCBkMThmZWE3MTVjYjAzYjM3YWE5MjZkODQ5YThlNWFiOTU2M2VjZDNkLi4zMjYxYjNhZjZlZWFi
ZDZmMjZhNDNhMDhkMjA0YmM2MmIwNjU4OWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNs
dWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRl
ICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogI2lu
Y2x1ZGUgIkpTVmFyaWFibGVPYmplY3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggNDA3ODRi
NDk0MzFmZTAyZThlNDUyMmYxNjMwOGM5MDI0NzE2ZDIzNi4uMmY3OTU1NTRiMDkxZGVlYmJjMDNi
ZjJiZThjNzRmNDFhZTU0MWVkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTM4LDYgKzM4LDcg
QEAKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU1Byb3h5LmgiCiAjaW5jbHVkZSAi
SlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJPcGVy
YXRpb25zLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCiAjaW5jbHVkZSAiU3RhY2tWaXNp
dG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cAppbmRleCA2NjQ0NGJhYTA4YjU2MmRkNjk3ZTBjY2Q3NzIxZTU1YzE1YmE0OTEzLi5kODJlOWU5
YzI4MTg0NjFlMzA1ZmY4NjVkMmZiMTY4YTc4Y2JiNGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKICNpbmNs
dWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCiAjaW5jbHVkZSAiSlNBY3Rp
dmF0aW9uLmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRl
ICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggOGVjMWZkMzJhM2Fk
YTIyZTEyNTIyOTU3MGRjZjdmZjI4ZWFiZjFlZC4uNDZhN2M3NmIyZjkwMWZjM2NjMzZkMWNlMGMw
NzM1M2ViMDZiMmY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9B
U1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVy
LmgKQEAgLTg4OCw5ICs4ODgsOSBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUZ1
bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbgogICAgIEFTU0VS
VChmdW5jLT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9
IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGZ1bmMpOwogICAgIEZ1bmN0aW9uQ2FsbERv
dE5vZGUqIG5vZGU7Ci0gICAgaWYgKGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5
TmFtZXMtPmNhbGwpCisgICAgaWYgKGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5
TmFtZXMtPmNhbGwgfHwgZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+
Y2FsbFByaXZhdGVOYW1lKQogICAgICAgICBub2RlID0gbmV3IChtX3ZtKSBDYWxsRnVuY3Rpb25D
YWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdz
LCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwotICAgIGVsc2UgaWYgKGRvdC0+aWRlbnRp
ZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmFwcGx5KQorICAgIGVsc2UgaWYgKGRvdC0+
aWRlbnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmFwcGx5IHx8IGRvdC0+aWRlbnRp
ZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmFwcGx5UHJpdmF0ZU5hbWUpCiAgICAgICAg
IG5vZGUgPSBuZXcgKG1fdm0pIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90
LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2
b3RFbmQpOwogICAgIGVsc2UKICAgICAgICAgbm9kZSA9IG5ldyAobV92bSkgRnVuY3Rpb25DYWxs
RG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBk
aXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9MZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xl
eGVyLmNwcAppbmRleCBjYTRiYjRmMGFkZThkNmJjODI2OTFhNmMwMDAxNGNmMTk4YmQ4OGJkLi5j
Y2IwNzlkOTc1YTE0MWM1YzRiMmQ3YjYyMzEzMDAwNzA5Nzc3ODI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAtMjUsMTAgKzI1LDEwIEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiTGV4ZXIuaCIKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJz
LmgiCisjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVz
LmgiCi0KICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgotI2luY2x1ZGUgIklk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJOb2RlSW5mby5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAj
aW5jbHVkZSA8d3RmL2R0b2EuaD4KQEAgLTkwLDYgKzkwLDcgQEAgZW51bSBDaGFyYWN0ZXJUeXBl
IHsKIAogICAgIC8vIE90aGVyIHR5cGVzIChvbmx5IG9uZSBzbyBmYXIpCiAgICAgQ2hhcmFjdGVy
V2hpdGVTcGFjZSwKKyAgICBDaGFyYWN0ZXJQcml2YXRlSWRlbnRpZmllclN0YXJ0CiB9OwogCiAv
LyAyNTYgTGF0aW4tMSBjb2RlcwpAQCAtMTU4LDcgKzE1OSw3IEBAIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBzaG9ydCB0eXBlc09mTGF0aW4xQ2hhcmFjdGVyc1syNTZdID0gewogLyogIDYxIC0gPSAg
ICAgICAgICAgICAgICAgICovIENoYXJhY3RlckVxdWFsLAogLyogIDYyIC0gPiAgICAgICAgICAg
ICAgICAgICovIENoYXJhY3RlckdyZWF0ZXIsCiAvKiAgNjMgLSA/ICAgICAgICAgICAgICAgICAg
Ki8gQ2hhcmFjdGVyUXVlc3Rpb24sCi0vKiAgNjQgLSBAICAgICAgICAgICAgICAgICAgKi8gQ2hh
cmFjdGVySW52YWxpZCwKKy8qICA2NCAtIEAgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJQ
cml2YXRlSWRlbnRpZmllclN0YXJ0LAogLyogIDY1IC0gQSAgICAgICAgICAgICAgICAgICovIENo
YXJhY3RlcklkZW50aWZpZXJTdGFydCwKIC8qICA2NiAtIEIgICAgICAgICAgICAgICAgICAqLyBD
aGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCiAvKiAgNjcgLSBDICAgICAgICAgICAgICAgICAgKi8g
Q2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LApAQCAtNDg2LDkgKzQ4NywxMCBAQCBzdGF0aWMgY29u
c3QgTENoYXIgc2luZ2xlQ2hhcmFjdGVyRXNjYXBlVmFsdWVzRm9yQVNDSUlbMTI4XSA9IHsKIH07
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotTGV4ZXI8VD46OkxleGVyKFZNKiB2bSkKK0xleGVy
PFQ+OjpMZXhlcihWTSogdm0sIEpTUGFyc2VyU3RyaWN0bmVzcyBzdHJpY3RuZXNzKQogICAgIDog
bV9pc1JlcGFyc2luZyhmYWxzZSkKICAgICAsIG1fdm0odm0pCisgICAgLCBtX3BhcnNpbmdCdWls
dGluRnVuY3Rpb24oc3RyaWN0bmVzcyA9PSBKU1BhcnNlQnVpbHRpbikKIHsKIH0KIApAQCAtNzUz
LDcgKzc1NSwyNyBAQCBpbmxpbmUgdm9pZCBMZXhlcjxUPjo6cmVjb3JkMTYoaW50IGMpCiAgICAg
QVNTRVJUKGMgPD0gc3RhdGljX2Nhc3Q8aW50PihVU0hSVF9NQVgpKTsKICAgICBtX2J1ZmZlcjE2
LmFwcGVuZChzdGF0aWNfY2FzdDxVQ2hhcj4oYykpOwogfQotCisgICAgCisjaWYgIUFTU0VSVF9E
SVNBQkxFRAorYm9vbCBpc1NhZmVJZGVudGlmaWVyKFZNJiB2bSwgY29uc3QgSWRlbnRpZmllciog
aWRlbnQpCit7CisgICAgaWYgKCFpZGVudCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgLyog
SnVzdCBibG9jayBhbnkgdXNlIG9mIHN1c3BpY2lvdXMgaWRlbnRpZmllcnMuICBUaGlzIGlzIGlu
dGVuZGVkIHRvCisgICAgICogYmUgdXNlZCBhcyBhIHNhZmV0eSBuZXQgd2hpbGUgaW1wbGVtZW50
aW5nIGJ1aWx0aW5zLgorICAgICAqLworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1l
cy0+Y2FsbCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJv
cGVydHlOYW1lcy0+YXBwbHkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKmlkZW50
ID09IHZtLnByb3BlcnR5TmFtZXMtPmV2YWwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoKmlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPkZ1bmN0aW9uKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKyAgICAKIHRlbXBsYXRlIDw+CiB0
ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9r
ZW5UeXBlIExleGVyPExDaGFyPjo6cGFyc2VJZGVudGlmaWVyKEpTVG9rZW5EYXRhKiB0b2tlbkRh
dGEsIHVuc2lnbmVkIGxleGVyRmxhZ3MsIGJvb2wgc3RyaWN0TW9kZSkKIHsKQEAgLTc2NSw3ICs3
ODcsMTEgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lO
TElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKICAgICAgICAgICAgIHJldHVybiBrZXl3
b3JkID09IFJFU0VSVkVEX0lGX1NUUklDVCAmJiAhc3RyaWN0TW9kZSA/IElERU5UIDoga2V5d29y
ZDsKICAgICAgICAgfQogICAgIH0KLQorICAgIAorICAgIGJvb2wgaXNQcml2YXRlTmFtZSA9IG1f
Y3VycmVudCA9PSAnQCcgJiYgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uOworICAgIGlmIChpc1By
aXZhdGVOYW1lKQorICAgICAgICBzaGlmdCgpOworICAgIAogICAgIGNvbnN0IExDaGFyKiBpZGVu
dGlmaWVyU3RhcnQgPSBjdXJyZW50U291cmNlUHRyKCk7CiAgICAgdW5zaWduZWQgaWRlbnRpZmll
ckxpbmVTdGFydCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKICAgICAKQEAgLTc3OSwxNSAr
ODA1LDI2IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19J
TkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAKICAgICBjb25zdCBJZGVudGlmaWVy
KiBpZGVudCA9IDA7CiAgICAgCi0gICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpIHsKKyAg
ICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllciB8fCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24p
IHsKICAgICAgICAgaW50IGlkZW50aWZpZXJMZW5ndGggPSBjdXJyZW50U291cmNlUHRyKCkgLSBp
ZGVudGlmaWVyU3RhcnQ7CiAgICAgICAgIGlkZW50ID0gbWFrZUlkZW50aWZpZXIoaWRlbnRpZmll
clN0YXJ0LCBpZGVudGlmaWVyTGVuZ3RoKTsKLQorICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRp
bkZ1bmN0aW9uKSB7CisgICAgICAgICAgICBpZiAoIWlzU2FmZUlkZW50aWZpZXIoKm1fdm0sIGlk
ZW50KSAmJiAhaXNQcml2YXRlTmFtZSkgeworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNz
YWdlID0gbWFrZVN0cmluZygiVGhlIHVzZSBvZiAnIiwgaWRlbnQtPnN0cmluZygpLCAiJyBpcyBk
aXNhbGxvd2VkIGluIGJ1aWx0aW4gZnVuY3Rpb25zLiIpOworICAgICAgICAgICAgICAgIHJldHVy
biBFUlJPUlRPSzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpc1ByaXZhdGVOYW1l
KQorICAgICAgICAgICAgICAgIGlkZW50ID0gbV92bS0+cHJvcGVydHlOYW1lcy0+Z2V0UHJpdmF0
ZU5hbWUoKmlkZW50KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkKQorICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+
aWRlbnQgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZFByaXZhdGVOYW1l
OworICAgICAgICAgICAgaWYgKCFpZGVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJ
RF9QUklWQVRFX05BTUVfRVJST1JUT0s7CisgICAgICAgIH0KICAgICAgICAgdG9rZW5EYXRhLT5p
ZGVudCA9IGlkZW50OwogICAgIH0gZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gMDsK
IAotICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICEobGV4
ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkpIHsKKyAgICBpZiAoVU5M
SUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxhZ3MgJiBMZXhl
ckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpICYmICFpc1ByaXZhdGVOYW1lKSB7CiAgICAgICAg
IEFTU0VSVChzaG91bGRDcmVhdGVJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKHJlbWFpbmluZyA8
IG1heFRva2VuTGVuZ3RoKSB7CiAgICAgICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0g
bV92bS0+a2V5d29yZHMtPmdldEtleXdvcmQoKmlkZW50KTsKQEAgLTgxNCw2ICs4NTEsMTAgQEAg
dGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rv
a2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAKICAgICAgICAgICAgIHJldHVybiBrZXl3b3JkID09IFJF
U0VSVkVEX0lGX1NUUklDVCAmJiAhc3RyaWN0TW9kZSA/IElERU5UIDoga2V5d29yZDsKICAgICAg
ICAgfQogICAgIH0KKyAgICAKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJlbnQgPT0g
J0AnICYmIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKKyAgICBpZiAoaXNQcml2YXRlTmFtZSkK
KyAgICAgICAgc2hpZnQoKTsKIAogICAgIGNvbnN0IFVDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBj
dXJyZW50U291cmNlUHRyKCk7CiAgICAgaW50IGlkZW50aWZpZXJMaW5lU3RhcnQgPSBjdXJyZW50
TGluZVN0YXJ0T2Zmc2V0KCk7CkBAIC04MjYsNiArODY3LDcgQEAgdGVtcGxhdGUgPGJvb2wgc2hv
dWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hh
cj46OnAKICAgICB9CiAgICAgCiAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudCA9PSAnXFwnKSkg
eworICAgICAgICBBU1NFUlQoIWlzUHJpdmF0ZU5hbWUpOwogICAgICAgICBzZXRPZmZzZXRGcm9t
U291cmNlUHRyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxpbmVTdGFydCk7CiAgICAgICAg
IHJldHVybiBwYXJzZUlkZW50aWZpZXJTbG93Q2FzZTxzaG91bGRDcmVhdGVJZGVudGlmaWVyPih0
b2tlbkRhdGEsIGxleGVyRmxhZ3MsIHN0cmljdE1vZGUpOwogICAgIH0KQEAgLTgzNywxOCArODc5
LDI5IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJ
TkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+OjpwCiAKICAgICBjb25zdCBJZGVudGlmaWVyKiBp
ZGVudCA9IDA7CiAgICAgCi0gICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpIHsKKyAgICBp
ZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllciB8fCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsK
ICAgICAgICAgaW50IGlkZW50aWZpZXJMZW5ndGggPSBjdXJyZW50U291cmNlUHRyKCkgLSBpZGVu
dGlmaWVyU3RhcnQ7CiAgICAgICAgIGlmIChpc0FsbDhCaXQpCiAgICAgICAgICAgICBpZGVudCA9
IG1ha2VJZGVudGlmaWVyTENoYXJGcm9tVUNoYXIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVy
TGVuZ3RoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaWRlbnQgPSBtYWtlSWRlbnRpZmll
cihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwotICAgICAgICAKKyAgICAgICAg
aWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgeworICAgICAgICAgICAgaWYgKCFpc1NhZmVJ
ZGVudGlmaWVyKCptX3ZtLCBpZGVudCkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsKKyAgICAgICAgICAg
ICAgICBtX2xleEVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIlRoZSB1c2Ugb2YgJyIsIGlkZW50
LT5zdHJpbmcoKSwgIicgaXMgZGlzYWxsb3dlZCBpbiBidWlsdGluIGZ1bmN0aW9ucy4iKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgICAgICAgICBpZGVudCA9IG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmdldFByaXZhdGVOYW1lKCppZGVudCk7CisgICAgICAgICAgICBlbHNlIGlmICgq
aWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCkKKyAgICAgICAg
ICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5l
ZEtleXdvcmRQcml2YXRlTmFtZTsKKyAgICAgICAgICAgIGlmICghaWRlbnQpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIElOVkFMSURfUFJJVkFURV9OQU1FX0VSUk9SVE9LOworICAgICAgICB9CiAg
ICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBpZGVudDsKICAgICB9IGVsc2UKICAgICAgICAgdG9r
ZW5EYXRhLT5pZGVudCA9IDA7CiAgICAgCi0gICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBt
YXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVk
V29yZHMpKSkgeworICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgp
ICYmICEobGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlz
UHJpdmF0ZU5hbWUpIHsKICAgICAgICAgQVNTRVJUKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpOwog
ICAgICAgICBpZiAocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHsKICAgICAgICAgICAgIGNv
bnN0IEhhc2hFbnRyeSogZW50cnkgPSBtX3ZtLT5rZXl3b3Jkcy0+Z2V0S2V5d29yZCgqaWRlbnQp
OwpAQCAtMTY1OCw2ICsxNzExLDcgQEAgaW5OdW1iZXJBZnRlckRlY2ltYWxQb2ludDoKICAgICAg
ICAgQVNTRVJUKGlzSWRlbnRTdGFydChtX2N1cnJlbnQpKTsKICAgICAgICAgRkFMTFRIUk9VR0g7
CiAgICAgY2FzZSBDaGFyYWN0ZXJCYWNrU2xhc2g6CisgICAgICAgIHBhcnNlSWRlbnQ6CiAgICAg
ICAgIGlmIChsZXhlckZsYWdzICYgTGV4ZXhGbGFnc0RvbnRCdWlsZEtleXdvcmRzKQogICAgICAg
ICAgICAgdG9rZW4gPSBwYXJzZUlkZW50aWZpZXI8ZmFsc2U+KHRva2VuRGF0YSwgbGV4ZXJGbGFn
cywgc3RyaWN0TW9kZSk7CiAgICAgICAgIGVsc2UKQEAgLTE2NzAsNiArMTcyNCwxMSBAQCBpbk51
bWJlckFmdGVyRGVjaW1hbFBvaW50OgogICAgICAgICBtX3Rlcm1pbmF0b3IgPSB0cnVlOwogICAg
ICAgICBtX2xpbmVTdGFydCA9IG1fY29kZTsKICAgICAgICAgZ290byBzdGFydDsKKyAgICBjYXNl
IENoYXJhY3RlclByaXZhdGVJZGVudGlmaWVyU3RhcnQ6CisgICAgICAgIGlmIChtX3BhcnNpbmdC
dWlsdGluRnVuY3Rpb24pCisgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnQ7CisKKyAgICAgICAg
RkFMTFRIUk9VR0g7CiAgICAgY2FzZSBDaGFyYWN0ZXJJbnZhbGlkOgogICAgICAgICBtX2xleEVy
cm9yTWVzc2FnZSA9IGludmFsaWRDaGFyYWN0ZXJNZXNzYWdlKCk7CiAgICAgICAgIHRva2VuID0g
RVJST1JUT0s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKaW5kZXggMjhjNjFiYTE5
OGQyYzE1YTQ5YmIxODUyZWQzMGJlZmViODkwNDAwOC4uYjg4NzNlOTk1MDI4NjQ0YmY4Y2JiM2Q0
YzJkYTU2MmU5M2UwZThlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9MZXhlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaApAQCAt
NzIsNyArNzIsNyBAQCBjbGFzcyBMZXhlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAKIHB1YmxpYzoKLSAgICBMZXhlcihWTSopOworICAgIExleGVyKFZNKiwgSlNQYXJzZXJTdHJp
Y3RuZXNzKTsKICAgICB+TGV4ZXIoKTsKIAogICAgIC8vIENoYXJhY3RlciBtYW5pcHVsYXRpb24g
ZnVuY3Rpb25zLgpAQCAtMjM4LDYgKzIzOCw3IEBAIHByaXZhdGU6CiAgICAgSWRlbnRpZmllckFy
ZW5hKiBtX2FyZW5hOwogCiAgICAgVk0qIG1fdm07CisgICAgYm9vbCBtX3BhcnNpbmdCdWlsdGlu
RnVuY3Rpb247CiB9OwogCiB0ZW1wbGF0ZSA8PgpAQCAtMzM1LDYgKzMzNiwxMiBAQCBBTFdBWVNf
SU5MSU5FIGNvbnN0IElkZW50aWZpZXIqIExleGVyPFQ+OjptYWtlTENoYXJJZGVudGlmaWVyKGNv
bnN0IFVDaGFyKiBjaGFyYQogICAgIHJldHVybiAmbV9hcmVuYS0+bWFrZUlkZW50aWZpZXJMQ2hh
ckZyb21VQ2hhcihtX3ZtLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOwogfQogCisjaWYgQVNTRVJUX0RJ
U0FCTEVECitBTFdBWVNfSU5MSU5FIGJvb2wgaXNTYWZlSWRlbnRpZmllcihWTSYsIGNvbnN0IElk
ZW50aWZpZXIqKSB7IHJldHVybiB0cnVlOyB9CisjZWxzZQorYm9vbCBpc1NhZmVJZGVudGlmaWVy
KFZNJiwgY29uc3QgSWRlbnRpZmllciopOworI2VuZGlmCisKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgogQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmll
cihKU1Rva2VuKiB0b2tlblJlY29yZCwgdW5zaWduZWQgbGV4ZXJGbGFncywgYm9vbCBzdHJpY3RN
b2RlKQogewpAQCAtMzcwLDEwICszNzcsMTUgQEAgQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBM
ZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rva2VuKiB0b2tlblJlY29yZCwgdW4KICAg
ICBBU1NFUlQoY3VycmVudE9mZnNldCgpID49IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKSk7CiAK
ICAgICAvLyBDcmVhdGUgdGhlIGlkZW50aWZpZXIgaWYgbmVlZGVkCi0gICAgaWYgKGxleGVyRmxh
Z3MgJiBMZXhleEZsYWdzRG9udEJ1aWxkS2V5d29yZHMpCisgICAgaWYgKGxleGVyRmxhZ3MgJiBM
ZXhleEZsYWdzRG9udEJ1aWxkS2V5d29yZHMKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAg
ICYmICFtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24KKyNlbmRpZgorICAgICAgICApCiAgICAgICAg
IHRva2VuRGF0YS0+aWRlbnQgPSAwOwogICAgIGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVu
dCA9IG1ha2VMQ2hhcklkZW50aWZpZXIoc3RhcnQsIHB0ciAtIHN0YXJ0KTsKKwogICAgIHRva2Vu
TG9jYXRpb24tPmxpbmUgPSBtX2xpbmVOdW1iZXI7CiAgICAgdG9rZW5Mb2NhdGlvbi0+bGluZVN0
YXJ0T2Zmc2V0ID0gY3VycmVudExpbmVTdGFydE9mZnNldCgpOwogICAgIHRva2VuTG9jYXRpb24t
PnN0YXJ0T2Zmc2V0ID0gb2Zmc2V0RnJvbVNvdXJjZVB0cihzdGFydCk7CkBAIC0zODEsNiArMzkz
LDEzIEBAIEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4cGVjdElkZW50
aWZpZXIoSlNUb2tlbiogdG9rZW5SZWNvcmQsIHVuCiAgICAgQVNTRVJUKHRva2VuTG9jYXRpb24t
PnN0YXJ0T2Zmc2V0ID49IHRva2VuTG9jYXRpb24tPmxpbmVTdGFydE9mZnNldCk7CiAgICAgdG9r
ZW5SZWNvcmQtPm1fc3RhcnRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb247CiAgICAgdG9rZW5SZWNv
cmQtPm1fZW5kUG9zaXRpb24gPSBjdXJyZW50UG9zaXRpb24oKTsKKyNpZiAhQVNTRVJUX0RJU0FC
TEVECisgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgeworICAgICAgICBpZiAoIWlz
U2FmZUlkZW50aWZpZXIoKm1fdm0sIHRva2VuRGF0YS0+aWRlbnQpKQorICAgICAgICAgICAgcmV0
dXJuIEVSUk9SVE9LOworICAgIH0KKyNlbmRpZgorCiAgICAgbV9sYXN0VG9rZW4gPSBJREVOVDsK
ICAgICByZXR1cm4gSURFTlQ7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMu
Y3BwCmluZGV4IGZjOWNjZDlmNmM1NzZjMWFlZjU0N2YyMTFmZGQ1OTZmNDJlMDU4MDYuLmQ5NTJi
YTZhOTRkMmY2YjQxODIxNTUwMDRkMGE5NzA4NDI5YmQ3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0xMzIsNiArMTMyLDEyIEBAIFBhc3NSZWZQdHI8UHJvZ3Jh
bU5vZGU+IFByb2dyYW1Ob2RlOjpjcmVhdGUoVk0qIHZtLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IHN0YXJ0CiAgICAgcmV0dXJuIG5vZGUucmVsZWFzZSgpOwogfQogCisKK3ZvaWQgUHJvZ3JhbU5v
ZGU6OnNldENsb3NlZFZhcmlhYmxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYm
IGNsb3NlZFZhcmlhYmxlcykKK3sKKyAgICBtX2Nsb3NlZFZhcmlhYmxlcyA9IHN0ZDo6bW92ZShj
bG9zZWRWYXJpYWJsZXMpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
RXZhbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogaW5saW5lIEV2YWxOb2Rl
OjpFdmFsTm9kZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBT
b3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFj
ayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggZDc3OWExNzhkOTU2ZmY5OWZk
MGJlZDVkNWY0NTRhYTNlNmI1MDg3OS4uODE2ZmYwMDFhYmYwMzc2YzY0MmYxYTkzOGQwZTBhOWY1
MjljYTZiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTQzMSw2ICsx
NDMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbmVlZHNBY3RpdmF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gKGhhc0NhcHR1cmVkVmFyaWFibGVzKCkpIHx8IChtX2ZlYXR1cmVzICYg
KEV2YWxGZWF0dXJlIHwgV2l0aEZlYXR1cmUgfCBDYXRjaEZlYXR1cmUpKTsgfQogICAgICAgICBi
b29sIGhhc0NhcHR1cmVkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gISFtX2NhcHR1cmVkVmFy
aWFibGVzLnNpemUoKTsgfQogICAgICAgICBzaXplX3QgY2FwdHVyZWRWYXJpYWJsZUNvdW50KCkg
Y29uc3QgeyByZXR1cm4gbV9jYXB0dXJlZFZhcmlhYmxlcy5zaXplKCk7IH0KKyAgICAgICAgY29u
c3QgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2Nh
cHR1cmVkVmFyaWFibGVzOyB9CiAgICAgICAgIGJvb2wgY2FwdHVyZXMoY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQpIHsgcmV0dXJuIG1fY2FwdHVyZWRWYXJpYWJsZXMuY29udGFpbnMoaWRlbnQuaW1w
bCgpKTsgfQogCiAgICAgICAgIFZhclN0YWNrJiB2YXJTdGFjaygpIHsgcmV0dXJuIG1fdmFyU3Rh
Y2s7IH0KQEAgLTE0NDYsNiArMTQ0Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdGF0
ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1lbnQoKSBjb25zdDsKIAogICAgICAgICB2b2lkIGVtaXRT
dGF0ZW1lbnRzQnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkZXN0aW5h
dGlvbik7CisgICAgICAgIAorICAgICAgICB2b2lkIHNldENsb3NlZFZhcmlhYmxlcyhjb25zdCBW
ZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmKSB7IH0KIAogICAgIHByb3RlY3RlZDoKICAgICAg
ICAgdm9pZCBzZXRTb3VyY2UoY29uc3QgU291cmNlQ29kZSYgc291cmNlKSB7IG1fc291cmNlID0g
c291cmNlOyB9CkBAIC0xNDc1LDExICsxNDc4LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIHN0YXRpYyBjb25zdCBib29sIHNjb3BlSXNGdW5jdGlvbiA9IGZhbHNlOwogCisgICAgICAg
IHZvaWQgc2V0Q2xvc2VkVmFyaWFibGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+
JiYpOworICAgICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYgY2xvc2VkVmFy
aWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9jbG9zZWRWYXJpYWJsZXM7IH0KICAgICBwcml2YXRl
OgogICAgICAgICBQcm9ncmFtTm9kZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQs
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWdu
ZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayos
IElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVt
Q29uc3RhbnRzKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKLQorICAgICAgICBWZWN0b3I8
UmVmUHRyPFN0cmluZ0ltcGw+PiBtX2Nsb3NlZFZhcmlhYmxlczsKICAgICAgICAgdW5zaWduZWQg
bV9zdGFydENvbHVtbjsKICAgICAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CiAgICAgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCAyOTc2NjZlNzI2ZTQ1ZDA4
M2VmMTM0OWRkZmZkZjM3ZWY4MDBkZjdhLi41MGJlYzc5ZmUzOGFkZjhmM2EwNGY2YjQ2Y2JkMmE1
Y2JmY2YyNDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0y
MDQsOCArMjA0LDkgQEAgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlcihWTSogdm0sIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25QYXJhbWV0ZXJzKgogICAgICwgbV9sYXN0SWRlbnRp
ZmllcigwKQogICAgICwgbV9sYXN0RnVuY3Rpb25OYW1lKG51bGxwdHIpCiAgICAgLCBtX3NvdXJj
ZUVsZW1lbnRzKDApCisgICAgLCBtX3BhcnNpbmdCdWlsdGluKHN0cmljdG5lc3MgPT0gSlNQYXJz
ZUJ1aWx0aW4pCiB7Ci0gICAgbV9sZXhlciA9IGFkb3B0UHRyKG5ldyBMZXhlclR5cGUodm0pKTsK
KyAgICBtX2xleGVyID0gYWRvcHRQdHIobmV3IExleGVyVHlwZSh2bSwgc3RyaWN0bmVzcykpOwog
ICAgIG1fYXJlbmEgPSBtX3ZtLT5wYXJzZXJBcmVuYS5nZXQoKTsKICAgICBtX2xleGVyLT5zZXRD
b2RlKHNvdXJjZSwgbV9hcmVuYSk7CiAgICAgbV90b2tlbi5tX2xvY2F0aW9uLmxpbmUgPSBzb3Vy
Y2UuZmlyc3RMaW5lKCk7CkBAIC0yNTYsNiArMjU3LDcgQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUlubmVyKCkKICAgICBJZGVudGlmaWVyU2V0IGNhcHR1cmVkVmFyaWFibGVzOwog
ICAgIGJvb2wgbW9kaWZpZWRQYXJhbWV0ZXIgPSBmYWxzZTsKICAgICBzY29wZS0+Z2V0Q2FwdHVy
ZWRWYXJpYWJsZXMoY2FwdHVyZWRWYXJpYWJsZXMsIG1vZGlmaWVkUGFyYW1ldGVyKTsKKyAgICAK
ICAgICBDb2RlRmVhdHVyZXMgZmVhdHVyZXMgPSBjb250ZXh0LmZlYXR1cmVzKCk7CiAgICAgaWYg
KHNjb3BlLT5zdHJpY3RNb2RlKCkpCiAgICAgICAgIGZlYXR1cmVzIHw9IFN0cmljdE1vZGVGZWF0
dXJlOwpAQCAtMjYzLDIxICsyNjUsMzYgQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUlubmVyKCkKICAgICAgICAgZmVhdHVyZXMgfD0gU2hhZG93c0FyZ3VtZW50c0ZlYXR1cmU7CiAg
ICAgaWYgKG1vZGlmaWVkUGFyYW1ldGVyKQogICAgICAgICBmZWF0dXJlcyB8PSBNb2RpZmllZFBh
cmFtZXRlckZlYXR1cmU7Ci0KKyAgICAKKyAgICBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiBj
bG9zZWRWYXJpYWJsZXM7CisgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW4pIHsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoIWNhcHR1cmVkVmFyaWFibGVzLnNpemUoKSk7CisgICAgICAgIElkZW50aWZp
ZXJTZXQgdXNlZFZhcmlhYmxlczsKKyAgICAgICAgc2NvcGUtPmdldFVzZWRWYXJpYWJsZXModXNl
ZFZhcmlhYmxlcyk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgdmFyaWFibGUgOiB1c2VkVmFy
aWFibGVzKSB7CisgICAgICAgICAgICBpZiAoc2NvcGUtPmhhc0RlY2xhcmVkVmFyaWFibGUoSWRl
bnRpZmllcihtX3ZtLCB2YXJpYWJsZS5nZXQoKSkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoc2NvcGUtPmhhc0RlY2xhcmVkUGFyYW1l
dGVyKElkZW50aWZpZXIobV92bSwgdmFyaWFibGUuZ2V0KCkpKSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIGNsb3NlZFZhcmlhYmxlcy5hcHBlbmQodmFyaWFibGUpOwor
ICAgICAgICB9CisgICAgfQogICAgIGRpZEZpbmlzaFBhcnNpbmcoc291cmNlRWxlbWVudHMsIGNv
bnRleHQudmFyRGVjbGFyYXRpb25zKCksIGNvbnRleHQuZnVuY0RlY2xhcmF0aW9ucygpLCBmZWF0
dXJlcywKLSAgICAgICAgY29udGV4dC5udW1Db25zdGFudHMoKSwgY2FwdHVyZWRWYXJpYWJsZXMp
OworICAgICAgICBjb250ZXh0Lm51bUNvbnN0YW50cygpLCBjYXB0dXJlZFZhcmlhYmxlcywgc3Rk
Ojptb3ZlKGNsb3NlZFZhcmlhYmxlcykpOwogCiAgICAgcmV0dXJuIHBhcnNlRXJyb3I7CiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB2b2lkIFBhcnNlcjxMZXhlclR5cGU+Ojpk
aWRGaW5pc2hQYXJzaW5nKFNvdXJjZUVsZW1lbnRzKiBzb3VyY2VFbGVtZW50cywgUGFyc2VyQXJl
bmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjaz4qIHZhclN0YWNrLCAKLSAgICBQYXJz
ZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KiBmdW5jU3RhY2ss
IENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cywgSWRlbnRpZmllclNldCYg
Y2FwdHVyZWRWYXJzKQorICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVu
Y3Rpb25TdGFjaz4qIGZ1bmNTdGFjaywgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29u
c3RhbnRzLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcnMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8
U3RyaW5nSW1wbD4+JiYgY2xvc2VkVmFyaWFibGVzKQogewogICAgIG1fc291cmNlRWxlbWVudHMg
PSBzb3VyY2VFbGVtZW50czsKICAgICBtX3ZhckRlY2xhcmF0aW9ucyA9IHZhclN0YWNrOwogICAg
IG1fZnVuY0RlY2xhcmF0aW9ucyA9IGZ1bmNTdGFjazsKICAgICBtX2NhcHR1cmVkVmFyaWFibGVz
LnN3YXAoY2FwdHVyZWRWYXJzKTsKKyAgICBtX2Nsb3NlZFZhcmlhYmxlcyA9IGNsb3NlZFZhcmlh
YmxlczsKICAgICBtX2ZlYXR1cmVzID0gZmVhdHVyZXM7CiAgICAgbV9udW1Db25zdGFudHMgPSBu
dW1Db25zdGFudHM7CiB9CkBAIC0yMzQ2LDYgKzIzNjMsMTAgQEAgdGVtcGxhdGUgPHR5cGVuYW1l
IExleGVyVHlwZT4gdm9pZCBQYXJzZXI8TGV4ZXJUeXBlPjo6cHJpbnRVbmV4cGVjdGVkVG9rZW5U
ZXh0KFcKICAgICBjYXNlIFJFU0VSVkVEOgogICAgICAgICBvdXQucHJpbnQoIlVuZXhwZWN0ZWQg
dXNlIG9mIHJlc2VydmVkIHdvcmQgJyIsIGdldFRva2VuKCksICInIik7CiAgICAgICAgIHJldHVy
bjsKKworICAgIGNhc2UgSU5WQUxJRF9QUklWQVRFX05BTUVfRVJST1JUT0s6CisgICAgICAgIG91
dC5wcmludCgiSW52YWxpZCBwcml2YXRlIG5hbWUgJyIsIGdldFRva2VuKCksICInIik7CisgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIAogICAgIGNhc2UgSURFTlQ6CiAgICAgICAgIG91dC5w
cmludCgiVW5leHBlY3RlZCBpZGVudGlmaWVyICciLCBnZXRUb2tlbigpLCAiJyIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggYjY5OGVmOTM2OGNiOGM4ZjE5N2NjZDAw
MGFjYWE2ZGZiMTFiYTI0NC4uOTAzMzg1MGM4Yzk3ZjU3ZTIxZGE1ZWVkYjAyZDA0NGY0Yzg5Nzhl
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0yMyw2ICsyMyw3IEBA
CiAjaWZuZGVmIFBhcnNlcl9oCiAjZGVmaW5lIFBhcnNlcl9oCiAKKyNpbmNsdWRlICJDb21tb25J
ZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
SGVscGVycy5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKQEAgLTI1OSw2ICsyNjAsMTAgQEAg
c3RydWN0IFNjb3BlIHsKICAgICAgICAgcmV0dXJuIGlzVmFsaWRTdHJpY3RNb2RlID8gQmluZGlu
Z1N1Y2NlZWRlZCA6IFN0cmljdEJpbmRpbmdGYWlsZWQ7CiAgICAgfQogCisgICAgdm9pZCBnZXRV
c2VkVmFyaWFibGVzKElkZW50aWZpZXJTZXQmIHVzZWRWYXJpYWJsZXMpCisgICAgeworICAgICAg
ICB1c2VkVmFyaWFibGVzLnN3YXAobV91c2VkVmFyaWFibGVzKTsKKyAgICB9CiAKICAgICB2b2lk
IHVzZVZhcmlhYmxlKGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBib29sIGlzRXZhbCkKICAgICB7
CkBAIC00MTQsNiArNDE5LDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4g
cGFyc2UoUGFyc2VyRXJyb3ImKTsKIAogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3Jl
TGFzdE5ld2xpbmUoKSBjb25zdCB7IHJldHVybiBtX2xleGVyLT5wb3NpdGlvbkJlZm9yZUxhc3RO
ZXdsaW5lKCk7IH0KKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmIGNsb3Nl
ZFZhcmlhYmxlcygpIHsgcmV0dXJuIHN0ZDo6bW92ZShtX2Nsb3NlZFZhcmlhYmxlcyk7IH0KIAog
cHJpdmF0ZToKICAgICBzdHJ1Y3QgQWxsb3dJbk92ZXJyaWRlIHsKQEAgLTU0MCw3ICs1NDYsNyBA
QCBwcml2YXRlOgogICAgIFN0cmluZyBwYXJzZUlubmVyKCk7CiAKICAgICB2b2lkIGRpZEZpbmlz
aFBhcnNpbmcoU291cmNlRWxlbWVudHMqLCBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFj
a3M6OlZhclN0YWNrPiosIAotICAgICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFj
a3M6OkZ1bmN0aW9uU3RhY2s+KiwgQ29kZUZlYXR1cmVzLCBpbnQsIElkZW50aWZpZXJTZXQmKTsK
KyAgICAgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNr
PiosIENvZGVGZWF0dXJlcywgaW50LCBJZGVudGlmaWVyU2V0JiwgY29uc3QgVmVjdG9yPFJlZlB0
cjxTdHJpbmdJbXBsPj4mJik7CiAKICAgICAvLyBVc2VkIHRvIGRldGVybWluZSB0eXBlIG9mIGVy
cm9yIHRvIHJlcG9ydC4KICAgICBib29sIGlzRnVuY3Rpb25Cb2R5Tm9kZShTY29wZU5vZGUqKSB7
IHJldHVybiBmYWxzZTsgfQpAQCAtODQwLDkgKzg0NiwxMSBAQCBwcml2YXRlOgogICAgIGNvbnN0
IElkZW50aWZpZXIqIG1fbGFzdEZ1bmN0aW9uTmFtZTsKICAgICBSZWZQdHI8U291cmNlUHJvdmlk
ZXJDYWNoZT4gbV9mdW5jdGlvbkNhY2hlOwogICAgIFNvdXJjZUVsZW1lbnRzKiBtX3NvdXJjZUVs
ZW1lbnRzOworICAgIGJvb2wgbV9wYXJzaW5nQnVpbHRpbjsKICAgICBQYXJzZXJBcmVuYURhdGE8
RGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrPiogbV92YXJEZWNsYXJhdGlvbnM7CiAgICAgUGFy
c2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiogbV9mdW5jRGVj
bGFyYXRpb25zOwogICAgIElkZW50aWZpZXJTZXQgbV9jYXB0dXJlZFZhcmlhYmxlczsKKyAgICBW
ZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiBtX2Nsb3NlZFZhcmlhYmxlczsKICAgICBDb2RlRmVh
dHVyZXMgbV9mZWF0dXJlczsKICAgICBpbnQgbV9udW1Db25zdGFudHM7CiAgICAgCkBAIC05NTcs
NiArOTY1LDEwIEBAIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gcGFyc2UoVk0qIHZtLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uUGFyYW1ldGVyCiAgICAgICAgIFJlZlB0cjxQYXJz
ZWROb2RlPiByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IpOwogICAgICAg
ICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgICAgICpwb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKKyAg
ICAgICAgaWYgKHN0cmljdG5lc3MgPT0gSlNQYXJzZUJ1aWx0aW4pIHsKKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgICAgICAgICByZXN1bHQtPnNldENsb3NlZFZhcmlh
YmxlcyhzdGQ6Om1vdmUocGFyc2VyLmNsb3NlZFZhcmlhYmxlcygpKSk7CisgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiAgICAgfQogICAgIFBhcnNlcjxMZXhlcjxV
Q2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBwYXJhbWV0ZXJzLCBuYW1lLCBzdHJpY3RuZXNzLCBw
YXJzZXJNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyTW9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaApp
bmRleCA0ZTlhMTdjZDIxY2EzNDE0NmJiZDQ4MTU2YTM3MmNkNDA0ZGVmNjBjLi5mN2E3NWJmN2Mz
Nzg1N2U0NGI2ZDVkNzFmNDUyOWJiMWFjMWNmNWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXJNb2Rlcy5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi1lbnVtIEpTUGFyc2VyU3RyaWN0bmVzcyB7IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VTdHJp
Y3QgfTsKK2VudW0gSlNQYXJzZXJTdHJpY3RuZXNzIHsgSlNQYXJzZU5vcm1hbCwgSlNQYXJzZUJ1
aWx0aW4sIEpTUGFyc2VTdHJpY3QgfTsKIGVudW0gSlNQYXJzZXJNb2RlIHsgSlNQYXJzZVByb2dy
YW1Db2RlLCBKU1BhcnNlRnVuY3Rpb25Db2RlIH07CiAKIGVudW0gUHJvZmlsZXJNb2RlIHsgUHJv
ZmlsZXJPZmYsIFByb2ZpbGVyT24gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlclRva2Vucy5oCmluZGV4IDgyYTI2NjM5YTc5MjIwYTA4NDQ1NmI0OGYzMjg1MmQxNDNjNzM5
ZDAuLjhjODdhZDlmYWRiZGM0YWYzOWFjOTlkYjJkODQ0NWUxM2ZmZmQzNWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaApAQCAtMTQ5LDYgKzE0OSw3IEBA
IGVudW0gSlNUb2tlblR5cGUgewogICAgIElOVkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9L
ID0gNyB8IEVycm9yVG9rZW5GbGFnLAogICAgIFVOVEVSTUlOQVRFRF9TVFJJTkdfTElURVJBTF9F
UlJPUlRPSyA9IDggfCBFcnJvclRva2VuRmxhZyB8IFVudGVybWluYXRlZEVycm9yVG9rZW5GbGFn
LAogICAgIElOVkFMSURfU1RSSU5HX0xJVEVSQUxfRVJST1JUT0sgPSA5IHwgRXJyb3JUb2tlbkZs
YWcsCisgICAgSU5WQUxJRF9QUklWQVRFX05BTUVfRVJST1JUT0sgPSAxMCB8IEVycm9yVG9rZW5G
bGFnCiB9OwogCiBzdHJ1Y3QgSlNUZXh0UG9zaXRpb24gewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcmdMaXN0LmNwcAppbmRleCBlMTMxMDRkZjU5MjJkMDc3NjI1N2QwNWNiNWU4NzA1
MzdkMjE0MjhhLi4yNGMwNmJiYjFjMmMzNGI5ZGE1ZWY4NGIyNTVjOTkwMGRhZjg1OTEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmNwcApAQCAtMjIsNyArMjIsNyBA
QAogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKIAogI2luY2x1ZGUgIkhlYXBSb290VmlzaXRvci5oIgot
I2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAppbmRleCA4ZmQxOTVjYjliNWY3
ZWY1YmYzZDJmZDkzMzQyYjAxMDI3MjVmYWYxLi40ZmJhYzY4ODYzNDg2MTcxNjQ5YTMzNGQ2MWI1
ZGNjMzgxNGRkNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cmd1bWVudHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50
cy5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJBcmd1bWVudHMuaCIKIAogI2luY2x1
ZGUgIkNhbGxGcmFtZUlubGluZXMuaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgog
I2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIkpTQXJndW1lbnRzSXRlcmF0b3Iu
aCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ3VtZW50cy5oCmluZGV4IDE4ZjM4OTE3MTM4NTIzNjJjN2E3NWEzMDUzYjQ2MzE0MTdiZWI4
MWIuLmYxNmZkM2RlNDA1NTk3MGJhOWQ5YzZmMGFlNjMxOGYyMjA0YjY1NGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCkBAIC0yNSw2ICsyNSw3IEBACiAjZGVm
aW5lIEFyZ3VtZW50c19oCiAKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCisjaW5jbHVkZSAiQ29t
bW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJK
U0Rlc3RydWN0aWJsZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yQ29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0
b3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYWZiNTk3OTBjYjAwOTk4OWJiN2I0Mjg2M2U5MTgyMzM1
NzZiOGFhYy4uOTFjYWNkZmE4NTdlYjY5Mzc2YTMwODFhOGM3MDJhYzljMjE3Y2E3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JDb25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRz
SXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJBcmd1
bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudHNJdGVyYXRv
clByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAi
SlNBcmd1bWVudHNJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCmluZGV4IGRk
MDg5NGYxNGEwMjFkNWYxMjY1OGFjYjAxZTcyMWZjZDZkMzQ4Y2MuLjViNGFlODcxNmIwNTUzYmU0
NjIzOTU1ZTk5ZTFiNDNlYmYxOGZlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTI2
LDcgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBcmd1bWVudHNJdGVy
YXRvclByb3RvdHlwZS5oIgogCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNs
dWRlICJKU0FyZ3VtZW50c0l0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCAyN2FjNmQ0OGE3MWY3OTU1MDJhMTBjZWE2NDc4
NjU0MTM1YTQ2M2EwLi42ZGM3YmU1Njk2OWRlNjdmNjIxMDdiYjNhNTFhMzA4ZmEzYmE3NmJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3Bw
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNBcnJheUl0
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdCdWlsZGVyLmgiCisjaW5jbHVkZSAiSlNTdHJp
bmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdKb2luZXIuaCIKICNpbmNsdWRlICJMb29r
dXAuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKQEAgLTU2LDcgKzU3LDYgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTbGljZShFeGVj
U3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9G
dW5jU29ydChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5UHJvdG9GdW5jU3BsaWNlKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNVblNoaWZ0KEV4ZWNTdGF0ZSopOwotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNFdmVyeShFeGVjU3Rh
dGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5j
Rm9yRWFjaChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5UHJvdG9GdW5jU29tZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jSW5kZXhPZihFeGVjU3RhdGUqKTsKQEAgLTk1NCw2
OSArOTU0LDYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY01h
cChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHRBcnJh
eSk7CiB9CiAKLS8vIERvY3VtZW50YXRpb24gZm9yIHRoZXNlIHRocmVlIGlzIGF2YWlsYWJsZSBh
dDoKLS8vIGh0dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3ppbGxhLm9yZy9lbi9kb2NzL0NvcmVfSmF2
YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6QXJyYXk6ZXZlcnkKLS8vIGh0dHA6Ly9kZXZl
bG9wZXItdGVzdC5tb3ppbGxhLm9yZy9lbi9kb2NzL0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJl
bmNlOk9iamVjdHM6QXJyYXk6Zm9yRWFjaAotLy8gaHR0cDovL2RldmVsb3Blci10ZXN0Lm1vemls
bGEub3JnL2VuL2RvY3MvQ29yZV9KYXZhU2NyaXB0XzEuNV9SZWZlcmVuY2U6T2JqZWN0czpBcnJh
eTpzb21lCi0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNFdmVy
eShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNPYmplY3QqIHRoaXNPYmogPSBleGVjLT5ob3N0
VGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOwotICAg
IHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmotPmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkubGVuZ3RoKS50b1VJbnQzMihleGVjKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KLSAgICBK
U1ZhbHVlIGZ1bmN0aW9uID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgQ2FsbERhdGEgY2FsbERh
dGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERh
dGEpOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwotCi0gICAgSlNWYWx1ZSBhcHBseVRoaXMgPSBleGVjLT5h
cmd1bWVudCgxKTsKLQotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKHRydWUpOwotCi0g
ICAgdW5zaWduZWQgayA9IDA7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlSlMgJiYgaXNK
U0FycmF5KHRoaXNPYmopKSB7Ci0gICAgICAgIEpTRnVuY3Rpb24qIGYgPSBqc0Nhc3Q8SlNGdW5j
dGlvbio+KGZ1bmN0aW9uKTsKLSAgICAgICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KHRoaXNP
YmopOwotICAgICAgICBDYWNoZWRDYWxsIGNhY2hlZENhbGwoZXhlYywgZiwgMyk7Ci0gICAgICAg
IGZvciAoOyBrIDwgbGVuZ3RoICYmICFleGVjLT5oYWRFeGNlcHRpb24oKTsgKytrKSB7Ci0gICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoIWFycmF5LT5jYW5HZXRJbmRleFF1aWNrbHkoaykpKQotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRDYWxs
LnNldFRoaXMoYXBwbHlUaGlzKTsKLSAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQo
MCwgYXJyYXktPmdldEluZGV4UXVpY2tseShrKSk7Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNl
dEFyZ3VtZW50KDEsIGpzTnVtYmVyKGspKTsKLSAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJn
dW1lbnQoMiwgdGhpc09iaik7Ci0gICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhY2hlZENh
bGwuY2FsbCgpOwotICAgICAgICAgICAgaWYgKCFyZXN1bHQudG9Cb29sZWFuKGV4ZWMpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgZm9yICg7IGsgPCBsZW5ndGggJiYgIWV4ZWMtPmhhZEV4Y2Vw
dGlvbigpOyArK2spIHsKLSAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iaik7Ci0gICAg
ICAgIGlmICghdGhpc09iai0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGssIHNsb3QpKQotICAgICAg
ICAgICAgY29udGludWU7Ci0KLSAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgZWFjaEFyZ3Vt
ZW50czsKLSAgICAgICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQoc2xvdC5nZXRWYWx1ZShleGVjLCBr
KSk7Ci0gICAgICAgIGVhY2hBcmd1bWVudHMuYXBwZW5kKGpzTnVtYmVyKGspKTsKLSAgICAgICAg
ZWFjaEFyZ3VtZW50cy5hcHBlbmQodGhpc09iaik7Ci0KLSAgICAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKLQotICAgICAgICBib29sIHByZWRpY2F0ZVJlc3VsdCA9IGNhbGwoZXhlYywgZnVuY3Rp
b24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgYXBwbHlUaGlzLCBlYWNoQXJndW1lbnRzKS50b0Jvb2xl
YW4oZXhlYyk7Ci0gICAgICAgIGlmICghcHJlZGljYXRlUmVzdWx0KSB7Ci0gICAgICAgICAgICBy
ZXN1bHQgPSBqc0Jvb2xlYW4oZmFsc2UpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci19Ci0KIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNGb3JFYWNoKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKICAgICBKU09iamVjdCogdGhpc09iaiA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKS50
b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCA1MTBlMzgzZmFlNTc1YWFkYTgxNzZj
MDQ0MWVlNzI1YjQzYTRjNzMyLi5kMzA0ODc3ZmU5Y2RlMWMwOTE5ZmQ0NTk1ZjgxMWVjYWJjZTc3
Mjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAg
LTE0NCwyNCArMTQ0LDI2IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6
OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZNJiB2CiAgICAgSlNUZXh0UG9z
aXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZTsKICAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+
IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oJnZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIo
KSwgSlNQYXJzZU5vcm1hbCwgSlNQYXJzZVByb2dyYW1Db2RlLCBlcnJvciwgJnBvc2l0aW9uQmVm
b3JlTGFzdE5ld2xpbmUpOwogICAgIGlmICghcHJvZ3JhbSkgewotICAgICAgICBBU1NFUlQoZXJy
b3IubV90eXBlICE9IFBhcnNlckVycm9yOjpFcnJvck5vbmUpOworICAgICAgICBSRUxFQVNFX0FT
U0VSVChlcnJvci5tX3R5cGUgIT0gUGFyc2VyRXJyb3I6OkVycm9yTm9uZSk7CiAgICAgICAgIG1f
c291cmNlQ29kZS5yZW1vdmUoYWRkUmVzdWx0Lml0ZXJhdG9yKTsKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBhc3N1bWVzIGFuIGlucHV0IHN0cmluZyB0
aGF0IHdvdWxkIHJlc3VsdCBpbiBhIHNpbmdsZSBhbm9ueW1vdXMgZnVuY3Rpb24gZXhwcmVzc2lv
bi4KICAgICBTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVtZW50ID0gcHJvZ3JhbS0+c2luZ2xlU3Rh
dGVtZW50KCk7Ci0gICAgQVNTRVJUKGV4cHJTdGF0ZW1lbnQpOwotICAgIEFTU0VSVChleHByU3Rh
dGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRl
bWVudCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudC0+aXNFeHByU3RhdGVtZW50
KCkpOwogICAgIEV4cHJlc3Npb25Ob2RlKiBmdW5jRXhwciA9IHN0YXRpY19jYXN0PEV4cHJTdGF0
ZW1lbnROb2RlKj4oZXhwclN0YXRlbWVudCktPmV4cHIoKTsKLSAgICBBU1NFUlQoZnVuY0V4cHIp
OworICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmNFeHByKTsKICAgICBSRUxFQVNFX0FTU0VSVChmdW5j
RXhwci0+aXNGdW5jRXhwck5vZGUoKSk7CiAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSA9IHN0
YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGZ1bmNFeHByKS0+Ym9keSgpOworICAgIFJFTEVBU0Vf
QVNTRVJUKCFwcm9ncmFtLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKKyAgICAKICAgICBib2R5
LT5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKLSAgICBBU1NFUlQo
Ym9keSk7Ci0gICAgQVNTRVJUKGJvZHktPmlkZW50KCkuaXNOdWxsKCkpOworICAgIFJFTEVBU0Vf
QVNTRVJUKGJvZHkpOworICAgIFJFTEVBU0VfQVNTRVJUKGJvZHktPmlkZW50KCkuaXNOdWxsKCkp
OwogCi0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIGJvZHksIHRy
dWUpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUg
PSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBib2R5LCB0
cnVlLCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uKTsKICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPm1f
bmFtZVZhbHVlLnNldCh2bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBqc1N0cmluZygmdm0sIG5hbWUu
c3RyaW5nKCkpKTsKIAogICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBTb3VyY2VDb2Rl
VmFsdWUodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwgbV9zb3VyY2VDb2RlLmFnZSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcApp
bmRleCAzZjVjNjQ1YzA5OGQ1MjdmYzBjNzI1OWU5NDQ3ZWZiZTg4NjhhMjljLi4yZmMyYjcyN2Fm
Y2VlZTFlYzJjNjI1ZGU1Njc1YjNiZTFjZjYwZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCkBAIC0yNyw3ICsyNywxMCBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogI2RlZmluZSBJTklUSUFMSVpFX1BST1BFUlRZX05BTUUobmFt
ZSkgLCBuYW1lKHZtLCAjbmFtZSkKICNkZWZpbmUgSU5JVElBTElaRV9LRVlXT1JEKG5hbWUpICwg
bmFtZSMjS2V5d29yZCh2bSwgI25hbWUpCi0jZGVmaW5lIElOSVRJQUxJWkVfUFJJVkFURV9OQU1F
KG5hbWUpICwgbmFtZSMjUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbShQcml2YXRlTmFtZSgp
KSkKKyNkZWZpbmUgSU5JVElBTElaRV9QUklWQVRFX05BTUUobmFtZSkgXAorICAgICwgbmFtZSMj
UHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbShQcml2YXRlTmFtZSgpKSkgXAorICAgICwgbV8j
I25hbWUjI1B1YmxpY1N0cmluZ1BhaXIobmFtZSwgbmFtZSMjUHJpdmF0ZU5hbWUpIFwKKwogCiBD
b21tb25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMoVk0qIHZtKQogICAgIDogbnVsbElk
ZW50aWZpZXIoKQpAQCAtMzgsOCArNDEsMjYgQEAgQ29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklk
ZW50aWZpZXJzKFZNKiB2bSkKICAgICAsIGhhc05leHRJZGVudGlmaWVyKHZtLCAiaGFzTmV4dCIp
CiAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQoSU5JVElBTElaRV9LRVlX
T1JEKQogICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJ
QUxJWkVfUFJPUEVSVFlfTkFNRSkKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05B
TUUoSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVO
VElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElaRV9QUklWQVRFX05BTUUpCiB7CiB9
CiAKK2NvbnN0IElkZW50aWZpZXIqIENvbW1vbklkZW50aWZpZXJzOjpnZXRQcml2YXRlTmFtZShj
b25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK3sKKyNkZWZpbmUgUkVUVVJOX0lGX1BSSVZB
VEVfTkFNRV9NQVRDSEVTKG5hbWUpIGlmIChtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpci5maXJz
dCA9PSBpZGVudCkgcmV0dXJuICZtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpci5zZWNvbmQ7Cisg
ICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShSRVRV
Uk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMpCisjdW5kZWYgUkVUVVJOX0lGX1BSSVZBVEVfTkFN
RV9NQVRDSEVTCisgICAgcmV0dXJuIDA7Cit9CisKK0lkZW50aWZpZXIgQ29tbW9uSWRlbnRpZmll
cnM6OmdldFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0Cit7CisjZGVm
aW5lIFJFVFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hFUyhuYW1lKSBpZiAobV8jI25hbWUjI1B1
YmxpY1N0cmluZ1BhaXIuc2Vjb25kID09IGlkZW50KSByZXR1cm4gbV8jI25hbWUjI1B1YmxpY1N0
cmluZ1BhaXIuZmlyc3Q7CisgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hf
UFJPUEVSVFlfTkFNRShSRVRVUk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMpCisjdW5kZWYgUkVU
VVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gZW1wdHlJZGVudGlmaWVyOworfQorCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oCmluZGV4IGU4ZjllZDgyYmM3OTQ2MjAzODI2NmIzMDIwNzgyMjQ3YjFmYTI3YTMuLjkyNGQz
NmFjNjkxMzUwMzU3Y2IzODJiMWVmM2I0MGEwYTA4YzBhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMjIsNiArMjIsNyBA
QAogI2RlZmluZSBDb21tb25JZGVudGlmaWVyc19oCiAKICNpbmNsdWRlICJJZGVudGlmaWVyLmgi
CisjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
IAogLy8gTWFya2VkQXJndW1lbnRCdWZmZXIgb2YgcHJvcGVydHkgbmFtZXMsIHBhc3NlZCB0byBh
IG1hY3JvIHNvIHdlIGNhbiBkbyBzZXQgdGhlbSB1cCB2YXJpb3VzCkBAIC0xMzMsOCArMTM0LDEw
IEBACiAgICAgbWFjcm8ob3NyRXhpdHMpIFwKICAgICBtYWNybyhwYXJzZSkgXAogICAgIG1hY3Jv
KHByb2ZpbGVkQnl0ZWNvZGVzKSBcCisgICAgbWFjcm8ocHJvbWlzZSkgXAogICAgIG1hY3JvKHBy
b3BlcnR5SXNFbnVtZXJhYmxlKSBcCiAgICAgbWFjcm8ocHJvdG90eXBlKSBcCisgICAgbWFjcm8o
cmVzb2x2ZSkgXAogICAgIG1hY3JvKHNldCkgXAogICAgIG1hY3JvKHNpemUpIFwKICAgICBtYWNy
byhzbGljZSkgXApAQCAtMTU1LDcgKzE1OCwxNCBAQAogICAgIG1hY3JvKHZhbHVlcykgXAogICAg
IG1hY3JvKHZhbHVlT2YpIFwKICAgICBtYWNybyh3aW5kb3cpIFwKLSAgICBtYWNybyh3cml0YWJs
ZSkKKyAgICBtYWNybyh3cml0YWJsZSkgXAorICAgIG1hY3JvKGl0ZXJhdG9yKSBcCisgICAgbWFj
cm8oaXRlcmF0b3JOZXh0KSBcCisgICAgbWFjcm8ocmVqZWN0KSBcCisgICAgbWFjcm8oZnVsZmls
bG1lbnRIYW5kbGVyKSBcCisgICAgbWFjcm8ocmVqZWN0aW9uSGFuZGxlcikgXAorICAgIG1hY3Jv
KGRlZmVycmVkKSBcCisgICAgbWFjcm8oY291bnRkb3duSG9sZGVyKSBcCiAKICNkZWZpbmUgSlND
X0NPTU1PTl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQobWFjcm8pIFwKICAgICBtYWNybyhicmVh
aykgXApAQCAtMjAzLDcgKzIxMyw3IEBACiAgICAgbWFjcm8odm9pZCkgXAogICAgIG1hY3JvKHdo
aWxlKSBcCiAgICAgbWFjcm8od2l0aCkgXAotICAgIG1hY3JvKHlpZWxkKQorICAgIG1hY3JvKHlp
ZWxkKSBcCiAKICNkZWZpbmUgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJP
UEVSVFlfTkFNRShtYWNybykgXAogICAgIG1hY3JvKGl0ZXJhdG9yKSBcCkBAIC0yMTYsNyArMjI2
LDEyIEBACiAgICAgbWFjcm8oaW5kZXgpIFwKICAgICBtYWNybyh2YWx1ZXMpIFwKICAgICBtYWNy
byhkZWZlcnJlZCkgXAotICAgIG1hY3JvKGNvdW50ZG93bkhvbGRlcikKKyAgICBtYWNybyhjb3Vu
dGRvd25Ib2xkZXIpIFwKKyAgICBtYWNybyhPYmplY3QpIFwKKyAgICBtYWNybyhUeXBlRXJyb3Ip
IFwKKyAgICBtYWNybyh1bmRlZmluZWRLZXl3b3JkKSBcCisgICAgbWFjcm8oY2FsbCkgXAorICAg
IG1hY3JvKGFwcGx5KQogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMjQwLDExICsyNTUsMTUgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJF
X1BST1BFUlRZX05BTUVfR0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZTsKICAgICAg
ICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSlNDX0lERU5USUZJ
RVJfREVDTEFSRV9QUk9QRVJUWV9OQU1FX0dMT0JBTCkKKyAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJ
TFRJTl9GVU5DVElPTl9OQU1FKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9H
TE9CQUwpCiAjdW5kZWYgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJUWV9OQU1FX0dMT0JB
TAogCi0jZGVmaW5lIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1F
X0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWUjI1ByaXZhdGVOYW1lOworI2RlZmlu
ZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwobmFt
ZSkgY29uc3QgSWRlbnRpZmllciBuYW1lIyNQcml2YXRlTmFtZTsgY29uc3Qgc3RkOjpwYWlyPElk
ZW50aWZpZXIsIElkZW50aWZpZXI+IG1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQYWlyOwogICAgICAg
ICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKEpTQ19J
REVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTCkKICN1bmRlZiBK
U0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwKKyAgICAg
ICAgCisgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50
aWZpZXImKSBjb25zdDsKKyAgICAgICAgSWRlbnRpZmllciBnZXRQdWJsaWNOYW1lKGNvbnN0IElk
ZW50aWZpZXImKSBjb25zdDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDA3
NTg3NWZiMjMxNmE1NTU3MDUwYTY2OTBjZDBmOTg4MjQ4NGY1ZjMuLjVhZjkwODc1NGU3NDdmOGNh
ZTBjZDA0YWY4ZDQ5MTUwMDQ2OGMyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUg
IkpJVC5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgi
Ci0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU05hbWVT
Y29wZS5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0
aW9ucy5jcHAKaW5kZXggNTUzMzRiZTJmOTgwYTk4ZjdmZWE0MmEwNWJlMGYyMGMwMTlmZjBkZC4u
MTZlYmFkMTBlNGU0MmI2Yjc4NWU5NzhkMzhlODcwZTNiNWE2YzQ5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0
aW9ucy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNs
dWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAi
SlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJMTEludENvbW1vbi5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIENvbW1vblNsb3dQYXRocyB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IDA1ZTExZTBiODBh
MzQzMGFlYWIyMmIwMjIyYTIxMmY0YThlMmM0OWIuLjM2NGNjNzE2NjYwOGI1MDA3ZDQ3N2Q4NzM5
MThhNWQ2NGIxNjg2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC04MSw2ICs4MSwxMSBAQCBKU09iamVjdCogY3JlYXRl
U3RhY2tPdmVyZmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKIEpTT2Jq
ZWN0KiBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQpCiB7CisgICAgCisgICAgaWYgKGlkZW50LmltcGwoKS0+aXNFbXB0
eVVuaXF1ZSgpKSB7CisgICAgICAgIFN0cmluZyBtZXNzYWdlKG1ha2VTdHJpbmcoIkNhbid0IGZp
bmQgcHJpdmF0ZSB2YXJpYWJsZTogQCIsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZXRQdWJsaWNO
YW1lKGlkZW50KS5zdHJpbmcoKSkpOworICAgICAgICByZXR1cm4gY3JlYXRlUmVmZXJlbmNlRXJy
b3IoZXhlYywgbWVzc2FnZSk7CisgICAgfQogICAgIFN0cmluZyBtZXNzYWdlKG1ha2VTdHJpbmco
IkNhbid0IGZpbmQgdmFyaWFibGU6ICIsIGlkZW50LnN0cmluZygpKSk7CiAgICAgcmV0dXJuIGNy
ZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIG1lc3NhZ2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IDE5ODk3NmJiM2ZlNmU2ZTkxMTc5ODEyZDFj
YWY5YjhiZjliZmQwYmIuLmNmMGU3NTNhN2M1ZjU0NDY3YjY0ZDhlMmE5YjNmYmEyNzE1MDAwMTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTQ4NCw3
ICs0ODQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyQ29kZSgpOwogCi0gICAgRXhlY3V0
YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhu
ZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlKTsgfQor
ICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0
YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBm
YWxzZSwgZmFsc2UpOyB9CiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJldHVybiBt
X3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNpZ25lZCBu
dW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+
bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KQEAgLTU0MCw3ICs1NDAsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGNsZWFyQ29kZSgpOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUlu
Zm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNl
c0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4
ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0
aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UpOyB9CiAKIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CkBAIC02MjgsNyArNjI4
LDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2NrRm9y
KGtpbmQpOwogICAgIH0KLSAgICAgICAgCisKKyAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCk7
IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1
dGFibGUtPm5hbWUoKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIGluZmVycmVkTmFtZSgpIHsg
cmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pbmZlcnJlZE5hbWUoKTsgfQogICAgIEpTU3Ry
aW5nKiBuYW1lVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFt
ZVZhbHVlKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUHJvdG90eXBlLmNwcAppbmRleCBjMWIwOGFmMmQ4MThkYWU1N2UxYjAwZmRhMTczYTgxNjEz
NzUyOWI1Li4xMjQ5MGM0MGYzMzQxN2VjYTkyMzg1MGEwZGM2NjJkYmJjZDQwZjMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
CkBAIC0yMiwxMiArMjIsMTMgQEAKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgogCiAj
aW5jbHVkZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRl
ICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdCdWls
ZGVyLmgiCi0jaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGlu
ZXMuaCIKICNpbmNsdWRlICJMZXhlci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIApAQCAt
MTA4LDcgKzEwOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90
b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT5ob3N0VGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0cyhKU0Z1bmN0
aW9uOjppbmZvKCkpKSB7CiAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpT
RnVuY3Rpb24qPih0aGlzVmFsdWUpOwotICAgICAgICBpZiAoZnVuY3Rpb24tPmlzSG9zdEZ1bmN0
aW9uKCkpCisgICAgICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkK
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmlu
ZyhleGVjLCAiZnVuY3Rpb24gIiwgZnVuY3Rpb24tPm5hbWUoZXhlYyksICIoKSB7XG4gICAgW25h
dGl2ZSBjb2RlXVxufSIpKTsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxl
ID0gZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpOwogICAgICAgICBTdHJpbmcgc291cmNlU3RyaW5n
ID0gZXhlY3V0YWJsZS0+c291cmNlKCkudG9TdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCmluZGV4IDcyZWQxYzcxMjQwNjExNjhiMGFk
ZGQzMTE2Zjc1NWExMTdiOGZiOTAuLmIzNzQ5NDMwOTllMjE1NWEzOTc3MTMzMTM0NzAyYzJhMjRh
Y2M4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZh
dGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9u
LmNwcApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIEpTQWN0aXZhdGlvbjo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogCiBpbmxpbmUgYm9vbCBKU0FjdGl2
YXRpb246OnN5bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUo
KS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxl
RW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnVpZCgp
KTsKICAgICBpZiAoZW50cnkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAt
NzIsNyArNzIsNyBAQCBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlR2V0KFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdAogCiBpbmxpbmUgYm9vbCBKU0Fj
dGl2YXRpb246OnN5bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5
ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwor
ICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJv
cGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoZW50cnkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApAQCAtODksNyArODksNyBAQCBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5
bWJvbFRhYmxlUHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TgogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBI
ZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMpKTsKICAgICAKLSAgICBTeW1ib2xU
YWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS5w
dWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgp
LT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoZW50cnkuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoZW50cnkuaXNSZWFkT25seSgpKSB7CkBA
IC0xMzYsNyArMTM2LDcgQEAgaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1
dFdpdGhBdHRyaWJ1dGVzKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3AKICAgICBXcml0ZUJhcnJp
ZXJCYXNlPFVua25vd24+KiByZWc7CiAgICAgewogICAgICAgICBDb25jdXJyZW50SklUTG9ja2Vy
IGxvY2tlcihzeW1ib2xUYWJsZSgpLT5tX2xvY2spOwotICAgICAgICBTeW1ib2xUYWJsZTo6TWFw
OjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUoKS0+ZmluZChsb2NrZXIsIHByb3BlcnR5TmFt
ZS5wdWJsaWNOYW1lKCkpOworICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVy
ID0gc3ltYm9sVGFibGUoKS0+ZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAg
ICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlKCktPmVuZChsb2NrZXIpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5JiBlbnRyeSA9IGl0ZXItPnZh
bHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVu
dHNJdGVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50
c0l0ZXJhdG9yLmNwcAppbmRleCAyZmNmODgxNWMwNTY4MDU4MTJhNzk5MWE1ZmYwNjNkNjg3Mzk3
MTY0Li45YTkyNTgzYWEwZWM5MGRiYjMyOGVjZDUwZGMzMTM5YWVmMDI3M2I1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNw
cApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkpTQXJndW1lbnRzSXRlcmF0b3IuaCIKIAog
I2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXku
Y3BwCmluZGV4IDkwMDdiNWY3ZDNmMTAzYjFkMjFiMWEzNjVhMjZjMjE1YzMyYjRkMjguLmJhMGEy
ZDM4ZTljNTNlMTU5MzdkNDZhODk1MWE4YzhjNDUwNzkyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRXhl
Y3V0YWJsZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkluZGV4aW5n
SGVhZGVySW5saW5lcy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUg
IlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSAiUmVqZWN0LmgiCiAjaW5jbHVkZSA8d3Rm
L0FWTFRyZWUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlJdGVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
SXRlcmF0b3IuY3BwCmluZGV4IGQ1MDZjNGViZDI2MjBlZmQ3MDc5M2E4NzNkMDg1MmZiZDk3ODI4
NTkuLmNmMzcwOTdlYzBjNjkyNWE4NjdiOGMwMTBjMGVmYzQwNzQ0ODVmMWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcApAQCAtMjgs
NiArMjgsNyBAQAogCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJK
U0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
U2xvdFZpc2l0b3JJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAppbmRleCBjY2E2ODg4YmY5OGEwMjg2NDZj
YTNkZGRmMzc2MjdjZTBlN2Q5MzAyLi4zMzlhN2FiN2Y1OTUxNWU5NmFmYjdlYzRiODc0MWU3YWE4
ZTE2NmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNw
cApAQCAtMzIsNyArMzIsOSBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTm90QW5PYmplY3QuaCIKKyNpbmNsdWRlICJK
U1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJOdW1iZXJPYmplY3QuaCIKKyNpbmNsdWRlICJP
cGVyYXRpb25zLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYv
U3RyaW5nRXh0cmFzLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bElubGluZXMuaAppbmRleCBmN2M4NDQ2NDUwOTJiMjUwODA1ZTZlOGQ0ODMyYzk5OGJkYjg5YjU0
Li5kNzk1ZGQ1NmE5N2RkYjU5N2MwOTBmYzJlMGI3ZjMwOGUzM2ViY2E1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCkBAIC0yNyw4ICsyNywxMCBA
QAogI2RlZmluZSBKU0NlbGxJbmxpbmVzX2gKIAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2lu
Y2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRGVmZXJHQy5oIgogI2luY2x1
ZGUgIkhhbmRsZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCAyNDE5
NjQ2MTBiYjQ0MjdiMTg2MzczMzQ2ZTI0ZjVhODJkMGNkY2M0Li43YmVmNTkxYjE0ZjM1ZjFhOTM0
OGFkZTlhOWUwZjU5MGViNmFkZjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcApAQCAtMTA5LDYgKzEwOSwxNCBAQCB2b2lkIEpTRnVuY3Rpb246OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgaW50IGxl
bmd0aAogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJl
cihsZW5ndGgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKK0pTRnVu
Y3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sK
KyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgZ2xvYmFs
T2JqZWN0KTsKKyAgICBmdW5jdGlvbi0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5u
YW1lLCBqc1N0cmluZygmdm0sIGV4ZWN1dGFibGUtPm5hbWUoKS5zdHJpbmcoKSksIERvbnREZWxl
dGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBmdW5jdGlvbi0+cHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKGV4ZWN1dGFibGUtPnBhcmFtZXRlckNv
dW50KCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcmV0dXJuIGZ1
bmN0aW9uOworfQorCiBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSogSlNGdW5jdGlvbjo6Y3JlYXRl
QWxsb2NhdGlvblByb2ZpbGUoRXhlY1N0YXRlKiBleGVjLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkp
CiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTE0Miw3ICsxNTAsNyBAQCBjb25zdCBT
dHJpbmcgSlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICAgICAgcmV0dXJuIGV4cGxpY2l0TmFtZTsKICAgICAKICAgICBjb25zdCBTdHJpbmcgYWN0
dWFsTmFtZSA9IG5hbWUoZXhlYyk7Ci0gICAgaWYgKCFhY3R1YWxOYW1lLmlzRW1wdHkoKSB8fCBp
c0hvc3RGdW5jdGlvbigpKQorICAgIGlmICghYWN0dWFsTmFtZS5pc0VtcHR5KCkgfHwgaXNIb3N0
T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIGFjdHVhbE5hbWU7CiAgICAgCiAg
ICAgcmV0dXJuIGpzRXhlY3V0YWJsZSgpLT5pbmZlcnJlZE5hbWUoKS5zdHJpbmcoKTsKQEAgLTE1
MCwxMCArMTU4LDIwIEBAIGNvbnN0IFN0cmluZyBKU0Z1bmN0aW9uOjpjYWxjdWxhdGVkRGlzcGxh
eU5hbWUoRXhlY1N0YXRlKiBleGVjKQogCiBjb25zdCBTb3VyY2VDb2RlKiBKU0Z1bmN0aW9uOjpz
b3VyY2VDb2RlKCkgY29uc3QKIHsKLSAgICBpZiAoaXNIb3N0RnVuY3Rpb24oKSkKKyAgICBpZiAo
aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJu
ICZqc0V4ZWN1dGFibGUoKS0+c291cmNlKCk7CiB9CisgICAgCitib29sIEpTRnVuY3Rpb246Omlz
SG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNIb3N0RnVuY3Rp
b24oKSB8fCBpc0J1aWx0aW5GdW5jdGlvbigpOworfQorCitib29sIEpTRnVuY3Rpb246OmlzQnVp
bHRpbkZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWlzSG9zdEZ1bmN0aW9uKCkgJiYg
anNFeGVjdXRhYmxlKCktPmlzQnVpbHRpbkZ1bmN0aW9uKCk7Cit9CiAKIHZvaWQgSlNGdW5jdGlv
bjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewpA
QCAtMjc3LDcgKzI5NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTRnVuY3Rpb246OmNhbGxlckdldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHNsb3RCYXNlCiAgICAgaWYgKCFjYWxs
ZXIuaXNPYmplY3QoKSB8fCAhYXNPYmplY3QoY2FsbGVyKS0+aW5oZXJpdHMoSlNGdW5jdGlvbjo6
aW5mbygpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsZXIpOwogICAgIEpT
RnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihjYWxsZXIpOwotICAgIGlm
IChmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSB8fCAhZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgp
LT5pc1N0cmljdE1vZGUoKSkKKyAgICBpZiAoZnVuY3Rpb24tPmlzSG9zdE9yQnVpbHRpbkZ1bmN0
aW9uKCkgfHwgIWZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbGVyKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRnVuY3Rpb24uY2FsbGVy
IHVzZWQgdG8gcmV0cmlldmUgc3RyaWN0IGNhbGxlciIpKSk7CiB9CkBAIC0yOTksNyArMzE3LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNGdW5jdGlvbjo6bmFtZUdldHRlcihFeGVjU3RhdGUqLCBFbmNv
ZGVkSlNWYWx1ZSBzbG90QmFzZSwgRW5jb2QKIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVy
dHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdCk7Ci0gICAgaWYgKHRoaXNPYmplY3Qt
PmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1
bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIAogICAgIGlmIChwcm9wZXJ0eU5hbWUg
PT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSkgewpAQCAtMzYxLDcgKzM3OSw3IEBA
IGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiB2b2lkIEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICBK
U0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAg
IGlmICghdGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSAmJiAobW9kZSA9PSBJbmNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzKSkgeworICAgIGlmICghdGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGlu
RnVuY3Rpb24oKSAmJiAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgewogICAg
ICAgICAvLyBNYWtlIHN1cmUgcHJvdG90eXBlIGhhcyBiZWVuIHJlaWZpZWQuCiAgICAgICAgIFBy
b3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QpOwogICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RU
YWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLnByb3RvdHlwZSwgc2xvdCk7CkBAIC0zNzcsNyArMzk1LDcgQEAgdm9pZCBKU0Z1
bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLAogdm9pZCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTRnVuY3Rpb24qPihjZWxsKTsKLSAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24o
KSkgeworICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKSB7CiAg
ICAgICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQyNSw3ICs0NDMsNyBAQCBib29sIEpT
RnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcAogYm9vbCBKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlv
bikKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihv
YmplY3QpOwotICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RGdW5jdGlvbigpKQorICAgIGlmICh0
aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gQmFz
ZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IsIHRocm93RXhjZXB0aW9uKTsKIAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJv
cGVydHlOYW1lcygpLnByb3RvdHlwZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5oCmluZGV4IDdjZDE0YjhjMmQ4MDBmNjFiZGMxMmVkZDJkZjA0ZDM1ZmEwNjE5
YjYuLjk5NWM5ZDExYmQ4OTgzODZmN2EyMGM0MTYzNGZhN2NjOWI3Njk4ZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTY4LDYgKzY4LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb247CiAgICAgICAgIH0KICAg
ICAgICAgCisgICAgICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGVCdWlsdGluRnVuY3Rpb24o
Vk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0dsb2JhbE9iamVjdCopOworICAgICAgICAKICAg
ICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAgICAgCiAgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIFN0cmluZyBuYW1lKEV4ZWNTdGF0ZSopOwpAQCAtMTQ1LDYgKzE0Nyw5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1fYWxsb2NhdGlvblByb2Zp
bGVXYXRjaHBvaW50OwogICAgICAgICB9CiAKKyAgICAgICAgYm9vbCBpc0hvc3RPckJ1aWx0aW5G
dW5jdGlvbigpIGNvbnN0OworICAgICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3Q7
CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEltcGxlbWVudHNIYXNJbnN0
YW5jZSB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVz
IHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdDb25zdHJ1Y3RvcklubGluZXMuaAppbmRleCAyZGRjMjlmNzE4OTdiYjUxZDM5MGIwNmIyNWE3
MzgzMzg3NGJhMGMxLi5lZGQzNDQ5Y2U0N2IxNzM1ZThlNWRiYjA1ZjMxOGUzZDU1ZjNiZTYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKQEAgLTI2
LDYgKzI2LDcgQEAKICNpZm5kZWYgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvcklu
bGluZXNfaAogI2RlZmluZSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5l
c19oCiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkVycm9yLmgi
CiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3Q29uc3RydWN0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggNmRi
ODYyNzRjM2I4NzRhYWFkZTUxNTE4OTgyNjcyNmZiMTM2YzE3My4uZjI0ZWE3MzAzZGY5NjlkYmQy
ZGNhNTJjODZkMTFjNzhjMDBkYjllYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAg
LTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzX2gK
IAogI2luY2x1ZGUgIkFycmF5QnVmZmVyVmlldy5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZp
ZXJzLmgiCiAjaW5jbHVkZSAiRGVmZXJHQy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uSGVscGVycy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlw
ZUlubGluZXMuaAppbmRleCA0NTk5OTdhNDY0YjkxMTk0NzdiMWJlODRlMzZjNGUyOTY2YWNlZjg1
Li44ZTVmZjgyNzkxZTZmZjhkNGViOWMzNzM2OTFlNDMzZWI3ZDE2YWVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3Rv
dHlwZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaApAQCAtMjYsNiArMjYsNyBAQAogI2lm
bmRlZiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXNfaAogI2RlZmluZSBK
U0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXNfaAogCisjaW5jbHVkZSAiQ29t
bW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlv
bkhlbHBlcnMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMmMyNzRjMWE3ZDQ4MWMw
N2RmMGQyYmViM2IyOTMxYTM5MDdhNWU2Ni4uMDZlNTRjODRlNzdiOTAzMmJhYTFkMmRmNDdhMWM3
MmU4MGI3ZGVhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcApAQCAtMzQ2LDcgKzM0Niw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJl
c2V0KEpTVmFsdWUgcHJvdG90eXBlKQogCiAgICAgLy8gQ29uc3RydWN0b3JzCiAKLSAgICBKU0Nl
bGwqIG9iamVjdENvbnN0cnVjdG9yID0gT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgT2Jq
ZWN0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3Rv
dHlwZS5nZXQoKSksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKKyAgICBPYmplY3RDb25zdHJ1
Y3Rvciogb2JqZWN0Q29uc3RydWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBP
YmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJv
dG90eXBlLmdldCgpKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOworICAgIG1fb2JqZWN0Q29u
c3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBvYmplY3RDb25zdHJ1Y3Rvcik7CiAgICAgSlNDZWxsKiBm
dW5jdGlvbkNvbnN0cnVjdG9yID0gRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBGdW5j
dGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90
b3R5cGUuZ2V0KCkpLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKICAgICBKU0NlbGwqIGFy
cmF5Q29uc3RydWN0b3IgPSBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEFycmF5Q29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQo
KSksIG1fYXJyYXlQcm90b3R5cGUuZ2V0KCkpOwogCkBAIC00MzIsNyArNDMzLDEwIEBAIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQogICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyBzdGF0aWNHbG9iYWxzW10gPSB7CiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2
bS5wcm9wZXJ0eU5hbWVzLT5OYU4sIGpzTmFOKCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPklu
ZmluaXR5LCBqc051bWJlcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkp
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLCBqc1VuZGVmaW5lZCgp
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSkKKyAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQsIGpzVW5kZWZpbmVkKCks
IERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmRQcml2YXRlTmFtZSwganNV
bmRlZmluZWQoKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+T2JqZWN0UHJpdmF0ZU5hbWUsIG9i
amVjdENvbnN0cnVjdG9yLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5UeXBlRXJyb3JQcml2YXRl
TmFtZSwgbV90eXBlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0gfCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpCiAgICAgfTsKICAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2JhbHMs
IFdURl9BUlJBWV9MRU5HVEgoc3RhdGljR2xvYmFscykpOwogICAgIApAQCAtNjA4LDYgKzYxMiw3
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zeW50
YXhFcnJvckNvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV90
eXBlRXJyb3JDb25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
VVJJRXJyb3JDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
b2JqZWN0Q29uc3RydWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3By
b21pc2VDb25zdHJ1Y3Rvcik7CiAKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9l
dmFsRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKaW5kZXggYjBjYWQzZGM1NDcwZjdjN2EwZTU3MGJkY2QyZGZmYTg5NWUyYWEwYy4u
M2E2MTZjNmYwNWVkZjFkMjk1YWY4NDQxYWE2NjUwMGZiOTJhNGE0MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC02Nyw2ICs2Nyw3IEBA
IGNsYXNzIEpTU3RhY2s7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBNaWNy
b3Rhc2s7CiBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOworY2xhc3MgT2JqZWN0Q29uc3Ry
dWN0b3I7CiBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7
CiBjbGFzcyBSZWdFeHBDb25zdHJ1Y3RvcjsKQEAgLTE1OCw2ICsxNTksNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgV3JpdGVCYXJyaWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IG1fdHlwZUVycm9yQ29u
c3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IG1fVVJJ
RXJyb3JDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8SlNQcm9taXNlQ29uc3RydWN0b3I+
IG1fcHJvbWlzZUNvbnN0cnVjdG9yOworICAgIFdyaXRlQmFycmllcjxPYmplY3RDb25zdHJ1Y3Rv
cj4gbV9vYmplY3RDb25zdHJ1Y3RvcjsKIAogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBt
X2V2YWxGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9jYWxsRnVuY3Rp
b247CkBAIC0zMzAsNiArMzMyLDcgQEAgcHVibGljOgogICAgIFJlZ0V4cENvbnN0cnVjdG9yKiBy
ZWdFeHBDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwQ29uc3RydWN0b3IuZ2V0
KCk7IH0KIAogICAgIEVycm9yQ29uc3RydWN0b3IqIGVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7
IHJldHVybiBtX2Vycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KKyAgICBPYmplY3RDb25zdHJ1Y3Rv
ciogb2JqZWN0Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX29iamVjdENvbnN0cnVjdG9y
LmdldCgpOyB9CiAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogZXZhbEVycm9yQ29uc3RydWN0
b3IoKSBjb25zdCB7IHJldHVybiBtX2V2YWxFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CiAgICAg
TmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogcmFuZ2VFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9yYW5nZUVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KICAgICBOYXRpdmVFcnJvckNv
bnN0cnVjdG9yKiByZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9y
ZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CkBAIC01ODEsNyArNTg0LDcgQEAgaW5s
aW5lIGJvb2wgSlNHbG9iYWxPYmplY3Q6Omhhc093blByb3BlcnR5Rm9yV3JpdGUoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUKIAogaW5saW5lIGJvb2wgSlNHbG9iYWxPYmplY3Q6OnN5bWJv
bFRhYmxlSGFzUHJvcGVydHkoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICBTeW1i
b2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFt
ZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJs
ZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICByZXR1cm4gIWVudHJ5Lmlz
TnVsbCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAK
aW5kZXggMmI2N2ExZDllZWQ4NGU5OTU2ZjhiYjk2ODM4NGM4NGNhZWE1M2NmZi4uMmVhMmMyNGU2
ZWFiNGNkMGQ3ZmZlZDY2NWVmNGFlNDFhZjA3NTBmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgZ2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQ2xhc3NJbmZv
KiBjbGFzcwogICAgICAgICBpbnQgaGFzaFNpemVNYXNrID0gdGFibGUtPmNvbXBhY3RTaXplIC0g
MTsKICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IHRhYmxlLT50YWJsZTsKICAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gaGFzaFNpemVNYXNrOyArK2ksICsrZW50cnkpIHsKLSAg
ICAgICAgICAgIGlmIChlbnRyeS0+a2V5KCkgJiYgKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIERv
bnRFbnVtKSB8fCAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgJiYgISgoZW50
cnktPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKSAmJiBkaWRSZWlmeSkpCisgICAgICAgICAgICBp
ZiAoZW50cnktPmtleSgpICYmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwg
KG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpICYmICEoKGVudHJ5LT5hdHRyaWJ1
dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikgJiYgZGlkUmVpZnkpKQogICAgICAgICAgICAgICAg
IHByb3BlcnR5TmFtZXMuYWRkKGVudHJ5LT5rZXkoKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0x
NjE4LDcgKzE2MTgsNyBAQCB2b2lkIEpTT2JqZWN0OjpyZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRl
bGV0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgUHJv
cGVydHlTbG90IHNsb3QodGhpcyk7CiAgICAgICAgIGZvciAoSGFzaFRhYmxlOjpDb25zdEl0ZXJh
dG9yIGl0ZXIgPSBoYXNoVGFibGUtPmJlZ2luKHZtKTsgaXRlciAhPSBoYXNoVGFibGUtPmVuZCh2
bSk7ICsraXRlcikgewotICAgICAgICAgICAgaWYgKGl0ZXItPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0
aW9uKQorICAgICAgICAgICAgaWYgKGl0ZXItPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0
aW9uKQogICAgICAgICAgICAgICAgIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KGdsb2JhbE9iamVj
dCgpLT5nbG9iYWxFeGVjKCksICppdGVyLCB0aGlzLCBJZGVudGlmaWVyKCZ2bSwgaXRlci0+a2V5
KCkpLCBzbG90KTsKICAgICAgICAgfQogICAgIH0KQEAgLTIyMzYsNiArMjIzNiwxNiBAQCB2b2lk
IEpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGNvbgogICAgIHB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCBmdW5j
dGlvbiwgYXR0cmlidXRlcyk7CiB9CiAKK3ZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEJ1aWx0aW5G
dW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3Bl
cnR5TmFtZSYgcHJvcGVydHlOYW1lLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0
YWJsZSwgdW5zaWduZWQgYXR0cmlidXRlcykKK3sKKyAgICBTdHJpbmdJbXBsKiBuYW1lID0gcHJv
cGVydHlOYW1lLnB1YmxpY05hbWUoKTsKKyAgICBpZiAoIW5hbWUpCisgICAgICAgIG5hbWUgPSB2
bS5wcm9wZXJ0eU5hbWVzLT5hbm9ueW1vdXMuaW1wbCgpOworICAgIEFTU0VSVChuYW1lKTsKKyAg
ICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlv
bih2bSwgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxl
KSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBwdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgZnVuY3Rp
b24sIGF0dHJpYnV0ZXMpOworfQorCiB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGZ1bmN0aW9uTGVu
Z3RoLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNpYywg
dW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlO
YW1lLnB1YmxpY05hbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
CmluZGV4IDAyYjEzN2IzNTBjMmZhODMyNWJkM2I5NjQ3MTEyYWJlODc2ZjM4M2YuLmRkZTU5N2Vm
ZmFlYzBmMWI4ZDQ0YzI5MTE5NTAzMDFmMDYwMDdlOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkJ1dHRlcmZs
eS5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNsYXNzSW5mby5oIgotI2lu
Y2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiQ29weVdyaXRlQmFycmllci5o
IgogI2luY2x1ZGUgIkRlZmVyR0MuaCIKICNpbmNsdWRlICJIZWFwLmgiCkBAIC01ODEsNiArNTgw
LDcgQEAgcHVibGljOgogICAgIHZvaWQgcHV0RGlyZWN0VW5kZWZpbmVkKFByb3BlcnR5T2Zmc2V0
IG9mZnNldCkgeyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5zZXRVbmRlZmluZWQoKTsgfQog
CiAgICAgdm9pZCBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
Y29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0
aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIHZvaWQgcHV0RGlyZWN0
QnVpbHRpbkZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUm
LCBGdW5jdGlvbkV4ZWN1dGFibGUqLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICB2b2lkIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oVk0mLCBKU0dsb2JhbE9iamVj
dCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVG
dW5jdGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3Vs
ZFRocm93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
cGVydHlOYW1lSXRlcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKaW5kZXggNjhhOGJkODdkMzhhZGJiYjlkZDJhYzllYzRi
NDlkNWVmNDU0OWQ1Ni4uMjM3YzQyYmIwZGEwZjE2Njc2ZWIxMWFkZTgxODBhN2IwNmQ5OGViNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5jcHAKQEAgLTI5LDcgKzI5LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiT3Bl
cmF0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpT
QyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmgKaW5kZXggZjQzNjJmZjM1NGVlNmE1MDIyMWJiNzMxZDFhMjYxMWU2ZGQ2
MWJjMC4uZDA3MzcxOWRlMTYwZDJmMjkyMTEwYTU5NmExMDVlMmZhMjExNWZmYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0
b3IuaApAQCAtMzEsNyArMzEsNiBAQAogCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRl
ICJKU1N0cmluZy5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQcm9wZXJ0
eU5hbWVBcnJheS5oIgogI2luY2x1ZGUgPG1lbW9yeT4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmgKaW5kZXggMmIxY2RkZGM1ODQxZDYwZDE1N2EyZTYxZjcwMmIwZWU1
ZmExZDY3Ni4uZTM5MzQxNjBhZWE5MjZlZjE1OTMyZjg3OTBlMjRjNTJhZjAyZDM1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC0yNCw3ICsyNCw2IEBACiAj
ZGVmaW5lIEpTU3RyaW5nX2gKIAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgotI2luY2x1ZGUgIkNv
bW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlBy
b3BlcnR5RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgpAQCAtNDcyLDMz
ICs0NzEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJp
dmlhbFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4ganNO
b250cml2aWFsU3RyaW5nKCZleGVjLT52bSgpLCBzKTsgfQogICAgIGlubGluZSBKU1N0cmluZyog
anNPd25lZFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4g
anNPd25lZFN0cmluZygmZXhlYy0+dm0oKSwgcyk7IH0KIAotICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQotICAgIHsKLSAgICAgICAg
aWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7Ci0gICAg
ICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5LCBqc051bWJlcihtX2xlbmd0aCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgIH0KLQotICAgICAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKLSAg
ICAgICAgaWYgKGkgPCBtX2xlbmd0aCkgewotICAgICAgICAgICAgQVNTRVJUKGkgIT0gUHJvcGVy
dHlOYW1lOjpOb3RBbkluZGV4KTsgLy8gTm8gbmVlZCBmb3IgYW4gZXhwbGljaXQgY2hlY2ssIHRo
ZSBhYm92ZSB0ZXN0IHdvdWxkIGFsd2F5cyBmYWlsIQotICAgICAgICAgICAgc2xvdC5zZXRWYWx1
ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIGkpKTsKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLSAgICAgICAgICAgIAotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0
U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi0gICAgewotICAgICAgICBpZiAocHJvcGVydHlOYW1lIDwg
bV9sZW5ndGgpIHsKLSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8
IFJlYWRPbmx5LCBnZXRJbmRleChleGVjLCBwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQog
ICAgIGlubGluZSBib29sIGlzSlNTdHJpbmcoSlNWYWx1ZSB2KSB7IHJldHVybiB2LmlzQ2VsbCgp
ICYmIHYuYXNDZWxsKCktPmNsYXNzSW5mbygpID09IEpTU3RyaW5nOjppbmZvKCk7IH0KIAogICAg
IC8vIC0tLSBKU1ZhbHVlIGlubGluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAt
NTI4LDMyICs1MDAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIHRvV1RGU3Ry
aW5nU2xvd0Nhc2UoZXhlYyk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBTdHJpbmcgaW5s
aW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKGNvbnN0IEpTVmFsdWUmIHZhbHVlLCBFeGVjU3Rh
dGUqIGV4ZWMpCi0gICAgewotICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgICAgICBp
ZiAodmFsdWUuaXNJbnQzMigpKQotICAgICAgICAgICAgcmV0dXJuIHZtLm51bWVyaWNTdHJpbmdz
LmFkZCh2YWx1ZS5hc0ludDMyKCkpOwotICAgICAgICBpZiAodmFsdWUuaXNEb3VibGUoKSkKLSAg
ICAgICAgICAgIHJldHVybiB2bS5udW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNEb3VibGUoKSk7
Ci0gICAgICAgIGlmICh2YWx1ZS5pc1RydWUoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9w
ZXJ0eU5hbWVzLT50cnVlS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzRmFs
c2UoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5mYWxzZUtleXdvcmQu
c3RyaW5nKCk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgICAgIHJldHVy
biB2bS5wcm9wZXJ0eU5hbWVzLT5udWxsS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHZh
bHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+
dW5kZWZpbmVkS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIFN0cmluZyBK
U1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci0gICAgewot
ICAgICAgICBpZiAoaXNTdHJpbmcoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxK
U1N0cmluZyo+KGFzQ2VsbCgpKS0+dmFsdWUoZXhlYyk7Ci0KLSAgICAgICAgcmV0dXJuIGlubGlu
ZUpTVmFsdWVOb3RTdHJpbmd0b1N0cmluZygqdGhpcywgZXhlYyk7Ci0gICAgfQotCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTU3RyaW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzc4YzA1ZmM4MGQ4
OGU4NTM3YzlkMmE1ZWFiOWZmMGJhOWI2MGE3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCkBAIC0wLDAgKzEsOTAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEpTU3RyaW5nSW5saW5lc19oCisjZGVmaW5lIEpTU3RyaW5nSW5saW5lc19oCisKKyNpbmNs
dWRlICJDb21tb25JZGVudGlmaWVycy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
CisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0FMV0FZU19JTkxJ
TkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgeworICAgICAg
ICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBq
c051bWJlcihtX2xlbmd0aCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisg
ICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGkgPCBtX2xl
bmd0aCkgeworICAgICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOyAv
LyBObyBuZWVkIGZvciBhbiBleHBsaWNpdCBjaGVjaywgdGhlIGFib3ZlIHRlc3Qgd291bGQgYWx3
YXlzIGZhaWwhCisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRP
bmx5LCBnZXRJbmRleChleGVjLCBpKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0FMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6
Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgaWYgKHByb3BlcnR5TmFtZSA8IG1fbGVu
Z3RoKSB7CisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5
LCBnZXRJbmRleChleGVjLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKworQUxXQVlTX0lOTElORSBTdHJpbmcg
aW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKGNvbnN0IEpTVmFsdWUmIHZhbHVlLCBFeGVj
U3RhdGUqIGV4ZWMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBpZiAodmFsdWUu
aXNJbnQzMigpKQorICAgICAgICByZXR1cm4gdm0ubnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVlLmFz
SW50MzIoKSk7CisgICAgaWYgKHZhbHVlLmlzRG91YmxlKCkpCisgICAgICAgIHJldHVybiB2bS5u
dW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNEb3VibGUoKSk7CisgICAgaWYgKHZhbHVlLmlzVHJ1
ZSgpKQorICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+dHJ1ZUtleXdvcmQuc3RyaW5n
KCk7CisgICAgaWYgKHZhbHVlLmlzRmFsc2UoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5
TmFtZXMtPmZhbHNlS2V5d29yZC5zdHJpbmcoKTsKKyAgICBpZiAodmFsdWUuaXNOdWxsKCkpCisg
ICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5udWxsS2V5d29yZC5zdHJpbmcoKTsKKyAg
ICBpZiAodmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFt
ZXMtPnVuZGVmaW5lZEtleXdvcmQuc3RyaW5nKCk7CisgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKK30KKyAgICAKK0FMV0FZU19JTkxJTkUgU3RyaW5nIEpTVmFs
dWU6OnRvV1RGU3RyaW5nSW5saW5lKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBpZiAo
aXNTdHJpbmcoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTU3RyaW5nKj4oYXNDZWxs
KCkpLT52YWx1ZShleGVjKTsKKyAgICAKKyAgICByZXR1cm4gaW5saW5lSlNWYWx1ZU5vdFN0cmlu
Z3RvU3RyaW5nKCp0aGlzLCBleGVjKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKaW5kZXgg
MmFjMjUyNGM1ZGZkYTNkMTIyNDlkNzc5MGFkYzMxMjllM2MwZTg3MS4uZmJjOGI4OTVlYWU2YWY3
ODg4MzliZWI1ZTgzZDdiNmI5NzkyOGZhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKQEAgLTY0LDYgKzY0LDggQEAg
dm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXQKICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIodGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+bV9sb2NrKTsKICAgICAgICAgU3ltYm9sVGFi
bGU6Ok1hcDo6aXRlcmF0b3IgZW5kID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+ZW5kKGxv
Y2tlcik7CiAgICAgICAgIGZvciAoU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXQgPSB0aGlz
T2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5iZWdpbihsb2NrZXIpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
KyAgICAgICAgICAgIGlmIChpdC0+a2V5LT5pc0VtcHR5VW5pcXVlKCkpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoIShpdC0+dmFsdWUuZ2V0QXR0cmlidXRlcygp
ICYgRG9udEVudW0pIHx8IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKQogICAg
ICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgaXQtPmtleS5n
ZXQoKSkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKaW5kZXggYjViMjBhODQ1YjZhYjY0NDI0YjM3ZTMxYjI3
NzRlZjkwNTM1M2Y3Zi4uZDAzYjI0NTExYzJkZTE5NTlmYjVmNTZkNjQ5YzY0ZDBlZmUwNjg1NSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVP
YmplY3QuaApAQCAtNzIsNyArNzIsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKIHsK
ICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwog
ICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAg
U3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2Vy
LCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVy
YXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7
CiAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+dmFsdWU7
CkBAIC04Nyw3ICs4Nyw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogewogICAgIFN5
bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgQ29u
Y3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICBTeW1ib2xU
YWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3Bl
cnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0
ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBp
ZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1ZTsKQEAgLTEw
NCw3ICsxMDQsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKIHsKICAgICBTeW1ib2xU
YWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgIENvbmN1cnJl
bnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAgU3ltYm9sVGFibGU6
Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5h
bWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0g
c3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGl0
ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+dmFsdWU7CkBAIC0xMjYsNyAr
MTI2LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoCiAgICAgewogICAgICAgICBTeW1i
b2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBH
Q1NhZmVDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2ssIGV4ZWMt
PnZtKCkuaGVhcCk7Ci0gICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBz
eW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAg
ICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxv
Y2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFi
bGUuZW5kKGxvY2tlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJvb2wg
d2FzRmF0OwpAQCAtMTU5LDcgKzE1OSw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0V2l0
aEF0dHJpYnV0ZXMoCiAgICAgewogICAgICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAq
b2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tl
cihzeW1ib2xUYWJsZS5tX2xvY2spOwotICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRv
ciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1l
KCkpOworICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFi
bGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgICAgIGlmIChpdGVyID09
IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICBTeW1ib2xUYWJsZUVudHJ5JiBlbnRyeSA9IGl0ZXItPnZhbHVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKaW5kZXggYTgwNmRkMDUyYTBjYmVlNGNhYzJjYWE2
ZTA4YzY3MTYwMDVjMjcwYy4uYTk3NjUyMDFiOWY1MTg2NDE0MjNkZGUwZmUwZTJlNTFhOGNlNzNi
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCkBAIC02OCw3ICs2
OCw3IEBAIHZvaWQgSGFzaFRhYmxlOjpkZWxldGVUYWJsZSgpIGNvbnN0CiBib29sIHNldFVwU3Rh
dGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwg
SlNPYmplY3QqIHRoaXNPYmosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKICAgICBBU1NFUlQodGhpc09iai0+Z2xvYmFsT2JqZWN0KCkpOwotICAgIEFT
U0VSVChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pOworICAgIEFTU0VSVChlbnRyeS0+
YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQg
PSB0aGlzT2JqLT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7
CkBAIC03OSw5ICs3OSwxMyBAQCBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqCiAgICAgICAgIGlmICh0
aGlzT2JqLT5zdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgCi0gICAgICAgIHRoaXNPYmotPnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKAotICAg
ICAgICAgICAgdm0sIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5
LT5mdW5jdGlvbkxlbmd0aCgpLAotICAgICAgICAgICAgZW50cnktPmZ1bmN0aW9uKCksIGVudHJ5
LT5pbnRyaW5zaWMoKSwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAgICAgIGlmIChlbnRyeS0+
YXR0cmlidXRlcygpICYgQnVpbHRpbikKKyAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdEJ1
aWx0aW5GdW5jdGlvbih2bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwg
ZW50cnktPmJ1aWx0aW5HZW5lcmF0b3IoKSh2bSksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
KAorICAgICAgICAgICAgICAgIHZtLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlO
YW1lLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSwKKyAgICAgICAgICAgICAgICBlbnRyeS0+ZnVu
Y3Rpb24oKSwgZW50cnktPmludHJpbnNpYygpLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAgICAg
ICAgfQogICAgICAgICBvZmZzZXQgPSB0aGlzT2JqLT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3Bl
cnR5TmFtZSwgYXR0cmlidXRlcyk7CiAgICAgICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG9mZnNl
dCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xv
b2t1cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKaW5kZXggYmRl
ODNkNGE2ZmMzNTU3Nzg1MGUzMWU4OGJjMzlmZDA1ZjdiY2U1Mi4uZGJhMzg5ZTllMjQzZGQwZWNi
MmJhOThmMzk0ZDQwNzlmOWRlYTkzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTG9va3VwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9v
a3VwLmgKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgLy8gaWUuIHR5cGVk
ZWYgSlNWYWx1ZSAoKkdldEZ1bmN0aW9uKShFeGVjU3RhdGUqLCBKU09iamVjdCogYmFzZU9iamVj
dCkKICAgICB0eXBlZGVmIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIEdldEZ1bmN0aW9uOwog
ICAgIHR5cGVkZWYgUHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmMgUHV0RnVuY3Rpb247Cisg
ICAgdHlwZWRlZiBGdW5jdGlvbkV4ZWN1dGFibGUqICgqQnVpbHRpbkdlbmVyYXRvcikoVk0mKTsK
IAogICAgIGNsYXNzIEhhc2hFbnRyeSB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwpAQCAtNjgsMTEgKzY5LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJu
IG1faW50cmluc2ljOwogICAgICAgICB9CiAKKyAgICAgICAgQnVpbHRpbkdlbmVyYXRvciBidWls
dGluR2VuZXJhdG9yKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgQnVpbHRpbik7IHJl
dHVybiBtX3UuYnVpbHRpbkdlbmVyYXRvci5nZW5lcmF0b3JWYWx1ZTsgfQogICAgICAgICBOYXRp
dmVGdW5jdGlvbiBmdW5jdGlvbigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0
aW9uKTsgcmV0dXJuIG1fdS5mdW5jdGlvbi5mdW5jdGlvblZhbHVlOyB9CiAgICAgICAgIHVuc2ln
bmVkIGNoYXIgZnVuY3Rpb25MZW5ndGgoKSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBG
dW5jdGlvbik7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihtX3UuZnVuY3Rpb24u
bGVuZ3RoKTsgfQogCi0gICAgICAgIEdldEZ1bmN0aW9uIHByb3BlcnR5R2V0dGVyKCkgY29uc3Qg
eyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5
LmdldDsgfQotICAgICAgICBQdXRGdW5jdGlvbiBwcm9wZXJ0eVB1dHRlcigpIGNvbnN0IHsgQVNT
RVJUKCEobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0eS5wdXQ7
IH0KKyAgICAgICAgR2V0RnVuY3Rpb24gcHJvcGVydHlHZXR0ZXIoKSBjb25zdCB7IEFTU0VSVCgh
KG1fYXR0cmlidXRlcyAmIEJ1aWx0aW5PckZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVydHku
Z2V0OyB9CisgICAgICAgIFB1dEZ1bmN0aW9uIHByb3BlcnR5UHV0dGVyKCkgY29uc3QgeyBBU1NF
UlQoIShtX2F0dHJpYnV0ZXMgJiBCdWlsdGluT3JGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3Bl
cnR5LnB1dDsgfQogCiAgICAgICAgIGludHB0cl90IGxleGVyVmFsdWUoKSBjb25zdCB7IEFTU0VS
VCghbV9hdHRyaWJ1dGVzKTsgcmV0dXJuIG1fdS5sZXhlci52YWx1ZTsgfQogCkBAIC05NCw2ICs5
NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBpbnRwdHJfdCBsZW5ndGg7
IC8vIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGZ1bmN0aW9uCiAgICAgICAgICAgICB9IGZ1bmN0
aW9uOwogICAgICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICBCdWlsdGluR2VuZXJh
dG9yIGdlbmVyYXRvclZhbHVlOworICAgICAgICAgICAgICAgIGludHB0cl90IHVudXNlZDsKKyAg
ICAgICAgICAgIH0gYnVpbHRpbkdlbmVyYXRvcjsKKyAgICAgICAgICAgIHN0cnVjdCB7CiAgICAg
ICAgICAgICAgICAgR2V0RnVuY3Rpb24gZ2V0OwogICAgICAgICAgICAgICAgIFB1dEZ1bmN0aW9u
IHB1dDsKICAgICAgICAgICAgIH0gcHJvcGVydHk7CkBAIC0yMDksNyArMjE1LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBIYXNo
RW50cnkqIGVudHJ5KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgICAgIHsK
LSAgICAgICAgICAgIFN0cmluZ0ltcGwqIGltcGwgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgp
OworICAgICAgICAgICAgU3RyaW5nSW1wbCogaW1wbCA9IHByb3BlcnR5TmFtZS51aWQoKTsKICAg
ICAgICAgICAgIGlmICghaW1wbCkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAg
CkBAIC0yNDksNyArMjU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGlmICghZW50cnkp
IC8vIG5vdCBmb3VuZCwgZm9yd2FyZCB0byBwYXJlbnQKICAgICAgICAgICAgIHJldHVybiBQYXJl
bnRJbXA6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogCi0gICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pCisgICAg
ICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pCiAgICAgICAg
ICAgICByZXR1cm4gc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoZXhlYywgZW50cnksIHRoaXNPYmos
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20o
dGhpc09iaiwgZW50cnktPmF0dHJpYnV0ZXMoKSwgZW50cnktPnByb3BlcnR5R2V0dGVyKCkpOwpA
QCAtMjg2LDcgKzI5Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpZiAoIWVudHJ5KSAv
LyBub3QgZm91bmQsIGZvcndhcmQgdG8gcGFyZW50CiAgICAgICAgICAgICByZXR1cm4gUGFyZW50
SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iaiwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90
KTsKIAotICAgICAgICBBU1NFUlQoIShlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pKTsK
KyAgICAgICAgQVNTRVJUKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9u
KSk7CiAKICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09iaiwgZW50cnktPmF0
dHJpYnV0ZXMoKSwgZW50cnktPnByb3BlcnR5R2V0dGVyKCkpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTI5NSw3ICszMDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgdm9pZCBw
dXRFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0
KiBiYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpCiAgICAgewogICAgICAgICAvLyBJZiB0aGlzIGlzIGEgZnVuY3Rpb24g
cHV0IGl0IGFzIGFuIG92ZXJyaWRlIHByb3BlcnR5LgotICAgICAgICBpZiAoZW50cnktPmF0dHJp
YnV0ZXMoKSAmIEZ1bmN0aW9uKSB7CisgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYg
QnVpbHRpbk9yRnVuY3Rpb24pIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdCogdGhpc09iamVj
dCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPihzbG90LnRoaXNWYWx1ZSgpKSkKICAgICAgICAg
ICAgICAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2
YWx1ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgUmVhZE9u
bHkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVF
cnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUVycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IGQ1ZTcyOGMyY2QxMDIwYTQ3ZTRhZGNkNjQ5Y2Qx
ZmZmYTVjZDZhODMuLmRjYTJmZDhkMWY2YWMyM2I4ZmY4MTdjYmIxOGZhYWU3YmNkNTk3MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9y
Q29uc3RydWN0b3IuY3BwCkBAIC0zOCw2ICszOCwyMCBAQCBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
OjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7
CiB9CiAKK3ZvaWQgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVj
dHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
LCBuYW1lKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAgCisgICAgTmF0aXZl
RXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1lLCB0aGlzKTsKKyAgICAK
KyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSks
IERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsgLy8gRUNNQSAxNS4xMS43LjUKKyAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgbV9lcnJvclN0cnVjdHVyZS5z
ZXQodm0sIHRoaXMsIEVycm9ySW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUpKTsKKyAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZSk7CisgICAgQVNT
RVJUKG1fZXJyb3JTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOworfQorCiB2b2lkIE5hdGl2ZUVycm9y
Q29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0
PE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAppbmRleCA3NDBkM2Y5
MzMyOTJmZDJhY2NiNGI5OTAzNDQzMTJiOTMxOWFlMTEwLi40MzhhM2FmYjliYjBmNjQxMmM5Nzkz
MjIzMGM4ODcxMDk2MWY1NDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCkBAIC01MSwxOSArNTEsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSgpIHsgcmV0dXJu
IG1fZXJyb3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBuYW1lKTsKLSAgICAgICAg
ICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKLQotICAgICAgICAgICAgTmF0aXZlRXJyb3JQ
cm90b3R5cGUqIHByb3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1lLCB0aGlzKTsKLQotICAgICAgICAg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7IC8vIEVDTUEgMTUuMTEuNy41Ci0gICAg
ICAgICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90
eXBlLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Ci0gICAgICAgICAgICBtX2Vy
cm9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSkpOwotICAgICAgICAgICAgQVNTRVJUKG1fZXJy
b3JTdHJ1Y3R1cmUpOwotICAgICAgICAgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUtPmlzT2Jq
ZWN0KCkpOwotICAgICAgICB9CisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcm
IG5hbWUpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihW
TSYsIFN0cnVjdHVyZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlTbG90LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eVNsb3QuaAppbmRleCBkOTM4ZmEzMTY0NWFmMjZiNzU4NTE0ZGI2YjI0NzhmMTgzZTllZWUxLi5j
ZmU5YzRkMzJiYTc2OGM3NGU0ZmZiYjE5MTM1Mjc5ZGViZjExNzY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaApAQCAtNDIsNiArNDIsOCBAQCBlbnVt
IEF0dHJpYnV0ZSB7CiAgICAgRnVuY3Rpb24gICAgID0gMSA8PCA0LCAgLy8gcHJvcGVydHkgaXMg
YSBmdW5jdGlvbiAtIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIEFjY2Vzc29y
ICAgICA9IDEgPDwgNSwgIC8vIHByb3BlcnR5IGlzIGEgZ2V0dGVyL3NldHRlcgogICAgIEN1c3Rv
bUFjY2Vzc29yID0gMSA8PCA2LAorICAgIEJ1aWx0aW4gICAgICAgICA9IDEgPDwgNywgLy8gcHJv
cGVydHkgaXMgYSBidWlsdGluIGZ1bmN0aW9uIC0gb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFi
bGVzCisgICAgQnVpbHRpbk9yRnVuY3Rpb24gPSBCdWlsdGluIHwgRnVuY3Rpb24sIC8vIGhlbHBl
ciBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKIH07CiAKIGNsYXNzIFByb3BlcnR5U2xv
dCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBl
LmNwcAppbmRleCA4OWQ3YWMxYjhjYmYxZGIwZTEyNmYxZmM3OTZkZmQ1ZmM4NGIyZTU5Li45ZGRh
MGJhOGRlMTQxMmVhZjRkMjkxZGNmMGM2YjM5NjU3ZmI2NzdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKQEAgLTI0LDcgKzI0LDcg
QEAKICNpbmNsdWRlICJBcnJheVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5j
bHVkZSAiSlNBcnJheS5oIgotI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU09i
amVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYjIwMzg4OGQzYzE2Y2RhM2MwMDM1
MDYyMDhhZTA4Njk1ZGM1ZGFhYS4uZDAyNjZhNTllZjNmNTVhYTM2OTRmNWY3NDE4Y2Y3OGUwYWUw
ZDhiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3Ry
dWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVj
dG9yLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTU2V0LmgiCisjaW5jbHVkZSAi
SlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWFwRGF0YS5oIgogI2luY2x1ZGUgIlNldFBy
b3RvdHlwZS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2Jq
ZWN0LmNwcAppbmRleCA0NDBhNjA5NDIxOTMzODAzMWU1OTI3YWY0NmIyODlkYmNmYjVhNzI4Li44
MGU3ZWFhOGM0OTFjYjZkNTRhODMyNGNlNjQ3YTZjZGI3ZTg4NzgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKQEAgLTIyLDcgKzIyLDkgQEAK
ICNpbmNsdWRlICJTdHJpbmdPYmplY3QuaCIKIAogI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVk
ZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2lu
Y2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNs
dWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmNwcAppbmRleCAwNDI5MWY3ZThkZDI0ZThhYjMzZDc1YWYxZGE0NTY4ZjJi
Yzk5ZTY4Li4xZWNhYjg1YzBiZGIyODY5ODk0NTc3YTc0MTI1NGUzNjQ0MTQ5ZDg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTI3LDEyICsyNywx
OCBAQAogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisj
aW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJEdW1wQ29udGV4dC5oIgor
I2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1
ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMu
aCIKICNpbmNsdWRlICJMb29rdXAuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eU1hcEhhc2hUYWJsZS5o
IgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKKyNpbmNsdWRlICJTdHJ1Y3R1
cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgiCiAjaW5j
bHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0Nv
dW50ZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA1MmNjZjQyM2Ex
MDQzZTEwNzlmMmQ4YjE4OTQyMTk4OTBlNzFmMmJjLi45MWFkNTU3ZTI4OWI0NzM3MDdiODM5ZjZj
ZTcwY2EzNDQxODZhNWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSAiQXJnTGlzdC5oIgogI2luY2x1ZGUgIkFyaXR5Q2hlY2tG
YWlsUmV0dXJuVGh1bmtzLmgiCiAjaW5jbHVkZSAiQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBv
aW50LmgiCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCiAjaW5jbHVkZSAiQ2FsbEZy
YW1lSW5saW5lcy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVDYWNo
ZS5oIgpAQCAtNTUsNyArNTYsMTAgQEAKICNpbmNsdWRlICJKU0FQSVZhbHVlV3JhcHBlci5oIgog
I2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRl
ICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNs
dWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2lu
Y2x1ZGUgIkpTTmFtZVNjb3BlLmgiCkBAIC02OCwxMyArNzIsMTYgQEAKICNpbmNsdWRlICJMb29r
dXAuaCIKICNpbmNsdWRlICJNYXBEYXRhLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKKyNpbmNsdWRl
ICJQYXJzZXIuaCIKICNpbmNsdWRlICJQYXJzZXJBcmVuYS5oIgorI2luY2x1ZGUgIlByb3BlcnR5
TWFwSGFzaFRhYmxlLmgiCiAjaW5jbHVkZSAiUmVnRXhwQ2FjaGUuaCIKICNpbmNsdWRlICJSZWdF
eHBPYmplY3QuaCIKICNpbmNsdWRlICJTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIlNvdXJjZVByb3ZpZGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTdHJpY3RFdmFsQWN0aXZh
dGlvbi5oIgogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKICNpbmNsdWRlICJXZWFr
TWFwRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KQEAgLTIyNiw2ICsyMzMsNyBA
QCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2luRGVm
aW5lT3duUHJvcGVydHkoZmFsc2UpCiAgICAgLCBtX2NvZGVDYWNoZShDb2RlQ2FjaGU6OmNyZWF0
ZSgpKQogICAgICwgbV9lbmFibGVkUHJvZmlsZXIobnVsbHB0cikKKyAgICAsIG1fYnVpbHRpbkV4
ZWN1dGFibGVzKEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlKCp0aGlzKSkKIHsKICAgICBpbnRl
cnByZXRlciA9IG5ldyBJbnRlcnByZXRlcigqdGhpcyk7CiAgICAgU3RhY2tCb3VuZHMgc3RhY2sg
PSB3dGZUaHJlYWREYXRhKCkuc3RhY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmlu
ZGV4IDVhODQxMDVlYWZiN2FiYmE1ZmE0MzFlZWVkZDU1ZDdhODlmNTVjZTIuLjY5NThhYzM5M2Ix
YWVmYzBiZWZiZjZlNGViOGI2ODI1Y2Y3YzlhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlByaXZhdGVOYW1lLmgiCiAjaW5jbHVk
ZSAiUHJvdG90eXBlTWFwLmgiCiAjaW5jbHVkZSAiU21hbGxTdHJpbmdzLmgiCisjaW5jbHVkZSAi
U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlN0cm9uZy5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJh
dG9ycy5oIgogI2luY2x1ZGUgIlR5cGVkQXJyYXlDb250cm9sbGVyLmgiCkBAIC02OSw2ICs3MCw3
IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1
bmtzOworICAgIGNsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlczsKICAgICBjbGFzcyBDb2RlQmxvY2s7
CiAgICAgY2xhc3MgQ29kZUNhY2hlOwogICAgIGNsYXNzIENvbW1vbklkZW50aWZpZXJzOwpAQCAt
NDk3LDYgKzQ5OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHJlZ2lzdGVyV2F0
Y2hwb2ludEZvckltcHVyZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImLCBXYXRjaHBvaW50Kik7
CiAgICAgICAgIC8vIEZJWE1FOiBVc2UgQXRvbWljU3RyaW5nIG9uY2UgaXQgZ290IG1lcmdlZCB3
aXRoIElkZW50aWZpZXIuCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkSW1wdXJl
UHJvcGVydHkoY29uc3QgU3RyaW5nJik7CisgICAgICAgIAorICAgICAgICBCdWlsdGluRXhlY3V0
YWJsZXMqIGJ1aWx0aW5FeGVjdXRhYmxlcygpIHsgcmV0dXJuIG1fYnVpbHRpbkV4ZWN1dGFibGVz
LmdldCgpOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwpAQCAtNTM3LDEwICs1NDEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgSlNWYWx1ZSBtX2V4Y2VwdGlvbjsKICAgICAgICAgYm9vbCBtX2luRGVmaW5lT3duUHJvcGVy
dHk7CiAgICAgICAgIE93blB0cjxDb2RlQ2FjaGU+IG1fY29kZUNhY2hlOwotICAgICAgICBSZWZD
b3VudGVkQXJyYXk8U3RhY2tGcmFtZT4gbV9leGNlcHRpb25TdGFjazsKLQogICAgICAgICBMZWdh
Y3lQcm9maWxlciogbV9lbmFibGVkUHJvZmlsZXI7Ci0KKyAgICAgICAgT3duUHRyPEJ1aWx0aW5F
eGVjdXRhYmxlcz4gbV9idWlsdGluRXhlY3V0YWJsZXM7CisgICAgICAgIFJlZkNvdW50ZWRBcnJh
eTxTdGFja0ZyYW1lPiBtX2V4Y2VwdGlvblN0YWNrOwogICAgICAgICBIYXNoTWFwPFN0cmluZywg
UmVmUHRyPFdhdGNocG9pbnRTZXQ+PiBtX2ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludFNldHM7CiAg
ICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVu
dGltZS9KU1N0cmluZ0lubGluZXMuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJz
L3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBmY2MzODRlOGVkZmMzNGIx
NDA4M2I4NjVkMzczODIwZjQxNjVjNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgKQEAgLTAsMCArMSw0
IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0pTU3RyaW5nSW5saW5lc19oCisjZGVmaW5lIFdlYkNv
cmVfRldEX0pTU3RyaW5nSW5saW5lc19oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJp
bmdJbmxpbmVzLmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwCmluZGV4IDJlZGRj
ZGJiOWYwMDZjYTc2MjY2NTBiNDIwMjc4NjI2YjkyNjE0MTcuLjNjNGUwZDdiYmIzMWNhYjEyYjVl
NmM5NzVjNzRkM2Y0ODRlOWNiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcApAQCAtNDYs
NiArNDYsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NK
U1ZhbHVlSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nSW5saW5l
cy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0lEQkFueUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0lEQkFueUN1c3RvbS5jcHAKaW5kZXggNTY0OWM4NWNhMDk1ODc3NDhhM2RhMDZjZGRk
MGNhOTk5ZTUwYjhlNy4uM2Y0ZDhlZmFlYjU3ZjMzMDAzZTczYTdlNzg0MmU0MmM3M2NlNjQ5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcApAQCAt
NDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIkpTSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJK
U0lEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisj
aW5jbHVkZSA8cnVudGltZS9KU1N0cmluZ0lubGluZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFz
ZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3Vz
dG9tLmNwcAppbmRleCA5ZWFlNzU2OWM3MDYwM2E0ZmVkMGFmMTRjNGY4NzE4Y2RlNjRhNmUxLi5m
NDlkZmU5MGI0ZTgyZDM5ZWRjYmY5YmEyOWYyYWU3OTljMGRkZjI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcApAQCAtMzcsNyAr
MzcsNyBAQAogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSlNJREJPYmpl
Y3RTdG9yZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KLSNpbmNsdWRlIDxydW50aW1l
L0pTU3RyaW5nLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZ0lubGluZXMuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcAppbmRleCA3NGZkMzU0YjI4NjA3Y2Y3ODIyZjgw
NTM0Nzk3MGY1ZDdhYzhjODMyLi41NDM0YjNiN2Q2YzU2ZWNiMGEwM2EyNzk0YzY3MzZhOWFkZmI3
MGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0
b3JlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVj
dFN0b3JlQ3VzdG9tLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIklEQk9iamVjdFN0
b3JlLmgiCiAjaW5jbHVkZSAiSlNJREJJbmRleC5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3Iu
aD4KLSNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU1N0
cmluZ0lubGluZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDYyNWY5Zjcw
MjkyZmRjMTRiOGNhNTMzNzcwYzA0ZDRiNzAwN2Y2M2MuLjg4YzdhZDc5NGQyMGY1ZDQ4OWViODVk
MDc3OTU4NTFkMzQ1YTIwNzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxNC0wMS0yOSAgT2xp
dmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgaXQgcG9zc2libGUg
dG8gaW1wbGVtZW50IEpTIGJ1aWx0aW5zIGluIEpTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc4ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIHRoZSB0ZXN0IHJlc3VsdHMgZm9yIG5ldyBl
cnJvciBtZXNzYWdlcyAobm93IHRoYXQgdGhleSdyZQorICAgICAgICBhY3R1YWxseSBoZWxwZnVs
KSwgYW5kIGFkZGVkIGEganMtcmVncmVzcyB0ZXN0IHRvIHRyYWNrIHBlcmZvcm1hbmNlLgorCisg
ICAgICAgICoganMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL2RvbS9h
cnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvcmVn
cmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBqcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuanM6IEFkZGVk
LgorICAgICAgICAodGVzdDEpOgorICAgICAgICAodGVzdDIpOgorICAgICAgICAodGVzdDMpOgor
CiAyMDE0LTAxLTI5ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogUGxheSBCcmVha3BvaW50IFNvdW5kIGluIEZyb250ZW5kCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9qcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQKaW5kZXggNTQxYjhjMzU4ZjA2OGEw
Y2VhODgyYzEwNTE3NTMyNTExNGNkMzNmNy4uY2NhMzYzZGNlNThmYmE5NWE1OGNlNDZmY2I0OGMz
OGJmNThhZGY1OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dApAQCAt
MzAsMTIgKzMwLDEyIEBAIFBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShpc0JpZ0Vub3Vn
aEFuZEV4Y2VwdGlvbikgdGhyZXcgZXhjZXB0aW9uIGV4Y2VwdGlvCiBQQVNTIFsxMiwgNTQsIDE4
LCAxMzAsIDQ0XS5ldmVyeShpc0JpZ0Vub3VnaEFuZEV4Y2VwdGlvbikgdGhyZXcgZXhjZXB0aW9u
IGV4Y2VwdGlvbiBmcm9tIGZ1bmN0aW9uLgogCiA1LjAgV3JvbmcgVHlwZSBmb3IgQ2FsbGJhY2sg
VGVzdAotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KDUpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoJ3dy
b25nJykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1
LCA4LCAxMzAsIDQ0XS5ldmVyeShuZXcgT2JqZWN0KCkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkobnVsbCkgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAs
IDQ0XS5ldmVyeSh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJy
b3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KDUpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBt
dXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoJ3dyb25n
JykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxi
YWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShu
ZXcgT2JqZWN0KCkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5l
dmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0
NF0uZXZlcnkobnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBl
LmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAs
IDQ0XS5ldmVyeSh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnBy
b3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwg
OCwgMTMwLCA0NF0uZXZlcnkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90
b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgogCiA2LjAgRWFybHkgRXhp
dCAoIlNob3J0IENpcmN1aXRpbmciKQogUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KGlz
QmlnRW5vdWdoU2hvcnRDaXJjdWl0KSBpcyBmYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2pzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQKaW5kZXgg
MmMyYTY4Y2IxMDZkYTEwZjA4NmIyMmM1YmYyYmY1YzhmZTc5ZTMzZS4uNWQ5ZWNiNzVhOGRhNzli
YTY1NjA1ZTdlYjljZjhmYzI1ZmUxOGFmYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvZG9t
L2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9qcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CkBAIC0xNSw3
ICsxNSw3IEBAIFBBU1MgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodW5kZWZpbmVkLCAwLCAx
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlCiBQQVNTIEFycmF5LnByb3RvdHlwZS5z
b3J0LmNhbGwodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQg
aXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnNvcnQuY2FsbCh1
bmRlZmluZWQpJykuCiBQQVNTIEFycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbCh1bmRlZmluZWQs
IDAsIDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2Jq
ZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwodW5kZWZpbmVkLCAw
LCAxKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUudW5zaGlmdC5jYWxsKHVuZGVmaW5lZCwge30p
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChl
dmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUudW5zaGlmdC5jYWxsKHVuZGVmaW5lZCwge30pJyku
Ci1QQVNTIEFycmF5LnByb3RvdHlwZS5ldmVyeS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFs
dWF0aW5nICdBcnJheS5wcm90b3R5cGUuZXZlcnkuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKScp
LgorUEFTUyBBcnJheS5wcm90b3R5cGUuZXZlcnkuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMg
dGhhdCB8dGhpc3wgbm90IGJlIHVuZGVmaW5lZC4KIFBBU1MgQXJyYXkucHJvdG90eXBlLmZvckVh
Y2guY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1
bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLmZv
ckVhY2guY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUu
c29tZS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUu
c29tZS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpJykuCiBQQVNTIEFycmF5LnByb3RvdHlwZS5p
bmRleE9mLmNhbGwodW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRl
ZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLmluZGV4
T2YuY2FsbCh1bmRlZmluZWQsIDApJykuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTI5
MGMwZWVmZjhkZTQyMTgzM2Q5MmQyN2U5NTI0MTkxNzYwNGI5NgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5CisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sIGIv
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTVjYzE3MWM0ODc1YTM1ODViZjE0ZTU0MTVmNWNkMGU1ODFkNTQ0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRt
bApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10
ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90
eXBlLWV2ZXJ5LmpzIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyYXkt
cHJvdG90eXBlLWV2ZXJ5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5NGFhMTYxYzBjZTk4YjJhYjE4YTNhMWEx
ZjBkZmFhYzlkN2QyZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3NjcmlwdC10ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuanMKQEAgLTAsMCArMSwyOSBAQAor
dmFyIHJlc3VsdCA9IDA7CitmdW5jdGlvbiB0ZXN0MShhKSB7CisgICAgcmVzdWx0IDw8IDE7Cisg
ICAgcmVzdWx0Kys7CisgICAgcmV0dXJuIHRydWU7Cit9CitmdW5jdGlvbiB0ZXN0MihhLGIpIHsK
KyAgICByZXN1bHQgXj0gMzsKKyAgICByZXN1bHQgKj0gMzsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
K2Z1bmN0aW9uIHRlc3QzKGEsYixjKSB7CisgICAgcmVzdWx0IF49IHJlc3VsdCA+PiAxOworICAg
IHJldHVybiB0cnVlOworfQorCit2YXIgcmVzdWx0ID0gMDsKK3ZhciBhcnJheSA9IFtdCitmb3Ig
KHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKQorICAgIGFycmF5W2ldID0gMTsKKworZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7CisgICAgYXJyYXkuZXZlcnkodGVzdDEpOworICAgIGFy
cmF5LmV2ZXJ5KHRlc3QyKTsKKyAgICBhcnJheS5ldmVyeSh0ZXN0Myk7Cit9CisKK2lmIChyZXN1
bHQgIT0gMTQyODgxMDQ5NikKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1
bHQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222671</attachid>
            <date>2014-01-30 08:53:32 -0800</date>
            <delta_ts>2014-01-30 09:30:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140130085326.patch</filename>
            <type>text/plain</type>
            <size>189793</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NjBlMTQzNTgwZTZkYzc1ZmEwNjY2YzlhMWUyZGMxZmMzZWYyY2MyLi4yNzBmZTZjZjRmNDQ2OGM4
NGRlNGViMjI3M2VmM2U4NTM4N2YxODBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
IFRoaXMgcmVzdWx0IG9mIHRoaXMgcmVmYWN0b3JpbmcKKyAgICAgICAgaXMgdGhhdCBDb21tb25J
ZGVudGlmaWVycywgYW5kIGEgZmV3IG90aGVyIG1pc2NlbGxhbmVvdXMgaGVhZGVycyBub3cKKyAg
ICAgICAgbmVlZCB0byBiZSBpbmNsdWRlZCBkaXJlY3RseSBhcyB0aGV5IHdlcmUgZm9ybWVybHkg
Y2FwdHVyZWQgdGhyb3VnaCBvdGhlcgorICAgICAgICBwYXRocy4KKworICAgICAgICBJbiBhZGRp
dGlvbiB0aGlzIGFkZHMgYSBmbGFnIHRvIHRoZSBMb29rdXAgdGFibGUncyBoYXNoZW50cnkgdG8g
aW5kaWNhdGUKKyAgICAgICAgdGhhdCBhIHN0YXRpYyBmdW5jdGlvbiBpcyBhY3R1YWxseSBiYWNr
ZWQgYnkgSlMuIFRoZXJlIGlzIHRoZW4gYSBsb3Qgb2YKKyAgICAgICAgbG9naWMgdG8gdGhyZWFk
IHRoZSBzcGVjaWFsIG5hdHVyZSBvZiB0aGUgZnVuY3RvbiB0byB3aGVyZSBpdCBtYXR0ZXJzLgor
ICAgICAgICBUaGlzIGFsbG93cyB0b1N0cmluZygpLCAuY2FsbGVyLCBldGMgdG8gbWltaWMgdGhl
IGJlaGF2aW91ciBvZiBhIGhvc3QKKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAgICAgTm90ZXMg
b24gd3JpdGluZyBidWlsdGluczoKKyAgICAgICAgIC0gRWFjaCBmdW5jdGlvbiBpcyBjb21waWxl
ZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBvdGhlcnMsIGFuZCB0aG9zZQorICAgICAgICAgICBpbXBs
ZW1lbnRhdGlvbnMgY2Fubm90IGN1cnJlbnRseSBjYXB0dXJlIGFsbCBnbG9iYWwgcHJvcGVydGll
cyAoYXMKKyAgICAgICAgICAgdGhhdCBjb3VsZCBiZSBwb3RlbnRpYWxseSB1bnNhZmUpLiBJZiBh
IGZ1bmN0aW9uIGRvZXMgY2FwdHVyZSBhCisgICAgICAgICAgIGdsb2JhbCB3ZSB3aWxsIGRlbGli
ZXJhdGVseSBjcmFzaC4KKyAgICAgICAgIC0gRm9yIHRob3NlICJnbG9iYWwiIHByb3BlcnRpZXMg
dGhhdCB3ZSBkbyB3YW50IGFjY2VzcyB0bywgd2UgdXNlCisgICAgICAgICAgIHRoZSBAIHByZWZp
eCwgZS5nLiBPYmplY3QodGhpcykgYmVjb21lcyBAT2JqZWN0KHRoaXMpLiBUaGUgQCBpZGVudGlm
aWVycworICAgICAgICAgICBhcmUgcHJpdmF0ZSBuYW1lcywgYW5kIGJlaGF2ZSBqdXN0IGxpa2Ug
cmVndWxhciBwcm9wZXJ0aWVzLCBvbmx5CisgICAgICAgICAgIHdpdGhvdXQgdGhlIHJpc2sgb2Yg
YWR1bHRlcmF0aW9uLiBBZ2FpbiwgaW4gdGhlIEBPYmplY3QgY2FzZSwgd2UKKyAgICAgICAgICAg
ZXhwbGljaXRseSBkdXBsaWNhdGUgdGhlIE9iamVjdENvbnN0cnVjdG9yIHJlZmVyZW5jZSBvbiB0
aGUgR2xvYmFsT2JqZWN0CisgICAgICAgICAgIHNvIHRoYXQgd2UgaGF2ZSBndWFyYW50ZWVkIGFj
Y2VzcyB0byB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgY29uc3RydWN0
b3IuCisgICAgICAgICAtIGNhbGwsIGFwcGx5LCBldmFsLCBhbmQgRnVuY3Rpb24gYXJlIGFsbCBy
ZWplY3RlZCBpZGVudGlmaWVycywgYWdhaW4KKyAgICAgICAgICAgdG8gcHJldmVudCBhbnl0aGlu
ZyBmcm9tIGFjY2lkZW50YWxseSB1c2luZyBhbiBhZHVsdGVyYXRlZCBvYmplY3QuCisgICAgICAg
ICAgIEluc3RlYWQgQGNhbGwgYW5kIEBhcHBseSBhcmUgYXZhaWxhYmxlLCBhbmQgaGFwcGlseSB0
aGV5IGNvbXBsZXRlbHkKKyAgICAgICAgICAgZHJvcCB0aGUgbmVxX3B0ciBpbnN0cnVjdGlvbiBh
cyB0aGV5J3JlIGRlZmluZWQgYXMgYWx3YXlzIGJlaW5nIHRoZQorICAgICAgICAgICBvcmlnaW5h
bCBjYWxsL2FwcGx5IGZ1bmN0aW9ucy4KKworICAgICAgICBUaGVzZSByZXN0cmljdGlvbnMgYXJl
IGp1c3QgaW50ZW5kZWQgdG8gbWFrZSBpdCBoYXJkZXIgdG8gYWNjaWRlbnRhbGx5CisgICAgICAg
IG1ha2UgY2hhbmdlcyB0aGF0IGFyZSBpbmNvcnJlY3QgKGZvciBpbnN0YW5jZSBjYWxsaW5nIHdo
YXRldmVyIGhhcyBiZWVuCisgICAgICAgIGFzc2lnbmVkIHRvIGdsb2JhbC5PYmplY3QsIGluc3Rl
YWQgb2YgdGhlIG9yaWdpbmFsIGNvbnN0cnVjdG9yIGZ1bmN0aW9uKS4KKyAgICAgICAgSG93ZXZl
ciwgbWFraW5nIGEgbWlzdGFrZSBsaWtlIHRoaXMgc2hvdWxkIHJlc3VsdCBpbiBhIHB1cmVseSBz
ZW1hbnRpYworICAgICAgICBlcnJvciBhcyBmdW5kYW1lbnRhbGx5IHRoZXNlIGZ1bmN0aW9ucyBh
cmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlCisgICAgICAgIHJlZ3VsYXIgSlMgY29kZSBp
biB0aGUgaG9zdCBnbG9iYWwsIGFuZCBoYXZlIG5vIG1vcmUgcHJpdmlsZWdlcyB0aGFuCisgICAg
ICAgIGFueSBvdGhlciBKUy4KKworICAgICAgICBUaGUgaW5pdGlhbCBwcm9vZiBvZiBjb25jZXB0
IGlzIEFycmF5LnByb3RvdHlwZS5ldmVyeSwgdGhpcyBzaG93cyBhIDY1JQorICAgICAgICBwZXJm
b3JtYW5jZSBpbXByb3ZlbWVudCwgYW5kIHRoYXQgaW1wcm92ZW1lbnQgaXMgc2lnbmlmaWNhbnRs
eSBodXJ0IGJ5CisgICAgICAgIG91ciBwb29yIG9wdGltaXNhdGlvbiBvZiBvcF9pbi4KKworICAg
ICAgICBBcyB0aGlzIGlzIHN1Y2ggYSBsaW1pdGVkIGZ1bmN0aW9uLCB3ZSBoYXZlIG5vdCB5ZXQg
ZXhwb3J0ZWQgYWxsIHN5bWJvbHMKKyAgICAgICAgdGhhdCB3ZSBjb3VsZCBwb3NzaWJseSBuZWVk
LCBidXQgYXMgd2UgaW1wbGVtZW50IG1vcmUsIHRoZSBsaWtlbGlob29kCisgICAgICAgIG9mIGVu
Y291bnRlcmluZyBtaXNzaW5nIGZlYXR1cmVzIHdpbGwgcmVkdWNlLgorCisgICAgICAgIFRoaXMg
ZGlkIHJlcXVpcmUgYnJlYWtpbmcgb3V0IGEgSlNTdHJpbmdJbmxpbmVzIGhlYWRlciwgYW5kIHJl
cXVpcmVkCisgICAgICAgIGZpeGluZyBhIGZldyBvYmplY3RzIHRoYXQgd2VyZSB0cnlpbmcgdG8g
dXNpbmcgUHJvcGVydHlOYW1lOjpwdWJsaWNOYW1lCisgICAgICAgIHJhdGhlciB0aGFuIFByb3Bl
cnR5TmFtZTo6dWlkLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0
eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dCk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRpY1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWNGdW5jdGlvbkdl
dHRlcik6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tH
ZXR0ZXIpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBidWlsdGlucy9BcnJheS5wcm90b3R5cGUuanM6CisgICAgICAgIChldmVyeSk6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkJ1aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKToKKyAgICAgICAgKEpTQzo6
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSk6CisgICAgICAgICog
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVj
dXRhYmxlczo6Y3JlYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tG
b3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6dG9TdHJpY3RuZXNzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNCdWlsdGluRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBjcmVhdGVfaGFz
aF90YWJsZToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZ2Vu
ZXJhdGUtanMtYnVpbHRpbnM6IEFkZGVkLgorICAgICAgICAoZ2V0Q29weXJpZ2h0KToKKyAgICAg
ICAgKGdldEZ1bmN0aW9ucyk6CisgICAgICAgIChnZW5lcmF0ZUNvZGUpOgorICAgICAgICAobWFu
Z2xlTmFtZSk6CisgICAgICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSWRlbnRp
Zmllcik6CisgICAgICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChTb3VyY2VDb2RlKToK
KyAgICAgICAgKFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKFZNKToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvUHJvdG9DYWxsRnJhbWUuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUp
OgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpM
ZXhlcik6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpM
ZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFy
Pjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAg
ICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcik6CisgICAgICAgICog
cGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OnNldENsb3NlZFZh
cmlhYmxlcyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
Tm9kZTo6Y2FwdHVyZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OnNldENs
b3NlZFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmluaXNoUGFy
c2luZyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRU
b2tlblRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OmdldFVzZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNsb3NlZFZhcmlh
Ymxlcyk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9k
ZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAgICAgICogcnVudGlt
ZS9BcmdMaXN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAg
ICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJh
dG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpn
ZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpD
b21tb25JZGVudGlmaWVycyk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQ
cml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQdWJsaWNO
YW1lKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzRXhjZXB0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxl
OjpleGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpleGVj
dXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aXNCdWlsdGlu
RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1l
L0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFi
bGVHZXQpOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0KToKKyAg
ICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgICogcnVudGltZS9K
U0NlbGxJbmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6c291cmNlQ29kZSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzSG9zdE9y
QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6aXNCdWlsdGluRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIpOgorICAgICAg
ICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9w
ZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgICogcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6Om9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpnZXRDbGFzc1Byb3BlcnR5TmFtZXMpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZ0lubGlu
ZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjppbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9i
amVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgICAgRG9uJ3QgcmVw
b3J0IHByaXZhdGUgbmFtZXMuCisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6c3ltYm9s
VGFibGVQdXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChKU0M6OnNldFVwU3RhdGlj
RnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlND
OjpIYXNoRW50cnk6OmJ1aWx0aW5HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpIYXNoRW50cnk6
OnByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpwcm9wZXJ0eVB1dHRl
cik6CisgICAgICAgIChKU0M6Okhhc2hUYWJsZTo6ZW50cnkpOgorICAgICAgICAoSlNDOjpnZXRT
dGF0aWNQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpnZXRTdGF0aWNWYWx1ZVNsb3QpOgor
ICAgICAgICAoSlNDOjpwdXRFbnRyeSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6YnVp
bHRpbkV4ZWN1dGFibGVzKToKKwogMjAxNC0wMS0yOSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3Nz
eUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikgbGVmdG92ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTEzZjE4OGFlNjUyYjk1ZjNiNTcyYWMxNzcwZWEx
MjViYmFlNzVkMi4uNjMyYWNjNDNkYzE2YzcxMzRkNThjMDRiN2E1Y2U1NmE5MTk4ZWNjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE0LTAxLTI5ICBPbGl2ZXIgSHVudCAgPG9saXZl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBpbXBsZW1lbnQgSlMg
YnVpbHRpbnMgaW4gSlMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNzg4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVwZGF0aW5nIGZvciB0aGUgbmV3bHkgcmVxdWlyZWQgaGVhZGVycy4KKworICAgICAg
ICBUZXN0OiBqcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sCisKKyAgICAgICAg
KiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oOiBBZGRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcDoKKwogMjAxNC0wMS0zMCAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViUGFnZTo6ZGV0ZXJtaW5lUHJpbWFyeVNu
YXBzaG90dGVkUGx1Z0luIGlzIHNsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggNWJlMDUzZjFlMDg2YjQzZTY4
NmMzNjc0ZGFlN2M1MTYwNWEyODZlNy4uMGVjZWQ1MWYzZTJkNWI2MjFkYWRmMDU3NDlmNWU3NDY2
YTA2ZjUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBib29sIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZQogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKICAg
ICBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHByb3BlcnR5TmFtZVJlZjsKICAgICAKLSAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpT
Q2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xh
c3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgLy8gb3B0aW9uYWwgb3B0
aW1pemF0aW9uIHRvIGJ5cGFzcyBnZXRQcm9wZXJ0eSBpbiBjYXNlcyB3aGVuIHdlIG9ubHkgbmVl
ZCB0byBrbm93IGlmIHRoZSBwcm9wZXJ0eSBleGlzdHMKICAgICAgICAgICAgIGlmIChKU09iamVj
dEhhc1Byb3BlcnR5Q2FsbGJhY2sgaGFzUHJvcGVydHkgPSBqc0NsYXNzLT5oYXNQcm9wZXJ0eSkg
ewpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiAgICAgUmVmUHRy
PE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgSlNWYWx1ZVJlZiB2YWx1ZVJl
ZiA9IHRvUmVmKGV4ZWMsIHZhbHVlKTsKICAgICAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9
IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJl
bnRDbGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBz
ZXRQcm9wZXJ0eSA9IGpzQ2xhc3MtPnNldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFwcm9wZXJ0eU5hbWVSZWYpCkBAIC0zNDMsNyArMzQzLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm8KICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CiAgICAg
UmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0Ns
YXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNz
ID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdERlbGV0
ZVByb3BlcnR5Q2FsbGJhY2sgZGVsZXRlUHJvcGVydHkgPSBqc0NsYXNzLT5kZWxldGVQcm9wZXJ0
eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lUmVmKQpAQCAtNTY0LDcgKzU2
NCw3IEBAIEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiB7CiAgICAgSlNPYmplY3RSZWYgdGhpc1Jl
ZiA9IHRvUmVmKHRoaXMpOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gY2xhc3NS
ZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAg
ICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXMgPSBq
c0NsYXNzLT5zdGF0aWNWYWx1ZXMoZXhlYykpIHsKICAgICAgICAgICAgICAgICBpZiAoU3RhdGlj
VmFsdWVFbnRyeSogZW50cnkgPSBzdGF0aWNWYWx1ZXMtPmdldChuYW1lKSkgewpAQCAtNjAwLDcg
KzYwMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGlj
RnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFCiAgICAgaWYgKFBhcmVudDo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdDIpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QyLmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFt
ZSkpOwogCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsK
ICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqLT5jbGFzc1JlZigpOyBq
c0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlm
IChPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGUqIHN0YXRpY0Z1bmN0aW9ucyA9IGpz
Q2xhc3MtPnN0YXRpY0Z1bmN0aW9ucyhleGVjKSkgewogICAgICAgICAgICAgICAgIGlmIChTdGF0
aWNGdW5jdGlvbkVudHJ5KiBlbnRyeSA9IHN0YXRpY0Z1bmN0aW9ucy0+Z2V0KG5hbWUpKSB7CkBA
IC02MjYsNyArNjI2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpjYWxsYmFja0dldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWQKICAgICBKU09iamVjdFJl
ZiB0aGlzUmVmID0gdG9SZWYodGhpc09iaik7CiAgICAgUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBw
cm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2Jq
LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsK
ICAgICAgICAgICAgIGlmIChKU09iamVjdEdldFByb3BlcnR5Q2FsbGJhY2sgZ2V0UHJvcGVydHkg
PSBqc0NsYXNzLT5nZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlO
YW1lUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDI3YmM0YzE3ZjNk
ZmVlYjYxZDI1MjMyM2ZkODc4YzQ0NzgwZjc0YzUuLmM3NTI2YzZhMzdiNGMzMWQwY2UxMzdhMDE3
ODFlODY4ODlkZmZmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUy
LDYgKzUyLDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9TY3Jp
cHRPYmplY3QuY3BwCiAgICAgYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCiAKKyAgICBidWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCisKICAgICBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Q
cm9maWxlLmNwcAogICAgIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9C
eXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC04MTUsMTYgKzgxNywyNiBAQCBhZGRfY3VzdG9tX2Nv
bW1hbmQoCiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3Jl
X0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0vQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTLmpzb24gLS1vdXRwdXRf
aF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0cHV0X2Nw
cF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0cHV0X2pz
X2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIgLS1vdXRwdXRfdHlw
ZSBKYXZhU2NyaXB0IC0td3JpdGVfYWx3YXlzICYmIG1rZGlyIC1wICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yICYmIGNwICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTRnJvbnRlbmREaXNwYXRj
aGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNU
eXBlQnVpbGRlcnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3Bl
Y3RvcgogICAgIFZFUkJBVElNKQogCisjIEpTQ0J1aWx0aW5zCithZGRfY3VzdG9tX2NvbW1hbmQo
CisgICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVp
bHRpbnMuY3BwICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRp
bnMuaAorICAgIE1BSU5fREVQRU5ERU5DWSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZ2Vu
ZXJhdGUtanMtYnVpbHRpbnMKKyAgICBERVBFTkRTICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElS
fS9idWlsdGlucy8qLmpzCisgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtF
X0NVUlJFTlRfU09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMgICR7REVSSVZFRF9TT1VS
Q0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaCAgJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5jcHAKKyAgICBWRVJCQVRJTSkKKwogbGlz
dChBUFBFTkQgSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwCiAgICAg
JHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0Zyb250ZW5k
RGlzcGF0Y2hlcnMuY3BwCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElS
fS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAKKyAgICAke0RFUklWRURfU09VUkNFU19KQVZB
U0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcAogKQogCiBsaXN0KEFQUEVORCBKYXZhU2Ny
aXB0Q29yZV9IRUFERVJTCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElS
fS9JbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oCiAgICAgJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuaAogICAg
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVp
bGRlcnMuaAorICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVp
bHRpbnMuaAogKQogCiBhZGRfY3VzdG9tX2NvbW1hbmQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDExNTZlOTdmZDg4NjI1NTdjOWNmOGQzYjY4YmY0ZDAz
YzNlOGJhOGYuLjI2NmFhNWYwODE0YjcyMGZlYjU2YjdkNDFjZjE3M2M1MGM1YTRiMzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC01Nyw2ICs1Nyw3IEBA
IGFsbCA6IFwKICAgICBSZWdFeHBPYmplY3QubHV0LmggXAogICAgIFN0cmluZ0NvbnN0cnVjdG9y
Lmx1dC5oIFwKICAgICB1ZGlzODZfaXRhYi5oIFwKKyAgICBKU0NCdWlsdGlucyBcCiAjCiAKICMg
bG9va3VwIHRhYmxlcyBmb3IgY2xhc3NlcwpAQCAtNzksNiArODAsMTQgQEAgS2V5d29yZExvb2t1
cC5oOiBLZXl3b3JkTG9va3VwR2VuZXJhdG9yLnB5IEtleXdvcmRzLnRhYmxlCiB1ZGlzODZfaXRh
Yi5oOiAkKEphdmFTY3JpcHRDb3JlKS9kaXNhc3NlbWJsZXIvdWRpczg2L2l0YWIucHkgJChKYXZh
U2NyaXB0Q29yZSkvZGlzYXNzZW1ibGVyL3VkaXM4Ni9vcHRhYmxlLnhtbAogCShQWVRIT05QQVRI
PSQoSmF2YVNjcmlwdENvcmUpL2Rpc2Fzc2VtYmxlci91ZGlzODYgcHl0aG9uICQoSmF2YVNjcmlw
dENvcmUpL2Rpc2Fzc2VtYmxlci91ZGlzODYvaXRhYi5weSAkKEphdmFTY3JpcHRDb3JlKS9kaXNh
c3NlbWJsZXIvdWRpczg2L29wdGFibGUueG1sIHx8IGV4aXQgMSkKIAorIyBidWlsdGluIGZ1bmN0
aW9ucworLlBIT05ZOiBKU0NCdWlsdGlucworCitKU0NCdWlsdGluczogSlNDQnVpbHRpbnMuaCBK
U0NCdWlsdGlucy5jcHAKK0pTQ0J1aWx0aW5zLmg6ICQoSmF2YVNjcmlwdENvcmUpL2dlbmVyYXRl
LWpzLWJ1aWx0aW5zICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zLyouanMKKwlweXRob24gJF4g
JEAKKworSlNDQnVpbHRpbnMuY3BwOiBKU0NCdWlsdGlucy5oCiAKICMgSW5zcGVjdG9yIGludGVy
ZmFjZXMKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBj
ZGI1NDI2YjA2YjUyYTk4MjU2ZWU5MDU4YmJhOGYxMWVlYTY5ZWUwLi5hZmU5NjcyYjViMWVlOTI3
MTFiZWRkNDc1ZTlhMTI4MjAzYzgxMzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQpAQCAtMTAyLDYgKzEwMiw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMg
Kz0gXAogICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRPYmplY3QuaCBc
CiAgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcCBcCiAg
ICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmggXAorICAgIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIFwKKyAg
ICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmNw
cCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2Zp
bGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAg
XApAQCAtMTI0MSw3ICsxMjQzLDkgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJz
LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNGcm9udGVu
ZERpc3BhdGNoZXJzLmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3Rv
ckpTVHlwZUJ1aWxkZXJzLmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5z
cGVjdG9ySlNUeXBlQnVpbGRlcnMuaAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0lu
c3BlY3RvckpTVHlwZUJ1aWxkZXJzLmggXAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3Jl
L0pTQ0J1aWx0aW5zLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNDQnVp
bHRpbnMuaAogCiBsbGludF9ub3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qCmluZGV4IDVlZGVmZGJlODU1Zjk2YTYyNjhkODU3M2JlYzFkMGMzZDg1
OGFhNWMuLmExMmRiMTgzNDg2ZGZiYmNhODNmM2E3OGU5Y2Y5ODYzMWIyNjUzZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtMzA5LDYgKzMwOSw3IEBACiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0T2JqZWN0LmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdFZhbHVlLmNwcCIg
Lz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxl
cy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9j
YXRpb25Qcm9maWxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2Rl
XEFycmF5UHJvZmlsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29k
ZVxCeXRlY29kZUJhc2ljQmxvY2suY3BwIiAvPgpAQCAtNzIxLDYgKzcyMiw3IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNCYWNr
ZW5kRGlzcGF0Y2hlcnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9y
SlNUeXBlQnVpbGRlcnMuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmNwcCIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJ
dGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJj
ZXNcQXJyYXlDb25zdHJ1Y3Rvci5sdXQuaCIgLz4KQEAgLTc1MCw2ICs3NTIsNyBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFJlZ0V4cE9iamVjdC5s
dXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xSZWdFeHBQcm90b3R5cGUubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcU3RyaW5nQ29uc3RydWN0b3IubHV0LmgiIC8+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuaCIg
Lz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxBUElcQVBJQ2FsbGJhY2tGdW5jdGlvbi5oIiAvPgpAQCAtNzk4LDYgKzgwMSw3IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdE9iamVjdC5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0VmFsdWUuaCIgLz4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxlcy5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9u
UHJvZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlQ
cm9maWxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeVZhbElu
Zm8uaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmls
dGVycwppbmRleCA4N2UxMmE0NzE1OGJiNjIyNGQ0OWZkNjIyOTc4YzRhOWM0NDM1YTY1Li44Njlj
MWY1ODliY2I2ODZlYjljZjIwYzA5NmJlMWI4M2E1NTFlMjRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC03LDYgKzcsOSBAQAogICAg
IDxGaWx0ZXIgSW5jbHVkZT0iYmluZGluZ3MiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezBi
YWNlMTIzLTQ1ODItZWViYy05MzE0LTc4MTliMzc2YzE5OH08L1VuaXF1ZUlkZW50aWZpZXI+CiAg
ICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJidWlsdGlucyI+CisgICAgICA8VW5p
cXVlSWRlbnRpZmllcj57M2I5ZDcyYTUtMTM1Yi00M2IzLWE1MjQtYzZkMmI5ZDI5ZDM1fTwvVW5p
cXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KICAgICA8RmlsdGVyIEluY2x1ZGU9ImJ5dGVj
b2RlIj4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns3NjYwODhhMC0xMjE2LTQ4NTQtYWE0My01
NjBjNWUyODM2Njh9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgpAQCAtMTA4LDYg
KzExMSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcTWFjcm9Bc3Nl
bWJsZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAgPC9DbENv
bXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWlsdGluRXhlY3V0
YWJsZXMuY3BwIj4KKyAgICAgIDxGaWx0ZXI+YnVpbHRpbnM8L0ZpbHRlcj4KKyAgICA8L0NsQ29t
cGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlv
blByb2ZpbGUuY3BwIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KQEAgLTEzMjksNiArMTMzNSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwIj4KICAg
ICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRp
bnMuY3BwIj4KKyAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CisgICAgPC9D
bENvbXBpbGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cQVBJXEFQSUNhbGxiYWNrRnVuY3Rpb24uaCI+CkBAIC0xNDU0LDYgKzE0NjMs
OSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXFg4NkFzc2VtYmxlci5o
Ij4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWlsdGluRXhlY3V0YWJsZXMuaCI+
CisgICAgICA8RmlsdGVyPmJ1aWx0aW5zPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmgi
PgogICAgICAgPEZpbHRlcj5ieXRlY29kZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAt
MjU1MCw2ICsyNTYyLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xBcnJheVByb3RvdHlwZS5sdXQuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQg
U291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmgiPgorICAgICAgPEZpbHRl
cj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVk0uaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
MjdlODc2NzQwYTk2NGIwMjg5ODRlZDY3ODE2MTgyMGE1ZGNmNzdjNC4uOTExNTczYWIxN2QzMzk3
NGFhN2M5YTAxMWRiMjAwYjA5YWY3OGJmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTkyMiw3ICs5MjIsNiBAQAogCQlBNTAzRkExOTE4OEUwRkIwMDAxMTBGMTQgLyogSmF2YVNj
cmlwdENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNTAzRkExMzE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5j
cHAgKi87IH07CiAJCUE1MDNGQTFBMTg4RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZy
YW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAz
RkExNDE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQlB
NTAzRkExQjE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE1MTg4RTBG
QjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwICovOyB9OwotCQlBNTAzRkEx
QzE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNjE4OEUwRkIwMDAxMTBG
MTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmggKi87IH07CiAJCUE1MDNGQTFEMTg4RTBGQjAw
MDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTcxODhFMEZCMDAwMTEw
RjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAgKi87IH07CiAJCUE1MDNG
QTFFMTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE4MTg4
RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaCAqLzsgfTsK
IAkJQTUwM0ZBMjExODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTFGMTg4RUZGNjgw
MDExMEYxNCAvKiBTY3JpcHRCcmVha3BvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwMjQsNiArMTAyMyw3IEBACiAJCUE3MEIwODMyMTdB
MEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwQjA4MzAxN0EwQjc5QjAwREFGMTRCIC8qIERG
R0JpbmFyeVN3aXRjaC5jcHAgKi87IH07CiAJCUE3MEIwODMzMTdBMEI3OUIwMERBRjE0QiAvKiBE
RkdCaW5hcnlTd2l0Y2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3MEIwODMxMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guaCAqLzsg
fTsKIAkJQTcxMjM2RTUxMTk1RjMzQzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzEyMzZFNDExOTVG
MzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0LmNwcCAqLzsgfTsKKwkJQTcxREE4MEYxODgw
REJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxREE4MEUxODgwREJBQjAwRDFGMjk5IC8qIEpTU3Ry
aW5nSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUE3MjAyOEI2MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyMDI4QjQx
Nzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAgKi87IH07CiAJCUE3MjAy
OEI4MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjAyOEI1MTc5NzYwMUUwMDk4MDI4
QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlBNzIwMjhCQTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlv
bklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3MjAyOEI5MTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTUwLDYgKzExNTAs
MTAgQEAKIAkJQTdDQTNBRTgxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDQTNBRTIxN0RBNDFBRTAw
NjUzOEFGIC8qIEpTV2Vha01hcC5oICovOyB9OwogCQlBN0NBM0FFQjE3REE1MTY4MDA2NTM4QUYg
LyogV2Vha01hcERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTdDQTNBRTkxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCAqLzsg
fTsKIAkJQTdDQTNBRUMxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0NBM0FFQTE3REE1MTY4MDA2
NTM4QUYgLyogV2Vha01hcERhdGEuaCAqLzsgfTsKKwkJQTdEODAxQTQxODgwRDY2RTAwMjZDMzlC
IC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBN0Q4MDFBMTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcCAqLzsgfTsKKwkJQTdEODAxQTUxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5F
eGVjdXRhYmxlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTdEODAxQTIxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3RDgwMUE4MTg4
MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVp
bHRpbnMuY3BwICovOyB9OworCQlBN0Q4MDFBOTE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRp
bnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDgw
MUE3MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3RDg5Q0YyMTdBMEI4Q0MwMDc3M0FEOCAv
KiBERkdCYXNpY0Jsb2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3RDg5Q0UzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNwcCAq
LzsgfTsKIAkJQTdEODlDRjMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDg5
Q0U0MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5jcHAgKi87IH07CiAJ
CUE3RDg5Q0Y0MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODlDRTUxN0EwQjhD
QzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI0NjIsNiArMjQ2Niw4IEBACiAJCUE3MTIz
NkU0MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUT3Bjb2RlczMyXzY0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTcxOEY2MUExMTc1NEEyMTAwMjQ2NUE3IC8qIFJlZ0V4cEppdFRh
Ymxlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBKaXRUYWJsZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxOEY4MjExMTc4RUI0QjAwMjQ2NUE3
IC8qIGNyZWF0ZV9yZWdleF90YWJsZXMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhw
bGljaXRGaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgZmlsZUVuY29kaW5nID0gNDsgcGF0
aCA9IGNyZWF0ZV9yZWdleF90YWJsZXM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3
MURBODBEMTg4MEQ3MUYwMEQxRjI5OSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9ICJnZW5lcmF0ZS1qcy1idWlsdGlucyI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MURBODBFMTg4MERCQUIwMEQxRjI5OSAvKiBKU1N0
cmluZ0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdJ
bmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI0MTc5NzYwMUUw
MDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNDVGVzdFJ1bm5lclV0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTcyMDI4QjUxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGls
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NUZXN0UnVubmVyVXRpbHMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyMDI4QjkxNzk3NjAzRDAwOTgwMjhD
IC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTRnVuY3Rpb25JbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTkw
LDYgKzI1OTYsMTEgQEAKIAkJQTdDQTNBRTIxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYWtNYXAuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdDQTNBRTkxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBE
YXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYWtNYXBEYXRh
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdDQTNBRUExN0RBNTE2ODAwNjUz
OEFGIC8qIFdlYWtNYXBEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YWtNYXBEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUEwMTg4MEQ2
NkUwMDI2QzM5QiAvKiBBcnJheS5wcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmph
dmFzY3JpcHQ7IHBhdGggPSBBcnJheS5wcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE3RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnVpbHRpbkV4ZWN1dGFi
bGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTIxODgwRDY2RTAw
MjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBCdWlsdGluRXhlY3V0YWJsZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTdEODAxQTYxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ0J1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTcxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ0J1aWx0aW5zLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RDg5Q0UzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdC
YXNpY0Jsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Jh
c2ljQmxvY2suY3BwOyBwYXRoID0gZGZnL0RGR0Jhc2ljQmxvY2suY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBN0Q4OUNFNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNl
cnRpb25TZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQmxv
Y2tJbnNlcnRpb25TZXQuY3BwOyBwYXRoID0gZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdEODlDRTUxN0EwQjhDQzAwNzczQUQ4IC8q
IERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERGR0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBkZmcvREZHQmxvY2tJbnNlcnRpb25TZXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5MjYsNiArMjkzNyw3IEBACiAJCQkJ
ODYwNEY0RjIxNDNBNkM0NDAwQjI5NUY1IC8qIENoYW5nZUxvZyAqLywKIAkJCQlGNjkyQTg1NDAy
NTU1OTdEMDFGRjYwRjcgLyogY3JlYXRlX2hhc2hfdGFibGUgKi8sCiAJCQkJQTcxOEY4MjExMTc4
RUI0QjAwMjQ2NUE3IC8qIGNyZWF0ZV9yZWdleF90YWJsZXMgKi8sCisJCQkJQTcxREE4MEQxODgw
RDcxRjAwRDFGMjk5IC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zICovLAogCQkJCTQ1RTEyRDg4MDZB
NDlCMEYwMEU5REY4NCAvKiBqc2MuY3BwICovLAogCQkJCUY2OEVCQjhDMDI1NUQ0QzYwMUZGNjBG
NyAvKiBjb25maWcuaCAqLywKIAkJCQlGNUMyOTBFNjAyODRGOThFMDE4NjM1Q0EgLyogSmF2YVNj
cmlwdENvcmVQcmVmaXguaCAqLywKQEAgLTI5MzQsNiArMjk0Niw3IEBACiAJCQkJMTQzMkVCRDcw
QTM0Q0FENDAwNzE3QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4Q0IxMjBFRDEyQjRFMDAxRDY0OUYg
LyogYXNzZW1ibGVyICovLAogCQkJCUE1NENGMkVBMTg0RUE3MzkwMDIzN0YxOSAvKiBiaW5kaW5n
cyAqLywKKwkJCQlBN0Q4MDE5RjE4ODBENjZFMDAyNkMzOUIgLyogYnVpbHRpbnMgKi8sCiAJCQkJ
OTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovLAogCQkJCTdFMzlEODFEMEVD
MzhFRkEwMDNBRjExQSAvKiBieXRlY29tcGlsZXIgKi8sCiAJCQkJMUM5MDUxM0UwQkE5RTg4MzAw
ODFFOUQwIC8qIENvbmZpZ3VyYXRpb25zICovLApAQCAtMzUwOSw2ICszNTIyLDggQEAKIAkJNjUw
RkRGOEQwOUQwRkNBNzAwNzY5RTU0IC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQTdEODAxQTYxODgwRDZBODAwMjZDMzlC
IC8qIEpTQ0J1aWx0aW5zLmNwcCAqLywKKwkJCQlBN0Q4MDFBNzE4ODBENkE4MDAyNkMzOUIgLyog
SlNDQnVpbHRpbnMuaCAqLywKIAkJCQlCQzE4QzUyMzBFMTZGQzhBMDBCMzQ0NjAgLyogQXJyYXlQ
cm90b3R5cGUubHV0LmggKi8sCiAJCQkJQkNEMjAzRTcwRTE3MThGNDAwMkM3RTgyIC8qIERhdGVQ
cm90b3R5cGUubHV0LmggKi8sCiAJCQkJQTUxM0U1QzYxODVGOTQzNjAwN0U5NUFEIC8qIEluamVj
dGVkU2NyaXB0U291cmNlLmggKi8sCkBAIC0zODExLDYgKzM4MjYsNyBAQAogCQkJCUE3OTBERDZB
MTgyRjQ5OTcwMDU4ODgwNyAvKiBKU1NldEl0ZXJhdG9yLmggKi8sCiAJCQkJQkMwMkU5QjYwRTE4
NDJGQTAwMEY5Mjk3IC8qIEpTU3RyaW5nLmNwcCAqLywKIAkJCQlGNjkyQTg2MjAyNTU1OTdEMDFG
RjYwRjcgLyogSlNTdHJpbmcuaCAqLywKKwkJCQlBNzFEQTgwRTE4ODBEQkFCMDBEMUYyOTkgLyog
SlNTdHJpbmdJbmxpbmVzLmggKi8sCiAJCQkJODZFODU1MzgxMTFCOTk2ODAwMUFGNTFFIC8qIEpT
U3RyaW5nQnVpbGRlci5oICovLAogCQkJCTI2MDBCNUE0MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0
cmluZ0pvaW5lci5jcHAgKi8sCiAJCQkJMjYwMEI1QTUxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3Ry
aW5nSm9pbmVyLmggKi8sCkBAIC00NTYxLDYgKzQ1NzcsMTYgQEAKIAkJCXBhdGggPSByZW1vdGU7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlBN0Q4MDE5RjE4ODBENjZFMDAy
NkMzOUIgLyogYnVpbHRpbnMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVu
ID0gKAorCQkJCUE3RDgwMUEwMTg4MEQ2NkUwMDI2QzM5QiAvKiBBcnJheS5wcm90b3R5cGUuanMg
Ki8sCisJCQkJQTdEODAxQTExODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5j
cHAgKi8sCisJCQkJQTdEODAxQTIxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxl
cy5oICovLAorCQkJKTsKKwkJCXBhdGggPSBidWlsdGluczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CiAvKiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhI
ZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC00NjA2LDExICs0NjMyLDExIEBACiAJCQkJ
ODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNUNFRUUxNTE4N0YzQkFEMDBFNTVDOTkgLyogSW5zcGVjdG9yQWdlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTY1QzAyODVEMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUu
aCBpbiBIZWFkZXJzICovLAotIAkJCQkyQTY4Mjk1QjE4NzVGODA1MDBCNkMzRTIgLyogQ29weVdy
aXRlQmFycmllci5oIGluIEhlYWRlcnMgKi8sCi0gICAgICAgICAgICAgICAgMkE0RUM5MEMxODYw
RDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MkE2ODI5NUIxODc1RjgwNTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTJBNEVDOTBDMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZFNTkzMkE4MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5
U2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MzI0MzkzMTg1Njk3MDkwMDJFRDY5MiAvKiBD
b2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weSBpbiBIZWFkZXJzICovLAotIAkJCQlBNTMy
NDM5MjE4NTY5NzA5MDAyRUQ2OTIgLyogQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSBpbiBIZWFk
ZXJzICovLAorCQkJCUE1MzI0MzkyMTg1Njk3MDkwMDJFRDY5MiAvKiBDb2RlR2VuZXJhdG9ySW5z
cGVjdG9yLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NEYxN0VFMjc0OTAwQUJCMjE3IC8q
IFRlbXBSZWdpc3RlclNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwRTRCNjQxODgwOURENTAw
NjhBNDZEIC8qIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGRUI1OEMxNTE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTQ2MjIsNyArNDY0OCw3IEBACiAJCQkJMEY4MzM1QjgxNjM5QzFFQTAwMTQ0
M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQw
RTI5MTg3Q0E1RTYwMDg0M0IxMCAvKiBpbmxpbmUtYW5kLW1pbmlmeS1zdHlsZXNoZWV0cy1hbmQt
c2NyaXB0cy5weSBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwRTJCMTg3Q0E3NUIwMDg0M0IxMCAv
KiBqc21pbi5weSBpbiBIZWFkZXJzICovLAotIAkJCQlBNTMyNDM5ODE4NTZBNDg5MDAyRUQ2OTIg
LyogSW5zcGVjdG9ySlMuanNvbiBpbiBIZWFkZXJzICovLAorCQkJCUE1MzI0Mzk4MTg1NkE0ODkw
MDJFRDY5MiAvKiBJbnNwZWN0b3JKUy5qc29uIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMkEx
ODdDQTc1OTAwODQzQjEwIC8qIHh4ZC5wbCBpbiBIZWFkZXJzICovLAogCQkJCUZFQTA4NjIwMTgy
QjdBMDQwMEY2RDg1MSAvKiBCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYz
NTE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNDcz
Myw3ICs0NzU5LDcgQEAKIAkJCQlBMUEwMDlDMDE4MzFBMjJEMDBDRjg3MTEgLyogTWFjcm9Bc3Nl
bWJsZXJBUk02NC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQzlEQzUxMzI4REY4MjAwMkIyQUQ3
IC8qIERGR0J5dGVDb2RlUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyODE4N0RG
REVDMDA4M0I2ODcgLyogRlRMQXZhaWxhYmxlUmVjb3ZlcnkuaCBpbiBIZWFkZXJzICovLAotICAg
ICAgICAgICAgICAgIEE1OTNDRjg3MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJl
Z2lzdHJ5LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTkzQ0Y4NzE4NDAzOENBMDBCRkNFMjcgLyog
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNTZDMzYxNjI3
QjBBRDAwN0YyNzgzIC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEgLyogREZHQ2FwYWJp
bGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZGQzk1ODE0RUY5MEEyMDBDNzI1MzIgLyog
REZHQ0ZBUGhhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtNDg3Miw2ICs0ODk4LDcgQEAKIAkJCQkw
RkVBMEExRDE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkVBMEExRjE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU5NDU1OTMxODI0NzQ0NzAwQ0MzODQzIC8qIEpT
R2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdEODAxQTkxODgw
RDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEEw
QTE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjQ4NTMyQTE4N0RGREVDMDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRUEwQTIzMTcwOTYwNjkwMEJCNzIyQyAvKiBGVExDb21tb25WYWx1ZXMu
aCBpbiBIZWFkZXJzICovLApAQCAtNDk0Niw2ICs0OTczLDcgQEAKIAkJCQlCQzE4QzQwRjBFMTZG
NUNEMDBCMzQ0NjAgLyogSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzI1RjhCQ0Ux
NTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZCN0YzOTkxNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nSGVhZGVyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlBN0Q4MDFBNTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5QTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhp
bmdIZWFkZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5QjE1RUQ4RTQ2MDBG
MTY3QjIgLyogSW5kZXhpbmdUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNFRkFCMDE4MDVD
QTZEMDA0NzJDRTQgLyogSW5pdGlhbGl6ZUxMVk0uaCBpbiBIZWFkZXJzICovLApAQCAtNTIxOCw2
ICs1MjQ2LDcgQEAKIAkJCQlBNTMyNDM4ODE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNC
YWNrZW5kRGlzcGF0Y2hlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDU2MEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBQcm90ZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc0QzMzQjE2QUEyRDk1
MDA2MkYwMUQgLyogUHJvdG90eXBlTWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzFEQTgwRjE4
ODBEQkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjkzMzJBNDE0Q0E3REQ5MDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYwQ0Q0QzIxNUYxQTYwNzAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4TW9kZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJN0MwMDhDRTcxODc2MzFCNjAwOTU1QzI0IC8qIE1pY3JvdGFzay5o
IGluIEhlYWRlcnMgKi8sCkBAIC01ODM2LDYgKzU4NjUsNyBAQAogCQkJCUE3RDg5Q0YyMTdBMEI4
Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MEIw
ODMyMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTdEODlDRjMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUE3RDgwMUE0MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGlu
RXhlY3V0YWJsZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZFQzlEQzQxMzI4REY4MjAwMkIy
QUQ3IC8qIERGR0J5dGVDb2RlUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDgyRTIx
MTQxNzJDRTMwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZGRkM5NTcxNEVGOTBBMDAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtNTg1Miw2ICs1ODgyLDcgQEAKIAkJCQkwRkZGQzk1OTE0RUY5MEE2MDBDNzI1MzIg
LyogREZHQ1NFUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyRkM3NzIxNkUxMkY3MTAw
MzhEOTc2IC8qIERGR0RDRVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEYyQjk5MTcy
RjA0RkYwMDdEQkRBNSAvKiBERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJQTdEODAxQTgxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE3M0UxMzMwMTc5NjI0Q0QwMEU0REVBOCAvKiBERkdEZXNpcmVkU3RydWN0
dXJlQ2hhaW5zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyQzBGN0NEMTdCQkZDNUIwMDQ2NEZF
NCAvKiBERkdEZXNpcmVkVHJhbnNpdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFODUz
NEIxNzIzQ0RBNTAwQjYxOEY1IC8qIERGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTU5NzYsNyArNjAwNyw3IEBACiAJCQkJMEY2QjFDQzUxODYyQzQ3ODAwODQ1RDk3
IC8qIEZUTFVud2luZEluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5RDMzOUExODAzQURC
NzAwNzNDMkJDIC8qIEZUTFN0YWNrTWFwcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEx
NjE3MDZCQjkwMDBCQjcyMkMgLyogRlRMU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCi0gCQkJCTdD
MDA4Q0QyMTg2RjhBOTMwMDk1NUMyNCAvKiBKU1Byb21pc2VGdW5jdGlvbnMuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJN0MwMDhDRDIxODZGOEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlzZUZ1bmN0aW9u
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNCNTE4NUZDOUU5MDA4NDVEOTcgLyogRlRM
SlNDYWxsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkUxMTcxNzhFMUMwMDY5MEM3RiAv
KiBGVExUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5M0NGN0MxODQwMzYwMzAwQkZD
RTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uM2ViNDJmNWNjNDMzZjE2MzYzNDNiZmM5ODJhYTJhYWZiMzM2ZTk0OQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheS5wcm90b3R5
cGUuanMKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKK2Z1bmN0aW9uIGV2ZXJ5KGNhbGxiYWNrIC8qLCB0aGlzQXJnICovKSB7Cisg
ICAgInVzZSBzdHJpY3QiOworICAgIGlmICh0aGlzID09PSBudWxsKQorICAgICAgICB0aHJvdyBu
ZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8
IG5vdCBiZSBudWxsIik7CisgICAgCisgICAgaWYgKHRoaXMgPT09IHVuZGVmaW5lZCkKKyAgICAg
ICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0
aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkIik7CisgICAgCisgICAgdmFyIGFycmF5ID0gQE9i
amVjdCh0aGlzKTsKKyAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoID4+PiAwOworICAgIAor
ICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICJmdW5jdGlvbiIpCisgICAgICAgIHRocm93IG5l
dyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1
bmN0aW9uIik7CisKKyAgICB2YXIgdGhpc0FyZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJn
dW1lbnRzWzFdIDogdW5kZWZpbmVkOworICAgIAorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVu
Z3RoOyBpKyspIHsKKyAgICAgICAgaWYgKCEoaSBpbiBhcnJheSkpCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgaWYgKCFjYWxsYmFjay5AY2FsbCh0aGlzQXJnLCBhcnJheVtpXSwgaSwg
YXJyYXkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QnVpbHRpbkV4ZWN1dGFibGVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODhlNTgyMzM5ZmY3NWE5YTc3Zjgz
NDNjY2NjMmZiZjY0MGVhOWZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKQEAgLTAsMCArMSw5MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorCisjaW5jbHVkZSAiSlND
ZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlBhcnNlci5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
QnVpbHRpbkV4ZWN1dGFibGVzOjpCdWlsdGluRXhlY3V0YWJsZXMoVk0mIHZtKQorICAgIDogbV92
bSh2bSkKKyNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1
bmN0aW9uTmFtZSwgbGVuZ3RoKSAsIG1fIyNuYW1lIyNTb3VyY2UobWFrZVNvdXJjZShTdHJpbmdJ
bXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChzXyMjbmFtZSwgbGVuZ3RoKSwgU3RyaW5nSW1wbDo6Y3Jl
YXRlRnJvbUxpdGVyYWwoIjxidWlsdGluPiIpKSkKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOKElO
SVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJTl9T
VFJJTkdTCit7Cit9CisKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0
YWJsZXM6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
Y29uc3QgSWRlbnRpZmllciYgbmFtZSkKK3sKKyAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lOworICAgIFBhcnNlckVycm9yIGVycm9yOworICAgIFJlZlB0cjxQcm9n
cmFtTm9kZT4gcHJvZ3JhbSA9IHBhcnNlPFByb2dyYW1Ob2RlPigmbV92bSwgc291cmNlLCAwLCBJ
ZGVudGlmaWVyKCksIEpTUGFyc2VCdWlsdGluLCBKU1BhcnNlUHJvZ3JhbUNvZGUsIGVycm9yLCAm
cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CisKKyAgICBpZiAoIXByb2dyYW0pIHsKKyAgICAg
ICAgZGF0YUxvZygiRmF0YWwgZXJyb3IgY29tcGlsaW5nIGJ1aWx0aW4gZnVuY3Rpb24gJyIsIG5h
bWUuc3RyaW5nKCksICInOiAiLCBlcnJvci5tX21lc3NhZ2UpOworICAgICAgICBDUkFTSCgpOwor
ICAgIH0KKworICAgIFN0YXRlbWVudE5vZGUqIGV4cHJTdGF0ZW1lbnQgPSBwcm9ncmFtLT5zaW5n
bGVTdGF0ZW1lbnQoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChleHByU3RhdGVtZW50KTsKKyAgICBS
RUxFQVNFX0FTU0VSVChleHByU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CisgICAgRXhw
cmVzc2lvbk5vZGUqIGZ1bmNFeHByID0gc3RhdGljX2Nhc3Q8RXhwclN0YXRlbWVudE5vZGUqPihl
eHByU3RhdGVtZW50KS0+ZXhwcigpOworICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmNFeHByKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwci0+aXNGdW5jRXhwck5vZGUoKSk7CisgICAgRnVuY3Rp
b25Cb2R5Tm9kZSogYm9keSA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGZ1bmNFeHByKS0+
Ym9keSgpOworICAgIFJFTEVBU0VfQVNTRVJUKCFwcm9ncmFtLT5oYXNDYXB0dXJlZFZhcmlhYmxl
cygpKTsKKyAgICAKKyAgICBib2R5LT5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3RO
ZXdsaW5lKTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5KTsKKyAgICBSRUxFQVNFX0FTU0VSVChi
b2R5LT5pZGVudCgpLmlzTnVsbCgpKTsKKyAgICAKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGFzc3Vt
ZXMgYW4gaW5wdXQgc3RyaW5nIHRoYXQgd291bGQgcmVzdWx0IGluIGEgc2luZ2xlIGFub255bW91
cyBmdW5jdGlvbiBleHByZXNzaW9uLgorICAgIGJvZHktPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9u
QmVmb3JlTGFzdE5ld2xpbmUpOworICAgIFJFTEVBU0VfQVNTRVJUKGJvZHkpOworICAgIGZvciAo
Y29uc3QgYXV0byYgY2xvc2VkVmFyaWFibGUgOiBwcm9ncmFtLT5jbG9zZWRWYXJpYWJsZXMoKSkg
eworICAgICAgICBpZiAoY2xvc2VkVmFyaWFibGUgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5hcmd1
bWVudHMuaW1wbCgpKQorICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAgIGlmIChj
bG9zZWRWYXJpYWJsZSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQuaW1w
bCgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNsb3Nl
ZFZhcmlhYmxlLT5pc0VtcHR5VW5pcXVlKCkpOworICAgIH0KKyAgICBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OmNyZWF0ZSgmbV92bSwgc291cmNlLCBib2R5LCB0cnVlLCBVbmxpbmtlZEJ1aWx0aW5GdW5j
dGlvbik7CisgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5tX25hbWVWYWx1ZS5zZXQobV92bSwgZnVu
Y3Rpb25FeGVjdXRhYmxlLCBqc1N0cmluZygmbV92bSwgbmFtZS5zdHJpbmcoKSkpOworICAgIHJl
dHVybiBmdW5jdGlvbkV4ZWN1dGFibGU7Cit9CisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fRVhF
Q1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKK1VubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6Om5hbWUjI0V4ZWN1dGFibGUoKSBcCit7XAor
ICAgIGlmICghbV8jI25hbWUjI0V4ZWN1dGFibGUpXAorICAgICAgICBtXyMjbmFtZSMjRXhlY3V0
YWJsZSA9IGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKG1fIyNuYW1lIyNTb3VyY2UsIG1fdm0ucHJv
cGVydHlOYW1lcy0+ZnVuY3Rpb25OYW1lKTtcCisgICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRh
YmxlLmdldCgpO1wKK30KK0pTQ19GT1JFQUNIX0JVSUxUSU4oREVGSU5FX0JVSUxUSU5fRVhFQ1VU
QUJMRVMpCisjdW5kZWYgRVhQT1NFX0JVSUxUSU5fU09VUkNFUworCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDlhMTllMjYxNTA3OTRhNjY5ZWM5OGUzOTliZjY3ZjdmNzEwNjQxOQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMu
aApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBCdWlsdGluRXhlY3V0YWJsZXNfaAorI2RlZmluZSBCdWlsdGluRXhl
Y3V0YWJsZXNfaAorCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKKyNpbmNsdWRlICJTb3VyY2VD
b2RlLmgiCisjaW5jbHVkZSAiV2Vhay5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisK
K25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2Ns
YXNzIElkZW50aWZpZXI7CitjbGFzcyBWTTsKKworY2xhc3MgQnVpbHRpbkV4ZWN1dGFibGVzIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxCdWlsdGluRXhlY3V0YWJsZXM+IGNyZWF0
ZShWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEJ1aWx0aW5FeGVj
dXRhYmxlcyh2bSkpOworICAgIH0KKyAgICAKKyNkZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhFQ1VU
QUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKK1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBuYW1lIyNFeGVjdXRhYmxlKCk7IFwKK2NvbnN0IFNvdXJjZUNvZGUmIG5hbWUjI1Nv
dXJjZSgpIHsgcmV0dXJuIG1fIyNuYW1lIyNTb3VyY2U7IH0KKyAgICAKKyAgICBKU0NfRk9SRUFD
SF9CVUlMVElOKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlM
VElOX1NPVVJDRVMKKyAgICAKK3ByaXZhdGU6CisgICAgQnVpbHRpbkV4ZWN1dGFibGVzKFZNJik7
CisgICAgVk0mIG1fdm07CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1
aWx0aW5FeGVjdXRhYmxlKGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJik7Cisj
ZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUs
IGxlbmd0aClcCisgICAgU291cmNlQ29kZSBtXyMjbmFtZSMjU291cmNlOyBcCisgICAgV2VhazxV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4gbV8jI25hbWUjI0V4ZWN1dGFibGU7CisgICAgSlND
X0ZPUkVBQ0hfQlVJTFRJTihERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYg
REVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCit9OworCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAyNjNlYzdjYWRm
NGY3OWNhODEwMjQ0MWU2MmJmMmEwNWI1ZGRjM2YyLi43NTE1MDY1NDIzNzZkN2VkYzU5OWFhMDBm
OWIxMjY4NWNkYTM1MmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcApAQCAtNDMsMTEgKzQzLDEzIEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVk
ZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKLSNpbmNsdWRlICJKU0NK
U1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNsdWRlICJMTEludEVudHJ5
cG9pbnQuaCIKICNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisjaW5jbHVkZSAiTmF0
aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAj
aW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBvbHltb3JwaGljUHV0QnlJZExpc3Qu
aCIKICNpbmNsdWRlICJSZWR1Y2VXaGl0ZXNwYWNlLmgiCkBAIC0xNTY5LDcgKzE1NzEsNyBAQCBD
b2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVu
bGlua2VkQ29kZUJsb2NrKiB1bmxpbgogCiAgICAgc2V0Q29uc3RhbnRSZWdpc3RlcnModW5saW5r
ZWRDb2RlQmxvY2stPmNvbnN0YW50UmVnaXN0ZXJzKCkpOwogICAgIGlmICh1bmxpbmtlZENvZGVC
bG9jay0+dXNlc0dsb2JhbE9iamVjdCgpKQotICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW3Vu
bGlua2VkQ29kZUJsb2NrLT5nbG9iYWxPYmplY3RSZWdpc3RlcigpLm9mZnNldCgpXS5zZXQoKm1f
dm0sIG93bmVyRXhlY3V0YWJsZSwgbV9nbG9iYWxPYmplY3QuZ2V0KCkpOworICAgICAgICBtX2Nv
bnN0YW50UmVnaXN0ZXJzW3VubGlua2VkQ29kZUJsb2NrLT5nbG9iYWxPYmplY3RSZWdpc3Rlcigp
LnRvQ29uc3RhbnRJbmRleCgpXS5zZXQoKm1fdm0sIG93bmVyRXhlY3V0YWJsZSwgbV9nbG9iYWxP
YmplY3QuZ2V0KCkpOwogICAgIG1fZnVuY3Rpb25EZWNscy5yZXNpemVUb0ZpdCh1bmxpbmtlZENv
ZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCkpOwogICAgIGZvciAoc2l6ZV90IGNvdW50
ID0gdW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpLCBpID0gMDsgaSA8
IGNvdW50OyArK2kpIHsKICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlu
a2VkRXhlY3V0YWJsZSA9IHVubGlua2VkQ29kZUJsb2NrLT5mdW5jdGlvbkRlY2woaSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggNjhiYzAzNzlmNTc0
NGM5YThmNzQzMWRiNjRmOGFiNTRlNmUxMDUzZi4uNDk5NWM1MmNmOGIyYjFiNGQ2MjgwNDUzZWVk
MjdjNzc0YTQ5NTU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaApAQCAtNTYsNyArNTYsNiBAQAogI2luY2x1ZGUgIkhhbmRsZXJJbmZvLmgiCiAjaW5jbHVk
ZSAiT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCi0jaW5j
bHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlB1dFByb3BlcnR5U2xvdC5oIgogI2luY2x1
ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdX
YXRjaHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9maWxlZENv
ZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAKaW5kZXggOTg2ZTAzZDBjYmE3MTg1YjM5
Y2VlMDIzZjRhYjZiYzliOGNjYjZlNC4uNmYyZDVlYmExY2E0NWRkZWIxZGY2NWZkMDUxMjMzZTVm
MTM4YmUwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2Zp
bGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQu
Y3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAi
REZHQ29tbW9uLmgiCiAjaW5jbHVkZSAiREZHRXhpdFByb2ZpbGUuaCIKKyNpbmNsdWRlICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggMWRmYjVh
YzZhZDkwOTNmOGY4MTEwMWVmN2YyZTYxMjMxMWFjMTkzOS4uNDMzOTBkOTY1ZmM1MDM0MDE2Zjdi
ZmZmMjNlNjhiYjFlMDU0NTUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC00OSw5ICs0OSw5IEBAIGNvbnN0IENs
YXNzSW5mbyBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkUHJv
Z3JhbUNvZGVCbG9jayIsCiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRFdmFsQ29kZUJsb2NrOjpz
X2luZm8gPSB7ICJVbmxpbmtlZEV2YWxDb2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKFVubGlua2VkRXZhbENvZGVCbG9jaykgfTsKIGNvbnN0IENsYXNz
SW5mbyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKSB9OwogCi1zdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhWTSYgdm0sIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVT
cGVjaWFsaXphdGlvbktpbmQga2luZCwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmls
ZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorc3RhdGljIFVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZtLCBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1v
ZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGZ1bmN0
aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yKQogewotICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlO
b2RlPiBib2R5ID0gcGFyc2U8RnVuY3Rpb25Cb2R5Tm9kZT4oJnZtLCBzb3VyY2UsIGV4ZWN1dGFi
bGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT5pc0luU3Ry
aWN0Q29udGV4dCgpID8gSlNQYXJzZVN0cmljdCA6IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VGdW5j
dGlvbkNvZGUsIGVycm9yKTsKKyAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSA9IHBh
cnNlPEZ1bmN0aW9uQm9keU5vZGU+KCZ2bSwgc291cmNlLCBleGVjdXRhYmxlLT5wYXJhbWV0ZXJz
KCksIGV4ZWN1dGFibGUtPm5hbWUoKSwgZXhlY3V0YWJsZS0+dG9TdHJpY3RuZXNzKCksIEpTUGFy
c2VGdW5jdGlvbkNvZGUsIGVycm9yKTsKIAogICAgIGlmICghYm9keSkgewogICAgICAgICBBU1NF
UlQoZXJyb3IubV90eXBlICE9IFBhcnNlckVycm9yOjpFcnJvck5vbmUpOwpAQCAtNjMsNyArNjMs
NyBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNv
ZGVCbG9jayhWTSYgdm0sIFVubGlua2VkRnVuYwogICAgIGJvZHktPmZpbmlzaFBhcnNpbmcoZXhl
Y3V0YWJsZS0+cGFyYW1ldGVycygpLCBleGVjdXRhYmxlLT5uYW1lKCksIGV4ZWN1dGFibGUtPmZ1
bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZSgpKTsKICAgICBleGVjdXRhYmxlLT5yZWNvcmRQYXJz
ZShib2R5LT5mZWF0dXJlcygpLCBib2R5LT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKICAgICAK
LSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrOjpjcmVhdGUoJnZtLCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFibGVJbmZvKGJvZHkt
Pm5lZWRzQWN0aXZhdGlvbigpLCBib2R5LT51c2VzRXZhbCgpLCBib2R5LT5pc1N0cmljdE1vZGUo
KSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKCZ2bSwgRnVu
Y3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5mbyhib2R5LT5uZWVkc0FjdGl2YXRpb24oKSwgYm9keS0+
dXNlc0V2YWwoKSwgYm9keS0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVj
dCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uKSk7CiAgICAgT3duUHRy
PEJ5dGVjb2RlR2VuZXJhdG9yPiBnZW5lcmF0b3IoYWRvcHRQdHIobmV3IEJ5dGVjb2RlR2VuZXJh
dG9yKHZtLCBib2R5LmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlKSkp
OwogICAgIGVycm9yID0gZ2VuZXJhdG9yLT5nZW5lcmF0ZSgpOwogICAgIGJvZHktPmRlc3Ryb3lE
YXRhKCk7CkBAIC04MiwxMyArODIsMTQgQEAgdW5zaWduZWQgVW5saW5rZWRDb2RlQmxvY2s6OmFk
ZE9yRmluZENvbnN0YW50KEpTVmFsdWUgdikKICAgICByZXR1cm4gYWRkQ29uc3RhbnQodik7CiB9
CiAKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSkKK1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9k
eU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQg
a2luZCkKICAgICA6IEJhc2UoKnZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX251bUNhcHR1cmVkVmFy
aWFibGVzKG5vZGUtPmNhcHR1cmVkVmFyaWFibGVDb3VudCgpKQogICAgICwgbV9mb3JjZVVzZXNB
cmd1bWVudHMobm9kZS0+dXNlc0FyZ3VtZW50cygpKQogICAgICwgbV9pc0luU3RyaWN0Q29udGV4
dChub2RlLT5pc1N0cmljdE1vZGUoKSkKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMobm9k
ZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkKICAgICAsIG1faXNGcm9tR2xvYmFsQ29kZShpc0Zy
b21HbG9iYWxDb2RlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihraW5kID09IFVubGlua2Vk
QnVpbHRpbkZ1bmN0aW9uKQogICAgICwgbV9uYW1lKG5vZGUtPmlkZW50KCkpCiAgICAgLCBtX2lu
ZmVycmVkTmFtZShub2RlLT5pbmZlcnJlZE5hbWUoKSkKICAgICAsIG1fcGFyYW1ldGVycyhub2Rl
LT5wYXJhbWV0ZXJzKCkpCkBAIC0xNjYsNyArMTY3LDcgQEAgVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jayogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNvZGVCbG9ja0ZvcihWTSYgdm0sIGNv
bnMKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
ayogcmVzdWx0ID0gZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayh2bSwgdGhpcywgc291cmNlLCBz
cGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7Cisg
ICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVGdW5jdGlvbkNv
ZGVCbG9jayh2bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9k
ZSwgcHJvZmlsZXJNb2RlLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVu
Y3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBlcnJvcik7CiAgICAgCiAgICAgaWYgKGVy
cm9yLm1fdHlwZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKQogICAgICAgICByZXR1cm4gMDsK
QEAgLTIxMCw2ICsyMTEsNyBAQCBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2so
Vk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZVR5cGUgY29kZQogICAgICwgbV9pc1N0
cmljdE1vZGUoaW5mby5tX2lzU3RyaWN0TW9kZSkKICAgICAsIG1faXNDb25zdHJ1Y3RvcihpbmZv
Lm1faXNDb25zdHJ1Y3RvcikKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMoZmFsc2UpCisg
ICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8ubV9pc0J1aWx0aW5GdW5jdGlvbikKICAgICAs
IG1fZmlyc3RMaW5lKDApCiAgICAgLCBtX2xpbmVDb3VudCgwKQogICAgICwgbV9lbmRDb2x1bW4o
VUlOVF9NQVgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5oCmluZGV4IGI5ZGFlMmQ1YzY5Yzc5Y2VhYWE4MDIzZDJhM2ExZjI2ZDQ2MDk0
M2IuLmFiZjZjZjM1YjkzMDZhNGY3YTMwMWFiMGRmNzY2NmVjNjEyZTM3OWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC02
NiwyNiArNjYsMzUgQEAgdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlOwogdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZExMSW50Q2FsbExpbmtJbmZvOwogCiBz
dHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3Rp
dmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVj
dG9yKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNF
dmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRp
bkZ1bmN0aW9uKQogICAgICAgICA6IG1fbmVlZHNBY3RpdmF0aW9uKG5lZWRzQWN0aXZhdGlvbikK
ICAgICAgICAgLCBtX3VzZXNFdmFsKHVzZXNFdmFsKQogICAgICAgICAsIG1faXNTdHJpY3RNb2Rl
KGlzU3RyaWN0TW9kZSkKICAgICAgICAgLCBtX2lzQ29uc3RydWN0b3IoaXNDb25zdHJ1Y3RvcikK
KyAgICAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGlzQnVpbHRpbkZ1bmN0aW9uKQogICAgIHsK
ICAgICB9Ci0gICAgYm9vbCBtX25lZWRzQWN0aXZhdGlvbjsKLSAgICBib29sIG1fdXNlc0V2YWw7
Ci0gICAgYm9vbCBtX2lzU3RyaWN0TW9kZTsKLSAgICBib29sIG1faXNDb25zdHJ1Y3RvcjsKKyAg
ICBib29sIG1fbmVlZHNBY3RpdmF0aW9uIDogMTsKKyAgICBib29sIG1fdXNlc0V2YWwgOiAxOwor
ICAgIGJvb2wgbV9pc1N0cmljdE1vZGUgOiAxOworICAgIGJvb2wgbV9pc0NvbnN0cnVjdG9yIDog
MTsKKyAgICBib29sIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOworfTsKKworZW51bSBVbmxpbmtl
ZEZ1bmN0aW9uS2luZCB7CisgICAgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwKKyAgICBVbmxpbmtl
ZEJ1aWx0aW5GdW5jdGlvbiwKIH07CiAKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
IDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6CisgICAgZnJpZW5kIGNsYXNzIEJ1aWx0aW5FeGVj
dXRhYmxlczsKICAgICBmcmllbmQgY2xhc3MgQ29kZUNhY2hlOworICAgIGZyaWVuZCBjbGFzcyBW
TTsKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogY3JlYXRlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5j
dGlvbkJvZHlOb2RlKiBub2RlLCBib29sIGlzRnJvbUdsb2JhbENvZGUgPSBmYWxzZSkKKyAgICBz
dGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSogbm9kZSwgYm9vbCBpc0Zyb21HbG9i
YWxDb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCkKICAgICB7
Ci0gICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVhcCkp
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgaXNGcm9tR2xvYmFsQ29kZSk7Cisg
ICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVhcCkpIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgaXNGcm9tR2xvYmFsQ29kZSwgdW5saW5r
ZWRGdW5jdGlvbktpbmQpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oKnZtKTsK
ICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KQEAgLTk5LDYgKzEwOCwxNCBAQCBwdWJs
aWM6CiAgICAgfQogICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0OwogICAgIGJvb2wg
aXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0OyB9
CisgICAgSlNQYXJzZXJTdHJpY3RuZXNzIHRvU3RyaWN0bmVzcygpIGNvbnN0CisgICAgeworICAg
ICAgICBpZiAobV9pc0J1aWx0aW5GdW5jdGlvbikKKyAgICAgICAgICAgIHJldHVybiBKU1BhcnNl
QnVpbHRpbjsKKyAgICAgICAgaWYgKG1faXNJblN0cmljdENvbnRleHQpCisgICAgICAgICAgICBy
ZXR1cm4gSlNQYXJzZVN0cmljdDsKKyAgICAgICAgcmV0dXJuIEpTUGFyc2VOb3JtYWw7CisgICAg
fQogICAgIEZ1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZSBmdW5jdGlvbk5hbWVJc0luU2NvcGVU
b2dnbGUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZTsgfQog
CiAgICAgdW5zaWduZWQgZmlyc3RMaW5lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdExp
bmVPZmZzZXQ7IH0KQEAgLTE0Miw4ICsxNTksMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25z
dCBib29sIGhhc0ltbW9ydGFsU3RydWN0dXJlID0gdHJ1ZTsKICAgICBzdGF0aWMgdm9pZCBkZXN0
cm95KEpTQ2VsbCopOwogCisgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KKwogcHJpdmF0ZToKLSAgICBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZShWTSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlv
bkJvZHlOb2RlKiwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZShWTSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbkJv
ZHlOb2RlKiwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCk7CiAg
ICAgV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fY29kZUJsb2NrRm9y
Q2FsbDsKICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV9jb2Rl
QmxvY2tGb3JDb25zdHJ1Y3Q7CiAKQEAgLTE1Miw2ICsxNzEsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9pc0luU3RyaWN0Q29udGV4dCA6IDE7CiAgICAgYm9vbCBtX2hhc0NhcHR1cmVkVmFyaWFi
bGVzIDogMTsKICAgICBib29sIG1faXNGcm9tR2xvYmFsQ29kZSA6IDE7CisgICAgYm9vbCBtX2lz
QnVpbHRpbkZ1bmN0aW9uIDogMTsKIAogICAgIElkZW50aWZpZXIgbV9uYW1lOwogICAgIElkZW50
aWZpZXIgbV9pbmZlcnJlZE5hbWU7CkBAIC0zMTksNiArMzM5LDggQEAgcHVibGljOgogICAgIHZv
aWQgc2V0SXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0
aW9uKSB7IG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uID0gaXNOdW1lcmljQ29tcGFyZUZ1bmN0
aW9uOyB9CiAgICAgYm9vbCBpc051bWVyaWNDb21wYXJlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQogCisgICAgYm9vbCBpc0J1aWx0aW5GdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KKyAgICAKICAgICB2
b2lkIHNocmlua1RvRml0KCkKICAgICB7CiAgICAgICAgIG1fanVtcFRhcmdldHMuc2hyaW5rVG9G
aXQoKTsKQEAgLTUwMCw2ICs1MjIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1N0cmljdE1v
ZGUgOiAxOwogICAgIGJvb2wgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICBib29sIG1faGFzQ2Fw
dHVyZWRWYXJpYWJsZXMgOiAxOworICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CiAg
ICAgdW5zaWduZWQgbV9maXJzdExpbmU7CiAgICAgdW5zaWduZWQgbV9saW5lQ291bnQ7CiAgICAg
dW5zaWduZWQgbV9lbmRDb2x1bW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDY4MTBhYjgwMDJjZTZi
YjhkNzhlN2ZmMjIyN2Y0YzZlYTdiNzU4YzIuLmVjNTIxYjUzMDQ2MzkyM2U3NGMwMTBmYTIxOGU1
OWVkMmE5YTNjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0xNzUsNiArMTc1LDcgQEAgQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dy
YW1Ob2RlLCBVbmxpbmtlZFAKICNlbmRpZgogICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkK
ICAgICAsIG1fZXhwcmVzc2lvblRvb0RlZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0
aW9uKGZhbHNlKQogewogICAgIGlmIChtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKQogICAgICAgICBt
X2NvZGVCbG9jay0+c2V0TmVlZHNGdWxsU2NvcGVDaGFpbih0cnVlKTsKQEAgLTIyMiw3ICsyMjMs
MTMgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rp
b25Cb2R5Tm9kZSogZnVuY3Rpb25Cb2R5LCBVbmwKICNlbmRpZgogICAgICwgbV91c2VzRXhjZXB0
aW9ucyhmYWxzZSkKICAgICAsIG1fZXhwcmVzc2lvblRvb0RlZXAoZmFsc2UpCisgICAgLCBtX2lz
QnVpbHRpbkZ1bmN0aW9uKGNvZGVCbG9jay0+aXNCdWlsdGluRnVuY3Rpb24oKSkKIHsKKyAgICBp
ZiAobV9pc0J1aWx0aW5GdW5jdGlvbikgeworICAgICAgICBtX3Nob3VsZEVtaXRQcm9maWxlSG9v
a3MgPSBmYWxzZTsKKyAgICAgICAgbV9zaG91bGRFbWl0RGVidWdIb29rcyA9IGZhbHNlOworICAg
IH0KKwogICAgIGlmIChtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKQogICAgICAgICBtX2NvZGVCbG9j
ay0+c2V0TmVlZHNGdWxsU2NvcGVDaGFpbih0cnVlKTsKIApAQCAtNDM4LDYgKzQ0NSw3IEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFs
Tm9kZSwgVW5saW5rZWRFdmFsQ29kCiAjZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFs
c2UpCiAgICAgLCBtX2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5G
dW5jdGlvbihmYWxzZSkKIHsKICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNGdWxsU2NvcGVDaGFp
bih0cnVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDRlOWYyMTNjOWJmYTZjZjE5NGIxYTE0ZmU5MTll
ODMzMzdhZTM1ZDkuLjE1ODQyNzRiNzhlYTZjMGJkMGVmYjBiOTgyNWM4MThiZTBkYmMwNjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKQEAgLTQ2MSw3ICs0NjEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
Ym9vbCBzaG91bGRFbWl0RGVidWdIb29rcygpIHsgcmV0dXJuIG1fc2hvdWxkRW1pdERlYnVnSG9v
a3M7IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOyB9Ci0KKyAgICAgICAgCisgICAgICAgIGJv
b2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9u
OyB9CisgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMYWJlbDsK
ICAgICAgICAgCkBAIC01NDMsNyArNTQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAog
ICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbWFrZUZ1bmN0aW9uKEZ1bmN0aW9u
Qm9keU5vZGUqIGJvZHkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgYm9k
eSk7CisgICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0
ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIGJvZHksIGZhbHNlLCBpc0J1aWx0aW5GdW5j
dGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9u
KTsKICAgICAgICAgfQogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbml0TGF6eVJlZ2lzdGVy
KFJlZ2lzdGVySUQqKTsKQEAgLTY3Nyw2ICs2NzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBib29sIG1fdXNlc0V4Y2VwdGlvbnM7CiAgICAgICAgIGJvb2wgbV9leHByZXNzaW9uVG9v
RGVlcDsKKyAgICAgICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9uOwogICAgIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cAppbmRleCAxZmZkNGYzMTE4ODJkMGVlNWM1NTE0ZjViOGIyNTkzOWQ5NzVlMzc5Li42MmVjYTM2
YTEwZDc3MDhhOTI4ZDQzYWMwM2YyZmM4NjE1Y2VjYTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0yNiwxMCArMjYs
MTAgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCi0jaW5jbHVk
ZSAiTm9kZUNvbnN0cnVjdG9ycy5oIgogCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIK
ICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgog
I2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNGdW5j
dGlvbi5oIgpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNs
dWRlICJMYWJlbFNjb3BlLmgiCiAjaW5jbHVkZSAiTGV4ZXIuaCIKKyNpbmNsdWRlICJOb2RlQ29u
c3RydWN0b3JzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBhcnNlci5o
IgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCkBAIC01MzUsMzYgKzUzNiwzOSBAQCBS
ZWdpc3RlcklEKiBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgUmVmUHRyPExhYmVsPiBlbmQgPSBnZW5lcmF0b3Iu
bmV3TGFiZWwoKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0
Tm9kZShtX2Jhc2UpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVz
c2lvbkRpdm90KCksIHN1YmV4cHJlc3Npb25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwot
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChn
ZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIG1faWRlbnQpOworICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5l
cmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0
eU5hbWVzKCkuY2FsbCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2Vu
ZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBmdW5jdGlvbi5nZXQoKSk7Ci0gICAgZ2VuZXJh
dG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkNhbGwoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdl
dCgpKTsKKyAgICBib29sIGVtaXRDYWxsQ2hlY2sgPSAhZ2VuZXJhdG9yLmlzQnVpbHRpbkZ1bmN0
aW9uKCk7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2spCisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVt
cElmTm90RnVuY3Rpb25DYWxsKGZ1bmN0aW9uLmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7CisKICAg
ICB7CiAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2Rl
LT5tX2V4cHIpIHsKICAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIG9sZExpc3QgPSBtX2Fy
Z3MtPm1fbGlzdE5vZGU7CiAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBtX2FyZ3Mt
Pm1fbGlzdE5vZGUtPm1fbmV4dDsKLQorICAgICAgICAgICAgCiAgICAgICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50
ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICBDYWxsQXJndW1l
bnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG9sZExpc3QtPm1fZXhw
cik7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJl
YWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZv
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRKdW1wKGVuZC5nZXQoKSk7Ci0KICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9s
ZExpc3Q7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
cmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRp
b24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1
bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2Fk
KGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0
KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0
KCkpOwogICAgICAgICB9CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwu
Z2V0KCkpOwotICAgIHsKLSAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVy
YXRvciwgbV9hcmdzKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMu
dGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwo
cmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNh
bGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgaWYg
KGVtaXRDYWxsQ2hlY2spIHsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7
CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOworICAgICAgICB7
CisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2Fy
Z3MpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1Jl
Z2lzdGVyKCksIGJhc2UuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJl
dHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxs
QXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICB9
CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICB9Ci0gICAgZ2Vu
ZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0KCkpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZS5nZXQo
KTsKIH0KIApAQCAtNTg1LDY1ICs1ODksNjcgQEAgUmVnaXN0ZXJJRCogQXBwbHlGdW5jdGlvbkNh
bGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAg
ICBSZWZQdHI8TGFiZWw+IGVuZCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYmFzZSk7CiAgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lv
blN0YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1
bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24o
ZHN0KSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0
aW9uOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5h
bERlc3RpbmF0aW9uKGRzdCwgZnVuY3Rpb24uZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SnVt
cElmTm90RnVuY3Rpb25BcHBseShmdW5jdGlvbi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkpOwotICAg
IHsKLSAgICAgICAgaWYgKG1heUJlQ2FsbCkgewotICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9s
aXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcikgewotICAgICAgICAgICAgICAg
IEFyZ3VtZW50TGlzdE5vZGUqIG9sZExpc3QgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7Ci0gICAgICAg
ICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KSB7Ci0gICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByLT5pc1NpbXBs
ZUFycmF5KCkpOwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fYXJncy0+bV9saXN0Tm9k
ZS0+bV9uZXh0LT5tX25leHQpOwotICAgICAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5v
ZGUgPSBzdGF0aWNfY2FzdDxBcnJheU5vZGUqPihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+
bV9leHByKS0+dG9Bcmd1bWVudExpc3QoZ2VuZXJhdG9yLnZtKCksIDAsIDApOwotICAgICAgICAg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVt
aXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1f
YXJncyk7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1l
bnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwotICAgICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQo
KSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0Owot
ICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2Vu
ZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQo
KSk7Ci0gICAgICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5l
cmF0b3IsIG1fYXJncyk7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShj
YWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwotICAgICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5j
dGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBvbGRMaXN0OworICAgIGJvb2wgZW1pdENhbGxDaGVj
ayA9ICFnZW5lcmF0b3IuaXNCdWlsdGluRnVuY3Rpb24oKTsKKyAgICBpZiAoZW1pdENhbGxDaGVj
aykgeworICAgICAgICBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3Iu
dGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVz
KCkuYXBwbHkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHko
ZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKKyAgICB9CisgICAgaWYgKG1heUJlQ2Fs
bCkgeworICAgICAgICBpZiAobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9k
ZS0+bV9leHByKSB7CisgICAgICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBvbGRMaXN0ID0gbV9h
cmdzLT5tX2xpc3ROb2RlOworICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9u
ZXh0KSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0
LT5tX2V4cHItPmlzU2ltcGxlQXJyYXkoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2Fy
Z3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9uZXh0KTsKKyAgICAgICAgICAgICAgICBtX2FyZ3Mt
Pm1fbGlzdE5vZGUgPSBzdGF0aWNfY2FzdDxBcnJheU5vZGUqPihtX2FyZ3MtPm1fbGlzdE5vZGUt
Pm1fbmV4dC0+bV9leHByKS0+dG9Bcmd1bWVudExpc3QoZ2VuZXJhdG9yLnZtKCksIDAsIDApOwor
ICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0
b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsK
KyAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBt
X2FyZ3MpOworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRz
LnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOworICAgICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7CiAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1fYXJncy0+
bV9saXN0Tm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwogICAgICAgICAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2Vu
ZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKICAgICAgICAgICAgICAg
ICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2Fs
bEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKICAgICAgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5n
ZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9hcmdzLT5t
X2xpc3ROb2RlID0gb2xkTGlzdDsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VS
VChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQpOwotICAg
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb2ZpbGVIb29rUmVnaXN0ZXI7Ci0gICAgICAg
ICAgICBpZiAoZ2VuZXJhdG9yLnNob3VsZEVtaXRQcm9maWxlSG9va3MoKSkKLSAgICAgICAgICAg
ICAgICBwcm9maWxlSG9va1JlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAg
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0
TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9k
ZShtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcik7Ci0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gYXJnc1JlZ2lzdGVyOwotICAgICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogYXJncyA9
IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwotICAgICAgICAgICAgaWYgKGFyZ3MtPm1fZXhw
ci0+aXNSZXNvbHZlTm9kZSgpICYmIGdlbmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHN0
YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oYXJncy0+bV9leHByKS0+aWRlbnRpZmllcigpKSkKLSAg
ICAgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IudW5jaGVja2VkUmVnaXN0ZXJG
b3JBcmd1bWVudHMoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhcmdzUmVn
aXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKLQotICAgICAgICAgICAg
Ly8gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5IGlnbm9yZXMgZXh0cmEgYXJndW1lbnRzLCBidXQg
d2Ugc3RpbGwKLSAgICAgICAgICAgIC8vIG5lZWQgdG8gZXZhbHVhdGUgdGhlbSBmb3Igc2lkZSBl
ZmZlY3RzLgotICAgICAgICAgICAgd2hpbGUgKChhcmdzID0gYXJncy0+bV9uZXh0KSkKLSAgICAg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKLQotICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRDYWxsVmFyYXJncyhyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0
aW9uLmdldCgpLCB0aGlzUmVnaXN0ZXIuZ2V0KCksIGFyZ3NSZWdpc3Rlci5nZXQoKSwgZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpLCBwcm9maWxlSG9va1JlZ2lzdGVyLmdldCgpLCBkaXZvdCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxs
QXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9u
LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIH0KLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRK
dW1wKGVuZC5nZXQoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9s
aXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCk7CisgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBwcm9maWxlSG9va1JlZ2lzdGVyOworICAgICAgICBpZiAoZ2VuZXJhdG9yLnNo
b3VsZEVtaXRQcm9maWxlSG9va3MoKSkKKyAgICAgICAgICAgIHByb2ZpbGVIb29rUmVnaXN0ZXIg
PSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBy
ZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlv
bihkc3QpLCBiYXNlLmdldCgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNSZWdp
c3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcik7Cisg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhcmdzUmVnaXN0ZXI7CisgICAgICAgIEFyZ3VtZW50
TGlzdE5vZGUqIGFyZ3MgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKKyAgICAgICAgaWYg
KGFyZ3MtPm1fZXhwci0+aXNSZXNvbHZlTm9kZSgpICYmIGdlbmVyYXRvci53aWxsUmVzb2x2ZVRv
QXJndW1lbnRzKHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oYXJncy0+bV9leHByKS0+aWRlbnRp
ZmllcigpKSkKKyAgICAgICAgICAgIGFyZ3NSZWdpc3RlciA9IGdlbmVyYXRvci51bmNoZWNrZWRS
ZWdpc3RlckZvckFyZ3VtZW50cygpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcmdzUmVn
aXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKKworICAgICAgICAvLyBG
dW5jdGlvbi5wcm90b3R5cGUuYXBwbHkgaWdub3JlcyBleHRyYSBhcmd1bWVudHMsIGJ1dCB3ZSBz
dGlsbAorICAgICAgICAvLyBuZWVkIHRvIGV2YWx1YXRlIHRoZW0gZm9yIHNpZGUgZWZmZWN0cy4K
KyAgICAgICAgd2hpbGUgKChhcmdzID0gYXJncy0+bV9uZXh0KSkKKyAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0Tm9kZShhcmdzLT5tX2V4cHIpOworCisgICAgICAgIGdlbmVyYXRvci5lbWl0Q2Fs
bFZhcmFyZ3MocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgdGhpc1JlZ2lz
dGVyLmdldCgpLCBhcmdzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwg
cHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChyZWFsQ2FsbC5nZXQoKSk7Ci0g
ICAgeworICAgIGlmIChlbWl0Q2FsbENoZWNrKSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVt
cChlbmQuZ2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgp
KTsKICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdz
KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVy
KCksIGJhc2UuZ2V0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUu
Z2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMs
IGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGdlbmVyYXRvci5l
bWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQu
Z2V0KCkpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlCmluZGV4IDM5Nzk3NmIwNmM3YTliNTgzNjMzMjkwMGE2
ZWJiOTNlYzY4Yjc0ODYuLmNhZDY1YmM0Y2M4ODhlMzE0Zjg4ZDY2NWRkNGE2ZTY0NWEwOWEzNTUg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUKQEAgLTI4OSw3ICsyODks
MTcgQEAgc3ViIG91dHB1dCgpIHsKICAgICAgICAgICAgICRpbnRyaW5zaWMgPSAiUmVnRXhwVGVz
dEludHJpbnNpYyIgaWYgKCRrZXkgZXEgInRlc3QiKTsKICAgICAgICAgfQogCisgICAgICAgIGlm
ICgkdmFsdWVzWyRpXXsidHlwZSJ9IGVxICJGdW5jdGlvbiIpICB7CisgICAgICAgICAgICBteSAk
dGFibGVIZWFkID0gJG5hbWU7CisgICAgICAgICAgICAkdGFibGVIZWFkID1+IHMvVGFibGUkLy87
CisgICAgICAgICAgICBwcmludCAiICNpZiBKU0NfQlVJTFRJTl9FWElTVFMoIiAuIHVjKCR0YWJs
ZUhlYWQgLiAka2V5KSAuIilcbiI7CisgICAgICAgICAgICBwcmludCAiICAgeyBcIiRrZXlcIiwg
KCgkYXR0cnNbJGldKSAmIH5GdW5jdGlvbikgfCBCdWlsdGluLCAkaW50cmluc2ljLCAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8QnVpbHRpbkdlbmVyYXRvcj4oIiAuICR0YWJsZUhlYWQgLiB1Y2ZpcnN0
KCRrZXkpIC4gIkNvZGVHZW5lcmF0b3IpLCAoaW50cHRyX3QpJHNlY29uZFZhbHVlIH0sXG4iOwor
ICAgICAgICAgICAgcHJpbnQgIiAjZWxzZVxuIgorICAgICAgICB9CiAgICAgICAgIHByaW50ICIg
ICB7IFwiJGtleVwiLCAkYXR0cnNbJGldLCAkaW50cmluc2ljLCAoaW50cHRyX3QpIiAuICRmaXJz
dENhc3RTdHIgLiAiKCRmaXJzdFZhbHVlKSwgKGludHB0cl90KSIgLiAkc2Vjb25kQ2FzdFN0ciAu
ICIoJHNlY29uZFZhbHVlKSB9LFxuIjsKKyAgICAgICAgaWYgKCR2YWx1ZXNbJGldeyJ0eXBlIn0g
ZXEgIkZ1bmN0aW9uIikgIHsKKyAgICAgICAgICAgIHByaW50ICIgI2VuZGlmXG4iCisgICAgICAg
IH0KICAgICAgICAgJGkrKzsKICAgICB9CiAgICAgcHJpbnQgIiAgIHsgMCwgMCwgTm9JbnRyaW5z
aWMsIDAsIDAgfVxuIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCmluZGV4IDJmZjBjMzQxNDZlMmMwYmEyZmY3NmM0ZDNmN2M0NmJhM2UyNTUxNDcuLjkwNDRj
ZGM2YjhjM2FkNGExZTk0MTg4ZGQxZDBlMjAwZTY5ZmI5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUg
IkpTQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUu
aCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJOYW1lSW5zdGFuY2Uu
aCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlu
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yZjRiNmQ0OTlmMDI1YzA1M2IyZjk3YjZmMTAwZTg1NTA0NmYzZTUxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5zCkBAIC0wLDAg
KzEsMzA0IEBACisjIS91c3IvYmluL3B5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisjIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorIyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorIyBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisjIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGZpbGVj
bXAKK2ltcG9ydCBmbm1hdGNoCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHNodXRpbAor
aW1wb3J0IHN5cworaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQganNvbgorCitjb3B5cmlnaHRUZXh0
ID0gIiIiICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi9cbgorIiIiCisK
K2dlbmVyYXRvclN0cmluZyA9ICIvKiBHZW5lcmF0ZWQgYnkgJXMgZG8gbm90IGhhbmQgZWRpdC4g
Ki9cbiIgJSBvcy5wYXRoLmJhc2VuYW1lKF9fZmlsZV9fKQorCitmdW5jdGlvbkhlYWRSZWdFeHAg
PSByZS5jb21waWxlKHIiZnVuY3Rpb25ccytcdytccypcKC4qP1wpIiwgcmUuTVVMVElMSU5FIHwg
cmUuUykKK2Z1bmN0aW9uTmFtZVJlZ0V4cCA9IHJlLmNvbXBpbGUociJmdW5jdGlvblxzKyhcdysp
XHMqXCgiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIgPSBy
ZS5jb21waWxlKHIiXmZ1bmN0aW9uXHMrKD86XHcrKVxzKlwoKCg/OlxzKlx3Kyk/XHMqKD86XHMq
LFxzKlx3KykqKT9cKSIsIHJlLk1VTFRJTElORSB8IHJlLlMpCisKK211bHRpbGluZUNvbW1lbnRS
ZWdFeHAgPSByZS5jb21waWxlKHIiXC9cKi4qP1wqXC8iLCByZS5NVUxUSUxJTkUgfCByZS5TKQor
c2luZ2xlTGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cLy4qP1xuIiwgcmUuTVVM
VElMSU5FIHwgcmUuUykKKworZGVmIGdldENvcHlyaWdodChzb3VyY2UpOgorICAgIGNvcHlyaWdo
dEJsb2NrID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5maW5kYWxsKHNvdXJjZSlbMF0KKyAgICBj
b3B5cmlnaHRCbG9jayA9IGNvcHlyaWdodEJsb2NrWzpjb3B5cmlnaHRCbG9jay5pbmRleCgiUmVk
aXN0cmlidXRpb24iKV0KKyAgICBjb3B5UmlnaHRMaW5lcyA9IFtdCisKKyAgICBmb3IgbGluZSBp
biBjb3B5cmlnaHRCbG9jay5zcGxpdCgiXG4iKToKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFj
ZSgiLyoiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKi8iLCAiIikKKyAgICAg
ICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKiIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBs
YWNlKCJDb3B5cmlnaHQiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiY29weXJp
Z2h0IiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIihDKSIsICIiKQorICAgICAg
ICBsaW5lID0gbGluZS5yZXBsYWNlKCIoYykiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUuc3Ry
aXAoKQorICAgICAgICBpZiBsZW4obGluZSkgPT0gMDoKKyAgICAgICAgICAgIGNvbnRpbnVlCisK
KyAgICAgICAgY29weVJpZ2h0TGluZXMuYXBwZW5kKGxpbmUpCisgICAgCisgICAgcmV0dXJuIGxp
c3Qoc2V0KGNvcHlSaWdodExpbmVzKSkKKworCisKK2RlZiBnZXRGdW5jdGlvbnMoc291cmNlKToK
KworICAgIHNvdXJjZSA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAuc3ViKCIvKiovIiwgc2luZ2xl
TGluZUNvbW1lbnRSZWdFeHAuc3ViKCIvL1xuIiwgc291cmNlKSkKKworICAgIG1hdGNoZXMgPSBb
IGYgZm9yIGYgaW4gZnVuY3Rpb25IZWFkUmVnRXhwLmZpbmRpdGVyKHNvdXJjZSldCisgICAgZnVu
Y3Rpb25Cb3VuZHMgPSBbXQorICAgIHN0YXJ0ID0gMAorICAgIGVuZCA9IDAKKyAgICBmb3IgbWF0
Y2ggaW4gbWF0Y2hlczoKKyAgICAgICAgc3RhcnQgPSBtYXRjaC5zdGFydCgpCisgICAgICAgIGlm
IHN0YXJ0IDwgZW5kOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgZW5kID0gbWF0Y2gu
ZW5kKCkKKyAgICAgICAgd2hpbGUgc291cmNlW2VuZF0gIT0gJ3snOgorICAgICAgICAgICAgZW5k
ID0gZW5kICsgMQorICAgICAgICBkZXB0aCA9IDEKKyAgICAgICAgZW5kID0gZW5kICsgMQorICAg
ICAgICB3aGlsZSBkZXB0aCA+IDA6CisgICAgICAgICAgICBpZiBzb3VyY2VbZW5kXSA9PSAneyc6
CisgICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCArIDEKKyAgICAgICAgICAgIGVsaWYgc291
cmNlW2VuZF0gPT0gJ30nOgorICAgICAgICAgICAgICAgIGRlcHRoID0gZGVwdGggLSAxCisgICAg
ICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgIGZ1bmN0aW9uQm91bmRzLmFwcGVuZCgoc3Rh
cnQsIGVuZCkpCisKKyAgICBmdW5jdGlvbnMgPSBbc291cmNlW3N0YXJ0OmVuZF0uc3RyaXAoKSBm
b3IgKHN0YXJ0LCBlbmQpIGluIGZ1bmN0aW9uQm91bmRzXQorICAgIHJlc3VsdCA9IFtdCisgICAg
Zm9yIGZ1bmN0aW9uIGluIGZ1bmN0aW9uczoKKyAgICAgICAgZnVuY3Rpb24gPSBtdWx0aWxpbmVD
b21tZW50UmVnRXhwLnN1YigiIiwgZnVuY3Rpb24pCisgICAgICAgIGZ1bmN0aW9uTmFtZSA9IGZ1
bmN0aW9uTmFtZVJlZ0V4cC5maW5kYWxsKGZ1bmN0aW9uKVswXQorICAgICAgICBmdW5jdGlvblBh
cmFtZXRlcnMgPSBmdW5jdGlvblBhcmFtZXRlckZpbmRlci5maW5kYWxsKGZ1bmN0aW9uKVswXS5z
cGxpdCgnLCcpCisgICAgICAgIGlmIGxlbihmdW5jdGlvblBhcmFtZXRlcnNbMF0pID09IDA6Cisg
ICAgICAgICAgICBmdW5jdGlvblBhcmFtZXRlcnMgPSBbXQorICAgICAgICAgICAgCisgICAgICAg
IHJlc3VsdC5hcHBlbmQoKGZ1bmN0aW9uTmFtZSwgZnVuY3Rpb24sIGZ1bmN0aW9uUGFyYW1ldGVy
cykpCisgICAgcmV0dXJuIHJlc3VsdAorICAgICAgICAKKworZGVmIGdlbmVyYXRlQ29kZShzb3Vy
Y2UpOgorICAgIGlucHV0RmlsZSA9IG9wZW4oc291cmNlLCAiciIpCisgICAgYmFzZU5hbWUgPSBv
cy5wYXRoLmJhc2VuYW1lKHNvdXJjZSkucmVwbGFjZSgiLmpzIiwgIiIpCisgICAgCisgICAgc291
cmNlID0gIiIKKyAgICBmb3IgbGluZSBpbiBpbnB1dEZpbGU6CisgICAgICAgIHNvdXJjZSA9IHNv
dXJjZSArIGxpbmUKKyAgICAKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gImN5Z3dpbiI6CisgICAg
ICAgIHNvdXJjZSA9IHNvdXJjZS5yZXBsYWNlKCJcclxuIiwgIlxuIikKKyAgICByZXR1cm4gKGJh
c2VOYW1lLCBnZXRGdW5jdGlvbnMoc291cmNlKSwgZ2V0Q29weXJpZ2h0KHNvdXJjZSkpCisKK2Rl
ZiBtYW5nbGVOYW1lKG9iamVjdCwgbmFtZSk6CisgICAgcU5hbWUgPSBvYmplY3QgKyAiLiIgKyBu
YW1lCisgICAgbWFuZ2xlZE5hbWUgPSAiIgorICAgIGkgPSAwCisgICAgd2hpbGUgaSA8IGxlbihx
TmFtZSk6CisgICAgICAgIGlmIHFOYW1lW2ldID09ICcuJzoKKyAgICAgICAgICAgIG1hbmdsZWRO
YW1lID0gbWFuZ2xlZE5hbWUgKyBxTmFtZVtpICsgMV0udXBwZXIoKQorICAgICAgICAgICAgaSA9
IGkgKyAxCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWRO
YW1lICsgcU5hbWVbaV0KKyAgICAgICAgaSA9IGkgKyAxCisgICAgcmV0dXJuIG1hbmdsZWROYW1l
CisKK2J1aWx0aW5zID0gW10KKworYmFzZU5hbWUgPSBzeXMuYXJndlstMV0KK2J1aWx0aW5fZGVm
aW5pdGlvbnMgPSBzeXMuYXJndlsxOi0xXQorKG91dHB1dF9iYXNlLCBfKSA9IG9zLnBhdGguc3Bs
aXRleHQoc3lzLmFyZ3ZbLTFdKQorCitjb3B5cmlnaHRzID0gW10KK2ZvciBmaWxlIGluIGJ1aWx0
aW5fZGVmaW5pdGlvbnM6CisgICAgaWYgZm5tYXRjaC5mbm1hdGNoKGZpbGUsICcqLmpzJyk6Cisg
ICAgICAgIChiYXNlTmFtZSwgZnVuY3Rpb25zLCBvYmplY3RDb3B5cmlnaHRzKSA9IGdlbmVyYXRl
Q29kZShmaWxlKQorICAgICAgICBjb3B5cmlnaHRzLmV4dGVuZChvYmplY3RDb3B5cmlnaHRzKQor
ICAgICAgICBidWlsdGlucy5hcHBlbmQoKGJhc2VOYW1lLCBmdW5jdGlvbnMpKQorCitjb3B5cmln
aHRzID0gbGlzdChzZXQoY29weXJpZ2h0cykpCisKK2NvcHlyaWdodEJvZHkgPSAiIgorZm9yIGNv
cHlyaWdodCBpbiBjb3B5cmlnaHRzOgorICAgIGNvcHlyaWdodEJvZHkgPSBjb3B5cmlnaHRCb2R5
ICsiICogQ29weXJpZ2h0IChDKSAiICsgY29weXJpZ2h0ICsgIlxuIgorCitidWlsdGluc0hlYWRl
ciA9IG9wZW4ob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgInciKQorYnVpbHRpbnNJbXBsZW1lbnRh
dGlvbiA9IG9wZW4ob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCAidyIpCitjb3B5cmlnaHRUZXh0
ID0gIi8qXG4iICsgY29weXJpZ2h0Qm9keSArIGNvcHlyaWdodFRleHQKK2J1aWx0aW5zSGVhZGVy
LndyaXRlKCIiIiVzCislcworCisjaWZuZGVmIEpTQ0J1aWx0aW5zX0gKKyNkZWZpbmUgSlNDQnVp
bHRpbnNfSAorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwor
Y2xhc3MgSWRlbnRpZmllcjsKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OworY2xhc3MgU291cmNlQ29k
ZTsKK2NsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgVk07CisKK0Z1bmN0
aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUoVk0mLCBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKKworIiIiICUgKGdlbmVyYXRvclN0
cmluZywgY29weXJpZ2h0VGV4dCkpCisKK2NvZGVSZWZlcmVuY2VzID0gW10KKworZm9yIChvYmpl
Y3ROYW1lLCBmdW5jdGlvbnMpIGluIGJ1aWx0aW5zOgorICAgIHByaW50KCJHZW5lcmF0aW5nIGJp
bmRpbmdzIGZvciB0aGUgJXMgYnVpbHRpbi4iICUgb2JqZWN0TmFtZSkKKyAgICBidWlsdGluc0hl
YWRlci53cml0ZSgiLyogJXMgZnVuY3Rpb25zICovXG4iICUgb2JqZWN0TmFtZSkKKyAgICBmb3Ig
KG5hbWUsIGltcGxlbWVudGF0aW9uLCBfKSBpbiBmdW5jdGlvbnM6CisgICAgICAgIG1hbmdsZWRO
YW1lID0gbWFuZ2xlTmFtZShvYmplY3ROYW1lLCBuYW1lKQorICAgICAgICBtYW5nbGVkTmFtZSA9
IG1hbmdsZWROYW1lWzBdLmxvd2VyKCkgKyBtYW5nbGVkTmFtZVsxOl0gKyAiQ29kZSIKKyAgICAg
ICAgY29kZVJlZmVyZW5jZXMuYXBwZW5kKChtYW5nbGVkTmFtZSwgbmFtZSwgaW1wbGVtZW50YXRp
b24pKQorICAgICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiZXh0ZXJuIGNvbnN0IGNoYXIqIHNf
JXM7XG4iICUgbWFuZ2xlZE5hbWUpCisgICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJleHRl
cm4gY29uc3QgaW50IHNfJXNMZW5ndGg7XG4iICUgbWFuZ2xlZE5hbWUpCisgICAgYnVpbHRpbnNI
ZWFkZXIud3JpdGUoIlxuIikKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiI2RlZmluZSBKU0Nf
Rk9SRUFDSF8lc19CVUlMVElOKG1hY3JvKSBcXFxuIiAlIG9iamVjdE5hbWUucmVwbGFjZSgiLiIs
ICJfIikudXBwZXIoKSkKKyAgICBmb3IgKG5hbWUsIGltcGxlbWVudGF0aW9uLCBhcmd1bWVudHMp
IGluIGZ1bmN0aW9uczoKKyAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVOYW1lKG9iamVjdE5h
bWUsIG5hbWUpCisgICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIgICAgbWFjcm8oJXMsICVz
LCAlZCkgXFxcbiIgJSAobmFtZSwgbWFuZ2xlZE5hbWUsIGxlbihhcmd1bWVudHMpKSkKKyAgICBi
dWlsdGluc0hlYWRlci53cml0ZSgiXG4iKQorICAgIGZvciAobmFtZSwgaW1wbGVtZW50YXRpb24s
IGFyZ3VtZW50cykgaW4gZnVuY3Rpb25zOgorICAgICAgICBidWlsdGluc0hlYWRlci53cml0ZSgi
I2RlZmluZSBKU0NfQlVJTFRJTl8lcyAxXG4iICUgbWFuZ2xlTmFtZShvYmplY3ROYW1lLCBuYW1l
KS51cHBlcigpKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJcblxuIikKK25hbWVzID0gW10K
K2J1aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU4obWFjcm8p
XFxcbiIpCitmb3IgKGNvZGVSZWZlcmVuY2UsIGZ1bmN0aW9uTmFtZSwgc291cmNlKSBpbiBjb2Rl
UmVmZXJlbmNlczoKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiICAgIG1hY3JvKCVzLCAlcywg
c18lc0xlbmd0aCkgXFxcbiIgJSAoY29kZVJlZmVyZW5jZSwgZnVuY3Rpb25OYW1lLCBjb2RlUmVm
ZXJlbmNlKSkKKyAgICBuYW1lcy5hcHBlbmQoZnVuY3Rpb25OYW1lKQorCitidWlsdGluc0hlYWRl
ci53cml0ZSgiXG5cbiIpCitidWlsdGluc0hlYWRlci53cml0ZSgiI2RlZmluZSBKU0NfRk9SRUFD
SF9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFxcXG4iKQorZm9yIG5hbWUgaW4gc29ydGVk
KHNldChuYW1lcykpOgorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIgICAgbWFjcm8oJXMpIFxc
XG4iICUgbmFtZSkKK2J1aWx0aW5zSGVhZGVyLndyaXRlKCIiIgorCisjZGVmaW5lIEpTQ19ERUNM
QVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291
bnQpIFxcCisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKFZNJik7
CisKK0pTQ19GT1JFQUNIX0JVSUxUSU4oSlNDX0RFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCisj
dW5kZWYgSlNDX0RFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IKKworI2RlZmluZSBKU0NfQlVJTFRJ
Tl9FWElTVFMobmFtZSkgZGVmaW5lZChKU0NfQlVJTFRJTl8jI25hbWUpCisKK30KKworI2VuZGlm
CisKKyIiIikKKworYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiIiIlcworJXMKKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKKworI2luY2x1ZGUg
IkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRl
ICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
KyIiIiAgJSAoZ2VuZXJhdG9yU3RyaW5nLCBjb3B5cmlnaHRUZXh0KSkKKworZm9yIChjb2RlUmVm
ZXJlbmNlLCBuYW1lLCBzb3VyY2UpIGluIGNvZGVSZWZlcmVuY2VzOgorICAgIHNvdXJjZSA9ICIo
ZnVuY3Rpb24gIiArIHNvdXJjZVtzb3VyY2UuaW5kZXgoIigiKTpdICsgIikiCisgICAgbGluZXMg
PSBqc29uLmR1bXBzKHNvdXJjZSlbMTotMV0uc3BsaXQoIlxcbiIpCisgICAgc291cmNlTGVuZ3Ro
ID0gbGVuKHNvdXJjZSkKKyAgICBzb3VyY2UgPSAiIgorICAgIGZvciBsaW5lIGluIGxpbmVzOgor
ICAgICAgICBzb3VyY2UgPSBzb3VyY2UgKyAoIiAgICBcIiVzXFxuXCIgXFxcbiIgJSBsaW5lKQor
ICAgIGJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoImNvbnN0IGNoYXIqIHNfJXMgPVxuJXM7
XG5cbiIgJSAoY29kZVJlZmVyZW5jZSwgc291cmNlKSkKKyAgICBidWlsdGluc0ltcGxlbWVudGF0
aW9uLndyaXRlKCJjb25zdCBpbnQgc18lc0xlbmd0aCA9ICVkO1xuXG4iICUgKGNvZGVSZWZlcmVu
Y2UsIHNvdXJjZUxlbmd0aCArIDEpKSAjICsgMSBmb3IgXG4KKworYnVpbHRpbnNJbXBsZW1lbnRh
dGlvbi53cml0ZSgiIiIKK0Z1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1dGFi
bGUoVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRhYmxl
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCit7CisgICAgdW5zaWduZWQgbGluZUNvdW50ID0g
dW5saW5rZWRFeGVjdXRhYmxlLT5saW5lQ291bnQoKTsKKyAgICB1bnNpZ25lZCBzdGFydENvbHVt
biA9IDE7CisgICAgdW5zaWduZWQgc291cmNlTGVuZ3RoID0gdW5saW5rZWRFeGVjdXRhYmxlLT5z
b3VyY2VMZW5ndGgoKTsKKyAgICBib29sIGVuZENvbHVtbklzT25TdGFydExpbmUgPSAhbGluZUNv
dW50OworICAgIHVuc2lnbmVkIGVuZENvbHVtbkV4Y2x1ZGluZ0JyYWNlcyA9IHVubGlua2VkRXhl
Y3V0YWJsZS0+dW5saW5rZWRCb2R5RW5kQ29sdW1uKCkgKyAoZW5kQ29sdW1uSXNPblN0YXJ0TGlu
ZSA/IDAgOiAxKTsKKyAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IHVubGlua2VkRXhlY3V0YWJs
ZS0+c3RhcnRPZmZzZXQoKTsKKyAgICB1bnNpZ25lZCBzdGFydE9mZnNldEV4Y2x1ZGluZ09wZW5C
cmFjZSA9IHN0YXJ0T2Zmc2V0ICsgMTsKKyAgICB1bnNpZ25lZCBlbmRPZmZzZXRFeGNsdWRpbmdD
bG9zZUJyYWNlID0gc3RhcnRPZmZzZXQgKyBzb3VyY2VMZW5ndGggLSAxOworICAgIFNvdXJjZUNv
ZGUgYm9keVNvdXJjZShzb3VyY2UucHJvdmlkZXIoKSwgc3RhcnRPZmZzZXRFeGNsdWRpbmdPcGVu
QnJhY2UsIGVuZE9mZnNldEV4Y2x1ZGluZ0Nsb3NlQnJhY2UsIDAsIHN0YXJ0Q29sdW1uKTsKKyAg
ICByZXR1cm4gRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUodm0sIGJvZHlTb3VyY2UsIHVubGlu
a2VkRXhlY3V0YWJsZSwgMCwgbGluZUNvdW50LCBzdGFydENvbHVtbiwgZW5kQ29sdW1uRXhjbHVk
aW5nQnJhY2VzLCBmYWxzZSk7Cit9CisKKyNkZWZpbmUgSlNDX0RFRklORV9CVUlMVElOX0dFTkVS
QVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAorRnVuY3Rpb25F
eGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKFZNJiB2bSkgXFwKK3sgXFwKKyAgICByZXR1
cm4gY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5j
b2RlTmFtZSMjRXhlY3V0YWJsZSgpLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUj
I1NvdXJjZSgpKTsgXFwKK30KKworSlNDX0ZPUkVBQ0hfQlVJTFRJTihKU0NfREVGSU5FX0JVSUxU
SU5fR0VORVJBVE9SKQorI3VuZGVmIEpTQ19ERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKK30KKwor
IiIiKQorCitidWlsdGluc0hlYWRlci5jbG9zZSgpCitidWlsdGluc0ltcGxlbWVudGF0aW9uLmNs
b3NlKCkKKworaWYgKG5vdCBvcy5wYXRoLmV4aXN0cyhvdXRwdXRfYmFzZSArICIuaCIpKSBvciAo
bm90IGZpbGVjbXAuY21wKG91dHB1dF9iYXNlICsgIi5oLnRtcCIsIG91dHB1dF9iYXNlICsgIi5o
Iiwgc2hhbGxvdz1GYWxzZSkpOgorICAgIG9zLnJlbmFtZShvdXRwdXRfYmFzZSArICIuaC50bXAi
LCBvdXRwdXRfYmFzZSArICIuaCIpCitlbHNlOgorICAgIG9zLnJlbW92ZShvdXRwdXRfYmFzZSAr
ICIuaC50bXAiKQorCitpZiAobm90IG9zLnBhdGguZXhpc3RzKG91dHB1dF9iYXNlICsgIi5jcHAi
KSkgb3IgKG5vdCBmaWxlY21wLmNtcChvdXRwdXRfYmFzZSArICIuY3BwLnRtcCIsIG91dHB1dF9i
YXNlICsgIi5jcHAiLCBzaGFsbG93PUZhbHNlKSk6CisgICAgb3MucmVuYW1lKG91dHB1dF9iYXNl
ICsgIi5jcHAudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmNwcCIpCitlbHNlOgorICAgIG9zLnJlbW92
ZShvdXRwdXRfYmFzZSArICIuY3BwLnRtcCIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCBjYTg5MGIwNmVhMzNmYTllN2YxZmE1
MWEzNWVhMmQ0OGQwMDlhMzhhLi42YzliZjk2YzE1ZjYwOWUyNjVjZTI1MGE0NWJmMDg2MWQwNmNk
MWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmgiCiAjaW5jbHVkZSAiSlNTdGFja0lubGluZXMuaCIKICNpbmNsdWRlICJKU1N0cmluZy5o
IgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgi
CiAjaW5jbHVkZSAiTExJbnRDTG9vcC5oIgogI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNw
cAppbmRleCBmMGUwMmJhNGU0NzZmOTljYzkxM2IwNDYyYWQyNzk1MDA2MDlmYTNhLi4xYzI0MGRj
ZDcxYmU1MjlkODhjYmY0NjFkMTg2OGY1ZWIyYjAyYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAKQEAgLTI3LDYgKzI3
LDcgQEAKICNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2Nr
LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJTdGFja0FsaWdu
bWVudC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCmluZGV4IGNhN2FkMTFmMmUwYjhhM2I4YjE4NTg5MWQ3ZTUyMmJhZTQwM2EyMzYu
LmNiNTUwN2JlYWM1NWJmOGViMWIzN2VjOTBmY2FiMTkzNGZiNDhlYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
IkhlYXAuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgor
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCA5
OGQxMGEzZjRkY2IxMmQ4OWYzN2ExMmYyMjYwNGI5NDZlMDhlNjI3Li5kZDAzNTM3NzllOGJkZjk4
ZjQ2NThhMzA3ZTMyZDA2ZTQ3MjQ0MTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRGVidWdn
ZXIuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDkyOGRkNTBm
YjAxNmUyNzE2NDRhNTc1ZTMwYWI1ZjI1MTZlYjUwZWMuLjQ5ODcwZTY4YTg3YmUxOWUxNThhMDZk
MWM2NGZlYzliOGJkMDgyMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUg
IkpJVE9wZXJhdGlvbldyYXBwZXJzLmgiCiAjaW5jbHVkZSAiSklUVG9ERkdEZWZlcnJlZENvbXBp
bGF0aW9uQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIK
ICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDI2ZGQ0ZDFhZjc0NWFmYTFm
YmM1M2E5YzAyM2E2ZTQ3NDFhNjZhMDkuLmRmMWJkM2E5Y2ZhNDAyYzUyYTUyMTFjZjFhY2NlNjdk
NTEyMWI3ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwCkBAIC0yOSwxMSArMjksMTMgQEAKICNpbmNsdWRlICJKSVQuaCIKIAogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVk
ZSAiR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAj
aW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKICNpbmNs
dWRlICJKU1ZhcmlhYmxlT2JqZWN0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCBkMThmZWE3MTVjYjAzYjM3YWE5
MjZkODQ5YThlNWFiOTU2M2VjZDNkLi4zMjYxYjNhZjZlZWFiZDZmMjZhNDNhMDhkMjA0YmM2MmIw
NjU4OWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJJbnRlcnByZXRl
ci5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5j
bHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5j
bHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTVmFyaWFibGVPYmpl
Y3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggNDA3ODRiNDk0MzFmZTAyZThlNDUyMmYxNjMw
OGM5MDI0NzE2ZDIzNi4uMmY3OTU1NTRiMDkxZGVlYmJjMDNiZjJiZThjNzRmNDFhZTU0MWVkNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJKU0xvY2su
aCIKICNpbmNsdWRlICJKU1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRl
ICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAi
U2FtcGxpbmdUb29sLmgiCiAjaW5jbHVkZSAiU3RhY2tWaXNpdG9yLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA2NjQ0NGJhYTA4YjU2
MmRkNjk3ZTBjY2Q3NzIxZTU1YzE1YmE0OTEzLi5kODJlOWU5YzI4MTg0NjFlMzA1ZmY4NjVkMmZi
MTY4YTc4Y2JiNGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRl
ICJKSVRFeGNlcHRpb25zLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCi0jaW5jbHVkZSAi
SlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2lu
Y2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9BU1RCdWlsZGVyLmgKaW5kZXggOGVjMWZkMzJhM2FkYTIyZTEyNTIyOTU3MGRjZjdmZjI4
ZWFiZjFlZC4uNDZhN2M3NmIyZjkwMWZjM2NjMzZkMWNlMGMwNzM1M2ViMDZiMmY1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTg4OCw5ICs4ODgsOSBA
QCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbgogICAgIEFTU0VSVChmdW5jLT5pc0RvdEFjY2Vzc29y
Tm9kZSgpKTsKICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRpY19jYXN0PERvdEFjY2Vz
c29yTm9kZSo+KGZ1bmMpOwogICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUqIG5vZGU7Ci0gICAgaWYg
KGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmNhbGwpCisgICAgaWYg
KGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmNhbGwgfHwgZG90LT5p
ZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y2FsbFByaXZhdGVOYW1lKQogICAg
ICAgICBub2RlID0gbmV3IChtX3ZtKSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwg
ZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwg
ZGl2b3RFbmQpOwotICAgIGVsc2UgaWYgKGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmFwcGx5KQorICAgIGVsc2UgaWYgKGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0t
PnByb3BlcnR5TmFtZXMtPmFwcGx5IHx8IGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmFwcGx5UHJpdmF0ZU5hbWUpCiAgICAgICAgIG5vZGUgPSBuZXcgKG1fdm0pIEFw
cGx5RnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRp
ZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwogICAgIGVsc2UKICAg
ICAgICAgbm9kZSA9IG5ldyAobV92bSkgRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90
LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2
b3RFbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCBjYTRiYjRm
MGFkZThkNmJjODI2OTFhNmMwMDAxNGNmMTk4YmQ4OGJkLi5jY2IwNzlkOTc1YTE0MWM1YzRiMmQ3
YjYyMzEzMDAwNzA5Nzc3ODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0xleGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNw
cApAQCAtMjUsMTAgKzI1LDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGV4
ZXIuaCIKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCisjaW5jbHVkZSAiSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCi0KICNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5oIgotI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJOb2RlSW5mby5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSA8d3RmL2R0b2EuaD4K
QEAgLTkwLDYgKzkwLDcgQEAgZW51bSBDaGFyYWN0ZXJUeXBlIHsKIAogICAgIC8vIE90aGVyIHR5
cGVzIChvbmx5IG9uZSBzbyBmYXIpCiAgICAgQ2hhcmFjdGVyV2hpdGVTcGFjZSwKKyAgICBDaGFy
YWN0ZXJQcml2YXRlSWRlbnRpZmllclN0YXJ0CiB9OwogCiAvLyAyNTYgTGF0aW4tMSBjb2RlcwpA
QCAtMTU4LDcgKzE1OSw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCB0eXBlc09mTGF0
aW4xQ2hhcmFjdGVyc1syNTZdID0gewogLyogIDYxIC0gPSAgICAgICAgICAgICAgICAgICovIENo
YXJhY3RlckVxdWFsLAogLyogIDYyIC0gPiAgICAgICAgICAgICAgICAgICovIENoYXJhY3Rlckdy
ZWF0ZXIsCiAvKiAgNjMgLSA/ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyUXVlc3Rpb24s
Ci0vKiAgNjQgLSBAICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKKy8qICA2
NCAtIEAgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJQcml2YXRlSWRlbnRpZmllclN0YXJ0
LAogLyogIDY1IC0gQSAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFy
dCwKIC8qICA2NiAtIEIgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3Rh
cnQsCiAvKiAgNjcgLSBDICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0
YXJ0LApAQCAtNDg2LDkgKzQ4NywxMCBAQCBzdGF0aWMgY29uc3QgTENoYXIgc2luZ2xlQ2hhcmFj
dGVyRXNjYXBlVmFsdWVzRm9yQVNDSUlbMTI4XSA9IHsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotTGV4ZXI8VD46OkxleGVyKFZNKiB2bSkKK0xleGVyPFQ+OjpMZXhlcihWTSogdm0sIEpT
UGFyc2VyU3RyaWN0bmVzcyBzdHJpY3RuZXNzKQogICAgIDogbV9pc1JlcGFyc2luZyhmYWxzZSkK
ICAgICAsIG1fdm0odm0pCisgICAgLCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24oc3RyaWN0bmVz
cyA9PSBKU1BhcnNlQnVpbHRpbikKIHsKIH0KIApAQCAtNzUzLDcgKzc1NSwyNyBAQCBpbmxpbmUg
dm9pZCBMZXhlcjxUPjo6cmVjb3JkMTYoaW50IGMpCiAgICAgQVNTRVJUKGMgPD0gc3RhdGljX2Nh
c3Q8aW50PihVU0hSVF9NQVgpKTsKICAgICBtX2J1ZmZlcjE2LmFwcGVuZChzdGF0aWNfY2FzdDxV
Q2hhcj4oYykpOwogfQotCisgICAgCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorYm9vbCBpc1NhZmVJ
ZGVudGlmaWVyKFZNJiB2bSwgY29uc3QgSWRlbnRpZmllciogaWRlbnQpCit7CisgICAgaWYgKCFp
ZGVudCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgLyogSnVzdCBibG9jayBhbnkgdXNlIG9m
IHN1c3BpY2lvdXMgaWRlbnRpZmllcnMuICBUaGlzIGlzIGludGVuZGVkIHRvCisgICAgICogYmUg
dXNlZCBhcyBhIHNhZmV0eSBuZXQgd2hpbGUgaW1wbGVtZW50aW5nIGJ1aWx0aW5zLgorICAgICAq
LworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+Y2FsbCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+YXBwbHkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKmlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMt
PmV2YWwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKmlkZW50ID09IHZtLnByb3Bl
cnR5TmFtZXMtPkZ1bmN0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisjZW5kaWYKKyAgICAKIHRlbXBsYXRlIDw+CiB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRD
cmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6
cGFyc2VJZGVudGlmaWVyKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEsIHVuc2lnbmVkIGxleGVyRmxh
Z3MsIGJvb2wgc3RyaWN0TW9kZSkKIHsKQEAgLTc2NSw3ICs3ODcsMTEgQEAgdGVtcGxhdGUgPGJv
b2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhl
cjxMQ2hhcj46OnAKICAgICAgICAgICAgIHJldHVybiBrZXl3b3JkID09IFJFU0VSVkVEX0lGX1NU
UklDVCAmJiAhc3RyaWN0TW9kZSA/IElERU5UIDoga2V5d29yZDsKICAgICAgICAgfQogICAgIH0K
LQorICAgIAorICAgIGJvb2wgaXNQcml2YXRlTmFtZSA9IG1fY3VycmVudCA9PSAnQCcgJiYgbV9w
YXJzaW5nQnVpbHRpbkZ1bmN0aW9uOworICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICBz
aGlmdCgpOworICAgIAogICAgIGNvbnN0IExDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50
U291cmNlUHRyKCk7CiAgICAgdW5zaWduZWQgaWRlbnRpZmllckxpbmVTdGFydCA9IGN1cnJlbnRM
aW5lU3RhcnRPZmZzZXQoKTsKICAgICAKQEAgLTc3OSwxNSArODA1LDI2IEBAIHRlbXBsYXRlIDxi
b29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4
ZXI8TENoYXI+OjpwCiAKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IDA7CiAgICAgCi0g
ICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpIHsKKyAgICBpZiAoc2hvdWxkQ3JlYXRlSWRl
bnRpZmllciB8fCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKICAgICAgICAgaW50IGlkZW50
aWZpZXJMZW5ndGggPSBjdXJyZW50U291cmNlUHRyKCkgLSBpZGVudGlmaWVyU3RhcnQ7CiAgICAg
ICAgIGlkZW50ID0gbWFrZUlkZW50aWZpZXIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVu
Z3RoKTsKLQorICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CisgICAgICAg
ICAgICBpZiAoIWlzU2FmZUlkZW50aWZpZXIoKm1fdm0sIGlkZW50KSAmJiAhaXNQcml2YXRlTmFt
ZSkgeworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZygiVGhl
IHVzZSBvZiAnIiwgaWRlbnQtPnN0cmluZygpLCAiJyBpcyBkaXNhbGxvd2VkIGluIGJ1aWx0aW4g
ZnVuY3Rpb25zLiIpOworICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPSzsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICAgICAgICAgIGlk
ZW50ID0gbV92bS0+cHJvcGVydHlOYW1lcy0+Z2V0UHJpdmF0ZU5hbWUoKmlkZW50KTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRL
ZXl3b3JkKQorICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAmbV92bS0+cHJvcGVy
dHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZFByaXZhdGVOYW1lOworICAgICAgICAgICAgaWYgKCFp
ZGVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9QUklWQVRFX05BTUVfRVJST1JU
T0s7CisgICAgICAgIH0KICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IGlkZW50OwogICAgIH0g
ZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gMDsKIAotICAgIGlmIChVTkxJS0VMWSgo
cmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICEobGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJ
Z25vcmVSZXNlcnZlZFdvcmRzKSkpIHsKKyAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1h
eFRva2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxhZ3MgJiBMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRX
b3JkcykpICYmICFpc1ByaXZhdGVOYW1lKSB7CiAgICAgICAgIEFTU0VSVChzaG91bGRDcmVhdGVJ
ZGVudGlmaWVyKTsKICAgICAgICAgaWYgKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSB7CiAg
ICAgICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gbV92bS0+a2V5d29yZHMtPmdldEtl
eXdvcmQoKmlkZW50KTsKQEAgLTgxNCw2ICs4NTEsMTAgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxk
Q3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46
OnAKICAgICAgICAgICAgIHJldHVybiBrZXl3b3JkID09IFJFU0VSVkVEX0lGX1NUUklDVCAmJiAh
c3RyaWN0TW9kZSA/IElERU5UIDoga2V5d29yZDsKICAgICAgICAgfQogICAgIH0KKyAgICAKKyAg
ICBib29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJlbnQgPT0gJ0AnICYmIG1fcGFyc2luZ0J1aWx0
aW5GdW5jdGlvbjsKKyAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgc2hpZnQoKTsKIAog
ICAgIGNvbnN0IFVDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50U291cmNlUHRyKCk7CiAg
ICAgaW50IGlkZW50aWZpZXJMaW5lU3RhcnQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CkBA
IC04MjYsNiArODY3LDcgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4g
QUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAKICAgICB9CiAgICAgCiAg
ICAgaWYgKFVOTElLRUxZKG1fY3VycmVudCA9PSAnXFwnKSkgeworICAgICAgICBBU1NFUlQoIWlz
UHJpdmF0ZU5hbWUpOwogICAgICAgICBzZXRPZmZzZXRGcm9tU291cmNlUHRyKGlkZW50aWZpZXJT
dGFydCwgaWRlbnRpZmllckxpbmVTdGFydCk7CiAgICAgICAgIHJldHVybiBwYXJzZUlkZW50aWZp
ZXJTbG93Q2FzZTxzaG91bGRDcmVhdGVJZGVudGlmaWVyPih0b2tlbkRhdGEsIGxleGVyRmxhZ3Ms
IHN0cmljdE1vZGUpOwogICAgIH0KQEAgLTgzNywxOCArODc5LDI5IEBAIHRlbXBsYXRlIDxib29s
IHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8
VUNoYXI+OjpwCiAKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IDA7CiAgICAgCi0gICAg
aWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpIHsKKyAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRp
ZmllciB8fCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKICAgICAgICAgaW50IGlkZW50aWZp
ZXJMZW5ndGggPSBjdXJyZW50U291cmNlUHRyKCkgLSBpZGVudGlmaWVyU3RhcnQ7CiAgICAgICAg
IGlmIChpc0FsbDhCaXQpCiAgICAgICAgICAgICBpZGVudCA9IG1ha2VJZGVudGlmaWVyTENoYXJG
cm9tVUNoYXIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVuZ3RoKTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgaWRlbnQgPSBtYWtlSWRlbnRpZmllcihpZGVudGlmaWVyU3RhcnQsIGlk
ZW50aWZpZXJMZW5ndGgpOwotICAgICAgICAKKyAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5G
dW5jdGlvbikgeworICAgICAgICAgICAgaWYgKCFpc1NhZmVJZGVudGlmaWVyKCptX3ZtLCBpZGVu
dCkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsKKyAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2Fn
ZSA9IG1ha2VTdHJpbmcoIlRoZSB1c2Ugb2YgJyIsIGlkZW50LT5zdHJpbmcoKSwgIicgaXMgZGlz
YWxsb3dlZCBpbiBidWlsdGluIGZ1bmN0aW9ucy4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
RVJST1JUT0s7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaXNQcml2YXRlTmFtZSkK
KyAgICAgICAgICAgICAgICBpZGVudCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPmdldFByaXZhdGVO
YW1lKCppZGVudCk7CisgICAgICAgICAgICBlbHNlIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVy
dHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCkKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmlk
ZW50ID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmRQcml2YXRlTmFtZTsK
KyAgICAgICAgICAgIGlmICghaWRlbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSURf
UFJJVkFURV9OQU1FX0VSUk9SVE9LOworICAgICAgICB9CiAgICAgICAgIHRva2VuRGF0YS0+aWRl
bnQgPSBpZGVudDsKICAgICB9IGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IDA7CiAg
ICAgCi0gICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIShs
ZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMpKSkgeworICAgIGlmIChV
TkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICEobGV4ZXJGbGFncyAmIExl
eGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsKICAgICAg
ICAgQVNTRVJUKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpOwogICAgICAgICBpZiAocmVtYWluaW5n
IDwgbWF4VG9rZW5MZW5ndGgpIHsKICAgICAgICAgICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkg
PSBtX3ZtLT5rZXl3b3Jkcy0+Z2V0S2V5d29yZCgqaWRlbnQpOwpAQCAtMTY1OCw2ICsxNzExLDcg
QEAgaW5OdW1iZXJBZnRlckRlY2ltYWxQb2ludDoKICAgICAgICAgQVNTRVJUKGlzSWRlbnRTdGFy
dChtX2N1cnJlbnQpKTsKICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBDaGFyYWN0ZXJC
YWNrU2xhc2g6CisgICAgICAgIHBhcnNlSWRlbnQ6CiAgICAgICAgIGlmIChsZXhlckZsYWdzICYg
TGV4ZXhGbGFnc0RvbnRCdWlsZEtleXdvcmRzKQogICAgICAgICAgICAgdG9rZW4gPSBwYXJzZUlk
ZW50aWZpZXI8ZmFsc2U+KHRva2VuRGF0YSwgbGV4ZXJGbGFncywgc3RyaWN0TW9kZSk7CiAgICAg
ICAgIGVsc2UKQEAgLTE2NzAsNiArMTcyNCwxMSBAQCBpbk51bWJlckFmdGVyRGVjaW1hbFBvaW50
OgogICAgICAgICBtX3Rlcm1pbmF0b3IgPSB0cnVlOwogICAgICAgICBtX2xpbmVTdGFydCA9IG1f
Y29kZTsKICAgICAgICAgZ290byBzdGFydDsKKyAgICBjYXNlIENoYXJhY3RlclByaXZhdGVJZGVu
dGlmaWVyU3RhcnQ6CisgICAgICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pCisgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnQ7CisKKyAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2Fz
ZSBDaGFyYWN0ZXJJbnZhbGlkOgogICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IGludmFsaWRD
aGFyYWN0ZXJNZXNzYWdlKCk7CiAgICAgICAgIHRva2VuID0gRVJST1JUT0s7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0xleGVyLmgKaW5kZXggMjhjNjFiYTE5OGQyYzE1YTQ5YmIxODUyZWQzMGJl
ZmViODkwNDAwOC4uYjg4NzNlOTk1MDI4NjQ0YmY4Y2JiM2Q0YzJkYTU2MmU5M2UwZThlNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaApAQCAtNzIsNyArNzIsNyBAQCBjbGFzcyBM
ZXhlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKIHB1YmxpYzoKLSAgICBMZXhl
cihWTSopOworICAgIExleGVyKFZNKiwgSlNQYXJzZXJTdHJpY3RuZXNzKTsKICAgICB+TGV4ZXIo
KTsKIAogICAgIC8vIENoYXJhY3RlciBtYW5pcHVsYXRpb24gZnVuY3Rpb25zLgpAQCAtMjM4LDYg
KzIzOCw3IEBAIHByaXZhdGU6CiAgICAgSWRlbnRpZmllckFyZW5hKiBtX2FyZW5hOwogCiAgICAg
Vk0qIG1fdm07CisgICAgYm9vbCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247CiB9OwogCiB0ZW1w
bGF0ZSA8PgpAQCAtMzM1LDYgKzMzNiwxMiBAQCBBTFdBWVNfSU5MSU5FIGNvbnN0IElkZW50aWZp
ZXIqIExleGVyPFQ+OjptYWtlTENoYXJJZGVudGlmaWVyKGNvbnN0IFVDaGFyKiBjaGFyYQogICAg
IHJldHVybiAmbV9hcmVuYS0+bWFrZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hhcihtX3ZtLCBjaGFy
YWN0ZXJzLCBsZW5ndGgpOwogfQogCisjaWYgQVNTRVJUX0RJU0FCTEVECitBTFdBWVNfSU5MSU5F
IGJvb2wgaXNTYWZlSWRlbnRpZmllcihWTSYsIGNvbnN0IElkZW50aWZpZXIqKSB7IHJldHVybiB0
cnVlOyB9CisjZWxzZQorYm9vbCBpc1NhZmVJZGVudGlmaWVyKFZNJiwgY29uc3QgSWRlbnRpZmll
ciopOworI2VuZGlmCisKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogQUxXQVlTX0lOTElORSBKU1Rv
a2VuVHlwZSBMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rva2VuKiB0b2tlblJlY29y
ZCwgdW5zaWduZWQgbGV4ZXJGbGFncywgYm9vbCBzdHJpY3RNb2RlKQogewpAQCAtMzcwLDEwICsz
NzcsMTUgQEAgQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4RXhwZWN0SWRl
bnRpZmllcihKU1Rva2VuKiB0b2tlblJlY29yZCwgdW4KICAgICBBU1NFUlQoY3VycmVudE9mZnNl
dCgpID49IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKSk7CiAKICAgICAvLyBDcmVhdGUgdGhlIGlk
ZW50aWZpZXIgaWYgbmVlZGVkCi0gICAgaWYgKGxleGVyRmxhZ3MgJiBMZXhleEZsYWdzRG9udEJ1
aWxkS2V5d29yZHMpCisgICAgaWYgKGxleGVyRmxhZ3MgJiBMZXhleEZsYWdzRG9udEJ1aWxkS2V5
d29yZHMKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgICYmICFtX3BhcnNpbmdCdWlsdGlu
RnVuY3Rpb24KKyNlbmRpZgorICAgICAgICApCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAw
OwogICAgIGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG1ha2VMQ2hhcklkZW50aWZp
ZXIoc3RhcnQsIHB0ciAtIHN0YXJ0KTsKKwogICAgIHRva2VuTG9jYXRpb24tPmxpbmUgPSBtX2xp
bmVOdW1iZXI7CiAgICAgdG9rZW5Mb2NhdGlvbi0+bGluZVN0YXJ0T2Zmc2V0ID0gY3VycmVudExp
bmVTdGFydE9mZnNldCgpOwogICAgIHRva2VuTG9jYXRpb24tPnN0YXJ0T2Zmc2V0ID0gb2Zmc2V0
RnJvbVNvdXJjZVB0cihzdGFydCk7CkBAIC0zODEsNiArMzkzLDEzIEBAIEFMV0FZU19JTkxJTkUg
SlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tlbiogdG9rZW5S
ZWNvcmQsIHVuCiAgICAgQVNTRVJUKHRva2VuTG9jYXRpb24tPnN0YXJ0T2Zmc2V0ID49IHRva2Vu
TG9jYXRpb24tPmxpbmVTdGFydE9mZnNldCk7CiAgICAgdG9rZW5SZWNvcmQtPm1fc3RhcnRQb3Np
dGlvbiA9IHN0YXJ0UG9zaXRpb247CiAgICAgdG9rZW5SZWNvcmQtPm1fZW5kUG9zaXRpb24gPSBj
dXJyZW50UG9zaXRpb24oKTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgaWYgKG1fcGFyc2lu
Z0J1aWx0aW5GdW5jdGlvbikgeworICAgICAgICBpZiAoIWlzU2FmZUlkZW50aWZpZXIoKm1fdm0s
IHRva2VuRGF0YS0+aWRlbnQpKQorICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LOworICAgIH0K
KyNlbmRpZgorCiAgICAgbV9sYXN0VG9rZW4gPSBJREVOVDsKICAgICByZXR1cm4gSURFTlQ7CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IGZjOWNjZDlmNmM1
NzZjMWFlZjU0N2YyMTFmZGQ1OTZmNDJlMDU4MDYuLmQ5NTJiYTZhOTRkMmY2YjQxODIxNTUwMDRk
MGE5NzA4NDI5YmQ3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBA
IC0xMzIsNiArMTMyLDEyIEBAIFBhc3NSZWZQdHI8UHJvZ3JhbU5vZGU+IFByb2dyYW1Ob2RlOjpj
cmVhdGUoVk0qIHZtLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0CiAgICAgcmV0dXJuIG5v
ZGUucmVsZWFzZSgpOwogfQogCisKK3ZvaWQgUHJvZ3JhbU5vZGU6OnNldENsb3NlZFZhcmlhYmxl
cyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmIGNsb3NlZFZhcmlhYmxlcykKK3sK
KyAgICBtX2Nsb3NlZFZhcmlhYmxlcyA9IHN0ZDo6bW92ZShjbG9zZWRWYXJpYWJsZXMpOworfQor
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXZhbE5vZGUgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAogaW5saW5lIEV2YWxOb2RlOjpFdmFsTm9kZShWTSogdm0sIGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRy
ZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlm
aWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2Rl
RmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVzLmgKaW5kZXggZDc3OWExNzhkOTU2ZmY5OWZkMGJlZDVkNWY0NTRhYTNlNmI1MDg3
OS4uODE2ZmYwMDFhYmYwMzc2YzY0MmYxYTkzOGQwZTBhOWY1MjljYTZiYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTQzMSw2ICsxNDMxLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIGJvb2wgbmVlZHNBY3RpdmF0aW9uKCkgY29uc3QgeyByZXR1cm4gKGhhc0Nh
cHR1cmVkVmFyaWFibGVzKCkpIHx8IChtX2ZlYXR1cmVzICYgKEV2YWxGZWF0dXJlIHwgV2l0aEZl
YXR1cmUgfCBDYXRjaEZlYXR1cmUpKTsgfQogICAgICAgICBib29sIGhhc0NhcHR1cmVkVmFyaWFi
bGVzKCkgY29uc3QgeyByZXR1cm4gISFtX2NhcHR1cmVkVmFyaWFibGVzLnNpemUoKTsgfQogICAg
ICAgICBzaXplX3QgY2FwdHVyZWRWYXJpYWJsZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jYXB0
dXJlZFZhcmlhYmxlcy5zaXplKCk7IH0KKyAgICAgICAgY29uc3QgSWRlbnRpZmllclNldCYgY2Fw
dHVyZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2NhcHR1cmVkVmFyaWFibGVzOyB9CiAg
ICAgICAgIGJvb2wgY2FwdHVyZXMoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIHsgcmV0dXJuIG1f
Y2FwdHVyZWRWYXJpYWJsZXMuY29udGFpbnMoaWRlbnQuaW1wbCgpKTsgfQogCiAgICAgICAgIFZh
clN0YWNrJiB2YXJTdGFjaygpIHsgcmV0dXJuIG1fdmFyU3RhY2s7IH0KQEAgLTE0NDYsNiArMTQ0
Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0
ZW1lbnQoKSBjb25zdDsKIAogICAgICAgICB2b2lkIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkZXN0aW5hdGlvbik7CisgICAgICAgIAorICAg
ICAgICB2b2lkIHNldENsb3NlZFZhcmlhYmxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0lt
cGw+PiYmKSB7IH0KIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgdm9pZCBzZXRTb3VyY2UoY29u
c3QgU291cmNlQ29kZSYgc291cmNlKSB7IG1fc291cmNlID0gc291cmNlOyB9CkBAIC0xNDc1LDEx
ICsxNDc4LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBjb25zdCBib29s
IHNjb3BlSXNGdW5jdGlvbiA9IGZhbHNlOwogCisgICAgICAgIHZvaWQgc2V0Q2xvc2VkVmFyaWFi
bGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYpOworICAgICAgICBjb25zdCBW
ZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYgY2xvc2VkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1
cm4gbV9jbG9zZWRWYXJpYWJsZXM7IH0KICAgICBwcml2YXRlOgogICAgICAgICBQcm9ncmFtTm9k
ZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VF
bGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25z
dCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKSBvdmVycmlkZTsKLQorICAgICAgICBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiBt
X2Nsb3NlZFZhcmlhYmxlczsKICAgICAgICAgdW5zaWduZWQgbV9zdGFydENvbHVtbjsKICAgICAg
ICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcAppbmRleCAyOTc2NjZlNzI2ZTQ1ZDA4M2VmMTM0OWRkZmZkZjM3ZWY4MDBk
ZjdhLi41MGJlYzc5ZmUzOGFkZjhmM2EwNGY2YjQ2Y2JkMmE1Y2JmY2YyNDZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yMDQsOCArMjA0LDkgQEAgUGFyc2Vy
PExleGVyVHlwZT46OlBhcnNlcihWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVu
Y3Rpb25QYXJhbWV0ZXJzKgogICAgICwgbV9sYXN0SWRlbnRpZmllcigwKQogICAgICwgbV9sYXN0
RnVuY3Rpb25OYW1lKG51bGxwdHIpCiAgICAgLCBtX3NvdXJjZUVsZW1lbnRzKDApCisgICAgLCBt
X3BhcnNpbmdCdWlsdGluKHN0cmljdG5lc3MgPT0gSlNQYXJzZUJ1aWx0aW4pCiB7Ci0gICAgbV9s
ZXhlciA9IGFkb3B0UHRyKG5ldyBMZXhlclR5cGUodm0pKTsKKyAgICBtX2xleGVyID0gYWRvcHRQ
dHIobmV3IExleGVyVHlwZSh2bSwgc3RyaWN0bmVzcykpOwogICAgIG1fYXJlbmEgPSBtX3ZtLT5w
YXJzZXJBcmVuYS5nZXQoKTsKICAgICBtX2xleGVyLT5zZXRDb2RlKHNvdXJjZSwgbV9hcmVuYSk7
CiAgICAgbV90b2tlbi5tX2xvY2F0aW9uLmxpbmUgPSBzb3VyY2UuZmlyc3RMaW5lKCk7CkBAIC0y
NTYsNiArMjU3LDcgQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKCkKICAg
ICBJZGVudGlmaWVyU2V0IGNhcHR1cmVkVmFyaWFibGVzOwogICAgIGJvb2wgbW9kaWZpZWRQYXJh
bWV0ZXIgPSBmYWxzZTsKICAgICBzY29wZS0+Z2V0Q2FwdHVyZWRWYXJpYWJsZXMoY2FwdHVyZWRW
YXJpYWJsZXMsIG1vZGlmaWVkUGFyYW1ldGVyKTsKKyAgICAKICAgICBDb2RlRmVhdHVyZXMgZmVh
dHVyZXMgPSBjb250ZXh0LmZlYXR1cmVzKCk7CiAgICAgaWYgKHNjb3BlLT5zdHJpY3RNb2RlKCkp
CiAgICAgICAgIGZlYXR1cmVzIHw9IFN0cmljdE1vZGVGZWF0dXJlOwpAQCAtMjYzLDIxICsyNjUs
MzYgQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKCkKICAgICAgICAgZmVh
dHVyZXMgfD0gU2hhZG93c0FyZ3VtZW50c0ZlYXR1cmU7CiAgICAgaWYgKG1vZGlmaWVkUGFyYW1l
dGVyKQogICAgICAgICBmZWF0dXJlcyB8PSBNb2RpZmllZFBhcmFtZXRlckZlYXR1cmU7Ci0KKyAg
ICAKKyAgICBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiBjbG9zZWRWYXJpYWJsZXM7CisgICAg
aWYgKG1fcGFyc2luZ0J1aWx0aW4pIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWNhcHR1cmVk
VmFyaWFibGVzLnNpemUoKSk7CisgICAgICAgIElkZW50aWZpZXJTZXQgdXNlZFZhcmlhYmxlczsK
KyAgICAgICAgc2NvcGUtPmdldFVzZWRWYXJpYWJsZXModXNlZFZhcmlhYmxlcyk7CisgICAgICAg
IGZvciAoY29uc3QgYXV0byYgdmFyaWFibGUgOiB1c2VkVmFyaWFibGVzKSB7CisgICAgICAgICAg
ICBpZiAoc2NvcGUtPmhhc0RlY2xhcmVkVmFyaWFibGUoSWRlbnRpZmllcihtX3ZtLCB2YXJpYWJs
ZS5nZXQoKSkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBpZiAoc2NvcGUtPmhhc0RlY2xhcmVkUGFyYW1ldGVyKElkZW50aWZpZXIobV92bSwg
dmFyaWFibGUuZ2V0KCkpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IGNsb3NlZFZhcmlhYmxlcy5hcHBlbmQodmFyaWFibGUpOworICAgICAgICB9CisgICAgfQogICAg
IGRpZEZpbmlzaFBhcnNpbmcoc291cmNlRWxlbWVudHMsIGNvbnRleHQudmFyRGVjbGFyYXRpb25z
KCksIGNvbnRleHQuZnVuY0RlY2xhcmF0aW9ucygpLCBmZWF0dXJlcywKLSAgICAgICAgY29udGV4
dC5udW1Db25zdGFudHMoKSwgY2FwdHVyZWRWYXJpYWJsZXMpOworICAgICAgICBjb250ZXh0Lm51
bUNvbnN0YW50cygpLCBjYXB0dXJlZFZhcmlhYmxlcywgc3RkOjptb3ZlKGNsb3NlZFZhcmlhYmxl
cykpOwogCiAgICAgcmV0dXJuIHBhcnNlRXJyb3I7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBM
ZXhlclR5cGU+CiB2b2lkIFBhcnNlcjxMZXhlclR5cGU+OjpkaWRGaW5pc2hQYXJzaW5nKFNvdXJj
ZUVsZW1lbnRzKiBzb3VyY2VFbGVtZW50cywgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3Rh
Y2tzOjpWYXJTdGFjaz4qIHZhclN0YWNrLCAKLSAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRp
b25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KiBmdW5jU3RhY2ssIENvZGVGZWF0dXJlcyBmZWF0dXJl
cywgaW50IG51bUNvbnN0YW50cywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJzKQorICAgIFBh
cnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qIGZ1bmNTdGFj
aywgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzLCBJZGVudGlmaWVyU2V0
JiBjYXB0dXJlZFZhcnMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYgY2xvc2Vk
VmFyaWFibGVzKQogewogICAgIG1fc291cmNlRWxlbWVudHMgPSBzb3VyY2VFbGVtZW50czsKICAg
ICBtX3ZhckRlY2xhcmF0aW9ucyA9IHZhclN0YWNrOwogICAgIG1fZnVuY0RlY2xhcmF0aW9ucyA9
IGZ1bmNTdGFjazsKICAgICBtX2NhcHR1cmVkVmFyaWFibGVzLnN3YXAoY2FwdHVyZWRWYXJzKTsK
KyAgICBtX2Nsb3NlZFZhcmlhYmxlcyA9IGNsb3NlZFZhcmlhYmxlczsKICAgICBtX2ZlYXR1cmVz
ID0gZmVhdHVyZXM7CiAgICAgbV9udW1Db25zdGFudHMgPSBudW1Db25zdGFudHM7CiB9CkBAIC0y
MzQ2LDYgKzIzNjMsMTAgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4gdm9pZCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cHJpbnRVbmV4cGVjdGVkVG9rZW5UZXh0KFcKICAgICBjYXNlIFJFU0VS
VkVEOgogICAgICAgICBvdXQucHJpbnQoIlVuZXhwZWN0ZWQgdXNlIG9mIHJlc2VydmVkIHdvcmQg
JyIsIGdldFRva2VuKCksICInIik7CiAgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgSU5WQUxJ
RF9QUklWQVRFX05BTUVfRVJST1JUT0s6CisgICAgICAgIG91dC5wcmludCgiSW52YWxpZCBwcml2
YXRlIG5hbWUgJyIsIGdldFRva2VuKCksICInIik7CisgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIAogICAgIGNhc2UgSURFTlQ6CiAgICAgICAgIG91dC5wcmludCgiVW5leHBlY3RlZCBpZGVu
dGlmaWVyICciLCBnZXRUb2tlbigpLCAiJyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmgKaW5kZXggYjY5OGVmOTM2OGNiOGM4ZjE5N2NjZDAwMGFjYWE2ZGZiMTFiYTI0NC4uOTAz
Mzg1MGM4Yzk3ZjU3ZTIxZGE1ZWVkYjAyZDA0NGY0Yzg5NzhlYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5oCkBAIC0yMyw2ICsyMyw3IEBACiAjaWZuZGVmIFBhcnNlcl9oCiAj
ZGVmaW5lIFBhcnNlcl9oCiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1
ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUg
IkV4ZWN1dGFibGUuaCIKQEAgLTI1OSw2ICsyNjAsMTAgQEAgc3RydWN0IFNjb3BlIHsKICAgICAg
ICAgcmV0dXJuIGlzVmFsaWRTdHJpY3RNb2RlID8gQmluZGluZ1N1Y2NlZWRlZCA6IFN0cmljdEJp
bmRpbmdGYWlsZWQ7CiAgICAgfQogCisgICAgdm9pZCBnZXRVc2VkVmFyaWFibGVzKElkZW50aWZp
ZXJTZXQmIHVzZWRWYXJpYWJsZXMpCisgICAgeworICAgICAgICB1c2VkVmFyaWFibGVzLnN3YXAo
bV91c2VkVmFyaWFibGVzKTsKKyAgICB9CiAKICAgICB2b2lkIHVzZVZhcmlhYmxlKGNvbnN0IElk
ZW50aWZpZXIqIGlkZW50LCBib29sIGlzRXZhbCkKICAgICB7CkBAIC00MTQsNiArNDE5LDcgQEAg
cHVibGljOgogICAgIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImKTsK
IAogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKSBjb25zdCB7
IHJldHVybiBtX2xleGVyLT5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7IH0KKyAgICBjb25z
dCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmIGNsb3NlZFZhcmlhYmxlcygpIHsgcmV0dXJu
IHN0ZDo6bW92ZShtX2Nsb3NlZFZhcmlhYmxlcyk7IH0KIAogcHJpdmF0ZToKICAgICBzdHJ1Y3Qg
QWxsb3dJbk92ZXJyaWRlIHsKQEAgLTU0MCw3ICs1NDYsNyBAQCBwcml2YXRlOgogICAgIFN0cmlu
ZyBwYXJzZUlubmVyKCk7CiAKICAgICB2b2lkIGRpZEZpbmlzaFBhcnNpbmcoU291cmNlRWxlbWVu
dHMqLCBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrPiosIAotICAg
ICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+Kiwg
Q29kZUZlYXR1cmVzLCBpbnQsIElkZW50aWZpZXJTZXQmKTsKKyAgICAgICAgUGFyc2VyQXJlbmFE
YXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiosIENvZGVGZWF0dXJlcywgaW50
LCBJZGVudGlmaWVyU2V0JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJik7CiAK
ICAgICAvLyBVc2VkIHRvIGRldGVybWluZSB0eXBlIG9mIGVycm9yIHRvIHJlcG9ydC4KICAgICBi
b29sIGlzRnVuY3Rpb25Cb2R5Tm9kZShTY29wZU5vZGUqKSB7IHJldHVybiBmYWxzZTsgfQpAQCAt
ODQwLDkgKzg0NiwxMSBAQCBwcml2YXRlOgogICAgIGNvbnN0IElkZW50aWZpZXIqIG1fbGFzdEZ1
bmN0aW9uTmFtZTsKICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXJDYWNoZT4gbV9mdW5jdGlvbkNh
Y2hlOwogICAgIFNvdXJjZUVsZW1lbnRzKiBtX3NvdXJjZUVsZW1lbnRzOworICAgIGJvb2wgbV9w
YXJzaW5nQnVpbHRpbjsKICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OlZh
clN0YWNrPiogbV92YXJEZWNsYXJhdGlvbnM7CiAgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0
aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiogbV9mdW5jRGVjbGFyYXRpb25zOwogICAgIElkZW50
aWZpZXJTZXQgbV9jYXB0dXJlZFZhcmlhYmxlczsKKyAgICBWZWN0b3I8UmVmUHRyPFN0cmluZ0lt
cGw+PiBtX2Nsb3NlZFZhcmlhYmxlczsKICAgICBDb2RlRmVhdHVyZXMgbV9mZWF0dXJlczsKICAg
ICBpbnQgbV9udW1Db25zdGFudHM7CiAgICAgCkBAIC05NTcsNiArOTY1LDEwIEBAIFBhc3NSZWZQ
dHI8UGFyc2VkTm9kZT4gcGFyc2UoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1
bmN0aW9uUGFyYW1ldGVyCiAgICAgICAgIFJlZlB0cjxQYXJzZWROb2RlPiByZXN1bHQgPSBwYXJz
ZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IpOwogICAgICAgICBpZiAocG9zaXRpb25CZWZvcmVM
YXN0TmV3bGluZSkKICAgICAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFy
c2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKKyAgICAgICAgaWYgKHN0cmljdG5lc3Mg
PT0gSlNQYXJzZUJ1aWx0aW4pIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7
CisgICAgICAgICAgICByZXN1bHQtPnNldENsb3NlZFZhcmlhYmxlcyhzdGQ6Om1vdmUocGFyc2Vy
LmNsb3NlZFZhcmlhYmxlcygpKSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdC5y
ZWxlYXNlKCk7CiAgICAgfQogICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgc291
cmNlLCBwYXJhbWV0ZXJzLCBuYW1lLCBzdHJpY3RuZXNzLCBwYXJzZXJNb2RlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAppbmRleCA0ZTlhMTdjZDIxY2EzNDE0
NmJiZDQ4MTU2YTM3MmNkNDA0ZGVmNjBjLi5mN2E3NWJmN2MzNzg1N2U0NGI2ZDVkNzFmNDUyOWJi
MWFjMWNmNWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ck1vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5o
CkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1lbnVtIEpTUGFyc2VyU3Ry
aWN0bmVzcyB7IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VTdHJpY3QgfTsKK2VudW0gSlNQYXJzZXJT
dHJpY3RuZXNzIHsgSlNQYXJzZU5vcm1hbCwgSlNQYXJzZUJ1aWx0aW4sIEpTUGFyc2VTdHJpY3Qg
fTsKIGVudW0gSlNQYXJzZXJNb2RlIHsgSlNQYXJzZVByb2dyYW1Db2RlLCBKU1BhcnNlRnVuY3Rp
b25Db2RlIH07CiAKIGVudW0gUHJvZmlsZXJNb2RlIHsgUHJvZmlsZXJPZmYsIFByb2ZpbGVyT24g
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5z
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCmluZGV4IDgy
YTI2NjM5YTc5MjIwYTA4NDQ1NmI0OGYzMjg1MmQxNDNjNzM5ZDAuLjhjODdhZDlmYWRiZGM0YWYz
OWFjOTlkYjJkODQ0NWUxM2ZmZmQzNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXJUb2tlbnMuaApAQCAtMTQ5LDYgKzE0OSw3IEBAIGVudW0gSlNUb2tlblR5cGUgewog
ICAgIElOVkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LID0gNyB8IEVycm9yVG9rZW5GbGFn
LAogICAgIFVOVEVSTUlOQVRFRF9TVFJJTkdfTElURVJBTF9FUlJPUlRPSyA9IDggfCBFcnJvclRv
a2VuRmxhZyB8IFVudGVybWluYXRlZEVycm9yVG9rZW5GbGFnLAogICAgIElOVkFMSURfU1RSSU5H
X0xJVEVSQUxfRVJST1JUT0sgPSA5IHwgRXJyb3JUb2tlbkZsYWcsCisgICAgSU5WQUxJRF9QUklW
QVRFX05BTUVfRVJST1JUT0sgPSAxMCB8IEVycm9yVG9rZW5GbGFnCiB9OwogCiBzdHJ1Y3QgSlNU
ZXh0UG9zaXRpb24gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJnTGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmNwcApp
bmRleCBlMTMxMDRkZjU5MjJkMDc3NjI1N2QwNWNiNWU4NzA1MzdkMjE0MjhhLi4yNGMwNmJiYjFj
MmMzNGI5ZGE1ZWY4NGIyNTVjOTkwMGRhZjg1OTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcmdMaXN0LmNwcApAQCAtMjIsNyArMjIsNyBAQAogI2luY2x1ZGUgIkFyZ0xpc3Qu
aCIKIAogI2luY2x1ZGUgIkhlYXBSb290VmlzaXRvci5oIgotI2luY2x1ZGUgIkpTQ0pTVmFsdWUu
aCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJndW1lbnRzLmNwcAppbmRleCA4ZmQxOTVjYjliNWY3ZWY1YmYzZDJmZDkzMzQyYjAxMDI3
MjVmYWYxLi40ZmJhYzY4ODYzNDg2MTcxNjQ5YTMzNGQ2MWI1ZGNjMzgxNGRkNTU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKQEAgLTI2LDYgKzI2LDcg
QEAKICNpbmNsdWRlICJBcmd1bWVudHMuaCIKIAogI2luY2x1ZGUgIkNhbGxGcmFtZUlubGluZXMu
aCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlv
bi5oIgogI2luY2x1ZGUgIkpTQXJndW1lbnRzSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVu
dHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCmluZGV4IDE4
ZjM4OTE3MTM4NTIzNjJjN2E3NWEzMDUzYjQ2MzE0MTdiZWI4MWIuLmYxNmZkM2RlNDA1NTk3MGJh
OWQ5YzZmMGFlNjMxOGYyMjA0YjY1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ3VtZW50cy5oCkBAIC0yNSw2ICsyNSw3IEBACiAjZGVmaW5lIEFyZ3VtZW50c19oCiAKICNp
bmNsdWRlICJDb2RlT3JpZ2luLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNp
bmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5o
IgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAKaW5k
ZXggYWZiNTk3OTBjYjAwOTk4OWJiN2I0Mjg2M2U5MTgyMzM1NzZiOGFhYy4uOTFjYWNkZmE4NTdl
YjY5Mzc2YTMwODFhOGM3MDJhYzljMjE3Y2E3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5j
cHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJBcmd1bWVudHNJdGVyYXRvckNvbnN0cnVj
dG9yLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5oIgorI2luY2x1
ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiSlNBcmd1bWVudHNJdGVyYXRvci5o
IgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5l
cy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRz
SXRlcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJn
dW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCmluZGV4IGRkMDg5NGYxNGEwMjFkNWYxMjY1OGFj
YjAxZTcyMWZjZDZkMzQ4Y2MuLjViNGFlODcxNmIwNTUzYmU0NjIzOTU1ZTk5ZTFiNDNlYmYxOGZl
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0
ZXJhdG9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTI2LDcgKzI2LDkgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5oIgogCisj
aW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJKU0FyZ3VtZW50c0l0ZXJh
dG9yLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cAppbmRleCAyN2FjNmQ0OGE3MWY3OTU1MDJhMTBjZWE2NDc4NjU0MTM1YTQ2M2EwLi42ZGM3YmU1
Njk2OWRlNjdmNjIxMDdiYjNhNTFhMzA4ZmEzYmE3NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAi
SlNTdHJpbmdCdWlsZGVyLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNTdHJpbmdKb2luZXIuaCIKICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJPYmpl
Y3RQcm90b3R5cGUuaCIKQEAgLTU2LDcgKzU3LDYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU29ydChFeGVjU3RhdGUqKTsK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU3BsaWNl
KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQ
cm90b0Z1bmNVblNoaWZ0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNFdmVyeShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRm9yRWFjaChFeGVjU3RhdGUqKTsK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU29tZShF
eGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJv
dG9GdW5jSW5kZXhPZihFeGVjU3RhdGUqKTsKQEAgLTk1NCw2OSArOTU0LDYgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY01hcChFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHRBcnJheSk7CiB9CiAKLS8vIERvY3VtZW50
YXRpb24gZm9yIHRoZXNlIHRocmVlIGlzIGF2YWlsYWJsZSBhdDoKLS8vIGh0dHA6Ly9kZXZlbG9w
ZXItdGVzdC5tb3ppbGxhLm9yZy9lbi9kb2NzL0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNl
Ok9iamVjdHM6QXJyYXk6ZXZlcnkKLS8vIGh0dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3ppbGxhLm9y
Zy9lbi9kb2NzL0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6QXJyYXk6Zm9y
RWFjaAotLy8gaHR0cDovL2RldmVsb3Blci10ZXN0Lm1vemlsbGEub3JnL2VuL2RvY3MvQ29yZV9K
YXZhU2NyaXB0XzEuNV9SZWZlcmVuY2U6T2JqZWN0czpBcnJheTpzb21lCi0KLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNFdmVyeShFeGVjU3RhdGUqIGV4ZWMpCi17
Ci0gICAgSlNPYmplY3QqIHRoaXNPYmogPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCkudG9UaGlzKGV4
ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRo
aXNPYmotPmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKS50b1VJbnQzMihl
eGVjKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KLSAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gZXhl
Yy0+YXJndW1lbnQoMCk7Ci0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2Fs
bFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwotICAgIGlmIChjYWxsVHlw
ZSA9PSBDYWxsVHlwZU5vbmUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMp
OwotCi0gICAgSlNWYWx1ZSBhcHBseVRoaXMgPSBleGVjLT5hcmd1bWVudCgxKTsKLQotICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKHRydWUpOwotCi0gICAgdW5zaWduZWQgayA9IDA7Ci0g
ICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlSlMgJiYgaXNKU0FycmF5KHRoaXNPYmopKSB7Ci0g
ICAgICAgIEpTRnVuY3Rpb24qIGYgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGZ1bmN0aW9uKTsKLSAg
ICAgICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KHRoaXNPYmopOwotICAgICAgICBDYWNoZWRD
YWxsIGNhY2hlZENhbGwoZXhlYywgZiwgMyk7Ci0gICAgICAgIGZvciAoOyBrIDwgbGVuZ3RoICYm
ICFleGVjLT5oYWRFeGNlcHRpb24oKTsgKytrKSB7Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFko
IWFycmF5LT5jYW5HZXRJbmRleFF1aWNrbHkoaykpKQotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldFRoaXMoYXBwbHlUaGlzKTsK
LSAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoMCwgYXJyYXktPmdldEluZGV4UXVp
Y2tseShrKSk7Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDEsIGpzTnVtYmVy
KGspKTsKLSAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoMiwgdGhpc09iaik7Ci0g
ICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhY2hlZENhbGwuY2FsbCgpOwotICAgICAgICAg
ICAgaWYgKCFyZXN1bHQudG9Cb29sZWFuKGV4ZWMpKQotICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
Zm9yICg7IGsgPCBsZW5ndGggJiYgIWV4ZWMtPmhhZEV4Y2VwdGlvbigpOyArK2spIHsKLSAgICAg
ICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iaik7Ci0gICAgICAgIGlmICghdGhpc09iai0+Z2V0
UHJvcGVydHlTbG90KGV4ZWMsIGssIHNsb3QpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgZWFjaEFyZ3VtZW50czsKLSAgICAgICAgZWFjaEFy
Z3VtZW50cy5hcHBlbmQoc2xvdC5nZXRWYWx1ZShleGVjLCBrKSk7Ci0gICAgICAgIGVhY2hBcmd1
bWVudHMuYXBwZW5kKGpzTnVtYmVyKGspKTsKLSAgICAgICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQo
dGhpc09iaik7Ci0KLSAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQotICAgICAgICBib29s
IHByZWRpY2F0ZVJlc3VsdCA9IGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0
YSwgYXBwbHlUaGlzLCBlYWNoQXJndW1lbnRzKS50b0Jvb2xlYW4oZXhlYyk7Ci0gICAgICAgIGlm
ICghcHJlZGljYXRlUmVzdWx0KSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBqc0Jvb2xlYW4oZmFs
c2UpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci19Ci0KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlQcm90b0Z1bmNGb3JFYWNoKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU09iamVj
dCogdGhpc09iaiA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9k
ZSkudG9PYmplY3QoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNh
Y2hlLmNwcAppbmRleCA1MTBlMzgzZmFlNTc1YWFkYTgxNzZjMDQ0MWVlNzI1YjQzYTRjNzMyLi5k
MzA0ODc3ZmU5Y2RlMWMwOTE5ZmQ0NTk1ZjgxMWVjYWJjZTc3Mjc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTE0NCwyNCArMTQ0LDI2IEBAIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJs
ZUZyb21HbG9iYWxDb2RlKFZNJiB2CiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVM
YXN0TmV3bGluZTsKICAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9n
cmFtTm9kZT4oJnZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIoKSwgSlNQYXJzZU5vcm1hbCwgSlNQ
YXJzZVByb2dyYW1Db2RlLCBlcnJvciwgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwogICAg
IGlmICghcHJvZ3JhbSkgewotICAgICAgICBBU1NFUlQoZXJyb3IubV90eXBlICE9IFBhcnNlckVy
cm9yOjpFcnJvck5vbmUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChlcnJvci5tX3R5cGUgIT0g
UGFyc2VyRXJyb3I6OkVycm9yTm9uZSk7CiAgICAgICAgIG1fc291cmNlQ29kZS5yZW1vdmUoYWRk
UmVzdWx0Lml0ZXJhdG9yKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgICAgLy8gVGhp
cyBmdW5jdGlvbiBhc3N1bWVzIGFuIGlucHV0IHN0cmluZyB0aGF0IHdvdWxkIHJlc3VsdCBpbiBh
IHNpbmdsZSBhbm9ueW1vdXMgZnVuY3Rpb24gZXhwcmVzc2lvbi4KICAgICBTdGF0ZW1lbnROb2Rl
KiBleHByU3RhdGVtZW50ID0gcHJvZ3JhbS0+c2luZ2xlU3RhdGVtZW50KCk7Ci0gICAgQVNTRVJU
KGV4cHJTdGF0ZW1lbnQpOwotICAgIEFTU0VSVChleHByU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1l
bnQoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudCk7CisgICAgUkVMRUFTRV9B
U1NFUlQoZXhwclN0YXRlbWVudC0+aXNFeHByU3RhdGVtZW50KCkpOwogICAgIEV4cHJlc3Npb25O
b2RlKiBmdW5jRXhwciA9IHN0YXRpY19jYXN0PEV4cHJTdGF0ZW1lbnROb2RlKj4oZXhwclN0YXRl
bWVudCktPmV4cHIoKTsKLSAgICBBU1NFUlQoZnVuY0V4cHIpOworICAgIFJFTEVBU0VfQVNTRVJU
KGZ1bmNFeHByKTsKICAgICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwci0+aXNGdW5jRXhwck5vZGUo
KSk7CiAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9k
ZSo+KGZ1bmNFeHByKS0+Ym9keSgpOworICAgIFJFTEVBU0VfQVNTRVJUKCFwcm9ncmFtLT5oYXND
YXB0dXJlZFZhcmlhYmxlcygpKTsKKyAgICAKICAgICBib2R5LT5zZXRFbmRQb3NpdGlvbihwb3Np
dGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKLSAgICBBU1NFUlQoYm9keSk7Ci0gICAgQVNTRVJUKGJv
ZHktPmlkZW50KCkuaXNOdWxsKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGJvZHkpOworICAgIFJF
TEVBU0VfQVNTRVJUKGJvZHktPmlkZW50KCkuaXNOdWxsKCkpOwogCi0gICAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIGJvZHksIHRydWUpOworICAgIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBib2R5LCB0cnVlLCBVbmxpbmtlZE5vcm1hbEZ1
bmN0aW9uKTsKICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPm1fbmFtZVZhbHVlLnNldCh2bSwgZnVu
Y3Rpb25FeGVjdXRhYmxlLCBqc1N0cmluZygmdm0sIG5hbWUuc3RyaW5nKCkpKTsKIAogICAgIGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBTb3VyY2VDb2RlVmFsdWUodm0sIGZ1bmN0aW9uRXhl
Y3V0YWJsZSwgbV9zb3VyY2VDb2RlLmFnZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcAppbmRleCAzZjVjNjQ1YzA5OGQ1Mjdm
YzBjNzI1OWU5NDQ3ZWZiZTg4NjhhMjljLi4yZmMyYjcyN2FmY2VlZTFlYzJjNjI1ZGU1Njc1YjNi
ZTFjZjYwZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuY3BwCkBAIC0yNyw3ICsyNywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
I2RlZmluZSBJTklUSUFMSVpFX1BST1BFUlRZX05BTUUobmFtZSkgLCBuYW1lKHZtLCAjbmFtZSkK
ICNkZWZpbmUgSU5JVElBTElaRV9LRVlXT1JEKG5hbWUpICwgbmFtZSMjS2V5d29yZCh2bSwgI25h
bWUpCi0jZGVmaW5lIElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKG5hbWUpICwgbmFtZSMjUHJpdmF0
ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbShQcml2YXRlTmFtZSgpKSkKKyNkZWZpbmUgSU5JVElBTEla
RV9QUklWQVRFX05BTUUobmFtZSkgXAorICAgICwgbmFtZSMjUHJpdmF0ZU5hbWUoSWRlbnRpZmll
cjo6ZnJvbShQcml2YXRlTmFtZSgpKSkgXAorICAgICwgbV8jI25hbWUjI1B1YmxpY1N0cmluZ1Bh
aXIobmFtZSwgbmFtZSMjUHJpdmF0ZU5hbWUpIFwKKwogCiBDb21tb25JZGVudGlmaWVyczo6Q29t
bW9uSWRlbnRpZmllcnMoVk0qIHZtKQogICAgIDogbnVsbElkZW50aWZpZXIoKQpAQCAtMzgsOCAr
NDEsMjYgQEAgQ29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZNKiB2bSkKICAg
ICAsIGhhc05leHRJZGVudGlmaWVyKHZtLCAiaGFzTmV4dCIpCiAgICAgSlNDX0NPTU1PTl9JREVO
VElGSUVSU19FQUNIX0tFWVdPUkQoSU5JVElBTElaRV9LRVlXT1JEKQogICAgIEpTQ19DT01NT05f
SURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRSkK
KyAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoSU5JVElBTElaRV9QUk9QRVJU
WV9OQU1FKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZ
X05BTUUoSU5JVElBTElaRV9QUklWQVRFX05BTUUpCiB7CiB9CiAKK2NvbnN0IElkZW50aWZpZXIq
IENvbW1vbklkZW50aWZpZXJzOjpnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCkgY29uc3QKK3sKKyNkZWZpbmUgUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKG5hbWUp
IGlmIChtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpci5maXJzdCA9PSBpZGVudCkgcmV0dXJuICZt
XyMjbmFtZSMjUHVibGljU3RyaW5nUGFpci5zZWNvbmQ7CisgICAgSlNDX0NPTU1PTl9QUklWQVRF
X0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShSRVRVUk5fSUZfUFJJVkFURV9OQU1FX01B
VENIRVMpCisjdW5kZWYgUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTCisgICAgcmV0dXJu
IDA7Cit9CisKK0lkZW50aWZpZXIgQ29tbW9uSWRlbnRpZmllcnM6OmdldFB1YmxpY05hbWUoY29u
c3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0Cit7CisjZGVmaW5lIFJFVFVSTl9JRl9QUklWQVRF
X05BTUVfTUFUQ0hFUyhuYW1lKSBpZiAobV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuc2Vjb25k
ID09IGlkZW50KSByZXR1cm4gbV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuZmlyc3Q7CisgICAg
SlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShSRVRVUk5f
SUZfUFJJVkFURV9OQU1FX01BVENIRVMpCisjdW5kZWYgUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9N
QVRDSEVTCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZW1w
dHlJZGVudGlmaWVyOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IGU4ZjllZDgyYmM3
OTQ2MjAzODI2NmIzMDIwNzgyMjQ3YjFmYTI3YTMuLjkyNGQzNmFjNjkxMzUwMzU3Y2IzODJiMWVm
M2I0MGEwYTA4YzBhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuaApAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBDb21tb25JZGVu
dGlmaWVyc19oCiAKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiSlNDQnVpbHRp
bnMuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogLy8gTWFya2VkQXJndW1lbnRC
dWZmZXIgb2YgcHJvcGVydHkgbmFtZXMsIHBhc3NlZCB0byBhIG1hY3JvIHNvIHdlIGNhbiBkbyBz
ZXQgdGhlbSB1cCB2YXJpb3VzCkBAIC0xMzMsOCArMTM0LDEwIEBACiAgICAgbWFjcm8ob3NyRXhp
dHMpIFwKICAgICBtYWNybyhwYXJzZSkgXAogICAgIG1hY3JvKHByb2ZpbGVkQnl0ZWNvZGVzKSBc
CisgICAgbWFjcm8ocHJvbWlzZSkgXAogICAgIG1hY3JvKHByb3BlcnR5SXNFbnVtZXJhYmxlKSBc
CiAgICAgbWFjcm8ocHJvdG90eXBlKSBcCisgICAgbWFjcm8ocmVzb2x2ZSkgXAogICAgIG1hY3Jv
KHNldCkgXAogICAgIG1hY3JvKHNpemUpIFwKICAgICBtYWNybyhzbGljZSkgXApAQCAtMTU1LDcg
KzE1OCwxNCBAQAogICAgIG1hY3JvKHZhbHVlcykgXAogICAgIG1hY3JvKHZhbHVlT2YpIFwKICAg
ICBtYWNybyh3aW5kb3cpIFwKLSAgICBtYWNybyh3cml0YWJsZSkKKyAgICBtYWNybyh3cml0YWJs
ZSkgXAorICAgIG1hY3JvKGl0ZXJhdG9yKSBcCisgICAgbWFjcm8oaXRlcmF0b3JOZXh0KSBcCisg
ICAgbWFjcm8ocmVqZWN0KSBcCisgICAgbWFjcm8oZnVsZmlsbG1lbnRIYW5kbGVyKSBcCisgICAg
bWFjcm8ocmVqZWN0aW9uSGFuZGxlcikgXAorICAgIG1hY3JvKGRlZmVycmVkKSBcCisgICAgbWFj
cm8oY291bnRkb3duSG9sZGVyKSBcCiAKICNkZWZpbmUgSlNDX0NPTU1PTl9JREVOVElGSUVSU19F
QUNIX0tFWVdPUkQobWFjcm8pIFwKICAgICBtYWNybyhicmVhaykgXApAQCAtMjAzLDcgKzIxMyw3
IEBACiAgICAgbWFjcm8odm9pZCkgXAogICAgIG1hY3JvKHdoaWxlKSBcCiAgICAgbWFjcm8od2l0
aCkgXAotICAgIG1hY3JvKHlpZWxkKQorICAgIG1hY3JvKHlpZWxkKSBcCiAKICNkZWZpbmUgSlND
X0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShtYWNybykgXAog
ICAgIG1hY3JvKGl0ZXJhdG9yKSBcCkBAIC0yMTYsNyArMjI2LDEyIEBACiAgICAgbWFjcm8oaW5k
ZXgpIFwKICAgICBtYWNybyh2YWx1ZXMpIFwKICAgICBtYWNybyhkZWZlcnJlZCkgXAotICAgIG1h
Y3JvKGNvdW50ZG93bkhvbGRlcikKKyAgICBtYWNybyhjb3VudGRvd25Ib2xkZXIpIFwKKyAgICBt
YWNybyhPYmplY3QpIFwKKyAgICBtYWNybyhUeXBlRXJyb3IpIFwKKyAgICBtYWNybyh1bmRlZmlu
ZWRLZXl3b3JkKSBcCisgICAgbWFjcm8oY2FsbCkgXAorICAgIG1hY3JvKGFwcGx5KQogCiBuYW1l
c3BhY2UgSlNDIHsKIApAQCAtMjQwLDExICsyNTUsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIAogI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFM
KG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZTsKICAgICAgICAgSlNDX0NPTU1PTl9JREVOVElG
SUVSU19FQUNIX1BST1BFUlRZX05BTUUoSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJUWV9O
QU1FX0dMT0JBTCkKKyAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKEpT
Q19JREVOVElGSUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwpCiAjdW5kZWYgSlNDX0lE
RU5USUZJRVJfREVDTEFSRV9QUk9QRVJUWV9OQU1FX0dMT0JBTAogCi0jZGVmaW5lIEpTQ19JREVO
VElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTChuYW1lKSBjb25zdCBJ
ZGVudGlmaWVyIG5hbWUjI1ByaXZhdGVOYW1lOworI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNM
QVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwobmFtZSkgY29uc3QgSWRlbnRpZmllciBu
YW1lIyNQcml2YXRlTmFtZTsgY29uc3Qgc3RkOjpwYWlyPElkZW50aWZpZXIsIElkZW50aWZpZXI+
IG1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQYWlyOwogICAgICAgICBKU0NfQ09NTU9OX1BSSVZBVEVf
SURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJ
VkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTCkKICN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJF
X1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwKKyAgICAgICAgCisgICAgICAgIGNvbnN0IElk
ZW50aWZpZXIqIGdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKKyAgICAg
ICAgSWRlbnRpZmllciBnZXRQdWJsaWNOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKICAg
ICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDA3NTg3NWZiMjMxNmE1NTU3MDUwYTY2
OTBjZDBmOTg4MjQ4NGY1ZjMuLjVhZjkwODc1NGU3NDdmOGNhZTBjZDA0YWY4ZDQ5MTUwMDQ2OGMy
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJ
VFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1
ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxP
YmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkpT
UHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAKaW5kZXggNTUzMzRi
ZTJmOTgwYTk4ZjdmZWE0MmEwNWJlMGYyMGMwMTlmZjBkZC4uMTZlYmFkMTBlNGU0MmI2Yjc4NWU5
NzhkMzhlODcwZTNiNWE2YzQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNp
bmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
ICNpbmNsdWRlICJMTEludENvbW1vbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIENv
bW1vblNsb3dQYXRocyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IDA1ZTExZTBiODBhMzQzMGFlYWIyMmIwMjIyYTIxMmY0
YThlMmM0OWIuLjM2NGNjNzE2NjYwOGI1MDA3ZDQ3N2Q4NzM5MThhNWQ2NGIxNjg2NTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3Bw
CkBAIC04MSw2ICs4MSwxMSBAQCBKU09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKIEpTT2JqZWN0KiBjcmVhdGVVbmRlZmluZWRW
YXJpYWJsZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7
CisgICAgCisgICAgaWYgKGlkZW50LmltcGwoKS0+aXNFbXB0eVVuaXF1ZSgpKSB7CisgICAgICAg
IFN0cmluZyBtZXNzYWdlKG1ha2VTdHJpbmcoIkNhbid0IGZpbmQgcHJpdmF0ZSB2YXJpYWJsZTog
QCIsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZXRQdWJsaWNOYW1lKGlkZW50KS5zdHJpbmcoKSkp
OworICAgICAgICByZXR1cm4gY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgbWVzc2FnZSk7Cisg
ICAgfQogICAgIFN0cmluZyBtZXNzYWdlKG1ha2VTdHJpbmcoIkNhbid0IGZpbmQgdmFyaWFibGU6
ICIsIGlkZW50LnN0cmluZygpKSk7CiAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4
ZWMsIG1lc3NhZ2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5oCmluZGV4IDE5ODk3NmJiM2ZlNmU2ZTkxMTc5ODEyZDFjYWY5YjhiZjliZmQwYmIuLmNmMGU3
NTNhN2M1ZjU0NDY3YjY0ZDhlMmE5YjNmYmEyNzE1MDAwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTQ4NCw3ICs0ODQsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGNsZWFyQ29kZSgpOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUlu
Zm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNl
c0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4
ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0
aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UpOyB9CiAKICAg
ICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9j
ay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkZ1bmN0aW9uRGVjbHMo
KSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xz
KCk7IH0KQEAgLTU0MCw3ICs1NDAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyQ29kZSgp
OwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBF
eGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2Rl
KCksIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3Qg
eyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlz
U3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNs
YXNzIFNjcmlwdEV4ZWN1dGFibGU7CkBAIC02MjgsNyArNjI4LDggQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2NrRm9yKGtpbmQpOwogICAgIH0KLSAgICAg
ICAgCisKKyAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxp
bmtlZEV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCk7IH0KICAgICBjb25zdCBJZGVudGlm
aWVyJiBuYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWUoKTsgfQogICAg
IGNvbnN0IElkZW50aWZpZXImIGluZmVycmVkTmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVj
dXRhYmxlLT5pbmZlcnJlZE5hbWUoKTsgfQogICAgIEpTU3RyaW5nKiBuYW1lVmFsdWUoKSBjb25z
dCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZVZhbHVlKCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAppbmRl
eCBjMWIwOGFmMmQ4MThkYWU1N2UxYjAwZmRhMTczYTgxNjEzNzUyOWI1Li4xMjQ5MGM0MGYzMzQx
N2VjYTkyMzg1MGEwZGM2NjJkYmJjZDQwZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC0yMiwxMiArMjIsMTMgQEAK
ICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgogCiAjaW5jbHVkZSAiQXJndW1lbnRzLmgi
CisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVk
ZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdCdWlsZGVyLmgiCi0jaW5jbHVkZSAiSW50
ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJMZXhl
ci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIApAQCAtMTA4LDcgKzEwOSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7
CiAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0cyhKU0Z1bmN0aW9uOjppbmZvKCkpKSB7CiAgICAg
ICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPih0aGlzVmFsdWUp
OwotICAgICAgICBpZiAoZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAgIGlmIChm
dW5jdGlvbi0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiZnVuY3Rpb24gIiwg
ZnVuY3Rpb24tPm5hbWUoZXhlYyksICIoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKTsKICAg
ICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gZnVuY3Rpb24tPmpzRXhlY3V0
YWJsZSgpOwogICAgICAgICBTdHJpbmcgc291cmNlU3RyaW5nID0gZXhlY3V0YWJsZS0+c291cmNl
KCkudG9TdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2
YXRpb24uY3BwCmluZGV4IDcyZWQxYzcxMjQwNjExNjhiMGFkZGQzMTE2Zjc1NWExMTdiOGZiOTAu
LmIzNzQ5NDMwOTllMjE1NWEzOTc3MTMzMTM0NzAyYzJhMjRhY2M4NmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcApAQCAtNTgsNyArNTgsNyBA
QCB2b2lkIEpTQWN0aXZhdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogCiBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlR2V0
KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICBT
eW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5
TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xU
YWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoZW50cnkuaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzIsNyArNzIsNyBAQCBpbmxpbmUg
Ym9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdAogCiBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxl
R2V0KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvcikKIHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5s
aW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlRW50cnkg
ZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnVpZCgpKTsKICAg
ICBpZiAoZW50cnkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtODksNyAr
ODksNyBAQCBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0KEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TgogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBI
ZWFwOjpoZWFwKHRoaXMpKTsKICAgICAKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3lt
Ym9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5
bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlO
YW1lLnVpZCgpKTsKICAgICBpZiAoZW50cnkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoZW50cnkuaXNSZWFkT25seSgpKSB7CkBAIC0xMzYsNyArMTM2LDcgQEAgaW5s
aW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKFZNJiB2
bSwgUHJvcGVydHlOYW1lIHByb3AKICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiByZWc7
CiAgICAgewogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZSgp
LT5tX2xvY2spOwotICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3lt
Ym9sVGFibGUoKS0+ZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAg
ICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUoKS0+Zmlu
ZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgICAgIGlmIChpdGVyID09IHN5bWJv
bFRhYmxlKCktPmVuZChsb2NrZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICBTeW1ib2xUYWJsZUVudHJ5JiBlbnRyeSA9IGl0ZXItPnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcAppbmRleCAy
ZmNmODgxNWMwNTY4MDU4MTJhNzk5MWE1ZmYwNjNkNjg3Mzk3MTY0Li45YTkyNTgzYWEwZWM5MGRi
YjMyOGVjZDUwZGMzMTM5YWVmMDI3M2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcApAQCAtMjcsNiArMjcsNyBAQAog
I2luY2x1ZGUgIkpTQXJndW1lbnRzSXRlcmF0b3IuaCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50cy5o
IgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCmluZGV4IDkwMDdiNWY3ZDNm
MTAzYjFkMjFiMWEzNjVhMjZjMjE1YzMyYjRkMjguLmJhMGEyZDM4ZTljNTNlMTU5MzdkNDZhODk1
MWE4YzhjNDUwNzkyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXku
Y3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUg
IkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkluZGV4aW5nSGVhZGVySW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5Lmgi
CiAjaW5jbHVkZSAiUmVqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL0FWTFRyZWUuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3BwCmluZGV4IGQ1
MDZjNGViZDI2MjBlZmQ3MDc5M2E4NzNkMDg1MmZiZDk3ODI4NTkuLmNmMzcwOTdlYzBjNjkyNWE4
NjdiOGMwMTBjMGVmYzQwNzQ0ODVmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVk
ZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgi
CiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlLmNwcAppbmRleCBjY2E2ODg4YmY5OGEwMjg2NDZjYTNkZGRmMzc2MjdjZTBlN2Q5MzAy
Li4zMzlhN2FiN2Y1OTUxNWU5NmFmYjdlYzRiODc0MWU3YWE4ZTE2NmY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApAQCAtMzIsNyArMzIsOSBAQAog
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2lu
Y2x1ZGUgIkpTTm90QW5PYmplY3QuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNp
bmNsdWRlICJOdW1iZXJPYmplY3QuaCIKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAppbmRleCBmN2M4
NDQ2NDUwOTJiMjUwODA1ZTZlOGQ0ODMyYzk5OGJkYjg5YjU0Li5kNzk1ZGQ1NmE5N2RkYjU5N2Mw
OTBmYzJlMGI3ZjMwOGUzM2ViY2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGxJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsSW5saW5lcy5oCkBAIC0yNyw4ICsyNywxMCBAQAogI2RlZmluZSBKU0NlbGxJbmxp
bmVzX2gKIAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZp
ZXJzLmgiCiAjaW5jbHVkZSAiRGVmZXJHQy5oIgogI2luY2x1ZGUgIkhhbmRsZS5oIgorI2luY2x1
ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAi
SlNPYmplY3QuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCAyNDE5NjQ2MTBiYjQ0MjdiMTg2MzczMzQ2
ZTI0ZjVhODJkMGNkY2M0Li43YmVmNTkxYjE0ZjM1ZjFhOTM0OGFkZTlhOWUwZjU5MGViNmFkZjg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAt
MTA5LDYgKzEwOSwxNCBAQCB2b2lkIEpTRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
TmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgaW50IGxlbmd0aAogICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBEb250RGVsZXRl
IHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKK0pTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNy
ZWF0ZUJ1aWx0aW5GdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBKU0Z1bmN0aW9uKiBmdW5j
dGlvbiA9IGNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBmdW5jdGlv
bi0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZygmdm0sIGV4
ZWN1dGFibGUtPm5hbWUoKS5zdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRF
bnVtKTsKKyAgICBmdW5jdGlvbi0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5n
dGgsIGpzTnVtYmVyKGV4ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCkpLCBEb250RGVsZXRlIHwg
UmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uOworfQorCiBPYmplY3RB
bGxvY2F0aW9uUHJvZmlsZSogSlNGdW5jdGlvbjo6Y3JlYXRlQWxsb2NhdGlvblByb2ZpbGUoRXhl
Y1N0YXRlKiBleGVjLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpCiB7CiAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKQEAgLTE0Miw3ICsxNTAsNyBAQCBjb25zdCBTdHJpbmcgSlNGdW5jdGlvbjo6Y2Fs
Y3VsYXRlZERpc3BsYXlOYW1lKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIGV4cGxp
Y2l0TmFtZTsKICAgICAKICAgICBjb25zdCBTdHJpbmcgYWN0dWFsTmFtZSA9IG5hbWUoZXhlYyk7
Ci0gICAgaWYgKCFhY3R1YWxOYW1lLmlzRW1wdHkoKSB8fCBpc0hvc3RGdW5jdGlvbigpKQorICAg
IGlmICghYWN0dWFsTmFtZS5pc0VtcHR5KCkgfHwgaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkK
ICAgICAgICAgcmV0dXJuIGFjdHVhbE5hbWU7CiAgICAgCiAgICAgcmV0dXJuIGpzRXhlY3V0YWJs
ZSgpLT5pbmZlcnJlZE5hbWUoKS5zdHJpbmcoKTsKQEAgLTE1MCwxMCArMTU4LDIwIEBAIGNvbnN0
IFN0cmluZyBKU0Z1bmN0aW9uOjpjYWxjdWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVj
KQogCiBjb25zdCBTb3VyY2VDb2RlKiBKU0Z1bmN0aW9uOjpzb3VyY2VDb2RlKCkgY29uc3QKIHsK
LSAgICBpZiAoaXNIb3N0RnVuY3Rpb24oKSkKKyAgICBpZiAoaXNIb3N0T3JCdWlsdGluRnVuY3Rp
b24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuICZqc0V4ZWN1dGFibGUoKS0+c291
cmNlKCk7CiB9CisgICAgCitib29sIEpTRnVuY3Rpb246OmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9u
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNIb3N0RnVuY3Rpb24oKSB8fCBpc0J1aWx0aW5GdW5j
dGlvbigpOworfQorCitib29sIEpTRnVuY3Rpb246OmlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gIWlzSG9zdEZ1bmN0aW9uKCkgJiYganNFeGVjdXRhYmxlKCktPmlzQnVp
bHRpbkZ1bmN0aW9uKCk7Cit9CiAKIHZvaWQgSlNGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewpAQCAtMjc3LDcgKzI5NSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTRnVuY3Rpb246OmNhbGxlckdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVu
Y29kZWRKU1ZhbHVlIHNsb3RCYXNlCiAgICAgaWYgKCFjYWxsZXIuaXNPYmplY3QoKSB8fCAhYXNP
YmplY3QoY2FsbGVyKS0+aW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsZXIpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0g
anNDYXN0PEpTRnVuY3Rpb24qPihjYWxsZXIpOwotICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0RnVu
Y3Rpb24oKSB8fCAhZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkKKyAg
ICBpZiAoZnVuY3Rpb24tPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgfHwgIWZ1bmN0aW9uLT5q
c0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoY2FsbGVyKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRnVuY3Rpb24uY2FsbGVyIHVzZWQgdG8gcmV0cmlldmUgc3Ry
aWN0IGNhbGxlciIpKSk7CiB9CkBAIC0yOTksNyArMzE3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNG
dW5jdGlvbjo6bmFtZUdldHRlcihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBzbG90QmFzZSwg
RW5jb2QKIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5j
dGlvbio+KG9iamVjdCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkpCisg
ICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90KTsKIAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1l
cygpLnByb3RvdHlwZSkgewpAQCAtMzYxLDcgKzM3OSw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0
T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOCiB2b2lkIEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5h
bWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICghdGhpc09iamVjdC0+aXNI
b3N0RnVuY3Rpb24oKSAmJiAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgewor
ICAgIGlmICghdGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSAmJiAobW9kZSA9
PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgewogICAgICAgICAvLyBNYWtlIHN1cmUgcHJv
dG90eXBlIGhhcyBiZWVuIHJlaWZpZWQuCiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNP
YmplY3QpOwogICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0
eVNsb3QodGhpc09iamVjdCwgZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwg
c2xvdCk7CkBAIC0zNzcsNyArMzk1LDcgQEAgdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRl
eFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLAogdm9pZCBK
U0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsK
LSAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSkgeworICAgIGlmICh0aGlzT2Jq
ZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKSB7CiAgICAgICAgIEJhc2U6OnB1dCh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTQyNSw3ICs0NDMsNyBAQCBib29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcAogYm9v
bCBKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKIHsKICAgICBKU0Z1bmN0aW9u
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICh0aGlz
T2JqZWN0LT5pc0hvc3RGdW5jdGlvbigpKQorICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1
aWx0aW5GdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHko
b2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKTsK
IAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlw
ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDdj
ZDE0YjhjMmQ4MDBmNjFiZGMxMmVkZDJkZjA0ZDM1ZmEwNjE5YjYuLjk5NWM5ZDExYmQ4OTgzODZm
N2EyMGM0MTYzNGZhN2NjOWI3Njk4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmgKQEAgLTY4LDYgKzY4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICByZXR1cm4gZnVuY3Rpb247CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHN0YXRp
YyBKU0Z1bmN0aW9uKiBjcmVhdGVCdWlsdGluRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFi
bGUqLCBKU0dsb2JhbE9iamVjdCopOworICAgICAgICAKICAgICAgICAgc3RhdGljIHZvaWQgZGVz
dHJveShKU0NlbGwqKTsKICAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmlu
ZyBuYW1lKEV4ZWNTdGF0ZSopOwpAQCAtMTQ1LDYgKzE0Nyw5IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgcmV0dXJuIG1fYWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OwogICAgICAg
ICB9CiAKKyAgICAgICAgYm9vbCBpc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpIGNvbnN0OworICAg
ICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3Q7CisKICAgICBwcm90ZWN0ZWQ6CiAg
ICAgICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dl
dE93blByb3BlcnR5U2xvdCB8IEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IE92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVy
ZUZsYWdzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMu
aAppbmRleCAyZGRjMjlmNzE4OTdiYjUxZDM5MGIwNmIyNWE3MzgzMzg3NGJhMGMxLi5lZGQzNDQ5
Y2U0N2IxNzM1ZThlNWRiYjA1ZjMxOGUzZDU1ZjNiZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXNfaAogI2RlZmluZSBKU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lc19oCiAKKyNpbmNsdWRlICJDb21t
b25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1
ZmZlci5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggNmRiODYyNzRjM2I4NzRhYWFkZTUxNTE4
OTgyNjcyNmZiMTM2YzE3My4uZjI0ZWE3MzAzZGY5NjlkYmQyZGNhNTJjODZkMTFjNzhjMDBkYjll
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZp
bmUgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzX2gKIAogI2luY2x1ZGUgIkFycmF5QnVm
ZmVyVmlldy5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRGVm
ZXJHQy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaAppbmRleCA0NTk5
OTdhNDY0YjkxMTk0NzdiMWJlODRlMzZjNGUyOTY2YWNlZjg1Li44ZTVmZjgyNzkxZTZmZjhkNGVi
OWMzNzM2OTFlNDMzZWI3ZDE2YWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3Rv
dHlwZUlubGluZXMuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBKU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvdHlwZUlubGluZXNfaAogI2RlZmluZSBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZUlubGluZXNfaAogCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNp
bmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRl
ICJKU0Z1bmN0aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKaW5kZXggMmMyNzRjMWE3ZDQ4MWMwN2RmMGQyYmViM2IyOTMxYTM5MDdh
NWU2Ni4uMDZlNTRjODRlNzdiOTAzMmJhYTFkMmRmNDdhMWM3MmU4MGI3ZGVhMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMzQ2
LDcgKzM0Niw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBl
KQogCiAgICAgLy8gQ29uc3RydWN0b3JzCiAKLSAgICBKU0NlbGwqIG9iamVjdENvbnN0cnVjdG9y
ID0gT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fb2JqZWN0
UHJvdG90eXBlLmdldCgpKTsKKyAgICBPYmplY3RDb25zdHJ1Y3Rvciogb2JqZWN0Q29uc3RydWN0
b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9vYmpl
Y3RQcm90b3R5cGUuZ2V0KCkpOworICAgIG1fb2JqZWN0Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlz
LCBvYmplY3RDb25zdHJ1Y3Rvcik7CiAgICAgSlNDZWxsKiBmdW5jdGlvbkNvbnN0cnVjdG9yID0g
RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2Z1bmN0
aW9uUHJvdG90eXBlLmdldCgpKTsKICAgICBKU0NlbGwqIGFycmF5Q29uc3RydWN0b3IgPSBBcnJh
eUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fYXJyYXlQcm90b3R5cGUu
Z2V0KCkpOwogCkBAIC00MzIsNyArNDMzLDEwIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0
KEpTVmFsdWUgcHJvdG90eXBlKQogICAgIEdsb2JhbFByb3BlcnR5SW5mbyBzdGF0aWNHbG9iYWxz
W10gPSB7CiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5OYU4s
IGpzTmFOKCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPkluZmluaXR5LCBqc051bWJlcihzdGQ6
Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpLCBEb250RW51bSB8IERvbnREZWxl
dGUgfCBSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5h
bWVzLT51bmRlZmluZWRLZXl3b3JkLCBqc1VuZGVmaW5lZCgpLCBEb250RW51bSB8IERvbnREZWxl
dGUgfCBSZWFkT25seSkKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPnVuZGVmaW5lZEtleXdvcmQsIGpzVW5kZWZpbmVkKCksIERvbnRFbnVtIHwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPnVuZGVmaW5lZEtleXdvcmRQcml2YXRlTmFtZSwganNVbmRlZmluZWQoKSwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+T2JqZWN0UHJpdmF0ZU5hbWUsIG9iamVjdENvbnN0cnVjdG9yLCBEb250
RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5UeXBlRXJyb3JQcml2YXRlTmFtZSwgbV90eXBlRXJyb3JDb25z
dHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpCiAgICAgfTsK
ICAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2JhbHMsIFdURl9BUlJBWV9MRU5HVEgoc3Rh
dGljR2xvYmFscykpOwogICAgIApAQCAtNjA4LDYgKzYxMiw3IEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zeW50YXhFcnJvckNvbnN0cnVjdG9yKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV90eXBlRXJyb3JDb25zdHJ1Y3Rvcik7
CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fVVJJRXJyb3JDb25zdHJ1Y3Rvcik7
CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fb2JqZWN0Q29uc3RydWN0b3IpOwog
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Byb21pc2VDb25zdHJ1Y3Rvcik7CiAK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9ldmFsRnVuY3Rpb24pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggYjBjYWQz
ZGM1NDcwZjdjN2EwZTU3MGJkY2QyZGZmYTg5NWUyYWEwYy4uM2E2MTZjNmYwNWVkZjFkMjk1YWY4
NDQxYWE2NjUwMGZiOTJhNGE0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCkBAIC02Nyw2ICs2Nyw3IEBAIGNsYXNzIEpTU3RhY2s7CiBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBNaWNyb3Rhc2s7CiBjbGFzcyBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yOworY2xhc3MgT2JqZWN0Q29uc3RydWN0b3I7CiBjbGFzcyBQcm9ncmFt
Q29kZUJsb2NrOwogY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7CiBjbGFzcyBSZWdFeHBDb25zdHJ1
Y3RvcjsKQEAgLTE1OCw2ICsxNTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV3JpdGVCYXJyaWVyPE5h
dGl2ZUVycm9yQ29uc3RydWN0b3I+IG1fdHlwZUVycm9yQ29uc3RydWN0b3I7CiAgICAgV3JpdGVC
YXJyaWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IG1fVVJJRXJyb3JDb25zdHJ1Y3RvcjsKICAg
ICBXcml0ZUJhcnJpZXI8SlNQcm9taXNlQ29uc3RydWN0b3I+IG1fcHJvbWlzZUNvbnN0cnVjdG9y
OworICAgIFdyaXRlQmFycmllcjxPYmplY3RDb25zdHJ1Y3Rvcj4gbV9vYmplY3RDb25zdHJ1Y3Rv
cjsKIAogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2V2YWxGdW5jdGlvbjsKICAgICBX
cml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9jYWxsRnVuY3Rpb247CkBAIC0zMzAsNiArMzMyLDcg
QEAgcHVibGljOgogICAgIFJlZ0V4cENvbnN0cnVjdG9yKiByZWdFeHBDb25zdHJ1Y3RvcigpIGNv
bnN0IHsgcmV0dXJuIG1fcmVnRXhwQ29uc3RydWN0b3IuZ2V0KCk7IH0KIAogICAgIEVycm9yQ29u
c3RydWN0b3IqIGVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yQ29uc3Ry
dWN0b3IuZ2V0KCk7IH0KKyAgICBPYmplY3RDb25zdHJ1Y3Rvciogb2JqZWN0Q29uc3RydWN0b3Io
KSBjb25zdCB7IHJldHVybiBtX29iamVjdENvbnN0cnVjdG9yLmdldCgpOyB9CiAgICAgTmF0aXZl
RXJyb3JDb25zdHJ1Y3RvciogZXZhbEVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBt
X2V2YWxFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CiAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ciogcmFuZ2VFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZUVycm9yQ29u
c3RydWN0b3IuZ2V0KCk7IH0KICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiByZWZlcmVuY2VF
cnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2VFcnJvckNvbnN0cnVj
dG9yLmdldCgpOyB9CkBAIC01ODEsNyArNTg0LDcgQEAgaW5saW5lIGJvb2wgSlNHbG9iYWxPYmpl
Y3Q6Omhhc093blByb3BlcnR5Rm9yV3JpdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUK
IAogaW5saW5lIGJvb2wgSlNHbG9iYWxPYmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVydHkoUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0g
c3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAg
IFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVy
dHlOYW1lLnVpZCgpKTsKICAgICByZXR1cm4gIWVudHJ5LmlzTnVsbCgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggMmI2N2ExZDllZWQ4NGU5
OTU2ZjhiYjk2ODM4NGM4NGNhZWE1M2NmZi4uMmVhMmMyNGU2ZWFiNGNkMGQ3ZmZlZDY2NWVmNGFl
NDFhZjA3NTBmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNw
cApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2V0Q2xhc3NQcm9wZXJ0eU5h
bWVzKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQ2xhc3NJbmZvKiBjbGFzcwogICAgICAgICBpbnQg
aGFzaFNpemVNYXNrID0gdGFibGUtPmNvbXBhY3RTaXplIC0gMTsKICAgICAgICAgY29uc3QgSGFz
aEVudHJ5KiBlbnRyeSA9IHRhYmxlLT50YWJsZTsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PD0gaGFzaFNpemVNYXNrOyArK2ksICsrZW50cnkpIHsKLSAgICAgICAgICAgIGlmIChlbnRyeS0+
a2V5KCkgJiYgKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCAobW9kZSA9PSBJ
bmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgJiYgISgoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEZ1
bmN0aW9uKSAmJiBkaWRSZWlmeSkpCisgICAgICAgICAgICBpZiAoZW50cnktPmtleSgpICYmICgh
KGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwgKG1vZGUgPT0gSW5jbHVkZURvbnRF
bnVtUHJvcGVydGllcykpICYmICEoKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5j
dGlvbikgJiYgZGlkUmVpZnkpKQogICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGVu
dHJ5LT5rZXkoKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNjE4LDcgKzE2MTgsNyBAQCB2b2lk
IEpTT2JqZWN0OjpyZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlbGV0ZShFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpcyk7
CiAgICAgICAgIGZvciAoSGFzaFRhYmxlOjpDb25zdEl0ZXJhdG9yIGl0ZXIgPSBoYXNoVGFibGUt
PmJlZ2luKHZtKTsgaXRlciAhPSBoYXNoVGFibGUtPmVuZCh2bSk7ICsraXRlcikgewotICAgICAg
ICAgICAgaWYgKGl0ZXItPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKQorICAgICAgICAgICAgaWYg
KGl0ZXItPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKQogICAgICAgICAgICAgICAg
IHNldFVwU3RhdGljRnVuY3Rpb25TbG90KGdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksICpp
dGVyLCB0aGlzLCBJZGVudGlmaWVyKCZ2bSwgaXRlci0+a2V5KCkpLCBzbG90KTsKICAgICAgICAg
fQogICAgIH0KQEAgLTIyMzYsNiArMjIzNiwxNiBAQCB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RO
YXRpdmVGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbgog
ICAgIHB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCBmdW5jdGlvbiwgYXR0cmlidXRlcyk7CiB9
CiAKK3ZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbihWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1l
LCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdW5zaWduZWQgYXR0cmli
dXRlcykKK3sKKyAgICBTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUo
KTsKKyAgICBpZiAoIW5hbWUpCisgICAgICAgIG5hbWUgPSB2bS5wcm9wZXJ0eU5hbWVzLT5hbm9u
eW1vdXMuaW1wbCgpOworICAgIEFTU0VSVChuYW1lKTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlv
biA9IEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgc3RhdGljX2Nhc3Q8RnVu
Y3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxlKSwgZ2xvYmFsT2JqZWN0KTsKKyAg
ICBwdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgZnVuY3Rpb24sIGF0dHJpYnV0ZXMpOworfQor
CiB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJvcGVydHlOYW1l
JiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiBu
YXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcykK
IHsKICAgICBTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDAyYjEzN2IzNTBjMmZh
ODMyNWJkM2I5NjQ3MTEyYWJlODc2ZjM4M2YuLmRkZTU5N2VmZmFlYzBmMWI4ZDQ0YzI5MTE5NTAz
MDFmMDYwMDdlOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApA
QCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkJ1dHRlcmZseS5oIgogI2luY2x1ZGUgIkNhbGxG
cmFtZS5oIgogI2luY2x1ZGUgIkNsYXNzSW5mby5oIgotI2luY2x1ZGUgIkNvbW1vbklkZW50aWZp
ZXJzLmgiCiAjaW5jbHVkZSAiQ29weVdyaXRlQmFycmllci5oIgogI2luY2x1ZGUgIkRlZmVyR0Mu
aCIKICNpbmNsdWRlICJIZWFwLmgiCkBAIC01ODEsNiArNTgwLDcgQEAgcHVibGljOgogICAgIHZv
aWQgcHV0RGlyZWN0VW5kZWZpbmVkKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgeyBsb2NhdGlvbkZv
ck9mZnNldChvZmZzZXQpLT5zZXRVbmRlZmluZWQoKTsgfQogCiAgICAgdm9pZCBwdXREaXJlY3RO
YXRpdmVGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwg
dW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpOworICAgIHZvaWQgcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCBGdW5jdGlvbkV4ZWN1dGFibGUq
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICB2b2lkIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFt
ZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBj
b25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5j
cHAKaW5kZXggNjhhOGJkODdkMzhhZGJiYjlkZDJhYzllYzRiNDlkNWVmNDU0OWQ1Ni4uMjM3YzQy
YmIwZGEwZjE2Njc2ZWIxMWFkZTgxODBhN2IwNmQ5OGViNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKQEAg
LTI5LDcgKzI5LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmgiCiAKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKaW5kZXgg
ZjQzNjJmZjM1NGVlNmE1MDIyMWJiNzMxZDFhMjYxMWU2ZGQ2MWJjMC4uZDA3MzcxOWRlMTYwZDJm
MjkyMTEwYTU5NmExMDVlMmZhMjExNWZmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaApAQCAtMzEsNyArMzEsNiBA
QAogCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgotI2luY2x1
ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1
ZGUgPG1lbW9yeT4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5k
ZXggMmIxY2RkZGM1ODQxZDYwZDE1N2EyZTYxZjcwMmIwZWU1ZmExZDY3Ni4uZTM5MzQxNjBhZWE5
MjZlZjE1OTMyZjg3OTBlMjRjNTJhZjAyZDM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oCkBAIC0yNCw3ICsyNCw2IEBACiAjZGVmaW5lIEpTU3RyaW5nX2gKIAog
I2luY2x1ZGUgIkNhbGxGcmFtZS5oIgotI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAj
aW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlByb3BlcnR5RGVzY3JpcHRvci5oIgog
I2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgpAQCAtNDcyLDMzICs0NzEsNiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKCZleGVj
LT52bSgpLCBzKTsgfQogICAgIGlubGluZSBKU1N0cmluZyoganNPd25lZFN0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4ganNPd25lZFN0cmluZygmZXhlYy0+
dm0oKSwgcyk7IH0KIAotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5n
UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQotICAgIHsKLSAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7Ci0gICAgICAgICAgICBzbG90LnNldFZhbHVl
KHRoaXMsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBqc051bWJlcihtX2xlbmd0
aCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICB1bnNp
Z25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKLSAgICAgICAgaWYgKGkgPCBtX2xlbmd0
aCkgewotICAgICAgICAgICAgQVNTRVJUKGkgIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTsg
Ly8gTm8gbmVlZCBmb3IgYW4gZXhwbGljaXQgY2hlY2ssIHRoZSBhYm92ZSB0ZXN0IHdvdWxkIGFs
d2F5cyBmYWlsIQotICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlIHwg
UmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIGkpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAgICAgICAgIAot
ICAgIEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4
ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
Ci0gICAgewotICAgICAgICBpZiAocHJvcGVydHlOYW1lIDwgbV9sZW5ndGgpIHsKLSAgICAgICAg
ICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBnZXRJbmRleChl
eGVjLCBwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9
Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQogICAgIGlubGluZSBib29sIGlzSlNT
dHJpbmcoSlNWYWx1ZSB2KSB7IHJldHVybiB2LmlzQ2VsbCgpICYmIHYuYXNDZWxsKCktPmNsYXNz
SW5mbygpID09IEpTU3RyaW5nOjppbmZvKCk7IH0KIAogICAgIC8vIC0tLSBKU1ZhbHVlIGlubGlu
ZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTI4LDMyICs1MDAsNiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIHRvV1RGU3RyaW5nU2xvd0Nhc2UoZXhlYyk7CiAg
ICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBTdHJpbmcgaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3Rv
U3RyaW5nKGNvbnN0IEpTVmFsdWUmIHZhbHVlLCBFeGVjU3RhdGUqIGV4ZWMpCi0gICAgewotICAg
ICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgICAgICBpZiAodmFsdWUuaXNJbnQzMigpKQot
ICAgICAgICAgICAgcmV0dXJuIHZtLm51bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZS5hc0ludDMyKCkp
OwotICAgICAgICBpZiAodmFsdWUuaXNEb3VibGUoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5u
dW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNEb3VibGUoKSk7Ci0gICAgICAgIGlmICh2YWx1ZS5p
c1RydWUoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT50cnVlS2V5d29y
ZC5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzRmFsc2UoKSkKLSAgICAgICAgICAgIHJl
dHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5mYWxzZUtleXdvcmQuc3RyaW5nKCk7Ci0gICAgICAgIGlm
ICh2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5u
dWxsS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkKCkpCi0g
ICAgICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZC5zdHJp
bmcoKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsK
LSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIFN0cmluZyBKU1ZhbHVlOjp0b1dURlN0cmluZ0lu
bGluZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoaXNTdHJpbmco
KSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU1N0cmluZyo+KGFzQ2VsbCgpKS0+
dmFsdWUoZXhlYyk7Ci0KLSAgICAgICAgcmV0dXJuIGlubGluZUpTVmFsdWVOb3RTdHJpbmd0b1N0
cmluZygqdGhpcywgZXhlYyk7Ci0gICAgfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlm
IC8vIEpTU3RyaW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmdJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzc4YzA1ZmM4MGQ4OGU4NTM3YzlkMmE1ZWFiOWZmMGJh
OWI2MGE3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nSW5saW5lcy5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTU3RyaW5nSW5saW5lc19o
CisjZGVmaW5lIEpTU3RyaW5nSW5saW5lc19oCisKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVy
cy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0FMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0
U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgeworICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMs
IERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBqc051bWJlcihtX2xlbmd0aCkpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgaSA9IHByb3Bl
cnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGkgPCBtX2xlbmd0aCkgeworICAgICAgICBBU1NF
UlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOyAvLyBObyBuZWVkIGZvciBhbiBleHBs
aWNpdCBjaGVjaywgdGhlIGFib3ZlIHRlc3Qgd291bGQgYWx3YXlzIGZhaWwhCisgICAgICAgIHNs
b3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBnZXRJbmRleChleGVjLCBp
KSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK0FMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90
KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCit7CisgICAgaWYgKHByb3BlcnR5TmFtZSA8IG1fbGVuZ3RoKSB7CisgICAgICAgIHNsb3Qu
c2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBnZXRJbmRleChleGVjLCBwcm9w
ZXJ0eU5hbWUpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHJldHVy
biBmYWxzZTsKK30KKworQUxXQVlTX0lOTElORSBTdHJpbmcgaW5saW5lSlNWYWx1ZU5vdFN0cmlu
Z3RvU3RyaW5nKGNvbnN0IEpTVmFsdWUmIHZhbHVlLCBFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBpZiAodmFsdWUuaXNJbnQzMigpKQorICAgICAgICBy
ZXR1cm4gdm0ubnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVlLmFzSW50MzIoKSk7CisgICAgaWYgKHZh
bHVlLmlzRG91YmxlKCkpCisgICAgICAgIHJldHVybiB2bS5udW1lcmljU3RyaW5ncy5hZGQodmFs
dWUuYXNEb3VibGUoKSk7CisgICAgaWYgKHZhbHVlLmlzVHJ1ZSgpKQorICAgICAgICByZXR1cm4g
dm0ucHJvcGVydHlOYW1lcy0+dHJ1ZUtleXdvcmQuc3RyaW5nKCk7CisgICAgaWYgKHZhbHVlLmlz
RmFsc2UoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPmZhbHNlS2V5d29yZC5z
dHJpbmcoKTsKKyAgICBpZiAodmFsdWUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiB2bS5wcm9w
ZXJ0eU5hbWVzLT5udWxsS2V5d29yZC5zdHJpbmcoKTsKKyAgICBpZiAodmFsdWUuaXNVbmRlZmlu
ZWQoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQu
c3RyaW5nKCk7CisgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsK
K30KKyAgICAKK0FMV0FZU19JTkxJTkUgU3RyaW5nIEpTVmFsdWU6OnRvV1RGU3RyaW5nSW5saW5l
KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBpZiAoaXNTdHJpbmcoKSkKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEpTU3RyaW5nKj4oYXNDZWxsKCkpLT52YWx1ZShleGVjKTsKKyAg
ICAKKyAgICByZXR1cm4gaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKCp0aGlzLCBleGVj
KTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKaW5kZXggMmFjMjUyNGM1ZGZkYTNkMTIyNDlk
Nzc5MGFkYzMxMjllM2MwZTg3MS4uZmJjOGI4OTVlYWU2YWY3ODg4MzliZWI1ZTgzZDdiNmI5Nzky
OGZhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xU
YWJsZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1i
b2xUYWJsZU9iamVjdC5jcHAKQEAgLTY0LDYgKzY0LDggQEAgdm9pZCBKU1N5bWJvbFRhYmxlT2Jq
ZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXQKICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIodGhpc09iamVjdC0+c3ltYm9s
VGFibGUoKS0+bV9sb2NrKTsKICAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgZW5k
ID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+ZW5kKGxvY2tlcik7CiAgICAgICAgIGZvciAo
U3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXQgPSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgp
LT5iZWdpbihsb2NrZXIpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIGlmIChpdC0+
a2V5LT5pc0VtcHR5VW5pcXVlKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICBpZiAoIShpdC0+dmFsdWUuZ2V0QXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IChtb2Rl
ID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKQogICAgICAgICAgICAgICAgIHByb3BlcnR5
TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgaXQtPmtleS5nZXQoKSkpOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
LmgKaW5kZXggYjViMjBhODQ1YjZhYjY0NDI0YjM3ZTMxYjI3NzRlZjkwNTM1M2Y3Zi4uZDAzYjI0
NTExYzJkZTE5NTlmYjVmNTZkNjQ5YzY0ZDBlZmUwNjg1NSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaApAQCAtNzIsNyArNzIs
NyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKIHsKICAgICBTeW1ib2xUYWJsZSYgc3lt
Ym9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgIENvbmN1cnJlbnRKSVRMb2Nr
ZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRl
cmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGlj
TmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFi
bGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGl0ZXIgPT0gc3lt
Ym9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBTeW1ib2xU
YWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+dmFsdWU7CkBAIC04Nyw3ICs4Nyw3IEBAIGlu
bGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogewogICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJs
ZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBp
dGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkp
OworICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5k
KGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJs
ZS5lbmQobG9ja2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFN5bWJvbFRhYmxlRW50
cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1ZTsKQEAgLTEwNCw3ICsxMDQsNyBAQCBpbmxpbmUg
Ym9vbCBzeW1ib2xUYWJsZUdldCgKIHsKICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAq
b2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5
bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9
IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAg
ICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2Nr
ZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5k
KGxvY2tlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBTeW1ib2xUYWJsZUVudHJ5OjpG
YXN0IGVudHJ5ID0gaXRlci0+dmFsdWU7CkBAIC0xMjYsNyArMTI2LDcgQEAgaW5saW5lIGJvb2wg
c3ltYm9sVGFibGVQdXQoCiAgICAgewogICAgICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUg
PSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBHQ1NhZmVDb25jdXJyZW50SklUTG9j
a2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2ssIGV4ZWMtPnZtKCkuaGVhcCk7Ci0gICAgICAg
IFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tl
ciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6
Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVp
ZCgpKTsKICAgICAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJvb2wgd2FzRmF0OwpAQCAtMTU5LDcgKzE1
OSw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoCiAgICAgewog
ICAgICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgp
OwogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2sp
OwotICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUu
ZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgICAgICBTeW1ib2xU
YWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3Bl
cnR5TmFtZS51aWQoKSk7CiAgICAgICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZChsb2Nr
ZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5
JiBlbnRyeSA9IGl0ZXItPnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTG9va3VwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1
cC5jcHAKaW5kZXggYTgwNmRkMDUyYTBjYmVlNGNhYzJjYWE2ZTA4YzY3MTYwMDVjMjcwYy4uYTk3
NjUyMDFiOWY1MTg2NDE0MjNkZGUwZmUwZTJlNTFhOGNlNzNiYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Mb29rdXAuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgSGFzaFRhYmxl
OjpkZWxldGVUYWJsZSgpIGNvbnN0CiBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIHRoaXNPYmosIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBBU1NF
UlQodGhpc09iai0+Z2xvYmFsT2JqZWN0KCkpOwotICAgIEFTU0VSVChlbnRyeS0+YXR0cmlidXRl
cygpICYgRnVuY3Rpb24pOworICAgIEFTU0VSVChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRp
bk9yRnVuY3Rpb24pOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgdW5zaWduZWQgYXR0
cmlidXRlczsKICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSB0aGlzT2JqLT5nZXREaXJlY3RP
ZmZzZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CkBAIC03OSw5ICs3OSwxMyBAQCBi
b29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVu
dHJ5KiBlbnRyeSwgSlNPYmplY3QqCiAgICAgICAgIGlmICh0aGlzT2JqLT5zdGF0aWNGdW5jdGlv
bnNSZWlmaWVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgICAgIHRo
aXNPYmotPnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKAotICAgICAgICAgICAgdm0sIHRoaXNPYmot
Pmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5mdW5jdGlvbkxlbmd0aCgpLAot
ICAgICAgICAgICAgZW50cnktPmZ1bmN0aW9uKCksIGVudHJ5LT5pbnRyaW5zaWMoKSwgZW50cnkt
PmF0dHJpYnV0ZXMoKSk7CisgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRp
bikKKyAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbih2bSwgdGhp
c09iai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZW50cnktPmJ1aWx0aW5HZW5lcmF0
b3IoKSh2bSksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIHRoaXNPYmotPnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKAorICAgICAgICAgICAgICAgIHZt
LCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBlbnRyeS0+ZnVuY3Rpb25M
ZW5ndGgoKSwKKyAgICAgICAgICAgICAgICBlbnRyeS0+ZnVuY3Rpb24oKSwgZW50cnktPmludHJp
bnNpYygpLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAgICAgICAgfQogICAgICAgICBvZmZzZXQg
PSB0aGlzT2JqLT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7
CiAgICAgICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKaW5kZXggYmRlODNkNGE2ZmMzNTU3Nzg1MGUzMWU4
OGJjMzlmZDA1ZjdiY2U1Mi4uZGJhMzg5ZTllMjQzZGQwZWNiMmJhOThmMzk0ZDQwNzlmOWRlYTkz
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKQEAgLTQzLDYgKzQzLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgLy8gaWUuIHR5cGVkZWYgSlNWYWx1ZSAoKkdldEZ1bmN0
aW9uKShFeGVjU3RhdGUqLCBKU09iamVjdCogYmFzZU9iamVjdCkKICAgICB0eXBlZGVmIFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jIEdldEZ1bmN0aW9uOwogICAgIHR5cGVkZWYgUHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmMgUHV0RnVuY3Rpb247CisgICAgdHlwZWRlZiBGdW5jdGlvbkV4
ZWN1dGFibGUqICgqQnVpbHRpbkdlbmVyYXRvcikoVk0mKTsKIAogICAgIGNsYXNzIEhhc2hFbnRy
eSB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjgsMTEgKzY5LDEyIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1faW50cmluc2ljOwogICAgICAg
ICB9CiAKKyAgICAgICAgQnVpbHRpbkdlbmVyYXRvciBidWlsdGluR2VuZXJhdG9yKCkgY29uc3Qg
eyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgQnVpbHRpbik7IHJldHVybiBtX3UuYnVpbHRpbkdlbmVy
YXRvci5nZW5lcmF0b3JWYWx1ZTsgfQogICAgICAgICBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbigp
IGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKTsgcmV0dXJuIG1fdS5mdW5j
dGlvbi5mdW5jdGlvblZhbHVlOyB9CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgZnVuY3Rpb25MZW5n
dGgoKSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBGdW5jdGlvbik7IHJldHVybiBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihtX3UuZnVuY3Rpb24ubGVuZ3RoKTsgfQogCi0gICAgICAg
IEdldEZ1bmN0aW9uIHByb3BlcnR5R2V0dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0
ZXMgJiBGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5LmdldDsgfQotICAgICAgICBQdXRG
dW5jdGlvbiBwcm9wZXJ0eVB1dHRlcigpIGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1dGVzICYg
RnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0eS5wdXQ7IH0KKyAgICAgICAgR2V0RnVuY3Rp
b24gcHJvcGVydHlHZXR0ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEJ1aWx0
aW5PckZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVydHkuZ2V0OyB9CisgICAgICAgIFB1dEZ1
bmN0aW9uIHByb3BlcnR5UHV0dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBC
dWlsdGluT3JGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5LnB1dDsgfQogCiAgICAgICAg
IGludHB0cl90IGxleGVyVmFsdWUoKSBjb25zdCB7IEFTU0VSVCghbV9hdHRyaWJ1dGVzKTsgcmV0
dXJuIG1fdS5sZXhlci52YWx1ZTsgfQogCkBAIC05NCw2ICs5NiwxMCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgICAgICBpbnRwdHJfdCBsZW5ndGg7IC8vIG51bWJlciBvZiBhcmd1bWVu
dHMgZm9yIGZ1bmN0aW9uCiAgICAgICAgICAgICB9IGZ1bmN0aW9uOwogICAgICAgICAgICAgc3Ry
dWN0IHsKKyAgICAgICAgICAgICAgICBCdWlsdGluR2VuZXJhdG9yIGdlbmVyYXRvclZhbHVlOwor
ICAgICAgICAgICAgICAgIGludHB0cl90IHVudXNlZDsKKyAgICAgICAgICAgIH0gYnVpbHRpbkdl
bmVyYXRvcjsKKyAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgR2V0RnVuY3Rp
b24gZ2V0OwogICAgICAgICAgICAgICAgIFB1dEZ1bmN0aW9uIHB1dDsKICAgICAgICAgICAgIH0g
cHJvcGVydHk7CkBAIC0yMDksNyArMjE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0
ZToKICAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBIYXNoRW50cnkqIGVudHJ5KFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cmluZ0lt
cGwqIGltcGwgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOworICAgICAgICAgICAgU3RyaW5n
SW1wbCogaW1wbCA9IHByb3BlcnR5TmFtZS51aWQoKTsKICAgICAgICAgICAgIGlmICghaW1wbCkK
ICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgCkBAIC0yNDksNyArMjU1LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGlmICghZW50cnkpIC8vIG5vdCBmb3VuZCwgZm9yd2Fy
ZCB0byBwYXJlbnQKICAgICAgICAgICAgIHJldHVybiBQYXJlbnRJbXA6OmdldE93blByb3BlcnR5
U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCi0gICAgICAgIGlmIChl
bnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pCisgICAgICAgIGlmIChlbnRyeS0+YXR0cmli
dXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pCiAgICAgICAgICAgICByZXR1cm4gc2V0VXBTdGF0
aWNGdW5jdGlvblNsb3QoZXhlYywgZW50cnksIHRoaXNPYmosIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiAKICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09iaiwgZW50cnktPmF0dHJp
YnV0ZXMoKSwgZW50cnktPnByb3BlcnR5R2V0dGVyKCkpOwpAQCAtMjg2LDcgKzI5Miw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBpZiAoIWVudHJ5KSAvLyBub3QgZm91bmQsIGZvcndhcmQg
dG8gcGFyZW50CiAgICAgICAgICAgICByZXR1cm4gUGFyZW50SW1wOjpnZXRPd25Qcm9wZXJ0eVNs
b3QodGhpc09iaiwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIAotICAgICAgICBBU1NFUlQo
IShlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pKTsKKyAgICAgICAgQVNTRVJUKCEoZW50
cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSk7CiAKICAgICAgICAgc2xvdC5z
ZXRDYWNoZWFibGVDdXN0b20odGhpc09iaiwgZW50cnktPmF0dHJpYnV0ZXMoKSwgZW50cnktPnBy
b3BlcnR5R2V0dGVyKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI5NSw3ICszMDEsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgdm9pZCBwdXRFbnRyeShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0KiBiYXNlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiAgICAg
ewogICAgICAgICAvLyBJZiB0aGlzIGlzIGEgZnVuY3Rpb24gcHV0IGl0IGFzIGFuIG92ZXJyaWRl
IHByb3BlcnR5LgotICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKSB7
CisgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pIHsK
ICAgICAgICAgICAgIGlmIChKU09iamVjdCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNP
YmplY3QqPihzbG90LnRoaXNWYWx1ZSgpKSkKICAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5w
dXREaXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgUmVhZE9ubHkpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3Bw
CmluZGV4IGQ1ZTcyOGMyY2QxMDIwYTQ3ZTRhZGNkNjQ5Y2QxZmZmYTVjZDZhODMuLmRjYTJmZDhk
MWY2YWMyM2I4ZmY4MTdjYmIxOGZhYWU3YmNkNTk3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCkBAIC0z
OCw2ICszOCwyMCBAQCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpOYXRpdmVFcnJvckNvbnN0cnVj
dG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiB9CiAKK3ZvaWQgTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBu
YW1lKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBuYW1lKTsKKyAgICBBU1NFUlQo
aW5oZXJpdHMoaW5mbygpKSk7CisgICAgCisgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHByb3Rv
dHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlU3RydWN0dXJlLCBuYW1lLCB0aGlzKTsKKyAgICAKKyAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIERvbnREZWxldGUgfCBSZWFkT25s
eSB8IERvbnRFbnVtKTsgLy8gRUNNQSAxNS4xMS43LjUKKyAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RGVsZXRlIHwgUmVhZE9ubHkg
fCBEb250RW51bSk7CisgICAgbV9lcnJvclN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEVycm9ySW5z
dGFuY2U6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUpKTsKKyAg
ICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZSk7CisgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUt
PmlzT2JqZWN0KCkpOworfQorCiB2b2lkIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PE5hdGl2ZUVycm9yQ29uc3RydWN0
b3IqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05h
dGl2ZUVycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05h
dGl2ZUVycm9yQ29uc3RydWN0b3IuaAppbmRleCA3NDBkM2Y5MzMyOTJmZDJhY2NiNGI5OTAzNDQz
MTJiOTMxOWFlMTEwLi40MzhhM2FmYjliYjBmNjQxMmM5NzkzMjIzMGM4ODcxMDk2MWY1NDY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0
cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvci5oCkBAIC01MSwxOSArNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
U3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fZXJyb3JTdHJ1Y3R1cmUuZ2V0
KCk7IH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogcHJvdG90eXBlU3Ry
dWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtLCBuYW1lKTsKLSAgICAgICAgICAgIEFTU0VSVChpbmhlcml0cyhp
bmZvKCkpKTsKLQotICAgICAgICAgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9
IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
U3RydWN0dXJlLCBuYW1lLCB0aGlzKTsKLQotICAgICAgICAgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkg
fCBEb250RW51bSk7IC8vIEVDTUEgMTUuMTEuNy41Ci0gICAgICAgICAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkgfCBEb250RW51bSk7Ci0gICAgICAgICAgICBtX2Vycm9yU3RydWN0dXJlLnNldCh2bSwg
dGhpcywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSkpOwotICAgICAgICAgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUpOwotICAgICAg
ICAgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwotICAgICAgICB9Cisg
ICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAppbmRleCBkOTM4ZmEz
MTY0NWFmMjZiNzU4NTE0ZGI2YjI0NzhmMTgzZTllZWUxLi5jZmU5YzRkMzJiYTc2OGM3NGU0ZmZi
YjE5MTM1Mjc5ZGViZjExNzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eVNsb3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eVNsb3QuaApAQCAtNDIsNiArNDIsOCBAQCBlbnVtIEF0dHJpYnV0ZSB7CiAgICAgRnVu
Y3Rpb24gICAgID0gMSA8PCA0LCAgLy8gcHJvcGVydHkgaXMgYSBmdW5jdGlvbiAtIG9ubHkgdXNl
ZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIEFjY2Vzc29yICAgICA9IDEgPDwgNSwgIC8vIHBy
b3BlcnR5IGlzIGEgZ2V0dGVyL3NldHRlcgogICAgIEN1c3RvbUFjY2Vzc29yID0gMSA8PCA2LAor
ICAgIEJ1aWx0aW4gICAgICAgICA9IDEgPDwgNywgLy8gcHJvcGVydHkgaXMgYSBidWlsdGluIGZ1
bmN0aW9uIC0gb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCisgICAgQnVpbHRpbk9yRnVu
Y3Rpb24gPSBCdWlsdGluIHwgRnVuY3Rpb24sIC8vIGhlbHBlciBvbmx5IHVzZWQgYnkgc3RhdGlj
IGhhc2h0YWJsZXMKIH07CiAKIGNsYXNzIFByb3BlcnR5U2xvdCB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAppbmRleCA4OWQ3YWMxYjhj
YmYxZGIwZTEyNmYxZmM3OTZkZmQ1ZmM4NGIyZTU5Li45ZGRhMGJhOGRlMTQxMmVhZjRkMjkxZGNm
MGM2YjM5NjU3ZmI2NzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cFByb3RvdHlwZS5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJBcnJheVBy
b3RvdHlwZS5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgotI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpT
U3RyaW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1
Y3Rvci5jcHAKaW5kZXggYjIwMzg4OGQzYzE2Y2RhM2MwMDM1MDYyMDhhZTA4Njk1ZGM1ZGFhYS4u
ZDAyNjZhNTllZjNmNTVhYTM2OTRmNWY3NDE4Y2Y3OGUwYWUwZDhiMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dC5oIgogI2luY2x1ZGUgIkpTU2V0LmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiTWFwRGF0YS5oIgogI2luY2x1ZGUgIlNldFByb3RvdHlwZS5oIgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAppbmRleCA0NDBhNjA5
NDIxOTMzODAzMWU1OTI3YWY0NmIyODlkYmNmYjVhNzI4Li44MGU3ZWFhOGM0OTFjYjZkNTRhODMy
NGNlNjQ3YTZjZGI3ZTg4NzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ09iamVjdC5jcHAKQEAgLTIyLDcgKzIyLDkgQEAKICNpbmNsdWRlICJTdHJpbmdPYmpl
Y3QuaCIKIAogI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5l
cy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJh
eS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRl
eCAwNDI5MWY3ZThkZDI0ZThhYjMzZDc1YWYxZGE0NTY4ZjJiYzk5ZTY4Li4xZWNhYjg1YzBiZGIy
ODY5ODk0NTc3YTc0MTI1NGUzNjQ0MTQ5ZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTI3LDEyICsyNywxOCBAQAogI2luY2x1ZGUgIlN0cnVj
dHVyZS5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRp
ZmllcnMuaCIKICNpbmNsdWRlICJEdW1wQ29udGV4dC5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGlu
ZXMuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRl
cmF0b3IuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJMb29rdXAu
aCIKKyNpbmNsdWRlICJQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5
TmFtZUFycmF5LmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
U3RydWN0dXJlQ2hhaW4uaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRl
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA1MmNjZjQyM2ExMDQzZTEwNzlmMmQ4YjE4OTQyMTk4
OTBlNzFmMmJjLi45MWFkNTU3ZTI4OWI0NzM3MDdiODM5ZjZjZTcwY2EzNDQxODZhNWY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiQXJnTGlzdC5oIgogI2luY2x1ZGUgIkFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmgiCiAj
aW5jbHVkZSAiQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgiCisjaW5jbHVkZSAiQnVp
bHRpbkV4ZWN1dGFibGVzLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lSW5saW5lcy5oIgogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVDYWNoZS5oIgpAQCAtNTUsNyArNTYsMTAg
QEAKICNpbmNsdWRlICJKU0FQSVZhbHVlV3JhcHBlci5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlv
bi5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5o
IgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisj
aW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1
bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgi
CkBAIC02OCwxMyArNzIsMTYgQEAKICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJNYXBE
YXRhLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKKyNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRl
ICJQYXJzZXJBcmVuYS5oIgorI2luY2x1ZGUgIlByb3BlcnR5TWFwSGFzaFRhYmxlLmgiCiAjaW5j
bHVkZSAiUmVnRXhwQ2FjaGUuaCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRl
ICJTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNvdXJjZVByb3ZpZGVy
Q2FjaGUuaCIKICNpbmNsdWRlICJTdHJpY3RFdmFsQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIlN0
cm9uZ0lubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
VW5saW5rZWRDb2RlQmxvY2suaCIKICNpbmNsdWRlICJXZWFrTWFwRGF0YS5oIgogI2luY2x1ZGUg
PHd0Zi9Qcm9jZXNzSUQuaD4KQEAgLTIyNiw2ICsyMzMsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlw
ZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2luRGVmaW5lT3duUHJvcGVydHkoZmFsc2Up
CiAgICAgLCBtX2NvZGVDYWNoZShDb2RlQ2FjaGU6OmNyZWF0ZSgpKQogICAgICwgbV9lbmFibGVk
UHJvZmlsZXIobnVsbHB0cikKKyAgICAsIG1fYnVpbHRpbkV4ZWN1dGFibGVzKEJ1aWx0aW5FeGVj
dXRhYmxlczo6Y3JlYXRlKCp0aGlzKSkKIHsKICAgICBpbnRlcnByZXRlciA9IG5ldyBJbnRlcnBy
ZXRlcigqdGhpcyk7CiAgICAgU3RhY2tCb3VuZHMgc3RhY2sgPSB3dGZUaHJlYWREYXRhKCkuc3Rh
Y2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDVhODQxMDVlYWZiN2FiYmE1
ZmE0MzFlZWVkZDU1ZDdhODlmNTVjZTIuLjY5NThhYzM5M2IxYWVmYzBiZWZiZjZlNGViOGI2ODI1
Y2Y3YzlhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNDQsNiArNDQsNyBA
QAogI2luY2x1ZGUgIlByaXZhdGVOYW1lLmgiCiAjaW5jbHVkZSAiUHJvdG90eXBlTWFwLmgiCiAj
aW5jbHVkZSAiU21hbGxTdHJpbmdzLmgiCisjaW5jbHVkZSAiU291cmNlQ29kZS5oIgogI2luY2x1
ZGUgIlN0cm9uZy5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgogI2luY2x1ZGUgIlR5
cGVkQXJyYXlDb250cm9sbGVyLmgiCkBAIC02OSw2ICs3MCw3IEBACiBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzOworICAgIGNsYXNzIEJ1aWx0
aW5FeGVjdXRhYmxlczsKICAgICBjbGFzcyBDb2RlQmxvY2s7CiAgICAgY2xhc3MgQ29kZUNhY2hl
OwogICAgIGNsYXNzIENvbW1vbklkZW50aWZpZXJzOwpAQCAtNDk3LDYgKzQ5OSw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2b2lkIHJlZ2lzdGVyV2F0Y2hwb2ludEZvckltcHVyZVByb3Bl
cnR5KGNvbnN0IElkZW50aWZpZXImLCBXYXRjaHBvaW50Kik7CiAgICAgICAgIC8vIEZJWE1FOiBV
c2UgQXRvbWljU3RyaW5nIG9uY2UgaXQgZ290IG1lcmdlZCB3aXRoIElkZW50aWZpZXIuCiAgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkSW1wdXJlUHJvcGVydHkoY29uc3QgU3RyaW5n
Jik7CisgICAgICAgIAorICAgICAgICBCdWlsdGluRXhlY3V0YWJsZXMqIGJ1aWx0aW5FeGVjdXRh
YmxlcygpIHsgcmV0dXJuIG1fYnVpbHRpbkV4ZWN1dGFibGVzLmdldCgpOyB9CiAKICAgICBwcml2
YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpAQCAtNTM3
LDEwICs1NDEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNWYWx1ZSBtX2V4Y2VwdGlv
bjsKICAgICAgICAgYm9vbCBtX2luRGVmaW5lT3duUHJvcGVydHk7CiAgICAgICAgIE93blB0cjxD
b2RlQ2FjaGU+IG1fY29kZUNhY2hlOwotICAgICAgICBSZWZDb3VudGVkQXJyYXk8U3RhY2tGcmFt
ZT4gbV9leGNlcHRpb25TdGFjazsKLQogICAgICAgICBMZWdhY3lQcm9maWxlciogbV9lbmFibGVk
UHJvZmlsZXI7Ci0KKyAgICAgICAgT3duUHRyPEJ1aWx0aW5FeGVjdXRhYmxlcz4gbV9idWlsdGlu
RXhlY3V0YWJsZXM7CisgICAgICAgIFJlZkNvdW50ZWRBcnJheTxTdGFja0ZyYW1lPiBtX2V4Y2Vw
dGlvblN0YWNrOwogICAgICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdhdGNocG9pbnRTZXQ+
PiBtX2ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludFNldHM7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU1N0cmluZ0lubGluZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNTdHJpbmdJbmxp
bmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzBmY2MzODRlOGVkZmMzNGIxNDA4M2I4NjVkMzczODIwZjQxNjVj
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1
bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVf
RldEX0pTU3RyaW5nSW5saW5lc19oCisjZGVmaW5lIFdlYkNvcmVfRldEX0pTU3RyaW5nSW5saW5l
c19oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdJbmxpbmVzLmg+CisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tU
aW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwCmluZGV4IDJlZGRjZGJiOWYwMDZjYTc2MjY2NTBiNDIw
Mjc4NjI2YjkyNjE0MTcuLjNjNGUwZDdiYmIzMWNhYjEyYjVlNmM5NzVjNzRkM2Y0ODRlOWNiMTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1
aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jh
c2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nSW5saW5lcy5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFu
eUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFueUN1c3RvbS5j
cHAKaW5kZXggNTY0OWM4NWNhMDk1ODc3NDhhM2RhMDZjZGRkMGNhOTk5ZTUwYjhlNy4uM2Y0ZDhl
ZmFlYjU3ZjMzMDAzZTczYTdlNzg0MmU0MmM3M2NlNjQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1
ZGUgIkpTSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJKU0lEQlRyYW5zYWN0aW9uLmgiCiAj
aW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8cnVudGltZS9KU1N0
cmluZ0lubGluZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAppbmRleCA5ZWFlNzU2
OWM3MDYwM2E0ZmVkMGFmMTRjNGY4NzE4Y2RlNjRhNmUxLi5mNDlkZmU5MGI0ZTgyZDM5ZWRjYmY5
YmEyOWYyYWU3OTljMGRkZjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIklE
Qk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSlNJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUg
PHJ1bnRpbWUvRXJyb3IuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nLmg+CisjaW5jbHVk
ZSA8cnVudGltZS9KU1N0cmluZ0lubGluZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3Vz
dG9tLmNwcAppbmRleCA3NGZkMzU0YjI4NjA3Y2Y3ODIyZjgwNTM0Nzk3MGY1ZDdhYzhjODMyLi41
NDM0YjNiN2Q2YzU2ZWNiMGEwM2EyNzk0YzY3MzZhOWFkZmI3MGUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcApAQCAt
MzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSlNJ
REJJbmRleC5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KLSNpbmNsdWRlIDxydW50aW1l
L0pTU3RyaW5nLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZ0lubGluZXMuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDYyNWY5ZjcwMjkyZmRjMTRiOGNhNTMzNzcwYzA0
ZDRiNzAwN2Y2M2MuLjg4YzdhZDc5NGQyMGY1ZDQ4OWViODVkMDc3OTU4NTFkMzQ1YTIwNzAgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMiBAQAorMjAxNC0wMS0yOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBw
bGUuY29tPgorCisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gaW1wbGVtZW50IEpTIGJ1aWx0
aW5zIGluIEpTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjc4ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVcGRhdGVkIHRoZSB0ZXN0IHJlc3VsdHMgZm9yIG5ldyBlcnJvciBtZXNzYWdlcyAobm93IHRo
YXQgdGhleSdyZQorICAgICAgICBhY3R1YWxseSBoZWxwZnVsKSwgYW5kIGFkZGVkIGEganMtcmVn
cmVzcyB0ZXN0IHRvIHRyYWNrIHBlcmZvcm1hbmNlLgorCisgICAgICAgICoganMvYXJyYXktZXZl
cnktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVy
dGllcy1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUt
ZXZlcnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL2FycmF5LXBy
b3RvdHlwZS1ldmVyeS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10
ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuanM6IEFkZGVkLgorICAgICAgICAodGVzdDEpOgor
ICAgICAgICAodGVzdDIpOgorICAgICAgICAodGVzdDMpOgorCiAyMDE0LTAxLTI5ICBKb3NlcGgg
UGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
UGxheSBCcmVha3BvaW50IFNvdW5kIGluIEZyb250ZW5kCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9qcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJheS1ldmVy
eS1leHBlY3RlZC50eHQKaW5kZXggNTQxYjhjMzU4ZjA2OGEwY2VhODgyYzEwNTE3NTMyNTExNGNk
MzNmNy4uY2NhMzYzZGNlNThmYmE5NWE1OGNlNDZmY2I0OGMzOGJmNThhZGY1OSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dApAQCAtMzAsMTIgKzMwLDEyIEBAIFBBU1Mg
WzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShpc0JpZ0Vub3VnaEFuZEV4Y2VwdGlvbikgdGhyZXcg
ZXhjZXB0aW9uIGV4Y2VwdGlvCiBQQVNTIFsxMiwgNTQsIDE4LCAxMzAsIDQ0XS5ldmVyeShpc0Jp
Z0Vub3VnaEFuZEV4Y2VwdGlvbikgdGhyZXcgZXhjZXB0aW9uIGV4Y2VwdGlvbiBmcm9tIGZ1bmN0
aW9uLgogCiA1LjAgV3JvbmcgVHlwZSBmb3IgQ2FsbGJhY2sgVGVzdAotUEFTUyBbMTIsIDUsIDgs
IDEzMCwgNDRdLmV2ZXJ5KDUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3Iu
Ci1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoJ3dyb25nJykgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShu
ZXcgT2JqZWN0KCkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNT
IFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkobnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSh1bmRlZmluZWQp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwg
MTMwLCA0NF0uZXZlcnkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgor
UEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KDUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQ
QVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoJ3dyb25nJykgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlv
bi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShuZXcgT2JqZWN0KCkpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJl
IGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkobnVsbCkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3Qg
YmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSh1bmRlZmluZWQp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFj
ayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sg
bXVzdCBiZSBhIGZ1bmN0aW9uLgogCiA2LjAgRWFybHkgRXhpdCAoIlNob3J0IENpcmN1aXRpbmci
KQogUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KGlzQmlnRW5vdWdoU2hvcnRDaXJjdWl0
KSBpcyBmYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2FycmF5LXByb3RvdHlw
ZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9hcnJheS1wcm90
b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQKaW5kZXggMmMyYTY4Y2IxMDZkYTEwZjA4NmIy
MmM1YmYyYmY1YzhmZTc5ZTMzZS4uNWQ5ZWNiNzVhOGRhNzliYTY1NjA1ZTdlYjljZjhmYzI1ZmUx
OGFmYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9w
ZXJ0aWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vYXJyYXktcHJvdG90
eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CkBAIC0xNSw3ICsxNSw3IEBAIFBBU1MgQXJyYXku
cHJvdG90eXBlLnNsaWNlLmNhbGwodW5kZWZpbmVkLCAwLCAxKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiB1bmRlCiBQQVNTIEFycmF5LnByb3RvdHlwZS5zb3J0LmNhbGwodW5kZWZpbmVkKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZh
bHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnNvcnQuY2FsbCh1bmRlZmluZWQpJykuCiBQQVNTIEFy
cmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbCh1bmRlZmluZWQsIDAsIDEpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJh
eS5wcm90b3R5cGUuc3BsaWNlLmNhbGwodW5kZWZpbmVkLCAwLCAxKScpLgogUEFTUyBBcnJheS5w
cm90b3R5cGUudW5zaGlmdC5jYWxsKHVuZGVmaW5lZCwge30pIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90
b3R5cGUudW5zaGlmdC5jYWxsKHVuZGVmaW5lZCwge30pJykuCi1QQVNTIEFycmF5LnByb3RvdHlw
ZS5ldmVyeS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5
cGUuZXZlcnkuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKScpLgorUEFTUyBBcnJheS5wcm90b3R5
cGUuZXZlcnkuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVu
ZGVmaW5lZC4KIFBBU1MgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbCh1bmRlZmluZWQsIHRv
U3RyaW5nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9i
amVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbCh1bmRlZmluZWQs
IHRvU3RyaW5nKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUuc29tZS5jYWxsKHVuZGVmaW5lZCwg
dG9TdHJpbmcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4g
b2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUuc29tZS5jYWxsKHVuZGVmaW5lZCwg
dG9TdHJpbmcpJykuCiBQQVNTIEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwodW5kZWZpbmVk
LCAwKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVj
dCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbCh1bmRlZmluZWQsIDAp
JykuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1l
dmVyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlw
ZS1ldmVyeS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTI5MGMwZWVmZjhkZTQyMTgzM2Q5MmQy
N2U5NTI0MTkxNzYwNGI5NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jl
c3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitK
U1JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sIGIvTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTVjYzE3MWM0ODc1YTM1
ODViZjE0ZTU0MTVmNWNkMGU1ODFkNTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbApAQCAtMCwwICsxLDEyIEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVncmVzcy1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJheS1wcm90b3R5cGUt
ZXZlcnkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXBvc3Qu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzIGIvTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI5NGFhMTYxYzBjZTk4YjJhYjE4YTNhMWExZjBkZmFhYzlkN2QyZTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJheS1w
cm90b3R5cGUtZXZlcnkuanMKQEAgLTAsMCArMSwyOSBAQAordmFyIHJlc3VsdCA9IDA7CitmdW5j
dGlvbiB0ZXN0MShhKSB7CisgICAgcmVzdWx0IDw8IDE7CisgICAgcmVzdWx0Kys7CisgICAgcmV0
dXJuIHRydWU7Cit9CitmdW5jdGlvbiB0ZXN0MihhLGIpIHsKKyAgICByZXN1bHQgXj0gMzsKKyAg
ICByZXN1bHQgKj0gMzsKKyAgICByZXR1cm4gdHJ1ZTsKK30KK2Z1bmN0aW9uIHRlc3QzKGEsYixj
KSB7CisgICAgcmVzdWx0IF49IHJlc3VsdCA+PiAxOworICAgIHJldHVybiB0cnVlOworfQorCit2
YXIgcmVzdWx0ID0gMDsKK3ZhciBhcnJheSA9IFtdCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAw
MDsgKytpKQorICAgIGFycmF5W2ldID0gMTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsr
KSB7CisgICAgYXJyYXkuZXZlcnkodGVzdDEpOworICAgIGFycmF5LmV2ZXJ5KHRlc3QyKTsKKyAg
ICBhcnJheS5ldmVyeSh0ZXN0Myk7Cit9CisKK2lmIChyZXN1bHQgIT0gMTQyODgxMDQ5NikKKyAg
ICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222674</attachid>
            <date>2014-01-30 09:30:44 -0800</date>
            <delta_ts>2014-01-30 09:32:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140130093044.patch</filename>
            <type>text/plain</type>
            <size>191899</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NjBlMTQzNTgwZTZkYzc1ZmEwNjY2YzlhMWUyZGMxZmMzZWYyY2MyLi4yNzBmZTZjZjRmNDQ2OGM4
NGRlNGViMjI3M2VmM2U4NTM4N2YxODBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
IFRoaXMgcmVzdWx0IG9mIHRoaXMgcmVmYWN0b3JpbmcKKyAgICAgICAgaXMgdGhhdCBDb21tb25J
ZGVudGlmaWVycywgYW5kIGEgZmV3IG90aGVyIG1pc2NlbGxhbmVvdXMgaGVhZGVycyBub3cKKyAg
ICAgICAgbmVlZCB0byBiZSBpbmNsdWRlZCBkaXJlY3RseSBhcyB0aGV5IHdlcmUgZm9ybWVybHkg
Y2FwdHVyZWQgdGhyb3VnaCBvdGhlcgorICAgICAgICBwYXRocy4KKworICAgICAgICBJbiBhZGRp
dGlvbiB0aGlzIGFkZHMgYSBmbGFnIHRvIHRoZSBMb29rdXAgdGFibGUncyBoYXNoZW50cnkgdG8g
aW5kaWNhdGUKKyAgICAgICAgdGhhdCBhIHN0YXRpYyBmdW5jdGlvbiBpcyBhY3R1YWxseSBiYWNr
ZWQgYnkgSlMuIFRoZXJlIGlzIHRoZW4gYSBsb3Qgb2YKKyAgICAgICAgbG9naWMgdG8gdGhyZWFk
IHRoZSBzcGVjaWFsIG5hdHVyZSBvZiB0aGUgZnVuY3RvbiB0byB3aGVyZSBpdCBtYXR0ZXJzLgor
ICAgICAgICBUaGlzIGFsbG93cyB0b1N0cmluZygpLCAuY2FsbGVyLCBldGMgdG8gbWltaWMgdGhl
IGJlaGF2aW91ciBvZiBhIGhvc3QKKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAgICAgTm90ZXMg
b24gd3JpdGluZyBidWlsdGluczoKKyAgICAgICAgIC0gRWFjaCBmdW5jdGlvbiBpcyBjb21waWxl
ZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBvdGhlcnMsIGFuZCB0aG9zZQorICAgICAgICAgICBpbXBs
ZW1lbnRhdGlvbnMgY2Fubm90IGN1cnJlbnRseSBjYXB0dXJlIGFsbCBnbG9iYWwgcHJvcGVydGll
cyAoYXMKKyAgICAgICAgICAgdGhhdCBjb3VsZCBiZSBwb3RlbnRpYWxseSB1bnNhZmUpLiBJZiBh
IGZ1bmN0aW9uIGRvZXMgY2FwdHVyZSBhCisgICAgICAgICAgIGdsb2JhbCB3ZSB3aWxsIGRlbGli
ZXJhdGVseSBjcmFzaC4KKyAgICAgICAgIC0gRm9yIHRob3NlICJnbG9iYWwiIHByb3BlcnRpZXMg
dGhhdCB3ZSBkbyB3YW50IGFjY2VzcyB0bywgd2UgdXNlCisgICAgICAgICAgIHRoZSBAIHByZWZp
eCwgZS5nLiBPYmplY3QodGhpcykgYmVjb21lcyBAT2JqZWN0KHRoaXMpLiBUaGUgQCBpZGVudGlm
aWVycworICAgICAgICAgICBhcmUgcHJpdmF0ZSBuYW1lcywgYW5kIGJlaGF2ZSBqdXN0IGxpa2Ug
cmVndWxhciBwcm9wZXJ0aWVzLCBvbmx5CisgICAgICAgICAgIHdpdGhvdXQgdGhlIHJpc2sgb2Yg
YWR1bHRlcmF0aW9uLiBBZ2FpbiwgaW4gdGhlIEBPYmplY3QgY2FzZSwgd2UKKyAgICAgICAgICAg
ZXhwbGljaXRseSBkdXBsaWNhdGUgdGhlIE9iamVjdENvbnN0cnVjdG9yIHJlZmVyZW5jZSBvbiB0
aGUgR2xvYmFsT2JqZWN0CisgICAgICAgICAgIHNvIHRoYXQgd2UgaGF2ZSBndWFyYW50ZWVkIGFj
Y2VzcyB0byB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgY29uc3RydWN0
b3IuCisgICAgICAgICAtIGNhbGwsIGFwcGx5LCBldmFsLCBhbmQgRnVuY3Rpb24gYXJlIGFsbCBy
ZWplY3RlZCBpZGVudGlmaWVycywgYWdhaW4KKyAgICAgICAgICAgdG8gcHJldmVudCBhbnl0aGlu
ZyBmcm9tIGFjY2lkZW50YWxseSB1c2luZyBhbiBhZHVsdGVyYXRlZCBvYmplY3QuCisgICAgICAg
ICAgIEluc3RlYWQgQGNhbGwgYW5kIEBhcHBseSBhcmUgYXZhaWxhYmxlLCBhbmQgaGFwcGlseSB0
aGV5IGNvbXBsZXRlbHkKKyAgICAgICAgICAgZHJvcCB0aGUgbmVxX3B0ciBpbnN0cnVjdGlvbiBh
cyB0aGV5J3JlIGRlZmluZWQgYXMgYWx3YXlzIGJlaW5nIHRoZQorICAgICAgICAgICBvcmlnaW5h
bCBjYWxsL2FwcGx5IGZ1bmN0aW9ucy4KKworICAgICAgICBUaGVzZSByZXN0cmljdGlvbnMgYXJl
IGp1c3QgaW50ZW5kZWQgdG8gbWFrZSBpdCBoYXJkZXIgdG8gYWNjaWRlbnRhbGx5CisgICAgICAg
IG1ha2UgY2hhbmdlcyB0aGF0IGFyZSBpbmNvcnJlY3QgKGZvciBpbnN0YW5jZSBjYWxsaW5nIHdo
YXRldmVyIGhhcyBiZWVuCisgICAgICAgIGFzc2lnbmVkIHRvIGdsb2JhbC5PYmplY3QsIGluc3Rl
YWQgb2YgdGhlIG9yaWdpbmFsIGNvbnN0cnVjdG9yIGZ1bmN0aW9uKS4KKyAgICAgICAgSG93ZXZl
ciwgbWFraW5nIGEgbWlzdGFrZSBsaWtlIHRoaXMgc2hvdWxkIHJlc3VsdCBpbiBhIHB1cmVseSBz
ZW1hbnRpYworICAgICAgICBlcnJvciBhcyBmdW5kYW1lbnRhbGx5IHRoZXNlIGZ1bmN0aW9ucyBh
cmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlCisgICAgICAgIHJlZ3VsYXIgSlMgY29kZSBp
biB0aGUgaG9zdCBnbG9iYWwsIGFuZCBoYXZlIG5vIG1vcmUgcHJpdmlsZWdlcyB0aGFuCisgICAg
ICAgIGFueSBvdGhlciBKUy4KKworICAgICAgICBUaGUgaW5pdGlhbCBwcm9vZiBvZiBjb25jZXB0
IGlzIEFycmF5LnByb3RvdHlwZS5ldmVyeSwgdGhpcyBzaG93cyBhIDY1JQorICAgICAgICBwZXJm
b3JtYW5jZSBpbXByb3ZlbWVudCwgYW5kIHRoYXQgaW1wcm92ZW1lbnQgaXMgc2lnbmlmaWNhbnRs
eSBodXJ0IGJ5CisgICAgICAgIG91ciBwb29yIG9wdGltaXNhdGlvbiBvZiBvcF9pbi4KKworICAg
ICAgICBBcyB0aGlzIGlzIHN1Y2ggYSBsaW1pdGVkIGZ1bmN0aW9uLCB3ZSBoYXZlIG5vdCB5ZXQg
ZXhwb3J0ZWQgYWxsIHN5bWJvbHMKKyAgICAgICAgdGhhdCB3ZSBjb3VsZCBwb3NzaWJseSBuZWVk
LCBidXQgYXMgd2UgaW1wbGVtZW50IG1vcmUsIHRoZSBsaWtlbGlob29kCisgICAgICAgIG9mIGVu
Y291bnRlcmluZyBtaXNzaW5nIGZlYXR1cmVzIHdpbGwgcmVkdWNlLgorCisgICAgICAgIFRoaXMg
ZGlkIHJlcXVpcmUgYnJlYWtpbmcgb3V0IGEgSlNTdHJpbmdJbmxpbmVzIGhlYWRlciwgYW5kIHJl
cXVpcmVkCisgICAgICAgIGZpeGluZyBhIGZldyBvYmplY3RzIHRoYXQgd2VyZSB0cnlpbmcgdG8g
dXNpbmcgUHJvcGVydHlOYW1lOjpwdWJsaWNOYW1lCisgICAgICAgIHJhdGhlciB0aGFuIFByb3Bl
cnR5TmFtZTo6dWlkLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0
eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dCk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRpY1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWNGdW5jdGlvbkdl
dHRlcik6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tH
ZXR0ZXIpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBidWlsdGlucy9BcnJheS5wcm90b3R5cGUuanM6CisgICAgICAgIChldmVyeSk6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkJ1aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKToKKyAgICAgICAgKEpTQzo6
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSk6CisgICAgICAgICog
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVj
dXRhYmxlczo6Y3JlYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tG
b3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6dG9TdHJpY3RuZXNzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNCdWlsdGluRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBjcmVhdGVfaGFz
aF90YWJsZToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZ2Vu
ZXJhdGUtanMtYnVpbHRpbnM6IEFkZGVkLgorICAgICAgICAoZ2V0Q29weXJpZ2h0KToKKyAgICAg
ICAgKGdldEZ1bmN0aW9ucyk6CisgICAgICAgIChnZW5lcmF0ZUNvZGUpOgorICAgICAgICAobWFu
Z2xlTmFtZSk6CisgICAgICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSWRlbnRp
Zmllcik6CisgICAgICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChTb3VyY2VDb2RlKToK
KyAgICAgICAgKFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKFZNKToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvUHJvdG9DYWxsRnJhbWUuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUp
OgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpM
ZXhlcik6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpM
ZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFy
Pjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAg
ICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcik6CisgICAgICAgICog
cGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OnNldENsb3NlZFZh
cmlhYmxlcyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
Tm9kZTo6Y2FwdHVyZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OnNldENs
b3NlZFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmluaXNoUGFy
c2luZyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRU
b2tlblRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OmdldFVzZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNsb3NlZFZhcmlh
Ymxlcyk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9k
ZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAgICAgICogcnVudGlt
ZS9BcmdMaXN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAg
ICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJh
dG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpn
ZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpD
b21tb25JZGVudGlmaWVycyk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQ
cml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQdWJsaWNO
YW1lKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzRXhjZXB0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxl
OjpleGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpleGVj
dXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aXNCdWlsdGlu
RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1l
L0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFi
bGVHZXQpOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0KToKKyAg
ICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgICogcnVudGltZS9K
U0NlbGxJbmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6c291cmNlQ29kZSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzSG9zdE9y
QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6aXNCdWlsdGluRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIpOgorICAgICAg
ICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9w
ZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgICogcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6Om9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpnZXRDbGFzc1Byb3BlcnR5TmFtZXMpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZ0lubGlu
ZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjppbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9i
amVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgICAgRG9uJ3QgcmVw
b3J0IHByaXZhdGUgbmFtZXMuCisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6c3ltYm9s
VGFibGVQdXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChKU0M6OnNldFVwU3RhdGlj
RnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlND
OjpIYXNoRW50cnk6OmJ1aWx0aW5HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpIYXNoRW50cnk6
OnByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpwcm9wZXJ0eVB1dHRl
cik6CisgICAgICAgIChKU0M6Okhhc2hUYWJsZTo6ZW50cnkpOgorICAgICAgICAoSlNDOjpnZXRT
dGF0aWNQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpnZXRTdGF0aWNWYWx1ZVNsb3QpOgor
ICAgICAgICAoSlNDOjpwdXRFbnRyeSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6YnVp
bHRpbkV4ZWN1dGFibGVzKToKKwogMjAxNC0wMS0yOSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3Nz
eUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikgbGVmdG92ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTEzZjE4OGFlNjUyYjk1ZjNiNTcyYWMxNzcwZWEx
MjViYmFlNzVkMi4uNjMyYWNjNDNkYzE2YzcxMzRkNThjMDRiN2E1Y2U1NmE5MTk4ZWNjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE0LTAxLTI5ICBPbGl2ZXIgSHVudCAgPG9saXZl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBpbXBsZW1lbnQgSlMg
YnVpbHRpbnMgaW4gSlMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNzg4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVwZGF0aW5nIGZvciB0aGUgbmV3bHkgcmVxdWlyZWQgaGVhZGVycy4KKworICAgICAg
ICBUZXN0OiBqcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sCisKKyAgICAgICAg
KiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oOiBBZGRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcDoKKwogMjAxNC0wMS0zMCAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViUGFnZTo6ZGV0ZXJtaW5lUHJpbWFyeVNu
YXBzaG90dGVkUGx1Z0luIGlzIHNsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggNWJlMDUzZjFlMDg2YjQzZTY4
NmMzNjc0ZGFlN2M1MTYwNWEyODZlNy4uMGVjZWQ1MWYzZTJkNWI2MjFkYWRmMDU3NDlmNWU3NDY2
YTA2ZjUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBib29sIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZQogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKICAg
ICBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHByb3BlcnR5TmFtZVJlZjsKICAgICAKLSAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpT
Q2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xh
c3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgLy8gb3B0aW9uYWwgb3B0
aW1pemF0aW9uIHRvIGJ5cGFzcyBnZXRQcm9wZXJ0eSBpbiBjYXNlcyB3aGVuIHdlIG9ubHkgbmVl
ZCB0byBrbm93IGlmIHRoZSBwcm9wZXJ0eSBleGlzdHMKICAgICAgICAgICAgIGlmIChKU09iamVj
dEhhc1Byb3BlcnR5Q2FsbGJhY2sgaGFzUHJvcGVydHkgPSBqc0NsYXNzLT5oYXNQcm9wZXJ0eSkg
ewpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiAgICAgUmVmUHRy
PE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgSlNWYWx1ZVJlZiB2YWx1ZVJl
ZiA9IHRvUmVmKGV4ZWMsIHZhbHVlKTsKICAgICAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9
IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJl
bnRDbGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBz
ZXRQcm9wZXJ0eSA9IGpzQ2xhc3MtPnNldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFwcm9wZXJ0eU5hbWVSZWYpCkBAIC0zNDMsNyArMzQzLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm8KICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CiAgICAg
UmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0Ns
YXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNz
ID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdERlbGV0
ZVByb3BlcnR5Q2FsbGJhY2sgZGVsZXRlUHJvcGVydHkgPSBqc0NsYXNzLT5kZWxldGVQcm9wZXJ0
eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lUmVmKQpAQCAtNTY0LDcgKzU2
NCw3IEBAIEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiB7CiAgICAgSlNPYmplY3RSZWYgdGhpc1Jl
ZiA9IHRvUmVmKHRoaXMpOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gY2xhc3NS
ZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAg
ICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXMgPSBq
c0NsYXNzLT5zdGF0aWNWYWx1ZXMoZXhlYykpIHsKICAgICAgICAgICAgICAgICBpZiAoU3RhdGlj
VmFsdWVFbnRyeSogZW50cnkgPSBzdGF0aWNWYWx1ZXMtPmdldChuYW1lKSkgewpAQCAtNjAwLDcg
KzYwMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGlj
RnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFCiAgICAgaWYgKFBhcmVudDo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdDIpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QyLmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFt
ZSkpOwogCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsK
ICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqLT5jbGFzc1JlZigpOyBq
c0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlm
IChPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGUqIHN0YXRpY0Z1bmN0aW9ucyA9IGpz
Q2xhc3MtPnN0YXRpY0Z1bmN0aW9ucyhleGVjKSkgewogICAgICAgICAgICAgICAgIGlmIChTdGF0
aWNGdW5jdGlvbkVudHJ5KiBlbnRyeSA9IHN0YXRpY0Z1bmN0aW9ucy0+Z2V0KG5hbWUpKSB7CkBA
IC02MjYsNyArNjI2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpjYWxsYmFja0dldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWQKICAgICBKU09iamVjdFJl
ZiB0aGlzUmVmID0gdG9SZWYodGhpc09iaik7CiAgICAgUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBw
cm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2Jq
LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsK
ICAgICAgICAgICAgIGlmIChKU09iamVjdEdldFByb3BlcnR5Q2FsbGJhY2sgZ2V0UHJvcGVydHkg
PSBqc0NsYXNzLT5nZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlO
YW1lUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDI3YmM0YzE3ZjNk
ZmVlYjYxZDI1MjMyM2ZkODc4YzQ0NzgwZjc0YzUuLmM3NTI2YzZhMzdiNGMzMWQwY2UxMzdhMDE3
ODFlODY4ODlkZmZmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUy
LDYgKzUyLDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9TY3Jp
cHRPYmplY3QuY3BwCiAgICAgYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCiAKKyAgICBidWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCisKICAgICBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Q
cm9maWxlLmNwcAogICAgIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9C
eXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC04MTUsMTYgKzgxNywyNiBAQCBhZGRfY3VzdG9tX2Nv
bW1hbmQoCiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3Jl
X0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0vQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTLmpzb24gLS1vdXRwdXRf
aF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0cHV0X2Nw
cF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0cHV0X2pz
X2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIgLS1vdXRwdXRfdHlw
ZSBKYXZhU2NyaXB0IC0td3JpdGVfYWx3YXlzICYmIG1rZGlyIC1wICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yICYmIGNwICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTRnJvbnRlbmREaXNwYXRj
aGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNU
eXBlQnVpbGRlcnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3Bl
Y3RvcgogICAgIFZFUkJBVElNKQogCisjIEpTQ0J1aWx0aW5zCithZGRfY3VzdG9tX2NvbW1hbmQo
CisgICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVp
bHRpbnMuY3BwICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRp
bnMuaAorICAgIE1BSU5fREVQRU5ERU5DWSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZ2Vu
ZXJhdGUtanMtYnVpbHRpbnMKKyAgICBERVBFTkRTICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElS
fS9idWlsdGlucy8qLmpzCisgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtF
X0NVUlJFTlRfU09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMgICR7REVSSVZFRF9TT1VS
Q0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaCAgJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5jcHAKKyAgICBWRVJCQVRJTSkKKwogbGlz
dChBUFBFTkQgSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwCiAgICAg
JHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0Zyb250ZW5k
RGlzcGF0Y2hlcnMuY3BwCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElS
fS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAKKyAgICAke0RFUklWRURfU09VUkNFU19KQVZB
U0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcAogKQogCiBsaXN0KEFQUEVORCBKYXZhU2Ny
aXB0Q29yZV9IRUFERVJTCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElS
fS9JbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oCiAgICAgJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuaAogICAg
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVp
bGRlcnMuaAorICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVp
bHRpbnMuaAogKQogCiBhZGRfY3VzdG9tX2NvbW1hbmQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDExNTZlOTdmZDg4NjI1NTdjOWNmOGQzYjY4YmY0ZDAz
YzNlOGJhOGYuLjI2NmFhNWYwODE0YjcyMGZlYjU2YjdkNDFjZjE3M2M1MGM1YTRiMzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC01Nyw2ICs1Nyw3IEBA
IGFsbCA6IFwKICAgICBSZWdFeHBPYmplY3QubHV0LmggXAogICAgIFN0cmluZ0NvbnN0cnVjdG9y
Lmx1dC5oIFwKICAgICB1ZGlzODZfaXRhYi5oIFwKKyAgICBKU0NCdWlsdGlucyBcCiAjCiAKICMg
bG9va3VwIHRhYmxlcyBmb3IgY2xhc3NlcwpAQCAtNzksNiArODAsMTQgQEAgS2V5d29yZExvb2t1
cC5oOiBLZXl3b3JkTG9va3VwR2VuZXJhdG9yLnB5IEtleXdvcmRzLnRhYmxlCiB1ZGlzODZfaXRh
Yi5oOiAkKEphdmFTY3JpcHRDb3JlKS9kaXNhc3NlbWJsZXIvdWRpczg2L2l0YWIucHkgJChKYXZh
U2NyaXB0Q29yZSkvZGlzYXNzZW1ibGVyL3VkaXM4Ni9vcHRhYmxlLnhtbAogCShQWVRIT05QQVRI
PSQoSmF2YVNjcmlwdENvcmUpL2Rpc2Fzc2VtYmxlci91ZGlzODYgcHl0aG9uICQoSmF2YVNjcmlw
dENvcmUpL2Rpc2Fzc2VtYmxlci91ZGlzODYvaXRhYi5weSAkKEphdmFTY3JpcHRDb3JlKS9kaXNh
c3NlbWJsZXIvdWRpczg2L29wdGFibGUueG1sIHx8IGV4aXQgMSkKIAorIyBidWlsdGluIGZ1bmN0
aW9ucworLlBIT05ZOiBKU0NCdWlsdGlucworCitKU0NCdWlsdGluczogSlNDQnVpbHRpbnMuaCBK
U0NCdWlsdGlucy5jcHAKK0pTQ0J1aWx0aW5zLmg6ICQoSmF2YVNjcmlwdENvcmUpL2dlbmVyYXRl
LWpzLWJ1aWx0aW5zICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zLyouanMKKwlweXRob24gJF4g
JEAKKworSlNDQnVpbHRpbnMuY3BwOiBKU0NCdWlsdGlucy5oCiAKICMgSW5zcGVjdG9yIGludGVy
ZmFjZXMKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBj
ZGI1NDI2YjA2YjUyYTk4MjU2ZWU5MDU4YmJhOGYxMWVlYTY5ZWUwLi5hZmU5NjcyYjViMWVlOTI3
MTFiZWRkNDc1ZTlhMTI4MjAzYzgxMzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQpAQCAtMTAyLDYgKzEwMiw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMg
Kz0gXAogICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRPYmplY3QuaCBc
CiAgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcCBcCiAg
ICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmggXAorICAgIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIFwKKyAg
ICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmNw
cCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2Zp
bGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAg
XApAQCAtMTI0MSw3ICsxMjQzLDkgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJz
LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNGcm9udGVu
ZERpc3BhdGNoZXJzLmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3Rv
ckpTVHlwZUJ1aWxkZXJzLmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5z
cGVjdG9ySlNUeXBlQnVpbGRlcnMuaAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0lu
c3BlY3RvckpTVHlwZUJ1aWxkZXJzLmggXAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3Jl
L0pTQ0J1aWx0aW5zLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNDQnVp
bHRpbnMuaAogCiBsbGludF9ub3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qCmluZGV4IDVlZGVmZGJlODU1Zjk2YTYyNjhkODU3M2JlYzFkMGMzZDg1
OGFhNWMuLmExMmRiMTgzNDg2ZGZiYmNhODNmM2E3OGU5Y2Y5ODYzMWIyNjUzZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtMzA5LDYgKzMwOSw3IEBACiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0T2JqZWN0LmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdFZhbHVlLmNwcCIg
Lz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxl
cy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9j
YXRpb25Qcm9maWxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2Rl
XEFycmF5UHJvZmlsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29k
ZVxCeXRlY29kZUJhc2ljQmxvY2suY3BwIiAvPgpAQCAtNzIxLDYgKzcyMiw3IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNCYWNr
ZW5kRGlzcGF0Y2hlcnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9y
SlNUeXBlQnVpbGRlcnMuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmNwcCIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJ
dGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJj
ZXNcQXJyYXlDb25zdHJ1Y3Rvci5sdXQuaCIgLz4KQEAgLTc1MCw2ICs3NTIsNyBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFJlZ0V4cE9iamVjdC5s
dXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xSZWdFeHBQcm90b3R5cGUubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcU3RyaW5nQ29uc3RydWN0b3IubHV0LmgiIC8+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuaCIg
Lz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxBUElcQVBJQ2FsbGJhY2tGdW5jdGlvbi5oIiAvPgpAQCAtNzk4LDYgKzgwMSw3IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdE9iamVjdC5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0VmFsdWUuaCIgLz4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxlcy5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9u
UHJvZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlQ
cm9maWxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeVZhbElu
Zm8uaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmls
dGVycwppbmRleCA4N2UxMmE0NzE1OGJiNjIyNGQ0OWZkNjIyOTc4YzRhOWM0NDM1YTY1Li44Njlj
MWY1ODliY2I2ODZlYjljZjIwYzA5NmJlMWI4M2E1NTFlMjRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC03LDYgKzcsOSBAQAogICAg
IDxGaWx0ZXIgSW5jbHVkZT0iYmluZGluZ3MiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezBi
YWNlMTIzLTQ1ODItZWViYy05MzE0LTc4MTliMzc2YzE5OH08L1VuaXF1ZUlkZW50aWZpZXI+CiAg
ICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJidWlsdGlucyI+CisgICAgICA8VW5p
cXVlSWRlbnRpZmllcj57M2I5ZDcyYTUtMTM1Yi00M2IzLWE1MjQtYzZkMmI5ZDI5ZDM1fTwvVW5p
cXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KICAgICA8RmlsdGVyIEluY2x1ZGU9ImJ5dGVj
b2RlIj4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns3NjYwODhhMC0xMjE2LTQ4NTQtYWE0My01
NjBjNWUyODM2Njh9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgpAQCAtMTA4LDYg
KzExMSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcTWFjcm9Bc3Nl
bWJsZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAgPC9DbENv
bXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWlsdGluRXhlY3V0
YWJsZXMuY3BwIj4KKyAgICAgIDxGaWx0ZXI+YnVpbHRpbnM8L0ZpbHRlcj4KKyAgICA8L0NsQ29t
cGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlv
blByb2ZpbGUuY3BwIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KQEAgLTEzMjksNiArMTMzNSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwIj4KICAg
ICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRp
bnMuY3BwIj4KKyAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CisgICAgPC9D
bENvbXBpbGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cQVBJXEFQSUNhbGxiYWNrRnVuY3Rpb24uaCI+CkBAIC0xNDU0LDYgKzE0NjMs
OSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXFg4NkFzc2VtYmxlci5o
Ij4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWlsdGluRXhlY3V0YWJsZXMuaCI+
CisgICAgICA8RmlsdGVyPmJ1aWx0aW5zPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmgi
PgogICAgICAgPEZpbHRlcj5ieXRlY29kZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAt
MjU1MCw2ICsyNTYyLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xBcnJheVByb3RvdHlwZS5sdXQuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQg
U291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmgiPgorICAgICAgPEZpbHRl
cj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVk0uaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
MjdlODc2NzQwYTk2NGIwMjg5ODRlZDY3ODE2MTgyMGE1ZGNmNzdjNC4uOTExNTczYWIxN2QzMzk3
NGFhN2M5YTAxMWRiMjAwYjA5YWY3OGJmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTkyMiw3ICs5MjIsNiBAQAogCQlBNTAzRkExOTE4OEUwRkIwMDAxMTBGMTQgLyogSmF2YVNj
cmlwdENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNTAzRkExMzE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5j
cHAgKi87IH07CiAJCUE1MDNGQTFBMTg4RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZy
YW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAz
RkExNDE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQlB
NTAzRkExQjE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE1MTg4RTBG
QjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwICovOyB9OwotCQlBNTAzRkEx
QzE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNjE4OEUwRkIwMDAxMTBG
MTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmggKi87IH07CiAJCUE1MDNGQTFEMTg4RTBGQjAw
MDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTcxODhFMEZCMDAwMTEw
RjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAgKi87IH07CiAJCUE1MDNG
QTFFMTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE4MTg4
RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaCAqLzsgfTsK
IAkJQTUwM0ZBMjExODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTFGMTg4RUZGNjgw
MDExMEYxNCAvKiBTY3JpcHRCcmVha3BvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwMjQsNiArMTAyMyw3IEBACiAJCUE3MEIwODMyMTdB
MEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwQjA4MzAxN0EwQjc5QjAwREFGMTRCIC8qIERG
R0JpbmFyeVN3aXRjaC5jcHAgKi87IH07CiAJCUE3MEIwODMzMTdBMEI3OUIwMERBRjE0QiAvKiBE
RkdCaW5hcnlTd2l0Y2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3MEIwODMxMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guaCAqLzsg
fTsKIAkJQTcxMjM2RTUxMTk1RjMzQzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzEyMzZFNDExOTVG
MzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0LmNwcCAqLzsgfTsKKwkJQTcxREE4MEYxODgw
REJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxREE4MEUxODgwREJBQjAwRDFGMjk5IC8qIEpTU3Ry
aW5nSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUE3MjAyOEI2MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyMDI4QjQx
Nzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAgKi87IH07CiAJCUE3MjAy
OEI4MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjAyOEI1MTc5NzYwMUUwMDk4MDI4
QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlBNzIwMjhCQTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlv
bklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3MjAyOEI5MTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTUwLDYgKzExNTAs
MTAgQEAKIAkJQTdDQTNBRTgxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDQTNBRTIxN0RBNDFBRTAw
NjUzOEFGIC8qIEpTV2Vha01hcC5oICovOyB9OwogCQlBN0NBM0FFQjE3REE1MTY4MDA2NTM4QUYg
LyogV2Vha01hcERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTdDQTNBRTkxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCAqLzsg
fTsKIAkJQTdDQTNBRUMxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0NBM0FFQTE3REE1MTY4MDA2
NTM4QUYgLyogV2Vha01hcERhdGEuaCAqLzsgfTsKKwkJQTdEODAxQTQxODgwRDY2RTAwMjZDMzlC
IC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBN0Q4MDFBMTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcCAqLzsgfTsKKwkJQTdEODAxQTUxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5F
eGVjdXRhYmxlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTdEODAxQTIxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3RDgwMUE4MTg4
MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVp
bHRpbnMuY3BwICovOyB9OworCQlBN0Q4MDFBOTE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRp
bnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDgw
MUE3MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3RDg5Q0YyMTdBMEI4Q0MwMDc3M0FEOCAv
KiBERkdCYXNpY0Jsb2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3RDg5Q0UzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNwcCAq
LzsgfTsKIAkJQTdEODlDRjMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDg5
Q0U0MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5jcHAgKi87IH07CiAJ
CUE3RDg5Q0Y0MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODlDRTUxN0EwQjhD
QzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI0NjIsNiArMjQ2Niw4IEBACiAJCUE3MTIz
NkU0MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUT3Bjb2RlczMyXzY0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTcxOEY2MUExMTc1NEEyMTAwMjQ2NUE3IC8qIFJlZ0V4cEppdFRh
Ymxlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBKaXRUYWJsZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxOEY4MjExMTc4RUI0QjAwMjQ2NUE3
IC8qIGNyZWF0ZV9yZWdleF90YWJsZXMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhw
bGljaXRGaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgZmlsZUVuY29kaW5nID0gNDsgcGF0
aCA9IGNyZWF0ZV9yZWdleF90YWJsZXM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3
MURBODBEMTg4MEQ3MUYwMEQxRjI5OSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9ICJnZW5lcmF0ZS1qcy1idWlsdGlucyI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MURBODBFMTg4MERCQUIwMEQxRjI5OSAvKiBKU1N0
cmluZ0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdJ
bmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI0MTc5NzYwMUUw
MDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNDVGVzdFJ1bm5lclV0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTcyMDI4QjUxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGls
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NUZXN0UnVubmVyVXRpbHMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyMDI4QjkxNzk3NjAzRDAwOTgwMjhD
IC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTRnVuY3Rpb25JbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTkw
LDYgKzI1OTYsMTEgQEAKIAkJQTdDQTNBRTIxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYWtNYXAuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdDQTNBRTkxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBE
YXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYWtNYXBEYXRh
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdDQTNBRUExN0RBNTE2ODAwNjUz
OEFGIC8qIFdlYWtNYXBEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YWtNYXBEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUEwMTg4MEQ2
NkUwMDI2QzM5QiAvKiBBcnJheS5wcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmph
dmFzY3JpcHQ7IHBhdGggPSBBcnJheS5wcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE3RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnVpbHRpbkV4ZWN1dGFi
bGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTIxODgwRDY2RTAw
MjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBCdWlsdGluRXhlY3V0YWJsZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTdEODAxQTYxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ0J1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTcxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ0J1aWx0aW5zLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RDg5Q0UzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdC
YXNpY0Jsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Jh
c2ljQmxvY2suY3BwOyBwYXRoID0gZGZnL0RGR0Jhc2ljQmxvY2suY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBN0Q4OUNFNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNl
cnRpb25TZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQmxv
Y2tJbnNlcnRpb25TZXQuY3BwOyBwYXRoID0gZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdEODlDRTUxN0EwQjhDQzAwNzczQUQ4IC8q
IERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERGR0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBkZmcvREZHQmxvY2tJbnNlcnRpb25TZXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5MjYsNiArMjkzNyw3IEBACiAJCQkJ
ODYwNEY0RjIxNDNBNkM0NDAwQjI5NUY1IC8qIENoYW5nZUxvZyAqLywKIAkJCQlGNjkyQTg1NDAy
NTU1OTdEMDFGRjYwRjcgLyogY3JlYXRlX2hhc2hfdGFibGUgKi8sCiAJCQkJQTcxOEY4MjExMTc4
RUI0QjAwMjQ2NUE3IC8qIGNyZWF0ZV9yZWdleF90YWJsZXMgKi8sCisJCQkJQTcxREE4MEQxODgw
RDcxRjAwRDFGMjk5IC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zICovLAogCQkJCTQ1RTEyRDg4MDZB
NDlCMEYwMEU5REY4NCAvKiBqc2MuY3BwICovLAogCQkJCUY2OEVCQjhDMDI1NUQ0QzYwMUZGNjBG
NyAvKiBjb25maWcuaCAqLywKIAkJCQlGNUMyOTBFNjAyODRGOThFMDE4NjM1Q0EgLyogSmF2YVNj
cmlwdENvcmVQcmVmaXguaCAqLywKQEAgLTI5MzQsNiArMjk0Niw3IEBACiAJCQkJMTQzMkVCRDcw
QTM0Q0FENDAwNzE3QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4Q0IxMjBFRDEyQjRFMDAxRDY0OUYg
LyogYXNzZW1ibGVyICovLAogCQkJCUE1NENGMkVBMTg0RUE3MzkwMDIzN0YxOSAvKiBiaW5kaW5n
cyAqLywKKwkJCQlBN0Q4MDE5RjE4ODBENjZFMDAyNkMzOUIgLyogYnVpbHRpbnMgKi8sCiAJCQkJ
OTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovLAogCQkJCTdFMzlEODFEMEVD
MzhFRkEwMDNBRjExQSAvKiBieXRlY29tcGlsZXIgKi8sCiAJCQkJMUM5MDUxM0UwQkE5RTg4MzAw
ODFFOUQwIC8qIENvbmZpZ3VyYXRpb25zICovLApAQCAtMzUwOSw2ICszNTIyLDggQEAKIAkJNjUw
RkRGOEQwOUQwRkNBNzAwNzY5RTU0IC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQTdEODAxQTYxODgwRDZBODAwMjZDMzlC
IC8qIEpTQ0J1aWx0aW5zLmNwcCAqLywKKwkJCQlBN0Q4MDFBNzE4ODBENkE4MDAyNkMzOUIgLyog
SlNDQnVpbHRpbnMuaCAqLywKIAkJCQlCQzE4QzUyMzBFMTZGQzhBMDBCMzQ0NjAgLyogQXJyYXlQ
cm90b3R5cGUubHV0LmggKi8sCiAJCQkJQkNEMjAzRTcwRTE3MThGNDAwMkM3RTgyIC8qIERhdGVQ
cm90b3R5cGUubHV0LmggKi8sCiAJCQkJQTUxM0U1QzYxODVGOTQzNjAwN0U5NUFEIC8qIEluamVj
dGVkU2NyaXB0U291cmNlLmggKi8sCkBAIC0zODExLDYgKzM4MjYsNyBAQAogCQkJCUE3OTBERDZB
MTgyRjQ5OTcwMDU4ODgwNyAvKiBKU1NldEl0ZXJhdG9yLmggKi8sCiAJCQkJQkMwMkU5QjYwRTE4
NDJGQTAwMEY5Mjk3IC8qIEpTU3RyaW5nLmNwcCAqLywKIAkJCQlGNjkyQTg2MjAyNTU1OTdEMDFG
RjYwRjcgLyogSlNTdHJpbmcuaCAqLywKKwkJCQlBNzFEQTgwRTE4ODBEQkFCMDBEMUYyOTkgLyog
SlNTdHJpbmdJbmxpbmVzLmggKi8sCiAJCQkJODZFODU1MzgxMTFCOTk2ODAwMUFGNTFFIC8qIEpT
U3RyaW5nQnVpbGRlci5oICovLAogCQkJCTI2MDBCNUE0MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0
cmluZ0pvaW5lci5jcHAgKi8sCiAJCQkJMjYwMEI1QTUxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3Ry
aW5nSm9pbmVyLmggKi8sCkBAIC00NTYxLDYgKzQ1NzcsMTYgQEAKIAkJCXBhdGggPSByZW1vdGU7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlBN0Q4MDE5RjE4ODBENjZFMDAy
NkMzOUIgLyogYnVpbHRpbnMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVu
ID0gKAorCQkJCUE3RDgwMUEwMTg4MEQ2NkUwMDI2QzM5QiAvKiBBcnJheS5wcm90b3R5cGUuanMg
Ki8sCisJCQkJQTdEODAxQTExODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5j
cHAgKi8sCisJCQkJQTdEODAxQTIxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxl
cy5oICovLAorCQkJKTsKKwkJCXBhdGggPSBidWlsdGluczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CiAvKiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhI
ZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC00NjA2LDExICs0NjMyLDExIEBACiAJCQkJ
ODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNUNFRUUxNTE4N0YzQkFEMDBFNTVDOTkgLyogSW5zcGVjdG9yQWdlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTY1QzAyODVEMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUu
aCBpbiBIZWFkZXJzICovLAotIAkJCQkyQTY4Mjk1QjE4NzVGODA1MDBCNkMzRTIgLyogQ29weVdy
aXRlQmFycmllci5oIGluIEhlYWRlcnMgKi8sCi0gICAgICAgICAgICAgICAgMkE0RUM5MEMxODYw
RDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MkE2ODI5NUIxODc1RjgwNTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTJBNEVDOTBDMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZFNTkzMkE4MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5
U2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MzI0MzkzMTg1Njk3MDkwMDJFRDY5MiAvKiBD
b2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weSBpbiBIZWFkZXJzICovLAotIAkJCQlBNTMy
NDM5MjE4NTY5NzA5MDAyRUQ2OTIgLyogQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSBpbiBIZWFk
ZXJzICovLAorCQkJCUE1MzI0MzkyMTg1Njk3MDkwMDJFRDY5MiAvKiBDb2RlR2VuZXJhdG9ySW5z
cGVjdG9yLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NEYxN0VFMjc0OTAwQUJCMjE3IC8q
IFRlbXBSZWdpc3RlclNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwRTRCNjQxODgwOURENTAw
NjhBNDZEIC8qIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGRUI1OEMxNTE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTQ2MjIsNyArNDY0OCw3IEBACiAJCQkJMEY4MzM1QjgxNjM5QzFFQTAwMTQ0
M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQw
RTI5MTg3Q0E1RTYwMDg0M0IxMCAvKiBpbmxpbmUtYW5kLW1pbmlmeS1zdHlsZXNoZWV0cy1hbmQt
c2NyaXB0cy5weSBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwRTJCMTg3Q0E3NUIwMDg0M0IxMCAv
KiBqc21pbi5weSBpbiBIZWFkZXJzICovLAotIAkJCQlBNTMyNDM5ODE4NTZBNDg5MDAyRUQ2OTIg
LyogSW5zcGVjdG9ySlMuanNvbiBpbiBIZWFkZXJzICovLAorCQkJCUE1MzI0Mzk4MTg1NkE0ODkw
MDJFRDY5MiAvKiBJbnNwZWN0b3JKUy5qc29uIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMkEx
ODdDQTc1OTAwODQzQjEwIC8qIHh4ZC5wbCBpbiBIZWFkZXJzICovLAogCQkJCUZFQTA4NjIwMTgy
QjdBMDQwMEY2RDg1MSAvKiBCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYz
NTE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNDcz
Myw3ICs0NzU5LDcgQEAKIAkJCQlBMUEwMDlDMDE4MzFBMjJEMDBDRjg3MTEgLyogTWFjcm9Bc3Nl
bWJsZXJBUk02NC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQzlEQzUxMzI4REY4MjAwMkIyQUQ3
IC8qIERGR0J5dGVDb2RlUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyODE4N0RG
REVDMDA4M0I2ODcgLyogRlRMQXZhaWxhYmxlUmVjb3ZlcnkuaCBpbiBIZWFkZXJzICovLAotICAg
ICAgICAgICAgICAgIEE1OTNDRjg3MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJl
Z2lzdHJ5LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTkzQ0Y4NzE4NDAzOENBMDBCRkNFMjcgLyog
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNTZDMzYxNjI3
QjBBRDAwN0YyNzgzIC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEgLyogREZHQ2FwYWJp
bGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZGQzk1ODE0RUY5MEEyMDBDNzI1MzIgLyog
REZHQ0ZBUGhhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtNDg3Miw2ICs0ODk4LDcgQEAKIAkJCQkw
RkVBMEExRDE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkVBMEExRjE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU5NDU1OTMxODI0NzQ0NzAwQ0MzODQzIC8qIEpT
R2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdEODAxQTkxODgw
RDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEEw
QTE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjQ4NTMyQTE4N0RGREVDMDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRUEwQTIzMTcwOTYwNjkwMEJCNzIyQyAvKiBGVExDb21tb25WYWx1ZXMu
aCBpbiBIZWFkZXJzICovLApAQCAtNDk0Niw2ICs0OTczLDcgQEAKIAkJCQlCQzE4QzQwRjBFMTZG
NUNEMDBCMzQ0NjAgLyogSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzI1RjhCQ0Ux
NTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZCN0YzOTkxNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nSGVhZGVyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlBN0Q4MDFBNTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5QTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhp
bmdIZWFkZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5QjE1RUQ4RTQ2MDBG
MTY3QjIgLyogSW5kZXhpbmdUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNFRkFCMDE4MDVD
QTZEMDA0NzJDRTQgLyogSW5pdGlhbGl6ZUxMVk0uaCBpbiBIZWFkZXJzICovLApAQCAtNTIxOCw2
ICs1MjQ2LDcgQEAKIAkJCQlBNTMyNDM4ODE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNC
YWNrZW5kRGlzcGF0Y2hlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDU2MEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBQcm90ZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc0QzMzQjE2QUEyRDk1
MDA2MkYwMUQgLyogUHJvdG90eXBlTWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzFEQTgwRjE4
ODBEQkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjkzMzJBNDE0Q0E3REQ5MDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYwQ0Q0QzIxNUYxQTYwNzAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4TW9kZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJN0MwMDhDRTcxODc2MzFCNjAwOTU1QzI0IC8qIE1pY3JvdGFzay5o
IGluIEhlYWRlcnMgKi8sCkBAIC01ODM2LDYgKzU4NjUsNyBAQAogCQkJCUE3RDg5Q0YyMTdBMEI4
Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MEIw
ODMyMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTdEODlDRjMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUE3RDgwMUE0MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGlu
RXhlY3V0YWJsZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZFQzlEQzQxMzI4REY4MjAwMkIy
QUQ3IC8qIERGR0J5dGVDb2RlUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDgyRTIx
MTQxNzJDRTMwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZGRkM5NTcxNEVGOTBBMDAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtNTg1Miw2ICs1ODgyLDcgQEAKIAkJCQkwRkZGQzk1OTE0RUY5MEE2MDBDNzI1MzIg
LyogREZHQ1NFUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyRkM3NzIxNkUxMkY3MTAw
MzhEOTc2IC8qIERGR0RDRVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEYyQjk5MTcy
RjA0RkYwMDdEQkRBNSAvKiBERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJQTdEODAxQTgxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE3M0UxMzMwMTc5NjI0Q0QwMEU0REVBOCAvKiBERkdEZXNpcmVkU3RydWN0
dXJlQ2hhaW5zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyQzBGN0NEMTdCQkZDNUIwMDQ2NEZF
NCAvKiBERkdEZXNpcmVkVHJhbnNpdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFODUz
NEIxNzIzQ0RBNTAwQjYxOEY1IC8qIERGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTU5NzYsNyArNjAwNyw3IEBACiAJCQkJMEY2QjFDQzUxODYyQzQ3ODAwODQ1RDk3
IC8qIEZUTFVud2luZEluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5RDMzOUExODAzQURC
NzAwNzNDMkJDIC8qIEZUTFN0YWNrTWFwcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEx
NjE3MDZCQjkwMDBCQjcyMkMgLyogRlRMU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCi0gCQkJCTdD
MDA4Q0QyMTg2RjhBOTMwMDk1NUMyNCAvKiBKU1Byb21pc2VGdW5jdGlvbnMuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJN0MwMDhDRDIxODZGOEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlzZUZ1bmN0aW9u
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNCNTE4NUZDOUU5MDA4NDVEOTcgLyogRlRM
SlNDYWxsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkUxMTcxNzhFMUMwMDY5MEM3RiAv
KiBGVExUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5M0NGN0MxODQwMzYwMzAwQkZD
RTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKaW5kZXggYWYx
NGUzM2VhYzA1OTdmMmQ3OGM0YjNjZDE2MzU0MTFkYWJhOTY1ZS4uNjc5MjNmMDgyM2MyZmJhYjMx
MTI4YWRiNTE5ZGM4OWVhMDJiNjUwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0xpbmtCdWZmZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDb2Rl
QmxvY2suaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGlu
ZXMuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlIDx3
dGYvQ29tcGlsYXRpb25UaHJlYWQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQXJyYXkucHJvdG90eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlYjQyZjVjYzQzM2YxNjM2MzQz
YmZjOTgyYWEyYWFmYjMzNmU5NDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlvbiBldmVyeShj
YWxsYmFjayAvKiwgdGhpc0FyZyAqLykgeworICAgICJ1c2Ugc3RyaWN0IjsKKyAgICBpZiAodGhp
cyA9PT0gbnVsbCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlw
ZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCIpOworICAgIAorICAgIGlm
ICh0aGlzID09PSB1bmRlZmluZWQpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJh
eS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVmaW5lZCIp
OworICAgIAorICAgIHZhciBhcnJheSA9IEBPYmplY3QodGhpcyk7CisgICAgdmFyIGxlbmd0aCA9
IGFycmF5Lmxlbmd0aCA+Pj4gMDsKKyAgICAKKyAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAi
ZnVuY3Rpb24iKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBl
LmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOworCisgICAgdmFyIHRoaXNBcmcg
PSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDsKKyAgICAK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmICghKGkg
aW4gYXJyYXkpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghY2FsbGJhY2su
QGNhbGwodGhpc0FyZywgYXJyYXlbaV0sIGksIGFycmF5KSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzQxZGJiNWY5MjI1ZTI4YTEyZWQzZDE3OThmZjE3NjhlNDM2NzFhNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJs
ZXMuY3BwCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCdWlsdGluRXhl
Y3V0YWJsZXMuaCIKKworI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJKU0NlbGxJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKKyNpbmNsdWRlICJQYXJz
ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0J1aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4
ZWN1dGFibGVzKFZNJiB2bSkKKyAgICA6IG1fdm0odm0pCisjZGVmaW5lIElOSVRJQUxJWkVfQlVJ
TFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgLCBtXyMjbmFt
ZSMjU291cmNlKG1ha2VTb3VyY2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoc18jI25h
bWUsIGxlbmd0aCksIFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCI8YnVpbHRpbj4iKSkp
CisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTihJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJF
UlMpCisjdW5kZWYgRVhQT1NFX0JVSUxUSU5fU1RSSU5HUworeworfQorCitVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJs
ZShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCit7Cisg
ICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZTsKKyAgICBQYXJzZXJF
cnJvciBlcnJvcjsKKyAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9n
cmFtTm9kZT4oJm1fdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBKU1BhcnNlQnVpbHRpbiwg
SlNQYXJzZVByb2dyYW1Db2RlLCBlcnJvciwgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwor
CisgICAgaWYgKCFwcm9ncmFtKSB7CisgICAgICAgIGRhdGFMb2coIkZhdGFsIGVycm9yIGNvbXBp
bGluZyBidWlsdGluIGZ1bmN0aW9uICciLCBuYW1lLnN0cmluZygpLCAiJzogIiwgZXJyb3IubV9t
ZXNzYWdlKTsKKyAgICAgICAgQ1JBU0goKTsKKyAgICB9CisKKyAgICBTdGF0ZW1lbnROb2RlKiBl
eHByU3RhdGVtZW50ID0gcHJvZ3JhbS0+c2luZ2xlU3RhdGVtZW50KCk7CisgICAgUkVMRUFTRV9B
U1NFUlQoZXhwclN0YXRlbWVudCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudC0+
aXNFeHByU3RhdGVtZW50KCkpOworICAgIEV4cHJlc3Npb25Ob2RlKiBmdW5jRXhwciA9IHN0YXRp
Y19jYXN0PEV4cHJTdGF0ZW1lbnROb2RlKj4oZXhwclN0YXRlbWVudCktPmV4cHIoKTsKKyAgICBS
RUxFQVNFX0FTU0VSVChmdW5jRXhwcik7CisgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHItPmlz
RnVuY0V4cHJOb2RlKCkpOworICAgIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkgPSBzdGF0aWNfY2Fz
dDxGdW5jRXhwck5vZGUqPihmdW5jRXhwciktPmJvZHkoKTsKKyAgICBSRUxFQVNFX0FTU0VSVCgh
cHJvZ3JhbS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CisgICAgCisgICAgYm9keS0+c2V0RW5k
UG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CisgICAgUkVMRUFTRV9BU1NFUlQo
Ym9keSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keS0+aWRlbnQoKS5pc051bGwoKSk7CisgICAg
CisgICAgLy8gVGhpcyBmdW5jdGlvbiBhc3N1bWVzIGFuIGlucHV0IHN0cmluZyB0aGF0IHdvdWxk
IHJlc3VsdCBpbiBhIHNpbmdsZSBhbm9ueW1vdXMgZnVuY3Rpb24gZXhwcmVzc2lvbi4KKyAgICBi
b2R5LT5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKKyAgICBSRUxF
QVNFX0FTU0VSVChib2R5KTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNsb3NlZFZhcmlhYmxlIDog
cHJvZ3JhbS0+Y2xvc2VkVmFyaWFibGVzKCkpIHsKKyAgICAgICAgaWYgKGNsb3NlZFZhcmlhYmxl
ID09IG1fdm0ucHJvcGVydHlOYW1lcy0+YXJndW1lbnRzLmltcGwoKSkKKyAgICAgICAgY29udGlu
dWU7CisgICAgICAgIAorICAgICAgICBpZiAoY2xvc2VkVmFyaWFibGUgPT0gbV92bS5wcm9wZXJ0
eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLmltcGwoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChjbG9zZWRWYXJpYWJsZS0+aXNFbXB0eVVuaXF1ZSgpKTsK
KyAgICB9CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJm1fdm0sIHNvdXJjZSwgYm9k
eSwgdHJ1ZSwgVW5saW5rZWRCdWlsdGluRnVuY3Rpb24pOworICAgIGZ1bmN0aW9uRXhlY3V0YWJs
ZS0+bV9uYW1lVmFsdWUuc2V0KG1fdm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwganNTdHJpbmcoJm1f
dm0sIG5hbWUuc3RyaW5nKCkpKTsKKyAgICByZXR1cm4gZnVuY3Rpb25FeGVjdXRhYmxlOworfQor
CisjZGVmaW5lIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwg
bGVuZ3RoKSBcCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVz
OjpuYW1lIyNFeGVjdXRhYmxlKCkgXAore1wKKyAgICBpZiAoIW1fIyNuYW1lIyNFeGVjdXRhYmxl
KVwKKyAgICAgICAgbV8jI25hbWUjI0V4ZWN1dGFibGUgPSBjcmVhdGVCdWlsdGluRXhlY3V0YWJs
ZShtXyMjbmFtZSMjU291cmNlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPmZ1bmN0aW9uTmFtZSk7XAor
ICAgIHJldHVybiBtXyMjbmFtZSMjRXhlY3V0YWJsZS5nZXQoKTtcCit9CitKU0NfRk9SRUFDSF9C
VUlMVElOKERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElO
X1NPVVJDRVMKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0J1aWx0aW5FeGVjdXRhYmxlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1
aWx0aW5FeGVjdXRhYmxlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5YTE5ZTI2MTUwNzk0YTY2OWVjOThlMzk5
YmY2N2Y3ZjcxMDY0MTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQnVpbHRpbkV4ZWN1
dGFibGVzX2gKKyNkZWZpbmUgQnVpbHRpbkV4ZWN1dGFibGVzX2gKKworI2luY2x1ZGUgIkpTQ0J1
aWx0aW5zLmgiCisjaW5jbHVkZSAiU291cmNlQ29kZS5oIgorI2luY2x1ZGUgIldlYWsuaCIKKyNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7CitjbGFzcyBJZGVudGlmaWVyOworY2xhc3MgVk07CisK
K2NsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlcyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25Q
dHI8QnVpbHRpbkV4ZWN1dGFibGVzPiBjcmVhdGUoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBCdWlsdGluRXhlY3V0YWJsZXModm0pKTsKKyAgICB9CisgICAgCisj
ZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVu
Z3RoKSBcCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBc
Citjb25zdCBTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSB7IHJldHVybiBtXyMjbmFtZSMjU291
cmNlOyB9CisgICAgCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTihFWFBPU0VfQlVJTFRJTl9FWEVD
VVRBQkxFUykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJTl9TT1VSQ0VTCisgICAgCitwcml2YXRlOgor
ICAgIEJ1aWx0aW5FeGVjdXRhYmxlcyhWTSYpOworICAgIFZNJiBtX3ZtOworICAgIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShjb25zdCBTb3VyY2VD
b2RlJiwgY29uc3QgSWRlbnRpZmllciYpOworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNF
X01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpXAorICAgIFNvdXJjZUNvZGUgbV8j
I25hbWUjI1NvdXJjZTsgXAorICAgIFdlYWs8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+IG1f
IyNuYW1lIyNFeGVjdXRhYmxlOworICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4oREVDTEFSRV9CVUlM
VElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVS
UworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BcnJheVByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FycmF5UHJvZmlsZS5jcHAKaW5kZXggNGMwNTVmZWE1NzM4ZjFjNDYzMjY2ZDRlOWE5MTU0OGEx
MjkzNDcwOS4uZWFlZmU1NGYyZDE1Mjg0YjY0YmY2OTk3MjY1OGNkMWM2M2I0ZWE3NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKQEAgLTI3
LDYgKzI3LDcgQEAKICNpbmNsdWRlICJBcnJheVByb2ZpbGUuaCIKIAogI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0Nv
bW1hUHJpbnRlci5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KICNpbmNsdWRlIDx3
dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKaW5kZXggZDc0ODlkMzFhYmQ3Yzk5ZjFi
YzZmYWZhZTY1ODExMTJhYmRhY2ZkYi4uMWEzYjVmNGM3ODA3Yjk0ODhmZjM2NTcyZjc5NGQwYmI5
ZjM4ZDI1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlQmFzaWNCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlQmFzaWNCbG9jay5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJCeXRlY29k
ZUJhc2ljQmxvY2suaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTRnVu
Y3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAKIG5hbWVz
cGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAppbmRleCAyNjNlYzdjYWRmNGY3OWNhODEwMjQ0MWU2MmJmMmEwNWI1ZGRjM2YyLi43NTE1MDY1
NDIzNzZkN2VkYzU5OWFhMDBmOWIxMjY4NWNkYTM1MmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNDMsMTEgKzQzLDEzIEBACiAjaW5jbHVk
ZSAiSklULmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24u
aCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNp
bmNsdWRlICJMTEludEVudHJ5cG9pbnQuaCIKICNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVy
LmgiCisjaW5jbHVkZSAiTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIk9iamVj
dENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBvbHlt
b3JwaGljUHV0QnlJZExpc3QuaCIKICNpbmNsdWRlICJSZWR1Y2VXaGl0ZXNwYWNlLmgiCkBAIC0x
NTY5LDcgKzE1NzEsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBv
d25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbgogCiAgICAgc2V0Q29uc3Rh
bnRSZWdpc3RlcnModW5saW5rZWRDb2RlQmxvY2stPmNvbnN0YW50UmVnaXN0ZXJzKCkpOwogICAg
IGlmICh1bmxpbmtlZENvZGVCbG9jay0+dXNlc0dsb2JhbE9iamVjdCgpKQotICAgICAgICBtX2Nv
bnN0YW50UmVnaXN0ZXJzW3VubGlua2VkQ29kZUJsb2NrLT5nbG9iYWxPYmplY3RSZWdpc3Rlcigp
Lm9mZnNldCgpXS5zZXQoKm1fdm0sIG93bmVyRXhlY3V0YWJsZSwgbV9nbG9iYWxPYmplY3QuZ2V0
KCkpOworICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW3VubGlua2VkQ29kZUJsb2NrLT5nbG9i
YWxPYmplY3RSZWdpc3RlcigpLnRvQ29uc3RhbnRJbmRleCgpXS5zZXQoKm1fdm0sIG93bmVyRXhl
Y3V0YWJsZSwgbV9nbG9iYWxPYmplY3QuZ2V0KCkpOwogICAgIG1fZnVuY3Rpb25EZWNscy5yZXNp
emVUb0ZpdCh1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCkpOwogICAg
IGZvciAoc2l6ZV90IGNvdW50ID0gdW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25E
ZWNscygpLCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSA9IHVubGlua2VkQ29kZUJsb2NrLT5mdW5j
dGlvbkRlY2woaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
aW5kZXggNjhiYzAzNzlmNTc0NGM5YThmNzQzMWRiNjRmOGFiNTRlNmUxMDUzZi4uNDk5NWM1MmNm
OGIyYjFiNGQ2MjgwNDUzZWVkMjdjNzc0YTQ5NTU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtNTYsNyArNTYsNiBAQAogI2luY2x1ZGUgIkhhbmRs
ZXJJbmZvLmgiCiAjaW5jbHVkZSAiT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaCIKICNpbmNsdWRl
ICJPcHRpb25zLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlB1dFByb3Bl
cnR5U2xvdC5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2ZpbGVkQ29k
ZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAKaW5kZXgg
OTg2ZTAzZDBjYmE3MTg1YjM5Y2VlMDIzZjRhYjZiYzliOGNjYjZlNC4uNmYyZDVlYmExY2E0NWRk
ZWIxZGY2NWZkMDUxMjMzZTVmMTM4YmUwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0
aXNvbmluZ1dhdGNocG9pbnQuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVkZSAiREZHRXhpdFByb2ZpbGUu
aCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5jcHAKaW5kZXggMWRmYjVhYzZhZDkwOTNmOGY4MTEwMWVmN2YyZTYxMjMxMWFjMTkzOS4uNDMz
OTBkOTY1ZmM1MDM0MDE2ZjdiZmZmMjNlNjhiYjFlMDU0NTUyYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC00OSw5
ICs0OSw5IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s6OnNfaW5m
byA9IHsgIlVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayIsCiBjb25zdCBDbGFzc0luZm8gVW5saW5r
ZWRFdmFsQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZEV2YWxDb2RlQmxvY2siLCAmQmFz
ZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlua2VkRXZhbENvZGVCbG9j
aykgfTsKIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpzX2luZm8g
PSB7ICJVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JF
QVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKSB9OwogCi1zdGF0aWMg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhWTSYg
dm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgRGVidWdnZXJNb2RlIGRl
YnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9y
KQorc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlRnVuY3Rpb25Db2Rl
QmxvY2soVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIERlYnVn
Z2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFVubGlua2Vk
RnVuY3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yKQogewotICAgIFJl
ZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBib2R5ID0gcGFyc2U8RnVuY3Rpb25Cb2R5Tm9kZT4oJnZt
LCBzb3VyY2UsIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBl
eGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpID8gSlNQYXJzZVN0cmljdCA6IEpTUGFyc2VO
b3JtYWwsIEpTUGFyc2VGdW5jdGlvbkNvZGUsIGVycm9yKTsKKyAgICBSZWZQdHI8RnVuY3Rpb25C
b2R5Tm9kZT4gYm9keSA9IHBhcnNlPEZ1bmN0aW9uQm9keU5vZGU+KCZ2bSwgc291cmNlLCBleGVj
dXRhYmxlLT5wYXJhbWV0ZXJzKCksIGV4ZWN1dGFibGUtPm5hbWUoKSwgZXhlY3V0YWJsZS0+dG9T
dHJpY3RuZXNzKCksIEpTUGFyc2VGdW5jdGlvbkNvZGUsIGVycm9yKTsKIAogICAgIGlmICghYm9k
eSkgewogICAgICAgICBBU1NFUlQoZXJyb3IubV90eXBlICE9IFBhcnNlckVycm9yOjpFcnJvck5v
bmUpOwpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayog
Z2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhWTSYgdm0sIFVubGlua2VkRnVuYwogICAgIGJvZHkt
PmZpbmlzaFBhcnNpbmcoZXhlY3V0YWJsZS0+cGFyYW1ldGVycygpLCBleGVjdXRhYmxlLT5uYW1l
KCksIGV4ZWN1dGFibGUtPmZ1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZSgpKTsKICAgICBleGVj
dXRhYmxlLT5yZWNvcmRQYXJzZShib2R5LT5mZWF0dXJlcygpLCBib2R5LT5oYXNDYXB0dXJlZFZh
cmlhYmxlcygpKTsKICAgICAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQg
PSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUoJnZtLCBGdW5jdGlvbkNvZGUsIEV4
ZWN1dGFibGVJbmZvKGJvZHktPm5lZWRzQWN0aXZhdGlvbigpLCBib2R5LT51c2VzRXZhbCgpLCBi
b2R5LT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KSk7CisgICAgVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
azo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5mbyhib2R5LT5uZWVkc0Fj
dGl2YXRpb24oKSwgYm9keS0+dXNlc0V2YWwoKSwgYm9keS0+aXNTdHJpY3RNb2RlKCksIGtpbmQg
PT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0
aW9uKSk7CiAgICAgT3duUHRyPEJ5dGVjb2RlR2VuZXJhdG9yPiBnZW5lcmF0b3IoYWRvcHRQdHIo
bmV3IEJ5dGVjb2RlR2VuZXJhdG9yKHZtLCBib2R5LmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9k
ZSwgcHJvZmlsZXJNb2RlKSkpOwogICAgIGVycm9yID0gZ2VuZXJhdG9yLT5nZW5lcmF0ZSgpOwog
ICAgIGJvZHktPmRlc3Ryb3lEYXRhKCk7CkBAIC04MiwxMyArODIsMTQgQEAgdW5zaWduZWQgVW5s
aW5rZWRDb2RlQmxvY2s6OmFkZE9yRmluZENvbnN0YW50KEpTVmFsdWUgdikKICAgICByZXR1cm4g
YWRkQ29uc3RhbnQodik7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9tR2xv
YmFsQ29kZSkKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSwgVW5s
aW5rZWRGdW5jdGlvbktpbmQga2luZCkKICAgICA6IEJhc2UoKnZtLCBzdHJ1Y3R1cmUpCiAgICAg
LCBtX251bUNhcHR1cmVkVmFyaWFibGVzKG5vZGUtPmNhcHR1cmVkVmFyaWFibGVDb3VudCgpKQog
ICAgICwgbV9mb3JjZVVzZXNBcmd1bWVudHMobm9kZS0+dXNlc0FyZ3VtZW50cygpKQogICAgICwg
bV9pc0luU3RyaWN0Q29udGV4dChub2RlLT5pc1N0cmljdE1vZGUoKSkKICAgICAsIG1faGFzQ2Fw
dHVyZWRWYXJpYWJsZXMobm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkKICAgICAsIG1faXNG
cm9tR2xvYmFsQ29kZShpc0Zyb21HbG9iYWxDb2RlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlv
bihraW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uKQogICAgICwgbV9uYW1lKG5vZGUtPmlk
ZW50KCkpCiAgICAgLCBtX2luZmVycmVkTmFtZShub2RlLT5pbmZlcnJlZE5hbWUoKSkKICAgICAs
IG1fcGFyYW1ldGVycyhub2RlLT5wYXJhbWV0ZXJzKCkpCkBAIC0xNjYsNyArMTY3LDcgQEAgVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNvZGVC
bG9ja0ZvcihWTSYgdm0sIGNvbnMKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayh2
bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmls
ZXJNb2RlLCBlcnJvcik7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0g
Z2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayh2bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlv
bktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBpc0J1aWx0aW5GdW5jdGlvbigpID8g
VW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBlcnJvcik7
CiAgICAgCiAgICAgaWYgKGVycm9yLm1fdHlwZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKQog
ICAgICAgICByZXR1cm4gMDsKQEAgLTIxMCw2ICsyMTEsNyBAQCBVbmxpbmtlZENvZGVCbG9jazo6
VW5saW5rZWRDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZVR5cGUg
Y29kZQogICAgICwgbV9pc1N0cmljdE1vZGUoaW5mby5tX2lzU3RyaWN0TW9kZSkKICAgICAsIG1f
aXNDb25zdHJ1Y3RvcihpbmZvLm1faXNDb25zdHJ1Y3RvcikKICAgICAsIG1faGFzQ2FwdHVyZWRW
YXJpYWJsZXMoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8ubV9pc0J1aWx0
aW5GdW5jdGlvbikKICAgICAsIG1fZmlyc3RMaW5lKDApCiAgICAgLCBtX2xpbmVDb3VudCgwKQog
ICAgICwgbV9lbmRDb2x1bW4oVUlOVF9NQVgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IGI5ZGFlMmQ1YzY5Yzc5Y2VhYWE4
MDIzZDJhM2ExZjI2ZDQ2MDk0M2IuLmFiZjZjZjM1YjkzMDZhNGY3YTMwMWFiMGRmNzY2NmVjNjEy
ZTM3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5oCkBAIC02NiwyNiArNjYsMzUgQEAgdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtl
ZE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOwogdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZExMSW50
Q2FsbExpbmtJbmZvOwogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJ
bmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9k
ZSwgYm9vbCBpc0NvbnN0cnVjdG9yKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3Rp
dmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVj
dG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKQogICAgICAgICA6IG1fbmVlZHNBY3RpdmF0aW9u
KG5lZWRzQWN0aXZhdGlvbikKICAgICAgICAgLCBtX3VzZXNFdmFsKHVzZXNFdmFsKQogICAgICAg
ICAsIG1faXNTdHJpY3RNb2RlKGlzU3RyaWN0TW9kZSkKICAgICAgICAgLCBtX2lzQ29uc3RydWN0
b3IoaXNDb25zdHJ1Y3RvcikKKyAgICAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGlzQnVpbHRp
bkZ1bmN0aW9uKQogICAgIHsKICAgICB9Ci0gICAgYm9vbCBtX25lZWRzQWN0aXZhdGlvbjsKLSAg
ICBib29sIG1fdXNlc0V2YWw7Ci0gICAgYm9vbCBtX2lzU3RyaWN0TW9kZTsKLSAgICBib29sIG1f
aXNDb25zdHJ1Y3RvcjsKKyAgICBib29sIG1fbmVlZHNBY3RpdmF0aW9uIDogMTsKKyAgICBib29s
IG1fdXNlc0V2YWwgOiAxOworICAgIGJvb2wgbV9pc1N0cmljdE1vZGUgOiAxOworICAgIGJvb2wg
bV9pc0NvbnN0cnVjdG9yIDogMTsKKyAgICBib29sIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwor
fTsKKworZW51bSBVbmxpbmtlZEZ1bmN0aW9uS2luZCB7CisgICAgVW5saW5rZWROb3JtYWxGdW5j
dGlvbiwKKyAgICBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwKIH07CiAKIGNsYXNzIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6CisgICAgZnJpZW5k
IGNsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlczsKICAgICBmcmllbmQgY2xhc3MgQ29kZUNhY2hlOwor
ICAgIGZyaWVuZCBjbGFzcyBWTTsKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0YXRp
YyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNKiB2bSwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlLCBib29sIGlzRnJvbUdsb2JhbENv
ZGUgPSBmYWxzZSkKKyAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0
ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSogbm9k
ZSwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1
bmN0aW9uS2luZCkKICAgICB7Ci0gICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBp
bnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlPih2bS0+aGVhcCkpIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgaXNG
cm9tR2xvYmFsQ29kZSk7CisgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0
YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlPih2bS0+aGVhcCkpIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgaXNGcm9t
R2xvYmFsQ29kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQpOwogICAgICAgICBpbnN0YW5jZS0+Zmlu
aXNoQ3JlYXRpb24oKnZtKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KQEAgLTk5
LDYgKzEwOCwxNCBAQCBwdWJsaWM6CiAgICAgfQogICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgp
IGNvbnN0OwogICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lz
SW5TdHJpY3RDb250ZXh0OyB9CisgICAgSlNQYXJzZXJTdHJpY3RuZXNzIHRvU3RyaWN0bmVzcygp
IGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9pc0J1aWx0aW5GdW5jdGlvbikKKyAgICAgICAg
ICAgIHJldHVybiBKU1BhcnNlQnVpbHRpbjsKKyAgICAgICAgaWYgKG1faXNJblN0cmljdENvbnRl
eHQpCisgICAgICAgICAgICByZXR1cm4gSlNQYXJzZVN0cmljdDsKKyAgICAgICAgcmV0dXJuIEpT
UGFyc2VOb3JtYWw7CisgICAgfQogICAgIEZ1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZSBmdW5j
dGlvbk5hbWVJc0luU2NvcGVUb2dnbGUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZUlz
SW5TY29wZVRvZ2dsZTsgfQogCiAgICAgdW5zaWduZWQgZmlyc3RMaW5lT2Zmc2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9maXJzdExpbmVPZmZzZXQ7IH0KQEAgLTE0Miw4ICsxNTksMTAgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0ltbW9ydGFsU3RydWN0dXJlID0gdHJ1ZTsKICAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCisgICAgYm9vbCBpc0J1aWx0aW5GdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KKwogcHJpdmF0ZToK
LSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVjdHVyZSosIGNvbnN0IFNv
dXJjZUNvZGUmLCBGdW5jdGlvbkJvZHlOb2RlKiwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlKTsKKyAg
ICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJj
ZUNvZGUmLCBGdW5jdGlvbkJvZHlOb2RlKiwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlLCBVbmxpbmtl
ZEZ1bmN0aW9uS2luZCk7CiAgICAgV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2s+IG1fY29kZUJsb2NrRm9yQ2FsbDsKICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jaz4gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3Q7CiAKQEAgLTE1Miw2ICsxNzEsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0luU3RyaWN0Q29udGV4dCA6IDE7CiAgICAgYm9vbCBt
X2hhc0NhcHR1cmVkVmFyaWFibGVzIDogMTsKICAgICBib29sIG1faXNGcm9tR2xvYmFsQ29kZSA6
IDE7CisgICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKIAogICAgIElkZW50aWZpZXIg
bV9uYW1lOwogICAgIElkZW50aWZpZXIgbV9pbmZlcnJlZE5hbWU7CkBAIC0zMTksNiArMzM5LDgg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKGJvb2wgaXNO
dW1lcmljQ29tcGFyZUZ1bmN0aW9uKSB7IG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uID0gaXNO
dW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CiAgICAgYm9vbCBpc051bWVyaWNDb21wYXJlRnVuY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQogCisgICAg
Ym9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rp
b247IH0KKyAgICAKICAgICB2b2lkIHNocmlua1RvRml0KCkKICAgICB7CiAgICAgICAgIG1fanVt
cFRhcmdldHMuc2hyaW5rVG9GaXQoKTsKQEAgLTUwMCw2ICs1MjIsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9pc1N0cmljdE1vZGUgOiAxOwogICAgIGJvb2wgbV9pc0NvbnN0cnVjdG9yIDogMTsK
ICAgICBib29sIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgOiAxOworICAgIGJvb2wgbV9pc0J1aWx0
aW5GdW5jdGlvbiA6IDE7CiAgICAgdW5zaWduZWQgbV9maXJzdExpbmU7CiAgICAgdW5zaWduZWQg
bV9saW5lQ291bnQ7CiAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmlu
ZGV4IDY4MTBhYjgwMDJjZTZiYjhkNzhlN2ZmMjIyN2Y0YzZlYTdiNzU4YzIuLmVjNTIxYjUzMDQ2
MzkyM2U3NGMwMTBmYTIxOGU1OWVkMmE5YTNjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0xNzUs
NiArMTc1LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwg
UHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFAKICNlbmRpZgogICAgICwgbV91c2Vz
RXhjZXB0aW9ucyhmYWxzZSkKICAgICAsIG1fZXhwcmVzc2lvblRvb0RlZXAoZmFsc2UpCisgICAg
LCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGZhbHNlKQogewogICAgIGlmIChtX3Nob3VsZEVtaXREZWJ1
Z0hvb2tzKQogICAgICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNGdWxsU2NvcGVDaGFpbih0cnVl
KTsKQEAgLTIyMiw3ICsyMjMsMTMgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKFZNJiB2bSwgRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb25Cb2R5LCBVbmwKICNlbmRpZgog
ICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKICAgICAsIG1fZXhwcmVzc2lvblRvb0RlZXAo
ZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGNvZGVCbG9jay0+aXNCdWlsdGluRnVu
Y3Rpb24oKSkKIHsKKyAgICBpZiAobV9pc0J1aWx0aW5GdW5jdGlvbikgeworICAgICAgICBtX3No
b3VsZEVtaXRQcm9maWxlSG9va3MgPSBmYWxzZTsKKyAgICAgICAgbV9zaG91bGRFbWl0RGVidWdI
b29rcyA9IGZhbHNlOworICAgIH0KKwogICAgIGlmIChtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKQog
ICAgICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNGdWxsU2NvcGVDaGFpbih0cnVlKTsKIApAQCAt
NDM4LDYgKzQ0NSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYg
dm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kCiAjZW5kaWYKICAgICAsIG1f
dXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAgICAgLCBtX2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQor
ICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihmYWxzZSkKIHsKICAgICBtX2NvZGVCbG9jay0+c2V0
TmVlZHNGdWxsU2NvcGVDaGFpbih0cnVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDRlOWYyMTNjOWJm
YTZjZjE5NGIxYTE0ZmU5MTllODMzMzdhZTM1ZDkuLjE1ODQyNzRiNzhlYTZjMGJkMGVmYjBiOTgy
NWM4MThiZTBkYmMwNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ2MSw3ICs0NjEsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgYm9vbCBzaG91bGRFbWl0RGVidWdIb29rcygpIHsgcmV0dXJuIG1f
c2hvdWxkRW1pdERlYnVnSG9va3M7IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNTdHJpY3RN
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOyB9Ci0KKyAg
ICAgICAgCisgICAgICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBMYWJlbDsKICAgICAgICAgCkBAIC01NDMsNyArNTQ1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIAogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbWFr
ZUZ1bmN0aW9uKEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVO
b2RlLT5zb3VyY2UoKSwgYm9keSk7CisgICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIGJvZHksIGZh
bHNlLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxp
bmtlZE5vcm1hbEZ1bmN0aW9uKTsKICAgICAgICAgfQogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRJbml0TGF6eVJlZ2lzdGVyKFJlZ2lzdGVySUQqKTsKQEAgLTY3Nyw2ICs2NzksNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIG1fdXNlc0V4Y2VwdGlvbnM7CiAgICAgICAgIGJv
b2wgbV9leHByZXNzaW9uVG9vRGVlcDsKKyAgICAgICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9u
OwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAxZmZkNGYzMTE4ODJkMGVlNWM1NTE0ZjViOGIyNTkz
OWQ5NzVlMzc5Li42MmVjYTM2YTEwZDc3MDhhOTI4ZDQzYWMwM2YyZmM4NjE1Y2VjYTc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCkBAIC0yNiwxMCArMjYsMTAgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
Ik5vZGVzLmgiCi0jaW5jbHVkZSAiTm9kZUNvbnN0cnVjdG9ycy5oIgogCiAjaW5jbHVkZSAiQnl0
ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb21t
b25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiSklULmgi
CiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkpT
T05PYmplY3QuaCIKICNpbmNsdWRlICJMYWJlbFNjb3BlLmgiCiAjaW5jbHVkZSAiTGV4ZXIuaCIK
KyNpbmNsdWRlICJOb2RlQ29uc3RydWN0b3JzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgog
I2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCkBAIC01
MzUsMzYgKzUzNiwzOSBAQCBSZWdpc3RlcklEKiBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgUmVmUHRyPExhYmVs
PiBlbmQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFz
ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVz
c2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Npb25TdGFydCgpLCBzdWJl
eHByZXNzaW9uRW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbiA9IGdlbmVy
YXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0
KCksIG1faWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbiA9IGdlbmVyYXRv
ci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCks
IGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuY2FsbCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBmdW5jdGlvbi5n
ZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkNhbGwoZnVuY3Rpb24u
Z2V0KCksIHJlYWxDYWxsLmdldCgpKTsKKyAgICBib29sIGVtaXRDYWxsQ2hlY2sgPSAhZ2VuZXJh
dG9yLmlzQnVpbHRpbkZ1bmN0aW9uKCk7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2spCisgICAgICAg
IGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKGZ1bmN0aW9uLmdldCgpLCByZWFs
Q2FsbC5nZXQoKSk7CisKICAgICB7CiAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYg
bV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpIHsKICAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5v
ZGUqIG9sZExpc3QgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CiAgICAgICAgICAgICBtX2FyZ3MtPm1f
bGlzdE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKLQorICAgICAgICAgICAgCiAg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVt
aXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAg
ICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwog
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVy
KCksIG9sZExpc3QtPm1fZXhwcik7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0
dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBj
YWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7Ci0KICAgICAgICAgICAgIG1fYXJn
cy0+bV9saXN0Tm9kZSA9IG9sZExpc3Q7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVy
YXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICBDYWxs
QXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZp
bmVkKCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgp
LCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywg
ZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0SnVtcChlbmQuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQotICAgIGdlbmVyYXRvci5l
bWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOwotICAgIHsKLSAgICAgICAgQ2FsbEFyZ3VtZW50cyBj
YWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRN
b3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwotICAgICAgICBn
ZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKKyAgICAgICAgZ2VuZXJhdG9yLmVt
aXRKdW1wKGVuZC5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwu
Z2V0KCkpOworICAgICAgICB7CisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVu
dHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNh
bGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOworICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOworICAgICAgICB9CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgp
KTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0KCkpOwogICAgIHJldHVy
biByZXR1cm5WYWx1ZS5nZXQoKTsKIH0KIApAQCAtNTg1LDY1ICs1ODksNjcgQEAgUmVnaXN0ZXJJ
RCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwKICAgICBSZWZQdHI8TGFiZWw+IGVuZCA9IGdlbmVyYXRvci5uZXdMYWJl
bCgpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1f
YmFzZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2
b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0gICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRv
ci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CisgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IGZ1bmN0aW9uOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1
ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuY3Rpb24uZ2V0KCkpOwotICAg
IGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25BcHBseShmdW5jdGlvbi5nZXQoKSwgcmVh
bENhbGwuZ2V0KCkpOwotICAgIHsKLSAgICAgICAgaWYgKG1heUJlQ2FsbCkgewotICAgICAgICAg
ICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcikg
ewotICAgICAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIG9sZExpc3QgPSBtX2FyZ3MtPm1f
bGlzdE5vZGU7Ci0gICAgICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0
KSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4
dC0+bV9leHByLT5pc1NpbXBsZUFycmF5KCkpOwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
IW1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX25leHQpOwotICAgICAgICAgICAgICAgICAg
ICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBzdGF0aWNfY2FzdDxBcnJheU5vZGUqPihtX2FyZ3MtPm1f
bGlzdE5vZGUtPm1fbmV4dC0+bV9leHByKS0+dG9Bcmd1bWVudExpc3QoZ2VuZXJhdG9yLnZtKCks
IDAsIDApOwotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0
aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwg
YmFzZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3Vt
ZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwot
ICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCks
IHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBk
aXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG1fYXJncy0+bV9s
aXN0Tm9kZS0+bV9uZXh0OwotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
cmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRp
b24oZHN0KSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMg
Y2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAgICAgICAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5t
X2V4cHIpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFs
dWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJn
dW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBvbGRMaXN0OworICAg
IGJvb2wgZW1pdENhbGxDaGVjayA9ICFnZW5lcmF0b3IuaXNCdWlsdGluRnVuY3Rpb24oKTsKKyAg
ICBpZiAoZW1pdENhbGxDaGVjaykgeworICAgICAgICBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0
R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIGdlbmVy
YXRvci5wcm9wZXJ0eU5hbWVzKCkuYXBwbHkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJ
Zk5vdEZ1bmN0aW9uQXBwbHkoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKKyAgICB9
CisgICAgaWYgKG1heUJlQ2FsbCkgeworICAgICAgICBpZiAobV9hcmdzLT5tX2xpc3ROb2RlICYm
IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKSB7CisgICAgICAgICAgICBBcmd1bWVudExpc3RO
b2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgICAgICAgICAgaWYgKG1fYXJn
cy0+bV9saXN0Tm9kZS0+bV9uZXh0KSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKG1fYXJncy0+
bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHItPmlzU2ltcGxlQXJyYXkoKSk7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9uZXh0KTsKKyAgICAg
ICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBzdGF0aWNfY2FzdDxBcnJheU5vZGUqPiht
X2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByKS0+dG9Bcmd1bWVudExpc3QoZ2VuZXJh
dG9yLnZtKCksIDAsIDApOworICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFs
RnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihk
c3QpLCBiYXNlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1
bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOworICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1
bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCks
IGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0
OwogICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5l
cmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgp
KTsKICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9y
LCBtX2FyZ3MpOwotICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1l
bnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9l
eHByKTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0
KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRz
LCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgfQorICAg
ICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gb2xkTGlzdDsKICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3RO
b2RlLT5tX25leHQpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb2ZpbGVIb29r
UmVnaXN0ZXI7Ci0gICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLnNob3VsZEVtaXRQcm9maWxlSG9v
a3MoKSkKLSAgICAgICAgICAgICAgICBwcm9maWxlSG9va1JlZ2lzdGVyID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOwogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlv
biA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJh
c2UuZ2V0KCkpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNSZWdpc3RlciA9
IGdlbmVyYXRvci5lbWl0Tm9kZShtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcik7Ci0gICAgICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXJnc1JlZ2lzdGVyOwotICAgICAgICAgICAgQXJndW1l
bnRMaXN0Tm9kZSogYXJncyA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwotICAgICAgICAg
ICAgaWYgKGFyZ3MtPm1fZXhwci0+aXNSZXNvbHZlTm9kZSgpICYmIGdlbmVyYXRvci53aWxsUmVz
b2x2ZVRvQXJndW1lbnRzKHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oYXJncy0+bV9leHByKS0+
aWRlbnRpZmllcigpKSkKLSAgICAgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3Iu
dW5jaGVja2VkUmVnaXN0ZXJGb3JBcmd1bWVudHMoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHBy
KTsKLQotICAgICAgICAgICAgLy8gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5IGlnbm9yZXMgZXh0
cmEgYXJndW1lbnRzLCBidXQgd2Ugc3RpbGwKLSAgICAgICAgICAgIC8vIG5lZWQgdG8gZXZhbHVh
dGUgdGhlbSBmb3Igc2lkZSBlZmZlY3RzLgotICAgICAgICAgICAgd2hpbGUgKChhcmdzID0gYXJn
cy0+bV9uZXh0KSkKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9l
eHByKTsKLQotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsVmFyYXJncyhyZXR1cm5WYWx1
ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCB0aGlzUmVnaXN0ZXIuZ2V0KCksIGFyZ3NSZWdp
c3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm9maWxlSG9va1JlZ2lzdGVy
LmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICAgICAg
Q2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1Vu
ZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5n
ZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVu
dHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIH0KLSAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
QVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCk7
CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9maWxlSG9va1JlZ2lzdGVyOworICAgICAg
ICBpZiAoZ2VuZXJhdG9yLnNob3VsZEVtaXRQcm9maWxlSG9va3MoKSkKKyAgICAgICAgICAgIHBy
b2ZpbGVIb29rUmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJh
dG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKKyAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHRoaXNSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2FyZ3MtPm1fbGlz
dE5vZGUtPm1fZXhwcik7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhcmdzUmVnaXN0ZXI7
CisgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1f
bmV4dDsKKyAgICAgICAgaWYgKGFyZ3MtPm1fZXhwci0+aXNSZXNvbHZlTm9kZSgpICYmIGdlbmVy
YXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oYXJn
cy0+bV9leHByKS0+aWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIGFyZ3NSZWdpc3RlciA9IGdl
bmVyYXRvci51bmNoZWNrZWRSZWdpc3RlckZvckFyZ3VtZW50cygpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHBy
KTsKKworICAgICAgICAvLyBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkgaWdub3JlcyBleHRyYSBh
cmd1bWVudHMsIGJ1dCB3ZSBzdGlsbAorICAgICAgICAvLyBuZWVkIHRvIGV2YWx1YXRlIHRoZW0g
Zm9yIHNpZGUgZWZmZWN0cy4KKyAgICAgICAgd2hpbGUgKChhcmdzID0gYXJncy0+bV9uZXh0KSkK
KyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShhcmdzLT5tX2V4cHIpOworCisgICAgICAg
IGdlbmVyYXRvci5lbWl0Q2FsbFZhcmFyZ3MocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlv
bi5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBhcmdzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKSwgcHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChy
ZWFsQ2FsbC5nZXQoKSk7Ci0gICAgeworICAgIGlmIChlbWl0Q2FsbENoZWNrKSB7CisgICAgICAg
IGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdExh
YmVsKHJlYWxDYWxsLmdldCgpKTsKICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRz
KGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1
bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1p
dENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rp
b24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Cisg
ICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICB9Ci0gICAgZ2VuZXJh
dG9yLmVtaXRMYWJlbChlbmQuZ2V0KCkpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZS5nZXQoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxl
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlCmluZGV4IDM5Nzk3NmIw
NmM3YTliNTgzNjMzMjkwMGE2ZWJiOTNlYzY4Yjc0ODYuLmNhZDY1YmM0Y2M4ODhlMzE0Zjg4ZDY2
NWRkNGE2ZTY0NWEwOWEzNTUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVh
dGVfaGFzaF90YWJsZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFi
bGUKQEAgLTI4OSw3ICsyODksMTcgQEAgc3ViIG91dHB1dCgpIHsKICAgICAgICAgICAgICRpbnRy
aW5zaWMgPSAiUmVnRXhwVGVzdEludHJpbnNpYyIgaWYgKCRrZXkgZXEgInRlc3QiKTsKICAgICAg
ICAgfQogCisgICAgICAgIGlmICgkdmFsdWVzWyRpXXsidHlwZSJ9IGVxICJGdW5jdGlvbiIpICB7
CisgICAgICAgICAgICBteSAkdGFibGVIZWFkID0gJG5hbWU7CisgICAgICAgICAgICAkdGFibGVI
ZWFkID1+IHMvVGFibGUkLy87CisgICAgICAgICAgICBwcmludCAiICNpZiBKU0NfQlVJTFRJTl9F
WElTVFMoIiAuIHVjKCR0YWJsZUhlYWQgLiAka2V5KSAuIilcbiI7CisgICAgICAgICAgICBwcmlu
dCAiICAgeyBcIiRrZXlcIiwgKCgkYXR0cnNbJGldKSAmIH5GdW5jdGlvbikgfCBCdWlsdGluLCAk
aW50cmluc2ljLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8QnVpbHRpbkdlbmVyYXRvcj4oIiAuICR0
YWJsZUhlYWQgLiB1Y2ZpcnN0KCRrZXkpIC4gIkNvZGVHZW5lcmF0b3IpLCAoaW50cHRyX3QpJHNl
Y29uZFZhbHVlIH0sXG4iOworICAgICAgICAgICAgcHJpbnQgIiAjZWxzZVxuIgorICAgICAgICB9
CiAgICAgICAgIHByaW50ICIgICB7IFwiJGtleVwiLCAkYXR0cnNbJGldLCAkaW50cmluc2ljLCAo
aW50cHRyX3QpIiAuICRmaXJzdENhc3RTdHIgLiAiKCRmaXJzdFZhbHVlKSwgKGludHB0cl90KSIg
LiAkc2Vjb25kQ2FzdFN0ciAuICIoJHNlY29uZFZhbHVlKSB9LFxuIjsKKyAgICAgICAgaWYgKCR2
YWx1ZXNbJGldeyJ0eXBlIn0gZXEgIkZ1bmN0aW9uIikgIHsKKyAgICAgICAgICAgIHByaW50ICIg
I2VuZGlmXG4iCisgICAgICAgIH0KICAgICAgICAgJGkrKzsKICAgICB9CiAgICAgcHJpbnQgIiAg
IHsgMCwgMCwgTm9JbnRyaW5zaWMsIDAsIDAgfVxuIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDJmZjBjMzQxNDZlMmMwYmEyZmY3NmM0ZDNmN2M0
NmJhM2UyNTUxNDcuLjkwNDRjZGM2YjhjM2FkNGExZTk0MTg4ZGQxZDBlMjAwZTY5ZmI5OWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtNDgsNiAr
NDgsNyBAQAogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIlZNLmgiCiAjaW5j
bHVkZSAiSlNOYW1lU2NvcGUuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNs
dWRlICJOYW1lSW5zdGFuY2UuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2lu
Y2x1ZGUgIk9wZXJhdGlvbnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9n
ZW5lcmF0ZS1qcy1idWlsdGlucyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1qcy1i
dWlsdGlucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yZjRiNmQ0OTlmMDI1YzA1M2IyZjk3YjZmMTAwZTg1NTA0NmYz
ZTUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWpz
LWJ1aWx0aW5zCkBAIC0wLDAgKzEsMzA0IEBACisjIS91c3IvYmluL3B5dGhvbgorIyBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisjIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorIyBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorIyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisjIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworaW1wb3J0IGZpbGVjbXAKK2ltcG9ydCBmbm1hdGNoCitpbXBvcnQgb3MKK2ltcG9ydCBy
ZQoraW1wb3J0IHNodXRpbAoraW1wb3J0IHN5cworaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQganNv
bgorCitjb3B5cmlnaHRUZXh0ID0gIiIiICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi9cbgorIiIiCisKK2dlbmVyYXRvclN0cmluZyA9ICIvKiBHZW5lcmF0ZWQgYnkgJXMg
ZG8gbm90IGhhbmQgZWRpdC4gKi9cbiIgJSBvcy5wYXRoLmJhc2VuYW1lKF9fZmlsZV9fKQorCitm
dW5jdGlvbkhlYWRSZWdFeHAgPSByZS5jb21waWxlKHIiZnVuY3Rpb25ccytcdytccypcKC4qP1wp
IiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK2Z1bmN0aW9uTmFtZVJlZ0V4cCA9IHJlLmNvbXBpbGUo
ciJmdW5jdGlvblxzKyhcdyspXHMqXCgiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorZnVuY3Rpb25Q
YXJhbWV0ZXJGaW5kZXIgPSByZS5jb21waWxlKHIiXmZ1bmN0aW9uXHMrKD86XHcrKVxzKlwoKCg/
OlxzKlx3Kyk/XHMqKD86XHMqLFxzKlx3KykqKT9cKSIsIHJlLk1VTFRJTElORSB8IHJlLlMpCisK
K211bHRpbGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cKi4qP1wqXC8iLCByZS5N
VUxUSUxJTkUgfCByZS5TKQorc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIi
XC9cLy4qP1xuIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKKworZGVmIGdldENvcHlyaWdodChzb3Vy
Y2UpOgorICAgIGNvcHlyaWdodEJsb2NrID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5maW5kYWxs
KHNvdXJjZSlbMF0KKyAgICBjb3B5cmlnaHRCbG9jayA9IGNvcHlyaWdodEJsb2NrWzpjb3B5cmln
aHRCbG9jay5pbmRleCgiUmVkaXN0cmlidXRpb24iKV0KKyAgICBjb3B5UmlnaHRMaW5lcyA9IFtd
CisKKyAgICBmb3IgbGluZSBpbiBjb3B5cmlnaHRCbG9jay5zcGxpdCgiXG4iKToKKyAgICAgICAg
bGluZSA9IGxpbmUucmVwbGFjZSgiLyoiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFj
ZSgiKi8iLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKiIsICIiKQorICAgICAg
ICBsaW5lID0gbGluZS5yZXBsYWNlKCJDb3B5cmlnaHQiLCAiIikKKyAgICAgICAgbGluZSA9IGxp
bmUucmVwbGFjZSgiY29weXJpZ2h0IiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2Uo
IihDKSIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIoYykiLCAiIikKKyAgICAg
ICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgICAgICBpZiBsZW4obGluZSkgPT0gMDoKKyAgICAg
ICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgY29weVJpZ2h0TGluZXMuYXBwZW5kKGxpbmUpCisg
ICAgCisgICAgcmV0dXJuIGxpc3Qoc2V0KGNvcHlSaWdodExpbmVzKSkKKworCisKK2RlZiBnZXRG
dW5jdGlvbnMoc291cmNlKToKKworICAgIHNvdXJjZSA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAu
c3ViKCIvKiovIiwgc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAuc3ViKCIvL1xuIiwgc291cmNlKSkK
KworICAgIG1hdGNoZXMgPSBbIGYgZm9yIGYgaW4gZnVuY3Rpb25IZWFkUmVnRXhwLmZpbmRpdGVy
KHNvdXJjZSldCisgICAgZnVuY3Rpb25Cb3VuZHMgPSBbXQorICAgIHN0YXJ0ID0gMAorICAgIGVu
ZCA9IDAKKyAgICBmb3IgbWF0Y2ggaW4gbWF0Y2hlczoKKyAgICAgICAgc3RhcnQgPSBtYXRjaC5z
dGFydCgpCisgICAgICAgIGlmIHN0YXJ0IDwgZW5kOgorICAgICAgICAgICAgY29udGludWUKKyAg
ICAgICAgZW5kID0gbWF0Y2guZW5kKCkKKyAgICAgICAgd2hpbGUgc291cmNlW2VuZF0gIT0gJ3sn
OgorICAgICAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICBkZXB0aCA9IDEKKyAgICAgICAg
ZW5kID0gZW5kICsgMQorICAgICAgICB3aGlsZSBkZXB0aCA+IDA6CisgICAgICAgICAgICBpZiBz
b3VyY2VbZW5kXSA9PSAneyc6CisgICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCArIDEKKyAg
ICAgICAgICAgIGVsaWYgc291cmNlW2VuZF0gPT0gJ30nOgorICAgICAgICAgICAgICAgIGRlcHRo
ID0gZGVwdGggLSAxCisgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgIGZ1bmN0aW9u
Qm91bmRzLmFwcGVuZCgoc3RhcnQsIGVuZCkpCisKKyAgICBmdW5jdGlvbnMgPSBbc291cmNlW3N0
YXJ0OmVuZF0uc3RyaXAoKSBmb3IgKHN0YXJ0LCBlbmQpIGluIGZ1bmN0aW9uQm91bmRzXQorICAg
IHJlc3VsdCA9IFtdCisgICAgZm9yIGZ1bmN0aW9uIGluIGZ1bmN0aW9uczoKKyAgICAgICAgZnVu
Y3Rpb24gPSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLnN1YigiIiwgZnVuY3Rpb24pCisgICAgICAg
IGZ1bmN0aW9uTmFtZSA9IGZ1bmN0aW9uTmFtZVJlZ0V4cC5maW5kYWxsKGZ1bmN0aW9uKVswXQor
ICAgICAgICBmdW5jdGlvblBhcmFtZXRlcnMgPSBmdW5jdGlvblBhcmFtZXRlckZpbmRlci5maW5k
YWxsKGZ1bmN0aW9uKVswXS5zcGxpdCgnLCcpCisgICAgICAgIGlmIGxlbihmdW5jdGlvblBhcmFt
ZXRlcnNbMF0pID09IDA6CisgICAgICAgICAgICBmdW5jdGlvblBhcmFtZXRlcnMgPSBbXQorICAg
ICAgICAgICAgCisgICAgICAgIHJlc3VsdC5hcHBlbmQoKGZ1bmN0aW9uTmFtZSwgZnVuY3Rpb24s
IGZ1bmN0aW9uUGFyYW1ldGVycykpCisgICAgcmV0dXJuIHJlc3VsdAorICAgICAgICAKKworZGVm
IGdlbmVyYXRlQ29kZShzb3VyY2UpOgorICAgIGlucHV0RmlsZSA9IG9wZW4oc291cmNlLCAiciIp
CisgICAgYmFzZU5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHNvdXJjZSkucmVwbGFjZSgiLmpzIiwg
IiIpCisgICAgCisgICAgc291cmNlID0gIiIKKyAgICBmb3IgbGluZSBpbiBpbnB1dEZpbGU6Cisg
ICAgICAgIHNvdXJjZSA9IHNvdXJjZSArIGxpbmUKKyAgICAKKyAgICBpZiBzeXMucGxhdGZvcm0g
PT0gImN5Z3dpbiI6CisgICAgICAgIHNvdXJjZSA9IHNvdXJjZS5yZXBsYWNlKCJcclxuIiwgIlxu
IikKKyAgICByZXR1cm4gKGJhc2VOYW1lLCBnZXRGdW5jdGlvbnMoc291cmNlKSwgZ2V0Q29weXJp
Z2h0KHNvdXJjZSkpCisKK2RlZiBtYW5nbGVOYW1lKG9iamVjdCwgbmFtZSk6CisgICAgcU5hbWUg
PSBvYmplY3QgKyAiLiIgKyBuYW1lCisgICAgbWFuZ2xlZE5hbWUgPSAiIgorICAgIGkgPSAwCisg
ICAgd2hpbGUgaSA8IGxlbihxTmFtZSk6CisgICAgICAgIGlmIHFOYW1lW2ldID09ICcuJzoKKyAg
ICAgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWUgKyBxTmFtZVtpICsgMV0udXBwZXIo
KQorICAgICAgICAgICAgaSA9IGkgKyAxCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtYW5n
bGVkTmFtZSA9IG1hbmdsZWROYW1lICsgcU5hbWVbaV0KKyAgICAgICAgaSA9IGkgKyAxCisgICAg
cmV0dXJuIG1hbmdsZWROYW1lCisKK2J1aWx0aW5zID0gW10KKworYmFzZU5hbWUgPSBzeXMuYXJn
dlstMV0KK2J1aWx0aW5fZGVmaW5pdGlvbnMgPSBzeXMuYXJndlsxOi0xXQorKG91dHB1dF9iYXNl
LCBfKSA9IG9zLnBhdGguc3BsaXRleHQoc3lzLmFyZ3ZbLTFdKQorCitjb3B5cmlnaHRzID0gW10K
K2ZvciBmaWxlIGluIGJ1aWx0aW5fZGVmaW5pdGlvbnM6CisgICAgaWYgZm5tYXRjaC5mbm1hdGNo
KGZpbGUsICcqLmpzJyk6CisgICAgICAgIChiYXNlTmFtZSwgZnVuY3Rpb25zLCBvYmplY3RDb3B5
cmlnaHRzKSA9IGdlbmVyYXRlQ29kZShmaWxlKQorICAgICAgICBjb3B5cmlnaHRzLmV4dGVuZChv
YmplY3RDb3B5cmlnaHRzKQorICAgICAgICBidWlsdGlucy5hcHBlbmQoKGJhc2VOYW1lLCBmdW5j
dGlvbnMpKQorCitjb3B5cmlnaHRzID0gbGlzdChzZXQoY29weXJpZ2h0cykpCisKK2NvcHlyaWdo
dEJvZHkgPSAiIgorZm9yIGNvcHlyaWdodCBpbiBjb3B5cmlnaHRzOgorICAgIGNvcHlyaWdodEJv
ZHkgPSBjb3B5cmlnaHRCb2R5ICsiICogQ29weXJpZ2h0IChDKSAiICsgY29weXJpZ2h0ICsgIlxu
IgorCitidWlsdGluc0hlYWRlciA9IG9wZW4ob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgInciKQor
YnVpbHRpbnNJbXBsZW1lbnRhdGlvbiA9IG9wZW4ob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCAi
dyIpCitjb3B5cmlnaHRUZXh0ID0gIi8qXG4iICsgY29weXJpZ2h0Qm9keSArIGNvcHlyaWdodFRl
eHQKK2J1aWx0aW5zSGVhZGVyLndyaXRlKCIiIiVzCislcworCisjaWZuZGVmIEpTQ0J1aWx0aW5z
X0gKKyNkZWZpbmUgSlNDQnVpbHRpbnNfSAorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRnVu
Y3Rpb25FeGVjdXRhYmxlOworY2xhc3MgSWRlbnRpZmllcjsKK2NsYXNzIEpTR2xvYmFsT2JqZWN0
OworY2xhc3MgU291cmNlQ29kZTsKK2NsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOwor
Y2xhc3MgVk07CisKK0Z1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUo
Vk0mLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKKwor
IiIiICUgKGdlbmVyYXRvclN0cmluZywgY29weXJpZ2h0VGV4dCkpCisKK2NvZGVSZWZlcmVuY2Vz
ID0gW10KKworZm9yIChvYmplY3ROYW1lLCBmdW5jdGlvbnMpIGluIGJ1aWx0aW5zOgorICAgIHBy
aW50KCJHZW5lcmF0aW5nIGJpbmRpbmdzIGZvciB0aGUgJXMgYnVpbHRpbi4iICUgb2JqZWN0TmFt
ZSkKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiLyogJXMgZnVuY3Rpb25zICovXG4iICUgb2Jq
ZWN0TmFtZSkKKyAgICBmb3IgKG5hbWUsIGltcGxlbWVudGF0aW9uLCBfKSBpbiBmdW5jdGlvbnM6
CisgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlTmFtZShvYmplY3ROYW1lLCBuYW1lKQorICAg
ICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lWzBdLmxvd2VyKCkgKyBtYW5nbGVkTmFtZVsx
Ol0gKyAiQ29kZSIKKyAgICAgICAgY29kZVJlZmVyZW5jZXMuYXBwZW5kKChtYW5nbGVkTmFtZSwg
bmFtZSwgaW1wbGVtZW50YXRpb24pKQorICAgICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiZXh0
ZXJuIGNvbnN0IGNoYXIqIHNfJXM7XG4iICUgbWFuZ2xlZE5hbWUpCisgICAgICAgIGJ1aWx0aW5z
SGVhZGVyLndyaXRlKCJleHRlcm4gY29uc3QgaW50IHNfJXNMZW5ndGg7XG4iICUgbWFuZ2xlZE5h
bWUpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuIikKKyAgICBidWlsdGluc0hlYWRlci53
cml0ZSgiI2RlZmluZSBKU0NfRk9SRUFDSF8lc19CVUlMVElOKG1hY3JvKSBcXFxuIiAlIG9iamVj
dE5hbWUucmVwbGFjZSgiLiIsICJfIikudXBwZXIoKSkKKyAgICBmb3IgKG5hbWUsIGltcGxlbWVu
dGF0aW9uLCBhcmd1bWVudHMpIGluIGZ1bmN0aW9uczoKKyAgICAgICAgbWFuZ2xlZE5hbWUgPSBt
YW5nbGVOYW1lKG9iamVjdE5hbWUsIG5hbWUpCisgICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRl
KCIgICAgbWFjcm8oJXMsICVzLCAlZCkgXFxcbiIgJSAobmFtZSwgbWFuZ2xlZE5hbWUsIGxlbihh
cmd1bWVudHMpKSkKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiXG4iKQorICAgIGZvciAobmFt
ZSwgaW1wbGVtZW50YXRpb24sIGFyZ3VtZW50cykgaW4gZnVuY3Rpb25zOgorICAgICAgICBidWls
dGluc0hlYWRlci53cml0ZSgiI2RlZmluZSBKU0NfQlVJTFRJTl8lcyAxXG4iICUgbWFuZ2xlTmFt
ZShvYmplY3ROYW1lLCBuYW1lKS51cHBlcigpKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJc
blxuIikKK25hbWVzID0gW10KK2J1aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19GT1JF
QUNIX0JVSUxUSU4obWFjcm8pXFxcbiIpCitmb3IgKGNvZGVSZWZlcmVuY2UsIGZ1bmN0aW9uTmFt
ZSwgc291cmNlKSBpbiBjb2RlUmVmZXJlbmNlczoKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgi
ICAgIG1hY3JvKCVzLCAlcywgc18lc0xlbmd0aCkgXFxcbiIgJSAoY29kZVJlZmVyZW5jZSwgZnVu
Y3Rpb25OYW1lLCBjb2RlUmVmZXJlbmNlKSkKKyAgICBuYW1lcy5hcHBlbmQoZnVuY3Rpb25OYW1l
KQorCitidWlsdGluc0hlYWRlci53cml0ZSgiXG5cbiIpCitidWlsdGluc0hlYWRlci53cml0ZSgi
I2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFxcXG4iKQor
Zm9yIG5hbWUgaW4gc29ydGVkKHNldChuYW1lcykpOgorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRl
KCIgICAgbWFjcm8oJXMpIFxcXG4iICUgbmFtZSkKK2J1aWx0aW5zSGVhZGVyLndyaXRlKCIiIgor
CisjZGVmaW5lIEpTQ19ERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlv
bk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFt
ZSMjR2VuZXJhdG9yKFZNJik7CisKK0pTQ19GT1JFQUNIX0JVSUxUSU4oSlNDX0RFQ0xBUkVfQlVJ
TFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgSlNDX0RFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IKKwor
I2RlZmluZSBKU0NfQlVJTFRJTl9FWElTVFMobmFtZSkgZGVmaW5lZChKU0NfQlVJTFRJTl8jI25h
bWUpCisKK30KKworI2VuZGlmCisKKyIiIikKKworYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0
ZSgiIiIlcworJXMKKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiSlNDQnVpbHRp
bnMuaCIKKworI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkV4ZWN1
dGFibGUuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiVk0uaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKKyIiIiAgJSAoZ2VuZXJhdG9yU3RyaW5nLCBjb3B5cmlnaHRUZXh0
KSkKKworZm9yIChjb2RlUmVmZXJlbmNlLCBuYW1lLCBzb3VyY2UpIGluIGNvZGVSZWZlcmVuY2Vz
OgorICAgIHNvdXJjZSA9ICIoZnVuY3Rpb24gIiArIHNvdXJjZVtzb3VyY2UuaW5kZXgoIigiKTpd
ICsgIikiCisgICAgbGluZXMgPSBqc29uLmR1bXBzKHNvdXJjZSlbMTotMV0uc3BsaXQoIlxcbiIp
CisgICAgc291cmNlTGVuZ3RoID0gbGVuKHNvdXJjZSkKKyAgICBzb3VyY2UgPSAiIgorICAgIGZv
ciBsaW5lIGluIGxpbmVzOgorICAgICAgICBzb3VyY2UgPSBzb3VyY2UgKyAoIiAgICBcIiVzXFxu
XCIgXFxcbiIgJSBsaW5lKQorICAgIGJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoImNvbnN0
IGNoYXIqIHNfJXMgPVxuJXM7XG5cbiIgJSAoY29kZVJlZmVyZW5jZSwgc291cmNlKSkKKyAgICBi
dWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCJjb25zdCBpbnQgc18lc0xlbmd0aCA9ICVkO1xu
XG4iICUgKGNvZGVSZWZlcmVuY2UsIHNvdXJjZUxlbmd0aCArIDEpKSAjICsgMSBmb3IgXG4KKwor
YnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiIiIKK0Z1bmN0aW9uRXhlY3V0YWJsZSogY3Jl
YXRlQnVpbHRpbkV4ZWN1dGFibGUoVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
dW5saW5rZWRFeGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCit7CisgICAgdW5z
aWduZWQgbGluZUNvdW50ID0gdW5saW5rZWRFeGVjdXRhYmxlLT5saW5lQ291bnQoKTsKKyAgICB1
bnNpZ25lZCBzdGFydENvbHVtbiA9IDE7CisgICAgdW5zaWduZWQgc291cmNlTGVuZ3RoID0gdW5s
aW5rZWRFeGVjdXRhYmxlLT5zb3VyY2VMZW5ndGgoKTsKKyAgICBib29sIGVuZENvbHVtbklzT25T
dGFydExpbmUgPSAhbGluZUNvdW50OworICAgIHVuc2lnbmVkIGVuZENvbHVtbkV4Y2x1ZGluZ0Jy
YWNlcyA9IHVubGlua2VkRXhlY3V0YWJsZS0+dW5saW5rZWRCb2R5RW5kQ29sdW1uKCkgKyAoZW5k
Q29sdW1uSXNPblN0YXJ0TGluZSA/IDAgOiAxKTsKKyAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9
IHVubGlua2VkRXhlY3V0YWJsZS0+c3RhcnRPZmZzZXQoKTsKKyAgICB1bnNpZ25lZCBzdGFydE9m
ZnNldEV4Y2x1ZGluZ09wZW5CcmFjZSA9IHN0YXJ0T2Zmc2V0ICsgMTsKKyAgICB1bnNpZ25lZCBl
bmRPZmZzZXRFeGNsdWRpbmdDbG9zZUJyYWNlID0gc3RhcnRPZmZzZXQgKyBzb3VyY2VMZW5ndGgg
LSAxOworICAgIFNvdXJjZUNvZGUgYm9keVNvdXJjZShzb3VyY2UucHJvdmlkZXIoKSwgc3RhcnRP
ZmZzZXRFeGNsdWRpbmdPcGVuQnJhY2UsIGVuZE9mZnNldEV4Y2x1ZGluZ0Nsb3NlQnJhY2UsIDAs
IHN0YXJ0Q29sdW1uKTsKKyAgICByZXR1cm4gRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUodm0s
IGJvZHlTb3VyY2UsIHVubGlua2VkRXhlY3V0YWJsZSwgMCwgbGluZUNvdW50LCBzdGFydENvbHVt
biwgZW5kQ29sdW1uRXhjbHVkaW5nQnJhY2VzLCBmYWxzZSk7Cit9CisKKyNkZWZpbmUgSlNDX0RF
RklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENv
dW50KSBcXAorRnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKFZNJiB2bSkg
XFwKK3sgXFwKKyAgICByZXR1cm4gY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUodm0sIHZtLmJ1aWx0
aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLCB2bS5idWlsdGluRXhlY3V0
YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpKTsgXFwKK30KKworSlNDX0ZPUkVBQ0hfQlVJTFRJ
TihKU0NfREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIEpTQ19ERUZJTkVfQlVJTFRJ
Tl9HRU5FUkFUT1IKK30KKworIiIiKQorCitidWlsdGluc0hlYWRlci5jbG9zZSgpCitidWlsdGlu
c0ltcGxlbWVudGF0aW9uLmNsb3NlKCkKKworaWYgKG5vdCBvcy5wYXRoLmV4aXN0cyhvdXRwdXRf
YmFzZSArICIuaCIpKSBvciAobm90IGZpbGVjbXAuY21wKG91dHB1dF9iYXNlICsgIi5oLnRtcCIs
IG91dHB1dF9iYXNlICsgIi5oIiwgc2hhbGxvdz1GYWxzZSkpOgorICAgIG9zLnJlbmFtZShvdXRw
dXRfYmFzZSArICIuaC50bXAiLCBvdXRwdXRfYmFzZSArICIuaCIpCitlbHNlOgorICAgIG9zLnJl
bW92ZShvdXRwdXRfYmFzZSArICIuaC50bXAiKQorCitpZiAobm90IG9zLnBhdGguZXhpc3RzKG91
dHB1dF9iYXNlICsgIi5jcHAiKSkgb3IgKG5vdCBmaWxlY21wLmNtcChvdXRwdXRfYmFzZSArICIu
Y3BwLnRtcCIsIG91dHB1dF9iYXNlICsgIi5jcHAiLCBzaGFsbG93PUZhbHNlKSk6CisgICAgb3Mu
cmVuYW1lKG91dHB1dF9iYXNlICsgIi5jcHAudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmNwcCIpCitl
bHNlOgorICAgIG9zLnJlbW92ZShvdXRwdXRfYmFzZSArICIuY3BwLnRtcCIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCBjYTg5
MGIwNmVhMzNmYTllN2YxZmE1MWEzNWVhMmQ0OGQwMDlhMzhhLi42YzliZjk2YzE1ZjYwOWUyNjVj
ZTI1MGE0NWJmMDg2MWQwNmNkMWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdGFja0lubGluZXMuaCIKICNp
bmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5jbHVkZSAiTExJbnRDTG9vcC5oIgogI2luY2x1ZGUgIkxM
SW50VGh1bmtzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvUHJvdG9DYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L1Byb3RvQ2FsbEZyYW1lLmNwcAppbmRleCBmMGUwMmJhNGU0NzZmOTljYzkxM2IwNDYyYWQyNzk1
MDA2MDlmYTNhLi4xYzI0MGRjZDcxYmU1MjlkODhjYmY0NjFkMTg2OGY1ZWIyYjAyYWQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFt
ZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5oIgogCiAj
aW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNp
bmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGNhN2FkMTFmMmUwYjhhM2I4YjE4NTg5
MWQ3ZTUyMmJhZTQwM2EyMzYuLmNiNTUwN2JlYWM1NWJmOGViMWIzN2VjOTBmY2FiMTkzNGZiNDhl
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
czMyXzY0LmNwcAppbmRleCA5OGQxMGEzZjRkY2IxMmQ4OWYzN2ExMmYyMjYwNGI5NDZlMDhlNjI3
Li5kZDAzNTM3NzllOGJkZjk4ZjQ2NThhMzA3ZTMyZDA2ZTQ3MjQ0MTU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlO
YW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCmluZGV4IDkyOGRkNTBmYjAxNmUyNzE2NDRhNTc1ZTMwYWI1ZjI1MTZlYjUwZWMuLjQ5ODcw
ZTY4YTg3YmUxOWUxNThhMDZkMWM2NGZlYzliOGJkMDgyMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUg
IkpJVC5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbldyYXBwZXJzLmgiCiAjaW5jbHVkZSAiSklU
VG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVk
ZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4
IDI2ZGQ0ZDFhZjc0NWFmYTFmYmM1M2E5YzAyM2E2ZTQ3NDFhNjZhMDkuLmRmMWJkM2E5Y2ZhNDAy
YzUyYTUyMTFjZjFhY2NlNjdkNTEyMWI3ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0yOSwxMSArMjksMTMgQEAKICNpbmNsdWRl
ICJKSVQuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50
aWZpZXJzLmgiCiAjaW5jbHVkZSAiR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgiCiAjaW5jbHVkZSAi
R2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVRJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1l
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1ZhcmlhYmxlT2JqZWN0LmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCBk
MThmZWE3MTVjYjAzYjM3YWE5MjZkODQ5YThlNWFiOTU2M2VjZDNkLi4zMjYxYjNhZjZlZWFiZDZm
MjZhNDNhMDhkMjA0YmM2MmIwNjU4OWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNp
bmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRl
ICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogI2luY2x1
ZGUgIkpTVmFyaWFibGVPYmplY3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggNDA3ODRiNDk0
MzFmZTAyZThlNDUyMmYxNjMwOGM5MDI0NzE2ZDIzNi4uMmY3OTU1NTRiMDkxZGVlYmJjMDNiZjJi
ZThjNzRmNDFhZTU0MWVkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTM4LDYgKzM4LDcgQEAK
ICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNT
dHJpbmcuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJPcGVyYXRp
b25zLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCiAjaW5jbHVkZSAiU3RhY2tWaXNpdG9y
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRz
RXh0cmFjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNF
eHRyYWN0b3IuY3BwCmluZGV4IDYwNGNjMjYzY2Y5N2UwODZmZWQwNmVjOTAzYjBlYzE5ODNlNzgx
MzcuLjgxNjZlN2Y4MWZhODlhN2Q0ZjUwYzVmMWE5NGZhOTY4YzVkNTdlMWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3Bw
CkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJKU0Fy
cmF5LmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCi0jaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2lu
Y2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA2NjQ0NGJhYTA4YjU2MmRk
Njk3ZTBjY2Q3NzIxZTU1YzE1YmE0OTEzLi5kODJlOWU5YzI4MTg0NjFlMzA1ZmY4NjVkMmZiMTY4
YTc4Y2JiNGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJK
SVRFeGNlcHRpb25zLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCi0jaW5jbHVkZSAiSlND
SlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNH
bG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1
ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9BU1RCdWlsZGVyLmgKaW5kZXggOGVjMWZkMzJhM2FkYTIyZTEyNTIyOTU3MGRjZjdmZjI4ZWFi
ZjFlZC4uNDZhN2M3NmIyZjkwMWZjM2NjMzZkMWNlMGMwNzM1M2ViMDZiMmY1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTg4OCw5ICs4ODgsOSBAQCBF
eHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbgogICAgIEFTU0VSVChmdW5jLT5pc0RvdEFjY2Vzc29yTm9k
ZSgpKTsKICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29y
Tm9kZSo+KGZ1bmMpOwogICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUqIG5vZGU7Ci0gICAgaWYgKGRv
dC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmNhbGwpCisgICAgaWYgKGRv
dC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmNhbGwgfHwgZG90LT5pZGVu
dGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y2FsbFByaXZhdGVOYW1lKQogICAgICAg
ICBub2RlID0gbmV3IChtX3ZtKSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90
LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2
b3RFbmQpOwotICAgIGVsc2UgaWYgKGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5
TmFtZXMtPmFwcGx5KQorICAgIGVsc2UgaWYgKGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnBy
b3BlcnR5TmFtZXMtPmFwcGx5IHx8IGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5
TmFtZXMtPmFwcGx5UHJpdmF0ZU5hbWUpCiAgICAgICAgIG5vZGUgPSBuZXcgKG1fdm0pIEFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmll
cigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwogICAgIGVsc2UKICAgICAg
ICAgbm9kZSA9IG5ldyAobV92bSkgRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5i
YXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RF
bmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCBjYTRiYjRmMGFk
ZThkNmJjODI2OTFhNmMwMDAxNGNmMTk4YmQ4OGJkLi5jY2IwNzlkOTc1YTE0MWM1YzRiMmQ3YjYy
MzEzMDAwNzA5Nzc3ODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0xleGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApA
QCAtMjUsMTAgKzI1LDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGV4ZXIu
aCIKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCisjaW5jbHVkZSAiSWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCi0KICNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdEZ1bmN0aW9ucy5oIgotI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJO
b2RlSW5mby5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSA8d3RmL2R0b2EuaD4KQEAg
LTkwLDYgKzkwLDcgQEAgZW51bSBDaGFyYWN0ZXJUeXBlIHsKIAogICAgIC8vIE90aGVyIHR5cGVz
IChvbmx5IG9uZSBzbyBmYXIpCiAgICAgQ2hhcmFjdGVyV2hpdGVTcGFjZSwKKyAgICBDaGFyYWN0
ZXJQcml2YXRlSWRlbnRpZmllclN0YXJ0CiB9OwogCiAvLyAyNTYgTGF0aW4tMSBjb2RlcwpAQCAt
MTU4LDcgKzE1OSw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCB0eXBlc09mTGF0aW4x
Q2hhcmFjdGVyc1syNTZdID0gewogLyogIDYxIC0gPSAgICAgICAgICAgICAgICAgICovIENoYXJh
Y3RlckVxdWFsLAogLyogIDYyIC0gPiAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlckdyZWF0
ZXIsCiAvKiAgNjMgLSA/ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyUXVlc3Rpb24sCi0v
KiAgNjQgLSBAICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKKy8qICA2NCAt
IEAgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJQcml2YXRlSWRlbnRpZmllclN0YXJ0LAog
LyogIDY1IC0gQSAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwK
IC8qICA2NiAtIEIgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQs
CiAvKiAgNjcgLSBDICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0
LApAQCAtNDg2LDkgKzQ4NywxMCBAQCBzdGF0aWMgY29uc3QgTENoYXIgc2luZ2xlQ2hhcmFjdGVy
RXNjYXBlVmFsdWVzRm9yQVNDSUlbMTI4XSA9IHsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgotTGV4ZXI8VD46OkxleGVyKFZNKiB2bSkKK0xleGVyPFQ+OjpMZXhlcihWTSogdm0sIEpTUGFy
c2VyU3RyaWN0bmVzcyBzdHJpY3RuZXNzKQogICAgIDogbV9pc1JlcGFyc2luZyhmYWxzZSkKICAg
ICAsIG1fdm0odm0pCisgICAgLCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24oc3RyaWN0bmVzcyA9
PSBKU1BhcnNlQnVpbHRpbikKIHsKIH0KIApAQCAtNzUzLDcgKzc1NSwyNyBAQCBpbmxpbmUgdm9p
ZCBMZXhlcjxUPjo6cmVjb3JkMTYoaW50IGMpCiAgICAgQVNTRVJUKGMgPD0gc3RhdGljX2Nhc3Q8
aW50PihVU0hSVF9NQVgpKTsKICAgICBtX2J1ZmZlcjE2LmFwcGVuZChzdGF0aWNfY2FzdDxVQ2hh
cj4oYykpOwogfQotCisgICAgCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorYm9vbCBpc1NhZmVJZGVu
dGlmaWVyKFZNJiB2bSwgY29uc3QgSWRlbnRpZmllciogaWRlbnQpCit7CisgICAgaWYgKCFpZGVu
dCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgLyogSnVzdCBibG9jayBhbnkgdXNlIG9mIHN1
c3BpY2lvdXMgaWRlbnRpZmllcnMuICBUaGlzIGlzIGludGVuZGVkIHRvCisgICAgICogYmUgdXNl
ZCBhcyBhIHNhZmV0eSBuZXQgd2hpbGUgaW1wbGVtZW50aW5nIGJ1aWx0aW5zLgorICAgICAqLwor
ICAgIGlmICgqaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+Y2FsbCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+YXBwbHkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKmlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmV2
YWwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKmlkZW50ID09IHZtLnByb3BlcnR5
TmFtZXMtPkZ1bmN0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7
Cit9CisjZW5kaWYKKyAgICAKIHRlbXBsYXRlIDw+CiB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVh
dGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cGFy
c2VJZGVudGlmaWVyKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEsIHVuc2lnbmVkIGxleGVyRmxhZ3Ms
IGJvb2wgc3RyaWN0TW9kZSkKIHsKQEAgLTc2NSw3ICs3ODcsMTEgQEAgdGVtcGxhdGUgPGJvb2wg
c2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxM
Q2hhcj46OnAKICAgICAgICAgICAgIHJldHVybiBrZXl3b3JkID09IFJFU0VSVkVEX0lGX1NUUklD
VCAmJiAhc3RyaWN0TW9kZSA/IElERU5UIDoga2V5d29yZDsKICAgICAgICAgfQogICAgIH0KLQor
ICAgIAorICAgIGJvb2wgaXNQcml2YXRlTmFtZSA9IG1fY3VycmVudCA9PSAnQCcgJiYgbV9wYXJz
aW5nQnVpbHRpbkZ1bmN0aW9uOworICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICBzaGlm
dCgpOworICAgIAogICAgIGNvbnN0IExDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50U291
cmNlUHRyKCk7CiAgICAgdW5zaWduZWQgaWRlbnRpZmllckxpbmVTdGFydCA9IGN1cnJlbnRMaW5l
U3RhcnRPZmZzZXQoKTsKICAgICAKQEAgLTc3OSwxNSArODA1LDI2IEBAIHRlbXBsYXRlIDxib29s
IHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8
TENoYXI+OjpwCiAKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IDA7CiAgICAgCi0gICAg
aWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpIHsKKyAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRp
ZmllciB8fCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKICAgICAgICAgaW50IGlkZW50aWZp
ZXJMZW5ndGggPSBjdXJyZW50U291cmNlUHRyKCkgLSBpZGVudGlmaWVyU3RhcnQ7CiAgICAgICAg
IGlkZW50ID0gbWFrZUlkZW50aWZpZXIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVuZ3Ro
KTsKLQorICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CisgICAgICAgICAg
ICBpZiAoIWlzU2FmZUlkZW50aWZpZXIoKm1fdm0sIGlkZW50KSAmJiAhaXNQcml2YXRlTmFtZSkg
eworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZygiVGhlIHVz
ZSBvZiAnIiwgaWRlbnQtPnN0cmluZygpLCAiJyBpcyBkaXNhbGxvd2VkIGluIGJ1aWx0aW4gZnVu
Y3Rpb25zLiIpOworICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPSzsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICAgICAgICAgIGlkZW50
ID0gbV92bS0+cHJvcGVydHlOYW1lcy0+Z2V0UHJpdmF0ZU5hbWUoKmlkZW50KTsKKyAgICAgICAg
ICAgIGVsc2UgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3
b3JkKQorICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAmbV92bS0+cHJvcGVydHlO
YW1lcy0+dW5kZWZpbmVkS2V5d29yZFByaXZhdGVOYW1lOworICAgICAgICAgICAgaWYgKCFpZGVu
dCkKKyAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9QUklWQVRFX05BTUVfRVJST1JUT0s7
CisgICAgICAgIH0KICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IGlkZW50OwogICAgIH0gZWxz
ZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gMDsKIAotICAgIGlmIChVTkxJS0VMWSgocmVt
YWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICEobGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25v
cmVSZXNlcnZlZFdvcmRzKSkpIHsKKyAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRv
a2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxhZ3MgJiBMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3Jk
cykpICYmICFpc1ByaXZhdGVOYW1lKSB7CiAgICAgICAgIEFTU0VSVChzaG91bGRDcmVhdGVJZGVu
dGlmaWVyKTsKICAgICAgICAgaWYgKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSB7CiAgICAg
ICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gbV92bS0+a2V5d29yZHMtPmdldEtleXdv
cmQoKmlkZW50KTsKQEAgLTgxNCw2ICs4NTEsMTAgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3Jl
YXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAK
ICAgICAgICAgICAgIHJldHVybiBrZXl3b3JkID09IFJFU0VSVkVEX0lGX1NUUklDVCAmJiAhc3Ry
aWN0TW9kZSA/IElERU5UIDoga2V5d29yZDsKICAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICBi
b29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJlbnQgPT0gJ0AnICYmIG1fcGFyc2luZ0J1aWx0aW5G
dW5jdGlvbjsKKyAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgc2hpZnQoKTsKIAogICAg
IGNvbnN0IFVDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50U291cmNlUHRyKCk7CiAgICAg
aW50IGlkZW50aWZpZXJMaW5lU3RhcnQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CkBAIC04
MjYsNiArODY3LDcgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxX
QVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAKICAgICB9CiAgICAgCiAgICAg
aWYgKFVOTElLRUxZKG1fY3VycmVudCA9PSAnXFwnKSkgeworICAgICAgICBBU1NFUlQoIWlzUHJp
dmF0ZU5hbWUpOwogICAgICAgICBzZXRPZmZzZXRGcm9tU291cmNlUHRyKGlkZW50aWZpZXJTdGFy
dCwgaWRlbnRpZmllckxpbmVTdGFydCk7CiAgICAgICAgIHJldHVybiBwYXJzZUlkZW50aWZpZXJT
bG93Q2FzZTxzaG91bGRDcmVhdGVJZGVudGlmaWVyPih0b2tlbkRhdGEsIGxleGVyRmxhZ3MsIHN0
cmljdE1vZGUpOwogICAgIH0KQEAgLTgzNywxOCArODc5LDI5IEBAIHRlbXBsYXRlIDxib29sIHNo
b3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNo
YXI+OjpwCiAKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IDA7CiAgICAgCi0gICAgaWYg
KHNob3VsZENyZWF0ZUlkZW50aWZpZXIpIHsKKyAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmll
ciB8fCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKICAgICAgICAgaW50IGlkZW50aWZpZXJM
ZW5ndGggPSBjdXJyZW50U291cmNlUHRyKCkgLSBpZGVudGlmaWVyU3RhcnQ7CiAgICAgICAgIGlm
IChpc0FsbDhCaXQpCiAgICAgICAgICAgICBpZGVudCA9IG1ha2VJZGVudGlmaWVyTENoYXJGcm9t
VUNoYXIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVuZ3RoKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgaWRlbnQgPSBtYWtlSWRlbnRpZmllcihpZGVudGlmaWVyU3RhcnQsIGlkZW50
aWZpZXJMZW5ndGgpOwotICAgICAgICAKKyAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5j
dGlvbikgeworICAgICAgICAgICAgaWYgKCFpc1NhZmVJZGVudGlmaWVyKCptX3ZtLCBpZGVudCkg
JiYgIWlzUHJpdmF0ZU5hbWUpIHsKKyAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9
IG1ha2VTdHJpbmcoIlRoZSB1c2Ugb2YgJyIsIGlkZW50LT5zdHJpbmcoKSwgIicgaXMgZGlzYWxs
b3dlZCBpbiBidWlsdGluIGZ1bmN0aW9ucy4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRVJS
T1JUT0s7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAg
ICAgICAgICAgICAgICBpZGVudCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPmdldFByaXZhdGVOYW1l
KCppZGVudCk7CisgICAgICAgICAgICBlbHNlIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlO
YW1lcy0+dW5kZWZpbmVkS2V5d29yZCkKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmlkZW50
ID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmRQcml2YXRlTmFtZTsKKyAg
ICAgICAgICAgIGlmICghaWRlbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSURfUFJJ
VkFURV9OQU1FX0VSUk9SVE9LOworICAgICAgICB9CiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQg
PSBpZGVudDsKICAgICB9IGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IDA7CiAgICAg
Ci0gICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIShsZXhl
ckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMpKSkgeworICAgIGlmIChVTkxJ
S0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICEobGV4ZXJGbGFncyAmIExleGVy
RmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsKICAgICAgICAg
QVNTRVJUKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpOwogICAgICAgICBpZiAocmVtYWluaW5nIDwg
bWF4VG9rZW5MZW5ndGgpIHsKICAgICAgICAgICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSBt
X3ZtLT5rZXl3b3Jkcy0+Z2V0S2V5d29yZCgqaWRlbnQpOwpAQCAtMTY1OCw2ICsxNzExLDcgQEAg
aW5OdW1iZXJBZnRlckRlY2ltYWxQb2ludDoKICAgICAgICAgQVNTRVJUKGlzSWRlbnRTdGFydCht
X2N1cnJlbnQpKTsKICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBDaGFyYWN0ZXJCYWNr
U2xhc2g6CisgICAgICAgIHBhcnNlSWRlbnQ6CiAgICAgICAgIGlmIChsZXhlckZsYWdzICYgTGV4
ZXhGbGFnc0RvbnRCdWlsZEtleXdvcmRzKQogICAgICAgICAgICAgdG9rZW4gPSBwYXJzZUlkZW50
aWZpZXI8ZmFsc2U+KHRva2VuRGF0YSwgbGV4ZXJGbGFncywgc3RyaWN0TW9kZSk7CiAgICAgICAg
IGVsc2UKQEAgLTE2NzAsNiArMTcyNCwxMSBAQCBpbk51bWJlckFmdGVyRGVjaW1hbFBvaW50Ogog
ICAgICAgICBtX3Rlcm1pbmF0b3IgPSB0cnVlOwogICAgICAgICBtX2xpbmVTdGFydCA9IG1fY29k
ZTsKICAgICAgICAgZ290byBzdGFydDsKKyAgICBjYXNlIENoYXJhY3RlclByaXZhdGVJZGVudGlm
aWVyU3RhcnQ6CisgICAgICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pCisgICAgICAg
ICAgICBnb3RvIHBhcnNlSWRlbnQ7CisKKyAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBD
aGFyYWN0ZXJJbnZhbGlkOgogICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IGludmFsaWRDaGFy
YWN0ZXJNZXNzYWdlKCk7CiAgICAgICAgIHRva2VuID0gRVJST1JUT0s7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0xleGVyLmgKaW5kZXggMjhjNjFiYTE5OGQyYzE1YTQ5YmIxODUyZWQzMGJlZmVi
ODkwNDAwOC4uYjg4NzNlOTk1MDI4NjQ0YmY4Y2JiM2Q0YzJkYTU2MmU5M2UwZThlNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaApAQCAtNzIsNyArNzIsNyBAQCBjbGFzcyBMZXhl
ciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKIHB1YmxpYzoKLSAgICBMZXhlcihW
TSopOworICAgIExleGVyKFZNKiwgSlNQYXJzZXJTdHJpY3RuZXNzKTsKICAgICB+TGV4ZXIoKTsK
IAogICAgIC8vIENoYXJhY3RlciBtYW5pcHVsYXRpb24gZnVuY3Rpb25zLgpAQCAtMjM4LDYgKzIz
OCw3IEBAIHByaXZhdGU6CiAgICAgSWRlbnRpZmllckFyZW5hKiBtX2FyZW5hOwogCiAgICAgVk0q
IG1fdm07CisgICAgYm9vbCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247CiB9OwogCiB0ZW1wbGF0
ZSA8PgpAQCAtMzM1LDYgKzMzNiwxMiBAQCBBTFdBWVNfSU5MSU5FIGNvbnN0IElkZW50aWZpZXIq
IExleGVyPFQ+OjptYWtlTENoYXJJZGVudGlmaWVyKGNvbnN0IFVDaGFyKiBjaGFyYQogICAgIHJl
dHVybiAmbV9hcmVuYS0+bWFrZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hhcihtX3ZtLCBjaGFyYWN0
ZXJzLCBsZW5ndGgpOwogfQogCisjaWYgQVNTRVJUX0RJU0FCTEVECitBTFdBWVNfSU5MSU5FIGJv
b2wgaXNTYWZlSWRlbnRpZmllcihWTSYsIGNvbnN0IElkZW50aWZpZXIqKSB7IHJldHVybiB0cnVl
OyB9CisjZWxzZQorYm9vbCBpc1NhZmVJZGVudGlmaWVyKFZNJiwgY29uc3QgSWRlbnRpZmllciop
OworI2VuZGlmCisKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogQUxXQVlTX0lOTElORSBKU1Rva2Vu
VHlwZSBMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rva2VuKiB0b2tlblJlY29yZCwg
dW5zaWduZWQgbGV4ZXJGbGFncywgYm9vbCBzdHJpY3RNb2RlKQogewpAQCAtMzcwLDEwICszNzcs
MTUgQEAgQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRp
ZmllcihKU1Rva2VuKiB0b2tlblJlY29yZCwgdW4KICAgICBBU1NFUlQoY3VycmVudE9mZnNldCgp
ID49IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKSk7CiAKICAgICAvLyBDcmVhdGUgdGhlIGlkZW50
aWZpZXIgaWYgbmVlZGVkCi0gICAgaWYgKGxleGVyRmxhZ3MgJiBMZXhleEZsYWdzRG9udEJ1aWxk
S2V5d29yZHMpCisgICAgaWYgKGxleGVyRmxhZ3MgJiBMZXhleEZsYWdzRG9udEJ1aWxkS2V5d29y
ZHMKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgICYmICFtX3BhcnNpbmdCdWlsdGluRnVu
Y3Rpb24KKyNlbmRpZgorICAgICAgICApCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAwOwog
ICAgIGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG1ha2VMQ2hhcklkZW50aWZpZXIo
c3RhcnQsIHB0ciAtIHN0YXJ0KTsKKwogICAgIHRva2VuTG9jYXRpb24tPmxpbmUgPSBtX2xpbmVO
dW1iZXI7CiAgICAgdG9rZW5Mb2NhdGlvbi0+bGluZVN0YXJ0T2Zmc2V0ID0gY3VycmVudExpbmVT
dGFydE9mZnNldCgpOwogICAgIHRva2VuTG9jYXRpb24tPnN0YXJ0T2Zmc2V0ID0gb2Zmc2V0RnJv
bVNvdXJjZVB0cihzdGFydCk7CkBAIC0zODEsNiArMzkzLDEzIEBAIEFMV0FZU19JTkxJTkUgSlNU
b2tlblR5cGUgTGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tlbiogdG9rZW5SZWNv
cmQsIHVuCiAgICAgQVNTRVJUKHRva2VuTG9jYXRpb24tPnN0YXJ0T2Zmc2V0ID49IHRva2VuTG9j
YXRpb24tPmxpbmVTdGFydE9mZnNldCk7CiAgICAgdG9rZW5SZWNvcmQtPm1fc3RhcnRQb3NpdGlv
biA9IHN0YXJ0UG9zaXRpb247CiAgICAgdG9rZW5SZWNvcmQtPm1fZW5kUG9zaXRpb24gPSBjdXJy
ZW50UG9zaXRpb24oKTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgaWYgKG1fcGFyc2luZ0J1
aWx0aW5GdW5jdGlvbikgeworICAgICAgICBpZiAoIWlzU2FmZUlkZW50aWZpZXIoKm1fdm0sIHRv
a2VuRGF0YS0+aWRlbnQpKQorICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LOworICAgIH0KKyNl
bmRpZgorCiAgICAgbV9sYXN0VG9rZW4gPSBJREVOVDsKICAgICByZXR1cm4gSURFTlQ7CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IGZjOWNjZDlmNmM1NzZj
MWFlZjU0N2YyMTFmZGQ1OTZmNDJlMDU4MDYuLmQ5NTJiYTZhOTRkMmY2YjQxODIxNTUwMDRkMGE5
NzA4NDI5YmQ3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0x
MzIsNiArMTMyLDEyIEBAIFBhc3NSZWZQdHI8UHJvZ3JhbU5vZGU+IFByb2dyYW1Ob2RlOjpjcmVh
dGUoVk0qIHZtLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0CiAgICAgcmV0dXJuIG5vZGUu
cmVsZWFzZSgpOwogfQogCisKK3ZvaWQgUHJvZ3JhbU5vZGU6OnNldENsb3NlZFZhcmlhYmxlcyhj
b25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmIGNsb3NlZFZhcmlhYmxlcykKK3sKKyAg
ICBtX2Nsb3NlZFZhcmlhYmxlcyA9IHN0ZDo6bW92ZShjbG9zZWRWYXJpYWJsZXMpOworfQorCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXZhbE5vZGUgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAogaW5saW5lIEV2YWxOb2RlOjpFdmFsTm9kZShWTSogdm0sIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBl
bmRMb2NhdGlvbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4s
IFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVy
U2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVh
dHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmgKaW5kZXggZDc3OWExNzhkOTU2ZmY5OWZkMGJlZDVkNWY0NTRhYTNlNmI1MDg3OS4u
ODE2ZmYwMDFhYmYwMzc2YzY0MmYxYTkzOGQwZTBhOWY1MjljYTZiYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTQzMSw2ICsxNDMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIGJvb2wgbmVlZHNBY3RpdmF0aW9uKCkgY29uc3QgeyByZXR1cm4gKGhhc0NhcHR1
cmVkVmFyaWFibGVzKCkpIHx8IChtX2ZlYXR1cmVzICYgKEV2YWxGZWF0dXJlIHwgV2l0aEZlYXR1
cmUgfCBDYXRjaEZlYXR1cmUpKTsgfQogICAgICAgICBib29sIGhhc0NhcHR1cmVkVmFyaWFibGVz
KCkgY29uc3QgeyByZXR1cm4gISFtX2NhcHR1cmVkVmFyaWFibGVzLnNpemUoKTsgfQogICAgICAg
ICBzaXplX3QgY2FwdHVyZWRWYXJpYWJsZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jYXB0dXJl
ZFZhcmlhYmxlcy5zaXplKCk7IH0KKyAgICAgICAgY29uc3QgSWRlbnRpZmllclNldCYgY2FwdHVy
ZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2NhcHR1cmVkVmFyaWFibGVzOyB9CiAgICAg
ICAgIGJvb2wgY2FwdHVyZXMoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIHsgcmV0dXJuIG1fY2Fw
dHVyZWRWYXJpYWJsZXMuY29udGFpbnMoaWRlbnQuaW1wbCgpKTsgfQogCiAgICAgICAgIFZhclN0
YWNrJiB2YXJTdGFjaygpIHsgcmV0dXJuIG1fdmFyU3RhY2s7IH0KQEAgLTE0NDYsNiArMTQ0Nyw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1l
bnQoKSBjb25zdDsKIAogICAgICAgICB2b2lkIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkZXN0aW5hdGlvbik7CisgICAgICAgIAorICAgICAg
ICB2b2lkIHNldENsb3NlZFZhcmlhYmxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+
PiYmKSB7IH0KIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgdm9pZCBzZXRTb3VyY2UoY29uc3Qg
U291cmNlQ29kZSYgc291cmNlKSB7IG1fc291cmNlID0gc291cmNlOyB9CkBAIC0xNDc1LDExICsx
NDc4LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNj
b3BlSXNGdW5jdGlvbiA9IGZhbHNlOwogCisgICAgICAgIHZvaWQgc2V0Q2xvc2VkVmFyaWFibGVz
KGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYpOworICAgICAgICBjb25zdCBWZWN0
b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYgY2xvc2VkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4g
bV9jbG9zZWRWYXJpYWJsZXM7IH0KICAgICBwcml2YXRlOgogICAgICAgICBQcm9ncmFtTm9kZShW
TSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
ZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVt
ZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBT
b3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICB2
aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKSBvdmVycmlkZTsKLQorICAgICAgICBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiBtX2Ns
b3NlZFZhcmlhYmxlczsKICAgICAgICAgdW5zaWduZWQgbV9zdGFydENvbHVtbjsKICAgICAgICAg
dW5zaWduZWQgbV9lbmRDb2x1bW47CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcAppbmRleCAyOTc2NjZlNzI2ZTQ1ZDA4M2VmMTM0OWRkZmZkZjM3ZWY4MDBkZjdh
Li41MGJlYzc5ZmUzOGFkZjhmM2EwNGY2YjQ2Y2JkMmE1Y2JmY2YyNDZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yMDQsOCArMjA0LDkgQEAgUGFyc2VyPExl
eGVyVHlwZT46OlBhcnNlcihWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rp
b25QYXJhbWV0ZXJzKgogICAgICwgbV9sYXN0SWRlbnRpZmllcigwKQogICAgICwgbV9sYXN0RnVu
Y3Rpb25OYW1lKG51bGxwdHIpCiAgICAgLCBtX3NvdXJjZUVsZW1lbnRzKDApCisgICAgLCBtX3Bh
cnNpbmdCdWlsdGluKHN0cmljdG5lc3MgPT0gSlNQYXJzZUJ1aWx0aW4pCiB7Ci0gICAgbV9sZXhl
ciA9IGFkb3B0UHRyKG5ldyBMZXhlclR5cGUodm0pKTsKKyAgICBtX2xleGVyID0gYWRvcHRQdHIo
bmV3IExleGVyVHlwZSh2bSwgc3RyaWN0bmVzcykpOwogICAgIG1fYXJlbmEgPSBtX3ZtLT5wYXJz
ZXJBcmVuYS5nZXQoKTsKICAgICBtX2xleGVyLT5zZXRDb2RlKHNvdXJjZSwgbV9hcmVuYSk7CiAg
ICAgbV90b2tlbi5tX2xvY2F0aW9uLmxpbmUgPSBzb3VyY2UuZmlyc3RMaW5lKCk7CkBAIC0yNTYs
NiArMjU3LDcgQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKCkKICAgICBJ
ZGVudGlmaWVyU2V0IGNhcHR1cmVkVmFyaWFibGVzOwogICAgIGJvb2wgbW9kaWZpZWRQYXJhbWV0
ZXIgPSBmYWxzZTsKICAgICBzY29wZS0+Z2V0Q2FwdHVyZWRWYXJpYWJsZXMoY2FwdHVyZWRWYXJp
YWJsZXMsIG1vZGlmaWVkUGFyYW1ldGVyKTsKKyAgICAKICAgICBDb2RlRmVhdHVyZXMgZmVhdHVy
ZXMgPSBjb250ZXh0LmZlYXR1cmVzKCk7CiAgICAgaWYgKHNjb3BlLT5zdHJpY3RNb2RlKCkpCiAg
ICAgICAgIGZlYXR1cmVzIHw9IFN0cmljdE1vZGVGZWF0dXJlOwpAQCAtMjYzLDIxICsyNjUsMzYg
QEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKCkKICAgICAgICAgZmVhdHVy
ZXMgfD0gU2hhZG93c0FyZ3VtZW50c0ZlYXR1cmU7CiAgICAgaWYgKG1vZGlmaWVkUGFyYW1ldGVy
KQogICAgICAgICBmZWF0dXJlcyB8PSBNb2RpZmllZFBhcmFtZXRlckZlYXR1cmU7Ci0KKyAgICAK
KyAgICBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiBjbG9zZWRWYXJpYWJsZXM7CisgICAgaWYg
KG1fcGFyc2luZ0J1aWx0aW4pIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWNhcHR1cmVkVmFy
aWFibGVzLnNpemUoKSk7CisgICAgICAgIElkZW50aWZpZXJTZXQgdXNlZFZhcmlhYmxlczsKKyAg
ICAgICAgc2NvcGUtPmdldFVzZWRWYXJpYWJsZXModXNlZFZhcmlhYmxlcyk7CisgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgdmFyaWFibGUgOiB1c2VkVmFyaWFibGVzKSB7CisgICAgICAgICAgICBp
ZiAoc2NvcGUtPmhhc0RlY2xhcmVkVmFyaWFibGUoSWRlbnRpZmllcihtX3ZtLCB2YXJpYWJsZS5n
ZXQoKSkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBpZiAoc2NvcGUtPmhhc0RlY2xhcmVkUGFyYW1ldGVyKElkZW50aWZpZXIobV92bSwgdmFy
aWFibGUuZ2V0KCkpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGNs
b3NlZFZhcmlhYmxlcy5hcHBlbmQodmFyaWFibGUpOworICAgICAgICB9CisgICAgfQogICAgIGRp
ZEZpbmlzaFBhcnNpbmcoc291cmNlRWxlbWVudHMsIGNvbnRleHQudmFyRGVjbGFyYXRpb25zKCks
IGNvbnRleHQuZnVuY0RlY2xhcmF0aW9ucygpLCBmZWF0dXJlcywKLSAgICAgICAgY29udGV4dC5u
dW1Db25zdGFudHMoKSwgY2FwdHVyZWRWYXJpYWJsZXMpOworICAgICAgICBjb250ZXh0Lm51bUNv
bnN0YW50cygpLCBjYXB0dXJlZFZhcmlhYmxlcywgc3RkOjptb3ZlKGNsb3NlZFZhcmlhYmxlcykp
OwogCiAgICAgcmV0dXJuIHBhcnNlRXJyb3I7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhl
clR5cGU+CiB2b2lkIFBhcnNlcjxMZXhlclR5cGU+OjpkaWRGaW5pc2hQYXJzaW5nKFNvdXJjZUVs
ZW1lbnRzKiBzb3VyY2VFbGVtZW50cywgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tz
OjpWYXJTdGFjaz4qIHZhclN0YWNrLCAKLSAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25T
dGFja3M6OkZ1bmN0aW9uU3RhY2s+KiBmdW5jU3RhY2ssIENvZGVGZWF0dXJlcyBmZWF0dXJlcywg
aW50IG51bUNvbnN0YW50cywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJzKQorICAgIFBhcnNl
ckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qIGZ1bmNTdGFjaywg
Q29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzLCBJZGVudGlmaWVyU2V0JiBj
YXB0dXJlZFZhcnMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYgY2xvc2VkVmFy
aWFibGVzKQogewogICAgIG1fc291cmNlRWxlbWVudHMgPSBzb3VyY2VFbGVtZW50czsKICAgICBt
X3ZhckRlY2xhcmF0aW9ucyA9IHZhclN0YWNrOwogICAgIG1fZnVuY0RlY2xhcmF0aW9ucyA9IGZ1
bmNTdGFjazsKICAgICBtX2NhcHR1cmVkVmFyaWFibGVzLnN3YXAoY2FwdHVyZWRWYXJzKTsKKyAg
ICBtX2Nsb3NlZFZhcmlhYmxlcyA9IGNsb3NlZFZhcmlhYmxlczsKICAgICBtX2ZlYXR1cmVzID0g
ZmVhdHVyZXM7CiAgICAgbV9udW1Db25zdGFudHMgPSBudW1Db25zdGFudHM7CiB9CkBAIC0yMzQ2
LDYgKzIzNjMsMTAgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4gdm9pZCBQYXJzZXI8
TGV4ZXJUeXBlPjo6cHJpbnRVbmV4cGVjdGVkVG9rZW5UZXh0KFcKICAgICBjYXNlIFJFU0VSVkVE
OgogICAgICAgICBvdXQucHJpbnQoIlVuZXhwZWN0ZWQgdXNlIG9mIHJlc2VydmVkIHdvcmQgJyIs
IGdldFRva2VuKCksICInIik7CiAgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgSU5WQUxJRF9Q
UklWQVRFX05BTUVfRVJST1JUT0s6CisgICAgICAgIG91dC5wcmludCgiSW52YWxpZCBwcml2YXRl
IG5hbWUgJyIsIGdldFRva2VuKCksICInIik7CisgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IAogICAgIGNhc2UgSURFTlQ6CiAgICAgICAgIG91dC5wcmludCgiVW5leHBlY3RlZCBpZGVudGlm
aWVyICciLCBnZXRUb2tlbigpLCAiJyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmgKaW5kZXggYjY5OGVmOTM2OGNiOGM4ZjE5N2NjZDAwMGFjYWE2ZGZiMTFiYTI0NC4uOTAzMzg1
MGM4Yzk3ZjU3ZTIxZGE1ZWVkYjAyZDA0NGY0Yzg5NzhlYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5oCkBAIC0yMyw2ICsyMyw3IEBACiAjaWZuZGVmIFBhcnNlcl9oCiAjZGVm
aW5lIFBhcnNlcl9oCiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUg
IkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkV4
ZWN1dGFibGUuaCIKQEAgLTI1OSw2ICsyNjAsMTAgQEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAg
cmV0dXJuIGlzVmFsaWRTdHJpY3RNb2RlID8gQmluZGluZ1N1Y2NlZWRlZCA6IFN0cmljdEJpbmRp
bmdGYWlsZWQ7CiAgICAgfQogCisgICAgdm9pZCBnZXRVc2VkVmFyaWFibGVzKElkZW50aWZpZXJT
ZXQmIHVzZWRWYXJpYWJsZXMpCisgICAgeworICAgICAgICB1c2VkVmFyaWFibGVzLnN3YXAobV91
c2VkVmFyaWFibGVzKTsKKyAgICB9CiAKICAgICB2b2lkIHVzZVZhcmlhYmxlKGNvbnN0IElkZW50
aWZpZXIqIGlkZW50LCBib29sIGlzRXZhbCkKICAgICB7CkBAIC00MTQsNiArNDE5LDcgQEAgcHVi
bGljOgogICAgIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImKTsKIAog
ICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKSBjb25zdCB7IHJl
dHVybiBtX2xleGVyLT5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7IH0KKyAgICBjb25zdCBW
ZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmIGNsb3NlZFZhcmlhYmxlcygpIHsgcmV0dXJuIHN0
ZDo6bW92ZShtX2Nsb3NlZFZhcmlhYmxlcyk7IH0KIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgQWxs
b3dJbk92ZXJyaWRlIHsKQEAgLTU0MCw3ICs1NDYsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBw
YXJzZUlubmVyKCk7CiAKICAgICB2b2lkIGRpZEZpbmlzaFBhcnNpbmcoU291cmNlRWxlbWVudHMq
LCBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrPiosIAotICAgICAg
ICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KiwgQ29k
ZUZlYXR1cmVzLCBpbnQsIElkZW50aWZpZXJTZXQmKTsKKyAgICAgICAgUGFyc2VyQXJlbmFEYXRh
PERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiosIENvZGVGZWF0dXJlcywgaW50LCBJ
ZGVudGlmaWVyU2V0JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJik7CiAKICAg
ICAvLyBVc2VkIHRvIGRldGVybWluZSB0eXBlIG9mIGVycm9yIHRvIHJlcG9ydC4KICAgICBib29s
IGlzRnVuY3Rpb25Cb2R5Tm9kZShTY29wZU5vZGUqKSB7IHJldHVybiBmYWxzZTsgfQpAQCAtODQw
LDkgKzg0NiwxMSBAQCBwcml2YXRlOgogICAgIGNvbnN0IElkZW50aWZpZXIqIG1fbGFzdEZ1bmN0
aW9uTmFtZTsKICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXJDYWNoZT4gbV9mdW5jdGlvbkNhY2hl
OwogICAgIFNvdXJjZUVsZW1lbnRzKiBtX3NvdXJjZUVsZW1lbnRzOworICAgIGJvb2wgbV9wYXJz
aW5nQnVpbHRpbjsKICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OlZhclN0
YWNrPiogbV92YXJEZWNsYXJhdGlvbnM7CiAgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9u
U3RhY2tzOjpGdW5jdGlvblN0YWNrPiogbV9mdW5jRGVjbGFyYXRpb25zOwogICAgIElkZW50aWZp
ZXJTZXQgbV9jYXB0dXJlZFZhcmlhYmxlczsKKyAgICBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+
PiBtX2Nsb3NlZFZhcmlhYmxlczsKICAgICBDb2RlRmVhdHVyZXMgbV9mZWF0dXJlczsKICAgICBp
bnQgbV9udW1Db25zdGFudHM7CiAgICAgCkBAIC05NTcsNiArOTY1LDEwIEBAIFBhc3NSZWZQdHI8
UGFyc2VkTm9kZT4gcGFyc2UoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0
aW9uUGFyYW1ldGVyCiAgICAgICAgIFJlZlB0cjxQYXJzZWROb2RlPiByZXN1bHQgPSBwYXJzZXIu
cGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IpOwogICAgICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZSkKICAgICAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2Vy
LnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKKyAgICAgICAgaWYgKHN0cmljdG5lc3MgPT0g
SlNQYXJzZUJ1aWx0aW4pIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7Cisg
ICAgICAgICAgICByZXN1bHQtPnNldENsb3NlZFZhcmlhYmxlcyhzdGQ6Om1vdmUocGFyc2VyLmNs
b3NlZFZhcmlhYmxlcygpKSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxl
YXNlKCk7CiAgICAgfQogICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNl
LCBwYXJhbWV0ZXJzLCBuYW1lLCBzdHJpY3RuZXNzLCBwYXJzZXJNb2RlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAppbmRleCA0ZTlhMTdjZDIxY2EzNDE0NmJi
ZDQ4MTU2YTM3MmNkNDA0ZGVmNjBjLi5mN2E3NWJmN2MzNzg1N2U0NGI2ZDVkNzFmNDUyOWJiMWFj
MWNmNWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1v
ZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCkBA
IC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1lbnVtIEpTUGFyc2VyU3RyaWN0
bmVzcyB7IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VTdHJpY3QgfTsKK2VudW0gSlNQYXJzZXJTdHJp
Y3RuZXNzIHsgSlNQYXJzZU5vcm1hbCwgSlNQYXJzZUJ1aWx0aW4sIEpTUGFyc2VTdHJpY3QgfTsK
IGVudW0gSlNQYXJzZXJNb2RlIHsgSlNQYXJzZVByb2dyYW1Db2RlLCBKU1BhcnNlRnVuY3Rpb25D
b2RlIH07CiAKIGVudW0gUHJvZmlsZXJNb2RlIHsgUHJvZmlsZXJPZmYsIFByb2ZpbGVyT24gfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCmluZGV4IDgyYTI2
NjM5YTc5MjIwYTA4NDQ1NmI0OGYzMjg1MmQxNDNjNzM5ZDAuLjhjODdhZDlmYWRiZGM0YWYzOWFj
OTlkYjJkODQ0NWUxM2ZmZmQzNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyVG9rZW5zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJUb2tlbnMuaApAQCAtMTQ5LDYgKzE0OSw3IEBAIGVudW0gSlNUb2tlblR5cGUgewogICAg
IElOVkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LID0gNyB8IEVycm9yVG9rZW5GbGFnLAog
ICAgIFVOVEVSTUlOQVRFRF9TVFJJTkdfTElURVJBTF9FUlJPUlRPSyA9IDggfCBFcnJvclRva2Vu
RmxhZyB8IFVudGVybWluYXRlZEVycm9yVG9rZW5GbGFnLAogICAgIElOVkFMSURfU1RSSU5HX0xJ
VEVSQUxfRVJST1JUT0sgPSA5IHwgRXJyb3JUb2tlbkZsYWcsCisgICAgSU5WQUxJRF9QUklWQVRF
X05BTUVfRVJST1JUT0sgPSAxMCB8IEVycm9yVG9rZW5GbGFnCiB9OwogCiBzdHJ1Y3QgSlNUZXh0
UG9zaXRpb24gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJn
TGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmNwcAppbmRl
eCBlMTMxMDRkZjU5MjJkMDc3NjI1N2QwNWNiNWU4NzA1MzdkMjE0MjhhLi4yNGMwNmJiYjFjMmMz
NGI5ZGE1ZWY4NGIyNTVjOTkwMGRhZjg1OTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcmdMaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcmdMaXN0LmNwcApAQCAtMjIsNyArMjIsNyBAQAogI2luY2x1ZGUgIkFyZ0xpc3QuaCIK
IAogI2luY2x1ZGUgIkhlYXBSb290VmlzaXRvci5oIgotI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIK
KyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAj
aW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bcmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJndW1lbnRzLmNwcAppbmRleCA4ZmQxOTVjYjliNWY3ZWY1YmYzZDJmZDkzMzQyYjAxMDI3MjVm
YWYxLi40ZmJhYzY4ODYzNDg2MTcxNjQ5YTMzNGQ2MWI1ZGNjMzgxNGRkNTU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbmNsdWRlICJBcmd1bWVudHMuaCIKIAogI2luY2x1ZGUgIkNhbGxGcmFtZUlubGluZXMuaCIK
KyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5o
IgogI2luY2x1ZGUgIkpTQXJndW1lbnRzSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9u
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCmluZGV4IDE4ZjM4
OTE3MTM4NTIzNjJjN2E3NWEzMDUzYjQ2MzE0MTdiZWI4MWIuLmYxNmZkM2RlNDA1NTk3MGJhOWQ5
YzZmMGFlNjMxOGYyMjA0YjY1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
Z3VtZW50cy5oCkBAIC0yNSw2ICsyNSw3IEBACiAjZGVmaW5lIEFyZ3VtZW50c19oCiAKICNpbmNs
dWRlICJDb2RlT3JpZ2luLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNs
dWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgog
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
YWZiNTk3OTBjYjAwOTk4OWJiN2I0Mjg2M2U5MTgyMzM1NzZiOGFhYy4uOTFjYWNkZmE4NTdlYjY5
Mzc2YTMwODFhOGM3MDJhYzljMjE3Y2E3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAK
QEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJBcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9y
LmgiCiAKICNpbmNsdWRlICJBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5oIgorI2luY2x1ZGUg
IkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiSlNBcmd1bWVudHNJdGVyYXRvci5oIgog
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRl
cmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1l
bnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCmluZGV4IGRkMDg5NGYxNGEwMjFkNWYxMjY1OGFjYjAx
ZTcyMWZjZDZkMzQ4Y2MuLjViNGFlODcxNmIwNTUzYmU0NjIzOTU1ZTk5ZTFiNDNlYmYxOGZlMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJh
dG9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1
bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTI2LDcgKzI2LDkgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5oIgogCisjaW5j
bHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJKU0FyZ3VtZW50c0l0ZXJhdG9y
LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApp
bmRleCAyN2FjNmQ0OGE3MWY3OTU1MDJhMTBjZWE2NDc4NjU0MTM1YTQ2M2EwLi42ZGM3YmU1Njk2
OWRlNjdmNjIxMDdiYjNhNTFhMzA4ZmEzYmE3NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNT
dHJpbmdCdWlsZGVyLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNTdHJpbmdKb2luZXIuaCIKICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJPYmplY3RQ
cm90b3R5cGUuaCIKQEAgLTU2LDcgKzU3LDYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU29ydChFeGVjU3RhdGUqKTsKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU3BsaWNlKEV4
ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b0Z1bmNVblNoaWZ0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b0Z1bmNFdmVyeShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRm9yRWFjaChFeGVjU3RhdGUqKTsKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU29tZShFeGVj
U3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9G
dW5jSW5kZXhPZihFeGVjU3RhdGUqKTsKQEAgLTk1NCw2OSArOTU0LDYgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY01hcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHRBcnJheSk7CiB9CiAKLS8vIERvY3VtZW50YXRp
b24gZm9yIHRoZXNlIHRocmVlIGlzIGF2YWlsYWJsZSBhdDoKLS8vIGh0dHA6Ly9kZXZlbG9wZXIt
dGVzdC5tb3ppbGxhLm9yZy9lbi9kb2NzL0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9i
amVjdHM6QXJyYXk6ZXZlcnkKLS8vIGh0dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3ppbGxhLm9yZy9l
bi9kb2NzL0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6QXJyYXk6Zm9yRWFj
aAotLy8gaHR0cDovL2RldmVsb3Blci10ZXN0Lm1vemlsbGEub3JnL2VuL2RvY3MvQ29yZV9KYXZh
U2NyaXB0XzEuNV9SZWZlcmVuY2U6T2JqZWN0czpBcnJheTpzb21lCi0KLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNFdmVyeShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0g
ICAgSlNPYmplY3QqIHRoaXNPYmogPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMs
IFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNP
YmotPmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKS50b1VJbnQzMihleGVj
KTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KLSAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gZXhlYy0+
YXJndW1lbnQoMCk7Ci0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5
cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwotICAgIGlmIChjYWxsVHlwZSA9
PSBDYWxsVHlwZU5vbmUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwot
Ci0gICAgSlNWYWx1ZSBhcHBseVRoaXMgPSBleGVjLT5hcmd1bWVudCgxKTsKLQotICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNCb29sZWFuKHRydWUpOwotCi0gICAgdW5zaWduZWQgayA9IDA7Ci0gICAg
aWYgKGNhbGxUeXBlID09IENhbGxUeXBlSlMgJiYgaXNKU0FycmF5KHRoaXNPYmopKSB7Ci0gICAg
ICAgIEpTRnVuY3Rpb24qIGYgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGZ1bmN0aW9uKTsKLSAgICAg
ICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KHRoaXNPYmopOwotICAgICAgICBDYWNoZWRDYWxs
IGNhY2hlZENhbGwoZXhlYywgZiwgMyk7Ci0gICAgICAgIGZvciAoOyBrIDwgbGVuZ3RoICYmICFl
eGVjLT5oYWRFeGNlcHRpb24oKTsgKytrKSB7Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWFy
cmF5LT5jYW5HZXRJbmRleFF1aWNrbHkoaykpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldFRoaXMoYXBwbHlUaGlzKTsKLSAg
ICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoMCwgYXJyYXktPmdldEluZGV4UXVpY2ts
eShrKSk7Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDEsIGpzTnVtYmVyKGsp
KTsKLSAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoMiwgdGhpc09iaik7Ci0gICAg
ICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhY2hlZENhbGwuY2FsbCgpOwotICAgICAgICAgICAg
aWYgKCFyZXN1bHQudG9Cb29sZWFuKGV4ZWMpKQotICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZm9y
ICg7IGsgPCBsZW5ndGggJiYgIWV4ZWMtPmhhZEV4Y2VwdGlvbigpOyArK2spIHsKLSAgICAgICAg
UHJvcGVydHlTbG90IHNsb3QodGhpc09iaik7Ci0gICAgICAgIGlmICghdGhpc09iai0+Z2V0UHJv
cGVydHlTbG90KGV4ZWMsIGssIHNsb3QpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgZWFjaEFyZ3VtZW50czsKLSAgICAgICAgZWFjaEFyZ3Vt
ZW50cy5hcHBlbmQoc2xvdC5nZXRWYWx1ZShleGVjLCBrKSk7Ci0gICAgICAgIGVhY2hBcmd1bWVu
dHMuYXBwZW5kKGpzTnVtYmVyKGspKTsKLSAgICAgICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQodGhp
c09iaik7Ci0KLSAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQotICAgICAgICBib29sIHBy
ZWRpY2F0ZVJlc3VsdCA9IGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwg
YXBwbHlUaGlzLCBlYWNoQXJndW1lbnRzKS50b0Jvb2xlYW4oZXhlYyk7Ci0gICAgICAgIGlmICgh
cHJlZGljYXRlUmVzdWx0KSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBqc0Jvb2xlYW4oZmFsc2Up
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci19Ci0KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlQcm90b0Z1bmNGb3JFYWNoKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU09iamVjdCog
dGhpc09iaiA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSku
dG9PYmplY3QoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hl
LmNwcAppbmRleCA1MTBlMzgzZmFlNTc1YWFkYTgxNzZjMDQ0MWVlNzI1YjQzYTRjNzMyLi5kMzA0
ODc3ZmU5Y2RlMWMwOTE5ZmQ0NTk1ZjgxMWVjYWJjZTc3Mjc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTE0NCwyNCArMTQ0LDI2IEBAIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZy
b21HbG9iYWxDb2RlKFZNJiB2CiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZTsKICAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFt
Tm9kZT4oJnZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIoKSwgSlNQYXJzZU5vcm1hbCwgSlNQYXJz
ZVByb2dyYW1Db2RlLCBlcnJvciwgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwogICAgIGlm
ICghcHJvZ3JhbSkgewotICAgICAgICBBU1NFUlQoZXJyb3IubV90eXBlICE9IFBhcnNlckVycm9y
OjpFcnJvck5vbmUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChlcnJvci5tX3R5cGUgIT0gUGFy
c2VyRXJyb3I6OkVycm9yTm9uZSk7CiAgICAgICAgIG1fc291cmNlQ29kZS5yZW1vdmUoYWRkUmVz
dWx0Lml0ZXJhdG9yKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgICAgLy8gVGhpcyBm
dW5jdGlvbiBhc3N1bWVzIGFuIGlucHV0IHN0cmluZyB0aGF0IHdvdWxkIHJlc3VsdCBpbiBhIHNp
bmdsZSBhbm9ueW1vdXMgZnVuY3Rpb24gZXhwcmVzc2lvbi4KICAgICBTdGF0ZW1lbnROb2RlKiBl
eHByU3RhdGVtZW50ID0gcHJvZ3JhbS0+c2luZ2xlU3RhdGVtZW50KCk7Ci0gICAgQVNTRVJUKGV4
cHJTdGF0ZW1lbnQpOwotICAgIEFTU0VSVChleHByU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQo
KSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudCk7CisgICAgUkVMRUFTRV9BU1NF
UlQoZXhwclN0YXRlbWVudC0+aXNFeHByU3RhdGVtZW50KCkpOwogICAgIEV4cHJlc3Npb25Ob2Rl
KiBmdW5jRXhwciA9IHN0YXRpY19jYXN0PEV4cHJTdGF0ZW1lbnROb2RlKj4oZXhwclN0YXRlbWVu
dCktPmV4cHIoKTsKLSAgICBBU1NFUlQoZnVuY0V4cHIpOworICAgIFJFTEVBU0VfQVNTRVJUKGZ1
bmNFeHByKTsKICAgICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwci0+aXNGdW5jRXhwck5vZGUoKSk7
CiAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+
KGZ1bmNFeHByKS0+Ym9keSgpOworICAgIFJFTEVBU0VfQVNTRVJUKCFwcm9ncmFtLT5oYXNDYXB0
dXJlZFZhcmlhYmxlcygpKTsKKyAgICAKICAgICBib2R5LT5zZXRFbmRQb3NpdGlvbihwb3NpdGlv
bkJlZm9yZUxhc3ROZXdsaW5lKTsKLSAgICBBU1NFUlQoYm9keSk7Ci0gICAgQVNTRVJUKGJvZHkt
PmlkZW50KCkuaXNOdWxsKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGJvZHkpOworICAgIFJFTEVB
U0VfQVNTRVJUKGJvZHktPmlkZW50KCkuaXNOdWxsKCkpOwogCi0gICAgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIGJvZHksIHRydWUpOworICAgIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBib2R5LCB0cnVlLCBVbmxpbmtlZE5vcm1hbEZ1bmN0
aW9uKTsKICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPm1fbmFtZVZhbHVlLnNldCh2bSwgZnVuY3Rp
b25FeGVjdXRhYmxlLCBqc1N0cmluZygmdm0sIG5hbWUuc3RyaW5nKCkpKTsKIAogICAgIGFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUgPSBTb3VyY2VDb2RlVmFsdWUodm0sIGZ1bmN0aW9uRXhlY3V0
YWJsZSwgbV9zb3VyY2VDb2RlLmFnZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcAppbmRleCAzZjVjNjQ1YzA5OGQ1MjdmYzBj
NzI1OWU5NDQ3ZWZiZTg4NjhhMjljLi4yZmMyYjcyN2FmY2VlZTFlYzJjNjI1ZGU1Njc1YjNiZTFj
ZjYwZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuY3BwCkBAIC0yNyw3ICsyNywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2Rl
ZmluZSBJTklUSUFMSVpFX1BST1BFUlRZX05BTUUobmFtZSkgLCBuYW1lKHZtLCAjbmFtZSkKICNk
ZWZpbmUgSU5JVElBTElaRV9LRVlXT1JEKG5hbWUpICwgbmFtZSMjS2V5d29yZCh2bSwgI25hbWUp
Ci0jZGVmaW5lIElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKG5hbWUpICwgbmFtZSMjUHJpdmF0ZU5h
bWUoSWRlbnRpZmllcjo6ZnJvbShQcml2YXRlTmFtZSgpKSkKKyNkZWZpbmUgSU5JVElBTElaRV9Q
UklWQVRFX05BTUUobmFtZSkgXAorICAgICwgbmFtZSMjUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6
ZnJvbShQcml2YXRlTmFtZSgpKSkgXAorICAgICwgbV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIo
bmFtZSwgbmFtZSMjUHJpdmF0ZU5hbWUpIFwKKwogCiBDb21tb25JZGVudGlmaWVyczo6Q29tbW9u
SWRlbnRpZmllcnMoVk0qIHZtKQogICAgIDogbnVsbElkZW50aWZpZXIoKQpAQCAtMzgsOCArNDEs
MjYgQEAgQ29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZNKiB2bSkKICAgICAs
IGhhc05leHRJZGVudGlmaWVyKHZtLCAiaGFzTmV4dCIpCiAgICAgSlNDX0NPTU1PTl9JREVOVElG
SUVSU19FQUNIX0tFWVdPUkQoSU5JVElBTElaRV9LRVlXT1JEKQogICAgIEpTQ19DT01NT05fSURF
TlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRSkKKyAg
ICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoSU5JVElBTElaRV9QUk9QRVJUWV9O
QU1FKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05B
TUUoSU5JVElBTElaRV9QUklWQVRFX05BTUUpCiB7CiB9CiAKK2NvbnN0IElkZW50aWZpZXIqIENv
bW1vbklkZW50aWZpZXJzOjpnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkg
Y29uc3QKK3sKKyNkZWZpbmUgUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKG5hbWUpIGlm
IChtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpci5maXJzdCA9PSBpZGVudCkgcmV0dXJuICZtXyMj
bmFtZSMjUHVibGljU3RyaW5nUGFpci5zZWNvbmQ7CisgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lE
RU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShSRVRVUk5fSUZfUFJJVkFURV9OQU1FX01BVENI
RVMpCisjdW5kZWYgUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTCisgICAgcmV0dXJuIDA7
Cit9CisKK0lkZW50aWZpZXIgQ29tbW9uSWRlbnRpZmllcnM6OmdldFB1YmxpY05hbWUoY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQpIGNvbnN0Cit7CisjZGVmaW5lIFJFVFVSTl9JRl9QUklWQVRFX05B
TUVfTUFUQ0hFUyhuYW1lKSBpZiAobV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuc2Vjb25kID09
IGlkZW50KSByZXR1cm4gbV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuZmlyc3Q7CisgICAgSlND
X0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShSRVRVUk5fSUZf
UFJJVkFURV9OQU1FX01BVENIRVMpCisjdW5kZWYgUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRD
SEVTCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZW1wdHlJ
ZGVudGlmaWVyOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IGU4ZjllZDgyYmM3OTQ2
MjAzODI2NmIzMDIwNzgyMjQ3YjFmYTI3YTMuLjkyNGQzNmFjNjkxMzUwMzU3Y2IzODJiMWVmM2I0
MGEwYTA4YzBhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaApAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBDb21tb25JZGVudGlm
aWVyc19oCiAKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMu
aCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogLy8gTWFya2VkQXJndW1lbnRCdWZm
ZXIgb2YgcHJvcGVydHkgbmFtZXMsIHBhc3NlZCB0byBhIG1hY3JvIHNvIHdlIGNhbiBkbyBzZXQg
dGhlbSB1cCB2YXJpb3VzCkBAIC0xMzMsOCArMTM0LDEwIEBACiAgICAgbWFjcm8ob3NyRXhpdHMp
IFwKICAgICBtYWNybyhwYXJzZSkgXAogICAgIG1hY3JvKHByb2ZpbGVkQnl0ZWNvZGVzKSBcCisg
ICAgbWFjcm8ocHJvbWlzZSkgXAogICAgIG1hY3JvKHByb3BlcnR5SXNFbnVtZXJhYmxlKSBcCiAg
ICAgbWFjcm8ocHJvdG90eXBlKSBcCisgICAgbWFjcm8ocmVzb2x2ZSkgXAogICAgIG1hY3JvKHNl
dCkgXAogICAgIG1hY3JvKHNpemUpIFwKICAgICBtYWNybyhzbGljZSkgXApAQCAtMTU1LDcgKzE1
OCwxNCBAQAogICAgIG1hY3JvKHZhbHVlcykgXAogICAgIG1hY3JvKHZhbHVlT2YpIFwKICAgICBt
YWNybyh3aW5kb3cpIFwKLSAgICBtYWNybyh3cml0YWJsZSkKKyAgICBtYWNybyh3cml0YWJsZSkg
XAorICAgIG1hY3JvKGl0ZXJhdG9yKSBcCisgICAgbWFjcm8oaXRlcmF0b3JOZXh0KSBcCisgICAg
bWFjcm8ocmVqZWN0KSBcCisgICAgbWFjcm8oZnVsZmlsbG1lbnRIYW5kbGVyKSBcCisgICAgbWFj
cm8ocmVqZWN0aW9uSGFuZGxlcikgXAorICAgIG1hY3JvKGRlZmVycmVkKSBcCisgICAgbWFjcm8o
Y291bnRkb3duSG9sZGVyKSBcCiAKICNkZWZpbmUgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNI
X0tFWVdPUkQobWFjcm8pIFwKICAgICBtYWNybyhicmVhaykgXApAQCAtMjAzLDcgKzIxMyw3IEBA
CiAgICAgbWFjcm8odm9pZCkgXAogICAgIG1hY3JvKHdoaWxlKSBcCiAgICAgbWFjcm8od2l0aCkg
XAotICAgIG1hY3JvKHlpZWxkKQorICAgIG1hY3JvKHlpZWxkKSBcCiAKICNkZWZpbmUgSlNDX0NP
TU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShtYWNybykgXAogICAg
IG1hY3JvKGl0ZXJhdG9yKSBcCkBAIC0yMTYsNyArMjI2LDEyIEBACiAgICAgbWFjcm8oaW5kZXgp
IFwKICAgICBtYWNybyh2YWx1ZXMpIFwKICAgICBtYWNybyhkZWZlcnJlZCkgXAotICAgIG1hY3Jv
KGNvdW50ZG93bkhvbGRlcikKKyAgICBtYWNybyhjb3VudGRvd25Ib2xkZXIpIFwKKyAgICBtYWNy
byhPYmplY3QpIFwKKyAgICBtYWNybyhUeXBlRXJyb3IpIFwKKyAgICBtYWNybyh1bmRlZmluZWRL
ZXl3b3JkKSBcCisgICAgbWFjcm8oY2FsbCkgXAorICAgIG1hY3JvKGFwcGx5KQogCiBuYW1lc3Bh
Y2UgSlNDIHsKIApAQCAtMjQwLDExICsyNTUsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IAogI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFMKG5h
bWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZTsKICAgICAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVS
U19FQUNIX1BST1BFUlRZX05BTUUoSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJUWV9OQU1F
X0dMT0JBTCkKKyAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKEpTQ19J
REVOVElGSUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwpCiAjdW5kZWYgSlNDX0lERU5U
SUZJRVJfREVDTEFSRV9QUk9QRVJUWV9OQU1FX0dMT0JBTAogCi0jZGVmaW5lIEpTQ19JREVOVElG
SUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTChuYW1lKSBjb25zdCBJZGVu
dGlmaWVyIG5hbWUjI1ByaXZhdGVOYW1lOworI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJF
X1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwobmFtZSkgY29uc3QgSWRlbnRpZmllciBuYW1l
IyNQcml2YXRlTmFtZTsgY29uc3Qgc3RkOjpwYWlyPElkZW50aWZpZXIsIElkZW50aWZpZXI+IG1f
IyNuYW1lIyNQdWJsaWNTdHJpbmdQYWlyOwogICAgICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURF
TlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFU
RV9QUk9QRVJUWV9OQU1FX0dMT0JBTCkKICN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BS
SVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwKKyAgICAgICAgCisgICAgICAgIGNvbnN0IElkZW50
aWZpZXIqIGdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKKyAgICAgICAg
SWRlbnRpZmllciBnZXRQdWJsaWNOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKICAgICB9
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDA3NTg3NWZiMjMxNmE1NTU3MDUwYTY2OTBj
ZDBmOTg4MjQ4NGY1ZjMuLjVhZjkwODc1NGU3NDdmOGNhZTBjZDA0YWY4ZDQ5MTUwMDQ2OGMyYTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVFN0
dWJzLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5o
IgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkpTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAKaW5kZXggNTUzMzRiZTJm
OTgwYTk4ZjdmZWE0MmEwNWJlMGYyMGMwMTlmZjBkZC4uMTZlYmFkMTBlNGU0MmI2Yjc4NWU5Nzhk
MzhlODcwZTNiNWE2YzQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAKQEAgLTI5LDYgKzI5LDcg
QEAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNs
dWRlICJKSVRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNp
bmNsdWRlICJMTEludENvbW1vbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIENvbW1v
blNsb3dQYXRocyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGNlcHRpb25IZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2Vw
dGlvbkhlbHBlcnMuY3BwCmluZGV4IDA1ZTExZTBiODBhMzQzMGFlYWIyMmIwMjIyYTIxMmY0YThl
MmM0OWIuLjM2NGNjNzE2NjYwOGI1MDA3ZDQ3N2Q4NzM5MThhNWQ2NGIxNjg2NTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBA
IC04MSw2ICs4MSwxMSBAQCBKU09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKIEpTT2JqZWN0KiBjcmVhdGVVbmRlZmluZWRWYXJp
YWJsZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7Cisg
ICAgCisgICAgaWYgKGlkZW50LmltcGwoKS0+aXNFbXB0eVVuaXF1ZSgpKSB7CisgICAgICAgIFN0
cmluZyBtZXNzYWdlKG1ha2VTdHJpbmcoIkNhbid0IGZpbmQgcHJpdmF0ZSB2YXJpYWJsZTogQCIs
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZXRQdWJsaWNOYW1lKGlkZW50KS5zdHJpbmcoKSkpOwor
ICAgICAgICByZXR1cm4gY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgbWVzc2FnZSk7CisgICAg
fQogICAgIFN0cmluZyBtZXNzYWdlKG1ha2VTdHJpbmcoIkNhbid0IGZpbmQgdmFyaWFibGU6ICIs
IGlkZW50LnN0cmluZygpKSk7CiAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMs
IG1lc3NhZ2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5o
CmluZGV4IDE5ODk3NmJiM2ZlNmU2ZTkxMTc5ODEyZDFjYWY5YjhiZjliZmQwYmIuLmNmMGU3NTNh
N2M1ZjU0NDY3YjY0ZDhlMmE5YjNmYmEyNzE1MDAwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTQ4NCw3ICs0ODQsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGNsZWFyQ29kZSgpOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8o
KSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2
YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1
dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9u
KCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UpOyB9CiAKICAgICB1
bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+
bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSB7
IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7
IH0KQEAgLTU0MCw3ICs1NDAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyQ29kZSgpOwog
Ci0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVj
dXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCks
IGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyBy
ZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3Ry
aWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IFNjcmlwdEV4ZWN1dGFibGU7CkBAIC02MjgsNyArNjI4LDggQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2NrRm9yKGtpbmQpOwogICAgIH0KLSAgICAgICAg
CisKKyAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtl
ZEV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVy
JiBuYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWUoKTsgfQogICAgIGNv
bnN0IElkZW50aWZpZXImIGluZmVycmVkTmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRh
YmxlLT5pbmZlcnJlZE5hbWUoKTsgfQogICAgIEpTU3RyaW5nKiBuYW1lVmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZVZhbHVlKCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAppbmRleCBj
MWIwOGFmMmQ4MThkYWU1N2UxYjAwZmRhMTczYTgxNjEzNzUyOWI1Li4xMjQ5MGM0MGYzMzQxN2Vj
YTkyMzg1MGEwZGM2NjJkYmJjZDQwZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC0yMiwxMiArMjIsMTMgQEAKICNp
bmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgogCiAjaW5jbHVkZSAiQXJndW1lbnRzLmgiCisj
aW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAi
SlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
U3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdCdWlsZGVyLmgiCi0jaW5jbHVkZSAiSW50ZXJw
cmV0ZXIuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJMZXhlci5o
IgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIApAQCAtMTA4LDcgKzEwOSw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CiAg
ICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0cyhKU0Z1bmN0aW9uOjppbmZvKCkpKSB7CiAgICAgICAg
IEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPih0aGlzVmFsdWUpOwot
ICAgICAgICBpZiAoZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAgIGlmIChmdW5j
dGlvbi0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiZnVuY3Rpb24gIiwgZnVu
Y3Rpb24tPm5hbWUoZXhlYyksICIoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKTsKICAgICAg
ICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gZnVuY3Rpb24tPmpzRXhlY3V0YWJs
ZSgpOwogICAgICAgICBTdHJpbmcgc291cmNlU3RyaW5nID0gZXhlY3V0YWJsZS0+c291cmNlKCku
dG9TdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRp
b24uY3BwCmluZGV4IDcyZWQxYzcxMjQwNjExNjhiMGFkZGQzMTE2Zjc1NWExMTdiOGZiOTAuLmIz
NzQ5NDMwOTllMjE1NWEzOTc3MTMzMTM0NzAyYzJhMjRhY2M4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcApAQCAtNTgsNyArNTgsNyBAQCB2
b2lkIEpTQWN0aXZhdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogCiBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlR2V0KFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICBTeW1i
b2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFt
ZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJs
ZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoZW50cnkuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzIsNyArNzIsNyBAQCBpbmxpbmUgYm9v
bCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdAogCiBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlR2V0
KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRv
cikKIHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5l
R2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlRW50cnkgZW50
cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBp
ZiAoZW50cnkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtODksNyArODks
NyBAQCBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0KEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TgogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFw
OjpoZWFwKHRoaXMpKTsKICAgICAKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9s
VGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJv
bFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1l
LnVpZCgpKTsKICAgICBpZiAoZW50cnkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAoZW50cnkuaXNSZWFkT25seSgpKSB7CkBAIC0xMzYsNyArMTM2LDcgQEAgaW5saW5l
IGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKFZNJiB2bSwg
UHJvcGVydHlOYW1lIHByb3AKICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiByZWc7CiAg
ICAgewogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZSgpLT5t
X2xvY2spOwotICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9s
VGFibGUoKS0+ZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgICAg
ICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUoKS0+ZmluZChs
b2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgICAgIGlmIChpdGVyID09IHN5bWJvbFRh
YmxlKCktPmVuZChsb2NrZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBT
eW1ib2xUYWJsZUVudHJ5JiBlbnRyeSA9IGl0ZXItPnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcAppbmRleCAyZmNm
ODgxNWMwNTY4MDU4MTJhNzk5MWE1ZmYwNjNkNjg3Mzk3MTY0Li45YTkyNTgzYWEwZWM5MGRiYjMy
OGVjZDUwZGMzMTM5YWVmMDI3M2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2lu
Y2x1ZGUgIkpTQXJndW1lbnRzSXRlcmF0b3IuaCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgor
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCmluZGV4IDkwMDdiNWY3ZDNmMTAz
YjFkMjFiMWEzNjVhMjZjMjE1YzMyYjRkMjguLmJhMGEyZDM4ZTljNTNlMTU5MzdkNDZhODk1MWE4
YzhjNDUwNzkyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3Bw
CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIkdl
dHRlclNldHRlci5oIgogI2luY2x1ZGUgIkluZGV4aW5nSGVhZGVySW5saW5lcy5oIgorI2luY2x1
ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAj
aW5jbHVkZSAiUmVqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL0FWTFRyZWUuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3BwCmluZGV4IGQ1MDZj
NGViZDI2MjBlZmQ3MDc5M2E4NzNkMDg1MmZiZDk3ODI4NTkuLmNmMzcwOTdlYzBjNjkyNWE4Njdi
OGMwMTBjMGVmYzQwNzQ0ODVmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAi
SlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmNwcAppbmRleCBjY2E2ODg4YmY5OGEwMjg2NDZjYTNkZGRmMzc2MjdjZTBlN2Q5MzAyLi4z
MzlhN2FiN2Y1OTUxNWU5NmFmYjdlYzRiODc0MWU3YWE4ZTE2NmY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApAQCAtMzIsNyArMzIsOSBAQAogI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1
ZGUgIkpTTm90QW5PYmplY3QuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNs
dWRlICJOdW1iZXJPYmplY3QuaCIKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSA8
d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAppbmRleCBmN2M4NDQ2
NDUwOTJiMjUwODA1ZTZlOGQ0ODMyYzk5OGJkYjg5YjU0Li5kNzk1ZGQ1NmE5N2RkYjU5N2MwOTBm
YzJlMGI3ZjMwOGUzM2ViY2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGxJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsSW5saW5lcy5oCkBAIC0yNyw4ICsyNywxMCBAQAogI2RlZmluZSBKU0NlbGxJbmxpbmVz
X2gKIAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJz
LmgiCiAjaW5jbHVkZSAiRGVmZXJHQy5oIgogI2luY2x1ZGUgIkhhbmRsZS5oIgorI2luY2x1ZGUg
IkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNP
YmplY3QuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCAyNDE5NjQ2MTBiYjQ0MjdiMTg2MzczMzQ2ZTI0
ZjVhODJkMGNkY2M0Li43YmVmNTkxYjE0ZjM1ZjFhOTM0OGFkZTlhOWUwZjU5MGViNmFkZjg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtMTA5
LDYgKzEwOSwxNCBAQCB2b2lkIEpTRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgTmF0
aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgaW50IGxlbmd0aAogICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBEb250RGVsZXRlIHwg
UmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKK0pTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0
ZUJ1aWx0aW5GdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlv
biA9IGNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBmdW5jdGlvbi0+
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZygmdm0sIGV4ZWN1
dGFibGUtPm5hbWUoKS5zdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVt
KTsKKyAgICBmdW5jdGlvbi0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgs
IGpzTnVtYmVyKGV4ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCkpLCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkgfCBEb250RW51bSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uOworfQorCiBPYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZSogSlNGdW5jdGlvbjo6Y3JlYXRlQWxsb2NhdGlvblByb2ZpbGUoRXhlY1N0
YXRlKiBleGVjLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKQEAgLTE0Miw3ICsxNTAsNyBAQCBjb25zdCBTdHJpbmcgSlNGdW5jdGlvbjo6Y2FsY3Vs
YXRlZERpc3BsYXlOYW1lKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIGV4cGxpY2l0
TmFtZTsKICAgICAKICAgICBjb25zdCBTdHJpbmcgYWN0dWFsTmFtZSA9IG5hbWUoZXhlYyk7Ci0g
ICAgaWYgKCFhY3R1YWxOYW1lLmlzRW1wdHkoKSB8fCBpc0hvc3RGdW5jdGlvbigpKQorICAgIGlm
ICghYWN0dWFsTmFtZS5pc0VtcHR5KCkgfHwgaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAg
ICAgICAgcmV0dXJuIGFjdHVhbE5hbWU7CiAgICAgCiAgICAgcmV0dXJuIGpzRXhlY3V0YWJsZSgp
LT5pbmZlcnJlZE5hbWUoKS5zdHJpbmcoKTsKQEAgLTE1MCwxMCArMTU4LDIwIEBAIGNvbnN0IFN0
cmluZyBKU0Z1bmN0aW9uOjpjYWxjdWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQog
CiBjb25zdCBTb3VyY2VDb2RlKiBKU0Z1bmN0aW9uOjpzb3VyY2VDb2RlKCkgY29uc3QKIHsKLSAg
ICBpZiAoaXNIb3N0RnVuY3Rpb24oKSkKKyAgICBpZiAoaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24o
KSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuICZqc0V4ZWN1dGFibGUoKS0+c291cmNl
KCk7CiB9CisgICAgCitib29sIEpTRnVuY3Rpb246OmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gaXNIb3N0RnVuY3Rpb24oKSB8fCBpc0J1aWx0aW5GdW5jdGlv
bigpOworfQorCitib29sIEpTRnVuY3Rpb246OmlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gIWlzSG9zdEZ1bmN0aW9uKCkgJiYganNFeGVjdXRhYmxlKCktPmlzQnVpbHRp
bkZ1bmN0aW9uKCk7Cit9CiAKIHZvaWQgSlNGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewpAQCAtMjc3LDcgKzI5NSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTRnVuY3Rpb246OmNhbGxlckdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29k
ZWRKU1ZhbHVlIHNsb3RCYXNlCiAgICAgaWYgKCFjYWxsZXIuaXNPYmplY3QoKSB8fCAhYXNPYmpl
Y3QoY2FsbGVyKS0+aW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShjYWxsZXIpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganND
YXN0PEpTRnVuY3Rpb24qPihjYWxsZXIpOwotICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0RnVuY3Rp
b24oKSB8fCAhZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkKKyAgICBp
ZiAoZnVuY3Rpb24tPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgfHwgIWZ1bmN0aW9uLT5qc0V4
ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY2FsbGVyKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiRnVuY3Rpb24uY2FsbGVyIHVzZWQgdG8gcmV0cmlldmUgc3RyaWN0
IGNhbGxlciIpKSk7CiB9CkBAIC0yOTksNyArMzE3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNGdW5j
dGlvbjo6bmFtZUdldHRlcihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBzbG90QmFzZSwgRW5j
b2QKIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlv
bio+KG9iamVjdCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAg
aWYgKHRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVy
biBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
LCBzbG90KTsKIAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygp
LnByb3RvdHlwZSkgewpAQCAtMzYxLDcgKzM3OSw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
CiB2b2lkIEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVz
LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICghdGhpc09iamVjdC0+aXNIb3N0
RnVuY3Rpb24oKSAmJiAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgeworICAg
IGlmICghdGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSAmJiAobW9kZSA9PSBJ
bmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgewogICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90
eXBlIGhhcyBiZWVuIHJlaWZpZWQuCiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmpl
Y3QpOwogICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNs
b3QodGhpc09iamVjdCwgZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgc2xv
dCk7CkBAIC0zNzcsNyArMzk1LDcgQEAgdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLAogdm9pZCBKU0Z1
bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
ICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKLSAg
ICBpZiAodGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSkgeworICAgIGlmICh0aGlzT2JqZWN0
LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKSB7CiAgICAgICAgIEJhc2U6OnB1dCh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTQyNSw3ICs0NDMsNyBAQCBib29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcAogYm9vbCBK
U0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRv
ciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKIHsKICAgICBKU0Z1bmN0aW9uKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICh0aGlzT2Jq
ZWN0LT5pc0hvc3RGdW5jdGlvbigpKQorICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0
aW5GdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKTsKIAog
ICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDdjZDE0
YjhjMmQ4MDBmNjFiZGMxMmVkZDJkZjA0ZDM1ZmEwNjE5YjYuLjk5NWM5ZDExYmQ4OTgzODZmN2Ey
MGM0MTYzNGZhN2NjOWI3Njk4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmgKQEAgLTY4LDYgKzY4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICByZXR1cm4gZnVuY3Rpb247CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHN0YXRpYyBK
U0Z1bmN0aW9uKiBjcmVhdGVCdWlsdGluRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUq
LCBKU0dsb2JhbE9iamVjdCopOworICAgICAgICAKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJv
eShKU0NlbGwqKTsKICAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBu
YW1lKEV4ZWNTdGF0ZSopOwpAQCAtMTQ1LDYgKzE0Nyw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgcmV0dXJuIG1fYWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OwogICAgICAgICB9
CiAKKyAgICAgICAgYm9vbCBpc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpIGNvbnN0OworICAgICAg
ICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3Q7CisKICAgICBwcm90ZWN0ZWQ6CiAgICAg
ICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdCB8IEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IE92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZs
YWdzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaApp
bmRleCAyZGRjMjlmNzE4OTdiYjUxZDM5MGIwNmIyNWE3MzgzMzg3NGJhMGMxLi5lZGQzNDQ5Y2U0
N2IxNzM1ZThlNWRiYjA1ZjMxOGUzZDU1ZjNiZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXNfaAogI2RlZmluZSBKU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lc19oCiAKKyNpbmNsdWRlICJDb21tb25J
ZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZl
ci5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggNmRiODYyNzRjM2I4NzRhYWFkZTUxNTE4OTgy
NjcyNmZiMTM2YzE3My4uZjI0ZWE3MzAzZGY5NjlkYmQyZGNhNTJjODZkMTFjNzhjMDBkYjllYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzX2gKIAogI2luY2x1ZGUgIkFycmF5QnVmZmVy
Vmlldy5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRGVmZXJH
Qy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaAppbmRleCA0NTk5OTdh
NDY0YjkxMTk0NzdiMWJlODRlMzZjNGUyOTY2YWNlZjg1Li44ZTVmZjgyNzkxZTZmZjhkNGViOWMz
NzM2OTFlNDMzZWI3ZDE2YWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlw
ZUlubGluZXMuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBKU0dlbmVyaWNUeXBlZEFycmF5
Vmlld1Byb3RvdHlwZUlubGluZXNfaAogI2RlZmluZSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1By
b3RvdHlwZUlubGluZXNfaAogCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNs
dWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKaW5kZXggMmMyNzRjMWE3ZDQ4MWMwN2RmMGQyYmViM2IyOTMxYTM5MDdhNWU2
Ni4uMDZlNTRjODRlNzdiOTAzMmJhYTFkMmRmNDdhMWM3MmU4MGI3ZGVhMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMzQ2LDcg
KzM0Niw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQog
CiAgICAgLy8gQ29uc3RydWN0b3JzCiAKLSAgICBKU0NlbGwqIG9iamVjdENvbnN0cnVjdG9yID0g
T2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fb2JqZWN0UHJv
dG90eXBlLmdldCgpKTsKKyAgICBPYmplY3RDb25zdHJ1Y3Rvciogb2JqZWN0Q29uc3RydWN0b3Ig
PSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9vYmplY3RQ
cm90b3R5cGUuZ2V0KCkpOworICAgIG1fb2JqZWN0Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBv
YmplY3RDb25zdHJ1Y3Rvcik7CiAgICAgSlNDZWxsKiBmdW5jdGlvbkNvbnN0cnVjdG9yID0gRnVu
Y3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2Z1bmN0aW9u
UHJvdG90eXBlLmdldCgpKTsKICAgICBKU0NlbGwqIGFycmF5Q29uc3RydWN0b3IgPSBBcnJheUNv
bnN0cnVjdG9yOjpjcmVhdGUodm0sIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fYXJyYXlQcm90b3R5cGUuZ2V0
KCkpOwogCkBAIC00MzIsNyArNDMzLDEwIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpT
VmFsdWUgcHJvdG90eXBlKQogICAgIEdsb2JhbFByb3BlcnR5SW5mbyBzdGF0aWNHbG9iYWxzW10g
PSB7CiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5OYU4sIGpz
TmFOKCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPkluZmluaXR5LCBqc051bWJlcihzdGQ6Om51
bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpLCBEb250RW51bSB8IERvbnREZWxldGUg
fCBSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT51bmRlZmluZWRLZXl3b3JkLCBqc1VuZGVmaW5lZCgpLCBEb250RW51bSB8IERvbnREZWxldGUg
fCBSZWFkT25seSkKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PnVuZGVmaW5lZEtleXdvcmQsIGpzVW5kZWZpbmVkKCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PnVuZGVmaW5lZEtleXdvcmRQcml2YXRlTmFtZSwganNVbmRlZmluZWQoKSwgRG9udEVudW0gfCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+T2JqZWN0UHJpdmF0ZU5hbWUsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51
bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2
bS5wcm9wZXJ0eU5hbWVzLT5UeXBlRXJyb3JQcml2YXRlTmFtZSwgbV90eXBlRXJyb3JDb25zdHJ1
Y3Rvci5nZXQoKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpCiAgICAgfTsKICAg
ICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2JhbHMsIFdURl9BUlJBWV9MRU5HVEgoc3RhdGlj
R2xvYmFscykpOwogICAgIApAQCAtNjA4LDYgKzYxMiw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zeW50YXhFcnJvckNvbnN0cnVjdG9yKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV90eXBlRXJyb3JDb25zdHJ1Y3Rvcik7CiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fVVJJRXJyb3JDb25zdHJ1Y3Rvcik7Cisg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fb2JqZWN0Q29uc3RydWN0b3IpOwogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Byb21pc2VDb25zdHJ1Y3Rvcik7CiAKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9ldmFsRnVuY3Rpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggYjBjYWQzZGM1
NDcwZjdjN2EwZTU3MGJkY2QyZGZmYTg5NWUyYWEwYy4uM2E2MTZjNmYwNWVkZjFkMjk1YWY4NDQx
YWE2NjUwMGZiOTJhNGE0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCkBAIC02Nyw2ICs2Nyw3IEBAIGNsYXNzIEpTU3RhY2s7CiBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBNaWNyb3Rhc2s7CiBjbGFzcyBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yOworY2xhc3MgT2JqZWN0Q29uc3RydWN0b3I7CiBjbGFzcyBQcm9ncmFtQ29k
ZUJsb2NrOwogY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7CiBjbGFzcyBSZWdFeHBDb25zdHJ1Y3Rv
cjsKQEAgLTE1OCw2ICsxNTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV3JpdGVCYXJyaWVyPE5hdGl2
ZUVycm9yQ29uc3RydWN0b3I+IG1fdHlwZUVycm9yQ29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJy
aWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IG1fVVJJRXJyb3JDb25zdHJ1Y3RvcjsKICAgICBX
cml0ZUJhcnJpZXI8SlNQcm9taXNlQ29uc3RydWN0b3I+IG1fcHJvbWlzZUNvbnN0cnVjdG9yOwor
ICAgIFdyaXRlQmFycmllcjxPYmplY3RDb25zdHJ1Y3Rvcj4gbV9vYmplY3RDb25zdHJ1Y3RvcjsK
IAogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2V2YWxGdW5jdGlvbjsKICAgICBXcml0
ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9jYWxsRnVuY3Rpb247CkBAIC0zMzAsNiArMzMyLDcgQEAg
cHVibGljOgogICAgIFJlZ0V4cENvbnN0cnVjdG9yKiByZWdFeHBDb25zdHJ1Y3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1fcmVnRXhwQ29uc3RydWN0b3IuZ2V0KCk7IH0KIAogICAgIEVycm9yQ29uc3Ry
dWN0b3IqIGVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yQ29uc3RydWN0
b3IuZ2V0KCk7IH0KKyAgICBPYmplY3RDb25zdHJ1Y3Rvciogb2JqZWN0Q29uc3RydWN0b3IoKSBj
b25zdCB7IHJldHVybiBtX29iamVjdENvbnN0cnVjdG9yLmdldCgpOyB9CiAgICAgTmF0aXZlRXJy
b3JDb25zdHJ1Y3RvciogZXZhbEVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2V2
YWxFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CiAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvciog
cmFuZ2VFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZUVycm9yQ29uc3Ry
dWN0b3IuZ2V0KCk7IH0KICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiByZWZlcmVuY2VFcnJv
ckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9y
LmdldCgpOyB9CkBAIC01ODEsNyArNTg0LDcgQEAgaW5saW5lIGJvb2wgSlNHbG9iYWxPYmplY3Q6
Omhhc093blByb3BlcnR5Rm9yV3JpdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUKIAog
aW5saW5lIGJvb2wgSlNHbG9iYWxPYmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVydHkoUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3lt
Ym9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5
bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlO
YW1lLnVpZCgpKTsKICAgICByZXR1cm4gIWVudHJ5LmlzTnVsbCgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggMmI2N2ExZDllZWQ4NGU5OTU2
ZjhiYjk2ODM4NGM4NGNhZWE1M2NmZi4uMmVhMmMyNGU2ZWFiNGNkMGQ3ZmZlZDY2NWVmNGFlNDFh
ZjA3NTBmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApA
QCAtODcsNyArODcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2V0Q2xhc3NQcm9wZXJ0eU5hbWVz
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQ2xhc3NJbmZvKiBjbGFzcwogICAgICAgICBpbnQgaGFz
aFNpemVNYXNrID0gdGFibGUtPmNvbXBhY3RTaXplIC0gMTsKICAgICAgICAgY29uc3QgSGFzaEVu
dHJ5KiBlbnRyeSA9IHRhYmxlLT50YWJsZTsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0g
aGFzaFNpemVNYXNrOyArK2ksICsrZW50cnkpIHsKLSAgICAgICAgICAgIGlmIChlbnRyeS0+a2V5
KCkgJiYgKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCAobW9kZSA9PSBJbmNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgJiYgISgoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0
aW9uKSAmJiBkaWRSZWlmeSkpCisgICAgICAgICAgICBpZiAoZW50cnktPmtleSgpICYmICghKGVu
dHJ5LT5hdHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVt
UHJvcGVydGllcykpICYmICEoKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlv
bikgJiYgZGlkUmVpZnkpKQogICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGVudHJ5
LT5rZXkoKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNjE4LDcgKzE2MTgsNyBAQCB2b2lkIEpT
T2JqZWN0OjpyZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlbGV0ZShFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpcyk7CiAg
ICAgICAgIGZvciAoSGFzaFRhYmxlOjpDb25zdEl0ZXJhdG9yIGl0ZXIgPSBoYXNoVGFibGUtPmJl
Z2luKHZtKTsgaXRlciAhPSBoYXNoVGFibGUtPmVuZCh2bSk7ICsraXRlcikgewotICAgICAgICAg
ICAgaWYgKGl0ZXItPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKQorICAgICAgICAgICAgaWYgKGl0
ZXItPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKQogICAgICAgICAgICAgICAgIHNl
dFVwU3RhdGljRnVuY3Rpb25TbG90KGdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksICppdGVy
LCB0aGlzLCBJZGVudGlmaWVyKCZ2bSwgaXRlci0+a2V5KCkpLCBzbG90KTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTIyMzYsNiArMjIzNiwxNiBAQCB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3ROYXRp
dmVGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbgogICAg
IHB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCBmdW5jdGlvbiwgYXR0cmlidXRlcyk7CiB9CiAK
K3ZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCBG
dW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdW5zaWduZWQgYXR0cmlidXRl
cykKK3sKKyAgICBTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsK
KyAgICBpZiAoIW5hbWUpCisgICAgICAgIG5hbWUgPSB2bS5wcm9wZXJ0eU5hbWVzLT5hbm9ueW1v
dXMuaW1wbCgpOworICAgIEFTU0VSVChuYW1lKTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9
IEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgc3RhdGljX2Nhc3Q8RnVuY3Rp
b25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxlKSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBw
dXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgZnVuY3Rpb24sIGF0dHJpYnV0ZXMpOworfQorCiB2
b2lkIEpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBw
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiBuYXRp
dmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcykKIHsK
ICAgICBTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDAyYjEzN2IzNTBjMmZhODMy
NWJkM2I5NjQ3MTEyYWJlODc2ZjM4M2YuLmRkZTU5N2VmZmFlYzBmMWI4ZDQ0YzI5MTE5NTAzMDFm
MDYwMDdlOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAt
MjksNyArMjksNiBAQAogI2luY2x1ZGUgIkJ1dHRlcmZseS5oIgogI2luY2x1ZGUgIkNhbGxGcmFt
ZS5oIgogI2luY2x1ZGUgIkNsYXNzSW5mby5oIgotI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJz
LmgiCiAjaW5jbHVkZSAiQ29weVdyaXRlQmFycmllci5oIgogI2luY2x1ZGUgIkRlZmVyR0MuaCIK
ICNpbmNsdWRlICJIZWFwLmgiCkBAIC01ODEsNiArNTgwLDcgQEAgcHVibGljOgogICAgIHZvaWQg
cHV0RGlyZWN0VW5kZWZpbmVkKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgeyBsb2NhdGlvbkZvck9m
ZnNldChvZmZzZXQpLT5zZXRVbmRlZmluZWQoKTsgfQogCiAgICAgdm9pZCBwdXREaXJlY3ROYXRp
dmVGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgdW5z
aWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpOworICAgIHZvaWQgcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICB2b2lkIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYs
IHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRl
ZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25z
dCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAK
aW5kZXggNjhhOGJkODdkMzhhZGJiYjlkZDJhYzllYzRiNDlkNWVmNDU0OWQ1Ni4uMjM3YzQyYmIw
ZGEwZjE2Njc2ZWIxMWFkZTgxODBhN2IwNmQ5OGViNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKQEAgLTI5
LDcgKzI5LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmgiCiAKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKaW5kZXggZjQz
NjJmZjM1NGVlNmE1MDIyMWJiNzMxZDFhMjYxMWU2ZGQ2MWJjMC4uZDA3MzcxOWRlMTYwZDJmMjky
MTEwYTU5NmExMDVlMmZhMjExNWZmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaApAQCAtMzEsNyArMzEsNiBAQAog
CiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgotI2luY2x1ZGUg
Ik9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1ZGUg
PG1lbW9yeT4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXgg
MmIxY2RkZGM1ODQxZDYwZDE1N2EyZTYxZjcwMmIwZWU1ZmExZDY3Ni4uZTM5MzQxNjBhZWE5MjZl
ZjE1OTMyZjg3OTBlMjRjNTJhZjAyZDM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5oCkBAIC0yNCw3ICsyNCw2IEBACiAjZGVmaW5lIEpTU3RyaW5nX2gKIAogI2lu
Y2x1ZGUgIkNhbGxGcmFtZS5oIgotI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5j
bHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlByb3BlcnR5RGVzY3JpcHRvci5oIgogI2lu
Y2x1ZGUgIlByb3BlcnR5U2xvdC5oIgpAQCAtNDcyLDMzICs0NzEsNiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKCZleGVjLT52
bSgpLCBzKTsgfQogICAgIGlubGluZSBKU1N0cmluZyoganNPd25lZFN0cmluZyhFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4ganNPd25lZFN0cmluZygmZXhlYy0+dm0o
KSwgcyk7IH0KIAotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJv
cGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQotICAgIHsKLSAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7Ci0gICAgICAgICAgICBzbG90LnNldFZhbHVlKHRo
aXMsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBqc051bWJlcihtX2xlbmd0aCkp
OwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICB1bnNpZ25l
ZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKLSAgICAgICAgaWYgKGkgPCBtX2xlbmd0aCkg
ewotICAgICAgICAgICAgQVNTRVJUKGkgIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTsgLy8g
Tm8gbmVlZCBmb3IgYW4gZXhwbGljaXQgY2hlY2ssIHRoZSBhYm92ZSB0ZXN0IHdvdWxkIGFsd2F5
cyBmYWlsIQotICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVh
ZE9ubHksIGdldEluZGV4KGV4ZWMsIGkpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAgICAgICAgIAotICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi0g
ICAgewotICAgICAgICBpZiAocHJvcGVydHlOYW1lIDwgbV9sZW5ndGgpIHsKLSAgICAgICAgICAg
IHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBnZXRJbmRleChleGVj
LCBwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0K
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQogICAgIGlubGluZSBib29sIGlzSlNTdHJp
bmcoSlNWYWx1ZSB2KSB7IHJldHVybiB2LmlzQ2VsbCgpICYmIHYuYXNDZWxsKCktPmNsYXNzSW5m
bygpID09IEpTU3RyaW5nOjppbmZvKCk7IH0KIAogICAgIC8vIC0tLSBKU1ZhbHVlIGlubGluZXMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTI4LDMyICs1MDAsNiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgcmV0dXJuIHRvV1RGU3RyaW5nU2xvd0Nhc2UoZXhlYyk7CiAgICAg
fQogCi0gICAgQUxXQVlTX0lOTElORSBTdHJpbmcgaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3Ry
aW5nKGNvbnN0IEpTVmFsdWUmIHZhbHVlLCBFeGVjU3RhdGUqIGV4ZWMpCi0gICAgewotICAgICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgICAgICBpZiAodmFsdWUuaXNJbnQzMigpKQotICAg
ICAgICAgICAgcmV0dXJuIHZtLm51bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZS5hc0ludDMyKCkpOwot
ICAgICAgICBpZiAodmFsdWUuaXNEb3VibGUoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5udW1l
cmljU3RyaW5ncy5hZGQodmFsdWUuYXNEb3VibGUoKSk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc1Ry
dWUoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT50cnVlS2V5d29yZC5z
dHJpbmcoKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzRmFsc2UoKSkKLSAgICAgICAgICAgIHJldHVy
biB2bS5wcm9wZXJ0eU5hbWVzLT5mYWxzZUtleXdvcmQuc3RyaW5nKCk7Ci0gICAgICAgIGlmICh2
YWx1ZS5pc051bGwoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5udWxs
S2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAg
ICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZC5zdHJpbmco
KTsKLSAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKLSAg
ICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIFN0cmluZyBKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGlu
ZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoaXNTdHJpbmcoKSkK
LSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU1N0cmluZyo+KGFzQ2VsbCgpKS0+dmFs
dWUoZXhlYyk7Ci0KLSAgICAgICAgcmV0dXJuIGlubGluZUpTVmFsdWVOb3RTdHJpbmd0b1N0cmlu
ZygqdGhpcywgZXhlYyk7Ci0gICAgfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8v
IEpTU3RyaW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdJ
bmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMzc4YzA1ZmM4MGQ4OGU4NTM3YzlkMmE1ZWFiOWZmMGJhOWI2
MGE3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nSW5saW5lcy5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTU3RyaW5nSW5saW5lc19oCisj
ZGVmaW5lIEpTU3RyaW5nSW5saW5lc19oCisKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5o
IgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK0FMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3Ry
aW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+
cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgeworICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERv
bnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBqc051bWJlcihtX2xlbmd0aCkpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5
TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGkgPCBtX2xlbmd0aCkgeworICAgICAgICBBU1NFUlQo
aSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOyAvLyBObyBuZWVkIGZvciBhbiBleHBsaWNp
dCBjaGVjaywgdGhlIGFib3ZlIHRlc3Qgd291bGQgYWx3YXlzIGZhaWwhCisgICAgICAgIHNsb3Qu
c2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBnZXRJbmRleChleGVjLCBpKSk7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK0FMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4
ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
Cit7CisgICAgaWYgKHByb3BlcnR5TmFtZSA8IG1fbGVuZ3RoKSB7CisgICAgICAgIHNsb3Quc2V0
VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBnZXRJbmRleChleGVjLCBwcm9wZXJ0
eU5hbWUpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHJldHVybiBm
YWxzZTsKK30KKworQUxXQVlTX0lOTElORSBTdHJpbmcgaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3Rv
U3RyaW5nKGNvbnN0IEpTVmFsdWUmIHZhbHVlLCBFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBpZiAodmFsdWUuaXNJbnQzMigpKQorICAgICAgICByZXR1
cm4gdm0ubnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVlLmFzSW50MzIoKSk7CisgICAgaWYgKHZhbHVl
LmlzRG91YmxlKCkpCisgICAgICAgIHJldHVybiB2bS5udW1lcmljU3RyaW5ncy5hZGQodmFsdWUu
YXNEb3VibGUoKSk7CisgICAgaWYgKHZhbHVlLmlzVHJ1ZSgpKQorICAgICAgICByZXR1cm4gdm0u
cHJvcGVydHlOYW1lcy0+dHJ1ZUtleXdvcmQuc3RyaW5nKCk7CisgICAgaWYgKHZhbHVlLmlzRmFs
c2UoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPmZhbHNlS2V5d29yZC5zdHJp
bmcoKTsKKyAgICBpZiAodmFsdWUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0
eU5hbWVzLT5udWxsS2V5d29yZC5zdHJpbmcoKTsKKyAgICBpZiAodmFsdWUuaXNVbmRlZmluZWQo
KSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQuc3Ry
aW5nKCk7CisgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKK30K
KyAgICAKK0FMV0FZU19JTkxJTkUgU3RyaW5nIEpTVmFsdWU6OnRvV1RGU3RyaW5nSW5saW5lKEV4
ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBpZiAoaXNTdHJpbmcoKSkKKyAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEpTU3RyaW5nKj4oYXNDZWxsKCkpLT52YWx1ZShleGVjKTsKKyAgICAK
KyAgICByZXR1cm4gaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKCp0aGlzLCBleGVjKTsK
K30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKaW5kZXggMmFjMjUyNGM1ZGZkYTNkMTIyNDlkNzc5
MGFkYzMxMjllM2MwZTg3MS4uZmJjOGI4OTVlYWU2YWY3ODg4MzliZWI1ZTgzZDdiNmI5NzkyOGZh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJs
ZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xU
YWJsZU9iamVjdC5jcHAKQEAgLTY0LDYgKzY0LDggQEAgdm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0
OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXQK
ICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIodGhpc09iamVjdC0+c3ltYm9sVGFi
bGUoKS0+bV9sb2NrKTsKICAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgZW5kID0g
dGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+ZW5kKGxvY2tlcik7CiAgICAgICAgIGZvciAoU3lt
Ym9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXQgPSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5i
ZWdpbihsb2NrZXIpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIGlmIChpdC0+a2V5
LT5pc0VtcHR5VW5pcXVlKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICBpZiAoIShpdC0+dmFsdWUuZ2V0QXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IChtb2RlID09
IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKQogICAgICAgICAgICAgICAgIHByb3BlcnR5TmFt
ZXMuYWRkKElkZW50aWZpZXIoZXhlYywgaXQtPmtleS5nZXQoKSkpOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgK
aW5kZXggYjViMjBhODQ1YjZhYjY0NDI0YjM3ZTMxYjI3NzRlZjkwNTM1M2Y3Zi4uZDAzYjI0NTEx
YzJkZTE5NTlmYjVmNTZkNjQ5YzY0ZDBlZmUwNjg1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaApAQCAtNzIsNyArNzIsNyBA
QCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKIHsKICAgICBTeW1ib2xUYWJsZSYgc3ltYm9s
VGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgIENvbmN1cnJlbnRKSVRMb2NrZXIg
bG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0
b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpKTsKKyAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUu
ZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGl0ZXIgPT0gc3ltYm9s
VGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBTeW1ib2xUYWJs
ZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+dmFsdWU7CkBAIC04Nyw3ICs4Nyw3IEBAIGlubGlu
ZSBib29sIHN5bWJvbFRhYmxlR2V0KAogewogICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9
ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIo
c3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVy
ID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwor
ICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxv
Y2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5l
bmQobG9ja2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFN5bWJvbFRhYmxlRW50cnk6
OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1ZTsKQEAgLTEwNCw3ICsxMDQsNyBAQCBpbmxpbmUgYm9v
bCBzeW1ib2xUYWJsZUdldCgKIHsKICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2Jq
ZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJv
bFRhYmxlLm1fbG9jayk7Ci0gICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5
bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBT
eW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIs
IHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxv
Y2tlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0
IGVudHJ5ID0gaXRlci0+dmFsdWU7CkBAIC0xMjYsNyArMTI2LDcgQEAgaW5saW5lIGJvb2wgc3lt
Ym9sVGFibGVQdXQoCiAgICAgewogICAgICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAq
b2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBHQ1NhZmVDb25jdXJyZW50SklUTG9ja2Vy
IGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2ssIGV4ZWMtPnZtKCkuaGVhcCk7Ci0gICAgICAgIFN5
bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwg
cHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0
ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgp
KTsKICAgICAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJvb2wgd2FzRmF0OwpAQCAtMTU5LDcgKzE1OSw3
IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoCiAgICAgewogICAg
ICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwog
ICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2spOwot
ICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmlu
ZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgICAgICBTeW1ib2xUYWJs
ZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5
TmFtZS51aWQoKSk7CiAgICAgICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5JiBl
bnRyeSA9IGl0ZXItPnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTG9va3VwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5j
cHAKaW5kZXggYTgwNmRkMDUyYTBjYmVlNGNhYzJjYWE2ZTA4YzY3MTYwMDVjMjcwYy4uYTk3NjUy
MDFiOWY1MTg2NDE0MjNkZGUwZmUwZTJlNTFhOGNlNzNiYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Mb29rdXAuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgSGFzaFRhYmxlOjpk
ZWxldGVUYWJsZSgpIGNvbnN0CiBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIHRoaXNPYmosIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBBU1NFUlQo
dGhpc09iai0+Z2xvYmFsT2JqZWN0KCkpOwotICAgIEFTU0VSVChlbnRyeS0+YXR0cmlidXRlcygp
ICYgRnVuY3Rpb24pOworICAgIEFTU0VSVChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9y
RnVuY3Rpb24pOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgdW5zaWduZWQgYXR0cmli
dXRlczsKICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSB0aGlzT2JqLT5nZXREaXJlY3RPZmZz
ZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CkBAIC03OSw5ICs3OSwxMyBAQCBib29s
IHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5
KiBlbnRyeSwgSlNPYmplY3QqCiAgICAgICAgIGlmICh0aGlzT2JqLT5zdGF0aWNGdW5jdGlvbnNS
ZWlmaWVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgICAgIHRoaXNP
YmotPnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKAotICAgICAgICAgICAgdm0sIHRoaXNPYmotPmds
b2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5mdW5jdGlvbkxlbmd0aCgpLAotICAg
ICAgICAgICAgZW50cnktPmZ1bmN0aW9uKCksIGVudHJ5LT5pbnRyaW5zaWMoKSwgZW50cnktPmF0
dHJpYnV0ZXMoKSk7CisgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbikK
KyAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbih2bSwgdGhpc09i
ai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZW50cnktPmJ1aWx0aW5HZW5lcmF0b3Io
KSh2bSksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IHRoaXNPYmotPnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKAorICAgICAgICAgICAgICAgIHZtLCB0
aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBlbnRyeS0+ZnVuY3Rpb25MZW5n
dGgoKSwKKyAgICAgICAgICAgICAgICBlbnRyeS0+ZnVuY3Rpb24oKSwgZW50cnktPmludHJpbnNp
YygpLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAgICAgICAgfQogICAgICAgICBvZmZzZXQgPSB0
aGlzT2JqLT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CiAg
ICAgICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKaW5kZXggYmRlODNkNGE2ZmMzNTU3Nzg1MGUzMWU4OGJj
MzlmZDA1ZjdiY2U1Mi4uZGJhMzg5ZTllMjQzZGQwZWNiMmJhOThmMzk0ZDQwNzlmOWRlYTkzNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKQEAgLTQzLDYgKzQzLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgLy8gaWUuIHR5cGVkZWYgSlNWYWx1ZSAoKkdldEZ1bmN0aW9u
KShFeGVjU3RhdGUqLCBKU09iamVjdCogYmFzZU9iamVjdCkKICAgICB0eXBlZGVmIFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jIEdldEZ1bmN0aW9uOwogICAgIHR5cGVkZWYgUHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmMgUHV0RnVuY3Rpb247CisgICAgdHlwZWRlZiBGdW5jdGlvbkV4ZWN1
dGFibGUqICgqQnVpbHRpbkdlbmVyYXRvcikoVk0mKTsKIAogICAgIGNsYXNzIEhhc2hFbnRyeSB7
CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjgsMTEgKzY5LDEyIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1faW50cmluc2ljOwogICAgICAgICB9
CiAKKyAgICAgICAgQnVpbHRpbkdlbmVyYXRvciBidWlsdGluR2VuZXJhdG9yKCkgY29uc3QgeyBB
U1NFUlQobV9hdHRyaWJ1dGVzICYgQnVpbHRpbik7IHJldHVybiBtX3UuYnVpbHRpbkdlbmVyYXRv
ci5nZW5lcmF0b3JWYWx1ZTsgfQogICAgICAgICBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbigpIGNv
bnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKTsgcmV0dXJuIG1fdS5mdW5jdGlv
bi5mdW5jdGlvblZhbHVlOyB9CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgZnVuY3Rpb25MZW5ndGgo
KSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBGdW5jdGlvbik7IHJldHVybiBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyPihtX3UuZnVuY3Rpb24ubGVuZ3RoKTsgfQogCi0gICAgICAgIEdl
dEZ1bmN0aW9uIHByb3BlcnR5R2V0dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMg
JiBGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5LmdldDsgfQotICAgICAgICBQdXRGdW5j
dGlvbiBwcm9wZXJ0eVB1dHRlcigpIGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1dGVzICYgRnVu
Y3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0eS5wdXQ7IH0KKyAgICAgICAgR2V0RnVuY3Rpb24g
cHJvcGVydHlHZXR0ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEJ1aWx0aW5P
ckZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVydHkuZ2V0OyB9CisgICAgICAgIFB1dEZ1bmN0
aW9uIHByb3BlcnR5UHV0dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBCdWls
dGluT3JGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5LnB1dDsgfQogCiAgICAgICAgIGlu
dHB0cl90IGxleGVyVmFsdWUoKSBjb25zdCB7IEFTU0VSVCghbV9hdHRyaWJ1dGVzKTsgcmV0dXJu
IG1fdS5sZXhlci52YWx1ZTsgfQogCkBAIC05NCw2ICs5NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgICAgICBpbnRwdHJfdCBsZW5ndGg7IC8vIG51bWJlciBvZiBhcmd1bWVudHMg
Zm9yIGZ1bmN0aW9uCiAgICAgICAgICAgICB9IGZ1bmN0aW9uOwogICAgICAgICAgICAgc3RydWN0
IHsKKyAgICAgICAgICAgICAgICBCdWlsdGluR2VuZXJhdG9yIGdlbmVyYXRvclZhbHVlOworICAg
ICAgICAgICAgICAgIGludHB0cl90IHVudXNlZDsKKyAgICAgICAgICAgIH0gYnVpbHRpbkdlbmVy
YXRvcjsKKyAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgR2V0RnVuY3Rpb24g
Z2V0OwogICAgICAgICAgICAgICAgIFB1dEZ1bmN0aW9uIHB1dDsKICAgICAgICAgICAgIH0gcHJv
cGVydHk7CkBAIC0yMDksNyArMjE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToK
ICAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBIYXNoRW50cnkqIGVudHJ5KFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cmluZ0ltcGwq
IGltcGwgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOworICAgICAgICAgICAgU3RyaW5nSW1w
bCogaW1wbCA9IHByb3BlcnR5TmFtZS51aWQoKTsKICAgICAgICAgICAgIGlmICghaW1wbCkKICAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgCkBAIC0yNDksNyArMjU1LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIGlmICghZW50cnkpIC8vIG5vdCBmb3VuZCwgZm9yd2FyZCB0
byBwYXJlbnQKICAgICAgICAgICAgIHJldHVybiBQYXJlbnRJbXA6OmdldE93blByb3BlcnR5U2xv
dCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCi0gICAgICAgIGlmIChlbnRy
eS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pCisgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRl
cygpICYgQnVpbHRpbk9yRnVuY3Rpb24pCiAgICAgICAgICAgICByZXR1cm4gc2V0VXBTdGF0aWNG
dW5jdGlvblNsb3QoZXhlYywgZW50cnksIHRoaXNPYmosIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAK
ICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09iaiwgZW50cnktPmF0dHJpYnV0
ZXMoKSwgZW50cnktPnByb3BlcnR5R2V0dGVyKCkpOwpAQCAtMjg2LDcgKzI5Miw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBpZiAoIWVudHJ5KSAvLyBub3QgZm91bmQsIGZvcndhcmQgdG8g
cGFyZW50CiAgICAgICAgICAgICByZXR1cm4gUGFyZW50SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
dGhpc09iaiwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIAotICAgICAgICBBU1NFUlQoIShl
bnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pKTsKKyAgICAgICAgQVNTRVJUKCEoZW50cnkt
PmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSk7CiAKICAgICAgICAgc2xvdC5zZXRD
YWNoZWFibGVDdXN0b20odGhpc09iaiwgZW50cnktPmF0dHJpYnV0ZXMoKSwgZW50cnktPnByb3Bl
cnR5R2V0dGVyKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI5NSw3ICszMDEsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgdm9pZCBwdXRFbnRyeShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0KiBiYXNlLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiAgICAgewog
ICAgICAgICAvLyBJZiB0aGlzIGlzIGEgZnVuY3Rpb24gcHV0IGl0IGFzIGFuIG92ZXJyaWRlIHBy
b3BlcnR5LgotICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKSB7Cisg
ICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pIHsKICAg
ICAgICAgICAgIGlmIChKU09iamVjdCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmpl
Y3QqPihzbG90LnRoaXNWYWx1ZSgpKSkKICAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXRE
aXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CiAgICAgICAgIH0gZWxzZSBp
ZiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgUmVhZE9ubHkpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCmlu
ZGV4IGQ1ZTcyOGMyY2QxMDIwYTQ3ZTRhZGNkNjQ5Y2QxZmZmYTVjZDZhODMuLmRjYTJmZDhkMWY2
YWMyM2I4ZmY4MTdjYmIxOGZhYWU3YmNkNTk3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCkBAIC0zOCw2
ICszOCwyMCBAQCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9y
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiB9CiAKK3ZvaWQgTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1l
KQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBuYW1lKTsKKyAgICBBU1NFUlQoaW5o
ZXJpdHMoaW5mbygpKSk7CisgICAgCisgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlw
ZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlU3RydWN0dXJlLCBuYW1lLCB0aGlzKTsKKyAgICAKKyAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIERvbnREZWxldGUgfCBSZWFkT25seSB8
IERvbnRFbnVtKTsgLy8gRUNNQSAxNS4xMS43LjUKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBE
b250RW51bSk7CisgICAgbV9lcnJvclN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEVycm9ySW5zdGFu
Y2U6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUpKTsKKyAgICBB
U1NFUlQobV9lcnJvclN0cnVjdHVyZSk7CisgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUtPmlz
T2JqZWN0KCkpOworfQorCiB2b2lkIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PE5hdGl2ZUVycm9yQ29uc3RydWN0b3Iq
PihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUVycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUVycm9yQ29uc3RydWN0b3IuaAppbmRleCA3NDBkM2Y5MzMyOTJmZDJhY2NiNGI5OTAzNDQzMTJi
OTMxOWFlMTEwLi40MzhhM2FmYjliYjBmNjQxMmM5NzkzMjIzMGM4ODcxMDk2MWY1NDY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVj
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvci5oCkBAIC01MSwxOSArNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3Ry
dWN0dXJlKiBlcnJvclN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fZXJyb3JTdHJ1Y3R1cmUuZ2V0KCk7
IH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0
dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtLCBuYW1lKTsKLSAgICAgICAgICAgIEFTU0VSVChpbmhlcml0cyhpbmZv
KCkpKTsKLQotICAgICAgICAgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IE5h
dGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlU3Ry
dWN0dXJlLCBuYW1lLCB0aGlzKTsKLQotICAgICAgICAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBE
b250RW51bSk7IC8vIEVDTUEgMTUuMTEuNy41Ci0gICAgICAgICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RGVsZXRlIHwgUmVhZE9u
bHkgfCBEb250RW51bSk7Ci0gICAgICAgICAgICBtX2Vycm9yU3RydWN0dXJlLnNldCh2bSwgdGhp
cywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSkpOwotICAgICAgICAgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUpOwotICAgICAgICAg
ICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwotICAgICAgICB9CisgICAg
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSog
cHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAppbmRleCBkOTM4ZmEzMTY0
NWFmMjZiNzU4NTE0ZGI2YjI0NzhmMTgzZTllZWUxLi5jZmU5YzRkMzJiYTc2OGM3NGU0ZmZiYjE5
MTM1Mjc5ZGViZjExNzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eVNsb3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eVNsb3QuaApAQCAtNDIsNiArNDIsOCBAQCBlbnVtIEF0dHJpYnV0ZSB7CiAgICAgRnVuY3Rp
b24gICAgID0gMSA8PCA0LCAgLy8gcHJvcGVydHkgaXMgYSBmdW5jdGlvbiAtIG9ubHkgdXNlZCBi
eSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIEFjY2Vzc29yICAgICA9IDEgPDwgNSwgIC8vIHByb3Bl
cnR5IGlzIGEgZ2V0dGVyL3NldHRlcgogICAgIEN1c3RvbUFjY2Vzc29yID0gMSA8PCA2LAorICAg
IEJ1aWx0aW4gICAgICAgICA9IDEgPDwgNywgLy8gcHJvcGVydHkgaXMgYSBidWlsdGluIGZ1bmN0
aW9uIC0gb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCisgICAgQnVpbHRpbk9yRnVuY3Rp
b24gPSBCdWlsdGluIHwgRnVuY3Rpb24sIC8vIGhlbHBlciBvbmx5IHVzZWQgYnkgc3RhdGljIGhh
c2h0YWJsZXMKIH07CiAKIGNsYXNzIFByb3BlcnR5U2xvdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAppbmRleCA4OWQ3YWMxYjhjYmYx
ZGIwZTEyNmYxZmM3OTZkZmQ1ZmM4NGIyZTU5Li45ZGRhMGJhOGRlMTQxMmVhZjRkMjkxZGNmMGM2
YjM5NjU3ZmI2NzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cFByb3RvdHlwZS5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJBcnJheVByb3Rv
dHlwZS5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgotI2luY2x1
ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTU3Ry
aW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rv
ci5jcHAKaW5kZXggYjIwMzg4OGQzYzE2Y2RhM2MwMDM1MDYyMDhhZTA4Njk1ZGM1ZGFhYS4uZDAy
NjZhNTllZjNmNTVhYTM2OTRmNWY3NDE4Y2Y3OGUwYWUwZDhiMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5o
IgogI2luY2x1ZGUgIkpTU2V0LmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiTWFwRGF0YS5oIgogI2luY2x1ZGUgIlNldFByb3RvdHlwZS5oIgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAppbmRleCA0NDBhNjA5NDIx
OTMzODAzMWU1OTI3YWY0NmIyODlkYmNmYjVhNzI4Li44MGU3ZWFhOGM0OTFjYjZkNTRhODMyNGNl
NjQ3YTZjZGI3ZTg4NzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ09iamVjdC5jcHAKQEAgLTIyLDcgKzIyLDkgQEAKICNpbmNsdWRlICJTdHJpbmdPYmplY3Qu
aCIKIAogI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
ICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5o
IgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5o
IgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCAw
NDI5MWY3ZThkZDI0ZThhYjMzZDc1YWYxZGE0NTY4ZjJiYzk5ZTY4Li4xZWNhYjg1YzBiZGIyODY5
ODk0NTc3YTc0MTI1NGUzNjQ0MTQ5ZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTI3LDEyICsyNywxOCBAQAogI2luY2x1ZGUgIlN0cnVjdHVy
ZS5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmll
cnMuaCIKICNpbmNsdWRlICJEdW1wQ29udGV4dC5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMu
aCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0
b3IuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJMb29rdXAuaCIK
KyNpbmNsdWRlICJQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFt
ZUFycmF5LmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3Ry
dWN0dXJlQ2hhaW4uaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
U3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcAppbmRleCA1MmNjZjQyM2ExMDQzZTEwNzlmMmQ4YjE4OTQyMTk4OTBl
NzFmMmJjLi45MWFkNTU3ZTI4OWI0NzM3MDdiODM5ZjZjZTcwY2EzNDQxODZhNWY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
QXJnTGlzdC5oIgogI2luY2x1ZGUgIkFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmgiCiAjaW5j
bHVkZSAiQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgiCisjaW5jbHVkZSAiQnVpbHRp
bkV4ZWN1dGFibGVzLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lSW5saW5lcy5oIgogI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVDYWNoZS5oIgpAQCAtNTUsNyArNTYsMTAgQEAK
ICNpbmNsdWRlICJKU0FQSVZhbHVlV3JhcHBlci5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5o
IgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgor
I2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5j
bHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0
aW9ucy5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCkBA
IC02OCwxMyArNzIsMTYgQEAKICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJNYXBEYXRh
LmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKKyNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRlICJQ
YXJzZXJBcmVuYS5oIgorI2luY2x1ZGUgIlByb3BlcnR5TWFwSGFzaFRhYmxlLmgiCiAjaW5jbHVk
ZSAiUmVnRXhwQ2FjaGUuaCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRlICJT
aW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNvdXJjZVByb3ZpZGVyQ2Fj
aGUuaCIKICNpbmNsdWRlICJTdHJpY3RFdmFsQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIlN0cm9u
Z0lubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVW5s
aW5rZWRDb2RlQmxvY2suaCIKICNpbmNsdWRlICJXZWFrTWFwRGF0YS5oIgogI2luY2x1ZGUgPHd0
Zi9Qcm9jZXNzSUQuaD4KQEAgLTIyNiw2ICsyMzMsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwg
SGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2luRGVmaW5lT3duUHJvcGVydHkoZmFsc2UpCiAg
ICAgLCBtX2NvZGVDYWNoZShDb2RlQ2FjaGU6OmNyZWF0ZSgpKQogICAgICwgbV9lbmFibGVkUHJv
ZmlsZXIobnVsbHB0cikKKyAgICAsIG1fYnVpbHRpbkV4ZWN1dGFibGVzKEJ1aWx0aW5FeGVjdXRh
Ymxlczo6Y3JlYXRlKCp0aGlzKSkKIHsKICAgICBpbnRlcnByZXRlciA9IG5ldyBJbnRlcnByZXRl
cigqdGhpcyk7CiAgICAgU3RhY2tCb3VuZHMgc3RhY2sgPSB3dGZUaHJlYWREYXRhKCkuc3RhY2so
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDVhODQxMDVlYWZiN2FiYmE1ZmE0
MzFlZWVkZDU1ZDdhODlmNTVjZTIuLjY5NThhYzM5M2IxYWVmYzBiZWZiZjZlNGViOGI2ODI1Y2Y3
YzlhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNDQsNiArNDQsNyBAQAog
I2luY2x1ZGUgIlByaXZhdGVOYW1lLmgiCiAjaW5jbHVkZSAiUHJvdG90eXBlTWFwLmgiCiAjaW5j
bHVkZSAiU21hbGxTdHJpbmdzLmgiCisjaW5jbHVkZSAiU291cmNlQ29kZS5oIgogI2luY2x1ZGUg
IlN0cm9uZy5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgogI2luY2x1ZGUgIlR5cGVk
QXJyYXlDb250cm9sbGVyLmgiCkBAIC02OSw2ICs3MCw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzOworICAgIGNsYXNzIEJ1aWx0aW5F
eGVjdXRhYmxlczsKICAgICBjbGFzcyBDb2RlQmxvY2s7CiAgICAgY2xhc3MgQ29kZUNhY2hlOwog
ICAgIGNsYXNzIENvbW1vbklkZW50aWZpZXJzOwpAQCAtNDk3LDYgKzQ5OSw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2b2lkIHJlZ2lzdGVyV2F0Y2hwb2ludEZvckltcHVyZVByb3BlcnR5
KGNvbnN0IElkZW50aWZpZXImLCBXYXRjaHBvaW50Kik7CiAgICAgICAgIC8vIEZJWE1FOiBVc2Ug
QXRvbWljU3RyaW5nIG9uY2UgaXQgZ290IG1lcmdlZCB3aXRoIElkZW50aWZpZXIuCiAgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkSW1wdXJlUHJvcGVydHkoY29uc3QgU3RyaW5nJik7
CisgICAgICAgIAorICAgICAgICBCdWlsdGluRXhlY3V0YWJsZXMqIGJ1aWx0aW5FeGVjdXRhYmxl
cygpIHsgcmV0dXJuIG1fYnVpbHRpbkV4ZWN1dGFibGVzLmdldCgpOyB9CiAKICAgICBwcml2YXRl
OgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpAQCAtNTM3LDEw
ICs1NDEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNWYWx1ZSBtX2V4Y2VwdGlvbjsK
ICAgICAgICAgYm9vbCBtX2luRGVmaW5lT3duUHJvcGVydHk7CiAgICAgICAgIE93blB0cjxDb2Rl
Q2FjaGU+IG1fY29kZUNhY2hlOwotICAgICAgICBSZWZDb3VudGVkQXJyYXk8U3RhY2tGcmFtZT4g
bV9leGNlcHRpb25TdGFjazsKLQogICAgICAgICBMZWdhY3lQcm9maWxlciogbV9lbmFibGVkUHJv
ZmlsZXI7Ci0KKyAgICAgICAgT3duUHRyPEJ1aWx0aW5FeGVjdXRhYmxlcz4gbV9idWlsdGluRXhl
Y3V0YWJsZXM7CisgICAgICAgIFJlZkNvdW50ZWRBcnJheTxTdGFja0ZyYW1lPiBtX2V4Y2VwdGlv
blN0YWNrOwogICAgICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdhdGNocG9pbnRTZXQ+PiBt
X2ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludFNldHM7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaCBi
L1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVz
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzBmY2MzODRlOGVkZmMzNGIxNDA4M2I4NjVkMzczODIwZjQxNjVjNAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRp
bWUvSlNTdHJpbmdJbmxpbmVzLmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldE
X0pTU3RyaW5nSW5saW5lc19oCisjZGVmaW5lIFdlYkNvcmVfRldEX0pTU3RyaW5nSW5saW5lc19o
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdJbmxpbmVzLmg+CisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5S
ZXBsYWNlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnQuY3BwCmluZGV4IDJlZGRjZGJiOWYwMDZjYTc2MjY2NTBiNDIwMjc4
NjI2YjkyNjE0MTcuLjNjNGUwZDdiYmIzMWNhYjEyYjVlNmM5NzVjNzRkM2Y0ODRlOWNiMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5S
ZXBsYWNlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50LmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2Uu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nSW5saW5lcy5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFueUN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFueUN1c3RvbS5jcHAK
aW5kZXggNTY0OWM4NWNhMDk1ODc3NDhhM2RhMDZjZGRkMGNhOTk5ZTUwYjhlNy4uM2Y0ZDhlZmFl
YjU3ZjMzMDAzZTczYTdlNzg0MmU0MmM3M2NlNjQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUg
IkpTSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJKU0lEQlRyYW5zYWN0aW9uLmgiCiAjaW5j
bHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8cnVudGltZS9KU1N0cmlu
Z0lubGluZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAppbmRleCA5ZWFlNzU2OWM3
MDYwM2E0ZmVkMGFmMTRjNGY4NzE4Y2RlNjRhNmUxLi5mNDlkZmU5MGI0ZTgyZDM5ZWRjYmY5YmEy
OWYyYWU3OTljMGRkZjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0lEQkRhdGFiYXNlQ3VzdG9tLmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIklEQk9i
amVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSlNJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgPHJ1
bnRpbWUvRXJyb3IuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nLmg+CisjaW5jbHVkZSA8
cnVudGltZS9KU1N0cmluZ0lubGluZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9t
LmNwcAppbmRleCA3NGZkMzU0YjI4NjA3Y2Y3ODIyZjgwNTM0Nzk3MGY1ZDdhYzhjODMyLi41NDM0
YjNiN2Q2YzU2ZWNiMGEwM2EyNzk0YzY3MzZhOWFkZmI3MGUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcApAQCAtMzYs
NyArMzYsNyBAQAogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSlNJREJJ
bmRleC5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pT
U3RyaW5nLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZ0lubGluZXMuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDYyNWY5ZjcwMjkyZmRjMTRiOGNhNTMzNzcwYzA0ZDRi
NzAwN2Y2M2MuLjg4YzdhZDc5NGQyMGY1ZDQ4OWViODVkMDc3OTU4NTFkMzQ1YTIwNzAgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMiBAQAorMjAxNC0wMS0yOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUu
Y29tPgorCisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gaW1wbGVtZW50IEpTIGJ1aWx0aW5z
IGluIEpTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
Mjc4ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGVkIHRoZSB0ZXN0IHJlc3VsdHMgZm9yIG5ldyBlcnJvciBtZXNzYWdlcyAobm93IHRoYXQg
dGhleSdyZQorICAgICAgICBhY3R1YWxseSBoZWxwZnVsKSwgYW5kIGFkZGVkIGEganMtcmVncmVz
cyB0ZXN0IHRvIHRyYWNrIHBlcmZvcm1hbmNlLgorCisgICAgICAgICoganMvYXJyYXktZXZlcnkt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGll
cy1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZl
cnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL2FycmF5LXByb3Rv
dHlwZS1ldmVyeS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0
cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuanM6IEFkZGVkLgorICAgICAgICAodGVzdDEpOgorICAg
ICAgICAodGVzdDIpOgorICAgICAgICAodGVzdDMpOgorCiAyMDE0LTAxLTI5ICBKb3NlcGggUGVj
b3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUGxh
eSBCcmVha3BvaW50IFNvdW5kIGluIEZyb250ZW5kCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJheS1ldmVyeS1l
eHBlY3RlZC50eHQKaW5kZXggNTQxYjhjMzU4ZjA2OGEwY2VhODgyYzEwNTE3NTMyNTExNGNkMzNm
Ny4uY2NhMzYzZGNlNThmYmE5NWE1OGNlNDZmY2I0OGMzOGJmNThhZGY1OSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dApAQCAtMzAsMTIgKzMwLDEyIEBAIFBBU1MgWzEy
LCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShpc0JpZ0Vub3VnaEFuZEV4Y2VwdGlvbikgdGhyZXcgZXhj
ZXB0aW9uIGV4Y2VwdGlvCiBQQVNTIFsxMiwgNTQsIDE4LCAxMzAsIDQ0XS5ldmVyeShpc0JpZ0Vu
b3VnaEFuZEV4Y2VwdGlvbikgdGhyZXcgZXhjZXB0aW9uIGV4Y2VwdGlvbiBmcm9tIGZ1bmN0aW9u
LgogCiA1LjAgV3JvbmcgVHlwZSBmb3IgQ2FsbGJhY2sgVGVzdAotUEFTUyBbMTIsIDUsIDgsIDEz
MCwgNDRdLmV2ZXJ5KDUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1Q
QVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoJ3dyb25nJykgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShuZXcg
T2JqZWN0KCkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsx
MiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkobnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
VHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSh1bmRlZmluZWQpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMw
LCA0NF0uZXZlcnkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFT
UyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KDUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNT
IFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoJ3dyb25nJykgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4K
K1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShuZXcgT2JqZWN0KCkpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEg
ZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkobnVsbCkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUg
YSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSh1bmRlZmluZWQpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBt
dXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVz
dCBiZSBhIGZ1bmN0aW9uLgogCiA2LjAgRWFybHkgRXhpdCAoIlNob3J0IENpcmN1aXRpbmciKQog
UEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KGlzQmlnRW5vdWdoU2hvcnRDaXJjdWl0KSBp
cyBmYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2FycmF5LXByb3RvdHlwZS1w
cm9wZXJ0aWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9hcnJheS1wcm90b3R5
cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQKaW5kZXggMmMyYTY4Y2IxMDZkYTEwZjA4NmIyMmM1
YmYyYmY1YzhmZTc5ZTMzZS4uNWQ5ZWNiNzVhOGRhNzliYTY1NjA1ZTdlYjljZjhmYzI1ZmUxOGFm
YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0
aWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vYXJyYXktcHJvdG90eXBl
LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CkBAIC0xNSw3ICsxNSw3IEBAIFBBU1MgQXJyYXkucHJv
dG90eXBlLnNsaWNlLmNhbGwodW5kZWZpbmVkLCAwLCAxKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiB1bmRlCiBQQVNTIEFycmF5LnByb3RvdHlwZS5zb3J0LmNhbGwodW5kZWZpbmVkKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVh
dGluZyAnQXJyYXkucHJvdG90eXBlLnNvcnQuY2FsbCh1bmRlZmluZWQpJykuCiBQQVNTIEFycmF5
LnByb3RvdHlwZS5zcGxpY2UuY2FsbCh1bmRlZmluZWQsIDAsIDEpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5w
cm90b3R5cGUuc3BsaWNlLmNhbGwodW5kZWZpbmVkLCAwLCAxKScpLgogUEFTUyBBcnJheS5wcm90
b3R5cGUudW5zaGlmdC5jYWxsKHVuZGVmaW5lZCwge30pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5
cGUudW5zaGlmdC5jYWxsKHVuZGVmaW5lZCwge30pJykuCi1QQVNTIEFycmF5LnByb3RvdHlwZS5l
dmVyeS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUu
ZXZlcnkuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKScpLgorUEFTUyBBcnJheS5wcm90b3R5cGUu
ZXZlcnkuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVm
aW5lZC4KIFBBU1MgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbCh1bmRlZmluZWQsIHRvU3Ry
aW5nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVj
dCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbCh1bmRlZmluZWQsIHRv
U3RyaW5nKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUuc29tZS5jYWxsKHVuZGVmaW5lZCwgdG9T
dHJpbmcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2Jq
ZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUuc29tZS5jYWxsKHVuZGVmaW5lZCwgdG9T
dHJpbmcpJykuCiBQQVNTIEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwodW5kZWZpbmVkLCAw
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAo
ZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbCh1bmRlZmluZWQsIDApJyku
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVy
eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1l
dmVyeS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTI5MGMwZWVmZjhkZTQyMTgzM2Q5MmQyN2U5
NTI0MTkxNzYwNGI5NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
YXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitKU1Jl
Z3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9h
cnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTVjYzE3MWM0ODc1YTM1ODVi
ZjE0ZTU0MTVmNWNkMGU1ODFkNTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVncmVzcy1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZl
cnkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXBvc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzIGIvTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjI5NGFhMTYxYzBjZTk4YjJhYjE4YTNhMWExZjBkZmFhYzlkN2QyZTIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJheS1wcm90
b3R5cGUtZXZlcnkuanMKQEAgLTAsMCArMSwyOSBAQAordmFyIHJlc3VsdCA9IDA7CitmdW5jdGlv
biB0ZXN0MShhKSB7CisgICAgcmVzdWx0IDw8IDE7CisgICAgcmVzdWx0Kys7CisgICAgcmV0dXJu
IHRydWU7Cit9CitmdW5jdGlvbiB0ZXN0MihhLGIpIHsKKyAgICByZXN1bHQgXj0gMzsKKyAgICBy
ZXN1bHQgKj0gMzsKKyAgICByZXR1cm4gdHJ1ZTsKK30KK2Z1bmN0aW9uIHRlc3QzKGEsYixjKSB7
CisgICAgcmVzdWx0IF49IHJlc3VsdCA+PiAxOworICAgIHJldHVybiB0cnVlOworfQorCit2YXIg
cmVzdWx0ID0gMDsKK3ZhciBhcnJheSA9IFtdCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsg
KytpKQorICAgIGFycmF5W2ldID0gMTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7
CisgICAgYXJyYXkuZXZlcnkodGVzdDEpOworICAgIGFycmF5LmV2ZXJ5KHRlc3QyKTsKKyAgICBh
cnJheS5ldmVyeSh0ZXN0Myk7Cit9CisKK2lmIChyZXN1bHQgIT0gMTQyODgxMDQ5NikKKyAgICB0
aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222675</attachid>
            <date>2014-01-30 09:32:46 -0800</date>
            <delta_ts>2014-01-30 09:53:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140130093247.patch</filename>
            <type>text/plain</type>
            <size>191975</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NjBlMTQzNTgwZTZkYzc1ZmEwNjY2YzlhMWUyZGMxZmMzZWYyY2MyLi4yNzBmZTZjZjRmNDQ2OGM4
NGRlNGViMjI3M2VmM2U4NTM4N2YxODBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
IFRoaXMgcmVzdWx0IG9mIHRoaXMgcmVmYWN0b3JpbmcKKyAgICAgICAgaXMgdGhhdCBDb21tb25J
ZGVudGlmaWVycywgYW5kIGEgZmV3IG90aGVyIG1pc2NlbGxhbmVvdXMgaGVhZGVycyBub3cKKyAg
ICAgICAgbmVlZCB0byBiZSBpbmNsdWRlZCBkaXJlY3RseSBhcyB0aGV5IHdlcmUgZm9ybWVybHkg
Y2FwdHVyZWQgdGhyb3VnaCBvdGhlcgorICAgICAgICBwYXRocy4KKworICAgICAgICBJbiBhZGRp
dGlvbiB0aGlzIGFkZHMgYSBmbGFnIHRvIHRoZSBMb29rdXAgdGFibGUncyBoYXNoZW50cnkgdG8g
aW5kaWNhdGUKKyAgICAgICAgdGhhdCBhIHN0YXRpYyBmdW5jdGlvbiBpcyBhY3R1YWxseSBiYWNr
ZWQgYnkgSlMuIFRoZXJlIGlzIHRoZW4gYSBsb3Qgb2YKKyAgICAgICAgbG9naWMgdG8gdGhyZWFk
IHRoZSBzcGVjaWFsIG5hdHVyZSBvZiB0aGUgZnVuY3RvbiB0byB3aGVyZSBpdCBtYXR0ZXJzLgor
ICAgICAgICBUaGlzIGFsbG93cyB0b1N0cmluZygpLCAuY2FsbGVyLCBldGMgdG8gbWltaWMgdGhl
IGJlaGF2aW91ciBvZiBhIGhvc3QKKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAgICAgTm90ZXMg
b24gd3JpdGluZyBidWlsdGluczoKKyAgICAgICAgIC0gRWFjaCBmdW5jdGlvbiBpcyBjb21waWxl
ZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBvdGhlcnMsIGFuZCB0aG9zZQorICAgICAgICAgICBpbXBs
ZW1lbnRhdGlvbnMgY2Fubm90IGN1cnJlbnRseSBjYXB0dXJlIGFsbCBnbG9iYWwgcHJvcGVydGll
cyAoYXMKKyAgICAgICAgICAgdGhhdCBjb3VsZCBiZSBwb3RlbnRpYWxseSB1bnNhZmUpLiBJZiBh
IGZ1bmN0aW9uIGRvZXMgY2FwdHVyZSBhCisgICAgICAgICAgIGdsb2JhbCB3ZSB3aWxsIGRlbGli
ZXJhdGVseSBjcmFzaC4KKyAgICAgICAgIC0gRm9yIHRob3NlICJnbG9iYWwiIHByb3BlcnRpZXMg
dGhhdCB3ZSBkbyB3YW50IGFjY2VzcyB0bywgd2UgdXNlCisgICAgICAgICAgIHRoZSBAIHByZWZp
eCwgZS5nLiBPYmplY3QodGhpcykgYmVjb21lcyBAT2JqZWN0KHRoaXMpLiBUaGUgQCBpZGVudGlm
aWVycworICAgICAgICAgICBhcmUgcHJpdmF0ZSBuYW1lcywgYW5kIGJlaGF2ZSBqdXN0IGxpa2Ug
cmVndWxhciBwcm9wZXJ0aWVzLCBvbmx5CisgICAgICAgICAgIHdpdGhvdXQgdGhlIHJpc2sgb2Yg
YWR1bHRlcmF0aW9uLiBBZ2FpbiwgaW4gdGhlIEBPYmplY3QgY2FzZSwgd2UKKyAgICAgICAgICAg
ZXhwbGljaXRseSBkdXBsaWNhdGUgdGhlIE9iamVjdENvbnN0cnVjdG9yIHJlZmVyZW5jZSBvbiB0
aGUgR2xvYmFsT2JqZWN0CisgICAgICAgICAgIHNvIHRoYXQgd2UgaGF2ZSBndWFyYW50ZWVkIGFj
Y2VzcyB0byB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgY29uc3RydWN0
b3IuCisgICAgICAgICAtIGNhbGwsIGFwcGx5LCBldmFsLCBhbmQgRnVuY3Rpb24gYXJlIGFsbCBy
ZWplY3RlZCBpZGVudGlmaWVycywgYWdhaW4KKyAgICAgICAgICAgdG8gcHJldmVudCBhbnl0aGlu
ZyBmcm9tIGFjY2lkZW50YWxseSB1c2luZyBhbiBhZHVsdGVyYXRlZCBvYmplY3QuCisgICAgICAg
ICAgIEluc3RlYWQgQGNhbGwgYW5kIEBhcHBseSBhcmUgYXZhaWxhYmxlLCBhbmQgaGFwcGlseSB0
aGV5IGNvbXBsZXRlbHkKKyAgICAgICAgICAgZHJvcCB0aGUgbmVxX3B0ciBpbnN0cnVjdGlvbiBh
cyB0aGV5J3JlIGRlZmluZWQgYXMgYWx3YXlzIGJlaW5nIHRoZQorICAgICAgICAgICBvcmlnaW5h
bCBjYWxsL2FwcGx5IGZ1bmN0aW9ucy4KKworICAgICAgICBUaGVzZSByZXN0cmljdGlvbnMgYXJl
IGp1c3QgaW50ZW5kZWQgdG8gbWFrZSBpdCBoYXJkZXIgdG8gYWNjaWRlbnRhbGx5CisgICAgICAg
IG1ha2UgY2hhbmdlcyB0aGF0IGFyZSBpbmNvcnJlY3QgKGZvciBpbnN0YW5jZSBjYWxsaW5nIHdo
YXRldmVyIGhhcyBiZWVuCisgICAgICAgIGFzc2lnbmVkIHRvIGdsb2JhbC5PYmplY3QsIGluc3Rl
YWQgb2YgdGhlIG9yaWdpbmFsIGNvbnN0cnVjdG9yIGZ1bmN0aW9uKS4KKyAgICAgICAgSG93ZXZl
ciwgbWFraW5nIGEgbWlzdGFrZSBsaWtlIHRoaXMgc2hvdWxkIHJlc3VsdCBpbiBhIHB1cmVseSBz
ZW1hbnRpYworICAgICAgICBlcnJvciBhcyBmdW5kYW1lbnRhbGx5IHRoZXNlIGZ1bmN0aW9ucyBh
cmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlCisgICAgICAgIHJlZ3VsYXIgSlMgY29kZSBp
biB0aGUgaG9zdCBnbG9iYWwsIGFuZCBoYXZlIG5vIG1vcmUgcHJpdmlsZWdlcyB0aGFuCisgICAg
ICAgIGFueSBvdGhlciBKUy4KKworICAgICAgICBUaGUgaW5pdGlhbCBwcm9vZiBvZiBjb25jZXB0
IGlzIEFycmF5LnByb3RvdHlwZS5ldmVyeSwgdGhpcyBzaG93cyBhIDY1JQorICAgICAgICBwZXJm
b3JtYW5jZSBpbXByb3ZlbWVudCwgYW5kIHRoYXQgaW1wcm92ZW1lbnQgaXMgc2lnbmlmaWNhbnRs
eSBodXJ0IGJ5CisgICAgICAgIG91ciBwb29yIG9wdGltaXNhdGlvbiBvZiBvcF9pbi4KKworICAg
ICAgICBBcyB0aGlzIGlzIHN1Y2ggYSBsaW1pdGVkIGZ1bmN0aW9uLCB3ZSBoYXZlIG5vdCB5ZXQg
ZXhwb3J0ZWQgYWxsIHN5bWJvbHMKKyAgICAgICAgdGhhdCB3ZSBjb3VsZCBwb3NzaWJseSBuZWVk
LCBidXQgYXMgd2UgaW1wbGVtZW50IG1vcmUsIHRoZSBsaWtlbGlob29kCisgICAgICAgIG9mIGVu
Y291bnRlcmluZyBtaXNzaW5nIGZlYXR1cmVzIHdpbGwgcmVkdWNlLgorCisgICAgICAgIFRoaXMg
ZGlkIHJlcXVpcmUgYnJlYWtpbmcgb3V0IGEgSlNTdHJpbmdJbmxpbmVzIGhlYWRlciwgYW5kIHJl
cXVpcmVkCisgICAgICAgIGZpeGluZyBhIGZldyBvYmplY3RzIHRoYXQgd2VyZSB0cnlpbmcgdG8g
dXNpbmcgUHJvcGVydHlOYW1lOjpwdWJsaWNOYW1lCisgICAgICAgIHJhdGhlciB0aGFuIFByb3Bl
cnR5TmFtZTo6dWlkLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0
eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dCk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRpY1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWNGdW5jdGlvbkdl
dHRlcik6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tH
ZXR0ZXIpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBidWlsdGlucy9BcnJheS5wcm90b3R5cGUuanM6CisgICAgICAgIChldmVyeSk6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkJ1aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKToKKyAgICAgICAgKEpTQzo6
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSk6CisgICAgICAgICog
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVj
dXRhYmxlczo6Y3JlYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tG
b3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6dG9TdHJpY3RuZXNzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNCdWlsdGluRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBjcmVhdGVfaGFz
aF90YWJsZToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZ2Vu
ZXJhdGUtanMtYnVpbHRpbnM6IEFkZGVkLgorICAgICAgICAoZ2V0Q29weXJpZ2h0KToKKyAgICAg
ICAgKGdldEZ1bmN0aW9ucyk6CisgICAgICAgIChnZW5lcmF0ZUNvZGUpOgorICAgICAgICAobWFu
Z2xlTmFtZSk6CisgICAgICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSWRlbnRp
Zmllcik6CisgICAgICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChTb3VyY2VDb2RlKToK
KyAgICAgICAgKFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKFZNKToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvUHJvdG9DYWxsRnJhbWUuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUp
OgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpM
ZXhlcik6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpM
ZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFy
Pjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAg
ICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcik6CisgICAgICAgICog
cGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OnNldENsb3NlZFZh
cmlhYmxlcyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
Tm9kZTo6Y2FwdHVyZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OnNldENs
b3NlZFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmluaXNoUGFy
c2luZyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRU
b2tlblRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OmdldFVzZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNsb3NlZFZhcmlh
Ymxlcyk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9k
ZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAgICAgICogcnVudGlt
ZS9BcmdMaXN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAg
ICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJh
dG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpn
ZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpD
b21tb25JZGVudGlmaWVycyk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQ
cml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQdWJsaWNO
YW1lKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzRXhjZXB0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxl
OjpleGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpleGVj
dXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aXNCdWlsdGlu
RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1l
L0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFi
bGVHZXQpOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0KToKKyAg
ICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgICogcnVudGltZS9K
U0NlbGxJbmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6c291cmNlQ29kZSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzSG9zdE9y
QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6aXNCdWlsdGluRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIpOgorICAgICAg
ICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9w
ZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgICogcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6Om9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpnZXRDbGFzc1Byb3BlcnR5TmFtZXMpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZ0lubGlu
ZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjppbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9i
amVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgICAgRG9uJ3QgcmVw
b3J0IHByaXZhdGUgbmFtZXMuCisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6c3ltYm9s
VGFibGVQdXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChKU0M6OnNldFVwU3RhdGlj
RnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlND
OjpIYXNoRW50cnk6OmJ1aWx0aW5HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpIYXNoRW50cnk6
OnByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpwcm9wZXJ0eVB1dHRl
cik6CisgICAgICAgIChKU0M6Okhhc2hUYWJsZTo6ZW50cnkpOgorICAgICAgICAoSlNDOjpnZXRT
dGF0aWNQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpnZXRTdGF0aWNWYWx1ZVNsb3QpOgor
ICAgICAgICAoSlNDOjpwdXRFbnRyeSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6YnVp
bHRpbkV4ZWN1dGFibGVzKToKKwogMjAxNC0wMS0yOSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3Nz
eUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikgbGVmdG92ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTEzZjE4OGFlNjUyYjk1ZjNiNTcyYWMxNzcwZWEx
MjViYmFlNzVkMi4uNjMyYWNjNDNkYzE2YzcxMzRkNThjMDRiN2E1Y2U1NmE5MTk4ZWNjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE0LTAxLTI5ICBPbGl2ZXIgSHVudCAgPG9saXZl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBpbXBsZW1lbnQgSlMg
YnVpbHRpbnMgaW4gSlMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNzg4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVwZGF0aW5nIGZvciB0aGUgbmV3bHkgcmVxdWlyZWQgaGVhZGVycy4KKworICAgICAg
ICBUZXN0OiBqcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sCisKKyAgICAgICAg
KiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oOiBBZGRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcDoKKwogMjAxNC0wMS0zMCAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViUGFnZTo6ZGV0ZXJtaW5lUHJpbWFyeVNu
YXBzaG90dGVkUGx1Z0luIGlzIHNsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggNWJlMDUzZjFlMDg2YjQzZTY4
NmMzNjc0ZGFlN2M1MTYwNWEyODZlNy4uMGVjZWQ1MWYzZTJkNWI2MjFkYWRmMDU3NDlmNWU3NDY2
YTA2ZjUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBib29sIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZQogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKICAg
ICBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHByb3BlcnR5TmFtZVJlZjsKICAgICAKLSAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpT
Q2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xh
c3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgLy8gb3B0aW9uYWwgb3B0
aW1pemF0aW9uIHRvIGJ5cGFzcyBnZXRQcm9wZXJ0eSBpbiBjYXNlcyB3aGVuIHdlIG9ubHkgbmVl
ZCB0byBrbm93IGlmIHRoZSBwcm9wZXJ0eSBleGlzdHMKICAgICAgICAgICAgIGlmIChKU09iamVj
dEhhc1Byb3BlcnR5Q2FsbGJhY2sgaGFzUHJvcGVydHkgPSBqc0NsYXNzLT5oYXNQcm9wZXJ0eSkg
ewpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiAgICAgUmVmUHRy
PE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgSlNWYWx1ZVJlZiB2YWx1ZVJl
ZiA9IHRvUmVmKGV4ZWMsIHZhbHVlKTsKICAgICAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9
IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJl
bnRDbGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBz
ZXRQcm9wZXJ0eSA9IGpzQ2xhc3MtPnNldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFwcm9wZXJ0eU5hbWVSZWYpCkBAIC0zNDMsNyArMzQzLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm8KICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CiAgICAg
UmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0Ns
YXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNz
ID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdERlbGV0
ZVByb3BlcnR5Q2FsbGJhY2sgZGVsZXRlUHJvcGVydHkgPSBqc0NsYXNzLT5kZWxldGVQcm9wZXJ0
eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lUmVmKQpAQCAtNTY0LDcgKzU2
NCw3IEBAIEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiB7CiAgICAgSlNPYmplY3RSZWYgdGhpc1Jl
ZiA9IHRvUmVmKHRoaXMpOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gY2xhc3NS
ZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAg
ICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXMgPSBq
c0NsYXNzLT5zdGF0aWNWYWx1ZXMoZXhlYykpIHsKICAgICAgICAgICAgICAgICBpZiAoU3RhdGlj
VmFsdWVFbnRyeSogZW50cnkgPSBzdGF0aWNWYWx1ZXMtPmdldChuYW1lKSkgewpAQCAtNjAwLDcg
KzYwMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGlj
RnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFCiAgICAgaWYgKFBhcmVudDo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdDIpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QyLmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFt
ZSkpOwogCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsK
ICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqLT5jbGFzc1JlZigpOyBq
c0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlm
IChPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGUqIHN0YXRpY0Z1bmN0aW9ucyA9IGpz
Q2xhc3MtPnN0YXRpY0Z1bmN0aW9ucyhleGVjKSkgewogICAgICAgICAgICAgICAgIGlmIChTdGF0
aWNGdW5jdGlvbkVudHJ5KiBlbnRyeSA9IHN0YXRpY0Z1bmN0aW9ucy0+Z2V0KG5hbWUpKSB7CkBA
IC02MjYsNyArNjI2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpjYWxsYmFja0dldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWQKICAgICBKU09iamVjdFJl
ZiB0aGlzUmVmID0gdG9SZWYodGhpc09iaik7CiAgICAgUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBw
cm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2Jq
LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsK
ICAgICAgICAgICAgIGlmIChKU09iamVjdEdldFByb3BlcnR5Q2FsbGJhY2sgZ2V0UHJvcGVydHkg
PSBqc0NsYXNzLT5nZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlO
YW1lUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDI3YmM0YzE3ZjNk
ZmVlYjYxZDI1MjMyM2ZkODc4YzQ0NzgwZjc0YzUuLjQxMzRhNmMxZTNlZjMyYmU4NWE2MjQ1ZDdl
YjVlMDU1MmZlNTEzZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUy
LDYgKzUyLDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9TY3Jp
cHRPYmplY3QuY3BwCiAgICAgYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCiAKKyAgICBidWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCisKICAgICBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Q
cm9maWxlLmNwcAogICAgIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9C
eXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC04MTUsMTYgKzgxNywyNyBAQCBhZGRfY3VzdG9tX2Nv
bW1hbmQoCiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3Jl
X0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0vQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTLmpzb24gLS1vdXRwdXRf
aF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0cHV0X2Nw
cF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0cHV0X2pz
X2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIgLS1vdXRwdXRfdHlw
ZSBKYXZhU2NyaXB0IC0td3JpdGVfYWx3YXlzICYmIG1rZGlyIC1wICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yICYmIGNwICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTRnJvbnRlbmREaXNwYXRj
aGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNU
eXBlQnVpbGRlcnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3Bl
Y3RvcgogICAgIFZFUkJBVElNKQogCisjIEpTQ0J1aWx0aW5zCitmaWxlKEdMT0IgSlNDQnVpbHRp
bnNfanNfZmlsZXMgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9idWlsdGlucy8qLmpzIikK
K2FkZF9jdXN0b21fY29tbWFuZCgKKyAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19KQVZBU0NS
SVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBU
Q09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKKyAgIE1BSU5fREVQRU5ERU5DWSAke0NNQUtFX0NVUlJF
TlRfU09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMKKyAgIERFUEVORFMgJHtKU0NCdWls
dGluc19qc19maWxlc30KKyAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9D
VVJSRU5UX1NPVVJDRV9ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zICR7SlNDQnVpbHRpbnNfanNf
ZmlsZXN9ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMu
aCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcAor
ICAgVkVSQkFUSU0pCisKIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTQmFja2VuZERp
c3BhdGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0v
SW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwCisgICAgJHtE
RVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5jcHAKICkKIAog
bGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUwogICAgICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaAogICAg
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNGcm9udGVu
ZERpc3BhdGNoZXJzLmgKICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9
L0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgKKyAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NS
SVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKICkKIAogYWRkX2N1c3RvbV9jb21tYW5kKApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAxMTU2ZTk3ZmQ4ODYy
NTU3YzljZjhkM2I2OGJmNGQwM2MzZThiYThmLi4yNjZhYTVmMDgxNGI3MjBmZWI1NmI3ZDQxY2Yx
NzNjNTBjNWE0YjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQpAQCAtNTcsNiArNTcsNyBAQCBhbGwgOiBcCiAgICAgUmVnRXhwT2JqZWN0Lmx1dC5oIFwKICAg
ICBTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgdWRpczg2X2l0YWIuaCBcCisgICAgSlND
QnVpbHRpbnMgXAogIwogCiAjIGxvb2t1cCB0YWJsZXMgZm9yIGNsYXNzZXMKQEAgLTc5LDYgKzgw
LDE0IEBAIEtleXdvcmRMb29rdXAuaDogS2V5d29yZExvb2t1cEdlbmVyYXRvci5weSBLZXl3b3Jk
cy50YWJsZQogdWRpczg2X2l0YWIuaDogJChKYXZhU2NyaXB0Q29yZSkvZGlzYXNzZW1ibGVyL3Vk
aXM4Ni9pdGFiLnB5ICQoSmF2YVNjcmlwdENvcmUpL2Rpc2Fzc2VtYmxlci91ZGlzODYvb3B0YWJs
ZS54bWwKIAkoUFlUSE9OUEFUSD0kKEphdmFTY3JpcHRDb3JlKS9kaXNhc3NlbWJsZXIvdWRpczg2
IHB5dGhvbiAkKEphdmFTY3JpcHRDb3JlKS9kaXNhc3NlbWJsZXIvdWRpczg2L2l0YWIucHkgJChK
YXZhU2NyaXB0Q29yZSkvZGlzYXNzZW1ibGVyL3VkaXM4Ni9vcHRhYmxlLnhtbCB8fCBleGl0IDEp
CiAKKyMgYnVpbHRpbiBmdW5jdGlvbnMKKy5QSE9OWTogSlNDQnVpbHRpbnMKKworSlNDQnVpbHRp
bnM6IEpTQ0J1aWx0aW5zLmggSlNDQnVpbHRpbnMuY3BwCitKU0NCdWlsdGlucy5oOiAkKEphdmFT
Y3JpcHRDb3JlKS9nZW5lcmF0ZS1qcy1idWlsdGlucyAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlu
cy8qLmpzCisJcHl0aG9uICReICRACisKK0pTQ0J1aWx0aW5zLmNwcDogSlNDQnVpbHRpbnMuaAog
CiAjIEluc3BlY3RvciBpbnRlcmZhY2VzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KaW5kZXggY2RiNTQyNmIwNmI1MmE5ODI1NmVlOTA1OGJiYThmMTFlZWE2OWVl
MC4uYWZlOTY3MmI1YjFlZTkyNzExYmVkZDQ3NWU5YTEyODIwM2M4MTM2NSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTEwMiw2ICsxMDIsOCBAQCBqYXZh
c2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGlu
Z3MvU2NyaXB0T2JqZWN0LmggXAogICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9T
Y3JpcHRWYWx1ZS5jcHAgXAogICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3Jp
cHRWYWx1ZS5oIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmNwcCBcCisgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5FeGVjdXRhYmxlcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlB
bGxvY2F0aW9uUHJvZmlsZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
cnJheUFsbG9jYXRpb25Qcm9maWxlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9BcnJheVByb2ZpbGUuY3BwIFwKQEAgLTEyNDEsNyArMTI0Myw5IEBAIGphdmFzY3JpcHRjb3Jl
X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpT
RnJvbnRlbmREaXNwYXRjaGVycy5jcHAgXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3Jl
L0luc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAgXAotCURlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgKKwlEZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oIFwKKwlEZXJpdmVkU291
cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5jcHAgXAorCURlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmgKIAogbGxpbnRfbm9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagppbmRleCA1ZWRlZmRiZTg1NWY5NmE2
MjY4ZDg1NzNiZWMxZDBjM2Q4NThhYTVjLi5hMTJkYjE4MzQ4NmRmYmJjYTgzZjNhNzhlOWNmOTg2
MzFiMjY1M2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTMw
OSw2ICszMDksNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0
RnVuY3Rpb25DYWxsLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdz
XFNjcmlwdE9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xTY3JpcHRWYWx1ZS5jcHAiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxidWlsdGlu
c1xCdWlsdGluRXhlY3V0YWJsZXMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
Ynl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxieXRlY29kZVxBcnJheVByb2ZpbGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cYnl0ZWNvZGVcQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCIgLz4KQEAgLTcyMSw2
ICs3MjIsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEluc3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JKU0Zyb250ZW5kRGlz
cGF0Y2hlcnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEluc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmNwcCIgLz4KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NCdWlsdGlucy5jcHAiIC8+CiAg
IDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEFycmF5Q29uc3RydWN0b3IubHV0LmgiIC8+CkBAIC03NTAs
NiArNzUyLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xSZWdFeHBPYmplY3QubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcUmVnRXhwUHJvdG90eXBlLmx1dC5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFN0cmluZ0NvbnN0cnVjdG9y
Lmx1dC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEpTQ0J1aWx0aW5zLmgiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEFQSUNhbGxiYWNrRnVuY3Rpb24uaCIgLz4KQEAg
LTc5OCw2ICs4MDEsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2Ny
aXB0RnVuY3Rpb25DYWxsLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xTY3JpcHRPYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdz
XFNjcmlwdFZhbHVlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxidWlsdGluc1xC
dWlsdGluRXhlY3V0YWJsZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVj
b2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGJ5dGVjb2RlXEFycmF5UHJvZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cYnl0ZWNvZGVcQnlWYWxJbmZvLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRl
cnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggODdlMTJhNDcxNThiYjYyMjRkNDlmZDYyMjk3
OGM0YTljNDQzNWE2NS4uODY5YzFmNTg5YmNiNjg2ZWI5Y2YyMGMwOTZiZTFiODNhNTUxZTI0YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpA
QCAtNyw2ICs3LDkgQEAKICAgICA8RmlsdGVyIEluY2x1ZGU9ImJpbmRpbmdzIj4KICAgICAgIDxV
bmlxdWVJZGVudGlmaWVyPnswYmFjZTEyMy00NTgyLWVlYmMtOTMxNC03ODE5YjM3NmMxOTh9PC9V
bmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iYnVp
bHRpbnMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezNiOWQ3MmE1LTEzNWItNDNiMy1hNTI0
LWM2ZDJiOWQyOWQzNX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CiAgICAgPEZp
bHRlciBJbmNsdWRlPSJieXRlY29kZSI+CiAgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NzY2MDg4
YTAtMTIxNi00ODU0LWFhNDMtNTYwYzVlMjgzNjY4fTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8
L0ZpbHRlcj4KQEAgLTEwOCw2ICsxMTEsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
YXNzZW1ibGVyXE1hY3JvQXNzZW1ibGVyLmNwcCI+CiAgICAgICA8RmlsdGVyPmFzc2VtYmxlcjwv
RmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnVp
bHRpbnNcQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCI+CisgICAgICA8RmlsdGVyPmJ1aWx0aW5zPC9G
aWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRl
Y29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCI+CiAgICAgICA8RmlsdGVyPmJ5dGVjb2Rl
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0xMzI5LDYgKzEzMzUsOSBAQAogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTVHlw
ZUJ1aWxkZXJzLmNwcCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmNwcCI+CisgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNl
czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91
cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxBUElDYWxsYmFja0Z1bmN0aW9uLmgi
PgpAQCAtMTQ1NCw2ICsxNDYzLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFzc2Vt
YmxlclxYODZBc3NlbWJsZXIuaCI+CiAgICAgICA8RmlsdGVyPmFzc2VtYmxlcjwvRmlsdGVyPgog
ICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnVpbHRpbnNcQnVp
bHRpbkV4ZWN1dGFibGVzLmgiPgorICAgICAgPEZpbHRlcj5idWlsdGluczwvRmlsdGVyPgorICAg
IDwvQ2xDb21waWxlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlB
bGxvY2F0aW9uUHJvZmlsZS5oIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAg
ICA8L0NsSW5jbHVkZT4KQEAgLTI1NTAsNiArMjU2Miw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcQXJyYXlQcm90b3R5cGUubHV0LmgiPgogICAg
ICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NCdWlsdGlu
cy5oIj4KKyAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CisgICAgPC9DbElu
Y2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFZNLmgiPgogICAgICAg
PEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDI3ZTg3Njc0MGE5NjRiMDI4OTg0ZWQ2NzgxNjE4MjBhNWRjZjc3
YzQuLjkxMTU3M2FiMTdkMzM5NzRhYTdjOWEwMTFkYjIwMGIwOWFmNzhiZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MjIsNyArOTIyLDYgQEAKIAkJQTUwM0ZBMTkxODhFMEZC
MDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTMxODhFMEZBRjAwMTEwRjE0IC8qIEph
dmFTY3JpcHRDYWxsRnJhbWUuY3BwICovOyB9OwogCQlBNTAzRkExQTE4OEUwRkIwMDAxMTBGMTQg
LyogSmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTUwM0ZBMTQxODhFMEZBRjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxs
RnJhbWUuaCAqLzsgfTsKIAkJQTUwM0ZBMUIxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlw
dENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTAzRkExNTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNw
cCAqLzsgfTsKLQkJQTUwM0ZBMUMxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxG
cmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUw
M0ZBMTYxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9Owog
CQlBNTAzRkExRDE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90
eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
MDNGQTE3MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUu
Y3BwICovOyB9OwogCQlBNTAzRkExRTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2Fs
bEZyYW1lUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNTAzRkExODE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1l
UHJvdG90eXBlLmggKi87IH07CiAJCUE1MDNGQTIxMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRC
cmVha3BvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNTAzRkExRjE4OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0QnJlYWtwb2ludC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDI0LDYgKzEwMjMs
NyBAQAogCQlBNzBCMDgzMjE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MEIwODMwMTdB
MEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guY3BwICovOyB9OwogCQlBNzBCMDgzMzE3
QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzBCMDgzMTE3QTBCNzlCMDBEQUYxNEIgLyogREZH
QmluYXJ5U3dpdGNoLmggKi87IH07CiAJCUE3MTIzNkU1MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRP
cGNvZGVzMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTcxMjM2RTQxMTk1RjMzQzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgKi87
IH07CisJCUE3MURBODBGMTg4MERCQUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MURBODBFMTg4MERC
QUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzIwMjhCNjE3OTc2MDFFMDA5ODAyOEMgLyogSlND
VGVzdFJ1bm5lclV0aWxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3MjAyOEI0MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMu
Y3BwICovOyB9OwogCQlBNzIwMjhCODE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0
aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIw
MjhCNTE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcyMDI4QkExNzk3NjAzRDAw
OTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIwMjhCOTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlv
bklubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTE1MCw2ICsxMTUwLDEwIEBACiAJCUE3Q0EzQUU4MTdEQTQxQUUwMDY1MzhBRiAvKiBK
U1dlYWtNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3Q0EzQUUyMTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuaCAqLzsgfTsKIAkJQTdDQTNB
RUIxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0EzQUU5MTdEQTUxNjgwMDY1MzhBRiAvKiBX
ZWFrTWFwRGF0YS5jcHAgKi87IH07CiAJCUE3Q0EzQUVDMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFr
TWFwRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTdDQTNBRUExN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmggKi87IH07CisJCUE3RDgw
MUE0MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTExODgwRDY2RTAwMjZD
MzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi87IH07CisJCUE3RDgwMUE1MTg4MEQ2NkUw
MDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGlu
RXhlY3V0YWJsZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlBN0Q4MDFBODE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTYxODgwRDZB
ODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCAqLzsgfTsKKwkJQTdEODAxQTkxODgwRDZBODAw
MjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBN0Q4MDFBNzE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBN0Q4OUNG
MjE3QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4OUNFMzE3QTBCOENDMDA3NzNBRDggLyog
REZHQmFzaWNCbG9jay5jcHAgKi87IH07CiAJCUE3RDg5Q0YzMTdBMEI4Q0MwMDc3M0FEOCAvKiBE
RkdCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBN0Q4OUNFNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRp
b25TZXQuY3BwICovOyB9OwogCQlBN0Q4OUNGNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJ
bnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3RDg5Q0U1MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNDYyLDYg
KzI0NjYsOCBAQAogCQlBNzEyMzZFNDExOTVGMzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVE9wY29kZXMzMl82
NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MThGNjFBMTE3NTRBMjEwMDI0
NjVBNyAvKiBSZWdFeHBKaXRUYWJsZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVnRXhwSml0VGFibGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MThG
ODIxMTE3OEVCNEIwMDI0NjVBNyAvKiBjcmVhdGVfcmVnZXhfdGFibGVzICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IGZp
bGVFbmNvZGluZyA9IDQ7IHBhdGggPSBjcmVhdGVfcmVnZXhfdGFibGVzOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBNzFEQTgwRDE4ODBENzFGMDBEMUYyOTkgLyogZ2VuZXJhdGUtanMt
YnVpbHRpbnMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSAiZ2VuZXJhdGUt
anMtYnVpbHRpbnMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzFEQTgwRTE4ODBE
QkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTU3RyaW5nSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNzIwMjhCNDE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI1MTc5NzYwMUUwMDk4MDI4QyAv
KiBKU0NUZXN0UnVubmVyVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNDVGVzdFJ1bm5lclV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAy
OEI5MTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0Z1bmN0aW9uSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjU5MCw2ICsyNTk2LDExIEBACiAJCUE3Q0EzQUUyMTdEQTQxQUUwMDY1
MzhBRiAvKiBKU1dlYWtNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNX
ZWFrTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Q0EzQUU5MTdEQTUxNjgw
MDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWFrTWFwRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3
Q0EzQUVBMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWFrTWFwRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBN0Q4MDFBMDE4ODBENjZFMDAyNkMzOUIgLyogQXJyYXkucHJvdG90eXBlLmpzICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gQXJyYXkucHJvdG90eXBlLmpzOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFBMTE4ODBENjZFMDAyNkMzOUIgLyog
QnVpbHRpbkV4ZWN1dGFibGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVpbHRpbkV4ZWN1dGFibGVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWls
dGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NCdWlsdGlu
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUE3MTg4MEQ2QTgwMDI2
QzM5QiAvKiBKU0NCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0NCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0Q4OUNFMzE3QTBC
OENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBERkdCYXNpY0Jsb2NrLmNwcDsgcGF0aCA9IGRmZy9ERkdCYXNpY0Jsb2Nr
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdEODlDRTQxN0EwQjhDQzAwNzcz
QUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcDsgcGF0aCA9IGRmZy9ERkdCbG9j
a0luc2VydGlvblNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RDg5Q0U1
MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCbG9ja0luc2VydGlvblNldC5oOyBwYXRoID0gZGZnL0RG
R0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTI2
LDYgKzI5MzcsNyBAQAogCQkJCTg2MDRGNEYyMTQzQTZDNDQwMEIyOTVGNSAvKiBDaGFuZ2VMb2cg
Ki8sCiAJCQkJRjY5MkE4NTQwMjU1NTk3RDAxRkY2MEY3IC8qIGNyZWF0ZV9oYXNoX3RhYmxlICov
LAogCQkJCUE3MThGODIxMTE3OEVCNEIwMDI0NjVBNyAvKiBjcmVhdGVfcmVnZXhfdGFibGVzICov
LAorCQkJCUE3MURBODBEMTg4MEQ3MUYwMEQxRjI5OSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAq
LywKIAkJCQk0NUUxMkQ4ODA2QTQ5QjBGMDBFOURGODQgLyoganNjLmNwcCAqLywKIAkJCQlGNjhF
QkI4QzAyNTVENEM2MDFGRjYwRjcgLyogY29uZmlnLmggKi8sCiAJCQkJRjVDMjkwRTYwMjg0Rjk4
RTAxODYzNUNBIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggKi8sCkBAIC0yOTM0LDYgKzI5NDYs
NyBAQAogCQkJCTE0MzJFQkQ3MEEzNENBRDQwMDcxN0I5RiAvKiBBUEkgKi8sCiAJCQkJOTY4OENC
MTIwRUQxMkI0RTAwMUQ2NDlGIC8qIGFzc2VtYmxlciAqLywKIAkJCQlBNTRDRjJFQTE4NEVBNzM5
MDAyMzdGMTkgLyogYmluZGluZ3MgKi8sCisJCQkJQTdEODAxOUYxODgwRDY2RTAwMjZDMzlCIC8q
IGJ1aWx0aW5zICovLAogCQkJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAq
LywKIAkJCQk3RTM5RDgxRDBFQzM4RUZBMDAzQUYxMUEgLyogYnl0ZWNvbXBpbGVyICovLAogCQkJ
CTFDOTA1MTNFMEJBOUU4ODMwMDgxRTlEMCAvKiBDb25maWd1cmF0aW9ucyAqLywKQEAgLTM1MDks
NiArMzUyMiw4IEBACiAJCTY1MEZERjhEMDlEMEZDQTcwMDc2OUU1NCAvKiBEZXJpdmVkIFNvdXJj
ZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUE3RDgw
MUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgKi8sCisJCQkJQTdEODAxQTcx
ODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggKi8sCiAJCQkJQkMxOEM1MjMwRTE2RkM4
QTAwQjM0NDYwIC8qIEFycmF5UHJvdG90eXBlLmx1dC5oICovLAogCQkJCUJDRDIwM0U3MEUxNzE4
RjQwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmx1dC5oICovLAogCQkJCUE1MTNFNUM2MTg1Rjk0
MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICovLApAQCAtMzgxMSw2ICszODI2
LDcgQEAKIAkJCQlBNzkwREQ2QTE4MkY0OTk3MDA1ODg4MDcgLyogSlNTZXRJdGVyYXRvci5oICov
LAogCQkJCUJDMDJFOUI2MEUxODQyRkEwMDBGOTI5NyAvKiBKU1N0cmluZy5jcHAgKi8sCiAJCQkJ
RjY5MkE4NjIwMjU1NTk3RDAxRkY2MEY3IC8qIEpTU3RyaW5nLmggKi8sCisJCQkJQTcxREE4MEUx
ODgwREJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oICovLAogCQkJCTg2RTg1NTM4MTEx
Qjk5NjgwMDFBRjUxRSAvKiBKU1N0cmluZ0J1aWxkZXIuaCAqLywKIAkJCQkyNjAwQjVBNDE1MkJB
QUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuY3BwICovLAogCQkJCTI2MDBCNUE1MTUyQkFB
QTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5oICovLApAQCAtNDU2MSw2ICs0NTc3LDE2IEBA
CiAJCQlwYXRoID0gcmVtb3RlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJ
QTdEODAxOUYxODgwRDY2RTAwMjZDMzlCIC8qIGJ1aWx0aW5zICovID0geworCQkJaXNhID0gUEJY
R3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlBN0Q4MDFBMDE4ODBENjZFMDAyNkMzOUIgLyog
QXJyYXkucHJvdG90eXBlLmpzICovLAorCQkJCUE3RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBC
dWlsdGluRXhlY3V0YWJsZXMuY3BwICovLAorCQkJCUE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAv
KiBCdWlsdGluRXhlY3V0YWJsZXMuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gYnVpbHRpbnM7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24g
Ki8KIAogLyogQmVnaW4gUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtNDYwNiwx
MSArNDYzMiwxMSBAQAogCQkJCTg2QUREMTQ1MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2Vt
Ymxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVDRUVFMTUxODdGM0JBRDAwRTU1Qzk5IC8qIElu
c3BlY3RvckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUMwMjg1RDE3MTc5NjY4MDAzNTFF
MzUgLyogQVJNdjdET3Bjb2RlLmggaW4gSGVhZGVycyAqLywKLSAJCQkJMkE2ODI5NUIxODc1Rjgw
NTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovLAotICAgICAgICAg
ICAgICAgIDJBNEVDOTBDMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTJBNjgyOTVCMTg3NUY4MDUwMEI2QzNFMiAvKiBDb3B5V3JpdGVC
YXJyaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkyQTRFQzkwQzE4NjBENkMyMDA5NEY3ODIgLyog
V3JpdGVCYXJyaWVyQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTU5MzJBODE4M0M1QTI2
MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTMyNDM5MzE4
NTY5NzA5MDAyRUQ2OTIgLyogQ29kZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3MucHkgaW4gSGVh
ZGVycyAqLywKLSAJCQkJQTUzMjQzOTIxODU2OTcwOTAwMkVENjkyIC8qIENvZGVHZW5lcmF0b3JJ
bnNwZWN0b3IucHkgaW4gSGVhZGVycyAqLywKKwkJCQlBNTMyNDM5MjE4NTY5NzA5MDAyRUQ2OTIg
LyogQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTRG
MTdFRTI3NDkwMEFCQjIxNyAvKiBUZW1wUmVnaXN0ZXJTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE1MEU0QjY0MTg4MDlERDUwMDY4QTQ2RCAvKiBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkVCNThDMTUxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFu
ZGxpbmdTY29wZS5oIGluIEhlYWRlcnMgKi8sCkBAIC00NjIyLDcgKzQ2NDgsNyBAQAogCQkJCTBG
ODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTg0MEUyOTE4N0NBNUU2MDA4NDNCMTAgLyogaW5saW5lLWFuZC1taW5p
Znktc3R5bGVzaGVldHMtYW5kLXNjcmlwdHMucHkgaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUy
QjE4N0NBNzVCMDA4NDNCMTAgLyoganNtaW4ucHkgaW4gSGVhZGVycyAqLywKLSAJCQkJQTUzMjQz
OTgxODU2QTQ4OTAwMkVENjkyIC8qIEluc3BlY3RvckpTLmpzb24gaW4gSGVhZGVycyAqLywKKwkJ
CQlBNTMyNDM5ODE4NTZBNDg5MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlMuanNvbiBpbiBIZWFkZXJz
ICovLAogCQkJCUE1ODQwRTJBMTg3Q0E3NTkwMDg0M0IxMCAvKiB4eGQucGwgaW4gSGVhZGVycyAq
LywKIAkJCQlGRUEwODYyMDE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTdBOEFGMzUxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTQ3MzMsNyArNDc1OSw3IEBACiAJCQkJQTFBMDA5QzAxODMxQTIyRDAw
Q0Y4NzExIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUM5
REM1MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY0ODUzMjgxODdERkRFQzAwODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5Lmgg
aW4gSGVhZGVycyAqLywKLSAgICAgICAgICAgICAgICBBNTkzQ0Y4NzE4NDAzOENBMDBCRkNFMjcg
LyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU5M0NGODcx
ODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMjU2QzM2MTYyN0IwQUQwMDdGMjc4MyAvKiBERkdDYWxsQXJyYXlBbGxvY2F0b3JT
bG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5NEIxNEMzQ0QyRjAw
N0MzREIxIC8qIERGR0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NTgx
NEVGOTBBMjAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTQ4NzIs
NiArNDg5OCw3IEBACiAJCQkJMEZFQTBBMUQxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0
SGVhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMUYxNzA4QjAwNzAwQkI3MjJDIC8qIEZU
TEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1OTQ1NTkzMTgy
NDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCUE3RDgwMUE5MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZFQTBBMEExNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0ODUzMkExODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292
ZXJ5T3Bjb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEEyMzE3MDk2MDY5MDBCQjcyMkMg
LyogRlRMQ29tbW9uVmFsdWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTQ5NDYsNiArNDk3Myw3IEBA
CiAJCQkJQkMxOEM0MEYwRTE2RjVDRDAwQjM0NDYwIC8qIElkZW50aWZpZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUMyNUY4QkNFMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk5MTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGlu
Z0hlYWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdEODAxQTUxODgwRDY2RTAwMjZDMzlCIC8q
IEJ1aWx0aW5FeGVjdXRhYmxlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOUExNUVEOEU0
NjAwRjE2N0IyIC8qIEluZGV4aW5nSGVhZGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZCN0YzOUIxNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nVHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZDRUZBQjAxODA1Q0E2RDAwNDcyQ0U0IC8qIEluaXRpYWxpemVMTFZNLmggaW4gSGVh
ZGVycyAqLywKQEAgLTUyMTgsNiArNTI0Niw3IEBACiAJCQkJQTUzMjQzODgxODU2ODMzNTAwMkVE
NjkyIC8qIEluc3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzE4QzQ1NjBFMTZGNUNEMDBCMzQ0NjAgLyogUHJvdGVjdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTQ3NEMzM0IxNkFBMkQ5NTAwNjJGMDFEIC8qIFByb3RvdHlwZU1hcC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQTcxREE4MEYxODgwREJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQxNENBN0REOTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0
dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXRE
aXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDMDA4Q0U3MTg3NjMxQjYwMDk1
NUMyNCAvKiBNaWNyb3Rhc2suaCBpbiBIZWFkZXJzICovLApAQCAtNTgzNiw2ICs1ODY1LDcgQEAK
IAkJCQlBN0Q4OUNGMjE3QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBNzBCMDgzMjE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNo
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDg5Q0YzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdC
bG9ja0luc2VydGlvblNldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBN0Q4MDFBNDE4ODBENjZF
MDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2
RUM5REM0MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkQ4MkUyMTE0MTcyQ0UzMDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0aWVzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGRkZDOTU3MTRFRjkwQTAwMEM3MjUzMiAvKiBERkdDRkFQ
aGFzZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU4NTIsNiArNTg4Miw3IEBACiAJCQkJMEZGRkM5
NTkxNEVGOTBBNjAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMkZDNzcyMTZFMTJGNzEwMDM4RDk3NiAvKiBERkdEQ0VQaGFzZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjhGMkI5OTE3MkYwNEZGMDA3REJEQTUgLyogREZHRGVzaXJlZElkZW50aWZpZXJz
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3RDgwMUE4MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NC
dWlsdGlucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzNFMTMzMDE3OTYyNENEMDBFNERFQTgg
LyogREZHRGVzaXJlZFN0cnVjdHVyZUNoYWlucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkMw
RjdDRDE3QkJGQzVCMDA0NjRGRTQgLyogREZHRGVzaXJlZFRyYW5zaXRpb25zLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRTg1MzRCMTcyM0NEQTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hw
b2ludHMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01OTc2LDcgKzYwMDcsNyBAQAogCQkJCTBGNkIx
Q0M1MTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExVbndpbmRJbmZvLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGOUQzMzlBMTgwM0FEQjcwMDczQzJCQyAvKiBGVExTdGFja01hcHMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZFQTBBMTYxNzA2QkI5MDAwQkI3MjJDIC8qIEZUTFN0YXRlLmNwcCBpbiBT
b3VyY2VzICovLAotIAkJCQk3QzAwOENEMjE4NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9taXNlRnVu
Y3Rpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDMDA4Q0QyMTg2RjhBOTMwMDk1NUMyNCAv
KiBKU1Byb21pc2VGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2QjFDQjUxODVG
QzlFOTAwODQ1RDk3IC8qIEZUTEpTQ2FsbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJF
MTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1
OTNDRjdDMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTGlua0J1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtC
dWZmZXIuY3BwCmluZGV4IGFmMTRlMzNlYWMwNTk3ZjJkNzhjNGIzY2QxNjM1NDExZGFiYTk2NWUu
LjY3OTIzZjA4MjNjMmZiYWIzMTEyOGFkYjUxOWRjODllYTAyYjY1MGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcApAQCAtMzAsNiArMzAsNyBA
QAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgorI2luY2x1
ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUg
IlZNLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBpbGF0aW9uVGhyZWFkLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
ZWI0MmY1Y2M0MzNmMTYzNjM0M2JmYzk4MmFhMmFhZmIzMzZlOTQ5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcwpAQCAt
MCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworZnVuY3Rpb24gZXZlcnkoY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pIHsKKyAgICAidXNlIHN0
cmljdCI7CisgICAgaWYgKHRoaXMgPT09IG51bGwpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVy
cm9yKCJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51
bGwiKTsKKyAgICAKKyAgICBpZiAodGhpcyA9PT0gdW5kZWZpbmVkKQorICAgICAgICB0aHJvdyBu
ZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8
IG5vdCBiZSB1bmRlZmluZWQiKTsKKyAgICAKKyAgICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMp
OworICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGggPj4+IDA7CisgICAgCisgICAgaWYgKHR5
cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJy
b3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsK
KworICAgIHZhciB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0g
OiB1bmRlZmluZWQ7CisgICAgCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykg
eworICAgICAgICBpZiAoIShpIGluIGFycmF5KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBpZiAoIWNhbGxiYWNrLkBjYWxsKHRoaXNBcmcsIGFycmF5W2ldLCBpLCBhcnJheSkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHJldHVybiB0cnVlOwor
fQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0MWRiYjVmOTIyNWUyOGExMmVkM2QxNzk4ZmYxNzY4
ZTQzNjcxYTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgi
CisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVz
LmgiCisjaW5jbHVkZSAiUGFyc2VyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitCdWlsdGluRXhl
Y3V0YWJsZXM6OkJ1aWx0aW5FeGVjdXRhYmxlcyhWTSYgdm0pCisgICAgOiBtX3ZtKHZtKQorI2Rl
ZmluZSBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1l
LCBsZW5ndGgpICwgbV8jI25hbWUjI1NvdXJjZShtYWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0
ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgpLCBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0
ZXJhbCgiPGJ1aWx0aW4+IikpKQorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4oSU5JVElBTElaRV9C
VUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX1NUUklOR1MKK3sK
K30KKworVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3Jl
YXRlQnVpbHRpbkV4ZWN1dGFibGUoY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lKQoreworICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmU7CisgICAgUGFyc2VyRXJyb3IgZXJyb3I7CisgICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBw
cm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KCZtX3ZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIo
KSwgSlNQYXJzZUJ1aWx0aW4sIEpTUGFyc2VQcm9ncmFtQ29kZSwgZXJyb3IsICZwb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lKTsKKworICAgIGlmICghcHJvZ3JhbSkgeworICAgICAgICBkYXRhTG9n
KCJGYXRhbCBlcnJvciBjb21waWxpbmcgYnVpbHRpbiBmdW5jdGlvbiAnIiwgbmFtZS5zdHJpbmco
KSwgIic6ICIsIGVycm9yLm1fbWVzc2FnZSk7CisgICAgICAgIENSQVNIKCk7CisgICAgfQorCisg
ICAgU3RhdGVtZW50Tm9kZSogZXhwclN0YXRlbWVudCA9IHByb2dyYW0tPnNpbmdsZVN0YXRlbWVu
dCgpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQpOworICAgIFJFTEVBU0VfQVNT
RVJUKGV4cHJTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKKyAgICBFeHByZXNzaW9uTm9k
ZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVtZW50Tm9kZSo+KGV4cHJTdGF0ZW1l
bnQpLT5leHByKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHIpOworICAgIFJFTEVBU0Vf
QVNTRVJUKGZ1bmNFeHByLT5pc0Z1bmNFeHByTm9kZSgpKTsKKyAgICBGdW5jdGlvbkJvZHlOb2Rl
KiBib2R5ID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZnVuY0V4cHIpLT5ib2R5KCk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoIXByb2dyYW0tPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpOworICAg
IAorICAgIGJvZHktPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKGJvZHkpOworICAgIFJFTEVBU0VfQVNTRVJUKGJvZHktPmlkZW50
KCkuaXNOdWxsKCkpOworICAgIAorICAgIC8vIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBhbiBpbnB1
dCBzdHJpbmcgdGhhdCB3b3VsZCByZXN1bHQgaW4gYSBzaW5nbGUgYW5vbnltb3VzIGZ1bmN0aW9u
IGV4cHJlc3Npb24uCisgICAgYm9keS0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keSk7CisgICAgZm9yIChjb25zdCBhdXRv
JiBjbG9zZWRWYXJpYWJsZSA6IHByb2dyYW0tPmNsb3NlZFZhcmlhYmxlcygpKSB7CisgICAgICAg
IGlmIChjbG9zZWRWYXJpYWJsZSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cy5pbXBs
KCkpCisgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgaWYgKGNsb3NlZFZhcmlh
YmxlID09IG1fdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZC5pbXBsKCkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2xvc2VkVmFyaWFibGUt
PmlzRW1wdHlVbmlxdWUoKSk7CisgICAgfQorICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRl
KCZtX3ZtLCBzb3VyY2UsIGJvZHksIHRydWUsIFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uKTsKKyAg
ICBmdW5jdGlvbkV4ZWN1dGFibGUtPm1fbmFtZVZhbHVlLnNldChtX3ZtLCBmdW5jdGlvbkV4ZWN1
dGFibGUsIGpzU3RyaW5nKCZtX3ZtLCBuYW1lLnN0cmluZygpKSk7CisgICAgcmV0dXJuIGZ1bmN0
aW9uRXhlY3V0YWJsZTsKK30KKworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUyhu
YW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IEJ1aWx0aW5FeGVjdXRhYmxlczo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK3tcCisgICAgaWYgKCFt
XyMjbmFtZSMjRXhlY3V0YWJsZSlcCisgICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gY3Jl
YXRlQnVpbHRpbkV4ZWN1dGFibGUobV8jI25hbWUjI1NvdXJjZSwgbV92bS5wcm9wZXJ0eU5hbWVz
LT5mdW5jdGlvbk5hbWUpO1wKKyAgICByZXR1cm4gbV8jI25hbWUjI0V4ZWN1dGFibGUuZ2V0KCk7
XAorfQorSlNDX0ZPUkVBQ0hfQlVJTFRJTihERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1
bmRlZiBFWFBPU0VfQlVJTFRJTl9TT1VSQ0VTCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOWExOWUy
NjE1MDc5NGE2NjllYzk4ZTM5OWJmNjdmN2Y3MTA2NDE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCkBAIC0wLDAg
KzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEJ1aWx0aW5FeGVjdXRhYmxlc19oCisjZGVmaW5lIEJ1aWx0aW5FeGVjdXRhYmxlc19o
CisKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgorI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKKyNp
bmNsdWRlICJXZWFrLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgSWRlbnRp
ZmllcjsKK2NsYXNzIFZNOworCitjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXMgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEJ1aWx0aW5FeGVjdXRhYmxlcz4gY3JlYXRlKFZNJiB2bSkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQnVpbHRpbkV4ZWN1dGFibGVzKHZt
KSk7CisgICAgfQorICAgIAorI2RlZmluZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1l
LCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5h
bWUjI0V4ZWN1dGFibGUoKTsgXAorY29uc3QgU291cmNlQ29kZSYgbmFtZSMjU291cmNlKCkgeyBy
ZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsgfQorICAgIAorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4o
RVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgRVhQT1NFX0JVSUxUSU5fU09VUkNF
UworICAgIAorcHJpdmF0ZToKKyAgICBCdWlsdGluRXhlY3V0YWJsZXMoVk0mKTsKKyAgICBWTSYg
bV92bTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1
dGFibGUoY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImKTsKKyNkZWZpbmUgREVD
TEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKVwK
KyAgICBTb3VyY2VDb2RlIG1fIyNuYW1lIyNTb3VyY2U7IFwKKyAgICBXZWFrPFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlPiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKKyAgICBKU0NfRk9SRUFDSF9C
VUlMVElOKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JV
SUxUSU5fU09VUkNFX01FTUJFUlMKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCmluZGV4IDRjMDU1ZmVhNTczOGYx
YzQ2MzI2NmQ0ZTlhOTE1NDhhMTI5MzQ3MDkuLmVhZWZlNTRmMmQxNTI4NGI2NGJmNjk5NzI2NThj
ZDFjNjNiNGVhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
cnJheVByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eVByb2ZpbGUuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQXJyYXlQcm9maWxlLmgi
CiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5o
IgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0
cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCmluZGV4
IGQ3NDg5ZDMxYWJkN2M5OWYxYmM2ZmFmYWU2NTgxMTEyYWJkYWNmZGIuLjFhM2I1ZjRjNzgwN2I5
NDg4ZmYzNjU3MmY3OTRkMGJiOWYzOGQyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC0yNyw2ICsyNyw3IEBA
CiAjaW5jbHVkZSAiQnl0ZWNvZGVCYXNpY0Jsb2NrLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2su
aCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1w
VGFyZ2V0cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMjYzZWM3Y2FkZjRmNzljYTgxMDI0NDFlNjJiZjJh
MDViNWRkYzNmMi4uNzUxNTA2NTQyMzc2ZDdlZGM1OTlhYTAwZjliMTI2ODVjZGEzNTJjZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTQzLDEx
ICs0MywxMyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5j
bHVkZSAiSlNBY3RpdmF0aW9uLmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUg
IkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50LmgiCiAjaW5jbHVkZSAi
TG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk5hdGl2ZUVycm9yQ29uc3RydWN0b3Iu
aCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMu
aCIKICNpbmNsdWRlICJQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmgiCiAjaW5jbHVkZSAiUmVkdWNl
V2hpdGVzcGFjZS5oIgpAQCAtMTU2OSw3ICsxNTcxLDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2so
U2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5s
aW4KIAogICAgIHNldENvbnN0YW50UmVnaXN0ZXJzKHVubGlua2VkQ29kZUJsb2NrLT5jb25zdGFu
dFJlZ2lzdGVycygpKTsKICAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPnVzZXNHbG9iYWxPYmpl
Y3QoKSkKLSAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1t1bmxpbmtlZENvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0UmVnaXN0ZXIoKS5vZmZzZXQoKV0uc2V0KCptX3ZtLCBvd25lckV4ZWN1dGFibGUs
IG1fZ2xvYmFsT2JqZWN0LmdldCgpKTsKKyAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1t1bmxp
bmtlZENvZGVCbG9jay0+Z2xvYmFsT2JqZWN0UmVnaXN0ZXIoKS50b0NvbnN0YW50SW5kZXgoKV0u
c2V0KCptX3ZtLCBvd25lckV4ZWN1dGFibGUsIG1fZ2xvYmFsT2JqZWN0LmdldCgpKTsKICAgICBt
X2Z1bmN0aW9uRGVjbHMucmVzaXplVG9GaXQodW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mRnVu
Y3Rpb25EZWNscygpKTsKICAgICBmb3IgKHNpemVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJsb2Nr
LT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSwgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAg
ICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUgPSB1bmxp
bmtlZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDY4YmMwMzc5ZjU3NDRjOWE4Zjc0MzFkYjY0ZjhhYjU0
ZTZlMTA1M2YuLjQ5OTVjNTJjZjhiMmIxYjRkNjI4MDQ1M2VlZDI3Yzc3NGE0OTU1OGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTU2LDcgKzU2LDYg
QEAKICNpbmNsdWRlICJIYW5kbGVySW5mby5oIgogI2luY2x1ZGUgIk9iamVjdEFsbG9jYXRpb25Q
cm9maWxlLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIK
ICNpbmNsdWRlICJQdXRQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgog
I2luY2x1ZGUgIkpJVENvZGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dh
dGNocG9pbnQuY3BwCmluZGV4IDk4NmUwM2QwY2JhNzE4NWIzOWNlZTAyM2Y0YWI2YmM5YjhjY2I2
ZTQuLjZmMmQ1ZWJhMWNhNDVkZGViMWRmNjVmZDA1MTIzM2U1ZjEzOGJlMGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29u
aW5nV2F0Y2hwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1By
b2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgogI2luY2x1
ZGUgIkRGR0V4aXRQcm9maWxlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDFkZmI1YWM2YWQ5MDkzZjhmODExMDFlZjdm
MmU2MTIzMTFhYzE5MzkuLjQzMzkwZDk2NWZjNTAzNDAxNmY3YmZmZjIzZTY4YmIxZTA1NDU1MmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcApAQCAtNDksOSArNDksOSBAQCBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRQcm9n
cmFtQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2siLAogY29u
c3QgQ2xhc3NJbmZvIFVubGlua2VkRXZhbENvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRF
dmFsQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShV
bmxpbmtlZEV2YWxDb2RlQmxvY2spIH07CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayIsICZCYXNl
OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jaykgfTsKIAotc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlRnVu
Y3Rpb25Db2RlQmxvY2soVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtp
bmQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUs
IFBhcnNlckVycm9yJiBlcnJvcikKK3N0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBn
ZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKFZNJiB2bSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJv
ZmlsZXJNb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBmdW5jdGlvbktpbmQsIFBhcnNlckVycm9y
JiBlcnJvcikKIHsKLSAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSA9IHBhcnNlPEZ1
bmN0aW9uQm9keU5vZGU+KCZ2bSwgc291cmNlLCBleGVjdXRhYmxlLT5wYXJhbWV0ZXJzKCksIGV4
ZWN1dGFibGUtPm5hbWUoKSwgZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFy
c2VTdHJpY3QgOiBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlRnVuY3Rpb25Db2RlLCBlcnJvcik7Cisg
ICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGJvZHkgPSBwYXJzZTxGdW5jdGlvbkJvZHlOb2Rl
Pigmdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+cGFyYW1ldGVycygpLCBleGVjdXRhYmxlLT5uYW1l
KCksIGV4ZWN1dGFibGUtPnRvU3RyaWN0bmVzcygpLCBKU1BhcnNlRnVuY3Rpb25Db2RlLCBlcnJv
cik7CiAKICAgICBpZiAoIWJvZHkpIHsKICAgICAgICAgQVNTRVJUKGVycm9yLm1fdHlwZSAhPSBQ
YXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIFVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZtLCBVbmxp
bmtlZEZ1bmMKICAgICBib2R5LT5maW5pc2hQYXJzaW5nKGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMo
KSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT5mdW5jdGlvbk5hbWVJc0luU2NvcGVU
b2dnbGUoKSk7CiAgICAgZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2UoYm9keS0+ZmVhdHVyZXMoKSwg
Ym9keS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCi0gICAgVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKCZ2
bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5mbyhib2R5LT5uZWVkc0FjdGl2YXRpb24oKSwg
Ym9keS0+dXNlc0V2YWwoKSwgYm9keS0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNv
bnN0cnVjdCkpOworICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmdm0sIEZ1bmN0aW9uQ29kZSwgRXhlY3V0YWJs
ZUluZm8oYm9keS0+bmVlZHNBY3RpdmF0aW9uKCksIGJvZHktPnVzZXNFdmFsKCksIGJvZHktPmlz
U3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2luZCA9PSBV
bmxpbmtlZEJ1aWx0aW5GdW5jdGlvbikpOwogICAgIE93blB0cjxCeXRlY29kZUdlbmVyYXRvcj4g
Z2VuZXJhdG9yKGFkb3B0UHRyKG5ldyBCeXRlY29kZUdlbmVyYXRvcih2bSwgYm9keS5nZXQoKSwg
cmVzdWx0LCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSkpKTsKICAgICBlcnJvciA9IGdlbmVy
YXRvci0+Z2VuZXJhdGUoKTsKICAgICBib2R5LT5kZXN0cm95RGF0YSgpOwpAQCAtODIsMTMgKzgy
LDE0IEBAIHVuc2lnbmVkIFVubGlua2VkQ29kZUJsb2NrOjphZGRPckZpbmRDb25zdGFudChKU1Zh
bHVlIHYpCiAgICAgcmV0dXJuIGFkZENvbnN0YW50KHYpOwogfQogCi1VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlOb2RlKiBu
b2RlLCBib29sIGlzRnJvbUdsb2JhbENvZGUpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlLCBib29sIGlz
RnJvbUdsb2JhbENvZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQpCiAgICAgOiBCYXNlKCp2
bSwgc3RydWN0dXJlKQogICAgICwgbV9udW1DYXB0dXJlZFZhcmlhYmxlcyhub2RlLT5jYXB0dXJl
ZFZhcmlhYmxlQ291bnQoKSkKICAgICAsIG1fZm9yY2VVc2VzQXJndW1lbnRzKG5vZGUtPnVzZXNB
cmd1bWVudHMoKSkKICAgICAsIG1faXNJblN0cmljdENvbnRleHQobm9kZS0+aXNTdHJpY3RNb2Rl
KCkpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKG5vZGUtPmhhc0NhcHR1cmVkVmFyaWFi
bGVzKCkpCiAgICAgLCBtX2lzRnJvbUdsb2JhbENvZGUoaXNGcm9tR2xvYmFsQ29kZSkKKyAgICAs
IG1faXNCdWlsdGluRnVuY3Rpb24oa2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbikKICAg
ICAsIG1fbmFtZShub2RlLT5pZGVudCgpKQogICAgICwgbV9pbmZlcnJlZE5hbWUobm9kZS0+aW5m
ZXJyZWROYW1lKCkpCiAgICAgLCBtX3BhcmFtZXRlcnMobm9kZS0+cGFyYW1ldGVycygpKQpAQCAt
MTY2LDcgKzE2Nyw3IEBAIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjpjb2RlQmxvY2tGb3IoVk0mIHZtLCBjb25zCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAotICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IGdlbmVyYXRl
RnVuY3Rpb25Db2RlQmxvY2sodm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lhbGl6YXRpb25LaW5kLCBk
ZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IpOworICAgIFVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2sqIHJlc3VsdCA9IGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2sodm0sIHRoaXMsIHNv
dXJjZSwgc3BlY2lhbGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgaXNC
dWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3Jt
YWxGdW5jdGlvbiwgZXJyb3IpOwogICAgIAogICAgIGlmIChlcnJvci5tX3R5cGUgIT0gUGFyc2Vy
RXJyb3I6OkVycm9yTm9uZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMTAsNiArMjExLDcgQEAg
VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1faXNTdHJpY3RNb2RlKGluZm8ubV9pc1N0
cmljdE1vZGUpCiAgICAgLCBtX2lzQ29uc3RydWN0b3IoaW5mby5tX2lzQ29uc3RydWN0b3IpCiAg
ICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5j
dGlvbihpbmZvLm1faXNCdWlsdGluRnVuY3Rpb24pCiAgICAgLCBtX2ZpcnN0TGluZSgwKQogICAg
ICwgbV9saW5lQ291bnQoMCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCBi
OWRhZTJkNWM2OWM3OWNlYWFhODAyM2QyYTNhMWYyNmQ0NjA5NDNiLi5hYmY2Y2YzNWI5MzA2YTRm
N2EzMDFhYjBkZjc2NjZlYzYxMmUzNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtNjYsMjYgKzY2LDM1IEBAIHR5cGVk
ZWYgdW5zaWduZWQgVW5saW5rZWRPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTsKIHR5cGVkZWYgdW5z
aWduZWQgVW5saW5rZWRMTEludENhbGxMaW5rSW5mbzsKIAogc3RydWN0IEV4ZWN1dGFibGVJbmZv
IHsKLSAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZh
bCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvcikKKyAgICBFeGVjdXRhYmxl
SW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1v
ZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbikKICAgICAgICAg
OiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2YXRpb24pCiAgICAgICAgICwgbV91c2VzRXZh
bCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0cmljdE1vZGUpCiAgICAg
ICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3RydWN0b3IpCisgICAgICAgICwgbV9pc0J1aWx0
aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikKICAgICB7CiAgICAgfQotICAgIGJvb2wgbV9u
ZWVkc0FjdGl2YXRpb247Ci0gICAgYm9vbCBtX3VzZXNFdmFsOwotICAgIGJvb2wgbV9pc1N0cmlj
dE1vZGU7Ci0gICAgYm9vbCBtX2lzQ29uc3RydWN0b3I7CisgICAgYm9vbCBtX25lZWRzQWN0aXZh
dGlvbiA6IDE7CisgICAgYm9vbCBtX3VzZXNFdmFsIDogMTsKKyAgICBib29sIG1faXNTdHJpY3RN
b2RlIDogMTsKKyAgICBib29sIG1faXNDb25zdHJ1Y3RvciA6IDE7CisgICAgYm9vbCBtX2lzQnVp
bHRpbkZ1bmN0aW9uIDogMTsKK307CisKK2VudW0gVW5saW5rZWRGdW5jdGlvbktpbmQgeworICAg
IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sCisgICAgVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sCiB9
OwogCiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBKU0NlbGwgewog
cHVibGljOgorICAgIGZyaWVuZCBjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXM7CiAgICAgZnJpZW5k
IGNsYXNzIENvZGVDYWNoZTsKKyAgICBmcmllbmQgY2xhc3MgVk07CiAgICAgdHlwZWRlZiBKU0Nl
bGwgQmFzZTsKLSAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShW
TSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSogbm9kZSwg
Ym9vbCBpc0Zyb21HbG9iYWxDb2RlID0gZmFsc2UpCisgICAgc3RhdGljIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1
bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSwgVW5saW5rZWRGdW5j
dGlvbktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQpCiAgICAgewotICAgICAgICBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhlYXApKSBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgp
LCBzb3VyY2UsIG5vZGUsIGlzRnJvbUdsb2JhbENvZGUpOworICAgICAgICBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhlYXApKSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBz
b3VyY2UsIG5vZGUsIGlzRnJvbUdsb2JhbENvZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kKTsKICAg
ICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2bSk7CiAgICAgICAgIHJldHVybiBpbnN0
YW5jZTsKICAgICB9CkBAIC05OSw2ICsxMDgsMTQgQEAgcHVibGljOgogICAgIH0KICAgICBzaXpl
X3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdDsKICAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkg
Y29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQorICAgIEpTUGFyc2VyU3RyaWN0
bmVzcyB0b1N0cmljdG5lc3MoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1faXNCdWlsdGlu
RnVuY3Rpb24pCisgICAgICAgICAgICByZXR1cm4gSlNQYXJzZUJ1aWx0aW47CisgICAgICAgIGlm
IChtX2lzSW5TdHJpY3RDb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuIEpTUGFyc2VTdHJpY3Q7
CisgICAgICAgIHJldHVybiBKU1BhcnNlTm9ybWFsOworICAgIH0KICAgICBGdW5jdGlvbk5hbWVJ
c0luU2NvcGVUb2dnbGUgZnVuY3Rpb25OYW1lSXNJblNjb3BlVG9nZ2xlKCkgY29uc3QgeyByZXR1
cm4gbV9mdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGU7IH0KIAogICAgIHVuc2lnbmVkIGZpcnN0
TGluZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RMaW5lT2Zmc2V0OyB9CkBAIC0xNDIs
OCArMTU5LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJbW1vcnRhbFN0
cnVjdHVyZSA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAorICAg
IGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0
aW9uOyB9CisKIHByaXZhdGU6Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBT
dHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGJvb2wgaXNG
cm9tR2xvYmFsQ29kZSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1
Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGJvb2wgaXNGcm9t
R2xvYmFsQ29kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQpOwogICAgIFdyaXRlQmFycmllcjxVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX2NvZGVCbG9ja0ZvckNhbGw7CiAgICAgV3JpdGVCYXJy
aWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fY29kZUJsb2NrRm9yQ29uc3RydWN0Owog
CkBAIC0xNTIsNiArMTcxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNJblN0cmljdENvbnRl
eHQgOiAxOwogICAgIGJvb2wgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgYm9vbCBt
X2lzRnJvbUdsb2JhbENvZGUgOiAxOworICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7
CiAKICAgICBJZGVudGlmaWVyIG1fbmFtZTsKICAgICBJZGVudGlmaWVyIG1faW5mZXJyZWROYW1l
OwpAQCAtMzE5LDYgKzMzOSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzTnVtZXJpY0NvbXBh
cmVGdW5jdGlvbihib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbikgeyBtX2lzTnVtZXJpY0Nv
bXBhcmVGdW5jdGlvbiA9IGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQogICAgIGJvb2wgaXNO
dW1lcmljQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc051bWVyaWNDb21wYXJl
RnVuY3Rpb247IH0KIAorICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisgICAgCiAgICAgdm9pZCBzaHJpbmtUb0ZpdCgpCiAg
ICAgewogICAgICAgICBtX2p1bXBUYXJnZXRzLnNocmlua1RvRml0KCk7CkBAIC01MDAsNiArNTIy
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNTdHJpY3RNb2RlIDogMTsKICAgICBib29sIG1f
aXNDb25zdHJ1Y3RvciA6IDE7CiAgICAgYm9vbCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIDogMTsK
KyAgICBib29sIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1fZmlyc3RM
aW5lOwogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50OwogICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1u
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAppbmRleCA2ODEwYWI4MDAyY2U2YmI4ZDc4ZTdmZjIyMjdmNGM2ZWE3
Yjc1OGMyLi5lYzUyMWI1MzA0NjM5MjNlNzRjMDEwZmEyMThlNTllZDJhOWEzY2FlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcApAQCAtMTc1LDYgKzE3NSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQCiAj
ZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAgICAgLCBtX2V4cHJlc3Npb25U
b29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihmYWxzZSkKIHsKICAgICBp
ZiAobV9zaG91bGRFbWl0RGVidWdIb29rcykKICAgICAgICAgbV9jb2RlQmxvY2stPnNldE5lZWRz
RnVsbFNjb3BlQ2hhaW4odHJ1ZSk7CkBAIC0yMjIsNyArMjIzLDEzIEBAIEJ5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9u
Qm9keSwgVW5sCiAjZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAgICAgLCBt
X2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihjb2Rl
QmxvY2stPmlzQnVpbHRpbkZ1bmN0aW9uKCkpCiB7CisgICAgaWYgKG1faXNCdWlsdGluRnVuY3Rp
b24pIHsKKyAgICAgICAgbV9zaG91bGRFbWl0UHJvZmlsZUhvb2tzID0gZmFsc2U7CisgICAgICAg
IG1fc2hvdWxkRW1pdERlYnVnSG9va3MgPSBmYWxzZTsKKyAgICB9CisKICAgICBpZiAobV9zaG91
bGRFbWl0RGVidWdIb29rcykKICAgICAgICAgbV9jb2RlQmxvY2stPnNldE5lZWRzRnVsbFNjb3Bl
Q2hhaW4odHJ1ZSk7CiAKQEAgLTQzOCw2ICs0NDUsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENv
ZAogI2VuZGlmCiAgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQogICAgICwgbV9leHByZXNz
aW9uVG9vRGVlcChmYWxzZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oZmFsc2UpCiB7CiAg
ICAgbV9jb2RlQmxvY2stPnNldE5lZWRzRnVsbFNjb3BlQ2hhaW4odHJ1ZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aAppbmRleCA0ZTlmMjEzYzliZmE2Y2YxOTRiMWExNGZlOTE5ZTgzMzM3YWUzNWQ5Li4xNTg0Mjc0
Yjc4ZWE2YzBiZDBlZmIwYjk4MjVjODE4YmUwZGJjMDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC00NjEs
NyArNDYxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgc2hvdWxkRW1pdERlYnVn
SG9va3MoKSB7IHJldHVybiBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzOyB9CiAgICAgICAgIAogICAg
ICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc1N0
cmljdE1vZGUoKTsgfQotCisgICAgICAgIAorICAgICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQorICAgICAgICAKICAgICBw
cml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTGFiZWw7CiAgICAgICAgIApAQCAtNTQzLDcg
KzU0NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIG1ha2VGdW5jdGlvbihGdW5jdGlvbkJvZHlOb2RlKiBib2R5KQogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNy
ZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIGJvZHkpOworICAgICAgICAgICAgcmV0
dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUt
PnNvdXJjZSgpLCBib2R5LCBmYWxzZSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVp
bHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbik7CiAgICAgICAgIH0KIAogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0SW5pdExhenlSZWdpc3RlcihSZWdpc3RlcklEKik7CkBAIC02
NzcsNiArNjc5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBtX3VzZXNFeGNl
cHRpb25zOwogICAgICAgICBib29sIG1fZXhwcmVzc2lvblRvb0RlZXA7CisgICAgICAgIGJvb2wg
bV9pc0J1aWx0aW5GdW5jdGlvbjsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMWZmZDRmMzExODgy
ZDBlZTVjNTUxNGY1YjhiMjU5MzlkOTc1ZTM3OS4uNjJlY2EzNmExMGQ3NzA4YTkyOGQ0M2FjMDNm
MmZjODYxNWNlY2E3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjYsMTAgKzI2LDEwIEBACiAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgotI2luY2x1ZGUgIk5vZGVDb25zdHJ1Y3RvcnMu
aCIKIAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1l
LmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5o
IgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTM4LDYgKzM4
LDcgQEAKICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiTGFiZWxTY29wZS5oIgog
I2luY2x1ZGUgIkxleGVyLmgiCisjaW5jbHVkZSAiTm9kZUNvbnN0cnVjdG9ycy5oIgogI2luY2x1
ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRlICJQcm9wZXJ0
eU5hbWVBcnJheS5oIgpAQCAtNTM1LDM2ICs1MzYsMzkgQEAgUmVnaXN0ZXJJRCogQ2FsbEZ1bmN0
aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LAogICAgIFJlZlB0cjxMYWJlbD4gZW5kID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9iYXNlKTsKICAgICBn
ZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHBy
ZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5h
dGlvbihkc3QpLCBiYXNlLmdldCgpLCBtX2lkZW50KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
ZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlv
bihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmNhbGwpOwogICAg
IFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0
aW9uKGRzdCwgZnVuY3Rpb24uZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVu
Y3Rpb25DYWxsKGZ1bmN0aW9uLmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7CisgICAgYm9vbCBlbWl0
Q2FsbENoZWNrID0gIWdlbmVyYXRvci5pc0J1aWx0aW5GdW5jdGlvbigpOworICAgIGlmIChlbWl0
Q2FsbENoZWNrKQorICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQ2FsbChm
dW5jdGlvbi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkpOworCiAgICAgewogICAgICAgICBpZiAobV9h
cmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKSB7CiAgICAgICAg
ICAgICBBcmd1bWVudExpc3ROb2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2RlOwogICAg
ICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQ7
Ci0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5j
dGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCks
IGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdl
bmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJn
dW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwogICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5v
RXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOwot
CiAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBvbGRMaXN0OwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVy
YXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkp
OwogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9h
cmdzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNS
ZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2Fs
bChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rp
b24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0g
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKICAgICAgICAgfQogICAg
IH0KLSAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKLSAgICB7Ci0gICAg
ICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAg
ICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNl
LmdldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBm
dW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgp
LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIGlmIChlbWl0Q2FsbENoZWNrKSB7Cisg
ICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOworICAgICAgICBnZW5lcmF0b3Iu
ZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKKyAgICAgICAgeworICAgICAgICAgICAgQ2FsbEFy
Z3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgp
KTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVu
Y3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwg
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgfQorICAgICAgICBnZW5lcmF0b3Iu
ZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5k
LmdldCgpKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWUuZ2V0KCk7CiB9CiAKQEAgLTU4NSw2NSAr
NTg5LDY3IEBAIFJlZ2lzdGVySUQqIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgUmVmUHRyPExhYmVsPiBlbmQg
PSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdl
bmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Npb25TdGFydCgpLCBzdWJleHByZXNz
aW9uRW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbiA9IGdlbmVyYXRvci5l
bWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIG1f
aWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbjsKICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGZ1
bmN0aW9uLmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHko
ZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKLSAgICB7Ci0gICAgICAgIGlmIChtYXlC
ZUNhbGwpIHsKLSAgICAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5t
X2xpc3ROb2RlLT5tX2V4cHIpIHsKLSAgICAgICAgICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBv
bGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2RlOwotICAgICAgICAgICAgICAgIGlmIChtX2FyZ3Mt
Pm1fbGlzdE5vZGUtPm1fbmV4dCkgewotICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9hcmdz
LT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwci0+aXNTaW1wbGVBcnJheSgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9uZXh0KTsK
LSAgICAgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gc3RhdGljX2Nhc3Q8QXJy
YXlOb2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwciktPnRvQXJndW1lbnRM
aXN0KGdlbmVyYXRvci52bSgpLCAwLCAwKTsKLSAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVt
cERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBDYWxs
QXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwg
b2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxs
KHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlv
biwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlz
dE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKLSAgICAgICAgICAgICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5l
cmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAgICAgICAg
ICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAg
ICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVn
aXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0
ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3RO
b2RlID0gb2xkTGlzdDsKKyAgICBib29sIGVtaXRDYWxsQ2hlY2sgPSAhZ2VuZXJhdG9yLmlzQnVp
bHRpbkZ1bmN0aW9uKCk7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKKyAgICAgICAgZnVuY3Rp
b24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3Qp
LCBiYXNlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmFwcGx5KTsKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KGZ1bmN0aW9uLmdldCgpLCByZWFs
Q2FsbC5nZXQoKSk7CisgICAgfQorICAgIGlmIChtYXlCZUNhbGwpIHsKKyAgICAgICAgaWYgKG1f
YXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcikgeworICAgICAg
ICAgICAgQXJndW1lbnRMaXN0Tm9kZSogb2xkTGlzdCA9IG1fYXJncy0+bV9saXN0Tm9kZTsKKyAg
ICAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCkgeworICAgICAgICAgICAg
ICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByLT5pc1NpbXBsZUFy
cmF5KCkpOworICAgICAgICAgICAgICAgIEFTU0VSVCghbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25l
eHQtPm1fbmV4dCk7CisgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gc3RhdGlj
X2Nhc3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwciktPnRv
QXJndW1lbnRMaXN0KGdlbmVyYXRvci52bSgpLCAwLCAwKTsKKyAgICAgICAgICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRv
ci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgQ2Fs
bEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgb2xk
TGlzdC0+bV9leHByKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJu
VmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxs
QXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBtX2FyZ3Mt
Pm1fbGlzdE5vZGUtPm1fbmV4dDsKICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
cmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRp
b24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxs
QXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7Cisg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lz
dGVyKCksIG9sZExpc3QtPm1fZXhwcik7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRD
YWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5j
dGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsK
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9sZExpc3Q7
CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9hcmdzLT5tX2xpc3ROb2Rl
ICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KTsKLSAgICAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBwcm9maWxlSG9va1JlZ2lzdGVyOwotICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5z
aG91bGRFbWl0UHJvZmlsZUhvb2tzKCkpCi0gICAgICAgICAgICAgICAgcHJvZmlsZUhvb2tSZWdp
c3RlciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBE
ZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKLSAgICAgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiB0aGlzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9hcmdzLT5tX2xpc3ROb2Rl
LT5tX2V4cHIpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFyZ3NSZWdpc3RlcjsK
LSAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MgPSBtX2FyZ3MtPm1fbGlzdE5vZGUt
Pm1fbmV4dDsKLSAgICAgICAgICAgIGlmIChhcmdzLT5tX2V4cHItPmlzUmVzb2x2ZU5vZGUoKSAm
JiBnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50cyhzdGF0aWNfY2FzdDxSZXNvbHZlTm9k
ZSo+KGFyZ3MtPm1fZXhwciktPmlkZW50aWZpZXIoKSkpCi0gICAgICAgICAgICAgICAgYXJnc1Jl
Z2lzdGVyID0gZ2VuZXJhdG9yLnVuY2hlY2tlZFJlZ2lzdGVyRm9yQXJndW1lbnRzKCk7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLmVt
aXROb2RlKGFyZ3MtPm1fZXhwcik7Ci0KLSAgICAgICAgICAgIC8vIEZ1bmN0aW9uLnByb3RvdHlw
ZS5hcHBseSBpZ25vcmVzIGV4dHJhIGFyZ3VtZW50cywgYnV0IHdlIHN0aWxsCi0gICAgICAgICAg
ICAvLyBuZWVkIHRvIGV2YWx1YXRlIHRoZW0gZm9yIHNpZGUgZWZmZWN0cy4KLSAgICAgICAgICAg
IHdoaWxlICgoYXJncyA9IGFyZ3MtPm1fbmV4dCkpCi0gICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7Ci0KLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2Fs
bFZhcmFyZ3MocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgdGhpc1JlZ2lz
dGVyLmdldCgpLCBhcmdzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwg
cHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3Is
IG1fYXJncyk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50
aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1
bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OwogICAgICAgICB9Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOworICAg
IH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5t
X2xpc3ROb2RlLT5tX25leHQpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvZmlsZUhv
b2tSZWdpc3RlcjsKKyAgICAgICAgaWYgKGdlbmVyYXRvci5zaG91bGRFbWl0UHJvZmlsZUhvb2tz
KCkpCisgICAgICAgICAgICBwcm9maWxlSG9va1JlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJh
dG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7
CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1p
dE5vZGUobV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpOworICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gYXJnc1JlZ2lzdGVyOworICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBhcmdzID0gbV9h
cmdzLT5tX2xpc3ROb2RlLT5tX25leHQ7CisgICAgICAgIGlmIChhcmdzLT5tX2V4cHItPmlzUmVz
b2x2ZU5vZGUoKSAmJiBnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50cyhzdGF0aWNfY2Fz
dDxSZXNvbHZlTm9kZSo+KGFyZ3MtPm1fZXhwciktPmlkZW50aWZpZXIoKSkpCisgICAgICAgICAg
ICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IudW5jaGVja2VkUmVnaXN0ZXJGb3JBcmd1bWVudHMo
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLmVt
aXROb2RlKGFyZ3MtPm1fZXhwcik7CisKKyAgICAgICAgLy8gRnVuY3Rpb24ucHJvdG90eXBlLmFw
cGx5IGlnbm9yZXMgZXh0cmEgYXJndW1lbnRzLCBidXQgd2Ugc3RpbGwKKyAgICAgICAgLy8gbmVl
ZCB0byBldmFsdWF0ZSB0aGVtIGZvciBzaWRlIGVmZmVjdHMuCisgICAgICAgIHdoaWxlICgoYXJn
cyA9IGFyZ3MtPm1fbmV4dCkpCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+
bV9leHByKTsKKworICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxWYXJhcmdzKHJldHVyblZhbHVl
LmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJnc1JlZ2lz
dGVyLmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb2ZpbGVIb29rUmVnaXN0ZXIu
Z2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgfQotICAgIGdl
bmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOwotICAgIHsKKyAgICBpZiAoZW1pdENh
bGxDaGVjaykgeworICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChyZWFsQ2FsbC5nZXQoKSk7CiAgICAgICAgIENhbGxBcmd1
bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgpKTsKICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQo
KSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7
CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICByZXR1cm4g
cmV0dXJuVmFsdWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9jcmVhdGVfaGFzaF90YWJsZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90
YWJsZQppbmRleCAzOTc5NzZiMDZjN2E5YjU4MzYzMzI5MDBhNmViYjkzZWM2OGI3NDg2Li5jYWQ2
NWJjNGNjODg4ZTMxNGY4OGQ2NjVkZDRhNmU2NDVhMDlhMzU1IDEwMDc1NQotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2NyZWF0ZV9oYXNoX3RhYmxlCkBAIC0yODksNyArMjg5LDE3IEBAIHN1YiBvdXRwdXQoKSB7
CiAgICAgICAgICAgICAkaW50cmluc2ljID0gIlJlZ0V4cFRlc3RJbnRyaW5zaWMiIGlmICgka2V5
IGVxICJ0ZXN0Iik7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoJHZhbHVlc1skaV17InR5cGUi
fSBlcSAiRnVuY3Rpb24iKSAgeworICAgICAgICAgICAgbXkgJHRhYmxlSGVhZCA9ICRuYW1lOwor
ICAgICAgICAgICAgJHRhYmxlSGVhZCA9fiBzL1RhYmxlJC8vOworICAgICAgICAgICAgcHJpbnQg
IiAjaWYgSlNDX0JVSUxUSU5fRVhJU1RTKCIgLiB1YygkdGFibGVIZWFkIC4gJGtleSkgLiIpXG4i
OworICAgICAgICAgICAgcHJpbnQgIiAgIHsgXCIka2V5XCIsICgoJGF0dHJzWyRpXSkgJiB+RnVu
Y3Rpb24pIHwgQnVpbHRpbiwgJGludHJpbnNpYywgKGludHB0cl90KXN0YXRpY19jYXN0PEJ1aWx0
aW5HZW5lcmF0b3I+KCIgLiAkdGFibGVIZWFkIC4gdWNmaXJzdCgka2V5KSAuICJDb2RlR2VuZXJh
dG9yKSwgKGludHB0cl90KSRzZWNvbmRWYWx1ZSB9LFxuIjsKKyAgICAgICAgICAgIHByaW50ICIg
I2Vsc2VcbiIKKyAgICAgICAgfQogICAgICAgICBwcmludCAiICAgeyBcIiRrZXlcIiwgJGF0dHJz
WyRpXSwgJGludHJpbnNpYywgKGludHB0cl90KSIgLiAkZmlyc3RDYXN0U3RyIC4gIigkZmlyc3RW
YWx1ZSksIChpbnRwdHJfdCkiIC4gJHNlY29uZENhc3RTdHIgLiAiKCRzZWNvbmRWYWx1ZSkgfSxc
biI7CisgICAgICAgIGlmICgkdmFsdWVzWyRpXXsidHlwZSJ9IGVxICJGdW5jdGlvbiIpICB7Cisg
ICAgICAgICAgICBwcmludCAiICNlbmRpZlxuIgorICAgICAgICB9CiAgICAgICAgICRpKys7CiAg
ICAgfQogICAgIHByaW50ICIgICB7IDAsIDAsIE5vSW50cmluc2ljLCAwLCAwIH1cbiI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAyZmYwYzM0MTQ2
ZTJjMGJhMmZmNzZjNGQzZjdjNDZiYTNlMjU1MTQ3Li45MDQ0Y2RjNmI4YzNhZDRhMWU5NDE4OGRk
MWQwZTIwMGU2OWZiOTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNp
bmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCisjaW5jbHVkZSAiSlNTdHJp
bmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTmFtZUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiT2JqZWN0
Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY0YjZkNDk5ZjAyNWMwNTNi
MmY5N2I2ZjEwMGU4NTUwNDZmM2U1MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucwpAQCAtMCwwICsxLDMwNCBAQAorIyEvdXNyL2Jp
bi9weXRob24KKyMgQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorIyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyMgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorIyBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBmaWxlY21wCitpbXBvcnQgZm5tYXRjaAor
aW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzeXMKK2ltcG9ydCBk
YXRldGltZQoraW1wb3J0IGpzb24KKworY29weXJpZ2h0VGV4dCA9ICIiIiAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovXG4KKyIiIgorCitnZW5lcmF0b3JTdHJpbmcgPSAi
LyogR2VuZXJhdGVkIGJ5ICVzIGRvIG5vdCBoYW5kIGVkaXQuICovXG4iICUgb3MucGF0aC5iYXNl
bmFtZShfX2ZpbGVfXykKKworZnVuY3Rpb25IZWFkUmVnRXhwID0gcmUuY29tcGlsZShyImZ1bmN0
aW9uXHMrXHcrXHMqXCguKj9cKSIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitmdW5jdGlvbk5hbWVS
ZWdFeHAgPSByZS5jb21waWxlKHIiZnVuY3Rpb25ccysoXHcrKVxzKlwoIiwgcmUuTVVMVElMSU5F
IHwgcmUuUykKK2Z1bmN0aW9uUGFyYW1ldGVyRmluZGVyID0gcmUuY29tcGlsZShyIl5mdW5jdGlv
blxzKyg/Olx3KylccypcKCgoPzpccypcdyspP1xzKig/OlxzKixccypcdyspKik/XCkiLCByZS5N
VUxUSUxJTkUgfCByZS5TKQorCittdWx0aWxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShy
IlwvXCouKj9cKlwvIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK3NpbmdsZUxpbmVDb21tZW50UmVn
RXhwID0gcmUuY29tcGlsZShyIlwvXC8uKj9cbiIsIHJlLk1VTFRJTElORSB8IHJlLlMpCisKK2Rl
ZiBnZXRDb3B5cmlnaHQoc291cmNlKToKKyAgICBjb3B5cmlnaHRCbG9jayA9IG11bHRpbGluZUNv
bW1lbnRSZWdFeHAuZmluZGFsbChzb3VyY2UpWzBdCisgICAgY29weXJpZ2h0QmxvY2sgPSBjb3B5
cmlnaHRCbG9ja1s6Y29weXJpZ2h0QmxvY2suaW5kZXgoIlJlZGlzdHJpYnV0aW9uIildCisgICAg
Y29weVJpZ2h0TGluZXMgPSBbXQorCisgICAgZm9yIGxpbmUgaW4gY29weXJpZ2h0QmxvY2suc3Bs
aXQoIlxuIik6CisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIi8qIiwgIiIpCisgICAgICAg
IGxpbmUgPSBsaW5lLnJlcGxhY2UoIiovIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxh
Y2UoIioiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiQ29weXJpZ2h0IiwgIiIp
CisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoImNvcHlyaWdodCIsICIiKQorICAgICAgICBs
aW5lID0gbGluZS5yZXBsYWNlKCIoQykiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFj
ZSgiKGMpIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgaWYgbGVu
KGxpbmUpID09IDA6CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIGNvcHlSaWdodExp
bmVzLmFwcGVuZChsaW5lKQorICAgIAorICAgIHJldHVybiBsaXN0KHNldChjb3B5UmlnaHRMaW5l
cykpCisKKworCitkZWYgZ2V0RnVuY3Rpb25zKHNvdXJjZSk6CisKKyAgICBzb3VyY2UgPSBtdWx0
aWxpbmVDb21tZW50UmVnRXhwLnN1YigiLyoqLyIsIHNpbmdsZUxpbmVDb21tZW50UmVnRXhwLnN1
YigiLy9cbiIsIHNvdXJjZSkpCisKKyAgICBtYXRjaGVzID0gWyBmIGZvciBmIGluIGZ1bmN0aW9u
SGVhZFJlZ0V4cC5maW5kaXRlcihzb3VyY2UpXQorICAgIGZ1bmN0aW9uQm91bmRzID0gW10KKyAg
ICBzdGFydCA9IDAKKyAgICBlbmQgPSAwCisgICAgZm9yIG1hdGNoIGluIG1hdGNoZXM6CisgICAg
ICAgIHN0YXJ0ID0gbWF0Y2guc3RhcnQoKQorICAgICAgICBpZiBzdGFydCA8IGVuZDoKKyAgICAg
ICAgICAgIGNvbnRpbnVlCisgICAgICAgIGVuZCA9IG1hdGNoLmVuZCgpCisgICAgICAgIHdoaWxl
IHNvdXJjZVtlbmRdICE9ICd7JzoKKyAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAg
ZGVwdGggPSAxCisgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgd2hpbGUgZGVwdGggPiAw
OgorICAgICAgICAgICAgaWYgc291cmNlW2VuZF0gPT0gJ3snOgorICAgICAgICAgICAgICAgIGRl
cHRoID0gZGVwdGggKyAxCisgICAgICAgICAgICBlbGlmIHNvdXJjZVtlbmRdID09ICd9JzoKKyAg
ICAgICAgICAgICAgICBkZXB0aCA9IGRlcHRoIC0gMQorICAgICAgICAgICAgZW5kID0gZW5kICsg
MQorICAgICAgICBmdW5jdGlvbkJvdW5kcy5hcHBlbmQoKHN0YXJ0LCBlbmQpKQorCisgICAgZnVu
Y3Rpb25zID0gW3NvdXJjZVtzdGFydDplbmRdLnN0cmlwKCkgZm9yIChzdGFydCwgZW5kKSBpbiBm
dW5jdGlvbkJvdW5kc10KKyAgICByZXN1bHQgPSBbXQorICAgIGZvciBmdW5jdGlvbiBpbiBmdW5j
dGlvbnM6CisgICAgICAgIGZ1bmN0aW9uID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5zdWIoIiIs
IGZ1bmN0aW9uKQorICAgICAgICBmdW5jdGlvbk5hbWUgPSBmdW5jdGlvbk5hbWVSZWdFeHAuZmlu
ZGFsbChmdW5jdGlvbilbMF0KKyAgICAgICAgZnVuY3Rpb25QYXJhbWV0ZXJzID0gZnVuY3Rpb25Q
YXJhbWV0ZXJGaW5kZXIuZmluZGFsbChmdW5jdGlvbilbMF0uc3BsaXQoJywnKQorICAgICAgICBp
ZiBsZW4oZnVuY3Rpb25QYXJhbWV0ZXJzWzBdKSA9PSAwOgorICAgICAgICAgICAgZnVuY3Rpb25Q
YXJhbWV0ZXJzID0gW10KKyAgICAgICAgICAgIAorICAgICAgICByZXN1bHQuYXBwZW5kKChmdW5j
dGlvbk5hbWUsIGZ1bmN0aW9uLCBmdW5jdGlvblBhcmFtZXRlcnMpKQorICAgIHJldHVybiByZXN1
bHQKKyAgICAgICAgCisKK2RlZiBnZW5lcmF0ZUNvZGUoc291cmNlKToKKyAgICBpbnB1dEZpbGUg
PSBvcGVuKHNvdXJjZSwgInIiKQorICAgIGJhc2VOYW1lID0gb3MucGF0aC5iYXNlbmFtZShzb3Vy
Y2UpLnJlcGxhY2UoIi5qcyIsICIiKQorICAgIAorICAgIHNvdXJjZSA9ICIiCisgICAgZm9yIGxp
bmUgaW4gaW5wdXRGaWxlOgorICAgICAgICBzb3VyY2UgPSBzb3VyY2UgKyBsaW5lCisgICAgCisg
ICAgaWYgc3lzLnBsYXRmb3JtID09ICJjeWd3aW4iOgorICAgICAgICBzb3VyY2UgPSBzb3VyY2Uu
cmVwbGFjZSgiXHJcbiIsICJcbiIpCisgICAgcmV0dXJuIChiYXNlTmFtZSwgZ2V0RnVuY3Rpb25z
KHNvdXJjZSksIGdldENvcHlyaWdodChzb3VyY2UpKQorCitkZWYgbWFuZ2xlTmFtZShvYmplY3Qs
IG5hbWUpOgorICAgIHFOYW1lID0gb2JqZWN0ICsgIi4iICsgbmFtZQorICAgIG1hbmdsZWROYW1l
ID0gIiIKKyAgICBpID0gMAorICAgIHdoaWxlIGkgPCBsZW4ocU5hbWUpOgorICAgICAgICBpZiBx
TmFtZVtpXSA9PSAnLic6CisgICAgICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lICsg
cU5hbWVbaSArIDFdLnVwcGVyKCkKKyAgICAgICAgICAgIGkgPSBpICsgMQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZSArIHFOYW1lW2ldCisgICAg
ICAgIGkgPSBpICsgMQorICAgIHJldHVybiBtYW5nbGVkTmFtZQorCitidWlsdGlucyA9IFtdCisK
K2Jhc2VOYW1lID0gc3lzLmFyZ3ZbLTFdCitidWlsdGluX2RlZmluaXRpb25zID0gc3lzLmFyZ3Zb
MTotMV0KKyhvdXRwdXRfYmFzZSwgXykgPSBvcy5wYXRoLnNwbGl0ZXh0KHN5cy5hcmd2Wy0xXSkK
KworY29weXJpZ2h0cyA9IFtdCitmb3IgZmlsZSBpbiBidWlsdGluX2RlZmluaXRpb25zOgorICAg
IGlmIGZubWF0Y2guZm5tYXRjaChmaWxlLCAnKi5qcycpOgorICAgICAgICAoYmFzZU5hbWUsIGZ1
bmN0aW9ucywgb2JqZWN0Q29weXJpZ2h0cykgPSBnZW5lcmF0ZUNvZGUoZmlsZSkKKyAgICAgICAg
Y29weXJpZ2h0cy5leHRlbmQob2JqZWN0Q29weXJpZ2h0cykKKyAgICAgICAgYnVpbHRpbnMuYXBw
ZW5kKChiYXNlTmFtZSwgZnVuY3Rpb25zKSkKKworY29weXJpZ2h0cyA9IGxpc3Qoc2V0KGNvcHly
aWdodHMpKQorCitjb3B5cmlnaHRCb2R5ID0gIiIKK2ZvciBjb3B5cmlnaHQgaW4gY29weXJpZ2h0
czoKKyAgICBjb3B5cmlnaHRCb2R5ID0gY29weXJpZ2h0Qm9keSArIiAqIENvcHlyaWdodCAoQykg
IiArIGNvcHlyaWdodCArICJcbiIKKworYnVpbHRpbnNIZWFkZXIgPSBvcGVuKG91dHB1dF9iYXNl
ICsgIi5oLnRtcCIsICJ3IikKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24gPSBvcGVuKG91dHB1dF9i
YXNlICsgIi5jcHAudG1wIiwgInciKQorY29weXJpZ2h0VGV4dCA9ICIvKlxuIiArIGNvcHlyaWdo
dEJvZHkgKyBjb3B5cmlnaHRUZXh0CitidWlsdGluc0hlYWRlci53cml0ZSgiIiIlcworJXMKKwor
I2lmbmRlZiBKU0NCdWlsdGluc19ICisjZGVmaW5lIEpTQ0J1aWx0aW5zX0gKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIElkZW50aWZpZXI7Citj
bGFzcyBKU0dsb2JhbE9iamVjdDsKK2NsYXNzIFNvdXJjZUNvZGU7CitjbGFzcyBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIFZNOworCitGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0
ZUJ1aWx0aW5FeGVjdXRhYmxlKFZNJiwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCBjb25z
dCBTb3VyY2VDb2RlJik7CisKKyIiIiAlIChnZW5lcmF0b3JTdHJpbmcsIGNvcHlyaWdodFRleHQp
KQorCitjb2RlUmVmZXJlbmNlcyA9IFtdCisKK2ZvciAob2JqZWN0TmFtZSwgZnVuY3Rpb25zKSBp
biBidWlsdGluczoKKyAgICBwcmludCgiR2VuZXJhdGluZyBiaW5kaW5ncyBmb3IgdGhlICVzIGJ1
aWx0aW4uIiAlIG9iamVjdE5hbWUpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIi8qICVzIGZ1
bmN0aW9ucyAqL1xuIiAlIG9iamVjdE5hbWUpCisgICAgZm9yIChuYW1lLCBpbXBsZW1lbnRhdGlv
biwgXykgaW4gZnVuY3Rpb25zOgorICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZU5hbWUob2Jq
ZWN0TmFtZSwgbmFtZSkKKyAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZVswXS5sb3dl
cigpICsgbWFuZ2xlZE5hbWVbMTpdICsgIkNvZGUiCisgICAgICAgIGNvZGVSZWZlcmVuY2VzLmFw
cGVuZCgobWFuZ2xlZE5hbWUsIG5hbWUsIGltcGxlbWVudGF0aW9uKSkKKyAgICAgICAgYnVpbHRp
bnNIZWFkZXIud3JpdGUoImV4dGVybiBjb25zdCBjaGFyKiBzXyVzO1xuIiAlIG1hbmdsZWROYW1l
KQorICAgICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiZXh0ZXJuIGNvbnN0IGludCBzXyVzTGVu
Z3RoO1xuIiAlIG1hbmdsZWROYW1lKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJcbiIpCisg
ICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0ZPUkVBQ0hfJXNfQlVJTFRJTiht
YWNybykgXFxcbiIgJSBvYmplY3ROYW1lLnJlcGxhY2UoIi4iLCAiXyIpLnVwcGVyKCkpCisgICAg
Zm9yIChuYW1lLCBpbXBsZW1lbnRhdGlvbiwgYXJndW1lbnRzKSBpbiBmdW5jdGlvbnM6CisgICAg
ICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlTmFtZShvYmplY3ROYW1lLCBuYW1lKQorICAgICAgICBi
dWlsdGluc0hlYWRlci53cml0ZSgiICAgIG1hY3JvKCVzLCAlcywgJWQpIFxcXG4iICUgKG5hbWUs
IG1hbmdsZWROYW1lLCBsZW4oYXJndW1lbnRzKSkpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUo
IlxuIikKKyAgICBmb3IgKG5hbWUsIGltcGxlbWVudGF0aW9uLCBhcmd1bWVudHMpIGluIGZ1bmN0
aW9uczoKKyAgICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0JVSUxUSU5f
JXMgMVxuIiAlIG1hbmdsZU5hbWUob2JqZWN0TmFtZSwgbmFtZSkudXBwZXIoKSkKKyAgICBidWls
dGluc0hlYWRlci53cml0ZSgiXG5cbiIpCituYW1lcyA9IFtdCitidWlsdGluc0hlYWRlci53cml0
ZSgiI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOKG1hY3JvKVxcXG4iKQorZm9yIChjb2RlUmVm
ZXJlbmNlLCBmdW5jdGlvbk5hbWUsIHNvdXJjZSkgaW4gY29kZVJlZmVyZW5jZXM6CisgICAgYnVp
bHRpbnNIZWFkZXIud3JpdGUoIiAgICBtYWNybyglcywgJXMsIHNfJXNMZW5ndGgpIFxcXG4iICUg
KGNvZGVSZWZlcmVuY2UsIGZ1bmN0aW9uTmFtZSwgY29kZVJlZmVyZW5jZSkpCisgICAgbmFtZXMu
YXBwZW5kKGZ1bmN0aW9uTmFtZSkKKworYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuXG4iKQorYnVp
bHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9O
QU1FKG1hY3JvKSBcXFxuIikKK2ZvciBuYW1lIGluIHNvcnRlZChzZXQobmFtZXMpKToKKyAgICBi
dWlsdGluc0hlYWRlci53cml0ZSgiICAgIG1hY3JvKCVzKSBcXFxuIiAlIG5hbWUpCitidWlsdGlu
c0hlYWRlci53cml0ZSgiIiIKKworI2RlZmluZSBKU0NfREVDTEFSRV9CVUlMVElOX0dFTkVSQVRP
Uihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAorICAgIEZ1bmN0aW9u
RXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihWTSYpOworCitKU0NfRk9SRUFDSF9CVUlM
VElOKEpTQ19ERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIEpTQ19ERUNMQVJFX0JV
SUxUSU5fR0VORVJBVE9SCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fRVhJU1RTKG5hbWUpIGRlZmlu
ZWQoSlNDX0JVSUxUSU5fIyNuYW1lKQorCit9CisKKyNlbmRpZgorCisiIiIpCisKK2J1aWx0aW5z
SW1wbGVtZW50YXRpb24ud3JpdGUoIiIiJXMKKyVzCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMu
aCIKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgor
I2luY2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0MgeworCisiIiIgICUgKGdlbmVyYXRvclN0
cmluZywgY29weXJpZ2h0VGV4dCkpCisKK2ZvciAoY29kZVJlZmVyZW5jZSwgbmFtZSwgc291cmNl
KSBpbiBjb2RlUmVmZXJlbmNlczoKKyAgICBzb3VyY2UgPSAiKGZ1bmN0aW9uICIgKyBzb3VyY2Vb
c291cmNlLmluZGV4KCIoIik6XSArICIpIgorICAgIGxpbmVzID0ganNvbi5kdW1wcyhzb3VyY2Up
WzE6LTFdLnNwbGl0KCJcXG4iKQorICAgIHNvdXJjZUxlbmd0aCA9IGxlbihzb3VyY2UpCisgICAg
c291cmNlID0gIiIKKyAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgc291cmNlID0gc291
cmNlICsgKCIgICAgXCIlc1xcblwiIFxcXG4iICUgbGluZSkKKyAgICBidWlsdGluc0ltcGxlbWVu
dGF0aW9uLndyaXRlKCJjb25zdCBjaGFyKiBzXyVzID1cbiVzO1xuXG4iICUgKGNvZGVSZWZlcmVu
Y2UsIHNvdXJjZSkpCisgICAgYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiY29uc3QgaW50
IHNfJXNMZW5ndGggPSAlZDtcblxuIiAlIChjb2RlUmVmZXJlbmNlLCBzb3VyY2VMZW5ndGggKyAx
KSkgIyArIDEgZm9yIFxuCisKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoIiIiCitGdW5j
dGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKFZNJiB2bSwgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlKQoreworICAgIHVuc2lnbmVkIGxpbmVDb3VudCA9IHVubGlua2VkRXhlY3V0YWJsZS0+
bGluZUNvdW50KCk7CisgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSAxOworICAgIHVuc2lnbmVk
IHNvdXJjZUxlbmd0aCA9IHVubGlua2VkRXhlY3V0YWJsZS0+c291cmNlTGVuZ3RoKCk7CisgICAg
Ym9vbCBlbmRDb2x1bW5Jc09uU3RhcnRMaW5lID0gIWxpbmVDb3VudDsKKyAgICB1bnNpZ25lZCBl
bmRDb2x1bW5FeGNsdWRpbmdCcmFjZXMgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnVubGlua2VkQm9k
eUVuZENvbHVtbigpICsgKGVuZENvbHVtbklzT25TdGFydExpbmUgPyAwIDogMSk7CisgICAgdW5z
aWduZWQgc3RhcnRPZmZzZXQgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnN0YXJ0T2Zmc2V0KCk7Cisg
ICAgdW5zaWduZWQgc3RhcnRPZmZzZXRFeGNsdWRpbmdPcGVuQnJhY2UgPSBzdGFydE9mZnNldCAr
IDE7CisgICAgdW5zaWduZWQgZW5kT2Zmc2V0RXhjbHVkaW5nQ2xvc2VCcmFjZSA9IHN0YXJ0T2Zm
c2V0ICsgc291cmNlTGVuZ3RoIC0gMTsKKyAgICBTb3VyY2VDb2RlIGJvZHlTb3VyY2Uoc291cmNl
LnByb3ZpZGVyKCksIHN0YXJ0T2Zmc2V0RXhjbHVkaW5nT3BlbkJyYWNlLCBlbmRPZmZzZXRFeGNs
dWRpbmdDbG9zZUJyYWNlLCAwLCBzdGFydENvbHVtbik7CisgICAgcmV0dXJuIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6Y3JlYXRlKHZtLCBib2R5U291cmNlLCB1bmxpbmtlZEV4ZWN1dGFibGUsIDAsIGxp
bmVDb3VudCwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbkV4Y2x1ZGluZ0JyYWNlcywgZmFsc2UpOwor
fQorCisjZGVmaW5lIEpTQ19ERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0
aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKK0Z1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUj
I0dlbmVyYXRvcihWTSYgdm0pIFxcCit7IFxcCisgICAgcmV0dXJuIGNyZWF0ZUJ1aWx0aW5FeGVj
dXRhYmxlKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUo
KSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IFxcCit9CisK
K0pTQ19GT1JFQUNIX0JVSUxUSU4oSlNDX0RFRklORV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRl
ZiBKU0NfREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCit9CisKKyIiIikKKworYnVpbHRpbnNIZWFk
ZXIuY2xvc2UoKQorYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi5jbG9zZSgpCisKK2lmIChub3Qgb3Mu
cGF0aC5leGlzdHMob3V0cHV0X2Jhc2UgKyAiLmgiKSkgb3IgKG5vdCBmaWxlY21wLmNtcChvdXRw
dXRfYmFzZSArICIuaC50bXAiLCBvdXRwdXRfYmFzZSArICIuaCIsIHNoYWxsb3c9RmFsc2UpKToK
KyAgICBvcy5yZW5hbWUob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmgi
KQorZWxzZToKKyAgICBvcy5yZW1vdmUob3V0cHV0X2Jhc2UgKyAiLmgudG1wIikKKworaWYgKG5v
dCBvcy5wYXRoLmV4aXN0cyhvdXRwdXRfYmFzZSArICIuY3BwIikpIG9yIChub3QgZmlsZWNtcC5j
bXAob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCBvdXRwdXRfYmFzZSArICIuY3BwIiwgc2hhbGxv
dz1GYWxzZSkpOgorICAgIG9zLnJlbmFtZShvdXRwdXRfYmFzZSArICIuY3BwLnRtcCIsIG91dHB1
dF9iYXNlICsgIi5jcHAiKQorZWxzZToKKyAgICBvcy5yZW1vdmUob3V0cHV0X2Jhc2UgKyAiLmNw
cC50bXAiKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKaW5kZXggY2E4OTBiMDZlYTMzZmE5ZTdmMWZhNTFhMzVlYTJkNDhkMDA5YTM4YS4u
NmM5YmY5NmMxNWY2MDllMjY1Y2UyNTBhNDViZjA4NjFkMDZjZDFmMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC01MSw2ICs1
MSw3IEBACiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpT
U3RhY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1N0cmlu
Z0lubGluZXMuaCIKICNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIkxMSW50Q0xv
b3AuaCIKICNpbmNsdWRlICJMTEludFRodW5rcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAKaW5kZXggZjBlMDJiYTRlNDc2
Zjk5Y2M5MTNiMDQ2MmFkMjc5NTAwNjA5ZmEzYS4uMWMyNDBkY2Q3MWJlNTI5ZDg4Y2JmNDYxZDE4
NjhmNWViMmIwMmFkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL1Byb3RvQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvUHJvdG9DYWxsRnJhbWUuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiUHJv
dG9DYWxsRnJhbWUuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTQ0pT
VmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCBjYTdh
ZDExZjJlMGI4YTNiOGIxODU4OTFkN2U1MjJiYWU0MDNhMjM2Li5jYjU1MDdiZWFjNTViZjhlYjFi
MzdlYzkwZmNhYjE5MzRmYjQ4ZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAi
SklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggOThkMTBhM2Y0ZGNiMTJkODlmMzdh
MTJmMjI2MDRiOTQ2ZTA4ZTYyNy4uZGQwMzUzNzc5ZThiZGY5OGY0NjU4YTMwN2UzMmQwNmU0NzI0
NDE1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJf
NjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNw
cApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiSklU
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNp
bmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA5MjhkZDUwZmIwMTZlMjcxNjQ0YTU3NWUzMGFi
NWYyNTE2ZWI1MGVjLi40OTg3MGU2OGE4N2JlMTllMTU4YTA2ZDFjNjRmZWM5YjhiZDA4MjIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTQxLDYg
KzQxLDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25XcmFwcGVy
cy5oIgogI2luY2x1ZGUgIkpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCisj
aW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1
bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcAppbmRleCAyNmRkNGQxYWY3NDVhZmExZmJjNTNhOWMwMjNhNmU0NzQxYTY2
YTA5Li5kZjFiZDNhOWNmYTQwMmM1MmE1MjExY2YxYWNjZTY3ZDUxMjFiN2VlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMjksMTEg
KzI5LDEzIEBACiAjaW5jbHVkZSAiSklULmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNp
bmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkdDQXdhcmVKSVRTdHViUm91
dGluZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkludGVycHJldGVy
LmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNs
dWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNWYXJpYWJsZU9iamVj
dC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MzMl82NC5jcHAKaW5kZXggZDE4ZmVhNzE1Y2IwM2IzN2FhOTI2ZDg0OWE4ZTVhYjk1NjNlY2Qz
ZC4uMzI2MWIzYWY2ZWVhYmQ2ZjI2YTQzYTA4ZDIwNGJjNjJiMDY1ODliNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBA
IC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVRJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1l
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1ZhcmlhYmxlT2JqZWN0LmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwCmluZGV4IDQwNzg0YjQ5NDMxZmUwMmU4ZTQ1MjJmMTYzMDhjOTAyNDcxNmQyMzYuLjJmNzk1
NTU0YjA5MWRlZWJiYzAzYmYyYmU4Yzc0ZjQxYWU1NDFlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNQcm94
eS5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgogI2lu
Y2x1ZGUgIlN0YWNrVmlzaXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCA2MDRjYzI2M2NmOTdlMDg2ZmVk
MDZlYzkwM2IwZWMxOTgzZTc4MTM3Li44MTY2ZTdmODFmYTg5YTdkNGY1MGM1ZjFhOTRmYTk2OGM1
ZDU3ZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZz
ZXRzRXh0cmFjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRP
ZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkpJVFN0dWJz
LmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgotI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUg
IlZNLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU09iamVjdC5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5k
ZXggNjY0NDRiYWEwOGI1NjJkZDY5N2UwY2NkNzcyMWU1NWMxNWJhNDkxMy4uZDgyZTllOWMyODE4
NDYxZTMwNWZmODY1ZDJmYjE2OGE3OGNiYjRmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSAi
SklULmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlv
bi5oIgotI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNO
YW1lU2NvcGUuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IDhlYzFmZDMyYTNhZGEyMmUx
MjUyMjk1NzBkY2Y3ZmYyOGVhYmYxZWQuLjQ2YTdjNzZiMmY5MDFmYzNjYzM2ZDFjZTBjMDczNTNl
YjA2YjJmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVp
bGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBA
IC04ODgsOSArODg4LDkgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlv
bkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24KICAgICBBU1NFUlQoZnVu
Yy0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CiAgICAgRG90QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0
aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihmdW5jKTsKICAgICBGdW5jdGlvbkNhbGxEb3ROb2Rl
KiBub2RlOwotICAgIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5jYWxsKQorICAgIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5jYWxsIHx8IGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmNhbGxQ
cml2YXRlTmFtZSkKICAgICAgICAgbm9kZSA9IG5ldyAobV92bSkgQ2FsbEZ1bmN0aW9uQ2FsbERv
dE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2
b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKLSAgICBlbHNlIGlmIChkb3QtPmlkZW50aWZpZXIo
KSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcHBseSkKKyAgICBlbHNlIGlmIChkb3QtPmlkZW50
aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcHBseSB8fCBkb3QtPmlkZW50aWZpZXIo
KSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcHBseVByaXZhdGVOYW1lKQogICAgICAgICBub2Rl
ID0gbmV3IChtX3ZtKSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFz
ZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5k
KTsKICAgICBlbHNlCiAgICAgICAgIG5vZGUgPSBuZXcgKG1fdm0pIEZ1bmN0aW9uQ2FsbERvdE5v
ZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3Qs
IGRpdm90U3RhcnQsIGRpdm90RW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTGV4ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5j
cHAKaW5kZXggY2E0YmI0ZjBhZGU4ZDZiYzgyNjkxYTZjMDAwMTRjZjE5OGJkODhiZC4uY2NiMDc5
ZDk3NWExNDFjNWM0YjJkN2I2MjMxMzAwMDcwOTc3NzgyOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9MZXhlci5jcHAKQEAgLTI1LDEwICsyNSwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkxleGVyLmgiCiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgor
I2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgot
CiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKLSNpbmNsdWRlICJJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSAiTm9kZUluZm8uaCIKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1
ZGUgPHd0Zi9kdG9hLmg+CkBAIC05MCw2ICs5MCw3IEBAIGVudW0gQ2hhcmFjdGVyVHlwZSB7CiAK
ICAgICAvLyBPdGhlciB0eXBlcyAob25seSBvbmUgc28gZmFyKQogICAgIENoYXJhY3RlcldoaXRl
U3BhY2UsCisgICAgQ2hhcmFjdGVyUHJpdmF0ZUlkZW50aWZpZXJTdGFydAogfTsKIAogLy8gMjU2
IExhdGluLTEgY29kZXMKQEAgLTE1OCw3ICsxNTksNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQg
c2hvcnQgdHlwZXNPZkxhdGluMUNoYXJhY3RlcnNbMjU2XSA9IHsKIC8qICA2MSAtID0gICAgICAg
ICAgICAgICAgICAqLyBDaGFyYWN0ZXJFcXVhbCwKIC8qICA2MiAtID4gICAgICAgICAgICAgICAg
ICAqLyBDaGFyYWN0ZXJHcmVhdGVyLAogLyogIDYzIC0gPyAgICAgICAgICAgICAgICAgICovIENo
YXJhY3RlclF1ZXN0aW9uLAotLyogIDY0IC0gQCAgICAgICAgICAgICAgICAgICovIENoYXJhY3Rl
ckludmFsaWQsCisvKiAgNjQgLSBAICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyUHJpdmF0
ZUlkZW50aWZpZXJTdGFydCwKIC8qICA2NSAtIEEgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0
ZXJJZGVudGlmaWVyU3RhcnQsCiAvKiAgNjYgLSBCICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFj
dGVySWRlbnRpZmllclN0YXJ0LAogLyogIDY3IC0gQyAgICAgICAgICAgICAgICAgICovIENoYXJh
Y3RlcklkZW50aWZpZXJTdGFydCwKQEAgLTQ4Niw5ICs0ODcsMTAgQEAgc3RhdGljIGNvbnN0IExD
aGFyIHNpbmdsZUNoYXJhY3RlckVzY2FwZVZhbHVlc0ZvckFTQ0lJWzEyOF0gPSB7CiB9OwogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUxleGVyPFQ+OjpMZXhlcihWTSogdm0pCitMZXhlcjxUPjo6
TGV4ZXIoVk0qIHZtLCBKU1BhcnNlclN0cmljdG5lc3Mgc3RyaWN0bmVzcykKICAgICA6IG1faXNS
ZXBhcnNpbmcoZmFsc2UpCiAgICAgLCBtX3ZtKHZtKQorICAgICwgbV9wYXJzaW5nQnVpbHRpbkZ1
bmN0aW9uKHN0cmljdG5lc3MgPT0gSlNQYXJzZUJ1aWx0aW4pCiB7CiB9CiAKQEAgLTc1Myw3ICs3
NTUsMjcgQEAgaW5saW5lIHZvaWQgTGV4ZXI8VD46OnJlY29yZDE2KGludCBjKQogICAgIEFTU0VS
VChjIDw9IHN0YXRpY19jYXN0PGludD4oVVNIUlRfTUFYKSk7CiAgICAgbV9idWZmZXIxNi5hcHBl
bmQoc3RhdGljX2Nhc3Q8VUNoYXI+KGMpKTsKIH0KLQorICAgIAorI2lmICFBU1NFUlRfRElTQUJM
RUQKK2Jvb2wgaXNTYWZlSWRlbnRpZmllcihWTSYgdm0sIGNvbnN0IElkZW50aWZpZXIqIGlkZW50
KQoreworICAgIGlmICghaWRlbnQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIC8qIEp1c3Qg
YmxvY2sgYW55IHVzZSBvZiBzdXNwaWNpb3VzIGlkZW50aWZpZXJzLiAgVGhpcyBpcyBpbnRlbmRl
ZCB0bworICAgICAqIGJlIHVzZWQgYXMgYSBzYWZldHkgbmV0IHdoaWxlIGltcGxlbWVudGluZyBi
dWlsdGlucy4KKyAgICAgKi8KKyAgICBpZiAoKmlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmNh
bGwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKmlkZW50ID09IHZtLnByb3BlcnR5
TmFtZXMtPmFwcGx5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCppZGVudCA9PSB2
bS5wcm9wZXJ0eU5hbWVzLT5ldmFsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCpp
ZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5GdW5jdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisgICAgCiB0ZW1wbGF0ZSA8PgogdGVtcGxh
dGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlw
ZSBMZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcihKU1Rva2VuRGF0YSogdG9rZW5EYXRhLCB1
bnNpZ25lZCBsZXhlckZsYWdzLCBib29sIHN0cmljdE1vZGUpCiB7CkBAIC03NjUsNyArNzg3LDEx
IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUg
SlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAgICAgICAgICAgICByZXR1cm4ga2V5d29yZCA9
PSBSRVNFUlZFRF9JRl9TVFJJQ1QgJiYgIXN0cmljdE1vZGUgPyBJREVOVCA6IGtleXdvcmQ7CiAg
ICAgICAgIH0KICAgICB9Ci0KKyAgICAKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJl
bnQgPT0gJ0AnICYmIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKKyAgICBpZiAoaXNQcml2YXRl
TmFtZSkKKyAgICAgICAgc2hpZnQoKTsKKyAgICAKICAgICBjb25zdCBMQ2hhciogaWRlbnRpZmll
clN0YXJ0ID0gY3VycmVudFNvdXJjZVB0cigpOwogICAgIHVuc2lnbmVkIGlkZW50aWZpZXJMaW5l
U3RhcnQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CiAgICAgCkBAIC03NzksMTUgKzgwNSwy
NiBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5F
IEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAogCiAgICAgY29uc3QgSWRlbnRpZmllciogaWRl
bnQgPSAwOwogICAgIAotICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyKSB7CisgICAgaWYg
KHNob3VsZENyZWF0ZUlkZW50aWZpZXIgfHwgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CiAg
ICAgICAgIGludCBpZGVudGlmaWVyTGVuZ3RoID0gY3VycmVudFNvdXJjZVB0cigpIC0gaWRlbnRp
ZmllclN0YXJ0OwogICAgICAgICBpZGVudCA9IG1ha2VJZGVudGlmaWVyKGlkZW50aWZpZXJTdGFy
dCwgaWRlbnRpZmllckxlbmd0aCk7Ci0KKyAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5j
dGlvbikgeworICAgICAgICAgICAgaWYgKCFpc1NhZmVJZGVudGlmaWVyKCptX3ZtLCBpZGVudCkg
JiYgIWlzUHJpdmF0ZU5hbWUpIHsKKyAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9
IG1ha2VTdHJpbmcoIlRoZSB1c2Ugb2YgJyIsIGlkZW50LT5zdHJpbmcoKSwgIicgaXMgZGlzYWxs
b3dlZCBpbiBidWlsdGluIGZ1bmN0aW9ucy4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRVJS
T1JUT0s7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAg
ICAgICAgICAgICAgICBpZGVudCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPmdldFByaXZhdGVOYW1l
KCppZGVudCk7CisgICAgICAgICAgICBlbHNlIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlO
YW1lcy0+dW5kZWZpbmVkS2V5d29yZCkKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmlkZW50
ID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmRQcml2YXRlTmFtZTsKKyAg
ICAgICAgICAgIGlmICghaWRlbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSURfUFJJ
VkFURV9OQU1FX0VSUk9SVE9LOworICAgICAgICB9CiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQg
PSBpZGVudDsKICAgICB9IGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IDA7CiAKLSAg
ICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxh
Z3MgJiBMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpKSB7CisgICAgaWYgKFVOTElLRUxZ
KChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFn
c0lnbm9yZVJlc2VydmVkV29yZHMpKSAmJiAhaXNQcml2YXRlTmFtZSkgewogICAgICAgICBBU1NF
UlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChyZW1haW5pbmcgPCBtYXhU
b2tlbkxlbmd0aCkgewogICAgICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IG1fdm0t
PmtleXdvcmRzLT5nZXRLZXl3b3JkKCppZGVudCk7CkBAIC04MTQsNiArODUxLDEwIEBAIHRlbXBs
YXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5
cGUgTGV4ZXI8VUNoYXI+OjpwCiAgICAgICAgICAgICByZXR1cm4ga2V5d29yZCA9PSBSRVNFUlZF
RF9JRl9TVFJJQ1QgJiYgIXN0cmljdE1vZGUgPyBJREVOVCA6IGtleXdvcmQ7CiAgICAgICAgIH0K
ICAgICB9CisgICAgCisgICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gbV9jdXJyZW50ID09ICdAJyAm
JiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAg
ICAgIHNoaWZ0KCk7CiAKICAgICBjb25zdCBVQ2hhciogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVu
dFNvdXJjZVB0cigpOwogICAgIGludCBpZGVudGlmaWVyTGluZVN0YXJ0ID0gY3VycmVudExpbmVT
dGFydE9mZnNldCgpOwpAQCAtODI2LDYgKzg2Nyw3IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENy
ZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+Ojpw
CiAgICAgfQogICAgIAogICAgIGlmIChVTkxJS0VMWShtX2N1cnJlbnQgPT0gJ1xcJykpIHsKKyAg
ICAgICAgQVNTRVJUKCFpc1ByaXZhdGVOYW1lKTsKICAgICAgICAgc2V0T2Zmc2V0RnJvbVNvdXJj
ZVB0cihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMaW5lU3RhcnQpOwogICAgICAgICByZXR1
cm4gcGFyc2VJZGVudGlmaWVyU2xvd0Nhc2U8c2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4odG9rZW5E
YXRhLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKTsKICAgICB9CkBAIC04MzcsMTggKzg3OSwyOSBA
QCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpT
VG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogCiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQg
PSAwOwogICAgIAotICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyKSB7CisgICAgaWYgKHNo
b3VsZENyZWF0ZUlkZW50aWZpZXIgfHwgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CiAgICAg
ICAgIGludCBpZGVudGlmaWVyTGVuZ3RoID0gY3VycmVudFNvdXJjZVB0cigpIC0gaWRlbnRpZmll
clN0YXJ0OwogICAgICAgICBpZiAoaXNBbGw4Qml0KQogICAgICAgICAgICAgaWRlbnQgPSBtYWtl
SWRlbnRpZmllckxDaGFyRnJvbVVDaGFyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0
aCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGlkZW50ID0gbWFrZUlkZW50aWZpZXIoaWRl
bnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVuZ3RoKTsKLSAgICAgICAgCisgICAgICAgIGlmICht
X3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKKyAgICAgICAgICAgIGlmICghaXNTYWZlSWRlbnRp
ZmllcigqbV92bSwgaWRlbnQpICYmICFpc1ByaXZhdGVOYW1lKSB7CisgICAgICAgICAgICAgICAg
bV9sZXhFcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJUaGUgdXNlIG9mICciLCBpZGVudC0+c3Ry
aW5nKCksICInIGlzIGRpc2FsbG93ZWQgaW4gYnVpbHRpbiBmdW5jdGlvbnMuIik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIEVSUk9SVE9LOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KGlzUHJpdmF0ZU5hbWUpCisgICAgICAgICAgICAgICAgaWRlbnQgPSBtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5nZXRQcml2YXRlTmFtZSgqaWRlbnQpOworICAgICAgICAgICAgZWxzZSBpZiAoKmlkZW50
ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQpCisgICAgICAgICAgICAg
ICAgdG9rZW5EYXRhLT5pZGVudCA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3
b3JkUHJpdmF0ZU5hbWU7CisgICAgICAgICAgICBpZiAoIWlkZW50KQorICAgICAgICAgICAgICAg
IHJldHVybiBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzsKKyAgICAgICAgfQogICAgICAg
ICB0b2tlbkRhdGEtPmlkZW50ID0gaWRlbnQ7CiAgICAgfSBlbHNlCiAgICAgICAgIHRva2VuRGF0
YS0+aWRlbnQgPSAwOwogICAgIAotICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9r
ZW5MZW5ndGgpICYmICEobGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRz
KSkpIHsKKyAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAh
KGxleGVyRmxhZ3MgJiBMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpICYmICFpc1ByaXZh
dGVOYW1lKSB7CiAgICAgICAgIEFTU0VSVChzaG91bGRDcmVhdGVJZGVudGlmaWVyKTsKICAgICAg
ICAgaWYgKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSB7CiAgICAgICAgICAgICBjb25zdCBI
YXNoRW50cnkqIGVudHJ5ID0gbV92bS0+a2V5d29yZHMtPmdldEtleXdvcmQoKmlkZW50KTsKQEAg
LTE2NTgsNiArMTcxMSw3IEBAIGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ6CiAgICAgICAgIEFT
U0VSVChpc0lkZW50U3RhcnQobV9jdXJyZW50KSk7CiAgICAgICAgIEZBTExUSFJPVUdIOwogICAg
IGNhc2UgQ2hhcmFjdGVyQmFja1NsYXNoOgorICAgICAgICBwYXJzZUlkZW50OgogICAgICAgICBp
ZiAobGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250QnVpbGRLZXl3b3JkcykKICAgICAgICAgICAg
IHRva2VuID0gcGFyc2VJZGVudGlmaWVyPGZhbHNlPih0b2tlbkRhdGEsIGxleGVyRmxhZ3MsIHN0
cmljdE1vZGUpOwogICAgICAgICBlbHNlCkBAIC0xNjcwLDYgKzE3MjQsMTEgQEAgaW5OdW1iZXJB
ZnRlckRlY2ltYWxQb2ludDoKICAgICAgICAgbV90ZXJtaW5hdG9yID0gdHJ1ZTsKICAgICAgICAg
bV9saW5lU3RhcnQgPSBtX2NvZGU7CiAgICAgICAgIGdvdG8gc3RhcnQ7CisgICAgY2FzZSBDaGFy
YWN0ZXJQcml2YXRlSWRlbnRpZmllclN0YXJ0OgorICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRp
bkZ1bmN0aW9uKQorICAgICAgICAgICAgZ290byBwYXJzZUlkZW50OworCisgICAgICAgIEZBTExU
SFJPVUdIOwogICAgIGNhc2UgQ2hhcmFjdGVySW52YWxpZDoKICAgICAgICAgbV9sZXhFcnJvck1l
c3NhZ2UgPSBpbnZhbGlkQ2hhcmFjdGVyTWVzc2FnZSgpOwogICAgICAgICB0b2tlbiA9IEVSUk9S
VE9LOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCmluZGV4IDI4YzYxYmExOThkMmMx
NWE0OWJiMTg1MmVkMzBiZWZlYjg5MDQwMDguLmI4ODczZTk5NTAyODY0NGJmOGNiYjNkNGMyZGE1
NjJlOTNlMGU4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKQEAgLTcyLDcg
KzcyLDcgQEAgY2xhc3MgTGV4ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCiBw
dWJsaWM6Ci0gICAgTGV4ZXIoVk0qKTsKKyAgICBMZXhlcihWTSosIEpTUGFyc2VyU3RyaWN0bmVz
cyk7CiAgICAgfkxleGVyKCk7CiAKICAgICAvLyBDaGFyYWN0ZXIgbWFuaXB1bGF0aW9uIGZ1bmN0
aW9ucy4KQEAgLTIzOCw2ICsyMzgsNyBAQCBwcml2YXRlOgogICAgIElkZW50aWZpZXJBcmVuYSog
bV9hcmVuYTsKIAogICAgIFZNKiBtX3ZtOworICAgIGJvb2wgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0
aW9uOwogfTsKIAogdGVtcGxhdGUgPD4KQEAgLTMzNSw2ICszMzYsMTIgQEAgQUxXQVlTX0lOTElO
RSBjb25zdCBJZGVudGlmaWVyKiBMZXhlcjxUPjo6bWFrZUxDaGFySWRlbnRpZmllcihjb25zdCBV
Q2hhciogY2hhcmEKICAgICByZXR1cm4gJm1fYXJlbmEtPm1ha2VJZGVudGlmaWVyTENoYXJGcm9t
VUNoYXIobV92bSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKIH0KIAorI2lmIEFTU0VSVF9ESVNBQkxF
RAorQUxXQVlTX0lOTElORSBib29sIGlzU2FmZUlkZW50aWZpZXIoVk0mLCBjb25zdCBJZGVudGlm
aWVyKikgeyByZXR1cm4gdHJ1ZTsgfQorI2Vsc2UKK2Jvb2wgaXNTYWZlSWRlbnRpZmllcihWTSYs
IGNvbnN0IElkZW50aWZpZXIqKTsKKyNlbmRpZgorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIEFM
V0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNU
b2tlbiogdG9rZW5SZWNvcmQsIHVuc2lnbmVkIGxleGVyRmxhZ3MsIGJvb2wgc3RyaWN0TW9kZSkK
IHsKQEAgLTM3MCwxMCArMzc3LDE1IEBAIEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8
VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tlbiogdG9rZW5SZWNvcmQsIHVuCiAgICAgQVNT
RVJUKGN1cnJlbnRPZmZzZXQoKSA+PSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCkpOwogCiAgICAg
Ly8gQ3JlYXRlIHRoZSBpZGVudGlmaWVyIGlmIG5lZWRlZAotICAgIGlmIChsZXhlckZsYWdzICYg
TGV4ZXhGbGFnc0RvbnRCdWlsZEtleXdvcmRzKQorICAgIGlmIChsZXhlckZsYWdzICYgTGV4ZXhG
bGFnc0RvbnRCdWlsZEtleXdvcmRzCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICAmJiAh
bV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uCisjZW5kaWYKKyAgICAgICAgKQogICAgICAgICB0b2tl
bkRhdGEtPmlkZW50ID0gMDsKICAgICBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBt
YWtlTENoYXJJZGVudGlmaWVyKHN0YXJ0LCBwdHIgLSBzdGFydCk7CisKICAgICB0b2tlbkxvY2F0
aW9uLT5saW5lID0gbV9saW5lTnVtYmVyOwogICAgIHRva2VuTG9jYXRpb24tPmxpbmVTdGFydE9m
ZnNldCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKICAgICB0b2tlbkxvY2F0aW9uLT5zdGFy
dE9mZnNldCA9IG9mZnNldEZyb21Tb3VyY2VQdHIoc3RhcnQpOwpAQCAtMzgxLDYgKzM5MywxMyBA
QCBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVy
KEpTVG9rZW4qIHRva2VuUmVjb3JkLCB1bgogICAgIEFTU0VSVCh0b2tlbkxvY2F0aW9uLT5zdGFy
dE9mZnNldCA+PSB0b2tlbkxvY2F0aW9uLT5saW5lU3RhcnRPZmZzZXQpOwogICAgIHRva2VuUmVj
b3JkLT5tX3N0YXJ0UG9zaXRpb24gPSBzdGFydFBvc2l0aW9uOwogICAgIHRva2VuUmVjb3JkLT5t
X2VuZFBvc2l0aW9uID0gY3VycmVudFBvc2l0aW9uKCk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAor
ICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKKyAgICAgICAgaWYgKCFpc1NhZmVJ
ZGVudGlmaWVyKCptX3ZtLCB0b2tlbkRhdGEtPmlkZW50KSkKKyAgICAgICAgICAgIHJldHVybiBF
UlJPUlRPSzsKKyAgICB9CisjZW5kaWYKKwogICAgIG1fbGFzdFRva2VuID0gSURFTlQ7CiAgICAg
cmV0dXJuIElERU5UOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApp
bmRleCBmYzljY2Q5ZjZjNTc2YzFhZWY1NDdmMjExZmRkNTk2ZjQyZTA1ODA2Li5kOTUyYmE2YTk0
ZDJmNmI0MTgyMTU1MDA0ZDBhOTcwODQyOWJkNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVzLmNwcApAQCAtMTMyLDYgKzEzMiwxMiBAQCBQYXNzUmVmUHRyPFByb2dyYW1Ob2Rl
PiBQcm9ncmFtTm9kZTo6Y3JlYXRlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFy
dAogICAgIHJldHVybiBub2RlLnJlbGVhc2UoKTsKIH0KIAorCit2b2lkIFByb2dyYW1Ob2RlOjpz
ZXRDbG9zZWRWYXJpYWJsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJiBjbG9z
ZWRWYXJpYWJsZXMpCit7CisgICAgbV9jbG9zZWRWYXJpYWJsZXMgPSBzdGQ6Om1vdmUoY2xvc2Vk
VmFyaWFibGVzKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV2YWxO
b2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGlubGluZSBFdmFsTm9kZTo6RXZh
bE5vZGUoVk0qIHZtLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNl
RWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1
bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IGQ3NzlhMTc4ZDk1NmZmOTlmZDBiZWQ1
ZDVmNDU0YWEzZTZiNTA4NzkuLjgxNmZmMDAxYWJmMDM3NmM2NDJmMWE5MzhkMGUwYTlmNTI5Y2E2
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTE0MzEsNiArMTQzMSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG5lZWRzQWN0aXZhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIChoYXNDYXB0dXJlZFZhcmlhYmxlcygpKSB8fCAobV9mZWF0dXJlcyAmIChFdmFs
RmVhdHVyZSB8IFdpdGhGZWF0dXJlIHwgQ2F0Y2hGZWF0dXJlKSk7IH0KICAgICAgICAgYm9vbCBo
YXNDYXB0dXJlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuICEhbV9jYXB0dXJlZFZhcmlhYmxl
cy5zaXplKCk7IH0KICAgICAgICAgc2l6ZV90IGNhcHR1cmVkVmFyaWFibGVDb3VudCgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FwdHVyZWRWYXJpYWJsZXMuc2l6ZSgpOyB9CisgICAgICAgIGNvbnN0IElk
ZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9jYXB0dXJl
ZFZhcmlhYmxlczsgfQogICAgICAgICBib29sIGNhcHR1cmVzKGNvbnN0IElkZW50aWZpZXImIGlk
ZW50KSB7IHJldHVybiBtX2NhcHR1cmVkVmFyaWFibGVzLmNvbnRhaW5zKGlkZW50LmltcGwoKSk7
IH0KIAogICAgICAgICBWYXJTdGFjayYgdmFyU3RhY2soKSB7IHJldHVybiBtX3ZhclN0YWNrOyB9
CkBAIC0xNDQ2LDYgKzE0NDcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RhdGVtZW50
Tm9kZSogc2luZ2xlU3RhdGVtZW50KCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBlbWl0U3RhdGVt
ZW50c0J5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZGVzdGluYXRpb24p
OworICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRDbG9zZWRWYXJpYWJsZXMoY29uc3QgVmVjdG9y
PFJlZlB0cjxTdHJpbmdJbXBsPj4mJikgeyB9CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZv
aWQgc2V0U291cmNlKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkgeyBtX3NvdXJjZSA9IHNvdXJj
ZTsgfQpAQCAtMTQ3NSwxMSArMTQ3OCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBz
dGF0aWMgY29uc3QgYm9vbCBzY29wZUlzRnVuY3Rpb24gPSBmYWxzZTsKIAorICAgICAgICB2b2lk
IHNldENsb3NlZFZhcmlhYmxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmKTsK
KyAgICAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mIGNsb3NlZFZhcmlhYmxl
cygpIGNvbnN0IHsgcmV0dXJuIG1fY2xvc2VkVmFyaWFibGVzOyB9CiAgICAgcHJpdmF0ZToKICAg
ICAgICAgUHJvZ3JhbU5vZGUoVk0qLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVu
ZENvbHVtbiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVu
dGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0
YW50cyk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7Ci0KKyAgICAgICAgVmVjdG9yPFJlZlB0
cjxTdHJpbmdJbXBsPj4gbV9jbG9zZWRWYXJpYWJsZXM7CiAgICAgICAgIHVuc2lnbmVkIG1fc3Rh
cnRDb2x1bW47CiAgICAgICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwogICAgIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggMjk3NjY2ZTcyNmU0NWQwODNlZjEz
NDlkZGZmZGYzN2VmODAwZGY3YS4uNTBiZWM3OWZlMzhhZGY4ZjNhMDRmNmI0NmNiZDJhNWNiZmNm
MjQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjA0LDgg
KzIwNCw5IEBAIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIoVk0qIHZtLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIEZ1bmN0aW9uUGFyYW1ldGVycyoKICAgICAsIG1fbGFzdElkZW50aWZpZXIo
MCkKICAgICAsIG1fbGFzdEZ1bmN0aW9uTmFtZShudWxscHRyKQogICAgICwgbV9zb3VyY2VFbGVt
ZW50cygwKQorICAgICwgbV9wYXJzaW5nQnVpbHRpbihzdHJpY3RuZXNzID09IEpTUGFyc2VCdWls
dGluKQogewotICAgIG1fbGV4ZXIgPSBhZG9wdFB0cihuZXcgTGV4ZXJUeXBlKHZtKSk7CisgICAg
bV9sZXhlciA9IGFkb3B0UHRyKG5ldyBMZXhlclR5cGUodm0sIHN0cmljdG5lc3MpKTsKICAgICBt
X2FyZW5hID0gbV92bS0+cGFyc2VyQXJlbmEuZ2V0KCk7CiAgICAgbV9sZXhlci0+c2V0Q29kZShz
b3VyY2UsIG1fYXJlbmEpOwogICAgIG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lID0gc291cmNlLmZp
cnN0TGluZSgpOwpAQCAtMjU2LDYgKzI1Nyw3IEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VJbm5lcigpCiAgICAgSWRlbnRpZmllclNldCBjYXB0dXJlZFZhcmlhYmxlczsKICAgICBi
b29sIG1vZGlmaWVkUGFyYW1ldGVyID0gZmFsc2U7CiAgICAgc2NvcGUtPmdldENhcHR1cmVkVmFy
aWFibGVzKGNhcHR1cmVkVmFyaWFibGVzLCBtb2RpZmllZFBhcmFtZXRlcik7CisgICAgCiAgICAg
Q29kZUZlYXR1cmVzIGZlYXR1cmVzID0gY29udGV4dC5mZWF0dXJlcygpOwogICAgIGlmIChzY29w
ZS0+c3RyaWN0TW9kZSgpKQogICAgICAgICBmZWF0dXJlcyB8PSBTdHJpY3RNb2RlRmVhdHVyZTsK
QEAgLTI2MywyMSArMjY1LDM2IEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5l
cigpCiAgICAgICAgIGZlYXR1cmVzIHw9IFNoYWRvd3NBcmd1bWVudHNGZWF0dXJlOwogICAgIGlm
IChtb2RpZmllZFBhcmFtZXRlcikKICAgICAgICAgZmVhdHVyZXMgfD0gTW9kaWZpZWRQYXJhbWV0
ZXJGZWF0dXJlOwotCisgICAgCisgICAgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4gY2xvc2Vk
VmFyaWFibGVzOworICAgIGlmIChtX3BhcnNpbmdCdWlsdGluKSB7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCFjYXB0dXJlZFZhcmlhYmxlcy5zaXplKCkpOworICAgICAgICBJZGVudGlmaWVyU2V0
IHVzZWRWYXJpYWJsZXM7CisgICAgICAgIHNjb3BlLT5nZXRVc2VkVmFyaWFibGVzKHVzZWRWYXJp
YWJsZXMpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHZhcmlhYmxlIDogdXNlZFZhcmlhYmxl
cykgeworICAgICAgICAgICAgaWYgKHNjb3BlLT5oYXNEZWNsYXJlZFZhcmlhYmxlKElkZW50aWZp
ZXIobV92bSwgdmFyaWFibGUuZ2V0KCkpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHNjb3BlLT5oYXNEZWNsYXJlZFBhcmFtZXRlcihJ
ZGVudGlmaWVyKG1fdm0sIHZhcmlhYmxlLmdldCgpKSkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICBjbG9zZWRWYXJpYWJsZXMuYXBwZW5kKHZhcmlhYmxlKTsKKyAgICAg
ICAgfQorICAgIH0KICAgICBkaWRGaW5pc2hQYXJzaW5nKHNvdXJjZUVsZW1lbnRzLCBjb250ZXh0
LnZhckRlY2xhcmF0aW9ucygpLCBjb250ZXh0LmZ1bmNEZWNsYXJhdGlvbnMoKSwgZmVhdHVyZXMs
Ci0gICAgICAgIGNvbnRleHQubnVtQ29uc3RhbnRzKCksIGNhcHR1cmVkVmFyaWFibGVzKTsKKyAg
ICAgICAgY29udGV4dC5udW1Db25zdGFudHMoKSwgY2FwdHVyZWRWYXJpYWJsZXMsIHN0ZDo6bW92
ZShjbG9zZWRWYXJpYWJsZXMpKTsKIAogICAgIHJldHVybiBwYXJzZUVycm9yOwogfQogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdm9pZCBQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmlu
aXNoUGFyc2luZyhTb3VyY2VFbGVtZW50cyogc291cmNlRWxlbWVudHMsIFBhcnNlckFyZW5hRGF0
YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+KiB2YXJTdGFjaywgCi0gICAgUGFyc2VyQXJl
bmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiogZnVuY1N0YWNrLCBDb2Rl
RmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMsIElkZW50aWZpZXJTZXQmIGNhcHR1
cmVkVmFycykKKyAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9u
U3RhY2s+KiBmdW5jU3RhY2ssIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50
cywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmlu
Z0ltcGw+PiYmIGNsb3NlZFZhcmlhYmxlcykKIHsKICAgICBtX3NvdXJjZUVsZW1lbnRzID0gc291
cmNlRWxlbWVudHM7CiAgICAgbV92YXJEZWNsYXJhdGlvbnMgPSB2YXJTdGFjazsKICAgICBtX2Z1
bmNEZWNsYXJhdGlvbnMgPSBmdW5jU3RhY2s7CiAgICAgbV9jYXB0dXJlZFZhcmlhYmxlcy5zd2Fw
KGNhcHR1cmVkVmFycyk7CisgICAgbV9jbG9zZWRWYXJpYWJsZXMgPSBjbG9zZWRWYXJpYWJsZXM7
CiAgICAgbV9mZWF0dXJlcyA9IGZlYXR1cmVzOwogICAgIG1fbnVtQ29uc3RhbnRzID0gbnVtQ29u
c3RhbnRzOwogfQpAQCAtMjM0Niw2ICsyMzYzLDEwIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhl
clR5cGU+IHZvaWQgUGFyc2VyPExleGVyVHlwZT46OnByaW50VW5leHBlY3RlZFRva2VuVGV4dChX
CiAgICAgY2FzZSBSRVNFUlZFRDoKICAgICAgICAgb3V0LnByaW50KCJVbmV4cGVjdGVkIHVzZSBv
ZiByZXNlcnZlZCB3b3JkICciLCBnZXRUb2tlbigpLCAiJyIpOwogICAgICAgICByZXR1cm47CisK
KyAgICBjYXNlIElOVkFMSURfUFJJVkFURV9OQU1FX0VSUk9SVE9LOgorICAgICAgICBvdXQucHJp
bnQoIkludmFsaWQgcHJpdmF0ZSBuYW1lICciLCBnZXRUb2tlbigpLCAiJyIpOworICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICAKICAgICBjYXNlIElERU5UOgogICAgICAgICBvdXQucHJpbnQo
IlVuZXhwZWN0ZWQgaWRlbnRpZmllciAnIiwgZ2V0VG9rZW4oKSwgIiciKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGI2OThlZjkzNjhjYjhjOGYxOTdjY2QwMDBhY2Fh
NmRmYjExYmEyNDQuLjkwMzM4NTBjOGM5N2Y1N2UyMWRhNWVlZGIwMmQwNDRmNGM4OTc4ZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjMsNiArMjMsNyBAQAogI2lm
bmRlZiBQYXJzZXJfaAogI2RlZmluZSBQYXJzZXJfaAogCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRp
ZmllcnMuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBl
cnMuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCkBAIC0yNTksNiArMjYwLDEwIEBAIHN0cnVj
dCBTY29wZSB7CiAgICAgICAgIHJldHVybiBpc1ZhbGlkU3RyaWN0TW9kZSA/IEJpbmRpbmdTdWNj
ZWVkZWQgOiBTdHJpY3RCaW5kaW5nRmFpbGVkOwogICAgIH0KIAorICAgIHZvaWQgZ2V0VXNlZFZh
cmlhYmxlcyhJZGVudGlmaWVyU2V0JiB1c2VkVmFyaWFibGVzKQorICAgIHsKKyAgICAgICAgdXNl
ZFZhcmlhYmxlcy5zd2FwKG1fdXNlZFZhcmlhYmxlcyk7CisgICAgfQogCiAgICAgdm9pZCB1c2VW
YXJpYWJsZShjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgYm9vbCBpc0V2YWwpCiAgICAgewpAQCAt
NDE0LDYgKzQxOSw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IHBhcnNl
KFBhcnNlckVycm9yJik7CiAKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3RO
ZXdsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+cG9zaXRpb25CZWZvcmVMYXN0TmV3bGlu
ZSgpOyB9CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJiBjbG9zZWRWYXJp
YWJsZXMoKSB7IHJldHVybiBzdGQ6Om1vdmUobV9jbG9zZWRWYXJpYWJsZXMpOyB9CiAKIHByaXZh
dGU6CiAgICAgc3RydWN0IEFsbG93SW5PdmVycmlkZSB7CkBAIC01NDAsNyArNTQ2LDcgQEAgcHJp
dmF0ZToKICAgICBTdHJpbmcgcGFyc2VJbm5lcigpOwogCiAgICAgdm9pZCBkaWRGaW5pc2hQYXJz
aW5nKFNvdXJjZUVsZW1lbnRzKiwgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpW
YXJTdGFjaz4qLCAKLSAgICAgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpG
dW5jdGlvblN0YWNrPiosIENvZGVGZWF0dXJlcywgaW50LCBJZGVudGlmaWVyU2V0Jik7CisgICAg
ICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qLCBD
b2RlRmVhdHVyZXMsIGludCwgSWRlbnRpZmllclNldCYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3Ry
aW5nSW1wbD4+JiYpOwogCiAgICAgLy8gVXNlZCB0byBkZXRlcm1pbmUgdHlwZSBvZiBlcnJvciB0
byByZXBvcnQuCiAgICAgYm9vbCBpc0Z1bmN0aW9uQm9keU5vZGUoU2NvcGVOb2RlKikgeyByZXR1
cm4gZmFsc2U7IH0KQEAgLTg0MCw5ICs4NDYsMTEgQEAgcHJpdmF0ZToKICAgICBjb25zdCBJZGVu
dGlmaWVyKiBtX2xhc3RGdW5jdGlvbk5hbWU7CiAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyQ2Fj
aGU+IG1fZnVuY3Rpb25DYWNoZTsKICAgICBTb3VyY2VFbGVtZW50cyogbV9zb3VyY2VFbGVtZW50
czsKKyAgICBib29sIG1fcGFyc2luZ0J1aWx0aW47CiAgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xh
cmF0aW9uU3RhY2tzOjpWYXJTdGFjaz4qIG1fdmFyRGVjbGFyYXRpb25zOwogICAgIFBhcnNlckFy
ZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qIG1fZnVuY0RlY2xhcmF0
aW9uczsKICAgICBJZGVudGlmaWVyU2V0IG1fY2FwdHVyZWRWYXJpYWJsZXM7CisgICAgVmVjdG9y
PFJlZlB0cjxTdHJpbmdJbXBsPj4gbV9jbG9zZWRWYXJpYWJsZXM7CiAgICAgQ29kZUZlYXR1cmVz
IG1fZmVhdHVyZXM7CiAgICAgaW50IG1fbnVtQ29uc3RhbnRzOwogICAgIApAQCAtOTU3LDYgKzk2
NSwxMCBAQCBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IHBhcnNlKFZNKiB2bSwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcgogICAgICAgICBSZWZQdHI8UGFyc2VkTm9k
ZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yKTsKICAgICAgICAgaWYg
KHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVM
YXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CisgICAgICAg
IGlmIChzdHJpY3RuZXNzID09IEpTUGFyc2VCdWlsdGluKSB7CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChyZXN1bHQpOworICAgICAgICAgICAgcmVzdWx0LT5zZXRDbG9zZWRWYXJpYWJsZXMo
c3RkOjptb3ZlKHBhcnNlci5jbG9zZWRWYXJpYWJsZXMoKSkpOworICAgICAgICB9CiAgICAgICAg
IHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogICAgIH0KICAgICBQYXJzZXI8TGV4ZXI8VUNoYXI+
PiBwYXJzZXIodm0sIHNvdXJjZSwgcGFyYW1ldGVycywgbmFtZSwgc3RyaWN0bmVzcywgcGFyc2Vy
TW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1v
ZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKaW5kZXgg
NGU5YTE3Y2QyMWNhMzQxNDZiYmQ0ODE1NmEzNzJjZDQwNGRlZjYwYy4uZjdhNzViZjdjMzc4NTdl
NDRiNmQ1ZDcxZjQ1MjliYjFhYzFjZjVmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyTW9kZXMuaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
ZW51bSBKU1BhcnNlclN0cmljdG5lc3MgeyBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlU3RyaWN0IH07
CitlbnVtIEpTUGFyc2VyU3RyaWN0bmVzcyB7IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VCdWlsdGlu
LCBKU1BhcnNlU3RyaWN0IH07CiBlbnVtIEpTUGFyc2VyTW9kZSB7IEpTUGFyc2VQcm9ncmFtQ29k
ZSwgSlNQYXJzZUZ1bmN0aW9uQ29kZSB9OwogCiBlbnVtIFByb2ZpbGVyTW9kZSB7IFByb2ZpbGVy
T2ZmLCBQcm9maWxlck9uIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlclRva2Vucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJU
b2tlbnMuaAppbmRleCA4MmEyNjYzOWE3OTIyMGEwODQ0NTZiNDhmMzI4NTJkMTQzYzczOWQwLi44
Yzg3YWQ5ZmFkYmRjNGFmMzlhYzk5ZGIyZDg0NDVlMTNmZmZkMzVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKQEAgLTE0OSw2ICsxNDksNyBAQCBlbnVt
IEpTVG9rZW5UeXBlIHsKICAgICBJTlZBTElEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSyA9IDcg
fCBFcnJvclRva2VuRmxhZywKICAgICBVTlRFUk1JTkFURURfU1RSSU5HX0xJVEVSQUxfRVJST1JU
T0sgPSA4IHwgRXJyb3JUb2tlbkZsYWcgfCBVbnRlcm1pbmF0ZWRFcnJvclRva2VuRmxhZywKICAg
ICBJTlZBTElEX1NUUklOR19MSVRFUkFMX0VSUk9SVE9LID0gOSB8IEVycm9yVG9rZW5GbGFnLAor
ICAgIElOVkFMSURfUFJJVkFURV9OQU1FX0VSUk9SVE9LID0gMTAgfCBFcnJvclRva2VuRmxhZwog
fTsKIAogc3RydWN0IEpTVGV4dFBvc2l0aW9uIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJnTGlzdC5jcHAKaW5kZXggZTEzMTA0ZGY1OTIyZDA3NzYyNTdkMDVjYjVlODcwNTM3ZDIx
NDI4YS4uMjRjMDZiYmIxYzJjMzRiOWRhNWVmODRiMjU1Yzk5MDBkYWY4NTkxMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5jcHAKQEAgLTIyLDcgKzIyLDcgQEAKICNp
bmNsdWRlICJBcmdMaXN0LmgiCiAKICNpbmNsdWRlICJIZWFwUm9vdFZpc2l0b3IuaCIKLSNpbmNs
dWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNs
dWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKaW5kZXggOGZkMTk1Y2I5YjVmN2VmNWJm
M2QyZmQ5MzM0MmIwMTAyNzI1ZmFmMS4uNGZiYWM2ODg2MzQ4NjE3MTY0OWEzMzRkNjFiNWRjYzM4
MTRkZDU1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1l
bnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3Bw
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiQXJndW1lbnRzLmgiCiAKICNpbmNsdWRlICJD
YWxsRnJhbWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNs
dWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0FyZ3VtZW50c0l0ZXJhdG9yLmgiCiAj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1
bWVudHMuaAppbmRleCAxOGYzODkxNzEzODUyMzYyYzdhNzVhMzA1M2I0NjMxNDE3YmViODFiLi5m
MTZmZDNkZTQwNTU5NzBiYTlkOWM2ZjBhZTYzMThmMjIwNGI2NTRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaApAQCAtMjUsNiArMjUsNyBAQAogI2RlZmluZSBB
cmd1bWVudHNfaAogCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgorI2luY2x1ZGUgIkNvbW1vbklk
ZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNEZXN0
cnVjdGlibGVPYmplY3QuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yQ29u
c3RydWN0b3IuY3BwCmluZGV4IGFmYjU5NzkwY2IwMDk5ODliYjdiNDI4NjNlOTE4MjMzNTc2Yjhh
YWMuLjkxY2FjZGZhODU3ZWI2OTM3NmEzMDgxYThjNzAyYWM5YzIxN2NhN2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJh
dG9yQ29uc3RydWN0b3IuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQXJndW1lbnRz
SXRlcmF0b3JDb25zdHJ1Y3Rvci5oIgogCiAjaW5jbHVkZSAiQXJndW1lbnRzSXRlcmF0b3JQcm90
b3R5cGUuaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkpTQXJn
dW1lbnRzSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTQ2VsbElubGluZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcAppbmRleCBkZDA4OTRm
MTRhMDIxZDVmMTI2NThhY2IwMWU3MjFmY2Q2ZDM0OGNjLi41YjRhZTg3MTZiMDU1M2JlNDYyMzk1
NWU5OWUxYjQzZWJmMThmZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCkBAIC0yNiw3ICsy
Niw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGUuaCIKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAi
SlNBcmd1bWVudHNJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheVByb3RvdHlwZS5jcHAKaW5kZXggMjdhYzZkNDhhNzFmNzk1NTAyYTEwY2VhNjQ3ODY1NDEz
NWE0NjNhMC4uNmRjN2JlNTY5NjlkZTY3ZjYyMTA3YmIzYTUxYTMwOGZhM2JhNzZiZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTQXJyYXlJdGVyYXRv
ci5oIgogI2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nSm9pbmVyLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgi
CiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCkBAIC01Niw3ICs1Nyw2IEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRl
Kik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1Nv
cnQoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJh
eVByb3RvRnVuY1NwbGljZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVW5TaGlmdChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRXZlcnkoRXhlY1N0YXRlKik7
CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0ZvckVh
Y2goRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJh
eVByb3RvRnVuY1NvbWUoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheVByb3RvRnVuY0luZGV4T2YoRXhlY1N0YXRlKik7CkBAIC05NTQsNjkgKzk1
NCw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNNYXAoRXhl
Y1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0QXJyYXkpOwog
fQogCi0vLyBEb2N1bWVudGF0aW9uIGZvciB0aGVzZSB0aHJlZSBpcyBhdmFpbGFibGUgYXQ6Ci0v
LyBodHRwOi8vZGV2ZWxvcGVyLXRlc3QubW96aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0phdmFTY3Jp
cHRfMS41X1JlZmVyZW5jZTpPYmplY3RzOkFycmF5OmV2ZXJ5Ci0vLyBodHRwOi8vZGV2ZWxvcGVy
LXRlc3QubW96aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0phdmFTY3JpcHRfMS41X1JlZmVyZW5jZTpP
YmplY3RzOkFycmF5OmZvckVhY2gKLS8vIGh0dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3ppbGxhLm9y
Zy9lbi9kb2NzL0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6QXJyYXk6c29t
ZQotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRXZlcnkoRXhl
Y1N0YXRlKiBleGVjKQotewotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhlYy0+aG9zdFRoaXNW
YWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKLSAgICB1bnNp
Z25lZCBsZW5ndGggPSB0aGlzT2JqLT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxl
bmd0aCkudG9VSW50MzIoZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCi0gICAgSlNWYWx1
ZSBmdW5jdGlvbiA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwot
ICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsK
LSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjKTsKLQotICAgIEpTVmFsdWUgYXBwbHlUaGlzID0gZXhlYy0+YXJndW1l
bnQoMSk7Ci0KLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbih0cnVlKTsKLQotICAgIHVu
c2lnbmVkIGsgPSAwOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUpTICYmIGlzSlNBcnJh
eSh0aGlzT2JqKSkgewotICAgICAgICBKU0Z1bmN0aW9uKiBmID0ganNDYXN0PEpTRnVuY3Rpb24q
PihmdW5jdGlvbik7Ci0gICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh0aGlzT2JqKTsK
LSAgICAgICAgQ2FjaGVkQ2FsbCBjYWNoZWRDYWxsKGV4ZWMsIGYsIDMpOwotICAgICAgICBmb3Ig
KDsgayA8IGxlbmd0aCAmJiAhZXhlYy0+aGFkRXhjZXB0aW9uKCk7ICsraykgewotICAgICAgICAg
ICAgaWYgKFVOTElLRUxZKCFhcnJheS0+Y2FuR2V0SW5kZXhRdWlja2x5KGspKSkKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRU
aGlzKGFwcGx5VGhpcyk7Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDAsIGFy
cmF5LT5nZXRJbmRleFF1aWNrbHkoaykpOwotICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1
bWVudCgxLCBqc051bWJlcihrKSk7Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50
KDIsIHRoaXNPYmopOwotICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWNoZWRDYWxsLmNh
bGwoKTsKLSAgICAgICAgICAgIGlmICghcmVzdWx0LnRvQm9vbGVhbihleGVjKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwotICAgICAg
ICB9Ci0gICAgfQotICAgIGZvciAoOyBrIDwgbGVuZ3RoICYmICFleGVjLT5oYWRFeGNlcHRpb24o
KTsgKytrKSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmopOwotICAgICAgICBp
ZiAoIXRoaXNPYmotPmdldFByb3BlcnR5U2xvdChleGVjLCBrLCBzbG90KSkKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotCi0gICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGVhY2hBcmd1bWVudHM7
Ci0gICAgICAgIGVhY2hBcmd1bWVudHMuYXBwZW5kKHNsb3QuZ2V0VmFsdWUoZXhlYywgaykpOwot
ICAgICAgICBlYWNoQXJndW1lbnRzLmFwcGVuZChqc051bWJlcihrKSk7Ci0gICAgICAgIGVhY2hB
cmd1bWVudHMuYXBwZW5kKHRoaXNPYmopOwotCi0gICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
Ci0KLSAgICAgICAgYm9vbCBwcmVkaWNhdGVSZXN1bHQgPSBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBj
YWxsVHlwZSwgY2FsbERhdGEsIGFwcGx5VGhpcywgZWFjaEFyZ3VtZW50cykudG9Cb29sZWFuKGV4
ZWMpOwotICAgICAgICBpZiAoIXByZWRpY2F0ZVJlc3VsdCkgewotICAgICAgICAgICAgcmVzdWx0
ID0ganNCb29sZWFuKGZhbHNlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotfQotCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRm9yRWFjaChFeGVjU3RhdGUqIGV4ZWMp
CiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmogPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCkudG9UaGlz
KGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggNTEwZTM4M2ZhZTU3NWFhZGE4MTc2YzA0NDFl
ZTcyNWI0M2E0YzczMi4uZDMwNDg3N2ZlOWNkZTFjMDkxOWZkNDU5NWY4MTFlY2FiY2U3NzI3NiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC0xNDQs
MjQgKzE0NCwyNiBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hlOjpnZXRG
dW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShWTSYgdgogICAgIEpTVGV4dFBvc2l0aW9u
IHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmU7CiAgICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBwcm9n
cmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KCZ2bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIEpT
UGFyc2VOb3JtYWwsIEpTUGFyc2VQcm9ncmFtQ29kZSwgZXJyb3IsICZwb3NpdGlvbkJlZm9yZUxh
c3ROZXdsaW5lKTsKICAgICBpZiAoIXByb2dyYW0pIHsKLSAgICAgICAgQVNTRVJUKGVycm9yLm1f
dHlwZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
ZXJyb3IubV90eXBlICE9IFBhcnNlckVycm9yOjpFcnJvck5vbmUpOwogICAgICAgICBtX3NvdXJj
ZUNvZGUucmVtb3ZlKGFkZFJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBhbiBpbnB1dCBzdHJpbmcgdGhhdCB3
b3VsZCByZXN1bHQgaW4gYSBzaW5nbGUgYW5vbnltb3VzIGZ1bmN0aW9uIGV4cHJlc3Npb24uCiAg
ICAgU3RhdGVtZW50Tm9kZSogZXhwclN0YXRlbWVudCA9IHByb2dyYW0tPnNpbmdsZVN0YXRlbWVu
dCgpOwotICAgIEFTU0VSVChleHByU3RhdGVtZW50KTsKLSAgICBBU1NFUlQoZXhwclN0YXRlbWVu
dC0+aXNFeHByU3RhdGVtZW50KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQp
OworICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsK
ICAgICBFeHByZXNzaW9uTm9kZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVtZW50
Tm9kZSo+KGV4cHJTdGF0ZW1lbnQpLT5leHByKCk7Ci0gICAgQVNTRVJUKGZ1bmNFeHByKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwcik7CiAgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHIt
PmlzRnVuY0V4cHJOb2RlKCkpOwogICAgIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkgPSBzdGF0aWNf
Y2FzdDxGdW5jRXhwck5vZGUqPihmdW5jRXhwciktPmJvZHkoKTsKKyAgICBSRUxFQVNFX0FTU0VS
VCghcHJvZ3JhbS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CisgICAgCiAgICAgYm9keS0+c2V0
RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7Ci0gICAgQVNTRVJUKGJvZHkp
OwotICAgIEFTU0VSVChib2R5LT5pZGVudCgpLmlzTnVsbCgpKTsKKyAgICBSRUxFQVNFX0FTU0VS
VChib2R5KTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5LT5pZGVudCgpLmlzTnVsbCgpKTsKIAot
ICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBib2R5LCB0cnVlKTsK
KyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgYm9keSwgdHJ1ZSwg
VW5saW5rZWROb3JtYWxGdW5jdGlvbik7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5tX25hbWVW
YWx1ZS5zZXQodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwganNTdHJpbmcoJnZtLCBuYW1lLnN0cmlu
ZygpKSk7CiAKICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gU291cmNlQ29kZVZhbHVl
KHZtLCBmdW5jdGlvbkV4ZWN1dGFibGUsIG1fc291cmNlQ29kZS5hZ2UoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKaW5kZXgg
M2Y1YzY0NWMwOThkNTI3ZmMwYzcyNTllOTQ0N2VmYmU4ODY4YTI5Yy4uMmZjMmI3MjdhZmNlZWUx
ZWMyYzYyNWRlNTY3NWIzYmUxY2Y2MGQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcApAQCAtMjcsNyArMjcsMTAgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICNkZWZpbmUgSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKG5hbWUpICwg
bmFtZSh2bSwgI25hbWUpCiAjZGVmaW5lIElOSVRJQUxJWkVfS0VZV09SRChuYW1lKSAsIG5hbWUj
I0tleXdvcmQodm0sICNuYW1lKQotI2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFNRShuYW1l
KSAsIG5hbWUjI1ByaXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb20oUHJpdmF0ZU5hbWUoKSkpCisj
ZGVmaW5lIElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKG5hbWUpIFwKKyAgICAsIG5hbWUjI1ByaXZh
dGVOYW1lKElkZW50aWZpZXI6OmZyb20oUHJpdmF0ZU5hbWUoKSkpIFwKKyAgICAsIG1fIyNuYW1l
IyNQdWJsaWNTdHJpbmdQYWlyKG5hbWUsIG5hbWUjI1ByaXZhdGVOYW1lKSBcCisKIAogQ29tbW9u
SWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZNKiB2bSkKICAgICA6IG51bGxJZGVudGlm
aWVyKCkKQEAgLTM4LDggKzQxLDI2IEBAIENvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlm
aWVycyhWTSogdm0pCiAgICAgLCBoYXNOZXh0SWRlbnRpZmllcih2bSwgImhhc05leHQiKQogICAg
IEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKElOSVRJQUxJWkVfS0VZV09SRCkK
ICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpF
X1BST1BFUlRZX05BTUUpCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElO
SVRJQUxJWkVfUFJPUEVSVFlfTkFNRSkKICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklF
UlNfRUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKQogewogfQogCitj
b25zdCBJZGVudGlmaWVyKiBDb21tb25JZGVudGlmaWVyczo6Z2V0UHJpdmF0ZU5hbWUoY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQpIGNvbnN0Cit7CisjZGVmaW5lIFJFVFVSTl9JRl9QUklWQVRFX05B
TUVfTUFUQ0hFUyhuYW1lKSBpZiAobV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuZmlyc3QgPT0g
aWRlbnQpIHJldHVybiAmbV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuc2Vjb25kOworICAgIEpT
Q19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoUkVUVVJOX0lG
X1BSSVZBVEVfTkFNRV9NQVRDSEVTKQorI3VuZGVmIFJFVFVSTl9JRl9QUklWQVRFX05BTUVfTUFU
Q0hFUworICAgIHJldHVybiAwOworfQorCitJZGVudGlmaWVyIENvbW1vbklkZW50aWZpZXJzOjpn
ZXRQdWJsaWNOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAoreworI2RlZmluZSBS
RVRVUk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMobmFtZSkgaWYgKG1fIyNuYW1lIyNQdWJsaWNT
dHJpbmdQYWlyLnNlY29uZCA9PSBpZGVudCkgcmV0dXJuIG1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQ
YWlyLmZpcnN0OworICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BF
UlRZX05BTUUoUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKQorI3VuZGVmIFJFVFVSTl9J
Rl9QUklWQVRFX05BTUVfTUFUQ0hFUworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIGVtcHR5SWRlbnRpZmllcjsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApp
bmRleCBlOGY5ZWQ4MmJjNzk0NjIwMzgyNjZiMzAyMDc4MjI0N2IxZmEyN2EzLi45MjRkMzZhYzY5
MTM1MDM1N2NiMzgyYjFlZjNiNDBhMGEwOGMwYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTIyLDYgKzIyLDcgQEAKICNk
ZWZpbmUgQ29tbW9uSWRlbnRpZmllcnNfaAogCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIC8v
IE1hcmtlZEFyZ3VtZW50QnVmZmVyIG9mIHByb3BlcnR5IG5hbWVzLCBwYXNzZWQgdG8gYSBtYWNy
byBzbyB3ZSBjYW4gZG8gc2V0IHRoZW0gdXAgdmFyaW91cwpAQCAtMTMzLDggKzEzNCwxMCBAQAog
ICAgIG1hY3JvKG9zckV4aXRzKSBcCiAgICAgbWFjcm8ocGFyc2UpIFwKICAgICBtYWNybyhwcm9m
aWxlZEJ5dGVjb2RlcykgXAorICAgIG1hY3JvKHByb21pc2UpIFwKICAgICBtYWNybyhwcm9wZXJ0
eUlzRW51bWVyYWJsZSkgXAogICAgIG1hY3JvKHByb3RvdHlwZSkgXAorICAgIG1hY3JvKHJlc29s
dmUpIFwKICAgICBtYWNybyhzZXQpIFwKICAgICBtYWNybyhzaXplKSBcCiAgICAgbWFjcm8oc2xp
Y2UpIFwKQEAgLTE1NSw3ICsxNTgsMTQgQEAKICAgICBtYWNybyh2YWx1ZXMpIFwKICAgICBtYWNy
byh2YWx1ZU9mKSBcCiAgICAgbWFjcm8od2luZG93KSBcCi0gICAgbWFjcm8od3JpdGFibGUpCisg
ICAgbWFjcm8od3JpdGFibGUpIFwKKyAgICBtYWNybyhpdGVyYXRvcikgXAorICAgIG1hY3JvKGl0
ZXJhdG9yTmV4dCkgXAorICAgIG1hY3JvKHJlamVjdCkgXAorICAgIG1hY3JvKGZ1bGZpbGxtZW50
SGFuZGxlcikgXAorICAgIG1hY3JvKHJlamVjdGlvbkhhbmRsZXIpIFwKKyAgICBtYWNybyhkZWZl
cnJlZCkgXAorICAgIG1hY3JvKGNvdW50ZG93bkhvbGRlcikgXAogCiAjZGVmaW5lIEpTQ19DT01N
T05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKG1hY3JvKSBcCiAgICAgbWFjcm8oYnJlYWspIFwK
QEAgLTIwMyw3ICsyMTMsNyBAQAogICAgIG1hY3JvKHZvaWQpIFwKICAgICBtYWNybyh3aGlsZSkg
XAogICAgIG1hY3JvKHdpdGgpIFwKLSAgICBtYWNybyh5aWVsZCkKKyAgICBtYWNybyh5aWVsZCkg
XAogCiAjZGVmaW5lIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZ
X05BTUUobWFjcm8pIFwKICAgICBtYWNybyhpdGVyYXRvcikgXApAQCAtMjE2LDcgKzIyNiwxMiBA
QAogICAgIG1hY3JvKGluZGV4KSBcCiAgICAgbWFjcm8odmFsdWVzKSBcCiAgICAgbWFjcm8oZGVm
ZXJyZWQpIFwKLSAgICBtYWNybyhjb3VudGRvd25Ib2xkZXIpCisgICAgbWFjcm8oY291bnRkb3du
SG9sZGVyKSBcCisgICAgbWFjcm8oT2JqZWN0KSBcCisgICAgbWFjcm8oVHlwZUVycm9yKSBcCisg
ICAgbWFjcm8odW5kZWZpbmVkS2V5d29yZCkgXAorICAgIG1hY3JvKGNhbGwpIFwKKyAgICBtYWNy
byhhcHBseSkKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTI0MCwxMSArMjU1LDE1IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAKICNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUk9Q
RVJUWV9OQU1FX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWU7CiAgICAgICAgIEpT
Q19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKEpTQ19JREVOVElGSUVSX0RF
Q0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwpCisgICAgICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5f
RlVOQ1RJT05fTkFNRShKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFM
KQogI3VuZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwKIAot
I2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9C
QUwobmFtZSkgY29uc3QgSWRlbnRpZmllciBuYW1lIyNQcml2YXRlTmFtZTsKKyNkZWZpbmUgSlND
X0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMKG5hbWUpIGNv
bnN0IElkZW50aWZpZXIgbmFtZSMjUHJpdmF0ZU5hbWU7IGNvbnN0IHN0ZDo6cGFpcjxJZGVudGlm
aWVyLCBJZGVudGlmaWVyPiBtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpcjsKICAgICAgICAgSlND
X0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShKU0NfSURFTlRJ
RklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwpCiAjdW5kZWYgSlNDX0lE
RU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMCisgICAgICAgIAor
ICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVy
JikgY29uc3Q7CisgICAgICAgIElkZW50aWZpZXIgZ2V0UHVibGljTmFtZShjb25zdCBJZGVudGlm
aWVyJikgY29uc3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCAwNzU4NzVm
YjIzMTZhNTU1NzA1MGE2NjkwY2QwZjk4ODI0ODRmNWYzLi41YWY5MDg3NTRlNzQ3ZjhjYWUwY2Qw
NGFmOGQ0OTE1MDA0NjhjMmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlICJKSVQu
aCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgotI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUu
aCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMu
Y3BwCmluZGV4IDU1MzM0YmUyZjk4MGE5OGY3ZmVhNDJhMDViZTBmMjBjMDE5ZmYwZGQuLjE2ZWJh
ZDEwZTRlNDJiNmI3ODVlOTc4ZDM4ZTg3MGUzYjVhNmM0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMu
Y3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAi
Q29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkpTQ0pT
VmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKIAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBDb21tb25TbG93UGF0aHMgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCAwNWUxMWUwYjgwYTM0MzBh
ZWFiMjJiMDIyMmEyMTJmNGE4ZTJjNDliLi4zNjRjYzcxNjY2MDhiNTAwN2Q0NzdkODczOTE4YTVk
NjRiMTY4NjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb25IZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb25IZWxwZXJzLmNwcApAQCAtODEsNiArODEsMTEgQEAgSlNPYmplY3QqIGNyZWF0ZVN0YWNr
T3ZlcmZsb3dFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiBKU09iamVjdCog
Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50KQogeworICAgIAorICAgIGlmIChpZGVudC5pbXBsKCktPmlzRW1wdHlVbmlx
dWUoKSkgeworICAgICAgICBTdHJpbmcgbWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBmaW5kIHBy
aXZhdGUgdmFyaWFibGU6IEAiLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2V0UHVibGljTmFtZShp
ZGVudCkuc3RyaW5nKCkpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4
ZWMsIG1lc3NhZ2UpOworICAgIH0KICAgICBTdHJpbmcgbWVzc2FnZShtYWtlU3RyaW5nKCJDYW4n
dCBmaW5kIHZhcmlhYmxlOiAiLCBpZGVudC5zdHJpbmcoKSkpOwogICAgIHJldHVybiBjcmVhdGVS
ZWZlcmVuY2VFcnJvcihleGVjLCBtZXNzYWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCAxOTg5NzZiYjNmZTZlNmU5MTE3OTgxMmQxY2FmOWI4
YmY5YmZkMGJiLi5jZjBlNzUzYTdjNWY1NDQ2N2I2NGQ4ZTJhOWIzZmJhMjcxNTAwMDEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC00ODQsNyArNDg0
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckNvZGUoKTsKIAotICAgIEV4ZWN1dGFibGVJ
bmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNB
Y3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSk7IH0KKyAgICBF
eGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJ
bmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2Us
IGZhbHNlKTsgfQogCiAgICAgdW5zaWduZWQgbnVtVmFyaWFibGVzKCkgeyByZXR1cm4gbV91bmxp
bmtlZEV2YWxDb2RlQmxvY2stPm51bVZhcmlhYmxlcygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVy
T2ZGdW5jdGlvbkRlY2xzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bWJl
ck9mRnVuY3Rpb25EZWNscygpOyB9CkBAIC01NDAsNyArNTQwLDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBjbGVhckNvZGUoKTsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkg
Y29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFs
KCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRh
YmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigp
LCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlKTsgfQogCiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwpAQCAtNjI4LDcgKzYyOCw4IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBiYXNlbGluZUNvZGVCbG9ja0ZvcihraW5k
KTsKICAgICB9Ci0gICAgICAgIAorCisgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpOyB9CiAg
ICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxl
LT5uYW1lKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBpbmZlcnJlZE5hbWUoKSB7IHJldHVy
biBtX3VubGlua2VkRXhlY3V0YWJsZS0+aW5mZXJyZWROYW1lKCk7IH0KICAgICBKU1N0cmluZyog
bmFtZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWVWYWx1
ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
blByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblBy
b3RvdHlwZS5jcHAKaW5kZXggYzFiMDhhZjJkODE4ZGFlNTdlMWIwMGZkYTE3M2E4MTYxMzc1Mjli
NS4uMTI0OTBjNDBmMzM0MTdlY2E5MjM4NTBhMGRjNjYyZGJiY2Q0MGYzMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcApAQCAt
MjIsMTIgKzIyLDEzIEBACiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKIAogI2luY2x1
ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNB
cnJheS5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5o
IgotI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiTGV4ZXIuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKQEAgLTEwOCw3
ICsxMDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5j
VG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHMoSlNGdW5jdGlvbjo6
aW5mbygpKSkgewogICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0
aW9uKj4odGhpc1ZhbHVlKTsKLSAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigp
KQorICAgICAgICBpZiAoZnVuY3Rpb24tPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhl
YywgImZ1bmN0aW9uICIsIGZ1bmN0aW9uLT5uYW1lKGV4ZWMpLCAiKCkge1xuICAgIFtuYXRpdmUg
Y29kZV1cbn0iKSk7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGZ1
bmN0aW9uLT5qc0V4ZWN1dGFibGUoKTsKICAgICAgICAgU3RyaW5nIHNvdXJjZVN0cmluZyA9IGV4
ZWN1dGFibGUtPnNvdXJjZSgpLnRvU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAppbmRleCA3MmVkMWM3MTI0MDYxMTY4YjBhZGRkMzEx
NmY3NTVhMTE3YjhmYjkwLi5iMzc0OTQzMDk5ZTIxNTVhMzk3NzEzMzEzNDcwMmMyYTI0YWNjODZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAK
QEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBKU0FjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIAogaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9u
OjpzeW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7Ci0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlu
bGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5
IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS51aWQoKSk7CiAg
ICAgaWYgKGVudHJ5LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTcyLDcg
KzcyLDcgQEAgaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZUdldChQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QKIAogaW5saW5lIGJvb2wgSlNBY3RpdmF0
aW9uOjpzeW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5
bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBT
eW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5
TmFtZS51aWQoKSk7CiAgICAgaWYgKGVudHJ5LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKQEAgLTg5LDcgKzg5LDcgQEAgaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xU
YWJsZVB1dChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU4KICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6
aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CiAgICAgCi0gICAgU3ltYm9sVGFibGVF
bnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGlj
TmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5s
aW5lR2V0KHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGVudHJ5LmlzTnVsbCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGVudHJ5LmlzUmVhZE9ubHkoKSkgewpAQCAtMTM2
LDcgKzEzNiw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXRXaXRo
QXR0cmlidXRlcyhWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wCiAgICAgV3JpdGVCYXJyaWVyQmFz
ZTxVbmtub3duPiogcmVnOwogICAgIHsKICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIoc3ltYm9sVGFibGUoKS0+bV9sb2NrKTsKLSAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRl
cmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlKCktPmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVi
bGljTmFtZSgpKTsKKyAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5
bWJvbFRhYmxlKCktPmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgICAgICBp
ZiAoaXRlciA9PSBzeW1ib2xUYWJsZSgpLT5lbmQobG9ja2VyKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSYgZW50cnkgPSBpdGVyLT52YWx1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRl
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVy
YXRvci5jcHAKaW5kZXggMmZjZjg4MTVjMDU2ODA1ODEyYTc5OTFhNWZmMDYzZDY4NzM5NzE2NC4u
OWE5MjU4M2FhMGVjOTBkYmIzMjhlY2Q1MGRjMzEzOWFlZjAyNzNiNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5jcHAKQEAg
LTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJKU0FyZ3VtZW50c0l0ZXJhdG9yLmgiCiAKICNpbmNs
dWRlICJBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApp
bmRleCA5MDA3YjVmN2QzZjEwM2IxZDIxYjFhMzY1YTI2YzIxNWMzMmI0ZDI4Li5iYTBhMmQzOGU5
YzUzZTE1OTM3ZDQ2YTg5NTFhOGM4YzQ1MDc5MjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkV4ZWN1dGFi
bGUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJJbmRleGluZ0hlYWRl
cklubGluZXMuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJQcm9w
ZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1ZGUgIlJlamVjdC5oIgogI2luY2x1ZGUgPHd0Zi9BVkxU
cmVlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
SXRlcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJh
dG9yLmNwcAppbmRleCBkNTA2YzRlYmQyNjIwZWZkNzA3OTNhODczZDA4NTJmYmQ5NzgyODU5Li5j
ZjM3MDk3ZWMwYzY5MjVhODY3YjhjMDEwYzBlZmM0MDc0NDg1ZjFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKQEAgLTI4LDYgKzI4
LDcgQEAKIAogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxs
SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIlNsb3RW
aXNpdG9ySW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKaW5kZXggY2NhNjg4OGJmOThhMDI4NjQ2Y2EzZGRk
ZjM3NjI3Y2UwZTdkOTMwMi4uMzM5YTdhYjdmNTk1MTVlOTZhZmI3ZWM0Yjg3NDFlN2FhOGUxNjZm
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAg
LTMyLDcgKzMyLDkgQEAKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3QuaCIKICNpbmNsdWRlICJKU05vdEFuT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNTdHJp
bmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTnVtYmVyT2JqZWN0LmgiCisjaW5jbHVkZSAiT3BlcmF0
aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmlu
Z0V4dHJhcy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGxJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxp
bmVzLmgKaW5kZXggZjdjODQ0NjQ1MDkyYjI1MDgwNWU2ZThkNDgzMmM5OThiZGI4OWI1NC4uZDc5
NWRkNTZhOTdkZGI1OTdjMDkwZmMyZTBiN2YzMDhlMzNlYmNhNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaApAQCAtMjcsOCArMjcsMTAgQEAKICNk
ZWZpbmUgSlNDZWxsSW5saW5lc19oCiAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRl
ICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkRlZmVyR0MuaCIKICNpbmNsdWRlICJI
YW5kbGUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2Vs
bC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggMjQxOTY0NjEw
YmI0NDI3YjE4NjM3MzM0NmUyNGY1YTgyZDBjZGNjNC4uN2JlZjU5MWIxNGYzNWYxYTkzNDhhZGU5
YTllMGY1OTBlYjZhZGY4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5jcHAKQEAgLTEwOSw2ICsxMDksMTQgQEAgdm9pZCBKU0Z1bmN0aW9uOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGludCBsZW5ndGgK
ICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIobGVu
Z3RoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogCitKU0Z1bmN0aW9u
KiBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAg
SlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjcmVhdGUodm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVj
dCk7CisgICAgZnVuY3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwg
anNTdHJpbmcoJnZtLCBleGVjdXRhYmxlLT5uYW1lKCkuc3RyaW5nKCkpLCBEb250RGVsZXRlIHwg
UmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgZnVuY3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcihleGVjdXRhYmxlLT5wYXJhbWV0ZXJDb3VudCgp
KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHJldHVybiBmdW5jdGlv
bjsKK30KKwogT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUqIEpTRnVuY3Rpb246OmNyZWF0ZUFsbG9j
YXRpb25Qcm9maWxlKEV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IGlubGluZUNhcGFjaXR5KQogewog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC0xNDIsNyArMTUwLDcgQEAgY29uc3QgU3RyaW5n
IEpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
ICAgIHJldHVybiBleHBsaWNpdE5hbWU7CiAgICAgCiAgICAgY29uc3QgU3RyaW5nIGFjdHVhbE5h
bWUgPSBuYW1lKGV4ZWMpOwotICAgIGlmICghYWN0dWFsTmFtZS5pc0VtcHR5KCkgfHwgaXNIb3N0
RnVuY3Rpb24oKSkKKyAgICBpZiAoIWFjdHVhbE5hbWUuaXNFbXB0eSgpIHx8IGlzSG9zdE9yQnVp
bHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBhY3R1YWxOYW1lOwogICAgIAogICAgIHJl
dHVybiBqc0V4ZWN1dGFibGUoKS0+aW5mZXJyZWROYW1lKCkuc3RyaW5nKCk7CkBAIC0xNTAsMTAg
KzE1OCwyMCBAQCBjb25zdCBTdHJpbmcgSlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1l
KEV4ZWNTdGF0ZSogZXhlYykKIAogY29uc3QgU291cmNlQ29kZSogSlNGdW5jdGlvbjo6c291cmNl
Q29kZSgpIGNvbnN0CiB7Ci0gICAgaWYgKGlzSG9zdEZ1bmN0aW9uKCkpCisgICAgaWYgKGlzSG9z
dE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiAmanNF
eGVjdXRhYmxlKCktPnNvdXJjZSgpOwogfQorICAgIAorYm9vbCBKU0Z1bmN0aW9uOjppc0hvc3RP
ckJ1aWx0aW5GdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzSG9zdEZ1bmN0aW9uKCkg
fHwgaXNCdWlsdGluRnVuY3Rpb24oKTsKK30KKworYm9vbCBKU0Z1bmN0aW9uOjppc0J1aWx0aW5G
dW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuICFpc0hvc3RGdW5jdGlvbigpICYmIGpzRXhl
Y3V0YWJsZSgpLT5pc0J1aWx0aW5GdW5jdGlvbigpOworfQogCiB2b2lkIEpTRnVuY3Rpb246OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKQEAgLTI3
Nyw3ICsyOTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBzbG90QmFzZQogICAgIGlmICghY2FsbGVyLmlz
T2JqZWN0KCkgfHwgIWFzT2JqZWN0KGNhbGxlciktPmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8o
KSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbGVyKTsKICAgICBKU0Z1bmN0
aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2FsbGVyKTsKLSAgICBpZiAoZnVu
Y3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkgfHwgIWZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKS0+aXNT
dHJpY3RNb2RlKCkpCisgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigp
IHx8ICFmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxlcik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkZ1bmN0aW9uLmNhbGxlciB1c2Vk
IHRvIHJldHJpZXZlIHN0cmljdCBjYWxsZXIiKSkpOwogfQpAQCAtMjk5LDcgKzMxNyw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTRnVuY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiwgRW5jb2RlZEpT
VmFsdWUgc2xvdEJhc2UsIEVuY29kCiBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xv
dChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICh0aGlzT2JqZWN0LT5pc0hv
c3RGdW5jdGlvbigpKQorICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlv
bigpKQogICAgICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpIHsKQEAgLTM2MSw3ICszNzksNyBAQCBib29s
IEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5Tgogdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVB
cnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7CiAgICAgSlNGdW5j
dGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsKLSAgICBpZiAo
IXRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkgJiYgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVt
UHJvcGVydGllcykpIHsKKyAgICBpZiAoIXRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0
aW9uKCkgJiYgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpIHsKICAgICAgICAg
Ly8gTWFrZSBzdXJlIHByb3RvdHlwZSBoYXMgYmVlbiByZWlmaWVkLgogICAgICAgICBQcm9wZXJ0
eVNsb3Qgc2xvdCh0aGlzT2JqZWN0KTsKICAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUo
KS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5wcm90b3R5cGUsIHNsb3QpOwpAQCAtMzc3LDcgKzM5NSw3IEBAIHZvaWQgSlNGdW5jdGlv
bjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywKIHZvaWQgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1
bmN0aW9uKj4oY2VsbCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkpIHsK
KyAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkgewogICAgICAg
ICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MjUsNyArNDQzLDcgQEAgYm9vbCBKU0Z1bmN0
aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3AKIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25z
dCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7
CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0
KTsKLSAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICBpZiAodGhpc09i
amVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIEJhc2U6OmRl
ZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0
aHJvd0V4Y2VwdGlvbik7CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5wcm90b3R5cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uaAppbmRleCA3Y2QxNGI4YzJkODAwZjYxYmRjMTJlZGQyZGYwNGQzNWZhMDYxOWI2Li45
OTVjOWQxMWJkODk4Mzg2ZjdhMjBjNDE2MzRmYTdjYzliNzY5OGU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC02OCw2ICs2OCw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uOwogICAgICAgICB9CiAgICAgICAg
IAorICAgICAgICBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlQnVpbHRpbkZ1bmN0aW9uKFZNJiwg
RnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNHbG9iYWxPYmplY3QqKTsKKyAgICAgICAgCiAgICAgICAg
IHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAgIAogICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBTdHJpbmcgbmFtZShFeGVjU3RhdGUqKTsKQEAgLTE0NSw2ICsxNDcsOSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2FsbG9jYXRpb25Qcm9maWxlV2F0
Y2hwb2ludDsKICAgICAgICAgfQogCisgICAgICAgIGJvb2wgaXNIb3N0T3JCdWlsdGluRnVuY3Rp
b24oKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0OworCiAg
ICAgcHJvdGVjdGVkOgogICAgICAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbXBsZW1lbnRzSGFzSW5zdGFuY2Ug
fCBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpT
T2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29u
c3RydWN0b3JJbmxpbmVzLmgKaW5kZXggMmRkYzI5ZjcxODk3YmI1MWQzOTBiMDZiMjVhNzM4MzM4
NzRiYTBjMS4uZWRkMzQ0OWNlNDdiMTczNWU4ZTVkYmIwNWYzMThlM2Q1NWYzYmU2MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdDb25zdHJ1Y3RvcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCkBAIC0yNiw2ICsy
Niw3IEBACiAjaWZuZGVmIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVz
X2gKICNkZWZpbmUgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXNfaAog
CisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2lu
Y2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0NvbnN0cnVjdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IDZkYjg2Mjc0
YzNiODc0YWFhZGU1MTUxODk4MjY3MjZmYjEzNmMxNzMuLmYyNGVhNzMwM2RmOTY5ZGJkMmRjYTUy
Yzg2ZDExYzc4YzAwZGI5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0yNyw2
ICsyNyw3IEBACiAjZGVmaW5lIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lc19oCiAKICNp
bmNsdWRlICJBcnJheUJ1ZmZlclZpZXcuaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5o
IgogI2luY2x1ZGUgIkRlZmVyR0MuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbkhlbHBlcnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxp
bmVzLmgKaW5kZXggNDU5OTk3YTQ2NGI5MTE5NDc3YjFiZTg0ZTM2YzRlMjk2NmFjZWY4NS4uOGU1
ZmY4Mjc5MWU2ZmY4ZDRlYjljMzczNjkxZTQzM2ViN2QxNmFlZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzX2gKICNkZWZpbmUgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzX2gKIAorI2luY2x1ZGUgIkNvbW1vbklk
ZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxw
ZXJzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDJjMjc0YzFhN2Q0ODFjMDdkZjBk
MmJlYjNiMjkzMWEzOTA3YTVlNjYuLjA2ZTU0Yzg0ZTc3YjkwMzJiYWExZDJkZjQ3YTFjNzJlODBi
N2RlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKQEAgLTM0Niw3ICszNDYsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChK
U1ZhbHVlIHByb3RvdHlwZSkKIAogICAgIC8vIENvbnN0cnVjdG9ycwogCi0gICAgSlNDZWxsKiBv
YmplY3RDb25zdHJ1Y3RvciA9IE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIE9iamVjdENv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCkpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CisgICAgT2JqZWN0Q29uc3RydWN0b3Iq
IG9iamVjdENvbnN0cnVjdG9yID0gT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgT2JqZWN0
Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlw
ZS5nZXQoKSksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKKyAgICBtX29iamVjdENvbnN0cnVj
dG9yLnNldCh2bSwgdGhpcywgb2JqZWN0Q29uc3RydWN0b3IpOwogICAgIEpTQ2VsbCogZnVuY3Rp
b25Db25zdHJ1Y3RvciA9IEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgRnVuY3Rpb25D
b25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBl
LmdldCgpKSwgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CiAgICAgSlNDZWxsKiBhcnJheUNv
bnN0cnVjdG9yID0gQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBBcnJheUNvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBt
X2FycmF5UHJvdG90eXBlLmdldCgpKTsKIApAQCAtNDMyLDcgKzQzMywxMCBAQCB2b2lkIEpTR2xv
YmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8gc3RhdGljR2xvYmFsc1tdID0gewogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+TmFOLCBqc05hTigpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25s
eSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5JbmZpbml0
eSwganNOdW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCwganNVbmRlZmluZWQoKSwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLCBqc1VuZGVmaW5lZCgpLCBEb250
RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkUHJpdmF0ZU5hbWUsIGpzVW5kZWZp
bmVkKCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPk9iamVjdFByaXZhdGVOYW1lLCBvYmplY3RD
b25zdHJ1Y3RvciwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+VHlwZUVycm9yUHJpdmF0ZU5hbWUs
IG1fdHlwZUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KQogICAgIH07CiAgICAgYWRkU3RhdGljR2xvYmFscyhzdGF0aWNHbG9iYWxzLCBXVEZf
QVJSQVlfTEVOR1RIKHN0YXRpY0dsb2JhbHMpKTsKICAgICAKQEAgLTYwOCw2ICs2MTIsNyBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3ludGF4RXJy
b3JDb25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdHlwZUVy
cm9yQ29uc3RydWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX1VSSUVy
cm9yQ29uc3RydWN0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX29iamVj
dENvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcm9taXNl
Q29uc3RydWN0b3IpOwogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZXZhbEZ1
bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCmluZGV4IGIwY2FkM2RjNTQ3MGY3YzdhMGU1NzBiZGNkMmRmZmE4OTVlMmFhMGMuLjNhNjE2
YzZmMDVlZGYxZDI5NWFmODQ0MWFhNjY1MDBmYjkyYTRhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNjcsNiArNjcsNyBAQCBjbGFz
cyBKU1N0YWNrOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgTWljcm90YXNr
OwogY2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjsKK2NsYXNzIE9iamVjdENvbnN0cnVjdG9y
OwogY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwogY2xh
c3MgUmVnRXhwQ29uc3RydWN0b3I7CkBAIC0xNTgsNiArMTU5LDcgQEAgcHJvdGVjdGVkOgogICAg
IFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX3R5cGVFcnJvckNvbnN0cnVj
dG9yOwogICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX1VSSUVycm9y
Q29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlzZUNvbnN0cnVjdG9yPiBtX3By
b21pc2VDb25zdHJ1Y3RvcjsKKyAgICBXcml0ZUJhcnJpZXI8T2JqZWN0Q29uc3RydWN0b3I+IG1f
b2JqZWN0Q29uc3RydWN0b3I7CiAKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9ldmFs
RnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fY2FsbEZ1bmN0aW9uOwpA
QCAtMzMwLDYgKzMzMiw3IEBAIHB1YmxpYzoKICAgICBSZWdFeHBDb25zdHJ1Y3RvciogcmVnRXhw
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cENvbnN0cnVjdG9yLmdldCgpOyB9
CiAKICAgICBFcnJvckNvbnN0cnVjdG9yKiBlcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1
cm4gbV9lcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CisgICAgT2JqZWN0Q29uc3RydWN0b3IqIG9i
amVjdENvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RDb25zdHJ1Y3Rvci5nZXQo
KTsgfQogICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGV2YWxFcnJvckNvbnN0cnVjdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9ldmFsRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3IqIHJhbmdlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJu
IG1fcmFuZ2VFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CiAgICAgTmF0aXZlRXJyb3JDb25zdHJ1
Y3RvciogcmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJl
bmNlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQpAQCAtNTgxLDcgKzU4NCw3IEBAIGlubGluZSBi
b29sIEpTR2xvYmFsT2JqZWN0OjpoYXNPd25Qcm9wZXJ0eUZvcldyaXRlKEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lCiAKIGlubGluZSBib29sIEpTR2xvYmFsT2JqZWN0OjpzeW1ib2xUYWJs
ZUhhc1Byb3BlcnR5KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgU3ltYm9sVGFi
bGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVi
bGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+
aW5saW5lR2V0KHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgcmV0dXJuICFlbnRyeS5pc051bGwo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4
IDJiNjdhMWQ5ZWVkODRlOTk1NmY4YmI5NjgzODRjODRjYWVhNTNjZmYuLjJlYTJjMjRlNmVhYjRj
ZDBkN2ZmZWQ2NjVlZjRhZTQxYWYwNzUwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGdl
dENsYXNzUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENsYXNzSW5mbyogY2xh
c3MKICAgICAgICAgaW50IGhhc2hTaXplTWFzayA9IHRhYmxlLT5jb21wYWN0U2l6ZSAtIDE7CiAg
ICAgICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSB0YWJsZS0+dGFibGU7CiAgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDw9IGhhc2hTaXplTWFzazsgKytpLCArK2VudHJ5KSB7Ci0gICAgICAg
ICAgICBpZiAoZW50cnktPmtleSgpICYmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBEb250RW51
bSkgfHwgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpICYmICEoKGVudHJ5LT5h
dHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikgJiYgZGlkUmVpZnkpKQorICAgICAgICAgICAgaWYgKGVu
dHJ5LT5rZXkoKSAmJiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IChtb2Rl
ID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKSAmJiAhKChlbnRyeS0+YXR0cmlidXRlcygp
ICYgQnVpbHRpbk9yRnVuY3Rpb24pICYmIGRpZFJlaWZ5KSkKICAgICAgICAgICAgICAgICBwcm9w
ZXJ0eU5hbWVzLmFkZChlbnRyeS0+a2V5KCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTYxOCw3
ICsxNjE4LDcgQEAgdm9pZCBKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUo
RXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIFByb3BlcnR5
U2xvdCBzbG90KHRoaXMpOwogICAgICAgICBmb3IgKEhhc2hUYWJsZTo6Q29uc3RJdGVyYXRvciBp
dGVyID0gaGFzaFRhYmxlLT5iZWdpbih2bSk7IGl0ZXIgIT0gaGFzaFRhYmxlLT5lbmQodm0pOyAr
K2l0ZXIpIHsKLSAgICAgICAgICAgIGlmIChpdGVyLT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikK
KyAgICAgICAgICAgIGlmIChpdGVyLT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikK
ICAgICAgICAgICAgICAgICBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChnbG9iYWxPYmplY3QoKS0+
Z2xvYmFsRXhlYygpLCAqaXRlciwgdGhpcywgSWRlbnRpZmllcigmdm0sIGl0ZXItPmtleSgpKSwg
c2xvdCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yMjM2LDYgKzIyMzYsMTYgQEAgdm9pZCBKU09i
amVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjb24KICAgICBwdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgZnVuY3Rpb24s
IGF0dHJpYnV0ZXMpOwogfQogCit2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RCdWlsdGluRnVuY3Rp
b24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5h
bWUmIHByb3BlcnR5TmFtZSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMpCit7CisgICAgU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5
TmFtZS5wdWJsaWNOYW1lKCk7CisgICAgaWYgKCFuYW1lKQorICAgICAgICBuYW1lID0gdm0ucHJv
cGVydHlOYW1lcy0+YW5vbnltb3VzLmltcGwoKTsKKyAgICBBU1NFUlQobmFtZSk7CisgICAgSlNG
dW5jdGlvbiogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0s
IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIGds
b2JhbE9iamVjdCk7CisgICAgcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBh
dHRyaWJ1dGVzKTsKK30KKwogdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwg
TmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5w
dWJsaWNOYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRl
eCAwMmIxMzdiMzUwYzJmYTgzMjViZDNiOTY0NzExMmFiZTg3NmYzODNmLi5kZGU1OTdlZmZhZWMw
ZjFiOGQ0NGMyOTExOTUwMzAxZjA2MDA3ZTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJCdXR0ZXJmbHkuaCIK
ICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKLSNpbmNsdWRl
ICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkNvcHlXcml0ZUJhcnJpZXIuaCIKICNp
bmNsdWRlICJEZWZlckdDLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgpAQCAtNTgxLDYgKzU4MCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHB1dERpcmVjdFVuZGVmaW5lZChQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQpIHsgbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KS0+c2V0VW5kZWZpbmVkKCk7IH0KIAogICAg
IHZvaWQgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwg
SW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICB2b2lkIHB1dERpcmVjdEJ1aWx0
aW5GdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgdm9pZCBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBj
b25zdCBQcm9wZXJ0eU5hbWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rp
b24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJv
dyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuY3BwCmluZGV4IDY4YThiZDg3ZDM4YWRiYmI5ZGQyYWM5ZWM0YjQ5ZDVl
ZjQ1NDlkNTYuLjIzN2M0MmJiMGRhMGYxNjY3NmViMTFhZGU4MTgwYTdiMDZkOThlYjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1l
SXRlcmF0b3IuY3BwCkBAIC0yOSw3ICsyOSw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlu
bGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIk9wZXJhdGlv
bnMuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBKU0Mgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5oCmluZGV4IGY0MzYyZmYzNTRlZTZhNTAyMjFiYjczMWQxYTI2MTFlNmRkNjFiYzAu
LmQwNzM3MTlkZTE2MGQyZjI5MjExMGE1OTZhMTA1ZTJmYTIxMTVmZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgK
QEAgLTMxLDcgKzMxLDYgQEAKIAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNT
dHJpbmcuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1l
QXJyYXkuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5oCmluZGV4IDJiMWNkZGRjNTg0MWQ2MGQxNTdhMmU2MWY3MDJiMGVlNWZhMWQ2
NzYuLmUzOTM0MTYwYWVhOTI2ZWYxNTkzMmY4NzkwZTI0YzUyYWYwMmQzNWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaApAQCAtMjQsNyArMjQsNiBAQAogI2RlZmlu
ZSBKU1N0cmluZ19oCiAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKLSNpbmNsdWRlICJDb21tb25J
ZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQcm9wZXJ0
eURlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKQEAgLTQ3MiwzMyArNDcx
LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5saW5lIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxT
dHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMpIHsgcmV0dXJuIGpzTm9udHJp
dmlhbFN0cmluZygmZXhlYy0+dm0oKSwgcyk7IH0KICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzT3du
ZWRTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMpIHsgcmV0dXJuIGpzT3du
ZWRTdHJpbmcoJmV4ZWMtPnZtKCksIHMpOyB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgSlNT
dHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKLSAgICB7Ci0gICAgICAgIGlmIChw
cm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewotICAgICAgICAg
ICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSwg
anNOdW1iZXIobV9sZW5ndGgpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9
Ci0KLSAgICAgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7Ci0gICAgICAg
IGlmIChpIDwgbV9sZW5ndGgpIHsKLSAgICAgICAgICAgIEFTU0VSVChpICE9IFByb3BlcnR5TmFt
ZTo6Tm90QW5JbmRleCk7IC8vIE5vIG5lZWQgZm9yIGFuIGV4cGxpY2l0IGNoZWNrLCB0aGUgYWJv
dmUgdGVzdCB3b3VsZCBhbHdheXMgZmFpbCEKLSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhp
cywgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBnZXRJbmRleChleGVjLCBpKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0gICAgICAgICAgICAKLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgSlNTdHJpbmc6OmdldFN0cmlu
Z1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQotICAgIHsKLSAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA8IG1fbGVu
Z3RoKSB7Ci0gICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnREZWxldGUgfCBSZWFk
T25seSwgZ2V0SW5kZXgoZXhlYywgcHJvcGVydHlOYW1lKSk7Ci0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KICAgICBp
bmxpbmUgYm9vbCBpc0pTU3RyaW5nKEpTVmFsdWUgdikgeyByZXR1cm4gdi5pc0NlbGwoKSAmJiB2
LmFzQ2VsbCgpLT5jbGFzc0luZm8oKSA9PSBKU1N0cmluZzo6aW5mbygpOyB9CiAKICAgICAvLyAt
LS0gSlNWYWx1ZSBpbmxpbmVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTUyOCwz
MiArNTAwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiB0b1dURlN0cmluZ1Ns
b3dDYXNlKGV4ZWMpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgU3RyaW5nIGlubGluZUpT
VmFsdWVOb3RTdHJpbmd0b1N0cmluZyhjb25zdCBKU1ZhbHVlJiB2YWx1ZSwgRXhlY1N0YXRlKiBl
eGVjKQotICAgIHsKLSAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICAgICAgaWYgKHZh
bHVlLmlzSW50MzIoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5udW1lcmljU3RyaW5ncy5hZGQo
dmFsdWUuYXNJbnQzMigpKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzRG91YmxlKCkpCi0gICAgICAg
ICAgICByZXR1cm4gdm0ubnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVlLmFzRG91YmxlKCkpOwotICAg
ICAgICBpZiAodmFsdWUuaXNUcnVlKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlO
YW1lcy0+dHJ1ZUtleXdvcmQuc3RyaW5nKCk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc0ZhbHNlKCkp
Ci0gICAgICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+ZmFsc2VLZXl3b3JkLnN0cmlu
ZygpOwotICAgICAgICBpZiAodmFsdWUuaXNOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0u
cHJvcGVydHlOYW1lcy0+bnVsbEtleXdvcmQuc3RyaW5nKCk7Ci0gICAgICAgIGlmICh2YWx1ZS5p
c1VuZGVmaW5lZCgpKQotICAgICAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPnVuZGVm
aW5lZEtleXdvcmQuc3RyaW5nKCk7Ci0gICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSBTdHJpbmcgSlNWYWx1
ZTo6dG9XVEZTdHJpbmdJbmxpbmUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAotICAgIHsKLSAgICAg
ICAgaWYgKGlzU3RyaW5nKCkpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNTdHJp
bmcqPihhc0NlbGwoKSktPnZhbHVlKGV4ZWMpOwotCi0gICAgICAgIHJldHVybiBpbmxpbmVKU1Zh
bHVlTm90U3RyaW5ndG9TdHJpbmcoKnRoaXMsIGV4ZWMpOwotICAgIH0KLQogfSAvLyBuYW1lc3Bh
Y2UgSlNDCiAKICNlbmRpZiAvLyBKU1N0cmluZ19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3OGMwNWZjODBkODhlODUz
N2M5ZDJhNWVhYjlmZjBiYTliNjBhNzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaApAQCAtMCwwICsxLDkwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBK
U1N0cmluZ0lubGluZXNfaAorI2RlZmluZSBKU1N0cmluZ0lubGluZXNfaAorCisjaW5jbHVkZSAi
Q29tbW9uSWRlbnRpZmllcnMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTU3RyaW5nLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitBTFdBWVNfSU5MSU5FIGJv
b2wgSlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBpZiAocHJv
cGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKKyAgICAgICAgc2xv
dC5zZXRWYWx1ZSh0aGlzLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSwganNOdW1i
ZXIobV9sZW5ndGgpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHVu
c2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOworICAgIGlmIChpIDwgbV9sZW5ndGgp
IHsKKyAgICAgICAgQVNTRVJUKGkgIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTsgLy8gTm8g
bmVlZCBmb3IgYW4gZXhwbGljaXQgY2hlY2ssIHRoZSBhYm92ZSB0ZXN0IHdvdWxkIGFsd2F5cyBm
YWlsIQorICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnREZWxldGUgfCBSZWFkT25seSwg
Z2V0SW5kZXgoZXhlYywgaSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitBTFdBWVNfSU5MSU5FIGJvb2wgSlNTdHJpbmc6OmdldFN0
cmluZ1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGlmIChwcm9wZXJ0eU5hbWUgPCBtX2xlbmd0aCkg
eworICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnREZWxldGUgfCBSZWFkT25seSwgZ2V0
SW5kZXgoZXhlYywgcHJvcGVydHlOYW1lKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0FMV0FZU19JTkxJTkUgU3RyaW5nIGlubGlu
ZUpTVmFsdWVOb3RTdHJpbmd0b1N0cmluZyhjb25zdCBKU1ZhbHVlJiB2YWx1ZSwgRXhlY1N0YXRl
KiBleGVjKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgaWYgKHZhbHVlLmlzSW50
MzIoKSkKKyAgICAgICAgcmV0dXJuIHZtLm51bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZS5hc0ludDMy
KCkpOworICAgIGlmICh2YWx1ZS5pc0RvdWJsZSgpKQorICAgICAgICByZXR1cm4gdm0ubnVtZXJp
Y1N0cmluZ3MuYWRkKHZhbHVlLmFzRG91YmxlKCkpOworICAgIGlmICh2YWx1ZS5pc1RydWUoKSkK
KyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPnRydWVLZXl3b3JkLnN0cmluZygpOwor
ICAgIGlmICh2YWx1ZS5pc0ZhbHNlKCkpCisgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVz
LT5mYWxzZUtleXdvcmQuc3RyaW5nKCk7CisgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQorICAgICAg
ICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+bnVsbEtleXdvcmQuc3RyaW5nKCk7CisgICAgaWYg
KHZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT51
bmRlZmluZWRLZXl3b3JkLnN0cmluZygpOworICAgIHJldHVybiB2YWx1ZS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7Cit9CisgICAgCitBTFdBWVNfSU5MSU5FIFN0cmluZyBKU1ZhbHVlOjp0
b1dURlN0cmluZ0lubGluZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgaWYgKGlzU3Ry
aW5nKCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU1N0cmluZyo+KGFzQ2VsbCgpKS0+
dmFsdWUoZXhlYyk7CisgICAgCisgICAgcmV0dXJuIGlubGluZUpTVmFsdWVOb3RTdHJpbmd0b1N0
cmluZygqdGhpcywgZXhlYyk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCmluZGV4IDJhYzI1
MjRjNWRmZGEzZDEyMjQ5ZDc3OTBhZGMzMTI5ZTNjMGU4NzEuLmZiYzhiODk1ZWFlNmFmNzg4ODM5
YmViNWU4M2Q3YjZiOTc5MjhmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCkBAIC02NCw2ICs2NCw4IEBAIHZvaWQg
SlNTeW1ib2xUYWJsZU9iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0CiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHRo
aXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPm1fbG9jayk7CiAgICAgICAgIFN5bWJvbFRhYmxlOjpN
YXA6Oml0ZXJhdG9yIGVuZCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmVuZChsb2NrZXIp
OwogICAgICAgICBmb3IgKFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ID0gdGhpc09iamVj
dC0+c3ltYm9sVGFibGUoKS0+YmVnaW4obG9ja2VyKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAg
ICAgICAgICBpZiAoaXQtPmtleS0+aXNFbXB0eVVuaXF1ZSgpKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgaWYgKCEoaXQtPnZhbHVlLmdldEF0dHJpYnV0ZXMoKSAmIERv
bnRFbnVtKSB8fCAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkKICAgICAgICAg
ICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIGl0LT5rZXkuZ2V0KCkp
KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTeW1ib2xUYWJsZU9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
eW1ib2xUYWJsZU9iamVjdC5oCmluZGV4IGI1YjIwYTg0NWI2YWI2NDQyNGIzN2UzMWIyNzc0ZWY5
MDUzNTNmN2YuLmQwM2IyNDUxMWMyZGUxOTU5ZmI1ZjU2ZDY0OWM2NGQwZWZlMDY4NTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
LmgKQEAgLTcyLDcgKzcyLDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiB7CiAgICAg
U3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9sVGFibGUoKTsKICAgICBD
b25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2spOwotICAgIFN5bWJv
bFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJv
cGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3Ig
aXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAg
IGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBlbnRyeSA9IGl0ZXItPnZhbHVlOwpAQCAt
ODcsNyArODcsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKIHsKICAgICBTeW1ib2xU
YWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgIENvbmN1cnJl
bnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAgU3ltYm9sVGFibGU6
Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5h
bWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0g
c3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGl0
ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+dmFsdWU7CkBAIC0xMDQsNyAr
MTA0LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiB7CiAgICAgU3ltYm9sVGFibGUm
IHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9sVGFibGUoKTsKICAgICBDb25jdXJyZW50SklU
TG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2spOwotICAgIFN5bWJvbFRhYmxlOjpNYXA6
Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1
YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJv
bFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChpdGVyID09
IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgU3lt
Ym9sVGFibGVFbnRyeTo6RmFzdCBlbnRyeSA9IGl0ZXItPnZhbHVlOwpAQCAtMTI2LDcgKzEyNiw3
IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0KAogICAgIHsKICAgICAgICAgU3ltYm9sVGFi
bGUmIHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9sVGFibGUoKTsKICAgICAgICAgR0NTYWZl
Q29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrLCBleGVjLT52bSgp
LmhlYXApOwotICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9s
VGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgICAgICBT
eW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIs
IHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVu
ZChsb2NrZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBib29sIHdhc0Zh
dDsKQEAgLTE1OSw3ICsxNTksNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dFdpdGhBdHRy
aWJ1dGVzKAogICAgIHsKICAgICAgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gKm9iamVj
dC0+c3ltYm9sVGFibGUoKTsKICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3lt
Ym9sVGFibGUubV9sb2NrKTsKLSAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRl
ciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsK
KyAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZp
bmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgICAgICBpZiAoaXRlciA9PSBzeW1i
b2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
U3ltYm9sVGFibGVFbnRyeSYgZW50cnkgPSBpdGVyLT52YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Mb29rdXAuY3BwCmluZGV4IGE4MDZkZDA1MmEwY2JlZTRjYWMyY2FhNmUwOGM2
NzE2MDA1YzI3MGMuLmE5NzY1MjAxYjlmNTE4NjQxNDIzZGRlMGZlMGUyZTUxYThjZTczYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcApAQCAtNjgsNyArNjgsNyBA
QCB2b2lkIEhhc2hUYWJsZTo6ZGVsZXRlVGFibGUoKSBjb25zdAogYm9vbCBzZXRVcFN0YXRpY0Z1
bmN0aW9uU2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2Jq
ZWN0KiB0aGlzT2JqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCiB7CiAgICAgQVNTRVJUKHRoaXNPYmotPmdsb2JhbE9iamVjdCgpKTsKLSAgICBBU1NFUlQo
ZW50cnktPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKTsKKyAgICBBU1NFUlQoZW50cnktPmF0dHJp
YnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwog
ICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gdGhp
c09iai0+Z2V0RGlyZWN0T2Zmc2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwpAQCAt
NzksOSArNzksMTMgQEAgYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0KgogICAgICAgICBpZiAodGhpc09i
ai0+c3RhdGljRnVuY3Rpb25zUmVpZmllZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIAotICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3ROYXRpdmVGdW5jdGlvbigKLSAgICAgICAg
ICAgIHZtLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBlbnRyeS0+ZnVu
Y3Rpb25MZW5ndGgoKSwKLSAgICAgICAgICAgIGVudHJ5LT5mdW5jdGlvbigpLCBlbnRyeS0+aW50
cmluc2ljKCksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAgICAgICBpZiAoZW50cnktPmF0dHJp
YnV0ZXMoKSAmIEJ1aWx0aW4pCisgICAgICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3RCdWlsdGlu
RnVuY3Rpb24odm0sIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5
LT5idWlsdGluR2VuZXJhdG9yKCkodm0pLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3ROYXRpdmVGdW5jdGlvbigKKyAg
ICAgICAgICAgICAgICB2bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwg
ZW50cnktPmZ1bmN0aW9uTGVuZ3RoKCksCisgICAgICAgICAgICAgICAgZW50cnktPmZ1bmN0aW9u
KCksIGVudHJ5LT5pbnRyaW5zaWMoKSwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAgICAgIH0K
ICAgICAgICAgb2Zmc2V0ID0gdGhpc09iai0+Z2V0RGlyZWN0T2Zmc2V0KHZtLCBwcm9wZXJ0eU5h
bWUsIGF0dHJpYnV0ZXMpOwogICAgICAgICBBU1NFUlQoaXNWYWxpZE9mZnNldChvZmZzZXQpKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCmluZGV4IGJkZTgzZDRh
NmZjMzU1Nzc4NTBlMzFlODhiYzM5ZmQwNWY3YmNlNTIuLmRiYTM4OWU5ZTI0M2RkMGVjYjJiYTk4
ZjM5NGQ0MDc5ZjlkZWE5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0xvb2t1cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5o
CkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIC8vIGllLiB0eXBlZGVmIEpT
VmFsdWUgKCpHZXRGdW5jdGlvbikoRXhlY1N0YXRlKiwgSlNPYmplY3QqIGJhc2VPYmplY3QpCiAg
ICAgdHlwZWRlZiBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBHZXRGdW5jdGlvbjsKICAgICB0
eXBlZGVmIFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jIFB1dEZ1bmN0aW9uOworICAgIHR5
cGVkZWYgRnVuY3Rpb25FeGVjdXRhYmxlKiAoKkJ1aWx0aW5HZW5lcmF0b3IpKFZNJik7CiAKICAg
ICBjbGFzcyBIYXNoRW50cnkgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAg
LTY4LDExICs2OSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2lu
dHJpbnNpYzsKICAgICAgICAgfQogCisgICAgICAgIEJ1aWx0aW5HZW5lcmF0b3IgYnVpbHRpbkdl
bmVyYXRvcigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEJ1aWx0aW4pOyByZXR1cm4g
bV91LmJ1aWx0aW5HZW5lcmF0b3IuZ2VuZXJhdG9yVmFsdWU7IH0KICAgICAgICAgTmF0aXZlRnVu
Y3Rpb24gZnVuY3Rpb24oKSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBGdW5jdGlvbik7
IHJldHVybiBtX3UuZnVuY3Rpb24uZnVuY3Rpb25WYWx1ZTsgfQogICAgICAgICB1bnNpZ25lZCBj
aGFyIGZ1bmN0aW9uTGVuZ3RoKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgRnVuY3Rp
b24pOyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obV91LmZ1bmN0aW9uLmxlbmd0
aCk7IH0KIAotICAgICAgICBHZXRGdW5jdGlvbiBwcm9wZXJ0eUdldHRlcigpIGNvbnN0IHsgQVNT
RVJUKCEobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0eS5nZXQ7
IH0KLSAgICAgICAgUHV0RnVuY3Rpb24gcHJvcGVydHlQdXR0ZXIoKSBjb25zdCB7IEFTU0VSVCgh
KG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVydHkucHV0OyB9Cisg
ICAgICAgIEdldEZ1bmN0aW9uIHByb3BlcnR5R2V0dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0
dHJpYnV0ZXMgJiBCdWlsdGluT3JGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5LmdldDsg
fQorICAgICAgICBQdXRGdW5jdGlvbiBwcm9wZXJ0eVB1dHRlcigpIGNvbnN0IHsgQVNTRVJUKCEo
bV9hdHRyaWJ1dGVzICYgQnVpbHRpbk9yRnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0eS5w
dXQ7IH0KIAogICAgICAgICBpbnRwdHJfdCBsZXhlclZhbHVlKCkgY29uc3QgeyBBU1NFUlQoIW1f
YXR0cmlidXRlcyk7IHJldHVybiBtX3UubGV4ZXIudmFsdWU7IH0KIApAQCAtOTQsNiArOTYsMTAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgaW50cHRyX3QgbGVuZ3RoOyAvLyBu
dW1iZXIgb2YgYXJndW1lbnRzIGZvciBmdW5jdGlvbgogICAgICAgICAgICAgfSBmdW5jdGlvbjsK
ICAgICAgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAgICAgQnVpbHRpbkdlbmVyYXRvciBn
ZW5lcmF0b3JWYWx1ZTsKKyAgICAgICAgICAgICAgICBpbnRwdHJfdCB1bnVzZWQ7CisgICAgICAg
ICAgICB9IGJ1aWx0aW5HZW5lcmF0b3I7CisgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg
ICAgICAgIEdldEZ1bmN0aW9uIGdldDsKICAgICAgICAgICAgICAgICBQdXRGdW5jdGlvbiBwdXQ7
CiAgICAgICAgICAgICB9IHByb3BlcnR5OwpAQCAtMjA5LDcgKzIxNSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSGFzaEVudHJ5
KiBlbnRyeShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogICAgICAgICB7Ci0gICAg
ICAgICAgICBTdHJpbmdJbXBsKiBpbXBsID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsKKyAg
ICAgICAgICAgIFN0cmluZ0ltcGwqIGltcGwgPSBwcm9wZXJ0eU5hbWUudWlkKCk7CiAgICAgICAg
ICAgICBpZiAoIWltcGwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIApAQCAt
MjQ5LDcgKzI1NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpZiAoIWVudHJ5KSAvLyBu
b3QgZm91bmQsIGZvcndhcmQgdG8gcGFyZW50CiAgICAgICAgICAgICByZXR1cm4gUGFyZW50SW1w
OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iaiwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsK
IAotICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKQorICAgICAgICBp
ZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKQogICAgICAgICAgICAg
cmV0dXJuIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KGV4ZWMsIGVudHJ5LCB0aGlzT2JqLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogCiAgICAgICAgIHNsb3Quc2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXNP
YmosIGVudHJ5LT5hdHRyaWJ1dGVzKCksIGVudHJ5LT5wcm9wZXJ0eUdldHRlcigpKTsKQEAgLTI4
Niw3ICsyOTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaWYgKCFlbnRyeSkgLy8gbm90
IGZvdW5kLCBmb3J3YXJkIHRvIHBhcmVudAogICAgICAgICAgICAgcmV0dXJuIFBhcmVudEltcDo6
Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAK
LSAgICAgICAgQVNTRVJUKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKSk7CisgICAg
ICAgIEFTU0VSVCghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikpOwog
CiAgICAgICAgIHNsb3Quc2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXNPYmosIGVudHJ5LT5hdHRyaWJ1
dGVzKCksIGVudHJ5LT5wcm9wZXJ0eUdldHRlcigpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC0yOTUsNyArMzAxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5saW5lIHZvaWQgcHV0RW50
cnkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCogYmFz
ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQogICAgIHsKICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIGZ1bmN0aW9uIHB1dCBp
dCBhcyBhbiBvdmVycmlkZSBwcm9wZXJ0eS4KLSAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVz
KCkgJiBGdW5jdGlvbikgeworICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0
aW5PckZ1bmN0aW9uKSB7CiAgICAgICAgICAgICBpZiAoSlNPYmplY3QqIHRoaXNPYmplY3QgPSBq
c0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4oc2xvdC50aGlzVmFsdWUoKSkpCiAgICAgICAgICAgICAg
ICAgdGhpc09iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUp
OwogICAgICAgICB9IGVsc2UgaWYgKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIFJlYWRPbmx5KSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJv
ckNvbnN0cnVjdG9yLmNwcAppbmRleCBkNWU3MjhjMmNkMTAyMGE0N2U0YWRjZDY0OWNkMWZmZmE1
Y2Q2YTgzLi5kY2EyZmQ4ZDFmNmFjMjNiOGZmODE3Y2JiMThmYWFlN2JjZDU5NzAxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0
cnVjdG9yLmNwcApAQCAtMzgsNiArMzgsMjAgQEAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6TmF0
aXZlRXJyb3JDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogfQog
Cit2b2lkIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUs
IGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgbmFt
ZSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworICAgIAorICAgIE5hdGl2ZUVycm9y
UHJvdG90eXBlKiBwcm90b3R5cGUgPSBOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZVN0cnVjdHVyZSwgbmFtZSwgdGhpcyk7CisgICAgCisgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBEb250
RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7IC8vIEVDTUEgMTUuMTEuNy41CisgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIG1fZXJyb3JTdHJ1Y3R1cmUuc2V0KHZt
LCB0aGlzLCBFcnJvckluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlKSk7CisgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUpOworICAgIEFTU0VSVCht
X2Vycm9yU3RydWN0dXJlLT5pc09iamVjdCgpKTsKK30KKwogdm9pZCBOYXRpdmVFcnJvckNvbnN0
cnVjdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiB7CiAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogdGhpc09iamVjdCA9IGpzQ2FzdDxOYXRp
dmVFcnJvckNvbnN0cnVjdG9yKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKaW5kZXggNzQwZDNmOTMzMjky
ZmQyYWNjYjRiOTkwMzQ0MzEyYjkzMTlhZTExMC4uNDM4YTNhZmI5YmIwZjY0MTJjOTc5MzIyMzBj
ODg3MTA5NjFmNTQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaApAQCAtNTEsMTkgKzUxLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2Vy
cm9yU3RydWN0dXJlLmdldCgpOyB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgbmFtZSk7Ci0gICAgICAgICAgICBB
U1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7Ci0KLSAgICAgICAgICAgIE5hdGl2ZUVycm9yUHJvdG90
eXBlKiBwcm90b3R5cGUgPSBOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZVN0cnVjdHVyZSwgbmFtZSwgdGhpcyk7Ci0KLSAgICAgICAgICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOyAvLyBFQ01BIDE1LjExLjcuNQotICAgICAgICAg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwotICAgICAgICAgICAgbV9lcnJvclN0
cnVjdHVyZS5zZXQodm0sIHRoaXMsIEVycm9ySW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUpKTsKLSAgICAgICAgICAgIEFTU0VSVChtX2Vycm9yU3Ry
dWN0dXJlKTsKLSAgICAgICAgICAgIEFTU0VSVChtX2Vycm9yU3RydWN0dXJlLT5pc09iamVjdCgp
KTsKLSAgICAgICAgfQorICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1l
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoVk0mLCBT
dHJ1Y3R1cmUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5U2xvdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90
LmgKaW5kZXggZDkzOGZhMzE2NDVhZjI2Yjc1ODUxNGRiNmIyNDc4ZjE4M2U5ZWVlMS4uY2ZlOWM0
ZDMyYmE3NjhjNzRlNGZmYmIxOTEzNTI3OWRlYmYxMTc2NiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKQEAgLTQyLDYgKzQyLDggQEAgZW51bSBBdHRy
aWJ1dGUgewogICAgIEZ1bmN0aW9uICAgICA9IDEgPDwgNCwgIC8vIHByb3BlcnR5IGlzIGEgZnVu
Y3Rpb24gLSBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKICAgICBBY2Nlc3NvciAgICAg
PSAxIDw8IDUsICAvLyBwcm9wZXJ0eSBpcyBhIGdldHRlci9zZXR0ZXIKICAgICBDdXN0b21BY2Nl
c3NvciA9IDEgPDwgNiwKKyAgICBCdWlsdGluICAgICAgICAgPSAxIDw8IDcsIC8vIHByb3BlcnR5
IGlzIGEgYnVpbHRpbiBmdW5jdGlvbiAtIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwor
ICAgIEJ1aWx0aW5PckZ1bmN0aW9uID0gQnVpbHRpbiB8IEZ1bmN0aW9uLCAvLyBoZWxwZXIgb25s
eSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCiB9OwogCiBjbGFzcyBQcm9wZXJ0eVNsb3Qgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAK
aW5kZXggODlkN2FjMWI4Y2JmMWRiMGUxMjZmMWZjNzk2ZGZkNWZjODRiMmU1OS4uOWRkYTBiYThk
ZTE0MTJlYWY0ZDI5MWRjZjBjNmIzOTY1N2ZiNjc3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAj
aW5jbHVkZSAiQXJyYXlQcm90b3R5cGUuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUg
IkpTQXJyYXkuaCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNPYmplY3Qu
aCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCmluZGV4IGIyMDM4ODhkM2MxNmNkYTNjMDAzNTA2MjA4
YWUwODY5NWRjNWRhYWEuLmQwMjY2YTU5ZWYzZjU1YWEzNjk0ZjVmNzQxOGNmNzhlMGFlMGQ4YjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5j
cHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU1NldC5oIgorI2luY2x1ZGUgIkpTU3Ry
aW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk1hcERhdGEuaCIKICNpbmNsdWRlICJTZXRQcm90b3R5
cGUuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5j
cHAKaW5kZXggNDQwYTYwOTQyMTkzMzgwMzFlNTkyN2FmNDZiMjg5ZGJjZmI1YTcyOC4uODBlN2Vh
YThjNDkxY2I2ZDU0YTgzMjRjZTY0N2E2Y2RiN2U4ODc4MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCkBAIC0yMiw3ICsyMiw5IEBACiAjaW5j
bHVkZSAiU3RyaW5nT2JqZWN0LmgiCiAKICNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpT
Q0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRl
ICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAi
UHJvcGVydHlOYW1lQXJyYXkuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5jcHAKaW5kZXggMDQyOTFmN2U4ZGQyNGU4YWIzM2Q3NWFmMWRhNDU2OGYyYmM5OWU2
OC4uMWVjYWI4NWMwYmRiMjg2OTg5NDU3N2E3NDEyNTRlMzY0NDE0OWQ4OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0yNywxMiArMjcsMTggQEAK
ICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1
ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRHVtcENvbnRleHQuaCIKKyNpbmNs
dWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiTG9va3VwLmgiCisjaW5jbHVkZSAiUHJvcGVydHlNYXBIYXNoVGFibGUuaCIKICNp
bmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5l
cy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5s
aW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oIgogI2luY2x1ZGUg
PHd0Zi9Db21tYVByaW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVy
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNTJjY2Y0MjNhMTA0M2Ux
MDc5ZjJkOGIxODk0MjE5ODkwZTcxZjJiYy4uOTFhZDU1N2UyODliNDczNzA3YjgzOWY2Y2U3MGNh
MzQ0MTg2YTVmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMzIsNiAr
MzIsNyBAQAogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKICNpbmNsdWRlICJBcml0eUNoZWNrRmFpbFJl
dHVyblRodW5rcy5oIgogI2luY2x1ZGUgIkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5o
IgorI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZUlu
bGluZXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2RlQ2FjaGUuaCIK
QEAgLTU1LDcgKzU2LDEwIEBACiAjaW5jbHVkZSAiSlNBUElWYWx1ZVdyYXBwZXIuaCIKICNpbmNs
dWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlND
SlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRl
ICJKU05hbWVTY29wZS5oIgpAQCAtNjgsMTMgKzcyLDE2IEBACiAjaW5jbHVkZSAiTG9va3VwLmgi
CiAjaW5jbHVkZSAiTWFwRGF0YS5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCisjaW5jbHVkZSAiUGFy
c2VyLmgiCiAjaW5jbHVkZSAiUGFyc2VyQXJlbmEuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eU1hcEhh
c2hUYWJsZS5oIgogI2luY2x1ZGUgIlJlZ0V4cENhY2hlLmgiCiAjaW5jbHVkZSAiUmVnRXhwT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJTb3VyY2VQcm92aWRlckNhY2hlLmgiCiAjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24u
aCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5l
cy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiV2Vha01hcERh
dGEuaCIKICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CkBAIC0yMjYsNiArMjMzLDcgQEAgVk06
OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9pbkRlZmluZU93
blByb3BlcnR5KGZhbHNlKQogICAgICwgbV9jb2RlQ2FjaGUoQ29kZUNhY2hlOjpjcmVhdGUoKSkK
ICAgICAsIG1fZW5hYmxlZFByb2ZpbGVyKG51bGxwdHIpCisgICAgLCBtX2J1aWx0aW5FeGVjdXRh
YmxlcyhCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgaW50ZXJwcmV0
ZXIgPSBuZXcgSW50ZXJwcmV0ZXIoKnRoaXMpOwogICAgIFN0YWNrQm91bmRzIHN0YWNrID0gd3Rm
VGhyZWFkRGF0YSgpLnN0YWNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA1
YTg0MTA1ZWFmYjdhYmJhNWZhNDMxZWVlZGQ1NWQ3YTg5ZjU1Y2UyLi42OTU4YWMzOTNiMWFlZmMw
YmVmYmY2ZTRlYjhiNjgyNWNmN2M5YTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
QEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJQcml2YXRlTmFtZS5oIgogI2luY2x1ZGUgIlBy
b3RvdHlwZU1hcC5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgorI2luY2x1ZGUgIlNvdXJj
ZUNvZGUuaCIKICNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMu
aCIKICNpbmNsdWRlICJUeXBlZEFycmF5Q29udHJvbGxlci5oIgpAQCAtNjksNiArNzAsNyBAQAog
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcml0eUNoZWNrRmFpbFJldHVyblRodW5rczsK
KyAgICBjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXM7CiAgICAgY2xhc3MgQ29kZUJsb2NrOwogICAg
IGNsYXNzIENvZGVDYWNoZTsKICAgICBjbGFzcyBDb21tb25JZGVudGlmaWVyczsKQEAgLTQ5Nyw2
ICs0OTksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCByZWdpc3RlcldhdGNocG9p
bnRGb3JJbXB1cmVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyJiwgV2F0Y2hwb2ludCopOwogICAg
ICAgICAvLyBGSVhNRTogVXNlIEF0b21pY1N0cmluZyBvbmNlIGl0IGdvdCBtZXJnZWQgd2l0aCBJ
ZGVudGlmaWVyLgogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFkZEltcHVyZVByb3Bl
cnR5KGNvbnN0IFN0cmluZyYpOworICAgICAgICAKKyAgICAgICAgQnVpbHRpbkV4ZWN1dGFibGVz
KiBidWlsdGluRXhlY3V0YWJsZXMoKSB7IHJldHVybiBtX2J1aWx0aW5FeGVjdXRhYmxlcy5nZXQo
KTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKQEAgLTUzNywxMCArNTQxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpT
VmFsdWUgbV9leGNlcHRpb247CiAgICAgICAgIGJvb2wgbV9pbkRlZmluZU93blByb3BlcnR5Owog
ICAgICAgICBPd25QdHI8Q29kZUNhY2hlPiBtX2NvZGVDYWNoZTsKLSAgICAgICAgUmVmQ291bnRl
ZEFycmF5PFN0YWNrRnJhbWU+IG1fZXhjZXB0aW9uU3RhY2s7Ci0KICAgICAgICAgTGVnYWN5UHJv
ZmlsZXIqIG1fZW5hYmxlZFByb2ZpbGVyOwotCisgICAgICAgIE93blB0cjxCdWlsdGluRXhlY3V0
YWJsZXM+IG1fYnVpbHRpbkV4ZWN1dGFibGVzOworICAgICAgICBSZWZDb3VudGVkQXJyYXk8U3Rh
Y2tGcmFtZT4gbV9leGNlcHRpb25TdGFjazsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0
cjxXYXRjaHBvaW50U2V0Pj4gbV9pbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnRTZXRzOwogICAgIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUv
SlNTdHJpbmdJbmxpbmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50
aW1lL0pTU3RyaW5nSW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwZmNjMzg0ZThlZGZjMzRiMTQwODNi
ODY1ZDM3MzgyMGY0MTY1YzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3
YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCkBAIC0wLDAgKzEsNCBAQAor
I2lmbmRlZiBXZWJDb3JlX0ZXRF9KU1N0cmluZ0lubGluZXNfaAorI2RlZmluZSBXZWJDb3JlX0ZX
RF9KU1N0cmluZ0lubGluZXNfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nSW5s
aW5lcy5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdp
bnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcAppbmRleCAyZWRkY2RiYjlm
MDA2Y2E3NjI2NjUwYjQyMDI3ODYyNmI5MjYxNDE3Li4zYzRlMGQ3YmJiMzFjYWIxMmI1ZTZjOTc1
Yzc0ZDNmNDg0ZTljYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdp
bnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAKQEAgLTQ2LDYgKzQ2
LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1
ZUlubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ0lubGluZXMuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJREJBbnlDdXN0b20uY3BwCmluZGV4IDU2NDljODVjYTA5NTg3NzQ4YTNkYTA2Y2RkZDBjYTk5
OWU1MGI4ZTcuLjNmNGQ4ZWZhZWI1N2YzMzAwM2U3M2E3ZTc4NDJlNDJjNzNjZTY0OTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFueUN1c3RvbS5jcHAKQEAgLTQ3LDYg
KzQ3LDcgQEAKICNpbmNsdWRlICJKU0lEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSlNJREJU
cmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1
ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5j
cHAKaW5kZXggOWVhZTc1NjljNzA2MDNhNGZlZDBhZjE0YzRmODcxOGNkZTY0YTZlMS4uZjQ5ZGZl
OTBiNGU4MmQzOWVkY2JmOWJhMjlmMmFlNzk5YzBkZGYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKQEAgLTM3LDcgKzM3LDcg
QEAKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIkpTSURCT2JqZWN0U3Rv
cmUuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1N0
cmluZy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SURCT2JqZWN0U3RvcmVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJ
REJPYmplY3RTdG9yZUN1c3RvbS5jcHAKaW5kZXggNzRmZDM1NGIyODYwN2NmNzgyMmY4MDUzNDc5
NzBmNWQ3YWM4YzgzMi4uNTQzNGIzYjdkNmM1NmVjYjBhMDNhMjc5NGM2NzM2YTlhZGZiNzBlMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9y
ZUN1c3RvbS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5o
IgogI2luY2x1ZGUgIkpTSURCSW5kZXguaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0j
aW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJ
bmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2MjVmOWY3MDI5MmZk
YzE0YjhjYTUzMzc3MGMwNGQ0YjcwMDdmNjNjLi44OGM3YWQ3OTRkMjBmNWQ0ODllYjg1ZDA3Nzk1
ODUxZDM0NWEyMDcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBI
dW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGlt
cGxlbWVudCBKUyBidWlsdGlucyBpbiBKUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXBkYXRlZCB0aGUgdGVzdCByZXN1bHRzIGZvciBuZXcgZXJyb3Ig
bWVzc2FnZXMgKG5vdyB0aGF0IHRoZXkncmUKKyAgICAgICAgYWN0dWFsbHkgaGVscGZ1bCksIGFu
ZCBhZGRlZCBhIGpzLXJlZ3Jlc3MgdGVzdCB0byB0cmFjayBwZXJmb3JtYW5jZS4KKworICAgICAg
ICAqIGpzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9kb20vYXJyYXkt
cHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL3JlZ3Jlc3Mv
YXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMv
cmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbDogQWRkZWQuCisgICAgICAgICoganMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzOiBBZGRlZC4KKyAg
ICAgICAgKHRlc3QxKToKKyAgICAgICAgKHRlc3QyKToKKyAgICAgICAgKHRlc3QzKToKKwogMjAx
NC0wMS0yOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IFBsYXkgQnJlYWtwb2ludCBTb3VuZCBpbiBGcm9udGVuZApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0CmluZGV4IDU0MWI4YzM1OGYwNjhhMGNlYTg4
MmMxMDUxNzUzMjUxMTRjZDMzZjcuLmNjYTM2M2RjZTU4ZmJhOTVhNThjZTQ2ZmNiNDhjMzhiZjU4
YWRmNTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQKQEAgLTMwLDEy
ICszMCwxMiBAQCBQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoaXNCaWdFbm91Z2hBbmRF
eGNlcHRpb24pIHRocmV3IGV4Y2VwdGlvbiBleGNlcHRpbwogUEFTUyBbMTIsIDU0LCAxOCwgMTMw
LCA0NF0uZXZlcnkoaXNCaWdFbm91Z2hBbmRFeGNlcHRpb24pIHRocmV3IGV4Y2VwdGlvbiBleGNl
cHRpb24gZnJvbSBmdW5jdGlvbi4KIAogNS4wIFdyb25nIFR5cGUgZm9yIENhbGxiYWNrIFRlc3QK
LVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSg1KSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCd3cm9uZycp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwg
MTMwLCA0NF0uZXZlcnkobmV3IE9iamVjdCgpKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBU
eXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KG51bGwpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0u
ZXZlcnkodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgot
UEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogVHlwZSBlcnJvci4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSg1KSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBi
ZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCd3cm9uZycpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBt
dXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkobmV3IE9i
amVjdCgpKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkg
Y2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2
ZXJ5KG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVy
eSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0u
ZXZlcnkodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5
cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEz
MCwgNDRdLmV2ZXJ5KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBl
LmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KIAogNi4wIEVhcmx5IEV4aXQgKCJT
aG9ydCBDaXJjdWl0aW5nIikKIFBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShpc0JpZ0Vu
b3VnaFNob3J0Q2lyY3VpdCkgaXMgZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Rv
bS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9q
cy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CmluZGV4IDJjMmE2
OGNiMTA2ZGExMGYwODZiMjJjNWJmMmJmNWM4ZmU3OWUzM2UuLjVkOWVjYjc1YThkYTc5YmE2NTYw
NWU3ZWI5Y2Y4ZmMyNWZlMThhZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2RvbS9hcnJh
eS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMv
ZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApAQCAtMTUsNyArMTUs
NyBAQCBQQVNTIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHVuZGVmaW5lZCwgMCwgMSkgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZQogUEFTUyBBcnJheS5wcm90b3R5cGUuc29ydC5j
YWxsKHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5v
dCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5zb3J0LmNhbGwodW5kZWZp
bmVkKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwodW5kZWZpbmVkLCAwLCAx
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAo
ZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKHVuZGVmaW5lZCwgMCwgMSkn
KS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuY2FsbCh1bmRlZmluZWQsIHt9KSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVh
dGluZyAnQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuY2FsbCh1bmRlZmluZWQsIHt9KScpLgotUEFT
UyBBcnJheS5wcm90b3R5cGUuZXZlcnkuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGlu
ZyAnQXJyYXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZyknKS4KK1BB
U1MgQXJyYXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZykgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQg
fHRoaXN8IG5vdCBiZSB1bmRlZmluZWQuCiBQQVNTIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNh
bGwodW5kZWZpbmVkLCB0b1N0cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZp
bmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5mb3JFYWNo
LmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZyknKS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLnNvbWUu
Y2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRl
ZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnNvbWUu
Y2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUuaW5kZXhP
Zi5jYWxsKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVk
IGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5pbmRleE9mLmNh
bGwodW5kZWZpbmVkLCAwKScpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9h
cnJheS1wcm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9hcnJheS1wcm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyOTBjMGVl
ZmY4ZGU0MjE4MzNkOTJkMjdlOTUyNDE5MTc2MDRiOTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeQorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbCBiL0xheW91
dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU1Y2MxNzFjNDg3NWEzNTg1YmYxNGU1NDE1ZjVjZDBlNTgxZDU0NAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwKQEAg
LTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMv
YXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5LXByb3RvdHlwZS1l
dmVyeS5qcyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5LXByb3Rv
dHlwZS1ldmVyeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTRhYTE2MWMwY2U5OGIyYWIxOGEzYTFhMWYwZGZh
YWM5ZDdkMmUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3Jp
cHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzCkBAIC0wLDAgKzEsMjkgQEAKK3ZhciBy
ZXN1bHQgPSAwOworZnVuY3Rpb24gdGVzdDEoYSkgeworICAgIHJlc3VsdCA8PCAxOworICAgIHJl
c3VsdCsrOworICAgIHJldHVybiB0cnVlOworfQorZnVuY3Rpb24gdGVzdDIoYSxiKSB7CisgICAg
cmVzdWx0IF49IDM7CisgICAgcmVzdWx0ICo9IDM7CisgICAgcmV0dXJuIHRydWU7Cit9CitmdW5j
dGlvbiB0ZXN0MyhhLGIsYykgeworICAgIHJlc3VsdCBePSByZXN1bHQgPj4gMTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwordmFyIHJlc3VsdCA9IDA7Cit2YXIgYXJyYXkgPSBbXQorZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDAwMDA7ICsraSkKKyAgICBhcnJheVtpXSA9IDE7CisKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMTA7IGkrKykgeworICAgIGFycmF5LmV2ZXJ5KHRlc3QxKTsKKyAgICBhcnJheS5l
dmVyeSh0ZXN0Mik7CisgICAgYXJyYXkuZXZlcnkodGVzdDMpOworfQorCitpZiAocmVzdWx0ICE9
IDE0Mjg4MTA0OTYpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222678</attachid>
            <date>2014-01-30 09:53:30 -0800</date>
            <delta_ts>2014-01-30 09:55:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140130095329.patch</filename>
            <type>text/plain</type>
            <size>193976</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NjBlMTQzNTgwZTZkYzc1ZmEwNjY2YzlhMWUyZGMxZmMzZWYyY2MyLi4yNzBmZTZjZjRmNDQ2OGM4
NGRlNGViMjI3M2VmM2U4NTM4N2YxODBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
IFRoaXMgcmVzdWx0IG9mIHRoaXMgcmVmYWN0b3JpbmcKKyAgICAgICAgaXMgdGhhdCBDb21tb25J
ZGVudGlmaWVycywgYW5kIGEgZmV3IG90aGVyIG1pc2NlbGxhbmVvdXMgaGVhZGVycyBub3cKKyAg
ICAgICAgbmVlZCB0byBiZSBpbmNsdWRlZCBkaXJlY3RseSBhcyB0aGV5IHdlcmUgZm9ybWVybHkg
Y2FwdHVyZWQgdGhyb3VnaCBvdGhlcgorICAgICAgICBwYXRocy4KKworICAgICAgICBJbiBhZGRp
dGlvbiB0aGlzIGFkZHMgYSBmbGFnIHRvIHRoZSBMb29rdXAgdGFibGUncyBoYXNoZW50cnkgdG8g
aW5kaWNhdGUKKyAgICAgICAgdGhhdCBhIHN0YXRpYyBmdW5jdGlvbiBpcyBhY3R1YWxseSBiYWNr
ZWQgYnkgSlMuIFRoZXJlIGlzIHRoZW4gYSBsb3Qgb2YKKyAgICAgICAgbG9naWMgdG8gdGhyZWFk
IHRoZSBzcGVjaWFsIG5hdHVyZSBvZiB0aGUgZnVuY3RvbiB0byB3aGVyZSBpdCBtYXR0ZXJzLgor
ICAgICAgICBUaGlzIGFsbG93cyB0b1N0cmluZygpLCAuY2FsbGVyLCBldGMgdG8gbWltaWMgdGhl
IGJlaGF2aW91ciBvZiBhIGhvc3QKKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAgICAgTm90ZXMg
b24gd3JpdGluZyBidWlsdGluczoKKyAgICAgICAgIC0gRWFjaCBmdW5jdGlvbiBpcyBjb21waWxl
ZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBvdGhlcnMsIGFuZCB0aG9zZQorICAgICAgICAgICBpbXBs
ZW1lbnRhdGlvbnMgY2Fubm90IGN1cnJlbnRseSBjYXB0dXJlIGFsbCBnbG9iYWwgcHJvcGVydGll
cyAoYXMKKyAgICAgICAgICAgdGhhdCBjb3VsZCBiZSBwb3RlbnRpYWxseSB1bnNhZmUpLiBJZiBh
IGZ1bmN0aW9uIGRvZXMgY2FwdHVyZSBhCisgICAgICAgICAgIGdsb2JhbCB3ZSB3aWxsIGRlbGli
ZXJhdGVseSBjcmFzaC4KKyAgICAgICAgIC0gRm9yIHRob3NlICJnbG9iYWwiIHByb3BlcnRpZXMg
dGhhdCB3ZSBkbyB3YW50IGFjY2VzcyB0bywgd2UgdXNlCisgICAgICAgICAgIHRoZSBAIHByZWZp
eCwgZS5nLiBPYmplY3QodGhpcykgYmVjb21lcyBAT2JqZWN0KHRoaXMpLiBUaGUgQCBpZGVudGlm
aWVycworICAgICAgICAgICBhcmUgcHJpdmF0ZSBuYW1lcywgYW5kIGJlaGF2ZSBqdXN0IGxpa2Ug
cmVndWxhciBwcm9wZXJ0aWVzLCBvbmx5CisgICAgICAgICAgIHdpdGhvdXQgdGhlIHJpc2sgb2Yg
YWR1bHRlcmF0aW9uLiBBZ2FpbiwgaW4gdGhlIEBPYmplY3QgY2FzZSwgd2UKKyAgICAgICAgICAg
ZXhwbGljaXRseSBkdXBsaWNhdGUgdGhlIE9iamVjdENvbnN0cnVjdG9yIHJlZmVyZW5jZSBvbiB0
aGUgR2xvYmFsT2JqZWN0CisgICAgICAgICAgIHNvIHRoYXQgd2UgaGF2ZSBndWFyYW50ZWVkIGFj
Y2VzcyB0byB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgY29uc3RydWN0
b3IuCisgICAgICAgICAtIGNhbGwsIGFwcGx5LCBldmFsLCBhbmQgRnVuY3Rpb24gYXJlIGFsbCBy
ZWplY3RlZCBpZGVudGlmaWVycywgYWdhaW4KKyAgICAgICAgICAgdG8gcHJldmVudCBhbnl0aGlu
ZyBmcm9tIGFjY2lkZW50YWxseSB1c2luZyBhbiBhZHVsdGVyYXRlZCBvYmplY3QuCisgICAgICAg
ICAgIEluc3RlYWQgQGNhbGwgYW5kIEBhcHBseSBhcmUgYXZhaWxhYmxlLCBhbmQgaGFwcGlseSB0
aGV5IGNvbXBsZXRlbHkKKyAgICAgICAgICAgZHJvcCB0aGUgbmVxX3B0ciBpbnN0cnVjdGlvbiBh
cyB0aGV5J3JlIGRlZmluZWQgYXMgYWx3YXlzIGJlaW5nIHRoZQorICAgICAgICAgICBvcmlnaW5h
bCBjYWxsL2FwcGx5IGZ1bmN0aW9ucy4KKworICAgICAgICBUaGVzZSByZXN0cmljdGlvbnMgYXJl
IGp1c3QgaW50ZW5kZWQgdG8gbWFrZSBpdCBoYXJkZXIgdG8gYWNjaWRlbnRhbGx5CisgICAgICAg
IG1ha2UgY2hhbmdlcyB0aGF0IGFyZSBpbmNvcnJlY3QgKGZvciBpbnN0YW5jZSBjYWxsaW5nIHdo
YXRldmVyIGhhcyBiZWVuCisgICAgICAgIGFzc2lnbmVkIHRvIGdsb2JhbC5PYmplY3QsIGluc3Rl
YWQgb2YgdGhlIG9yaWdpbmFsIGNvbnN0cnVjdG9yIGZ1bmN0aW9uKS4KKyAgICAgICAgSG93ZXZl
ciwgbWFraW5nIGEgbWlzdGFrZSBsaWtlIHRoaXMgc2hvdWxkIHJlc3VsdCBpbiBhIHB1cmVseSBz
ZW1hbnRpYworICAgICAgICBlcnJvciBhcyBmdW5kYW1lbnRhbGx5IHRoZXNlIGZ1bmN0aW9ucyBh
cmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlCisgICAgICAgIHJlZ3VsYXIgSlMgY29kZSBp
biB0aGUgaG9zdCBnbG9iYWwsIGFuZCBoYXZlIG5vIG1vcmUgcHJpdmlsZWdlcyB0aGFuCisgICAg
ICAgIGFueSBvdGhlciBKUy4KKworICAgICAgICBUaGUgaW5pdGlhbCBwcm9vZiBvZiBjb25jZXB0
IGlzIEFycmF5LnByb3RvdHlwZS5ldmVyeSwgdGhpcyBzaG93cyBhIDY1JQorICAgICAgICBwZXJm
b3JtYW5jZSBpbXByb3ZlbWVudCwgYW5kIHRoYXQgaW1wcm92ZW1lbnQgaXMgc2lnbmlmaWNhbnRs
eSBodXJ0IGJ5CisgICAgICAgIG91ciBwb29yIG9wdGltaXNhdGlvbiBvZiBvcF9pbi4KKworICAg
ICAgICBBcyB0aGlzIGlzIHN1Y2ggYSBsaW1pdGVkIGZ1bmN0aW9uLCB3ZSBoYXZlIG5vdCB5ZXQg
ZXhwb3J0ZWQgYWxsIHN5bWJvbHMKKyAgICAgICAgdGhhdCB3ZSBjb3VsZCBwb3NzaWJseSBuZWVk
LCBidXQgYXMgd2UgaW1wbGVtZW50IG1vcmUsIHRoZSBsaWtlbGlob29kCisgICAgICAgIG9mIGVu
Y291bnRlcmluZyBtaXNzaW5nIGZlYXR1cmVzIHdpbGwgcmVkdWNlLgorCisgICAgICAgIFRoaXMg
ZGlkIHJlcXVpcmUgYnJlYWtpbmcgb3V0IGEgSlNTdHJpbmdJbmxpbmVzIGhlYWRlciwgYW5kIHJl
cXVpcmVkCisgICAgICAgIGZpeGluZyBhIGZldyBvYmplY3RzIHRoYXQgd2VyZSB0cnlpbmcgdG8g
dXNpbmcgUHJvcGVydHlOYW1lOjpwdWJsaWNOYW1lCisgICAgICAgIHJhdGhlciB0aGFuIFByb3Bl
cnR5TmFtZTo6dWlkLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0
eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dCk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRpY1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWNGdW5jdGlvbkdl
dHRlcik6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tH
ZXR0ZXIpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBidWlsdGlucy9BcnJheS5wcm90b3R5cGUuanM6CisgICAgICAgIChldmVyeSk6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkJ1aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKToKKyAgICAgICAgKEpTQzo6
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSk6CisgICAgICAgICog
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVj
dXRhYmxlczo6Y3JlYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tG
b3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6dG9TdHJpY3RuZXNzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNCdWlsdGluRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBjcmVhdGVfaGFz
aF90YWJsZToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZ2Vu
ZXJhdGUtanMtYnVpbHRpbnM6IEFkZGVkLgorICAgICAgICAoZ2V0Q29weXJpZ2h0KToKKyAgICAg
ICAgKGdldEZ1bmN0aW9ucyk6CisgICAgICAgIChnZW5lcmF0ZUNvZGUpOgorICAgICAgICAobWFu
Z2xlTmFtZSk6CisgICAgICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSWRlbnRp
Zmllcik6CisgICAgICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChTb3VyY2VDb2RlKToK
KyAgICAgICAgKFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKFZNKToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvUHJvdG9DYWxsRnJhbWUuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUp
OgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpM
ZXhlcik6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpM
ZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFy
Pjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAg
ICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcik6CisgICAgICAgICog
cGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OnNldENsb3NlZFZh
cmlhYmxlcyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
Tm9kZTo6Y2FwdHVyZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OnNldENs
b3NlZFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmluaXNoUGFy
c2luZyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRU
b2tlblRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OmdldFVzZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNsb3NlZFZhcmlh
Ymxlcyk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9k
ZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAgICAgICogcnVudGlt
ZS9BcmdMaXN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAg
ICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJh
dG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpn
ZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpD
b21tb25JZGVudGlmaWVycyk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQ
cml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQdWJsaWNO
YW1lKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzRXhjZXB0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxl
OjpleGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpleGVj
dXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aXNCdWlsdGlu
RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1l
L0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFi
bGVHZXQpOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0KToKKyAg
ICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgICogcnVudGltZS9K
U0NlbGxJbmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6c291cmNlQ29kZSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzSG9zdE9y
QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6aXNCdWlsdGluRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIpOgorICAgICAg
ICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9w
ZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgICogcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6Om9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpnZXRDbGFzc1Byb3BlcnR5TmFtZXMpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZ0lubGlu
ZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjppbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9i
amVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgICAgRG9uJ3QgcmVw
b3J0IHByaXZhdGUgbmFtZXMuCisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6c3ltYm9s
VGFibGVQdXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChKU0M6OnNldFVwU3RhdGlj
RnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlND
OjpIYXNoRW50cnk6OmJ1aWx0aW5HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpIYXNoRW50cnk6
OnByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpwcm9wZXJ0eVB1dHRl
cik6CisgICAgICAgIChKU0M6Okhhc2hUYWJsZTo6ZW50cnkpOgorICAgICAgICAoSlNDOjpnZXRT
dGF0aWNQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpnZXRTdGF0aWNWYWx1ZVNsb3QpOgor
ICAgICAgICAoSlNDOjpwdXRFbnRyeSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6YnVp
bHRpbkV4ZWN1dGFibGVzKToKKwogMjAxNC0wMS0yOSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3Nz
eUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikgbGVmdG92ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTEzZjE4OGFlNjUyYjk1ZjNiNTcyYWMxNzcwZWEx
MjViYmFlNzVkMi4uNjMyYWNjNDNkYzE2YzcxMzRkNThjMDRiN2E1Y2U1NmE5MTk4ZWNjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE0LTAxLTI5ICBPbGl2ZXIgSHVudCAgPG9saXZl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBpbXBsZW1lbnQgSlMg
YnVpbHRpbnMgaW4gSlMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNzg4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVwZGF0aW5nIGZvciB0aGUgbmV3bHkgcmVxdWlyZWQgaGVhZGVycy4KKworICAgICAg
ICBUZXN0OiBqcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sCisKKyAgICAgICAg
KiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oOiBBZGRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcDoKKwogMjAxNC0wMS0zMCAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViUGFnZTo6ZGV0ZXJtaW5lUHJpbWFyeVNu
YXBzaG90dGVkUGx1Z0luIGlzIHNsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggNWJlMDUzZjFlMDg2YjQzZTY4
NmMzNjc0ZGFlN2M1MTYwNWEyODZlNy4uMGVjZWQ1MWYzZTJkNWI2MjFkYWRmMDU3NDlmNWU3NDY2
YTA2ZjUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBib29sIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZQogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKICAg
ICBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHByb3BlcnR5TmFtZVJlZjsKICAgICAKLSAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpT
Q2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xh
c3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgLy8gb3B0aW9uYWwgb3B0
aW1pemF0aW9uIHRvIGJ5cGFzcyBnZXRQcm9wZXJ0eSBpbiBjYXNlcyB3aGVuIHdlIG9ubHkgbmVl
ZCB0byBrbm93IGlmIHRoZSBwcm9wZXJ0eSBleGlzdHMKICAgICAgICAgICAgIGlmIChKU09iamVj
dEhhc1Byb3BlcnR5Q2FsbGJhY2sgaGFzUHJvcGVydHkgPSBqc0NsYXNzLT5oYXNQcm9wZXJ0eSkg
ewpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiAgICAgUmVmUHRy
PE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgSlNWYWx1ZVJlZiB2YWx1ZVJl
ZiA9IHRvUmVmKGV4ZWMsIHZhbHVlKTsKICAgICAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9
IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJl
bnRDbGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBz
ZXRQcm9wZXJ0eSA9IGpzQ2xhc3MtPnNldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFwcm9wZXJ0eU5hbWVSZWYpCkBAIC0zNDMsNyArMzQzLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm8KICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CiAgICAg
UmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0Ns
YXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNz
ID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdERlbGV0
ZVByb3BlcnR5Q2FsbGJhY2sgZGVsZXRlUHJvcGVydHkgPSBqc0NsYXNzLT5kZWxldGVQcm9wZXJ0
eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lUmVmKQpAQCAtNTY0LDcgKzU2
NCw3IEBAIEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiB7CiAgICAgSlNPYmplY3RSZWYgdGhpc1Jl
ZiA9IHRvUmVmKHRoaXMpOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gY2xhc3NS
ZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAg
ICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXMgPSBq
c0NsYXNzLT5zdGF0aWNWYWx1ZXMoZXhlYykpIHsKICAgICAgICAgICAgICAgICBpZiAoU3RhdGlj
VmFsdWVFbnRyeSogZW50cnkgPSBzdGF0aWNWYWx1ZXMtPmdldChuYW1lKSkgewpAQCAtNjAwLDcg
KzYwMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGlj
RnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFCiAgICAgaWYgKFBhcmVudDo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdDIpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QyLmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFt
ZSkpOwogCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsK
ICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqLT5jbGFzc1JlZigpOyBq
c0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlm
IChPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGUqIHN0YXRpY0Z1bmN0aW9ucyA9IGpz
Q2xhc3MtPnN0YXRpY0Z1bmN0aW9ucyhleGVjKSkgewogICAgICAgICAgICAgICAgIGlmIChTdGF0
aWNGdW5jdGlvbkVudHJ5KiBlbnRyeSA9IHN0YXRpY0Z1bmN0aW9ucy0+Z2V0KG5hbWUpKSB7CkBA
IC02MjYsNyArNjI2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpjYWxsYmFja0dldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWQKICAgICBKU09iamVjdFJl
ZiB0aGlzUmVmID0gdG9SZWYodGhpc09iaik7CiAgICAgUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBw
cm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2Jq
LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsK
ICAgICAgICAgICAgIGlmIChKU09iamVjdEdldFByb3BlcnR5Q2FsbGJhY2sgZ2V0UHJvcGVydHkg
PSBqc0NsYXNzLT5nZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlO
YW1lUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDI3YmM0YzE3ZjNk
ZmVlYjYxZDI1MjMyM2ZkODc4YzQ0NzgwZjc0YzUuLjQxMzRhNmMxZTNlZjMyYmU4NWE2MjQ1ZDdl
YjVlMDU1MmZlNTEzZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUy
LDYgKzUyLDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9TY3Jp
cHRPYmplY3QuY3BwCiAgICAgYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCiAKKyAgICBidWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCisKICAgICBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Q
cm9maWxlLmNwcAogICAgIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9C
eXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC04MTUsMTYgKzgxNywyNyBAQCBhZGRfY3VzdG9tX2Nv
bW1hbmQoCiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3Jl
X0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0vQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTLmpzb24gLS1vdXRwdXRf
aF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0cHV0X2Nw
cF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0cHV0X2pz
X2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIgLS1vdXRwdXRfdHlw
ZSBKYXZhU2NyaXB0IC0td3JpdGVfYWx3YXlzICYmIG1rZGlyIC1wICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yICYmIGNwICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTRnJvbnRlbmREaXNwYXRj
aGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNU
eXBlQnVpbGRlcnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3Bl
Y3RvcgogICAgIFZFUkJBVElNKQogCisjIEpTQ0J1aWx0aW5zCitmaWxlKEdMT0IgSlNDQnVpbHRp
bnNfanNfZmlsZXMgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9idWlsdGlucy8qLmpzIikK
K2FkZF9jdXN0b21fY29tbWFuZCgKKyAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19KQVZBU0NS
SVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBU
Q09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKKyAgIE1BSU5fREVQRU5ERU5DWSAke0NNQUtFX0NVUlJF
TlRfU09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMKKyAgIERFUEVORFMgJHtKU0NCdWls
dGluc19qc19maWxlc30KKyAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9D
VVJSRU5UX1NPVVJDRV9ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zICR7SlNDQnVpbHRpbnNfanNf
ZmlsZXN9ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMu
aCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcAor
ICAgVkVSQkFUSU0pCisKIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTQmFja2VuZERp
c3BhdGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0v
SW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwCisgICAgJHtE
RVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5jcHAKICkKIAog
bGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUwogICAgICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaAogICAg
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNGcm9udGVu
ZERpc3BhdGNoZXJzLmgKICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9
L0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgKKyAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NS
SVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKICkKIAogYWRkX2N1c3RvbV9jb21tYW5kKApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAxMTU2ZTk3ZmQ4ODYy
NTU3YzljZjhkM2I2OGJmNGQwM2MzZThiYThmLi4yNjZhYTVmMDgxNGI3MjBmZWI1NmI3ZDQxY2Yx
NzNjNTBjNWE0YjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQpAQCAtNTcsNiArNTcsNyBAQCBhbGwgOiBcCiAgICAgUmVnRXhwT2JqZWN0Lmx1dC5oIFwKICAg
ICBTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgdWRpczg2X2l0YWIuaCBcCisgICAgSlND
QnVpbHRpbnMgXAogIwogCiAjIGxvb2t1cCB0YWJsZXMgZm9yIGNsYXNzZXMKQEAgLTc5LDYgKzgw
LDE0IEBAIEtleXdvcmRMb29rdXAuaDogS2V5d29yZExvb2t1cEdlbmVyYXRvci5weSBLZXl3b3Jk
cy50YWJsZQogdWRpczg2X2l0YWIuaDogJChKYXZhU2NyaXB0Q29yZSkvZGlzYXNzZW1ibGVyL3Vk
aXM4Ni9pdGFiLnB5ICQoSmF2YVNjcmlwdENvcmUpL2Rpc2Fzc2VtYmxlci91ZGlzODYvb3B0YWJs
ZS54bWwKIAkoUFlUSE9OUEFUSD0kKEphdmFTY3JpcHRDb3JlKS9kaXNhc3NlbWJsZXIvdWRpczg2
IHB5dGhvbiAkKEphdmFTY3JpcHRDb3JlKS9kaXNhc3NlbWJsZXIvdWRpczg2L2l0YWIucHkgJChK
YXZhU2NyaXB0Q29yZSkvZGlzYXNzZW1ibGVyL3VkaXM4Ni9vcHRhYmxlLnhtbCB8fCBleGl0IDEp
CiAKKyMgYnVpbHRpbiBmdW5jdGlvbnMKKy5QSE9OWTogSlNDQnVpbHRpbnMKKworSlNDQnVpbHRp
bnM6IEpTQ0J1aWx0aW5zLmggSlNDQnVpbHRpbnMuY3BwCitKU0NCdWlsdGlucy5oOiAkKEphdmFT
Y3JpcHRDb3JlKS9nZW5lcmF0ZS1qcy1idWlsdGlucyAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlu
cy8qLmpzCisJcHl0aG9uICReICRACisKK0pTQ0J1aWx0aW5zLmNwcDogSlNDQnVpbHRpbnMuaAog
CiAjIEluc3BlY3RvciBpbnRlcmZhY2VzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KaW5kZXggY2RiNTQyNmIwNmI1MmE5ODI1NmVlOTA1OGJiYThmMTFlZWE2OWVl
MC4uYWZlOTY3MmI1YjFlZTkyNzExYmVkZDQ3NWU5YTEyODIwM2M4MTM2NSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTEwMiw2ICsxMDIsOCBAQCBqYXZh
c2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGlu
Z3MvU2NyaXB0T2JqZWN0LmggXAogICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9T
Y3JpcHRWYWx1ZS5jcHAgXAogICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3Jp
cHRWYWx1ZS5oIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmNwcCBcCisgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5FeGVjdXRhYmxlcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlB
bGxvY2F0aW9uUHJvZmlsZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
cnJheUFsbG9jYXRpb25Qcm9maWxlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9BcnJheVByb2ZpbGUuY3BwIFwKQEAgLTEyNDEsNyArMTI0Myw5IEBAIGphdmFzY3JpcHRjb3Jl
X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpT
RnJvbnRlbmREaXNwYXRjaGVycy5jcHAgXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3Jl
L0luc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAgXAotCURlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgKKwlEZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oIFwKKwlEZXJpdmVkU291
cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5jcHAgXAorCURlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmgKIAogbGxpbnRfbm9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagppbmRleCA1ZWRlZmRiZTg1NWY5NmE2
MjY4ZDg1NzNiZWMxZDBjM2Q4NThhYTVjLi5hMTJkYjE4MzQ4NmRmYmJjYTgzZjNhNzhlOWNmOTg2
MzFiMjY1M2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTMw
OSw2ICszMDksNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0
RnVuY3Rpb25DYWxsLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdz
XFNjcmlwdE9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xTY3JpcHRWYWx1ZS5jcHAiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxidWlsdGlu
c1xCdWlsdGluRXhlY3V0YWJsZXMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
Ynl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxieXRlY29kZVxBcnJheVByb2ZpbGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cYnl0ZWNvZGVcQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCIgLz4KQEAgLTcyMSw2
ICs3MjIsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEluc3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JKU0Zyb250ZW5kRGlz
cGF0Y2hlcnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEluc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmNwcCIgLz4KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NCdWlsdGlucy5jcHAiIC8+CiAg
IDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEFycmF5Q29uc3RydWN0b3IubHV0LmgiIC8+CkBAIC03NTAs
NiArNzUyLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xSZWdFeHBPYmplY3QubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcUmVnRXhwUHJvdG90eXBlLmx1dC5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFN0cmluZ0NvbnN0cnVjdG9y
Lmx1dC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEpTQ0J1aWx0aW5zLmgiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEFQSUNhbGxiYWNrRnVuY3Rpb24uaCIgLz4KQEAg
LTc5OCw2ICs4MDEsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2Ny
aXB0RnVuY3Rpb25DYWxsLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xTY3JpcHRPYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdz
XFNjcmlwdFZhbHVlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxidWlsdGluc1xC
dWlsdGluRXhlY3V0YWJsZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVj
b2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGJ5dGVjb2RlXEFycmF5UHJvZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cYnl0ZWNvZGVcQnlWYWxJbmZvLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRl
cnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggODdlMTJhNDcxNThiYjYyMjRkNDlmZDYyMjk3
OGM0YTljNDQzNWE2NS4uODY5YzFmNTg5YmNiNjg2ZWI5Y2YyMGMwOTZiZTFiODNhNTUxZTI0YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpA
QCAtNyw2ICs3LDkgQEAKICAgICA8RmlsdGVyIEluY2x1ZGU9ImJpbmRpbmdzIj4KICAgICAgIDxV
bmlxdWVJZGVudGlmaWVyPnswYmFjZTEyMy00NTgyLWVlYmMtOTMxNC03ODE5YjM3NmMxOTh9PC9V
bmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iYnVp
bHRpbnMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezNiOWQ3MmE1LTEzNWItNDNiMy1hNTI0
LWM2ZDJiOWQyOWQzNX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CiAgICAgPEZp
bHRlciBJbmNsdWRlPSJieXRlY29kZSI+CiAgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NzY2MDg4
YTAtMTIxNi00ODU0LWFhNDMtNTYwYzVlMjgzNjY4fTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8
L0ZpbHRlcj4KQEAgLTEwOCw2ICsxMTEsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
YXNzZW1ibGVyXE1hY3JvQXNzZW1ibGVyLmNwcCI+CiAgICAgICA8RmlsdGVyPmFzc2VtYmxlcjwv
RmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnVp
bHRpbnNcQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCI+CisgICAgICA8RmlsdGVyPmJ1aWx0aW5zPC9G
aWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRl
Y29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCI+CiAgICAgICA8RmlsdGVyPmJ5dGVjb2Rl
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0xMzI5LDYgKzEzMzUsOSBAQAogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTVHlw
ZUJ1aWxkZXJzLmNwcCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmNwcCI+CisgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNl
czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91
cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxBUElDYWxsYmFja0Z1bmN0aW9uLmgi
PgpAQCAtMTQ1NCw2ICsxNDYzLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFzc2Vt
YmxlclxYODZBc3NlbWJsZXIuaCI+CiAgICAgICA8RmlsdGVyPmFzc2VtYmxlcjwvRmlsdGVyPgog
ICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnVpbHRpbnNcQnVp
bHRpbkV4ZWN1dGFibGVzLmgiPgorICAgICAgPEZpbHRlcj5idWlsdGluczwvRmlsdGVyPgorICAg
IDwvQ2xDb21waWxlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlB
bGxvY2F0aW9uUHJvZmlsZS5oIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAg
ICA8L0NsSW5jbHVkZT4KQEAgLTI1NTAsNiArMjU2Miw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcQXJyYXlQcm90b3R5cGUubHV0LmgiPgogICAg
ICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NCdWlsdGlu
cy5oIj4KKyAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CisgICAgPC9DbElu
Y2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFZNLmgiPgogICAgICAg
PEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDI3ZTg3Njc0MGE5NjRiMDI4OTg0ZWQ2NzgxNjE4MjBhNWRjZjc3
YzQuLjkxMTU3M2FiMTdkMzM5NzRhYTdjOWEwMTFkYjIwMGIwOWFmNzhiZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MjIsNyArOTIyLDYgQEAKIAkJQTUwM0ZBMTkxODhFMEZC
MDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTMxODhFMEZBRjAwMTEwRjE0IC8qIEph
dmFTY3JpcHRDYWxsRnJhbWUuY3BwICovOyB9OwogCQlBNTAzRkExQTE4OEUwRkIwMDAxMTBGMTQg
LyogSmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTUwM0ZBMTQxODhFMEZBRjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxs
RnJhbWUuaCAqLzsgfTsKIAkJQTUwM0ZBMUIxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlw
dENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTAzRkExNTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNw
cCAqLzsgfTsKLQkJQTUwM0ZBMUMxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxG
cmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUw
M0ZBMTYxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9Owog
CQlBNTAzRkExRDE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90
eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
MDNGQTE3MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUu
Y3BwICovOyB9OwogCQlBNTAzRkExRTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2Fs
bEZyYW1lUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNTAzRkExODE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1l
UHJvdG90eXBlLmggKi87IH07CiAJCUE1MDNGQTIxMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRC
cmVha3BvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNTAzRkExRjE4OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0QnJlYWtwb2ludC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDI0LDYgKzEwMjMs
NyBAQAogCQlBNzBCMDgzMjE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MEIwODMwMTdB
MEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guY3BwICovOyB9OwogCQlBNzBCMDgzMzE3
QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzBCMDgzMTE3QTBCNzlCMDBEQUYxNEIgLyogREZH
QmluYXJ5U3dpdGNoLmggKi87IH07CiAJCUE3MTIzNkU1MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRP
cGNvZGVzMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTcxMjM2RTQxMTk1RjMzQzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgKi87
IH07CisJCUE3MURBODBGMTg4MERCQUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MURBODBFMTg4MERC
QUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzIwMjhCNjE3OTc2MDFFMDA5ODAyOEMgLyogSlND
VGVzdFJ1bm5lclV0aWxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3MjAyOEI0MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMu
Y3BwICovOyB9OwogCQlBNzIwMjhCODE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0
aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIw
MjhCNTE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcyMDI4QkExNzk3NjAzRDAw
OTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIwMjhCOTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlv
bklubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTE1MCw2ICsxMTUwLDEwIEBACiAJCUE3Q0EzQUU4MTdEQTQxQUUwMDY1MzhBRiAvKiBK
U1dlYWtNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3Q0EzQUUyMTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuaCAqLzsgfTsKIAkJQTdDQTNB
RUIxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0EzQUU5MTdEQTUxNjgwMDY1MzhBRiAvKiBX
ZWFrTWFwRGF0YS5jcHAgKi87IH07CiAJCUE3Q0EzQUVDMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFr
TWFwRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTdDQTNBRUExN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmggKi87IH07CisJCUE3RDgw
MUE0MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTExODgwRDY2RTAwMjZD
MzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi87IH07CisJCUE3RDgwMUE1MTg4MEQ2NkUw
MDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGlu
RXhlY3V0YWJsZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlBN0Q4MDFBODE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTYxODgwRDZB
ODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCAqLzsgfTsKKwkJQTdEODAxQTkxODgwRDZBODAw
MjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBN0Q4MDFBNzE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBN0Q4OUNG
MjE3QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4OUNFMzE3QTBCOENDMDA3NzNBRDggLyog
REZHQmFzaWNCbG9jay5jcHAgKi87IH07CiAJCUE3RDg5Q0YzMTdBMEI4Q0MwMDc3M0FEOCAvKiBE
RkdCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBN0Q4OUNFNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRp
b25TZXQuY3BwICovOyB9OwogCQlBN0Q4OUNGNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJ
bnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3RDg5Q0U1MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNDYyLDYg
KzI0NjYsOCBAQAogCQlBNzEyMzZFNDExOTVGMzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVE9wY29kZXMzMl82
NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MThGNjFBMTE3NTRBMjEwMDI0
NjVBNyAvKiBSZWdFeHBKaXRUYWJsZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVnRXhwSml0VGFibGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MThG
ODIxMTE3OEVCNEIwMDI0NjVBNyAvKiBjcmVhdGVfcmVnZXhfdGFibGVzICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IGZp
bGVFbmNvZGluZyA9IDQ7IHBhdGggPSBjcmVhdGVfcmVnZXhfdGFibGVzOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBNzFEQTgwRDE4ODBENzFGMDBEMUYyOTkgLyogZ2VuZXJhdGUtanMt
YnVpbHRpbnMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSAiZ2VuZXJhdGUt
anMtYnVpbHRpbnMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzFEQTgwRTE4ODBE
QkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTU3RyaW5nSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNzIwMjhCNDE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI1MTc5NzYwMUUwMDk4MDI4QyAv
KiBKU0NUZXN0UnVubmVyVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNDVGVzdFJ1bm5lclV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAy
OEI5MTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0Z1bmN0aW9uSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjU5MCw2ICsyNTk2LDExIEBACiAJCUE3Q0EzQUUyMTdEQTQxQUUwMDY1
MzhBRiAvKiBKU1dlYWtNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNX
ZWFrTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Q0EzQUU5MTdEQTUxNjgw
MDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWFrTWFwRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3
Q0EzQUVBMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWFrTWFwRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBN0Q4MDFBMDE4ODBENjZFMDAyNkMzOUIgLyogQXJyYXkucHJvdG90eXBlLmpzICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gQXJyYXkucHJvdG90eXBlLmpzOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFBMTE4ODBENjZFMDAyNkMzOUIgLyog
QnVpbHRpbkV4ZWN1dGFibGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVpbHRpbkV4ZWN1dGFibGVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWls
dGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NCdWlsdGlu
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUE3MTg4MEQ2QTgwMDI2
QzM5QiAvKiBKU0NCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0NCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0Q4OUNFMzE3QTBC
OENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBERkdCYXNpY0Jsb2NrLmNwcDsgcGF0aCA9IGRmZy9ERkdCYXNpY0Jsb2Nr
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdEODlDRTQxN0EwQjhDQzAwNzcz
QUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcDsgcGF0aCA9IGRmZy9ERkdCbG9j
a0luc2VydGlvblNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RDg5Q0U1
MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCbG9ja0luc2VydGlvblNldC5oOyBwYXRoID0gZGZnL0RG
R0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTI2
LDYgKzI5MzcsNyBAQAogCQkJCTg2MDRGNEYyMTQzQTZDNDQwMEIyOTVGNSAvKiBDaGFuZ2VMb2cg
Ki8sCiAJCQkJRjY5MkE4NTQwMjU1NTk3RDAxRkY2MEY3IC8qIGNyZWF0ZV9oYXNoX3RhYmxlICov
LAogCQkJCUE3MThGODIxMTE3OEVCNEIwMDI0NjVBNyAvKiBjcmVhdGVfcmVnZXhfdGFibGVzICov
LAorCQkJCUE3MURBODBEMTg4MEQ3MUYwMEQxRjI5OSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAq
LywKIAkJCQk0NUUxMkQ4ODA2QTQ5QjBGMDBFOURGODQgLyoganNjLmNwcCAqLywKIAkJCQlGNjhF
QkI4QzAyNTVENEM2MDFGRjYwRjcgLyogY29uZmlnLmggKi8sCiAJCQkJRjVDMjkwRTYwMjg0Rjk4
RTAxODYzNUNBIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggKi8sCkBAIC0yOTM0LDYgKzI5NDYs
NyBAQAogCQkJCTE0MzJFQkQ3MEEzNENBRDQwMDcxN0I5RiAvKiBBUEkgKi8sCiAJCQkJOTY4OENC
MTIwRUQxMkI0RTAwMUQ2NDlGIC8qIGFzc2VtYmxlciAqLywKIAkJCQlBNTRDRjJFQTE4NEVBNzM5
MDAyMzdGMTkgLyogYmluZGluZ3MgKi8sCisJCQkJQTdEODAxOUYxODgwRDY2RTAwMjZDMzlCIC8q
IGJ1aWx0aW5zICovLAogCQkJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAq
LywKIAkJCQk3RTM5RDgxRDBFQzM4RUZBMDAzQUYxMUEgLyogYnl0ZWNvbXBpbGVyICovLAogCQkJ
CTFDOTA1MTNFMEJBOUU4ODMwMDgxRTlEMCAvKiBDb25maWd1cmF0aW9ucyAqLywKQEAgLTM1MDks
NiArMzUyMiw4IEBACiAJCTY1MEZERjhEMDlEMEZDQTcwMDc2OUU1NCAvKiBEZXJpdmVkIFNvdXJj
ZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUE3RDgw
MUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgKi8sCisJCQkJQTdEODAxQTcx
ODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggKi8sCiAJCQkJQkMxOEM1MjMwRTE2RkM4
QTAwQjM0NDYwIC8qIEFycmF5UHJvdG90eXBlLmx1dC5oICovLAogCQkJCUJDRDIwM0U3MEUxNzE4
RjQwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmx1dC5oICovLAogCQkJCUE1MTNFNUM2MTg1Rjk0
MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICovLApAQCAtMzgxMSw2ICszODI2
LDcgQEAKIAkJCQlBNzkwREQ2QTE4MkY0OTk3MDA1ODg4MDcgLyogSlNTZXRJdGVyYXRvci5oICov
LAogCQkJCUJDMDJFOUI2MEUxODQyRkEwMDBGOTI5NyAvKiBKU1N0cmluZy5jcHAgKi8sCiAJCQkJ
RjY5MkE4NjIwMjU1NTk3RDAxRkY2MEY3IC8qIEpTU3RyaW5nLmggKi8sCisJCQkJQTcxREE4MEUx
ODgwREJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oICovLAogCQkJCTg2RTg1NTM4MTEx
Qjk5NjgwMDFBRjUxRSAvKiBKU1N0cmluZ0J1aWxkZXIuaCAqLywKIAkJCQkyNjAwQjVBNDE1MkJB
QUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuY3BwICovLAogCQkJCTI2MDBCNUE1MTUyQkFB
QTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5oICovLApAQCAtNDU2MSw2ICs0NTc3LDE2IEBA
CiAJCQlwYXRoID0gcmVtb3RlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJ
QTdEODAxOUYxODgwRDY2RTAwMjZDMzlCIC8qIGJ1aWx0aW5zICovID0geworCQkJaXNhID0gUEJY
R3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlBN0Q4MDFBMDE4ODBENjZFMDAyNkMzOUIgLyog
QXJyYXkucHJvdG90eXBlLmpzICovLAorCQkJCUE3RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBC
dWlsdGluRXhlY3V0YWJsZXMuY3BwICovLAorCQkJCUE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAv
KiBCdWlsdGluRXhlY3V0YWJsZXMuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gYnVpbHRpbnM7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24g
Ki8KIAogLyogQmVnaW4gUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtNDYwNiwx
MSArNDYzMiwxMSBAQAogCQkJCTg2QUREMTQ1MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2Vt
Ymxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVDRUVFMTUxODdGM0JBRDAwRTU1Qzk5IC8qIElu
c3BlY3RvckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUMwMjg1RDE3MTc5NjY4MDAzNTFF
MzUgLyogQVJNdjdET3Bjb2RlLmggaW4gSGVhZGVycyAqLywKLSAJCQkJMkE2ODI5NUIxODc1Rjgw
NTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovLAotICAgICAgICAg
ICAgICAgIDJBNEVDOTBDMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTJBNjgyOTVCMTg3NUY4MDUwMEI2QzNFMiAvKiBDb3B5V3JpdGVC
YXJyaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkyQTRFQzkwQzE4NjBENkMyMDA5NEY3ODIgLyog
V3JpdGVCYXJyaWVyQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTU5MzJBODE4M0M1QTI2
MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTMyNDM5MzE4
NTY5NzA5MDAyRUQ2OTIgLyogQ29kZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3MucHkgaW4gSGVh
ZGVycyAqLywKLSAJCQkJQTUzMjQzOTIxODU2OTcwOTAwMkVENjkyIC8qIENvZGVHZW5lcmF0b3JJ
bnNwZWN0b3IucHkgaW4gSGVhZGVycyAqLywKKwkJCQlBNTMyNDM5MjE4NTY5NzA5MDAyRUQ2OTIg
LyogQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTRG
MTdFRTI3NDkwMEFCQjIxNyAvKiBUZW1wUmVnaXN0ZXJTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE1MEU0QjY0MTg4MDlERDUwMDY4QTQ2RCAvKiBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkVCNThDMTUxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFu
ZGxpbmdTY29wZS5oIGluIEhlYWRlcnMgKi8sCkBAIC00NjIyLDcgKzQ2NDgsNyBAQAogCQkJCTBG
ODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTg0MEUyOTE4N0NBNUU2MDA4NDNCMTAgLyogaW5saW5lLWFuZC1taW5p
Znktc3R5bGVzaGVldHMtYW5kLXNjcmlwdHMucHkgaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUy
QjE4N0NBNzVCMDA4NDNCMTAgLyoganNtaW4ucHkgaW4gSGVhZGVycyAqLywKLSAJCQkJQTUzMjQz
OTgxODU2QTQ4OTAwMkVENjkyIC8qIEluc3BlY3RvckpTLmpzb24gaW4gSGVhZGVycyAqLywKKwkJ
CQlBNTMyNDM5ODE4NTZBNDg5MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlMuanNvbiBpbiBIZWFkZXJz
ICovLAogCQkJCUE1ODQwRTJBMTg3Q0E3NTkwMDg0M0IxMCAvKiB4eGQucGwgaW4gSGVhZGVycyAq
LywKIAkJCQlGRUEwODYyMDE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTdBOEFGMzUxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTQ3MzMsNyArNDc1OSw3IEBACiAJCQkJQTFBMDA5QzAxODMxQTIyRDAw
Q0Y4NzExIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUM5
REM1MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY0ODUzMjgxODdERkRFQzAwODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5Lmgg
aW4gSGVhZGVycyAqLywKLSAgICAgICAgICAgICAgICBBNTkzQ0Y4NzE4NDAzOENBMDBCRkNFMjcg
LyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU5M0NGODcx
ODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMjU2QzM2MTYyN0IwQUQwMDdGMjc4MyAvKiBERkdDYWxsQXJyYXlBbGxvY2F0b3JT
bG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5NEIxNEMzQ0QyRjAw
N0MzREIxIC8qIERGR0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NTgx
NEVGOTBBMjAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTQ4NzIs
NiArNDg5OCw3IEBACiAJCQkJMEZFQTBBMUQxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0
SGVhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMUYxNzA4QjAwNzAwQkI3MjJDIC8qIEZU
TEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1OTQ1NTkzMTgy
NDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCUE3RDgwMUE5MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZFQTBBMEExNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0ODUzMkExODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292
ZXJ5T3Bjb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEEyMzE3MDk2MDY5MDBCQjcyMkMg
LyogRlRMQ29tbW9uVmFsdWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTQ5NDYsNiArNDk3Myw3IEBA
CiAJCQkJQkMxOEM0MEYwRTE2RjVDRDAwQjM0NDYwIC8qIElkZW50aWZpZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUMyNUY4QkNFMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk5MTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGlu
Z0hlYWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdEODAxQTUxODgwRDY2RTAwMjZDMzlCIC8q
IEJ1aWx0aW5FeGVjdXRhYmxlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOUExNUVEOEU0
NjAwRjE2N0IyIC8qIEluZGV4aW5nSGVhZGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZCN0YzOUIxNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nVHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZDRUZBQjAxODA1Q0E2RDAwNDcyQ0U0IC8qIEluaXRpYWxpemVMTFZNLmggaW4gSGVh
ZGVycyAqLywKQEAgLTUyMTgsNiArNTI0Niw3IEBACiAJCQkJQTUzMjQzODgxODU2ODMzNTAwMkVE
NjkyIC8qIEluc3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzE4QzQ1NjBFMTZGNUNEMDBCMzQ0NjAgLyogUHJvdGVjdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTQ3NEMzM0IxNkFBMkQ5NTAwNjJGMDFEIC8qIFByb3RvdHlwZU1hcC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQTcxREE4MEYxODgwREJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQxNENBN0REOTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0
dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXRE
aXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDMDA4Q0U3MTg3NjMxQjYwMDk1
NUMyNCAvKiBNaWNyb3Rhc2suaCBpbiBIZWFkZXJzICovLApAQCAtNTgzNiw2ICs1ODY1LDcgQEAK
IAkJCQlBN0Q4OUNGMjE3QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBNzBCMDgzMjE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNo
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDg5Q0YzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdC
bG9ja0luc2VydGlvblNldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBN0Q4MDFBNDE4ODBENjZF
MDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2
RUM5REM0MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkQ4MkUyMTE0MTcyQ0UzMDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0aWVzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGRkZDOTU3MTRFRjkwQTAwMEM3MjUzMiAvKiBERkdDRkFQ
aGFzZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU4NTIsNiArNTg4Miw3IEBACiAJCQkJMEZGRkM5
NTkxNEVGOTBBNjAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMkZDNzcyMTZFMTJGNzEwMDM4RDk3NiAvKiBERkdEQ0VQaGFzZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjhGMkI5OTE3MkYwNEZGMDA3REJEQTUgLyogREZHRGVzaXJlZElkZW50aWZpZXJz
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3RDgwMUE4MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NC
dWlsdGlucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzNFMTMzMDE3OTYyNENEMDBFNERFQTgg
LyogREZHRGVzaXJlZFN0cnVjdHVyZUNoYWlucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkMw
RjdDRDE3QkJGQzVCMDA0NjRGRTQgLyogREZHRGVzaXJlZFRyYW5zaXRpb25zLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRTg1MzRCMTcyM0NEQTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hw
b2ludHMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01OTc2LDcgKzYwMDcsNyBAQAogCQkJCTBGNkIx
Q0M1MTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExVbndpbmRJbmZvLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGOUQzMzlBMTgwM0FEQjcwMDczQzJCQyAvKiBGVExTdGFja01hcHMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZFQTBBMTYxNzA2QkI5MDAwQkI3MjJDIC8qIEZUTFN0YXRlLmNwcCBpbiBT
b3VyY2VzICovLAotIAkJCQk3QzAwOENEMjE4NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9taXNlRnVu
Y3Rpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDMDA4Q0QyMTg2RjhBOTMwMDk1NUMyNCAv
KiBKU1Byb21pc2VGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2QjFDQjUxODVG
QzlFOTAwODQ1RDk3IC8qIEZUTEpTQ2FsbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJF
MTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1
OTNDRjdDMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTGlua0J1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtC
dWZmZXIuY3BwCmluZGV4IGFmMTRlMzNlYWMwNTk3ZjJkNzhjNGIzY2QxNjM1NDExZGFiYTk2NWUu
LjY3OTIzZjA4MjNjMmZiYWIzMTEyOGFkYjUxOWRjODllYTAyYjY1MGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcApAQCAtMzAsNiArMzAsNyBA
QAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgorI2luY2x1
ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUg
IlZNLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBpbGF0aW9uVGhyZWFkLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
ZWI0MmY1Y2M0MzNmMTYzNjM0M2JmYzk4MmFhMmFhZmIzMzZlOTQ5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcwpAQCAt
MCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworZnVuY3Rpb24gZXZlcnkoY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pIHsKKyAgICAidXNlIHN0
cmljdCI7CisgICAgaWYgKHRoaXMgPT09IG51bGwpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVy
cm9yKCJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51
bGwiKTsKKyAgICAKKyAgICBpZiAodGhpcyA9PT0gdW5kZWZpbmVkKQorICAgICAgICB0aHJvdyBu
ZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8
IG5vdCBiZSB1bmRlZmluZWQiKTsKKyAgICAKKyAgICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMp
OworICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGggPj4+IDA7CisgICAgCisgICAgaWYgKHR5
cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJy
b3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsK
KworICAgIHZhciB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0g
OiB1bmRlZmluZWQ7CisgICAgCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykg
eworICAgICAgICBpZiAoIShpIGluIGFycmF5KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBpZiAoIWNhbGxiYWNrLkBjYWxsKHRoaXNBcmcsIGFycmF5W2ldLCBpLCBhcnJheSkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHJldHVybiB0cnVlOwor
fQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0MWRiYjVmOTIyNWUyOGExMmVkM2QxNzk4ZmYxNzY4
ZTQzNjcxYTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgi
CisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVz
LmgiCisjaW5jbHVkZSAiUGFyc2VyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitCdWlsdGluRXhl
Y3V0YWJsZXM6OkJ1aWx0aW5FeGVjdXRhYmxlcyhWTSYgdm0pCisgICAgOiBtX3ZtKHZtKQorI2Rl
ZmluZSBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1l
LCBsZW5ndGgpICwgbV8jI25hbWUjI1NvdXJjZShtYWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0
ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgpLCBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0
ZXJhbCgiPGJ1aWx0aW4+IikpKQorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4oSU5JVElBTElaRV9C
VUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX1NUUklOR1MKK3sK
K30KKworVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3Jl
YXRlQnVpbHRpbkV4ZWN1dGFibGUoY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lKQoreworICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmU7CisgICAgUGFyc2VyRXJyb3IgZXJyb3I7CisgICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBw
cm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KCZtX3ZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIo
KSwgSlNQYXJzZUJ1aWx0aW4sIEpTUGFyc2VQcm9ncmFtQ29kZSwgZXJyb3IsICZwb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lKTsKKworICAgIGlmICghcHJvZ3JhbSkgeworICAgICAgICBkYXRhTG9n
KCJGYXRhbCBlcnJvciBjb21waWxpbmcgYnVpbHRpbiBmdW5jdGlvbiAnIiwgbmFtZS5zdHJpbmco
KSwgIic6ICIsIGVycm9yLm1fbWVzc2FnZSk7CisgICAgICAgIENSQVNIKCk7CisgICAgfQorCisg
ICAgU3RhdGVtZW50Tm9kZSogZXhwclN0YXRlbWVudCA9IHByb2dyYW0tPnNpbmdsZVN0YXRlbWVu
dCgpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQpOworICAgIFJFTEVBU0VfQVNT
RVJUKGV4cHJTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKKyAgICBFeHByZXNzaW9uTm9k
ZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVtZW50Tm9kZSo+KGV4cHJTdGF0ZW1l
bnQpLT5leHByKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHIpOworICAgIFJFTEVBU0Vf
QVNTRVJUKGZ1bmNFeHByLT5pc0Z1bmNFeHByTm9kZSgpKTsKKyAgICBGdW5jdGlvbkJvZHlOb2Rl
KiBib2R5ID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZnVuY0V4cHIpLT5ib2R5KCk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoIXByb2dyYW0tPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpOworICAg
IAorICAgIGJvZHktPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKGJvZHkpOworICAgIFJFTEVBU0VfQVNTRVJUKGJvZHktPmlkZW50
KCkuaXNOdWxsKCkpOworICAgIAorICAgIC8vIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBhbiBpbnB1
dCBzdHJpbmcgdGhhdCB3b3VsZCByZXN1bHQgaW4gYSBzaW5nbGUgYW5vbnltb3VzIGZ1bmN0aW9u
IGV4cHJlc3Npb24uCisgICAgYm9keS0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keSk7CisgICAgZm9yIChjb25zdCBhdXRv
JiBjbG9zZWRWYXJpYWJsZSA6IHByb2dyYW0tPmNsb3NlZFZhcmlhYmxlcygpKSB7CisgICAgICAg
IGlmIChjbG9zZWRWYXJpYWJsZSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cy5pbXBs
KCkpCisgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgaWYgKGNsb3NlZFZhcmlh
YmxlID09IG1fdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZC5pbXBsKCkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2xvc2VkVmFyaWFibGUt
PmlzRW1wdHlVbmlxdWUoKSk7CisgICAgfQorICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRl
KCZtX3ZtLCBzb3VyY2UsIGJvZHksIHRydWUsIFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uKTsKKyAg
ICBmdW5jdGlvbkV4ZWN1dGFibGUtPm1fbmFtZVZhbHVlLnNldChtX3ZtLCBmdW5jdGlvbkV4ZWN1
dGFibGUsIGpzU3RyaW5nKCZtX3ZtLCBuYW1lLnN0cmluZygpKSk7CisgICAgcmV0dXJuIGZ1bmN0
aW9uRXhlY3V0YWJsZTsKK30KKworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUyhu
YW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IEJ1aWx0aW5FeGVjdXRhYmxlczo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK3tcCisgICAgaWYgKCFt
XyMjbmFtZSMjRXhlY3V0YWJsZSlcCisgICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gY3Jl
YXRlQnVpbHRpbkV4ZWN1dGFibGUobV8jI25hbWUjI1NvdXJjZSwgbV92bS5wcm9wZXJ0eU5hbWVz
LT5mdW5jdGlvbk5hbWUpO1wKKyAgICByZXR1cm4gbV8jI25hbWUjI0V4ZWN1dGFibGUuZ2V0KCk7
XAorfQorSlNDX0ZPUkVBQ0hfQlVJTFRJTihERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1
bmRlZiBFWFBPU0VfQlVJTFRJTl9TT1VSQ0VTCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOWExOWUy
NjE1MDc5NGE2NjllYzk4ZTM5OWJmNjdmN2Y3MTA2NDE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCkBAIC0wLDAg
KzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEJ1aWx0aW5FeGVjdXRhYmxlc19oCisjZGVmaW5lIEJ1aWx0aW5FeGVjdXRhYmxlc19o
CisKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgorI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKKyNp
bmNsdWRlICJXZWFrLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgSWRlbnRp
ZmllcjsKK2NsYXNzIFZNOworCitjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXMgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEJ1aWx0aW5FeGVjdXRhYmxlcz4gY3JlYXRlKFZNJiB2bSkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQnVpbHRpbkV4ZWN1dGFibGVzKHZt
KSk7CisgICAgfQorICAgIAorI2RlZmluZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1l
LCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5h
bWUjI0V4ZWN1dGFibGUoKTsgXAorY29uc3QgU291cmNlQ29kZSYgbmFtZSMjU291cmNlKCkgeyBy
ZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsgfQorICAgIAorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4o
RVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgRVhQT1NFX0JVSUxUSU5fU09VUkNF
UworICAgIAorcHJpdmF0ZToKKyAgICBCdWlsdGluRXhlY3V0YWJsZXMoVk0mKTsKKyAgICBWTSYg
bV92bTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1
dGFibGUoY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImKTsKKyNkZWZpbmUgREVD
TEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKVwK
KyAgICBTb3VyY2VDb2RlIG1fIyNuYW1lIyNTb3VyY2U7IFwKKyAgICBXZWFrPFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlPiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKKyAgICBKU0NfRk9SRUFDSF9C
VUlMVElOKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JV
SUxUSU5fU09VUkNFX01FTUJFUlMKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCmluZGV4IDRjMDU1ZmVhNTczOGYx
YzQ2MzI2NmQ0ZTlhOTE1NDhhMTI5MzQ3MDkuLmVhZWZlNTRmMmQxNTI4NGI2NGJmNjk5NzI2NThj
ZDFjNjNiNGVhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
cnJheVByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eVByb2ZpbGUuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQXJyYXlQcm9maWxlLmgi
CiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5o
IgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0
cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCmluZGV4
IGQ3NDg5ZDMxYWJkN2M5OWYxYmM2ZmFmYWU2NTgxMTEyYWJkYWNmZGIuLjFhM2I1ZjRjNzgwN2I5
NDg4ZmYzNjU3MmY3OTRkMGJiOWYzOGQyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC0yNyw2ICsyNyw3IEBA
CiAjaW5jbHVkZSAiQnl0ZWNvZGVCYXNpY0Jsb2NrLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2su
aCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1w
VGFyZ2V0cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKaW5kZXgg
OTI2MzM0YzQ0NGM5YzJmM2RmY2M5NTAxMmNkMGE0YTAzMTA0ZDJkOS4uYWQ0YWUyMjk1ZWFjNDhh
YTQwYWZiZWUzZWI2OTI4OTZmY2NhYmQyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgogI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgogI2luY2x1ZGUgIkZ1bGxCeXRlY29kZUxpdmVuZXNzLmgiCisjaW5jbHVkZSAiSlNG
dW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKIAogbmFt
ZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlu
a0luZm8uY3BwCmluZGV4IDZhNjAwNTc2YTAwMGFkYWM4YWYyMTRlOTg4MTM2NDYxOWYyOWEwMTAu
LjRiZjgxODg2NjAyOGM3OTZhNzJlNTc4MzMyZTQ2Nzc1NTZiMjM3YTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpbmNsdWRlICJERkdPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiREZHVGh1bmtzLmgi
CisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJSZXBhdGNoQnVmZmVy
LmgiCiAKICNpZiBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAppbmRleCAyNjNlYzdjYWRmNGY3OWNhODEwMjQ0MWU2MmJmMmEwNWI1ZGRj
M2YyLi43NTE1MDY1NDIzNzZkN2VkYzU5OWFhMDBmOWIxMjY4NWNkYTM1MmNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNDMsMTEgKzQzLDEz
IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJK
U0FjdGl2YXRpb24uaCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNOYW1l
U2NvcGUuaCIKICNpbmNsdWRlICJMTEludEVudHJ5cG9pbnQuaCIKICNpbmNsdWRlICJMb3dMZXZl
bEludGVycHJldGVyLmgiCisjaW5jbHVkZSAiTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIgorI2lu
Y2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2lu
Y2x1ZGUgIlBvbHltb3JwaGljUHV0QnlJZExpc3QuaCIKICNpbmNsdWRlICJSZWR1Y2VXaGl0ZXNw
YWNlLmgiCkBAIC0xNTY5LDcgKzE1NzEsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRF
eGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbgogCiAg
ICAgc2V0Q29uc3RhbnRSZWdpc3RlcnModW5saW5rZWRDb2RlQmxvY2stPmNvbnN0YW50UmVnaXN0
ZXJzKCkpOwogICAgIGlmICh1bmxpbmtlZENvZGVCbG9jay0+dXNlc0dsb2JhbE9iamVjdCgpKQot
ICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW3VubGlua2VkQ29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3RSZWdpc3RlcigpLm9mZnNldCgpXS5zZXQoKm1fdm0sIG93bmVyRXhlY3V0YWJsZSwgbV9nbG9i
YWxPYmplY3QuZ2V0KCkpOworICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW3VubGlua2VkQ29k
ZUJsb2NrLT5nbG9iYWxPYmplY3RSZWdpc3RlcigpLnRvQ29uc3RhbnRJbmRleCgpXS5zZXQoKm1f
dm0sIG93bmVyRXhlY3V0YWJsZSwgbV9nbG9iYWxPYmplY3QuZ2V0KCkpOwogICAgIG1fZnVuY3Rp
b25EZWNscy5yZXNpemVUb0ZpdCh1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRl
Y2xzKCkpOwogICAgIGZvciAoc2l6ZV90IGNvdW50ID0gdW5saW5rZWRDb2RlQmxvY2stPm51bWJl
ck9mRnVuY3Rpb25EZWNscygpLCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSA9IHVubGlua2VkQ29k
ZUJsb2NrLT5mdW5jdGlvbkRlY2woaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgKaW5kZXggNjhiYzAzNzlmNTc0NGM5YThmNzQzMWRiNjRmOGFiNTRlNmUxMDUz
Zi4uNDk5NWM1MmNmOGIyYjFiNGQ2MjgwNDUzZWVkMjdjNzc0YTQ5NTU4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtNTYsNyArNTYsNiBAQAogI2lu
Y2x1ZGUgIkhhbmRsZXJJbmZvLmgiCiAjaW5jbHVkZSAiT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUu
aCIKICNpbmNsdWRlICJPcHRpb25zLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1
ZGUgIlB1dFByb3BlcnR5U2xvdC5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVk
ZSAiSklUQ29kZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcAppbmRleCBiZTUw
Yzk3NzhiZjMzZTMzOWFjODM0YmY1NmUzYjFlNzU1ODZmZTNlLi5iNzY0NmVkMWVmMTY0MTg5ZmNm
YzdiNTM2NTZmYjY1YmVkMDY0ZDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNw
cApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAi
REZHQ29tbW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
T3JpZ2luLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmNw
cAppbmRleCA2OGRjNmIwNTMzNTU5MGVjNGM4MWM0MjM0NmJiNzRkYmJkOGZhYzU2Li4xNTc4ODA4
OTM0ZGQzY2M0Y2Q5N2QyNzFhZThhYzhiZmUzOTc0NmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRXhlY3V0
YWJsZS5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0
aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNv
bmluZ1dhdGNocG9pbnQuY3BwCmluZGV4IDk4NmUwM2QwY2JhNzE4NWIzOWNlZTAyM2Y0YWI2YmM5
YjhjY2I2ZTQuLjZmMmQ1ZWJhMWNhNDVkZGViMWRmNjVmZDA1MTIzM2U1ZjEzOGJlMGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pl
dHRpc29uaW5nV2F0Y2hwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcApAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgog
I2luY2x1ZGUgIkRGR0V4aXRQcm9maWxlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDFkZmI1YWM2YWQ5MDkzZjhmODEx
MDFlZjdmMmU2MTIzMTFhYzE5MzkuLjQzMzkwZDk2NWZjNTAzNDAxNmY3YmZmZjIzZTY4YmIxZTA1
NDU1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmNwcApAQCAtNDksOSArNDksOSBAQCBjb25zdCBDbGFzc0luZm8gVW5saW5r
ZWRQcm9ncmFtQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2si
LAogY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkRXZhbENvZGVCbG9jazo6c19pbmZvID0geyAiVW5s
aW5rZWRFdmFsQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShVbmxpbmtlZEV2YWxDb2RlQmxvY2spIH07CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayIs
ICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jaykgfTsKIAotc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVy
YXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxl
ck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikKK3N0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKiBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKFZNJiB2bSwgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1v
ZGUgcHJvZmlsZXJNb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBmdW5jdGlvbktpbmQsIFBhcnNl
ckVycm9yJiBlcnJvcikKIHsKLSAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSA9IHBh
cnNlPEZ1bmN0aW9uQm9keU5vZGU+KCZ2bSwgc291cmNlLCBleGVjdXRhYmxlLT5wYXJhbWV0ZXJz
KCksIGV4ZWN1dGFibGUtPm5hbWUoKSwgZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/
IEpTUGFyc2VTdHJpY3QgOiBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlRnVuY3Rpb25Db2RlLCBlcnJv
cik7CisgICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGJvZHkgPSBwYXJzZTxGdW5jdGlvbkJv
ZHlOb2RlPigmdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+cGFyYW1ldGVycygpLCBleGVjdXRhYmxl
LT5uYW1lKCksIGV4ZWN1dGFibGUtPnRvU3RyaWN0bmVzcygpLCBKU1BhcnNlRnVuY3Rpb25Db2Rl
LCBlcnJvcik7CiAKICAgICBpZiAoIWJvZHkpIHsKICAgICAgICAgQVNTRVJUKGVycm9yLm1fdHlw
ZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZt
LCBVbmxpbmtlZEZ1bmMKICAgICBib2R5LT5maW5pc2hQYXJzaW5nKGV4ZWN1dGFibGUtPnBhcmFt
ZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT5mdW5jdGlvbk5hbWVJc0lu
U2NvcGVUb2dnbGUoKSk7CiAgICAgZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2UoYm9keS0+ZmVhdHVy
ZXMoKSwgYm9keS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCi0gICAgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3Jl
YXRlKCZ2bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5mbyhib2R5LT5uZWVkc0FjdGl2YXRp
b24oKSwgYm9keS0+dXNlc0V2YWwoKSwgYm9keS0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29k
ZUZvckNvbnN0cnVjdCkpOworICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmdm0sIEZ1bmN0aW9uQ29kZSwgRXhl
Y3V0YWJsZUluZm8oYm9keS0+bmVlZHNBY3RpdmF0aW9uKCksIGJvZHktPnVzZXNFdmFsKCksIGJv
ZHktPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2lu
ZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbikpOwogICAgIE93blB0cjxCeXRlY29kZUdlbmVy
YXRvcj4gZ2VuZXJhdG9yKGFkb3B0UHRyKG5ldyBCeXRlY29kZUdlbmVyYXRvcih2bSwgYm9keS5n
ZXQoKSwgcmVzdWx0LCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSkpKTsKICAgICBlcnJvciA9
IGdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKICAgICBib2R5LT5kZXN0cm95RGF0YSgpOwpAQCAtODIs
MTMgKzgyLDE0IEBAIHVuc2lnbmVkIFVubGlua2VkQ29kZUJsb2NrOjphZGRPckZpbmRDb25zdGFu
dChKU1ZhbHVlIHYpCiAgICAgcmV0dXJuIGFkZENvbnN0YW50KHYpOwogfQogCi1VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlO
b2RlKiBub2RlLCBib29sIGlzRnJvbUdsb2JhbENvZGUpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlLCBi
b29sIGlzRnJvbUdsb2JhbENvZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQpCiAgICAgOiBC
YXNlKCp2bSwgc3RydWN0dXJlKQogICAgICwgbV9udW1DYXB0dXJlZFZhcmlhYmxlcyhub2RlLT5j
YXB0dXJlZFZhcmlhYmxlQ291bnQoKSkKICAgICAsIG1fZm9yY2VVc2VzQXJndW1lbnRzKG5vZGUt
PnVzZXNBcmd1bWVudHMoKSkKICAgICAsIG1faXNJblN0cmljdENvbnRleHQobm9kZS0+aXNTdHJp
Y3RNb2RlKCkpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKG5vZGUtPmhhc0NhcHR1cmVk
VmFyaWFibGVzKCkpCiAgICAgLCBtX2lzRnJvbUdsb2JhbENvZGUoaXNGcm9tR2xvYmFsQ29kZSkK
KyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oa2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlv
bikKICAgICAsIG1fbmFtZShub2RlLT5pZGVudCgpKQogICAgICwgbV9pbmZlcnJlZE5hbWUobm9k
ZS0+aW5mZXJyZWROYW1lKCkpCiAgICAgLCBtX3BhcmFtZXRlcnMobm9kZS0+cGFyYW1ldGVycygp
KQpAQCAtMTY2LDcgKzE2Nyw3IEBAIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tGb3IoVk0mIHZtLCBjb25zCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIAotICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IGdl
bmVyYXRlRnVuY3Rpb25Db2RlQmxvY2sodm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lhbGl6YXRpb25L
aW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IpOworICAgIFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2sodm0sIHRo
aXMsIHNvdXJjZSwgc3BlY2lhbGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9k
ZSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5r
ZWROb3JtYWxGdW5jdGlvbiwgZXJyb3IpOwogICAgIAogICAgIGlmIChlcnJvci5tX3R5cGUgIT0g
UGFyc2VyRXJyb3I6OkVycm9yTm9uZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMTAsNiArMjEx
LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1faXNTdHJpY3RNb2RlKGluZm8u
bV9pc1N0cmljdE1vZGUpCiAgICAgLCBtX2lzQ29uc3RydWN0b3IoaW5mby5tX2lzQ29uc3RydWN0
b3IpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGZhbHNlKQorICAgICwgbV9pc0J1aWx0
aW5GdW5jdGlvbihpbmZvLm1faXNCdWlsdGluRnVuY3Rpb24pCiAgICAgLCBtX2ZpcnN0TGluZSgw
KQogICAgICwgbV9saW5lQ291bnQoMCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApp
bmRleCBiOWRhZTJkNWM2OWM3OWNlYWFhODAyM2QyYTNhMWYyNmQ0NjA5NDNiLi5hYmY2Y2YzNWI5
MzA2YTRmN2EzMDFhYjBkZjc2NjZlYzYxMmUzNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtNjYsMjYgKzY2LDM1IEBA
IHR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTsKIHR5cGVk
ZWYgdW5zaWduZWQgVW5saW5rZWRMTEludENhbGxMaW5rSW5mbzsKIAogc3RydWN0IEV4ZWN1dGFi
bGVJbmZvIHsKLSAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1
c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvcikKKyAgICBFeGVj
dXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0
cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbikKICAg
ICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2YXRpb24pCiAgICAgICAgICwgbV91
c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0cmljdE1vZGUp
CiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3RydWN0b3IpCisgICAgICAgICwgbV9p
c0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikKICAgICB7CiAgICAgfQotICAgIGJv
b2wgbV9uZWVkc0FjdGl2YXRpb247Ci0gICAgYm9vbCBtX3VzZXNFdmFsOwotICAgIGJvb2wgbV9p
c1N0cmljdE1vZGU7Ci0gICAgYm9vbCBtX2lzQ29uc3RydWN0b3I7CisgICAgYm9vbCBtX25lZWRz
QWN0aXZhdGlvbiA6IDE7CisgICAgYm9vbCBtX3VzZXNFdmFsIDogMTsKKyAgICBib29sIG1faXNT
dHJpY3RNb2RlIDogMTsKKyAgICBib29sIG1faXNDb25zdHJ1Y3RvciA6IDE7CisgICAgYm9vbCBt
X2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKK307CisKK2VudW0gVW5saW5rZWRGdW5jdGlvbktpbmQg
eworICAgIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sCisgICAgVW5saW5rZWRCdWlsdGluRnVuY3Rp
b24sCiB9OwogCiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBKU0Nl
bGwgewogcHVibGljOgorICAgIGZyaWVuZCBjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXM7CiAgICAg
ZnJpZW5kIGNsYXNzIENvZGVDYWNoZTsKKyAgICBmcmllbmQgY2xhc3MgVk07CiAgICAgdHlwZWRl
ZiBKU0NlbGwgQmFzZTsKLSAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNy
ZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSog
bm9kZSwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlID0gZmFsc2UpCisgICAgc3RhdGljIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSwgVW5saW5r
ZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQpCiAgICAgewotICAgICAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhlYXApKSBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJl
LmdldCgpLCBzb3VyY2UsIG5vZGUsIGlzRnJvbUdsb2JhbENvZGUpOworICAgICAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhlYXApKSBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdl
dCgpLCBzb3VyY2UsIG5vZGUsIGlzRnJvbUdsb2JhbENvZGUsIHVubGlua2VkRnVuY3Rpb25LaW5k
KTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2bSk7CiAgICAgICAgIHJldHVy
biBpbnN0YW5jZTsKICAgICB9CkBAIC05OSw2ICsxMDgsMTQgQEAgcHVibGljOgogICAgIH0KICAg
ICBzaXplX3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdDsKICAgICBib29sIGlzSW5TdHJpY3RDb250
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQorICAgIEpTUGFyc2Vy
U3RyaWN0bmVzcyB0b1N0cmljdG5lc3MoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1faXNC
dWlsdGluRnVuY3Rpb24pCisgICAgICAgICAgICByZXR1cm4gSlNQYXJzZUJ1aWx0aW47CisgICAg
ICAgIGlmIChtX2lzSW5TdHJpY3RDb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuIEpTUGFyc2VT
dHJpY3Q7CisgICAgICAgIHJldHVybiBKU1BhcnNlTm9ybWFsOworICAgIH0KICAgICBGdW5jdGlv
bk5hbWVJc0luU2NvcGVUb2dnbGUgZnVuY3Rpb25OYW1lSXNJblNjb3BlVG9nZ2xlKCkgY29uc3Qg
eyByZXR1cm4gbV9mdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGU7IH0KIAogICAgIHVuc2lnbmVk
IGZpcnN0TGluZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RMaW5lT2Zmc2V0OyB9CkBA
IC0xNDIsOCArMTU5LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJbW1v
cnRhbFN0cnVjdHVyZSA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsK
IAorICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRp
bkZ1bmN0aW9uOyB9CisKIHByaXZhdGU6Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUo
Vk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGJv
b2wgaXNGcm9tR2xvYmFsQ29kZSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0q
LCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGJvb2wg
aXNGcm9tR2xvYmFsQ29kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQpOwogICAgIFdyaXRlQmFycmll
cjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX2NvZGVCbG9ja0ZvckNhbGw7CiAgICAgV3Jp
dGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fY29kZUJsb2NrRm9yQ29uc3Ry
dWN0OwogCkBAIC0xNTIsNiArMTcxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNJblN0cmlj
dENvbnRleHQgOiAxOwogICAgIGJvb2wgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAg
Ym9vbCBtX2lzRnJvbUdsb2JhbENvZGUgOiAxOworICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlv
biA6IDE7CiAKICAgICBJZGVudGlmaWVyIG1fbmFtZTsKICAgICBJZGVudGlmaWVyIG1faW5mZXJy
ZWROYW1lOwpAQCAtMzE5LDYgKzMzOSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzTnVtZXJp
Y0NvbXBhcmVGdW5jdGlvbihib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbikgeyBtX2lzTnVt
ZXJpY0NvbXBhcmVGdW5jdGlvbiA9IGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQogICAgIGJv
b2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc051bWVyaWND
b21wYXJlRnVuY3Rpb247IH0KIAorICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisgICAgCiAgICAgdm9pZCBzaHJpbmtUb0Zp
dCgpCiAgICAgewogICAgICAgICBtX2p1bXBUYXJnZXRzLnNocmlua1RvRml0KCk7CkBAIC01MDAs
NiArNTIyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNTdHJpY3RNb2RlIDogMTsKICAgICBi
b29sIG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAgYm9vbCBtX2hhc0NhcHR1cmVkVmFyaWFibGVz
IDogMTsKKyAgICBib29sIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1f
Zmlyc3RMaW5lOwogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50OwogICAgIHVuc2lnbmVkIG1fZW5k
Q29sdW1uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2ODEwYWI4MDAyY2U2YmI4ZDc4ZTdmZjIyMjdm
NGM2ZWE3Yjc1OGMyLi5lYzUyMWI1MzA0NjM5MjNlNzRjMDEwZmEyMThlNTllZDJhOWEzY2FlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcApAQCAtMTc1LDYgKzE3NSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5r
ZWRQCiAjZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAgICAgLCBtX2V4cHJl
c3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihmYWxzZSkKIHsK
ICAgICBpZiAobV9zaG91bGRFbWl0RGVidWdIb29rcykKICAgICAgICAgbV9jb2RlQmxvY2stPnNl
dE5lZWRzRnVsbFNjb3BlQ2hhaW4odHJ1ZSk7CkBAIC0yMjIsNyArMjIzLDEzIEBAIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uQm9keU5vZGUqIGZ1
bmN0aW9uQm9keSwgVW5sCiAjZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAg
ICAgLCBtX2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlv
bihjb2RlQmxvY2stPmlzQnVpbHRpbkZ1bmN0aW9uKCkpCiB7CisgICAgaWYgKG1faXNCdWlsdGlu
RnVuY3Rpb24pIHsKKyAgICAgICAgbV9zaG91bGRFbWl0UHJvZmlsZUhvb2tzID0gZmFsc2U7Cisg
ICAgICAgIG1fc2hvdWxkRW1pdERlYnVnSG9va3MgPSBmYWxzZTsKKyAgICB9CisKICAgICBpZiAo
bV9zaG91bGRFbWl0RGVidWdIb29rcykKICAgICAgICAgbV9jb2RlQmxvY2stPnNldE5lZWRzRnVs
bFNjb3BlQ2hhaW4odHJ1ZSk7CiAKQEAgLTQzOCw2ICs0NDUsNyBAQCBCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2Vk
RXZhbENvZAogI2VuZGlmCiAgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQogICAgICwgbV9l
eHByZXNzaW9uVG9vRGVlcChmYWxzZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oZmFsc2Up
CiB7CiAgICAgbV9jb2RlQmxvY2stPnNldE5lZWRzRnVsbFNjb3BlQ2hhaW4odHJ1ZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAppbmRleCA0ZTlmMjEzYzliZmE2Y2YxOTRiMWExNGZlOTE5ZTgzMzM3YWUzNWQ5Li4x
NTg0Mjc0Yjc4ZWE2YzBiZDBlZmIwYjk4MjVjODE4YmUwZGJjMDY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBA
IC00NjEsNyArNDYxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgc2hvdWxkRW1p
dERlYnVnSG9va3MoKSB7IHJldHVybiBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzOyB9CiAgICAgICAg
IAogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2Nr
LT5pc1N0cmljdE1vZGUoKTsgfQotCisgICAgICAgIAorICAgICAgICBib29sIGlzQnVpbHRpbkZ1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQorICAgICAgICAK
ICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTGFiZWw7CiAgICAgICAgIApAQCAt
NTQzLDcgKzU0NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG1ha2VGdW5jdGlvbihGdW5jdGlvbkJvZHlOb2RlKiBib2R5
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIGJvZHkpOworICAgICAgICAg
ICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29w
ZU5vZGUtPnNvdXJjZSgpLCBib2R5LCBmYWxzZSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlu
a2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbik7CiAgICAgICAgIH0K
IAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SW5pdExhenlSZWdpc3RlcihSZWdpc3RlcklEKik7
CkBAIC02NzcsNiArNjc5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBtX3Vz
ZXNFeGNlcHRpb25zOwogICAgICAgICBib29sIG1fZXhwcmVzc2lvblRvb0RlZXA7CisgICAgICAg
IGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlvbjsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMWZmZDRm
MzExODgyZDBlZTVjNTUxNGY1YjhiMjU5MzlkOTc1ZTM3OS4uNjJlY2EzNmExMGQ3NzA4YTkyOGQ0
M2FjMDNmMmZjODYxNWNlY2E3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjYsMTAgKzI2LDEwIEBACiAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgotI2luY2x1ZGUgIk5vZGVDb25zdHJ1
Y3RvcnMuaCIKIAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ2Fs
bEZyYW1lLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJEZWJ1
Z2dlci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTM4
LDYgKzM4LDcgQEAKICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiTGFiZWxTY29w
ZS5oIgogI2luY2x1ZGUgIkxleGVyLmgiCisjaW5jbHVkZSAiTm9kZUNvbnN0cnVjdG9ycy5oIgog
I2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRlICJQ
cm9wZXJ0eU5hbWVBcnJheS5oIgpAQCAtNTM1LDM2ICs1MzYsMzkgQEAgUmVnaXN0ZXJJRCogQ2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLAogICAgIFJlZlB0cjxMYWJlbD4gZW5kID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9iYXNlKTsK
ICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBz
dWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBE
ZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBtX2lkZW50KTsKKyAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0
aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmNhbGwp
OwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERl
c3RpbmF0aW9uKGRzdCwgZnVuY3Rpb24uZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SnVtcElm
Tm90RnVuY3Rpb25DYWxsKGZ1bmN0aW9uLmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7CisgICAgYm9v
bCBlbWl0Q2FsbENoZWNrID0gIWdlbmVyYXRvci5pc0J1aWx0aW5GdW5jdGlvbigpOworICAgIGlm
IChlbWl0Q2FsbENoZWNrKQorICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9u
Q2FsbChmdW5jdGlvbi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkpOworCiAgICAgewogICAgICAgICBp
ZiAobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKSB7CiAg
ICAgICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2Rl
OwogICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5t
X25leHQ7Ci0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJl
YWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9u
KGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1l
bnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShj
YWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwogICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0
KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0
KCkpOwotCiAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBvbGRMaXN0OwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9
IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2Uu
Z2V0KCkpOwogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRv
ciwgbV9hcmdzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRz
LnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVk
RnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKICAgICAgICAg
fQogICAgIH0KLSAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKLSAgICB7
Ci0gICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7
Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBiYXNlLmdldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdl
dCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBk
aXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIGlmIChlbWl0Q2FsbENoZWNr
KSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKKyAgICAgICAgeworICAgICAgICAgICAg
Q2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNl
LmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQo
KSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgfQorICAgICAgICBnZW5l
cmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFi
ZWwoZW5kLmdldCgpKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWUuZ2V0KCk7CiB9CiAKQEAgLTU4
NSw2NSArNTg5LDY3IEBAIFJlZ2lzdGVySUQqIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgUmVmUHRyPExhYmVs
PiBlbmQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFz
ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVz
c2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Npb25TdGFydCgpLCBzdWJl
eHByZXNzaW9uRW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbiA9IGdlbmVy
YXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0
KCksIG1faWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbjsKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihk
c3QsIGZ1bmN0aW9uLmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9u
QXBwbHkoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKLSAgICB7Ci0gICAgICAgIGlm
IChtYXlCZUNhbGwpIHsKLSAgICAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9h
cmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpIHsKLSAgICAgICAgICAgICAgICBBcmd1bWVudExpc3RO
b2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2RlOwotICAgICAgICAgICAgICAgIGlmICht
X2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCkgewotICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
bV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwci0+aXNTaW1wbGVBcnJheSgpKTsKLSAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9u
ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gc3RhdGljX2Nh
c3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwciktPnRvQXJn
dW1lbnRMaXN0KGdlbmVyYXRvci52bSgpLCAwLCAwKTsKLSAgICAgICAgICAgICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0
b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAgICAgICAgICAg
ICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0
ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRG
dW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBtX2FyZ3Mt
Pm1fbGlzdE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKLSAgICAgICAgICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92
ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAg
ICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3Mp
OwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50
aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5v
RXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbV9hcmdzLT5t
X2xpc3ROb2RlID0gb2xkTGlzdDsKKyAgICBib29sIGVtaXRDYWxsQ2hlY2sgPSAhZ2VuZXJhdG9y
LmlzQnVpbHRpbkZ1bmN0aW9uKCk7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKKyAgICAgICAg
ZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlv
bihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmFwcGx5KTsKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KGZ1bmN0aW9uLmdldCgp
LCByZWFsQ2FsbC5nZXQoKSk7CisgICAgfQorICAgIGlmIChtYXlCZUNhbGwpIHsKKyAgICAgICAg
aWYgKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcikgewor
ICAgICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogb2xkTGlzdCA9IG1fYXJncy0+bV9saXN0Tm9k
ZTsKKyAgICAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCkgeworICAgICAg
ICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByLT5pc1Np
bXBsZUFycmF5KCkpOworICAgICAgICAgICAgICAgIEFTU0VSVCghbV9hcmdzLT5tX2xpc3ROb2Rl
LT5tX25leHQtPm1fbmV4dCk7CisgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0g
c3RhdGljX2Nhc3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhw
ciktPnRvQXJndW1lbnRMaXN0KGdlbmVyYXRvci52bSgpLCAwLCAwKTsKKyAgICAgICAgICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdl
bmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CisgICAgICAgICAgICAg
ICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIo
KSwgb2xkTGlzdC0+bV9leHByKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwo
cmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9u
LCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBt
X2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVz
dGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50
cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAgICAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQo
KSk7CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhp
c1JlZ2lzdGVyKCksIG9sZExpc3QtPm1fZXhwcik7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0
ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9s
ZExpc3Q7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9hcmdzLT5tX2xp
c3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KTsKLSAgICAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBwcm9maWxlSG9va1JlZ2lzdGVyOwotICAgICAgICAgICAgaWYgKGdlbmVy
YXRvci5zaG91bGRFbWl0UHJvZmlsZUhvb2tzKCkpCi0gICAgICAgICAgICAgICAgcHJvZmlsZUhv
b2tSZWdpc3RlciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9y
LnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKLSAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiB0aGlzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9hcmdzLT5tX2xp
c3ROb2RlLT5tX2V4cHIpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFyZ3NSZWdp
c3RlcjsKLSAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MgPSBtX2FyZ3MtPm1fbGlz
dE5vZGUtPm1fbmV4dDsKLSAgICAgICAgICAgIGlmIChhcmdzLT5tX2V4cHItPmlzUmVzb2x2ZU5v
ZGUoKSAmJiBnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50cyhzdGF0aWNfY2FzdDxSZXNv
bHZlTm9kZSo+KGFyZ3MtPm1fZXhwciktPmlkZW50aWZpZXIoKSkpCi0gICAgICAgICAgICAgICAg
YXJnc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLnVuY2hlY2tlZFJlZ2lzdGVyRm9yQXJndW1lbnRzKCk7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJh
dG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7Ci0KLSAgICAgICAgICAgIC8vIEZ1bmN0aW9uLnBy
b3RvdHlwZS5hcHBseSBpZ25vcmVzIGV4dHJhIGFyZ3VtZW50cywgYnV0IHdlIHN0aWxsCi0gICAg
ICAgICAgICAvLyBuZWVkIHRvIGV2YWx1YXRlIHRoZW0gZm9yIHNpZGUgZWZmZWN0cy4KLSAgICAg
ICAgICAgIHdoaWxlICgoYXJncyA9IGFyZ3MtPm1fbmV4dCkpCi0gICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7Ci0KLSAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0Q2FsbFZhcmFyZ3MocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgdGhp
c1JlZ2lzdGVyLmdldCgpLCBhcmdzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKSwgcHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5l
cmF0b3IsIG1fYXJncyk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3Vt
ZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwogICAgICAgICB9Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9h
cmdzLT5tX2xpc3ROb2RlLT5tX25leHQpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJv
ZmlsZUhvb2tSZWdpc3RlcjsKKyAgICAgICAgaWYgKGdlbmVyYXRvci5zaG91bGRFbWl0UHJvZmls
ZUhvb2tzKCkpCisgICAgICAgICAgICBwcm9maWxlSG9va1JlZ2lzdGVyID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0g
Z2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5n
ZXQoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzUmVnaXN0ZXIgPSBnZW5lcmF0
b3IuZW1pdE5vZGUobV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpOworICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gYXJnc1JlZ2lzdGVyOworICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBhcmdz
ID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQ7CisgICAgICAgIGlmIChhcmdzLT5tX2V4cHIt
PmlzUmVzb2x2ZU5vZGUoKSAmJiBnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50cyhzdGF0
aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGFyZ3MtPm1fZXhwciktPmlkZW50aWZpZXIoKSkpCisgICAg
ICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IudW5jaGVja2VkUmVnaXN0ZXJGb3JBcmd1
bWVudHMoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJh
dG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7CisKKyAgICAgICAgLy8gRnVuY3Rpb24ucHJvdG90
eXBlLmFwcGx5IGlnbm9yZXMgZXh0cmEgYXJndW1lbnRzLCBidXQgd2Ugc3RpbGwKKyAgICAgICAg
Ly8gbmVlZCB0byBldmFsdWF0ZSB0aGVtIGZvciBzaWRlIGVmZmVjdHMuCisgICAgICAgIHdoaWxl
ICgoYXJncyA9IGFyZ3MtPm1fbmV4dCkpCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUo
YXJncy0+bV9leHByKTsKKworICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxWYXJhcmdzKHJldHVy
blZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJn
c1JlZ2lzdGVyLmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb2ZpbGVIb29rUmVn
aXN0ZXIuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgfQot
ICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOwotICAgIHsKKyAgICBpZiAo
ZW1pdENhbGxDaGVjaykgeworICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChyZWFsQ2FsbC5nZXQoKSk7CiAgICAgICAgIENh
bGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgIGdl
bmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgp
KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlv
bi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5n
ZXQoKSk7CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICBy
ZXR1cm4gcmV0dXJuVmFsdWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVf
aGFzaF90YWJsZQppbmRleCAzOTc5NzZiMDZjN2E5YjU4MzYzMzI5MDBhNmViYjkzZWM2OGI3NDg2
Li5jYWQ2NWJjNGNjODg4ZTMxNGY4OGQ2NjVkZDRhNmU2NDVhMDlhMzU1IDEwMDc1NQotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlCkBAIC0yODksNyArMjg5LDE3IEBAIHN1YiBvdXRw
dXQoKSB7CiAgICAgICAgICAgICAkaW50cmluc2ljID0gIlJlZ0V4cFRlc3RJbnRyaW5zaWMiIGlm
ICgka2V5IGVxICJ0ZXN0Iik7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoJHZhbHVlc1skaV17
InR5cGUifSBlcSAiRnVuY3Rpb24iKSAgeworICAgICAgICAgICAgbXkgJHRhYmxlSGVhZCA9ICRu
YW1lOworICAgICAgICAgICAgJHRhYmxlSGVhZCA9fiBzL1RhYmxlJC8vOworICAgICAgICAgICAg
cHJpbnQgIiAjaWYgSlNDX0JVSUxUSU5fRVhJU1RTKCIgLiB1YygkdGFibGVIZWFkIC4gJGtleSkg
LiIpXG4iOworICAgICAgICAgICAgcHJpbnQgIiAgIHsgXCIka2V5XCIsICgoJGF0dHJzWyRpXSkg
JiB+RnVuY3Rpb24pIHwgQnVpbHRpbiwgJGludHJpbnNpYywgKGludHB0cl90KXN0YXRpY19jYXN0
PEJ1aWx0aW5HZW5lcmF0b3I+KCIgLiAkdGFibGVIZWFkIC4gdWNmaXJzdCgka2V5KSAuICJDb2Rl
R2VuZXJhdG9yKSwgKGludHB0cl90KSRzZWNvbmRWYWx1ZSB9LFxuIjsKKyAgICAgICAgICAgIHBy
aW50ICIgI2Vsc2VcbiIKKyAgICAgICAgfQogICAgICAgICBwcmludCAiICAgeyBcIiRrZXlcIiwg
JGF0dHJzWyRpXSwgJGludHJpbnNpYywgKGludHB0cl90KSIgLiAkZmlyc3RDYXN0U3RyIC4gIigk
Zmlyc3RWYWx1ZSksIChpbnRwdHJfdCkiIC4gJHNlY29uZENhc3RTdHIgLiAiKCRzZWNvbmRWYWx1
ZSkgfSxcbiI7CisgICAgICAgIGlmICgkdmFsdWVzWyRpXXsidHlwZSJ9IGVxICJGdW5jdGlvbiIp
ICB7CisgICAgICAgICAgICBwcmludCAiICNlbmRpZlxuIgorICAgICAgICB9CiAgICAgICAgICRp
Kys7CiAgICAgfQogICAgIHByaW50ICIgICB7IDAsIDAsIE5vSW50cmluc2ljLCAwLCAwIH1cbiI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAyZmYw
YzM0MTQ2ZTJjMGJhMmZmNzZjNGQzZjdjNDZiYTNlMjU1MTQ3Li45MDQ0Y2RjNmI4YzNhZDRhMWU5
NDE4OGRkMWQwZTIwMGU2OWZiOTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJKU0FjdGl2YXRpb24u
aCIKICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCisjaW5jbHVkZSAi
SlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTmFtZUluc3RhbmNlLmgiCiAjaW5jbHVkZSAi
T2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY0YjZkNDk5ZjAy
NWMwNTNiMmY5N2I2ZjEwMGU4NTUwNDZmM2U1MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucwpAQCAtMCwwICsxLDMwNCBAQAorIyEv
dXNyL2Jpbi9weXRob24KKyMgQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorIyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyMgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorIyBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBmaWxlY21wCitpbXBvcnQgZm5t
YXRjaAoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzeXMKK2lt
cG9ydCBkYXRldGltZQoraW1wb3J0IGpzb24KKworY29weXJpZ2h0VGV4dCA9ICIiIiAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovXG4KKyIiIgorCitnZW5lcmF0b3JTdHJp
bmcgPSAiLyogR2VuZXJhdGVkIGJ5ICVzIGRvIG5vdCBoYW5kIGVkaXQuICovXG4iICUgb3MucGF0
aC5iYXNlbmFtZShfX2ZpbGVfXykKKworZnVuY3Rpb25IZWFkUmVnRXhwID0gcmUuY29tcGlsZShy
ImZ1bmN0aW9uXHMrXHcrXHMqXCguKj9cKSIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitmdW5jdGlv
bk5hbWVSZWdFeHAgPSByZS5jb21waWxlKHIiZnVuY3Rpb25ccysoXHcrKVxzKlwoIiwgcmUuTVVM
VElMSU5FIHwgcmUuUykKK2Z1bmN0aW9uUGFyYW1ldGVyRmluZGVyID0gcmUuY29tcGlsZShyIl5m
dW5jdGlvblxzKyg/Olx3KylccypcKCgoPzpccypcdyspP1xzKig/OlxzKixccypcdyspKik/XCki
LCByZS5NVUxUSUxJTkUgfCByZS5TKQorCittdWx0aWxpbmVDb21tZW50UmVnRXhwID0gcmUuY29t
cGlsZShyIlwvXCouKj9cKlwvIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK3NpbmdsZUxpbmVDb21t
ZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwvXC8uKj9cbiIsIHJlLk1VTFRJTElORSB8IHJlLlMp
CisKK2RlZiBnZXRDb3B5cmlnaHQoc291cmNlKToKKyAgICBjb3B5cmlnaHRCbG9jayA9IG11bHRp
bGluZUNvbW1lbnRSZWdFeHAuZmluZGFsbChzb3VyY2UpWzBdCisgICAgY29weXJpZ2h0QmxvY2sg
PSBjb3B5cmlnaHRCbG9ja1s6Y29weXJpZ2h0QmxvY2suaW5kZXgoIlJlZGlzdHJpYnV0aW9uIild
CisgICAgY29weVJpZ2h0TGluZXMgPSBbXQorCisgICAgZm9yIGxpbmUgaW4gY29weXJpZ2h0Qmxv
Y2suc3BsaXQoIlxuIik6CisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIi8qIiwgIiIpCisg
ICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIiovIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5l
LnJlcGxhY2UoIioiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiQ29weXJpZ2h0
IiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoImNvcHlyaWdodCIsICIiKQorICAg
ICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIoQykiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUu
cmVwbGFjZSgiKGMpIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAg
aWYgbGVuKGxpbmUpID09IDA6CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIGNvcHlS
aWdodExpbmVzLmFwcGVuZChsaW5lKQorICAgIAorICAgIHJldHVybiBsaXN0KHNldChjb3B5Umln
aHRMaW5lcykpCisKKworCitkZWYgZ2V0RnVuY3Rpb25zKHNvdXJjZSk6CisKKyAgICBzb3VyY2Ug
PSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLnN1YigiLyoqLyIsIHNpbmdsZUxpbmVDb21tZW50UmVn
RXhwLnN1YigiLy9cbiIsIHNvdXJjZSkpCisKKyAgICBtYXRjaGVzID0gWyBmIGZvciBmIGluIGZ1
bmN0aW9uSGVhZFJlZ0V4cC5maW5kaXRlcihzb3VyY2UpXQorICAgIGZ1bmN0aW9uQm91bmRzID0g
W10KKyAgICBzdGFydCA9IDAKKyAgICBlbmQgPSAwCisgICAgZm9yIG1hdGNoIGluIG1hdGNoZXM6
CisgICAgICAgIHN0YXJ0ID0gbWF0Y2guc3RhcnQoKQorICAgICAgICBpZiBzdGFydCA8IGVuZDoK
KyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGVuZCA9IG1hdGNoLmVuZCgpCisgICAgICAg
IHdoaWxlIHNvdXJjZVtlbmRdICE9ICd7JzoKKyAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAg
ICAgICAgZGVwdGggPSAxCisgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgd2hpbGUgZGVw
dGggPiAwOgorICAgICAgICAgICAgaWYgc291cmNlW2VuZF0gPT0gJ3snOgorICAgICAgICAgICAg
ICAgIGRlcHRoID0gZGVwdGggKyAxCisgICAgICAgICAgICBlbGlmIHNvdXJjZVtlbmRdID09ICd9
JzoKKyAgICAgICAgICAgICAgICBkZXB0aCA9IGRlcHRoIC0gMQorICAgICAgICAgICAgZW5kID0g
ZW5kICsgMQorICAgICAgICBmdW5jdGlvbkJvdW5kcy5hcHBlbmQoKHN0YXJ0LCBlbmQpKQorCisg
ICAgZnVuY3Rpb25zID0gW3NvdXJjZVtzdGFydDplbmRdLnN0cmlwKCkgZm9yIChzdGFydCwgZW5k
KSBpbiBmdW5jdGlvbkJvdW5kc10KKyAgICByZXN1bHQgPSBbXQorICAgIGZvciBmdW5jdGlvbiBp
biBmdW5jdGlvbnM6CisgICAgICAgIGZ1bmN0aW9uID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5z
dWIoIiIsIGZ1bmN0aW9uKQorICAgICAgICBmdW5jdGlvbk5hbWUgPSBmdW5jdGlvbk5hbWVSZWdF
eHAuZmluZGFsbChmdW5jdGlvbilbMF0KKyAgICAgICAgZnVuY3Rpb25QYXJhbWV0ZXJzID0gZnVu
Y3Rpb25QYXJhbWV0ZXJGaW5kZXIuZmluZGFsbChmdW5jdGlvbilbMF0uc3BsaXQoJywnKQorICAg
ICAgICBpZiBsZW4oZnVuY3Rpb25QYXJhbWV0ZXJzWzBdKSA9PSAwOgorICAgICAgICAgICAgZnVu
Y3Rpb25QYXJhbWV0ZXJzID0gW10KKyAgICAgICAgICAgIAorICAgICAgICByZXN1bHQuYXBwZW5k
KChmdW5jdGlvbk5hbWUsIGZ1bmN0aW9uLCBmdW5jdGlvblBhcmFtZXRlcnMpKQorICAgIHJldHVy
biByZXN1bHQKKyAgICAgICAgCisKK2RlZiBnZW5lcmF0ZUNvZGUoc291cmNlKToKKyAgICBpbnB1
dEZpbGUgPSBvcGVuKHNvdXJjZSwgInIiKQorICAgIGJhc2VOYW1lID0gb3MucGF0aC5iYXNlbmFt
ZShzb3VyY2UpLnJlcGxhY2UoIi5qcyIsICIiKQorICAgIAorICAgIHNvdXJjZSA9ICIiCisgICAg
Zm9yIGxpbmUgaW4gaW5wdXRGaWxlOgorICAgICAgICBzb3VyY2UgPSBzb3VyY2UgKyBsaW5lCisg
ICAgCisgICAgaWYgc3lzLnBsYXRmb3JtID09ICJjeWd3aW4iOgorICAgICAgICBzb3VyY2UgPSBz
b3VyY2UucmVwbGFjZSgiXHJcbiIsICJcbiIpCisgICAgcmV0dXJuIChiYXNlTmFtZSwgZ2V0RnVu
Y3Rpb25zKHNvdXJjZSksIGdldENvcHlyaWdodChzb3VyY2UpKQorCitkZWYgbWFuZ2xlTmFtZShv
YmplY3QsIG5hbWUpOgorICAgIHFOYW1lID0gb2JqZWN0ICsgIi4iICsgbmFtZQorICAgIG1hbmds
ZWROYW1lID0gIiIKKyAgICBpID0gMAorICAgIHdoaWxlIGkgPCBsZW4ocU5hbWUpOgorICAgICAg
ICBpZiBxTmFtZVtpXSA9PSAnLic6CisgICAgICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWRO
YW1lICsgcU5hbWVbaSArIDFdLnVwcGVyKCkKKyAgICAgICAgICAgIGkgPSBpICsgMQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZSArIHFOYW1lW2ld
CisgICAgICAgIGkgPSBpICsgMQorICAgIHJldHVybiBtYW5nbGVkTmFtZQorCitidWlsdGlucyA9
IFtdCisKK2Jhc2VOYW1lID0gc3lzLmFyZ3ZbLTFdCitidWlsdGluX2RlZmluaXRpb25zID0gc3lz
LmFyZ3ZbMTotMV0KKyhvdXRwdXRfYmFzZSwgXykgPSBvcy5wYXRoLnNwbGl0ZXh0KHN5cy5hcmd2
Wy0xXSkKKworY29weXJpZ2h0cyA9IFtdCitmb3IgZmlsZSBpbiBidWlsdGluX2RlZmluaXRpb25z
OgorICAgIGlmIGZubWF0Y2guZm5tYXRjaChmaWxlLCAnKi5qcycpOgorICAgICAgICAoYmFzZU5h
bWUsIGZ1bmN0aW9ucywgb2JqZWN0Q29weXJpZ2h0cykgPSBnZW5lcmF0ZUNvZGUoZmlsZSkKKyAg
ICAgICAgY29weXJpZ2h0cy5leHRlbmQob2JqZWN0Q29weXJpZ2h0cykKKyAgICAgICAgYnVpbHRp
bnMuYXBwZW5kKChiYXNlTmFtZSwgZnVuY3Rpb25zKSkKKworY29weXJpZ2h0cyA9IGxpc3Qoc2V0
KGNvcHlyaWdodHMpKQorCitjb3B5cmlnaHRCb2R5ID0gIiIKK2ZvciBjb3B5cmlnaHQgaW4gY29w
eXJpZ2h0czoKKyAgICBjb3B5cmlnaHRCb2R5ID0gY29weXJpZ2h0Qm9keSArIiAqIENvcHlyaWdo
dCAoQykgIiArIGNvcHlyaWdodCArICJcbiIKKworYnVpbHRpbnNIZWFkZXIgPSBvcGVuKG91dHB1
dF9iYXNlICsgIi5oLnRtcCIsICJ3IikKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24gPSBvcGVuKG91
dHB1dF9iYXNlICsgIi5jcHAudG1wIiwgInciKQorY29weXJpZ2h0VGV4dCA9ICIvKlxuIiArIGNv
cHlyaWdodEJvZHkgKyBjb3B5cmlnaHRUZXh0CitidWlsdGluc0hlYWRlci53cml0ZSgiIiIlcwor
JXMKKworI2lmbmRlZiBKU0NCdWlsdGluc19ICisjZGVmaW5lIEpTQ0J1aWx0aW5zX0gKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIElkZW50aWZp
ZXI7CitjbGFzcyBKU0dsb2JhbE9iamVjdDsKK2NsYXNzIFNvdXJjZUNvZGU7CitjbGFzcyBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIFZNOworCitGdW5jdGlvbkV4ZWN1dGFibGUq
IGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKFZNJiwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
LCBjb25zdCBTb3VyY2VDb2RlJik7CisKKyIiIiAlIChnZW5lcmF0b3JTdHJpbmcsIGNvcHlyaWdo
dFRleHQpKQorCitjb2RlUmVmZXJlbmNlcyA9IFtdCisKK2ZvciAob2JqZWN0TmFtZSwgZnVuY3Rp
b25zKSBpbiBidWlsdGluczoKKyAgICBwcmludCgiR2VuZXJhdGluZyBiaW5kaW5ncyBmb3IgdGhl
ICVzIGJ1aWx0aW4uIiAlIG9iamVjdE5hbWUpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIi8q
ICVzIGZ1bmN0aW9ucyAqL1xuIiAlIG9iamVjdE5hbWUpCisgICAgZm9yIChuYW1lLCBpbXBsZW1l
bnRhdGlvbiwgXykgaW4gZnVuY3Rpb25zOgorICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZU5h
bWUob2JqZWN0TmFtZSwgbmFtZSkKKyAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZVsw
XS5sb3dlcigpICsgbWFuZ2xlZE5hbWVbMTpdICsgIkNvZGUiCisgICAgICAgIGNvZGVSZWZlcmVu
Y2VzLmFwcGVuZCgobWFuZ2xlZE5hbWUsIG5hbWUsIGltcGxlbWVudGF0aW9uKSkKKyAgICAgICAg
YnVpbHRpbnNIZWFkZXIud3JpdGUoImV4dGVybiBjb25zdCBjaGFyKiBzXyVzO1xuIiAlIG1hbmds
ZWROYW1lKQorICAgICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiZXh0ZXJuIGNvbnN0IGludCBz
XyVzTGVuZ3RoO1xuIiAlIG1hbmdsZWROYW1lKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJc
biIpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0ZPUkVBQ0hfJXNfQlVJ
TFRJTihtYWNybykgXFxcbiIgJSBvYmplY3ROYW1lLnJlcGxhY2UoIi4iLCAiXyIpLnVwcGVyKCkp
CisgICAgZm9yIChuYW1lLCBpbXBsZW1lbnRhdGlvbiwgYXJndW1lbnRzKSBpbiBmdW5jdGlvbnM6
CisgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlTmFtZShvYmplY3ROYW1lLCBuYW1lKQorICAg
ICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiICAgIG1hY3JvKCVzLCAlcywgJWQpIFxcXG4iICUg
KG5hbWUsIG1hbmdsZWROYW1lLCBsZW4oYXJndW1lbnRzKSkpCisgICAgYnVpbHRpbnNIZWFkZXIu
d3JpdGUoIlxuIikKKyAgICBmb3IgKG5hbWUsIGltcGxlbWVudGF0aW9uLCBhcmd1bWVudHMpIGlu
IGZ1bmN0aW9uczoKKyAgICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0JV
SUxUSU5fJXMgMVxuIiAlIG1hbmdsZU5hbWUob2JqZWN0TmFtZSwgbmFtZSkudXBwZXIoKSkKKyAg
ICBidWlsdGluc0hlYWRlci53cml0ZSgiXG5cbiIpCituYW1lcyA9IFtdCitidWlsdGluc0hlYWRl
ci53cml0ZSgiI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOKG1hY3JvKVxcXG4iKQorZm9yIChj
b2RlUmVmZXJlbmNlLCBmdW5jdGlvbk5hbWUsIHNvdXJjZSkgaW4gY29kZVJlZmVyZW5jZXM6Cisg
ICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiAgICBtYWNybyglcywgJXMsIHNfJXNMZW5ndGgpIFxc
XG4iICUgKGNvZGVSZWZlcmVuY2UsIGZ1bmN0aW9uTmFtZSwgY29kZVJlZmVyZW5jZSkpCisgICAg
bmFtZXMuYXBwZW5kKGZ1bmN0aW9uTmFtZSkKKworYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuXG4i
KQorYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5D
VElPTl9OQU1FKG1hY3JvKSBcXFxuIikKK2ZvciBuYW1lIGluIHNvcnRlZChzZXQobmFtZXMpKToK
KyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiICAgIG1hY3JvKCVzKSBcXFxuIiAlIG5hbWUpCiti
dWlsdGluc0hlYWRlci53cml0ZSgiIiIKKworI2RlZmluZSBKU0NfREVDTEFSRV9CVUlMVElOX0dF
TkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAorICAgIEZ1
bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihWTSYpOworCitKU0NfRk9SRUFD
SF9CVUlMVElOKEpTQ19ERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIEpTQ19ERUNM
QVJFX0JVSUxUSU5fR0VORVJBVE9SCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fRVhJU1RTKG5hbWUp
IGRlZmluZWQoSlNDX0JVSUxUSU5fIyNuYW1lKQorCit9CisKKyNlbmRpZgorCisiIiIpCisKK2J1
aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoIiIiJXMKKyVzCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0
YWJsZXMuaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5l
cy5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0MgeworCisiIiIgICUgKGdlbmVy
YXRvclN0cmluZywgY29weXJpZ2h0VGV4dCkpCisKK2ZvciAoY29kZVJlZmVyZW5jZSwgbmFtZSwg
c291cmNlKSBpbiBjb2RlUmVmZXJlbmNlczoKKyAgICBzb3VyY2UgPSAiKGZ1bmN0aW9uICIgKyBz
b3VyY2Vbc291cmNlLmluZGV4KCIoIik6XSArICIpIgorICAgIGxpbmVzID0ganNvbi5kdW1wcyhz
b3VyY2UpWzE6LTFdLnNwbGl0KCJcXG4iKQorICAgIHNvdXJjZUxlbmd0aCA9IGxlbihzb3VyY2Up
CisgICAgc291cmNlID0gIiIKKyAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgc291cmNl
ID0gc291cmNlICsgKCIgICAgXCIlc1xcblwiIFxcXG4iICUgbGluZSkKKyAgICBidWlsdGluc0lt
cGxlbWVudGF0aW9uLndyaXRlKCJjb25zdCBjaGFyKiBzXyVzID1cbiVzO1xuXG4iICUgKGNvZGVS
ZWZlcmVuY2UsIHNvdXJjZSkpCisgICAgYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiY29u
c3QgaW50IHNfJXNMZW5ndGggPSAlZDtcblxuIiAlIChjb2RlUmVmZXJlbmNlLCBzb3VyY2VMZW5n
dGggKyAxKSkgIyArIDEgZm9yIFxuCisKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoIiIi
CitGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKFZNJiB2bSwgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlKQoreworICAgIHVuc2lnbmVkIGxpbmVDb3VudCA9IHVubGlua2VkRXhlY3V0
YWJsZS0+bGluZUNvdW50KCk7CisgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSAxOworICAgIHVu
c2lnbmVkIHNvdXJjZUxlbmd0aCA9IHVubGlua2VkRXhlY3V0YWJsZS0+c291cmNlTGVuZ3RoKCk7
CisgICAgYm9vbCBlbmRDb2x1bW5Jc09uU3RhcnRMaW5lID0gIWxpbmVDb3VudDsKKyAgICB1bnNp
Z25lZCBlbmRDb2x1bW5FeGNsdWRpbmdCcmFjZXMgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnVubGlu
a2VkQm9keUVuZENvbHVtbigpICsgKGVuZENvbHVtbklzT25TdGFydExpbmUgPyAwIDogMSk7Cisg
ICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnN0YXJ0T2Zmc2V0
KCk7CisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXRFeGNsdWRpbmdPcGVuQnJhY2UgPSBzdGFydE9m
ZnNldCArIDE7CisgICAgdW5zaWduZWQgZW5kT2Zmc2V0RXhjbHVkaW5nQ2xvc2VCcmFjZSA9IHN0
YXJ0T2Zmc2V0ICsgc291cmNlTGVuZ3RoIC0gMTsKKyAgICBTb3VyY2VDb2RlIGJvZHlTb3VyY2Uo
c291cmNlLnByb3ZpZGVyKCksIHN0YXJ0T2Zmc2V0RXhjbHVkaW5nT3BlbkJyYWNlLCBlbmRPZmZz
ZXRFeGNsdWRpbmdDbG9zZUJyYWNlLCAwLCBzdGFydENvbHVtbik7CisgICAgcmV0dXJuIEZ1bmN0
aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBib2R5U291cmNlLCB1bmxpbmtlZEV4ZWN1dGFibGUs
IDAsIGxpbmVDb3VudCwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbkV4Y2x1ZGluZ0JyYWNlcywgZmFs
c2UpOworfQorCisjZGVmaW5lIEpTQ19ERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUs
IGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKK0Z1bmN0aW9uRXhlY3V0YWJsZSogY29k
ZU5hbWUjI0dlbmVyYXRvcihWTSYgdm0pIFxcCit7IFxcCisgICAgcmV0dXJuIGNyZWF0ZUJ1aWx0
aW5FeGVjdXRhYmxlKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1
dGFibGUoKSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IFxc
Cit9CisKK0pTQ19GT1JFQUNIX0JVSUxUSU4oSlNDX0RFRklORV9CVUlMVElOX0dFTkVSQVRPUikK
KyN1bmRlZiBKU0NfREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCit9CisKKyIiIikKKworYnVpbHRp
bnNIZWFkZXIuY2xvc2UoKQorYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi5jbG9zZSgpCisKK2lmIChu
b3Qgb3MucGF0aC5leGlzdHMob3V0cHV0X2Jhc2UgKyAiLmgiKSkgb3IgKG5vdCBmaWxlY21wLmNt
cChvdXRwdXRfYmFzZSArICIuaC50bXAiLCBvdXRwdXRfYmFzZSArICIuaCIsIHNoYWxsb3c9RmFs
c2UpKToKKyAgICBvcy5yZW5hbWUob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgb3V0cHV0X2Jhc2Ug
KyAiLmgiKQorZWxzZToKKyAgICBvcy5yZW1vdmUob3V0cHV0X2Jhc2UgKyAiLmgudG1wIikKKwor
aWYgKG5vdCBvcy5wYXRoLmV4aXN0cyhvdXRwdXRfYmFzZSArICIuY3BwIikpIG9yIChub3QgZmls
ZWNtcC5jbXAob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCBvdXRwdXRfYmFzZSArICIuY3BwIiwg
c2hhbGxvdz1GYWxzZSkpOgorICAgIG9zLnJlbmFtZShvdXRwdXRfYmFzZSArICIuY3BwLnRtcCIs
IG91dHB1dF9iYXNlICsgIi5jcHAiKQorZWxzZToKKyAgICBvcy5yZW1vdmUob3V0cHV0X2Jhc2Ug
KyAiLmNwcC50bXAiKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKaW5kZXggY2E4OTBiMDZlYTMzZmE5ZTdmMWZhNTFhMzVlYTJkNDhkMDA5
YTM4YS4uNmM5YmY5NmMxNWY2MDllMjY1Y2UyNTBhNDViZjA4NjFkMDZjZDFmMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC01
MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogI2luY2x1
ZGUgIkpTU3RhY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJK
U1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIkxM
SW50Q0xvb3AuaCIKICNpbmNsdWRlICJMTEludFRodW5rcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAKaW5kZXggZjBlMDJi
YTRlNDc2Zjk5Y2M5MTNiMDQ2MmFkMjc5NTAwNjA5ZmEzYS4uMWMyNDBkY2Q3MWJlNTI5ZDg4Y2Jm
NDYxZDE4NjhmNWViMmIwMmFkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVk
ZSAiUHJvdG9DYWxsRnJhbWUuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUg
IkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKIAogbmFt
ZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRl
eCBjYTdhZDExZjJlMGI4YTNiOGIxODU4OTFkN2U1MjJiYWU0MDNhMjM2Li5jYjU1MDdiZWFjNTVi
ZjhlYjFiMzdlYzkwZmNhYjE5MzRmYjQ4ZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5j
bHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggOThkMTBhM2Y0ZGNiMTJk
ODlmMzdhMTJmMjI2MDRiOTQ2ZTA4ZTYyNy4uZGQwMzUzNzc5ZThiZGY5OGY0NjU4YTMwN2UzMmQw
NmU0NzI0NDE1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVk
ZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA5MjhkZDUwZmIwMTZlMjcxNjQ0YTU3
NWUzMGFiNWYyNTE2ZWI1MGVjLi40OTg3MGU2OGE4N2JlMTllMTU4YTA2ZDFjNjRmZWM5YjhiZDA4
MjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAg
LTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25X
cmFwcGVycy5oIgogI2luY2x1ZGUgIkpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCAyNmRkNGQxYWY3NDVhZmExZmJjNTNhOWMwMjNhNmU0
NzQxYTY2YTA5Li5kZjFiZDNhOWNmYTQwMmM1MmE1MjExY2YxYWNjZTY3ZDUxMjFiN2VlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAt
MjksMTEgKzI5LDEzIEBACiAjaW5jbHVkZSAiSklULmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2su
aCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkdDQXdhcmVKSVRT
dHViUm91dGluZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkludGVy
cHJldGVyLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIK
KyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNWYXJpYWJs
ZU9iamVjdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggZDE4ZmVhNzE1Y2IwM2IzN2FhOTI2ZDg0OWE4ZTVhYjk1
NjNlY2QzZC4uMzI2MWIzYWY2ZWVhYmQ2ZjI2YTQzYTA4ZDIwNGJjNjJiMDY1ODliNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRl
ICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFs
dWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1ZhcmlhYmxlT2JqZWN0LmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwCmluZGV4IDQwNzg0YjQ5NDMxZmUwMmU4ZTQ1MjJmMTYzMDhjOTAyNDcxNmQyMzYu
LjJmNzk1NTU0YjA5MWRlZWJiYzAzYmYyYmU4Yzc0ZjQxYWU1NDFlZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAi
SlNQcm94eS5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5o
IgogI2luY2x1ZGUgIlN0YWNrVmlzaXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCA2MDRjYzI2M2NmOTdl
MDg2ZmVkMDZlYzkwM2IwZWMxOTgzZTc4MTM3Li44MTY2ZTdmODFmYTg5YTdkNGY1MGM1ZjFhOTRm
YTk2OGM1ZDU3ZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRPZmZzZXRzRXh0cmFjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkpJ
VFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgotI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU09i
amVjdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAKaW5kZXggNjY0NDRiYWEwOGI1NjJkZDY5N2UwY2NkNzcyMWU1NWMxNWJhNDkxMy4uZDgyZTll
OWMyODE4NDYxZTMwNWZmODY1ZDJmYjE2OGE3OGNiYjRmNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC00MCw3ICs0MCw3IEBACiAjaW5j
bHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgogI2luY2x1ZGUgIkpTQWN0
aXZhdGlvbi5oIgotI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVk
ZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IDhlYzFmZDMyYTNh
ZGEyMmUxMjUyMjk1NzBkY2Y3ZmYyOGVhYmYxZWQuLjQ2YTdjNzZiMmY5MDFmYzNjYzM2ZDFjZTBj
MDczNTNlYjA2YjJmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
QVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRl
ci5oCkBAIC04ODgsOSArODg4LDkgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VG
dW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24KICAgICBBU1NF
UlQoZnVuYy0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CiAgICAgRG90QWNjZXNzb3JOb2RlKiBkb3Qg
PSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihmdW5jKTsKICAgICBGdW5jdGlvbkNhbGxE
b3ROb2RlKiBub2RlOwotICAgIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5jYWxsKQorICAgIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5jYWxsIHx8IGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMt
PmNhbGxQcml2YXRlTmFtZSkKICAgICAgICAgbm9kZSA9IG5ldyAobV92bSkgQ2FsbEZ1bmN0aW9u
Q2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJn
cywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKLSAgICBlbHNlIGlmIChkb3QtPmlkZW50
aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcHBseSkKKyAgICBlbHNlIGlmIChkb3Qt
PmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcHBseSB8fCBkb3QtPmlkZW50
aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcHBseVByaXZhdGVOYW1lKQogICAgICAg
ICBub2RlID0gbmV3IChtX3ZtKSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRv
dC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRp
dm90RW5kKTsKICAgICBlbHNlCiAgICAgICAgIG5vZGUgPSBuZXcgKG1fdm0pIEZ1bmN0aW9uQ2Fs
bERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywg
ZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9M
ZXhlci5jcHAKaW5kZXggY2E0YmI0ZjBhZGU4ZDZiYzgyNjkxYTZjMDAwMTRjZjE5OGJkODhiZC4u
Y2NiMDc5ZDk3NWExNDFjNWM0YjJkN2I2MjMxMzAwMDcwOTc3NzgyOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9MZXhlci5jcHAKQEAgLTI1LDEwICsyNSwxMCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkxleGVyLmgiCiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVy
cy5oIgorI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5l
cy5oIgotCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKLSNpbmNsdWRlICJJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTm9kZUluZm8uaCIKICNpbmNsdWRlICJOb2Rlcy5oIgog
I2luY2x1ZGUgPHd0Zi9kdG9hLmg+CkBAIC05MCw2ICs5MCw3IEBAIGVudW0gQ2hhcmFjdGVyVHlw
ZSB7CiAKICAgICAvLyBPdGhlciB0eXBlcyAob25seSBvbmUgc28gZmFyKQogICAgIENoYXJhY3Rl
cldoaXRlU3BhY2UsCisgICAgQ2hhcmFjdGVyUHJpdmF0ZUlkZW50aWZpZXJTdGFydAogfTsKIAog
Ly8gMjU2IExhdGluLTEgY29kZXMKQEAgLTE1OCw3ICsxNTksNyBAQCBzdGF0aWMgY29uc3QgdW5z
aWduZWQgc2hvcnQgdHlwZXNPZkxhdGluMUNoYXJhY3RlcnNbMjU2XSA9IHsKIC8qICA2MSAtID0g
ICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJFcXVhbCwKIC8qICA2MiAtID4gICAgICAgICAg
ICAgICAgICAqLyBDaGFyYWN0ZXJHcmVhdGVyLAogLyogIDYzIC0gPyAgICAgICAgICAgICAgICAg
ICovIENoYXJhY3RlclF1ZXN0aW9uLAotLyogIDY0IC0gQCAgICAgICAgICAgICAgICAgICovIENo
YXJhY3RlckludmFsaWQsCisvKiAgNjQgLSBAICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVy
UHJpdmF0ZUlkZW50aWZpZXJTdGFydCwKIC8qICA2NSAtIEEgICAgICAgICAgICAgICAgICAqLyBD
aGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCiAvKiAgNjYgLSBCICAgICAgICAgICAgICAgICAgKi8g
Q2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAogLyogIDY3IC0gQyAgICAgICAgICAgICAgICAgICov
IENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKQEAgLTQ4Niw5ICs0ODcsMTAgQEAgc3RhdGljIGNv
bnN0IExDaGFyIHNpbmdsZUNoYXJhY3RlckVzY2FwZVZhbHVlc0ZvckFTQ0lJWzEyOF0gPSB7CiB9
OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUxleGVyPFQ+OjpMZXhlcihWTSogdm0pCitMZXhl
cjxUPjo6TGV4ZXIoVk0qIHZtLCBKU1BhcnNlclN0cmljdG5lc3Mgc3RyaWN0bmVzcykKICAgICA6
IG1faXNSZXBhcnNpbmcoZmFsc2UpCiAgICAgLCBtX3ZtKHZtKQorICAgICwgbV9wYXJzaW5nQnVp
bHRpbkZ1bmN0aW9uKHN0cmljdG5lc3MgPT0gSlNQYXJzZUJ1aWx0aW4pCiB7CiB9CiAKQEAgLTc1
Myw3ICs3NTUsMjcgQEAgaW5saW5lIHZvaWQgTGV4ZXI8VD46OnJlY29yZDE2KGludCBjKQogICAg
IEFTU0VSVChjIDw9IHN0YXRpY19jYXN0PGludD4oVVNIUlRfTUFYKSk7CiAgICAgbV9idWZmZXIx
Ni5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KGMpKTsKIH0KLQorICAgIAorI2lmICFBU1NFUlRf
RElTQUJMRUQKK2Jvb2wgaXNTYWZlSWRlbnRpZmllcihWTSYgdm0sIGNvbnN0IElkZW50aWZpZXIq
IGlkZW50KQoreworICAgIGlmICghaWRlbnQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIC8q
IEp1c3QgYmxvY2sgYW55IHVzZSBvZiBzdXNwaWNpb3VzIGlkZW50aWZpZXJzLiAgVGhpcyBpcyBp
bnRlbmRlZCB0bworICAgICAqIGJlIHVzZWQgYXMgYSBzYWZldHkgbmV0IHdoaWxlIGltcGxlbWVu
dGluZyBidWlsdGlucy4KKyAgICAgKi8KKyAgICBpZiAoKmlkZW50ID09IHZtLnByb3BlcnR5TmFt
ZXMtPmNhbGwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKmlkZW50ID09IHZtLnBy
b3BlcnR5TmFtZXMtPmFwcGx5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCppZGVu
dCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5ldmFsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCppZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5GdW5jdGlvbikKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisgICAgCiB0ZW1wbGF0ZSA8Pgog
dGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rv
a2VuVHlwZSBMZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcihKU1Rva2VuRGF0YSogdG9rZW5E
YXRhLCB1bnNpZ25lZCBsZXhlckZsYWdzLCBib29sIHN0cmljdE1vZGUpCiB7CkBAIC03NjUsNyAr
Nzg3LDExIEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19J
TkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAgICAgICAgICAgICByZXR1cm4ga2V5
d29yZCA9PSBSRVNFUlZFRF9JRl9TVFJJQ1QgJiYgIXN0cmljdE1vZGUgPyBJREVOVCA6IGtleXdv
cmQ7CiAgICAgICAgIH0KICAgICB9Ci0KKyAgICAKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSBt
X2N1cnJlbnQgPT0gJ0AnICYmIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKKyAgICBpZiAoaXNQ
cml2YXRlTmFtZSkKKyAgICAgICAgc2hpZnQoKTsKKyAgICAKICAgICBjb25zdCBMQ2hhciogaWRl
bnRpZmllclN0YXJ0ID0gY3VycmVudFNvdXJjZVB0cigpOwogICAgIHVuc2lnbmVkIGlkZW50aWZp
ZXJMaW5lU3RhcnQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CiAgICAgCkBAIC03NzksMTUg
KzgwNSwyNiBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNf
SU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAogCiAgICAgY29uc3QgSWRlbnRpZmll
ciogaWRlbnQgPSAwOwogICAgIAotICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyKSB7Cisg
ICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIgfHwgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9u
KSB7CiAgICAgICAgIGludCBpZGVudGlmaWVyTGVuZ3RoID0gY3VycmVudFNvdXJjZVB0cigpIC0g
aWRlbnRpZmllclN0YXJ0OwogICAgICAgICBpZGVudCA9IG1ha2VJZGVudGlmaWVyKGlkZW50aWZp
ZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCk7Ci0KKyAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0
aW5GdW5jdGlvbikgeworICAgICAgICAgICAgaWYgKCFpc1NhZmVJZGVudGlmaWVyKCptX3ZtLCBp
ZGVudCkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsKKyAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVz
c2FnZSA9IG1ha2VTdHJpbmcoIlRoZSB1c2Ugb2YgJyIsIGlkZW50LT5zdHJpbmcoKSwgIicgaXMg
ZGlzYWxsb3dlZCBpbiBidWlsdGluIGZ1bmN0aW9ucy4iKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gRVJST1JUT0s7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaXNQcml2YXRlTmFt
ZSkKKyAgICAgICAgICAgICAgICBpZGVudCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPmdldFByaXZh
dGVOYW1lKCppZGVudCk7CisgICAgICAgICAgICBlbHNlIGlmICgqaWRlbnQgPT0gbV92bS0+cHJv
cGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCkKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEt
PmlkZW50ID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmRQcml2YXRlTmFt
ZTsKKyAgICAgICAgICAgIGlmICghaWRlbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFM
SURfUFJJVkFURV9OQU1FX0VSUk9SVE9LOworICAgICAgICB9CiAgICAgICAgIHRva2VuRGF0YS0+
aWRlbnQgPSBpZGVudDsKICAgICB9IGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IDA7
CiAKLSAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhKGxl
eGVyRmxhZ3MgJiBMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpKSB7CisgICAgaWYgKFVO
TElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4
ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMpKSAmJiAhaXNQcml2YXRlTmFtZSkgewogICAgICAg
ICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChyZW1haW5pbmcg
PCBtYXhUb2tlbkxlbmd0aCkgewogICAgICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9
IG1fdm0tPmtleXdvcmRzLT5nZXRLZXl3b3JkKCppZGVudCk7CkBAIC04MTQsNiArODUxLDEwIEBA
IHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNU
b2tlblR5cGUgTGV4ZXI8VUNoYXI+OjpwCiAgICAgICAgICAgICByZXR1cm4ga2V5d29yZCA9PSBS
RVNFUlZFRF9JRl9TVFJJQ1QgJiYgIXN0cmljdE1vZGUgPyBJREVOVCA6IGtleXdvcmQ7CiAgICAg
ICAgIH0KICAgICB9CisgICAgCisgICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gbV9jdXJyZW50ID09
ICdAJyAmJiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUp
CisgICAgICAgIHNoaWZ0KCk7CiAKICAgICBjb25zdCBVQ2hhciogaWRlbnRpZmllclN0YXJ0ID0g
Y3VycmVudFNvdXJjZVB0cigpOwogICAgIGludCBpZGVudGlmaWVyTGluZVN0YXJ0ID0gY3VycmVu
dExpbmVTdGFydE9mZnNldCgpOwpAQCAtODI2LDYgKzg2Nyw3IEBAIHRlbXBsYXRlIDxib29sIHNo
b3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNo
YXI+OjpwCiAgICAgfQogICAgIAogICAgIGlmIChVTkxJS0VMWShtX2N1cnJlbnQgPT0gJ1xcJykp
IHsKKyAgICAgICAgQVNTRVJUKCFpc1ByaXZhdGVOYW1lKTsKICAgICAgICAgc2V0T2Zmc2V0RnJv
bVNvdXJjZVB0cihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMaW5lU3RhcnQpOwogICAgICAg
ICByZXR1cm4gcGFyc2VJZGVudGlmaWVyU2xvd0Nhc2U8c2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4o
dG9rZW5EYXRhLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKTsKICAgICB9CkBAIC04MzcsMTggKzg3
OSwyOSBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5M
SU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogCiAgICAgY29uc3QgSWRlbnRpZmllciog
aWRlbnQgPSAwOwogICAgIAotICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyKSB7CisgICAg
aWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIgfHwgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7
CiAgICAgICAgIGludCBpZGVudGlmaWVyTGVuZ3RoID0gY3VycmVudFNvdXJjZVB0cigpIC0gaWRl
bnRpZmllclN0YXJ0OwogICAgICAgICBpZiAoaXNBbGw4Qml0KQogICAgICAgICAgICAgaWRlbnQg
PSBtYWtlSWRlbnRpZmllckxDaGFyRnJvbVVDaGFyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmll
ckxlbmd0aCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGlkZW50ID0gbWFrZUlkZW50aWZp
ZXIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVuZ3RoKTsKLSAgICAgICAgCisgICAgICAg
IGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKKyAgICAgICAgICAgIGlmICghaXNTYWZl
SWRlbnRpZmllcigqbV92bSwgaWRlbnQpICYmICFpc1ByaXZhdGVOYW1lKSB7CisgICAgICAgICAg
ICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJUaGUgdXNlIG9mICciLCBpZGVu
dC0+c3RyaW5nKCksICInIGlzIGRpc2FsbG93ZWQgaW4gYnVpbHRpbiBmdW5jdGlvbnMuIik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgICAgICAgICAgaWRlbnQgPSBtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5nZXRQcml2YXRlTmFtZSgqaWRlbnQpOworICAgICAgICAgICAgZWxzZSBpZiAo
KmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQpCisgICAgICAg
ICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmlu
ZWRLZXl3b3JkUHJpdmF0ZU5hbWU7CisgICAgICAgICAgICBpZiAoIWlkZW50KQorICAgICAgICAg
ICAgICAgIHJldHVybiBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzsKKyAgICAgICAgfQog
ICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gaWRlbnQ7CiAgICAgfSBlbHNlCiAgICAgICAgIHRv
a2VuRGF0YS0+aWRlbnQgPSAwOwogICAgIAotICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwg
bWF4VG9rZW5MZW5ndGgpICYmICEobGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25vcmVSZXNlcnZl
ZFdvcmRzKSkpIHsKKyAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3Ro
KSAmJiAhKGxleGVyRmxhZ3MgJiBMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpICYmICFp
c1ByaXZhdGVOYW1lKSB7CiAgICAgICAgIEFTU0VSVChzaG91bGRDcmVhdGVJZGVudGlmaWVyKTsK
ICAgICAgICAgaWYgKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSB7CiAgICAgICAgICAgICBj
b25zdCBIYXNoRW50cnkqIGVudHJ5ID0gbV92bS0+a2V5d29yZHMtPmdldEtleXdvcmQoKmlkZW50
KTsKQEAgLTE2NTgsNiArMTcxMSw3IEBAIGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ6CiAgICAg
ICAgIEFTU0VSVChpc0lkZW50U3RhcnQobV9jdXJyZW50KSk7CiAgICAgICAgIEZBTExUSFJPVUdI
OwogICAgIGNhc2UgQ2hhcmFjdGVyQmFja1NsYXNoOgorICAgICAgICBwYXJzZUlkZW50OgogICAg
ICAgICBpZiAobGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250QnVpbGRLZXl3b3JkcykKICAgICAg
ICAgICAgIHRva2VuID0gcGFyc2VJZGVudGlmaWVyPGZhbHNlPih0b2tlbkRhdGEsIGxleGVyRmxh
Z3MsIHN0cmljdE1vZGUpOwogICAgICAgICBlbHNlCkBAIC0xNjcwLDYgKzE3MjQsMTEgQEAgaW5O
dW1iZXJBZnRlckRlY2ltYWxQb2ludDoKICAgICAgICAgbV90ZXJtaW5hdG9yID0gdHJ1ZTsKICAg
ICAgICAgbV9saW5lU3RhcnQgPSBtX2NvZGU7CiAgICAgICAgIGdvdG8gc3RhcnQ7CisgICAgY2Fz
ZSBDaGFyYWN0ZXJQcml2YXRlSWRlbnRpZmllclN0YXJ0OgorICAgICAgICBpZiAobV9wYXJzaW5n
QnVpbHRpbkZ1bmN0aW9uKQorICAgICAgICAgICAgZ290byBwYXJzZUlkZW50OworCisgICAgICAg
IEZBTExUSFJPVUdIOwogICAgIGNhc2UgQ2hhcmFjdGVySW52YWxpZDoKICAgICAgICAgbV9sZXhF
cnJvck1lc3NhZ2UgPSBpbnZhbGlkQ2hhcmFjdGVyTWVzc2FnZSgpOwogICAgICAgICB0b2tlbiA9
IEVSUk9SVE9LOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCmluZGV4IDI4YzYxYmEx
OThkMmMxNWE0OWJiMTg1MmVkMzBiZWZlYjg5MDQwMDguLmI4ODczZTk5NTAyODY0NGJmOGNiYjNk
NGMyZGE1NjJlOTNlMGU4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTGV4ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKQEAg
LTcyLDcgKzcyLDcgQEAgY2xhc3MgTGV4ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogCiBwdWJsaWM6Ci0gICAgTGV4ZXIoVk0qKTsKKyAgICBMZXhlcihWTSosIEpTUGFyc2VyU3Ry
aWN0bmVzcyk7CiAgICAgfkxleGVyKCk7CiAKICAgICAvLyBDaGFyYWN0ZXIgbWFuaXB1bGF0aW9u
IGZ1bmN0aW9ucy4KQEAgLTIzOCw2ICsyMzgsNyBAQCBwcml2YXRlOgogICAgIElkZW50aWZpZXJB
cmVuYSogbV9hcmVuYTsKIAogICAgIFZNKiBtX3ZtOworICAgIGJvb2wgbV9wYXJzaW5nQnVpbHRp
bkZ1bmN0aW9uOwogfTsKIAogdGVtcGxhdGUgPD4KQEAgLTMzNSw2ICszMzYsMTIgQEAgQUxXQVlT
X0lOTElORSBjb25zdCBJZGVudGlmaWVyKiBMZXhlcjxUPjo6bWFrZUxDaGFySWRlbnRpZmllcihj
b25zdCBVQ2hhciogY2hhcmEKICAgICByZXR1cm4gJm1fYXJlbmEtPm1ha2VJZGVudGlmaWVyTENo
YXJGcm9tVUNoYXIobV92bSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKIH0KIAorI2lmIEFTU0VSVF9E
SVNBQkxFRAorQUxXQVlTX0lOTElORSBib29sIGlzU2FmZUlkZW50aWZpZXIoVk0mLCBjb25zdCBJ
ZGVudGlmaWVyKikgeyByZXR1cm4gdHJ1ZTsgfQorI2Vsc2UKK2Jvb2wgaXNTYWZlSWRlbnRpZmll
cihWTSYsIGNvbnN0IElkZW50aWZpZXIqKTsKKyNlbmRpZgorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KIEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZp
ZXIoSlNUb2tlbiogdG9rZW5SZWNvcmQsIHVuc2lnbmVkIGxleGVyRmxhZ3MsIGJvb2wgc3RyaWN0
TW9kZSkKIHsKQEAgLTM3MCwxMCArMzc3LDE1IEBAIEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUg
TGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tlbiogdG9rZW5SZWNvcmQsIHVuCiAg
ICAgQVNTRVJUKGN1cnJlbnRPZmZzZXQoKSA+PSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCkpOwog
CiAgICAgLy8gQ3JlYXRlIHRoZSBpZGVudGlmaWVyIGlmIG5lZWRlZAotICAgIGlmIChsZXhlckZs
YWdzICYgTGV4ZXhGbGFnc0RvbnRCdWlsZEtleXdvcmRzKQorICAgIGlmIChsZXhlckZsYWdzICYg
TGV4ZXhGbGFnc0RvbnRCdWlsZEtleXdvcmRzCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAg
ICAmJiAhbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uCisjZW5kaWYKKyAgICAgICAgKQogICAgICAg
ICB0b2tlbkRhdGEtPmlkZW50ID0gMDsKICAgICBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRl
bnQgPSBtYWtlTENoYXJJZGVudGlmaWVyKHN0YXJ0LCBwdHIgLSBzdGFydCk7CisKICAgICB0b2tl
bkxvY2F0aW9uLT5saW5lID0gbV9saW5lTnVtYmVyOwogICAgIHRva2VuTG9jYXRpb24tPmxpbmVT
dGFydE9mZnNldCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKICAgICB0b2tlbkxvY2F0aW9u
LT5zdGFydE9mZnNldCA9IG9mZnNldEZyb21Tb3VyY2VQdHIoc3RhcnQpOwpAQCAtMzgxLDYgKzM5
MywxMyBAQCBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhFeHBlY3RJZGVu
dGlmaWVyKEpTVG9rZW4qIHRva2VuUmVjb3JkLCB1bgogICAgIEFTU0VSVCh0b2tlbkxvY2F0aW9u
LT5zdGFydE9mZnNldCA+PSB0b2tlbkxvY2F0aW9uLT5saW5lU3RhcnRPZmZzZXQpOwogICAgIHRv
a2VuUmVjb3JkLT5tX3N0YXJ0UG9zaXRpb24gPSBzdGFydFBvc2l0aW9uOwogICAgIHRva2VuUmVj
b3JkLT5tX2VuZFBvc2l0aW9uID0gY3VycmVudFBvc2l0aW9uKCk7CisjaWYgIUFTU0VSVF9ESVNB
QkxFRAorICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKKyAgICAgICAgaWYgKCFp
c1NhZmVJZGVudGlmaWVyKCptX3ZtLCB0b2tlbkRhdGEtPmlkZW50KSkKKyAgICAgICAgICAgIHJl
dHVybiBFUlJPUlRPSzsKKyAgICB9CisjZW5kaWYKKwogICAgIG1fbGFzdFRva2VuID0gSURFTlQ7
CiAgICAgcmV0dXJuIElERU5UOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmNwcAppbmRleCBmYzljY2Q5ZjZjNTc2YzFhZWY1NDdmMjExZmRkNTk2ZjQyZTA1ODA2Li5kOTUy
YmE2YTk0ZDJmNmI0MTgyMTU1MDA0ZDBhOTcwODQyOWJkNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMTMyLDYgKzEzMiwxMiBAQCBQYXNzUmVmUHRyPFByb2dy
YW1Ob2RlPiBQcm9ncmFtTm9kZTo6Y3JlYXRlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBzdGFydAogICAgIHJldHVybiBub2RlLnJlbGVhc2UoKTsKIH0KIAorCit2b2lkIFByb2dyYW1O
b2RlOjpzZXRDbG9zZWRWYXJpYWJsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4m
JiBjbG9zZWRWYXJpYWJsZXMpCit7CisgICAgbV9jbG9zZWRWYXJpYWJsZXMgPSBzdGQ6Om1vdmUo
Y2xvc2VkVmFyaWFibGVzKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IEV2YWxOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGlubGluZSBFdmFsTm9k
ZTo6RXZhbE5vZGUoVk0qIHZtLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24s
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIGVuZENvbHVtbiwg
U291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3Rh
Y2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IGQ3NzlhMTc4ZDk1NmZmOTlm
ZDBiZWQ1ZDVmNDU0YWEzZTZiNTA4NzkuLjgxNmZmMDAxYWJmMDM3NmM2NDJmMWE5MzhkMGUwYTlm
NTI5Y2E2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTE0MzEsNiAr
MTQzMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG5lZWRzQWN0aXZhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIChoYXNDYXB0dXJlZFZhcmlhYmxlcygpKSB8fCAobV9mZWF0dXJlcyAm
IChFdmFsRmVhdHVyZSB8IFdpdGhGZWF0dXJlIHwgQ2F0Y2hGZWF0dXJlKSk7IH0KICAgICAgICAg
Ym9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuICEhbV9jYXB0dXJlZFZh
cmlhYmxlcy5zaXplKCk7IH0KICAgICAgICAgc2l6ZV90IGNhcHR1cmVkVmFyaWFibGVDb3VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FwdHVyZWRWYXJpYWJsZXMuc2l6ZSgpOyB9CisgICAgICAgIGNv
bnN0IElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9j
YXB0dXJlZFZhcmlhYmxlczsgfQogICAgICAgICBib29sIGNhcHR1cmVzKGNvbnN0IElkZW50aWZp
ZXImIGlkZW50KSB7IHJldHVybiBtX2NhcHR1cmVkVmFyaWFibGVzLmNvbnRhaW5zKGlkZW50Lmlt
cGwoKSk7IH0KIAogICAgICAgICBWYXJTdGFjayYgdmFyU3RhY2soKSB7IHJldHVybiBtX3ZhclN0
YWNrOyB9CkBAIC0xNDQ2LDYgKzE0NDcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3Rh
dGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50KCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBlbWl0
U3RhdGVtZW50c0J5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZGVzdGlu
YXRpb24pOworICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRDbG9zZWRWYXJpYWJsZXMoY29uc3Qg
VmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJikgeyB9CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAg
ICAgIHZvaWQgc2V0U291cmNlKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkgeyBtX3NvdXJjZSA9
IHNvdXJjZTsgfQpAQCAtMTQ3NSwxMSArMTQ3OCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBzdGF0aWMgY29uc3QgYm9vbCBzY29wZUlzRnVuY3Rpb24gPSBmYWxzZTsKIAorICAgICAg
ICB2b2lkIHNldENsb3NlZFZhcmlhYmxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+
PiYmKTsKKyAgICAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mIGNsb3NlZFZh
cmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2xvc2VkVmFyaWFibGVzOyB9CiAgICAgcHJpdmF0
ZToKICAgICAgICAgUHJvZ3JhbU5vZGUoVk0qLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0
LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2ln
bmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sq
LCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51
bUNvbnN0YW50cyk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7Ci0KKyAgICAgICAgVmVjdG9y
PFJlZlB0cjxTdHJpbmdJbXBsPj4gbV9jbG9zZWRWYXJpYWJsZXM7CiAgICAgICAgIHVuc2lnbmVk
IG1fc3RhcnRDb2x1bW47CiAgICAgICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwogICAgIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggMjk3NjY2ZTcyNmU0NWQw
ODNlZjEzNDlkZGZmZGYzN2VmODAwZGY3YS4uNTBiZWM3OWZlMzhhZGY4ZjNhMDRmNmI0NmNiZDJh
NWNiZmNmMjQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAt
MjA0LDggKzIwNCw5IEBAIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIoVk0qIHZtLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uUGFyYW1ldGVycyoKICAgICAsIG1fbGFzdElkZW50
aWZpZXIoMCkKICAgICAsIG1fbGFzdEZ1bmN0aW9uTmFtZShudWxscHRyKQogICAgICwgbV9zb3Vy
Y2VFbGVtZW50cygwKQorICAgICwgbV9wYXJzaW5nQnVpbHRpbihzdHJpY3RuZXNzID09IEpTUGFy
c2VCdWlsdGluKQogewotICAgIG1fbGV4ZXIgPSBhZG9wdFB0cihuZXcgTGV4ZXJUeXBlKHZtKSk7
CisgICAgbV9sZXhlciA9IGFkb3B0UHRyKG5ldyBMZXhlclR5cGUodm0sIHN0cmljdG5lc3MpKTsK
ICAgICBtX2FyZW5hID0gbV92bS0+cGFyc2VyQXJlbmEuZ2V0KCk7CiAgICAgbV9sZXhlci0+c2V0
Q29kZShzb3VyY2UsIG1fYXJlbmEpOwogICAgIG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lID0gc291
cmNlLmZpcnN0TGluZSgpOwpAQCAtMjU2LDYgKzI1Nyw3IEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VJbm5lcigpCiAgICAgSWRlbnRpZmllclNldCBjYXB0dXJlZFZhcmlhYmxlczsK
ICAgICBib29sIG1vZGlmaWVkUGFyYW1ldGVyID0gZmFsc2U7CiAgICAgc2NvcGUtPmdldENhcHR1
cmVkVmFyaWFibGVzKGNhcHR1cmVkVmFyaWFibGVzLCBtb2RpZmllZFBhcmFtZXRlcik7CisgICAg
CiAgICAgQ29kZUZlYXR1cmVzIGZlYXR1cmVzID0gY29udGV4dC5mZWF0dXJlcygpOwogICAgIGlm
IChzY29wZS0+c3RyaWN0TW9kZSgpKQogICAgICAgICBmZWF0dXJlcyB8PSBTdHJpY3RNb2RlRmVh
dHVyZTsKQEAgLTI2MywyMSArMjY1LDM2IEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VJbm5lcigpCiAgICAgICAgIGZlYXR1cmVzIHw9IFNoYWRvd3NBcmd1bWVudHNGZWF0dXJlOwog
ICAgIGlmIChtb2RpZmllZFBhcmFtZXRlcikKICAgICAgICAgZmVhdHVyZXMgfD0gTW9kaWZpZWRQ
YXJhbWV0ZXJGZWF0dXJlOwotCisgICAgCisgICAgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4g
Y2xvc2VkVmFyaWFibGVzOworICAgIGlmIChtX3BhcnNpbmdCdWlsdGluKSB7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCFjYXB0dXJlZFZhcmlhYmxlcy5zaXplKCkpOworICAgICAgICBJZGVudGlm
aWVyU2V0IHVzZWRWYXJpYWJsZXM7CisgICAgICAgIHNjb3BlLT5nZXRVc2VkVmFyaWFibGVzKHVz
ZWRWYXJpYWJsZXMpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHZhcmlhYmxlIDogdXNlZFZh
cmlhYmxlcykgeworICAgICAgICAgICAgaWYgKHNjb3BlLT5oYXNEZWNsYXJlZFZhcmlhYmxlKElk
ZW50aWZpZXIobV92bSwgdmFyaWFibGUuZ2V0KCkpKSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHNjb3BlLT5oYXNEZWNsYXJlZFBhcmFt
ZXRlcihJZGVudGlmaWVyKG1fdm0sIHZhcmlhYmxlLmdldCgpKSkpCisgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICBjbG9zZWRWYXJpYWJsZXMuYXBwZW5kKHZhcmlhYmxlKTsK
KyAgICAgICAgfQorICAgIH0KICAgICBkaWRGaW5pc2hQYXJzaW5nKHNvdXJjZUVsZW1lbnRzLCBj
b250ZXh0LnZhckRlY2xhcmF0aW9ucygpLCBjb250ZXh0LmZ1bmNEZWNsYXJhdGlvbnMoKSwgZmVh
dHVyZXMsCi0gICAgICAgIGNvbnRleHQubnVtQ29uc3RhbnRzKCksIGNhcHR1cmVkVmFyaWFibGVz
KTsKKyAgICAgICAgY29udGV4dC5udW1Db25zdGFudHMoKSwgY2FwdHVyZWRWYXJpYWJsZXMsIHN0
ZDo6bW92ZShjbG9zZWRWYXJpYWJsZXMpKTsKIAogICAgIHJldHVybiBwYXJzZUVycm9yOwogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdm9pZCBQYXJzZXI8TGV4ZXJUeXBlPjo6
ZGlkRmluaXNoUGFyc2luZyhTb3VyY2VFbGVtZW50cyogc291cmNlRWxlbWVudHMsIFBhcnNlckFy
ZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+KiB2YXJTdGFjaywgCi0gICAgUGFy
c2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiogZnVuY1N0YWNr
LCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMsIElkZW50aWZpZXJTZXQm
IGNhcHR1cmVkVmFycykKKyAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1
bmN0aW9uU3RhY2s+KiBmdW5jU3RhY2ssIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNv
bnN0YW50cywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJzLCBjb25zdCBWZWN0b3I8UmVmUHRy
PFN0cmluZ0ltcGw+PiYmIGNsb3NlZFZhcmlhYmxlcykKIHsKICAgICBtX3NvdXJjZUVsZW1lbnRz
ID0gc291cmNlRWxlbWVudHM7CiAgICAgbV92YXJEZWNsYXJhdGlvbnMgPSB2YXJTdGFjazsKICAg
ICBtX2Z1bmNEZWNsYXJhdGlvbnMgPSBmdW5jU3RhY2s7CiAgICAgbV9jYXB0dXJlZFZhcmlhYmxl
cy5zd2FwKGNhcHR1cmVkVmFycyk7CisgICAgbV9jbG9zZWRWYXJpYWJsZXMgPSBjbG9zZWRWYXJp
YWJsZXM7CiAgICAgbV9mZWF0dXJlcyA9IGZlYXR1cmVzOwogICAgIG1fbnVtQ29uc3RhbnRzID0g
bnVtQ29uc3RhbnRzOwogfQpAQCAtMjM0Niw2ICsyMzYzLDEwIEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBMZXhlclR5cGU+IHZvaWQgUGFyc2VyPExleGVyVHlwZT46OnByaW50VW5leHBlY3RlZFRva2Vu
VGV4dChXCiAgICAgY2FzZSBSRVNFUlZFRDoKICAgICAgICAgb3V0LnByaW50KCJVbmV4cGVjdGVk
IHVzZSBvZiByZXNlcnZlZCB3b3JkICciLCBnZXRUb2tlbigpLCAiJyIpOwogICAgICAgICByZXR1
cm47CisKKyAgICBjYXNlIElOVkFMSURfUFJJVkFURV9OQU1FX0VSUk9SVE9LOgorICAgICAgICBv
dXQucHJpbnQoIkludmFsaWQgcHJpdmF0ZSBuYW1lICciLCBnZXRUb2tlbigpLCAiJyIpOworICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAKICAgICBjYXNlIElERU5UOgogICAgICAgICBvdXQu
cHJpbnQoIlVuZXhwZWN0ZWQgaWRlbnRpZmllciAnIiwgZ2V0VG9rZW4oKSwgIiciKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGI2OThlZjkzNjhjYjhjOGYxOTdjY2Qw
MDBhY2FhNmRmYjExYmEyNDQuLjkwMzM4NTBjOGM5N2Y1N2UyMWRhNWVlZGIwMmQwNDRmNGM4OTc4
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjMsNiArMjMsNyBA
QAogI2lmbmRlZiBQYXJzZXJfaAogI2RlZmluZSBQYXJzZXJfaAogCisjaW5jbHVkZSAiQ29tbW9u
SWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlv
bkhlbHBlcnMuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCkBAIC0yNTksNiArMjYwLDEwIEBA
IHN0cnVjdCBTY29wZSB7CiAgICAgICAgIHJldHVybiBpc1ZhbGlkU3RyaWN0TW9kZSA/IEJpbmRp
bmdTdWNjZWVkZWQgOiBTdHJpY3RCaW5kaW5nRmFpbGVkOwogICAgIH0KIAorICAgIHZvaWQgZ2V0
VXNlZFZhcmlhYmxlcyhJZGVudGlmaWVyU2V0JiB1c2VkVmFyaWFibGVzKQorICAgIHsKKyAgICAg
ICAgdXNlZFZhcmlhYmxlcy5zd2FwKG1fdXNlZFZhcmlhYmxlcyk7CisgICAgfQogCiAgICAgdm9p
ZCB1c2VWYXJpYWJsZShjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgYm9vbCBpc0V2YWwpCiAgICAg
ewpAQCAtNDE0LDYgKzQxOSw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+
IHBhcnNlKFBhcnNlckVycm9yJik7CiAKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9y
ZUxhc3ROZXdsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+cG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZSgpOyB9CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJiBjbG9z
ZWRWYXJpYWJsZXMoKSB7IHJldHVybiBzdGQ6Om1vdmUobV9jbG9zZWRWYXJpYWJsZXMpOyB9CiAK
IHByaXZhdGU6CiAgICAgc3RydWN0IEFsbG93SW5PdmVycmlkZSB7CkBAIC01NDAsNyArNTQ2LDcg
QEAgcHJpdmF0ZToKICAgICBTdHJpbmcgcGFyc2VJbm5lcigpOwogCiAgICAgdm9pZCBkaWRGaW5p
c2hQYXJzaW5nKFNvdXJjZUVsZW1lbnRzKiwgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3Rh
Y2tzOjpWYXJTdGFjaz4qLCAKLSAgICAgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3Rh
Y2tzOjpGdW5jdGlvblN0YWNrPiosIENvZGVGZWF0dXJlcywgaW50LCBJZGVudGlmaWVyU2V0Jik7
CisgICAgICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFj
az4qLCBDb2RlRmVhdHVyZXMsIGludCwgSWRlbnRpZmllclNldCYsIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8U3RyaW5nSW1wbD4+JiYpOwogCiAgICAgLy8gVXNlZCB0byBkZXRlcm1pbmUgdHlwZSBvZiBl
cnJvciB0byByZXBvcnQuCiAgICAgYm9vbCBpc0Z1bmN0aW9uQm9keU5vZGUoU2NvcGVOb2RlKikg
eyByZXR1cm4gZmFsc2U7IH0KQEAgLTg0MCw5ICs4NDYsMTEgQEAgcHJpdmF0ZToKICAgICBjb25z
dCBJZGVudGlmaWVyKiBtX2xhc3RGdW5jdGlvbk5hbWU7CiAgICAgUmVmUHRyPFNvdXJjZVByb3Zp
ZGVyQ2FjaGU+IG1fZnVuY3Rpb25DYWNoZTsKICAgICBTb3VyY2VFbGVtZW50cyogbV9zb3VyY2VF
bGVtZW50czsKKyAgICBib29sIG1fcGFyc2luZ0J1aWx0aW47CiAgICAgUGFyc2VyQXJlbmFEYXRh
PERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjaz4qIG1fdmFyRGVjbGFyYXRpb25zOwogICAgIFBh
cnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qIG1fZnVuY0Rl
Y2xhcmF0aW9uczsKICAgICBJZGVudGlmaWVyU2V0IG1fY2FwdHVyZWRWYXJpYWJsZXM7CisgICAg
VmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4gbV9jbG9zZWRWYXJpYWJsZXM7CiAgICAgQ29kZUZl
YXR1cmVzIG1fZmVhdHVyZXM7CiAgICAgaW50IG1fbnVtQ29uc3RhbnRzOwogICAgIApAQCAtOTU3
LDYgKzk2NSwxMCBAQCBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IHBhcnNlKFZNKiB2bSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcgogICAgICAgICBSZWZQdHI8UGFy
c2VkTm9kZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yKTsKICAgICAg
ICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25C
ZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7Cisg
ICAgICAgIGlmIChzdHJpY3RuZXNzID09IEpTUGFyc2VCdWlsdGluKSB7CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChyZXN1bHQpOworICAgICAgICAgICAgcmVzdWx0LT5zZXRDbG9zZWRWYXJp
YWJsZXMoc3RkOjptb3ZlKHBhcnNlci5jbG9zZWRWYXJpYWJsZXMoKSkpOworICAgICAgICB9CiAg
ICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogICAgIH0KICAgICBQYXJzZXI8TGV4ZXI8
VUNoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgcGFyYW1ldGVycywgbmFtZSwgc3RyaWN0bmVzcywg
cGFyc2VyTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlck1vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgK
aW5kZXggNGU5YTE3Y2QyMWNhMzQxNDZiYmQ0ODE1NmEzNzJjZDQwNGRlZjYwYy4uZjdhNzViZjdj
Mzc4NTdlNDRiNmQ1ZDcxZjQ1MjliYjFhYzFjZjVmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyTW9kZXMuaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAotZW51bSBKU1BhcnNlclN0cmljdG5lc3MgeyBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlU3Ry
aWN0IH07CitlbnVtIEpTUGFyc2VyU3RyaWN0bmVzcyB7IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VC
dWlsdGluLCBKU1BhcnNlU3RyaWN0IH07CiBlbnVtIEpTUGFyc2VyTW9kZSB7IEpTUGFyc2VQcm9n
cmFtQ29kZSwgSlNQYXJzZUZ1bmN0aW9uQ29kZSB9OwogCiBlbnVtIFByb2ZpbGVyTW9kZSB7IFBy
b2ZpbGVyT2ZmLCBQcm9maWxlck9uIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlclRva2Vucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJUb2tlbnMuaAppbmRleCA4MmEyNjYzOWE3OTIyMGEwODQ0NTZiNDhmMzI4NTJkMTQzYzcz
OWQwLi44Yzg3YWQ5ZmFkYmRjNGFmMzlhYzk5ZGIyZDg0NDVlMTNmZmZkMzVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKQEAgLTE0OSw2ICsxNDksNyBA
QCBlbnVtIEpTVG9rZW5UeXBlIHsKICAgICBJTlZBTElEX05VTUVSSUNfTElURVJBTF9FUlJPUlRP
SyA9IDcgfCBFcnJvclRva2VuRmxhZywKICAgICBVTlRFUk1JTkFURURfU1RSSU5HX0xJVEVSQUxf
RVJST1JUT0sgPSA4IHwgRXJyb3JUb2tlbkZsYWcgfCBVbnRlcm1pbmF0ZWRFcnJvclRva2VuRmxh
ZywKICAgICBJTlZBTElEX1NUUklOR19MSVRFUkFMX0VSUk9SVE9LID0gOSB8IEVycm9yVG9rZW5G
bGFnLAorICAgIElOVkFMSURfUFJJVkFURV9OQU1FX0VSUk9SVE9LID0gMTAgfCBFcnJvclRva2Vu
RmxhZwogfTsKIAogc3RydWN0IEpTVGV4dFBvc2l0aW9uIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJnTGlzdC5jcHAKaW5kZXggZTEzMTA0ZGY1OTIyZDA3NzYyNTdkMDVjYjVlODcw
NTM3ZDIxNDI4YS4uMjRjMDZiYmIxYzJjMzRiOWRhNWVmODRiMjU1Yzk5MDBkYWY4NTkxMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5jcHAKQEAgLTIyLDcgKzIyLDcg
QEAKICNpbmNsdWRlICJBcmdMaXN0LmgiCiAKICNpbmNsdWRlICJIZWFwUm9vdFZpc2l0b3IuaCIK
LSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
ICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKaW5kZXggOGZkMTk1Y2I5YjVm
N2VmNWJmM2QyZmQ5MzM0MmIwMTAyNzI1ZmFmMS4uNGZiYWM2ODg2MzQ4NjE3MTY0OWEzMzRkNjFi
NWRjYzM4MTRkZDU1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVu
dHMuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiQXJndW1lbnRzLmgiCiAKICNpbmNs
dWRlICJDYWxsRnJhbWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIK
ICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0FyZ3VtZW50c0l0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bcmd1bWVudHMuaAppbmRleCAxOGYzODkxNzEzODUyMzYyYzdhNzVhMzA1M2I0NjMxNDE3YmVi
ODFiLi5mMTZmZDNkZTQwNTU5NzBiYTlkOWM2ZjBhZTYzMThmMjIwNGI2NTRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaApAQCAtMjUsNiArMjUsNyBAQAogI2Rl
ZmluZSBBcmd1bWVudHNfaAogCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgorI2luY2x1ZGUgIkNv
bW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAi
SlNEZXN0cnVjdGlibGVPYmplY3QuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvckNvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJh
dG9yQ29uc3RydWN0b3IuY3BwCmluZGV4IGFmYjU5NzkwY2IwMDk5ODliYjdiNDI4NjNlOTE4MjMz
NTc2YjhhYWMuLjkxY2FjZGZhODU3ZWI2OTM3NmEzMDgxYThjNzAyYWM5YzIxN2NhN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yQ29u
c3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50
c0l0ZXJhdG9yQ29uc3RydWN0b3IuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQXJn
dW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5oIgogCiAjaW5jbHVkZSAiQXJndW1lbnRzSXRlcmF0
b3JQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUg
IkpTQXJndW1lbnRzSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcAppbmRleCBk
ZDA4OTRmMTRhMDIxZDVmMTI2NThhY2IwMWU3MjFmY2Q2ZDM0OGNjLi41YjRhZTg3MTZiMDU1M2Jl
NDYyMzk1NWU5OWUxYjQzZWJmMThmZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCkBAIC0y
Niw3ICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRzSXRl
cmF0b3JQcm90b3R5cGUuaCIKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5j
bHVkZSAiSlNBcmd1bWVudHNJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVz
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggMjdhYzZkNDhhNzFmNzk1NTAyYTEwY2VhNjQ3
ODY1NDEzNWE0NjNhMC4uNmRjN2JlNTY5NjlkZTY3ZjYyMTA3YmIzYTUxYTMwOGZhM2JhNzZiZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTQXJyYXlJ
dGVyYXRvci5oIgogI2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5oIgorI2luY2x1ZGUgIkpTU3Ry
aW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nSm9pbmVyLmgiCiAjaW5jbHVkZSAiTG9v
a3VwLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCkBAIC01Niw3ICs1Nyw2IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU2xpY2UoRXhl
Y1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3Rv
RnVuY1NvcnQoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvRnVuY1NwbGljZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVW5TaGlmdChFeGVjU3RhdGUqKTsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRXZlcnkoRXhlY1N0
YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y0ZvckVhY2goRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvRnVuY1NvbWUoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0luZGV4T2YoRXhlY1N0YXRlKik7CkBAIC05NTQs
NjkgKzk1NCw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNN
YXAoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0QXJy
YXkpOwogfQogCi0vLyBEb2N1bWVudGF0aW9uIGZvciB0aGVzZSB0aHJlZSBpcyBhdmFpbGFibGUg
YXQ6Ci0vLyBodHRwOi8vZGV2ZWxvcGVyLXRlc3QubW96aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0ph
dmFTY3JpcHRfMS41X1JlZmVyZW5jZTpPYmplY3RzOkFycmF5OmV2ZXJ5Ci0vLyBodHRwOi8vZGV2
ZWxvcGVyLXRlc3QubW96aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0phdmFTY3JpcHRfMS41X1JlZmVy
ZW5jZTpPYmplY3RzOkFycmF5OmZvckVhY2gKLS8vIGh0dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3pp
bGxhLm9yZy9lbi9kb2NzL0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6QXJy
YXk6c29tZQotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRXZl
cnkoRXhlY1N0YXRlKiBleGVjKQotewotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhlYy0+aG9z
dFRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKLSAg
ICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzT2JqLT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1l
cygpLmxlbmd0aCkudG9VSW50MzIoZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCi0gICAg
SlNWYWx1ZSBmdW5jdGlvbiA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIENhbGxEYXRhIGNhbGxE
YXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxE
YXRhKTsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLQotICAgIEpTVmFsdWUgYXBwbHlUaGlzID0gZXhlYy0+
YXJndW1lbnQoMSk7Ci0KLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbih0cnVlKTsKLQot
ICAgIHVuc2lnbmVkIGsgPSAwOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUpTICYmIGlz
SlNBcnJheSh0aGlzT2JqKSkgewotICAgICAgICBKU0Z1bmN0aW9uKiBmID0ganNDYXN0PEpTRnVu
Y3Rpb24qPihmdW5jdGlvbik7Ci0gICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh0aGlz
T2JqKTsKLSAgICAgICAgQ2FjaGVkQ2FsbCBjYWNoZWRDYWxsKGV4ZWMsIGYsIDMpOwotICAgICAg
ICBmb3IgKDsgayA8IGxlbmd0aCAmJiAhZXhlYy0+aGFkRXhjZXB0aW9uKCk7ICsraykgewotICAg
ICAgICAgICAgaWYgKFVOTElLRUxZKCFhcnJheS0+Y2FuR2V0SW5kZXhRdWlja2x5KGspKSkKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkQ2Fs
bC5zZXRUaGlzKGFwcGx5VGhpcyk7Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50
KDAsIGFycmF5LT5nZXRJbmRleFF1aWNrbHkoaykpOwotICAgICAgICAgICAgY2FjaGVkQ2FsbC5z
ZXRBcmd1bWVudCgxLCBqc051bWJlcihrKSk7Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFy
Z3VtZW50KDIsIHRoaXNPYmopOwotICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWNoZWRD
YWxsLmNhbGwoKTsKLSAgICAgICAgICAgIGlmICghcmVzdWx0LnRvQm9vbGVhbihleGVjKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwot
ICAgICAgICB9Ci0gICAgfQotICAgIGZvciAoOyBrIDwgbGVuZ3RoICYmICFleGVjLT5oYWRFeGNl
cHRpb24oKTsgKytrKSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmopOwotICAg
ICAgICBpZiAoIXRoaXNPYmotPmdldFByb3BlcnR5U2xvdChleGVjLCBrLCBzbG90KSkKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGVhY2hBcmd1
bWVudHM7Ci0gICAgICAgIGVhY2hBcmd1bWVudHMuYXBwZW5kKHNsb3QuZ2V0VmFsdWUoZXhlYywg
aykpOwotICAgICAgICBlYWNoQXJndW1lbnRzLmFwcGVuZChqc051bWJlcihrKSk7Ci0gICAgICAg
IGVhY2hBcmd1bWVudHMuYXBwZW5kKHRoaXNPYmopOwotCi0gICAgICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7Ci0KLSAgICAgICAgYm9vbCBwcmVkaWNhdGVSZXN1bHQgPSBjYWxsKGV4ZWMsIGZ1bmN0
aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGFwcGx5VGhpcywgZWFjaEFyZ3VtZW50cykudG9Cb29s
ZWFuKGV4ZWMpOwotICAgICAgICBpZiAoIXByZWRpY2F0ZVJlc3VsdCkgewotICAgICAgICAgICAg
cmVzdWx0ID0ganNCb29sZWFuKGZhbHNlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotfQotCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRm9yRWFjaChFeGVjU3RhdGUq
IGV4ZWMpCiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmogPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCku
dG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggNTEwZTM4M2ZhZTU3NWFhZGE4MTc2
YzA0NDFlZTcyNWI0M2E0YzczMi4uZDMwNDg3N2ZlOWNkZTFjMDkxOWZkNDU5NWY4MTFlY2FiY2U3
NzI3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBA
IC0xNDQsMjQgKzE0NCwyNiBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hl
OjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShWTSYgdgogICAgIEpTVGV4dFBv
c2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmU7CiAgICAgUmVmUHRyPFByb2dyYW1Ob2Rl
PiBwcm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KCZ2bSwgc291cmNlLCAwLCBJZGVudGlmaWVy
KCksIEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VQcm9ncmFtQ29kZSwgZXJyb3IsICZwb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lKTsKICAgICBpZiAoIXByb2dyYW0pIHsKLSAgICAgICAgQVNTRVJUKGVy
cm9yLm1fdHlwZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoZXJyb3IubV90eXBlICE9IFBhcnNlckVycm9yOjpFcnJvck5vbmUpOwogICAgICAgICBt
X3NvdXJjZUNvZGUucmVtb3ZlKGFkZFJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBhbiBpbnB1dCBzdHJpbmcg
dGhhdCB3b3VsZCByZXN1bHQgaW4gYSBzaW5nbGUgYW5vbnltb3VzIGZ1bmN0aW9uIGV4cHJlc3Np
b24uCiAgICAgU3RhdGVtZW50Tm9kZSogZXhwclN0YXRlbWVudCA9IHByb2dyYW0tPnNpbmdsZVN0
YXRlbWVudCgpOwotICAgIEFTU0VSVChleHByU3RhdGVtZW50KTsKLSAgICBBU1NFUlQoZXhwclN0
YXRlbWVudC0+aXNFeHByU3RhdGVtZW50KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0
ZW1lbnQpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVu
dCgpKTsKICAgICBFeHByZXNzaW9uTm9kZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxFeHByU3Rh
dGVtZW50Tm9kZSo+KGV4cHJTdGF0ZW1lbnQpLT5leHByKCk7Ci0gICAgQVNTRVJUKGZ1bmNFeHBy
KTsKKyAgICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwcik7CiAgICAgUkVMRUFTRV9BU1NFUlQoZnVu
Y0V4cHItPmlzRnVuY0V4cHJOb2RlKCkpOwogICAgIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkgPSBz
dGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihmdW5jRXhwciktPmJvZHkoKTsKKyAgICBSRUxFQVNF
X0FTU0VSVCghcHJvZ3JhbS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CisgICAgCiAgICAgYm9k
eS0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7Ci0gICAgQVNTRVJU
KGJvZHkpOwotICAgIEFTU0VSVChib2R5LT5pZGVudCgpLmlzTnVsbCgpKTsKKyAgICBSRUxFQVNF
X0FTU0VSVChib2R5KTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5LT5pZGVudCgpLmlzTnVsbCgp
KTsKIAotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUg
PSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBib2R5LCB0
cnVlKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxl
ID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgYm9keSwg
dHJ1ZSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbik7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5t
X25hbWVWYWx1ZS5zZXQodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwganNTdHJpbmcoJnZtLCBuYW1l
LnN0cmluZygpKSk7CiAKICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gU291cmNlQ29k
ZVZhbHVlKHZtLCBmdW5jdGlvbkV4ZWN1dGFibGUsIG1fc291cmNlQ29kZS5hZ2UoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAK
aW5kZXggM2Y1YzY0NWMwOThkNTI3ZmMwYzcyNTllOTQ0N2VmYmU4ODY4YTI5Yy4uMmZjMmI3Mjdh
ZmNlZWUxZWMyYzYyNWRlNTY3NWIzYmUxY2Y2MGQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcApAQCAtMjcsNyArMjcsMTAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICNkZWZpbmUgSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKG5h
bWUpICwgbmFtZSh2bSwgI25hbWUpCiAjZGVmaW5lIElOSVRJQUxJWkVfS0VZV09SRChuYW1lKSAs
IG5hbWUjI0tleXdvcmQodm0sICNuYW1lKQotI2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFN
RShuYW1lKSAsIG5hbWUjI1ByaXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb20oUHJpdmF0ZU5hbWUo
KSkpCisjZGVmaW5lIElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKG5hbWUpIFwKKyAgICAsIG5hbWUj
I1ByaXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb20oUHJpdmF0ZU5hbWUoKSkpIFwKKyAgICAsIG1f
IyNuYW1lIyNQdWJsaWNTdHJpbmdQYWlyKG5hbWUsIG5hbWUjI1ByaXZhdGVOYW1lKSBcCisKIAog
Q29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZNKiB2bSkKICAgICA6IG51bGxJ
ZGVudGlmaWVyKCkKQEAgLTM4LDggKzQxLDI2IEBAIENvbW1vbklkZW50aWZpZXJzOjpDb21tb25J
ZGVudGlmaWVycyhWTSogdm0pCiAgICAgLCBoYXNOZXh0SWRlbnRpZmllcih2bSwgImhhc05leHQi
KQogICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKElOSVRJQUxJWkVfS0VZ
V09SRCkKICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklU
SUFMSVpFX1BST1BFUlRZX05BTUUpCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9O
QU1FKElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRSkKICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURF
TlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKQogewog
fQogCitjb25zdCBJZGVudGlmaWVyKiBDb21tb25JZGVudGlmaWVyczo6Z2V0UHJpdmF0ZU5hbWUo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0Cit7CisjZGVmaW5lIFJFVFVSTl9JRl9QUklW
QVRFX05BTUVfTUFUQ0hFUyhuYW1lKSBpZiAobV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuZmly
c3QgPT0gaWRlbnQpIHJldHVybiAmbV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuc2Vjb25kOwor
ICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoUkVU
VVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKQorI3VuZGVmIFJFVFVSTl9JRl9QUklWQVRFX05B
TUVfTUFUQ0hFUworICAgIHJldHVybiAwOworfQorCitJZGVudGlmaWVyIENvbW1vbklkZW50aWZp
ZXJzOjpnZXRQdWJsaWNOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAoreworI2Rl
ZmluZSBSRVRVUk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMobmFtZSkgaWYgKG1fIyNuYW1lIyNQ
dWJsaWNTdHJpbmdQYWlyLnNlY29uZCA9PSBpZGVudCkgcmV0dXJuIG1fIyNuYW1lIyNQdWJsaWNT
dHJpbmdQYWlyLmZpcnN0OworICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNI
X1BST1BFUlRZX05BTUUoUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKQorI3VuZGVmIFJF
VFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hFUworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIGVtcHR5SWRlbnRpZmllcjsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaAppbmRleCBlOGY5ZWQ4MmJjNzk0NjIwMzgyNjZiMzAyMDc4MjI0N2IxZmEyN2EzLi45MjRk
MzZhYzY5MTM1MDM1N2NiMzgyYjFlZjNiNDBhMGEwOGMwYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTIyLDYgKzIyLDcg
QEAKICNkZWZpbmUgQ29tbW9uSWRlbnRpZmllcnNfaAogCiAjaW5jbHVkZSAiSWRlbnRpZmllci5o
IgorI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CiAKIC8vIE1hcmtlZEFyZ3VtZW50QnVmZmVyIG9mIHByb3BlcnR5IG5hbWVzLCBwYXNzZWQgdG8g
YSBtYWNybyBzbyB3ZSBjYW4gZG8gc2V0IHRoZW0gdXAgdmFyaW91cwpAQCAtMTMzLDggKzEzNCwx
MCBAQAogICAgIG1hY3JvKG9zckV4aXRzKSBcCiAgICAgbWFjcm8ocGFyc2UpIFwKICAgICBtYWNy
byhwcm9maWxlZEJ5dGVjb2RlcykgXAorICAgIG1hY3JvKHByb21pc2UpIFwKICAgICBtYWNybyhw
cm9wZXJ0eUlzRW51bWVyYWJsZSkgXAogICAgIG1hY3JvKHByb3RvdHlwZSkgXAorICAgIG1hY3Jv
KHJlc29sdmUpIFwKICAgICBtYWNybyhzZXQpIFwKICAgICBtYWNybyhzaXplKSBcCiAgICAgbWFj
cm8oc2xpY2UpIFwKQEAgLTE1NSw3ICsxNTgsMTQgQEAKICAgICBtYWNybyh2YWx1ZXMpIFwKICAg
ICBtYWNybyh2YWx1ZU9mKSBcCiAgICAgbWFjcm8od2luZG93KSBcCi0gICAgbWFjcm8od3JpdGFi
bGUpCisgICAgbWFjcm8od3JpdGFibGUpIFwKKyAgICBtYWNybyhpdGVyYXRvcikgXAorICAgIG1h
Y3JvKGl0ZXJhdG9yTmV4dCkgXAorICAgIG1hY3JvKHJlamVjdCkgXAorICAgIG1hY3JvKGZ1bGZp
bGxtZW50SGFuZGxlcikgXAorICAgIG1hY3JvKHJlamVjdGlvbkhhbmRsZXIpIFwKKyAgICBtYWNy
byhkZWZlcnJlZCkgXAorICAgIG1hY3JvKGNvdW50ZG93bkhvbGRlcikgXAogCiAjZGVmaW5lIEpT
Q19DT01NT05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKG1hY3JvKSBcCiAgICAgbWFjcm8oYnJl
YWspIFwKQEAgLTIwMyw3ICsyMTMsNyBAQAogICAgIG1hY3JvKHZvaWQpIFwKICAgICBtYWNybyh3
aGlsZSkgXAogICAgIG1hY3JvKHdpdGgpIFwKLSAgICBtYWNybyh5aWVsZCkKKyAgICBtYWNybyh5
aWVsZCkgXAogCiAjZGVmaW5lIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BS
T1BFUlRZX05BTUUobWFjcm8pIFwKICAgICBtYWNybyhpdGVyYXRvcikgXApAQCAtMjE2LDcgKzIy
NiwxMiBAQAogICAgIG1hY3JvKGluZGV4KSBcCiAgICAgbWFjcm8odmFsdWVzKSBcCiAgICAgbWFj
cm8oZGVmZXJyZWQpIFwKLSAgICBtYWNybyhjb3VudGRvd25Ib2xkZXIpCisgICAgbWFjcm8oY291
bnRkb3duSG9sZGVyKSBcCisgICAgbWFjcm8oT2JqZWN0KSBcCisgICAgbWFjcm8oVHlwZUVycm9y
KSBcCisgICAgbWFjcm8odW5kZWZpbmVkS2V5d29yZCkgXAorICAgIG1hY3JvKGNhbGwpIFwKKyAg
ICBtYWNybyhhcHBseSkKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTI0MCwxMSArMjU1LDE1IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFS
RV9QUk9QRVJUWV9OQU1FX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWU7CiAgICAg
ICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKEpTQ19JREVOVElG
SUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwpCisgICAgICAgIEpTQ19GT1JFQUNIX0JV
SUxUSU5fRlVOQ1RJT05fTkFNRShKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVf
R0xPQkFMKQogI3VuZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9C
QUwKIAotI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFN
RV9HTE9CQUwobmFtZSkgY29uc3QgSWRlbnRpZmllciBuYW1lIyNQcml2YXRlTmFtZTsKKyNkZWZp
bmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMKG5h
bWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSMjUHJpdmF0ZU5hbWU7IGNvbnN0IHN0ZDo6cGFpcjxJ
ZGVudGlmaWVyLCBJZGVudGlmaWVyPiBtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpcjsKICAgICAg
ICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShKU0Nf
SURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwpCiAjdW5kZWYg
SlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMCisgICAg
ICAgIAorICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFtZShjb25zdCBJZGVu
dGlmaWVyJikgY29uc3Q7CisgICAgICAgIElkZW50aWZpZXIgZ2V0UHVibGljTmFtZShjb25zdCBJ
ZGVudGlmaWVyJikgY29uc3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCAw
NzU4NzVmYjIzMTZhNTU1NzA1MGE2NjkwY2QwZjk4ODI0ODRmNWYzLi41YWY5MDg3NTRlNzQ3Zjhj
YWUwY2QwNGFmOGQ0OTE1MDA0NjhjMmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRl
ICJKSVQuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5o
IgotI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNOYW1l
U2NvcGUuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRpb25z
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2Vw
dGlvbnMuY3BwCmluZGV4IDU1MzM0YmUyZjk4MGE5OGY3ZmVhNDJhMDViZTBmMjBjMDE5ZmYwZGQu
LjE2ZWJhZDEwZTRlNDJiNmI3ODVlOTc4ZDM4ZTg3MGUzYjVhNmM0OWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2Vw
dGlvbnMuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5j
bHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgorI2luY2x1ZGUg
IkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBDb21tb25TbG93UGF0aHMgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCAwNWUxMWUwYjgw
YTM0MzBhZWFiMjJiMDIyMmEyMTJmNGE4ZTJjNDliLi4zNjRjYzcxNjY2MDhiNTAwN2Q0NzdkODcz
OTE4YTVkNjRiMTY4NjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAtODEsNiArODEsMTEgQEAgSlNPYmplY3QqIGNyZWF0
ZVN0YWNrT3ZlcmZsb3dFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiBKU09i
amVjdCogY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIGlkZW50KQogeworICAgIAorICAgIGlmIChpZGVudC5pbXBsKCktPmlzRW1w
dHlVbmlxdWUoKSkgeworICAgICAgICBTdHJpbmcgbWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBm
aW5kIHByaXZhdGUgdmFyaWFibGU6IEAiLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2V0UHVibGlj
TmFtZShpZGVudCkuc3RyaW5nKCkpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVy
cm9yKGV4ZWMsIG1lc3NhZ2UpOworICAgIH0KICAgICBTdHJpbmcgbWVzc2FnZShtYWtlU3RyaW5n
KCJDYW4ndCBmaW5kIHZhcmlhYmxlOiAiLCBpZGVudC5zdHJpbmcoKSkpOwogICAgIHJldHVybiBj
cmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBtZXNzYWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCAxOTg5NzZiYjNmZTZlNmU5MTE3OTgxMmQx
Y2FmOWI4YmY5YmZkMGJiLi5jZjBlNzUzYTdjNWY1NDQ2N2I2NGQ4ZTJhOWIzZmJhMjcxNTAwMDEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC00ODQs
NyArNDg0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckNvZGUoKTsKIAotICAgIEV4ZWN1
dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8o
bmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSk7IH0K
KyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1
dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwg
ZmFsc2UsIGZhbHNlKTsgfQogCiAgICAgdW5zaWduZWQgbnVtVmFyaWFibGVzKCkgeyByZXR1cm4g
bV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bVZhcmlhYmxlcygpOyB9CiAgICAgdW5zaWduZWQg
bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2st
Pm51bWJlck9mRnVuY3Rpb25EZWNscygpOyB9CkBAIC01NDAsNyArNTQwLDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBjbGVhckNvZGUoKTsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJ
bmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVz
ZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBl
eGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZh
dGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlKTsgfQogCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwpAQCAtNjI4LDcgKzYy
OCw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBiYXNlbGluZUNvZGVCbG9ja0Zv
cihraW5kKTsKICAgICB9Ci0gICAgICAgIAorCisgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigp
OyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVj
dXRhYmxlLT5uYW1lKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBpbmZlcnJlZE5hbWUoKSB7
IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aW5mZXJyZWROYW1lKCk7IH0KICAgICBKU1N0
cmluZyogbmFtZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5h
bWVWYWx1ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvblByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvblByb3RvdHlwZS5jcHAKaW5kZXggYzFiMDhhZjJkODE4ZGFlNTdlMWIwMGZkYTE3M2E4MTYx
Mzc1MjliNS4uMTI0OTBjNDBmMzM0MTdlY2E5MjM4NTBhMGRjNjYyZGJiY2Q0MGYzMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNw
cApAQCAtMjIsMTIgKzIyLDEzIEBACiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKIAog
I2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVk
ZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nQnVp
bGRlci5oIgotI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiTGV4ZXIuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKQEAg
LTEwOCw3ICsxMDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJv
dG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHMoSlNGdW5j
dGlvbjo6aW5mbygpKSkgewogICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxK
U0Z1bmN0aW9uKj4odGhpc1ZhbHVlKTsKLSAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RGdW5j
dGlvbigpKQorICAgICAgICBpZiAoZnVuY3Rpb24tPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkp
CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJp
bmcoZXhlYywgImZ1bmN0aW9uICIsIGZ1bmN0aW9uLT5uYW1lKGV4ZWMpLCAiKCkge1xuICAgIFtu
YXRpdmUgY29kZV1cbn0iKSk7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSA9IGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKTsKICAgICAgICAgU3RyaW5nIHNvdXJjZVN0cmlu
ZyA9IGV4ZWN1dGFibGUtPnNvdXJjZSgpLnRvU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAppbmRleCA3MmVkMWM3MTI0MDYxMTY4YjBh
ZGRkMzExNmY3NTVhMTE3YjhmYjkwLi5iMzc0OTQzMDk5ZTIxNTVhMzk3NzEzMzEzNDcwMmMyYTI0
YWNjODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlv
bi5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBKU0FjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIAogaW5saW5lIGJvb2wgSlNBY3Rp
dmF0aW9uOjpzeW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7Ci0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxl
KCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJs
ZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS51aWQo
KSk7CiAgICAgaWYgKGVudHJ5LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAg
LTcyLDcgKzcyLDcgQEAgaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZUdldChQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QKIAogaW5saW5lIGJvb2wgSlNB
Y3RpdmF0aW9uOjpzeW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRy
eSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsK
KyAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHBy
b3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGVudHJ5LmlzTnVsbCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKQEAgLTg5LDcgKzg5LDcgQEAgaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpz
eW1ib2xUYWJsZVB1dChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU4KICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwg
SGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CiAgICAgCi0gICAgU3ltYm9s
VGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUu
cHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUo
KS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGVudHJ5LmlzTnVsbCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGVudHJ5LmlzUmVhZE9ubHkoKSkgewpA
QCAtMTM2LDcgKzEzNiw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQ
dXRXaXRoQXR0cmlidXRlcyhWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wCiAgICAgV3JpdGVCYXJy
aWVyQmFzZTxVbmtub3duPiogcmVnOwogICAgIHsKICAgICAgICAgQ29uY3VycmVudEpJVExvY2tl
ciBsb2NrZXIoc3ltYm9sVGFibGUoKS0+bV9sb2NrKTsKLSAgICAgICAgU3ltYm9sVGFibGU6Ok1h
cDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlKCktPmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5h
bWUucHVibGljTmFtZSgpKTsKKyAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRl
ciA9IHN5bWJvbFRhYmxlKCktPmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAg
ICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZSgpLT5lbmQobG9ja2VyKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSYgZW50cnkgPSBpdGVyLT52
YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1l
bnRzSXRlcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVu
dHNJdGVyYXRvci5jcHAKaW5kZXggMmZjZjg4MTVjMDU2ODA1ODEyYTc5OTFhNWZmMDYzZDY4NzM5
NzE2NC4uOWE5MjU4M2FhMGVjOTBkYmIzMjhlY2Q1MGRjMzEzOWFlZjAyNzNiNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5j
cHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJKU0FyZ3VtZW50c0l0ZXJhdG9yLmgiCiAK
ICNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgog
CiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmNwcAppbmRleCA5MDA3YjVmN2QzZjEwM2IxZDIxYjFhMzY1YTI2YzIxNWMzMmI0ZDI4Li5iYTBh
MmQzOGU5YzUzZTE1OTM3ZDQ2YTg5NTFhOGM4YzQ1MDc5MjY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkV4
ZWN1dGFibGUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJJbmRleGlu
Z0hlYWRlcklubGluZXMuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRl
ICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1ZGUgIlJlamVjdC5oIgogI2luY2x1ZGUgPHd0
Zi9BVkxUcmVlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5SXRlcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUl0ZXJhdG9yLmNwcAppbmRleCBkNTA2YzRlYmQyNjIwZWZkNzA3OTNhODczZDA4NTJmYmQ5Nzgy
ODU5Li5jZjM3MDk3ZWMwYzY5MjVhODY3YjhjMDEwYzBlZmM0MDc0NDg1ZjFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKQEAgLTI4
LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUg
IlNsb3RWaXNpdG9ySW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKaW5kZXggY2NhNjg4OGJmOThhMDI4NjQ2
Y2EzZGRkZjM3NjI3Y2UwZTdkOTMwMi4uMzM5YTdhYjdmNTk1MTVlOTZhZmI3ZWM0Yjg3NDFlN2Fh
OGUxNjZmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5j
cHAKQEAgLTMyLDcgKzMyLDkgQEAKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU05vdEFuT2JqZWN0LmgiCisjaW5jbHVkZSAi
SlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTnVtYmVyT2JqZWN0LmgiCisjaW5jbHVkZSAi
T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0cmluZ0V4dHJhcy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGxJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGxJbmxpbmVzLmgKaW5kZXggZjdjODQ0NjQ1MDkyYjI1MDgwNWU2ZThkNDgzMmM5OThiZGI4OWI1
NC4uZDc5NWRkNTZhOTdkZGI1OTdjMDkwZmMyZTBiN2YzMDhlMzNlYmNhNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaApAQCAtMjcsOCArMjcsMTAg
QEAKICNkZWZpbmUgSlNDZWxsSW5saW5lc19oCiAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNp
bmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkRlZmVyR0MuaCIKICNpbmNs
dWRlICJIYW5kbGUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggMjQx
OTY0NjEwYmI0NDI3YjE4NjM3MzM0NmUyNGY1YTgyZDBjZGNjNC4uN2JlZjU5MWIxNGYzNWYxYTkz
NDhhZGU5YTllMGY1OTBlYjZhZGY4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5jcHAKQEAgLTEwOSw2ICsxMDksMTQgQEAgdm9pZCBKU0Z1bmN0aW9uOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGludCBs
ZW5ndGgKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1i
ZXIobGVuZ3RoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogCitKU0Z1
bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlv
bkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7
CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjcmVhdGUodm0sIGV4ZWN1dGFibGUsIGdsb2Jh
bE9iamVjdCk7CisgICAgZnVuY3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bmFtZSwganNTdHJpbmcoJnZtLCBleGVjdXRhYmxlLT5uYW1lKCkuc3RyaW5nKCkpLCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgZnVuY3Rpb24tPnB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcihleGVjdXRhYmxlLT5wYXJhbWV0ZXJD
b3VudCgpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHJldHVybiBm
dW5jdGlvbjsKK30KKwogT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUqIEpTRnVuY3Rpb246OmNyZWF0
ZUFsbG9jYXRpb25Qcm9maWxlKEV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IGlubGluZUNhcGFjaXR5
KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC0xNDIsNyArMTUwLDcgQEAgY29uc3Qg
U3RyaW5nIEpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgICAgIHJldHVybiBleHBsaWNpdE5hbWU7CiAgICAgCiAgICAgY29uc3QgU3RyaW5nIGFj
dHVhbE5hbWUgPSBuYW1lKGV4ZWMpOwotICAgIGlmICghYWN0dWFsTmFtZS5pc0VtcHR5KCkgfHwg
aXNIb3N0RnVuY3Rpb24oKSkKKyAgICBpZiAoIWFjdHVhbE5hbWUuaXNFbXB0eSgpIHx8IGlzSG9z
dE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBhY3R1YWxOYW1lOwogICAgIAog
ICAgIHJldHVybiBqc0V4ZWN1dGFibGUoKS0+aW5mZXJyZWROYW1lKCkuc3RyaW5nKCk7CkBAIC0x
NTAsMTAgKzE1OCwyMCBAQCBjb25zdCBTdHJpbmcgSlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3Bs
YXlOYW1lKEV4ZWNTdGF0ZSogZXhlYykKIAogY29uc3QgU291cmNlQ29kZSogSlNGdW5jdGlvbjo6
c291cmNlQ29kZSgpIGNvbnN0CiB7Ci0gICAgaWYgKGlzSG9zdEZ1bmN0aW9uKCkpCisgICAgaWYg
KGlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVy
biAmanNFeGVjdXRhYmxlKCktPnNvdXJjZSgpOwogfQorICAgIAorYm9vbCBKU0Z1bmN0aW9uOjpp
c0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzSG9zdEZ1bmN0
aW9uKCkgfHwgaXNCdWlsdGluRnVuY3Rpb24oKTsKK30KKworYm9vbCBKU0Z1bmN0aW9uOjppc0J1
aWx0aW5GdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuICFpc0hvc3RGdW5jdGlvbigpICYm
IGpzRXhlY3V0YWJsZSgpLT5pc0J1aWx0aW5GdW5jdGlvbigpOworfQogCiB2b2lkIEpTRnVuY3Rp
b246OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsK
QEAgLTI3Nyw3ICsyOTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0
ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBzbG90QmFzZQogICAgIGlmICghY2Fs
bGVyLmlzT2JqZWN0KCkgfHwgIWFzT2JqZWN0KGNhbGxlciktPmluaGVyaXRzKEpTRnVuY3Rpb246
OmluZm8oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbGVyKTsKICAgICBK
U0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2FsbGVyKTsKLSAgICBp
ZiAoZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkgfHwgIWZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUo
KS0+aXNTdHJpY3RNb2RlKCkpCisgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RPckJ1aWx0aW5GdW5j
dGlvbigpIHx8ICFmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxlcik7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkZ1bmN0aW9uLmNhbGxl
ciB1c2VkIHRvIHJldHJpZXZlIHN0cmljdCBjYWxsZXIiKSkpOwogfQpAQCAtMjk5LDcgKzMxNyw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTRnVuY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUgc2xvdEJhc2UsIEVuY29kCiBib29sIEpTRnVuY3Rpb246OmdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICh0aGlzT2JqZWN0
LT5pc0hvc3RGdW5jdGlvbigpKQorICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5G
dW5jdGlvbigpKQogICAgICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICBpZiAocHJvcGVydHlOYW1l
ID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpIHsKQEAgLTM2MSw3ICszNzksNyBA
QCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5Tgogdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRl
eFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7CiAgICAg
SlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsKLSAg
ICBpZiAoIXRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkgJiYgKG1vZGUgPT0gSW5jbHVkZURv
bnRFbnVtUHJvcGVydGllcykpIHsKKyAgICBpZiAoIXRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRp
bkZ1bmN0aW9uKCkgJiYgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpIHsKICAg
ICAgICAgLy8gTWFrZSBzdXJlIHByb3RvdHlwZSBoYXMgYmVlbiByZWlmaWVkLgogICAgICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0KTsKICAgICAgICAgdGhpc09iamVjdC0+bWV0aG9k
VGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5wcm90b3R5cGUsIHNsb3QpOwpAQCAtMzc3LDcgKzM5NSw3IEBAIHZvaWQgSlNG
dW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywKIHZvaWQgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU0Z1bmN0aW9uKj4oY2VsbCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9u
KCkpIHsKKyAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkgewog
ICAgICAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2xvdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MjUsNyArNDQzLDcgQEAgYm9vbCBK
U0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3AKIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRp
b24pCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4o
b2JqZWN0KTsKLSAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICBpZiAo
dGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIEJh
c2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlw
dG9yLCB0aHJvd0V4Y2VwdGlvbik7CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaAppbmRleCA3Y2QxNGI4YzJkODAwZjYxYmRjMTJlZGQyZGYwNGQzNWZhMDYx
OWI2Li45OTVjOWQxMWJkODk4Mzg2ZjdhMjBjNDE2MzRmYTdjYzliNzY5OGU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC02OCw2ICs2OCw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uOwogICAgICAgICB9CiAg
ICAgICAgIAorICAgICAgICBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlQnVpbHRpbkZ1bmN0aW9u
KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNHbG9iYWxPYmplY3QqKTsKKyAgICAgICAgCiAg
ICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAgIAogICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBTdHJpbmcgbmFtZShFeGVjU3RhdGUqKTsKQEAgLTE0NSw2ICsxNDcs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2FsbG9jYXRpb25Qcm9m
aWxlV2F0Y2hwb2ludDsKICAgICAgICAgfQogCisgICAgICAgIGJvb2wgaXNIb3N0T3JCdWlsdGlu
RnVuY3Rpb24oKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0
OworCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbXBsZW1lbnRzSGFzSW5z
dGFuY2UgfCBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1l
cyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKaW5kZXggMmRkYzI5ZjcxODk3YmI1MWQzOTBiMDZiMjVh
NzM4MzM4NzRiYTBjMS4uZWRkMzQ0OWNlNDdiMTczNWU4ZTVkYmIwNWYzMThlM2Q1NWYzYmU2MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCkBAIC0y
Niw2ICsyNiw3IEBACiAjaWZuZGVmIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJ
bmxpbmVzX2gKICNkZWZpbmUgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGlu
ZXNfaAogCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJFcnJvci5o
IgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0NvbnN0cnVjdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IDZk
Yjg2Mjc0YzNiODc0YWFhZGU1MTUxODk4MjY3MjZmYjEzNmMxNzMuLmYyNGVhNzMwM2RmOTY5ZGJk
MmRjYTUyYzg2ZDExYzc4YzAwZGI5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBA
IC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lc19o
CiAKICNpbmNsdWRlICJBcnJheUJ1ZmZlclZpZXcuaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlm
aWVycy5oIgogI2luY2x1ZGUgIkRlZmVyR0MuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1
ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5
cGVJbmxpbmVzLmgKaW5kZXggNDU5OTk3YTQ2NGI5MTE5NDc3YjFiZTg0ZTM2YzRlMjk2NmFjZWY4
NS4uOGU1ZmY4Mjc5MWU2ZmY4ZDRlYjljMzczNjkxZTQzM2ViN2QxNmFlZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90
b3R5cGVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNp
Zm5kZWYgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzX2gKICNkZWZpbmUg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzX2gKIAorI2luY2x1ZGUgIkNv
bW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDJjMjc0YzFhN2Q0ODFj
MDdkZjBkMmJlYjNiMjkzMWEzOTA3YTVlNjYuLjA2ZTU0Yzg0ZTc3YjkwMzJiYWExZDJkZjQ3YTFj
NzJlODBiN2RlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKQEAgLTM0Niw3ICszNDYsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojpy
ZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKIAogICAgIC8vIENvbnN0cnVjdG9ycwogCi0gICAgSlND
ZWxsKiBvYmplY3RDb25zdHJ1Y3RvciA9IE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIE9i
amVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90
b3R5cGUuZ2V0KCkpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CisgICAgT2JqZWN0Q29uc3Ry
dWN0b3IqIG9iamVjdENvbnN0cnVjdG9yID0gT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwg
T2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblBy
b3RvdHlwZS5nZXQoKSksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKKyAgICBtX29iamVjdENv
bnN0cnVjdG9yLnNldCh2bSwgdGhpcywgb2JqZWN0Q29uc3RydWN0b3IpOwogICAgIEpTQ2VsbCog
ZnVuY3Rpb25Db25zdHJ1Y3RvciA9IEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgRnVu
Y3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJv
dG90eXBlLmdldCgpKSwgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CiAgICAgSlNDZWxsKiBh
cnJheUNvbnN0cnVjdG9yID0gQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBBcnJheUNvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCkpLCBtX2FycmF5UHJvdG90eXBlLmdldCgpKTsKIApAQCAtNDMyLDcgKzQzMywxMCBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8gc3RhdGljR2xvYmFsc1tdID0gewogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+TmFOLCBqc05hTigpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBS
ZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5J
bmZpbml0eSwganNOdW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgp
KSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCwganNVbmRlZmluZWQo
KSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpCisgICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLCBqc1VuZGVmaW5lZCgp
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkUHJpdmF0ZU5hbWUsIGpz
VW5kZWZpbmVkKCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAg
R2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPk9iamVjdFByaXZhdGVOYW1lLCBv
YmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+VHlwZUVycm9yUHJpdmF0
ZU5hbWUsIG1fdHlwZUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtIHwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5KQogICAgIH07CiAgICAgYWRkU3RhdGljR2xvYmFscyhzdGF0aWNHbG9iYWxz
LCBXVEZfQVJSQVlfTEVOR1RIKHN0YXRpY0dsb2JhbHMpKTsKICAgICAKQEAgLTYwOCw2ICs2MTIs
NyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3lu
dGF4RXJyb3JDb25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
dHlwZUVycm9yQ29uc3RydWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X1VSSUVycm9yQ29uc3RydWN0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X29iamVjdENvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9w
cm9taXNlQ29uc3RydWN0b3IpOwogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
ZXZhbEZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCmluZGV4IGIwY2FkM2RjNTQ3MGY3YzdhMGU1NzBiZGNkMmRmZmE4OTVlMmFhMGMu
LjNhNjE2YzZmMDVlZGYxZDI5NWFmODQ0MWFhNjY1MDBmYjkyYTRhNDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNjcsNiArNjcsNyBA
QCBjbGFzcyBKU1N0YWNrOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgTWlj
cm90YXNrOwogY2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjsKK2NsYXNzIE9iamVjdENvbnN0
cnVjdG9yOwogY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxl
OwogY2xhc3MgUmVnRXhwQ29uc3RydWN0b3I7CkBAIC0xNTgsNiArMTU5LDcgQEAgcHJvdGVjdGVk
OgogICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX3R5cGVFcnJvckNv
bnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX1VS
SUVycm9yQ29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlzZUNvbnN0cnVjdG9y
PiBtX3Byb21pc2VDb25zdHJ1Y3RvcjsKKyAgICBXcml0ZUJhcnJpZXI8T2JqZWN0Q29uc3RydWN0
b3I+IG1fb2JqZWN0Q29uc3RydWN0b3I7CiAKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4g
bV9ldmFsRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fY2FsbEZ1bmN0
aW9uOwpAQCAtMzMwLDYgKzMzMiw3IEBAIHB1YmxpYzoKICAgICBSZWdFeHBDb25zdHJ1Y3Rvciog
cmVnRXhwQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cENvbnN0cnVjdG9yLmdl
dCgpOyB9CiAKICAgICBFcnJvckNvbnN0cnVjdG9yKiBlcnJvckNvbnN0cnVjdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9lcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CisgICAgT2JqZWN0Q29uc3RydWN0
b3IqIG9iamVjdENvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RDb25zdHJ1Y3Rv
ci5nZXQoKTsgfQogICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGV2YWxFcnJvckNvbnN0cnVj
dG9yKCkgY29uc3QgeyByZXR1cm4gbV9ldmFsRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAg
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHJhbmdlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsg
cmV0dXJuIG1fcmFuZ2VFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CiAgICAgTmF0aXZlRXJyb3JD
b25zdHJ1Y3RvciogcmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1f
cmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQpAQCAtNTgxLDcgKzU4NCw3IEBAIGlu
bGluZSBib29sIEpTR2xvYmFsT2JqZWN0OjpoYXNPd25Qcm9wZXJ0eUZvcldyaXRlKEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lCiAKIGlubGluZSBib29sIEpTR2xvYmFsT2JqZWN0OjpzeW1i
b2xUYWJsZUhhc1Byb3BlcnR5KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgU3lt
Ym9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5h
bWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFi
bGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgcmV0dXJuICFlbnRyeS5p
c051bGwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3Bw
CmluZGV4IDJiNjdhMWQ5ZWVkODRlOTk1NmY4YmI5NjgzODRjODRjYWVhNTNjZmYuLjJlYTJjMjRl
NmVhYjRjZDBkN2ZmZWQ2NjVlZjRhZTQxYWYwNzUwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGdldENsYXNzUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENsYXNzSW5m
byogY2xhc3MKICAgICAgICAgaW50IGhhc2hTaXplTWFzayA9IHRhYmxlLT5jb21wYWN0U2l6ZSAt
IDE7CiAgICAgICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSB0YWJsZS0+dGFibGU7CiAgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IGhhc2hTaXplTWFzazsgKytpLCArK2VudHJ5KSB7Ci0g
ICAgICAgICAgICBpZiAoZW50cnktPmtleSgpICYmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBE
b250RW51bSkgfHwgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpICYmICEoKGVu
dHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikgJiYgZGlkUmVpZnkpKQorICAgICAgICAgICAg
aWYgKGVudHJ5LT5rZXkoKSAmJiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8
IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKSAmJiAhKChlbnRyeS0+YXR0cmli
dXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pICYmIGRpZFJlaWZ5KSkKICAgICAgICAgICAgICAg
ICBwcm9wZXJ0eU5hbWVzLmFkZChlbnRyeS0+a2V5KCkpOwogICAgICAgICB9CiAgICAgfQpAQCAt
MTYxOCw3ICsxNjE4LDcgQEAgdm9pZCBKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JE
ZWxldGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIFBy
b3BlcnR5U2xvdCBzbG90KHRoaXMpOwogICAgICAgICBmb3IgKEhhc2hUYWJsZTo6Q29uc3RJdGVy
YXRvciBpdGVyID0gaGFzaFRhYmxlLT5iZWdpbih2bSk7IGl0ZXIgIT0gaGFzaFRhYmxlLT5lbmQo
dm0pOyArK2l0ZXIpIHsKLSAgICAgICAgICAgIGlmIChpdGVyLT5hdHRyaWJ1dGVzKCkgJiBGdW5j
dGlvbikKKyAgICAgICAgICAgIGlmIChpdGVyLT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5j
dGlvbikKICAgICAgICAgICAgICAgICBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChnbG9iYWxPYmpl
Y3QoKS0+Z2xvYmFsRXhlYygpLCAqaXRlciwgdGhpcywgSWRlbnRpZmllcigmdm0sIGl0ZXItPmtl
eSgpKSwgc2xvdCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yMjM2LDYgKzIyMzYsMTYgQEAgdm9p
ZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb24KICAgICBwdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgZnVu
Y3Rpb24sIGF0dHJpYnV0ZXMpOwogfQogCit2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RCdWlsdGlu
RnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9w
ZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1
dGFibGUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCit7CisgICAgU3RyaW5nSW1wbCogbmFtZSA9IHBy
b3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CisgICAgaWYgKCFuYW1lKQorICAgICAgICBuYW1lID0g
dm0ucHJvcGVydHlOYW1lcy0+YW5vbnltb3VzLmltcGwoKTsKKyAgICBBU1NFUlQobmFtZSk7Cisg
ICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rp
b24odm0sIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJs
ZSksIGdsb2JhbE9iamVjdCk7CisgICAgcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0
aW9uLCBhdHRyaWJ1dGVzKTsKK30KKwogdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBmdW5jdGlvbkxl
bmd0aCwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5
TmFtZS5wdWJsaWNOYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAppbmRleCAwMmIxMzdiMzUwYzJmYTgzMjViZDNiOTY0NzExMmFiZTg3NmYzODNmLi5kZGU1OTdl
ZmZhZWMwZjFiOGQ0NGMyOTExOTUwMzAxZjA2MDA3ZTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJCdXR0ZXJm
bHkuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKLSNp
bmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkNvcHlXcml0ZUJhcnJpZXIu
aCIKICNpbmNsdWRlICJEZWZlckdDLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgpAQCAtNTgxLDYgKzU4
MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHB1dERpcmVjdFVuZGVmaW5lZChQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQpIHsgbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KS0+c2V0VW5kZWZpbmVkKCk7IH0K
IAogICAgIHZvaWQgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCos
IGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5j
dGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICB2b2lkIHB1dERpcmVj
dEJ1aWx0aW5GdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1l
JiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgdm9pZCBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZl
RnVuY3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAKICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91
bGRUaHJvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCmluZGV4IDY4YThiZDg3ZDM4YWRiYmI5ZGQyYWM5ZWM0
YjQ5ZDVlZjQ1NDlkNTYuLjIzN2M0MmJiMGRhMGYxNjY3NmViMTFhZGU4MTgwYTdiMDZkOThlYjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1l
SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuY3BwCkBAIC0yOSw3ICsyOSw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIk9w
ZXJhdGlvbnMuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oCmluZGV4IGY0MzYyZmYzNTRlZTZhNTAyMjFiYjczMWQxYTI2MTFlNmRk
NjFiYzAuLmQwNzM3MTlkZTE2MGQyZjI5MjExMGE1OTZhMTA1ZTJmYTIxMTVmZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmgKQEAgLTMxLDcgKzMxLDYgQEAKIAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiSlNTdHJpbmcuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHJvcGVy
dHlOYW1lQXJyYXkuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0cmluZy5oCmluZGV4IDJiMWNkZGRjNTg0MWQ2MGQxNTdhMmU2MWY3MDJiMGVl
NWZhMWQ2NzYuLmUzOTM0MTYwYWVhOTI2ZWYxNTkzMmY4NzkwZTI0YzUyYWYwMmQzNWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaApAQCAtMjQsNyArMjQsNiBAQAog
I2RlZmluZSBKU1N0cmluZ19oCiAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKLSNpbmNsdWRlICJD
b21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQ
cm9wZXJ0eURlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKQEAgLTQ3Miwz
MyArNDcxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5saW5lIEpTU3RyaW5nKiBqc05vbnRy
aXZpYWxTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMpIHsgcmV0dXJuIGpz
Tm9udHJpdmlhbFN0cmluZygmZXhlYy0+dm0oKSwgcyk7IH0KICAgICBpbmxpbmUgSlNTdHJpbmcq
IGpzT3duZWRTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMpIHsgcmV0dXJu
IGpzT3duZWRTdHJpbmcoJmV4ZWMtPnZtKCksIHMpOyB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgSlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKLSAgICB7Ci0gICAgICAg
IGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewotICAg
ICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFk
T25seSwganNOdW1iZXIobV9sZW5ndGgpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7Ci0g
ICAgICAgIGlmIChpIDwgbV9sZW5ndGgpIHsKLSAgICAgICAgICAgIEFTU0VSVChpICE9IFByb3Bl
cnR5TmFtZTo6Tm90QW5JbmRleCk7IC8vIE5vIG5lZWQgZm9yIGFuIGV4cGxpY2l0IGNoZWNrLCB0
aGUgYWJvdmUgdGVzdCB3b3VsZCBhbHdheXMgZmFpbCEKLSAgICAgICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBnZXRJbmRleChleGVjLCBpKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0gICAgICAgICAgICAKLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgSlNTdHJpbmc6Omdl
dFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQotICAgIHsKLSAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA8
IG1fbGVuZ3RoKSB7Ci0gICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnREZWxldGUg
fCBSZWFkT25seSwgZ2V0SW5kZXgoZXhlYywgcHJvcGVydHlOYW1lKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0K
ICAgICBpbmxpbmUgYm9vbCBpc0pTU3RyaW5nKEpTVmFsdWUgdikgeyByZXR1cm4gdi5pc0NlbGwo
KSAmJiB2LmFzQ2VsbCgpLT5jbGFzc0luZm8oKSA9PSBKU1N0cmluZzo6aW5mbygpOyB9CiAKICAg
ICAvLyAtLS0gSlNWYWx1ZSBpbmxpbmVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAg
LTUyOCwzMiArNTAwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiB0b1dURlN0
cmluZ1Nsb3dDYXNlKGV4ZWMpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgU3RyaW5nIGlu
bGluZUpTVmFsdWVOb3RTdHJpbmd0b1N0cmluZyhjb25zdCBKU1ZhbHVlJiB2YWx1ZSwgRXhlY1N0
YXRlKiBleGVjKQotICAgIHsKLSAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICAgICAg
aWYgKHZhbHVlLmlzSW50MzIoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5udW1lcmljU3RyaW5n
cy5hZGQodmFsdWUuYXNJbnQzMigpKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzRG91YmxlKCkpCi0g
ICAgICAgICAgICByZXR1cm4gdm0ubnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVlLmFzRG91YmxlKCkp
OwotICAgICAgICBpZiAodmFsdWUuaXNUcnVlKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0ucHJv
cGVydHlOYW1lcy0+dHJ1ZUtleXdvcmQuc3RyaW5nKCk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc0Zh
bHNlKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+ZmFsc2VLZXl3b3Jk
LnN0cmluZygpOwotICAgICAgICBpZiAodmFsdWUuaXNOdWxsKCkpCi0gICAgICAgICAgICByZXR1
cm4gdm0ucHJvcGVydHlOYW1lcy0+bnVsbEtleXdvcmQuc3RyaW5nKCk7Ci0gICAgICAgIGlmICh2
YWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMt
PnVuZGVmaW5lZEtleXdvcmQuc3RyaW5nKCk7Ci0gICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSBTdHJpbmcg
SlNWYWx1ZTo6dG9XVEZTdHJpbmdJbmxpbmUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAotICAgIHsK
LSAgICAgICAgaWYgKGlzU3RyaW5nKCkpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
SlNTdHJpbmcqPihhc0NlbGwoKSktPnZhbHVlKGV4ZWMpOwotCi0gICAgICAgIHJldHVybiBpbmxp
bmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcoKnRoaXMsIGV4ZWMpOwotICAgIH0KLQogfSAvLyBu
YW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBKU1N0cmluZ19oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3OGMwNWZjODBk
ODhlODUzN2M5ZDJhNWVhYjlmZjBiYTliNjBhNzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaApAQCAtMCwwICsxLDkwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBKU1N0cmluZ0lubGluZXNfaAorI2RlZmluZSBKU1N0cmluZ0lubGluZXNfaAorCisjaW5j
bHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5o
IgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitBTFdBWVNfSU5M
SU5FIGJvb2wgSlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBp
ZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKKyAgICAg
ICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSwg
anNOdW1iZXIobV9sZW5ndGgpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAor
ICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOworICAgIGlmIChpIDwgbV9s
ZW5ndGgpIHsKKyAgICAgICAgQVNTRVJUKGkgIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTsg
Ly8gTm8gbmVlZCBmb3IgYW4gZXhwbGljaXQgY2hlY2ssIHRoZSBhYm92ZSB0ZXN0IHdvdWxkIGFs
d2F5cyBmYWlsIQorICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnREZWxldGUgfCBSZWFk
T25seSwgZ2V0SW5kZXgoZXhlYywgaSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisg
ICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCitBTFdBWVNfSU5MSU5FIGJvb2wgSlNTdHJpbmc6
OmdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGlmIChwcm9wZXJ0eU5hbWUgPCBtX2xl
bmd0aCkgeworICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnREZWxldGUgfCBSZWFkT25s
eSwgZ2V0SW5kZXgoZXhlYywgcHJvcGVydHlOYW1lKSk7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0FMV0FZU19JTkxJTkUgU3RyaW5n
IGlubGluZUpTVmFsdWVOb3RTdHJpbmd0b1N0cmluZyhjb25zdCBKU1ZhbHVlJiB2YWx1ZSwgRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgaWYgKHZhbHVl
LmlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIHZtLm51bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZS5h
c0ludDMyKCkpOworICAgIGlmICh2YWx1ZS5pc0RvdWJsZSgpKQorICAgICAgICByZXR1cm4gdm0u
bnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVlLmFzRG91YmxlKCkpOworICAgIGlmICh2YWx1ZS5pc1Ry
dWUoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPnRydWVLZXl3b3JkLnN0cmlu
ZygpOworICAgIGlmICh2YWx1ZS5pc0ZhbHNlKCkpCisgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0
eU5hbWVzLT5mYWxzZUtleXdvcmQuc3RyaW5nKCk7CisgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQor
ICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+bnVsbEtleXdvcmQuc3RyaW5nKCk7Cisg
ICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5h
bWVzLT51bmRlZmluZWRLZXl3b3JkLnN0cmluZygpOworICAgIHJldHVybiB2YWx1ZS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7Cit9CisgICAgCitBTFdBWVNfSU5MSU5FIFN0cmluZyBKU1Zh
bHVlOjp0b1dURlN0cmluZ0lubGluZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgaWYg
KGlzU3RyaW5nKCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU1N0cmluZyo+KGFzQ2Vs
bCgpKS0+dmFsdWUoZXhlYyk7CisgICAgCisgICAgcmV0dXJuIGlubGluZUpTVmFsdWVOb3RTdHJp
bmd0b1N0cmluZygqdGhpcywgZXhlYyk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCmluZGV4
IDJhYzI1MjRjNWRmZGEzZDEyMjQ5ZDc3OTBhZGMzMTI5ZTNjMGU4NzEuLmZiYzhiODk1ZWFlNmFm
Nzg4ODM5YmViNWU4M2Q3YjZiOTc5MjhmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCkBAIC02NCw2ICs2NCw4IEBA
IHZvaWQgSlNTeW1ib2xUYWJsZU9iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0CiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9j
a2VyKHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPm1fbG9jayk7CiAgICAgICAgIFN5bWJvbFRh
YmxlOjpNYXA6Oml0ZXJhdG9yIGVuZCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmVuZChs
b2NrZXIpOwogICAgICAgICBmb3IgKFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ID0gdGhp
c09iamVjdC0+c3ltYm9sVGFibGUoKS0+YmVnaW4obG9ja2VyKTsgaXQgIT0gZW5kOyArK2l0KSB7
CisgICAgICAgICAgICBpZiAoaXQtPmtleS0+aXNFbXB0eVVuaXF1ZSgpKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKCEoaXQtPnZhbHVlLmdldEF0dHJpYnV0ZXMo
KSAmIERvbnRFbnVtKSB8fCAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkKICAg
ICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIGl0LT5rZXku
Z2V0KCkpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCmluZGV4IGI1YjIwYTg0NWI2YWI2NDQyNGIzN2UzMWIy
Nzc0ZWY5MDUzNTNmN2YuLmQwM2IyNDUxMWMyZGUxOTU5ZmI1ZjU2ZDY0OWM2NGQwZWZlMDY4NTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVP
YmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxl
T2JqZWN0LmgKQEAgLTcyLDcgKzcyLDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiB7
CiAgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9sVGFibGUoKTsK
ICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2spOwotICAg
IFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tl
ciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRl
cmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkp
OwogICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBlbnRyeSA9IGl0ZXItPnZhbHVl
OwpAQCAtODcsNyArODcsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKIHsKICAgICBT
eW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgIENv
bmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAgU3ltYm9s
VGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9w
ZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBp
dGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAg
aWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+dmFsdWU7CkBAIC0x
MDQsNyArMTA0LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiB7CiAgICAgU3ltYm9s
VGFibGUmIHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9sVGFibGUoKTsKICAgICBDb25jdXJy
ZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2spOwotICAgIFN5bWJvbFRhYmxl
OjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlO
YW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9
IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChp
dGVyID09IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBlbnRyeSA9IGl0ZXItPnZhbHVlOwpAQCAtMTI2LDcg
KzEyNiw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0KAogICAgIHsKICAgICAgICAgU3lt
Ym9sVGFibGUmIHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9sVGFibGUoKTsKICAgICAgICAg
R0NTYWZlQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrLCBleGVj
LT52bSgpLmhlYXApOwotICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0g
c3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAg
ICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChs
b2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgICAgIGlmIChpdGVyID09IHN5bWJvbFRh
YmxlLmVuZChsb2NrZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBib29s
IHdhc0ZhdDsKQEAgLTE1OSw3ICsxNTksNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dFdp
dGhBdHRyaWJ1dGVzKAogICAgIHsKICAgICAgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0g
Km9iamVjdC0+c3ltYm9sVGFibGUoKTsKICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0
b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpKTsKKyAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRh
YmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgICAgICBpZiAoaXRlciA9
PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgU3ltYm9sVGFibGVFbnRyeSYgZW50cnkgPSBpdGVyLT52YWx1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCmluZGV4IGE4MDZkZDA1MmEwY2JlZTRjYWMyY2Fh
NmUwOGM2NzE2MDA1YzI3MGMuLmE5NzY1MjAxYjlmNTE4NjQxNDIzZGRlMGZlMGUyZTUxYThjZTcz
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcApAQCAtNjgsNyAr
NjgsNyBAQCB2b2lkIEhhc2hUYWJsZTo6ZGVsZXRlVGFibGUoKSBjb25zdAogYm9vbCBzZXRVcFN0
YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnks
IEpTT2JqZWN0KiB0aGlzT2JqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgQVNTRVJUKHRoaXNPYmotPmdsb2JhbE9iamVjdCgpKTsKLSAgICBB
U1NFUlQoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKTsKKyAgICBBU1NFUlQoZW50cnkt
PmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKTsKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0
ID0gdGhpc09iai0+Z2V0RGlyZWN0T2Zmc2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMp
OwpAQCAtNzksOSArNzksMTMgQEAgYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0KgogICAgICAgICBpZiAo
dGhpc09iai0+c3RhdGljRnVuY3Rpb25zUmVpZmllZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIAotICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3ROYXRpdmVGdW5jdGlvbigKLSAg
ICAgICAgICAgIHZtLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBlbnRy
eS0+ZnVuY3Rpb25MZW5ndGgoKSwKLSAgICAgICAgICAgIGVudHJ5LT5mdW5jdGlvbigpLCBlbnRy
eS0+aW50cmluc2ljKCksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAgICAgICBpZiAoZW50cnkt
PmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW4pCisgICAgICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3RC
dWlsdGluRnVuY3Rpb24odm0sIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUs
IGVudHJ5LT5idWlsdGluR2VuZXJhdG9yKCkodm0pLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3ROYXRpdmVGdW5jdGlv
bigKKyAgICAgICAgICAgICAgICB2bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5
TmFtZSwgZW50cnktPmZ1bmN0aW9uTGVuZ3RoKCksCisgICAgICAgICAgICAgICAgZW50cnktPmZ1
bmN0aW9uKCksIGVudHJ5LT5pbnRyaW5zaWMoKSwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAg
ICAgIH0KICAgICAgICAgb2Zmc2V0ID0gdGhpc09iai0+Z2V0RGlyZWN0T2Zmc2V0KHZtLCBwcm9w
ZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwogICAgICAgICBBU1NFUlQoaXNWYWxpZE9mZnNldChvZmZz
ZXQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9M
b29rdXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCmluZGV4IGJk
ZTgzZDRhNmZjMzU1Nzc4NTBlMzFlODhiYzM5ZmQwNWY3YmNlNTIuLmRiYTM4OWU5ZTI0M2RkMGVj
YjJiYTk4ZjM5NGQ0MDc5ZjlkZWE5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0xvb2t1cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xv
b2t1cC5oCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIC8vIGllLiB0eXBl
ZGVmIEpTVmFsdWUgKCpHZXRGdW5jdGlvbikoRXhlY1N0YXRlKiwgSlNPYmplY3QqIGJhc2VPYmpl
Y3QpCiAgICAgdHlwZWRlZiBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBHZXRGdW5jdGlvbjsK
ICAgICB0eXBlZGVmIFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jIFB1dEZ1bmN0aW9uOwor
ICAgIHR5cGVkZWYgRnVuY3Rpb25FeGVjdXRhYmxlKiAoKkJ1aWx0aW5HZW5lcmF0b3IpKFZNJik7
CiAKICAgICBjbGFzcyBIYXNoRW50cnkgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKQEAgLTY4LDExICs2OSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVy
biBtX2ludHJpbnNpYzsKICAgICAgICAgfQogCisgICAgICAgIEJ1aWx0aW5HZW5lcmF0b3IgYnVp
bHRpbkdlbmVyYXRvcigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEJ1aWx0aW4pOyBy
ZXR1cm4gbV91LmJ1aWx0aW5HZW5lcmF0b3IuZ2VuZXJhdG9yVmFsdWU7IH0KICAgICAgICAgTmF0
aXZlRnVuY3Rpb24gZnVuY3Rpb24oKSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBGdW5j
dGlvbik7IHJldHVybiBtX3UuZnVuY3Rpb24uZnVuY3Rpb25WYWx1ZTsgfQogICAgICAgICB1bnNp
Z25lZCBjaGFyIGZ1bmN0aW9uTGVuZ3RoKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYg
RnVuY3Rpb24pOyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obV91LmZ1bmN0aW9u
Lmxlbmd0aCk7IH0KIAotICAgICAgICBHZXRGdW5jdGlvbiBwcm9wZXJ0eUdldHRlcigpIGNvbnN0
IHsgQVNTRVJUKCEobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0
eS5nZXQ7IH0KLSAgICAgICAgUHV0RnVuY3Rpb24gcHJvcGVydHlQdXR0ZXIoKSBjb25zdCB7IEFT
U0VSVCghKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVydHkucHV0
OyB9CisgICAgICAgIEdldEZ1bmN0aW9uIHByb3BlcnR5R2V0dGVyKCkgY29uc3QgeyBBU1NFUlQo
IShtX2F0dHJpYnV0ZXMgJiBCdWlsdGluT3JGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5
LmdldDsgfQorICAgICAgICBQdXRGdW5jdGlvbiBwcm9wZXJ0eVB1dHRlcigpIGNvbnN0IHsgQVNT
RVJUKCEobV9hdHRyaWJ1dGVzICYgQnVpbHRpbk9yRnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9w
ZXJ0eS5wdXQ7IH0KIAogICAgICAgICBpbnRwdHJfdCBsZXhlclZhbHVlKCkgY29uc3QgeyBBU1NF
UlQoIW1fYXR0cmlidXRlcyk7IHJldHVybiBtX3UubGV4ZXIudmFsdWU7IH0KIApAQCAtOTQsNiAr
OTYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgaW50cHRyX3QgbGVuZ3Ro
OyAvLyBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBmdW5jdGlvbgogICAgICAgICAgICAgfSBmdW5j
dGlvbjsKICAgICAgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAgICAgQnVpbHRpbkdlbmVy
YXRvciBnZW5lcmF0b3JWYWx1ZTsKKyAgICAgICAgICAgICAgICBpbnRwdHJfdCB1bnVzZWQ7Cisg
ICAgICAgICAgICB9IGJ1aWx0aW5HZW5lcmF0b3I7CisgICAgICAgICAgICBzdHJ1Y3QgewogICAg
ICAgICAgICAgICAgIEdldEZ1bmN0aW9uIGdldDsKICAgICAgICAgICAgICAgICBQdXRGdW5jdGlv
biBwdXQ7CiAgICAgICAgICAgICB9IHByb3BlcnR5OwpAQCAtMjA5LDcgKzIxNSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSGFz
aEVudHJ5KiBlbnRyeShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogICAgICAgICB7
Ci0gICAgICAgICAgICBTdHJpbmdJbXBsKiBpbXBsID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUo
KTsKKyAgICAgICAgICAgIFN0cmluZ0ltcGwqIGltcGwgPSBwcm9wZXJ0eU5hbWUudWlkKCk7CiAg
ICAgICAgICAgICBpZiAoIWltcGwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
IApAQCAtMjQ5LDcgKzI1NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpZiAoIWVudHJ5
KSAvLyBub3QgZm91bmQsIGZvcndhcmQgdG8gcGFyZW50CiAgICAgICAgICAgICByZXR1cm4gUGFy
ZW50SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iaiwgZXhlYywgcHJvcGVydHlOYW1lLCBz
bG90KTsKIAotICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKQorICAg
ICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKQogICAgICAg
ICAgICAgcmV0dXJuIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KGV4ZWMsIGVudHJ5LCB0aGlzT2Jq
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCiAgICAgICAgIHNsb3Quc2V0Q2FjaGVhYmxlQ3VzdG9t
KHRoaXNPYmosIGVudHJ5LT5hdHRyaWJ1dGVzKCksIGVudHJ5LT5wcm9wZXJ0eUdldHRlcigpKTsK
QEAgLTI4Niw3ICsyOTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaWYgKCFlbnRyeSkg
Ly8gbm90IGZvdW5kLCBmb3J3YXJkIHRvIHBhcmVudAogICAgICAgICAgICAgcmV0dXJuIFBhcmVu
dEltcDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiAKLSAgICAgICAgQVNTRVJUKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKSk7
CisgICAgICAgIEFTU0VSVCghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlv
bikpOwogCiAgICAgICAgIHNsb3Quc2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXNPYmosIGVudHJ5LT5h
dHRyaWJ1dGVzKCksIGVudHJ5LT5wcm9wZXJ0eUdldHRlcigpKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC0yOTUsNyArMzAxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5saW5lIHZvaWQg
cHV0RW50cnkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVj
dCogYmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQogICAgIHsKICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIGZ1bmN0aW9u
IHB1dCBpdCBhcyBhbiBvdmVycmlkZSBwcm9wZXJ0eS4KLSAgICAgICAgaWYgKGVudHJ5LT5hdHRy
aWJ1dGVzKCkgJiBGdW5jdGlvbikgeworICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAm
IEJ1aWx0aW5PckZ1bmN0aW9uKSB7CiAgICAgICAgICAgICBpZiAoSlNPYmplY3QqIHRoaXNPYmpl
Y3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4oc2xvdC50aGlzVmFsdWUoKSkpCiAgICAgICAg
ICAgICAgICAgdGhpc09iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwg
dmFsdWUpOwogICAgICAgICB9IGVsc2UgaWYgKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIFJlYWRP
bmx5KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRp
dmVFcnJvckNvbnN0cnVjdG9yLmNwcAppbmRleCBkNWU3MjhjMmNkMTAyMGE0N2U0YWRjZDY0OWNk
MWZmZmE1Y2Q2YTgzLi5kY2EyZmQ4ZDFmNmFjMjNiOGZmODE3Y2JiMThmYWFlN2JjZDU5NzAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJv
ckNvbnN0cnVjdG9yLmNwcApAQCAtMzgsNiArMzgsMjAgQEAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
cjo6TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ewogfQogCit2b2lkIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1
Y3R1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSwgbmFtZSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworICAgIAorICAgIE5hdGl2
ZUVycm9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZVN0cnVjdHVyZSwgbmFtZSwgdGhpcyk7CisgICAg
CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEp
LCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7IC8vIEVDTUEgMTUuMTEuNy41Cisg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIG1fZXJyb3JTdHJ1Y3R1cmUu
c2V0KHZtLCB0aGlzLCBFcnJvckluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlKSk7CisgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUpOworICAgIEFT
U0VSVChtX2Vycm9yU3RydWN0dXJlLT5pc09iamVjdCgpKTsKK30KKwogdm9pZCBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiB7CiAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogdGhpc09iamVjdCA9IGpzQ2Fz
dDxOYXRpdmVFcnJvckNvbnN0cnVjdG9yKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKaW5kZXggNzQwZDNm
OTMzMjkyZmQyYWNjYjRiOTkwMzQ0MzEyYjkzMTlhZTExMC4uNDM4YTNhZmI5YmIwZjY0MTJjOTc5
MzIyMzBjODg3MTA5NjFmNTQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaApAQCAtNTEsMTkgKzUxLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUoKSB7IHJldHVy
biBtX2Vycm9yU3RydWN0dXJlLmdldCgpOyB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgbmFtZSk7Ci0gICAgICAg
ICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7Ci0KLSAgICAgICAgICAgIE5hdGl2ZUVycm9y
UHJvdG90eXBlKiBwcm90b3R5cGUgPSBOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZVN0cnVjdHVyZSwgbmFtZSwgdGhpcyk7Ci0KLSAgICAgICAg
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOyAvLyBFQ01BIDE1LjExLjcuNQotICAg
ICAgICAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3Rv
dHlwZSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwotICAgICAgICAgICAgbV9l
cnJvclN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEVycm9ySW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUpKTsKLSAgICAgICAgICAgIEFTU0VSVChtX2Vy
cm9yU3RydWN0dXJlKTsKLSAgICAgICAgICAgIEFTU0VSVChtX2Vycm9yU3RydWN0dXJlLT5pc09i
amVjdCgpKTsKLSAgICAgICAgfQorICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgU3RyaW5n
JiBuYW1lKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3Io
Vk0mLCBTdHJ1Y3R1cmUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5U2xvdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVy
dHlTbG90LmgKaW5kZXggZDkzOGZhMzE2NDVhZjI2Yjc1ODUxNGRiNmIyNDc4ZjE4M2U5ZWVlMS4u
Y2ZlOWM0ZDMyYmE3NjhjNzRlNGZmYmIxOTEzNTI3OWRlYmYxMTc2NiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKQEAgLTQyLDYgKzQyLDggQEAgZW51
bSBBdHRyaWJ1dGUgewogICAgIEZ1bmN0aW9uICAgICA9IDEgPDwgNCwgIC8vIHByb3BlcnR5IGlz
IGEgZnVuY3Rpb24gLSBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKICAgICBBY2Nlc3Nv
ciAgICAgPSAxIDw8IDUsICAvLyBwcm9wZXJ0eSBpcyBhIGdldHRlci9zZXR0ZXIKICAgICBDdXN0
b21BY2Nlc3NvciA9IDEgPDwgNiwKKyAgICBCdWlsdGluICAgICAgICAgPSAxIDw8IDcsIC8vIHBy
b3BlcnR5IGlzIGEgYnVpbHRpbiBmdW5jdGlvbiAtIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRh
YmxlcworICAgIEJ1aWx0aW5PckZ1bmN0aW9uID0gQnVpbHRpbiB8IEZ1bmN0aW9uLCAvLyBoZWxw
ZXIgb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCiB9OwogCiBjbGFzcyBQcm9wZXJ0eVNs
b3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJv
dG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlw
ZS5jcHAKaW5kZXggODlkN2FjMWI4Y2JmMWRiMGUxMjZmMWZjNzk2ZGZkNWZjODRiMmU1OS4uOWRk
YTBiYThkZTE0MTJlYWY0ZDI5MWRjZjBjNmIzOTY1N2ZiNjc3YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCkBAIC0yNCw3ICsyNCw3
IEBACiAjaW5jbHVkZSAiQXJyYXlQcm90b3R5cGUuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2lu
Y2x1ZGUgIkpTQXJyYXkuaCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlND
SlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNP
YmplY3QuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCmluZGV4IGIyMDM4ODhkM2MxNmNkYTNjMDAz
NTA2MjA4YWUwODY5NWRjNWRhYWEuLmQwMjY2YTU5ZWYzZjU1YWEzNjk0ZjVmNzQxOGNmNzhlMGFl
MGQ4YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1
Y3Rvci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU1NldC5oIgorI2luY2x1ZGUg
IkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk1hcERhdGEuaCIKICNpbmNsdWRlICJTZXRQ
cm90b3R5cGUuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09i
amVjdC5jcHAKaW5kZXggNDQwYTYwOTQyMTkzMzgwMzFlNTkyN2FmNDZiMjg5ZGJjZmI1YTcyOC4u
ODBlN2VhYThjNDkxY2I2ZDU0YTgzMjRjZTY0N2E2Y2RiN2U4ODc4MSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCkBAIC0yMiw3ICsyMiw5IEBA
CiAjaW5jbHVkZSAiU3RyaW5nT2JqZWN0LmgiCiAKICNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1
ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNp
bmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5j
bHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggMDQyOTFmN2U4ZGQyNGU4YWIzM2Q3NWFmMWRhNDU2OGYy
YmM5OWU2OC4uMWVjYWI4NWMwYmRiMjg2OTg5NDU3N2E3NDEyNTRlMzY0NDE0OWQ4OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0yNywxMiArMjcs
MTggQEAKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgor
I2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRHVtcENvbnRleHQuaCIK
KyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNs
dWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCisjaW5jbHVkZSAiUHJvcGVydHlNYXBIYXNoVGFibGUu
aCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9y
SW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCisjaW5jbHVkZSAiU3RydWN0
dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oIgogI2lu
Y2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtD
b3VudGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNTJjY2Y0MjNh
MTA0M2UxMDc5ZjJkOGIxODk0MjE5ODkwZTcxZjJiYy4uOTFhZDU1N2UyODliNDczNzA3YjgzOWY2
Y2U3MGNhMzQ0MTg2YTVmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAt
MzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKICNpbmNsdWRlICJBcml0eUNoZWNr
RmFpbFJldHVyblRodW5rcy5oIgogI2luY2x1ZGUgIkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludC5oIgorI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgogI2luY2x1ZGUgIkNhbGxG
cmFtZUlubGluZXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2RlQ2Fj
aGUuaCIKQEAgLTU1LDcgKzU2LDEwIEBACiAjaW5jbHVkZSAiSlNBUElWYWx1ZVdyYXBwZXIuaCIK
ICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVk
ZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNp
bmNsdWRlICJKU05hbWVTY29wZS5oIgpAQCAtNjgsMTMgKzcyLDE2IEBACiAjaW5jbHVkZSAiTG9v
a3VwLmgiCiAjaW5jbHVkZSAiTWFwRGF0YS5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCisjaW5jbHVk
ZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiUGFyc2VyQXJlbmEuaCIKKyNpbmNsdWRlICJQcm9wZXJ0
eU1hcEhhc2hUYWJsZS5oIgogI2luY2x1ZGUgIlJlZ0V4cENhY2hlLmgiCiAjaW5jbHVkZSAiUmVn
RXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJTb3VyY2VQcm92aWRlckNhY2hlLmgiCiAjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2
YXRpb24uaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJl
SW5saW5lcy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiV2Vh
a01hcERhdGEuaCIKICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CkBAIC0yMjYsNiArMjMzLDcg
QEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9pbkRl
ZmluZU93blByb3BlcnR5KGZhbHNlKQogICAgICwgbV9jb2RlQ2FjaGUoQ29kZUNhY2hlOjpjcmVh
dGUoKSkKICAgICAsIG1fZW5hYmxlZFByb2ZpbGVyKG51bGxwdHIpCisgICAgLCBtX2J1aWx0aW5F
eGVjdXRhYmxlcyhCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgaW50
ZXJwcmV0ZXIgPSBuZXcgSW50ZXJwcmV0ZXIoKnRoaXMpOwogICAgIFN0YWNrQm91bmRzIHN0YWNr
ID0gd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApp
bmRleCA1YTg0MTA1ZWFmYjdhYmJhNWZhNDMxZWVlZGQ1NWQ3YTg5ZjU1Y2UyLi42OTU4YWMzOTNi
MWFlZmMwYmVmYmY2ZTRlYjhiNjgyNWNmN2M5YTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJQcml2YXRlTmFtZS5oIgogI2luY2x1
ZGUgIlByb3RvdHlwZU1hcC5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgorI2luY2x1ZGUg
IlNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJUaHVua0dlbmVy
YXRvcnMuaCIKICNpbmNsdWRlICJUeXBlZEFycmF5Q29udHJvbGxlci5oIgpAQCAtNjksNiArNzAs
NyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcml0eUNoZWNrRmFpbFJldHVyblRo
dW5rczsKKyAgICBjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXM7CiAgICAgY2xhc3MgQ29kZUJsb2Nr
OwogICAgIGNsYXNzIENvZGVDYWNoZTsKICAgICBjbGFzcyBDb21tb25JZGVudGlmaWVyczsKQEAg
LTQ5Nyw2ICs0OTksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCByZWdpc3Rlcldh
dGNocG9pbnRGb3JJbXB1cmVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyJiwgV2F0Y2hwb2ludCop
OwogICAgICAgICAvLyBGSVhNRTogVXNlIEF0b21pY1N0cmluZyBvbmNlIGl0IGdvdCBtZXJnZWQg
d2l0aCBJZGVudGlmaWVyLgogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFkZEltcHVy
ZVByb3BlcnR5KGNvbnN0IFN0cmluZyYpOworICAgICAgICAKKyAgICAgICAgQnVpbHRpbkV4ZWN1
dGFibGVzKiBidWlsdGluRXhlY3V0YWJsZXMoKSB7IHJldHVybiBtX2J1aWx0aW5FeGVjdXRhYmxl
cy5nZXQoKTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKQEAgLTUzNywxMCArNTQxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIEpTVmFsdWUgbV9leGNlcHRpb247CiAgICAgICAgIGJvb2wgbV9pbkRlZmluZU93blByb3Bl
cnR5OwogICAgICAgICBPd25QdHI8Q29kZUNhY2hlPiBtX2NvZGVDYWNoZTsKLSAgICAgICAgUmVm
Q291bnRlZEFycmF5PFN0YWNrRnJhbWU+IG1fZXhjZXB0aW9uU3RhY2s7Ci0KICAgICAgICAgTGVn
YWN5UHJvZmlsZXIqIG1fZW5hYmxlZFByb2ZpbGVyOwotCisgICAgICAgIE93blB0cjxCdWlsdGlu
RXhlY3V0YWJsZXM+IG1fYnVpbHRpbkV4ZWN1dGFibGVzOworICAgICAgICBSZWZDb3VudGVkQXJy
YXk8U3RhY2tGcmFtZT4gbV9leGNlcHRpb25TdGFjazsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcs
IFJlZlB0cjxXYXRjaHBvaW50U2V0Pj4gbV9pbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnRTZXRzOwog
ICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1
bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwZmNjMzg0ZThlZGZjMzRi
MTQwODNiODY1ZDM3MzgyMGY0MTY1YzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCkBAIC0wLDAgKzEs
NCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9KU1N0cmluZ0lubGluZXNfaAorI2RlZmluZSBXZWJD
b3JlX0ZXRF9KU1N0cmluZ0lubGluZXNfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3Ry
aW5nSW5saW5lcy5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcAppbmRleCAyZWRk
Y2RiYjlmMDA2Y2E3NjI2NjUwYjQyMDI3ODYyNmI5MjYxNDE3Li4zYzRlMGQ3YmJiMzFjYWIxMmI1
ZTZjOTc1Yzc0ZDNmNDg0ZTljYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAKQEAgLTQ2
LDYgKzQ2LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
SlNWYWx1ZUlubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ0lubGlu
ZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNJREJBbnlDdXN0b20uY3BwCmluZGV4IDU2NDljODVjYTA5NTg3NzQ4YTNkYTA2Y2Rk
ZDBjYTk5OWU1MGI4ZTcuLjNmNGQ4ZWZhZWI1N2YzMzAwM2U3M2E3ZTc4NDJlNDJjNzNjZTY0OTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFueUN1c3RvbS5jcHAKQEAg
LTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJKU0lEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAi
SlNJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgor
I2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0YWJh
c2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1
c3RvbS5jcHAKaW5kZXggOWVhZTc1NjljNzA2MDNhNGZlZDBhZjE0YzRmODcxOGNkZTY0YTZlMS4u
ZjQ5ZGZlOTBiNGU4MmQzOWVkY2JmOWJhMjlmMmFlNzk5YzBkZGYyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKQEAgLTM3LDcg
KzM3LDcgQEAKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIkpTSURCT2Jq
ZWN0U3RvcmUuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0jaW5jbHVkZSA8cnVudGlt
ZS9KU1N0cmluZy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAKaW5kZXggNzRmZDM1NGIyODYwN2NmNzgyMmY4
MDUzNDc5NzBmNWQ3YWM4YzgzMi4uNTQzNGIzYjdkNmM1NmVjYjBhMDNhMjc5NGM2NzM2YTlhZGZi
NzBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RT
dG9yZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmpl
Y3RTdG9yZUN1c3RvbS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJJREJPYmplY3RT
dG9yZS5oIgogI2luY2x1ZGUgIkpTSURCSW5kZXguaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9y
Lmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNT
dHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2MjVmOWY3
MDI5MmZkYzE0YjhjYTUzMzc3MGMwNGQ0YjcwMDdmNjNjLi44OGM3YWQ3OTRkMjBmNWQ0ODllYjg1
ZDA3Nzk1ODUxZDM0NWEyMDcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTQtMDEtMjkgIE9s
aXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGl0IHBvc3NpYmxl
IHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBKUworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlZCB0aGUgdGVzdCByZXN1bHRzIGZvciBuZXcg
ZXJyb3IgbWVzc2FnZXMgKG5vdyB0aGF0IHRoZXkncmUKKyAgICAgICAgYWN0dWFsbHkgaGVscGZ1
bCksIGFuZCBhZGRlZCBhIGpzLXJlZ3Jlc3MgdGVzdCB0byB0cmFjayBwZXJmb3JtYW5jZS4KKwor
ICAgICAgICAqIGpzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9kb20v
YXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL3Jl
Z3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICoganMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbDogQWRkZWQuCisgICAgICAg
ICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzOiBBZGRl
ZC4KKyAgICAgICAgKHRlc3QxKToKKyAgICAgICAgKHRlc3QyKToKKyAgICAgICAgKHRlc3QzKToK
KwogMjAxNC0wMS0yOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IFBsYXkgQnJlYWtwb2ludCBTb3VuZCBpbiBGcm9udGVuZApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0CmluZGV4IDU0MWI4YzM1OGYwNjhh
MGNlYTg4MmMxMDUxNzUzMjUxMTRjZDMzZjcuLmNjYTM2M2RjZTU4ZmJhOTVhNThjZTQ2ZmNiNDhj
MzhiZjU4YWRmNTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5LWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQKQEAg
LTMwLDEyICszMCwxMiBAQCBQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoaXNCaWdFbm91
Z2hBbmRFeGNlcHRpb24pIHRocmV3IGV4Y2VwdGlvbiBleGNlcHRpbwogUEFTUyBbMTIsIDU0LCAx
OCwgMTMwLCA0NF0uZXZlcnkoaXNCaWdFbm91Z2hBbmRFeGNlcHRpb24pIHRocmV3IGV4Y2VwdGlv
biBleGNlcHRpb24gZnJvbSBmdW5jdGlvbi4KIAogNS4wIFdyb25nIFR5cGUgZm9yIENhbGxiYWNr
IFRlc3QKLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSg1KSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCd3
cm9uZycpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwg
NSwgOCwgMTMwLCA0NF0uZXZlcnkobmV3IE9iamVjdCgpKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KG51bGwpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMw
LCA0NF0uZXZlcnkodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVy
cm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSg1KSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sg
bXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCd3cm9u
ZycpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxs
YmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnko
bmV3IE9iamVjdCgpKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUu
ZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwg
NDRdLmV2ZXJ5KG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlw
ZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMw
LCA0NF0uZXZlcnkodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5w
cm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUs
IDgsIDEzMCwgNDRdLmV2ZXJ5KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJv
dG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KIAogNi4wIEVhcmx5IEV4
aXQgKCJTaG9ydCBDaXJjdWl0aW5nIikKIFBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShp
c0JpZ0Vub3VnaFNob3J0Q2lyY3VpdCkgaXMgZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9qcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CmluZGV4
IDJjMmE2OGNiMTA2ZGExMGYwODZiMjJjNWJmMmJmNWM4ZmU3OWUzM2UuLjVkOWVjYjc1YThkYTc5
YmE2NTYwNWU3ZWI5Y2Y4ZmMyNWZlMThhZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2Rv
bS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvanMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApAQCAtMTUs
NyArMTUsNyBAQCBQQVNTIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHVuZGVmaW5lZCwgMCwg
MSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZQogUEFTUyBBcnJheS5wcm90b3R5cGUu
c29ydC5jYWxsKHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVk
IGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5zb3J0LmNhbGwo
dW5kZWZpbmVkKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwodW5kZWZpbmVk
LCAwLCAxKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9i
amVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKHVuZGVmaW5lZCwg
MCwgMSknKS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuY2FsbCh1bmRlZmluZWQsIHt9
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAo
ZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuY2FsbCh1bmRlZmluZWQsIHt9KScp
LgotUEFTUyBBcnJheS5wcm90b3R5cGUuZXZlcnkuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZh
bHVhdGluZyAnQXJyYXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZykn
KS4KK1BBU1MgQXJyYXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZykg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVz
IHRoYXQgfHRoaXN8IG5vdCBiZSB1bmRlZmluZWQuCiBQQVNTIEFycmF5LnByb3RvdHlwZS5mb3JF
YWNoLmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
dW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5m
b3JFYWNoLmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZyknKS4KIFBBU1MgQXJyYXkucHJvdG90eXBl
LnNvbWUuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBl
LnNvbWUuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUu
aW5kZXhPZi5jYWxsKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5k
ZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5pbmRl
eE9mLmNhbGwodW5kZWZpbmVkLCAwKScpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEy
OTBjMGVlZmY4ZGU0MjE4MzNkOTJkMjdlOTUyNDE5MTc2MDRiOTYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeQorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbCBi
L0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmU1Y2MxNzFjNDg3NWEzNTg1YmYxNGU1NDE1ZjVjZDBlNTgxZDU0NAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0
bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQt
dGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5LXByb3Rv
dHlwZS1ldmVyeS5qcyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5
LXByb3RvdHlwZS1ldmVyeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTRhYTE2MWMwY2U5OGIyYWIxOGEzYTFh
MWYwZGZhYWM5ZDdkMmUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9zY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzCkBAIC0wLDAgKzEsMjkgQEAK
K3ZhciByZXN1bHQgPSAwOworZnVuY3Rpb24gdGVzdDEoYSkgeworICAgIHJlc3VsdCA8PCAxOwor
ICAgIHJlc3VsdCsrOworICAgIHJldHVybiB0cnVlOworfQorZnVuY3Rpb24gdGVzdDIoYSxiKSB7
CisgICAgcmVzdWx0IF49IDM7CisgICAgcmVzdWx0ICo9IDM7CisgICAgcmV0dXJuIHRydWU7Cit9
CitmdW5jdGlvbiB0ZXN0MyhhLGIsYykgeworICAgIHJlc3VsdCBePSByZXN1bHQgPj4gMTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordmFyIHJlc3VsdCA9IDA7Cit2YXIgYXJyYXkgPSBbXQorZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkKKyAgICBhcnJheVtpXSA9IDE7CisKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgMTA7IGkrKykgeworICAgIGFycmF5LmV2ZXJ5KHRlc3QxKTsKKyAgICBh
cnJheS5ldmVyeSh0ZXN0Mik7CisgICAgYXJyYXkuZXZlcnkodGVzdDMpOworfQorCitpZiAocmVz
dWx0ICE9IDE0Mjg4MTA0OTYpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVz
dWx0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222679</attachid>
            <date>2014-01-30 09:55:29 -0800</date>
            <delta_ts>2014-01-30 10:33:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140130095527.patch</filename>
            <type>text/plain</type>
            <size>195065</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NjBlMTQzNTgwZTZkYzc1ZmEwNjY2YzlhMWUyZGMxZmMzZWYyY2MyLi4yNzBmZTZjZjRmNDQ2OGM4
NGRlNGViMjI3M2VmM2U4NTM4N2YxODBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
IFRoaXMgcmVzdWx0IG9mIHRoaXMgcmVmYWN0b3JpbmcKKyAgICAgICAgaXMgdGhhdCBDb21tb25J
ZGVudGlmaWVycywgYW5kIGEgZmV3IG90aGVyIG1pc2NlbGxhbmVvdXMgaGVhZGVycyBub3cKKyAg
ICAgICAgbmVlZCB0byBiZSBpbmNsdWRlZCBkaXJlY3RseSBhcyB0aGV5IHdlcmUgZm9ybWVybHkg
Y2FwdHVyZWQgdGhyb3VnaCBvdGhlcgorICAgICAgICBwYXRocy4KKworICAgICAgICBJbiBhZGRp
dGlvbiB0aGlzIGFkZHMgYSBmbGFnIHRvIHRoZSBMb29rdXAgdGFibGUncyBoYXNoZW50cnkgdG8g
aW5kaWNhdGUKKyAgICAgICAgdGhhdCBhIHN0YXRpYyBmdW5jdGlvbiBpcyBhY3R1YWxseSBiYWNr
ZWQgYnkgSlMuIFRoZXJlIGlzIHRoZW4gYSBsb3Qgb2YKKyAgICAgICAgbG9naWMgdG8gdGhyZWFk
IHRoZSBzcGVjaWFsIG5hdHVyZSBvZiB0aGUgZnVuY3RvbiB0byB3aGVyZSBpdCBtYXR0ZXJzLgor
ICAgICAgICBUaGlzIGFsbG93cyB0b1N0cmluZygpLCAuY2FsbGVyLCBldGMgdG8gbWltaWMgdGhl
IGJlaGF2aW91ciBvZiBhIGhvc3QKKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAgICAgTm90ZXMg
b24gd3JpdGluZyBidWlsdGluczoKKyAgICAgICAgIC0gRWFjaCBmdW5jdGlvbiBpcyBjb21waWxl
ZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBvdGhlcnMsIGFuZCB0aG9zZQorICAgICAgICAgICBpbXBs
ZW1lbnRhdGlvbnMgY2Fubm90IGN1cnJlbnRseSBjYXB0dXJlIGFsbCBnbG9iYWwgcHJvcGVydGll
cyAoYXMKKyAgICAgICAgICAgdGhhdCBjb3VsZCBiZSBwb3RlbnRpYWxseSB1bnNhZmUpLiBJZiBh
IGZ1bmN0aW9uIGRvZXMgY2FwdHVyZSBhCisgICAgICAgICAgIGdsb2JhbCB3ZSB3aWxsIGRlbGli
ZXJhdGVseSBjcmFzaC4KKyAgICAgICAgIC0gRm9yIHRob3NlICJnbG9iYWwiIHByb3BlcnRpZXMg
dGhhdCB3ZSBkbyB3YW50IGFjY2VzcyB0bywgd2UgdXNlCisgICAgICAgICAgIHRoZSBAIHByZWZp
eCwgZS5nLiBPYmplY3QodGhpcykgYmVjb21lcyBAT2JqZWN0KHRoaXMpLiBUaGUgQCBpZGVudGlm
aWVycworICAgICAgICAgICBhcmUgcHJpdmF0ZSBuYW1lcywgYW5kIGJlaGF2ZSBqdXN0IGxpa2Ug
cmVndWxhciBwcm9wZXJ0aWVzLCBvbmx5CisgICAgICAgICAgIHdpdGhvdXQgdGhlIHJpc2sgb2Yg
YWR1bHRlcmF0aW9uLiBBZ2FpbiwgaW4gdGhlIEBPYmplY3QgY2FzZSwgd2UKKyAgICAgICAgICAg
ZXhwbGljaXRseSBkdXBsaWNhdGUgdGhlIE9iamVjdENvbnN0cnVjdG9yIHJlZmVyZW5jZSBvbiB0
aGUgR2xvYmFsT2JqZWN0CisgICAgICAgICAgIHNvIHRoYXQgd2UgaGF2ZSBndWFyYW50ZWVkIGFj
Y2VzcyB0byB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgY29uc3RydWN0
b3IuCisgICAgICAgICAtIGNhbGwsIGFwcGx5LCBldmFsLCBhbmQgRnVuY3Rpb24gYXJlIGFsbCBy
ZWplY3RlZCBpZGVudGlmaWVycywgYWdhaW4KKyAgICAgICAgICAgdG8gcHJldmVudCBhbnl0aGlu
ZyBmcm9tIGFjY2lkZW50YWxseSB1c2luZyBhbiBhZHVsdGVyYXRlZCBvYmplY3QuCisgICAgICAg
ICAgIEluc3RlYWQgQGNhbGwgYW5kIEBhcHBseSBhcmUgYXZhaWxhYmxlLCBhbmQgaGFwcGlseSB0
aGV5IGNvbXBsZXRlbHkKKyAgICAgICAgICAgZHJvcCB0aGUgbmVxX3B0ciBpbnN0cnVjdGlvbiBh
cyB0aGV5J3JlIGRlZmluZWQgYXMgYWx3YXlzIGJlaW5nIHRoZQorICAgICAgICAgICBvcmlnaW5h
bCBjYWxsL2FwcGx5IGZ1bmN0aW9ucy4KKworICAgICAgICBUaGVzZSByZXN0cmljdGlvbnMgYXJl
IGp1c3QgaW50ZW5kZWQgdG8gbWFrZSBpdCBoYXJkZXIgdG8gYWNjaWRlbnRhbGx5CisgICAgICAg
IG1ha2UgY2hhbmdlcyB0aGF0IGFyZSBpbmNvcnJlY3QgKGZvciBpbnN0YW5jZSBjYWxsaW5nIHdo
YXRldmVyIGhhcyBiZWVuCisgICAgICAgIGFzc2lnbmVkIHRvIGdsb2JhbC5PYmplY3QsIGluc3Rl
YWQgb2YgdGhlIG9yaWdpbmFsIGNvbnN0cnVjdG9yIGZ1bmN0aW9uKS4KKyAgICAgICAgSG93ZXZl
ciwgbWFraW5nIGEgbWlzdGFrZSBsaWtlIHRoaXMgc2hvdWxkIHJlc3VsdCBpbiBhIHB1cmVseSBz
ZW1hbnRpYworICAgICAgICBlcnJvciBhcyBmdW5kYW1lbnRhbGx5IHRoZXNlIGZ1bmN0aW9ucyBh
cmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlCisgICAgICAgIHJlZ3VsYXIgSlMgY29kZSBp
biB0aGUgaG9zdCBnbG9iYWwsIGFuZCBoYXZlIG5vIG1vcmUgcHJpdmlsZWdlcyB0aGFuCisgICAg
ICAgIGFueSBvdGhlciBKUy4KKworICAgICAgICBUaGUgaW5pdGlhbCBwcm9vZiBvZiBjb25jZXB0
IGlzIEFycmF5LnByb3RvdHlwZS5ldmVyeSwgdGhpcyBzaG93cyBhIDY1JQorICAgICAgICBwZXJm
b3JtYW5jZSBpbXByb3ZlbWVudCwgYW5kIHRoYXQgaW1wcm92ZW1lbnQgaXMgc2lnbmlmaWNhbnRs
eSBodXJ0IGJ5CisgICAgICAgIG91ciBwb29yIG9wdGltaXNhdGlvbiBvZiBvcF9pbi4KKworICAg
ICAgICBBcyB0aGlzIGlzIHN1Y2ggYSBsaW1pdGVkIGZ1bmN0aW9uLCB3ZSBoYXZlIG5vdCB5ZXQg
ZXhwb3J0ZWQgYWxsIHN5bWJvbHMKKyAgICAgICAgdGhhdCB3ZSBjb3VsZCBwb3NzaWJseSBuZWVk
LCBidXQgYXMgd2UgaW1wbGVtZW50IG1vcmUsIHRoZSBsaWtlbGlob29kCisgICAgICAgIG9mIGVu
Y291bnRlcmluZyBtaXNzaW5nIGZlYXR1cmVzIHdpbGwgcmVkdWNlLgorCisgICAgICAgIFRoaXMg
ZGlkIHJlcXVpcmUgYnJlYWtpbmcgb3V0IGEgSlNTdHJpbmdJbmxpbmVzIGhlYWRlciwgYW5kIHJl
cXVpcmVkCisgICAgICAgIGZpeGluZyBhIGZldyBvYmplY3RzIHRoYXQgd2VyZSB0cnlpbmcgdG8g
dXNpbmcgUHJvcGVydHlOYW1lOjpwdWJsaWNOYW1lCisgICAgICAgIHJhdGhlciB0aGFuIFByb3Bl
cnR5TmFtZTo6dWlkLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0
eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dCk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRpY1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWNGdW5jdGlvbkdl
dHRlcik6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tH
ZXR0ZXIpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBidWlsdGlucy9BcnJheS5wcm90b3R5cGUuanM6CisgICAgICAgIChldmVyeSk6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkJ1aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKToKKyAgICAgICAgKEpTQzo6
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSk6CisgICAgICAgICog
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVj
dXRhYmxlczo6Y3JlYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tG
b3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6dG9TdHJpY3RuZXNzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNCdWlsdGluRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBjcmVhdGVfaGFz
aF90YWJsZToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZ2Vu
ZXJhdGUtanMtYnVpbHRpbnM6IEFkZGVkLgorICAgICAgICAoZ2V0Q29weXJpZ2h0KToKKyAgICAg
ICAgKGdldEZ1bmN0aW9ucyk6CisgICAgICAgIChnZW5lcmF0ZUNvZGUpOgorICAgICAgICAobWFu
Z2xlTmFtZSk6CisgICAgICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSWRlbnRp
Zmllcik6CisgICAgICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChTb3VyY2VDb2RlKToK
KyAgICAgICAgKFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKFZNKToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvUHJvdG9DYWxsRnJhbWUuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUp
OgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpM
ZXhlcik6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpM
ZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFy
Pjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAg
ICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcik6CisgICAgICAgICog
cGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OnNldENsb3NlZFZh
cmlhYmxlcyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
Tm9kZTo6Y2FwdHVyZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OnNldENs
b3NlZFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmluaXNoUGFy
c2luZyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRU
b2tlblRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OmdldFVzZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNsb3NlZFZhcmlh
Ymxlcyk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9k
ZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAgICAgICogcnVudGlt
ZS9BcmdMaXN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAg
ICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJh
dG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpn
ZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpD
b21tb25JZGVudGlmaWVycyk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQ
cml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQdWJsaWNO
YW1lKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzRXhjZXB0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxl
OjpleGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpleGVj
dXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aXNCdWlsdGlu
RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1l
L0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFi
bGVHZXQpOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0KToKKyAg
ICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgICogcnVudGltZS9K
U0NlbGxJbmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6c291cmNlQ29kZSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzSG9zdE9y
QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6aXNCdWlsdGluRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIpOgorICAgICAg
ICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9w
ZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgICogcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6Om9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpnZXRDbGFzc1Byb3BlcnR5TmFtZXMpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZ0lubGlu
ZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjppbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9i
amVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgICAgRG9uJ3QgcmVw
b3J0IHByaXZhdGUgbmFtZXMuCisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6c3ltYm9s
VGFibGVQdXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChKU0M6OnNldFVwU3RhdGlj
RnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlND
OjpIYXNoRW50cnk6OmJ1aWx0aW5HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpIYXNoRW50cnk6
OnByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpwcm9wZXJ0eVB1dHRl
cik6CisgICAgICAgIChKU0M6Okhhc2hUYWJsZTo6ZW50cnkpOgorICAgICAgICAoSlNDOjpnZXRT
dGF0aWNQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpnZXRTdGF0aWNWYWx1ZVNsb3QpOgor
ICAgICAgICAoSlNDOjpwdXRFbnRyeSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6YnVp
bHRpbkV4ZWN1dGFibGVzKToKKwogMjAxNC0wMS0yOSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3Nz
eUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikgbGVmdG92ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTEzZjE4OGFlNjUyYjk1ZjNiNTcyYWMxNzcwZWEx
MjViYmFlNzVkMi4uNjMyYWNjNDNkYzE2YzcxMzRkNThjMDRiN2E1Y2U1NmE5MTk4ZWNjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE0LTAxLTI5ICBPbGl2ZXIgSHVudCAgPG9saXZl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBpbXBsZW1lbnQgSlMg
YnVpbHRpbnMgaW4gSlMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNzg4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVwZGF0aW5nIGZvciB0aGUgbmV3bHkgcmVxdWlyZWQgaGVhZGVycy4KKworICAgICAg
ICBUZXN0OiBqcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sCisKKyAgICAgICAg
KiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oOiBBZGRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcDoKKwogMjAxNC0wMS0zMCAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViUGFnZTo6ZGV0ZXJtaW5lUHJpbWFyeVNu
YXBzaG90dGVkUGx1Z0luIGlzIHNsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggNWJlMDUzZjFlMDg2YjQzZTY4
NmMzNjc0ZGFlN2M1MTYwNWEyODZlNy4uMGVjZWQ1MWYzZTJkNWI2MjFkYWRmMDU3NDlmNWU3NDY2
YTA2ZjUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBib29sIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZQogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKICAg
ICBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHByb3BlcnR5TmFtZVJlZjsKICAgICAKLSAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpT
Q2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xh
c3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgLy8gb3B0aW9uYWwgb3B0
aW1pemF0aW9uIHRvIGJ5cGFzcyBnZXRQcm9wZXJ0eSBpbiBjYXNlcyB3aGVuIHdlIG9ubHkgbmVl
ZCB0byBrbm93IGlmIHRoZSBwcm9wZXJ0eSBleGlzdHMKICAgICAgICAgICAgIGlmIChKU09iamVj
dEhhc1Byb3BlcnR5Q2FsbGJhY2sgaGFzUHJvcGVydHkgPSBqc0NsYXNzLT5oYXNQcm9wZXJ0eSkg
ewpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiAgICAgUmVmUHRy
PE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgSlNWYWx1ZVJlZiB2YWx1ZVJl
ZiA9IHRvUmVmKGV4ZWMsIHZhbHVlKTsKICAgICAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9
IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJl
bnRDbGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBz
ZXRQcm9wZXJ0eSA9IGpzQ2xhc3MtPnNldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFwcm9wZXJ0eU5hbWVSZWYpCkBAIC0zNDMsNyArMzQzLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm8KICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CiAgICAg
UmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0Ns
YXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNz
ID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdERlbGV0
ZVByb3BlcnR5Q2FsbGJhY2sgZGVsZXRlUHJvcGVydHkgPSBqc0NsYXNzLT5kZWxldGVQcm9wZXJ0
eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lUmVmKQpAQCAtNTY0LDcgKzU2
NCw3IEBAIEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiB7CiAgICAgSlNPYmplY3RSZWYgdGhpc1Jl
ZiA9IHRvUmVmKHRoaXMpOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gY2xhc3NS
ZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAg
ICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXMgPSBq
c0NsYXNzLT5zdGF0aWNWYWx1ZXMoZXhlYykpIHsKICAgICAgICAgICAgICAgICBpZiAoU3RhdGlj
VmFsdWVFbnRyeSogZW50cnkgPSBzdGF0aWNWYWx1ZXMtPmdldChuYW1lKSkgewpAQCAtNjAwLDcg
KzYwMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGlj
RnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFCiAgICAgaWYgKFBhcmVudDo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdDIpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QyLmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFt
ZSkpOwogCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsK
ICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqLT5jbGFzc1JlZigpOyBq
c0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlm
IChPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGUqIHN0YXRpY0Z1bmN0aW9ucyA9IGpz
Q2xhc3MtPnN0YXRpY0Z1bmN0aW9ucyhleGVjKSkgewogICAgICAgICAgICAgICAgIGlmIChTdGF0
aWNGdW5jdGlvbkVudHJ5KiBlbnRyeSA9IHN0YXRpY0Z1bmN0aW9ucy0+Z2V0KG5hbWUpKSB7CkBA
IC02MjYsNyArNjI2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpjYWxsYmFja0dldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWQKICAgICBKU09iamVjdFJl
ZiB0aGlzUmVmID0gdG9SZWYodGhpc09iaik7CiAgICAgUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBw
cm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2Jq
LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsK
ICAgICAgICAgICAgIGlmIChKU09iamVjdEdldFByb3BlcnR5Q2FsbGJhY2sgZ2V0UHJvcGVydHkg
PSBqc0NsYXNzLT5nZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlO
YW1lUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDI3YmM0YzE3ZjNk
ZmVlYjYxZDI1MjMyM2ZkODc4YzQ0NzgwZjc0YzUuLjQxMzRhNmMxZTNlZjMyYmU4NWE2MjQ1ZDdl
YjVlMDU1MmZlNTEzZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUy
LDYgKzUyLDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9TY3Jp
cHRPYmplY3QuY3BwCiAgICAgYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCiAKKyAgICBidWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCisKICAgICBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Q
cm9maWxlLmNwcAogICAgIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9C
eXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC04MTUsMTYgKzgxNywyNyBAQCBhZGRfY3VzdG9tX2Nv
bW1hbmQoCiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3Jl
X0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0vQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTLmpzb24gLS1vdXRwdXRf
aF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0cHV0X2Nw
cF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0cHV0X2pz
X2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIgLS1vdXRwdXRfdHlw
ZSBKYXZhU2NyaXB0IC0td3JpdGVfYWx3YXlzICYmIG1rZGlyIC1wICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yICYmIGNwICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTRnJvbnRlbmREaXNwYXRj
aGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNU
eXBlQnVpbGRlcnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3Bl
Y3RvcgogICAgIFZFUkJBVElNKQogCisjIEpTQ0J1aWx0aW5zCitmaWxlKEdMT0IgSlNDQnVpbHRp
bnNfanNfZmlsZXMgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9idWlsdGlucy8qLmpzIikK
K2FkZF9jdXN0b21fY29tbWFuZCgKKyAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19KQVZBU0NS
SVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBU
Q09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKKyAgIE1BSU5fREVQRU5ERU5DWSAke0NNQUtFX0NVUlJF
TlRfU09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMKKyAgIERFUEVORFMgJHtKU0NCdWls
dGluc19qc19maWxlc30KKyAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9D
VVJSRU5UX1NPVVJDRV9ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zICR7SlNDQnVpbHRpbnNfanNf
ZmlsZXN9ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMu
aCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcAor
ICAgVkVSQkFUSU0pCisKIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTQmFja2VuZERp
c3BhdGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0v
SW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwCisgICAgJHtE
RVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5jcHAKICkKIAog
bGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUwogICAgICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaAogICAg
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNGcm9udGVu
ZERpc3BhdGNoZXJzLmgKICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9
L0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgKKyAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NS
SVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKICkKIAogYWRkX2N1c3RvbV9jb21tYW5kKApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAxMTU2ZTk3ZmQ4ODYy
NTU3YzljZjhkM2I2OGJmNGQwM2MzZThiYThmLi4yNjZhYTVmMDgxNGI3MjBmZWI1NmI3ZDQxY2Yx
NzNjNTBjNWE0YjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQpAQCAtNTcsNiArNTcsNyBAQCBhbGwgOiBcCiAgICAgUmVnRXhwT2JqZWN0Lmx1dC5oIFwKICAg
ICBTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgdWRpczg2X2l0YWIuaCBcCisgICAgSlND
QnVpbHRpbnMgXAogIwogCiAjIGxvb2t1cCB0YWJsZXMgZm9yIGNsYXNzZXMKQEAgLTc5LDYgKzgw
LDE0IEBAIEtleXdvcmRMb29rdXAuaDogS2V5d29yZExvb2t1cEdlbmVyYXRvci5weSBLZXl3b3Jk
cy50YWJsZQogdWRpczg2X2l0YWIuaDogJChKYXZhU2NyaXB0Q29yZSkvZGlzYXNzZW1ibGVyL3Vk
aXM4Ni9pdGFiLnB5ICQoSmF2YVNjcmlwdENvcmUpL2Rpc2Fzc2VtYmxlci91ZGlzODYvb3B0YWJs
ZS54bWwKIAkoUFlUSE9OUEFUSD0kKEphdmFTY3JpcHRDb3JlKS9kaXNhc3NlbWJsZXIvdWRpczg2
IHB5dGhvbiAkKEphdmFTY3JpcHRDb3JlKS9kaXNhc3NlbWJsZXIvdWRpczg2L2l0YWIucHkgJChK
YXZhU2NyaXB0Q29yZSkvZGlzYXNzZW1ibGVyL3VkaXM4Ni9vcHRhYmxlLnhtbCB8fCBleGl0IDEp
CiAKKyMgYnVpbHRpbiBmdW5jdGlvbnMKKy5QSE9OWTogSlNDQnVpbHRpbnMKKworSlNDQnVpbHRp
bnM6IEpTQ0J1aWx0aW5zLmggSlNDQnVpbHRpbnMuY3BwCitKU0NCdWlsdGlucy5oOiAkKEphdmFT
Y3JpcHRDb3JlKS9nZW5lcmF0ZS1qcy1idWlsdGlucyAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlu
cy8qLmpzCisJcHl0aG9uICReICRACisKK0pTQ0J1aWx0aW5zLmNwcDogSlNDQnVpbHRpbnMuaAog
CiAjIEluc3BlY3RvciBpbnRlcmZhY2VzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KaW5kZXggY2RiNTQyNmIwNmI1MmE5ODI1NmVlOTA1OGJiYThmMTFlZWE2OWVl
MC4uYWZlOTY3MmI1YjFlZTkyNzExYmVkZDQ3NWU5YTEyODIwM2M4MTM2NSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTEwMiw2ICsxMDIsOCBAQCBqYXZh
c2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGlu
Z3MvU2NyaXB0T2JqZWN0LmggXAogICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9T
Y3JpcHRWYWx1ZS5jcHAgXAogICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3Jp
cHRWYWx1ZS5oIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmNwcCBcCisgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5FeGVjdXRhYmxlcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlB
bGxvY2F0aW9uUHJvZmlsZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
cnJheUFsbG9jYXRpb25Qcm9maWxlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9BcnJheVByb2ZpbGUuY3BwIFwKQEAgLTEyNDEsNyArMTI0Myw5IEBAIGphdmFzY3JpcHRjb3Jl
X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpT
RnJvbnRlbmREaXNwYXRjaGVycy5jcHAgXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3Jl
L0luc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAgXAotCURlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgKKwlEZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oIFwKKwlEZXJpdmVkU291
cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5jcHAgXAorCURlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmgKIAogbGxpbnRfbm9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagppbmRleCA1ZWRlZmRiZTg1NWY5NmE2
MjY4ZDg1NzNiZWMxZDBjM2Q4NThhYTVjLi5hMTJkYjE4MzQ4NmRmYmJjYTgzZjNhNzhlOWNmOTg2
MzFiMjY1M2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTMw
OSw2ICszMDksNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0
RnVuY3Rpb25DYWxsLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdz
XFNjcmlwdE9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xTY3JpcHRWYWx1ZS5jcHAiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxidWlsdGlu
c1xCdWlsdGluRXhlY3V0YWJsZXMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
Ynl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxieXRlY29kZVxBcnJheVByb2ZpbGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cYnl0ZWNvZGVcQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCIgLz4KQEAgLTcyMSw2
ICs3MjIsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEluc3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JKU0Zyb250ZW5kRGlz
cGF0Y2hlcnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEluc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmNwcCIgLz4KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NCdWlsdGlucy5jcHAiIC8+CiAg
IDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEFycmF5Q29uc3RydWN0b3IubHV0LmgiIC8+CkBAIC03NTAs
NiArNzUyLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xSZWdFeHBPYmplY3QubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcUmVnRXhwUHJvdG90eXBlLmx1dC5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFN0cmluZ0NvbnN0cnVjdG9y
Lmx1dC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEpTQ0J1aWx0aW5zLmgiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEFQSUNhbGxiYWNrRnVuY3Rpb24uaCIgLz4KQEAg
LTc5OCw2ICs4MDEsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2Ny
aXB0RnVuY3Rpb25DYWxsLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xTY3JpcHRPYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdz
XFNjcmlwdFZhbHVlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxidWlsdGluc1xC
dWlsdGluRXhlY3V0YWJsZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVj
b2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGJ5dGVjb2RlXEFycmF5UHJvZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cYnl0ZWNvZGVcQnlWYWxJbmZvLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRl
cnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggODdlMTJhNDcxNThiYjYyMjRkNDlmZDYyMjk3
OGM0YTljNDQzNWE2NS4uODY5YzFmNTg5YmNiNjg2ZWI5Y2YyMGMwOTZiZTFiODNhNTUxZTI0YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpA
QCAtNyw2ICs3LDkgQEAKICAgICA8RmlsdGVyIEluY2x1ZGU9ImJpbmRpbmdzIj4KICAgICAgIDxV
bmlxdWVJZGVudGlmaWVyPnswYmFjZTEyMy00NTgyLWVlYmMtOTMxNC03ODE5YjM3NmMxOTh9PC9V
bmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iYnVp
bHRpbnMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezNiOWQ3MmE1LTEzNWItNDNiMy1hNTI0
LWM2ZDJiOWQyOWQzNX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CiAgICAgPEZp
bHRlciBJbmNsdWRlPSJieXRlY29kZSI+CiAgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NzY2MDg4
YTAtMTIxNi00ODU0LWFhNDMtNTYwYzVlMjgzNjY4fTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8
L0ZpbHRlcj4KQEAgLTEwOCw2ICsxMTEsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
YXNzZW1ibGVyXE1hY3JvQXNzZW1ibGVyLmNwcCI+CiAgICAgICA8RmlsdGVyPmFzc2VtYmxlcjwv
RmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnVp
bHRpbnNcQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCI+CisgICAgICA8RmlsdGVyPmJ1aWx0aW5zPC9G
aWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRl
Y29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCI+CiAgICAgICA8RmlsdGVyPmJ5dGVjb2Rl
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0xMzI5LDYgKzEzMzUsOSBAQAogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTVHlw
ZUJ1aWxkZXJzLmNwcCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmNwcCI+CisgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNl
czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91
cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxBUElDYWxsYmFja0Z1bmN0aW9uLmgi
PgpAQCAtMTQ1NCw2ICsxNDYzLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFzc2Vt
YmxlclxYODZBc3NlbWJsZXIuaCI+CiAgICAgICA8RmlsdGVyPmFzc2VtYmxlcjwvRmlsdGVyPgog
ICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnVpbHRpbnNcQnVp
bHRpbkV4ZWN1dGFibGVzLmgiPgorICAgICAgPEZpbHRlcj5idWlsdGluczwvRmlsdGVyPgorICAg
IDwvQ2xDb21waWxlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlB
bGxvY2F0aW9uUHJvZmlsZS5oIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAg
ICA8L0NsSW5jbHVkZT4KQEAgLTI1NTAsNiArMjU2Miw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcQXJyYXlQcm90b3R5cGUubHV0LmgiPgogICAg
ICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NCdWlsdGlu
cy5oIj4KKyAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CisgICAgPC9DbElu
Y2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFZNLmgiPgogICAgICAg
PEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDI3ZTg3Njc0MGE5NjRiMDI4OTg0ZWQ2NzgxNjE4MjBhNWRjZjc3
YzQuLjkxMTU3M2FiMTdkMzM5NzRhYTdjOWEwMTFkYjIwMGIwOWFmNzhiZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MjIsNyArOTIyLDYgQEAKIAkJQTUwM0ZBMTkxODhFMEZC
MDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTMxODhFMEZBRjAwMTEwRjE0IC8qIEph
dmFTY3JpcHRDYWxsRnJhbWUuY3BwICovOyB9OwogCQlBNTAzRkExQTE4OEUwRkIwMDAxMTBGMTQg
LyogSmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTUwM0ZBMTQxODhFMEZBRjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxs
RnJhbWUuaCAqLzsgfTsKIAkJQTUwM0ZBMUIxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlw
dENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTAzRkExNTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNw
cCAqLzsgfTsKLQkJQTUwM0ZBMUMxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxG
cmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUw
M0ZBMTYxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9Owog
CQlBNTAzRkExRDE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90
eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
MDNGQTE3MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUu
Y3BwICovOyB9OwogCQlBNTAzRkExRTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2Fs
bEZyYW1lUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNTAzRkExODE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1l
UHJvdG90eXBlLmggKi87IH07CiAJCUE1MDNGQTIxMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRC
cmVha3BvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNTAzRkExRjE4OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0QnJlYWtwb2ludC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDI0LDYgKzEwMjMs
NyBAQAogCQlBNzBCMDgzMjE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MEIwODMwMTdB
MEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guY3BwICovOyB9OwogCQlBNzBCMDgzMzE3
QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzBCMDgzMTE3QTBCNzlCMDBEQUYxNEIgLyogREZH
QmluYXJ5U3dpdGNoLmggKi87IH07CiAJCUE3MTIzNkU1MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRP
cGNvZGVzMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTcxMjM2RTQxMTk1RjMzQzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgKi87
IH07CisJCUE3MURBODBGMTg4MERCQUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MURBODBFMTg4MERC
QUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzIwMjhCNjE3OTc2MDFFMDA5ODAyOEMgLyogSlND
VGVzdFJ1bm5lclV0aWxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3MjAyOEI0MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMu
Y3BwICovOyB9OwogCQlBNzIwMjhCODE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0
aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIw
MjhCNTE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcyMDI4QkExNzk3NjAzRDAw
OTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIwMjhCOTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlv
bklubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTE1MCw2ICsxMTUwLDEwIEBACiAJCUE3Q0EzQUU4MTdEQTQxQUUwMDY1MzhBRiAvKiBK
U1dlYWtNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3Q0EzQUUyMTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuaCAqLzsgfTsKIAkJQTdDQTNB
RUIxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0EzQUU5MTdEQTUxNjgwMDY1MzhBRiAvKiBX
ZWFrTWFwRGF0YS5jcHAgKi87IH07CiAJCUE3Q0EzQUVDMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFr
TWFwRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTdDQTNBRUExN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmggKi87IH07CisJCUE3RDgw
MUE0MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTExODgwRDY2RTAwMjZD
MzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi87IH07CisJCUE3RDgwMUE1MTg4MEQ2NkUw
MDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGlu
RXhlY3V0YWJsZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlBN0Q4MDFBODE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTYxODgwRDZB
ODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCAqLzsgfTsKKwkJQTdEODAxQTkxODgwRDZBODAw
MjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBN0Q4MDFBNzE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBN0Q4OUNG
MjE3QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4OUNFMzE3QTBCOENDMDA3NzNBRDggLyog
REZHQmFzaWNCbG9jay5jcHAgKi87IH07CiAJCUE3RDg5Q0YzMTdBMEI4Q0MwMDc3M0FEOCAvKiBE
RkdCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBN0Q4OUNFNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRp
b25TZXQuY3BwICovOyB9OwogCQlBN0Q4OUNGNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJ
bnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3RDg5Q0U1MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNDYyLDYg
KzI0NjYsOCBAQAogCQlBNzEyMzZFNDExOTVGMzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVE9wY29kZXMzMl82
NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MThGNjFBMTE3NTRBMjEwMDI0
NjVBNyAvKiBSZWdFeHBKaXRUYWJsZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVnRXhwSml0VGFibGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MThG
ODIxMTE3OEVCNEIwMDI0NjVBNyAvKiBjcmVhdGVfcmVnZXhfdGFibGVzICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IGZp
bGVFbmNvZGluZyA9IDQ7IHBhdGggPSBjcmVhdGVfcmVnZXhfdGFibGVzOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBNzFEQTgwRDE4ODBENzFGMDBEMUYyOTkgLyogZ2VuZXJhdGUtanMt
YnVpbHRpbnMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSAiZ2VuZXJhdGUt
anMtYnVpbHRpbnMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzFEQTgwRTE4ODBE
QkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTU3RyaW5nSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNzIwMjhCNDE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI1MTc5NzYwMUUwMDk4MDI4QyAv
KiBKU0NUZXN0UnVubmVyVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNDVGVzdFJ1bm5lclV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAy
OEI5MTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0Z1bmN0aW9uSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjU5MCw2ICsyNTk2LDExIEBACiAJCUE3Q0EzQUUyMTdEQTQxQUUwMDY1
MzhBRiAvKiBKU1dlYWtNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNX
ZWFrTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Q0EzQUU5MTdEQTUxNjgw
MDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWFrTWFwRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3
Q0EzQUVBMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWFrTWFwRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBN0Q4MDFBMDE4ODBENjZFMDAyNkMzOUIgLyogQXJyYXkucHJvdG90eXBlLmpzICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gQXJyYXkucHJvdG90eXBlLmpzOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFBMTE4ODBENjZFMDAyNkMzOUIgLyog
QnVpbHRpbkV4ZWN1dGFibGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVpbHRpbkV4ZWN1dGFibGVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWls
dGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NCdWlsdGlu
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUE3MTg4MEQ2QTgwMDI2
QzM5QiAvKiBKU0NCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0NCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0Q4OUNFMzE3QTBC
OENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBERkdCYXNpY0Jsb2NrLmNwcDsgcGF0aCA9IGRmZy9ERkdCYXNpY0Jsb2Nr
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdEODlDRTQxN0EwQjhDQzAwNzcz
QUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcDsgcGF0aCA9IGRmZy9ERkdCbG9j
a0luc2VydGlvblNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RDg5Q0U1
MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCbG9ja0luc2VydGlvblNldC5oOyBwYXRoID0gZGZnL0RG
R0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTI2
LDYgKzI5MzcsNyBAQAogCQkJCTg2MDRGNEYyMTQzQTZDNDQwMEIyOTVGNSAvKiBDaGFuZ2VMb2cg
Ki8sCiAJCQkJRjY5MkE4NTQwMjU1NTk3RDAxRkY2MEY3IC8qIGNyZWF0ZV9oYXNoX3RhYmxlICov
LAogCQkJCUE3MThGODIxMTE3OEVCNEIwMDI0NjVBNyAvKiBjcmVhdGVfcmVnZXhfdGFibGVzICov
LAorCQkJCUE3MURBODBEMTg4MEQ3MUYwMEQxRjI5OSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAq
LywKIAkJCQk0NUUxMkQ4ODA2QTQ5QjBGMDBFOURGODQgLyoganNjLmNwcCAqLywKIAkJCQlGNjhF
QkI4QzAyNTVENEM2MDFGRjYwRjcgLyogY29uZmlnLmggKi8sCiAJCQkJRjVDMjkwRTYwMjg0Rjk4
RTAxODYzNUNBIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggKi8sCkBAIC0yOTM0LDYgKzI5NDYs
NyBAQAogCQkJCTE0MzJFQkQ3MEEzNENBRDQwMDcxN0I5RiAvKiBBUEkgKi8sCiAJCQkJOTY4OENC
MTIwRUQxMkI0RTAwMUQ2NDlGIC8qIGFzc2VtYmxlciAqLywKIAkJCQlBNTRDRjJFQTE4NEVBNzM5
MDAyMzdGMTkgLyogYmluZGluZ3MgKi8sCisJCQkJQTdEODAxOUYxODgwRDY2RTAwMjZDMzlCIC8q
IGJ1aWx0aW5zICovLAogCQkJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAq
LywKIAkJCQk3RTM5RDgxRDBFQzM4RUZBMDAzQUYxMUEgLyogYnl0ZWNvbXBpbGVyICovLAogCQkJ
CTFDOTA1MTNFMEJBOUU4ODMwMDgxRTlEMCAvKiBDb25maWd1cmF0aW9ucyAqLywKQEAgLTM1MDks
NiArMzUyMiw4IEBACiAJCTY1MEZERjhEMDlEMEZDQTcwMDc2OUU1NCAvKiBEZXJpdmVkIFNvdXJj
ZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUE3RDgw
MUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgKi8sCisJCQkJQTdEODAxQTcx
ODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggKi8sCiAJCQkJQkMxOEM1MjMwRTE2RkM4
QTAwQjM0NDYwIC8qIEFycmF5UHJvdG90eXBlLmx1dC5oICovLAogCQkJCUJDRDIwM0U3MEUxNzE4
RjQwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmx1dC5oICovLAogCQkJCUE1MTNFNUM2MTg1Rjk0
MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICovLApAQCAtMzgxMSw2ICszODI2
LDcgQEAKIAkJCQlBNzkwREQ2QTE4MkY0OTk3MDA1ODg4MDcgLyogSlNTZXRJdGVyYXRvci5oICov
LAogCQkJCUJDMDJFOUI2MEUxODQyRkEwMDBGOTI5NyAvKiBKU1N0cmluZy5jcHAgKi8sCiAJCQkJ
RjY5MkE4NjIwMjU1NTk3RDAxRkY2MEY3IC8qIEpTU3RyaW5nLmggKi8sCisJCQkJQTcxREE4MEUx
ODgwREJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oICovLAogCQkJCTg2RTg1NTM4MTEx
Qjk5NjgwMDFBRjUxRSAvKiBKU1N0cmluZ0J1aWxkZXIuaCAqLywKIAkJCQkyNjAwQjVBNDE1MkJB
QUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuY3BwICovLAogCQkJCTI2MDBCNUE1MTUyQkFB
QTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5oICovLApAQCAtNDU2MSw2ICs0NTc3LDE2IEBA
CiAJCQlwYXRoID0gcmVtb3RlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJ
QTdEODAxOUYxODgwRDY2RTAwMjZDMzlCIC8qIGJ1aWx0aW5zICovID0geworCQkJaXNhID0gUEJY
R3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlBN0Q4MDFBMDE4ODBENjZFMDAyNkMzOUIgLyog
QXJyYXkucHJvdG90eXBlLmpzICovLAorCQkJCUE3RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBC
dWlsdGluRXhlY3V0YWJsZXMuY3BwICovLAorCQkJCUE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAv
KiBCdWlsdGluRXhlY3V0YWJsZXMuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gYnVpbHRpbnM7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24g
Ki8KIAogLyogQmVnaW4gUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtNDYwNiwx
MSArNDYzMiwxMSBAQAogCQkJCTg2QUREMTQ1MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2Vt
Ymxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVDRUVFMTUxODdGM0JBRDAwRTU1Qzk5IC8qIElu
c3BlY3RvckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUMwMjg1RDE3MTc5NjY4MDAzNTFF
MzUgLyogQVJNdjdET3Bjb2RlLmggaW4gSGVhZGVycyAqLywKLSAJCQkJMkE2ODI5NUIxODc1Rjgw
NTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovLAotICAgICAgICAg
ICAgICAgIDJBNEVDOTBDMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTJBNjgyOTVCMTg3NUY4MDUwMEI2QzNFMiAvKiBDb3B5V3JpdGVC
YXJyaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkyQTRFQzkwQzE4NjBENkMyMDA5NEY3ODIgLyog
V3JpdGVCYXJyaWVyQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTU5MzJBODE4M0M1QTI2
MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTMyNDM5MzE4
NTY5NzA5MDAyRUQ2OTIgLyogQ29kZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3MucHkgaW4gSGVh
ZGVycyAqLywKLSAJCQkJQTUzMjQzOTIxODU2OTcwOTAwMkVENjkyIC8qIENvZGVHZW5lcmF0b3JJ
bnNwZWN0b3IucHkgaW4gSGVhZGVycyAqLywKKwkJCQlBNTMyNDM5MjE4NTY5NzA5MDAyRUQ2OTIg
LyogQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTRG
MTdFRTI3NDkwMEFCQjIxNyAvKiBUZW1wUmVnaXN0ZXJTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE1MEU0QjY0MTg4MDlERDUwMDY4QTQ2RCAvKiBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkVCNThDMTUxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFu
ZGxpbmdTY29wZS5oIGluIEhlYWRlcnMgKi8sCkBAIC00NjIyLDcgKzQ2NDgsNyBAQAogCQkJCTBG
ODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTg0MEUyOTE4N0NBNUU2MDA4NDNCMTAgLyogaW5saW5lLWFuZC1taW5p
Znktc3R5bGVzaGVldHMtYW5kLXNjcmlwdHMucHkgaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUy
QjE4N0NBNzVCMDA4NDNCMTAgLyoganNtaW4ucHkgaW4gSGVhZGVycyAqLywKLSAJCQkJQTUzMjQz
OTgxODU2QTQ4OTAwMkVENjkyIC8qIEluc3BlY3RvckpTLmpzb24gaW4gSGVhZGVycyAqLywKKwkJ
CQlBNTMyNDM5ODE4NTZBNDg5MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlMuanNvbiBpbiBIZWFkZXJz
ICovLAogCQkJCUE1ODQwRTJBMTg3Q0E3NTkwMDg0M0IxMCAvKiB4eGQucGwgaW4gSGVhZGVycyAq
LywKIAkJCQlGRUEwODYyMDE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTdBOEFGMzUxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTQ3MzMsNyArNDc1OSw3IEBACiAJCQkJQTFBMDA5QzAxODMxQTIyRDAw
Q0Y4NzExIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUM5
REM1MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY0ODUzMjgxODdERkRFQzAwODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5Lmgg
aW4gSGVhZGVycyAqLywKLSAgICAgICAgICAgICAgICBBNTkzQ0Y4NzE4NDAzOENBMDBCRkNFMjcg
LyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU5M0NGODcx
ODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMjU2QzM2MTYyN0IwQUQwMDdGMjc4MyAvKiBERkdDYWxsQXJyYXlBbGxvY2F0b3JT
bG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5NEIxNEMzQ0QyRjAw
N0MzREIxIC8qIERGR0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NTgx
NEVGOTBBMjAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTQ4NzIs
NiArNDg5OCw3IEBACiAJCQkJMEZFQTBBMUQxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0
SGVhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMUYxNzA4QjAwNzAwQkI3MjJDIC8qIEZU
TEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1OTQ1NTkzMTgy
NDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCUE3RDgwMUE5MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZFQTBBMEExNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0ODUzMkExODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292
ZXJ5T3Bjb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEEyMzE3MDk2MDY5MDBCQjcyMkMg
LyogRlRMQ29tbW9uVmFsdWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTQ5NDYsNiArNDk3Myw3IEBA
CiAJCQkJQkMxOEM0MEYwRTE2RjVDRDAwQjM0NDYwIC8qIElkZW50aWZpZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUMyNUY4QkNFMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk5MTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGlu
Z0hlYWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdEODAxQTUxODgwRDY2RTAwMjZDMzlCIC8q
IEJ1aWx0aW5FeGVjdXRhYmxlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOUExNUVEOEU0
NjAwRjE2N0IyIC8qIEluZGV4aW5nSGVhZGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZCN0YzOUIxNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nVHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZDRUZBQjAxODA1Q0E2RDAwNDcyQ0U0IC8qIEluaXRpYWxpemVMTFZNLmggaW4gSGVh
ZGVycyAqLywKQEAgLTUyMTgsNiArNTI0Niw3IEBACiAJCQkJQTUzMjQzODgxODU2ODMzNTAwMkVE
NjkyIC8qIEluc3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzE4QzQ1NjBFMTZGNUNEMDBCMzQ0NjAgLyogUHJvdGVjdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTQ3NEMzM0IxNkFBMkQ5NTAwNjJGMDFEIC8qIFByb3RvdHlwZU1hcC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQTcxREE4MEYxODgwREJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQxNENBN0REOTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0
dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXRE
aXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDMDA4Q0U3MTg3NjMxQjYwMDk1
NUMyNCAvKiBNaWNyb3Rhc2suaCBpbiBIZWFkZXJzICovLApAQCAtNTgzNiw2ICs1ODY1LDcgQEAK
IAkJCQlBN0Q4OUNGMjE3QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBNzBCMDgzMjE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNo
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDg5Q0YzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdC
bG9ja0luc2VydGlvblNldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBN0Q4MDFBNDE4ODBENjZF
MDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2
RUM5REM0MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkQ4MkUyMTE0MTcyQ0UzMDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0aWVzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGRkZDOTU3MTRFRjkwQTAwMEM3MjUzMiAvKiBERkdDRkFQ
aGFzZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU4NTIsNiArNTg4Miw3IEBACiAJCQkJMEZGRkM5
NTkxNEVGOTBBNjAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMkZDNzcyMTZFMTJGNzEwMDM4RDk3NiAvKiBERkdEQ0VQaGFzZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjhGMkI5OTE3MkYwNEZGMDA3REJEQTUgLyogREZHRGVzaXJlZElkZW50aWZpZXJz
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3RDgwMUE4MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NC
dWlsdGlucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzNFMTMzMDE3OTYyNENEMDBFNERFQTgg
LyogREZHRGVzaXJlZFN0cnVjdHVyZUNoYWlucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkMw
RjdDRDE3QkJGQzVCMDA0NjRGRTQgLyogREZHRGVzaXJlZFRyYW5zaXRpb25zLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRTg1MzRCMTcyM0NEQTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hw
b2ludHMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01OTc2LDcgKzYwMDcsNyBAQAogCQkJCTBGNkIx
Q0M1MTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExVbndpbmRJbmZvLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGOUQzMzlBMTgwM0FEQjcwMDczQzJCQyAvKiBGVExTdGFja01hcHMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZFQTBBMTYxNzA2QkI5MDAwQkI3MjJDIC8qIEZUTFN0YXRlLmNwcCBpbiBT
b3VyY2VzICovLAotIAkJCQk3QzAwOENEMjE4NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9taXNlRnVu
Y3Rpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDMDA4Q0QyMTg2RjhBOTMwMDk1NUMyNCAv
KiBKU1Byb21pc2VGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2QjFDQjUxODVG
QzlFOTAwODQ1RDk3IC8qIEZUTEpTQ2FsbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJF
MTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1
OTNDRjdDMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTGlua0J1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtC
dWZmZXIuY3BwCmluZGV4IGFmMTRlMzNlYWMwNTk3ZjJkNzhjNGIzY2QxNjM1NDExZGFiYTk2NWUu
LjY3OTIzZjA4MjNjMmZiYWIzMTEyOGFkYjUxOWRjODllYTAyYjY1MGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcApAQCAtMzAsNiArMzAsNyBA
QAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgorI2luY2x1
ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUg
IlZNLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBpbGF0aW9uVGhyZWFkLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
ZWI0MmY1Y2M0MzNmMTYzNjM0M2JmYzk4MmFhMmFhZmIzMzZlOTQ5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcwpAQCAt
MCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworZnVuY3Rpb24gZXZlcnkoY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pIHsKKyAgICAidXNlIHN0
cmljdCI7CisgICAgaWYgKHRoaXMgPT09IG51bGwpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVy
cm9yKCJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51
bGwiKTsKKyAgICAKKyAgICBpZiAodGhpcyA9PT0gdW5kZWZpbmVkKQorICAgICAgICB0aHJvdyBu
ZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8
IG5vdCBiZSB1bmRlZmluZWQiKTsKKyAgICAKKyAgICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMp
OworICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGggPj4+IDA7CisgICAgCisgICAgaWYgKHR5
cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJy
b3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsK
KworICAgIHZhciB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0g
OiB1bmRlZmluZWQ7CisgICAgCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykg
eworICAgICAgICBpZiAoIShpIGluIGFycmF5KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBpZiAoIWNhbGxiYWNrLkBjYWxsKHRoaXNBcmcsIGFycmF5W2ldLCBpLCBhcnJheSkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHJldHVybiB0cnVlOwor
fQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0MWRiYjVmOTIyNWUyOGExMmVkM2QxNzk4ZmYxNzY4
ZTQzNjcxYTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgi
CisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVz
LmgiCisjaW5jbHVkZSAiUGFyc2VyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitCdWlsdGluRXhl
Y3V0YWJsZXM6OkJ1aWx0aW5FeGVjdXRhYmxlcyhWTSYgdm0pCisgICAgOiBtX3ZtKHZtKQorI2Rl
ZmluZSBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1l
LCBsZW5ndGgpICwgbV8jI25hbWUjI1NvdXJjZShtYWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0
ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgpLCBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0
ZXJhbCgiPGJ1aWx0aW4+IikpKQorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4oSU5JVElBTElaRV9C
VUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX1NUUklOR1MKK3sK
K30KKworVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3Jl
YXRlQnVpbHRpbkV4ZWN1dGFibGUoY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lKQoreworICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmU7CisgICAgUGFyc2VyRXJyb3IgZXJyb3I7CisgICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBw
cm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KCZtX3ZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIo
KSwgSlNQYXJzZUJ1aWx0aW4sIEpTUGFyc2VQcm9ncmFtQ29kZSwgZXJyb3IsICZwb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lKTsKKworICAgIGlmICghcHJvZ3JhbSkgeworICAgICAgICBkYXRhTG9n
KCJGYXRhbCBlcnJvciBjb21waWxpbmcgYnVpbHRpbiBmdW5jdGlvbiAnIiwgbmFtZS5zdHJpbmco
KSwgIic6ICIsIGVycm9yLm1fbWVzc2FnZSk7CisgICAgICAgIENSQVNIKCk7CisgICAgfQorCisg
ICAgU3RhdGVtZW50Tm9kZSogZXhwclN0YXRlbWVudCA9IHByb2dyYW0tPnNpbmdsZVN0YXRlbWVu
dCgpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQpOworICAgIFJFTEVBU0VfQVNT
RVJUKGV4cHJTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKKyAgICBFeHByZXNzaW9uTm9k
ZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVtZW50Tm9kZSo+KGV4cHJTdGF0ZW1l
bnQpLT5leHByKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHIpOworICAgIFJFTEVBU0Vf
QVNTRVJUKGZ1bmNFeHByLT5pc0Z1bmNFeHByTm9kZSgpKTsKKyAgICBGdW5jdGlvbkJvZHlOb2Rl
KiBib2R5ID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZnVuY0V4cHIpLT5ib2R5KCk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoIXByb2dyYW0tPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpOworICAg
IAorICAgIGJvZHktPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKGJvZHkpOworICAgIFJFTEVBU0VfQVNTRVJUKGJvZHktPmlkZW50
KCkuaXNOdWxsKCkpOworICAgIAorICAgIC8vIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBhbiBpbnB1
dCBzdHJpbmcgdGhhdCB3b3VsZCByZXN1bHQgaW4gYSBzaW5nbGUgYW5vbnltb3VzIGZ1bmN0aW9u
IGV4cHJlc3Npb24uCisgICAgYm9keS0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keSk7CisgICAgZm9yIChjb25zdCBhdXRv
JiBjbG9zZWRWYXJpYWJsZSA6IHByb2dyYW0tPmNsb3NlZFZhcmlhYmxlcygpKSB7CisgICAgICAg
IGlmIChjbG9zZWRWYXJpYWJsZSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cy5pbXBs
KCkpCisgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgaWYgKGNsb3NlZFZhcmlh
YmxlID09IG1fdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZC5pbXBsKCkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2xvc2VkVmFyaWFibGUt
PmlzRW1wdHlVbmlxdWUoKSk7CisgICAgfQorICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRl
KCZtX3ZtLCBzb3VyY2UsIGJvZHksIHRydWUsIFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uKTsKKyAg
ICBmdW5jdGlvbkV4ZWN1dGFibGUtPm1fbmFtZVZhbHVlLnNldChtX3ZtLCBmdW5jdGlvbkV4ZWN1
dGFibGUsIGpzU3RyaW5nKCZtX3ZtLCBuYW1lLnN0cmluZygpKSk7CisgICAgcmV0dXJuIGZ1bmN0
aW9uRXhlY3V0YWJsZTsKK30KKworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUyhu
YW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IEJ1aWx0aW5FeGVjdXRhYmxlczo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK3tcCisgICAgaWYgKCFt
XyMjbmFtZSMjRXhlY3V0YWJsZSlcCisgICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gY3Jl
YXRlQnVpbHRpbkV4ZWN1dGFibGUobV8jI25hbWUjI1NvdXJjZSwgbV92bS5wcm9wZXJ0eU5hbWVz
LT5mdW5jdGlvbk5hbWUpO1wKKyAgICByZXR1cm4gbV8jI25hbWUjI0V4ZWN1dGFibGUuZ2V0KCk7
XAorfQorSlNDX0ZPUkVBQ0hfQlVJTFRJTihERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1
bmRlZiBFWFBPU0VfQlVJTFRJTl9TT1VSQ0VTCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOWExOWUy
NjE1MDc5NGE2NjllYzk4ZTM5OWJmNjdmN2Y3MTA2NDE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCkBAIC0wLDAg
KzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEJ1aWx0aW5FeGVjdXRhYmxlc19oCisjZGVmaW5lIEJ1aWx0aW5FeGVjdXRhYmxlc19o
CisKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgorI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKKyNp
bmNsdWRlICJXZWFrLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgSWRlbnRp
ZmllcjsKK2NsYXNzIFZNOworCitjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXMgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEJ1aWx0aW5FeGVjdXRhYmxlcz4gY3JlYXRlKFZNJiB2bSkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQnVpbHRpbkV4ZWN1dGFibGVzKHZt
KSk7CisgICAgfQorICAgIAorI2RlZmluZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1l
LCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5h
bWUjI0V4ZWN1dGFibGUoKTsgXAorY29uc3QgU291cmNlQ29kZSYgbmFtZSMjU291cmNlKCkgeyBy
ZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsgfQorICAgIAorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4o
RVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgRVhQT1NFX0JVSUxUSU5fU09VUkNF
UworICAgIAorcHJpdmF0ZToKKyAgICBCdWlsdGluRXhlY3V0YWJsZXMoVk0mKTsKKyAgICBWTSYg
bV92bTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1
dGFibGUoY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImKTsKKyNkZWZpbmUgREVD
TEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKVwK
KyAgICBTb3VyY2VDb2RlIG1fIyNuYW1lIyNTb3VyY2U7IFwKKyAgICBXZWFrPFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlPiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKKyAgICBKU0NfRk9SRUFDSF9C
VUlMVElOKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JV
SUxUSU5fU09VUkNFX01FTUJFUlMKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCmluZGV4IDRjMDU1ZmVhNTczOGYx
YzQ2MzI2NmQ0ZTlhOTE1NDhhMTI5MzQ3MDkuLmVhZWZlNTRmMmQxNTI4NGI2NGJmNjk5NzI2NThj
ZDFjNjNiNGVhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
cnJheVByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eVByb2ZpbGUuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQXJyYXlQcm9maWxlLmgi
CiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5o
IgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0
cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCmluZGV4
IGQ3NDg5ZDMxYWJkN2M5OWYxYmM2ZmFmYWU2NTgxMTEyYWJkYWNmZGIuLjFhM2I1ZjRjNzgwN2I5
NDg4ZmYzNjU3MmY3OTRkMGJiOWYzOGQyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC0yNyw2ICsyNyw3IEBA
CiAjaW5jbHVkZSAiQnl0ZWNvZGVCYXNpY0Jsb2NrLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2su
aCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1w
VGFyZ2V0cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKaW5kZXgg
OTI2MzM0YzQ0NGM5YzJmM2RmY2M5NTAxMmNkMGE0YTAzMTA0ZDJkOS4uYWQ0YWUyMjk1ZWFjNDhh
YTQwYWZiZWUzZWI2OTI4OTZmY2NhYmQyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgogI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgogI2luY2x1ZGUgIkZ1bGxCeXRlY29kZUxpdmVuZXNzLmgiCisjaW5jbHVkZSAiSlNG
dW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKIAogbmFt
ZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlu
a0luZm8uY3BwCmluZGV4IDZhNjAwNTc2YTAwMGFkYWM4YWYyMTRlOTg4MTM2NDYxOWYyOWEwMTAu
LjRiZjgxODg2NjAyOGM3OTZhNzJlNTc4MzMyZTQ2Nzc1NTZiMjM3YTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpbmNsdWRlICJERkdPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiREZHVGh1bmtzLmgi
CisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJSZXBhdGNoQnVmZmVy
LmgiCiAKICNpZiBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAppbmRleCAyNjNlYzdjYWRmNGY3OWNhODEwMjQ0MWU2MmJmMmEwNWI1ZGRj
M2YyLi43NTE1MDY1NDIzNzZkN2VkYzU5OWFhMDBmOWIxMjY4NWNkYTM1MmNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNDMsMTEgKzQzLDEz
IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJK
U0FjdGl2YXRpb24uaCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNOYW1l
U2NvcGUuaCIKICNpbmNsdWRlICJMTEludEVudHJ5cG9pbnQuaCIKICNpbmNsdWRlICJMb3dMZXZl
bEludGVycHJldGVyLmgiCisjaW5jbHVkZSAiTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIgorI2lu
Y2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2lu
Y2x1ZGUgIlBvbHltb3JwaGljUHV0QnlJZExpc3QuaCIKICNpbmNsdWRlICJSZWR1Y2VXaGl0ZXNw
YWNlLmgiCkBAIC0xNTY5LDcgKzE1NzEsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRF
eGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbgogCiAg
ICAgc2V0Q29uc3RhbnRSZWdpc3RlcnModW5saW5rZWRDb2RlQmxvY2stPmNvbnN0YW50UmVnaXN0
ZXJzKCkpOwogICAgIGlmICh1bmxpbmtlZENvZGVCbG9jay0+dXNlc0dsb2JhbE9iamVjdCgpKQot
ICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW3VubGlua2VkQ29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3RSZWdpc3RlcigpLm9mZnNldCgpXS5zZXQoKm1fdm0sIG93bmVyRXhlY3V0YWJsZSwgbV9nbG9i
YWxPYmplY3QuZ2V0KCkpOworICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW3VubGlua2VkQ29k
ZUJsb2NrLT5nbG9iYWxPYmplY3RSZWdpc3RlcigpLnRvQ29uc3RhbnRJbmRleCgpXS5zZXQoKm1f
dm0sIG93bmVyRXhlY3V0YWJsZSwgbV9nbG9iYWxPYmplY3QuZ2V0KCkpOwogICAgIG1fZnVuY3Rp
b25EZWNscy5yZXNpemVUb0ZpdCh1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRl
Y2xzKCkpOwogICAgIGZvciAoc2l6ZV90IGNvdW50ID0gdW5saW5rZWRDb2RlQmxvY2stPm51bWJl
ck9mRnVuY3Rpb25EZWNscygpLCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSA9IHVubGlua2VkQ29k
ZUJsb2NrLT5mdW5jdGlvbkRlY2woaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgKaW5kZXggNjhiYzAzNzlmNTc0NGM5YThmNzQzMWRiNjRmOGFiNTRlNmUxMDUz
Zi4uNDk5NWM1MmNmOGIyYjFiNGQ2MjgwNDUzZWVkMjdjNzc0YTQ5NTU4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtNTYsNyArNTYsNiBAQAogI2lu
Y2x1ZGUgIkhhbmRsZXJJbmZvLmgiCiAjaW5jbHVkZSAiT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUu
aCIKICNpbmNsdWRlICJPcHRpb25zLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1
ZGUgIlB1dFByb3BlcnR5U2xvdC5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVk
ZSAiSklUQ29kZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcAppbmRleCBiZTUw
Yzk3NzhiZjMzZTMzOWFjODM0YmY1NmUzYjFlNzU1ODZmZTNlLi5iNzY0NmVkMWVmMTY0MTg5ZmNm
YzdiNTM2NTZmYjY1YmVkMDY0ZDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNw
cApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAi
REZHQ29tbW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
T3JpZ2luLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmNw
cAppbmRleCA2OGRjNmIwNTMzNTU5MGVjNGM4MWM0MjM0NmJiNzRkYmJkOGZhYzU2Li4xNTc4ODA4
OTM0ZGQzY2M0Y2Q5N2QyNzFhZThhYzhiZmUzOTc0NmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRXhlY3V0
YWJsZS5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0
aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNv
bmluZ1dhdGNocG9pbnQuY3BwCmluZGV4IDk4NmUwM2QwY2JhNzE4NWIzOWNlZTAyM2Y0YWI2YmM5
YjhjY2I2ZTQuLjZmMmQ1ZWJhMWNhNDVkZGViMWRmNjVmZDA1MTIzM2U1ZjEzOGJlMGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pl
dHRpc29uaW5nV2F0Y2hwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcApAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgog
I2luY2x1ZGUgIkRGR0V4aXRQcm9maWxlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDFkZmI1YWM2YWQ5MDkzZjhmODEx
MDFlZjdmMmU2MTIzMTFhYzE5MzkuLjQzMzkwZDk2NWZjNTAzNDAxNmY3YmZmZjIzZTY4YmIxZTA1
NDU1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmNwcApAQCAtNDksOSArNDksOSBAQCBjb25zdCBDbGFzc0luZm8gVW5saW5r
ZWRQcm9ncmFtQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2si
LAogY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkRXZhbENvZGVCbG9jazo6c19pbmZvID0geyAiVW5s
aW5rZWRFdmFsQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShVbmxpbmtlZEV2YWxDb2RlQmxvY2spIH07CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayIs
ICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jaykgfTsKIAotc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVy
YXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxl
ck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikKK3N0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKiBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKFZNJiB2bSwgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1v
ZGUgcHJvZmlsZXJNb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBmdW5jdGlvbktpbmQsIFBhcnNl
ckVycm9yJiBlcnJvcikKIHsKLSAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSA9IHBh
cnNlPEZ1bmN0aW9uQm9keU5vZGU+KCZ2bSwgc291cmNlLCBleGVjdXRhYmxlLT5wYXJhbWV0ZXJz
KCksIGV4ZWN1dGFibGUtPm5hbWUoKSwgZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/
IEpTUGFyc2VTdHJpY3QgOiBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlRnVuY3Rpb25Db2RlLCBlcnJv
cik7CisgICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGJvZHkgPSBwYXJzZTxGdW5jdGlvbkJv
ZHlOb2RlPigmdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+cGFyYW1ldGVycygpLCBleGVjdXRhYmxl
LT5uYW1lKCksIGV4ZWN1dGFibGUtPnRvU3RyaWN0bmVzcygpLCBKU1BhcnNlRnVuY3Rpb25Db2Rl
LCBlcnJvcik7CiAKICAgICBpZiAoIWJvZHkpIHsKICAgICAgICAgQVNTRVJUKGVycm9yLm1fdHlw
ZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZt
LCBVbmxpbmtlZEZ1bmMKICAgICBib2R5LT5maW5pc2hQYXJzaW5nKGV4ZWN1dGFibGUtPnBhcmFt
ZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT5mdW5jdGlvbk5hbWVJc0lu
U2NvcGVUb2dnbGUoKSk7CiAgICAgZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2UoYm9keS0+ZmVhdHVy
ZXMoKSwgYm9keS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCi0gICAgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3Jl
YXRlKCZ2bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5mbyhib2R5LT5uZWVkc0FjdGl2YXRp
b24oKSwgYm9keS0+dXNlc0V2YWwoKSwgYm9keS0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29k
ZUZvckNvbnN0cnVjdCkpOworICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmdm0sIEZ1bmN0aW9uQ29kZSwgRXhl
Y3V0YWJsZUluZm8oYm9keS0+bmVlZHNBY3RpdmF0aW9uKCksIGJvZHktPnVzZXNFdmFsKCksIGJv
ZHktPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2lu
ZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbikpOwogICAgIE93blB0cjxCeXRlY29kZUdlbmVy
YXRvcj4gZ2VuZXJhdG9yKGFkb3B0UHRyKG5ldyBCeXRlY29kZUdlbmVyYXRvcih2bSwgYm9keS5n
ZXQoKSwgcmVzdWx0LCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSkpKTsKICAgICBlcnJvciA9
IGdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKICAgICBib2R5LT5kZXN0cm95RGF0YSgpOwpAQCAtODIs
MTMgKzgyLDE0IEBAIHVuc2lnbmVkIFVubGlua2VkQ29kZUJsb2NrOjphZGRPckZpbmRDb25zdGFu
dChKU1ZhbHVlIHYpCiAgICAgcmV0dXJuIGFkZENvbnN0YW50KHYpOwogfQogCi1VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlO
b2RlKiBub2RlLCBib29sIGlzRnJvbUdsb2JhbENvZGUpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlLCBi
b29sIGlzRnJvbUdsb2JhbENvZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQpCiAgICAgOiBC
YXNlKCp2bSwgc3RydWN0dXJlKQogICAgICwgbV9udW1DYXB0dXJlZFZhcmlhYmxlcyhub2RlLT5j
YXB0dXJlZFZhcmlhYmxlQ291bnQoKSkKICAgICAsIG1fZm9yY2VVc2VzQXJndW1lbnRzKG5vZGUt
PnVzZXNBcmd1bWVudHMoKSkKICAgICAsIG1faXNJblN0cmljdENvbnRleHQobm9kZS0+aXNTdHJp
Y3RNb2RlKCkpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKG5vZGUtPmhhc0NhcHR1cmVk
VmFyaWFibGVzKCkpCiAgICAgLCBtX2lzRnJvbUdsb2JhbENvZGUoaXNGcm9tR2xvYmFsQ29kZSkK
KyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oa2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlv
bikKICAgICAsIG1fbmFtZShub2RlLT5pZGVudCgpKQogICAgICwgbV9pbmZlcnJlZE5hbWUobm9k
ZS0+aW5mZXJyZWROYW1lKCkpCiAgICAgLCBtX3BhcmFtZXRlcnMobm9kZS0+cGFyYW1ldGVycygp
KQpAQCAtMTY2LDcgKzE2Nyw3IEBAIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tGb3IoVk0mIHZtLCBjb25zCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIAotICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IGdl
bmVyYXRlRnVuY3Rpb25Db2RlQmxvY2sodm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lhbGl6YXRpb25L
aW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IpOworICAgIFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2sodm0sIHRo
aXMsIHNvdXJjZSwgc3BlY2lhbGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9k
ZSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5r
ZWROb3JtYWxGdW5jdGlvbiwgZXJyb3IpOwogICAgIAogICAgIGlmIChlcnJvci5tX3R5cGUgIT0g
UGFyc2VyRXJyb3I6OkVycm9yTm9uZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMTAsNiArMjEx
LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1faXNTdHJpY3RNb2RlKGluZm8u
bV9pc1N0cmljdE1vZGUpCiAgICAgLCBtX2lzQ29uc3RydWN0b3IoaW5mby5tX2lzQ29uc3RydWN0
b3IpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGZhbHNlKQorICAgICwgbV9pc0J1aWx0
aW5GdW5jdGlvbihpbmZvLm1faXNCdWlsdGluRnVuY3Rpb24pCiAgICAgLCBtX2ZpcnN0TGluZSgw
KQogICAgICwgbV9saW5lQ291bnQoMCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApp
bmRleCBiOWRhZTJkNWM2OWM3OWNlYWFhODAyM2QyYTNhMWYyNmQ0NjA5NDNiLi5hYmY2Y2YzNWI5
MzA2YTRmN2EzMDFhYjBkZjc2NjZlYzYxMmUzNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtNjYsMjYgKzY2LDM1IEBA
IHR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTsKIHR5cGVk
ZWYgdW5zaWduZWQgVW5saW5rZWRMTEludENhbGxMaW5rSW5mbzsKIAogc3RydWN0IEV4ZWN1dGFi
bGVJbmZvIHsKLSAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1
c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvcikKKyAgICBFeGVj
dXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0
cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbikKICAg
ICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2YXRpb24pCiAgICAgICAgICwgbV91
c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0cmljdE1vZGUp
CiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3RydWN0b3IpCisgICAgICAgICwgbV9p
c0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikKICAgICB7CiAgICAgfQotICAgIGJv
b2wgbV9uZWVkc0FjdGl2YXRpb247Ci0gICAgYm9vbCBtX3VzZXNFdmFsOwotICAgIGJvb2wgbV9p
c1N0cmljdE1vZGU7Ci0gICAgYm9vbCBtX2lzQ29uc3RydWN0b3I7CisgICAgYm9vbCBtX25lZWRz
QWN0aXZhdGlvbiA6IDE7CisgICAgYm9vbCBtX3VzZXNFdmFsIDogMTsKKyAgICBib29sIG1faXNT
dHJpY3RNb2RlIDogMTsKKyAgICBib29sIG1faXNDb25zdHJ1Y3RvciA6IDE7CisgICAgYm9vbCBt
X2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKK307CisKK2VudW0gVW5saW5rZWRGdW5jdGlvbktpbmQg
eworICAgIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sCisgICAgVW5saW5rZWRCdWlsdGluRnVuY3Rp
b24sCiB9OwogCiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBKU0Nl
bGwgewogcHVibGljOgorICAgIGZyaWVuZCBjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXM7CiAgICAg
ZnJpZW5kIGNsYXNzIENvZGVDYWNoZTsKKyAgICBmcmllbmQgY2xhc3MgVk07CiAgICAgdHlwZWRl
ZiBKU0NlbGwgQmFzZTsKLSAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNy
ZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSog
bm9kZSwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlID0gZmFsc2UpCisgICAgc3RhdGljIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSwgVW5saW5r
ZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQpCiAgICAgewotICAgICAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhlYXApKSBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJl
LmdldCgpLCBzb3VyY2UsIG5vZGUsIGlzRnJvbUdsb2JhbENvZGUpOworICAgICAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhlYXApKSBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdl
dCgpLCBzb3VyY2UsIG5vZGUsIGlzRnJvbUdsb2JhbENvZGUsIHVubGlua2VkRnVuY3Rpb25LaW5k
KTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2bSk7CiAgICAgICAgIHJldHVy
biBpbnN0YW5jZTsKICAgICB9CkBAIC05OSw2ICsxMDgsMTQgQEAgcHVibGljOgogICAgIH0KICAg
ICBzaXplX3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdDsKICAgICBib29sIGlzSW5TdHJpY3RDb250
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQorICAgIEpTUGFyc2Vy
U3RyaWN0bmVzcyB0b1N0cmljdG5lc3MoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1faXNC
dWlsdGluRnVuY3Rpb24pCisgICAgICAgICAgICByZXR1cm4gSlNQYXJzZUJ1aWx0aW47CisgICAg
ICAgIGlmIChtX2lzSW5TdHJpY3RDb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuIEpTUGFyc2VT
dHJpY3Q7CisgICAgICAgIHJldHVybiBKU1BhcnNlTm9ybWFsOworICAgIH0KICAgICBGdW5jdGlv
bk5hbWVJc0luU2NvcGVUb2dnbGUgZnVuY3Rpb25OYW1lSXNJblNjb3BlVG9nZ2xlKCkgY29uc3Qg
eyByZXR1cm4gbV9mdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGU7IH0KIAogICAgIHVuc2lnbmVk
IGZpcnN0TGluZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RMaW5lT2Zmc2V0OyB9CkBA
IC0xNDIsOCArMTU5LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJbW1v
cnRhbFN0cnVjdHVyZSA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsK
IAorICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRp
bkZ1bmN0aW9uOyB9CisKIHByaXZhdGU6Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUo
Vk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGJv
b2wgaXNGcm9tR2xvYmFsQ29kZSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0q
LCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGJvb2wg
aXNGcm9tR2xvYmFsQ29kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQpOwogICAgIFdyaXRlQmFycmll
cjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX2NvZGVCbG9ja0ZvckNhbGw7CiAgICAgV3Jp
dGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fY29kZUJsb2NrRm9yQ29uc3Ry
dWN0OwogCkBAIC0xNTIsNiArMTcxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNJblN0cmlj
dENvbnRleHQgOiAxOwogICAgIGJvb2wgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAg
Ym9vbCBtX2lzRnJvbUdsb2JhbENvZGUgOiAxOworICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlv
biA6IDE7CiAKICAgICBJZGVudGlmaWVyIG1fbmFtZTsKICAgICBJZGVudGlmaWVyIG1faW5mZXJy
ZWROYW1lOwpAQCAtMzE5LDYgKzMzOSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzTnVtZXJp
Y0NvbXBhcmVGdW5jdGlvbihib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbikgeyBtX2lzTnVt
ZXJpY0NvbXBhcmVGdW5jdGlvbiA9IGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQogICAgIGJv
b2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc051bWVyaWND
b21wYXJlRnVuY3Rpb247IH0KIAorICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisgICAgCiAgICAgdm9pZCBzaHJpbmtUb0Zp
dCgpCiAgICAgewogICAgICAgICBtX2p1bXBUYXJnZXRzLnNocmlua1RvRml0KCk7CkBAIC01MDAs
NiArNTIyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNTdHJpY3RNb2RlIDogMTsKICAgICBi
b29sIG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAgYm9vbCBtX2hhc0NhcHR1cmVkVmFyaWFibGVz
IDogMTsKKyAgICBib29sIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1f
Zmlyc3RMaW5lOwogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50OwogICAgIHVuc2lnbmVkIG1fZW5k
Q29sdW1uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2ODEwYWI4MDAyY2U2YmI4ZDc4ZTdmZjIyMjdm
NGM2ZWE3Yjc1OGMyLi5lYzUyMWI1MzA0NjM5MjNlNzRjMDEwZmEyMThlNTllZDJhOWEzY2FlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcApAQCAtMTc1LDYgKzE3NSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5r
ZWRQCiAjZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAgICAgLCBtX2V4cHJl
c3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihmYWxzZSkKIHsK
ICAgICBpZiAobV9zaG91bGRFbWl0RGVidWdIb29rcykKICAgICAgICAgbV9jb2RlQmxvY2stPnNl
dE5lZWRzRnVsbFNjb3BlQ2hhaW4odHJ1ZSk7CkBAIC0yMjIsNyArMjIzLDEzIEBAIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uQm9keU5vZGUqIGZ1
bmN0aW9uQm9keSwgVW5sCiAjZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAg
ICAgLCBtX2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlv
bihjb2RlQmxvY2stPmlzQnVpbHRpbkZ1bmN0aW9uKCkpCiB7CisgICAgaWYgKG1faXNCdWlsdGlu
RnVuY3Rpb24pIHsKKyAgICAgICAgbV9zaG91bGRFbWl0UHJvZmlsZUhvb2tzID0gZmFsc2U7Cisg
ICAgICAgIG1fc2hvdWxkRW1pdERlYnVnSG9va3MgPSBmYWxzZTsKKyAgICB9CisKICAgICBpZiAo
bV9zaG91bGRFbWl0RGVidWdIb29rcykKICAgICAgICAgbV9jb2RlQmxvY2stPnNldE5lZWRzRnVs
bFNjb3BlQ2hhaW4odHJ1ZSk7CiAKQEAgLTQzOCw2ICs0NDUsNyBAQCBCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2Vk
RXZhbENvZAogI2VuZGlmCiAgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQogICAgICwgbV9l
eHByZXNzaW9uVG9vRGVlcChmYWxzZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oZmFsc2Up
CiB7CiAgICAgbV9jb2RlQmxvY2stPnNldE5lZWRzRnVsbFNjb3BlQ2hhaW4odHJ1ZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAppbmRleCA0ZTlmMjEzYzliZmE2Y2YxOTRiMWExNGZlOTE5ZTgzMzM3YWUzNWQ5Li4x
NTg0Mjc0Yjc4ZWE2YzBiZDBlZmIwYjk4MjVjODE4YmUwZGJjMDY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBA
IC00NjEsNyArNDYxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgc2hvdWxkRW1p
dERlYnVnSG9va3MoKSB7IHJldHVybiBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzOyB9CiAgICAgICAg
IAogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2Nr
LT5pc1N0cmljdE1vZGUoKTsgfQotCisgICAgICAgIAorICAgICAgICBib29sIGlzQnVpbHRpbkZ1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQorICAgICAgICAK
ICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTGFiZWw7CiAgICAgICAgIApAQCAt
NTQzLDcgKzU0NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG1ha2VGdW5jdGlvbihGdW5jdGlvbkJvZHlOb2RlKiBib2R5
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIGJvZHkpOworICAgICAgICAg
ICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29w
ZU5vZGUtPnNvdXJjZSgpLCBib2R5LCBmYWxzZSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlu
a2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbik7CiAgICAgICAgIH0K
IAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SW5pdExhenlSZWdpc3RlcihSZWdpc3RlcklEKik7
CkBAIC02NzcsNiArNjc5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBtX3Vz
ZXNFeGNlcHRpb25zOwogICAgICAgICBib29sIG1fZXhwcmVzc2lvblRvb0RlZXA7CisgICAgICAg
IGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlvbjsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMWZmZDRm
MzExODgyZDBlZTVjNTUxNGY1YjhiMjU5MzlkOTc1ZTM3OS4uNjJlY2EzNmExMGQ3NzA4YTkyOGQ0
M2FjMDNmMmZjODYxNWNlY2E3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjYsMTAgKzI2LDEwIEBACiAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgotI2luY2x1ZGUgIk5vZGVDb25zdHJ1
Y3RvcnMuaCIKIAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ2Fs
bEZyYW1lLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJEZWJ1
Z2dlci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTM4
LDYgKzM4LDcgQEAKICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiTGFiZWxTY29w
ZS5oIgogI2luY2x1ZGUgIkxleGVyLmgiCisjaW5jbHVkZSAiTm9kZUNvbnN0cnVjdG9ycy5oIgog
I2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRlICJQ
cm9wZXJ0eU5hbWVBcnJheS5oIgpAQCAtNTM1LDM2ICs1MzYsMzkgQEAgUmVnaXN0ZXJJRCogQ2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLAogICAgIFJlZlB0cjxMYWJlbD4gZW5kID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9iYXNlKTsK
ICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBz
dWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBE
ZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBtX2lkZW50KTsKKyAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0
aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmNhbGwp
OwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERl
c3RpbmF0aW9uKGRzdCwgZnVuY3Rpb24uZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SnVtcElm
Tm90RnVuY3Rpb25DYWxsKGZ1bmN0aW9uLmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7CisgICAgYm9v
bCBlbWl0Q2FsbENoZWNrID0gIWdlbmVyYXRvci5pc0J1aWx0aW5GdW5jdGlvbigpOworICAgIGlm
IChlbWl0Q2FsbENoZWNrKQorICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9u
Q2FsbChmdW5jdGlvbi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkpOworCiAgICAgewogICAgICAgICBp
ZiAobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKSB7CiAg
ICAgICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2Rl
OwogICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5t
X25leHQ7Ci0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJl
YWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9u
KGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1l
bnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShj
YWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwogICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0
KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0
KCkpOwotCiAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBvbGRMaXN0OwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9
IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2Uu
Z2V0KCkpOwogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRv
ciwgbV9hcmdzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRz
LnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVk
RnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKICAgICAgICAg
fQogICAgIH0KLSAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKLSAgICB7
Ci0gICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7
Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBiYXNlLmdldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdl
dCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBk
aXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIGlmIChlbWl0Q2FsbENoZWNr
KSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKKyAgICAgICAgeworICAgICAgICAgICAg
Q2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNl
LmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQo
KSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgfQorICAgICAgICBnZW5l
cmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFi
ZWwoZW5kLmdldCgpKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWUuZ2V0KCk7CiB9CiAKQEAgLTU4
NSw2NSArNTg5LDY3IEBAIFJlZ2lzdGVySUQqIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgUmVmUHRyPExhYmVs
PiBlbmQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFz
ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVz
c2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Npb25TdGFydCgpLCBzdWJl
eHByZXNzaW9uRW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbiA9IGdlbmVy
YXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0
KCksIG1faWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbjsKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihk
c3QsIGZ1bmN0aW9uLmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9u
QXBwbHkoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKLSAgICB7Ci0gICAgICAgIGlm
IChtYXlCZUNhbGwpIHsKLSAgICAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9h
cmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpIHsKLSAgICAgICAgICAgICAgICBBcmd1bWVudExpc3RO
b2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2RlOwotICAgICAgICAgICAgICAgIGlmICht
X2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCkgewotICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
bV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwci0+aXNTaW1wbGVBcnJheSgpKTsKLSAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9u
ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gc3RhdGljX2Nh
c3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwciktPnRvQXJn
dW1lbnRMaXN0KGdlbmVyYXRvci52bSgpLCAwLCAwKTsKLSAgICAgICAgICAgICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0
b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAgICAgICAgICAg
ICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0
ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRG
dW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBtX2FyZ3Mt
Pm1fbGlzdE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKLSAgICAgICAgICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92
ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAg
ICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3Mp
OwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50
aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5v
RXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbV9hcmdzLT5t
X2xpc3ROb2RlID0gb2xkTGlzdDsKKyAgICBib29sIGVtaXRDYWxsQ2hlY2sgPSAhZ2VuZXJhdG9y
LmlzQnVpbHRpbkZ1bmN0aW9uKCk7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKKyAgICAgICAg
ZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlv
bihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmFwcGx5KTsKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KGZ1bmN0aW9uLmdldCgp
LCByZWFsQ2FsbC5nZXQoKSk7CisgICAgfQorICAgIGlmIChtYXlCZUNhbGwpIHsKKyAgICAgICAg
aWYgKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcikgewor
ICAgICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogb2xkTGlzdCA9IG1fYXJncy0+bV9saXN0Tm9k
ZTsKKyAgICAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCkgeworICAgICAg
ICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByLT5pc1Np
bXBsZUFycmF5KCkpOworICAgICAgICAgICAgICAgIEFTU0VSVCghbV9hcmdzLT5tX2xpc3ROb2Rl
LT5tX25leHQtPm1fbmV4dCk7CisgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0g
c3RhdGljX2Nhc3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhw
ciktPnRvQXJndW1lbnRMaXN0KGdlbmVyYXRvci52bSgpLCAwLCAwKTsKKyAgICAgICAgICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdl
bmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CisgICAgICAgICAgICAg
ICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIo
KSwgb2xkTGlzdC0+bV9leHByKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwo
cmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9u
LCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBt
X2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVz
dGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50
cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAgICAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQo
KSk7CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhp
c1JlZ2lzdGVyKCksIG9sZExpc3QtPm1fZXhwcik7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0
ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9s
ZExpc3Q7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9hcmdzLT5tX2xp
c3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KTsKLSAgICAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBwcm9maWxlSG9va1JlZ2lzdGVyOwotICAgICAgICAgICAgaWYgKGdlbmVy
YXRvci5zaG91bGRFbWl0UHJvZmlsZUhvb2tzKCkpCi0gICAgICAgICAgICAgICAgcHJvZmlsZUhv
b2tSZWdpc3RlciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9y
LnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKLSAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiB0aGlzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9hcmdzLT5tX2xp
c3ROb2RlLT5tX2V4cHIpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFyZ3NSZWdp
c3RlcjsKLSAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MgPSBtX2FyZ3MtPm1fbGlz
dE5vZGUtPm1fbmV4dDsKLSAgICAgICAgICAgIGlmIChhcmdzLT5tX2V4cHItPmlzUmVzb2x2ZU5v
ZGUoKSAmJiBnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50cyhzdGF0aWNfY2FzdDxSZXNv
bHZlTm9kZSo+KGFyZ3MtPm1fZXhwciktPmlkZW50aWZpZXIoKSkpCi0gICAgICAgICAgICAgICAg
YXJnc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLnVuY2hlY2tlZFJlZ2lzdGVyRm9yQXJndW1lbnRzKCk7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJh
dG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7Ci0KLSAgICAgICAgICAgIC8vIEZ1bmN0aW9uLnBy
b3RvdHlwZS5hcHBseSBpZ25vcmVzIGV4dHJhIGFyZ3VtZW50cywgYnV0IHdlIHN0aWxsCi0gICAg
ICAgICAgICAvLyBuZWVkIHRvIGV2YWx1YXRlIHRoZW0gZm9yIHNpZGUgZWZmZWN0cy4KLSAgICAg
ICAgICAgIHdoaWxlICgoYXJncyA9IGFyZ3MtPm1fbmV4dCkpCi0gICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7Ci0KLSAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0Q2FsbFZhcmFyZ3MocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgdGhp
c1JlZ2lzdGVyLmdldCgpLCBhcmdzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKSwgcHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5l
cmF0b3IsIG1fYXJncyk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3Vt
ZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwogICAgICAgICB9Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9h
cmdzLT5tX2xpc3ROb2RlLT5tX25leHQpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJv
ZmlsZUhvb2tSZWdpc3RlcjsKKyAgICAgICAgaWYgKGdlbmVyYXRvci5zaG91bGRFbWl0UHJvZmls
ZUhvb2tzKCkpCisgICAgICAgICAgICBwcm9maWxlSG9va1JlZ2lzdGVyID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0g
Z2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5n
ZXQoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzUmVnaXN0ZXIgPSBnZW5lcmF0
b3IuZW1pdE5vZGUobV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpOworICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gYXJnc1JlZ2lzdGVyOworICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBhcmdz
ID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQ7CisgICAgICAgIGlmIChhcmdzLT5tX2V4cHIt
PmlzUmVzb2x2ZU5vZGUoKSAmJiBnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50cyhzdGF0
aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGFyZ3MtPm1fZXhwciktPmlkZW50aWZpZXIoKSkpCisgICAg
ICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IudW5jaGVja2VkUmVnaXN0ZXJGb3JBcmd1
bWVudHMoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJh
dG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7CisKKyAgICAgICAgLy8gRnVuY3Rpb24ucHJvdG90
eXBlLmFwcGx5IGlnbm9yZXMgZXh0cmEgYXJndW1lbnRzLCBidXQgd2Ugc3RpbGwKKyAgICAgICAg
Ly8gbmVlZCB0byBldmFsdWF0ZSB0aGVtIGZvciBzaWRlIGVmZmVjdHMuCisgICAgICAgIHdoaWxl
ICgoYXJncyA9IGFyZ3MtPm1fbmV4dCkpCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUo
YXJncy0+bV9leHByKTsKKworICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxWYXJhcmdzKHJldHVy
blZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJn
c1JlZ2lzdGVyLmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb2ZpbGVIb29rUmVn
aXN0ZXIuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgfQot
ICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOwotICAgIHsKKyAgICBpZiAo
ZW1pdENhbGxDaGVjaykgeworICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChyZWFsQ2FsbC5nZXQoKSk7CiAgICAgICAgIENh
bGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgIGdl
bmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgp
KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlv
bi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5n
ZXQoKSk7CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICBy
ZXR1cm4gcmV0dXJuVmFsdWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVf
aGFzaF90YWJsZQppbmRleCAzOTc5NzZiMDZjN2E5YjU4MzYzMzI5MDBhNmViYjkzZWM2OGI3NDg2
Li5jYWQ2NWJjNGNjODg4ZTMxNGY4OGQ2NjVkZDRhNmU2NDVhMDlhMzU1IDEwMDc1NQotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlCkBAIC0yODksNyArMjg5LDE3IEBAIHN1YiBvdXRw
dXQoKSB7CiAgICAgICAgICAgICAkaW50cmluc2ljID0gIlJlZ0V4cFRlc3RJbnRyaW5zaWMiIGlm
ICgka2V5IGVxICJ0ZXN0Iik7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoJHZhbHVlc1skaV17
InR5cGUifSBlcSAiRnVuY3Rpb24iKSAgeworICAgICAgICAgICAgbXkgJHRhYmxlSGVhZCA9ICRu
YW1lOworICAgICAgICAgICAgJHRhYmxlSGVhZCA9fiBzL1RhYmxlJC8vOworICAgICAgICAgICAg
cHJpbnQgIiAjaWYgSlNDX0JVSUxUSU5fRVhJU1RTKCIgLiB1YygkdGFibGVIZWFkIC4gJGtleSkg
LiIpXG4iOworICAgICAgICAgICAgcHJpbnQgIiAgIHsgXCIka2V5XCIsICgoJGF0dHJzWyRpXSkg
JiB+RnVuY3Rpb24pIHwgQnVpbHRpbiwgJGludHJpbnNpYywgKGludHB0cl90KXN0YXRpY19jYXN0
PEJ1aWx0aW5HZW5lcmF0b3I+KCIgLiAkdGFibGVIZWFkIC4gdWNmaXJzdCgka2V5KSAuICJDb2Rl
R2VuZXJhdG9yKSwgKGludHB0cl90KSRzZWNvbmRWYWx1ZSB9LFxuIjsKKyAgICAgICAgICAgIHBy
aW50ICIgI2Vsc2VcbiIKKyAgICAgICAgfQogICAgICAgICBwcmludCAiICAgeyBcIiRrZXlcIiwg
JGF0dHJzWyRpXSwgJGludHJpbnNpYywgKGludHB0cl90KSIgLiAkZmlyc3RDYXN0U3RyIC4gIigk
Zmlyc3RWYWx1ZSksIChpbnRwdHJfdCkiIC4gJHNlY29uZENhc3RTdHIgLiAiKCRzZWNvbmRWYWx1
ZSkgfSxcbiI7CisgICAgICAgIGlmICgkdmFsdWVzWyRpXXsidHlwZSJ9IGVxICJGdW5jdGlvbiIp
ICB7CisgICAgICAgICAgICBwcmludCAiICNlbmRpZlxuIgorICAgICAgICB9CiAgICAgICAgICRp
Kys7CiAgICAgfQogICAgIHByaW50ICIgICB7IDAsIDAsIE5vSW50cmluc2ljLCAwLCAwIH1cbiI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAyZmYw
YzM0MTQ2ZTJjMGJhMmZmNzZjNGQzZjdjNDZiYTNlMjU1MTQ3Li45MDQ0Y2RjNmI4YzNhZDRhMWU5
NDE4OGRkMWQwZTIwMGU2OWZiOTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJKU0FjdGl2YXRpb24u
aCIKICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCisjaW5jbHVkZSAi
SlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTmFtZUluc3RhbmNlLmgiCiAjaW5jbHVkZSAi
T2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY0YjZkNDk5ZjAy
NWMwNTNiMmY5N2I2ZjEwMGU4NTUwNDZmM2U1MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucwpAQCAtMCwwICsxLDMwNCBAQAorIyEv
dXNyL2Jpbi9weXRob24KKyMgQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorIyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyMgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorIyBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBmaWxlY21wCitpbXBvcnQgZm5t
YXRjaAoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzeXMKK2lt
cG9ydCBkYXRldGltZQoraW1wb3J0IGpzb24KKworY29weXJpZ2h0VGV4dCA9ICIiIiAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovXG4KKyIiIgorCitnZW5lcmF0b3JTdHJp
bmcgPSAiLyogR2VuZXJhdGVkIGJ5ICVzIGRvIG5vdCBoYW5kIGVkaXQuICovXG4iICUgb3MucGF0
aC5iYXNlbmFtZShfX2ZpbGVfXykKKworZnVuY3Rpb25IZWFkUmVnRXhwID0gcmUuY29tcGlsZShy
ImZ1bmN0aW9uXHMrXHcrXHMqXCguKj9cKSIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitmdW5jdGlv
bk5hbWVSZWdFeHAgPSByZS5jb21waWxlKHIiZnVuY3Rpb25ccysoXHcrKVxzKlwoIiwgcmUuTVVM
VElMSU5FIHwgcmUuUykKK2Z1bmN0aW9uUGFyYW1ldGVyRmluZGVyID0gcmUuY29tcGlsZShyIl5m
dW5jdGlvblxzKyg/Olx3KylccypcKCgoPzpccypcdyspP1xzKig/OlxzKixccypcdyspKik/XCki
LCByZS5NVUxUSUxJTkUgfCByZS5TKQorCittdWx0aWxpbmVDb21tZW50UmVnRXhwID0gcmUuY29t
cGlsZShyIlwvXCouKj9cKlwvIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK3NpbmdsZUxpbmVDb21t
ZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwvXC8uKj9cbiIsIHJlLk1VTFRJTElORSB8IHJlLlMp
CisKK2RlZiBnZXRDb3B5cmlnaHQoc291cmNlKToKKyAgICBjb3B5cmlnaHRCbG9jayA9IG11bHRp
bGluZUNvbW1lbnRSZWdFeHAuZmluZGFsbChzb3VyY2UpWzBdCisgICAgY29weXJpZ2h0QmxvY2sg
PSBjb3B5cmlnaHRCbG9ja1s6Y29weXJpZ2h0QmxvY2suaW5kZXgoIlJlZGlzdHJpYnV0aW9uIild
CisgICAgY29weVJpZ2h0TGluZXMgPSBbXQorCisgICAgZm9yIGxpbmUgaW4gY29weXJpZ2h0Qmxv
Y2suc3BsaXQoIlxuIik6CisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIi8qIiwgIiIpCisg
ICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIiovIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5l
LnJlcGxhY2UoIioiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiQ29weXJpZ2h0
IiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoImNvcHlyaWdodCIsICIiKQorICAg
ICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIoQykiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUu
cmVwbGFjZSgiKGMpIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAg
aWYgbGVuKGxpbmUpID09IDA6CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIGNvcHlS
aWdodExpbmVzLmFwcGVuZChsaW5lKQorICAgIAorICAgIHJldHVybiBsaXN0KHNldChjb3B5Umln
aHRMaW5lcykpCisKKworCitkZWYgZ2V0RnVuY3Rpb25zKHNvdXJjZSk6CisKKyAgICBzb3VyY2Ug
PSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLnN1YigiLyoqLyIsIHNpbmdsZUxpbmVDb21tZW50UmVn
RXhwLnN1YigiLy9cbiIsIHNvdXJjZSkpCisKKyAgICBtYXRjaGVzID0gWyBmIGZvciBmIGluIGZ1
bmN0aW9uSGVhZFJlZ0V4cC5maW5kaXRlcihzb3VyY2UpXQorICAgIGZ1bmN0aW9uQm91bmRzID0g
W10KKyAgICBzdGFydCA9IDAKKyAgICBlbmQgPSAwCisgICAgZm9yIG1hdGNoIGluIG1hdGNoZXM6
CisgICAgICAgIHN0YXJ0ID0gbWF0Y2guc3RhcnQoKQorICAgICAgICBpZiBzdGFydCA8IGVuZDoK
KyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGVuZCA9IG1hdGNoLmVuZCgpCisgICAgICAg
IHdoaWxlIHNvdXJjZVtlbmRdICE9ICd7JzoKKyAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAg
ICAgICAgZGVwdGggPSAxCisgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgd2hpbGUgZGVw
dGggPiAwOgorICAgICAgICAgICAgaWYgc291cmNlW2VuZF0gPT0gJ3snOgorICAgICAgICAgICAg
ICAgIGRlcHRoID0gZGVwdGggKyAxCisgICAgICAgICAgICBlbGlmIHNvdXJjZVtlbmRdID09ICd9
JzoKKyAgICAgICAgICAgICAgICBkZXB0aCA9IGRlcHRoIC0gMQorICAgICAgICAgICAgZW5kID0g
ZW5kICsgMQorICAgICAgICBmdW5jdGlvbkJvdW5kcy5hcHBlbmQoKHN0YXJ0LCBlbmQpKQorCisg
ICAgZnVuY3Rpb25zID0gW3NvdXJjZVtzdGFydDplbmRdLnN0cmlwKCkgZm9yIChzdGFydCwgZW5k
KSBpbiBmdW5jdGlvbkJvdW5kc10KKyAgICByZXN1bHQgPSBbXQorICAgIGZvciBmdW5jdGlvbiBp
biBmdW5jdGlvbnM6CisgICAgICAgIGZ1bmN0aW9uID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5z
dWIoIiIsIGZ1bmN0aW9uKQorICAgICAgICBmdW5jdGlvbk5hbWUgPSBmdW5jdGlvbk5hbWVSZWdF
eHAuZmluZGFsbChmdW5jdGlvbilbMF0KKyAgICAgICAgZnVuY3Rpb25QYXJhbWV0ZXJzID0gZnVu
Y3Rpb25QYXJhbWV0ZXJGaW5kZXIuZmluZGFsbChmdW5jdGlvbilbMF0uc3BsaXQoJywnKQorICAg
ICAgICBpZiBsZW4oZnVuY3Rpb25QYXJhbWV0ZXJzWzBdKSA9PSAwOgorICAgICAgICAgICAgZnVu
Y3Rpb25QYXJhbWV0ZXJzID0gW10KKyAgICAgICAgICAgIAorICAgICAgICByZXN1bHQuYXBwZW5k
KChmdW5jdGlvbk5hbWUsIGZ1bmN0aW9uLCBmdW5jdGlvblBhcmFtZXRlcnMpKQorICAgIHJldHVy
biByZXN1bHQKKyAgICAgICAgCisKK2RlZiBnZW5lcmF0ZUNvZGUoc291cmNlKToKKyAgICBpbnB1
dEZpbGUgPSBvcGVuKHNvdXJjZSwgInIiKQorICAgIGJhc2VOYW1lID0gb3MucGF0aC5iYXNlbmFt
ZShzb3VyY2UpLnJlcGxhY2UoIi5qcyIsICIiKQorICAgIAorICAgIHNvdXJjZSA9ICIiCisgICAg
Zm9yIGxpbmUgaW4gaW5wdXRGaWxlOgorICAgICAgICBzb3VyY2UgPSBzb3VyY2UgKyBsaW5lCisg
ICAgCisgICAgaWYgc3lzLnBsYXRmb3JtID09ICJjeWd3aW4iOgorICAgICAgICBzb3VyY2UgPSBz
b3VyY2UucmVwbGFjZSgiXHJcbiIsICJcbiIpCisgICAgcmV0dXJuIChiYXNlTmFtZSwgZ2V0RnVu
Y3Rpb25zKHNvdXJjZSksIGdldENvcHlyaWdodChzb3VyY2UpKQorCitkZWYgbWFuZ2xlTmFtZShv
YmplY3QsIG5hbWUpOgorICAgIHFOYW1lID0gb2JqZWN0ICsgIi4iICsgbmFtZQorICAgIG1hbmds
ZWROYW1lID0gIiIKKyAgICBpID0gMAorICAgIHdoaWxlIGkgPCBsZW4ocU5hbWUpOgorICAgICAg
ICBpZiBxTmFtZVtpXSA9PSAnLic6CisgICAgICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWRO
YW1lICsgcU5hbWVbaSArIDFdLnVwcGVyKCkKKyAgICAgICAgICAgIGkgPSBpICsgMQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZSArIHFOYW1lW2ld
CisgICAgICAgIGkgPSBpICsgMQorICAgIHJldHVybiBtYW5nbGVkTmFtZQorCitidWlsdGlucyA9
IFtdCisKK2Jhc2VOYW1lID0gc3lzLmFyZ3ZbLTFdCitidWlsdGluX2RlZmluaXRpb25zID0gc3lz
LmFyZ3ZbMTotMV0KKyhvdXRwdXRfYmFzZSwgXykgPSBvcy5wYXRoLnNwbGl0ZXh0KHN5cy5hcmd2
Wy0xXSkKKworY29weXJpZ2h0cyA9IFtdCitmb3IgZmlsZSBpbiBidWlsdGluX2RlZmluaXRpb25z
OgorICAgIGlmIGZubWF0Y2guZm5tYXRjaChmaWxlLCAnKi5qcycpOgorICAgICAgICAoYmFzZU5h
bWUsIGZ1bmN0aW9ucywgb2JqZWN0Q29weXJpZ2h0cykgPSBnZW5lcmF0ZUNvZGUoZmlsZSkKKyAg
ICAgICAgY29weXJpZ2h0cy5leHRlbmQob2JqZWN0Q29weXJpZ2h0cykKKyAgICAgICAgYnVpbHRp
bnMuYXBwZW5kKChiYXNlTmFtZSwgZnVuY3Rpb25zKSkKKworY29weXJpZ2h0cyA9IGxpc3Qoc2V0
KGNvcHlyaWdodHMpKQorCitjb3B5cmlnaHRCb2R5ID0gIiIKK2ZvciBjb3B5cmlnaHQgaW4gY29w
eXJpZ2h0czoKKyAgICBjb3B5cmlnaHRCb2R5ID0gY29weXJpZ2h0Qm9keSArIiAqIENvcHlyaWdo
dCAoQykgIiArIGNvcHlyaWdodCArICJcbiIKKworYnVpbHRpbnNIZWFkZXIgPSBvcGVuKG91dHB1
dF9iYXNlICsgIi5oLnRtcCIsICJ3IikKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24gPSBvcGVuKG91
dHB1dF9iYXNlICsgIi5jcHAudG1wIiwgInciKQorY29weXJpZ2h0VGV4dCA9ICIvKlxuIiArIGNv
cHlyaWdodEJvZHkgKyBjb3B5cmlnaHRUZXh0CitidWlsdGluc0hlYWRlci53cml0ZSgiIiIlcwor
JXMKKworI2lmbmRlZiBKU0NCdWlsdGluc19ICisjZGVmaW5lIEpTQ0J1aWx0aW5zX0gKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIElkZW50aWZp
ZXI7CitjbGFzcyBKU0dsb2JhbE9iamVjdDsKK2NsYXNzIFNvdXJjZUNvZGU7CitjbGFzcyBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIFZNOworCitGdW5jdGlvbkV4ZWN1dGFibGUq
IGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKFZNJiwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
LCBjb25zdCBTb3VyY2VDb2RlJik7CisKKyIiIiAlIChnZW5lcmF0b3JTdHJpbmcsIGNvcHlyaWdo
dFRleHQpKQorCitjb2RlUmVmZXJlbmNlcyA9IFtdCisKK2ZvciAob2JqZWN0TmFtZSwgZnVuY3Rp
b25zKSBpbiBidWlsdGluczoKKyAgICBwcmludCgiR2VuZXJhdGluZyBiaW5kaW5ncyBmb3IgdGhl
ICVzIGJ1aWx0aW4uIiAlIG9iamVjdE5hbWUpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIi8q
ICVzIGZ1bmN0aW9ucyAqL1xuIiAlIG9iamVjdE5hbWUpCisgICAgZm9yIChuYW1lLCBpbXBsZW1l
bnRhdGlvbiwgXykgaW4gZnVuY3Rpb25zOgorICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZU5h
bWUob2JqZWN0TmFtZSwgbmFtZSkKKyAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZVsw
XS5sb3dlcigpICsgbWFuZ2xlZE5hbWVbMTpdICsgIkNvZGUiCisgICAgICAgIGNvZGVSZWZlcmVu
Y2VzLmFwcGVuZCgobWFuZ2xlZE5hbWUsIG5hbWUsIGltcGxlbWVudGF0aW9uKSkKKyAgICAgICAg
YnVpbHRpbnNIZWFkZXIud3JpdGUoImV4dGVybiBjb25zdCBjaGFyKiBzXyVzO1xuIiAlIG1hbmds
ZWROYW1lKQorICAgICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiZXh0ZXJuIGNvbnN0IGludCBz
XyVzTGVuZ3RoO1xuIiAlIG1hbmdsZWROYW1lKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJc
biIpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0ZPUkVBQ0hfJXNfQlVJ
TFRJTihtYWNybykgXFxcbiIgJSBvYmplY3ROYW1lLnJlcGxhY2UoIi4iLCAiXyIpLnVwcGVyKCkp
CisgICAgZm9yIChuYW1lLCBpbXBsZW1lbnRhdGlvbiwgYXJndW1lbnRzKSBpbiBmdW5jdGlvbnM6
CisgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlTmFtZShvYmplY3ROYW1lLCBuYW1lKQorICAg
ICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiICAgIG1hY3JvKCVzLCAlcywgJWQpIFxcXG4iICUg
KG5hbWUsIG1hbmdsZWROYW1lLCBsZW4oYXJndW1lbnRzKSkpCisgICAgYnVpbHRpbnNIZWFkZXIu
d3JpdGUoIlxuIikKKyAgICBmb3IgKG5hbWUsIGltcGxlbWVudGF0aW9uLCBhcmd1bWVudHMpIGlu
IGZ1bmN0aW9uczoKKyAgICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0JV
SUxUSU5fJXMgMVxuIiAlIG1hbmdsZU5hbWUob2JqZWN0TmFtZSwgbmFtZSkudXBwZXIoKSkKKyAg
ICBidWlsdGluc0hlYWRlci53cml0ZSgiXG5cbiIpCituYW1lcyA9IFtdCitidWlsdGluc0hlYWRl
ci53cml0ZSgiI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOKG1hY3JvKVxcXG4iKQorZm9yIChj
b2RlUmVmZXJlbmNlLCBmdW5jdGlvbk5hbWUsIHNvdXJjZSkgaW4gY29kZVJlZmVyZW5jZXM6Cisg
ICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiAgICBtYWNybyglcywgJXMsIHNfJXNMZW5ndGgpIFxc
XG4iICUgKGNvZGVSZWZlcmVuY2UsIGZ1bmN0aW9uTmFtZSwgY29kZVJlZmVyZW5jZSkpCisgICAg
bmFtZXMuYXBwZW5kKGZ1bmN0aW9uTmFtZSkKKworYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuXG4i
KQorYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5D
VElPTl9OQU1FKG1hY3JvKSBcXFxuIikKK2ZvciBuYW1lIGluIHNvcnRlZChzZXQobmFtZXMpKToK
KyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiICAgIG1hY3JvKCVzKSBcXFxuIiAlIG5hbWUpCiti
dWlsdGluc0hlYWRlci53cml0ZSgiIiIKKworI2RlZmluZSBKU0NfREVDTEFSRV9CVUlMVElOX0dF
TkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAorICAgIEZ1
bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihWTSYpOworCitKU0NfRk9SRUFD
SF9CVUlMVElOKEpTQ19ERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIEpTQ19ERUNM
QVJFX0JVSUxUSU5fR0VORVJBVE9SCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fRVhJU1RTKG5hbWUp
IGRlZmluZWQoSlNDX0JVSUxUSU5fIyNuYW1lKQorCit9CisKKyNlbmRpZgorCisiIiIpCisKK2J1
aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoIiIiJXMKKyVzCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0
YWJsZXMuaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5l
cy5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0MgeworCisiIiIgICUgKGdlbmVy
YXRvclN0cmluZywgY29weXJpZ2h0VGV4dCkpCisKK2ZvciAoY29kZVJlZmVyZW5jZSwgbmFtZSwg
c291cmNlKSBpbiBjb2RlUmVmZXJlbmNlczoKKyAgICBzb3VyY2UgPSAiKGZ1bmN0aW9uICIgKyBz
b3VyY2Vbc291cmNlLmluZGV4KCIoIik6XSArICIpIgorICAgIGxpbmVzID0ganNvbi5kdW1wcyhz
b3VyY2UpWzE6LTFdLnNwbGl0KCJcXG4iKQorICAgIHNvdXJjZUxlbmd0aCA9IGxlbihzb3VyY2Up
CisgICAgc291cmNlID0gIiIKKyAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgc291cmNl
ID0gc291cmNlICsgKCIgICAgXCIlc1xcblwiIFxcXG4iICUgbGluZSkKKyAgICBidWlsdGluc0lt
cGxlbWVudGF0aW9uLndyaXRlKCJjb25zdCBjaGFyKiBzXyVzID1cbiVzO1xuXG4iICUgKGNvZGVS
ZWZlcmVuY2UsIHNvdXJjZSkpCisgICAgYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiY29u
c3QgaW50IHNfJXNMZW5ndGggPSAlZDtcblxuIiAlIChjb2RlUmVmZXJlbmNlLCBzb3VyY2VMZW5n
dGggKyAxKSkgIyArIDEgZm9yIFxuCisKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoIiIi
CitGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKFZNJiB2bSwgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlKQoreworICAgIHVuc2lnbmVkIGxpbmVDb3VudCA9IHVubGlua2VkRXhlY3V0
YWJsZS0+bGluZUNvdW50KCk7CisgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSAxOworICAgIHVu
c2lnbmVkIHNvdXJjZUxlbmd0aCA9IHVubGlua2VkRXhlY3V0YWJsZS0+c291cmNlTGVuZ3RoKCk7
CisgICAgYm9vbCBlbmRDb2x1bW5Jc09uU3RhcnRMaW5lID0gIWxpbmVDb3VudDsKKyAgICB1bnNp
Z25lZCBlbmRDb2x1bW5FeGNsdWRpbmdCcmFjZXMgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnVubGlu
a2VkQm9keUVuZENvbHVtbigpICsgKGVuZENvbHVtbklzT25TdGFydExpbmUgPyAwIDogMSk7Cisg
ICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnN0YXJ0T2Zmc2V0
KCk7CisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXRFeGNsdWRpbmdPcGVuQnJhY2UgPSBzdGFydE9m
ZnNldCArIDE7CisgICAgdW5zaWduZWQgZW5kT2Zmc2V0RXhjbHVkaW5nQ2xvc2VCcmFjZSA9IHN0
YXJ0T2Zmc2V0ICsgc291cmNlTGVuZ3RoIC0gMTsKKyAgICBTb3VyY2VDb2RlIGJvZHlTb3VyY2Uo
c291cmNlLnByb3ZpZGVyKCksIHN0YXJ0T2Zmc2V0RXhjbHVkaW5nT3BlbkJyYWNlLCBlbmRPZmZz
ZXRFeGNsdWRpbmdDbG9zZUJyYWNlLCAwLCBzdGFydENvbHVtbik7CisgICAgcmV0dXJuIEZ1bmN0
aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBib2R5U291cmNlLCB1bmxpbmtlZEV4ZWN1dGFibGUs
IDAsIGxpbmVDb3VudCwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbkV4Y2x1ZGluZ0JyYWNlcywgZmFs
c2UpOworfQorCisjZGVmaW5lIEpTQ19ERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUs
IGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKK0Z1bmN0aW9uRXhlY3V0YWJsZSogY29k
ZU5hbWUjI0dlbmVyYXRvcihWTSYgdm0pIFxcCit7IFxcCisgICAgcmV0dXJuIGNyZWF0ZUJ1aWx0
aW5FeGVjdXRhYmxlKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1
dGFibGUoKSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IFxc
Cit9CisKK0pTQ19GT1JFQUNIX0JVSUxUSU4oSlNDX0RFRklORV9CVUlMVElOX0dFTkVSQVRPUikK
KyN1bmRlZiBKU0NfREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCit9CisKKyIiIikKKworYnVpbHRp
bnNIZWFkZXIuY2xvc2UoKQorYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi5jbG9zZSgpCisKK2lmIChu
b3Qgb3MucGF0aC5leGlzdHMob3V0cHV0X2Jhc2UgKyAiLmgiKSkgb3IgKG5vdCBmaWxlY21wLmNt
cChvdXRwdXRfYmFzZSArICIuaC50bXAiLCBvdXRwdXRfYmFzZSArICIuaCIsIHNoYWxsb3c9RmFs
c2UpKToKKyAgICBvcy5yZW5hbWUob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgb3V0cHV0X2Jhc2Ug
KyAiLmgiKQorZWxzZToKKyAgICBvcy5yZW1vdmUob3V0cHV0X2Jhc2UgKyAiLmgudG1wIikKKwor
aWYgKG5vdCBvcy5wYXRoLmV4aXN0cyhvdXRwdXRfYmFzZSArICIuY3BwIikpIG9yIChub3QgZmls
ZWNtcC5jbXAob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCBvdXRwdXRfYmFzZSArICIuY3BwIiwg
c2hhbGxvdz1GYWxzZSkpOgorICAgIG9zLnJlbmFtZShvdXRwdXRfYmFzZSArICIuY3BwLnRtcCIs
IG91dHB1dF9iYXNlICsgIi5jcHAiKQorZWxzZToKKyAgICBvcy5yZW1vdmUob3V0cHV0X2Jhc2Ug
KyAiLmNwcC50bXAiKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKaW5kZXggY2E4OTBiMDZlYTMzZmE5ZTdmMWZhNTFhMzVlYTJkNDhkMDA5
YTM4YS4uNmM5YmY5NmMxNWY2MDllMjY1Y2UyNTBhNDViZjA4NjFkMDZjZDFmMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC01
MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogI2luY2x1
ZGUgIkpTU3RhY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJK
U1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIkxM
SW50Q0xvb3AuaCIKICNpbmNsdWRlICJMTEludFRodW5rcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAKaW5kZXggZjBlMDJi
YTRlNDc2Zjk5Y2M5MTNiMDQ2MmFkMjc5NTAwNjA5ZmEzYS4uMWMyNDBkY2Q3MWJlNTI5ZDg4Y2Jm
NDYxZDE4NjhmNWViMmIwMmFkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVk
ZSAiUHJvdG9DYWxsRnJhbWUuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUg
IkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKIAogbmFt
ZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRl
eCBjYTdhZDExZjJlMGI4YTNiOGIxODU4OTFkN2U1MjJiYWU0MDNhMjM2Li5jYjU1MDdiZWFjNTVi
ZjhlYjFiMzdlYzkwZmNhYjE5MzRmYjQ4ZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5j
bHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggOThkMTBhM2Y0ZGNiMTJk
ODlmMzdhMTJmMjI2MDRiOTQ2ZTA4ZTYyNy4uZGQwMzUzNzc5ZThiZGY5OGY0NjU4YTMwN2UzMmQw
NmU0NzI0NDE1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVk
ZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA5MjhkZDUwZmIwMTZlMjcxNjQ0YTU3
NWUzMGFiNWYyNTE2ZWI1MGVjLi40OTg3MGU2OGE4N2JlMTllMTU4YTA2ZDFjNjRmZWM5YjhiZDA4
MjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAg
LTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25X
cmFwcGVycy5oIgogI2luY2x1ZGUgIkpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCAyNmRkNGQxYWY3NDVhZmExZmJjNTNhOWMwMjNhNmU0
NzQxYTY2YTA5Li5kZjFiZDNhOWNmYTQwMmM1MmE1MjExY2YxYWNjZTY3ZDUxMjFiN2VlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAt
MjksMTEgKzI5LDEzIEBACiAjaW5jbHVkZSAiSklULmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2su
aCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkdDQXdhcmVKSVRT
dHViUm91dGluZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkludGVy
cHJldGVyLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIK
KyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNWYXJpYWJs
ZU9iamVjdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggZDE4ZmVhNzE1Y2IwM2IzN2FhOTI2ZDg0OWE4ZTVhYjk1
NjNlY2QzZC4uMzI2MWIzYWY2ZWVhYmQ2ZjI2YTQzYTA4ZDIwNGJjNjJiMDY1ODliNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRl
ICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFs
dWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1ZhcmlhYmxlT2JqZWN0LmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwCmluZGV4IDQwNzg0YjQ5NDMxZmUwMmU4ZTQ1MjJmMTYzMDhjOTAyNDcxNmQyMzYu
LjJmNzk1NTU0YjA5MWRlZWJiYzAzYmYyYmU4Yzc0ZjQxYWU1NDFlZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAi
SlNQcm94eS5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5o
IgogI2luY2x1ZGUgIlN0YWNrVmlzaXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCA2MDRjYzI2M2NmOTdl
MDg2ZmVkMDZlYzkwM2IwZWMxOTgzZTc4MTM3Li44MTY2ZTdmODFmYTg5YTdkNGY1MGM1ZjFhOTRm
YTk2OGM1ZDU3ZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRPZmZzZXRzRXh0cmFjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkpJ
VFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgotI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU09i
amVjdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAKaW5kZXggNjY0NDRiYWEwOGI1NjJkZDY5N2UwY2NkNzcyMWU1NWMxNWJhNDkxMy4uZDgyZTll
OWMyODE4NDYxZTMwNWZmODY1ZDJmYjE2OGE3OGNiYjRmNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC00MCw3ICs0MCw3IEBACiAjaW5j
bHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgogI2luY2x1ZGUgIkpTQWN0
aXZhdGlvbi5oIgotI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVk
ZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IDhlYzFmZDMyYTNh
ZGEyMmUxMjUyMjk1NzBkY2Y3ZmYyOGVhYmYxZWQuLjQ2YTdjNzZiMmY5MDFmYzNjYzM2ZDFjZTBj
MDczNTNlYjA2YjJmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
QVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRl
ci5oCkBAIC04ODgsOSArODg4LDkgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VG
dW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24KICAgICBBU1NF
UlQoZnVuYy0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CiAgICAgRG90QWNjZXNzb3JOb2RlKiBkb3Qg
PSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihmdW5jKTsKICAgICBGdW5jdGlvbkNhbGxE
b3ROb2RlKiBub2RlOwotICAgIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5jYWxsKQorICAgIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5jYWxsIHx8IGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMt
PmNhbGxQcml2YXRlTmFtZSkKICAgICAgICAgbm9kZSA9IG5ldyAobV92bSkgQ2FsbEZ1bmN0aW9u
Q2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJn
cywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKLSAgICBlbHNlIGlmIChkb3QtPmlkZW50
aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcHBseSkKKyAgICBlbHNlIGlmIChkb3Qt
PmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcHBseSB8fCBkb3QtPmlkZW50
aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcHBseVByaXZhdGVOYW1lKQogICAgICAg
ICBub2RlID0gbmV3IChtX3ZtKSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRv
dC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRp
dm90RW5kKTsKICAgICBlbHNlCiAgICAgICAgIG5vZGUgPSBuZXcgKG1fdm0pIEZ1bmN0aW9uQ2Fs
bERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywg
ZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9M
ZXhlci5jcHAKaW5kZXggY2E0YmI0ZjBhZGU4ZDZiYzgyNjkxYTZjMDAwMTRjZjE5OGJkODhiZC4u
Y2NiMDc5ZDk3NWExNDFjNWM0YjJkN2I2MjMxMzAwMDcwOTc3NzgyOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9MZXhlci5jcHAKQEAgLTI1LDEwICsyNSwxMCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkxleGVyLmgiCiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVy
cy5oIgorI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5l
cy5oIgotCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKLSNpbmNsdWRlICJJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTm9kZUluZm8uaCIKICNpbmNsdWRlICJOb2Rlcy5oIgog
I2luY2x1ZGUgPHd0Zi9kdG9hLmg+CkBAIC05MCw2ICs5MCw3IEBAIGVudW0gQ2hhcmFjdGVyVHlw
ZSB7CiAKICAgICAvLyBPdGhlciB0eXBlcyAob25seSBvbmUgc28gZmFyKQogICAgIENoYXJhY3Rl
cldoaXRlU3BhY2UsCisgICAgQ2hhcmFjdGVyUHJpdmF0ZUlkZW50aWZpZXJTdGFydAogfTsKIAog
Ly8gMjU2IExhdGluLTEgY29kZXMKQEAgLTE1OCw3ICsxNTksNyBAQCBzdGF0aWMgY29uc3QgdW5z
aWduZWQgc2hvcnQgdHlwZXNPZkxhdGluMUNoYXJhY3RlcnNbMjU2XSA9IHsKIC8qICA2MSAtID0g
ICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJFcXVhbCwKIC8qICA2MiAtID4gICAgICAgICAg
ICAgICAgICAqLyBDaGFyYWN0ZXJHcmVhdGVyLAogLyogIDYzIC0gPyAgICAgICAgICAgICAgICAg
ICovIENoYXJhY3RlclF1ZXN0aW9uLAotLyogIDY0IC0gQCAgICAgICAgICAgICAgICAgICovIENo
YXJhY3RlckludmFsaWQsCisvKiAgNjQgLSBAICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVy
UHJpdmF0ZUlkZW50aWZpZXJTdGFydCwKIC8qICA2NSAtIEEgICAgICAgICAgICAgICAgICAqLyBD
aGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCiAvKiAgNjYgLSBCICAgICAgICAgICAgICAgICAgKi8g
Q2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAogLyogIDY3IC0gQyAgICAgICAgICAgICAgICAgICov
IENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKQEAgLTQ4Niw5ICs0ODcsMTAgQEAgc3RhdGljIGNv
bnN0IExDaGFyIHNpbmdsZUNoYXJhY3RlckVzY2FwZVZhbHVlc0ZvckFTQ0lJWzEyOF0gPSB7CiB9
OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUxleGVyPFQ+OjpMZXhlcihWTSogdm0pCitMZXhl
cjxUPjo6TGV4ZXIoVk0qIHZtLCBKU1BhcnNlclN0cmljdG5lc3Mgc3RyaWN0bmVzcykKICAgICA6
IG1faXNSZXBhcnNpbmcoZmFsc2UpCiAgICAgLCBtX3ZtKHZtKQorICAgICwgbV9wYXJzaW5nQnVp
bHRpbkZ1bmN0aW9uKHN0cmljdG5lc3MgPT0gSlNQYXJzZUJ1aWx0aW4pCiB7CiB9CiAKQEAgLTc1
Myw3ICs3NTUsMjcgQEAgaW5saW5lIHZvaWQgTGV4ZXI8VD46OnJlY29yZDE2KGludCBjKQogICAg
IEFTU0VSVChjIDw9IHN0YXRpY19jYXN0PGludD4oVVNIUlRfTUFYKSk7CiAgICAgbV9idWZmZXIx
Ni5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KGMpKTsKIH0KLQorICAgIAorI2lmICFBU1NFUlRf
RElTQUJMRUQKK2Jvb2wgaXNTYWZlSWRlbnRpZmllcihWTSYgdm0sIGNvbnN0IElkZW50aWZpZXIq
IGlkZW50KQoreworICAgIGlmICghaWRlbnQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIC8q
IEp1c3QgYmxvY2sgYW55IHVzZSBvZiBzdXNwaWNpb3VzIGlkZW50aWZpZXJzLiAgVGhpcyBpcyBp
bnRlbmRlZCB0bworICAgICAqIGJlIHVzZWQgYXMgYSBzYWZldHkgbmV0IHdoaWxlIGltcGxlbWVu
dGluZyBidWlsdGlucy4KKyAgICAgKi8KKyAgICBpZiAoKmlkZW50ID09IHZtLnByb3BlcnR5TmFt
ZXMtPmNhbGwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKmlkZW50ID09IHZtLnBy
b3BlcnR5TmFtZXMtPmFwcGx5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCppZGVu
dCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5ldmFsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCppZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5GdW5jdGlvbikKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisgICAgCiB0ZW1wbGF0ZSA8Pgog
dGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rv
a2VuVHlwZSBMZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcihKU1Rva2VuRGF0YSogdG9rZW5E
YXRhLCB1bnNpZ25lZCBsZXhlckZsYWdzLCBib29sIHN0cmljdE1vZGUpCiB7CkBAIC03NjUsNyAr
Nzg3LDExIEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19J
TkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAgICAgICAgICAgICByZXR1cm4ga2V5
d29yZCA9PSBSRVNFUlZFRF9JRl9TVFJJQ1QgJiYgIXN0cmljdE1vZGUgPyBJREVOVCA6IGtleXdv
cmQ7CiAgICAgICAgIH0KICAgICB9Ci0KKyAgICAKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSBt
X2N1cnJlbnQgPT0gJ0AnICYmIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKKyAgICBpZiAoaXNQ
cml2YXRlTmFtZSkKKyAgICAgICAgc2hpZnQoKTsKKyAgICAKICAgICBjb25zdCBMQ2hhciogaWRl
bnRpZmllclN0YXJ0ID0gY3VycmVudFNvdXJjZVB0cigpOwogICAgIHVuc2lnbmVkIGlkZW50aWZp
ZXJMaW5lU3RhcnQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CiAgICAgCkBAIC03NzksMTUg
KzgwNSwyNiBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNf
SU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAogCiAgICAgY29uc3QgSWRlbnRpZmll
ciogaWRlbnQgPSAwOwogICAgIAotICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyKSB7Cisg
ICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIgfHwgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9u
KSB7CiAgICAgICAgIGludCBpZGVudGlmaWVyTGVuZ3RoID0gY3VycmVudFNvdXJjZVB0cigpIC0g
aWRlbnRpZmllclN0YXJ0OwogICAgICAgICBpZGVudCA9IG1ha2VJZGVudGlmaWVyKGlkZW50aWZp
ZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCk7Ci0KKyAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0
aW5GdW5jdGlvbikgeworICAgICAgICAgICAgaWYgKCFpc1NhZmVJZGVudGlmaWVyKCptX3ZtLCBp
ZGVudCkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsKKyAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVz
c2FnZSA9IG1ha2VTdHJpbmcoIlRoZSB1c2Ugb2YgJyIsIGlkZW50LT5zdHJpbmcoKSwgIicgaXMg
ZGlzYWxsb3dlZCBpbiBidWlsdGluIGZ1bmN0aW9ucy4iKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gRVJST1JUT0s7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaXNQcml2YXRlTmFt
ZSkKKyAgICAgICAgICAgICAgICBpZGVudCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPmdldFByaXZh
dGVOYW1lKCppZGVudCk7CisgICAgICAgICAgICBlbHNlIGlmICgqaWRlbnQgPT0gbV92bS0+cHJv
cGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCkKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEt
PmlkZW50ID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmRQcml2YXRlTmFt
ZTsKKyAgICAgICAgICAgIGlmICghaWRlbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFM
SURfUFJJVkFURV9OQU1FX0VSUk9SVE9LOworICAgICAgICB9CiAgICAgICAgIHRva2VuRGF0YS0+
aWRlbnQgPSBpZGVudDsKICAgICB9IGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IDA7
CiAKLSAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhKGxl
eGVyRmxhZ3MgJiBMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpKSB7CisgICAgaWYgKFVO
TElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4
ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMpKSAmJiAhaXNQcml2YXRlTmFtZSkgewogICAgICAg
ICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChyZW1haW5pbmcg
PCBtYXhUb2tlbkxlbmd0aCkgewogICAgICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9
IG1fdm0tPmtleXdvcmRzLT5nZXRLZXl3b3JkKCppZGVudCk7CkBAIC04MTQsNiArODUxLDEwIEBA
IHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNU
b2tlblR5cGUgTGV4ZXI8VUNoYXI+OjpwCiAgICAgICAgICAgICByZXR1cm4ga2V5d29yZCA9PSBS
RVNFUlZFRF9JRl9TVFJJQ1QgJiYgIXN0cmljdE1vZGUgPyBJREVOVCA6IGtleXdvcmQ7CiAgICAg
ICAgIH0KICAgICB9CisgICAgCisgICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gbV9jdXJyZW50ID09
ICdAJyAmJiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUp
CisgICAgICAgIHNoaWZ0KCk7CiAKICAgICBjb25zdCBVQ2hhciogaWRlbnRpZmllclN0YXJ0ID0g
Y3VycmVudFNvdXJjZVB0cigpOwogICAgIGludCBpZGVudGlmaWVyTGluZVN0YXJ0ID0gY3VycmVu
dExpbmVTdGFydE9mZnNldCgpOwpAQCAtODI2LDYgKzg2Nyw3IEBAIHRlbXBsYXRlIDxib29sIHNo
b3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNo
YXI+OjpwCiAgICAgfQogICAgIAogICAgIGlmIChVTkxJS0VMWShtX2N1cnJlbnQgPT0gJ1xcJykp
IHsKKyAgICAgICAgQVNTRVJUKCFpc1ByaXZhdGVOYW1lKTsKICAgICAgICAgc2V0T2Zmc2V0RnJv
bVNvdXJjZVB0cihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMaW5lU3RhcnQpOwogICAgICAg
ICByZXR1cm4gcGFyc2VJZGVudGlmaWVyU2xvd0Nhc2U8c2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4o
dG9rZW5EYXRhLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKTsKICAgICB9CkBAIC04MzcsMTggKzg3
OSwyOSBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5M
SU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogCiAgICAgY29uc3QgSWRlbnRpZmllciog
aWRlbnQgPSAwOwogICAgIAotICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyKSB7CisgICAg
aWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIgfHwgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7
CiAgICAgICAgIGludCBpZGVudGlmaWVyTGVuZ3RoID0gY3VycmVudFNvdXJjZVB0cigpIC0gaWRl
bnRpZmllclN0YXJ0OwogICAgICAgICBpZiAoaXNBbGw4Qml0KQogICAgICAgICAgICAgaWRlbnQg
PSBtYWtlSWRlbnRpZmllckxDaGFyRnJvbVVDaGFyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmll
ckxlbmd0aCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGlkZW50ID0gbWFrZUlkZW50aWZp
ZXIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVuZ3RoKTsKLSAgICAgICAgCisgICAgICAg
IGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKKyAgICAgICAgICAgIGlmICghaXNTYWZl
SWRlbnRpZmllcigqbV92bSwgaWRlbnQpICYmICFpc1ByaXZhdGVOYW1lKSB7CisgICAgICAgICAg
ICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJUaGUgdXNlIG9mICciLCBpZGVu
dC0+c3RyaW5nKCksICInIGlzIGRpc2FsbG93ZWQgaW4gYnVpbHRpbiBmdW5jdGlvbnMuIik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgICAgICAgICAgaWRlbnQgPSBtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5nZXRQcml2YXRlTmFtZSgqaWRlbnQpOworICAgICAgICAgICAgZWxzZSBpZiAo
KmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQpCisgICAgICAg
ICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmlu
ZWRLZXl3b3JkUHJpdmF0ZU5hbWU7CisgICAgICAgICAgICBpZiAoIWlkZW50KQorICAgICAgICAg
ICAgICAgIHJldHVybiBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzsKKyAgICAgICAgfQog
ICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gaWRlbnQ7CiAgICAgfSBlbHNlCiAgICAgICAgIHRv
a2VuRGF0YS0+aWRlbnQgPSAwOwogICAgIAotICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwg
bWF4VG9rZW5MZW5ndGgpICYmICEobGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25vcmVSZXNlcnZl
ZFdvcmRzKSkpIHsKKyAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3Ro
KSAmJiAhKGxleGVyRmxhZ3MgJiBMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpICYmICFp
c1ByaXZhdGVOYW1lKSB7CiAgICAgICAgIEFTU0VSVChzaG91bGRDcmVhdGVJZGVudGlmaWVyKTsK
ICAgICAgICAgaWYgKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSB7CiAgICAgICAgICAgICBj
b25zdCBIYXNoRW50cnkqIGVudHJ5ID0gbV92bS0+a2V5d29yZHMtPmdldEtleXdvcmQoKmlkZW50
KTsKQEAgLTE2NTgsNiArMTcxMSw3IEBAIGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ6CiAgICAg
ICAgIEFTU0VSVChpc0lkZW50U3RhcnQobV9jdXJyZW50KSk7CiAgICAgICAgIEZBTExUSFJPVUdI
OwogICAgIGNhc2UgQ2hhcmFjdGVyQmFja1NsYXNoOgorICAgICAgICBwYXJzZUlkZW50OgogICAg
ICAgICBpZiAobGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250QnVpbGRLZXl3b3JkcykKICAgICAg
ICAgICAgIHRva2VuID0gcGFyc2VJZGVudGlmaWVyPGZhbHNlPih0b2tlbkRhdGEsIGxleGVyRmxh
Z3MsIHN0cmljdE1vZGUpOwogICAgICAgICBlbHNlCkBAIC0xNjcwLDYgKzE3MjQsMTEgQEAgaW5O
dW1iZXJBZnRlckRlY2ltYWxQb2ludDoKICAgICAgICAgbV90ZXJtaW5hdG9yID0gdHJ1ZTsKICAg
ICAgICAgbV9saW5lU3RhcnQgPSBtX2NvZGU7CiAgICAgICAgIGdvdG8gc3RhcnQ7CisgICAgY2Fz
ZSBDaGFyYWN0ZXJQcml2YXRlSWRlbnRpZmllclN0YXJ0OgorICAgICAgICBpZiAobV9wYXJzaW5n
QnVpbHRpbkZ1bmN0aW9uKQorICAgICAgICAgICAgZ290byBwYXJzZUlkZW50OworCisgICAgICAg
IEZBTExUSFJPVUdIOwogICAgIGNhc2UgQ2hhcmFjdGVySW52YWxpZDoKICAgICAgICAgbV9sZXhF
cnJvck1lc3NhZ2UgPSBpbnZhbGlkQ2hhcmFjdGVyTWVzc2FnZSgpOwogICAgICAgICB0b2tlbiA9
IEVSUk9SVE9LOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCmluZGV4IDI4YzYxYmEx
OThkMmMxNWE0OWJiMTg1MmVkMzBiZWZlYjg5MDQwMDguLmI4ODczZTk5NTAyODY0NGJmOGNiYjNk
NGMyZGE1NjJlOTNlMGU4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTGV4ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKQEAg
LTcyLDcgKzcyLDcgQEAgY2xhc3MgTGV4ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogCiBwdWJsaWM6Ci0gICAgTGV4ZXIoVk0qKTsKKyAgICBMZXhlcihWTSosIEpTUGFyc2VyU3Ry
aWN0bmVzcyk7CiAgICAgfkxleGVyKCk7CiAKICAgICAvLyBDaGFyYWN0ZXIgbWFuaXB1bGF0aW9u
IGZ1bmN0aW9ucy4KQEAgLTIzOCw2ICsyMzgsNyBAQCBwcml2YXRlOgogICAgIElkZW50aWZpZXJB
cmVuYSogbV9hcmVuYTsKIAogICAgIFZNKiBtX3ZtOworICAgIGJvb2wgbV9wYXJzaW5nQnVpbHRp
bkZ1bmN0aW9uOwogfTsKIAogdGVtcGxhdGUgPD4KQEAgLTMzNSw2ICszMzYsMTIgQEAgQUxXQVlT
X0lOTElORSBjb25zdCBJZGVudGlmaWVyKiBMZXhlcjxUPjo6bWFrZUxDaGFySWRlbnRpZmllcihj
b25zdCBVQ2hhciogY2hhcmEKICAgICByZXR1cm4gJm1fYXJlbmEtPm1ha2VJZGVudGlmaWVyTENo
YXJGcm9tVUNoYXIobV92bSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKIH0KIAorI2lmIEFTU0VSVF9E
SVNBQkxFRAorQUxXQVlTX0lOTElORSBib29sIGlzU2FmZUlkZW50aWZpZXIoVk0mLCBjb25zdCBJ
ZGVudGlmaWVyKikgeyByZXR1cm4gdHJ1ZTsgfQorI2Vsc2UKK2Jvb2wgaXNTYWZlSWRlbnRpZmll
cihWTSYsIGNvbnN0IElkZW50aWZpZXIqKTsKKyNlbmRpZgorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KIEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZp
ZXIoSlNUb2tlbiogdG9rZW5SZWNvcmQsIHVuc2lnbmVkIGxleGVyRmxhZ3MsIGJvb2wgc3RyaWN0
TW9kZSkKIHsKQEAgLTM3MCwxMCArMzc3LDE1IEBAIEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUg
TGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tlbiogdG9rZW5SZWNvcmQsIHVuCiAg
ICAgQVNTRVJUKGN1cnJlbnRPZmZzZXQoKSA+PSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCkpOwog
CiAgICAgLy8gQ3JlYXRlIHRoZSBpZGVudGlmaWVyIGlmIG5lZWRlZAotICAgIGlmIChsZXhlckZs
YWdzICYgTGV4ZXhGbGFnc0RvbnRCdWlsZEtleXdvcmRzKQorICAgIGlmIChsZXhlckZsYWdzICYg
TGV4ZXhGbGFnc0RvbnRCdWlsZEtleXdvcmRzCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAg
ICAmJiAhbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uCisjZW5kaWYKKyAgICAgICAgKQogICAgICAg
ICB0b2tlbkRhdGEtPmlkZW50ID0gMDsKICAgICBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRl
bnQgPSBtYWtlTENoYXJJZGVudGlmaWVyKHN0YXJ0LCBwdHIgLSBzdGFydCk7CisKICAgICB0b2tl
bkxvY2F0aW9uLT5saW5lID0gbV9saW5lTnVtYmVyOwogICAgIHRva2VuTG9jYXRpb24tPmxpbmVT
dGFydE9mZnNldCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKICAgICB0b2tlbkxvY2F0aW9u
LT5zdGFydE9mZnNldCA9IG9mZnNldEZyb21Tb3VyY2VQdHIoc3RhcnQpOwpAQCAtMzgxLDYgKzM5
MywxMyBAQCBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhFeHBlY3RJZGVu
dGlmaWVyKEpTVG9rZW4qIHRva2VuUmVjb3JkLCB1bgogICAgIEFTU0VSVCh0b2tlbkxvY2F0aW9u
LT5zdGFydE9mZnNldCA+PSB0b2tlbkxvY2F0aW9uLT5saW5lU3RhcnRPZmZzZXQpOwogICAgIHRv
a2VuUmVjb3JkLT5tX3N0YXJ0UG9zaXRpb24gPSBzdGFydFBvc2l0aW9uOwogICAgIHRva2VuUmVj
b3JkLT5tX2VuZFBvc2l0aW9uID0gY3VycmVudFBvc2l0aW9uKCk7CisjaWYgIUFTU0VSVF9ESVNB
QkxFRAorICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKKyAgICAgICAgaWYgKCFp
c1NhZmVJZGVudGlmaWVyKCptX3ZtLCB0b2tlbkRhdGEtPmlkZW50KSkKKyAgICAgICAgICAgIHJl
dHVybiBFUlJPUlRPSzsKKyAgICB9CisjZW5kaWYKKwogICAgIG1fbGFzdFRva2VuID0gSURFTlQ7
CiAgICAgcmV0dXJuIElERU5UOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmNwcAppbmRleCBmYzljY2Q5ZjZjNTc2YzFhZWY1NDdmMjExZmRkNTk2ZjQyZTA1ODA2Li5kOTUy
YmE2YTk0ZDJmNmI0MTgyMTU1MDA0ZDBhOTcwODQyOWJkNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMTMyLDYgKzEzMiwxMiBAQCBQYXNzUmVmUHRyPFByb2dy
YW1Ob2RlPiBQcm9ncmFtTm9kZTo6Y3JlYXRlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBzdGFydAogICAgIHJldHVybiBub2RlLnJlbGVhc2UoKTsKIH0KIAorCit2b2lkIFByb2dyYW1O
b2RlOjpzZXRDbG9zZWRWYXJpYWJsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4m
JiBjbG9zZWRWYXJpYWJsZXMpCit7CisgICAgbV9jbG9zZWRWYXJpYWJsZXMgPSBzdGQ6Om1vdmUo
Y2xvc2VkVmFyaWFibGVzKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IEV2YWxOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGlubGluZSBFdmFsTm9k
ZTo6RXZhbE5vZGUoVk0qIHZtLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24s
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIGVuZENvbHVtbiwg
U291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3Rh
Y2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IGQ3NzlhMTc4ZDk1NmZmOTlm
ZDBiZWQ1ZDVmNDU0YWEzZTZiNTA4NzkuLjgxNmZmMDAxYWJmMDM3NmM2NDJmMWE5MzhkMGUwYTlm
NTI5Y2E2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTE0MzEsNiAr
MTQzMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG5lZWRzQWN0aXZhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIChoYXNDYXB0dXJlZFZhcmlhYmxlcygpKSB8fCAobV9mZWF0dXJlcyAm
IChFdmFsRmVhdHVyZSB8IFdpdGhGZWF0dXJlIHwgQ2F0Y2hGZWF0dXJlKSk7IH0KICAgICAgICAg
Ym9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuICEhbV9jYXB0dXJlZFZh
cmlhYmxlcy5zaXplKCk7IH0KICAgICAgICAgc2l6ZV90IGNhcHR1cmVkVmFyaWFibGVDb3VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FwdHVyZWRWYXJpYWJsZXMuc2l6ZSgpOyB9CisgICAgICAgIGNv
bnN0IElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9j
YXB0dXJlZFZhcmlhYmxlczsgfQogICAgICAgICBib29sIGNhcHR1cmVzKGNvbnN0IElkZW50aWZp
ZXImIGlkZW50KSB7IHJldHVybiBtX2NhcHR1cmVkVmFyaWFibGVzLmNvbnRhaW5zKGlkZW50Lmlt
cGwoKSk7IH0KIAogICAgICAgICBWYXJTdGFjayYgdmFyU3RhY2soKSB7IHJldHVybiBtX3ZhclN0
YWNrOyB9CkBAIC0xNDQ2LDYgKzE0NDcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3Rh
dGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50KCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBlbWl0
U3RhdGVtZW50c0J5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZGVzdGlu
YXRpb24pOworICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRDbG9zZWRWYXJpYWJsZXMoY29uc3Qg
VmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJikgeyB9CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAg
ICAgIHZvaWQgc2V0U291cmNlKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkgeyBtX3NvdXJjZSA9
IHNvdXJjZTsgfQpAQCAtMTQ3NSwxMSArMTQ3OCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBzdGF0aWMgY29uc3QgYm9vbCBzY29wZUlzRnVuY3Rpb24gPSBmYWxzZTsKIAorICAgICAg
ICB2b2lkIHNldENsb3NlZFZhcmlhYmxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+
PiYmKTsKKyAgICAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mIGNsb3NlZFZh
cmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2xvc2VkVmFyaWFibGVzOyB9CiAgICAgcHJpdmF0
ZToKICAgICAgICAgUHJvZ3JhbU5vZGUoVk0qLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0
LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2ln
bmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sq
LCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51
bUNvbnN0YW50cyk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7Ci0KKyAgICAgICAgVmVjdG9y
PFJlZlB0cjxTdHJpbmdJbXBsPj4gbV9jbG9zZWRWYXJpYWJsZXM7CiAgICAgICAgIHVuc2lnbmVk
IG1fc3RhcnRDb2x1bW47CiAgICAgICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwogICAgIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggMjk3NjY2ZTcyNmU0NWQw
ODNlZjEzNDlkZGZmZGYzN2VmODAwZGY3YS4uNTBiZWM3OWZlMzhhZGY4ZjNhMDRmNmI0NmNiZDJh
NWNiZmNmMjQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAt
MjA0LDggKzIwNCw5IEBAIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIoVk0qIHZtLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uUGFyYW1ldGVycyoKICAgICAsIG1fbGFzdElkZW50
aWZpZXIoMCkKICAgICAsIG1fbGFzdEZ1bmN0aW9uTmFtZShudWxscHRyKQogICAgICwgbV9zb3Vy
Y2VFbGVtZW50cygwKQorICAgICwgbV9wYXJzaW5nQnVpbHRpbihzdHJpY3RuZXNzID09IEpTUGFy
c2VCdWlsdGluKQogewotICAgIG1fbGV4ZXIgPSBhZG9wdFB0cihuZXcgTGV4ZXJUeXBlKHZtKSk7
CisgICAgbV9sZXhlciA9IGFkb3B0UHRyKG5ldyBMZXhlclR5cGUodm0sIHN0cmljdG5lc3MpKTsK
ICAgICBtX2FyZW5hID0gbV92bS0+cGFyc2VyQXJlbmEuZ2V0KCk7CiAgICAgbV9sZXhlci0+c2V0
Q29kZShzb3VyY2UsIG1fYXJlbmEpOwogICAgIG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lID0gc291
cmNlLmZpcnN0TGluZSgpOwpAQCAtMjU2LDYgKzI1Nyw3IEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VJbm5lcigpCiAgICAgSWRlbnRpZmllclNldCBjYXB0dXJlZFZhcmlhYmxlczsK
ICAgICBib29sIG1vZGlmaWVkUGFyYW1ldGVyID0gZmFsc2U7CiAgICAgc2NvcGUtPmdldENhcHR1
cmVkVmFyaWFibGVzKGNhcHR1cmVkVmFyaWFibGVzLCBtb2RpZmllZFBhcmFtZXRlcik7CisgICAg
CiAgICAgQ29kZUZlYXR1cmVzIGZlYXR1cmVzID0gY29udGV4dC5mZWF0dXJlcygpOwogICAgIGlm
IChzY29wZS0+c3RyaWN0TW9kZSgpKQogICAgICAgICBmZWF0dXJlcyB8PSBTdHJpY3RNb2RlRmVh
dHVyZTsKQEAgLTI2MywyMSArMjY1LDM2IEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VJbm5lcigpCiAgICAgICAgIGZlYXR1cmVzIHw9IFNoYWRvd3NBcmd1bWVudHNGZWF0dXJlOwog
ICAgIGlmIChtb2RpZmllZFBhcmFtZXRlcikKICAgICAgICAgZmVhdHVyZXMgfD0gTW9kaWZpZWRQ
YXJhbWV0ZXJGZWF0dXJlOwotCisgICAgCisgICAgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4g
Y2xvc2VkVmFyaWFibGVzOworICAgIGlmIChtX3BhcnNpbmdCdWlsdGluKSB7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCFjYXB0dXJlZFZhcmlhYmxlcy5zaXplKCkpOworICAgICAgICBJZGVudGlm
aWVyU2V0IHVzZWRWYXJpYWJsZXM7CisgICAgICAgIHNjb3BlLT5nZXRVc2VkVmFyaWFibGVzKHVz
ZWRWYXJpYWJsZXMpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHZhcmlhYmxlIDogdXNlZFZh
cmlhYmxlcykgeworICAgICAgICAgICAgaWYgKHNjb3BlLT5oYXNEZWNsYXJlZFZhcmlhYmxlKElk
ZW50aWZpZXIobV92bSwgdmFyaWFibGUuZ2V0KCkpKSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHNjb3BlLT5oYXNEZWNsYXJlZFBhcmFt
ZXRlcihJZGVudGlmaWVyKG1fdm0sIHZhcmlhYmxlLmdldCgpKSkpCisgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICBjbG9zZWRWYXJpYWJsZXMuYXBwZW5kKHZhcmlhYmxlKTsK
KyAgICAgICAgfQorICAgIH0KICAgICBkaWRGaW5pc2hQYXJzaW5nKHNvdXJjZUVsZW1lbnRzLCBj
b250ZXh0LnZhckRlY2xhcmF0aW9ucygpLCBjb250ZXh0LmZ1bmNEZWNsYXJhdGlvbnMoKSwgZmVh
dHVyZXMsCi0gICAgICAgIGNvbnRleHQubnVtQ29uc3RhbnRzKCksIGNhcHR1cmVkVmFyaWFibGVz
KTsKKyAgICAgICAgY29udGV4dC5udW1Db25zdGFudHMoKSwgY2FwdHVyZWRWYXJpYWJsZXMsIHN0
ZDo6bW92ZShjbG9zZWRWYXJpYWJsZXMpKTsKIAogICAgIHJldHVybiBwYXJzZUVycm9yOwogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdm9pZCBQYXJzZXI8TGV4ZXJUeXBlPjo6
ZGlkRmluaXNoUGFyc2luZyhTb3VyY2VFbGVtZW50cyogc291cmNlRWxlbWVudHMsIFBhcnNlckFy
ZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+KiB2YXJTdGFjaywgCi0gICAgUGFy
c2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiogZnVuY1N0YWNr
LCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMsIElkZW50aWZpZXJTZXQm
IGNhcHR1cmVkVmFycykKKyAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1
bmN0aW9uU3RhY2s+KiBmdW5jU3RhY2ssIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNv
bnN0YW50cywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJzLCBjb25zdCBWZWN0b3I8UmVmUHRy
PFN0cmluZ0ltcGw+PiYmIGNsb3NlZFZhcmlhYmxlcykKIHsKICAgICBtX3NvdXJjZUVsZW1lbnRz
ID0gc291cmNlRWxlbWVudHM7CiAgICAgbV92YXJEZWNsYXJhdGlvbnMgPSB2YXJTdGFjazsKICAg
ICBtX2Z1bmNEZWNsYXJhdGlvbnMgPSBmdW5jU3RhY2s7CiAgICAgbV9jYXB0dXJlZFZhcmlhYmxl
cy5zd2FwKGNhcHR1cmVkVmFycyk7CisgICAgbV9jbG9zZWRWYXJpYWJsZXMgPSBjbG9zZWRWYXJp
YWJsZXM7CiAgICAgbV9mZWF0dXJlcyA9IGZlYXR1cmVzOwogICAgIG1fbnVtQ29uc3RhbnRzID0g
bnVtQ29uc3RhbnRzOwogfQpAQCAtMjM0Niw2ICsyMzYzLDEwIEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBMZXhlclR5cGU+IHZvaWQgUGFyc2VyPExleGVyVHlwZT46OnByaW50VW5leHBlY3RlZFRva2Vu
VGV4dChXCiAgICAgY2FzZSBSRVNFUlZFRDoKICAgICAgICAgb3V0LnByaW50KCJVbmV4cGVjdGVk
IHVzZSBvZiByZXNlcnZlZCB3b3JkICciLCBnZXRUb2tlbigpLCAiJyIpOwogICAgICAgICByZXR1
cm47CisKKyAgICBjYXNlIElOVkFMSURfUFJJVkFURV9OQU1FX0VSUk9SVE9LOgorICAgICAgICBv
dXQucHJpbnQoIkludmFsaWQgcHJpdmF0ZSBuYW1lICciLCBnZXRUb2tlbigpLCAiJyIpOworICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAKICAgICBjYXNlIElERU5UOgogICAgICAgICBvdXQu
cHJpbnQoIlVuZXhwZWN0ZWQgaWRlbnRpZmllciAnIiwgZ2V0VG9rZW4oKSwgIiciKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGI2OThlZjkzNjhjYjhjOGYxOTdjY2Qw
MDBhY2FhNmRmYjExYmEyNDQuLjkwMzM4NTBjOGM5N2Y1N2UyMWRhNWVlZGIwMmQwNDRmNGM4OTc4
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjMsNiArMjMsNyBA
QAogI2lmbmRlZiBQYXJzZXJfaAogI2RlZmluZSBQYXJzZXJfaAogCisjaW5jbHVkZSAiQ29tbW9u
SWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlv
bkhlbHBlcnMuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCkBAIC0yNTksNiArMjYwLDEwIEBA
IHN0cnVjdCBTY29wZSB7CiAgICAgICAgIHJldHVybiBpc1ZhbGlkU3RyaWN0TW9kZSA/IEJpbmRp
bmdTdWNjZWVkZWQgOiBTdHJpY3RCaW5kaW5nRmFpbGVkOwogICAgIH0KIAorICAgIHZvaWQgZ2V0
VXNlZFZhcmlhYmxlcyhJZGVudGlmaWVyU2V0JiB1c2VkVmFyaWFibGVzKQorICAgIHsKKyAgICAg
ICAgdXNlZFZhcmlhYmxlcy5zd2FwKG1fdXNlZFZhcmlhYmxlcyk7CisgICAgfQogCiAgICAgdm9p
ZCB1c2VWYXJpYWJsZShjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgYm9vbCBpc0V2YWwpCiAgICAg
ewpAQCAtNDE0LDYgKzQxOSw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+
IHBhcnNlKFBhcnNlckVycm9yJik7CiAKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9y
ZUxhc3ROZXdsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+cG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZSgpOyB9CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJiBjbG9z
ZWRWYXJpYWJsZXMoKSB7IHJldHVybiBzdGQ6Om1vdmUobV9jbG9zZWRWYXJpYWJsZXMpOyB9CiAK
IHByaXZhdGU6CiAgICAgc3RydWN0IEFsbG93SW5PdmVycmlkZSB7CkBAIC01NDAsNyArNTQ2LDcg
QEAgcHJpdmF0ZToKICAgICBTdHJpbmcgcGFyc2VJbm5lcigpOwogCiAgICAgdm9pZCBkaWRGaW5p
c2hQYXJzaW5nKFNvdXJjZUVsZW1lbnRzKiwgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3Rh
Y2tzOjpWYXJTdGFjaz4qLCAKLSAgICAgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3Rh
Y2tzOjpGdW5jdGlvblN0YWNrPiosIENvZGVGZWF0dXJlcywgaW50LCBJZGVudGlmaWVyU2V0Jik7
CisgICAgICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFj
az4qLCBDb2RlRmVhdHVyZXMsIGludCwgSWRlbnRpZmllclNldCYsIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8U3RyaW5nSW1wbD4+JiYpOwogCiAgICAgLy8gVXNlZCB0byBkZXRlcm1pbmUgdHlwZSBvZiBl
cnJvciB0byByZXBvcnQuCiAgICAgYm9vbCBpc0Z1bmN0aW9uQm9keU5vZGUoU2NvcGVOb2RlKikg
eyByZXR1cm4gZmFsc2U7IH0KQEAgLTg0MCw5ICs4NDYsMTEgQEAgcHJpdmF0ZToKICAgICBjb25z
dCBJZGVudGlmaWVyKiBtX2xhc3RGdW5jdGlvbk5hbWU7CiAgICAgUmVmUHRyPFNvdXJjZVByb3Zp
ZGVyQ2FjaGU+IG1fZnVuY3Rpb25DYWNoZTsKICAgICBTb3VyY2VFbGVtZW50cyogbV9zb3VyY2VF
bGVtZW50czsKKyAgICBib29sIG1fcGFyc2luZ0J1aWx0aW47CiAgICAgUGFyc2VyQXJlbmFEYXRh
PERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjaz4qIG1fdmFyRGVjbGFyYXRpb25zOwogICAgIFBh
cnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qIG1fZnVuY0Rl
Y2xhcmF0aW9uczsKICAgICBJZGVudGlmaWVyU2V0IG1fY2FwdHVyZWRWYXJpYWJsZXM7CisgICAg
VmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4gbV9jbG9zZWRWYXJpYWJsZXM7CiAgICAgQ29kZUZl
YXR1cmVzIG1fZmVhdHVyZXM7CiAgICAgaW50IG1fbnVtQ29uc3RhbnRzOwogICAgIApAQCAtOTU3
LDYgKzk2NSwxMCBAQCBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IHBhcnNlKFZNKiB2bSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcgogICAgICAgICBSZWZQdHI8UGFy
c2VkTm9kZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yKTsKICAgICAg
ICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25C
ZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7Cisg
ICAgICAgIGlmIChzdHJpY3RuZXNzID09IEpTUGFyc2VCdWlsdGluKSB7CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChyZXN1bHQpOworICAgICAgICAgICAgcmVzdWx0LT5zZXRDbG9zZWRWYXJp
YWJsZXMoc3RkOjptb3ZlKHBhcnNlci5jbG9zZWRWYXJpYWJsZXMoKSkpOworICAgICAgICB9CiAg
ICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogICAgIH0KICAgICBQYXJzZXI8TGV4ZXI8
VUNoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgcGFyYW1ldGVycywgbmFtZSwgc3RyaWN0bmVzcywg
cGFyc2VyTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlck1vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgK
aW5kZXggNGU5YTE3Y2QyMWNhMzQxNDZiYmQ0ODE1NmEzNzJjZDQwNGRlZjYwYy4uZjdhNzViZjdj
Mzc4NTdlNDRiNmQ1ZDcxZjQ1MjliYjFhYzFjZjVmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyTW9kZXMuaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAotZW51bSBKU1BhcnNlclN0cmljdG5lc3MgeyBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlU3Ry
aWN0IH07CitlbnVtIEpTUGFyc2VyU3RyaWN0bmVzcyB7IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VC
dWlsdGluLCBKU1BhcnNlU3RyaWN0IH07CiBlbnVtIEpTUGFyc2VyTW9kZSB7IEpTUGFyc2VQcm9n
cmFtQ29kZSwgSlNQYXJzZUZ1bmN0aW9uQ29kZSB9OwogCiBlbnVtIFByb2ZpbGVyTW9kZSB7IFBy
b2ZpbGVyT2ZmLCBQcm9maWxlck9uIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlclRva2Vucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJUb2tlbnMuaAppbmRleCA4MmEyNjYzOWE3OTIyMGEwODQ0NTZiNDhmMzI4NTJkMTQzYzcz
OWQwLi44Yzg3YWQ5ZmFkYmRjNGFmMzlhYzk5ZGIyZDg0NDVlMTNmZmZkMzVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKQEAgLTE0OSw2ICsxNDksNyBA
QCBlbnVtIEpTVG9rZW5UeXBlIHsKICAgICBJTlZBTElEX05VTUVSSUNfTElURVJBTF9FUlJPUlRP
SyA9IDcgfCBFcnJvclRva2VuRmxhZywKICAgICBVTlRFUk1JTkFURURfU1RSSU5HX0xJVEVSQUxf
RVJST1JUT0sgPSA4IHwgRXJyb3JUb2tlbkZsYWcgfCBVbnRlcm1pbmF0ZWRFcnJvclRva2VuRmxh
ZywKICAgICBJTlZBTElEX1NUUklOR19MSVRFUkFMX0VSUk9SVE9LID0gOSB8IEVycm9yVG9rZW5G
bGFnLAorICAgIElOVkFMSURfUFJJVkFURV9OQU1FX0VSUk9SVE9LID0gMTAgfCBFcnJvclRva2Vu
RmxhZwogfTsKIAogc3RydWN0IEpTVGV4dFBvc2l0aW9uIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJnTGlzdC5jcHAKaW5kZXggZTEzMTA0ZGY1OTIyZDA3NzYyNTdkMDVjYjVlODcw
NTM3ZDIxNDI4YS4uMjRjMDZiYmIxYzJjMzRiOWRhNWVmODRiMjU1Yzk5MDBkYWY4NTkxMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5jcHAKQEAgLTIyLDcgKzIyLDcg
QEAKICNpbmNsdWRlICJBcmdMaXN0LmgiCiAKICNpbmNsdWRlICJIZWFwUm9vdFZpc2l0b3IuaCIK
LSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
ICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKaW5kZXggOGZkMTk1Y2I5YjVm
N2VmNWJmM2QyZmQ5MzM0MmIwMTAyNzI1ZmFmMS4uNGZiYWM2ODg2MzQ4NjE3MTY0OWEzMzRkNjFi
NWRjYzM4MTRkZDU1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVu
dHMuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiQXJndW1lbnRzLmgiCiAKICNpbmNs
dWRlICJDYWxsRnJhbWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIK
ICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0FyZ3VtZW50c0l0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bcmd1bWVudHMuaAppbmRleCAxOGYzODkxNzEzODUyMzYyYzdhNzVhMzA1M2I0NjMxNDE3YmVi
ODFiLi5mMTZmZDNkZTQwNTU5NzBiYTlkOWM2ZjBhZTYzMThmMjIwNGI2NTRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaApAQCAtMjUsNiArMjUsNyBAQAogI2Rl
ZmluZSBBcmd1bWVudHNfaAogCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgorI2luY2x1ZGUgIkNv
bW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAi
SlNEZXN0cnVjdGlibGVPYmplY3QuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvckNvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJh
dG9yQ29uc3RydWN0b3IuY3BwCmluZGV4IGFmYjU5NzkwY2IwMDk5ODliYjdiNDI4NjNlOTE4MjMz
NTc2YjhhYWMuLjkxY2FjZGZhODU3ZWI2OTM3NmEzMDgxYThjNzAyYWM5YzIxN2NhN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yQ29u
c3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50
c0l0ZXJhdG9yQ29uc3RydWN0b3IuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQXJn
dW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5oIgogCiAjaW5jbHVkZSAiQXJndW1lbnRzSXRlcmF0
b3JQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUg
IkpTQXJndW1lbnRzSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcAppbmRleCBk
ZDA4OTRmMTRhMDIxZDVmMTI2NThhY2IwMWU3MjFmY2Q2ZDM0OGNjLi41YjRhZTg3MTZiMDU1M2Jl
NDYyMzk1NWU5OWUxYjQzZWJmMThmZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCkBAIC0y
Niw3ICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRzSXRl
cmF0b3JQcm90b3R5cGUuaCIKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5j
bHVkZSAiSlNBcmd1bWVudHNJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVz
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggMjdhYzZkNDhhNzFmNzk1NTAyYTEwY2VhNjQ3
ODY1NDEzNWE0NjNhMC4uNmRjN2JlNTY5NjlkZTY3ZjYyMTA3YmIzYTUxYTMwOGZhM2JhNzZiZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTQXJyYXlJ
dGVyYXRvci5oIgogI2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5oIgorI2luY2x1ZGUgIkpTU3Ry
aW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nSm9pbmVyLmgiCiAjaW5jbHVkZSAiTG9v
a3VwLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCkBAIC01Niw3ICs1Nyw2IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU2xpY2UoRXhl
Y1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3Rv
RnVuY1NvcnQoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvRnVuY1NwbGljZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVW5TaGlmdChFeGVjU3RhdGUqKTsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRXZlcnkoRXhlY1N0
YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y0ZvckVhY2goRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvRnVuY1NvbWUoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0luZGV4T2YoRXhlY1N0YXRlKik7CkBAIC05NTQs
NjkgKzk1NCw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNN
YXAoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0QXJy
YXkpOwogfQogCi0vLyBEb2N1bWVudGF0aW9uIGZvciB0aGVzZSB0aHJlZSBpcyBhdmFpbGFibGUg
YXQ6Ci0vLyBodHRwOi8vZGV2ZWxvcGVyLXRlc3QubW96aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0ph
dmFTY3JpcHRfMS41X1JlZmVyZW5jZTpPYmplY3RzOkFycmF5OmV2ZXJ5Ci0vLyBodHRwOi8vZGV2
ZWxvcGVyLXRlc3QubW96aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0phdmFTY3JpcHRfMS41X1JlZmVy
ZW5jZTpPYmplY3RzOkFycmF5OmZvckVhY2gKLS8vIGh0dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3pp
bGxhLm9yZy9lbi9kb2NzL0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6QXJy
YXk6c29tZQotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRXZl
cnkoRXhlY1N0YXRlKiBleGVjKQotewotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhlYy0+aG9z
dFRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKLSAg
ICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzT2JqLT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1l
cygpLmxlbmd0aCkudG9VSW50MzIoZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCi0gICAg
SlNWYWx1ZSBmdW5jdGlvbiA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIENhbGxEYXRhIGNhbGxE
YXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxE
YXRhKTsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLQotICAgIEpTVmFsdWUgYXBwbHlUaGlzID0gZXhlYy0+
YXJndW1lbnQoMSk7Ci0KLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbih0cnVlKTsKLQot
ICAgIHVuc2lnbmVkIGsgPSAwOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUpTICYmIGlz
SlNBcnJheSh0aGlzT2JqKSkgewotICAgICAgICBKU0Z1bmN0aW9uKiBmID0ganNDYXN0PEpTRnVu
Y3Rpb24qPihmdW5jdGlvbik7Ci0gICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh0aGlz
T2JqKTsKLSAgICAgICAgQ2FjaGVkQ2FsbCBjYWNoZWRDYWxsKGV4ZWMsIGYsIDMpOwotICAgICAg
ICBmb3IgKDsgayA8IGxlbmd0aCAmJiAhZXhlYy0+aGFkRXhjZXB0aW9uKCk7ICsraykgewotICAg
ICAgICAgICAgaWYgKFVOTElLRUxZKCFhcnJheS0+Y2FuR2V0SW5kZXhRdWlja2x5KGspKSkKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkQ2Fs
bC5zZXRUaGlzKGFwcGx5VGhpcyk7Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50
KDAsIGFycmF5LT5nZXRJbmRleFF1aWNrbHkoaykpOwotICAgICAgICAgICAgY2FjaGVkQ2FsbC5z
ZXRBcmd1bWVudCgxLCBqc051bWJlcihrKSk7Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFy
Z3VtZW50KDIsIHRoaXNPYmopOwotICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWNoZWRD
YWxsLmNhbGwoKTsKLSAgICAgICAgICAgIGlmICghcmVzdWx0LnRvQm9vbGVhbihleGVjKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwot
ICAgICAgICB9Ci0gICAgfQotICAgIGZvciAoOyBrIDwgbGVuZ3RoICYmICFleGVjLT5oYWRFeGNl
cHRpb24oKTsgKytrKSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmopOwotICAg
ICAgICBpZiAoIXRoaXNPYmotPmdldFByb3BlcnR5U2xvdChleGVjLCBrLCBzbG90KSkKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGVhY2hBcmd1
bWVudHM7Ci0gICAgICAgIGVhY2hBcmd1bWVudHMuYXBwZW5kKHNsb3QuZ2V0VmFsdWUoZXhlYywg
aykpOwotICAgICAgICBlYWNoQXJndW1lbnRzLmFwcGVuZChqc051bWJlcihrKSk7Ci0gICAgICAg
IGVhY2hBcmd1bWVudHMuYXBwZW5kKHRoaXNPYmopOwotCi0gICAgICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7Ci0KLSAgICAgICAgYm9vbCBwcmVkaWNhdGVSZXN1bHQgPSBjYWxsKGV4ZWMsIGZ1bmN0
aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGFwcGx5VGhpcywgZWFjaEFyZ3VtZW50cykudG9Cb29s
ZWFuKGV4ZWMpOwotICAgICAgICBpZiAoIXByZWRpY2F0ZVJlc3VsdCkgewotICAgICAgICAgICAg
cmVzdWx0ID0ganNCb29sZWFuKGZhbHNlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotfQotCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRm9yRWFjaChFeGVjU3RhdGUq
IGV4ZWMpCiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmogPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCku
dG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggNTEwZTM4M2ZhZTU3NWFhZGE4MTc2
YzA0NDFlZTcyNWI0M2E0YzczMi4uZDMwNDg3N2ZlOWNkZTFjMDkxOWZkNDU5NWY4MTFlY2FiY2U3
NzI3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBA
IC0xNDQsMjQgKzE0NCwyNiBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hl
OjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShWTSYgdgogICAgIEpTVGV4dFBv
c2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmU7CiAgICAgUmVmUHRyPFByb2dyYW1Ob2Rl
PiBwcm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KCZ2bSwgc291cmNlLCAwLCBJZGVudGlmaWVy
KCksIEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VQcm9ncmFtQ29kZSwgZXJyb3IsICZwb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lKTsKICAgICBpZiAoIXByb2dyYW0pIHsKLSAgICAgICAgQVNTRVJUKGVy
cm9yLm1fdHlwZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoZXJyb3IubV90eXBlICE9IFBhcnNlckVycm9yOjpFcnJvck5vbmUpOwogICAgICAgICBt
X3NvdXJjZUNvZGUucmVtb3ZlKGFkZFJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBhbiBpbnB1dCBzdHJpbmcg
dGhhdCB3b3VsZCByZXN1bHQgaW4gYSBzaW5nbGUgYW5vbnltb3VzIGZ1bmN0aW9uIGV4cHJlc3Np
b24uCiAgICAgU3RhdGVtZW50Tm9kZSogZXhwclN0YXRlbWVudCA9IHByb2dyYW0tPnNpbmdsZVN0
YXRlbWVudCgpOwotICAgIEFTU0VSVChleHByU3RhdGVtZW50KTsKLSAgICBBU1NFUlQoZXhwclN0
YXRlbWVudC0+aXNFeHByU3RhdGVtZW50KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0
ZW1lbnQpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVu
dCgpKTsKICAgICBFeHByZXNzaW9uTm9kZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxFeHByU3Rh
dGVtZW50Tm9kZSo+KGV4cHJTdGF0ZW1lbnQpLT5leHByKCk7Ci0gICAgQVNTRVJUKGZ1bmNFeHBy
KTsKKyAgICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwcik7CiAgICAgUkVMRUFTRV9BU1NFUlQoZnVu
Y0V4cHItPmlzRnVuY0V4cHJOb2RlKCkpOwogICAgIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkgPSBz
dGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihmdW5jRXhwciktPmJvZHkoKTsKKyAgICBSRUxFQVNF
X0FTU0VSVCghcHJvZ3JhbS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CisgICAgCiAgICAgYm9k
eS0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7Ci0gICAgQVNTRVJU
KGJvZHkpOwotICAgIEFTU0VSVChib2R5LT5pZGVudCgpLmlzTnVsbCgpKTsKKyAgICBSRUxFQVNF
X0FTU0VSVChib2R5KTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5LT5pZGVudCgpLmlzTnVsbCgp
KTsKIAotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUg
PSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBib2R5LCB0
cnVlKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxl
ID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgYm9keSwg
dHJ1ZSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbik7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5t
X25hbWVWYWx1ZS5zZXQodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwganNTdHJpbmcoJnZtLCBuYW1l
LnN0cmluZygpKSk7CiAKICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gU291cmNlQ29k
ZVZhbHVlKHZtLCBmdW5jdGlvbkV4ZWN1dGFibGUsIG1fc291cmNlQ29kZS5hZ2UoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAK
aW5kZXggM2Y1YzY0NWMwOThkNTI3ZmMwYzcyNTllOTQ0N2VmYmU4ODY4YTI5Yy4uMmZjMmI3Mjdh
ZmNlZWUxZWMyYzYyNWRlNTY3NWIzYmUxY2Y2MGQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcApAQCAtMjcsNyArMjcsMTAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICNkZWZpbmUgSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKG5h
bWUpICwgbmFtZSh2bSwgI25hbWUpCiAjZGVmaW5lIElOSVRJQUxJWkVfS0VZV09SRChuYW1lKSAs
IG5hbWUjI0tleXdvcmQodm0sICNuYW1lKQotI2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFN
RShuYW1lKSAsIG5hbWUjI1ByaXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb20oUHJpdmF0ZU5hbWUo
KSkpCisjZGVmaW5lIElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKG5hbWUpIFwKKyAgICAsIG5hbWUj
I1ByaXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb20oUHJpdmF0ZU5hbWUoKSkpIFwKKyAgICAsIG1f
IyNuYW1lIyNQdWJsaWNTdHJpbmdQYWlyKG5hbWUsIG5hbWUjI1ByaXZhdGVOYW1lKSBcCisKIAog
Q29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZNKiB2bSkKICAgICA6IG51bGxJ
ZGVudGlmaWVyKCkKQEAgLTM4LDggKzQxLDI2IEBAIENvbW1vbklkZW50aWZpZXJzOjpDb21tb25J
ZGVudGlmaWVycyhWTSogdm0pCiAgICAgLCBoYXNOZXh0SWRlbnRpZmllcih2bSwgImhhc05leHQi
KQogICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKElOSVRJQUxJWkVfS0VZ
V09SRCkKICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklU
SUFMSVpFX1BST1BFUlRZX05BTUUpCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9O
QU1FKElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRSkKICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURF
TlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKQogewog
fQogCitjb25zdCBJZGVudGlmaWVyKiBDb21tb25JZGVudGlmaWVyczo6Z2V0UHJpdmF0ZU5hbWUo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0Cit7CisjZGVmaW5lIFJFVFVSTl9JRl9QUklW
QVRFX05BTUVfTUFUQ0hFUyhuYW1lKSBpZiAobV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuZmly
c3QgPT0gaWRlbnQpIHJldHVybiAmbV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuc2Vjb25kOwor
ICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoUkVU
VVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKQorI3VuZGVmIFJFVFVSTl9JRl9QUklWQVRFX05B
TUVfTUFUQ0hFUworICAgIHJldHVybiAwOworfQorCitJZGVudGlmaWVyIENvbW1vbklkZW50aWZp
ZXJzOjpnZXRQdWJsaWNOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAoreworI2Rl
ZmluZSBSRVRVUk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMobmFtZSkgaWYgKG1fIyNuYW1lIyNQ
dWJsaWNTdHJpbmdQYWlyLnNlY29uZCA9PSBpZGVudCkgcmV0dXJuIG1fIyNuYW1lIyNQdWJsaWNT
dHJpbmdQYWlyLmZpcnN0OworICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNI
X1BST1BFUlRZX05BTUUoUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKQorI3VuZGVmIFJF
VFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hFUworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIGVtcHR5SWRlbnRpZmllcjsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaAppbmRleCBlOGY5ZWQ4MmJjNzk0NjIwMzgyNjZiMzAyMDc4MjI0N2IxZmEyN2EzLi45MjRk
MzZhYzY5MTM1MDM1N2NiMzgyYjFlZjNiNDBhMGEwOGMwYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTIyLDYgKzIyLDcg
QEAKICNkZWZpbmUgQ29tbW9uSWRlbnRpZmllcnNfaAogCiAjaW5jbHVkZSAiSWRlbnRpZmllci5o
IgorI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CiAKIC8vIE1hcmtlZEFyZ3VtZW50QnVmZmVyIG9mIHByb3BlcnR5IG5hbWVzLCBwYXNzZWQgdG8g
YSBtYWNybyBzbyB3ZSBjYW4gZG8gc2V0IHRoZW0gdXAgdmFyaW91cwpAQCAtMTMzLDggKzEzNCwx
MCBAQAogICAgIG1hY3JvKG9zckV4aXRzKSBcCiAgICAgbWFjcm8ocGFyc2UpIFwKICAgICBtYWNy
byhwcm9maWxlZEJ5dGVjb2RlcykgXAorICAgIG1hY3JvKHByb21pc2UpIFwKICAgICBtYWNybyhw
cm9wZXJ0eUlzRW51bWVyYWJsZSkgXAogICAgIG1hY3JvKHByb3RvdHlwZSkgXAorICAgIG1hY3Jv
KHJlc29sdmUpIFwKICAgICBtYWNybyhzZXQpIFwKICAgICBtYWNybyhzaXplKSBcCiAgICAgbWFj
cm8oc2xpY2UpIFwKQEAgLTE1NSw3ICsxNTgsMTQgQEAKICAgICBtYWNybyh2YWx1ZXMpIFwKICAg
ICBtYWNybyh2YWx1ZU9mKSBcCiAgICAgbWFjcm8od2luZG93KSBcCi0gICAgbWFjcm8od3JpdGFi
bGUpCisgICAgbWFjcm8od3JpdGFibGUpIFwKKyAgICBtYWNybyhpdGVyYXRvcikgXAorICAgIG1h
Y3JvKGl0ZXJhdG9yTmV4dCkgXAorICAgIG1hY3JvKHJlamVjdCkgXAorICAgIG1hY3JvKGZ1bGZp
bGxtZW50SGFuZGxlcikgXAorICAgIG1hY3JvKHJlamVjdGlvbkhhbmRsZXIpIFwKKyAgICBtYWNy
byhkZWZlcnJlZCkgXAorICAgIG1hY3JvKGNvdW50ZG93bkhvbGRlcikgXAogCiAjZGVmaW5lIEpT
Q19DT01NT05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKG1hY3JvKSBcCiAgICAgbWFjcm8oYnJl
YWspIFwKQEAgLTIwMyw3ICsyMTMsNyBAQAogICAgIG1hY3JvKHZvaWQpIFwKICAgICBtYWNybyh3
aGlsZSkgXAogICAgIG1hY3JvKHdpdGgpIFwKLSAgICBtYWNybyh5aWVsZCkKKyAgICBtYWNybyh5
aWVsZCkgXAogCiAjZGVmaW5lIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BS
T1BFUlRZX05BTUUobWFjcm8pIFwKICAgICBtYWNybyhpdGVyYXRvcikgXApAQCAtMjE2LDcgKzIy
NiwxMiBAQAogICAgIG1hY3JvKGluZGV4KSBcCiAgICAgbWFjcm8odmFsdWVzKSBcCiAgICAgbWFj
cm8oZGVmZXJyZWQpIFwKLSAgICBtYWNybyhjb3VudGRvd25Ib2xkZXIpCisgICAgbWFjcm8oY291
bnRkb3duSG9sZGVyKSBcCisgICAgbWFjcm8oT2JqZWN0KSBcCisgICAgbWFjcm8oVHlwZUVycm9y
KSBcCisgICAgbWFjcm8odW5kZWZpbmVkS2V5d29yZCkgXAorICAgIG1hY3JvKGNhbGwpIFwKKyAg
ICBtYWNybyhhcHBseSkKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTI0MCwxMSArMjU1LDE1IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFS
RV9QUk9QRVJUWV9OQU1FX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWU7CiAgICAg
ICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKEpTQ19JREVOVElG
SUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwpCisgICAgICAgIEpTQ19GT1JFQUNIX0JV
SUxUSU5fRlVOQ1RJT05fTkFNRShKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVf
R0xPQkFMKQogI3VuZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9C
QUwKIAotI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFN
RV9HTE9CQUwobmFtZSkgY29uc3QgSWRlbnRpZmllciBuYW1lIyNQcml2YXRlTmFtZTsKKyNkZWZp
bmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMKG5h
bWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSMjUHJpdmF0ZU5hbWU7IGNvbnN0IHN0ZDo6cGFpcjxJ
ZGVudGlmaWVyLCBJZGVudGlmaWVyPiBtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpcjsKICAgICAg
ICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShKU0Nf
SURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwpCiAjdW5kZWYg
SlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMCisgICAg
ICAgIAorICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFtZShjb25zdCBJZGVu
dGlmaWVyJikgY29uc3Q7CisgICAgICAgIElkZW50aWZpZXIgZ2V0UHVibGljTmFtZShjb25zdCBJ
ZGVudGlmaWVyJikgY29uc3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCAw
NzU4NzVmYjIzMTZhNTU1NzA1MGE2NjkwY2QwZjk4ODI0ODRmNWYzLi41YWY5MDg3NTRlNzQ3Zjhj
YWUwY2QwNGFmOGQ0OTE1MDA0NjhjMmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRl
ICJKSVQuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5o
IgotI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNOYW1l
U2NvcGUuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRpb25z
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2Vw
dGlvbnMuY3BwCmluZGV4IDU1MzM0YmUyZjk4MGE5OGY3ZmVhNDJhMDViZTBmMjBjMDE5ZmYwZGQu
LjE2ZWJhZDEwZTRlNDJiNmI3ODVlOTc4ZDM4ZTg3MGUzYjVhNmM0OWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2Vw
dGlvbnMuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5j
bHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgorI2luY2x1ZGUg
IkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBDb21tb25TbG93UGF0aHMgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCAwNWUxMWUwYjgw
YTM0MzBhZWFiMjJiMDIyMmEyMTJmNGE4ZTJjNDliLi4zNjRjYzcxNjY2MDhiNTAwN2Q0NzdkODcz
OTE4YTVkNjRiMTY4NjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAtODEsNiArODEsMTEgQEAgSlNPYmplY3QqIGNyZWF0
ZVN0YWNrT3ZlcmZsb3dFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiBKU09i
amVjdCogY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIGlkZW50KQogeworICAgIAorICAgIGlmIChpZGVudC5pbXBsKCktPmlzRW1w
dHlVbmlxdWUoKSkgeworICAgICAgICBTdHJpbmcgbWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBm
aW5kIHByaXZhdGUgdmFyaWFibGU6IEAiLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2V0UHVibGlj
TmFtZShpZGVudCkuc3RyaW5nKCkpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVy
cm9yKGV4ZWMsIG1lc3NhZ2UpOworICAgIH0KICAgICBTdHJpbmcgbWVzc2FnZShtYWtlU3RyaW5n
KCJDYW4ndCBmaW5kIHZhcmlhYmxlOiAiLCBpZGVudC5zdHJpbmcoKSkpOwogICAgIHJldHVybiBj
cmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBtZXNzYWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCAxOTg5NzZiYjNmZTZlNmU5MTE3OTgxMmQx
Y2FmOWI4YmY5YmZkMGJiLi5jZjBlNzUzYTdjNWY1NDQ2N2I2NGQ4ZTJhOWIzZmJhMjcxNTAwMDEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC00ODQs
NyArNDg0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckNvZGUoKTsKIAotICAgIEV4ZWN1
dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8o
bmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSk7IH0K
KyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1
dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwg
ZmFsc2UsIGZhbHNlKTsgfQogCiAgICAgdW5zaWduZWQgbnVtVmFyaWFibGVzKCkgeyByZXR1cm4g
bV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bVZhcmlhYmxlcygpOyB9CiAgICAgdW5zaWduZWQg
bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2st
Pm51bWJlck9mRnVuY3Rpb25EZWNscygpOyB9CkBAIC01NDAsNyArNTQwLDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBjbGVhckNvZGUoKTsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJ
bmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVz
ZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBl
eGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZh
dGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlKTsgfQogCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwpAQCAtNjI4LDcgKzYy
OCw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBiYXNlbGluZUNvZGVCbG9ja0Zv
cihraW5kKTsKICAgICB9Ci0gICAgICAgIAorCisgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigp
OyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVj
dXRhYmxlLT5uYW1lKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBpbmZlcnJlZE5hbWUoKSB7
IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aW5mZXJyZWROYW1lKCk7IH0KICAgICBKU1N0
cmluZyogbmFtZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5h
bWVWYWx1ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvblByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvblByb3RvdHlwZS5jcHAKaW5kZXggYzFiMDhhZjJkODE4ZGFlNTdlMWIwMGZkYTE3M2E4MTYx
Mzc1MjliNS4uMTI0OTBjNDBmMzM0MTdlY2E5MjM4NTBhMGRjNjYyZGJiY2Q0MGYzMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNw
cApAQCAtMjIsMTIgKzIyLDEzIEBACiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKIAog
I2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVk
ZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nQnVp
bGRlci5oIgotI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiTGV4ZXIuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKQEAg
LTEwOCw3ICsxMDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJv
dG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHMoSlNGdW5j
dGlvbjo6aW5mbygpKSkgewogICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxK
U0Z1bmN0aW9uKj4odGhpc1ZhbHVlKTsKLSAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RGdW5j
dGlvbigpKQorICAgICAgICBpZiAoZnVuY3Rpb24tPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkp
CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJp
bmcoZXhlYywgImZ1bmN0aW9uICIsIGZ1bmN0aW9uLT5uYW1lKGV4ZWMpLCAiKCkge1xuICAgIFtu
YXRpdmUgY29kZV1cbn0iKSk7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSA9IGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKTsKICAgICAgICAgU3RyaW5nIHNvdXJjZVN0cmlu
ZyA9IGV4ZWN1dGFibGUtPnNvdXJjZSgpLnRvU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAppbmRleCA3MmVkMWM3MTI0MDYxMTY4YjBh
ZGRkMzExNmY3NTVhMTE3YjhmYjkwLi5iMzc0OTQzMDk5ZTIxNTVhMzk3NzEzMzEzNDcwMmMyYTI0
YWNjODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlv
bi5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBKU0FjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIAogaW5saW5lIGJvb2wgSlNBY3Rp
dmF0aW9uOjpzeW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7Ci0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxl
KCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJs
ZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS51aWQo
KSk7CiAgICAgaWYgKGVudHJ5LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAg
LTcyLDcgKzcyLDcgQEAgaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZUdldChQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QKIAogaW5saW5lIGJvb2wgSlNB
Y3RpdmF0aW9uOjpzeW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRy
eSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsK
KyAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHBy
b3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGVudHJ5LmlzTnVsbCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKQEAgLTg5LDcgKzg5LDcgQEAgaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpz
eW1ib2xUYWJsZVB1dChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU4KICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwg
SGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CiAgICAgCi0gICAgU3ltYm9s
VGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUu
cHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUo
KS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGVudHJ5LmlzTnVsbCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGVudHJ5LmlzUmVhZE9ubHkoKSkgewpA
QCAtMTM2LDcgKzEzNiw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQ
dXRXaXRoQXR0cmlidXRlcyhWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wCiAgICAgV3JpdGVCYXJy
aWVyQmFzZTxVbmtub3duPiogcmVnOwogICAgIHsKICAgICAgICAgQ29uY3VycmVudEpJVExvY2tl
ciBsb2NrZXIoc3ltYm9sVGFibGUoKS0+bV9sb2NrKTsKLSAgICAgICAgU3ltYm9sVGFibGU6Ok1h
cDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlKCktPmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5h
bWUucHVibGljTmFtZSgpKTsKKyAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRl
ciA9IHN5bWJvbFRhYmxlKCktPmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAg
ICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZSgpLT5lbmQobG9ja2VyKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSYgZW50cnkgPSBpdGVyLT52
YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1l
bnRzSXRlcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVu
dHNJdGVyYXRvci5jcHAKaW5kZXggMmZjZjg4MTVjMDU2ODA1ODEyYTc5OTFhNWZmMDYzZDY4NzM5
NzE2NC4uOWE5MjU4M2FhMGVjOTBkYmIzMjhlY2Q1MGRjMzEzOWFlZjAyNzNiNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5j
cHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJKU0FyZ3VtZW50c0l0ZXJhdG9yLmgiCiAK
ICNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgog
CiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmNwcAppbmRleCA5MDA3YjVmN2QzZjEwM2IxZDIxYjFhMzY1YTI2YzIxNWMzMmI0ZDI4Li5iYTBh
MmQzOGU5YzUzZTE1OTM3ZDQ2YTg5NTFhOGM4YzQ1MDc5MjY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkV4
ZWN1dGFibGUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJJbmRleGlu
Z0hlYWRlcklubGluZXMuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRl
ICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1ZGUgIlJlamVjdC5oIgogI2luY2x1ZGUgPHd0
Zi9BVkxUcmVlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5SXRlcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUl0ZXJhdG9yLmNwcAppbmRleCBkNTA2YzRlYmQyNjIwZWZkNzA3OTNhODczZDA4NTJmYmQ5Nzgy
ODU5Li5jZjM3MDk3ZWMwYzY5MjVhODY3YjhjMDEwYzBlZmM0MDc0NDg1ZjFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKQEAgLTI4
LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUg
IlNsb3RWaXNpdG9ySW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKaW5kZXggY2NhNjg4OGJmOThhMDI4NjQ2
Y2EzZGRkZjM3NjI3Y2UwZTdkOTMwMi4uMzM5YTdhYjdmNTk1MTVlOTZhZmI3ZWM0Yjg3NDFlN2Fh
OGUxNjZmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5j
cHAKQEAgLTMyLDcgKzMyLDkgQEAKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU05vdEFuT2JqZWN0LmgiCisjaW5jbHVkZSAi
SlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTnVtYmVyT2JqZWN0LmgiCisjaW5jbHVkZSAi
T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0cmluZ0V4dHJhcy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGxJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGxJbmxpbmVzLmgKaW5kZXggZjdjODQ0NjQ1MDkyYjI1MDgwNWU2ZThkNDgzMmM5OThiZGI4OWI1
NC4uZDc5NWRkNTZhOTdkZGI1OTdjMDkwZmMyZTBiN2YzMDhlMzNlYmNhNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaApAQCAtMjcsOCArMjcsMTAg
QEAKICNkZWZpbmUgSlNDZWxsSW5saW5lc19oCiAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNp
bmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkRlZmVyR0MuaCIKICNpbmNs
dWRlICJIYW5kbGUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggMjQx
OTY0NjEwYmI0NDI3YjE4NjM3MzM0NmUyNGY1YTgyZDBjZGNjNC4uN2JlZjU5MWIxNGYzNWYxYTkz
NDhhZGU5YTllMGY1OTBlYjZhZGY4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5jcHAKQEAgLTEwOSw2ICsxMDksMTQgQEAgdm9pZCBKU0Z1bmN0aW9uOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGludCBs
ZW5ndGgKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1i
ZXIobGVuZ3RoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogCitKU0Z1
bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlv
bkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7
CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjcmVhdGUodm0sIGV4ZWN1dGFibGUsIGdsb2Jh
bE9iamVjdCk7CisgICAgZnVuY3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bmFtZSwganNTdHJpbmcoJnZtLCBleGVjdXRhYmxlLT5uYW1lKCkuc3RyaW5nKCkpLCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgZnVuY3Rpb24tPnB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcihleGVjdXRhYmxlLT5wYXJhbWV0ZXJD
b3VudCgpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHJldHVybiBm
dW5jdGlvbjsKK30KKwogT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUqIEpTRnVuY3Rpb246OmNyZWF0
ZUFsbG9jYXRpb25Qcm9maWxlKEV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IGlubGluZUNhcGFjaXR5
KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC0xNDIsNyArMTUwLDcgQEAgY29uc3Qg
U3RyaW5nIEpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgICAgIHJldHVybiBleHBsaWNpdE5hbWU7CiAgICAgCiAgICAgY29uc3QgU3RyaW5nIGFj
dHVhbE5hbWUgPSBuYW1lKGV4ZWMpOwotICAgIGlmICghYWN0dWFsTmFtZS5pc0VtcHR5KCkgfHwg
aXNIb3N0RnVuY3Rpb24oKSkKKyAgICBpZiAoIWFjdHVhbE5hbWUuaXNFbXB0eSgpIHx8IGlzSG9z
dE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBhY3R1YWxOYW1lOwogICAgIAog
ICAgIHJldHVybiBqc0V4ZWN1dGFibGUoKS0+aW5mZXJyZWROYW1lKCkuc3RyaW5nKCk7CkBAIC0x
NTAsMTAgKzE1OCwyMCBAQCBjb25zdCBTdHJpbmcgSlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3Bs
YXlOYW1lKEV4ZWNTdGF0ZSogZXhlYykKIAogY29uc3QgU291cmNlQ29kZSogSlNGdW5jdGlvbjo6
c291cmNlQ29kZSgpIGNvbnN0CiB7Ci0gICAgaWYgKGlzSG9zdEZ1bmN0aW9uKCkpCisgICAgaWYg
KGlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVy
biAmanNFeGVjdXRhYmxlKCktPnNvdXJjZSgpOwogfQorICAgIAorYm9vbCBKU0Z1bmN0aW9uOjpp
c0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzSG9zdEZ1bmN0
aW9uKCkgfHwgaXNCdWlsdGluRnVuY3Rpb24oKTsKK30KKworYm9vbCBKU0Z1bmN0aW9uOjppc0J1
aWx0aW5GdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuICFpc0hvc3RGdW5jdGlvbigpICYm
IGpzRXhlY3V0YWJsZSgpLT5pc0J1aWx0aW5GdW5jdGlvbigpOworfQogCiB2b2lkIEpTRnVuY3Rp
b246OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsK
QEAgLTI3Nyw3ICsyOTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0
ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBzbG90QmFzZQogICAgIGlmICghY2Fs
bGVyLmlzT2JqZWN0KCkgfHwgIWFzT2JqZWN0KGNhbGxlciktPmluaGVyaXRzKEpTRnVuY3Rpb246
OmluZm8oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbGVyKTsKICAgICBK
U0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2FsbGVyKTsKLSAgICBp
ZiAoZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkgfHwgIWZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUo
KS0+aXNTdHJpY3RNb2RlKCkpCisgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RPckJ1aWx0aW5GdW5j
dGlvbigpIHx8ICFmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxlcik7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkZ1bmN0aW9uLmNhbGxl
ciB1c2VkIHRvIHJldHJpZXZlIHN0cmljdCBjYWxsZXIiKSkpOwogfQpAQCAtMjk5LDcgKzMxNyw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTRnVuY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUgc2xvdEJhc2UsIEVuY29kCiBib29sIEpTRnVuY3Rpb246OmdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICh0aGlzT2JqZWN0
LT5pc0hvc3RGdW5jdGlvbigpKQorICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5G
dW5jdGlvbigpKQogICAgICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICBpZiAocHJvcGVydHlOYW1l
ID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpIHsKQEAgLTM2MSw3ICszNzksNyBA
QCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5Tgogdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRl
eFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7CiAgICAg
SlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsKLSAg
ICBpZiAoIXRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkgJiYgKG1vZGUgPT0gSW5jbHVkZURv
bnRFbnVtUHJvcGVydGllcykpIHsKKyAgICBpZiAoIXRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRp
bkZ1bmN0aW9uKCkgJiYgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpIHsKICAg
ICAgICAgLy8gTWFrZSBzdXJlIHByb3RvdHlwZSBoYXMgYmVlbiByZWlmaWVkLgogICAgICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0KTsKICAgICAgICAgdGhpc09iamVjdC0+bWV0aG9k
VGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5wcm90b3R5cGUsIHNsb3QpOwpAQCAtMzc3LDcgKzM5NSw3IEBAIHZvaWQgSlNG
dW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywKIHZvaWQgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU0Z1bmN0aW9uKj4oY2VsbCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9u
KCkpIHsKKyAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkgewog
ICAgICAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2xvdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MjUsNyArNDQzLDcgQEAgYm9vbCBK
U0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3AKIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRp
b24pCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4o
b2JqZWN0KTsKLSAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICBpZiAo
dGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIEJh
c2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlw
dG9yLCB0aHJvd0V4Y2VwdGlvbik7CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaAppbmRleCA3Y2QxNGI4YzJkODAwZjYxYmRjMTJlZGQyZGYwNGQzNWZhMDYx
OWI2Li45OTVjOWQxMWJkODk4Mzg2ZjdhMjBjNDE2MzRmYTdjYzliNzY5OGU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC02OCw2ICs2OCw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uOwogICAgICAgICB9CiAg
ICAgICAgIAorICAgICAgICBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlQnVpbHRpbkZ1bmN0aW9u
KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNHbG9iYWxPYmplY3QqKTsKKyAgICAgICAgCiAg
ICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAgIAogICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBTdHJpbmcgbmFtZShFeGVjU3RhdGUqKTsKQEAgLTE0NSw2ICsxNDcs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2FsbG9jYXRpb25Qcm9m
aWxlV2F0Y2hwb2ludDsKICAgICAgICAgfQogCisgICAgICAgIGJvb2wgaXNIb3N0T3JCdWlsdGlu
RnVuY3Rpb24oKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0
OworCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbXBsZW1lbnRzSGFzSW5z
dGFuY2UgfCBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1l
cyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKaW5kZXggMmRkYzI5ZjcxODk3YmI1MWQzOTBiMDZiMjVh
NzM4MzM4NzRiYTBjMS4uZWRkMzQ0OWNlNDdiMTczNWU4ZTVkYmIwNWYzMThlM2Q1NWYzYmU2MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCkBAIC0y
Niw2ICsyNiw3IEBACiAjaWZuZGVmIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJ
bmxpbmVzX2gKICNkZWZpbmUgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGlu
ZXNfaAogCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJFcnJvci5o
IgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0NvbnN0cnVjdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IDZk
Yjg2Mjc0YzNiODc0YWFhZGU1MTUxODk4MjY3MjZmYjEzNmMxNzMuLmYyNGVhNzMwM2RmOTY5ZGJk
MmRjYTUyYzg2ZDExYzc4YzAwZGI5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBA
IC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lc19o
CiAKICNpbmNsdWRlICJBcnJheUJ1ZmZlclZpZXcuaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlm
aWVycy5oIgogI2luY2x1ZGUgIkRlZmVyR0MuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1
ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5
cGVJbmxpbmVzLmgKaW5kZXggNDU5OTk3YTQ2NGI5MTE5NDc3YjFiZTg0ZTM2YzRlMjk2NmFjZWY4
NS4uOGU1ZmY4Mjc5MWU2ZmY4ZDRlYjljMzczNjkxZTQzM2ViN2QxNmFlZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90
b3R5cGVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNp
Zm5kZWYgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzX2gKICNkZWZpbmUg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzX2gKIAorI2luY2x1ZGUgIkNv
bW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDJjMjc0YzFhN2Q0ODFj
MDdkZjBkMmJlYjNiMjkzMWEzOTA3YTVlNjYuLjA2ZTU0Yzg0ZTc3YjkwMzJiYWExZDJkZjQ3YTFj
NzJlODBiN2RlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKQEAgLTM0Niw3ICszNDYsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojpy
ZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKIAogICAgIC8vIENvbnN0cnVjdG9ycwogCi0gICAgSlND
ZWxsKiBvYmplY3RDb25zdHJ1Y3RvciA9IE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIE9i
amVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90
b3R5cGUuZ2V0KCkpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CisgICAgT2JqZWN0Q29uc3Ry
dWN0b3IqIG9iamVjdENvbnN0cnVjdG9yID0gT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwg
T2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblBy
b3RvdHlwZS5nZXQoKSksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKKyAgICBtX29iamVjdENv
bnN0cnVjdG9yLnNldCh2bSwgdGhpcywgb2JqZWN0Q29uc3RydWN0b3IpOwogICAgIEpTQ2VsbCog
ZnVuY3Rpb25Db25zdHJ1Y3RvciA9IEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgRnVu
Y3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJv
dG90eXBlLmdldCgpKSwgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CiAgICAgSlNDZWxsKiBh
cnJheUNvbnN0cnVjdG9yID0gQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBBcnJheUNvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCkpLCBtX2FycmF5UHJvdG90eXBlLmdldCgpKTsKIApAQCAtNDMyLDcgKzQzMywxMCBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8gc3RhdGljR2xvYmFsc1tdID0gewogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+TmFOLCBqc05hTigpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBS
ZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5J
bmZpbml0eSwganNOdW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgp
KSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCwganNVbmRlZmluZWQo
KSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpCisgICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLCBqc1VuZGVmaW5lZCgp
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkUHJpdmF0ZU5hbWUsIGpz
VW5kZWZpbmVkKCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAg
R2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPk9iamVjdFByaXZhdGVOYW1lLCBv
YmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+VHlwZUVycm9yUHJpdmF0
ZU5hbWUsIG1fdHlwZUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtIHwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5KQogICAgIH07CiAgICAgYWRkU3RhdGljR2xvYmFscyhzdGF0aWNHbG9iYWxz
LCBXVEZfQVJSQVlfTEVOR1RIKHN0YXRpY0dsb2JhbHMpKTsKICAgICAKQEAgLTYwOCw2ICs2MTIs
NyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3lu
dGF4RXJyb3JDb25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
dHlwZUVycm9yQ29uc3RydWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X1VSSUVycm9yQ29uc3RydWN0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X29iamVjdENvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9w
cm9taXNlQ29uc3RydWN0b3IpOwogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
ZXZhbEZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCmluZGV4IGIwY2FkM2RjNTQ3MGY3YzdhMGU1NzBiZGNkMmRmZmE4OTVlMmFhMGMu
LjNhNjE2YzZmMDVlZGYxZDI5NWFmODQ0MWFhNjY1MDBmYjkyYTRhNDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNjcsNiArNjcsNyBA
QCBjbGFzcyBKU1N0YWNrOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgTWlj
cm90YXNrOwogY2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjsKK2NsYXNzIE9iamVjdENvbnN0
cnVjdG9yOwogY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxl
OwogY2xhc3MgUmVnRXhwQ29uc3RydWN0b3I7CkBAIC0xNTgsNiArMTU5LDcgQEAgcHJvdGVjdGVk
OgogICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX3R5cGVFcnJvckNv
bnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX1VS
SUVycm9yQ29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlzZUNvbnN0cnVjdG9y
PiBtX3Byb21pc2VDb25zdHJ1Y3RvcjsKKyAgICBXcml0ZUJhcnJpZXI8T2JqZWN0Q29uc3RydWN0
b3I+IG1fb2JqZWN0Q29uc3RydWN0b3I7CiAKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4g
bV9ldmFsRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fY2FsbEZ1bmN0
aW9uOwpAQCAtMzMwLDYgKzMzMiw3IEBAIHB1YmxpYzoKICAgICBSZWdFeHBDb25zdHJ1Y3Rvciog
cmVnRXhwQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cENvbnN0cnVjdG9yLmdl
dCgpOyB9CiAKICAgICBFcnJvckNvbnN0cnVjdG9yKiBlcnJvckNvbnN0cnVjdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9lcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CisgICAgT2JqZWN0Q29uc3RydWN0
b3IqIG9iamVjdENvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RDb25zdHJ1Y3Rv
ci5nZXQoKTsgfQogICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGV2YWxFcnJvckNvbnN0cnVj
dG9yKCkgY29uc3QgeyByZXR1cm4gbV9ldmFsRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAg
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHJhbmdlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsg
cmV0dXJuIG1fcmFuZ2VFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CiAgICAgTmF0aXZlRXJyb3JD
b25zdHJ1Y3RvciogcmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1f
cmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQpAQCAtNTgxLDcgKzU4NCw3IEBAIGlu
bGluZSBib29sIEpTR2xvYmFsT2JqZWN0OjpoYXNPd25Qcm9wZXJ0eUZvcldyaXRlKEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lCiAKIGlubGluZSBib29sIEpTR2xvYmFsT2JqZWN0OjpzeW1i
b2xUYWJsZUhhc1Byb3BlcnR5KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgU3lt
Ym9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5h
bWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFi
bGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgcmV0dXJuICFlbnRyeS5p
c051bGwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3Bw
CmluZGV4IDJiNjdhMWQ5ZWVkODRlOTk1NmY4YmI5NjgzODRjODRjYWVhNTNjZmYuLjJlYTJjMjRl
NmVhYjRjZDBkN2ZmZWQ2NjVlZjRhZTQxYWYwNzUwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGdldENsYXNzUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENsYXNzSW5m
byogY2xhc3MKICAgICAgICAgaW50IGhhc2hTaXplTWFzayA9IHRhYmxlLT5jb21wYWN0U2l6ZSAt
IDE7CiAgICAgICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSB0YWJsZS0+dGFibGU7CiAgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IGhhc2hTaXplTWFzazsgKytpLCArK2VudHJ5KSB7Ci0g
ICAgICAgICAgICBpZiAoZW50cnktPmtleSgpICYmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBE
b250RW51bSkgfHwgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpICYmICEoKGVu
dHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikgJiYgZGlkUmVpZnkpKQorICAgICAgICAgICAg
aWYgKGVudHJ5LT5rZXkoKSAmJiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8
IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKSAmJiAhKChlbnRyeS0+YXR0cmli
dXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pICYmIGRpZFJlaWZ5KSkKICAgICAgICAgICAgICAg
ICBwcm9wZXJ0eU5hbWVzLmFkZChlbnRyeS0+a2V5KCkpOwogICAgICAgICB9CiAgICAgfQpAQCAt
MTYxOCw3ICsxNjE4LDcgQEAgdm9pZCBKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JE
ZWxldGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIFBy
b3BlcnR5U2xvdCBzbG90KHRoaXMpOwogICAgICAgICBmb3IgKEhhc2hUYWJsZTo6Q29uc3RJdGVy
YXRvciBpdGVyID0gaGFzaFRhYmxlLT5iZWdpbih2bSk7IGl0ZXIgIT0gaGFzaFRhYmxlLT5lbmQo
dm0pOyArK2l0ZXIpIHsKLSAgICAgICAgICAgIGlmIChpdGVyLT5hdHRyaWJ1dGVzKCkgJiBGdW5j
dGlvbikKKyAgICAgICAgICAgIGlmIChpdGVyLT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5j
dGlvbikKICAgICAgICAgICAgICAgICBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChnbG9iYWxPYmpl
Y3QoKS0+Z2xvYmFsRXhlYygpLCAqaXRlciwgdGhpcywgSWRlbnRpZmllcigmdm0sIGl0ZXItPmtl
eSgpKSwgc2xvdCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yMjM2LDYgKzIyMzYsMTYgQEAgdm9p
ZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb24KICAgICBwdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgZnVu
Y3Rpb24sIGF0dHJpYnV0ZXMpOwogfQogCit2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RCdWlsdGlu
RnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9w
ZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1
dGFibGUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCit7CisgICAgU3RyaW5nSW1wbCogbmFtZSA9IHBy
b3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CisgICAgaWYgKCFuYW1lKQorICAgICAgICBuYW1lID0g
dm0ucHJvcGVydHlOYW1lcy0+YW5vbnltb3VzLmltcGwoKTsKKyAgICBBU1NFUlQobmFtZSk7Cisg
ICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rp
b24odm0sIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJs
ZSksIGdsb2JhbE9iamVjdCk7CisgICAgcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0
aW9uLCBhdHRyaWJ1dGVzKTsKK30KKwogdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBmdW5jdGlvbkxl
bmd0aCwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5
TmFtZS5wdWJsaWNOYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAppbmRleCAwMmIxMzdiMzUwYzJmYTgzMjViZDNiOTY0NzExMmFiZTg3NmYzODNmLi5kZGU1OTdl
ZmZhZWMwZjFiOGQ0NGMyOTExOTUwMzAxZjA2MDA3ZTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJCdXR0ZXJm
bHkuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKLSNp
bmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkNvcHlXcml0ZUJhcnJpZXIu
aCIKICNpbmNsdWRlICJEZWZlckdDLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgpAQCAtNTgxLDYgKzU4
MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHB1dERpcmVjdFVuZGVmaW5lZChQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQpIHsgbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KS0+c2V0VW5kZWZpbmVkKCk7IH0K
IAogICAgIHZvaWQgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCos
IGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5j
dGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICB2b2lkIHB1dERpcmVj
dEJ1aWx0aW5GdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1l
JiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgdm9pZCBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZl
RnVuY3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAKICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91
bGRUaHJvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2VDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2VDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNDAyNjE5NjMzZmEwNmZkMjU0YjNmMmE3YThjYzcx
ZTgwN2FhZjkxMS4uMTdkMmFiNjVhODhmZmIxM2ZhOWE2YzhmNTgzY2E4NDRhZjgzMjI0MiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0
cnVjdG9yLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkpTUHJvbWlzZURlZmVycmVk
LmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNl
UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTG9v
a3VwLmgiCiAjaW5jbHVkZSAiTnVtYmVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5s
aW5lcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAppbmRleCA2OGE4YmQ4N2QzOGFkYmJiOWRkMmFjOWVjNGI0
OWQ1ZWY0NTQ5ZDU2Li4yMzdjNDJiYjBkYTBmMTY2NzZlYjExYWRlODE4MGE3YjA2ZDk4ZWI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmNwcApAQCAtMjksNyArMjksOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKIAorI2luY2x1ZGUgIkpTQ0pTVmFs
dWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJPcGVy
YXRpb25zLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSlND
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlO
YW1lSXRlcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlO
YW1lSXRlcmF0b3IuaAppbmRleCBmNDM2MmZmMzU0ZWU2YTUwMjIxYmI3MzFkMWEyNjExZTZkZDYx
YmMwLi5kMDczNzE5ZGUxNjBkMmYyOTIxMTBhNTk2YTEwNWUyZmEyMTE1ZmZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5oCkBAIC0zMSw3ICszMSw2IEBACiAKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUg
IkpTU3RyaW5nLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlByb3BlcnR5
TmFtZUFycmF5LmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdHJpbmcuaAppbmRleCAyYjFjZGRkYzU4NDFkNjBkMTU3YTJlNjFmNzAyYjBlZTVm
YTFkNjc2Li5lMzkzNDE2MGFlYTkyNmVmMTU5MzJmODc5MGUyNGM1MmFmMDJkMzVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKQEAgLTI0LDcgKzI0LDYgQEAKICNk
ZWZpbmUgSlNTdHJpbmdfaAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiQ29t
bW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUHJv
cGVydHlEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCkBAIC00NzIsMzMg
KzQ3MSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGlubGluZSBKU1N0cmluZyoganNOb250cml2
aWFsU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBqc05v
bnRyaXZpYWxTdHJpbmcoJmV4ZWMtPnZtKCksIHMpOyB9CiAgICAgaW5saW5lIEpTU3RyaW5nKiBq
c093bmVkU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBq
c093bmVkU3RyaW5nKCZleGVjLT52bSgpLCBzKTsgfQogCi0gICAgQUxXQVlTX0lOTElORSBib29s
IEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi0gICAgewotICAgICAgICBp
ZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKLSAgICAg
ICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9u
bHksIGpzTnVtYmVyKG1fbGVuZ3RoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOwotICAg
ICAgICBpZiAoaSA8IG1fbGVuZ3RoKSB7Ci0gICAgICAgICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0
eU5hbWU6Ok5vdEFuSW5kZXgpOyAvLyBObyBuZWVkIGZvciBhbiBleHBsaWNpdCBjaGVjaywgdGhl
IGFib3ZlIHRlc3Qgd291bGQgYWx3YXlzIGZhaWwhCi0gICAgICAgICAgICBzbG90LnNldFZhbHVl
KHRoaXMsIERvbnREZWxldGUgfCBSZWFkT25seSwgZ2V0SW5kZXgoZXhlYywgaSkpOwotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotICAgICAgICAgICAgCi0gICAgQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRT
dHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkKLSAgICB7Ci0gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPCBt
X2xlbmd0aCkgewotICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlIHwg
UmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIHByb3BlcnR5TmFtZSkpOwotICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCiAg
ICAgaW5saW5lIGJvb2wgaXNKU1N0cmluZyhKU1ZhbHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxsKCkg
JiYgdi5hc0NlbGwoKS0+Y2xhc3NJbmZvKCkgPT0gSlNTdHJpbmc6OmluZm8oKTsgfQogCiAgICAg
Ly8gLS0tIEpTVmFsdWUgaW5saW5lcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC01
MjgsMzIgKzUwMCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gdG9XVEZTdHJp
bmdTbG93Q2FzZShleGVjKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIFN0cmluZyBpbmxp
bmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcoY29uc3QgSlNWYWx1ZSYgdmFsdWUsIEV4ZWNTdGF0
ZSogZXhlYykKLSAgICB7Ci0gICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgICAgIGlm
ICh2YWx1ZS5pc0ludDMyKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0ubnVtZXJpY1N0cmluZ3Mu
YWRkKHZhbHVlLmFzSW50MzIoKSk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc0RvdWJsZSgpKQotICAg
ICAgICAgICAgcmV0dXJuIHZtLm51bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZS5hc0RvdWJsZSgpKTsK
LSAgICAgICAgaWYgKHZhbHVlLmlzVHJ1ZSgpKQotICAgICAgICAgICAgcmV0dXJuIHZtLnByb3Bl
cnR5TmFtZXMtPnRydWVLZXl3b3JkLnN0cmluZygpOwotICAgICAgICBpZiAodmFsdWUuaXNGYWxz
ZSgpKQotICAgICAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPmZhbHNlS2V5d29yZC5z
dHJpbmcoKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJu
IHZtLnByb3BlcnR5TmFtZXMtPm51bGxLZXl3b3JkLnN0cmluZygpOwotICAgICAgICBpZiAodmFs
dWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT51
bmRlZmluZWRLZXl3b3JkLnN0cmluZygpOwotICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgU3RyaW5nIEpT
VmFsdWU6OnRvV1RGU3RyaW5nSW5saW5lKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKLSAgICB7Ci0g
ICAgICAgIGlmIChpc1N0cmluZygpKQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpT
U3RyaW5nKj4oYXNDZWxsKCkpLT52YWx1ZShleGVjKTsKLQotICAgICAgICByZXR1cm4gaW5saW5l
SlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKCp0aGlzLCBleGVjKTsKLSAgICB9Ci0KIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gSlNTdHJpbmdfaApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzhjMDVmYzgwZDg4
ZTg1MzdjOWQyYTVlYWI5ZmYwYmE5YjYwYTc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgKQEAgLTAsMCArMSw5MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgSlNTdHJpbmdJbmxpbmVzX2gKKyNkZWZpbmUgSlNTdHJpbmdJbmxpbmVzX2gKKworI2luY2x1
ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
KyNpbmNsdWRlICJKU1N0cmluZy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworQUxXQVlTX0lOTElO
RSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgaWYg
KHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CisgICAgICAg
IHNsb3Quc2V0VmFsdWUodGhpcywgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGpz
TnVtYmVyKG1fbGVuZ3RoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAg
ICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaSA8IG1fbGVu
Z3RoKSB7CisgICAgICAgIEFTU0VSVChpICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCk7IC8v
IE5vIG5lZWQgZm9yIGFuIGV4cGxpY2l0IGNoZWNrLCB0aGUgYWJvdmUgdGVzdCB3b3VsZCBhbHdh
eXMgZmFpbCEKKyAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVhZE9u
bHksIGdldEluZGV4KGV4ZWMsIGkpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IAorICAgIHJldHVybiBmYWxzZTsKK30KKworQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpn
ZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBpZiAocHJvcGVydHlOYW1lIDwgbV9sZW5n
dGgpIHsKKyAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHks
IGdldEluZGV4KGV4ZWMsIHByb3BlcnR5TmFtZSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCitBTFdBWVNfSU5MSU5FIFN0cmluZyBp
bmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcoY29uc3QgSlNWYWx1ZSYgdmFsdWUsIEV4ZWNT
dGF0ZSogZXhlYykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGlmICh2YWx1ZS5p
c0ludDMyKCkpCisgICAgICAgIHJldHVybiB2bS5udW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNJ
bnQzMigpKTsKKyAgICBpZiAodmFsdWUuaXNEb3VibGUoKSkKKyAgICAgICAgcmV0dXJuIHZtLm51
bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZS5hc0RvdWJsZSgpKTsKKyAgICBpZiAodmFsdWUuaXNUcnVl
KCkpCisgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT50cnVlS2V5d29yZC5zdHJpbmco
KTsKKyAgICBpZiAodmFsdWUuaXNGYWxzZSgpKQorICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlO
YW1lcy0+ZmFsc2VLZXl3b3JkLnN0cmluZygpOworICAgIGlmICh2YWx1ZS5pc051bGwoKSkKKyAg
ICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPm51bGxLZXl3b3JkLnN0cmluZygpOworICAg
IGlmICh2YWx1ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1l
cy0+dW5kZWZpbmVkS2V5d29yZC5zdHJpbmcoKTsKKyAgICByZXR1cm4gdmFsdWUudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOworfQorICAgIAorQUxXQVlTX0lOTElORSBTdHJpbmcgSlNWYWx1
ZTo6dG9XVEZTdHJpbmdJbmxpbmUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIGlmIChp
c1N0cmluZygpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNTdHJpbmcqPihhc0NlbGwo
KSktPnZhbHVlKGV4ZWMpOworICAgIAorICAgIHJldHVybiBpbmxpbmVKU1ZhbHVlTm90U3RyaW5n
dG9TdHJpbmcoKnRoaXMsIGV4ZWMpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAppbmRleCAy
YWMyNTI0YzVkZmRhM2QxMjI0OWQ3NzkwYWRjMzEyOWUzYzBlODcxLi5mYmM4Yjg5NWVhZTZhZjc4
ODgzOWJlYjVlODNkN2I2Yjk3OTI4ZmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcApAQCAtNjQsNiArNjQsOCBAQCB2
b2lkIEpTU3ltYm9sVGFibGVPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdAogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tl
cih0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5tX2xvY2spOwogICAgICAgICBTeW1ib2xUYWJs
ZTo6TWFwOjppdGVyYXRvciBlbmQgPSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5lbmQobG9j
a2VyKTsKICAgICAgICAgZm9yIChTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdCA9IHRoaXNP
YmplY3QtPnN5bWJvbFRhYmxlKCktPmJlZ2luKGxvY2tlcik7IGl0ICE9IGVuZDsgKytpdCkgewor
ICAgICAgICAgICAgaWYgKGl0LT5rZXktPmlzRW1wdHlVbmlxdWUoKSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIGlmICghKGl0LT52YWx1ZS5nZXRBdHRyaWJ1dGVzKCkg
JiBEb250RW51bSkgfHwgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpCiAgICAg
ICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcihleGVjLCBpdC0+a2V5Lmdl
dCgpKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3ltYm9sVGFibGVPYmplY3QuaAppbmRleCBiNWIyMGE4NDViNmFiNjQ0MjRiMzdlMzFiMjc3
NGVmOTA1MzUzZjdmLi5kMDNiMjQ1MTFjMmRlMTk1OWZiNWY1NmQ2NDljNjRkMGVmZTA2ODU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2Jq
ZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9i
amVjdC5oCkBAIC03Miw3ICs3Miw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogewog
ICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAg
ICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICBT
eW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIs
IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJh
dG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsK
ICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1ZTsK
QEAgLTg3LDcgKzg3LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiB7CiAgICAgU3lt
Ym9sVGFibGUmIHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9sVGFibGUoKTsKICAgICBDb25j
dXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2spOwotICAgIFN5bWJvbFRh
YmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVy
dHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRl
ciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlm
IChpdGVyID09IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBlbnRyeSA9IGl0ZXItPnZhbHVlOwpAQCAtMTA0
LDcgKzEwNCw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogewogICAgIFN5bWJvbFRh
YmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgQ29uY3VycmVu
dEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICBTeW1ib2xUYWJsZTo6
TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFt
ZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBz
eW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoaXRl
ciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1ZTsKQEAgLTEyNiw3ICsx
MjYsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dCgKICAgICB7CiAgICAgICAgIFN5bWJv
bFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgICAgIEdD
U2FmZUNvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jaywgZXhlYy0+
dm0oKS5oZWFwKTsKLSAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5
bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICAg
ICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9j
a2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJs
ZS5lbmQobG9ja2VyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYm9vbCB3
YXNGYXQ7CkBAIC0xNTksNyArMTU5LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRXaXRo
QXR0cmlidXRlcygKICAgICB7CiAgICAgICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpv
YmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2Vy
KHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9y
IGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUo
KSk7CisgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJs
ZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICAgICAgaWYgKGl0ZXIgPT0g
c3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5ID0gaXRlci0+dmFsdWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAppbmRleCBhODA2ZGQwNTJhMGNiZWU0Y2FjMmNhYTZl
MDhjNjcxNjAwNWMyNzBjLi5hOTc2NTIwMWI5ZjUxODY0MTQyM2RkZTBmZTBlMmU1MWE4Y2U3M2Jj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKQEAgLTY4LDcgKzY4
LDcgQEAgdm9pZCBIYXNoVGFibGU6OmRlbGV0ZVRhYmxlKCkgY29uc3QKIGJvb2wgc2V0VXBTdGF0
aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoRW50cnkqIGVudHJ5LCBK
U09iamVjdCogdGhpc09iaiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIEFTU0VSVCh0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSk7Ci0gICAgQVNT
RVJUKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbik7CisgICAgQVNTRVJUKGVudHJ5LT5h
dHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbik7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9
IHRoaXNPYmotPmdldERpcmVjdE9mZnNldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsK
QEAgLTc5LDkgKzc5LDEzIEBAIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCoKICAgICAgICAgaWYgKHRo
aXNPYmotPnN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAKLSAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oCi0gICAg
ICAgICAgICB2bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZW50cnkt
PmZ1bmN0aW9uTGVuZ3RoKCksCi0gICAgICAgICAgICBlbnRyeS0+ZnVuY3Rpb24oKSwgZW50cnkt
PmludHJpbnNpYygpLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAgICAgICAgaWYgKGVudHJ5LT5h
dHRyaWJ1dGVzKCkgJiBCdWlsdGluKQorICAgICAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0QnVp
bHRpbkZ1bmN0aW9uKHZtLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBl
bnRyeS0+YnVpbHRpbkdlbmVyYXRvcigpKHZtKSwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24o
CisgICAgICAgICAgICAgICAgdm0sIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5h
bWUsIGVudHJ5LT5mdW5jdGlvbkxlbmd0aCgpLAorICAgICAgICAgICAgICAgIGVudHJ5LT5mdW5j
dGlvbigpLCBlbnRyeS0+aW50cmluc2ljKCksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAgICAg
ICB9CiAgICAgICAgIG9mZnNldCA9IHRoaXNPYmotPmdldERpcmVjdE9mZnNldCh2bSwgcHJvcGVy
dHlOYW1lLCBhdHRyaWJ1dGVzKTsKICAgICAgICAgQVNTRVJUKGlzVmFsaWRPZmZzZXQob2Zmc2V0
KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9v
a3VwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAppbmRleCBiZGU4
M2Q0YTZmYzM1NTc3ODUwZTMxZTg4YmMzOWZkMDVmN2JjZTUyLi5kYmEzODllOWUyNDNkZDBlY2Iy
YmE5OGYzOTRkNDA3OWY5ZGVhOTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Mb29rdXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29r
dXAuaApAQCAtNDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAvLyBpZS4gdHlwZWRl
ZiBKU1ZhbHVlICgqR2V0RnVuY3Rpb24pKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBiYXNlT2JqZWN0
KQogICAgIHR5cGVkZWYgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgR2V0RnVuY3Rpb247CiAg
ICAgdHlwZWRlZiBQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYyBQdXRGdW5jdGlvbjsKKyAg
ICB0eXBlZGVmIEZ1bmN0aW9uRXhlY3V0YWJsZSogKCpCdWlsdGluR2VuZXJhdG9yKShWTSYpOwog
CiAgICAgY2xhc3MgSGFzaEVudHJ5IHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CkBAIC02OCwxMSArNjksMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4g
bV9pbnRyaW5zaWM7CiAgICAgICAgIH0KIAorICAgICAgICBCdWlsdGluR2VuZXJhdG9yIGJ1aWx0
aW5HZW5lcmF0b3IoKSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBCdWlsdGluKTsgcmV0
dXJuIG1fdS5idWlsdGluR2VuZXJhdG9yLmdlbmVyYXRvclZhbHVlOyB9CiAgICAgICAgIE5hdGl2
ZUZ1bmN0aW9uIGZ1bmN0aW9uKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgRnVuY3Rp
b24pOyByZXR1cm4gbV91LmZ1bmN0aW9uLmZ1bmN0aW9uVmFsdWU7IH0KICAgICAgICAgdW5zaWdu
ZWQgY2hhciBmdW5jdGlvbkxlbmd0aCgpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1
bmN0aW9uKTsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KG1fdS5mdW5jdGlvbi5s
ZW5ndGgpOyB9CiAKLSAgICAgICAgR2V0RnVuY3Rpb24gcHJvcGVydHlHZXR0ZXIoKSBjb25zdCB7
IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVydHku
Z2V0OyB9Ci0gICAgICAgIFB1dEZ1bmN0aW9uIHByb3BlcnR5UHV0dGVyKCkgY29uc3QgeyBBU1NF
UlQoIShtX2F0dHJpYnV0ZXMgJiBGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5LnB1dDsg
fQorICAgICAgICBHZXRGdW5jdGlvbiBwcm9wZXJ0eUdldHRlcigpIGNvbnN0IHsgQVNTRVJUKCEo
bV9hdHRyaWJ1dGVzICYgQnVpbHRpbk9yRnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0eS5n
ZXQ7IH0KKyAgICAgICAgUHV0RnVuY3Rpb24gcHJvcGVydHlQdXR0ZXIoKSBjb25zdCB7IEFTU0VS
VCghKG1fYXR0cmlidXRlcyAmIEJ1aWx0aW5PckZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVy
dHkucHV0OyB9CiAKICAgICAgICAgaW50cHRyX3QgbGV4ZXJWYWx1ZSgpIGNvbnN0IHsgQVNTRVJU
KCFtX2F0dHJpYnV0ZXMpOyByZXR1cm4gbV91LmxleGVyLnZhbHVlOyB9CiAKQEAgLTk0LDYgKzk2
LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIGludHB0cl90IGxlbmd0aDsg
Ly8gbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgZnVuY3Rpb24KICAgICAgICAgICAgIH0gZnVuY3Rp
b247CiAgICAgICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgICAgIEJ1aWx0aW5HZW5lcmF0
b3IgZ2VuZXJhdG9yVmFsdWU7CisgICAgICAgICAgICAgICAgaW50cHRyX3QgdW51c2VkOworICAg
ICAgICAgICAgfSBidWlsdGluR2VuZXJhdG9yOworICAgICAgICAgICAgc3RydWN0IHsKICAgICAg
ICAgICAgICAgICBHZXRGdW5jdGlvbiBnZXQ7CiAgICAgICAgICAgICAgICAgUHV0RnVuY3Rpb24g
cHV0OwogICAgICAgICAgICAgfSBwcm9wZXJ0eTsKQEAgLTIwOSw3ICsyMTUsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IEhhc2hF
bnRyeSogZW50cnkoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKICAgICAgICAgewot
ICAgICAgICAgICAgU3RyaW5nSW1wbCogaW1wbCA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7
CisgICAgICAgICAgICBTdHJpbmdJbXBsKiBpbXBsID0gcHJvcGVydHlOYW1lLnVpZCgpOwogICAg
ICAgICAgICAgaWYgKCFpbXBsKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAK
QEAgLTI0OSw3ICsyNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaWYgKCFlbnRyeSkg
Ly8gbm90IGZvdW5kLCBmb3J3YXJkIHRvIHBhcmVudAogICAgICAgICAgICAgcmV0dXJuIFBhcmVu
dEltcDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiAKLSAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikKKyAgICAg
ICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikKICAgICAgICAg
ICAgIHJldHVybiBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChleGVjLCBlbnRyeSwgdGhpc09iaiwg
cHJvcGVydHlOYW1lLCBzbG90KTsKIAogICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0
aGlzT2JqLCBlbnRyeS0+YXR0cmlidXRlcygpLCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSk7CkBA
IC0yODYsNyArMjkyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGlmICghZW50cnkpIC8v
IG5vdCBmb3VuZCwgZm9yd2FyZCB0byBwYXJlbnQKICAgICAgICAgICAgIHJldHVybiBQYXJlbnRJ
bXA6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogCi0gICAgICAgIEFTU0VSVCghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikpOwor
ICAgICAgICBBU1NFUlQoIShlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24p
KTsKIAogICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqLCBlbnRyeS0+YXR0
cmlidXRlcygpLCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwpAQCAtMjk1LDcgKzMwMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGlubGluZSB2b2lkIHB1
dEVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3Qq
IGJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKICAgICB7CiAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBmdW5jdGlvbiBw
dXQgaXQgYXMgYW4gb3ZlcnJpZGUgcHJvcGVydHkuCi0gICAgICAgIGlmIChlbnRyeS0+YXR0cmli
dXRlcygpICYgRnVuY3Rpb24pIHsKKyAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBC
dWlsdGluT3JGdW5jdGlvbikgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0KiB0aGlzT2JqZWN0
ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHNsb3QudGhpc1ZhbHVlKCkpKQogICAgICAgICAg
ICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlKTsKICAgICAgICAgfSBlbHNlIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBSZWFkT25s
eSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVy
cm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZDVlNzI4YzJjZDEwMjBhNDdlNGFkY2Q2NDljZDFm
ZmZhNWNkNmE4My4uZGNhMmZkOGQxZjZhYzIzYjhmZjgxN2NiYjE4ZmFhZTdiY2Q1OTcwMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvci5jcHAKQEAgLTM4LDYgKzM4LDIwIEBAIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6
Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsK
IH0KIAordm9pZCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0
dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0s
IG5hbWUpOworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICAKKyAgICBOYXRpdmVF
cnJvclByb3RvdHlwZSogcHJvdG90eXBlID0gTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5hbWUsIHRoaXMpOworICAgIAor
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOyAvLyBFQ01BIDE1LjExLjcuNQorICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIERv
bnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBtX2Vycm9yU3RydWN0dXJlLnNl
dCh2bSwgdGhpcywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSkpOworICAgIEFTU0VSVChtX2Vycm9yU3RydWN0dXJlKTsKKyAgICBBU1NF
UlQobV9lcnJvclN0cnVjdHVyZS0+aXNPYmplY3QoKSk7Cit9CisKIHZvaWQgTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogewogICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCmluZGV4IDc0MGQzZjkz
MzI5MmZkMmFjY2I0Yjk5MDM0NDMxMmI5MzE5YWUxMTAuLjQzOGEzYWZiOWJiMGY2NDEyYzk3OTMy
MjMwYzg4NzEwOTYxZjU0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKQEAgLTUxLDE5ICs1MSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlKCkgeyByZXR1cm4g
bV9lcnJvclN0cnVjdHVyZS5nZXQoKTsgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkKLSAgICAgICAg
ewotICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIG5hbWUpOwotICAgICAgICAg
ICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwotCi0gICAgICAgICAgICBOYXRpdmVFcnJvclBy
b3RvdHlwZSogcHJvdG90eXBlID0gTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5hbWUsIHRoaXMpOwotCi0gICAgICAgICAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIERv
bnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsgLy8gRUNNQSAxNS4xMS43LjUKLSAgICAg
ICAgICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5
cGUsIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKLSAgICAgICAgICAgIG1fZXJy
b3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBFcnJvckluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlKSk7Ci0gICAgICAgICAgICBBU1NFUlQobV9lcnJv
clN0cnVjdHVyZSk7Ci0gICAgICAgICAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZS0+aXNPYmpl
Y3QoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYg
bmFtZSk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKFZN
JiwgU3RydWN0dXJlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eVNsb3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
U2xvdC5oCmluZGV4IGQ5MzhmYTMxNjQ1YWYyNmI3NTg1MTRkYjZiMjQ3OGYxODNlOWVlZTEuLmNm
ZTljNGQzMmJhNzY4Yzc0ZTRmZmJiMTkxMzUyNzlkZWJmMTE3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCkBAIC00Miw2ICs0Miw4IEBAIGVudW0g
QXR0cmlidXRlIHsKICAgICBGdW5jdGlvbiAgICAgPSAxIDw8IDQsICAvLyBwcm9wZXJ0eSBpcyBh
IGZ1bmN0aW9uIC0gb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCiAgICAgQWNjZXNzb3Ig
ICAgID0gMSA8PCA1LCAgLy8gcHJvcGVydHkgaXMgYSBnZXR0ZXIvc2V0dGVyCiAgICAgQ3VzdG9t
QWNjZXNzb3IgPSAxIDw8IDYsCisgICAgQnVpbHRpbiAgICAgICAgID0gMSA8PCA3LCAvLyBwcm9w
ZXJ0eSBpcyBhIGJ1aWx0aW4gZnVuY3Rpb24gLSBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJs
ZXMKKyAgICBCdWlsdGluT3JGdW5jdGlvbiA9IEJ1aWx0aW4gfCBGdW5jdGlvbiwgLy8gaGVscGVy
IG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogfTsKIAogY2xhc3MgUHJvcGVydHlTbG90
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVj
dG9yLmNwcAppbmRleCBiYzUxNmIwNmQ2NjUxZjBlNjgyYTIwMTdiZGY4YjAzYmFiZWQ2ZWEyLi4y
YzI0MzRiODdkMDRmNzQ5Y2IxMmU2MDJhYjU0Nzg0OTQ2YTkxZjFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCkBAIC0yMyw2
ICsyMyw3IEBACiAjaW5jbHVkZSAiUmVnRXhwQ29uc3RydWN0b3IuaCIKIAogI2luY2x1ZGUgIkVy
cm9yLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9u
cy5oIgogI2luY2x1ZGUgIlJlZ0V4cE1hdGNoZXNBcnJheS5oIgogI2luY2x1ZGUgIlJlZ0V4cFBy
b3RvdHlwZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFBy
b3RvdHlwZS5jcHAKaW5kZXggODlkN2FjMWI4Y2JmMWRiMGUxMjZmMWZjNzk2ZGZkNWZjODRiMmU1
OS4uOWRkYTBiYThkZTE0MTJlYWY0ZDI5MWRjZjBjNmIzOTY1N2ZiNjc3YSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCkBAIC0yNCw3
ICsyNCw3IEBACiAjaW5jbHVkZSAiQXJyYXlQcm90b3R5cGUuaCIKICNpbmNsdWRlICJFcnJvci5o
IgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVk
ZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCmluZGV4IGIyMDM4ODhkM2MxNmNk
YTNjMDAzNTA2MjA4YWUwODY5NWRjNWRhYWEuLmQwMjY2YTU5ZWYzZjU1YWEzNjk0ZjVmNzQxOGNm
NzhlMGFlMGQ4YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nl
dENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRD
b25zdHJ1Y3Rvci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU1NldC5oIgorI2lu
Y2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk1hcERhdGEuaCIKICNpbmNsdWRl
ICJTZXRQcm90b3R5cGUuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ09iamVjdC5jcHAKaW5kZXggNDQwYTYwOTQyMTkzMzgwMzFlNTkyN2FmNDZiMjg5ZGJjZmI1
YTcyOC4uODBlN2VhYThjNDkxY2I2ZDU0YTgzMjRjZTY0N2E2Y2RiN2U4ODc4MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCkBAIC0yMiw3ICsy
Miw5IEBACiAjaW5jbHVkZSAiU3RyaW5nT2JqZWN0LmgiCiAKICNpbmNsdWRlICJFcnJvci5oIgor
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3Qu
aCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgi
CiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggMDQyOTFmN2U4ZGQyNGU4YWIzM2Q3NWFmMWRh
NDU2OGYyYmM5OWU2OC4uMWVjYWI4NWMwYmRiMjg2OTg5NDU3N2E3NDEyNTRlMzY0NDE0OWQ4OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0yNywx
MiArMjcsMTggQEAKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9j
ay5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRHVtcENvbnRl
eHQuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIK
ICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCisjaW5jbHVkZSAiUHJvcGVydHlNYXBIYXNo
VGFibGUuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgorI2luY2x1ZGUgIlNsb3RW
aXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCisjaW5jbHVkZSAi
U3RydWN0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5o
IgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZExlYWtDb3VudGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNTJj
Y2Y0MjNhMTA0M2UxMDc5ZjJkOGIxODk0MjE5ODkwZTcxZjJiYy4uOTFhZDU1N2UyODliNDczNzA3
YjgzOWY2Y2U3MGNhMzQ0MTg2YTVmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKICNpbmNsdWRlICJBcml0
eUNoZWNrRmFpbFJldHVyblRodW5rcy5oIgogI2luY2x1ZGUgIkFycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludC5oIgorI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgogI2luY2x1ZGUg
IkNhbGxGcmFtZUlubGluZXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJD
b2RlQ2FjaGUuaCIKQEAgLTU1LDcgKzU2LDEwIEBACiAjaW5jbHVkZSAiSlNBUElWYWx1ZVdyYXBw
ZXIuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisj
aW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU0xvY2su
aCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgpAQCAtNjgsMTMgKzcyLDE2IEBACiAjaW5jbHVk
ZSAiTG9va3VwLmgiCiAjaW5jbHVkZSAiTWFwRGF0YS5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCisj
aW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiUGFyc2VyQXJlbmEuaCIKKyNpbmNsdWRlICJQ
cm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgogI2luY2x1ZGUgIlJlZ0V4cENhY2hlLmgiCiAjaW5jbHVk
ZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJTb3VyY2VQcm92aWRlckNhY2hlLmgiCiAjaW5jbHVkZSAiU3RyaWN0RXZh
bEFjdGl2YXRpb24uaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3Ry
dWN0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAjaW5jbHVk
ZSAiV2Vha01hcERhdGEuaCIKICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CkBAIC0yMjYsNiAr
MjMzLDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwg
bV9pbkRlZmluZU93blByb3BlcnR5KGZhbHNlKQogICAgICwgbV9jb2RlQ2FjaGUoQ29kZUNhY2hl
OjpjcmVhdGUoKSkKICAgICAsIG1fZW5hYmxlZFByb2ZpbGVyKG51bGxwdHIpCisgICAgLCBtX2J1
aWx0aW5FeGVjdXRhYmxlcyhCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZSgqdGhpcykpCiB7CiAg
ICAgaW50ZXJwcmV0ZXIgPSBuZXcgSW50ZXJwcmV0ZXIoKnRoaXMpOwogICAgIFN0YWNrQm91bmRz
IHN0YWNrID0gd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAppbmRleCA1YTg0MTA1ZWFmYjdhYmJhNWZhNDMxZWVlZGQ1NWQ3YTg5ZjU1Y2UyLi42OTU4
YWMzOTNiMWFlZmMwYmVmYmY2ZTRlYjhiNjgyNWNmN2M5YTBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJQcml2YXRlTmFtZS5oIgog
I2luY2x1ZGUgIlByb3RvdHlwZU1hcC5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgorI2lu
Y2x1ZGUgIlNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJUaHVu
a0dlbmVyYXRvcnMuaCIKICNpbmNsdWRlICJUeXBlZEFycmF5Q29udHJvbGxlci5oIgpAQCAtNjks
NiArNzAsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcml0eUNoZWNrRmFpbFJl
dHVyblRodW5rczsKKyAgICBjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXM7CiAgICAgY2xhc3MgQ29k
ZUJsb2NrOwogICAgIGNsYXNzIENvZGVDYWNoZTsKICAgICBjbGFzcyBDb21tb25JZGVudGlmaWVy
czsKQEAgLTQ5Nyw2ICs0OTksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCByZWdp
c3RlcldhdGNocG9pbnRGb3JJbXB1cmVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyJiwgV2F0Y2hw
b2ludCopOwogICAgICAgICAvLyBGSVhNRTogVXNlIEF0b21pY1N0cmluZyBvbmNlIGl0IGdvdCBt
ZXJnZWQgd2l0aCBJZGVudGlmaWVyLgogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFk
ZEltcHVyZVByb3BlcnR5KGNvbnN0IFN0cmluZyYpOworICAgICAgICAKKyAgICAgICAgQnVpbHRp
bkV4ZWN1dGFibGVzKiBidWlsdGluRXhlY3V0YWJsZXMoKSB7IHJldHVybiBtX2J1aWx0aW5FeGVj
dXRhYmxlcy5nZXQoKTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKQEAgLTUzNywxMCArNTQxLDkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIEpTVmFsdWUgbV9leGNlcHRpb247CiAgICAgICAgIGJvb2wgbV9pbkRlZmluZU93
blByb3BlcnR5OwogICAgICAgICBPd25QdHI8Q29kZUNhY2hlPiBtX2NvZGVDYWNoZTsKLSAgICAg
ICAgUmVmQ291bnRlZEFycmF5PFN0YWNrRnJhbWU+IG1fZXhjZXB0aW9uU3RhY2s7Ci0KICAgICAg
ICAgTGVnYWN5UHJvZmlsZXIqIG1fZW5hYmxlZFByb2ZpbGVyOwotCisgICAgICAgIE93blB0cjxC
dWlsdGluRXhlY3V0YWJsZXM+IG1fYnVpbHRpbkV4ZWN1dGFibGVzOworICAgICAgICBSZWZDb3Vu
dGVkQXJyYXk8U3RhY2tGcmFtZT4gbV9leGNlcHRpb25TdGFjazsKICAgICAgICAgSGFzaE1hcDxT
dHJpbmcsIFJlZlB0cjxXYXRjaHBvaW50U2V0Pj4gbV9pbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnRT
ZXRzOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFk
ZXJzL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwZmNjMzg0ZThl
ZGZjMzRiMTQwODNiODY1ZDM3MzgyMGY0MTY1YzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCkBAIC0w
LDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9KU1N0cmluZ0lubGluZXNfaAorI2RlZmlu
ZSBXZWJDb3JlX0ZXRF9KU1N0cmluZ0lubGluZXNfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTU3RyaW5nSW5saW5lcy5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcAppbmRl
eCAyZWRkY2RiYjlmMDA2Y2E3NjI2NjUwYjQyMDI3ODYyNmI5MjYxNDE3Li4zYzRlMGQ3YmJiMzFj
YWIxMmI1ZTZjOTc1Yzc0ZDNmNDg0ZTljYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAK
QEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDSlNWYWx1ZUlubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmlu
Z0lubGluZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwCmluZGV4IDU2NDljODVjYTA5NTg3NzQ4YTNk
YTA2Y2RkZDBjYTk5OWU1MGI4ZTcuLjNmNGQ4ZWZhZWI1N2YzMzAwM2U3M2E3ZTc4NDJlNDJjNzNj
ZTY0OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCQW55Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFueUN1c3RvbS5j
cHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJKU0lEQk9iamVjdFN0b3JlLmgiCiAjaW5j
bHVkZSAiSlNJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURC
RGF0YWJhc2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRh
YmFzZUN1c3RvbS5jcHAKaW5kZXggOWVhZTc1NjljNzA2MDNhNGZlZDBhZjE0YzRmODcxOGNkZTY0
YTZlMS4uZjQ5ZGZlOTBiNGU4MmQzOWVkY2JmOWJhMjlmMmFlNzk5YzBkZGYyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKQEAg
LTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIkpT
SURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0jaW5jbHVkZSA8
cnVudGltZS9KU1N0cmluZy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAKaW5kZXggNzRmZDM1NGIyODYwN2Nm
NzgyMmY4MDUzNDc5NzBmNWQ3YWM4YzgzMi4uNTQzNGIzYjdkNmM1NmVjYjBhMDNhMjc5NGM2NzM2
YTlhZGZiNzBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJP
YmplY3RTdG9yZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJ
REJPYmplY3RTdG9yZUN1c3RvbS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJJREJP
YmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIkpTSURCSW5kZXguaCIKICNpbmNsdWRlIDxydW50aW1l
L0Vycm9yLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgorI2luY2x1ZGUgPHJ1bnRp
bWUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2
MjVmOWY3MDI5MmZkYzE0YjhjYTUzMzc3MGMwNGQ0YjcwMDdmNjNjLi44OGM3YWQ3OTRkMjBmNWQ0
ODllYjg1ZDA3Nzk1ODUxZDM0NWEyMDcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTQtMDEt
MjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGl0IHBv
c3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBKUworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlZCB0aGUgdGVzdCByZXN1bHRzIGZv
ciBuZXcgZXJyb3IgbWVzc2FnZXMgKG5vdyB0aGF0IHRoZXkncmUKKyAgICAgICAgYWN0dWFsbHkg
aGVscGZ1bCksIGFuZCBhZGRlZCBhIGpzLXJlZ3Jlc3MgdGVzdCB0byB0cmFjayBwZXJmb3JtYW5j
ZS4KKworICAgICAgICAqIGpzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBq
cy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGpzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICoganMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbDogQWRkZWQuCisg
ICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmpz
OiBBZGRlZC4KKyAgICAgICAgKHRlc3QxKToKKyAgICAgICAgKHRlc3QyKToKKyAgICAgICAgKHRl
c3QzKToKKwogMjAxNC0wMS0yOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29t
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFBsYXkgQnJlYWtwb2ludCBTb3VuZCBpbiBGcm9u
dGVuZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0CmluZGV4IDU0MWI4YzM1
OGYwNjhhMGNlYTg4MmMxMDUxNzUzMjUxMTRjZDMzZjcuLmNjYTM2M2RjZTU4ZmJhOTVhNThjZTQ2
ZmNiNDhjMzhiZjU4YWRmNTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJheS1ldmVyeS1leHBlY3RlZC50
eHQKQEAgLTMwLDEyICszMCwxMiBAQCBQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoaXNC
aWdFbm91Z2hBbmRFeGNlcHRpb24pIHRocmV3IGV4Y2VwdGlvbiBleGNlcHRpbwogUEFTUyBbMTIs
IDU0LCAxOCwgMTMwLCA0NF0uZXZlcnkoaXNCaWdFbm91Z2hBbmRFeGNlcHRpb24pIHRocmV3IGV4
Y2VwdGlvbiBleGNlcHRpb24gZnJvbSBmdW5jdGlvbi4KIAogNS4wIFdyb25nIFR5cGUgZm9yIENh
bGxiYWNrIFRlc3QKLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSg1KSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2
ZXJ5KCd3cm9uZycpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNT
IFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkobmV3IE9iamVjdCgpKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KG51
bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwg
OCwgMTMwLCA0NF0uZXZlcnkodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBU
eXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCkgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVy
eSg1KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2Fs
bGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5
KCd3cm9uZycpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVy
eSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0u
ZXZlcnkobmV3IE9iamVjdCgpKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90
b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgs
IDEzMCwgNDRdLmV2ZXJ5KG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnBy
b3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwg
OCwgMTMwLCA0NF0uZXZlcnkodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBB
cnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBb
MTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJy
YXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KIAogNi4wIEVh
cmx5IEV4aXQgKCJTaG9ydCBDaXJjdWl0aW5nIikKIFBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5l
dmVyeShpc0JpZ0Vub3VnaFNob3J0Q2lyY3VpdCkgaXMgZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9qcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0
CmluZGV4IDJjMmE2OGNiMTA2ZGExMGYwODZiMjJjNWJmMmJmNWM4ZmU3OWUzM2UuLjVkOWVjYjc1
YThkYTc5YmE2NTYwNWU3ZWI5Y2Y4ZmMyNWZlMThhZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2pzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvanMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApA
QCAtMTUsNyArMTUsNyBAQCBQQVNTIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHVuZGVmaW5l
ZCwgMCwgMSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZQogUEFTUyBBcnJheS5wcm90
b3R5cGUuc29ydC5jYWxsKHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5k
ZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5zb3J0
LmNhbGwodW5kZWZpbmVkKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwodW5k
ZWZpbmVkLCAwLCAxKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90
IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKHVuZGVm
aW5lZCwgMCwgMSknKS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuY2FsbCh1bmRlZmlu
ZWQsIHt9KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9i
amVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuY2FsbCh1bmRlZmluZWQs
IHt9KScpLgotUEFTUyBBcnJheS5wcm90b3R5cGUuZXZlcnkuY2FsbCh1bmRlZmluZWQsIHRvU3Ry
aW5nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVj
dCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVkLCB0b1N0
cmluZyknKS4KK1BBU1MgQXJyYXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVkLCB0b1N0
cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJl
cXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSB1bmRlZmluZWQuCiBQQVNTIEFycmF5LnByb3RvdHlw
ZS5mb3JFYWNoLmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3Rv
dHlwZS5mb3JFYWNoLmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZyknKS4KIFBBU1MgQXJyYXkucHJv
dG90eXBlLnNvbWUuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJv
dG90eXBlLnNvbWUuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKScpLgogUEFTUyBBcnJheS5wcm90
b3R5cGUuaW5kZXhPZi5jYWxsKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlw
ZS5pbmRleE9mLmNhbGwodW5kZWZpbmVkLCAwKScpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjEyOTBjMGVlZmY4ZGU0MjE4MzNkOTJkMjdlOTUyNDE5MTc2MDRiOTYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVy
eQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhy
b3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnku
aHRtbCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU1Y2MxNzFjNDg3NWEzNTg1YmYxNGU1NDE1ZjVjZDBlNTgxZDU0NAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2
ZXJ5Lmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJz
Y3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5
LXByb3RvdHlwZS1ldmVyeS5qcyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3Rz
L2FycmF5LXByb3RvdHlwZS1ldmVyeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTRhYTE2MWMwY2U5OGIyYWIx
OGEzYTFhMWYwZGZhYWM5ZDdkMmUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzCkBAIC0wLDAgKzEs
MjkgQEAKK3ZhciByZXN1bHQgPSAwOworZnVuY3Rpb24gdGVzdDEoYSkgeworICAgIHJlc3VsdCA8
PCAxOworICAgIHJlc3VsdCsrOworICAgIHJldHVybiB0cnVlOworfQorZnVuY3Rpb24gdGVzdDIo
YSxiKSB7CisgICAgcmVzdWx0IF49IDM7CisgICAgcmVzdWx0ICo9IDM7CisgICAgcmV0dXJuIHRy
dWU7Cit9CitmdW5jdGlvbiB0ZXN0MyhhLGIsYykgeworICAgIHJlc3VsdCBePSByZXN1bHQgPj4g
MTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordmFyIHJlc3VsdCA9IDA7Cit2YXIgYXJyYXkgPSBb
XQorZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkKKyAgICBhcnJheVtpXSA9IDE7CisK
K2ZvciAodmFyIGkgPSAwOyBpIDwgMTA7IGkrKykgeworICAgIGFycmF5LmV2ZXJ5KHRlc3QxKTsK
KyAgICBhcnJheS5ldmVyeSh0ZXN0Mik7CisgICAgYXJyYXkuZXZlcnkodGVzdDMpOworfQorCitp
ZiAocmVzdWx0ICE9IDE0Mjg4MTA0OTYpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAi
ICsgcmVzdWx0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222684</attachid>
            <date>2014-01-30 10:33:29 -0800</date>
            <delta_ts>2014-01-30 10:41:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140130103328.patch</filename>
            <type>text/plain</type>
            <size>195522</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NjBlMTQzNTgwZTZkYzc1ZmEwNjY2YzlhMWUyZGMxZmMzZWYyY2MyLi4yNzBmZTZjZjRmNDQ2OGM4
NGRlNGViMjI3M2VmM2U4NTM4N2YxODBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
IFRoaXMgcmVzdWx0IG9mIHRoaXMgcmVmYWN0b3JpbmcKKyAgICAgICAgaXMgdGhhdCBDb21tb25J
ZGVudGlmaWVycywgYW5kIGEgZmV3IG90aGVyIG1pc2NlbGxhbmVvdXMgaGVhZGVycyBub3cKKyAg
ICAgICAgbmVlZCB0byBiZSBpbmNsdWRlZCBkaXJlY3RseSBhcyB0aGV5IHdlcmUgZm9ybWVybHkg
Y2FwdHVyZWQgdGhyb3VnaCBvdGhlcgorICAgICAgICBwYXRocy4KKworICAgICAgICBJbiBhZGRp
dGlvbiB0aGlzIGFkZHMgYSBmbGFnIHRvIHRoZSBMb29rdXAgdGFibGUncyBoYXNoZW50cnkgdG8g
aW5kaWNhdGUKKyAgICAgICAgdGhhdCBhIHN0YXRpYyBmdW5jdGlvbiBpcyBhY3R1YWxseSBiYWNr
ZWQgYnkgSlMuIFRoZXJlIGlzIHRoZW4gYSBsb3Qgb2YKKyAgICAgICAgbG9naWMgdG8gdGhyZWFk
IHRoZSBzcGVjaWFsIG5hdHVyZSBvZiB0aGUgZnVuY3RvbiB0byB3aGVyZSBpdCBtYXR0ZXJzLgor
ICAgICAgICBUaGlzIGFsbG93cyB0b1N0cmluZygpLCAuY2FsbGVyLCBldGMgdG8gbWltaWMgdGhl
IGJlaGF2aW91ciBvZiBhIGhvc3QKKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAgICAgTm90ZXMg
b24gd3JpdGluZyBidWlsdGluczoKKyAgICAgICAgIC0gRWFjaCBmdW5jdGlvbiBpcyBjb21waWxl
ZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBvdGhlcnMsIGFuZCB0aG9zZQorICAgICAgICAgICBpbXBs
ZW1lbnRhdGlvbnMgY2Fubm90IGN1cnJlbnRseSBjYXB0dXJlIGFsbCBnbG9iYWwgcHJvcGVydGll
cyAoYXMKKyAgICAgICAgICAgdGhhdCBjb3VsZCBiZSBwb3RlbnRpYWxseSB1bnNhZmUpLiBJZiBh
IGZ1bmN0aW9uIGRvZXMgY2FwdHVyZSBhCisgICAgICAgICAgIGdsb2JhbCB3ZSB3aWxsIGRlbGli
ZXJhdGVseSBjcmFzaC4KKyAgICAgICAgIC0gRm9yIHRob3NlICJnbG9iYWwiIHByb3BlcnRpZXMg
dGhhdCB3ZSBkbyB3YW50IGFjY2VzcyB0bywgd2UgdXNlCisgICAgICAgICAgIHRoZSBAIHByZWZp
eCwgZS5nLiBPYmplY3QodGhpcykgYmVjb21lcyBAT2JqZWN0KHRoaXMpLiBUaGUgQCBpZGVudGlm
aWVycworICAgICAgICAgICBhcmUgcHJpdmF0ZSBuYW1lcywgYW5kIGJlaGF2ZSBqdXN0IGxpa2Ug
cmVndWxhciBwcm9wZXJ0aWVzLCBvbmx5CisgICAgICAgICAgIHdpdGhvdXQgdGhlIHJpc2sgb2Yg
YWR1bHRlcmF0aW9uLiBBZ2FpbiwgaW4gdGhlIEBPYmplY3QgY2FzZSwgd2UKKyAgICAgICAgICAg
ZXhwbGljaXRseSBkdXBsaWNhdGUgdGhlIE9iamVjdENvbnN0cnVjdG9yIHJlZmVyZW5jZSBvbiB0
aGUgR2xvYmFsT2JqZWN0CisgICAgICAgICAgIHNvIHRoYXQgd2UgaGF2ZSBndWFyYW50ZWVkIGFj
Y2VzcyB0byB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgY29uc3RydWN0
b3IuCisgICAgICAgICAtIGNhbGwsIGFwcGx5LCBldmFsLCBhbmQgRnVuY3Rpb24gYXJlIGFsbCBy
ZWplY3RlZCBpZGVudGlmaWVycywgYWdhaW4KKyAgICAgICAgICAgdG8gcHJldmVudCBhbnl0aGlu
ZyBmcm9tIGFjY2lkZW50YWxseSB1c2luZyBhbiBhZHVsdGVyYXRlZCBvYmplY3QuCisgICAgICAg
ICAgIEluc3RlYWQgQGNhbGwgYW5kIEBhcHBseSBhcmUgYXZhaWxhYmxlLCBhbmQgaGFwcGlseSB0
aGV5IGNvbXBsZXRlbHkKKyAgICAgICAgICAgZHJvcCB0aGUgbmVxX3B0ciBpbnN0cnVjdGlvbiBh
cyB0aGV5J3JlIGRlZmluZWQgYXMgYWx3YXlzIGJlaW5nIHRoZQorICAgICAgICAgICBvcmlnaW5h
bCBjYWxsL2FwcGx5IGZ1bmN0aW9ucy4KKworICAgICAgICBUaGVzZSByZXN0cmljdGlvbnMgYXJl
IGp1c3QgaW50ZW5kZWQgdG8gbWFrZSBpdCBoYXJkZXIgdG8gYWNjaWRlbnRhbGx5CisgICAgICAg
IG1ha2UgY2hhbmdlcyB0aGF0IGFyZSBpbmNvcnJlY3QgKGZvciBpbnN0YW5jZSBjYWxsaW5nIHdo
YXRldmVyIGhhcyBiZWVuCisgICAgICAgIGFzc2lnbmVkIHRvIGdsb2JhbC5PYmplY3QsIGluc3Rl
YWQgb2YgdGhlIG9yaWdpbmFsIGNvbnN0cnVjdG9yIGZ1bmN0aW9uKS4KKyAgICAgICAgSG93ZXZl
ciwgbWFraW5nIGEgbWlzdGFrZSBsaWtlIHRoaXMgc2hvdWxkIHJlc3VsdCBpbiBhIHB1cmVseSBz
ZW1hbnRpYworICAgICAgICBlcnJvciBhcyBmdW5kYW1lbnRhbGx5IHRoZXNlIGZ1bmN0aW9ucyBh
cmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlCisgICAgICAgIHJlZ3VsYXIgSlMgY29kZSBp
biB0aGUgaG9zdCBnbG9iYWwsIGFuZCBoYXZlIG5vIG1vcmUgcHJpdmlsZWdlcyB0aGFuCisgICAg
ICAgIGFueSBvdGhlciBKUy4KKworICAgICAgICBUaGUgaW5pdGlhbCBwcm9vZiBvZiBjb25jZXB0
IGlzIEFycmF5LnByb3RvdHlwZS5ldmVyeSwgdGhpcyBzaG93cyBhIDY1JQorICAgICAgICBwZXJm
b3JtYW5jZSBpbXByb3ZlbWVudCwgYW5kIHRoYXQgaW1wcm92ZW1lbnQgaXMgc2lnbmlmaWNhbnRs
eSBodXJ0IGJ5CisgICAgICAgIG91ciBwb29yIG9wdGltaXNhdGlvbiBvZiBvcF9pbi4KKworICAg
ICAgICBBcyB0aGlzIGlzIHN1Y2ggYSBsaW1pdGVkIGZ1bmN0aW9uLCB3ZSBoYXZlIG5vdCB5ZXQg
ZXhwb3J0ZWQgYWxsIHN5bWJvbHMKKyAgICAgICAgdGhhdCB3ZSBjb3VsZCBwb3NzaWJseSBuZWVk
LCBidXQgYXMgd2UgaW1wbGVtZW50IG1vcmUsIHRoZSBsaWtlbGlob29kCisgICAgICAgIG9mIGVu
Y291bnRlcmluZyBtaXNzaW5nIGZlYXR1cmVzIHdpbGwgcmVkdWNlLgorCisgICAgICAgIFRoaXMg
ZGlkIHJlcXVpcmUgYnJlYWtpbmcgb3V0IGEgSlNTdHJpbmdJbmxpbmVzIGhlYWRlciwgYW5kIHJl
cXVpcmVkCisgICAgICAgIGZpeGluZyBhIGZldyBvYmplY3RzIHRoYXQgd2VyZSB0cnlpbmcgdG8g
dXNpbmcgUHJvcGVydHlOYW1lOjpwdWJsaWNOYW1lCisgICAgICAgIHJhdGhlciB0aGFuIFByb3Bl
cnR5TmFtZTo6dWlkLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0
eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dCk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRpY1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWNGdW5jdGlvbkdl
dHRlcik6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tH
ZXR0ZXIpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBidWlsdGlucy9BcnJheS5wcm90b3R5cGUuanM6CisgICAgICAgIChldmVyeSk6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkJ1aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKToKKyAgICAgICAgKEpTQzo6
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSk6CisgICAgICAgICog
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVj
dXRhYmxlczo6Y3JlYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tG
b3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6dG9TdHJpY3RuZXNzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNCdWlsdGluRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBjcmVhdGVfaGFz
aF90YWJsZToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZ2Vu
ZXJhdGUtanMtYnVpbHRpbnM6IEFkZGVkLgorICAgICAgICAoZ2V0Q29weXJpZ2h0KToKKyAgICAg
ICAgKGdldEZ1bmN0aW9ucyk6CisgICAgICAgIChnZW5lcmF0ZUNvZGUpOgorICAgICAgICAobWFu
Z2xlTmFtZSk6CisgICAgICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSWRlbnRp
Zmllcik6CisgICAgICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChTb3VyY2VDb2RlKToK
KyAgICAgICAgKFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKFZNKToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvUHJvdG9DYWxsRnJhbWUuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUp
OgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpM
ZXhlcik6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpM
ZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFy
Pjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAg
ICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcik6CisgICAgICAgICog
cGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OnNldENsb3NlZFZh
cmlhYmxlcyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
Tm9kZTo6Y2FwdHVyZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OnNldENs
b3NlZFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmluaXNoUGFy
c2luZyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRU
b2tlblRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OmdldFVzZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNsb3NlZFZhcmlh
Ymxlcyk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9k
ZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAgICAgICogcnVudGlt
ZS9BcmdMaXN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAg
ICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJh
dG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpn
ZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpD
b21tb25JZGVudGlmaWVycyk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQ
cml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQdWJsaWNO
YW1lKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzRXhjZXB0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxl
OjpleGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpleGVj
dXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aXNCdWlsdGlu
RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1l
L0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFi
bGVHZXQpOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0KToKKyAg
ICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgICogcnVudGltZS9K
U0NlbGxJbmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6c291cmNlQ29kZSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzSG9zdE9y
QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6aXNCdWlsdGluRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIpOgorICAgICAg
ICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9w
ZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgICogcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6Om9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpnZXRDbGFzc1Byb3BlcnR5TmFtZXMpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZ0lubGlu
ZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjppbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9i
amVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgICAgRG9uJ3QgcmVw
b3J0IHByaXZhdGUgbmFtZXMuCisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6c3ltYm9s
VGFibGVQdXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChKU0M6OnNldFVwU3RhdGlj
RnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlND
OjpIYXNoRW50cnk6OmJ1aWx0aW5HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpIYXNoRW50cnk6
OnByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpwcm9wZXJ0eVB1dHRl
cik6CisgICAgICAgIChKU0M6Okhhc2hUYWJsZTo6ZW50cnkpOgorICAgICAgICAoSlNDOjpnZXRT
dGF0aWNQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpnZXRTdGF0aWNWYWx1ZVNsb3QpOgor
ICAgICAgICAoSlNDOjpwdXRFbnRyeSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6YnVp
bHRpbkV4ZWN1dGFibGVzKToKKwogMjAxNC0wMS0yOSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3Nz
eUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikgbGVmdG92ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTEzZjE4OGFlNjUyYjk1ZjNiNTcyYWMxNzcwZWEx
MjViYmFlNzVkMi4uNjMyYWNjNDNkYzE2YzcxMzRkNThjMDRiN2E1Y2U1NmE5MTk4ZWNjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE0LTAxLTI5ICBPbGl2ZXIgSHVudCAgPG9saXZl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBpbXBsZW1lbnQgSlMg
YnVpbHRpbnMgaW4gSlMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNzg4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVwZGF0aW5nIGZvciB0aGUgbmV3bHkgcmVxdWlyZWQgaGVhZGVycy4KKworICAgICAg
ICBUZXN0OiBqcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sCisKKyAgICAgICAg
KiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oOiBBZGRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcDoKKwogMjAxNC0wMS0zMCAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViUGFnZTo6ZGV0ZXJtaW5lUHJpbWFyeVNu
YXBzaG90dGVkUGx1Z0luIGlzIHNsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggNWJlMDUzZjFlMDg2YjQzZTY4
NmMzNjc0ZGFlN2M1MTYwNWEyODZlNy4uMGVjZWQ1MWYzZTJkNWI2MjFkYWRmMDU3NDlmNWU3NDY2
YTA2ZjUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBib29sIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZQogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKICAg
ICBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHByb3BlcnR5TmFtZVJlZjsKICAgICAKLSAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpT
Q2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xh
c3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgLy8gb3B0aW9uYWwgb3B0
aW1pemF0aW9uIHRvIGJ5cGFzcyBnZXRQcm9wZXJ0eSBpbiBjYXNlcyB3aGVuIHdlIG9ubHkgbmVl
ZCB0byBrbm93IGlmIHRoZSBwcm9wZXJ0eSBleGlzdHMKICAgICAgICAgICAgIGlmIChKU09iamVj
dEhhc1Byb3BlcnR5Q2FsbGJhY2sgaGFzUHJvcGVydHkgPSBqc0NsYXNzLT5oYXNQcm9wZXJ0eSkg
ewpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiAgICAgUmVmUHRy
PE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgSlNWYWx1ZVJlZiB2YWx1ZVJl
ZiA9IHRvUmVmKGV4ZWMsIHZhbHVlKTsKICAgICAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9
IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJl
bnRDbGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBz
ZXRQcm9wZXJ0eSA9IGpzQ2xhc3MtPnNldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFwcm9wZXJ0eU5hbWVSZWYpCkBAIC0zNDMsNyArMzQzLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm8KICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CiAgICAg
UmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0Ns
YXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNz
ID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdERlbGV0
ZVByb3BlcnR5Q2FsbGJhY2sgZGVsZXRlUHJvcGVydHkgPSBqc0NsYXNzLT5kZWxldGVQcm9wZXJ0
eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lUmVmKQpAQCAtNTY0LDcgKzU2
NCw3IEBAIEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiB7CiAgICAgSlNPYmplY3RSZWYgdGhpc1Jl
ZiA9IHRvUmVmKHRoaXMpOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gY2xhc3NS
ZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAg
ICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXMgPSBq
c0NsYXNzLT5zdGF0aWNWYWx1ZXMoZXhlYykpIHsKICAgICAgICAgICAgICAgICBpZiAoU3RhdGlj
VmFsdWVFbnRyeSogZW50cnkgPSBzdGF0aWNWYWx1ZXMtPmdldChuYW1lKSkgewpAQCAtNjAwLDcg
KzYwMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGlj
RnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFCiAgICAgaWYgKFBhcmVudDo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdDIpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QyLmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFt
ZSkpOwogCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsK
ICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqLT5jbGFzc1JlZigpOyBq
c0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlm
IChPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGUqIHN0YXRpY0Z1bmN0aW9ucyA9IGpz
Q2xhc3MtPnN0YXRpY0Z1bmN0aW9ucyhleGVjKSkgewogICAgICAgICAgICAgICAgIGlmIChTdGF0
aWNGdW5jdGlvbkVudHJ5KiBlbnRyeSA9IHN0YXRpY0Z1bmN0aW9ucy0+Z2V0KG5hbWUpKSB7CkBA
IC02MjYsNyArNjI2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpjYWxsYmFja0dldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWQKICAgICBKU09iamVjdFJl
ZiB0aGlzUmVmID0gdG9SZWYodGhpc09iaik7CiAgICAgUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBw
cm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2Jq
LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsK
ICAgICAgICAgICAgIGlmIChKU09iamVjdEdldFByb3BlcnR5Q2FsbGJhY2sgZ2V0UHJvcGVydHkg
PSBqc0NsYXNzLT5nZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlO
YW1lUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDI3YmM0YzE3ZjNk
ZmVlYjYxZDI1MjMyM2ZkODc4YzQ0NzgwZjc0YzUuLjQxMzRhNmMxZTNlZjMyYmU4NWE2MjQ1ZDdl
YjVlMDU1MmZlNTEzZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUy
LDYgKzUyLDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9TY3Jp
cHRPYmplY3QuY3BwCiAgICAgYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCiAKKyAgICBidWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCisKICAgICBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Q
cm9maWxlLmNwcAogICAgIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9C
eXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC04MTUsMTYgKzgxNywyNyBAQCBhZGRfY3VzdG9tX2Nv
bW1hbmQoCiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3Jl
X0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0vQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTLmpzb24gLS1vdXRwdXRf
aF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0cHV0X2Nw
cF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0cHV0X2pz
X2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIgLS1vdXRwdXRfdHlw
ZSBKYXZhU2NyaXB0IC0td3JpdGVfYWx3YXlzICYmIG1rZGlyIC1wICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yICYmIGNwICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTRnJvbnRlbmREaXNwYXRj
aGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNU
eXBlQnVpbGRlcnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3Bl
Y3RvcgogICAgIFZFUkJBVElNKQogCisjIEpTQ0J1aWx0aW5zCitmaWxlKEdMT0IgSlNDQnVpbHRp
bnNfanNfZmlsZXMgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9idWlsdGlucy8qLmpzIikK
K2FkZF9jdXN0b21fY29tbWFuZCgKKyAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19KQVZBU0NS
SVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBU
Q09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKKyAgIE1BSU5fREVQRU5ERU5DWSAke0NNQUtFX0NVUlJF
TlRfU09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMKKyAgIERFUEVORFMgJHtKU0NCdWls
dGluc19qc19maWxlc30KKyAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9D
VVJSRU5UX1NPVVJDRV9ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zICR7SlNDQnVpbHRpbnNfanNf
ZmlsZXN9ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMu
aCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcAor
ICAgVkVSQkFUSU0pCisKIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTQmFja2VuZERp
c3BhdGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0v
SW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwCisgICAgJHtE
RVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5jcHAKICkKIAog
bGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUwogICAgICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaAogICAg
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNGcm9udGVu
ZERpc3BhdGNoZXJzLmgKICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9
L0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgKKyAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NS
SVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKICkKIAogYWRkX2N1c3RvbV9jb21tYW5kKApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAxMTU2ZTk3ZmQ4ODYy
NTU3YzljZjhkM2I2OGJmNGQwM2MzZThiYThmLi4yNjZhYTVmMDgxNGI3MjBmZWI1NmI3ZDQxY2Yx
NzNjNTBjNWE0YjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQpAQCAtNTcsNiArNTcsNyBAQCBhbGwgOiBcCiAgICAgUmVnRXhwT2JqZWN0Lmx1dC5oIFwKICAg
ICBTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgdWRpczg2X2l0YWIuaCBcCisgICAgSlND
QnVpbHRpbnMgXAogIwogCiAjIGxvb2t1cCB0YWJsZXMgZm9yIGNsYXNzZXMKQEAgLTc5LDYgKzgw
LDE0IEBAIEtleXdvcmRMb29rdXAuaDogS2V5d29yZExvb2t1cEdlbmVyYXRvci5weSBLZXl3b3Jk
cy50YWJsZQogdWRpczg2X2l0YWIuaDogJChKYXZhU2NyaXB0Q29yZSkvZGlzYXNzZW1ibGVyL3Vk
aXM4Ni9pdGFiLnB5ICQoSmF2YVNjcmlwdENvcmUpL2Rpc2Fzc2VtYmxlci91ZGlzODYvb3B0YWJs
ZS54bWwKIAkoUFlUSE9OUEFUSD0kKEphdmFTY3JpcHRDb3JlKS9kaXNhc3NlbWJsZXIvdWRpczg2
IHB5dGhvbiAkKEphdmFTY3JpcHRDb3JlKS9kaXNhc3NlbWJsZXIvdWRpczg2L2l0YWIucHkgJChK
YXZhU2NyaXB0Q29yZSkvZGlzYXNzZW1ibGVyL3VkaXM4Ni9vcHRhYmxlLnhtbCB8fCBleGl0IDEp
CiAKKyMgYnVpbHRpbiBmdW5jdGlvbnMKKy5QSE9OWTogSlNDQnVpbHRpbnMKKworSlNDQnVpbHRp
bnM6IEpTQ0J1aWx0aW5zLmggSlNDQnVpbHRpbnMuY3BwCitKU0NCdWlsdGlucy5oOiAkKEphdmFT
Y3JpcHRDb3JlKS9nZW5lcmF0ZS1qcy1idWlsdGlucyAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlu
cy8qLmpzCisJcHl0aG9uICReICRACisKK0pTQ0J1aWx0aW5zLmNwcDogSlNDQnVpbHRpbnMuaAog
CiAjIEluc3BlY3RvciBpbnRlcmZhY2VzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KaW5kZXggY2RiNTQyNmIwNmI1MmE5ODI1NmVlOTA1OGJiYThmMTFlZWE2OWVl
MC4uYWZlOTY3MmI1YjFlZTkyNzExYmVkZDQ3NWU5YTEyODIwM2M4MTM2NSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTEwMiw2ICsxMDIsOCBAQCBqYXZh
c2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGlu
Z3MvU2NyaXB0T2JqZWN0LmggXAogICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9T
Y3JpcHRWYWx1ZS5jcHAgXAogICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3Jp
cHRWYWx1ZS5oIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmNwcCBcCisgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5FeGVjdXRhYmxlcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlB
bGxvY2F0aW9uUHJvZmlsZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
cnJheUFsbG9jYXRpb25Qcm9maWxlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9BcnJheVByb2ZpbGUuY3BwIFwKQEAgLTEyNDEsNyArMTI0Myw5IEBAIGphdmFzY3JpcHRjb3Jl
X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpT
RnJvbnRlbmREaXNwYXRjaGVycy5jcHAgXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3Jl
L0luc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAgXAotCURlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgKKwlEZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oIFwKKwlEZXJpdmVkU291
cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5jcHAgXAorCURlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmgKIAogbGxpbnRfbm9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagppbmRleCA1ZWRlZmRiZTg1NWY5NmE2
MjY4ZDg1NzNiZWMxZDBjM2Q4NThhYTVjLi5hMTJkYjE4MzQ4NmRmYmJjYTgzZjNhNzhlOWNmOTg2
MzFiMjY1M2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTMw
OSw2ICszMDksNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0
RnVuY3Rpb25DYWxsLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdz
XFNjcmlwdE9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xTY3JpcHRWYWx1ZS5jcHAiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxidWlsdGlu
c1xCdWlsdGluRXhlY3V0YWJsZXMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
Ynl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxieXRlY29kZVxBcnJheVByb2ZpbGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cYnl0ZWNvZGVcQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCIgLz4KQEAgLTcyMSw2
ICs3MjIsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEluc3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JKU0Zyb250ZW5kRGlz
cGF0Y2hlcnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEluc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmNwcCIgLz4KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NCdWlsdGlucy5jcHAiIC8+CiAg
IDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEFycmF5Q29uc3RydWN0b3IubHV0LmgiIC8+CkBAIC03NTAs
NiArNzUyLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xSZWdFeHBPYmplY3QubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcUmVnRXhwUHJvdG90eXBlLmx1dC5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFN0cmluZ0NvbnN0cnVjdG9y
Lmx1dC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEpTQ0J1aWx0aW5zLmgiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEFQSUNhbGxiYWNrRnVuY3Rpb24uaCIgLz4KQEAg
LTc5OCw2ICs4MDEsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2Ny
aXB0RnVuY3Rpb25DYWxsLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xTY3JpcHRPYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdz
XFNjcmlwdFZhbHVlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxidWlsdGluc1xC
dWlsdGluRXhlY3V0YWJsZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVj
b2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGJ5dGVjb2RlXEFycmF5UHJvZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cYnl0ZWNvZGVcQnlWYWxJbmZvLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRl
cnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggODdlMTJhNDcxNThiYjYyMjRkNDlmZDYyMjk3
OGM0YTljNDQzNWE2NS4uODY5YzFmNTg5YmNiNjg2ZWI5Y2YyMGMwOTZiZTFiODNhNTUxZTI0YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpA
QCAtNyw2ICs3LDkgQEAKICAgICA8RmlsdGVyIEluY2x1ZGU9ImJpbmRpbmdzIj4KICAgICAgIDxV
bmlxdWVJZGVudGlmaWVyPnswYmFjZTEyMy00NTgyLWVlYmMtOTMxNC03ODE5YjM3NmMxOTh9PC9V
bmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iYnVp
bHRpbnMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezNiOWQ3MmE1LTEzNWItNDNiMy1hNTI0
LWM2ZDJiOWQyOWQzNX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CiAgICAgPEZp
bHRlciBJbmNsdWRlPSJieXRlY29kZSI+CiAgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NzY2MDg4
YTAtMTIxNi00ODU0LWFhNDMtNTYwYzVlMjgzNjY4fTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8
L0ZpbHRlcj4KQEAgLTEwOCw2ICsxMTEsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
YXNzZW1ibGVyXE1hY3JvQXNzZW1ibGVyLmNwcCI+CiAgICAgICA8RmlsdGVyPmFzc2VtYmxlcjwv
RmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnVp
bHRpbnNcQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCI+CisgICAgICA8RmlsdGVyPmJ1aWx0aW5zPC9G
aWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRl
Y29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCI+CiAgICAgICA8RmlsdGVyPmJ5dGVjb2Rl
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0xMzI5LDYgKzEzMzUsOSBAQAogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTVHlw
ZUJ1aWxkZXJzLmNwcCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmNwcCI+CisgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNl
czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91
cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxBUElDYWxsYmFja0Z1bmN0aW9uLmgi
PgpAQCAtMTQ1NCw2ICsxNDYzLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFzc2Vt
YmxlclxYODZBc3NlbWJsZXIuaCI+CiAgICAgICA8RmlsdGVyPmFzc2VtYmxlcjwvRmlsdGVyPgog
ICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnVpbHRpbnNcQnVp
bHRpbkV4ZWN1dGFibGVzLmgiPgorICAgICAgPEZpbHRlcj5idWlsdGluczwvRmlsdGVyPgorICAg
IDwvQ2xDb21waWxlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlB
bGxvY2F0aW9uUHJvZmlsZS5oIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAg
ICA8L0NsSW5jbHVkZT4KQEAgLTI1NTAsNiArMjU2Miw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcQXJyYXlQcm90b3R5cGUubHV0LmgiPgogICAg
ICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NCdWlsdGlu
cy5oIj4KKyAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CisgICAgPC9DbElu
Y2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFZNLmgiPgogICAgICAg
PEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDI3ZTg3Njc0MGE5NjRiMDI4OTg0ZWQ2NzgxNjE4MjBhNWRjZjc3
YzQuLjkxMTU3M2FiMTdkMzM5NzRhYTdjOWEwMTFkYjIwMGIwOWFmNzhiZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MjIsNyArOTIyLDYgQEAKIAkJQTUwM0ZBMTkxODhFMEZC
MDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTMxODhFMEZBRjAwMTEwRjE0IC8qIEph
dmFTY3JpcHRDYWxsRnJhbWUuY3BwICovOyB9OwogCQlBNTAzRkExQTE4OEUwRkIwMDAxMTBGMTQg
LyogSmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTUwM0ZBMTQxODhFMEZBRjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxs
RnJhbWUuaCAqLzsgfTsKIAkJQTUwM0ZBMUIxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlw
dENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTAzRkExNTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNw
cCAqLzsgfTsKLQkJQTUwM0ZBMUMxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxG
cmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUw
M0ZBMTYxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9Owog
CQlBNTAzRkExRDE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90
eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
MDNGQTE3MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUu
Y3BwICovOyB9OwogCQlBNTAzRkExRTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2Fs
bEZyYW1lUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNTAzRkExODE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1l
UHJvdG90eXBlLmggKi87IH07CiAJCUE1MDNGQTIxMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRC
cmVha3BvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNTAzRkExRjE4OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0QnJlYWtwb2ludC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDI0LDYgKzEwMjMs
NyBAQAogCQlBNzBCMDgzMjE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MEIwODMwMTdB
MEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guY3BwICovOyB9OwogCQlBNzBCMDgzMzE3
QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzBCMDgzMTE3QTBCNzlCMDBEQUYxNEIgLyogREZH
QmluYXJ5U3dpdGNoLmggKi87IH07CiAJCUE3MTIzNkU1MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRP
cGNvZGVzMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTcxMjM2RTQxMTk1RjMzQzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgKi87
IH07CisJCUE3MURBODBGMTg4MERCQUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MURBODBFMTg4MERC
QUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzIwMjhCNjE3OTc2MDFFMDA5ODAyOEMgLyogSlND
VGVzdFJ1bm5lclV0aWxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3MjAyOEI0MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMu
Y3BwICovOyB9OwogCQlBNzIwMjhCODE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0
aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIw
MjhCNTE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcyMDI4QkExNzk3NjAzRDAw
OTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIwMjhCOTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlv
bklubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTE1MCw2ICsxMTUwLDEwIEBACiAJCUE3Q0EzQUU4MTdEQTQxQUUwMDY1MzhBRiAvKiBK
U1dlYWtNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3Q0EzQUUyMTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuaCAqLzsgfTsKIAkJQTdDQTNB
RUIxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0EzQUU5MTdEQTUxNjgwMDY1MzhBRiAvKiBX
ZWFrTWFwRGF0YS5jcHAgKi87IH07CiAJCUE3Q0EzQUVDMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFr
TWFwRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTdDQTNBRUExN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmggKi87IH07CisJCUE3RDgw
MUE0MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTExODgwRDY2RTAwMjZD
MzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi87IH07CisJCUE3RDgwMUE1MTg4MEQ2NkUw
MDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGlu
RXhlY3V0YWJsZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlBN0Q4MDFBODE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTYxODgwRDZB
ODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCAqLzsgfTsKKwkJQTdEODAxQTkxODgwRDZBODAw
MjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBN0Q4MDFBNzE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBN0Q4OUNG
MjE3QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4OUNFMzE3QTBCOENDMDA3NzNBRDggLyog
REZHQmFzaWNCbG9jay5jcHAgKi87IH07CiAJCUE3RDg5Q0YzMTdBMEI4Q0MwMDc3M0FEOCAvKiBE
RkdCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBN0Q4OUNFNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRp
b25TZXQuY3BwICovOyB9OwogCQlBN0Q4OUNGNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJ
bnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3RDg5Q0U1MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNDYyLDYg
KzI0NjYsOCBAQAogCQlBNzEyMzZFNDExOTVGMzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVE9wY29kZXMzMl82
NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MThGNjFBMTE3NTRBMjEwMDI0
NjVBNyAvKiBSZWdFeHBKaXRUYWJsZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVnRXhwSml0VGFibGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MThG
ODIxMTE3OEVCNEIwMDI0NjVBNyAvKiBjcmVhdGVfcmVnZXhfdGFibGVzICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IGZp
bGVFbmNvZGluZyA9IDQ7IHBhdGggPSBjcmVhdGVfcmVnZXhfdGFibGVzOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBNzFEQTgwRDE4ODBENzFGMDBEMUYyOTkgLyogZ2VuZXJhdGUtanMt
YnVpbHRpbnMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSAiZ2VuZXJhdGUt
anMtYnVpbHRpbnMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzFEQTgwRTE4ODBE
QkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTU3RyaW5nSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNzIwMjhCNDE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI1MTc5NzYwMUUwMDk4MDI4QyAv
KiBKU0NUZXN0UnVubmVyVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNDVGVzdFJ1bm5lclV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAy
OEI5MTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0Z1bmN0aW9uSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjU5MCw2ICsyNTk2LDExIEBACiAJCUE3Q0EzQUUyMTdEQTQxQUUwMDY1
MzhBRiAvKiBKU1dlYWtNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNX
ZWFrTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Q0EzQUU5MTdEQTUxNjgw
MDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWFrTWFwRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3
Q0EzQUVBMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWFrTWFwRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBN0Q4MDFBMDE4ODBENjZFMDAyNkMzOUIgLyogQXJyYXkucHJvdG90eXBlLmpzICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gQXJyYXkucHJvdG90eXBlLmpzOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFBMTE4ODBENjZFMDAyNkMzOUIgLyog
QnVpbHRpbkV4ZWN1dGFibGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVpbHRpbkV4ZWN1dGFibGVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWls
dGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NCdWlsdGlu
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUE3MTg4MEQ2QTgwMDI2
QzM5QiAvKiBKU0NCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0NCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0Q4OUNFMzE3QTBC
OENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBERkdCYXNpY0Jsb2NrLmNwcDsgcGF0aCA9IGRmZy9ERkdCYXNpY0Jsb2Nr
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdEODlDRTQxN0EwQjhDQzAwNzcz
QUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcDsgcGF0aCA9IGRmZy9ERkdCbG9j
a0luc2VydGlvblNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RDg5Q0U1
MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCbG9ja0luc2VydGlvblNldC5oOyBwYXRoID0gZGZnL0RG
R0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTI2
LDYgKzI5MzcsNyBAQAogCQkJCTg2MDRGNEYyMTQzQTZDNDQwMEIyOTVGNSAvKiBDaGFuZ2VMb2cg
Ki8sCiAJCQkJRjY5MkE4NTQwMjU1NTk3RDAxRkY2MEY3IC8qIGNyZWF0ZV9oYXNoX3RhYmxlICov
LAogCQkJCUE3MThGODIxMTE3OEVCNEIwMDI0NjVBNyAvKiBjcmVhdGVfcmVnZXhfdGFibGVzICov
LAorCQkJCUE3MURBODBEMTg4MEQ3MUYwMEQxRjI5OSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAq
LywKIAkJCQk0NUUxMkQ4ODA2QTQ5QjBGMDBFOURGODQgLyoganNjLmNwcCAqLywKIAkJCQlGNjhF
QkI4QzAyNTVENEM2MDFGRjYwRjcgLyogY29uZmlnLmggKi8sCiAJCQkJRjVDMjkwRTYwMjg0Rjk4
RTAxODYzNUNBIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggKi8sCkBAIC0yOTM0LDYgKzI5NDYs
NyBAQAogCQkJCTE0MzJFQkQ3MEEzNENBRDQwMDcxN0I5RiAvKiBBUEkgKi8sCiAJCQkJOTY4OENC
MTIwRUQxMkI0RTAwMUQ2NDlGIC8qIGFzc2VtYmxlciAqLywKIAkJCQlBNTRDRjJFQTE4NEVBNzM5
MDAyMzdGMTkgLyogYmluZGluZ3MgKi8sCisJCQkJQTdEODAxOUYxODgwRDY2RTAwMjZDMzlCIC8q
IGJ1aWx0aW5zICovLAogCQkJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAq
LywKIAkJCQk3RTM5RDgxRDBFQzM4RUZBMDAzQUYxMUEgLyogYnl0ZWNvbXBpbGVyICovLAogCQkJ
CTFDOTA1MTNFMEJBOUU4ODMwMDgxRTlEMCAvKiBDb25maWd1cmF0aW9ucyAqLywKQEAgLTM1MDks
NiArMzUyMiw4IEBACiAJCTY1MEZERjhEMDlEMEZDQTcwMDc2OUU1NCAvKiBEZXJpdmVkIFNvdXJj
ZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUE3RDgw
MUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgKi8sCisJCQkJQTdEODAxQTcx
ODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggKi8sCiAJCQkJQkMxOEM1MjMwRTE2RkM4
QTAwQjM0NDYwIC8qIEFycmF5UHJvdG90eXBlLmx1dC5oICovLAogCQkJCUJDRDIwM0U3MEUxNzE4
RjQwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmx1dC5oICovLAogCQkJCUE1MTNFNUM2MTg1Rjk0
MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICovLApAQCAtMzgxMSw2ICszODI2
LDcgQEAKIAkJCQlBNzkwREQ2QTE4MkY0OTk3MDA1ODg4MDcgLyogSlNTZXRJdGVyYXRvci5oICov
LAogCQkJCUJDMDJFOUI2MEUxODQyRkEwMDBGOTI5NyAvKiBKU1N0cmluZy5jcHAgKi8sCiAJCQkJ
RjY5MkE4NjIwMjU1NTk3RDAxRkY2MEY3IC8qIEpTU3RyaW5nLmggKi8sCisJCQkJQTcxREE4MEUx
ODgwREJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oICovLAogCQkJCTg2RTg1NTM4MTEx
Qjk5NjgwMDFBRjUxRSAvKiBKU1N0cmluZ0J1aWxkZXIuaCAqLywKIAkJCQkyNjAwQjVBNDE1MkJB
QUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuY3BwICovLAogCQkJCTI2MDBCNUE1MTUyQkFB
QTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5oICovLApAQCAtNDU2MSw2ICs0NTc3LDE2IEBA
CiAJCQlwYXRoID0gcmVtb3RlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJ
QTdEODAxOUYxODgwRDY2RTAwMjZDMzlCIC8qIGJ1aWx0aW5zICovID0geworCQkJaXNhID0gUEJY
R3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlBN0Q4MDFBMDE4ODBENjZFMDAyNkMzOUIgLyog
QXJyYXkucHJvdG90eXBlLmpzICovLAorCQkJCUE3RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBC
dWlsdGluRXhlY3V0YWJsZXMuY3BwICovLAorCQkJCUE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAv
KiBCdWlsdGluRXhlY3V0YWJsZXMuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gYnVpbHRpbnM7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24g
Ki8KIAogLyogQmVnaW4gUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtNDYwNiwx
MSArNDYzMiwxMSBAQAogCQkJCTg2QUREMTQ1MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2Vt
Ymxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVDRUVFMTUxODdGM0JBRDAwRTU1Qzk5IC8qIElu
c3BlY3RvckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUMwMjg1RDE3MTc5NjY4MDAzNTFF
MzUgLyogQVJNdjdET3Bjb2RlLmggaW4gSGVhZGVycyAqLywKLSAJCQkJMkE2ODI5NUIxODc1Rjgw
NTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovLAotICAgICAgICAg
ICAgICAgIDJBNEVDOTBDMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTJBNjgyOTVCMTg3NUY4MDUwMEI2QzNFMiAvKiBDb3B5V3JpdGVC
YXJyaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkyQTRFQzkwQzE4NjBENkMyMDA5NEY3ODIgLyog
V3JpdGVCYXJyaWVyQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTU5MzJBODE4M0M1QTI2
MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTMyNDM5MzE4
NTY5NzA5MDAyRUQ2OTIgLyogQ29kZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3MucHkgaW4gSGVh
ZGVycyAqLywKLSAJCQkJQTUzMjQzOTIxODU2OTcwOTAwMkVENjkyIC8qIENvZGVHZW5lcmF0b3JJ
bnNwZWN0b3IucHkgaW4gSGVhZGVycyAqLywKKwkJCQlBNTMyNDM5MjE4NTY5NzA5MDAyRUQ2OTIg
LyogQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTRG
MTdFRTI3NDkwMEFCQjIxNyAvKiBUZW1wUmVnaXN0ZXJTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE1MEU0QjY0MTg4MDlERDUwMDY4QTQ2RCAvKiBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkVCNThDMTUxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFu
ZGxpbmdTY29wZS5oIGluIEhlYWRlcnMgKi8sCkBAIC00NjIyLDcgKzQ2NDgsNyBAQAogCQkJCTBG
ODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTg0MEUyOTE4N0NBNUU2MDA4NDNCMTAgLyogaW5saW5lLWFuZC1taW5p
Znktc3R5bGVzaGVldHMtYW5kLXNjcmlwdHMucHkgaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUy
QjE4N0NBNzVCMDA4NDNCMTAgLyoganNtaW4ucHkgaW4gSGVhZGVycyAqLywKLSAJCQkJQTUzMjQz
OTgxODU2QTQ4OTAwMkVENjkyIC8qIEluc3BlY3RvckpTLmpzb24gaW4gSGVhZGVycyAqLywKKwkJ
CQlBNTMyNDM5ODE4NTZBNDg5MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlMuanNvbiBpbiBIZWFkZXJz
ICovLAogCQkJCUE1ODQwRTJBMTg3Q0E3NTkwMDg0M0IxMCAvKiB4eGQucGwgaW4gSGVhZGVycyAq
LywKIAkJCQlGRUEwODYyMDE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTdBOEFGMzUxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTQ3MzMsNyArNDc1OSw3IEBACiAJCQkJQTFBMDA5QzAxODMxQTIyRDAw
Q0Y4NzExIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUM5
REM1MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY0ODUzMjgxODdERkRFQzAwODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5Lmgg
aW4gSGVhZGVycyAqLywKLSAgICAgICAgICAgICAgICBBNTkzQ0Y4NzE4NDAzOENBMDBCRkNFMjcg
LyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU5M0NGODcx
ODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMjU2QzM2MTYyN0IwQUQwMDdGMjc4MyAvKiBERkdDYWxsQXJyYXlBbGxvY2F0b3JT
bG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5NEIxNEMzQ0QyRjAw
N0MzREIxIC8qIERGR0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NTgx
NEVGOTBBMjAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTQ4NzIs
NiArNDg5OCw3IEBACiAJCQkJMEZFQTBBMUQxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0
SGVhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMUYxNzA4QjAwNzAwQkI3MjJDIC8qIEZU
TEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1OTQ1NTkzMTgy
NDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCUE3RDgwMUE5MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZFQTBBMEExNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0ODUzMkExODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292
ZXJ5T3Bjb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEEyMzE3MDk2MDY5MDBCQjcyMkMg
LyogRlRMQ29tbW9uVmFsdWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTQ5NDYsNiArNDk3Myw3IEBA
CiAJCQkJQkMxOEM0MEYwRTE2RjVDRDAwQjM0NDYwIC8qIElkZW50aWZpZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUMyNUY4QkNFMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk5MTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGlu
Z0hlYWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdEODAxQTUxODgwRDY2RTAwMjZDMzlCIC8q
IEJ1aWx0aW5FeGVjdXRhYmxlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOUExNUVEOEU0
NjAwRjE2N0IyIC8qIEluZGV4aW5nSGVhZGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZCN0YzOUIxNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nVHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZDRUZBQjAxODA1Q0E2RDAwNDcyQ0U0IC8qIEluaXRpYWxpemVMTFZNLmggaW4gSGVh
ZGVycyAqLywKQEAgLTUyMTgsNiArNTI0Niw3IEBACiAJCQkJQTUzMjQzODgxODU2ODMzNTAwMkVE
NjkyIC8qIEluc3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzE4QzQ1NjBFMTZGNUNEMDBCMzQ0NjAgLyogUHJvdGVjdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTQ3NEMzM0IxNkFBMkQ5NTAwNjJGMDFEIC8qIFByb3RvdHlwZU1hcC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQTcxREE4MEYxODgwREJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQxNENBN0REOTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0
dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXRE
aXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDMDA4Q0U3MTg3NjMxQjYwMDk1
NUMyNCAvKiBNaWNyb3Rhc2suaCBpbiBIZWFkZXJzICovLApAQCAtNTgzNiw2ICs1ODY1LDcgQEAK
IAkJCQlBN0Q4OUNGMjE3QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBNzBCMDgzMjE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNo
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDg5Q0YzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdC
bG9ja0luc2VydGlvblNldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBN0Q4MDFBNDE4ODBENjZF
MDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2
RUM5REM0MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkQ4MkUyMTE0MTcyQ0UzMDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0aWVzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGRkZDOTU3MTRFRjkwQTAwMEM3MjUzMiAvKiBERkdDRkFQ
aGFzZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU4NTIsNiArNTg4Miw3IEBACiAJCQkJMEZGRkM5
NTkxNEVGOTBBNjAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMkZDNzcyMTZFMTJGNzEwMDM4RDk3NiAvKiBERkdEQ0VQaGFzZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjhGMkI5OTE3MkYwNEZGMDA3REJEQTUgLyogREZHRGVzaXJlZElkZW50aWZpZXJz
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3RDgwMUE4MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NC
dWlsdGlucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzNFMTMzMDE3OTYyNENEMDBFNERFQTgg
LyogREZHRGVzaXJlZFN0cnVjdHVyZUNoYWlucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkMw
RjdDRDE3QkJGQzVCMDA0NjRGRTQgLyogREZHRGVzaXJlZFRyYW5zaXRpb25zLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRTg1MzRCMTcyM0NEQTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hw
b2ludHMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01OTc2LDcgKzYwMDcsNyBAQAogCQkJCTBGNkIx
Q0M1MTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExVbndpbmRJbmZvLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGOUQzMzlBMTgwM0FEQjcwMDczQzJCQyAvKiBGVExTdGFja01hcHMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZFQTBBMTYxNzA2QkI5MDAwQkI3MjJDIC8qIEZUTFN0YXRlLmNwcCBpbiBT
b3VyY2VzICovLAotIAkJCQk3QzAwOENEMjE4NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9taXNlRnVu
Y3Rpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDMDA4Q0QyMTg2RjhBOTMwMDk1NUMyNCAv
KiBKU1Byb21pc2VGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2QjFDQjUxODVG
QzlFOTAwODQ1RDk3IC8qIEZUTEpTQ2FsbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJF
MTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1
OTNDRjdDMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTGlua0J1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtC
dWZmZXIuY3BwCmluZGV4IGFmMTRlMzNlYWMwNTk3ZjJkNzhjNGIzY2QxNjM1NDExZGFiYTk2NWUu
LjY3OTIzZjA4MjNjMmZiYWIzMTEyOGFkYjUxOWRjODllYTAyYjY1MGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcApAQCAtMzAsNiArMzAsNyBA
QAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgorI2luY2x1
ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUg
IlZNLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBpbGF0aW9uVGhyZWFkLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
ZWI0MmY1Y2M0MzNmMTYzNjM0M2JmYzk4MmFhMmFhZmIzMzZlOTQ5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcwpAQCAt
MCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworZnVuY3Rpb24gZXZlcnkoY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pIHsKKyAgICAidXNlIHN0
cmljdCI7CisgICAgaWYgKHRoaXMgPT09IG51bGwpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVy
cm9yKCJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51
bGwiKTsKKyAgICAKKyAgICBpZiAodGhpcyA9PT0gdW5kZWZpbmVkKQorICAgICAgICB0aHJvdyBu
ZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8
IG5vdCBiZSB1bmRlZmluZWQiKTsKKyAgICAKKyAgICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMp
OworICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGggPj4+IDA7CisgICAgCisgICAgaWYgKHR5
cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJy
b3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsK
KworICAgIHZhciB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0g
OiB1bmRlZmluZWQ7CisgICAgCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykg
eworICAgICAgICBpZiAoIShpIGluIGFycmF5KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBpZiAoIWNhbGxiYWNrLkBjYWxsKHRoaXNBcmcsIGFycmF5W2ldLCBpLCBhcnJheSkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHJldHVybiB0cnVlOwor
fQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0MWRiYjVmOTIyNWUyOGExMmVkM2QxNzk4ZmYxNzY4
ZTQzNjcxYTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgi
CisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVz
LmgiCisjaW5jbHVkZSAiUGFyc2VyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitCdWlsdGluRXhl
Y3V0YWJsZXM6OkJ1aWx0aW5FeGVjdXRhYmxlcyhWTSYgdm0pCisgICAgOiBtX3ZtKHZtKQorI2Rl
ZmluZSBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1l
LCBsZW5ndGgpICwgbV8jI25hbWUjI1NvdXJjZShtYWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0
ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgpLCBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0
ZXJhbCgiPGJ1aWx0aW4+IikpKQorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4oSU5JVElBTElaRV9C
VUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX1NUUklOR1MKK3sK
K30KKworVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3Jl
YXRlQnVpbHRpbkV4ZWN1dGFibGUoY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lKQoreworICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmU7CisgICAgUGFyc2VyRXJyb3IgZXJyb3I7CisgICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBw
cm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KCZtX3ZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIo
KSwgSlNQYXJzZUJ1aWx0aW4sIEpTUGFyc2VQcm9ncmFtQ29kZSwgZXJyb3IsICZwb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lKTsKKworICAgIGlmICghcHJvZ3JhbSkgeworICAgICAgICBkYXRhTG9n
KCJGYXRhbCBlcnJvciBjb21waWxpbmcgYnVpbHRpbiBmdW5jdGlvbiAnIiwgbmFtZS5zdHJpbmco
KSwgIic6ICIsIGVycm9yLm1fbWVzc2FnZSk7CisgICAgICAgIENSQVNIKCk7CisgICAgfQorCisg
ICAgU3RhdGVtZW50Tm9kZSogZXhwclN0YXRlbWVudCA9IHByb2dyYW0tPnNpbmdsZVN0YXRlbWVu
dCgpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQpOworICAgIFJFTEVBU0VfQVNT
RVJUKGV4cHJTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKKyAgICBFeHByZXNzaW9uTm9k
ZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVtZW50Tm9kZSo+KGV4cHJTdGF0ZW1l
bnQpLT5leHByKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHIpOworICAgIFJFTEVBU0Vf
QVNTRVJUKGZ1bmNFeHByLT5pc0Z1bmNFeHByTm9kZSgpKTsKKyAgICBGdW5jdGlvbkJvZHlOb2Rl
KiBib2R5ID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZnVuY0V4cHIpLT5ib2R5KCk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoIXByb2dyYW0tPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpOworICAg
IAorICAgIGJvZHktPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKGJvZHkpOworICAgIFJFTEVBU0VfQVNTRVJUKGJvZHktPmlkZW50
KCkuaXNOdWxsKCkpOworICAgIAorICAgIC8vIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBhbiBpbnB1
dCBzdHJpbmcgdGhhdCB3b3VsZCByZXN1bHQgaW4gYSBzaW5nbGUgYW5vbnltb3VzIGZ1bmN0aW9u
IGV4cHJlc3Npb24uCisgICAgYm9keS0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keSk7CisgICAgZm9yIChjb25zdCBhdXRv
JiBjbG9zZWRWYXJpYWJsZSA6IHByb2dyYW0tPmNsb3NlZFZhcmlhYmxlcygpKSB7CisgICAgICAg
IGlmIChjbG9zZWRWYXJpYWJsZSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cy5pbXBs
KCkpCisgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgaWYgKGNsb3NlZFZhcmlh
YmxlID09IG1fdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZC5pbXBsKCkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2xvc2VkVmFyaWFibGUt
PmlzRW1wdHlVbmlxdWUoKSk7CisgICAgfQorICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRl
KCZtX3ZtLCBzb3VyY2UsIGJvZHksIHRydWUsIFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uKTsKKyAg
ICBmdW5jdGlvbkV4ZWN1dGFibGUtPm1fbmFtZVZhbHVlLnNldChtX3ZtLCBmdW5jdGlvbkV4ZWN1
dGFibGUsIGpzU3RyaW5nKCZtX3ZtLCBuYW1lLnN0cmluZygpKSk7CisgICAgcmV0dXJuIGZ1bmN0
aW9uRXhlY3V0YWJsZTsKK30KKworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUyhu
YW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IEJ1aWx0aW5FeGVjdXRhYmxlczo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK3tcCisgICAgaWYgKCFt
XyMjbmFtZSMjRXhlY3V0YWJsZSlcCisgICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gY3Jl
YXRlQnVpbHRpbkV4ZWN1dGFibGUobV8jI25hbWUjI1NvdXJjZSwgbV92bS5wcm9wZXJ0eU5hbWVz
LT5mdW5jdGlvbk5hbWUpO1wKKyAgICByZXR1cm4gbV8jI25hbWUjI0V4ZWN1dGFibGUuZ2V0KCk7
XAorfQorSlNDX0ZPUkVBQ0hfQlVJTFRJTihERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1
bmRlZiBFWFBPU0VfQlVJTFRJTl9TT1VSQ0VTCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOWExOWUy
NjE1MDc5NGE2NjllYzk4ZTM5OWJmNjdmN2Y3MTA2NDE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCkBAIC0wLDAg
KzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEJ1aWx0aW5FeGVjdXRhYmxlc19oCisjZGVmaW5lIEJ1aWx0aW5FeGVjdXRhYmxlc19o
CisKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgorI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKKyNp
bmNsdWRlICJXZWFrLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgSWRlbnRp
ZmllcjsKK2NsYXNzIFZNOworCitjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXMgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEJ1aWx0aW5FeGVjdXRhYmxlcz4gY3JlYXRlKFZNJiB2bSkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQnVpbHRpbkV4ZWN1dGFibGVzKHZt
KSk7CisgICAgfQorICAgIAorI2RlZmluZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1l
LCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5h
bWUjI0V4ZWN1dGFibGUoKTsgXAorY29uc3QgU291cmNlQ29kZSYgbmFtZSMjU291cmNlKCkgeyBy
ZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsgfQorICAgIAorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4o
RVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgRVhQT1NFX0JVSUxUSU5fU09VUkNF
UworICAgIAorcHJpdmF0ZToKKyAgICBCdWlsdGluRXhlY3V0YWJsZXMoVk0mKTsKKyAgICBWTSYg
bV92bTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1
dGFibGUoY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImKTsKKyNkZWZpbmUgREVD
TEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKVwK
KyAgICBTb3VyY2VDb2RlIG1fIyNuYW1lIyNTb3VyY2U7IFwKKyAgICBXZWFrPFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlPiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKKyAgICBKU0NfRk9SRUFDSF9C
VUlMVElOKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JV
SUxUSU5fU09VUkNFX01FTUJFUlMKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCmluZGV4IDRjMDU1ZmVhNTczOGYx
YzQ2MzI2NmQ0ZTlhOTE1NDhhMTI5MzQ3MDkuLmVhZWZlNTRmMmQxNTI4NGI2NGJmNjk5NzI2NThj
ZDFjNjNiNGVhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
cnJheVByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eVByb2ZpbGUuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQXJyYXlQcm9maWxlLmgi
CiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5o
IgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0
cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCmluZGV4
IGQ3NDg5ZDMxYWJkN2M5OWYxYmM2ZmFmYWU2NTgxMTEyYWJkYWNmZGIuLjFhM2I1ZjRjNzgwN2I5
NDg4ZmYzNjU3MmY3OTRkMGJiOWYzOGQyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC0yNyw2ICsyNyw3IEBA
CiAjaW5jbHVkZSAiQnl0ZWNvZGVCYXNpY0Jsb2NrLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2su
aCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1w
VGFyZ2V0cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKaW5kZXgg
OTI2MzM0YzQ0NGM5YzJmM2RmY2M5NTAxMmNkMGE0YTAzMTA0ZDJkOS4uYWQ0YWUyMjk1ZWFjNDhh
YTQwYWZiZWUzZWI2OTI4OTZmY2NhYmQyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgogI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgogI2luY2x1ZGUgIkZ1bGxCeXRlY29kZUxpdmVuZXNzLmgiCisjaW5jbHVkZSAiSlNG
dW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKIAogbmFt
ZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlu
a0luZm8uY3BwCmluZGV4IDZhNjAwNTc2YTAwMGFkYWM4YWYyMTRlOTg4MTM2NDYxOWYyOWEwMTAu
LjRiZjgxODg2NjAyOGM3OTZhNzJlNTc4MzMyZTQ2Nzc1NTZiMjM3YTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpbmNsdWRlICJERkdPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiREZHVGh1bmtzLmgi
CisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJSZXBhdGNoQnVmZmVy
LmgiCiAKICNpZiBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAppbmRleCAyNjNlYzdjYWRmNGY3OWNhODEwMjQ0MWU2MmJmMmEwNWI1ZGRj
M2YyLi43NTE1MDY1NDIzNzZkN2VkYzU5OWFhMDBmOWIxMjY4NWNkYTM1MmNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNDMsMTEgKzQzLDEz
IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJK
U0FjdGl2YXRpb24uaCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNOYW1l
U2NvcGUuaCIKICNpbmNsdWRlICJMTEludEVudHJ5cG9pbnQuaCIKICNpbmNsdWRlICJMb3dMZXZl
bEludGVycHJldGVyLmgiCisjaW5jbHVkZSAiTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIgorI2lu
Y2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2lu
Y2x1ZGUgIlBvbHltb3JwaGljUHV0QnlJZExpc3QuaCIKICNpbmNsdWRlICJSZWR1Y2VXaGl0ZXNw
YWNlLmgiCkBAIC0xNTY5LDcgKzE1NzEsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRF
eGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbgogCiAg
ICAgc2V0Q29uc3RhbnRSZWdpc3RlcnModW5saW5rZWRDb2RlQmxvY2stPmNvbnN0YW50UmVnaXN0
ZXJzKCkpOwogICAgIGlmICh1bmxpbmtlZENvZGVCbG9jay0+dXNlc0dsb2JhbE9iamVjdCgpKQot
ICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW3VubGlua2VkQ29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3RSZWdpc3RlcigpLm9mZnNldCgpXS5zZXQoKm1fdm0sIG93bmVyRXhlY3V0YWJsZSwgbV9nbG9i
YWxPYmplY3QuZ2V0KCkpOworICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW3VubGlua2VkQ29k
ZUJsb2NrLT5nbG9iYWxPYmplY3RSZWdpc3RlcigpLnRvQ29uc3RhbnRJbmRleCgpXS5zZXQoKm1f
dm0sIG93bmVyRXhlY3V0YWJsZSwgbV9nbG9iYWxPYmplY3QuZ2V0KCkpOwogICAgIG1fZnVuY3Rp
b25EZWNscy5yZXNpemVUb0ZpdCh1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRl
Y2xzKCkpOwogICAgIGZvciAoc2l6ZV90IGNvdW50ID0gdW5saW5rZWRDb2RlQmxvY2stPm51bWJl
ck9mRnVuY3Rpb25EZWNscygpLCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSA9IHVubGlua2VkQ29k
ZUJsb2NrLT5mdW5jdGlvbkRlY2woaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgKaW5kZXggNjhiYzAzNzlmNTc0NGM5YThmNzQzMWRiNjRmOGFiNTRlNmUxMDUz
Zi4uNDk5NWM1MmNmOGIyYjFiNGQ2MjgwNDUzZWVkMjdjNzc0YTQ5NTU4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtNTYsNyArNTYsNiBAQAogI2lu
Y2x1ZGUgIkhhbmRsZXJJbmZvLmgiCiAjaW5jbHVkZSAiT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUu
aCIKICNpbmNsdWRlICJPcHRpb25zLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1
ZGUgIlB1dFByb3BlcnR5U2xvdC5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVk
ZSAiSklUQ29kZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcAppbmRleCBiZTUw
Yzk3NzhiZjMzZTMzOWFjODM0YmY1NmUzYjFlNzU1ODZmZTNlLi5iNzY0NmVkMWVmMTY0MTg5ZmNm
YzdiNTM2NTZmYjY1YmVkMDY0ZDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNw
cApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAi
REZHQ29tbW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
T3JpZ2luLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmNw
cAppbmRleCA2OGRjNmIwNTMzNTU5MGVjNGM4MWM0MjM0NmJiNzRkYmJkOGZhYzU2Li4xNTc4ODA4
OTM0ZGQzY2M0Y2Q5N2QyNzFhZThhYzhiZmUzOTc0NmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRXhlY3V0
YWJsZS5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0
aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNv
bmluZ1dhdGNocG9pbnQuY3BwCmluZGV4IDk4NmUwM2QwY2JhNzE4NWIzOWNlZTAyM2Y0YWI2YmM5
YjhjY2I2ZTQuLjZmMmQ1ZWJhMWNhNDVkZGViMWRmNjVmZDA1MTIzM2U1ZjEzOGJlMGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pl
dHRpc29uaW5nV2F0Y2hwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcApAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgog
I2luY2x1ZGUgIkRGR0V4aXRQcm9maWxlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDFkZmI1YWM2YWQ5MDkzZjhmODEx
MDFlZjdmMmU2MTIzMTFhYzE5MzkuLjQzMzkwZDk2NWZjNTAzNDAxNmY3YmZmZjIzZTY4YmIxZTA1
NDU1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmNwcApAQCAtNDksOSArNDksOSBAQCBjb25zdCBDbGFzc0luZm8gVW5saW5r
ZWRQcm9ncmFtQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2si
LAogY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkRXZhbENvZGVCbG9jazo6c19pbmZvID0geyAiVW5s
aW5rZWRFdmFsQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShVbmxpbmtlZEV2YWxDb2RlQmxvY2spIH07CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayIs
ICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jaykgfTsKIAotc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVy
YXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxl
ck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikKK3N0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKiBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKFZNJiB2bSwgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1v
ZGUgcHJvZmlsZXJNb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBmdW5jdGlvbktpbmQsIFBhcnNl
ckVycm9yJiBlcnJvcikKIHsKLSAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSA9IHBh
cnNlPEZ1bmN0aW9uQm9keU5vZGU+KCZ2bSwgc291cmNlLCBleGVjdXRhYmxlLT5wYXJhbWV0ZXJz
KCksIGV4ZWN1dGFibGUtPm5hbWUoKSwgZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/
IEpTUGFyc2VTdHJpY3QgOiBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlRnVuY3Rpb25Db2RlLCBlcnJv
cik7CisgICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGJvZHkgPSBwYXJzZTxGdW5jdGlvbkJv
ZHlOb2RlPigmdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+cGFyYW1ldGVycygpLCBleGVjdXRhYmxl
LT5uYW1lKCksIGV4ZWN1dGFibGUtPnRvU3RyaWN0bmVzcygpLCBKU1BhcnNlRnVuY3Rpb25Db2Rl
LCBlcnJvcik7CiAKICAgICBpZiAoIWJvZHkpIHsKICAgICAgICAgQVNTRVJUKGVycm9yLm1fdHlw
ZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZt
LCBVbmxpbmtlZEZ1bmMKICAgICBib2R5LT5maW5pc2hQYXJzaW5nKGV4ZWN1dGFibGUtPnBhcmFt
ZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT5mdW5jdGlvbk5hbWVJc0lu
U2NvcGVUb2dnbGUoKSk7CiAgICAgZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2UoYm9keS0+ZmVhdHVy
ZXMoKSwgYm9keS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCi0gICAgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3Jl
YXRlKCZ2bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5mbyhib2R5LT5uZWVkc0FjdGl2YXRp
b24oKSwgYm9keS0+dXNlc0V2YWwoKSwgYm9keS0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29k
ZUZvckNvbnN0cnVjdCkpOworICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmdm0sIEZ1bmN0aW9uQ29kZSwgRXhl
Y3V0YWJsZUluZm8oYm9keS0+bmVlZHNBY3RpdmF0aW9uKCksIGJvZHktPnVzZXNFdmFsKCksIGJv
ZHktPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2lu
ZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbikpOwogICAgIE93blB0cjxCeXRlY29kZUdlbmVy
YXRvcj4gZ2VuZXJhdG9yKGFkb3B0UHRyKG5ldyBCeXRlY29kZUdlbmVyYXRvcih2bSwgYm9keS5n
ZXQoKSwgcmVzdWx0LCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSkpKTsKICAgICBlcnJvciA9
IGdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKICAgICBib2R5LT5kZXN0cm95RGF0YSgpOwpAQCAtODIs
MTMgKzgyLDE0IEBAIHVuc2lnbmVkIFVubGlua2VkQ29kZUJsb2NrOjphZGRPckZpbmRDb25zdGFu
dChKU1ZhbHVlIHYpCiAgICAgcmV0dXJuIGFkZENvbnN0YW50KHYpOwogfQogCi1VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlO
b2RlKiBub2RlLCBib29sIGlzRnJvbUdsb2JhbENvZGUpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlLCBi
b29sIGlzRnJvbUdsb2JhbENvZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQpCiAgICAgOiBC
YXNlKCp2bSwgc3RydWN0dXJlKQogICAgICwgbV9udW1DYXB0dXJlZFZhcmlhYmxlcyhub2RlLT5j
YXB0dXJlZFZhcmlhYmxlQ291bnQoKSkKICAgICAsIG1fZm9yY2VVc2VzQXJndW1lbnRzKG5vZGUt
PnVzZXNBcmd1bWVudHMoKSkKICAgICAsIG1faXNJblN0cmljdENvbnRleHQobm9kZS0+aXNTdHJp
Y3RNb2RlKCkpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKG5vZGUtPmhhc0NhcHR1cmVk
VmFyaWFibGVzKCkpCiAgICAgLCBtX2lzRnJvbUdsb2JhbENvZGUoaXNGcm9tR2xvYmFsQ29kZSkK
KyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oa2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlv
bikKICAgICAsIG1fbmFtZShub2RlLT5pZGVudCgpKQogICAgICwgbV9pbmZlcnJlZE5hbWUobm9k
ZS0+aW5mZXJyZWROYW1lKCkpCiAgICAgLCBtX3BhcmFtZXRlcnMobm9kZS0+cGFyYW1ldGVycygp
KQpAQCAtMTY2LDcgKzE2Nyw3IEBAIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tGb3IoVk0mIHZtLCBjb25zCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIAotICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IGdl
bmVyYXRlRnVuY3Rpb25Db2RlQmxvY2sodm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lhbGl6YXRpb25L
aW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IpOworICAgIFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2sodm0sIHRo
aXMsIHNvdXJjZSwgc3BlY2lhbGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9k
ZSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5r
ZWROb3JtYWxGdW5jdGlvbiwgZXJyb3IpOwogICAgIAogICAgIGlmIChlcnJvci5tX3R5cGUgIT0g
UGFyc2VyRXJyb3I6OkVycm9yTm9uZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMTAsNiArMjEx
LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1faXNTdHJpY3RNb2RlKGluZm8u
bV9pc1N0cmljdE1vZGUpCiAgICAgLCBtX2lzQ29uc3RydWN0b3IoaW5mby5tX2lzQ29uc3RydWN0
b3IpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGZhbHNlKQorICAgICwgbV9pc0J1aWx0
aW5GdW5jdGlvbihpbmZvLm1faXNCdWlsdGluRnVuY3Rpb24pCiAgICAgLCBtX2ZpcnN0TGluZSgw
KQogICAgICwgbV9saW5lQ291bnQoMCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApp
bmRleCBiOWRhZTJkNWM2OWM3OWNlYWFhODAyM2QyYTNhMWYyNmQ0NjA5NDNiLi5hYmY2Y2YzNWI5
MzA2YTRmN2EzMDFhYjBkZjc2NjZlYzYxMmUzNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtNjYsMjYgKzY2LDM1IEBA
IHR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTsKIHR5cGVk
ZWYgdW5zaWduZWQgVW5saW5rZWRMTEludENhbGxMaW5rSW5mbzsKIAogc3RydWN0IEV4ZWN1dGFi
bGVJbmZvIHsKLSAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1
c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvcikKKyAgICBFeGVj
dXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0
cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbikKICAg
ICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2YXRpb24pCiAgICAgICAgICwgbV91
c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0cmljdE1vZGUp
CiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3RydWN0b3IpCisgICAgICAgICwgbV9p
c0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikKICAgICB7CiAgICAgfQotICAgIGJv
b2wgbV9uZWVkc0FjdGl2YXRpb247Ci0gICAgYm9vbCBtX3VzZXNFdmFsOwotICAgIGJvb2wgbV9p
c1N0cmljdE1vZGU7Ci0gICAgYm9vbCBtX2lzQ29uc3RydWN0b3I7CisgICAgYm9vbCBtX25lZWRz
QWN0aXZhdGlvbiA6IDE7CisgICAgYm9vbCBtX3VzZXNFdmFsIDogMTsKKyAgICBib29sIG1faXNT
dHJpY3RNb2RlIDogMTsKKyAgICBib29sIG1faXNDb25zdHJ1Y3RvciA6IDE7CisgICAgYm9vbCBt
X2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKK307CisKK2VudW0gVW5saW5rZWRGdW5jdGlvbktpbmQg
eworICAgIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sCisgICAgVW5saW5rZWRCdWlsdGluRnVuY3Rp
b24sCiB9OwogCiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBKU0Nl
bGwgewogcHVibGljOgorICAgIGZyaWVuZCBjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXM7CiAgICAg
ZnJpZW5kIGNsYXNzIENvZGVDYWNoZTsKKyAgICBmcmllbmQgY2xhc3MgVk07CiAgICAgdHlwZWRl
ZiBKU0NlbGwgQmFzZTsKLSAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNy
ZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSog
bm9kZSwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlID0gZmFsc2UpCisgICAgc3RhdGljIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSwgVW5saW5r
ZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQpCiAgICAgewotICAgICAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhlYXApKSBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJl
LmdldCgpLCBzb3VyY2UsIG5vZGUsIGlzRnJvbUdsb2JhbENvZGUpOworICAgICAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhlYXApKSBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdl
dCgpLCBzb3VyY2UsIG5vZGUsIGlzRnJvbUdsb2JhbENvZGUsIHVubGlua2VkRnVuY3Rpb25LaW5k
KTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2bSk7CiAgICAgICAgIHJldHVy
biBpbnN0YW5jZTsKICAgICB9CkBAIC05OSw2ICsxMDgsMTQgQEAgcHVibGljOgogICAgIH0KICAg
ICBzaXplX3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdDsKICAgICBib29sIGlzSW5TdHJpY3RDb250
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQorICAgIEpTUGFyc2Vy
U3RyaWN0bmVzcyB0b1N0cmljdG5lc3MoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1faXNC
dWlsdGluRnVuY3Rpb24pCisgICAgICAgICAgICByZXR1cm4gSlNQYXJzZUJ1aWx0aW47CisgICAg
ICAgIGlmIChtX2lzSW5TdHJpY3RDb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuIEpTUGFyc2VT
dHJpY3Q7CisgICAgICAgIHJldHVybiBKU1BhcnNlTm9ybWFsOworICAgIH0KICAgICBGdW5jdGlv
bk5hbWVJc0luU2NvcGVUb2dnbGUgZnVuY3Rpb25OYW1lSXNJblNjb3BlVG9nZ2xlKCkgY29uc3Qg
eyByZXR1cm4gbV9mdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGU7IH0KIAogICAgIHVuc2lnbmVk
IGZpcnN0TGluZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RMaW5lT2Zmc2V0OyB9CkBA
IC0xNDIsOCArMTU5LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJbW1v
cnRhbFN0cnVjdHVyZSA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsK
IAorICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRp
bkZ1bmN0aW9uOyB9CisKIHByaXZhdGU6Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUo
Vk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGJv
b2wgaXNGcm9tR2xvYmFsQ29kZSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0q
LCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGJvb2wg
aXNGcm9tR2xvYmFsQ29kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQpOwogICAgIFdyaXRlQmFycmll
cjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX2NvZGVCbG9ja0ZvckNhbGw7CiAgICAgV3Jp
dGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fY29kZUJsb2NrRm9yQ29uc3Ry
dWN0OwogCkBAIC0xNTIsNiArMTcxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNJblN0cmlj
dENvbnRleHQgOiAxOwogICAgIGJvb2wgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAg
Ym9vbCBtX2lzRnJvbUdsb2JhbENvZGUgOiAxOworICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlv
biA6IDE7CiAKICAgICBJZGVudGlmaWVyIG1fbmFtZTsKICAgICBJZGVudGlmaWVyIG1faW5mZXJy
ZWROYW1lOwpAQCAtMzE5LDYgKzMzOSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzTnVtZXJp
Y0NvbXBhcmVGdW5jdGlvbihib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbikgeyBtX2lzTnVt
ZXJpY0NvbXBhcmVGdW5jdGlvbiA9IGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQogICAgIGJv
b2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc051bWVyaWND
b21wYXJlRnVuY3Rpb247IH0KIAorICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisgICAgCiAgICAgdm9pZCBzaHJpbmtUb0Zp
dCgpCiAgICAgewogICAgICAgICBtX2p1bXBUYXJnZXRzLnNocmlua1RvRml0KCk7CkBAIC01MDAs
NiArNTIyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNTdHJpY3RNb2RlIDogMTsKICAgICBi
b29sIG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAgYm9vbCBtX2hhc0NhcHR1cmVkVmFyaWFibGVz
IDogMTsKKyAgICBib29sIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1f
Zmlyc3RMaW5lOwogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50OwogICAgIHVuc2lnbmVkIG1fZW5k
Q29sdW1uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2ODEwYWI4MDAyY2U2YmI4ZDc4ZTdmZjIyMjdm
NGM2ZWE3Yjc1OGMyLi5lYzUyMWI1MzA0NjM5MjNlNzRjMDEwZmEyMThlNTllZDJhOWEzY2FlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcApAQCAtMTc1LDYgKzE3NSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5r
ZWRQCiAjZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAgICAgLCBtX2V4cHJl
c3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihmYWxzZSkKIHsK
ICAgICBpZiAobV9zaG91bGRFbWl0RGVidWdIb29rcykKICAgICAgICAgbV9jb2RlQmxvY2stPnNl
dE5lZWRzRnVsbFNjb3BlQ2hhaW4odHJ1ZSk7CkBAIC0yMjIsNyArMjIzLDEzIEBAIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uQm9keU5vZGUqIGZ1
bmN0aW9uQm9keSwgVW5sCiAjZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAg
ICAgLCBtX2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlv
bihjb2RlQmxvY2stPmlzQnVpbHRpbkZ1bmN0aW9uKCkpCiB7CisgICAgaWYgKG1faXNCdWlsdGlu
RnVuY3Rpb24pIHsKKyAgICAgICAgbV9zaG91bGRFbWl0UHJvZmlsZUhvb2tzID0gZmFsc2U7Cisg
ICAgICAgIG1fc2hvdWxkRW1pdERlYnVnSG9va3MgPSBmYWxzZTsKKyAgICB9CisKICAgICBpZiAo
bV9zaG91bGRFbWl0RGVidWdIb29rcykKICAgICAgICAgbV9jb2RlQmxvY2stPnNldE5lZWRzRnVs
bFNjb3BlQ2hhaW4odHJ1ZSk7CiAKQEAgLTQzOCw2ICs0NDUsNyBAQCBCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2Vk
RXZhbENvZAogI2VuZGlmCiAgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQogICAgICwgbV9l
eHByZXNzaW9uVG9vRGVlcChmYWxzZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oZmFsc2Up
CiB7CiAgICAgbV9jb2RlQmxvY2stPnNldE5lZWRzRnVsbFNjb3BlQ2hhaW4odHJ1ZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAppbmRleCA0ZTlmMjEzYzliZmE2Y2YxOTRiMWExNGZlOTE5ZTgzMzM3YWUzNWQ5Li4x
NTg0Mjc0Yjc4ZWE2YzBiZDBlZmIwYjk4MjVjODE4YmUwZGJjMDY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBA
IC00NjEsNyArNDYxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgc2hvdWxkRW1p
dERlYnVnSG9va3MoKSB7IHJldHVybiBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzOyB9CiAgICAgICAg
IAogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2Nr
LT5pc1N0cmljdE1vZGUoKTsgfQotCisgICAgICAgIAorICAgICAgICBib29sIGlzQnVpbHRpbkZ1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQorICAgICAgICAK
ICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTGFiZWw7CiAgICAgICAgIApAQCAt
NTQzLDcgKzU0NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG1ha2VGdW5jdGlvbihGdW5jdGlvbkJvZHlOb2RlKiBib2R5
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIGJvZHkpOworICAgICAgICAg
ICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29w
ZU5vZGUtPnNvdXJjZSgpLCBib2R5LCBmYWxzZSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlu
a2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbik7CiAgICAgICAgIH0K
IAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SW5pdExhenlSZWdpc3RlcihSZWdpc3RlcklEKik7
CkBAIC02NzcsNiArNjc5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBtX3Vz
ZXNFeGNlcHRpb25zOwogICAgICAgICBib29sIG1fZXhwcmVzc2lvblRvb0RlZXA7CisgICAgICAg
IGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlvbjsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMWZmZDRm
MzExODgyZDBlZTVjNTUxNGY1YjhiMjU5MzlkOTc1ZTM3OS4uNjJlY2EzNmExMGQ3NzA4YTkyOGQ0
M2FjMDNmMmZjODYxNWNlY2E3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjYsMTAgKzI2LDEwIEBACiAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgotI2luY2x1ZGUgIk5vZGVDb25zdHJ1
Y3RvcnMuaCIKIAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ2Fs
bEZyYW1lLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJEZWJ1
Z2dlci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTM4
LDYgKzM4LDcgQEAKICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiTGFiZWxTY29w
ZS5oIgogI2luY2x1ZGUgIkxleGVyLmgiCisjaW5jbHVkZSAiTm9kZUNvbnN0cnVjdG9ycy5oIgog
I2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRlICJQ
cm9wZXJ0eU5hbWVBcnJheS5oIgpAQCAtNTM1LDM2ICs1MzYsMzkgQEAgUmVnaXN0ZXJJRCogQ2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLAogICAgIFJlZlB0cjxMYWJlbD4gZW5kID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9iYXNlKTsK
ICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBz
dWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBE
ZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBtX2lkZW50KTsKKyAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0
aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmNhbGwp
OwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERl
c3RpbmF0aW9uKGRzdCwgZnVuY3Rpb24uZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SnVtcElm
Tm90RnVuY3Rpb25DYWxsKGZ1bmN0aW9uLmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7CisgICAgYm9v
bCBlbWl0Q2FsbENoZWNrID0gIWdlbmVyYXRvci5pc0J1aWx0aW5GdW5jdGlvbigpOworICAgIGlm
IChlbWl0Q2FsbENoZWNrKQorICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9u
Q2FsbChmdW5jdGlvbi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkpOworCiAgICAgewogICAgICAgICBp
ZiAobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKSB7CiAg
ICAgICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2Rl
OwogICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5t
X25leHQ7Ci0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJl
YWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9u
KGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1l
bnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShj
YWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwogICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0
KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0
KCkpOwotCiAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBvbGRMaXN0OwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9
IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2Uu
Z2V0KCkpOwogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRv
ciwgbV9hcmdzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRz
LnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVk
RnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKICAgICAgICAg
fQogICAgIH0KLSAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKLSAgICB7
Ci0gICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7
Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBiYXNlLmdldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdl
dCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBk
aXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIGlmIChlbWl0Q2FsbENoZWNr
KSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKKyAgICAgICAgeworICAgICAgICAgICAg
Q2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNl
LmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQo
KSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgfQorICAgICAgICBnZW5l
cmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFi
ZWwoZW5kLmdldCgpKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWUuZ2V0KCk7CiB9CiAKQEAgLTU4
NSw2NSArNTg5LDY3IEBAIFJlZ2lzdGVySUQqIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgUmVmUHRyPExhYmVs
PiBlbmQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFz
ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVz
c2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Npb25TdGFydCgpLCBzdWJl
eHByZXNzaW9uRW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbiA9IGdlbmVy
YXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0
KCksIG1faWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbjsKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihk
c3QsIGZ1bmN0aW9uLmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9u
QXBwbHkoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKLSAgICB7Ci0gICAgICAgIGlm
IChtYXlCZUNhbGwpIHsKLSAgICAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9h
cmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpIHsKLSAgICAgICAgICAgICAgICBBcmd1bWVudExpc3RO
b2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2RlOwotICAgICAgICAgICAgICAgIGlmICht
X2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCkgewotICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
bV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwci0+aXNTaW1wbGVBcnJheSgpKTsKLSAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9u
ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gc3RhdGljX2Nh
c3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwciktPnRvQXJn
dW1lbnRMaXN0KGdlbmVyYXRvci52bSgpLCAwLCAwKTsKLSAgICAgICAgICAgICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0
b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAgICAgICAgICAg
ICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0
ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRG
dW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBtX2FyZ3Mt
Pm1fbGlzdE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKLSAgICAgICAgICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92
ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAg
ICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3Mp
OwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50
aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5v
RXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbV9hcmdzLT5t
X2xpc3ROb2RlID0gb2xkTGlzdDsKKyAgICBib29sIGVtaXRDYWxsQ2hlY2sgPSAhZ2VuZXJhdG9y
LmlzQnVpbHRpbkZ1bmN0aW9uKCk7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKKyAgICAgICAg
ZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlv
bihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmFwcGx5KTsKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KGZ1bmN0aW9uLmdldCgp
LCByZWFsQ2FsbC5nZXQoKSk7CisgICAgfQorICAgIGlmIChtYXlCZUNhbGwpIHsKKyAgICAgICAg
aWYgKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcikgewor
ICAgICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogb2xkTGlzdCA9IG1fYXJncy0+bV9saXN0Tm9k
ZTsKKyAgICAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCkgeworICAgICAg
ICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByLT5pc1Np
bXBsZUFycmF5KCkpOworICAgICAgICAgICAgICAgIEFTU0VSVCghbV9hcmdzLT5tX2xpc3ROb2Rl
LT5tX25leHQtPm1fbmV4dCk7CisgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0g
c3RhdGljX2Nhc3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhw
ciktPnRvQXJndW1lbnRMaXN0KGdlbmVyYXRvci52bSgpLCAwLCAwKTsKKyAgICAgICAgICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdl
bmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CisgICAgICAgICAgICAg
ICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIo
KSwgb2xkTGlzdC0+bV9leHByKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwo
cmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9u
LCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBt
X2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVz
dGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50
cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAgICAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQo
KSk7CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhp
c1JlZ2lzdGVyKCksIG9sZExpc3QtPm1fZXhwcik7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0
ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9s
ZExpc3Q7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9hcmdzLT5tX2xp
c3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KTsKLSAgICAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBwcm9maWxlSG9va1JlZ2lzdGVyOwotICAgICAgICAgICAgaWYgKGdlbmVy
YXRvci5zaG91bGRFbWl0UHJvZmlsZUhvb2tzKCkpCi0gICAgICAgICAgICAgICAgcHJvZmlsZUhv
b2tSZWdpc3RlciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9y
LnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKLSAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiB0aGlzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9hcmdzLT5tX2xp
c3ROb2RlLT5tX2V4cHIpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFyZ3NSZWdp
c3RlcjsKLSAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MgPSBtX2FyZ3MtPm1fbGlz
dE5vZGUtPm1fbmV4dDsKLSAgICAgICAgICAgIGlmIChhcmdzLT5tX2V4cHItPmlzUmVzb2x2ZU5v
ZGUoKSAmJiBnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50cyhzdGF0aWNfY2FzdDxSZXNv
bHZlTm9kZSo+KGFyZ3MtPm1fZXhwciktPmlkZW50aWZpZXIoKSkpCi0gICAgICAgICAgICAgICAg
YXJnc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLnVuY2hlY2tlZFJlZ2lzdGVyRm9yQXJndW1lbnRzKCk7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJh
dG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7Ci0KLSAgICAgICAgICAgIC8vIEZ1bmN0aW9uLnBy
b3RvdHlwZS5hcHBseSBpZ25vcmVzIGV4dHJhIGFyZ3VtZW50cywgYnV0IHdlIHN0aWxsCi0gICAg
ICAgICAgICAvLyBuZWVkIHRvIGV2YWx1YXRlIHRoZW0gZm9yIHNpZGUgZWZmZWN0cy4KLSAgICAg
ICAgICAgIHdoaWxlICgoYXJncyA9IGFyZ3MtPm1fbmV4dCkpCi0gICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7Ci0KLSAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0Q2FsbFZhcmFyZ3MocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgdGhp
c1JlZ2lzdGVyLmdldCgpLCBhcmdzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKSwgcHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5l
cmF0b3IsIG1fYXJncyk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3Vt
ZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwogICAgICAgICB9Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9h
cmdzLT5tX2xpc3ROb2RlLT5tX25leHQpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJv
ZmlsZUhvb2tSZWdpc3RlcjsKKyAgICAgICAgaWYgKGdlbmVyYXRvci5zaG91bGRFbWl0UHJvZmls
ZUhvb2tzKCkpCisgICAgICAgICAgICBwcm9maWxlSG9va1JlZ2lzdGVyID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0g
Z2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5n
ZXQoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzUmVnaXN0ZXIgPSBnZW5lcmF0
b3IuZW1pdE5vZGUobV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpOworICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gYXJnc1JlZ2lzdGVyOworICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBhcmdz
ID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQ7CisgICAgICAgIGlmIChhcmdzLT5tX2V4cHIt
PmlzUmVzb2x2ZU5vZGUoKSAmJiBnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50cyhzdGF0
aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGFyZ3MtPm1fZXhwciktPmlkZW50aWZpZXIoKSkpCisgICAg
ICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IudW5jaGVja2VkUmVnaXN0ZXJGb3JBcmd1
bWVudHMoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJh
dG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7CisKKyAgICAgICAgLy8gRnVuY3Rpb24ucHJvdG90
eXBlLmFwcGx5IGlnbm9yZXMgZXh0cmEgYXJndW1lbnRzLCBidXQgd2Ugc3RpbGwKKyAgICAgICAg
Ly8gbmVlZCB0byBldmFsdWF0ZSB0aGVtIGZvciBzaWRlIGVmZmVjdHMuCisgICAgICAgIHdoaWxl
ICgoYXJncyA9IGFyZ3MtPm1fbmV4dCkpCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUo
YXJncy0+bV9leHByKTsKKworICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxWYXJhcmdzKHJldHVy
blZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJn
c1JlZ2lzdGVyLmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb2ZpbGVIb29rUmVn
aXN0ZXIuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgfQot
ICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOwotICAgIHsKKyAgICBpZiAo
ZW1pdENhbGxDaGVjaykgeworICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChyZWFsQ2FsbC5nZXQoKSk7CiAgICAgICAgIENh
bGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgIGdl
bmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgp
KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlv
bi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5n
ZXQoKSk7CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICBy
ZXR1cm4gcmV0dXJuVmFsdWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVf
aGFzaF90YWJsZQppbmRleCAzOTc5NzZiMDZjN2E5YjU4MzYzMzI5MDBhNmViYjkzZWM2OGI3NDg2
Li5jYWQ2NWJjNGNjODg4ZTMxNGY4OGQ2NjVkZDRhNmU2NDVhMDlhMzU1IDEwMDc1NQotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlCkBAIC0yODksNyArMjg5LDE3IEBAIHN1YiBvdXRw
dXQoKSB7CiAgICAgICAgICAgICAkaW50cmluc2ljID0gIlJlZ0V4cFRlc3RJbnRyaW5zaWMiIGlm
ICgka2V5IGVxICJ0ZXN0Iik7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoJHZhbHVlc1skaV17
InR5cGUifSBlcSAiRnVuY3Rpb24iKSAgeworICAgICAgICAgICAgbXkgJHRhYmxlSGVhZCA9ICRu
YW1lOworICAgICAgICAgICAgJHRhYmxlSGVhZCA9fiBzL1RhYmxlJC8vOworICAgICAgICAgICAg
cHJpbnQgIiAjaWYgSlNDX0JVSUxUSU5fRVhJU1RTKCIgLiB1YygkdGFibGVIZWFkIC4gJGtleSkg
LiIpXG4iOworICAgICAgICAgICAgcHJpbnQgIiAgIHsgXCIka2V5XCIsICgoJGF0dHJzWyRpXSkg
JiB+RnVuY3Rpb24pIHwgQnVpbHRpbiwgJGludHJpbnNpYywgKGludHB0cl90KXN0YXRpY19jYXN0
PEJ1aWx0aW5HZW5lcmF0b3I+KCIgLiAkdGFibGVIZWFkIC4gdWNmaXJzdCgka2V5KSAuICJDb2Rl
R2VuZXJhdG9yKSwgKGludHB0cl90KSRzZWNvbmRWYWx1ZSB9LFxuIjsKKyAgICAgICAgICAgIHBy
aW50ICIgI2Vsc2VcbiIKKyAgICAgICAgfQogICAgICAgICBwcmludCAiICAgeyBcIiRrZXlcIiwg
JGF0dHJzWyRpXSwgJGludHJpbnNpYywgKGludHB0cl90KSIgLiAkZmlyc3RDYXN0U3RyIC4gIigk
Zmlyc3RWYWx1ZSksIChpbnRwdHJfdCkiIC4gJHNlY29uZENhc3RTdHIgLiAiKCRzZWNvbmRWYWx1
ZSkgfSxcbiI7CisgICAgICAgIGlmICgkdmFsdWVzWyRpXXsidHlwZSJ9IGVxICJGdW5jdGlvbiIp
ICB7CisgICAgICAgICAgICBwcmludCAiICNlbmRpZlxuIgorICAgICAgICB9CiAgICAgICAgICRp
Kys7CiAgICAgfQogICAgIHByaW50ICIgICB7IDAsIDAsIE5vSW50cmluc2ljLCAwLCAwIH1cbiI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0F2YWlsYWJpbGl0eS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0F2YWlsYWJpbGl0eS5jcHAKaW5kZXgg
NjY5YzJiNDM5MjQ2YjA3ZGRiNTdkMTE3ODgzMDI5YTg4ZDNhNGFmZi4uZDBiY2VkMWNmYmQyMzc0
Njc5MzdlZTFiNjdmOTMyYTY2Mzc0ZjhkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBdmFpbGFiaWxpdHkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXZhaWxhYmlsaXR5LmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkRGR0F2YWlsYWJpbGl0eS5oIgogCisjaW5jbHVkZSAiSlNGdW5jdGlv
bklubGluZXMuaCIKKwogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVkZSAiREZHTm9kZS5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggMmZm
MGMzNDE0NmUyYzBiYTJmZjc2YzRkM2Y3YzQ2YmEzZTI1NTE0Ny4uOTA0NGNkYzZiOGMzYWQ0YTFl
OTQxODhkZDFkMGUyMDBlNjlmYjk5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9u
LmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgorI2luY2x1ZGUg
IkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk5hbWVJbnN0YW5jZS5oIgogI2luY2x1ZGUg
Ik9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5zIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmNGI2ZDQ5OWYw
MjVjMDUzYjJmOTdiNmYxMDBlODU1MDQ2ZjNlNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMKQEAgLTAsMCArMSwzMDQgQEAKKyMh
L3Vzci9iaW4vcHl0aG9uCisjIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisjIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisjIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyMgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgZmlsZWNtcAoraW1wb3J0IGZu
bWF0Y2gKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3lzCitp
bXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBqc29uCisKK2NvcHlyaWdodFRleHQgPSAiIiIgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqL1xuCisiIiIKKworZ2VuZXJhdG9yU3Ry
aW5nID0gIi8qIEdlbmVyYXRlZCBieSAlcyBkbyBub3QgaGFuZCBlZGl0LiAqL1xuIiAlIG9zLnBh
dGguYmFzZW5hbWUoX19maWxlX18pCisKK2Z1bmN0aW9uSGVhZFJlZ0V4cCA9IHJlLmNvbXBpbGUo
ciJmdW5jdGlvblxzK1x3K1xzKlwoLio/XCkiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorZnVuY3Rp
b25OYW1lUmVnRXhwID0gcmUuY29tcGlsZShyImZ1bmN0aW9uXHMrKFx3KylccypcKCIsIHJlLk1V
TFRJTElORSB8IHJlLlMpCitmdW5jdGlvblBhcmFtZXRlckZpbmRlciA9IHJlLmNvbXBpbGUociJe
ZnVuY3Rpb25ccysoPzpcdyspXHMqXCgoKD86XHMqXHcrKT9ccyooPzpccyosXHMqXHcrKSopP1wp
IiwgcmUuTVVMVElMSU5FIHwgcmUuUykKKworbXVsdGlsaW5lQ29tbWVudFJlZ0V4cCA9IHJlLmNv
bXBpbGUociJcL1wqLio/XCpcLyIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitzaW5nbGVMaW5lQ29t
bWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJcL1wvLio/XG4iLCByZS5NVUxUSUxJTkUgfCByZS5T
KQorCitkZWYgZ2V0Q29weXJpZ2h0KHNvdXJjZSk6CisgICAgY29weXJpZ2h0QmxvY2sgPSBtdWx0
aWxpbmVDb21tZW50UmVnRXhwLmZpbmRhbGwoc291cmNlKVswXQorICAgIGNvcHlyaWdodEJsb2Nr
ID0gY29weXJpZ2h0QmxvY2tbOmNvcHlyaWdodEJsb2NrLmluZGV4KCJSZWRpc3RyaWJ1dGlvbiIp
XQorICAgIGNvcHlSaWdodExpbmVzID0gW10KKworICAgIGZvciBsaW5lIGluIGNvcHlyaWdodEJs
b2NrLnNwbGl0KCJcbiIpOgorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIvKiIsICIiKQor
ICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIqLyIsICIiKQorICAgICAgICBsaW5lID0gbGlu
ZS5yZXBsYWNlKCIqIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIkNvcHlyaWdo
dCIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCJjb3B5cmlnaHQiLCAiIikKKyAg
ICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKEMpIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5l
LnJlcGxhY2UoIihjKSIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAg
IGlmIGxlbihsaW5lKSA9PSAwOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBjb3B5
UmlnaHRMaW5lcy5hcHBlbmQobGluZSkKKyAgICAKKyAgICByZXR1cm4gbGlzdChzZXQoY29weVJp
Z2h0TGluZXMpKQorCisKKworZGVmIGdldEZ1bmN0aW9ucyhzb3VyY2UpOgorCisgICAgc291cmNl
ID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5zdWIoIi8qKi8iLCBzaW5nbGVMaW5lQ29tbWVudFJl
Z0V4cC5zdWIoIi8vXG4iLCBzb3VyY2UpKQorCisgICAgbWF0Y2hlcyA9IFsgZiBmb3IgZiBpbiBm
dW5jdGlvbkhlYWRSZWdFeHAuZmluZGl0ZXIoc291cmNlKV0KKyAgICBmdW5jdGlvbkJvdW5kcyA9
IFtdCisgICAgc3RhcnQgPSAwCisgICAgZW5kID0gMAorICAgIGZvciBtYXRjaCBpbiBtYXRjaGVz
OgorICAgICAgICBzdGFydCA9IG1hdGNoLnN0YXJ0KCkKKyAgICAgICAgaWYgc3RhcnQgPCBlbmQ6
CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBlbmQgPSBtYXRjaC5lbmQoKQorICAgICAg
ICB3aGlsZSBzb3VyY2VbZW5kXSAhPSAneyc6CisgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisg
ICAgICAgIGRlcHRoID0gMQorICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgIHdoaWxlIGRl
cHRoID4gMDoKKyAgICAgICAgICAgIGlmIHNvdXJjZVtlbmRdID09ICd7JzoKKyAgICAgICAgICAg
ICAgICBkZXB0aCA9IGRlcHRoICsgMQorICAgICAgICAgICAgZWxpZiBzb3VyY2VbZW5kXSA9PSAn
fSc6CisgICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCAtIDEKKyAgICAgICAgICAgIGVuZCA9
IGVuZCArIDEKKyAgICAgICAgZnVuY3Rpb25Cb3VuZHMuYXBwZW5kKChzdGFydCwgZW5kKSkKKwor
ICAgIGZ1bmN0aW9ucyA9IFtzb3VyY2Vbc3RhcnQ6ZW5kXS5zdHJpcCgpIGZvciAoc3RhcnQsIGVu
ZCkgaW4gZnVuY3Rpb25Cb3VuZHNdCisgICAgcmVzdWx0ID0gW10KKyAgICBmb3IgZnVuY3Rpb24g
aW4gZnVuY3Rpb25zOgorICAgICAgICBmdW5jdGlvbiA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAu
c3ViKCIiLCBmdW5jdGlvbikKKyAgICAgICAgZnVuY3Rpb25OYW1lID0gZnVuY3Rpb25OYW1lUmVn
RXhwLmZpbmRhbGwoZnVuY3Rpb24pWzBdCisgICAgICAgIGZ1bmN0aW9uUGFyYW1ldGVycyA9IGZ1
bmN0aW9uUGFyYW1ldGVyRmluZGVyLmZpbmRhbGwoZnVuY3Rpb24pWzBdLnNwbGl0KCcsJykKKyAg
ICAgICAgaWYgbGVuKGZ1bmN0aW9uUGFyYW1ldGVyc1swXSkgPT0gMDoKKyAgICAgICAgICAgIGZ1
bmN0aW9uUGFyYW1ldGVycyA9IFtdCisgICAgICAgICAgICAKKyAgICAgICAgcmVzdWx0LmFwcGVu
ZCgoZnVuY3Rpb25OYW1lLCBmdW5jdGlvbiwgZnVuY3Rpb25QYXJhbWV0ZXJzKSkKKyAgICByZXR1
cm4gcmVzdWx0CisgICAgICAgIAorCitkZWYgZ2VuZXJhdGVDb2RlKHNvdXJjZSk6CisgICAgaW5w
dXRGaWxlID0gb3Blbihzb3VyY2UsICJyIikKKyAgICBiYXNlTmFtZSA9IG9zLnBhdGguYmFzZW5h
bWUoc291cmNlKS5yZXBsYWNlKCIuanMiLCAiIikKKyAgICAKKyAgICBzb3VyY2UgPSAiIgorICAg
IGZvciBsaW5lIGluIGlucHV0RmlsZToKKyAgICAgICAgc291cmNlID0gc291cmNlICsgbGluZQor
ICAgIAorICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAiY3lnd2luIjoKKyAgICAgICAgc291cmNlID0g
c291cmNlLnJlcGxhY2UoIlxyXG4iLCAiXG4iKQorICAgIHJldHVybiAoYmFzZU5hbWUsIGdldEZ1
bmN0aW9ucyhzb3VyY2UpLCBnZXRDb3B5cmlnaHQoc291cmNlKSkKKworZGVmIG1hbmdsZU5hbWUo
b2JqZWN0LCBuYW1lKToKKyAgICBxTmFtZSA9IG9iamVjdCArICIuIiArIG5hbWUKKyAgICBtYW5n
bGVkTmFtZSA9ICIiCisgICAgaSA9IDAKKyAgICB3aGlsZSBpIDwgbGVuKHFOYW1lKToKKyAgICAg
ICAgaWYgcU5hbWVbaV0gPT0gJy4nOgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVk
TmFtZSArIHFOYW1lW2kgKyAxXS51cHBlcigpCisgICAgICAgICAgICBpID0gaSArIDEKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWUgKyBxTmFtZVtp
XQorICAgICAgICBpID0gaSArIDEKKyAgICByZXR1cm4gbWFuZ2xlZE5hbWUKKworYnVpbHRpbnMg
PSBbXQorCitiYXNlTmFtZSA9IHN5cy5hcmd2Wy0xXQorYnVpbHRpbl9kZWZpbml0aW9ucyA9IHN5
cy5hcmd2WzE6LTFdCisob3V0cHV0X2Jhc2UsIF8pID0gb3MucGF0aC5zcGxpdGV4dChzeXMuYXJn
dlstMV0pCisKK2NvcHlyaWdodHMgPSBbXQorZm9yIGZpbGUgaW4gYnVpbHRpbl9kZWZpbml0aW9u
czoKKyAgICBpZiBmbm1hdGNoLmZubWF0Y2goZmlsZSwgJyouanMnKToKKyAgICAgICAgKGJhc2VO
YW1lLCBmdW5jdGlvbnMsIG9iamVjdENvcHlyaWdodHMpID0gZ2VuZXJhdGVDb2RlKGZpbGUpCisg
ICAgICAgIGNvcHlyaWdodHMuZXh0ZW5kKG9iamVjdENvcHlyaWdodHMpCisgICAgICAgIGJ1aWx0
aW5zLmFwcGVuZCgoYmFzZU5hbWUsIGZ1bmN0aW9ucykpCisKK2NvcHlyaWdodHMgPSBsaXN0KHNl
dChjb3B5cmlnaHRzKSkKKworY29weXJpZ2h0Qm9keSA9ICIiCitmb3IgY29weXJpZ2h0IGluIGNv
cHlyaWdodHM6CisgICAgY29weXJpZ2h0Qm9keSA9IGNvcHlyaWdodEJvZHkgKyIgKiBDb3B5cmln
aHQgKEMpICIgKyBjb3B5cmlnaHQgKyAiXG4iCisKK2J1aWx0aW5zSGVhZGVyID0gb3BlbihvdXRw
dXRfYmFzZSArICIuaC50bXAiLCAidyIpCitidWlsdGluc0ltcGxlbWVudGF0aW9uID0gb3Blbihv
dXRwdXRfYmFzZSArICIuY3BwLnRtcCIsICJ3IikKK2NvcHlyaWdodFRleHQgPSAiLypcbiIgKyBj
b3B5cmlnaHRCb2R5ICsgY29weXJpZ2h0VGV4dAorYnVpbHRpbnNIZWFkZXIud3JpdGUoIiIiJXMK
KyVzCisKKyNpZm5kZWYgSlNDQnVpbHRpbnNfSAorI2RlZmluZSBKU0NCdWlsdGluc19ICisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CitjbGFzcyBJZGVudGlm
aWVyOworY2xhc3MgSlNHbG9iYWxPYmplY3Q7CitjbGFzcyBTb3VyY2VDb2RlOworY2xhc3MgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7CitjbGFzcyBWTTsKKworRnVuY3Rpb25FeGVjdXRhYmxl
KiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShWTSYsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiwgY29uc3QgU291cmNlQ29kZSYpOworCisiIiIgJSAoZ2VuZXJhdG9yU3RyaW5nLCBjb3B5cmln
aHRUZXh0KSkKKworY29kZVJlZmVyZW5jZXMgPSBbXQorCitmb3IgKG9iamVjdE5hbWUsIGZ1bmN0
aW9ucykgaW4gYnVpbHRpbnM6CisgICAgcHJpbnQoIkdlbmVyYXRpbmcgYmluZGluZ3MgZm9yIHRo
ZSAlcyBidWlsdGluLiIgJSBvYmplY3ROYW1lKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIv
KiAlcyBmdW5jdGlvbnMgKi9cbiIgJSBvYmplY3ROYW1lKQorICAgIGZvciAobmFtZSwgaW1wbGVt
ZW50YXRpb24sIF8pIGluIGZ1bmN0aW9uczoKKyAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVO
YW1lKG9iamVjdE5hbWUsIG5hbWUpCisgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWVb
MF0ubG93ZXIoKSArIG1hbmdsZWROYW1lWzE6XSArICJDb2RlIgorICAgICAgICBjb2RlUmVmZXJl
bmNlcy5hcHBlbmQoKG1hbmdsZWROYW1lLCBuYW1lLCBpbXBsZW1lbnRhdGlvbikpCisgICAgICAg
IGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJleHRlcm4gY29uc3QgY2hhciogc18lcztcbiIgJSBtYW5n
bGVkTmFtZSkKKyAgICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoImV4dGVybiBjb25zdCBpbnQg
c18lc0xlbmd0aDtcbiIgJSBtYW5nbGVkTmFtZSkKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgi
XG4iKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19GT1JFQUNIXyVzX0JV
SUxUSU4obWFjcm8pIFxcXG4iICUgb2JqZWN0TmFtZS5yZXBsYWNlKCIuIiwgIl8iKS51cHBlcigp
KQorICAgIGZvciAobmFtZSwgaW1wbGVtZW50YXRpb24sIGFyZ3VtZW50cykgaW4gZnVuY3Rpb25z
OgorICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZU5hbWUob2JqZWN0TmFtZSwgbmFtZSkKKyAg
ICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiAgICBtYWNybyglcywgJXMsICVkKSBcXFxuIiAl
IChuYW1lLCBtYW5nbGVkTmFtZSwgbGVuKGFyZ3VtZW50cykpKQorICAgIGJ1aWx0aW5zSGVhZGVy
LndyaXRlKCJcbiIpCisgICAgZm9yIChuYW1lLCBpbXBsZW1lbnRhdGlvbiwgYXJndW1lbnRzKSBp
biBmdW5jdGlvbnM6CisgICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19C
VUlMVElOXyVzIDFcbiIgJSBtYW5nbGVOYW1lKG9iamVjdE5hbWUsIG5hbWUpLnVwcGVyKCkpCisg
ICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuXG4iKQorbmFtZXMgPSBbXQorYnVpbHRpbnNIZWFk
ZXIud3JpdGUoIiNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTihtYWNybylcXFxuIikKK2ZvciAo
Y29kZVJlZmVyZW5jZSwgZnVuY3Rpb25OYW1lLCBzb3VyY2UpIGluIGNvZGVSZWZlcmVuY2VzOgor
ICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIgICAgbWFjcm8oJXMsICVzLCBzXyVzTGVuZ3RoKSBc
XFxuIiAlIChjb2RlUmVmZXJlbmNlLCBmdW5jdGlvbk5hbWUsIGNvZGVSZWZlcmVuY2UpKQorICAg
IG5hbWVzLmFwcGVuZChmdW5jdGlvbk5hbWUpCisKK2J1aWx0aW5zSGVhZGVyLndyaXRlKCJcblxu
IikKK2J1aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVO
Q1RJT05fTkFNRShtYWNybykgXFxcbiIpCitmb3IgbmFtZSBpbiBzb3J0ZWQoc2V0KG5hbWVzKSk6
CisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiAgICBtYWNybyglcykgXFxcbiIgJSBuYW1lKQor
YnVpbHRpbnNIZWFkZXIud3JpdGUoIiIiCisKKyNkZWZpbmUgSlNDX0RFQ0xBUkVfQlVJTFRJTl9H
RU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKKyAgICBG
dW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoVk0mKTsKKworSlNDX0ZPUkVB
Q0hfQlVJTFRJTihKU0NfREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBKU0NfREVD
TEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5lIEpTQ19CVUlMVElOX0VYSVNUUyhuYW1l
KSBkZWZpbmVkKEpTQ19CVUlMVElOXyMjbmFtZSkKKworfQorCisjZW5kaWYKKworIiIiKQorCiti
dWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIiVzCislcworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgorCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1
dGFibGVzLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGlu
ZXMuaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworIiIiICAlIChnZW5l
cmF0b3JTdHJpbmcsIGNvcHlyaWdodFRleHQpKQorCitmb3IgKGNvZGVSZWZlcmVuY2UsIG5hbWUs
IHNvdXJjZSkgaW4gY29kZVJlZmVyZW5jZXM6CisgICAgc291cmNlID0gIihmdW5jdGlvbiAiICsg
c291cmNlW3NvdXJjZS5pbmRleCgiKCIpOl0gKyAiKSIKKyAgICBsaW5lcyA9IGpzb24uZHVtcHMo
c291cmNlKVsxOi0xXS5zcGxpdCgiXFxuIikKKyAgICBzb3VyY2VMZW5ndGggPSBsZW4oc291cmNl
KQorICAgIHNvdXJjZSA9ICIiCisgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgIHNvdXJj
ZSA9IHNvdXJjZSArICgiICAgIFwiJXNcXG5cIiBcXFxuIiAlIGxpbmUpCisgICAgYnVpbHRpbnNJ
bXBsZW1lbnRhdGlvbi53cml0ZSgiY29uc3QgY2hhciogc18lcyA9XG4lcztcblxuIiAlIChjb2Rl
UmVmZXJlbmNlLCBzb3VyY2UpKQorICAgIGJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoImNv
bnN0IGludCBzXyVzTGVuZ3RoID0gJWQ7XG5cbiIgJSAoY29kZVJlZmVyZW5jZSwgc291cmNlTGVu
Z3RoICsgMSkpICMgKyAxIGZvciBcbgorCitidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIi
IgorRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShWTSYgdm0sIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSkKK3sKKyAgICB1bnNpZ25lZCBsaW5lQ291bnQgPSB1bmxpbmtlZEV4ZWN1
dGFibGUtPmxpbmVDb3VudCgpOworICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gMTsKKyAgICB1
bnNpZ25lZCBzb3VyY2VMZW5ndGggPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnNvdXJjZUxlbmd0aCgp
OworICAgIGJvb2wgZW5kQ29sdW1uSXNPblN0YXJ0TGluZSA9ICFsaW5lQ291bnQ7CisgICAgdW5z
aWduZWQgZW5kQ29sdW1uRXhjbHVkaW5nQnJhY2VzID0gdW5saW5rZWRFeGVjdXRhYmxlLT51bmxp
bmtlZEJvZHlFbmRDb2x1bW4oKSArIChlbmRDb2x1bW5Jc09uU3RhcnRMaW5lID8gMCA6IDEpOwor
ICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gdW5saW5rZWRFeGVjdXRhYmxlLT5zdGFydE9mZnNl
dCgpOworICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0RXhjbHVkaW5nT3BlbkJyYWNlID0gc3RhcnRP
ZmZzZXQgKyAxOworICAgIHVuc2lnbmVkIGVuZE9mZnNldEV4Y2x1ZGluZ0Nsb3NlQnJhY2UgPSBz
dGFydE9mZnNldCArIHNvdXJjZUxlbmd0aCAtIDE7CisgICAgU291cmNlQ29kZSBib2R5U291cmNl
KHNvdXJjZS5wcm92aWRlcigpLCBzdGFydE9mZnNldEV4Y2x1ZGluZ09wZW5CcmFjZSwgZW5kT2Zm
c2V0RXhjbHVkaW5nQ2xvc2VCcmFjZSwgMCwgc3RhcnRDb2x1bW4pOworICAgIHJldHVybiBGdW5j
dGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgYm9keVNvdXJjZSwgdW5saW5rZWRFeGVjdXRhYmxl
LCAwLCBsaW5lQ291bnQsIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW5FeGNsdWRpbmdCcmFjZXMsIGZh
bHNlKTsKK30KKworI2RlZmluZSBKU0NfREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1l
LCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCitGdW5jdGlvbkV4ZWN1dGFibGUqIGNv
ZGVOYW1lIyNHZW5lcmF0b3IoVk0mIHZtKSBcXAoreyBcXAorICAgIHJldHVybiBjcmVhdGVCdWls
dGluRXhlY3V0YWJsZSh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVj
dXRhYmxlKCksIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyBc
XAorfQorCitKU0NfRk9SRUFDSF9CVUlMVElOKEpTQ19ERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1Ip
CisjdW5kZWYgSlNDX0RFRklORV9CVUlMVElOX0dFTkVSQVRPUgorfQorCisiIiIpCisKK2J1aWx0
aW5zSGVhZGVyLmNsb3NlKCkKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24uY2xvc2UoKQorCitpZiAo
bm90IG9zLnBhdGguZXhpc3RzKG91dHB1dF9iYXNlICsgIi5oIikpIG9yIChub3QgZmlsZWNtcC5j
bXAob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmgiLCBzaGFsbG93PUZh
bHNlKSk6CisgICAgb3MucmVuYW1lKG91dHB1dF9iYXNlICsgIi5oLnRtcCIsIG91dHB1dF9iYXNl
ICsgIi5oIikKK2Vsc2U6CisgICAgb3MucmVtb3ZlKG91dHB1dF9iYXNlICsgIi5oLnRtcCIpCisK
K2lmIChub3Qgb3MucGF0aC5leGlzdHMob3V0cHV0X2Jhc2UgKyAiLmNwcCIpKSBvciAobm90IGZp
bGVjbXAuY21wKG91dHB1dF9iYXNlICsgIi5jcHAudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmNwcCIs
IHNoYWxsb3c9RmFsc2UpKToKKyAgICBvcy5yZW5hbWUob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAi
LCBvdXRwdXRfYmFzZSArICIuY3BwIikKK2Vsc2U6CisgICAgb3MucmVtb3ZlKG91dHB1dF9iYXNl
ICsgIi5jcHAudG1wIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwCmluZGV4IGNhODkwYjA2ZWEzM2ZhOWU3ZjFmYTUxYTM1ZWEyZDQ4ZDAw
OWEzOGEuLjZjOWJmOTZjMTVmNjA5ZTI2NWNlMjUwYTQ1YmYwODYxZDA2Y2QxZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAt
NTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKICNpbmNs
dWRlICJKU1N0YWNrSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAi
SlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNsdWRlICJM
TEludENMb29wLmgiCiAjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuY3BwCmluZGV4IGYwZTAy
YmE0ZTQ3NmY5OWNjOTEzYjA0NjJhZDI3OTUwMDYwOWZhM2EuLjFjMjQwZGNkNzFiZTUyOWQ4OGNi
ZjQ2MWQxODY4ZjVlYjJiMDJhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1
ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRl
ICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAKIG5h
bWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5k
ZXggY2E3YWQxMWYyZTBiOGEzYjhiMTg1ODkxZDdlNTIyYmFlNDAzYTIzNi4uY2I1NTA3YmVhYzU1
YmY4ZWIxYjM3ZWM5MGZjYWIxOTM0ZmI0OGVhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSGVhcC5oIgogI2lu
Y2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlND
SlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDk4ZDEwYTNmNGRjYjEy
ZDg5ZjM3YTEyZjIyNjA0Yjk0NmUwOGU2MjcuLmRkMDM1Mzc3OWU4YmRmOThmNDY1OGEzMDdlMzJk
MDZlNDcyNDQxNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2RlczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMz
Ml82NC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1
ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9u
LmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggOTI4ZGQ1MGZiMDE2ZTI3MTY0NGE1
NzVlMzBhYjVmMjUxNmViNTBlYy4uNDk4NzBlNjhhODdiZTE5ZTE1OGEwNmQxYzY0ZmVjOWI4YmQw
ODIyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBA
IC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9u
V3JhcHBlcnMuaCIKICNpbmNsdWRlICJKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFj
ay5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxP
YmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkpT
UHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggMjZkZDRkMWFmNzQ1YWZhMWZiYzUzYTljMDIzYTZl
NDc0MWE2NmEwOS4uZGYxYmQzYTljZmE0MDJjNTJhNTIxMWNmMWFjY2U2N2Q1MTIxYjdlZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAg
LTI5LDExICsyOSwxMyBAQAogI2luY2x1ZGUgIkpJVC5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2Nr
LmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJHQ0F3YXJlSklU
U3R1YlJvdXRpbmUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJJbnRl
cnByZXRlci5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5Lmgi
CisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTVmFyaWFi
bGVPYmplY3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IGQxOGZlYTcxNWNiMDNiMzdhYTkyNmQ4NDlhOGU1YWI5
NTYzZWNkM2QuLjMyNjFiM2FmNmVlYWJkNmYyNmE0M2EwOGQyMDRiYzYyYjA2NTg5YjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVk
ZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNWYXJpYWJsZU9iamVjdC5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAppbmRleCA0MDc4NGI0OTQzMWZlMDJlOGU0NTIyZjE2MzA4YzkwMjQ3MTZkMjM2
Li4yZjc5NTU1NGIwOTFkZWViYmMwM2JmMmJlOGM3NGY0MWFlNTQxZWQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUg
IkpTUHJveHkuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5s
aW5lcy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Rvb2wu
aCIKICNpbmNsdWRlICJTdGFja1Zpc2l0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggNjA0Y2MyNjNjZjk3
ZTA4NmZlZDA2ZWM5MDNiMGVjMTk4M2U3ODEzNy4uODE2NmU3ZjgxZmE4OWE3ZDRmNTBjNWYxYTk0
ZmE5NjhjNWQ1N2UxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJK
SVRTdHVicy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKLSNp
bmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNp
bmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNP
YmplY3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCmluZGV4IDY2NDQ0YmFhMDhiNTYyZGQ2OTdlMGNjZDc3MjFlNTVjMTViYTQ5MTMuLmQ4MmU5
ZTljMjgxODQ2MWUzMDVmZjg2NWQyZmIxNjhhNzhjYmI0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtNDAsNyArNDAsNyBAQAogI2lu
Y2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKICNpbmNsdWRlICJKU0Fj
dGl2YXRpb24uaCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1
ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCA4ZWMxZmQzMmEz
YWRhMjJlMTI1MjI5NTcwZGNmN2ZmMjhlYWJmMWVkLi40NmE3Yzc2YjJmOTAxZmMzY2MzNmQxY2Uw
YzA3MzUzZWIwNmIyZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxk
ZXIuaApAQCAtODg4LDkgKzg4OCw5IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtl
RnVuY3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uCiAgICAgQVNT
RVJUKGZ1bmMtPmlzRG90QWNjZXNzb3JOb2RlKCkpOwogICAgIERvdEFjY2Vzc29yTm9kZSogZG90
ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4oZnVuYyk7CiAgICAgRnVuY3Rpb25DYWxs
RG90Tm9kZSogbm9kZTsKLSAgICBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVy
dHlOYW1lcy0+Y2FsbCkKKyAgICBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVy
dHlOYW1lcy0+Y2FsbCB8fCBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5jYWxsUHJpdmF0ZU5hbWUpCiAgICAgICAgIG5vZGUgPSBuZXcgKG1fdm0pIENhbGxGdW5jdGlv
bkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFy
Z3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7Ci0gICAgZWxzZSBpZiAoZG90LT5pZGVu
dGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXBwbHkpCisgICAgZWxzZSBpZiAoZG90
LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXBwbHkgfHwgZG90LT5pZGVu
dGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXBwbHlQcml2YXRlTmFtZSkKICAgICAg
ICAgbm9kZSA9IG5ldyAobV92bSkgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBk
b3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBk
aXZvdEVuZCk7CiAgICAgZWxzZQogICAgICAgICBub2RlID0gbmV3IChtX3ZtKSBGdW5jdGlvbkNh
bGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3Ms
IGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
TGV4ZXIuY3BwCmluZGV4IGNhNGJiNGYwYWRlOGQ2YmM4MjY5MWE2YzAwMDE0Y2YxOThiZDg4YmQu
LmNjYjA3OWQ5NzVhMTQxYzVjNGIyZDdiNjIzMTMwMDA3MDk3Nzc4MjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC0yNSwxMCArMjUsMTAgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJMZXhlci5oIgogCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmll
cnMuaCIKKyNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbklubGlu
ZXMuaCIKLQogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCi0jaW5jbHVkZSAi
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk5vZGVJbmZvLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIK
ICNpbmNsdWRlIDx3dGYvZHRvYS5oPgpAQCAtOTAsNiArOTAsNyBAQCBlbnVtIENoYXJhY3RlclR5
cGUgewogCiAgICAgLy8gT3RoZXIgdHlwZXMgKG9ubHkgb25lIHNvIGZhcikKICAgICBDaGFyYWN0
ZXJXaGl0ZVNwYWNlLAorICAgIENoYXJhY3RlclByaXZhdGVJZGVudGlmaWVyU3RhcnQKIH07CiAK
IC8vIDI1NiBMYXRpbi0xIGNvZGVzCkBAIC0xNTgsNyArMTU5LDcgQEAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIHNob3J0IHR5cGVzT2ZMYXRpbjFDaGFyYWN0ZXJzWzI1Nl0gPSB7CiAvKiAgNjEgLSA9
ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyRXF1YWwsCiAvKiAgNjIgLSA+ICAgICAgICAg
ICAgICAgICAgKi8gQ2hhcmFjdGVyR3JlYXRlciwKIC8qICA2MyAtID8gICAgICAgICAgICAgICAg
ICAqLyBDaGFyYWN0ZXJRdWVzdGlvbiwKLS8qICA2NCAtIEAgICAgICAgICAgICAgICAgICAqLyBD
aGFyYWN0ZXJJbnZhbGlkLAorLyogIDY0IC0gQCAgICAgICAgICAgICAgICAgICovIENoYXJhY3Rl
clByaXZhdGVJZGVudGlmaWVyU3RhcnQsCiAvKiAgNjUgLSBBICAgICAgICAgICAgICAgICAgKi8g
Q2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAogLyogIDY2IC0gQiAgICAgICAgICAgICAgICAgICov
IENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKIC8qICA2NyAtIEMgICAgICAgICAgICAgICAgICAq
LyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCkBAIC00ODYsOSArNDg3LDEwIEBAIHN0YXRpYyBj
b25zdCBMQ2hhciBzaW5nbGVDaGFyYWN0ZXJFc2NhcGVWYWx1ZXNGb3JBU0NJSVsxMjhdID0gewog
fTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1MZXhlcjxUPjo6TGV4ZXIoVk0qIHZtKQorTGV4
ZXI8VD46OkxleGVyKFZNKiB2bSwgSlNQYXJzZXJTdHJpY3RuZXNzIHN0cmljdG5lc3MpCiAgICAg
OiBtX2lzUmVwYXJzaW5nKGZhbHNlKQogICAgICwgbV92bSh2bSkKKyAgICAsIG1fcGFyc2luZ0J1
aWx0aW5GdW5jdGlvbihzdHJpY3RuZXNzID09IEpTUGFyc2VCdWlsdGluKQogewogfQogCkBAIC03
NTMsNyArNzU1LDI3IEBAIGlubGluZSB2b2lkIExleGVyPFQ+OjpyZWNvcmQxNihpbnQgYykKICAg
ICBBU1NFUlQoYyA8PSBzdGF0aWNfY2FzdDxpbnQ+KFVTSFJUX01BWCkpOwogICAgIG1fYnVmZmVy
MTYuYXBwZW5kKHN0YXRpY19jYXN0PFVDaGFyPihjKSk7CiB9Ci0KKyAgICAKKyNpZiAhQVNTRVJU
X0RJU0FCTEVECitib29sIGlzU2FmZUlkZW50aWZpZXIoVk0mIHZtLCBjb25zdCBJZGVudGlmaWVy
KiBpZGVudCkKK3sKKyAgICBpZiAoIWlkZW50KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAv
KiBKdXN0IGJsb2NrIGFueSB1c2Ugb2Ygc3VzcGljaW91cyBpZGVudGlmaWVycy4gIFRoaXMgaXMg
aW50ZW5kZWQgdG8KKyAgICAgKiBiZSB1c2VkIGFzIGEgc2FmZXR5IG5ldCB3aGlsZSBpbXBsZW1l
bnRpbmcgYnVpbHRpbnMuCisgICAgICovCisgICAgaWYgKCppZGVudCA9PSB2bS5wcm9wZXJ0eU5h
bWVzLT5jYWxsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCppZGVudCA9PSB2bS5w
cm9wZXJ0eU5hbWVzLT5hcHBseSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgqaWRl
bnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+ZXZhbCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmICgqaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+RnVuY3Rpb24pCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorICAgIAogdGVtcGxhdGUgPD4K
IHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNU
b2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwYXJzZUlkZW50aWZpZXIoSlNUb2tlbkRhdGEqIHRva2Vu
RGF0YSwgdW5zaWduZWQgbGV4ZXJGbGFncywgYm9vbCBzdHJpY3RNb2RlKQogewpAQCAtNzY1LDcg
Kzc4NywxMSBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNf
SU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAogICAgICAgICAgICAgcmV0dXJuIGtl
eXdvcmQgPT0gUkVTRVJWRURfSUZfU1RSSUNUICYmICFzdHJpY3RNb2RlID8gSURFTlQgOiBrZXl3
b3JkOwogICAgICAgICB9CiAgICAgfQotCisgICAgCisgICAgYm9vbCBpc1ByaXZhdGVOYW1lID0g
bV9jdXJyZW50ID09ICdAJyAmJiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247CisgICAgaWYgKGlz
UHJpdmF0ZU5hbWUpCisgICAgICAgIHNoaWZ0KCk7CisgICAgCiAgICAgY29uc3QgTENoYXIqIGlk
ZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKICAgICB1bnNpZ25lZCBpZGVudGlm
aWVyTGluZVN0YXJ0ID0gY3VycmVudExpbmVTdGFydE9mZnNldCgpOwogICAgIApAQCAtNzc5LDE1
ICs4MDUsMjYgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlT
X0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKIAogICAgIGNvbnN0IElkZW50aWZp
ZXIqIGlkZW50ID0gMDsKICAgICAKLSAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcikgewor
ICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyIHx8IG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlv
bikgewogICAgICAgICBpbnQgaWRlbnRpZmllckxlbmd0aCA9IGN1cnJlbnRTb3VyY2VQdHIoKSAt
IGlkZW50aWZpZXJTdGFydDsKICAgICAgICAgaWRlbnQgPSBtYWtlSWRlbnRpZmllcihpZGVudGlm
aWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwotCisgICAgICAgIGlmIChtX3BhcnNpbmdCdWls
dGluRnVuY3Rpb24pIHsKKyAgICAgICAgICAgIGlmICghaXNTYWZlSWRlbnRpZmllcigqbV92bSwg
aWRlbnQpICYmICFpc1ByaXZhdGVOYW1lKSB7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1l
c3NhZ2UgPSBtYWtlU3RyaW5nKCJUaGUgdXNlIG9mICciLCBpZGVudC0+c3RyaW5nKCksICInIGlz
IGRpc2FsbG93ZWQgaW4gYnVpbHRpbiBmdW5jdGlvbnMuIik7CisgICAgICAgICAgICAgICAgcmV0
dXJuIEVSUk9SVE9LOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGlzUHJpdmF0ZU5h
bWUpCisgICAgICAgICAgICAgICAgaWRlbnQgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZXRQcml2
YXRlTmFtZSgqaWRlbnQpOworICAgICAgICAgICAgZWxzZSBpZiAoKmlkZW50ID09IG1fdm0tPnBy
b3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQpCisgICAgICAgICAgICAgICAgdG9rZW5EYXRh
LT5pZGVudCA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkUHJpdmF0ZU5h
bWU7CisgICAgICAgICAgICBpZiAoIWlkZW50KQorICAgICAgICAgICAgICAgIHJldHVybiBJTlZB
TElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzsKKyAgICAgICAgfQogICAgICAgICB0b2tlbkRhdGEt
PmlkZW50ID0gaWRlbnQ7CiAgICAgfSBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAw
OwogCi0gICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIShs
ZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMpKSkgeworICAgIGlmIChV
TkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICEobGV4ZXJGbGFncyAmIExl
eGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsKICAgICAg
ICAgQVNTRVJUKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpOwogICAgICAgICBpZiAocmVtYWluaW5n
IDwgbWF4VG9rZW5MZW5ndGgpIHsKICAgICAgICAgICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkg
PSBtX3ZtLT5rZXl3b3Jkcy0+Z2V0S2V5d29yZCgqaWRlbnQpOwpAQCAtODE0LDYgKzg1MSwxMCBA
QCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpT
VG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAgICAgICAgICAgcmV0dXJuIGtleXdvcmQgPT0g
UkVTRVJWRURfSUZfU1RSSUNUICYmICFzdHJpY3RNb2RlID8gSURFTlQgOiBrZXl3b3JkOwogICAg
ICAgICB9CiAgICAgfQorICAgIAorICAgIGJvb2wgaXNQcml2YXRlTmFtZSA9IG1fY3VycmVudCA9
PSAnQCcgJiYgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uOworICAgIGlmIChpc1ByaXZhdGVOYW1l
KQorICAgICAgICBzaGlmdCgpOwogCiAgICAgY29uc3QgVUNoYXIqIGlkZW50aWZpZXJTdGFydCA9
IGN1cnJlbnRTb3VyY2VQdHIoKTsKICAgICBpbnQgaWRlbnRpZmllckxpbmVTdGFydCA9IGN1cnJl
bnRMaW5lU3RhcnRPZmZzZXQoKTsKQEAgLTgyNiw2ICs4NjcsNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBz
aG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVD
aGFyPjo6cAogICAgIH0KICAgICAKICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50ID09ICdcXCcp
KSB7CisgICAgICAgIEFTU0VSVCghaXNQcml2YXRlTmFtZSk7CiAgICAgICAgIHNldE9mZnNldEZy
b21Tb3VyY2VQdHIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGluZVN0YXJ0KTsKICAgICAg
ICAgcmV0dXJuIHBhcnNlSWRlbnRpZmllclNsb3dDYXNlPHNob3VsZENyZWF0ZUlkZW50aWZpZXI+
KHRva2VuRGF0YSwgbGV4ZXJGbGFncywgc3RyaWN0TW9kZSk7CiAgICAgfQpAQCAtODM3LDE4ICs4
NzksMjkgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lO
TElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAKIAogICAgIGNvbnN0IElkZW50aWZpZXIq
IGlkZW50ID0gMDsKICAgICAKLSAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcikgeworICAg
IGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyIHx8IG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikg
ewogICAgICAgICBpbnQgaWRlbnRpZmllckxlbmd0aCA9IGN1cnJlbnRTb3VyY2VQdHIoKSAtIGlk
ZW50aWZpZXJTdGFydDsKICAgICAgICAgaWYgKGlzQWxsOEJpdCkKICAgICAgICAgICAgIGlkZW50
ID0gbWFrZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hhcihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZp
ZXJMZW5ndGgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBpZGVudCA9IG1ha2VJZGVudGlm
aWVyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCk7Ci0gICAgICAgIAorICAgICAg
ICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CisgICAgICAgICAgICBpZiAoIWlzU2Fm
ZUlkZW50aWZpZXIoKm1fdm0sIGlkZW50KSAmJiAhaXNQcml2YXRlTmFtZSkgeworICAgICAgICAg
ICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZygiVGhlIHVzZSBvZiAnIiwgaWRl
bnQtPnN0cmluZygpLCAiJyBpcyBkaXNhbGxvd2VkIGluIGJ1aWx0aW4gZnVuY3Rpb25zLiIpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPSzsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICAgICAgICAgIGlkZW50ID0gbV92bS0+cHJv
cGVydHlOYW1lcy0+Z2V0UHJpdmF0ZU5hbWUoKmlkZW50KTsKKyAgICAgICAgICAgIGVsc2UgaWYg
KCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkKQorICAgICAg
ICAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZp
bmVkS2V5d29yZFByaXZhdGVOYW1lOworICAgICAgICAgICAgaWYgKCFpZGVudCkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gSU5WQUxJRF9QUklWQVRFX05BTUVfRVJST1JUT0s7CisgICAgICAgIH0K
ICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IGlkZW50OwogICAgIH0gZWxzZQogICAgICAgICB0
b2tlbkRhdGEtPmlkZW50ID0gMDsKICAgICAKLSAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8
IG1heFRva2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxhZ3MgJiBMZXhlckZsYWdzSWdub3JlUmVzZXJ2
ZWRXb3JkcykpKSB7CisgICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0
aCkgJiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMpKSAmJiAh
aXNQcml2YXRlTmFtZSkgewogICAgICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7
CiAgICAgICAgIGlmIChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgewogICAgICAgICAgICAg
Y29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IG1fdm0tPmtleXdvcmRzLT5nZXRLZXl3b3JkKCppZGVu
dCk7CkBAIC0xNjU4LDYgKzE3MTEsNyBAQCBpbk51bWJlckFmdGVyRGVjaW1hbFBvaW50OgogICAg
ICAgICBBU1NFUlQoaXNJZGVudFN0YXJ0KG1fY3VycmVudCkpOwogICAgICAgICBGQUxMVEhST1VH
SDsKICAgICBjYXNlIENoYXJhY3RlckJhY2tTbGFzaDoKKyAgICAgICAgcGFyc2VJZGVudDoKICAg
ICAgICAgaWYgKGxleGVyRmxhZ3MgJiBMZXhleEZsYWdzRG9udEJ1aWxkS2V5d29yZHMpCiAgICAg
ICAgICAgICB0b2tlbiA9IHBhcnNlSWRlbnRpZmllcjxmYWxzZT4odG9rZW5EYXRhLCBsZXhlckZs
YWdzLCBzdHJpY3RNb2RlKTsKICAgICAgICAgZWxzZQpAQCAtMTY3MCw2ICsxNzI0LDExIEBAIGlu
TnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ6CiAgICAgICAgIG1fdGVybWluYXRvciA9IHRydWU7CiAg
ICAgICAgIG1fbGluZVN0YXJ0ID0gbV9jb2RlOwogICAgICAgICBnb3RvIHN0YXJ0OworICAgIGNh
c2UgQ2hhcmFjdGVyUHJpdmF0ZUlkZW50aWZpZXJTdGFydDoKKyAgICAgICAgaWYgKG1fcGFyc2lu
Z0J1aWx0aW5GdW5jdGlvbikKKyAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudDsKKworICAgICAg
ICBGQUxMVEhST1VHSDsKICAgICBjYXNlIENoYXJhY3RlckludmFsaWQ6CiAgICAgICAgIG1fbGV4
RXJyb3JNZXNzYWdlID0gaW52YWxpZENoYXJhY3Rlck1lc3NhZ2UoKTsKICAgICAgICAgdG9rZW4g
PSBFUlJPUlRPSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAppbmRleCAyOGM2MWJh
MTk4ZDJjMTVhNDliYjE4NTJlZDMwYmVmZWI4OTA0MDA4Li5iODg3M2U5OTUwMjg2NDRiZjhjYmIz
ZDRjMmRhNTYyZTkzZTBlOGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0xleGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCkBA
IC03Miw3ICs3Miw3IEBAIGNsYXNzIExleGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIAogcHVibGljOgotICAgIExleGVyKFZNKik7CisgICAgTGV4ZXIoVk0qLCBKU1BhcnNlclN0
cmljdG5lc3MpOwogICAgIH5MZXhlcigpOwogCiAgICAgLy8gQ2hhcmFjdGVyIG1hbmlwdWxhdGlv
biBmdW5jdGlvbnMuCkBAIC0yMzgsNiArMjM4LDcgQEAgcHJpdmF0ZToKICAgICBJZGVudGlmaWVy
QXJlbmEqIG1fYXJlbmE7CiAKICAgICBWTSogbV92bTsKKyAgICBib29sIG1fcGFyc2luZ0J1aWx0
aW5GdW5jdGlvbjsKIH07CiAKIHRlbXBsYXRlIDw+CkBAIC0zMzUsNiArMzM2LDEyIEBAIEFMV0FZ
U19JTkxJTkUgY29uc3QgSWRlbnRpZmllciogTGV4ZXI8VD46Om1ha2VMQ2hhcklkZW50aWZpZXIo
Y29uc3QgVUNoYXIqIGNoYXJhCiAgICAgcmV0dXJuICZtX2FyZW5hLT5tYWtlSWRlbnRpZmllckxD
aGFyRnJvbVVDaGFyKG1fdm0sIGNoYXJhY3RlcnMsIGxlbmd0aCk7CiB9CiAKKyNpZiBBU1NFUlRf
RElTQUJMRUQKK0FMV0FZU19JTkxJTkUgYm9vbCBpc1NhZmVJZGVudGlmaWVyKFZNJiwgY29uc3Qg
SWRlbnRpZmllciopIHsgcmV0dXJuIHRydWU7IH0KKyNlbHNlCitib29sIGlzU2FmZUlkZW50aWZp
ZXIoVk0mLCBjb25zdCBJZGVudGlmaWVyKik7CisjZW5kaWYKKwogdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlm
aWVyKEpTVG9rZW4qIHRva2VuUmVjb3JkLCB1bnNpZ25lZCBsZXhlckZsYWdzLCBib29sIHN0cmlj
dE1vZGUpCiB7CkBAIC0zNzAsMTAgKzM3NywxNSBAQCBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBl
IExleGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW4qIHRva2VuUmVjb3JkLCB1bgog
ICAgIEFTU0VSVChjdXJyZW50T2Zmc2V0KCkgPj0gY3VycmVudExpbmVTdGFydE9mZnNldCgpKTsK
IAogICAgIC8vIENyZWF0ZSB0aGUgaWRlbnRpZmllciBpZiBuZWVkZWQKLSAgICBpZiAobGV4ZXJG
bGFncyAmIExleGV4RmxhZ3NEb250QnVpbGRLZXl3b3JkcykKKyAgICBpZiAobGV4ZXJGbGFncyAm
IExleGV4RmxhZ3NEb250QnVpbGRLZXl3b3JkcworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAg
ICAgJiYgIW1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbgorI2VuZGlmCisgICAgICAgICkKICAgICAg
ICAgdG9rZW5EYXRhLT5pZGVudCA9IDA7CiAgICAgZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlk
ZW50ID0gbWFrZUxDaGFySWRlbnRpZmllcihzdGFydCwgcHRyIC0gc3RhcnQpOworCiAgICAgdG9r
ZW5Mb2NhdGlvbi0+bGluZSA9IG1fbGluZU51bWJlcjsKICAgICB0b2tlbkxvY2F0aW9uLT5saW5l
U3RhcnRPZmZzZXQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CiAgICAgdG9rZW5Mb2NhdGlv
bi0+c3RhcnRPZmZzZXQgPSBvZmZzZXRGcm9tU291cmNlUHRyKHN0YXJ0KTsKQEAgLTM4MSw2ICsz
OTMsMTMgQEAgQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4RXhwZWN0SWRl
bnRpZmllcihKU1Rva2VuKiB0b2tlblJlY29yZCwgdW4KICAgICBBU1NFUlQodG9rZW5Mb2NhdGlv
bi0+c3RhcnRPZmZzZXQgPj0gdG9rZW5Mb2NhdGlvbi0+bGluZVN0YXJ0T2Zmc2V0KTsKICAgICB0
b2tlblJlY29yZC0+bV9zdGFydFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbjsKICAgICB0b2tlblJl
Y29yZC0+bV9lbmRQb3NpdGlvbiA9IGN1cnJlbnRQb3NpdGlvbigpOworI2lmICFBU1NFUlRfRElT
QUJMRUQKKyAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CisgICAgICAgIGlmICgh
aXNTYWZlSWRlbnRpZmllcigqbV92bSwgdG9rZW5EYXRhLT5pZGVudCkpCisgICAgICAgICAgICBy
ZXR1cm4gRVJST1JUT0s7CisgICAgfQorI2VuZGlmCisKICAgICBtX2xhc3RUb2tlbiA9IElERU5U
OwogICAgIHJldHVybiBJREVOVDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5jcHAKaW5kZXggZmM5Y2NkOWY2YzU3NmMxYWVmNTQ3ZjIxMWZkZDU5NmY0MmUwNTgwNi4uZDk1
MmJhNmE5NGQyZjZiNDE4MjE1NTAwNGQwYTk3MDg0MjliZDc4YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTEzMiw2ICsxMzIsMTIgQEAgUGFzc1JlZlB0cjxQcm9n
cmFtTm9kZT4gUHJvZ3JhbU5vZGU6OmNyZWF0ZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgc3RhcnQKICAgICByZXR1cm4gbm9kZS5yZWxlYXNlKCk7CiB9CiAKKwordm9pZCBQcm9ncmFt
Tm9kZTo6c2V0Q2xvc2VkVmFyaWFibGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+
JiYgY2xvc2VkVmFyaWFibGVzKQoreworICAgIG1fY2xvc2VkVmFyaWFibGVzID0gc3RkOjptb3Zl
KGNsb3NlZFZhcmlhYmxlcyk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBFdmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBpbmxpbmUgRXZhbE5v
ZGU6OkV2YWxOb2RlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9u
LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBlbmRDb2x1bW4s
IFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0
YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCBkNzc5YTE3OGQ5NTZmZjk5
ZmQwYmVkNWQ1ZjQ1NGFhM2U2YjUwODc5Li44MTZmZjAwMWFiZjAzNzZjNjQyZjFhOTM4ZDBlMGE5
ZjUyOWNhNmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xNDMxLDYg
KzE0MzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBuZWVkc0FjdGl2YXRpb24o
KSBjb25zdCB7IHJldHVybiAoaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkgfHwgKG1fZmVhdHVyZXMg
JiAoRXZhbEZlYXR1cmUgfCBXaXRoRmVhdHVyZSB8IENhdGNoRmVhdHVyZSkpOyB9CiAgICAgICAg
IGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiAhIW1fY2FwdHVyZWRW
YXJpYWJsZXMuc2l6ZSgpOyB9CiAgICAgICAgIHNpemVfdCBjYXB0dXJlZFZhcmlhYmxlQ291bnQo
KSBjb25zdCB7IHJldHVybiBtX2NhcHR1cmVkVmFyaWFibGVzLnNpemUoKTsgfQorICAgICAgICBj
b25zdCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FwdHVyZWRWYXJpYWJsZXM7IH0KICAgICAgICAgYm9vbCBjYXB0dXJlcyhjb25zdCBJZGVudGlm
aWVyJiBpZGVudCkgeyByZXR1cm4gbV9jYXB0dXJlZFZhcmlhYmxlcy5jb250YWlucyhpZGVudC5p
bXBsKCkpOyB9CiAKICAgICAgICAgVmFyU3RhY2smIHZhclN0YWNrKCkgeyByZXR1cm4gbV92YXJT
dGFjazsgfQpAQCAtMTQ0Niw2ICsxNDQ3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0
YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgZW1p
dFN0YXRlbWVudHNCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRlc3Rp
bmF0aW9uKTsKKyAgICAgICAgCisgICAgICAgIHZvaWQgc2V0Q2xvc2VkVmFyaWFibGVzKGNvbnN0
IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYpIHsgfQogCiAgICAgcHJvdGVjdGVkOgogICAg
ICAgICB2b2lkIHNldFNvdXJjZShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpIHsgbV9zb3VyY2Ug
PSBzb3VyY2U7IH0KQEAgLTE0NzUsMTEgKzE0NzgsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9uID0gZmFsc2U7CiAKKyAgICAg
ICAgdm9pZCBzZXRDbG9zZWRWYXJpYWJsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBs
Pj4mJik7CisgICAgICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiBjbG9zZWRW
YXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2Nsb3NlZFZhcmlhYmxlczsgfQogICAgIHByaXZh
dGU6CiAgICAgICAgIFByb2dyYW1Ob2RlKFZNKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFy
dCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNp
Z25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNr
KiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBu
dW1Db25zdGFudHMpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwotCisgICAgICAgIFZlY3Rv
cjxSZWZQdHI8U3RyaW5nSW1wbD4+IG1fY2xvc2VkVmFyaWFibGVzOwogICAgICAgICB1bnNpZ25l
ZCBtX3N0YXJ0Q29sdW1uOwogICAgICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKICAgICB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDI5NzY2NmU3MjZlNDVk
MDgzZWYxMzQ5ZGRmZmRmMzdlZjgwMGRmN2EuLjUwYmVjNzlmZTM4YWRmOGYzYTA0ZjZiNDZjYmQy
YTVjYmZjZjI0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAg
LTIwNCw4ICsyMDQsOSBAQCBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKFZNKiB2bSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcnMqCiAgICAgLCBtX2xhc3RJZGVu
dGlmaWVyKDApCiAgICAgLCBtX2xhc3RGdW5jdGlvbk5hbWUobnVsbHB0cikKICAgICAsIG1fc291
cmNlRWxlbWVudHMoMCkKKyAgICAsIG1fcGFyc2luZ0J1aWx0aW4oc3RyaWN0bmVzcyA9PSBKU1Bh
cnNlQnVpbHRpbikKIHsKLSAgICBtX2xleGVyID0gYWRvcHRQdHIobmV3IExleGVyVHlwZSh2bSkp
OworICAgIG1fbGV4ZXIgPSBhZG9wdFB0cihuZXcgTGV4ZXJUeXBlKHZtLCBzdHJpY3RuZXNzKSk7
CiAgICAgbV9hcmVuYSA9IG1fdm0tPnBhcnNlckFyZW5hLmdldCgpOwogICAgIG1fbGV4ZXItPnNl
dENvZGUoc291cmNlLCBtX2FyZW5hKTsKICAgICBtX3Rva2VuLm1fbG9jYXRpb24ubGluZSA9IHNv
dXJjZS5maXJzdExpbmUoKTsKQEAgLTI1Niw2ICsyNTcsNyBAQCBTdHJpbmcgUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlSW5uZXIoKQogICAgIElkZW50aWZpZXJTZXQgY2FwdHVyZWRWYXJpYWJsZXM7
CiAgICAgYm9vbCBtb2RpZmllZFBhcmFtZXRlciA9IGZhbHNlOwogICAgIHNjb3BlLT5nZXRDYXB0
dXJlZFZhcmlhYmxlcyhjYXB0dXJlZFZhcmlhYmxlcywgbW9kaWZpZWRQYXJhbWV0ZXIpOworICAg
IAogICAgIENvZGVGZWF0dXJlcyBmZWF0dXJlcyA9IGNvbnRleHQuZmVhdHVyZXMoKTsKICAgICBp
ZiAoc2NvcGUtPnN0cmljdE1vZGUoKSkKICAgICAgICAgZmVhdHVyZXMgfD0gU3RyaWN0TW9kZUZl
YXR1cmU7CkBAIC0yNjMsMjEgKzI2NSwzNiBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSW5uZXIoKQogICAgICAgICBmZWF0dXJlcyB8PSBTaGFkb3dzQXJndW1lbnRzRmVhdHVyZTsK
ICAgICBpZiAobW9kaWZpZWRQYXJhbWV0ZXIpCiAgICAgICAgIGZlYXR1cmVzIHw9IE1vZGlmaWVk
UGFyYW1ldGVyRmVhdHVyZTsKLQorICAgIAorICAgIFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+
IGNsb3NlZFZhcmlhYmxlczsKKyAgICBpZiAobV9wYXJzaW5nQnVpbHRpbikgeworICAgICAgICBS
RUxFQVNFX0FTU0VSVCghY2FwdHVyZWRWYXJpYWJsZXMuc2l6ZSgpKTsKKyAgICAgICAgSWRlbnRp
ZmllclNldCB1c2VkVmFyaWFibGVzOworICAgICAgICBzY29wZS0+Z2V0VXNlZFZhcmlhYmxlcyh1
c2VkVmFyaWFibGVzKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiB2YXJpYWJsZSA6IHVzZWRW
YXJpYWJsZXMpIHsKKyAgICAgICAgICAgIGlmIChzY29wZS0+aGFzRGVjbGFyZWRWYXJpYWJsZShJ
ZGVudGlmaWVyKG1fdm0sIHZhcmlhYmxlLmdldCgpKSkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChzY29wZS0+aGFzRGVjbGFyZWRQYXJh
bWV0ZXIoSWRlbnRpZmllcihtX3ZtLCB2YXJpYWJsZS5nZXQoKSkpKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgY2xvc2VkVmFyaWFibGVzLmFwcGVuZCh2YXJpYWJsZSk7
CisgICAgICAgIH0KKyAgICB9CiAgICAgZGlkRmluaXNoUGFyc2luZyhzb3VyY2VFbGVtZW50cywg
Y29udGV4dC52YXJEZWNsYXJhdGlvbnMoKSwgY29udGV4dC5mdW5jRGVjbGFyYXRpb25zKCksIGZl
YXR1cmVzLAotICAgICAgICBjb250ZXh0Lm51bUNvbnN0YW50cygpLCBjYXB0dXJlZFZhcmlhYmxl
cyk7CisgICAgICAgIGNvbnRleHQubnVtQ29uc3RhbnRzKCksIGNhcHR1cmVkVmFyaWFibGVzLCBz
dGQ6Om1vdmUoY2xvc2VkVmFyaWFibGVzKSk7CiAKICAgICByZXR1cm4gcGFyc2VFcnJvcjsKIH0K
IAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHZvaWQgUGFyc2VyPExleGVyVHlwZT46
OmRpZEZpbmlzaFBhcnNpbmcoU291cmNlRWxlbWVudHMqIHNvdXJjZUVsZW1lbnRzLCBQYXJzZXJB
cmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrPiogdmFyU3RhY2ssIAotICAgIFBh
cnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qIGZ1bmNTdGFj
aywgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzLCBJZGVudGlmaWVyU2V0
JiBjYXB0dXJlZFZhcnMpCisgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpG
dW5jdGlvblN0YWNrPiogZnVuY1N0YWNrLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1D
b25zdGFudHMsIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFycywgY29uc3QgVmVjdG9yPFJlZlB0
cjxTdHJpbmdJbXBsPj4mJiBjbG9zZWRWYXJpYWJsZXMpCiB7CiAgICAgbV9zb3VyY2VFbGVtZW50
cyA9IHNvdXJjZUVsZW1lbnRzOwogICAgIG1fdmFyRGVjbGFyYXRpb25zID0gdmFyU3RhY2s7CiAg
ICAgbV9mdW5jRGVjbGFyYXRpb25zID0gZnVuY1N0YWNrOwogICAgIG1fY2FwdHVyZWRWYXJpYWJs
ZXMuc3dhcChjYXB0dXJlZFZhcnMpOworICAgIG1fY2xvc2VkVmFyaWFibGVzID0gY2xvc2VkVmFy
aWFibGVzOwogICAgIG1fZmVhdHVyZXMgPSBmZWF0dXJlczsKICAgICBtX251bUNvbnN0YW50cyA9
IG51bUNvbnN0YW50czsKIH0KQEAgLTIzNDYsNiArMjM2MywxMCBAQCB0ZW1wbGF0ZSA8dHlwZW5h
bWUgTGV4ZXJUeXBlPiB2b2lkIFBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRUb2tl
blRleHQoVwogICAgIGNhc2UgUkVTRVJWRUQ6CiAgICAgICAgIG91dC5wcmludCgiVW5leHBlY3Rl
ZCB1c2Ugb2YgcmVzZXJ2ZWQgd29yZCAnIiwgZ2V0VG9rZW4oKSwgIiciKTsKICAgICAgICAgcmV0
dXJuOworCisgICAgY2FzZSBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzoKKyAgICAgICAg
b3V0LnByaW50KCJJbnZhbGlkIHByaXZhdGUgbmFtZSAnIiwgZ2V0VG9rZW4oKSwgIiciKTsKKyAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAgICAgY2FzZSBJREVOVDoKICAgICAgICAgb3V0
LnByaW50KCJVbmV4cGVjdGVkIGlkZW50aWZpZXIgJyIsIGdldFRva2VuKCksICInIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBiNjk4ZWY5MzY4Y2I4YzhmMTk3Y2Nk
MDAwYWNhYTZkZmIxMWJhMjQ0Li45MDMzODUwYzhjOTdmNTdlMjFkYTVlZWRiMDJkMDQ0ZjRjODk3
OGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTIzLDYgKzIzLDcg
QEAKICNpZm5kZWYgUGFyc2VyX2gKICNkZWZpbmUgUGFyc2VyX2gKIAorI2luY2x1ZGUgIkNvbW1v
bklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgpAQCAtMjU5LDYgKzI2MCwxMCBA
QCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICByZXR1cm4gaXNWYWxpZFN0cmljdE1vZGUgPyBCaW5k
aW5nU3VjY2VlZGVkIDogU3RyaWN0QmluZGluZ0ZhaWxlZDsKICAgICB9CiAKKyAgICB2b2lkIGdl
dFVzZWRWYXJpYWJsZXMoSWRlbnRpZmllclNldCYgdXNlZFZhcmlhYmxlcykKKyAgICB7CisgICAg
ICAgIHVzZWRWYXJpYWJsZXMuc3dhcChtX3VzZWRWYXJpYWJsZXMpOworICAgIH0KIAogICAgIHZv
aWQgdXNlVmFyaWFibGUoY29uc3QgSWRlbnRpZmllciogaWRlbnQsIGJvb2wgaXNFdmFsKQogICAg
IHsKQEAgLTQxNCw2ICs0MTksNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxQYXJzZWROb2Rl
PiBwYXJzZShQYXJzZXJFcnJvciYpOwogCiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZv
cmVMYXN0TmV3bGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4ZXItPnBvc2l0aW9uQmVmb3JlTGFz
dE5ld2xpbmUoKTsgfQorICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYgY2xv
c2VkVmFyaWFibGVzKCkgeyByZXR1cm4gc3RkOjptb3ZlKG1fY2xvc2VkVmFyaWFibGVzKTsgfQog
CiBwcml2YXRlOgogICAgIHN0cnVjdCBBbGxvd0luT3ZlcnJpZGUgewpAQCAtNTQwLDcgKzU0Niw3
IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIHBhcnNlSW5uZXIoKTsKIAogICAgIHZvaWQgZGlkRmlu
aXNoUGFyc2luZyhTb3VyY2VFbGVtZW50cyosIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0
YWNrczo6VmFyU3RhY2s+KiwgCi0gICAgICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0
YWNrczo6RnVuY3Rpb25TdGFjaz4qLCBDb2RlRmVhdHVyZXMsIGludCwgSWRlbnRpZmllclNldCYp
OworICAgICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3Rh
Y2s+KiwgQ29kZUZlYXR1cmVzLCBpbnQsIElkZW50aWZpZXJTZXQmLCBjb25zdCBWZWN0b3I8UmVm
UHRyPFN0cmluZ0ltcGw+PiYmKTsKIAogICAgIC8vIFVzZWQgdG8gZGV0ZXJtaW5lIHR5cGUgb2Yg
ZXJyb3IgdG8gcmVwb3J0LgogICAgIGJvb2wgaXNGdW5jdGlvbkJvZHlOb2RlKFNjb3BlTm9kZSop
IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC04NDAsOSArODQ2LDExIEBAIHByaXZhdGU6CiAgICAgY29u
c3QgSWRlbnRpZmllciogbV9sYXN0RnVuY3Rpb25OYW1lOwogICAgIFJlZlB0cjxTb3VyY2VQcm92
aWRlckNhY2hlPiBtX2Z1bmN0aW9uQ2FjaGU7CiAgICAgU291cmNlRWxlbWVudHMqIG1fc291cmNl
RWxlbWVudHM7CisgICAgYm9vbCBtX3BhcnNpbmdCdWlsdGluOwogICAgIFBhcnNlckFyZW5hRGF0
YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+KiBtX3ZhckRlY2xhcmF0aW9uczsKICAgICBQ
YXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KiBtX2Z1bmNE
ZWNsYXJhdGlvbnM7CiAgICAgSWRlbnRpZmllclNldCBtX2NhcHR1cmVkVmFyaWFibGVzOworICAg
IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+IG1fY2xvc2VkVmFyaWFibGVzOwogICAgIENvZGVG
ZWF0dXJlcyBtX2ZlYXR1cmVzOwogICAgIGludCBtX251bUNvbnN0YW50czsKICAgICAKQEAgLTk1
Nyw2ICs5NjUsMTAgQEAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBwYXJzZShWTSogdm0sIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25QYXJhbWV0ZXIKICAgICAgICAgUmVmUHRyPFBh
cnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvcik7CiAgICAg
ICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAgICAgICAgKnBvc2l0aW9u
QmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOwor
ICAgICAgICBpZiAoc3RyaWN0bmVzcyA9PSBKU1BhcnNlQnVpbHRpbikgeworICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKKyAgICAgICAgICAgIHJlc3VsdC0+c2V0Q2xvc2VkVmFy
aWFibGVzKHN0ZDo6bW92ZShwYXJzZXIuY2xvc2VkVmFyaWFibGVzKCkpKTsKKyAgICAgICAgfQog
ICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKICAgICB9CiAgICAgUGFyc2VyPExleGVy
PFVDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIHBhcmFtZXRlcnMsIG5hbWUsIHN0cmljdG5lc3Ms
IHBhcnNlck1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJNb2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5o
CmluZGV4IDRlOWExN2NkMjFjYTM0MTQ2YmJkNDgxNTZhMzcyY2Q0MDRkZWY2MGMuLmY3YTc1YmY3
YzM3ODU3ZTQ0YjZkNWQ3MWY0NTI5YmIxYWMxY2Y1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKLWVudW0gSlNQYXJzZXJTdHJpY3RuZXNzIHsgSlNQYXJzZU5vcm1hbCwgSlNQYXJzZVN0
cmljdCB9OworZW51bSBKU1BhcnNlclN0cmljdG5lc3MgeyBKU1BhcnNlTm9ybWFsLCBKU1BhcnNl
QnVpbHRpbiwgSlNQYXJzZVN0cmljdCB9OwogZW51bSBKU1BhcnNlck1vZGUgeyBKU1BhcnNlUHJv
Z3JhbUNvZGUsIEpTUGFyc2VGdW5jdGlvbkNvZGUgfTsKIAogZW51bSBQcm9maWxlck1vZGUgeyBQ
cm9maWxlck9mZiwgUHJvZmlsZXJPbiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyVG9rZW5zLmgKaW5kZXggODJhMjY2MzlhNzkyMjBhMDg0NDU2YjQ4ZjMyODUyZDE0M2M3
MzlkMC4uOGM4N2FkOWZhZGJkYzRhZjM5YWM5OWRiMmQ4NDQ1ZTEzZmZmZDM1YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCkBAIC0xNDksNiArMTQ5LDcg
QEAgZW51bSBKU1Rva2VuVHlwZSB7CiAgICAgSU5WQUxJRF9OVU1FUklDX0xJVEVSQUxfRVJST1JU
T0sgPSA3IHwgRXJyb3JUb2tlbkZsYWcsCiAgICAgVU5URVJNSU5BVEVEX1NUUklOR19MSVRFUkFM
X0VSUk9SVE9LID0gOCB8IEVycm9yVG9rZW5GbGFnIHwgVW50ZXJtaW5hdGVkRXJyb3JUb2tlbkZs
YWcsCiAgICAgSU5WQUxJRF9TVFJJTkdfTElURVJBTF9FUlJPUlRPSyA9IDkgfCBFcnJvclRva2Vu
RmxhZywKKyAgICBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSyA9IDEwIHwgRXJyb3JUb2tl
bkZsYWcKIH07CiAKIHN0cnVjdCBKU1RleHRQb3NpdGlvbiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ0xpc3QuY3BwCmluZGV4IGUxMzEwNGRmNTkyMmQwNzc2MjU3ZDA1Y2I1ZTg3
MDUzN2QyMTQyOGEuLjI0YzA2YmJiMWMyYzM0YjlkYTVlZjg0YjI1NWM5OTAwZGFmODU5MTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwCkBAIC0yMiw3ICsyMiw3
IEBACiAjaW5jbHVkZSAiQXJnTGlzdC5oIgogCiAjaW5jbHVkZSAiSGVhcFJvb3RWaXNpdG9yLmgi
Ci0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCmluZGV4IDhmZDE5NWNiOWI1
ZjdlZjViZjNkMmZkOTMzNDJiMDEwMjcyNWZhZjEuLjRmYmFjNjg4NjM0ODYxNzE2NDlhMzM0ZDYx
YjVkY2MzODE0ZGQ1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1l
bnRzLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgogCiAjaW5j
bHVkZSAiQ2FsbEZyYW1lSW5saW5lcy5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgi
CiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNBcmd1bWVudHNJdGVyYXRv
ci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJndW1lbnRzLmgKaW5kZXggMThmMzg5MTcxMzg1MjM2MmM3YTc1YTMwNTNiNDYzMTQxN2Jl
YjgxYi4uZjE2ZmQzZGU0MDU1OTcwYmE5ZDljNmYwYWU2MzE4ZjIyMDRiNjU0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNk
ZWZpbmUgQXJndW1lbnRzX2gKIAogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJD
b21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUg
IkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVy
YXRvckNvbnN0cnVjdG9yLmNwcAppbmRleCBhZmI1OTc5MGNiMDA5OTg5YmI3YjQyODYzZTkxODIz
MzU3NmI4YWFjLi45MWNhY2RmYTg1N2ViNjkzNzZhMzA4MWE4YzcwMmFjOWMyMTdjYTdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvckNv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVu
dHNJdGVyYXRvckNvbnN0cnVjdG9yLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkFy
Z3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuaCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50c0l0ZXJh
dG9yUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRl
ICJKU0FyZ3VtZW50c0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
ICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKaW5kZXgg
ZGQwODk0ZjE0YTAyMWQ1ZjEyNjU4YWNiMDFlNzIxZmNkNmQzNDhjYy4uNWI0YWU4NzE2YjA1NTNi
ZTQ2MjM5NTVlOTllMWI0M2ViZjE4ZmUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAt
MjYsNyArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFyZ3VtZW50c0l0
ZXJhdG9yUHJvdG90eXBlLmgiCiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2lu
Y2x1ZGUgIkpTQXJndW1lbnRzSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5l
cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IDI3YWM2ZDQ4YTcxZjc5NTUwMmExMGNlYTY0
Nzg2NTQxMzVhNDYzYTAuLjZkYzdiZTU2OTY5ZGU2N2Y2MjEwN2JiM2E1MWEzMDhmYTNiYTc2YmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5j
cHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0FycmF5
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1N0cmluZ0J1aWxkZXIuaCIKKyNpbmNsdWRlICJKU1N0
cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJKU1N0cmluZ0pvaW5lci5oIgogI2luY2x1ZGUgIkxv
b2t1cC5oIgogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgpAQCAtNTYsNyArNTcsNiBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NsaWNlKEV4
ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b0Z1bmNTb3J0KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlQcm90b0Z1bmNTcGxpY2UoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1VuU2hpZnQoRXhlY1N0YXRlKik7Ci1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0V2ZXJ5KEV4ZWNT
dGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1
bmNGb3JFYWNoKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlQcm90b0Z1bmNTb21lKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0ZSopOwpAQCAtOTU0
LDY5ICs5NTQsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5j
TWFwKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdEFy
cmF5KTsKIH0KIAotLy8gRG9jdW1lbnRhdGlvbiBmb3IgdGhlc2UgdGhyZWUgaXMgYXZhaWxhYmxl
IGF0OgotLy8gaHR0cDovL2RldmVsb3Blci10ZXN0Lm1vemlsbGEub3JnL2VuL2RvY3MvQ29yZV9K
YXZhU2NyaXB0XzEuNV9SZWZlcmVuY2U6T2JqZWN0czpBcnJheTpldmVyeQotLy8gaHR0cDovL2Rl
dmVsb3Blci10ZXN0Lm1vemlsbGEub3JnL2VuL2RvY3MvQ29yZV9KYXZhU2NyaXB0XzEuNV9SZWZl
cmVuY2U6T2JqZWN0czpBcnJheTpmb3JFYWNoCi0vLyBodHRwOi8vZGV2ZWxvcGVyLXRlc3QubW96
aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0phdmFTY3JpcHRfMS41X1JlZmVyZW5jZTpPYmplY3RzOkFy
cmF5OnNvbWUKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0V2
ZXJ5KEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBKU09iamVjdCogdGhpc09iaiA9IGV4ZWMtPmhv
c3RUaGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7Ci0g
ICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpc09iai0+Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5sZW5ndGgpLnRvVUludDMyKGV4ZWMpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQotICAg
IEpTVmFsdWUgZnVuY3Rpb24gPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBDYWxsRGF0YSBjYWxs
RGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxs
RGF0YSk7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0KLSAgICBKU1ZhbHVlIGFwcGx5VGhpcyA9IGV4ZWMt
PmFyZ3VtZW50KDEpOwotCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4odHJ1ZSk7Ci0K
LSAgICB1bnNpZ25lZCBrID0gMDsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVKUyAmJiBp
c0pTQXJyYXkodGhpc09iaikpIHsKLSAgICAgICAgSlNGdW5jdGlvbiogZiA9IGpzQ2FzdDxKU0Z1
bmN0aW9uKj4oZnVuY3Rpb24pOwotICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodGhp
c09iaik7Ci0gICAgICAgIENhY2hlZENhbGwgY2FjaGVkQ2FsbChleGVjLCBmLCAzKTsKLSAgICAg
ICAgZm9yICg7IGsgPCBsZW5ndGggJiYgIWV4ZWMtPmhhZEV4Y2VwdGlvbigpOyArK2spIHsKLSAg
ICAgICAgICAgIGlmIChVTkxJS0VMWSghYXJyYXktPmNhbkdldEluZGV4UXVpY2tseShrKSkpCi0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGNhY2hlZENh
bGwuc2V0VGhpcyhhcHBseVRoaXMpOwotICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVu
dCgwLCBhcnJheS0+Z2V0SW5kZXhRdWlja2x5KGspKTsKLSAgICAgICAgICAgIGNhY2hlZENhbGwu
c2V0QXJndW1lbnQoMSwganNOdW1iZXIoaykpOwotICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRB
cmd1bWVudCgyLCB0aGlzT2JqKTsKLSAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FjaGVk
Q2FsbC5jYWxsKCk7Ci0gICAgICAgICAgICBpZiAoIXJlc3VsdC50b0Jvb2xlYW4oZXhlYykpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsK
LSAgICAgICAgfQotICAgIH0KLSAgICBmb3IgKDsgayA8IGxlbmd0aCAmJiAhZXhlYy0+aGFkRXhj
ZXB0aW9uKCk7ICsraykgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqKTsKLSAg
ICAgICAgaWYgKCF0aGlzT2JqLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaywgc2xvdCkpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBlYWNoQXJn
dW1lbnRzOwotICAgICAgICBlYWNoQXJndW1lbnRzLmFwcGVuZChzbG90LmdldFZhbHVlKGV4ZWMs
IGspKTsKLSAgICAgICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQoanNOdW1iZXIoaykpOwotICAgICAg
ICBlYWNoQXJndW1lbnRzLmFwcGVuZCh0aGlzT2JqKTsKLQotICAgICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwotCi0gICAgICAgIGJvb2wgcHJlZGljYXRlUmVzdWx0ID0gY2FsbChleGVjLCBmdW5j
dGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBhcHBseVRoaXMsIGVhY2hBcmd1bWVudHMpLnRvQm9v
bGVhbihleGVjKTsKLSAgICAgICAgaWYgKCFwcmVkaWNhdGVSZXN1bHQpIHsKLSAgICAgICAgICAg
IHJlc3VsdCA9IGpzQm9vbGVhbihmYWxzZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKLX0KLQogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0ZvckVhY2goRXhlY1N0YXRl
KiBleGVjKQogewogICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgp
LnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IDUxMGUzODNmYWU1NzVhYWRhODE3
NmMwNDQxZWU3MjViNDNhNGM3MzIuLmQzMDQ4NzdmZTljZGUxYzA5MTlmZDQ1OTVmODExZWNhYmNl
NzcyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNo
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApA
QCAtMTQ0LDI0ICsxNDQsMjYgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNo
ZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUoVk0mIHYKICAgICBKU1RleHRQ
b3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lOwogICAgIFJlZlB0cjxQcm9ncmFtTm9k
ZT4gcHJvZ3JhbSA9IHBhcnNlPFByb2dyYW1Ob2RlPigmdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmll
cigpLCBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlUHJvZ3JhbUNvZGUsIGVycm9yLCAmcG9zaXRpb25C
ZWZvcmVMYXN0TmV3bGluZSk7CiAgICAgaWYgKCFwcm9ncmFtKSB7Ci0gICAgICAgIEFTU0VSVChl
cnJvci5tX3R5cGUgIT0gUGFyc2VyRXJyb3I6OkVycm9yTm9uZSk7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGVycm9yLm1fdHlwZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKICAgICAgICAg
bV9zb3VyY2VDb2RlLnJlbW92ZShhZGRSZXN1bHQuaXRlcmF0b3IpOwogICAgICAgICByZXR1cm4g
MDsKICAgICB9CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgYW4gaW5wdXQgc3RyaW5n
IHRoYXQgd291bGQgcmVzdWx0IGluIGEgc2luZ2xlIGFub255bW91cyBmdW5jdGlvbiBleHByZXNz
aW9uLgogICAgIFN0YXRlbWVudE5vZGUqIGV4cHJTdGF0ZW1lbnQgPSBwcm9ncmFtLT5zaW5nbGVT
dGF0ZW1lbnQoKTsKLSAgICBBU1NFUlQoZXhwclN0YXRlbWVudCk7Ci0gICAgQVNTRVJUKGV4cHJT
dGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChleHByU3Rh
dGVtZW50KTsKKyAgICBSRUxFQVNFX0FTU0VSVChleHByU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1l
bnQoKSk7CiAgICAgRXhwcmVzc2lvbk5vZGUqIGZ1bmNFeHByID0gc3RhdGljX2Nhc3Q8RXhwclN0
YXRlbWVudE5vZGUqPihleHByU3RhdGVtZW50KS0+ZXhwcigpOwotICAgIEFTU0VSVChmdW5jRXhw
cik7CisgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHIpOwogICAgIFJFTEVBU0VfQVNTRVJUKGZ1
bmNFeHByLT5pc0Z1bmNFeHByTm9kZSgpKTsKICAgICBGdW5jdGlvbkJvZHlOb2RlKiBib2R5ID0g
c3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZnVuY0V4cHIpLT5ib2R5KCk7CisgICAgUkVMRUFT
RV9BU1NFUlQoIXByb2dyYW0tPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpOworICAgIAogICAgIGJv
ZHktPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwotICAgIEFTU0VS
VChib2R5KTsKLSAgICBBU1NFUlQoYm9keS0+aWRlbnQoKS5pc051bGwoKSk7CisgICAgUkVMRUFT
RV9BU1NFUlQoYm9keSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keS0+aWRlbnQoKS5pc051bGwo
KSk7CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxl
ID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgYm9keSwg
dHJ1ZSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIGJvZHks
IHRydWUsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24pOwogICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+
bV9uYW1lVmFsdWUuc2V0KHZtLCBmdW5jdGlvbkV4ZWN1dGFibGUsIGpzU3RyaW5nKCZ2bSwgbmFt
ZS5zdHJpbmcoKSkpOwogCiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IFNvdXJjZUNv
ZGVWYWx1ZSh2bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBtX3NvdXJjZUNvZGUuYWdlKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3Bw
CmluZGV4IDNmNWM2NDVjMDk4ZDUyN2ZjMGM3MjU5ZTk0NDdlZmJlODg2OGEyOWMuLjJmYzJiNzI3
YWZjZWVlMWVjMmM2MjVkZTU2NzViM2JlMWNmNjBkNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKQEAgLTI3LDcgKzI3LDEw
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAjZGVmaW5lIElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRShu
YW1lKSAsIG5hbWUodm0sICNuYW1lKQogI2RlZmluZSBJTklUSUFMSVpFX0tFWVdPUkQobmFtZSkg
LCBuYW1lIyNLZXl3b3JkKHZtLCAjbmFtZSkKLSNkZWZpbmUgSU5JVElBTElaRV9QUklWQVRFX05B
TUUobmFtZSkgLCBuYW1lIyNQcml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tKFByaXZhdGVOYW1l
KCkpKQorI2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFNRShuYW1lKSBcCisgICAgLCBuYW1l
IyNQcml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tKFByaXZhdGVOYW1lKCkpKSBcCisgICAgLCBt
XyMjbmFtZSMjUHVibGljU3RyaW5nUGFpcihuYW1lLCBuYW1lIyNQcml2YXRlTmFtZSkgXAorCiAK
IENvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyhWTSogdm0pCiAgICAgOiBudWxs
SWRlbnRpZmllcigpCkBAIC0zOCw4ICs0MSwyNiBAQCBDb21tb25JZGVudGlmaWVyczo6Q29tbW9u
SWRlbnRpZmllcnMoVk0qIHZtKQogICAgICwgaGFzTmV4dElkZW50aWZpZXIodm0sICJoYXNOZXh0
IikKICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZV09SRChJTklUSUFMSVpFX0tF
WVdPUkQpCiAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5J
VElBTElaRV9QUk9QRVJUWV9OQU1FKQorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05f
TkFNRShJTklUSUFMSVpFX1BST1BFUlRZX05BTUUpCiAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lE
RU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpFX1BSSVZBVEVfTkFNRSkKIHsK
IH0KIAorY29uc3QgSWRlbnRpZmllciogQ29tbW9uSWRlbnRpZmllcnM6OmdldFByaXZhdGVOYW1l
KGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAoreworI2RlZmluZSBSRVRVUk5fSUZfUFJJ
VkFURV9OQU1FX01BVENIRVMobmFtZSkgaWYgKG1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQYWlyLmZp
cnN0ID09IGlkZW50KSByZXR1cm4gJm1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQYWlyLnNlY29uZDsK
KyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKFJF
VFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hFUykKKyN1bmRlZiBSRVRVUk5fSUZfUFJJVkFURV9O
QU1FX01BVENIRVMKKyAgICByZXR1cm4gMDsKK30KKworSWRlbnRpZmllciBDb21tb25JZGVudGlm
aWVyczo6Z2V0UHVibGljTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK3sKKyNk
ZWZpbmUgUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKG5hbWUpIGlmIChtXyMjbmFtZSMj
UHVibGljU3RyaW5nUGFpci5zZWNvbmQgPT0gaWRlbnQpIHJldHVybiBtXyMjbmFtZSMjUHVibGlj
U3RyaW5nUGFpci5maXJzdDsKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFD
SF9QUk9QRVJUWV9OQU1FKFJFVFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hFUykKKyN1bmRlZiBS
RVRVUk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBlbXB0eUlkZW50aWZpZXI7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmgKaW5kZXggZThmOWVkODJiYzc5NDYyMDM4MjY2YjMwMjA3ODIyNDdiMWZhMjdhMy4uOTI0
ZDM2YWM2OTEzNTAzNTdjYjM4MmIxZWYzYjQwYTBhMDhjMGFiYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0yMiw2ICsyMiw3
IEBACiAjZGVmaW5lIENvbW1vbklkZW50aWZpZXJzX2gKIAogI2luY2x1ZGUgIklkZW50aWZpZXIu
aCIKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgogCiAvLyBNYXJrZWRBcmd1bWVudEJ1ZmZlciBvZiBwcm9wZXJ0eSBuYW1lcywgcGFzc2VkIHRv
IGEgbWFjcm8gc28gd2UgY2FuIGRvIHNldCB0aGVtIHVwIHZhcmlvdXMKQEAgLTEzMyw4ICsxMzQs
MTAgQEAKICAgICBtYWNybyhvc3JFeGl0cykgXAogICAgIG1hY3JvKHBhcnNlKSBcCiAgICAgbWFj
cm8ocHJvZmlsZWRCeXRlY29kZXMpIFwKKyAgICBtYWNybyhwcm9taXNlKSBcCiAgICAgbWFjcm8o
cHJvcGVydHlJc0VudW1lcmFibGUpIFwKICAgICBtYWNybyhwcm90b3R5cGUpIFwKKyAgICBtYWNy
byhyZXNvbHZlKSBcCiAgICAgbWFjcm8oc2V0KSBcCiAgICAgbWFjcm8oc2l6ZSkgXAogICAgIG1h
Y3JvKHNsaWNlKSBcCkBAIC0xNTUsNyArMTU4LDE0IEBACiAgICAgbWFjcm8odmFsdWVzKSBcCiAg
ICAgbWFjcm8odmFsdWVPZikgXAogICAgIG1hY3JvKHdpbmRvdykgXAotICAgIG1hY3JvKHdyaXRh
YmxlKQorICAgIG1hY3JvKHdyaXRhYmxlKSBcCisgICAgbWFjcm8oaXRlcmF0b3IpIFwKKyAgICBt
YWNybyhpdGVyYXRvck5leHQpIFwKKyAgICBtYWNybyhyZWplY3QpIFwKKyAgICBtYWNybyhmdWxm
aWxsbWVudEhhbmRsZXIpIFwKKyAgICBtYWNybyhyZWplY3Rpb25IYW5kbGVyKSBcCisgICAgbWFj
cm8oZGVmZXJyZWQpIFwKKyAgICBtYWNybyhjb3VudGRvd25Ib2xkZXIpIFwKIAogI2RlZmluZSBK
U0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZV09SRChtYWNybykgXAogICAgIG1hY3JvKGJy
ZWFrKSBcCkBAIC0yMDMsNyArMjEzLDcgQEAKICAgICBtYWNybyh2b2lkKSBcCiAgICAgbWFjcm8o
d2hpbGUpIFwKICAgICBtYWNybyh3aXRoKSBcCi0gICAgbWFjcm8oeWllbGQpCisgICAgbWFjcm8o
eWllbGQpIFwKIAogI2RlZmluZSBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9Q
Uk9QRVJUWV9OQU1FKG1hY3JvKSBcCiAgICAgbWFjcm8oaXRlcmF0b3IpIFwKQEAgLTIxNiw3ICsy
MjYsMTIgQEAKICAgICBtYWNybyhpbmRleCkgXAogICAgIG1hY3JvKHZhbHVlcykgXAogICAgIG1h
Y3JvKGRlZmVycmVkKSBcCi0gICAgbWFjcm8oY291bnRkb3duSG9sZGVyKQorICAgIG1hY3JvKGNv
dW50ZG93bkhvbGRlcikgXAorICAgIG1hY3JvKE9iamVjdCkgXAorICAgIG1hY3JvKFR5cGVFcnJv
cikgXAorICAgIG1hY3JvKHVuZGVmaW5lZEtleXdvcmQpIFwKKyAgICBtYWNybyhjYWxsKSBcCisg
ICAgbWFjcm8oYXBwbHkpCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0yNDAsMTEgKzI1NSwxNSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjZGVmaW5lIEpTQ19JREVOVElGSUVSX0RFQ0xB
UkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwobmFtZSkgY29uc3QgSWRlbnRpZmllciBuYW1lOwogICAg
ICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShKU0NfSURFTlRJ
RklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFMKQorICAgICAgICBKU0NfRk9SRUFDSF9C
VUlMVElOX0ZVTkNUSU9OX05BTUUoSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJUWV9OQU1F
X0dMT0JBTCkKICN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xP
QkFMCiAKLSNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05B
TUVfR0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSMjUHJpdmF0ZU5hbWU7CisjZGVm
aW5lIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTChu
YW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWUjI1ByaXZhdGVOYW1lOyBjb25zdCBzdGQ6OnBhaXI8
SWRlbnRpZmllciwgSWRlbnRpZmllcj4gbV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXI7CiAgICAg
ICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSlND
X0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMKQogI3VuZGVm
IEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTAorICAg
ICAgICAKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciogZ2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRl
bnRpZmllciYpIGNvbnN0OworICAgICAgICBJZGVudGlmaWVyIGdldFB1YmxpY05hbWUoY29uc3Qg
SWRlbnRpZmllciYpIGNvbnN0OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXgg
MDc1ODc1ZmIyMzE2YTU1NTcwNTBhNjY5MGNkMGY5ODgyNDg0ZjVmMy4uNWFmOTA4NzU0ZTc0N2Y4
Y2FlMGNkMDRhZjhkNDkxNTAwNDY4YzJhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC00MSw3ICs0MSw3IEBACiAjaW5jbHVk
ZSAiSklULmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24u
aCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTmFt
ZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9u
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNl
cHRpb25zLmNwcAppbmRleCA1NTMzNGJlMmY5ODBhOThmN2ZlYTQyYTA1YmUwZjIwYzAxOWZmMGRk
Li4xNmViYWQxMGU0ZTQyYjZiNzg1ZTk3OGQzOGU4NzBlM2I1YTZjNDlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNl
cHRpb25zLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2lu
Y2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRl
ICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCiAKIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgQ29tbW9uU2xvd1BhdGhzIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggMDVlMTFlMGI4
MGEzNDMwYWVhYjIyYjAyMjJhMjEyZjRhOGUyYzQ5Yi4uMzY0Y2M3MTY2NjA4YjUwMDdkNDc3ZDg3
MzkxOGE1ZDY0YjE2ODY1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhjZXB0aW9uSGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhjZXB0aW9uSGVscGVycy5jcHAKQEAgLTgxLDYgKzgxLDExIEBAIEpTT2JqZWN0KiBjcmVh
dGVTdGFja092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogSlNP
YmplY3QqIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCkKIHsKKyAgICAKKyAgICBpZiAoaWRlbnQuaW1wbCgpLT5pc0Vt
cHR5VW5pcXVlKCkpIHsKKyAgICAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2FuJ3Qg
ZmluZCBwcml2YXRlIHZhcmlhYmxlOiBAIiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdldFB1Ymxp
Y05hbWUoaWRlbnQpLnN0cmluZygpKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVSZWZlcmVuY2VF
cnJvcihleGVjLCBtZXNzYWdlKTsKKyAgICB9CiAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmlu
ZygiQ2FuJ3QgZmluZCB2YXJpYWJsZTogIiwgaWRlbnQuc3RyaW5nKCkpKTsKICAgICByZXR1cm4g
Y3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgbWVzc2FnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggMTk4OTc2YmIzZmU2ZTZlOTExNzk4MTJk
MWNhZjliOGJmOWJmZDBiYi4uY2YwZTc1M2E3YzVmNTQ0NjdiNjRkOGUyYTliM2ZiYTI3MTUwMDAx
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtNDg0
LDcgKzQ4NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAKLSAgICBFeGVj
dXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZv
KG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UpOyB9
CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVj
dXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCks
IGZhbHNlLCBmYWxzZSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsgcmV0dXJu
IG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQogICAgIHVuc2lnbmVk
IG51bWJlck9mRnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2Nr
LT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsgfQpAQCAtNTQwLDcgKzU0MCw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxl
SW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1
c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8g
ZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2
YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSk7IH0KIAog
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKQEAgLTYyOCw3ICs2
MjgsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2tG
b3Ioa2luZCk7CiAgICAgfQotICAgICAgICAKKworICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24o
KTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhl
Y3V0YWJsZS0+bmFtZSgpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgaW5mZXJyZWROYW1lKCkg
eyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmluZmVycmVkTmFtZSgpOyB9CiAgICAgSlNT
dHJpbmcqIG5hbWVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5u
YW1lVmFsdWUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25Qcm90b3R5cGUuY3BwCmluZGV4IGMxYjA4YWYyZDgxOGRhZTU3ZTFiMDBmZGExNzNhODE2
MTM3NTI5YjUuLjEyNDkwYzQwZjMzNDE3ZWNhOTIzODUwYTBkYzY2MmRiYmNkNDBmMzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5j
cHAKQEAgLTIyLDEyICsyMiwxMyBAQAogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAK
ICNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1
ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1N0cmluZ0J1
aWxkZXIuaCIKLSNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkxleGVyLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCkBA
IC0xMDgsNyArMTA5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBy
b3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKEpTRnVu
Y3Rpb246OmluZm8oKSkpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8
SlNGdW5jdGlvbio+KHRoaXNWYWx1ZSk7Ci0gICAgICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0RnVu
Y3Rpb24oKSkKKyAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigp
KQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3Ry
aW5nKGV4ZWMsICJmdW5jdGlvbiAiLCBmdW5jdGlvbi0+bmFtZShleGVjKSwgIigpIHtcbiAgICBb
bmF0aXZlIGNvZGVdXG59IikpOwogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUgPSBmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCk7CiAgICAgICAgIFN0cmluZyBzb3VyY2VTdHJp
bmcgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS50b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKaW5kZXggNzJlZDFjNzEyNDA2MTE2OGIw
YWRkZDMxMTZmNzU1YTExN2I4ZmI5MC4uYjM3NDk0MzA5OWUyMTU1YTM5NzcxMzMxMzQ3MDJjMmEy
NGFjYzg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3Rp
dmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRp
b24uY3BwCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgSlNBY3RpdmF0aW9uOjp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAKIGlubGluZSBib29sIEpTQWN0
aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJs
ZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFi
bGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlk
KCkpOwogICAgIGlmIChlbnRyeS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC03Miw3ICs3Miw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQo
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90CiAKIGlubGluZSBib29sIEpT
QWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50
cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7
CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChw
cm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChlbnRyeS5pc051bGwoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkBAIC04OSw3ICs4OSw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6
c3ltYm9sVGFibGVQdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOCiAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8
IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwogICAgIAotICAgIFN5bWJv
bFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1l
LnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxl
KCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChlbnRyeS5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChlbnRyeS5pc1JlYWRPbmx5KCkpIHsK
QEAgLTEzNiw3ICsxMzYsNyBAQCBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxl
UHV0V2l0aEF0dHJpYnV0ZXMoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcAogICAgIFdyaXRlQmFy
cmllckJhc2U8VW5rbm93bj4qIHJlZzsKICAgICB7CiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2Nr
ZXIgbG9ja2VyKHN5bWJvbFRhYmxlKCktPm1fbG9jayk7Ci0gICAgICAgIFN5bWJvbFRhYmxlOjpN
YXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZSgpLT5maW5kKGxvY2tlciwgcHJvcGVydHlO
YW1lLnB1YmxpY05hbWUoKSk7CisgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0
ZXIgPSBzeW1ib2xUYWJsZSgpLT5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAg
ICAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUoKS0+ZW5kKGxvY2tlcikpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5ID0gaXRlci0+
dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3Vt
ZW50c0l0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1l
bnRzSXRlcmF0b3IuY3BwCmluZGV4IDJmY2Y4ODE1YzA1NjgwNTgxMmE3OTkxYTVmZjA2M2Q2ODcz
OTcxNjQuLjlhOTI1ODNhYTBlYzkwZGJiMzI4ZWNkNTBkYzMxMzlhZWYwMjczYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3Iu
Y3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiSlNBcmd1bWVudHNJdGVyYXRvci5oIgog
CiAjaW5jbHVkZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
IAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5jcHAKaW5kZXggOTAwN2I1ZjdkM2YxMDNiMWQyMWIxYTM2NWEyNmMyMTVjMzJiNGQyOC4uYmEw
YTJkMzhlOWM1M2UxNTkzN2Q0NmE4OTUxYThjOGM0NTA3OTI2NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJF
eGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSW5kZXhp
bmdIZWFkZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKICNpbmNsdWRlICJSZWplY3QuaCIKICNpbmNsdWRlIDx3
dGYvQVZMVHJlZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXlJdGVyYXRvci5jcHAKaW5kZXggZDUwNmM0ZWJkMjYyMGVmZDcwNzkzYTg3M2QwODUyZmJkOTc4
Mjg1OS4uY2YzNzA5N2VjMGM2OTI1YTg2N2I4YzAxMGMwZWZjNDA3NDQ4NWYxZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRl
ICJTbG90VmlzaXRvcklubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCmluZGV4IGNjYTY4ODhiZjk4YTAyODY0
NmNhM2RkZGYzNzYyN2NlMGU3ZDkzMDIuLjMzOWE3YWI3ZjU5NTE1ZTk2YWZiN2VjNGI4NzQxZTdh
YThlMTY2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
Y3BwCkBAIC0zMiw3ICszMiw5IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNOb3RBbk9iamVjdC5oIgorI2luY2x1ZGUg
IkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk51bWJlck9iamVjdC5oIgorI2luY2x1ZGUg
Ik9wZXJhdGlvbnMuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0
Zi9TdHJpbmdFeHRyYXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsSW5saW5lcy5oCmluZGV4IGY3Yzg0NDY0NTA5MmIyNTA4MDVlNmU4ZDQ4MzJjOTk4YmRiODli
NTQuLmQ3OTVkZDU2YTk3ZGRiNTk3YzA5MGZjMmUwYjdmMzA4ZTMzZWJjYTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKQEAgLTI3LDggKzI3LDEw
IEBACiAjZGVmaW5lIEpTQ2VsbElubGluZXNfaAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisj
aW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJEZWZlckdDLmgiCiAjaW5j
bHVkZSAiSGFuZGxlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRl
ICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDI0
MTk2NDYxMGJiNDQyN2IxODYzNzMzNDZlMjRmNWE4MmQwY2RjYzQuLjdiZWY1OTFiMTRmMzVmMWE5
MzQ4YWRlOWE5ZTBmNTkwZWI2YWRmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0xMDksNiArMTA5LDE0IEBAIHZvaWQgSlNGdW5jdGlvbjo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBpbnQg
bGVuZ3RoCiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVt
YmVyKGxlbmd0aCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KIAorSlNG
dW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKFZNJiB2bSwgRnVuY3Rp
b25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
eworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY3JlYXRlKHZtLCBleGVjdXRhYmxlLCBnbG9i
YWxPYmplY3QpOworICAgIGZ1bmN0aW9uLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pm5hbWUsIGpzU3RyaW5nKCZ2bSwgZXhlY3V0YWJsZS0+bmFtZSgpLnN0cmluZygpKSwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIGZ1bmN0aW9uLT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoZXhlY3V0YWJsZS0+cGFyYW1ldGVy
Q291bnQoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICByZXR1cm4g
ZnVuY3Rpb247Cit9CisKIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKiBKU0Z1bmN0aW9uOjpjcmVh
dGVBbGxvY2F0aW9uUHJvZmlsZShFeGVjU3RhdGUqIGV4ZWMsIHNpemVfdCBpbmxpbmVDYXBhY2l0
eSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpAQCAtMTQyLDcgKzE1MCw3IEBAIGNvbnN0
IFN0cmluZyBKU0Z1bmN0aW9uOjpjYWxjdWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVj
KQogICAgICAgICByZXR1cm4gZXhwbGljaXROYW1lOwogICAgIAogICAgIGNvbnN0IFN0cmluZyBh
Y3R1YWxOYW1lID0gbmFtZShleGVjKTsKLSAgICBpZiAoIWFjdHVhbE5hbWUuaXNFbXB0eSgpIHx8
IGlzSG9zdEZ1bmN0aW9uKCkpCisgICAgaWYgKCFhY3R1YWxOYW1lLmlzRW1wdHkoKSB8fCBpc0hv
c3RPckJ1aWx0aW5GdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gYWN0dWFsTmFtZTsKICAgICAK
ICAgICByZXR1cm4ganNFeGVjdXRhYmxlKCktPmluZmVycmVkTmFtZSgpLnN0cmluZygpOwpAQCAt
MTUwLDEwICsxNTgsMjAgQEAgY29uc3QgU3RyaW5nIEpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNw
bGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMpCiAKIGNvbnN0IFNvdXJjZUNvZGUqIEpTRnVuY3Rpb246
OnNvdXJjZUNvZGUoKSBjb25zdAogewotICAgIGlmIChpc0hvc3RGdW5jdGlvbigpKQorICAgIGlm
IChpc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1
cm4gJmpzRXhlY3V0YWJsZSgpLT5zb3VyY2UoKTsKIH0KKyAgICAKK2Jvb2wgSlNGdW5jdGlvbjo6
aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBpc0hvc3RGdW5j
dGlvbigpIHx8IGlzQnVpbHRpbkZ1bmN0aW9uKCk7Cit9CisKK2Jvb2wgSlNGdW5jdGlvbjo6aXNC
dWlsdGluRnVuY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiAhaXNIb3N0RnVuY3Rpb24oKSAm
JiBqc0V4ZWN1dGFibGUoKS0+aXNCdWlsdGluRnVuY3Rpb24oKTsKK30KIAogdm9pZCBKU0Z1bmN0
aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7
CkBAIC0yNzcsNyArMjk1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNGdW5jdGlvbjo6Y2FsbGVyR2V0
dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgc2xvdEJhc2UKICAgICBpZiAoIWNh
bGxlci5pc09iamVjdCgpIHx8ICFhc09iamVjdChjYWxsZXIpLT5pbmhlcml0cyhKU0Z1bmN0aW9u
OjppbmZvKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxlcik7CiAgICAg
SlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxlcik7Ci0gICAg
aWYgKGZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpIHx8ICFmdW5jdGlvbi0+anNFeGVjdXRhYmxl
KCktPmlzU3RyaWN0TW9kZSgpKQorICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0T3JCdWlsdGluRnVu
Y3Rpb24oKSB8fCAhZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsZXIpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJGdW5jdGlvbi5jYWxs
ZXIgdXNlZCB0byByZXRyaWV2ZSBzdHJpY3QgY2FsbGVyIikpKTsKIH0KQEAgLTI5OSw3ICszMTcs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Z1bmN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSosIEVu
Y29kZWRKU1ZhbHVlIHNsb3RCYXNlLCBFbmNvZAogYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsKLSAgICBpZiAodGhpc09iamVj
dC0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGlu
RnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCiAgICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlKSB7CkBAIC0zNjEsNyArMzc5LDcg
QEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KIHZvaWQgSlNGdW5jdGlvbjo6Z2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewogICAg
IEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdCk7Ci0g
ICAgaWYgKCF0aGlzT2JqZWN0LT5pc0hvc3RGdW5jdGlvbigpICYmIChtb2RlID09IEluY2x1ZGVE
b250RW51bVByb3BlcnRpZXMpKSB7CisgICAgaWYgKCF0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0
aW5GdW5jdGlvbigpICYmIChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKSB7CiAg
ICAgICAgIC8vIE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFzIGJlZW4gcmVpZmllZC4KICAgICAgICAg
UHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCk7CiAgICAgICAgIHRoaXNPYmplY3QtPm1ldGhv
ZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBzbG90KTsKQEAgLTM3Nyw3ICszOTUsNyBAQCB2b2lkIEpT
RnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsCiB2b2lkIEpTRnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNGdW5jdGlvbio+KGNlbGwpOwotICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RGdW5jdGlv
bigpKSB7CisgICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpIHsK
ICAgICAgICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDI1LDcgKzQ0Myw3IEBAIGJvb2wg
SlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wCiBib29sIEpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0
aW9uKQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+
KG9iamVjdCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgaWYg
KHRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBC
YXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3Jp
cHRvciwgdGhyb3dFeGNlcHRpb24pOwogCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmgKaW5kZXggN2NkMTRiOGMyZDgwMGY2MWJkYzEyZWRkMmRmMDRkMzVmYTA2
MTliNi4uOTk1YzlkMTFiZDg5ODM4NmY3YTIwYzQxNjM0ZmE3Y2M5Yjc2OThlNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtNjgsNiArNjgsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbjsKICAgICAgICAgfQog
ICAgICAgICAKKyAgICAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZUJ1aWx0aW5GdW5jdGlv
bihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTR2xvYmFsT2JqZWN0Kik7CisgICAgICAgIAog
ICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgICAgICAKICAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG5hbWUoRXhlY1N0YXRlKik7CkBAIC0xNDUsNiArMTQ3
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbV9hbGxvY2F0aW9uUHJv
ZmlsZVdhdGNocG9pbnQ7CiAgICAgICAgIH0KIAorICAgICAgICBib29sIGlzSG9zdE9yQnVpbHRp
bkZ1bmN0aW9uKCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25z
dDsKKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW1wbGVtZW50c0hhc0lu
c3RhbmNlIHwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFt
ZXMgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCmluZGV4IDJkZGMyOWY3MTg5N2JiNTFkMzkwYjA2YjI1
YTczODMzODc0YmEwYzEuLmVkZDM0NDljZTQ3YjE3MzVlOGU1ZGJiMDVmMzE4ZTNkNTVmM2JlNjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaApAQCAt
MjYsNiArMjYsNyBAQAogI2lmbmRlZiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9y
SW5saW5lc19oCiAjZGVmaW5lIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxp
bmVzX2gKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRXJyb3Iu
aCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdDb25zdHJ1Y3Rvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCA2
ZGI4NjI3NGMzYjg3NGFhYWRlNTE1MTg5ODI2NzI2ZmIxMzZjMTczLi5mMjRlYTczMDNkZjk2OWRi
ZDJkY2E1MmM4NmQxMWM3OGMwMGRiOWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApA
QCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXNf
aAogCiAjaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRp
ZmllcnMuaCIKICNpbmNsdWRlICJEZWZlckdDLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNs
dWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90
eXBlSW5saW5lcy5oCmluZGV4IDQ1OTk5N2E0NjRiOTExOTQ3N2IxYmU4NGUzNmM0ZTI5NjZhY2Vm
ODUuLjhlNWZmODI3OTFlNmZmOGQ0ZWI5YzM3MzY5MWU0MzNlYjdkMTZhZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJv
dG90eXBlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oCkBAIC0yNiw2ICsyNiw3IEBACiAj
aWZuZGVmIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lc19oCiAjZGVmaW5l
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lc19oCiAKKyNpbmNsdWRlICJD
b21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0
aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAyYzI3NGMxYTdkNDgx
YzA3ZGYwZDJiZWIzYjI5MzFhMzkwN2E1ZTY2Li4wNmU1NGM4NGU3N2I5MDMyYmFhMWQyZGY0N2Ex
YzcyZTgwYjdkZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCkBAIC0zNDYsNyArMzQ2LDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6
cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAKICAgICAvLyBDb25zdHJ1Y3RvcnMKIAotICAgIEpT
Q2VsbCogb2JqZWN0Q29uc3RydWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBP
YmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJv
dG90eXBlLmdldCgpKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOworICAgIE9iamVjdENvbnN0
cnVjdG9yKiBvYmplY3RDb25zdHJ1Y3RvciA9IE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUodm0s
IE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Q
cm90b3R5cGUuZ2V0KCkpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9vYmplY3RD
b25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIG9iamVjdENvbnN0cnVjdG9yKTsKICAgICBKU0NlbGwq
IGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEZ1
bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblBy
b3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwogICAgIEpTQ2VsbCog
YXJyYXlDb25zdHJ1Y3RvciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgQXJyYXlDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdl
dCgpKSwgbV9hcnJheVByb3RvdHlwZS5nZXQoKSk7CiAKQEAgLTQzMiw3ICs0MzMsMTAgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgR2xvYmFsUHJv
cGVydHlJbmZvIHN0YXRpY0dsb2JhbHNbXSA9IHsKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPk5hTiwganNOYU4oKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwg
UmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+
SW5maW5pdHksIGpzTnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHko
KSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJv
cGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQsIGpzVW5kZWZpbmVk
KCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KQorICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCwganNVbmRlZmluZWQo
KSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZFByaXZhdGVOYW1lLCBq
c1VuZGVmaW5lZCgpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5PYmplY3RQcml2YXRlTmFtZSwg
b2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPlR5cGVFcnJvclByaXZh
dGVOYW1lLCBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSB8IERvbnREZWxl
dGUgfCBSZWFkT25seSkKICAgICB9OwogICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFs
cywgV1RGX0FSUkFZX0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CiAgICAgCkBAIC02MDgsNiArNjEy
LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5
bnRheEVycm9yQ29uc3RydWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X3R5cGVFcnJvckNvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9VUklFcnJvckNvbnN0cnVjdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9vYmplY3RDb25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
cHJvbWlzZUNvbnN0cnVjdG9yKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X2V2YWxGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAppbmRleCBiMGNhZDNkYzU0NzBmN2M3YTBlNTcwYmRjZDJkZmZhODk1ZTJhYTBj
Li4zYTYxNmM2ZjA1ZWRmMWQyOTVhZjg0NDFhYTY2NTAwZmI5MmE0YTQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTY3LDYgKzY3LDcg
QEAgY2xhc3MgSlNTdGFjazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIE1p
Y3JvdGFzazsKIGNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I7CitjbGFzcyBPYmplY3RDb25z
dHJ1Y3RvcjsKIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBQcm9ncmFtRXhlY3V0YWJs
ZTsKIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yOwpAQCAtMTU4LDYgKzE1OSw3IEBAIHByb3RlY3Rl
ZDoKICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV90eXBlRXJyb3JD
b25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV9V
UklFcnJvckNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VDb25zdHJ1Y3Rv
cj4gbV9wcm9taXNlQ29uc3RydWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPE9iamVjdENvbnN0cnVj
dG9yPiBtX29iamVjdENvbnN0cnVjdG9yOwogCiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+
IG1fZXZhbEZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2NhbGxGdW5j
dGlvbjsKQEAgLTMzMCw2ICszMzIsNyBAQCBwdWJsaWM6CiAgICAgUmVnRXhwQ29uc3RydWN0b3Iq
IHJlZ0V4cENvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBDb25zdHJ1Y3Rvci5n
ZXQoKTsgfQogCiAgICAgRXJyb3JDb25zdHJ1Y3RvciogZXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1fZXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQorICAgIE9iamVjdENvbnN0cnVj
dG9yKiBvYmplY3RDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0Q29uc3RydWN0
b3IuZ2V0KCk7IH0KICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBldmFsRXJyb3JDb25zdHJ1
Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXZhbEVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KICAg
ICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiByYW5nZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7
IHJldHVybiBtX3JhbmdlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgIE5hdGl2ZUVycm9y
Q29uc3RydWN0b3IqIHJlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBt
X3JlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KQEAgLTU4MSw3ICs1ODQsNyBAQCBp
bmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6aGFzT3duUHJvcGVydHlGb3JXcml0ZShFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZQogCiBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6c3lt
Ym9sVGFibGVIYXNQcm9wZXJ0eShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIFN5
bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlO
YW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRh
YmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIHJldHVybiAhZW50cnku
aXNOdWxsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNw
cAppbmRleCAyYjY3YTFkOWVlZDg0ZTk5NTZmOGJiOTY4Mzg0Yzg0Y2FlYTUzY2ZmLi4yZWEyYzI0
ZTZlYWI0Y2QwZDdmZmVkNjY1ZWY0YWU0MWFmMDc1MGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCBnZXRDbGFzc1Byb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDbGFzc0lu
Zm8qIGNsYXNzCiAgICAgICAgIGludCBoYXNoU2l6ZU1hc2sgPSB0YWJsZS0+Y29tcGFjdFNpemUg
LSAxOwogICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gdGFibGUtPnRhYmxlOwogICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8PSBoYXNoU2l6ZU1hc2s7ICsraSwgKytlbnRyeSkgewot
ICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkoKSAmJiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYg
RG9udEVudW0pIHx8IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKSAmJiAhKChl
bnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pICYmIGRpZFJlaWZ5KSkKKyAgICAgICAgICAg
IGlmIChlbnRyeS0+a2V5KCkgJiYgKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8
fCAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgJiYgISgoZW50cnktPmF0dHJp
YnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSAmJiBkaWRSZWlmeSkpCiAgICAgICAgICAgICAg
ICAgcHJvcGVydHlOYW1lcy5hZGQoZW50cnktPmtleSgpKTsKICAgICAgICAgfQogICAgIH0KQEAg
LTE2MTgsNyArMTYxOCw3IEBAIHZvaWQgSlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9y
RGVsZXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdCh0aGlzKTsKICAgICAgICAgZm9yIChIYXNoVGFibGU6OkNvbnN0SXRl
cmF0b3IgaXRlciA9IGhhc2hUYWJsZS0+YmVnaW4odm0pOyBpdGVyICE9IGhhc2hUYWJsZS0+ZW5k
KHZtKTsgKytpdGVyKSB7Ci0gICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygpICYgRnVu
Y3Rpb24pCisgICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVu
Y3Rpb24pCiAgICAgICAgICAgICAgICAgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoZ2xvYmFsT2Jq
ZWN0KCktPmdsb2JhbEV4ZWMoKSwgKml0ZXIsIHRoaXMsIElkZW50aWZpZXIoJnZtLCBpdGVyLT5r
ZXkoKSksIHNsb3QpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjIzNiw2ICsyMjM2LDE2IEBAIHZv
aWQgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uCiAgICAgcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1
bmN0aW9uLCBhdHRyaWJ1dGVzKTsKIH0KIAordm9pZCBKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRp
bkZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJv
cGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVj
dXRhYmxlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQoreworICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBw
cm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOworICAgIGlmICghbmFtZSkKKyAgICAgICAgbmFtZSA9
IHZtLnByb3BlcnR5TmFtZXMtPmFub255bW91cy5pbXBsKCk7CisgICAgQVNTRVJUKG5hbWUpOwor
ICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0
aW9uKHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFi
bGUpLCBnbG9iYWxPYmplY3QpOworICAgIHB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCBmdW5j
dGlvbiwgYXR0cmlidXRlcyk7Cit9CisKIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgZnVuY3Rpb25M
ZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2lj
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUucHVibGljTmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmgKaW5kZXggMDJiMTM3YjM1MGMyZmE4MzI1YmQzYjk2NDcxMTJhYmU4NzZmMzgzZi4uZGRlNTk3
ZWZmYWVjMGYxYjhkNDRjMjkxMTk1MDMwMWYwNjAwN2U5OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQnV0dGVy
Zmx5LmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ2xhc3NJbmZvLmgiCi0j
aW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJDb3B5V3JpdGVCYXJyaWVy
LmgiCiAjaW5jbHVkZSAiRGVmZXJHQy5oIgogI2luY2x1ZGUgIkhlYXAuaCIKQEAgLTU4MSw2ICs1
ODAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXREaXJlY3RVbmRlZmluZWQoUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0KSB7IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNldFVuZGVmaW5lZCgpOyB9
CiAKICAgICB2b2lkIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBjb25zdCBQcm9wZXJ0eU5hbWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVu
Y3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgdm9pZCBwdXREaXJl
Y3RCdWlsdGluRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFt
ZSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIHZvaWQg
cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2
ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hv
dWxkVGhyb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9taXNlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9taXNlQ29uc3RydWN0b3IuY3BwCmluZGV4IDQwMjYxOTYzM2ZhMDZmZDI1NGIzZjJhN2E4Y2M3
MWU4MDdhYWY5MTEuLjE3ZDJhYjY1YTg4ZmZiMTNmYTlhNmM4ZjU4M2NhODQ0YWY4MzIyNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25z
dHJ1Y3Rvci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJKU1Byb21pc2VEZWZlcnJl
ZC5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZUZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTUHJvbWlz
ZVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIkxv
b2t1cC5oIgogI2luY2x1ZGUgIk51bWJlck9iamVjdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlu
bGluZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
cGVydHlOYW1lSXRlcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKaW5kZXggNjhhOGJkODdkMzhhZGJiYjlkZDJhYzllYzRi
NDlkNWVmNDU0OWQ1Ni4uMjM3YzQyYmIwZGEwZjE2Njc2ZWIxMWFkZTgxODBhN2IwNmQ5OGViNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5jcHAKQEAgLTI5LDcgKzI5LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiT3Bl
cmF0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpT
QyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmgKaW5kZXggZjQzNjJmZjM1NGVlNmE1MDIyMWJiNzMxZDFhMjYxMWU2ZGQ2
MWJjMC4uZDA3MzcxOWRlMTYwZDJmMjkyMTEwYTU5NmExMDVlMmZhMjExNWZmYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0
b3IuaApAQCAtMzEsNyArMzEsNiBAQAogCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRl
ICJKU1N0cmluZy5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQcm9wZXJ0
eU5hbWVBcnJheS5oIgogI2luY2x1ZGUgPG1lbW9yeT4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmgKaW5kZXggMmIxY2RkZGM1ODQxZDYwZDE1N2EyZTYxZjcwMmIwZWU1
ZmExZDY3Ni4uZTM5MzQxNjBhZWE5MjZlZjE1OTMyZjg3OTBlMjRjNTJhZjAyZDM1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC0yNCw3ICsyNCw2IEBACiAj
ZGVmaW5lIEpTU3RyaW5nX2gKIAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgotI2luY2x1ZGUgIkNv
bW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlBy
b3BlcnR5RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgpAQCAtNDcyLDMz
ICs0NzEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJp
dmlhbFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4ganNO
b250cml2aWFsU3RyaW5nKCZleGVjLT52bSgpLCBzKTsgfQogICAgIGlubGluZSBKU1N0cmluZyog
anNPd25lZFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4g
anNPd25lZFN0cmluZygmZXhlYy0+dm0oKSwgcyk7IH0KIAotICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQotICAgIHsKLSAgICAgICAg
aWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7Ci0gICAg
ICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5LCBqc051bWJlcihtX2xlbmd0aCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgIH0KLQotICAgICAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKLSAg
ICAgICAgaWYgKGkgPCBtX2xlbmd0aCkgewotICAgICAgICAgICAgQVNTRVJUKGkgIT0gUHJvcGVy
dHlOYW1lOjpOb3RBbkluZGV4KTsgLy8gTm8gbmVlZCBmb3IgYW4gZXhwbGljaXQgY2hlY2ssIHRo
ZSBhYm92ZSB0ZXN0IHdvdWxkIGFsd2F5cyBmYWlsIQotICAgICAgICAgICAgc2xvdC5zZXRWYWx1
ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIGkpKTsKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLSAgICAgICAgICAgIAotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0
U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi0gICAgewotICAgICAgICBpZiAocHJvcGVydHlOYW1lIDwg
bV9sZW5ndGgpIHsKLSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8
IFJlYWRPbmx5LCBnZXRJbmRleChleGVjLCBwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQog
ICAgIGlubGluZSBib29sIGlzSlNTdHJpbmcoSlNWYWx1ZSB2KSB7IHJldHVybiB2LmlzQ2VsbCgp
ICYmIHYuYXNDZWxsKCktPmNsYXNzSW5mbygpID09IEpTU3RyaW5nOjppbmZvKCk7IH0KIAogICAg
IC8vIC0tLSBKU1ZhbHVlIGlubGluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAt
NTI4LDMyICs1MDAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIHRvV1RGU3Ry
aW5nU2xvd0Nhc2UoZXhlYyk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBTdHJpbmcgaW5s
aW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKGNvbnN0IEpTVmFsdWUmIHZhbHVlLCBFeGVjU3Rh
dGUqIGV4ZWMpCi0gICAgewotICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgICAgICBp
ZiAodmFsdWUuaXNJbnQzMigpKQotICAgICAgICAgICAgcmV0dXJuIHZtLm51bWVyaWNTdHJpbmdz
LmFkZCh2YWx1ZS5hc0ludDMyKCkpOwotICAgICAgICBpZiAodmFsdWUuaXNEb3VibGUoKSkKLSAg
ICAgICAgICAgIHJldHVybiB2bS5udW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNEb3VibGUoKSk7
Ci0gICAgICAgIGlmICh2YWx1ZS5pc1RydWUoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9w
ZXJ0eU5hbWVzLT50cnVlS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzRmFs
c2UoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5mYWxzZUtleXdvcmQu
c3RyaW5nKCk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgICAgIHJldHVy
biB2bS5wcm9wZXJ0eU5hbWVzLT5udWxsS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHZh
bHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+
dW5kZWZpbmVkS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIFN0cmluZyBK
U1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci0gICAgewot
ICAgICAgICBpZiAoaXNTdHJpbmcoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxK
U1N0cmluZyo+KGFzQ2VsbCgpKS0+dmFsdWUoZXhlYyk7Ci0KLSAgICAgICAgcmV0dXJuIGlubGlu
ZUpTVmFsdWVOb3RTdHJpbmd0b1N0cmluZygqdGhpcywgZXhlYyk7Ci0gICAgfQotCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTU3RyaW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzc4YzA1ZmM4MGQ4
OGU4NTM3YzlkMmE1ZWFiOWZmMGJhOWI2MGE3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCkBAIC0wLDAgKzEsOTAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEpTU3RyaW5nSW5saW5lc19oCisjZGVmaW5lIEpTU3RyaW5nSW5saW5lc19oCisKKyNpbmNs
dWRlICJDb21tb25JZGVudGlmaWVycy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
CisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0FMV0FZU19JTkxJ
TkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgeworICAgICAg
ICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBq
c051bWJlcihtX2xlbmd0aCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisg
ICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGkgPCBtX2xl
bmd0aCkgeworICAgICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOyAv
LyBObyBuZWVkIGZvciBhbiBleHBsaWNpdCBjaGVjaywgdGhlIGFib3ZlIHRlc3Qgd291bGQgYWx3
YXlzIGZhaWwhCisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRP
bmx5LCBnZXRJbmRleChleGVjLCBpKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0FMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6
Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgaWYgKHByb3BlcnR5TmFtZSA8IG1fbGVu
Z3RoKSB7CisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5
LCBnZXRJbmRleChleGVjLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKworQUxXQVlTX0lOTElORSBTdHJpbmcg
aW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKGNvbnN0IEpTVmFsdWUmIHZhbHVlLCBFeGVj
U3RhdGUqIGV4ZWMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBpZiAodmFsdWUu
aXNJbnQzMigpKQorICAgICAgICByZXR1cm4gdm0ubnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVlLmFz
SW50MzIoKSk7CisgICAgaWYgKHZhbHVlLmlzRG91YmxlKCkpCisgICAgICAgIHJldHVybiB2bS5u
dW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNEb3VibGUoKSk7CisgICAgaWYgKHZhbHVlLmlzVHJ1
ZSgpKQorICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+dHJ1ZUtleXdvcmQuc3RyaW5n
KCk7CisgICAgaWYgKHZhbHVlLmlzRmFsc2UoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5
TmFtZXMtPmZhbHNlS2V5d29yZC5zdHJpbmcoKTsKKyAgICBpZiAodmFsdWUuaXNOdWxsKCkpCisg
ICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5udWxsS2V5d29yZC5zdHJpbmcoKTsKKyAg
ICBpZiAodmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFt
ZXMtPnVuZGVmaW5lZEtleXdvcmQuc3RyaW5nKCk7CisgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKK30KKyAgICAKK0FMV0FZU19JTkxJTkUgU3RyaW5nIEpTVmFs
dWU6OnRvV1RGU3RyaW5nSW5saW5lKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBpZiAo
aXNTdHJpbmcoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTU3RyaW5nKj4oYXNDZWxs
KCkpLT52YWx1ZShleGVjKTsKKyAgICAKKyAgICByZXR1cm4gaW5saW5lSlNWYWx1ZU5vdFN0cmlu
Z3RvU3RyaW5nKCp0aGlzLCBleGVjKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKaW5kZXgg
MmFjMjUyNGM1ZGZkYTNkMTIyNDlkNzc5MGFkYzMxMjllM2MwZTg3MS4uZmJjOGI4OTVlYWU2YWY3
ODg4MzliZWI1ZTgzZDdiNmI5NzkyOGZhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKQEAgLTY0LDYgKzY0LDggQEAg
dm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXQKICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIodGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+bV9sb2NrKTsKICAgICAgICAgU3ltYm9sVGFi
bGU6Ok1hcDo6aXRlcmF0b3IgZW5kID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+ZW5kKGxv
Y2tlcik7CiAgICAgICAgIGZvciAoU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXQgPSB0aGlz
T2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5iZWdpbihsb2NrZXIpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
KyAgICAgICAgICAgIGlmIChpdC0+a2V5LT5pc0VtcHR5VW5pcXVlKCkpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoIShpdC0+dmFsdWUuZ2V0QXR0cmlidXRlcygp
ICYgRG9udEVudW0pIHx8IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKQogICAg
ICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgaXQtPmtleS5n
ZXQoKSkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKaW5kZXggYjViMjBhODQ1YjZhYjY0NDI0YjM3ZTMxYjI3
NzRlZjkwNTM1M2Y3Zi4uZDAzYjI0NTExYzJkZTE5NTlmYjVmNTZkNjQ5YzY0ZDBlZmUwNjg1NSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVP
YmplY3QuaApAQCAtNzIsNyArNzIsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKIHsK
ICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwog
ICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAg
U3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2Vy
LCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVy
YXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7
CiAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+dmFsdWU7
CkBAIC04Nyw3ICs4Nyw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogewogICAgIFN5
bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgQ29u
Y3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICBTeW1ib2xU
YWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3Bl
cnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0
ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBp
ZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1ZTsKQEAgLTEw
NCw3ICsxMDQsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKIHsKICAgICBTeW1ib2xU
YWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgIENvbmN1cnJl
bnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAgU3ltYm9sVGFibGU6
Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5h
bWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0g
c3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGl0
ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+dmFsdWU7CkBAIC0xMjYsNyAr
MTI2LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoCiAgICAgewogICAgICAgICBTeW1i
b2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBH
Q1NhZmVDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2ssIGV4ZWMt
PnZtKCkuaGVhcCk7Ci0gICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBz
eW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAg
ICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxv
Y2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFi
bGUuZW5kKGxvY2tlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJvb2wg
d2FzRmF0OwpAQCAtMTU5LDcgKzE1OSw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0V2l0
aEF0dHJpYnV0ZXMoCiAgICAgewogICAgICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAq
b2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tl
cihzeW1ib2xUYWJsZS5tX2xvY2spOwotICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRv
ciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1l
KCkpOworICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFi
bGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgICAgIGlmIChpdGVyID09
IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICBTeW1ib2xUYWJsZUVudHJ5JiBlbnRyeSA9IGl0ZXItPnZhbHVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKaW5kZXggYTgwNmRkMDUyYTBjYmVlNGNhYzJjYWE2
ZTA4YzY3MTYwMDVjMjcwYy4uYTk3NjUyMDFiOWY1MTg2NDE0MjNkZGUwZmUwZTJlNTFhOGNlNzNi
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCkBAIC02OCw3ICs2
OCw3IEBAIHZvaWQgSGFzaFRhYmxlOjpkZWxldGVUYWJsZSgpIGNvbnN0CiBib29sIHNldFVwU3Rh
dGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwg
SlNPYmplY3QqIHRoaXNPYmosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKICAgICBBU1NFUlQodGhpc09iai0+Z2xvYmFsT2JqZWN0KCkpOwotICAgIEFT
U0VSVChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pOworICAgIEFTU0VSVChlbnRyeS0+
YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQg
PSB0aGlzT2JqLT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7
CkBAIC03OSw5ICs3OSwxMyBAQCBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqCiAgICAgICAgIGlmICh0
aGlzT2JqLT5zdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgCi0gICAgICAgIHRoaXNPYmotPnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKAotICAg
ICAgICAgICAgdm0sIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5
LT5mdW5jdGlvbkxlbmd0aCgpLAotICAgICAgICAgICAgZW50cnktPmZ1bmN0aW9uKCksIGVudHJ5
LT5pbnRyaW5zaWMoKSwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAgICAgIGlmIChlbnRyeS0+
YXR0cmlidXRlcygpICYgQnVpbHRpbikKKyAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdEJ1
aWx0aW5GdW5jdGlvbih2bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwg
ZW50cnktPmJ1aWx0aW5HZW5lcmF0b3IoKSh2bSksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
KAorICAgICAgICAgICAgICAgIHZtLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlO
YW1lLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSwKKyAgICAgICAgICAgICAgICBlbnRyeS0+ZnVu
Y3Rpb24oKSwgZW50cnktPmludHJpbnNpYygpLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAgICAg
ICAgfQogICAgICAgICBvZmZzZXQgPSB0aGlzT2JqLT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3Bl
cnR5TmFtZSwgYXR0cmlidXRlcyk7CiAgICAgICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG9mZnNl
dCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xv
b2t1cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKaW5kZXggYmRl
ODNkNGE2ZmMzNTU3Nzg1MGUzMWU4OGJjMzlmZDA1ZjdiY2U1Mi4uZGJhMzg5ZTllMjQzZGQwZWNi
MmJhOThmMzk0ZDQwNzlmOWRlYTkzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTG9va3VwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9v
a3VwLmgKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgLy8gaWUuIHR5cGVk
ZWYgSlNWYWx1ZSAoKkdldEZ1bmN0aW9uKShFeGVjU3RhdGUqLCBKU09iamVjdCogYmFzZU9iamVj
dCkKICAgICB0eXBlZGVmIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIEdldEZ1bmN0aW9uOwog
ICAgIHR5cGVkZWYgUHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmMgUHV0RnVuY3Rpb247Cisg
ICAgdHlwZWRlZiBGdW5jdGlvbkV4ZWN1dGFibGUqICgqQnVpbHRpbkdlbmVyYXRvcikoVk0mKTsK
IAogICAgIGNsYXNzIEhhc2hFbnRyeSB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwpAQCAtNjgsMTEgKzY5LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJu
IG1faW50cmluc2ljOwogICAgICAgICB9CiAKKyAgICAgICAgQnVpbHRpbkdlbmVyYXRvciBidWls
dGluR2VuZXJhdG9yKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgQnVpbHRpbik7IHJl
dHVybiBtX3UuYnVpbHRpbkdlbmVyYXRvci5nZW5lcmF0b3JWYWx1ZTsgfQogICAgICAgICBOYXRp
dmVGdW5jdGlvbiBmdW5jdGlvbigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0
aW9uKTsgcmV0dXJuIG1fdS5mdW5jdGlvbi5mdW5jdGlvblZhbHVlOyB9CiAgICAgICAgIHVuc2ln
bmVkIGNoYXIgZnVuY3Rpb25MZW5ndGgoKSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBG
dW5jdGlvbik7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihtX3UuZnVuY3Rpb24u
bGVuZ3RoKTsgfQogCi0gICAgICAgIEdldEZ1bmN0aW9uIHByb3BlcnR5R2V0dGVyKCkgY29uc3Qg
eyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5
LmdldDsgfQotICAgICAgICBQdXRGdW5jdGlvbiBwcm9wZXJ0eVB1dHRlcigpIGNvbnN0IHsgQVNT
RVJUKCEobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0eS5wdXQ7
IH0KKyAgICAgICAgR2V0RnVuY3Rpb24gcHJvcGVydHlHZXR0ZXIoKSBjb25zdCB7IEFTU0VSVCgh
KG1fYXR0cmlidXRlcyAmIEJ1aWx0aW5PckZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVydHku
Z2V0OyB9CisgICAgICAgIFB1dEZ1bmN0aW9uIHByb3BlcnR5UHV0dGVyKCkgY29uc3QgeyBBU1NF
UlQoIShtX2F0dHJpYnV0ZXMgJiBCdWlsdGluT3JGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3Bl
cnR5LnB1dDsgfQogCiAgICAgICAgIGludHB0cl90IGxleGVyVmFsdWUoKSBjb25zdCB7IEFTU0VS
VCghbV9hdHRyaWJ1dGVzKTsgcmV0dXJuIG1fdS5sZXhlci52YWx1ZTsgfQogCkBAIC05NCw2ICs5
NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBpbnRwdHJfdCBsZW5ndGg7
IC8vIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGZ1bmN0aW9uCiAgICAgICAgICAgICB9IGZ1bmN0
aW9uOwogICAgICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICBCdWlsdGluR2VuZXJh
dG9yIGdlbmVyYXRvclZhbHVlOworICAgICAgICAgICAgICAgIGludHB0cl90IHVudXNlZDsKKyAg
ICAgICAgICAgIH0gYnVpbHRpbkdlbmVyYXRvcjsKKyAgICAgICAgICAgIHN0cnVjdCB7CiAgICAg
ICAgICAgICAgICAgR2V0RnVuY3Rpb24gZ2V0OwogICAgICAgICAgICAgICAgIFB1dEZ1bmN0aW9u
IHB1dDsKICAgICAgICAgICAgIH0gcHJvcGVydHk7CkBAIC0yMDksNyArMjE1LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBIYXNo
RW50cnkqIGVudHJ5KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgICAgIHsK
LSAgICAgICAgICAgIFN0cmluZ0ltcGwqIGltcGwgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgp
OworICAgICAgICAgICAgU3RyaW5nSW1wbCogaW1wbCA9IHByb3BlcnR5TmFtZS51aWQoKTsKICAg
ICAgICAgICAgIGlmICghaW1wbCkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAg
CkBAIC0yNDksNyArMjU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGlmICghZW50cnkp
IC8vIG5vdCBmb3VuZCwgZm9yd2FyZCB0byBwYXJlbnQKICAgICAgICAgICAgIHJldHVybiBQYXJl
bnRJbXA6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogCi0gICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pCisgICAg
ICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pCiAgICAgICAg
ICAgICByZXR1cm4gc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoZXhlYywgZW50cnksIHRoaXNPYmos
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20o
dGhpc09iaiwgZW50cnktPmF0dHJpYnV0ZXMoKSwgZW50cnktPnByb3BlcnR5R2V0dGVyKCkpOwpA
QCAtMjg2LDcgKzI5Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpZiAoIWVudHJ5KSAv
LyBub3QgZm91bmQsIGZvcndhcmQgdG8gcGFyZW50CiAgICAgICAgICAgICByZXR1cm4gUGFyZW50
SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iaiwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90
KTsKIAotICAgICAgICBBU1NFUlQoIShlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pKTsK
KyAgICAgICAgQVNTRVJUKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9u
KSk7CiAKICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09iaiwgZW50cnktPmF0
dHJpYnV0ZXMoKSwgZW50cnktPnByb3BlcnR5R2V0dGVyKCkpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTI5NSw3ICszMDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgdm9pZCBw
dXRFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0
KiBiYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpCiAgICAgewogICAgICAgICAvLyBJZiB0aGlzIGlzIGEgZnVuY3Rpb24g
cHV0IGl0IGFzIGFuIG92ZXJyaWRlIHByb3BlcnR5LgotICAgICAgICBpZiAoZW50cnktPmF0dHJp
YnV0ZXMoKSAmIEZ1bmN0aW9uKSB7CisgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYg
QnVpbHRpbk9yRnVuY3Rpb24pIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdCogdGhpc09iamVj
dCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPihzbG90LnRoaXNWYWx1ZSgpKSkKICAgICAgICAg
ICAgICAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2
YWx1ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgUmVhZE9u
bHkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVF
cnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUVycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IGQ1ZTcyOGMyY2QxMDIwYTQ3ZTRhZGNkNjQ5Y2Qx
ZmZmYTVjZDZhODMuLmRjYTJmZDhkMWY2YWMyM2I4ZmY4MTdjYmIxOGZhYWU3YmNkNTk3MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9y
Q29uc3RydWN0b3IuY3BwCkBAIC0zOCw2ICszOCwyMCBAQCBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
OjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7
CiB9CiAKK3ZvaWQgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVj
dHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
LCBuYW1lKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAgCisgICAgTmF0aXZl
RXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1lLCB0aGlzKTsKKyAgICAK
KyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSks
IERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsgLy8gRUNNQSAxNS4xMS43LjUKKyAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgbV9lcnJvclN0cnVjdHVyZS5z
ZXQodm0sIHRoaXMsIEVycm9ySW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUpKTsKKyAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZSk7CisgICAgQVNT
RVJUKG1fZXJyb3JTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOworfQorCiB2b2lkIE5hdGl2ZUVycm9y
Q29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0
PE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAppbmRleCA3NDBkM2Y5
MzMyOTJmZDJhY2NiNGI5OTAzNDQzMTJiOTMxOWFlMTEwLi40MzhhM2FmYjliYjBmNjQxMmM5Nzkz
MjIzMGM4ODcxMDk2MWY1NDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCkBAIC01MSwxOSArNTEsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSgpIHsgcmV0dXJu
IG1fZXJyb3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBuYW1lKTsKLSAgICAgICAg
ICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKLQotICAgICAgICAgICAgTmF0aXZlRXJyb3JQ
cm90b3R5cGUqIHByb3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1lLCB0aGlzKTsKLQotICAgICAgICAg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7IC8vIEVDTUEgMTUuMTEuNy41Ci0gICAg
ICAgICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90
eXBlLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Ci0gICAgICAgICAgICBtX2Vy
cm9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSkpOwotICAgICAgICAgICAgQVNTRVJUKG1fZXJy
b3JTdHJ1Y3R1cmUpOwotICAgICAgICAgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUtPmlzT2Jq
ZWN0KCkpOwotICAgICAgICB9CisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcm
IG5hbWUpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihW
TSYsIFN0cnVjdHVyZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlTbG90LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eVNsb3QuaAppbmRleCBkOTM4ZmEzMTY0NWFmMjZiNzU4NTE0ZGI2YjI0NzhmMTgzZTllZWUxLi5j
ZmU5YzRkMzJiYTc2OGM3NGU0ZmZiYjE5MTM1Mjc5ZGViZjExNzY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaApAQCAtNDIsNiArNDIsOCBAQCBlbnVt
IEF0dHJpYnV0ZSB7CiAgICAgRnVuY3Rpb24gICAgID0gMSA8PCA0LCAgLy8gcHJvcGVydHkgaXMg
YSBmdW5jdGlvbiAtIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIEFjY2Vzc29y
ICAgICA9IDEgPDwgNSwgIC8vIHByb3BlcnR5IGlzIGEgZ2V0dGVyL3NldHRlcgogICAgIEN1c3Rv
bUFjY2Vzc29yID0gMSA8PCA2LAorICAgIEJ1aWx0aW4gICAgICAgICA9IDEgPDwgNywgLy8gcHJv
cGVydHkgaXMgYSBidWlsdGluIGZ1bmN0aW9uIC0gb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFi
bGVzCisgICAgQnVpbHRpbk9yRnVuY3Rpb24gPSBCdWlsdGluIHwgRnVuY3Rpb24sIC8vIGhlbHBl
ciBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKIH07CiAKIGNsYXNzIFByb3BlcnR5U2xv
dCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1
Y3Rvci5jcHAKaW5kZXggYmM1MTZiMDZkNjY1MWYwZTY4MmEyMDE3YmRmOGIwM2JhYmVkNmVhMi4u
MmMyNDM0Yjg3ZDA0Zjc0OWNiMTJlNjAyYWI1NDc4NDk0NmE5MWYxZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcApAQCAtMjMs
NiArMjMsNyBAQAogI2luY2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgiCiAKICNpbmNsdWRlICJF
cnJvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk9wZXJhdGlv
bnMuaCIKICNpbmNsdWRlICJSZWdFeHBNYXRjaGVzQXJyYXkuaCIKICNpbmNsdWRlICJSZWdFeHBQ
cm90b3R5cGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQ
cm90b3R5cGUuY3BwCmluZGV4IDg5ZDdhYzFiOGNiZjFkYjBlMTI2ZjFmYzc5NmRmZDVmYzg0YjJl
NTkuLjlkZGEwYmE4ZGUxNDEyZWFmNGQyOTFkY2YwYzZiMzk2NTdmYjY3N2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcApAQCAtMjQs
NyArMjQsNyBAQAogI2luY2x1ZGUgIkFycmF5UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiRXJyb3Iu
aCIKICNpbmNsdWRlICJKU0FycmF5LmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1
ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAppbmRleCBiMjAzODg4ZDNjMTZj
ZGEzYzAwMzUwNjIwOGFlMDg2OTVkYzVkYWFhLi5kMDI2NmE1OWVmM2Y1NWFhMzY5NGY1Zjc0MThj
Zjc4ZTBhZTBkOGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
ZXRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0
Q29uc3RydWN0b3IuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSlNDZWxsSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTZXQuaCIKKyNp
bmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJNYXBEYXRhLmgiCiAjaW5jbHVk
ZSAiU2V0UHJvdG90eXBlLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdPYmplY3QuY3BwCmluZGV4IDQ0MGE2MDk0MjE5MzM4MDMxZTU5MjdhZjQ2YjI4OWRiY2Zi
NWE3MjguLjgwZTdlYWE4YzQ5MWNiNmQ1NGE4MzI0Y2U2NDdhNmNkYjdlODg3ODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAtMjIsNyAr
MjIsOSBAQAogI2luY2x1ZGUgIlN0cmluZ09iamVjdC5oIgogCiAjaW5jbHVkZSAiRXJyb3IuaCIK
KyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0
LmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5o
IgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDA0MjkxZjdlOGRkMjRlOGFiMzNkNzVhZjFk
YTQ1NjhmMmJjOTllNjguLjFlY2FiODVjMGJkYjI4Njk4OTQ1NzdhNzQxMjU0ZTM2NDQxNDlkODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMjcs
MTIgKzI3LDE4IEBACiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAKICNpbmNsdWRlICJDb2RlQmxv
Y2suaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkR1bXBDb250
ZXh0LmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5n
SW5saW5lcy5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgorI2luY2x1ZGUgIlByb3BlcnR5TWFwSGFz
aFRhYmxlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKKyNpbmNsdWRlICJTbG90
VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgorI2luY2x1ZGUg
IlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMu
aCIKICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWRMZWFrQ291bnRlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDUy
Y2NmNDIzYTEwNDNlMTA3OWYyZDhiMTg5NDIxOTg5MGU3MWYyYmMuLjkxYWQ1NTdlMjg5YjQ3Mzcw
N2I4MzlmNmNlNzBjYTM0NDE4NmE1ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJBcmdMaXN0LmgiCiAjaW5jbHVkZSAiQXJp
dHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuaCIKICNpbmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKICNpbmNsdWRl
ICJDYWxsRnJhbWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAi
Q29kZUNhY2hlLmgiCkBAIC01NSw3ICs1NiwxMCBAQAogI2luY2x1ZGUgIkpTQVBJVmFsdWVXcmFw
cGVyLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgor
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNMb2Nr
LmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKQEAgLTY4LDEzICs3MiwxNiBAQAogI2luY2x1
ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk1hcERhdGEuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgor
I2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlBhcnNlckFyZW5hLmgiCisjaW5jbHVkZSAi
UHJvcGVydHlNYXBIYXNoVGFibGUuaCIKICNpbmNsdWRlICJSZWdFeHBDYWNoZS5oIgogI2luY2x1
ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiU291cmNlUHJvdmlkZXJDYWNoZS5oIgogI2luY2x1ZGUgIlN0cmljdEV2
YWxBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgorI2luY2x1ZGUgIlN0
cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgogI2luY2x1
ZGUgIldlYWtNYXBEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NJRC5oPgpAQCAtMjI2LDYg
KzIzMyw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAs
IG1faW5EZWZpbmVPd25Qcm9wZXJ0eShmYWxzZSkKICAgICAsIG1fY29kZUNhY2hlKENvZGVDYWNo
ZTo6Y3JlYXRlKCkpCiAgICAgLCBtX2VuYWJsZWRQcm9maWxlcihudWxscHRyKQorICAgICwgbV9i
dWlsdGluRXhlY3V0YWJsZXMoQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGUoKnRoaXMpKQogewog
ICAgIGludGVycHJldGVyID0gbmV3IEludGVycHJldGVyKCp0aGlzKTsKICAgICBTdGFja0JvdW5k
cyBzdGFjayA9IHd0ZlRocmVhZERhdGEoKS5zdGFjaygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKaW5kZXggNWE4NDEwNWVhZmI3YWJiYTVmYTQzMWVlZWRkNTVkN2E4OWY1NWNlMi4uNjk1
OGFjMzkzYjFhZWZjMGJlZmJmNmU0ZWI4YjY4MjVjZjdjOWEwYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiUHJpdmF0ZU5hbWUuaCIK
ICNpbmNsdWRlICJQcm90b3R5cGVNYXAuaCIKICNpbmNsdWRlICJTbWFsbFN0cmluZ3MuaCIKKyNp
bmNsdWRlICJTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU3Ryb25nLmgiCiAjaW5jbHVkZSAiVGh1
bmtHZW5lcmF0b3JzLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheUNvbnRyb2xsZXIuaCIKQEAgLTY5
LDYgKzcwLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQXJpdHlDaGVja0ZhaWxS
ZXR1cm5UaHVua3M7CisgICAgY2xhc3MgQnVpbHRpbkV4ZWN1dGFibGVzOwogICAgIGNsYXNzIENv
ZGVCbG9jazsKICAgICBjbGFzcyBDb2RlQ2FjaGU7CiAgICAgY2xhc3MgQ29tbW9uSWRlbnRpZmll
cnM7CkBAIC00OTcsNiArNDk5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcmVn
aXN0ZXJXYXRjaHBvaW50Rm9ySW1wdXJlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciYsIFdhdGNo
cG9pbnQqKTsKICAgICAgICAgLy8gRklYTUU6IFVzZSBBdG9taWNTdHJpbmcgb25jZSBpdCBnb3Qg
bWVyZ2VkIHdpdGggSWRlbnRpZmllci4KICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBh
ZGRJbXB1cmVQcm9wZXJ0eShjb25zdCBTdHJpbmcmKTsKKyAgICAgICAgCisgICAgICAgIEJ1aWx0
aW5FeGVjdXRhYmxlcyogYnVpbHRpbkV4ZWN1dGFibGVzKCkgeyByZXR1cm4gbV9idWlsdGluRXhl
Y3V0YWJsZXMuZ2V0KCk7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CkBAIC01MzcsMTAgKzU0MSw5IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBKU1ZhbHVlIG1fZXhjZXB0aW9uOwogICAgICAgICBib29sIG1faW5EZWZpbmVP
d25Qcm9wZXJ0eTsKICAgICAgICAgT3duUHRyPENvZGVDYWNoZT4gbV9jb2RlQ2FjaGU7Ci0gICAg
ICAgIFJlZkNvdW50ZWRBcnJheTxTdGFja0ZyYW1lPiBtX2V4Y2VwdGlvblN0YWNrOwotCiAgICAg
ICAgIExlZ2FjeVByb2ZpbGVyKiBtX2VuYWJsZWRQcm9maWxlcjsKLQorICAgICAgICBPd25QdHI8
QnVpbHRpbkV4ZWN1dGFibGVzPiBtX2J1aWx0aW5FeGVjdXRhYmxlczsKKyAgICAgICAgUmVmQ291
bnRlZEFycmF5PFN0YWNrRnJhbWU+IG1fZXhjZXB0aW9uU3RhY2s7CiAgICAgICAgIEhhc2hNYXA8
U3RyaW5nLCBSZWZQdHI8V2F0Y2hwb2ludFNldD4+IG1faW1wdXJlUHJvcGVydHlXYXRjaHBvaW50
U2V0czsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVh
ZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGlu
Z0hlYWRlcnMvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MGZjYzM4NGU4
ZWRmYzM0YjE0MDgzYjg2NWQzNzM4MjBmNDE2NWM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaApAQCAt
MCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSlNTdHJpbmdJbmxpbmVzX2gKKyNkZWZp
bmUgV2ViQ29yZV9GV0RfSlNTdHJpbmdJbmxpbmVzX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU1N0cmluZ0lubGluZXMuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAKaW5k
ZXggMmVkZGNkYmI5ZjAwNmNhNzYyNjY1MGI0MjAyNzg2MjZiOTI2MTQxNy4uM2M0ZTBkN2JiYjMx
Y2FiMTJiNWU2Yzk3NWM3NGQzZjQ4NGU5Y2IxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3Bw
CkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJp
bmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcAppbmRleCA1NjQ5Yzg1Y2EwOTU4Nzc0OGEz
ZGEwNmNkZGQwY2E5OTllNTBiOGU3Li4zZjRkOGVmYWViNTdmMzMwMDNlNzNhN2U3ODQyZTQyYzcz
Y2U2NDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFueUN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20u
Y3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiSlNJREJPYmplY3RTdG9yZS5oIgogI2lu
Y2x1ZGUgIkpTSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaCIKKyNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oPgogCiB1c2luZyBuYW1l
c3BhY2UgSlNDOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lE
QkRhdGFiYXNlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0
YWJhc2VDdXN0b20uY3BwCmluZGV4IDllYWU3NTY5YzcwNjAzYTRmZWQwYWYxNGM0Zjg3MThjZGU2
NGE2ZTEuLmY0OWRmZTkwYjRlODJkMzllZGNiZjliYTI5ZjJhZTc5OWMwZGRmMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwCkBA
IC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJK
U0lEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgotI2luY2x1ZGUg
PHJ1bnRpbWUvSlNTdHJpbmcuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nSW5saW5lcy5o
PgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwCmluZGV4IDc0ZmQzNTRiMjg2MDdj
Zjc4MjJmODA1MzQ3OTcwZjVkN2FjOGM4MzIuLjU0MzRiM2I3ZDZjNTZlY2IwYTAzYTI3OTRjNjcz
NmE5YWRmYjcwZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURC
T2JqZWN0U3RvcmVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SURCT2JqZWN0U3RvcmVDdXN0b20uY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiSURC
T2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJKU0lEQkluZGV4LmgiCiAjaW5jbHVkZSA8cnVudGlt
ZS9FcnJvci5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmcuaD4KKyNpbmNsdWRlIDxydW50
aW1lL0pTU3RyaW5nSW5saW5lcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NjI1ZjlmNzAyOTJmZGMxNGI4Y2E1MzM3NzBjMDRkNGI3MDA3ZjYzYy4uODhjN2FkNzk0ZDIwZjVk
NDg5ZWI4NWQwNzc5NTg1MWQzNDVhMjA3MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE0LTAx
LTI5ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBw
b3NzaWJsZSB0byBpbXBsZW1lbnQgSlMgYnVpbHRpbnMgaW4gSlMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzg4NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgdGhlIHRlc3QgcmVzdWx0cyBm
b3IgbmV3IGVycm9yIG1lc3NhZ2VzIChub3cgdGhhdCB0aGV5J3JlCisgICAgICAgIGFjdHVhbGx5
IGhlbHBmdWwpLCBhbmQgYWRkZWQgYSBqcy1yZWdyZXNzIHRlc3QgdG8gdHJhY2sgcGVyZm9ybWFu
Y2UuCisKKyAgICAgICAgKiBqcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
anMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBqcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGpzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5q
czogQWRkZWQuCisgICAgICAgICh0ZXN0MSk6CisgICAgICAgICh0ZXN0Mik6CisgICAgICAgICh0
ZXN0Myk6CisKIDIwMTQtMDEtMjkgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNv
bT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBQbGF5IEJyZWFrcG9pbnQgU291bmQgaW4gRnJv
bnRlbmQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dAppbmRleCA1NDFiOGMz
NThmMDY4YTBjZWE4ODJjMTA1MTc1MzI1MTE0Y2QzM2Y3Li5jY2EzNjNkY2U1OGZiYTk1YTU4Y2U0
NmZjYjQ4YzM4YmY1OGFkZjU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9hcnJheS1ldmVy
eS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQu
dHh0CkBAIC0zMCwxMiArMzAsMTIgQEAgUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KGlz
QmlnRW5vdWdoQW5kRXhjZXB0aW9uKSB0aHJldyBleGNlcHRpb24gZXhjZXB0aW8KIFBBU1MgWzEy
LCA1NCwgMTgsIDEzMCwgNDRdLmV2ZXJ5KGlzQmlnRW5vdWdoQW5kRXhjZXB0aW9uKSB0aHJldyBl
eGNlcHRpb24gZXhjZXB0aW9uIGZyb20gZnVuY3Rpb24uCiAKIDUuMCBXcm9uZyBUeXBlIGZvciBD
YWxsYmFjayBUZXN0Ci1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoNSkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5l
dmVyeSgnd3JvbmcnKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFT
UyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KG5ldyBPYmplY3QoKSkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShu
dWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUs
IDgsIDEzMCwgNDRdLmV2ZXJ5KHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
VHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSgpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZl
cnkoNSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNh
bGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVy
eSgnd3JvbmcnKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZl
cnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRd
LmV2ZXJ5KG5ldyBPYmplY3QoKSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJv
dG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4
LCAxMzAsIDQ0XS5ldmVyeShudWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5w
cm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUs
IDgsIDEzMCwgNDRdLmV2ZXJ5KHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
QXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1Mg
WzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFy
cmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCiAKIDYuMCBF
YXJseSBFeGl0ICgiU2hvcnQgQ2lyY3VpdGluZyIpCiBQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0u
ZXZlcnkoaXNCaWdFbm91Z2hTaG9ydENpcmN1aXQpIGlzIGZhbHNlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvanMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4
dAppbmRleCAyYzJhNjhjYjEwNmRhMTBmMDg2YjIyYzViZjJiZjVjOGZlNzllMzNlLi41ZDllY2I3
NWE4ZGE3OWJhNjU2MDVlN2ViOWNmOGZjMjVmZTE4YWZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9qcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2pzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQK
QEAgLTE1LDcgKzE1LDcgQEAgUEFTUyBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh1bmRlZmlu
ZWQsIDAsIDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGUKIFBBU1MgQXJyYXkucHJv
dG90eXBlLnNvcnQuY2FsbCh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVu
ZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUuc29y
dC5jYWxsKHVuZGVmaW5lZCknKS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKHVu
ZGVmaW5lZCwgMCwgMSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5v
dCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbCh1bmRl
ZmluZWQsIDAsIDEpJykuCiBQQVNTIEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmNhbGwodW5kZWZp
bmVkLCB7fSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBv
YmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS51bnNoaWZ0LmNhbGwodW5kZWZpbmVk
LCB7fSknKS4KLVBBU1MgQXJyYXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVkLCB0b1N0
cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmpl
Y3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5ldmVyeS5jYWxsKHVuZGVmaW5lZCwgdG9T
dHJpbmcpJykuCitQQVNTIEFycmF5LnByb3RvdHlwZS5ldmVyeS5jYWxsKHVuZGVmaW5lZCwgdG9T
dHJpbmcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBy
ZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkLgogUEFTUyBBcnJheS5wcm90b3R5
cGUuZm9yRWFjaC5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90
b3R5cGUuZm9yRWFjaC5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpJykuCiBQQVNTIEFycmF5LnBy
b3RvdHlwZS5zb21lLmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnBy
b3RvdHlwZS5zb21lLmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZyknKS4KIFBBU1MgQXJyYXkucHJv
dG90eXBlLmluZGV4T2YuY2FsbCh1bmRlZmluZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5
cGUuaW5kZXhPZi5jYWxsKHVuZGVmaW5lZCwgMCknKS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xMjkwYzBlZWZmOGRlNDIxODMzZDkyZDI3ZTk1MjQxOTE3NjA0Yjk2Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnktZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZl
cnkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRo
cm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5
Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlNWNjMTcxYzQ4NzVhMzU4NWJmMTRlNTQxNWY1Y2QwZTU4MWQ1NDQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1l
dmVyeS5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
c2NyaXB0LXRlc3RzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJh
eS1wcm90b3R5cGUtZXZlcnkuanMgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0
cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjk0YWExNjFjMGNlOThiMmFi
MThhM2ExYTFmMGRmYWFjOWQ3ZDJlMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5qcwpAQCAtMCwwICsx
LDI5IEBACit2YXIgcmVzdWx0ID0gMDsKK2Z1bmN0aW9uIHRlc3QxKGEpIHsKKyAgICByZXN1bHQg
PDwgMTsKKyAgICByZXN1bHQrKzsKKyAgICByZXR1cm4gdHJ1ZTsKK30KK2Z1bmN0aW9uIHRlc3Qy
KGEsYikgeworICAgIHJlc3VsdCBePSAzOworICAgIHJlc3VsdCAqPSAzOworICAgIHJldHVybiB0
cnVlOworfQorZnVuY3Rpb24gdGVzdDMoYSxiLGMpIHsKKyAgICByZXN1bHQgXj0gcmVzdWx0ID4+
IDE7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZhciByZXN1bHQgPSAwOwordmFyIGFycmF5ID0g
W10KK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpCisgICAgYXJyYXlbaV0gPSAxOwor
Citmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHsKKyAgICBhcnJheS5ldmVyeSh0ZXN0MSk7
CisgICAgYXJyYXkuZXZlcnkodGVzdDIpOworICAgIGFycmF5LmV2ZXJ5KHRlc3QzKTsKK30KKwor
aWYgKHJlc3VsdCAhPSAxNDI4ODEwNDk2KQorICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDog
IiArIHJlc3VsdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222685</attachid>
            <date>2014-01-30 10:41:27 -0800</date>
            <delta_ts>2014-01-30 10:50:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140130104126.patch</filename>
            <type>text/plain</type>
            <size>195576</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NjBlMTQzNTgwZTZkYzc1ZmEwNjY2YzlhMWUyZGMxZmMzZWYyY2MyLi4yNzBmZTZjZjRmNDQ2OGM4
NGRlNGViMjI3M2VmM2U4NTM4N2YxODBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
IFRoaXMgcmVzdWx0IG9mIHRoaXMgcmVmYWN0b3JpbmcKKyAgICAgICAgaXMgdGhhdCBDb21tb25J
ZGVudGlmaWVycywgYW5kIGEgZmV3IG90aGVyIG1pc2NlbGxhbmVvdXMgaGVhZGVycyBub3cKKyAg
ICAgICAgbmVlZCB0byBiZSBpbmNsdWRlZCBkaXJlY3RseSBhcyB0aGV5IHdlcmUgZm9ybWVybHkg
Y2FwdHVyZWQgdGhyb3VnaCBvdGhlcgorICAgICAgICBwYXRocy4KKworICAgICAgICBJbiBhZGRp
dGlvbiB0aGlzIGFkZHMgYSBmbGFnIHRvIHRoZSBMb29rdXAgdGFibGUncyBoYXNoZW50cnkgdG8g
aW5kaWNhdGUKKyAgICAgICAgdGhhdCBhIHN0YXRpYyBmdW5jdGlvbiBpcyBhY3R1YWxseSBiYWNr
ZWQgYnkgSlMuIFRoZXJlIGlzIHRoZW4gYSBsb3Qgb2YKKyAgICAgICAgbG9naWMgdG8gdGhyZWFk
IHRoZSBzcGVjaWFsIG5hdHVyZSBvZiB0aGUgZnVuY3RvbiB0byB3aGVyZSBpdCBtYXR0ZXJzLgor
ICAgICAgICBUaGlzIGFsbG93cyB0b1N0cmluZygpLCAuY2FsbGVyLCBldGMgdG8gbWltaWMgdGhl
IGJlaGF2aW91ciBvZiBhIGhvc3QKKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAgICAgTm90ZXMg
b24gd3JpdGluZyBidWlsdGluczoKKyAgICAgICAgIC0gRWFjaCBmdW5jdGlvbiBpcyBjb21waWxl
ZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBvdGhlcnMsIGFuZCB0aG9zZQorICAgICAgICAgICBpbXBs
ZW1lbnRhdGlvbnMgY2Fubm90IGN1cnJlbnRseSBjYXB0dXJlIGFsbCBnbG9iYWwgcHJvcGVydGll
cyAoYXMKKyAgICAgICAgICAgdGhhdCBjb3VsZCBiZSBwb3RlbnRpYWxseSB1bnNhZmUpLiBJZiBh
IGZ1bmN0aW9uIGRvZXMgY2FwdHVyZSBhCisgICAgICAgICAgIGdsb2JhbCB3ZSB3aWxsIGRlbGli
ZXJhdGVseSBjcmFzaC4KKyAgICAgICAgIC0gRm9yIHRob3NlICJnbG9iYWwiIHByb3BlcnRpZXMg
dGhhdCB3ZSBkbyB3YW50IGFjY2VzcyB0bywgd2UgdXNlCisgICAgICAgICAgIHRoZSBAIHByZWZp
eCwgZS5nLiBPYmplY3QodGhpcykgYmVjb21lcyBAT2JqZWN0KHRoaXMpLiBUaGUgQCBpZGVudGlm
aWVycworICAgICAgICAgICBhcmUgcHJpdmF0ZSBuYW1lcywgYW5kIGJlaGF2ZSBqdXN0IGxpa2Ug
cmVndWxhciBwcm9wZXJ0aWVzLCBvbmx5CisgICAgICAgICAgIHdpdGhvdXQgdGhlIHJpc2sgb2Yg
YWR1bHRlcmF0aW9uLiBBZ2FpbiwgaW4gdGhlIEBPYmplY3QgY2FzZSwgd2UKKyAgICAgICAgICAg
ZXhwbGljaXRseSBkdXBsaWNhdGUgdGhlIE9iamVjdENvbnN0cnVjdG9yIHJlZmVyZW5jZSBvbiB0
aGUgR2xvYmFsT2JqZWN0CisgICAgICAgICAgIHNvIHRoYXQgd2UgaGF2ZSBndWFyYW50ZWVkIGFj
Y2VzcyB0byB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgY29uc3RydWN0
b3IuCisgICAgICAgICAtIGNhbGwsIGFwcGx5LCBldmFsLCBhbmQgRnVuY3Rpb24gYXJlIGFsbCBy
ZWplY3RlZCBpZGVudGlmaWVycywgYWdhaW4KKyAgICAgICAgICAgdG8gcHJldmVudCBhbnl0aGlu
ZyBmcm9tIGFjY2lkZW50YWxseSB1c2luZyBhbiBhZHVsdGVyYXRlZCBvYmplY3QuCisgICAgICAg
ICAgIEluc3RlYWQgQGNhbGwgYW5kIEBhcHBseSBhcmUgYXZhaWxhYmxlLCBhbmQgaGFwcGlseSB0
aGV5IGNvbXBsZXRlbHkKKyAgICAgICAgICAgZHJvcCB0aGUgbmVxX3B0ciBpbnN0cnVjdGlvbiBh
cyB0aGV5J3JlIGRlZmluZWQgYXMgYWx3YXlzIGJlaW5nIHRoZQorICAgICAgICAgICBvcmlnaW5h
bCBjYWxsL2FwcGx5IGZ1bmN0aW9ucy4KKworICAgICAgICBUaGVzZSByZXN0cmljdGlvbnMgYXJl
IGp1c3QgaW50ZW5kZWQgdG8gbWFrZSBpdCBoYXJkZXIgdG8gYWNjaWRlbnRhbGx5CisgICAgICAg
IG1ha2UgY2hhbmdlcyB0aGF0IGFyZSBpbmNvcnJlY3QgKGZvciBpbnN0YW5jZSBjYWxsaW5nIHdo
YXRldmVyIGhhcyBiZWVuCisgICAgICAgIGFzc2lnbmVkIHRvIGdsb2JhbC5PYmplY3QsIGluc3Rl
YWQgb2YgdGhlIG9yaWdpbmFsIGNvbnN0cnVjdG9yIGZ1bmN0aW9uKS4KKyAgICAgICAgSG93ZXZl
ciwgbWFraW5nIGEgbWlzdGFrZSBsaWtlIHRoaXMgc2hvdWxkIHJlc3VsdCBpbiBhIHB1cmVseSBz
ZW1hbnRpYworICAgICAgICBlcnJvciBhcyBmdW5kYW1lbnRhbGx5IHRoZXNlIGZ1bmN0aW9ucyBh
cmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlCisgICAgICAgIHJlZ3VsYXIgSlMgY29kZSBp
biB0aGUgaG9zdCBnbG9iYWwsIGFuZCBoYXZlIG5vIG1vcmUgcHJpdmlsZWdlcyB0aGFuCisgICAg
ICAgIGFueSBvdGhlciBKUy4KKworICAgICAgICBUaGUgaW5pdGlhbCBwcm9vZiBvZiBjb25jZXB0
IGlzIEFycmF5LnByb3RvdHlwZS5ldmVyeSwgdGhpcyBzaG93cyBhIDY1JQorICAgICAgICBwZXJm
b3JtYW5jZSBpbXByb3ZlbWVudCwgYW5kIHRoYXQgaW1wcm92ZW1lbnQgaXMgc2lnbmlmaWNhbnRs
eSBodXJ0IGJ5CisgICAgICAgIG91ciBwb29yIG9wdGltaXNhdGlvbiBvZiBvcF9pbi4KKworICAg
ICAgICBBcyB0aGlzIGlzIHN1Y2ggYSBsaW1pdGVkIGZ1bmN0aW9uLCB3ZSBoYXZlIG5vdCB5ZXQg
ZXhwb3J0ZWQgYWxsIHN5bWJvbHMKKyAgICAgICAgdGhhdCB3ZSBjb3VsZCBwb3NzaWJseSBuZWVk
LCBidXQgYXMgd2UgaW1wbGVtZW50IG1vcmUsIHRoZSBsaWtlbGlob29kCisgICAgICAgIG9mIGVu
Y291bnRlcmluZyBtaXNzaW5nIGZlYXR1cmVzIHdpbGwgcmVkdWNlLgorCisgICAgICAgIFRoaXMg
ZGlkIHJlcXVpcmUgYnJlYWtpbmcgb3V0IGEgSlNTdHJpbmdJbmxpbmVzIGhlYWRlciwgYW5kIHJl
cXVpcmVkCisgICAgICAgIGZpeGluZyBhIGZldyBvYmplY3RzIHRoYXQgd2VyZSB0cnlpbmcgdG8g
dXNpbmcgUHJvcGVydHlOYW1lOjpwdWJsaWNOYW1lCisgICAgICAgIHJhdGhlciB0aGFuIFByb3Bl
cnR5TmFtZTo6dWlkLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0
eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dCk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRpY1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWNGdW5jdGlvbkdl
dHRlcik6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tH
ZXR0ZXIpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBidWlsdGlucy9BcnJheS5wcm90b3R5cGUuanM6CisgICAgICAgIChldmVyeSk6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkJ1aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKToKKyAgICAgICAgKEpTQzo6
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSk6CisgICAgICAgICog
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVj
dXRhYmxlczo6Y3JlYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tG
b3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6dG9TdHJpY3RuZXNzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNCdWlsdGluRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBjcmVhdGVfaGFz
aF90YWJsZToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZ2Vu
ZXJhdGUtanMtYnVpbHRpbnM6IEFkZGVkLgorICAgICAgICAoZ2V0Q29weXJpZ2h0KToKKyAgICAg
ICAgKGdldEZ1bmN0aW9ucyk6CisgICAgICAgIChnZW5lcmF0ZUNvZGUpOgorICAgICAgICAobWFu
Z2xlTmFtZSk6CisgICAgICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSWRlbnRp
Zmllcik6CisgICAgICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChTb3VyY2VDb2RlKToK
KyAgICAgICAgKFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKFZNKToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvUHJvdG9DYWxsRnJhbWUuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUp
OgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpM
ZXhlcik6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpM
ZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFy
Pjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAg
ICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcik6CisgICAgICAgICog
cGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OnNldENsb3NlZFZh
cmlhYmxlcyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
Tm9kZTo6Y2FwdHVyZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OnNldENs
b3NlZFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmluaXNoUGFy
c2luZyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRU
b2tlblRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OmdldFVzZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNsb3NlZFZhcmlh
Ymxlcyk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9k
ZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAgICAgICogcnVudGlt
ZS9BcmdMaXN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAg
ICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJh
dG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpn
ZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpD
b21tb25JZGVudGlmaWVycyk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQ
cml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQdWJsaWNO
YW1lKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzRXhjZXB0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxl
OjpleGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpleGVj
dXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aXNCdWlsdGlu
RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1l
L0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFi
bGVHZXQpOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0KToKKyAg
ICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgICogcnVudGltZS9K
U0NlbGxJbmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6c291cmNlQ29kZSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzSG9zdE9y
QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6aXNCdWlsdGluRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIpOgorICAgICAg
ICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9w
ZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgICogcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6Om9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpnZXRDbGFzc1Byb3BlcnR5TmFtZXMpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZ0lubGlu
ZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjppbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9i
amVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgICAgRG9uJ3QgcmVw
b3J0IHByaXZhdGUgbmFtZXMuCisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6c3ltYm9s
VGFibGVQdXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChKU0M6OnNldFVwU3RhdGlj
RnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlND
OjpIYXNoRW50cnk6OmJ1aWx0aW5HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpIYXNoRW50cnk6
OnByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpwcm9wZXJ0eVB1dHRl
cik6CisgICAgICAgIChKU0M6Okhhc2hUYWJsZTo6ZW50cnkpOgorICAgICAgICAoSlNDOjpnZXRT
dGF0aWNQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpnZXRTdGF0aWNWYWx1ZVNsb3QpOgor
ICAgICAgICAoSlNDOjpwdXRFbnRyeSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6YnVp
bHRpbkV4ZWN1dGFibGVzKToKKwogMjAxNC0wMS0yOSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3Nz
eUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikgbGVmdG92ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTEzZjE4OGFlNjUyYjk1ZjNiNTcyYWMxNzcwZWEx
MjViYmFlNzVkMi4uNjMyYWNjNDNkYzE2YzcxMzRkNThjMDRiN2E1Y2U1NmE5MTk4ZWNjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE0LTAxLTI5ICBPbGl2ZXIgSHVudCAgPG9saXZl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBpbXBsZW1lbnQgSlMg
YnVpbHRpbnMgaW4gSlMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNzg4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVwZGF0aW5nIGZvciB0aGUgbmV3bHkgcmVxdWlyZWQgaGVhZGVycy4KKworICAgICAg
ICBUZXN0OiBqcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sCisKKyAgICAgICAg
KiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oOiBBZGRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcDoKKwogMjAxNC0wMS0zMCAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViUGFnZTo6ZGV0ZXJtaW5lUHJpbWFyeVNu
YXBzaG90dGVkUGx1Z0luIGlzIHNsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggNWJlMDUzZjFlMDg2YjQzZTY4
NmMzNjc0ZGFlN2M1MTYwNWEyODZlNy4uMGVjZWQ1MWYzZTJkNWI2MjFkYWRmMDU3NDlmNWU3NDY2
YTA2ZjUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBib29sIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZQogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKICAg
ICBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHByb3BlcnR5TmFtZVJlZjsKICAgICAKLSAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpT
Q2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xh
c3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgLy8gb3B0aW9uYWwgb3B0
aW1pemF0aW9uIHRvIGJ5cGFzcyBnZXRQcm9wZXJ0eSBpbiBjYXNlcyB3aGVuIHdlIG9ubHkgbmVl
ZCB0byBrbm93IGlmIHRoZSBwcm9wZXJ0eSBleGlzdHMKICAgICAgICAgICAgIGlmIChKU09iamVj
dEhhc1Byb3BlcnR5Q2FsbGJhY2sgaGFzUHJvcGVydHkgPSBqc0NsYXNzLT5oYXNQcm9wZXJ0eSkg
ewpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiAgICAgUmVmUHRy
PE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgSlNWYWx1ZVJlZiB2YWx1ZVJl
ZiA9IHRvUmVmKGV4ZWMsIHZhbHVlKTsKICAgICAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9
IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJl
bnRDbGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBz
ZXRQcm9wZXJ0eSA9IGpzQ2xhc3MtPnNldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFwcm9wZXJ0eU5hbWVSZWYpCkBAIC0zNDMsNyArMzQzLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm8KICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CiAgICAg
UmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0Ns
YXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNz
ID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdERlbGV0
ZVByb3BlcnR5Q2FsbGJhY2sgZGVsZXRlUHJvcGVydHkgPSBqc0NsYXNzLT5kZWxldGVQcm9wZXJ0
eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lUmVmKQpAQCAtNTY0LDcgKzU2
NCw3IEBAIEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiB7CiAgICAgSlNPYmplY3RSZWYgdGhpc1Jl
ZiA9IHRvUmVmKHRoaXMpOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gY2xhc3NS
ZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAg
ICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXMgPSBq
c0NsYXNzLT5zdGF0aWNWYWx1ZXMoZXhlYykpIHsKICAgICAgICAgICAgICAgICBpZiAoU3RhdGlj
VmFsdWVFbnRyeSogZW50cnkgPSBzdGF0aWNWYWx1ZXMtPmdldChuYW1lKSkgewpAQCAtNjAwLDcg
KzYwMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGlj
RnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFCiAgICAgaWYgKFBhcmVudDo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdDIpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QyLmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFt
ZSkpOwogCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsK
ICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqLT5jbGFzc1JlZigpOyBq
c0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlm
IChPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGUqIHN0YXRpY0Z1bmN0aW9ucyA9IGpz
Q2xhc3MtPnN0YXRpY0Z1bmN0aW9ucyhleGVjKSkgewogICAgICAgICAgICAgICAgIGlmIChTdGF0
aWNGdW5jdGlvbkVudHJ5KiBlbnRyeSA9IHN0YXRpY0Z1bmN0aW9ucy0+Z2V0KG5hbWUpKSB7CkBA
IC02MjYsNyArNjI2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpjYWxsYmFja0dldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWQKICAgICBKU09iamVjdFJl
ZiB0aGlzUmVmID0gdG9SZWYodGhpc09iaik7CiAgICAgUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBw
cm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2Jq
LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsK
ICAgICAgICAgICAgIGlmIChKU09iamVjdEdldFByb3BlcnR5Q2FsbGJhY2sgZ2V0UHJvcGVydHkg
PSBqc0NsYXNzLT5nZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlO
YW1lUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDI3YmM0YzE3ZjNk
ZmVlYjYxZDI1MjMyM2ZkODc4YzQ0NzgwZjc0YzUuLjQxMzRhNmMxZTNlZjMyYmU4NWE2MjQ1ZDdl
YjVlMDU1MmZlNTEzZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUy
LDYgKzUyLDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9TY3Jp
cHRPYmplY3QuY3BwCiAgICAgYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCiAKKyAgICBidWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCisKICAgICBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Q
cm9maWxlLmNwcAogICAgIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9C
eXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC04MTUsMTYgKzgxNywyNyBAQCBhZGRfY3VzdG9tX2Nv
bW1hbmQoCiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3Jl
X0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0vQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTLmpzb24gLS1vdXRwdXRf
aF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0cHV0X2Nw
cF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0cHV0X2pz
X2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIgLS1vdXRwdXRfdHlw
ZSBKYXZhU2NyaXB0IC0td3JpdGVfYWx3YXlzICYmIG1rZGlyIC1wICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yICYmIGNwICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTRnJvbnRlbmREaXNwYXRj
aGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNU
eXBlQnVpbGRlcnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3Bl
Y3RvcgogICAgIFZFUkJBVElNKQogCisjIEpTQ0J1aWx0aW5zCitmaWxlKEdMT0IgSlNDQnVpbHRp
bnNfanNfZmlsZXMgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9idWlsdGlucy8qLmpzIikK
K2FkZF9jdXN0b21fY29tbWFuZCgKKyAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19KQVZBU0NS
SVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBU
Q09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKKyAgIE1BSU5fREVQRU5ERU5DWSAke0NNQUtFX0NVUlJF
TlRfU09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMKKyAgIERFUEVORFMgJHtKU0NCdWls
dGluc19qc19maWxlc30KKyAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9D
VVJSRU5UX1NPVVJDRV9ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zICR7SlNDQnVpbHRpbnNfanNf
ZmlsZXN9ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMu
aCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcAor
ICAgVkVSQkFUSU0pCisKIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTQmFja2VuZERp
c3BhdGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0v
SW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwCisgICAgJHtE
RVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5jcHAKICkKIAog
bGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUwogICAgICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaAogICAg
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNGcm9udGVu
ZERpc3BhdGNoZXJzLmgKICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9
L0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgKKyAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NS
SVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKICkKIAogYWRkX2N1c3RvbV9jb21tYW5kKApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAxMTU2ZTk3ZmQ4ODYy
NTU3YzljZjhkM2I2OGJmNGQwM2MzZThiYThmLi45N2NjZTkzY2MwZTJhMmU3ZjM4ZDJmY2EwN2Nl
MjJhOGY5NjVkMTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQpAQCAtNTcsNiArNTcsNyBAQCBhbGwgOiBcCiAgICAgUmVnRXhwT2JqZWN0Lmx1dC5oIFwKICAg
ICBTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgdWRpczg2X2l0YWIuaCBcCisgICAgSlND
QnVpbHRpbnMgXAogIwogCiAjIGxvb2t1cCB0YWJsZXMgZm9yIGNsYXNzZXMKQEAgLTc5LDYgKzgw
LDE0IEBAIEtleXdvcmRMb29rdXAuaDogS2V5d29yZExvb2t1cEdlbmVyYXRvci5weSBLZXl3b3Jk
cy50YWJsZQogdWRpczg2X2l0YWIuaDogJChKYXZhU2NyaXB0Q29yZSkvZGlzYXNzZW1ibGVyL3Vk
aXM4Ni9pdGFiLnB5ICQoSmF2YVNjcmlwdENvcmUpL2Rpc2Fzc2VtYmxlci91ZGlzODYvb3B0YWJs
ZS54bWwKIAkoUFlUSE9OUEFUSD0kKEphdmFTY3JpcHRDb3JlKS9kaXNhc3NlbWJsZXIvdWRpczg2
IHB5dGhvbiAkKEphdmFTY3JpcHRDb3JlKS9kaXNhc3NlbWJsZXIvdWRpczg2L2l0YWIucHkgJChK
YXZhU2NyaXB0Q29yZSkvZGlzYXNzZW1ibGVyL3VkaXM4Ni9vcHRhYmxlLnhtbCB8fCBleGl0IDEp
CiAKKyMgYnVpbHRpbiBmdW5jdGlvbnMKKy5QSE9OWTogSlNDQnVpbHRpbnMKKworSlNDQnVpbHRp
bnM6ICQoSmF2YVNjcmlwdENvcmUpL0pTQ0J1aWx0aW5zLmggJChKYXZhU2NyaXB0Q29yZSkvSlND
QnVpbHRpbnMuY3BwCitKU0NCdWlsdGlucy5oOiAkKEphdmFTY3JpcHRDb3JlKS9nZW5lcmF0ZS1q
cy1idWlsdGlucyAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy8qLmpzCisJcHl0aG9uICReICRA
CisKK0pTQ0J1aWx0aW5zLmNwcDogJChKYXZhU2NyaXB0Q29yZSkvSlNDQnVpbHRpbnMuaAogCiAj
IEluc3BlY3RvciBpbnRlcmZhY2VzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KaW5kZXggY2RiNTQyNmIwNmI1MmE5ODI1NmVlOTA1OGJiYThmMTFlZWE2OWVlMC4u
YWZlOTY3MmI1YjFlZTkyNzExYmVkZDQ3NWU5YTEyODIwM2M4MTM2NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTEwMiw2ICsxMDIsOCBAQCBqYXZhc2Ny
aXB0Y29yZV9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mv
U2NyaXB0T2JqZWN0LmggXAogICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3Jp
cHRWYWx1ZS5jcHAgXAogICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRW
YWx1ZS5oIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcCBcCisgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5F
eGVjdXRhYmxlcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eUFsbG9jYXRpb25Qcm9maWxlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
cnJheVByb2ZpbGUuY3BwIFwKQEAgLTEyNDEsNyArMTI0Myw5IEBAIGphdmFzY3JpcHRjb3JlX3Nv
dXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpTRnJv
bnRlbmREaXNwYXRjaGVycy5jcHAgXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0lu
c3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAgXAotCURlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgKKwlEZXJpdmVkU291cmNlcy9K
YXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oIFwKKwlEZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5jcHAgXAorCURlcml2ZWRTb3VyY2VzL0phdmFT
Y3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmgKIAogbGxpbnRfbm9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagppbmRleCA1ZWRlZmRiZTg1NWY5NmE2MjY4
ZDg1NzNiZWMxZDBjM2Q4NThhYTVjLi5hMTJkYjE4MzQ4NmRmYmJjYTgzZjNhNzhlOWNmOTg2MzFi
MjY1M2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTMwOSw2
ICszMDksNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0RnVu
Y3Rpb25DYWxsLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNj
cmlwdE9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xT
Y3JpcHRWYWx1ZS5jcHAiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxidWlsdGluc1xC
dWlsdGluRXhlY3V0YWJsZXMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0
ZWNvZGVcQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxieXRlY29kZVxBcnJheVByb2ZpbGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cYnl0ZWNvZGVcQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCIgLz4KQEAgLTcyMSw2ICs3
MjIsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEluc3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0
Y2hlcnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVp
bGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXEluc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NCdWlsdGlucy5jcHAiIC8+CiAgIDwv
SXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXEFycmF5Q29uc3RydWN0b3IubHV0LmgiIC8+CkBAIC03NTAsNiAr
NzUyLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xSZWdFeHBPYmplY3QubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcUmVnRXhwUHJvdG90eXBlLmx1dC5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFN0cmluZ0NvbnN0cnVjdG9yLmx1
dC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEpTQ0J1aWx0aW5zLmgiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEFQSUNhbGxiYWNrRnVuY3Rpb24uaCIgLz4KQEAgLTc5
OCw2ICs4MDEsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0
RnVuY3Rpb25DYWxsLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xT
Y3JpcHRPYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNj
cmlwdFZhbHVlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWls
dGluRXhlY3V0YWJsZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2Rl
XEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGJ5dGVjb2RlXEFycmF5UHJvZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
Ynl0ZWNvZGVcQnlWYWxJbmZvLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggODdlMTJhNDcxNThiYjYyMjRkNDlmZDYyMjk3OGM0
YTljNDQzNWE2NS4uODY5YzFmNTg5YmNiNjg2ZWI5Y2YyMGMwOTZiZTFiODNhNTUxZTI0YyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAt
Nyw2ICs3LDkgQEAKICAgICA8RmlsdGVyIEluY2x1ZGU9ImJpbmRpbmdzIj4KICAgICAgIDxVbmlx
dWVJZGVudGlmaWVyPnswYmFjZTEyMy00NTgyLWVlYmMtOTMxNC03ODE5YjM3NmMxOTh9PC9Vbmlx
dWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iYnVpbHRp
bnMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezNiOWQ3MmE1LTEzNWItNDNiMy1hNTI0LWM2
ZDJiOWQyOWQzNX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CiAgICAgPEZpbHRl
ciBJbmNsdWRlPSJieXRlY29kZSI+CiAgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NzY2MDg4YTAt
MTIxNi00ODU0LWFhNDMtNTYwYzVlMjgzNjY4fTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8L0Zp
bHRlcj4KQEAgLTEwOCw2ICsxMTEsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYXNz
ZW1ibGVyXE1hY3JvQXNzZW1ibGVyLmNwcCI+CiAgICAgICA8RmlsdGVyPmFzc2VtYmxlcjwvRmls
dGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnVpbHRp
bnNcQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCI+CisgICAgICA8RmlsdGVyPmJ1aWx0aW5zPC9GaWx0
ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29k
ZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCI+CiAgICAgICA8RmlsdGVyPmJ5dGVjb2RlPC9G
aWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0xMzI5LDYgKzEzMzUsOSBAQAogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTVHlwZUJ1
aWxkZXJzLmNwcCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgogICAg
IDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVp
bGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXEpTQ0J1aWx0aW5zLmNwcCI+CisgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwv
RmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxBUElDYWxsYmFja0Z1bmN0aW9uLmgiPgpA
QCAtMTQ1NCw2ICsxNDYzLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFzc2VtYmxl
clxYODZBc3NlbWJsZXIuaCI+CiAgICAgICA8RmlsdGVyPmFzc2VtYmxlcjwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnVpbHRpbnNcQnVpbHRp
bkV4ZWN1dGFibGVzLmgiPgorICAgICAgPEZpbHRlcj5idWlsdGluczwvRmlsdGVyPgorICAgIDwv
Q2xDb21waWxlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZS5oIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KQEAgLTI1NTAsNiArMjU2Miw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcQXJyYXlQcm90b3R5cGUubHV0LmgiPgogICAgICAg
PEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3Jt
QXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NCdWlsdGlucy5o
Ij4KKyAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1
ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFZNLmgiPgogICAgICAgPEZp
bHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDI3ZTg3Njc0MGE5NjRiMDI4OTg0ZWQ2NzgxNjE4MjBhNWRjZjc3YzQu
LjkxMTU3M2FiMTdkMzM5NzRhYTdjOWEwMTFkYjIwMGIwOWFmNzhiZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC05MjIsNyArOTIyLDYgQEAKIAkJQTUwM0ZBMTkxODhFMEZCMDAw
MTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTMxODhFMEZBRjAwMTEwRjE0IC8qIEphdmFT
Y3JpcHRDYWxsRnJhbWUuY3BwICovOyB9OwogCQlBNTAzRkExQTE4OEUwRkIwMDAxMTBGMTQgLyog
SmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTUwM0ZBMTQxODhFMEZBRjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJh
bWUuaCAqLzsgfTsKIAkJQTUwM0ZBMUIxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENh
bGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNTAzRkExNTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAq
LzsgfTsKLQkJQTUwM0ZBMUMxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFt
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZB
MTYxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQlB
NTAzRkExRDE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNG
QTE3MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3Bw
ICovOyB9OwogCQlBNTAzRkExRTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZy
YW1lUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTAzRkExODE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJv
dG90eXBlLmggKi87IH07CiAJCUE1MDNGQTIxMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRCcmVh
a3BvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NTAzRkExRjE4OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0QnJlYWtwb2ludC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDI0LDYgKzEwMjMsNyBA
QAogCQlBNzBCMDgzMjE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MEIwODMwMTdBMEI3
OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guY3BwICovOyB9OwogCQlBNzBCMDgzMzE3QTBC
NzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzBCMDgzMTE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmlu
YXJ5U3dpdGNoLmggKi87IH07CiAJCUE3MTIzNkU1MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNv
ZGVzMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTcxMjM2RTQxMTk1RjMzQzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgKi87IH07
CisJCUE3MURBODBGMTg4MERCQUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MURBODBFMTg4MERCQUIw
MEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzIwMjhCNjE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVz
dFJ1bm5lclV0aWxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3MjAyOEI0MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3Bw
ICovOyB9OwogCQlBNzIwMjhCODE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIwMjhC
NTE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcyMDI4QkExNzk3NjAzRDAwOTgw
MjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNzIwMjhCOTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklu
bGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMTE1MCw2ICsxMTUwLDEwIEBACiAJCUE3Q0EzQUU4MTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dl
YWtNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
Q0EzQUUyMTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuaCAqLzsgfTsKIAkJQTdDQTNBRUIx
N0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0EzQUU5MTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFr
TWFwRGF0YS5jcHAgKi87IH07CiAJCUE3Q0EzQUVDMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFw
RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdD
QTNBRUExN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmggKi87IH07CisJCUE3RDgwMUE0
MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTExODgwRDY2RTAwMjZDMzlC
IC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi87IH07CisJCUE3RDgwMUE1MTg4MEQ2NkUwMDI2
QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhl
Y3V0YWJsZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlBN0Q4MDFBODE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTYxODgwRDZBODAw
MjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCAqLzsgfTsKKwkJQTdEODAxQTkxODgwRDZBODAwMjZD
MzlCIC8qIEpTQ0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBN0Q4MDFBNzE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBN0Q4OUNGMjE3
QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4OUNFMzE3QTBCOENDMDA3NzNBRDggLyogREZH
QmFzaWNCbG9jay5jcHAgKi87IH07CiAJCUE3RDg5Q0YzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdC
bG9ja0luc2VydGlvblNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBN0Q4OUNFNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25T
ZXQuY3BwICovOyB9OwogCQlBN0Q4OUNGNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNl
cnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3RDg5Q0U1MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNDYyLDYgKzI0
NjYsOCBAQAogCQlBNzEyMzZFNDExOTVGMzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVE9wY29kZXMzMl82NC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MThGNjFBMTE3NTRBMjEwMDI0NjVB
NyAvKiBSZWdFeHBKaXRUYWJsZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVnRXhwSml0VGFibGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MThGODIx
MTE3OEVCNEIwMDI0NjVBNyAvKiBjcmVhdGVfcmVnZXhfdGFibGVzICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IGZpbGVF
bmNvZGluZyA9IDQ7IHBhdGggPSBjcmVhdGVfcmVnZXhfdGFibGVzOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBNzFEQTgwRDE4ODBENzFGMDBEMUYyOTkgLyogZ2VuZXJhdGUtanMtYnVp
bHRpbnMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSAiZ2VuZXJhdGUtanMt
YnVpbHRpbnMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzFEQTgwRTE4ODBEQkFC
MDBEMUYyOTkgLyogSlNTdHJpbmdJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTU3RyaW5nSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NzIwMjhCNDE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI1MTc5NzYwMUUwMDk4MDI4QyAvKiBK
U0NUZXN0UnVubmVyVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlND
VGVzdFJ1bm5lclV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI5
MTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0Z1bmN0aW9uSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjU5MCw2ICsyNTk2LDExIEBACiAJCUE3Q0EzQUUyMTdEQTQxQUUwMDY1MzhB
RiAvKiBKU1dlYWtNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWFr
TWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Q0EzQUU5MTdEQTUxNjgwMDY1
MzhBRiAvKiBXZWFrTWFwRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWFrTWFwRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Q0Ez
QUVBMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWFrTWFwRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBN0Q4MDFBMDE4ODBENjZFMDAyNkMzOUIgLyogQXJyYXkucHJvdG90eXBlLmpzICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gQXJyYXkucHJvdG90eXBlLmpzOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFBMTE4ODBENjZFMDAyNkMzOUIgLyogQnVp
bHRpbkV4ZWN1dGFibGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3
RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVpbHRpbkV4ZWN1dGFibGVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlu
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NCdWlsdGlucy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUE3MTg4MEQ2QTgwMDI2QzM5
QiAvKiBKU0NCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NC
dWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0Q4OUNFMzE3QTBCOEND
MDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBERkdCYXNpY0Jsb2NrLmNwcDsgcGF0aCA9IGRmZy9ERkdCYXNpY0Jsb2NrLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdEODlDRTQxN0EwQjhDQzAwNzczQUQ4
IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcDsgcGF0aCA9IGRmZy9ERkdCbG9ja0lu
c2VydGlvblNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RDg5Q0U1MTdB
MEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBERkdCbG9ja0luc2VydGlvblNldC5oOyBwYXRoID0gZGZnL0RGR0Js
b2NrSW5zZXJ0aW9uU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTI2LDYg
KzI5MzcsNyBAQAogCQkJCTg2MDRGNEYyMTQzQTZDNDQwMEIyOTVGNSAvKiBDaGFuZ2VMb2cgKi8s
CiAJCQkJRjY5MkE4NTQwMjU1NTk3RDAxRkY2MEY3IC8qIGNyZWF0ZV9oYXNoX3RhYmxlICovLAog
CQkJCUE3MThGODIxMTE3OEVCNEIwMDI0NjVBNyAvKiBjcmVhdGVfcmVnZXhfdGFibGVzICovLAor
CQkJCUE3MURBODBEMTg4MEQ3MUYwMEQxRjI5OSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAqLywK
IAkJCQk0NUUxMkQ4ODA2QTQ5QjBGMDBFOURGODQgLyoganNjLmNwcCAqLywKIAkJCQlGNjhFQkI4
QzAyNTVENEM2MDFGRjYwRjcgLyogY29uZmlnLmggKi8sCiAJCQkJRjVDMjkwRTYwMjg0Rjk4RTAx
ODYzNUNBIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggKi8sCkBAIC0yOTM0LDYgKzI5NDYsNyBA
QAogCQkJCTE0MzJFQkQ3MEEzNENBRDQwMDcxN0I5RiAvKiBBUEkgKi8sCiAJCQkJOTY4OENCMTIw
RUQxMkI0RTAwMUQ2NDlGIC8qIGFzc2VtYmxlciAqLywKIAkJCQlBNTRDRjJFQTE4NEVBNzM5MDAy
MzdGMTkgLyogYmluZGluZ3MgKi8sCisJCQkJQTdEODAxOUYxODgwRDY2RTAwMjZDMzlCIC8qIGJ1
aWx0aW5zICovLAogCQkJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLywK
IAkJCQk3RTM5RDgxRDBFQzM4RUZBMDAzQUYxMUEgLyogYnl0ZWNvbXBpbGVyICovLAogCQkJCTFD
OTA1MTNFMEJBOUU4ODMwMDgxRTlEMCAvKiBDb25maWd1cmF0aW9ucyAqLywKQEAgLTM1MDksNiAr
MzUyMiw4IEBACiAJCTY1MEZERjhEMDlEMEZDQTcwMDc2OUU1NCAvKiBEZXJpdmVkIFNvdXJjZXMg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUE3RDgwMUE2
MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgKi8sCisJCQkJQTdEODAxQTcxODgw
RDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggKi8sCiAJCQkJQkMxOEM1MjMwRTE2RkM4QTAw
QjM0NDYwIC8qIEFycmF5UHJvdG90eXBlLmx1dC5oICovLAogCQkJCUJDRDIwM0U3MEUxNzE4RjQw
MDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmx1dC5oICovLAogCQkJCUE1MTNFNUM2MTg1Rjk0MzYw
MDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICovLApAQCAtMzgxMSw2ICszODI2LDcg
QEAKIAkJCQlBNzkwREQ2QTE4MkY0OTk3MDA1ODg4MDcgLyogSlNTZXRJdGVyYXRvci5oICovLAog
CQkJCUJDMDJFOUI2MEUxODQyRkEwMDBGOTI5NyAvKiBKU1N0cmluZy5jcHAgKi8sCiAJCQkJRjY5
MkE4NjIwMjU1NTk3RDAxRkY2MEY3IC8qIEpTU3RyaW5nLmggKi8sCisJCQkJQTcxREE4MEUxODgw
REJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oICovLAogCQkJCTg2RTg1NTM4MTExQjk5
NjgwMDFBRjUxRSAvKiBKU1N0cmluZ0J1aWxkZXIuaCAqLywKIAkJCQkyNjAwQjVBNDE1MkJBQUE3
MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuY3BwICovLAogCQkJCTI2MDBCNUE1MTUyQkFBQTcw
MDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5oICovLApAQCAtNDU2MSw2ICs0NTc3LDE2IEBACiAJ
CQlwYXRoID0gcmVtb3RlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQTdE
ODAxOUYxODgwRDY2RTAwMjZDMzlCIC8qIGJ1aWx0aW5zICovID0geworCQkJaXNhID0gUEJYR3Jv
dXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlBN0Q4MDFBMDE4ODBENjZFMDAyNkMzOUIgLyogQXJy
YXkucHJvdG90eXBlLmpzICovLAorCQkJCUE3RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWls
dGluRXhlY3V0YWJsZXMuY3BwICovLAorCQkJCUE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBC
dWlsdGluRXhlY3V0YWJsZXMuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gYnVpbHRpbnM7CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8K
IAogLyogQmVnaW4gUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtNDYwNiwxMSAr
NDYzMiwxMSBAQAogCQkJCTg2QUREMTQ1MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVDRUVFMTUxODdGM0JBRDAwRTU1Qzk5IC8qIEluc3Bl
Y3RvckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUMwMjg1RDE3MTc5NjY4MDAzNTFFMzUg
LyogQVJNdjdET3Bjb2RlLmggaW4gSGVhZGVycyAqLywKLSAJCQkJMkE2ODI5NUIxODc1RjgwNTAw
QjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovLAotICAgICAgICAgICAg
ICAgIDJBNEVDOTBDMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTJBNjgyOTVCMTg3NUY4MDUwMEI2QzNFMiAvKiBDb3B5V3JpdGVCYXJy
aWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkyQTRFQzkwQzE4NjBENkMyMDA5NEY3ODIgLyogV3Jp
dGVCYXJyaWVyQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTU5MzJBODE4M0M1QTI2MDBB
MUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTMyNDM5MzE4NTY5
NzA5MDAyRUQ2OTIgLyogQ29kZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3MucHkgaW4gSGVhZGVy
cyAqLywKLSAJCQkJQTUzMjQzOTIxODU2OTcwOTAwMkVENjkyIC8qIENvZGVHZW5lcmF0b3JJbnNw
ZWN0b3IucHkgaW4gSGVhZGVycyAqLywKKwkJCQlBNTMyNDM5MjE4NTY5NzA5MDAyRUQ2OTIgLyog
Q29kZUdlbmVyYXRvckluc3BlY3Rvci5weSBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTRGMTdF
RTI3NDkwMEFCQjIxNyAvKiBUZW1wUmVnaXN0ZXJTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1
MEU0QjY0MTg4MDlERDUwMDY4QTQ2RCAvKiBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkVCNThDMTUxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxp
bmdTY29wZS5oIGluIEhlYWRlcnMgKi8sCkBAIC00NjIyLDcgKzQ2NDgsNyBAQAogCQkJCTBGODMz
NUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNTg0MEUyOTE4N0NBNUU2MDA4NDNCMTAgLyogaW5saW5lLWFuZC1taW5pZnkt
c3R5bGVzaGVldHMtYW5kLXNjcmlwdHMucHkgaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUyQjE4
N0NBNzVCMDA4NDNCMTAgLyoganNtaW4ucHkgaW4gSGVhZGVycyAqLywKLSAJCQkJQTUzMjQzOTgx
ODU2QTQ4OTAwMkVENjkyIC8qIEluc3BlY3RvckpTLmpzb24gaW4gSGVhZGVycyAqLywKKwkJCQlB
NTMyNDM5ODE4NTZBNDg5MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlMuanNvbiBpbiBIZWFkZXJzICov
LAogCQkJCUE1ODQwRTJBMTg3Q0E3NTkwMDg0M0IxMCAvKiB4eGQucGwgaW4gSGVhZGVycyAqLywK
IAkJCQlGRUEwODYyMDE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTdBOEFGMzUxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmggaW4gSGVh
ZGVycyAqLywKQEAgLTQ3MzMsNyArNDc1OSw3IEBACiAJCQkJQTFBMDA5QzAxODMxQTIyRDAwQ0Y4
NzExIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUM5REM1
MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY0ODUzMjgxODdERkRFQzAwODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5LmggaW4g
SGVhZGVycyAqLywKLSAgICAgICAgICAgICAgICBBNTkzQ0Y4NzE4NDAzOENBMDBCRkNFMjcgLyog
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU5M0NGODcxODQw
MzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMjU2QzM2MTYyN0IwQUQwMDdGMjc4MyAvKiBERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93
UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5NEIxNEMzQ0QyRjAwN0Mz
REIxIC8qIERGR0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NTgxNEVG
OTBBMjAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTQ4NzIsNiAr
NDg5OCw3IEBACiAJCQkJMEZFQTBBMUQxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVh
cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMUYxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1OTQ1NTkzMTgyNDc0
NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCUE3RDgwMUE5MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZFQTBBMEExNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY0ODUzMkExODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292ZXJ5
T3Bjb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEEyMzE3MDk2MDY5MDBCQjcyMkMgLyog
RlRMQ29tbW9uVmFsdWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTQ5NDYsNiArNDk3Myw3IEBACiAJ
CQkJQkMxOEM0MEYwRTE2RjVDRDAwQjM0NDYwIC8qIElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUMyNUY4QkNFMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk5MTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ0hl
YWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdEODAxQTUxODgwRDY2RTAwMjZDMzlCIC8qIEJ1
aWx0aW5FeGVjdXRhYmxlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOUExNUVEOEU0NjAw
RjE2N0IyIC8qIEluZGV4aW5nSGVhZGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZC
N0YzOUIxNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZDRUZBQjAxODA1Q0E2RDAwNDcyQ0U0IC8qIEluaXRpYWxpemVMTFZNLmggaW4gSGVhZGVy
cyAqLywKQEAgLTUyMTgsNiArNTI0Niw3IEBACiAJCQkJQTUzMjQzODgxODU2ODMzNTAwMkVENjky
IC8qIEluc3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzE4QzQ1NjBFMTZGNUNEMDBCMzQ0NjAgLyogUHJvdGVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTQ3NEMzM0IxNkFBMkQ5NTAwNjJGMDFEIC8qIFByb3RvdHlwZU1hcC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTcxREE4MEYxODgwREJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQxNENBN0REOTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXREaXJl
Y3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDMDA4Q0U3MTg3NjMxQjYwMDk1NUMy
NCAvKiBNaWNyb3Rhc2suaCBpbiBIZWFkZXJzICovLApAQCAtNTgzNiw2ICs1ODY1LDcgQEAKIAkJ
CQlBN0Q4OUNGMjE3QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNzBCMDgzMjE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDg5Q0YzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9j
a0luc2VydGlvblNldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBN0Q4MDFBNDE4ODBENjZFMDAy
NkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUM5
REM0MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkQ4MkUyMTE0MTcyQ0UzMDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0aWVzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRkZDOTU3MTRFRjkwQTAwMEM3MjUzMiAvKiBERkdDRkFQaGFz
ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU4NTIsNiArNTg4Miw3IEBACiAJCQkJMEZGRkM5NTkx
NEVGOTBBNjAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MkZDNzcyMTZFMTJGNzEwMDM4RDk3NiAvKiBERkdEQ0VQaGFzZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjhGMkI5OTE3MkYwNEZGMDA3REJEQTUgLyogREZHRGVzaXJlZElkZW50aWZpZXJzLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUE3RDgwMUE4MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWls
dGlucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzNFMTMzMDE3OTYyNENEMDBFNERFQTggLyog
REZHRGVzaXJlZFN0cnVjdHVyZUNoYWlucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkMwRjdD
RDE3QkJGQzVCMDA0NjRGRTQgLyogREZHRGVzaXJlZFRyYW5zaXRpb25zLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGRTg1MzRCMTcyM0NEQTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2lu
dHMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01OTc2LDcgKzYwMDcsNyBAQAogCQkJCTBGNkIxQ0M1
MTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExVbndpbmRJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGOUQzMzlBMTgwM0FEQjcwMDczQzJCQyAvKiBGVExTdGFja01hcHMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEZFQTBBMTYxNzA2QkI5MDAwQkI3MjJDIC8qIEZUTFN0YXRlLmNwcCBpbiBTb3Vy
Y2VzICovLAotIAkJCQk3QzAwOENEMjE4NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9taXNlRnVuY3Rp
b25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDMDA4Q0QyMTg2RjhBOTMwMDk1NUMyNCAvKiBK
U1Byb21pc2VGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2QjFDQjUxODVGQzlF
OTAwODQ1RDk3IC8qIEZUTEpTQ2FsbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJFMTE3
MTc4RTFDMDA2OTBDN0YgLyogRlRMVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1OTND
RjdDMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TGlua0J1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZm
ZXIuY3BwCmluZGV4IGFmMTRlMzNlYWMwNTk3ZjJkNzhjNGIzY2QxNjM1NDExZGFiYTk2NWUuLjY3
OTIzZjA4MjNjMmZiYWIzMTEyOGFkYjUxOWRjODllYTAyYjY1MGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAog
CiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgorI2luY2x1ZGUg
IkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgIlZN
LmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBpbGF0aW9uVGhyZWFkLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZWI0
MmY1Y2M0MzNmMTYzNjM0M2JmYzk4MmFhMmFhZmIzMzZlOTQ5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcwpAQCAtMCww
ICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
ZnVuY3Rpb24gZXZlcnkoY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pIHsKKyAgICAidXNlIHN0cmlj
dCI7CisgICAgaWYgKHRoaXMgPT09IG51bGwpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9y
KCJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwi
KTsKKyAgICAKKyAgICBpZiAodGhpcyA9PT0gdW5kZWZpbmVkKQorICAgICAgICB0aHJvdyBuZXcg
QFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5v
dCBiZSB1bmRlZmluZWQiKTsKKyAgICAKKyAgICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMpOwor
ICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGggPj4+IDA7CisgICAgCisgICAgaWYgKHR5cGVv
ZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3Io
IkFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKKwor
ICAgIHZhciB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1
bmRlZmluZWQ7CisgICAgCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewor
ICAgICAgICBpZiAoIShpIGluIGFycmF5KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICBpZiAoIWNhbGxiYWNrLkBjYWxsKHRoaXNBcmcsIGFycmF5W2ldLCBpLCBhcnJheSkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHJldHVybiB0cnVlOworfQor
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0
YWJsZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0MWRiYjVmOTIyNWUyOGExMmVkM2QxNzk4ZmYxNzY4ZTQz
NjcxYTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QnVpbHRpbkV4ZWN1dGFibGVzLmNwcApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisj
aW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgi
CisjaW5jbHVkZSAiUGFyc2VyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitCdWlsdGluRXhlY3V0
YWJsZXM6OkJ1aWx0aW5FeGVjdXRhYmxlcyhWTSYgdm0pCisgICAgOiBtX3ZtKHZtKQorI2RlZmlu
ZSBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBs
ZW5ndGgpICwgbV8jI25hbWUjI1NvdXJjZShtYWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZy
b21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgpLCBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJh
bCgiPGJ1aWx0aW4+IikpKQorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4oSU5JVElBTElaRV9CVUlM
VElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX1NUUklOR1MKK3sKK30K
KworVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRl
QnVpbHRpbkV4ZWN1dGFibGUoY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBJZGVudGlm
aWVyJiBuYW1lKQoreworICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xp
bmU7CisgICAgUGFyc2VyRXJyb3IgZXJyb3I7CisgICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBwcm9n
cmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KCZtX3ZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIoKSwg
SlNQYXJzZUJ1aWx0aW4sIEpTUGFyc2VQcm9ncmFtQ29kZSwgZXJyb3IsICZwb3NpdGlvbkJlZm9y
ZUxhc3ROZXdsaW5lKTsKKworICAgIGlmICghcHJvZ3JhbSkgeworICAgICAgICBkYXRhTG9nKCJG
YXRhbCBlcnJvciBjb21waWxpbmcgYnVpbHRpbiBmdW5jdGlvbiAnIiwgbmFtZS5zdHJpbmcoKSwg
Iic6ICIsIGVycm9yLm1fbWVzc2FnZSk7CisgICAgICAgIENSQVNIKCk7CisgICAgfQorCisgICAg
U3RhdGVtZW50Tm9kZSogZXhwclN0YXRlbWVudCA9IHByb2dyYW0tPnNpbmdsZVN0YXRlbWVudCgp
OworICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQpOworICAgIFJFTEVBU0VfQVNTRVJU
KGV4cHJTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKKyAgICBFeHByZXNzaW9uTm9kZSog
ZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVtZW50Tm9kZSo+KGV4cHJTdGF0ZW1lbnQp
LT5leHByKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHIpOworICAgIFJFTEVBU0VfQVNT
RVJUKGZ1bmNFeHByLT5pc0Z1bmNFeHByTm9kZSgpKTsKKyAgICBGdW5jdGlvbkJvZHlOb2RlKiBi
b2R5ID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZnVuY0V4cHIpLT5ib2R5KCk7CisgICAg
UkVMRUFTRV9BU1NFUlQoIXByb2dyYW0tPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpOworICAgIAor
ICAgIGJvZHktPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOworICAg
IFJFTEVBU0VfQVNTRVJUKGJvZHkpOworICAgIFJFTEVBU0VfQVNTRVJUKGJvZHktPmlkZW50KCku
aXNOdWxsKCkpOworICAgIAorICAgIC8vIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBhbiBpbnB1dCBz
dHJpbmcgdGhhdCB3b3VsZCByZXN1bHQgaW4gYSBzaW5nbGUgYW5vbnltb3VzIGZ1bmN0aW9uIGV4
cHJlc3Npb24uCisgICAgYm9keS0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBj
bG9zZWRWYXJpYWJsZSA6IHByb2dyYW0tPmNsb3NlZFZhcmlhYmxlcygpKSB7CisgICAgICAgIGlm
IChjbG9zZWRWYXJpYWJsZSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cy5pbXBsKCkp
CisgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgaWYgKGNsb3NlZFZhcmlhYmxl
ID09IG1fdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZC5pbXBsKCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2xvc2VkVmFyaWFibGUtPmlz
RW1wdHlVbmlxdWUoKSk7CisgICAgfQorICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBm
dW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZt
X3ZtLCBzb3VyY2UsIGJvZHksIHRydWUsIFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uKTsKKyAgICBm
dW5jdGlvbkV4ZWN1dGFibGUtPm1fbmFtZVZhbHVlLnNldChtX3ZtLCBmdW5jdGlvbkV4ZWN1dGFi
bGUsIGpzU3RyaW5nKCZtX3ZtLCBuYW1lLnN0cmluZygpKSk7CisgICAgcmV0dXJuIGZ1bmN0aW9u
RXhlY3V0YWJsZTsKK30KKworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1l
LCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1
aWx0aW5FeGVjdXRhYmxlczo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK3tcCisgICAgaWYgKCFtXyMj
bmFtZSMjRXhlY3V0YWJsZSlcCisgICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gY3JlYXRl
QnVpbHRpbkV4ZWN1dGFibGUobV8jI25hbWUjI1NvdXJjZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5m
dW5jdGlvbk5hbWUpO1wKKyAgICByZXR1cm4gbV8jI25hbWUjI0V4ZWN1dGFibGUuZ2V0KCk7XAor
fQorSlNDX0ZPUkVBQ0hfQlVJTFRJTihERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRl
ZiBFWFBPU0VfQlVJTFRJTl9TT1VSQ0VTCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOWExOWUyNjE1
MDc5NGE2NjllYzk4ZTM5OWJmNjdmN2Y3MTA2NDE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCkBAIC0wLDAgKzEs
NjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEJ1aWx0aW5FeGVjdXRhYmxlc19oCisjZGVmaW5lIEJ1aWx0aW5FeGVjdXRhYmxlc19oCisK
KyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgorI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKKyNpbmNs
dWRlICJXZWFrLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgSWRlbnRpZmll
cjsKK2NsYXNzIFZNOworCitjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXMgeworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzT3duUHRyPEJ1aWx0aW5FeGVjdXRhYmxlcz4gY3JlYXRlKFZNJiB2bSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQnVpbHRpbkV4ZWN1dGFibGVzKHZtKSk7
CisgICAgfQorICAgIAorI2RlZmluZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBm
dW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5hbWUj
I0V4ZWN1dGFibGUoKTsgXAorY29uc3QgU291cmNlQ29kZSYgbmFtZSMjU291cmNlKCkgeyByZXR1
cm4gbV8jI25hbWUjI1NvdXJjZTsgfQorICAgIAorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4oRVhQ
T1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgRVhQT1NFX0JVSUxUSU5fU09VUkNFUwor
ICAgIAorcHJpdmF0ZToKKyAgICBCdWlsdGluRXhlY3V0YWJsZXMoVk0mKTsKKyAgICBWTSYgbV92
bTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1dGFi
bGUoY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImKTsKKyNkZWZpbmUgREVDTEFS
RV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKVwKKyAg
ICBTb3VyY2VDb2RlIG1fIyNuYW1lIyNTb3VyY2U7IFwKKyAgICBXZWFrPFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlPiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKKyAgICBKU0NfRk9SRUFDSF9CVUlM
VElOKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JVSUxU
SU5fU09VUkNFX01FTUJFUlMKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCmluZGV4IDRjMDU1ZmVhNTczOGYxYzQ2
MzI2NmQ0ZTlhOTE1NDhhMTI5MzQ3MDkuLmVhZWZlNTRmMmQxNTI4NGI2NGJmNjk5NzI2NThjZDFj
NjNiNGVhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eVByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVBy
b2ZpbGUuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQXJyYXlQcm9maWxlLmgiCiAK
ICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgog
I2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFz
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCmluZGV4IGQ3
NDg5ZDMxYWJkN2M5OWYxYmM2ZmFmYWU2NTgxMTEyYWJkYWNmZGIuLjFhM2I1ZjRjNzgwN2I5NDg4
ZmYzNjU3MmY3OTRkMGJiOWYzOGQyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAj
aW5jbHVkZSAiQnl0ZWNvZGVCYXNpY0Jsb2NrLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIK
KyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFy
Z2V0cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKaW5kZXggOTI2
MzM0YzQ0NGM5YzJmM2RmY2M5NTAxMmNkMGE0YTAzMTA0ZDJkOS4uYWQ0YWUyMjk1ZWFjNDhhYTQw
YWZiZWUzZWI2OTI4OTZmY2NhYmQyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKQEAgLTMwLDYg
KzMwLDcgQEAKICNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgogI2luY2x1ZGUgIkNvZGVCbG9j
ay5oIgogI2luY2x1ZGUgIkZ1bGxCeXRlY29kZUxpdmVuZXNzLmgiCisjaW5jbHVkZSAiSlNGdW5j
dGlvbklubGluZXMuaCIKICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKIAogbmFtZXNw
YWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bExpbmtJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0lu
Zm8uY3BwCmluZGV4IDZhNjAwNTc2YTAwMGFkYWM4YWYyMTRlOTg4MTM2NDYxOWYyOWEwMTAuLjRi
ZjgxODg2NjAyOGM3OTZhNzJlNTc4MzMyZTQ2Nzc1NTZiMjM3YTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpbmNsdWRlICJERkdPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiREZHVGh1bmtzLmgiCisj
aW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJSZXBhdGNoQnVmZmVyLmgi
CiAKICNpZiBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAppbmRleCAyNjNlYzdjYWRmNGY3OWNhODEwMjQ0MWU2MmJmMmEwNWI1ZGRjM2Yy
Li43NTE1MDY1NDIzNzZkN2VkYzU5OWFhMDBmOWIxMjY4NWNkYTM1MmNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNDMsMTEgKzQzLDEzIEBA
CiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJKU0Fj
dGl2YXRpb24uaCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2Nv
cGUuaCIKICNpbmNsdWRlICJMTEludEVudHJ5cG9pbnQuaCIKICNpbmNsdWRlICJMb3dMZXZlbElu
dGVycHJldGVyLmgiCisjaW5jbHVkZSAiTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIgorI2luY2x1
ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1
ZGUgIlBvbHltb3JwaGljUHV0QnlJZExpc3QuaCIKICNpbmNsdWRlICJSZWR1Y2VXaGl0ZXNwYWNl
LmgiCkBAIC0xNTY5LDcgKzE1NzEsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVj
dXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbgogCiAgICAg
c2V0Q29uc3RhbnRSZWdpc3RlcnModW5saW5rZWRDb2RlQmxvY2stPmNvbnN0YW50UmVnaXN0ZXJz
KCkpOwogICAgIGlmICh1bmxpbmtlZENvZGVCbG9jay0+dXNlc0dsb2JhbE9iamVjdCgpKQotICAg
ICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW3VubGlua2VkQ29kZUJsb2NrLT5nbG9iYWxPYmplY3RS
ZWdpc3RlcigpLm9mZnNldCgpXS5zZXQoKm1fdm0sIG93bmVyRXhlY3V0YWJsZSwgbV9nbG9iYWxP
YmplY3QuZ2V0KCkpOworICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW3VubGlua2VkQ29kZUJs
b2NrLT5nbG9iYWxPYmplY3RSZWdpc3RlcigpLnRvQ29uc3RhbnRJbmRleCgpXS5zZXQoKm1fdm0s
IG93bmVyRXhlY3V0YWJsZSwgbV9nbG9iYWxPYmplY3QuZ2V0KCkpOwogICAgIG1fZnVuY3Rpb25E
ZWNscy5yZXNpemVUb0ZpdCh1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xz
KCkpOwogICAgIGZvciAoc2l6ZV90IGNvdW50ID0gdW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9m
RnVuY3Rpb25EZWNscygpLCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSA9IHVubGlua2VkQ29kZUJs
b2NrLT5mdW5jdGlvbkRlY2woaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgKaW5kZXggNjhiYzAzNzlmNTc0NGM5YThmNzQzMWRiNjRmOGFiNTRlNmUxMDUzZi4u
NDk5NWM1MmNmOGIyYjFiNGQ2MjgwNDUzZWVkMjdjNzc0YTQ5NTU4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtNTYsNyArNTYsNiBAQAogI2luY2x1
ZGUgIkhhbmRsZXJJbmZvLmgiCiAjaW5jbHVkZSAiT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaCIK
ICNpbmNsdWRlICJPcHRpb25zLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUg
IlB1dFByb3BlcnR5U2xvdC5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAi
SklUQ29kZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcAppbmRleCBiZTUwYzk3
NzhiZjMzZTMzOWFjODM0YmY1NmUzYjFlNzU1ODZmZTNlLi5iNzY0NmVkMWVmMTY0MTg5ZmNmYzdi
NTM2NTZmYjY1YmVkMDY0ZDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcApA
QCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZH
Q29tbW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKIAogbmFtZXNwYWNlIEpT
QyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3Jp
Z2luLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmNwcApp
bmRleCA2OGRjNmIwNTMzNTU5MGVjNGM4MWM0MjM0NmJiNzRkYmJkOGZhYzU2Li4xNTc4ODA4OTM0
ZGQzY2M0Y2Q5N2QyNzFhZThhYzhiZmUzOTc0NmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAi
Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJs
ZS5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9u
cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuY3BwCmluZGV4IDk4NmUwM2QwY2JhNzE4NWIzOWNlZTAyM2Y0YWI2YmM5Yjhj
Y2I2ZTQuLjZmMmQ1ZWJhMWNhNDVkZGViMWRmNjVmZDA1MTIzM2U1ZjEzOGJlMGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRp
c29uaW5nV2F0Y2hwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgogI2lu
Y2x1ZGUgIkRGR0V4aXRQcm9maWxlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
IAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDFkZmI1YWM2YWQ5MDkzZjhmODExMDFl
ZjdmMmU2MTIzMTFhYzE5MzkuLjQzMzkwZDk2NWZjNTAzNDAxNmY3YmZmZjIzZTY4YmIxZTA1NDU1
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcApAQCAtNDksOSArNDksOSBAQCBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRQ
cm9ncmFtQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2siLAog
Y29uc3QgQ2xhc3NJbmZvIFVubGlua2VkRXZhbENvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5r
ZWRFdmFsQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJM
RShVbmxpbmtlZEV2YWxDb2RlQmxvY2spIH07CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayIsICZC
YXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jaykgfTsKIAotc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRl
RnVuY3Rpb25Db2RlQmxvY2soVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
IGtpbmQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1v
ZGUsIFBhcnNlckVycm9yJiBlcnJvcikKK3N0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KiBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKFZNJiB2bSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUg
cHJvZmlsZXJNb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBmdW5jdGlvbktpbmQsIFBhcnNlckVy
cm9yJiBlcnJvcikKIHsKLSAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSA9IHBhcnNl
PEZ1bmN0aW9uQm9keU5vZGU+KCZ2bSwgc291cmNlLCBleGVjdXRhYmxlLT5wYXJhbWV0ZXJzKCks
IGV4ZWN1dGFibGUtPm5hbWUoKSwgZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpT
UGFyc2VTdHJpY3QgOiBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlRnVuY3Rpb25Db2RlLCBlcnJvcik7
CisgICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGJvZHkgPSBwYXJzZTxGdW5jdGlvbkJvZHlO
b2RlPigmdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+cGFyYW1ldGVycygpLCBleGVjdXRhYmxlLT5u
YW1lKCksIGV4ZWN1dGFibGUtPnRvU3RyaWN0bmVzcygpLCBKU1BhcnNlRnVuY3Rpb25Db2RlLCBl
cnJvcik7CiAKICAgICBpZiAoIWJvZHkpIHsKICAgICAgICAgQVNTRVJUKGVycm9yLm1fdHlwZSAh
PSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZtLCBV
bmxpbmtlZEZ1bmMKICAgICBib2R5LT5maW5pc2hQYXJzaW5nKGV4ZWN1dGFibGUtPnBhcmFtZXRl
cnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT5mdW5jdGlvbk5hbWVJc0luU2Nv
cGVUb2dnbGUoKSk7CiAgICAgZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2UoYm9keS0+ZmVhdHVyZXMo
KSwgYm9keS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCi0gICAgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRl
KCZ2bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5mbyhib2R5LT5uZWVkc0FjdGl2YXRpb24o
KSwgYm9keS0+dXNlc0V2YWwoKSwgYm9keS0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZv
ckNvbnN0cnVjdCkpOworICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmdm0sIEZ1bmN0aW9uQ29kZSwgRXhlY3V0
YWJsZUluZm8oYm9keS0+bmVlZHNBY3RpdmF0aW9uKCksIGJvZHktPnVzZXNFdmFsKCksIGJvZHkt
PmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2luZCA9
PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbikpOwogICAgIE93blB0cjxCeXRlY29kZUdlbmVyYXRv
cj4gZ2VuZXJhdG9yKGFkb3B0UHRyKG5ldyBCeXRlY29kZUdlbmVyYXRvcih2bSwgYm9keS5nZXQo
KSwgcmVzdWx0LCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSkpKTsKICAgICBlcnJvciA9IGdl
bmVyYXRvci0+Z2VuZXJhdGUoKTsKICAgICBib2R5LT5kZXN0cm95RGF0YSgpOwpAQCAtODIsMTMg
KzgyLDE0IEBAIHVuc2lnbmVkIFVubGlua2VkQ29kZUJsb2NrOjphZGRPckZpbmRDb25zdGFudChK
U1ZhbHVlIHYpCiAgICAgcmV0dXJuIGFkZENvbnN0YW50KHYpOwogfQogCi1VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlOb2Rl
KiBub2RlLCBib29sIGlzRnJvbUdsb2JhbENvZGUpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlLCBib29s
IGlzRnJvbUdsb2JhbENvZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQpCiAgICAgOiBCYXNl
KCp2bSwgc3RydWN0dXJlKQogICAgICwgbV9udW1DYXB0dXJlZFZhcmlhYmxlcyhub2RlLT5jYXB0
dXJlZFZhcmlhYmxlQ291bnQoKSkKICAgICAsIG1fZm9yY2VVc2VzQXJndW1lbnRzKG5vZGUtPnVz
ZXNBcmd1bWVudHMoKSkKICAgICAsIG1faXNJblN0cmljdENvbnRleHQobm9kZS0+aXNTdHJpY3RN
b2RlKCkpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKG5vZGUtPmhhc0NhcHR1cmVkVmFy
aWFibGVzKCkpCiAgICAgLCBtX2lzRnJvbUdsb2JhbENvZGUoaXNGcm9tR2xvYmFsQ29kZSkKKyAg
ICAsIG1faXNCdWlsdGluRnVuY3Rpb24oa2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbikK
ICAgICAsIG1fbmFtZShub2RlLT5pZGVudCgpKQogICAgICwgbV9pbmZlcnJlZE5hbWUobm9kZS0+
aW5mZXJyZWROYW1lKCkpCiAgICAgLCBtX3BhcmFtZXRlcnMobm9kZS0+cGFyYW1ldGVycygpKQpA
QCAtMTY2LDcgKzE2Nyw3IEBAIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tGb3IoVk0mIHZtLCBjb25zCiAgICAgICAgIGJyZWFr
OwogICAgIH0KIAotICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IGdlbmVy
YXRlRnVuY3Rpb25Db2RlQmxvY2sodm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lhbGl6YXRpb25LaW5k
LCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IpOworICAgIFVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2sqIHJlc3VsdCA9IGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2sodm0sIHRoaXMs
IHNvdXJjZSwgc3BlY2lhbGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwg
aXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWRO
b3JtYWxGdW5jdGlvbiwgZXJyb3IpOwogICAgIAogICAgIGlmIChlcnJvci5tX3R5cGUgIT0gUGFy
c2VyRXJyb3I6OkVycm9yTm9uZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMTAsNiArMjExLDcg
QEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1faXNTdHJpY3RNb2RlKGluZm8ubV9p
c1N0cmljdE1vZGUpCiAgICAgLCBtX2lzQ29uc3RydWN0b3IoaW5mby5tX2lzQ29uc3RydWN0b3Ip
CiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5G
dW5jdGlvbihpbmZvLm1faXNCdWlsdGluRnVuY3Rpb24pCiAgICAgLCBtX2ZpcnN0TGluZSgwKQog
ICAgICwgbV9saW5lQ291bnQoMCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRl
eCBiOWRhZTJkNWM2OWM3OWNlYWFhODAyM2QyYTNhMWYyNmQ0NjA5NDNiLi5hYmY2Y2YzNWI5MzA2
YTRmN2EzMDFhYjBkZjc2NjZlYzYxMmUzNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtNjYsMjYgKzY2LDM1IEBAIHR5
cGVkZWYgdW5zaWduZWQgVW5saW5rZWRPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTsKIHR5cGVkZWYg
dW5zaWduZWQgVW5saW5rZWRMTEludENhbGxMaW5rSW5mbzsKIAogc3RydWN0IEV4ZWN1dGFibGVJ
bmZvIHsKLSAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2Vz
RXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvcikKKyAgICBFeGVjdXRh
YmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmlj
dE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbikKICAgICAg
ICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2YXRpb24pCiAgICAgICAgICwgbV91c2Vz
RXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0cmljdE1vZGUpCiAg
ICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3RydWN0b3IpCisgICAgICAgICwgbV9pc0J1
aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikKICAgICB7CiAgICAgfQotICAgIGJvb2wg
bV9uZWVkc0FjdGl2YXRpb247Ci0gICAgYm9vbCBtX3VzZXNFdmFsOwotICAgIGJvb2wgbV9pc1N0
cmljdE1vZGU7Ci0gICAgYm9vbCBtX2lzQ29uc3RydWN0b3I7CisgICAgYm9vbCBtX25lZWRzQWN0
aXZhdGlvbiA6IDE7CisgICAgYm9vbCBtX3VzZXNFdmFsIDogMTsKKyAgICBib29sIG1faXNTdHJp
Y3RNb2RlIDogMTsKKyAgICBib29sIG1faXNDb25zdHJ1Y3RvciA6IDE7CisgICAgYm9vbCBtX2lz
QnVpbHRpbkZ1bmN0aW9uIDogMTsKK307CisKK2VudW0gVW5saW5rZWRGdW5jdGlvbktpbmQgewor
ICAgIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sCisgICAgVW5saW5rZWRCdWlsdGluRnVuY3Rpb24s
CiB9OwogCiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBKU0NlbGwg
ewogcHVibGljOgorICAgIGZyaWVuZCBjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXM7CiAgICAgZnJp
ZW5kIGNsYXNzIENvZGVDYWNoZTsKKyAgICBmcmllbmQgY2xhc3MgVk07CiAgICAgdHlwZWRlZiBK
U0NlbGwgQmFzZTsKLSAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0
ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSogbm9k
ZSwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlID0gZmFsc2UpCisgICAgc3RhdGljIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSwgVW5saW5rZWRG
dW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQpCiAgICAgewotICAgICAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhlYXApKSBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdl
dCgpLCBzb3VyY2UsIG5vZGUsIGlzRnJvbUdsb2JhbENvZGUpOworICAgICAgICBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhlYXApKSBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgp
LCBzb3VyY2UsIG5vZGUsIGlzRnJvbUdsb2JhbENvZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kKTsK
ICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2bSk7CiAgICAgICAgIHJldHVybiBp
bnN0YW5jZTsKICAgICB9CkBAIC05OSw2ICsxMDgsMTQgQEAgcHVibGljOgogICAgIH0KICAgICBz
aXplX3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdDsKICAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0
KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQorICAgIEpTUGFyc2VyU3Ry
aWN0bmVzcyB0b1N0cmljdG5lc3MoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1faXNCdWls
dGluRnVuY3Rpb24pCisgICAgICAgICAgICByZXR1cm4gSlNQYXJzZUJ1aWx0aW47CisgICAgICAg
IGlmIChtX2lzSW5TdHJpY3RDb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuIEpTUGFyc2VTdHJp
Y3Q7CisgICAgICAgIHJldHVybiBKU1BhcnNlTm9ybWFsOworICAgIH0KICAgICBGdW5jdGlvbk5h
bWVJc0luU2NvcGVUb2dnbGUgZnVuY3Rpb25OYW1lSXNJblNjb3BlVG9nZ2xlKCkgY29uc3QgeyBy
ZXR1cm4gbV9mdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGU7IH0KIAogICAgIHVuc2lnbmVkIGZp
cnN0TGluZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RMaW5lT2Zmc2V0OyB9CkBAIC0x
NDIsOCArMTU5LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJbW1vcnRh
bFN0cnVjdHVyZSA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAor
ICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1
bmN0aW9uOyB9CisKIHByaXZhdGU6Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0q
LCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGJvb2wg
aXNGcm9tR2xvYmFsQ29kZSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBT
dHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGJvb2wgaXNG
cm9tR2xvYmFsQ29kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQpOwogICAgIFdyaXRlQmFycmllcjxV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX2NvZGVCbG9ja0ZvckNhbGw7CiAgICAgV3JpdGVC
YXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fY29kZUJsb2NrRm9yQ29uc3RydWN0
OwogCkBAIC0xNTIsNiArMTcxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNJblN0cmljdENv
bnRleHQgOiAxOwogICAgIGJvb2wgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgYm9v
bCBtX2lzRnJvbUdsb2JhbENvZGUgOiAxOworICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlvbiA6
IDE7CiAKICAgICBJZGVudGlmaWVyIG1fbmFtZTsKICAgICBJZGVudGlmaWVyIG1faW5mZXJyZWRO
YW1lOwpAQCAtMzE5LDYgKzMzOSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzTnVtZXJpY0Nv
bXBhcmVGdW5jdGlvbihib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbikgeyBtX2lzTnVtZXJp
Y0NvbXBhcmVGdW5jdGlvbiA9IGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQogICAgIGJvb2wg
aXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc051bWVyaWNDb21w
YXJlRnVuY3Rpb247IH0KIAorICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisgICAgCiAgICAgdm9pZCBzaHJpbmtUb0ZpdCgp
CiAgICAgewogICAgICAgICBtX2p1bXBUYXJnZXRzLnNocmlua1RvRml0KCk7CkBAIC01MDAsNiAr
NTIyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNTdHJpY3RNb2RlIDogMTsKICAgICBib29s
IG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAgYm9vbCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIDog
MTsKKyAgICBib29sIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1fZmly
c3RMaW5lOwogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50OwogICAgIHVuc2lnbmVkIG1fZW5kQ29s
dW1uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2ODEwYWI4MDAyY2U2YmI4ZDc4ZTdmZjIyMjdmNGM2
ZWE3Yjc1OGMyLi5lYzUyMWI1MzA0NjM5MjNlNzRjMDEwZmEyMThlNTllZDJhOWEzY2FlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcApAQCAtMTc1LDYgKzE3NSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRl
Y29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQ
CiAjZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAgICAgLCBtX2V4cHJlc3Np
b25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihmYWxzZSkKIHsKICAg
ICBpZiAobV9zaG91bGRFbWl0RGVidWdIb29rcykKICAgICAgICAgbV9jb2RlQmxvY2stPnNldE5l
ZWRzRnVsbFNjb3BlQ2hhaW4odHJ1ZSk7CkBAIC0yMjIsNyArMjIzLDEzIEBAIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0
aW9uQm9keSwgVW5sCiAjZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAgICAg
LCBtX2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihj
b2RlQmxvY2stPmlzQnVpbHRpbkZ1bmN0aW9uKCkpCiB7CisgICAgaWYgKG1faXNCdWlsdGluRnVu
Y3Rpb24pIHsKKyAgICAgICAgbV9zaG91bGRFbWl0UHJvZmlsZUhvb2tzID0gZmFsc2U7CisgICAg
ICAgIG1fc2hvdWxkRW1pdERlYnVnSG9va3MgPSBmYWxzZTsKKyAgICB9CisKICAgICBpZiAobV9z
aG91bGRFbWl0RGVidWdIb29rcykKICAgICAgICAgbV9jb2RlQmxvY2stPnNldE5lZWRzRnVsbFNj
b3BlQ2hhaW4odHJ1ZSk7CiAKQEAgLTQzOCw2ICs0NDUsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZh
bENvZAogI2VuZGlmCiAgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQogICAgICwgbV9leHBy
ZXNzaW9uVG9vRGVlcChmYWxzZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oZmFsc2UpCiB7
CiAgICAgbV9jb2RlQmxvY2stPnNldE5lZWRzRnVsbFNjb3BlQ2hhaW4odHJ1ZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaAppbmRleCA0ZTlmMjEzYzliZmE2Y2YxOTRiMWExNGZlOTE5ZTgzMzM3YWUzNWQ5Li4xNTg0
Mjc0Yjc4ZWE2YzBiZDBlZmIwYjk4MjVjODE4YmUwZGJjMDY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC00
NjEsNyArNDYxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgc2hvdWxkRW1pdERl
YnVnSG9va3MoKSB7IHJldHVybiBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzOyB9CiAgICAgICAgIAog
ICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5p
c1N0cmljdE1vZGUoKTsgfQotCisgICAgICAgIAorICAgICAgICBib29sIGlzQnVpbHRpbkZ1bmN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQorICAgICAgICAKICAg
ICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTGFiZWw7CiAgICAgICAgIApAQCAtNTQz
LDcgKzU0NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIG1ha2VGdW5jdGlvbihGdW5jdGlvbkJvZHlOb2RlKiBib2R5KQog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIGJvZHkpOworICAgICAgICAgICAg
cmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5v
ZGUtPnNvdXJjZSgpLCBib2R5LCBmYWxzZSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2Vk
QnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbik7CiAgICAgICAgIH0KIAog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0SW5pdExhenlSZWdpc3RlcihSZWdpc3RlcklEKik7CkBA
IC02NzcsNiArNjc5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBtX3VzZXNF
eGNlcHRpb25zOwogICAgICAgICBib29sIG1fZXhwcmVzc2lvblRvb0RlZXA7CisgICAgICAgIGJv
b2wgbV9pc0J1aWx0aW5GdW5jdGlvbjsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMWZmZDRmMzEx
ODgyZDBlZTVjNTUxNGY1YjhiMjU5MzlkOTc1ZTM3OS4uNjJlY2EzNmExMGQ3NzA4YTkyOGQ0M2Fj
MDNmMmZjODYxNWNlY2E3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjYsMTAgKzI2LDEwIEBACiAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgotI2luY2x1ZGUgIk5vZGVDb25zdHJ1Y3Rv
cnMuaCIKIAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ2FsbEZy
YW1lLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJEZWJ1Z2dl
ci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTM4LDYg
KzM4LDcgQEAKICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiTGFiZWxTY29wZS5o
IgogI2luY2x1ZGUgIkxleGVyLmgiCisjaW5jbHVkZSAiTm9kZUNvbnN0cnVjdG9ycy5oIgogI2lu
Y2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRlICJQcm9w
ZXJ0eU5hbWVBcnJheS5oIgpAQCAtNTM1LDM2ICs1MzYsMzkgQEAgUmVnaXN0ZXJJRCogQ2FsbEZ1
bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLAogICAgIFJlZlB0cjxMYWJlbD4gZW5kID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9iYXNlKTsKICAg
ICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJl
eHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0
aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBtX2lkZW50KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5h
dGlvbihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmNhbGwpOwog
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3Rp
bmF0aW9uKGRzdCwgZnVuY3Rpb24uZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90
RnVuY3Rpb25DYWxsKGZ1bmN0aW9uLmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7CisgICAgYm9vbCBl
bWl0Q2FsbENoZWNrID0gIWdlbmVyYXRvci5pc0J1aWx0aW5GdW5jdGlvbigpOworICAgIGlmIChl
bWl0Q2FsbENoZWNrKQorICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQ2Fs
bChmdW5jdGlvbi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkpOworCiAgICAgewogICAgICAgICBpZiAo
bV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKSB7CiAgICAg
ICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2RlOwog
ICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25l
eHQ7Ci0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxG
dW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRz
dCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRz
KGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxs
QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwogICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCks
IE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkp
OwotCiAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBvbGRMaXN0OwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdl
bmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0
KCkpOwogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwg
bV9hcmdzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRo
aXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVu
Y3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKICAgICAgICAgfQog
ICAgIH0KLSAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKLSAgICB7Ci0g
ICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0g
ICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBi
YXNlLmdldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgp
LCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZv
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIGlmIChlbWl0Q2FsbENoZWNrKSB7
CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOworICAgICAgICBnZW5lcmF0
b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKKyAgICAgICAgeworICAgICAgICAgICAgQ2Fs
bEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdl
dCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwg
ZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3Qo
KSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgfQorICAgICAgICBnZW5lcmF0
b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFiZWwo
ZW5kLmdldCgpKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWUuZ2V0KCk7CiB9CiAKQEAgLTU4NSw2
NSArNTg5LDY3IEBAIFJlZ2lzdGVySUQqIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgUmVmUHRyPExhYmVsPiBl
bmQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9
IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lv
bkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Npb25TdGFydCgpLCBzdWJleHBy
ZXNzaW9uRW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbiA9IGdlbmVyYXRv
ci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCks
IG1faWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbjsKICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3Qs
IGZ1bmN0aW9uLmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQXBw
bHkoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKLSAgICB7Ci0gICAgICAgIGlmICht
YXlCZUNhbGwpIHsKLSAgICAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdz
LT5tX2xpc3ROb2RlLT5tX2V4cHIpIHsKLSAgICAgICAgICAgICAgICBBcmd1bWVudExpc3ROb2Rl
KiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2RlOwotICAgICAgICAgICAgICAgIGlmIChtX2Fy
Z3MtPm1fbGlzdE5vZGUtPm1fbmV4dCkgewotICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9h
cmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwci0+aXNTaW1wbGVBcnJheSgpKTsKLSAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9uZXh0
KTsKLSAgICAgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gc3RhdGljX2Nhc3Q8
QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwciktPnRvQXJndW1l
bnRMaXN0KGdlbmVyYXRvci52bSgpLCAwLCAwKTsKLSAgICAgICAgICAgICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3Iu
dGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBD
YWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIo
KSwgb2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRD
YWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5j
dGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsK
LSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBtX2FyZ3MtPm1f
bGlzdE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKLSAgICAgICAgICAgICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShn
ZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAgICAg
ICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwot
ICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlz
UmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhw
ZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZv
dEVuZCgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xp
c3ROb2RlID0gb2xkTGlzdDsKKyAgICBib29sIGVtaXRDYWxsQ2hlY2sgPSAhZ2VuZXJhdG9yLmlz
QnVpbHRpbkZ1bmN0aW9uKCk7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKKyAgICAgICAgZnVu
Y3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihk
c3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmFwcGx5KTsKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KGZ1bmN0aW9uLmdldCgpLCBy
ZWFsQ2FsbC5nZXQoKSk7CisgICAgfQorICAgIGlmIChtYXlCZUNhbGwpIHsKKyAgICAgICAgaWYg
KG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcikgeworICAg
ICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogb2xkTGlzdCA9IG1fYXJncy0+bV9saXN0Tm9kZTsK
KyAgICAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCkgeworICAgICAgICAg
ICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByLT5pc1NpbXBs
ZUFycmF5KCkpOworICAgICAgICAgICAgICAgIEFTU0VSVCghbV9hcmdzLT5tX2xpc3ROb2RlLT5t
X25leHQtPm1fbmV4dCk7CisgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gc3Rh
dGljX2Nhc3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwcikt
PnRvQXJndW1lbnRMaXN0KGdlbmVyYXRvci52bSgpLCAwLCAwKTsKKyAgICAgICAgICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVy
YXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CisgICAgICAgICAgICAgICAg
Q2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwg
b2xkTGlzdC0+bV9leHByKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0
dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBj
YWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBtX2Fy
Z3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGlu
YXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBj
YWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAgICAgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7
CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1Jl
Z2lzdGVyKCksIG9sZExpc3QtPm1fZXhwcik7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRG
dW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9sZExp
c3Q7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9hcmdzLT5tX2xpc3RO
b2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KTsKLSAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBwcm9maWxlSG9va1JlZ2lzdGVyOwotICAgICAgICAgICAgaWYgKGdlbmVyYXRv
ci5zaG91bGRFbWl0UHJvZmlsZUhvb2tzKCkpCi0gICAgICAgICAgICAgICAgcHJvZmlsZUhvb2tS
ZWdpc3RlciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRl
bXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKLSAgICAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiB0aGlzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9hcmdzLT5tX2xpc3RO
b2RlLT5tX2V4cHIpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFyZ3NSZWdpc3Rl
cjsKLSAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MgPSBtX2FyZ3MtPm1fbGlzdE5v
ZGUtPm1fbmV4dDsKLSAgICAgICAgICAgIGlmIChhcmdzLT5tX2V4cHItPmlzUmVzb2x2ZU5vZGUo
KSAmJiBnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50cyhzdGF0aWNfY2FzdDxSZXNvbHZl
Tm9kZSo+KGFyZ3MtPm1fZXhwciktPmlkZW50aWZpZXIoKSkpCi0gICAgICAgICAgICAgICAgYXJn
c1JlZ2lzdGVyID0gZ2VuZXJhdG9yLnVuY2hlY2tlZFJlZ2lzdGVyRm9yQXJndW1lbnRzKCk7Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJhdG9y
LmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7Ci0KLSAgICAgICAgICAgIC8vIEZ1bmN0aW9uLnByb3Rv
dHlwZS5hcHBseSBpZ25vcmVzIGV4dHJhIGFyZ3VtZW50cywgYnV0IHdlIHN0aWxsCi0gICAgICAg
ICAgICAvLyBuZWVkIHRvIGV2YWx1YXRlIHRoZW0gZm9yIHNpZGUgZWZmZWN0cy4KLSAgICAgICAg
ICAgIHdoaWxlICgoYXJncyA9IGFyZ3MtPm1fbmV4dCkpCi0gICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7Ci0KLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
Q2FsbFZhcmFyZ3MocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgdGhpc1Jl
Z2lzdGVyLmdldCgpLCBhcmdzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KSwgcHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZv
dEVuZCgpKTsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0
b3IsIG1fYXJncyk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50
cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3Rl
ZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOwogICAgICAgICB9Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdz
LT5tX2xpc3ROb2RlLT5tX25leHQpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvZmls
ZUhvb2tSZWdpc3RlcjsKKyAgICAgICAgaWYgKGdlbmVyYXRvci5zaG91bGRFbWl0UHJvZmlsZUhv
b2tzKCkpCisgICAgICAgICAgICBwcm9maWxlSG9va1JlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2Vu
ZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQo
KSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzUmVnaXN0ZXIgPSBnZW5lcmF0b3Iu
ZW1pdE5vZGUobV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpOworICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gYXJnc1JlZ2lzdGVyOworICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBhcmdzID0g
bV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQ7CisgICAgICAgIGlmIChhcmdzLT5tX2V4cHItPmlz
UmVzb2x2ZU5vZGUoKSAmJiBnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50cyhzdGF0aWNf
Y2FzdDxSZXNvbHZlTm9kZSo+KGFyZ3MtPm1fZXhwciktPmlkZW50aWZpZXIoKSkpCisgICAgICAg
ICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IudW5jaGVja2VkUmVnaXN0ZXJGb3JBcmd1bWVu
dHMoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJhdG9y
LmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7CisKKyAgICAgICAgLy8gRnVuY3Rpb24ucHJvdG90eXBl
LmFwcGx5IGlnbm9yZXMgZXh0cmEgYXJndW1lbnRzLCBidXQgd2Ugc3RpbGwKKyAgICAgICAgLy8g
bmVlZCB0byBldmFsdWF0ZSB0aGVtIGZvciBzaWRlIGVmZmVjdHMuCisgICAgICAgIHdoaWxlICgo
YXJncyA9IGFyZ3MtPm1fbmV4dCkpCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJn
cy0+bV9leHByKTsKKworICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxWYXJhcmdzKHJldHVyblZh
bHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJnc1Jl
Z2lzdGVyLmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb2ZpbGVIb29rUmVnaXN0
ZXIuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgfQotICAg
IGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOwotICAgIHsKKyAgICBpZiAoZW1p
dENhbGxDaGVjaykgeworICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChyZWFsQ2FsbC5nZXQoKSk7CiAgICAgICAgIENhbGxB
cmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgIGdlbmVy
YXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgpKTsK
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5n
ZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5nZXQo
KSk7CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICByZXR1
cm4gcmV0dXJuVmFsdWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9jcmVhdGVfaGFzaF90YWJsZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFz
aF90YWJsZQppbmRleCAzOTc5NzZiMDZjN2E5YjU4MzYzMzI5MDBhNmViYjkzZWM2OGI3NDg2Li5j
YWQ2NWJjNGNjODg4ZTMxNGY4OGQ2NjVkZDRhNmU2NDVhMDlhMzU1IDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlCkBAIC0yODksNyArMjg5LDE3IEBAIHN1YiBvdXRwdXQo
KSB7CiAgICAgICAgICAgICAkaW50cmluc2ljID0gIlJlZ0V4cFRlc3RJbnRyaW5zaWMiIGlmICgk
a2V5IGVxICJ0ZXN0Iik7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoJHZhbHVlc1skaV17InR5
cGUifSBlcSAiRnVuY3Rpb24iKSAgeworICAgICAgICAgICAgbXkgJHRhYmxlSGVhZCA9ICRuYW1l
OworICAgICAgICAgICAgJHRhYmxlSGVhZCA9fiBzL1RhYmxlJC8vOworICAgICAgICAgICAgcHJp
bnQgIiAjaWYgSlNDX0JVSUxUSU5fRVhJU1RTKCIgLiB1YygkdGFibGVIZWFkIC4gJGtleSkgLiIp
XG4iOworICAgICAgICAgICAgcHJpbnQgIiAgIHsgXCIka2V5XCIsICgoJGF0dHJzWyRpXSkgJiB+
RnVuY3Rpb24pIHwgQnVpbHRpbiwgJGludHJpbnNpYywgKGludHB0cl90KXN0YXRpY19jYXN0PEJ1
aWx0aW5HZW5lcmF0b3I+KCIgLiAkdGFibGVIZWFkIC4gdWNmaXJzdCgka2V5KSAuICJDb2RlR2Vu
ZXJhdG9yKSwgKGludHB0cl90KSRzZWNvbmRWYWx1ZSB9LFxuIjsKKyAgICAgICAgICAgIHByaW50
ICIgI2Vsc2VcbiIKKyAgICAgICAgfQogICAgICAgICBwcmludCAiICAgeyBcIiRrZXlcIiwgJGF0
dHJzWyRpXSwgJGludHJpbnNpYywgKGludHB0cl90KSIgLiAkZmlyc3RDYXN0U3RyIC4gIigkZmly
c3RWYWx1ZSksIChpbnRwdHJfdCkiIC4gJHNlY29uZENhc3RTdHIgLiAiKCRzZWNvbmRWYWx1ZSkg
fSxcbiI7CisgICAgICAgIGlmICgkdmFsdWVzWyRpXXsidHlwZSJ9IGVxICJGdW5jdGlvbiIpICB7
CisgICAgICAgICAgICBwcmludCAiICNlbmRpZlxuIgorICAgICAgICB9CiAgICAgICAgICRpKys7
CiAgICAgfQogICAgIHByaW50ICIgICB7IDAsIDAsIE5vSW50cmluc2ljLCAwLCAwIH1cbiI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0F2YWlsYWJpbGl0eS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0F2YWlsYWJpbGl0eS5jcHAKaW5kZXggNjY5
YzJiNDM5MjQ2YjA3ZGRiNTdkMTE3ODgzMDI5YTg4ZDNhNGFmZi4uZDBiY2VkMWNmYmQyMzc0Njc5
MzdlZTFiNjdmOTMyYTY2Mzc0ZjhkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBdmFpbGFiaWxpdHkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXZhaWxhYmlsaXR5LmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkRGR0F2YWlsYWJpbGl0eS5oIgogCisjaW5jbHVkZSAiSlNGdW5jdGlvbklu
bGluZXMuaCIKKwogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVkZSAiREZHTm9kZS5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggMmZmMGMz
NDE0NmUyYzBiYTJmZjc2YzRkM2Y3YzQ2YmEzZTI1NTE0Ny4uOTA0NGNkYzZiOGMzYWQ0YTFlOTQx
ODhkZDFkMGUyMDBlNjlmYjk5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgi
CiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgorI2luY2x1ZGUgIkpT
U3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk5hbWVJbnN0YW5jZS5oIgogI2luY2x1ZGUgIk9i
amVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5zIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmNGI2ZDQ5OWYwMjVj
MDUzYjJmOTdiNmYxMDBlODU1MDQ2ZjNlNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMKQEAgLTAsMCArMSwzMDQgQEAKKyMhL3Vz
ci9iaW4vcHl0aG9uCisjIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisjIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisjIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyMgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgZmlsZWNtcAoraW1wb3J0IGZubWF0
Y2gKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3lzCitpbXBv
cnQgZGF0ZXRpbWUKK2ltcG9ydCBqc29uCisKK2NvcHlyaWdodFRleHQgPSAiIiIgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqL1xuCisiIiIKKworZ2VuZXJhdG9yU3RyaW5n
ID0gIi8qIEdlbmVyYXRlZCBieSAlcyBkbyBub3QgaGFuZCBlZGl0LiAqL1xuIiAlIG9zLnBhdGgu
YmFzZW5hbWUoX19maWxlX18pCisKK2Z1bmN0aW9uSGVhZFJlZ0V4cCA9IHJlLmNvbXBpbGUociJm
dW5jdGlvblxzK1x3K1xzKlwoLio/XCkiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorZnVuY3Rpb25O
YW1lUmVnRXhwID0gcmUuY29tcGlsZShyImZ1bmN0aW9uXHMrKFx3KylccypcKCIsIHJlLk1VTFRJ
TElORSB8IHJlLlMpCitmdW5jdGlvblBhcmFtZXRlckZpbmRlciA9IHJlLmNvbXBpbGUociJeZnVu
Y3Rpb25ccysoPzpcdyspXHMqXCgoKD86XHMqXHcrKT9ccyooPzpccyosXHMqXHcrKSopP1wpIiwg
cmUuTVVMVElMSU5FIHwgcmUuUykKKworbXVsdGlsaW5lQ29tbWVudFJlZ0V4cCA9IHJlLmNvbXBp
bGUociJcL1wqLio/XCpcLyIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitzaW5nbGVMaW5lQ29tbWVu
dFJlZ0V4cCA9IHJlLmNvbXBpbGUociJcL1wvLio/XG4iLCByZS5NVUxUSUxJTkUgfCByZS5TKQor
CitkZWYgZ2V0Q29weXJpZ2h0KHNvdXJjZSk6CisgICAgY29weXJpZ2h0QmxvY2sgPSBtdWx0aWxp
bmVDb21tZW50UmVnRXhwLmZpbmRhbGwoc291cmNlKVswXQorICAgIGNvcHlyaWdodEJsb2NrID0g
Y29weXJpZ2h0QmxvY2tbOmNvcHlyaWdodEJsb2NrLmluZGV4KCJSZWRpc3RyaWJ1dGlvbiIpXQor
ICAgIGNvcHlSaWdodExpbmVzID0gW10KKworICAgIGZvciBsaW5lIGluIGNvcHlyaWdodEJsb2Nr
LnNwbGl0KCJcbiIpOgorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIvKiIsICIiKQorICAg
ICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIqLyIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5y
ZXBsYWNlKCIqIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIkNvcHlyaWdodCIs
ICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCJjb3B5cmlnaHQiLCAiIikKKyAgICAg
ICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKEMpIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJl
cGxhY2UoIihjKSIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgIGlm
IGxlbihsaW5lKSA9PSAwOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBjb3B5Umln
aHRMaW5lcy5hcHBlbmQobGluZSkKKyAgICAKKyAgICByZXR1cm4gbGlzdChzZXQoY29weVJpZ2h0
TGluZXMpKQorCisKKworZGVmIGdldEZ1bmN0aW9ucyhzb3VyY2UpOgorCisgICAgc291cmNlID0g
bXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5zdWIoIi8qKi8iLCBzaW5nbGVMaW5lQ29tbWVudFJlZ0V4
cC5zdWIoIi8vXG4iLCBzb3VyY2UpKQorCisgICAgbWF0Y2hlcyA9IFsgZiBmb3IgZiBpbiBmdW5j
dGlvbkhlYWRSZWdFeHAuZmluZGl0ZXIoc291cmNlKV0KKyAgICBmdW5jdGlvbkJvdW5kcyA9IFtd
CisgICAgc3RhcnQgPSAwCisgICAgZW5kID0gMAorICAgIGZvciBtYXRjaCBpbiBtYXRjaGVzOgor
ICAgICAgICBzdGFydCA9IG1hdGNoLnN0YXJ0KCkKKyAgICAgICAgaWYgc3RhcnQgPCBlbmQ6Cisg
ICAgICAgICAgICBjb250aW51ZQorICAgICAgICBlbmQgPSBtYXRjaC5lbmQoKQorICAgICAgICB3
aGlsZSBzb3VyY2VbZW5kXSAhPSAneyc6CisgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAg
ICAgIGRlcHRoID0gMQorICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgIHdoaWxlIGRlcHRo
ID4gMDoKKyAgICAgICAgICAgIGlmIHNvdXJjZVtlbmRdID09ICd7JzoKKyAgICAgICAgICAgICAg
ICBkZXB0aCA9IGRlcHRoICsgMQorICAgICAgICAgICAgZWxpZiBzb3VyY2VbZW5kXSA9PSAnfSc6
CisgICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCAtIDEKKyAgICAgICAgICAgIGVuZCA9IGVu
ZCArIDEKKyAgICAgICAgZnVuY3Rpb25Cb3VuZHMuYXBwZW5kKChzdGFydCwgZW5kKSkKKworICAg
IGZ1bmN0aW9ucyA9IFtzb3VyY2Vbc3RhcnQ6ZW5kXS5zdHJpcCgpIGZvciAoc3RhcnQsIGVuZCkg
aW4gZnVuY3Rpb25Cb3VuZHNdCisgICAgcmVzdWx0ID0gW10KKyAgICBmb3IgZnVuY3Rpb24gaW4g
ZnVuY3Rpb25zOgorICAgICAgICBmdW5jdGlvbiA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAuc3Vi
KCIiLCBmdW5jdGlvbikKKyAgICAgICAgZnVuY3Rpb25OYW1lID0gZnVuY3Rpb25OYW1lUmVnRXhw
LmZpbmRhbGwoZnVuY3Rpb24pWzBdCisgICAgICAgIGZ1bmN0aW9uUGFyYW1ldGVycyA9IGZ1bmN0
aW9uUGFyYW1ldGVyRmluZGVyLmZpbmRhbGwoZnVuY3Rpb24pWzBdLnNwbGl0KCcsJykKKyAgICAg
ICAgaWYgbGVuKGZ1bmN0aW9uUGFyYW1ldGVyc1swXSkgPT0gMDoKKyAgICAgICAgICAgIGZ1bmN0
aW9uUGFyYW1ldGVycyA9IFtdCisgICAgICAgICAgICAKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgo
ZnVuY3Rpb25OYW1lLCBmdW5jdGlvbiwgZnVuY3Rpb25QYXJhbWV0ZXJzKSkKKyAgICByZXR1cm4g
cmVzdWx0CisgICAgICAgIAorCitkZWYgZ2VuZXJhdGVDb2RlKHNvdXJjZSk6CisgICAgaW5wdXRG
aWxlID0gb3Blbihzb3VyY2UsICJyIikKKyAgICBiYXNlTmFtZSA9IG9zLnBhdGguYmFzZW5hbWUo
c291cmNlKS5yZXBsYWNlKCIuanMiLCAiIikKKyAgICAKKyAgICBzb3VyY2UgPSAiIgorICAgIGZv
ciBsaW5lIGluIGlucHV0RmlsZToKKyAgICAgICAgc291cmNlID0gc291cmNlICsgbGluZQorICAg
IAorICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAiY3lnd2luIjoKKyAgICAgICAgc291cmNlID0gc291
cmNlLnJlcGxhY2UoIlxyXG4iLCAiXG4iKQorICAgIHJldHVybiAoYmFzZU5hbWUsIGdldEZ1bmN0
aW9ucyhzb3VyY2UpLCBnZXRDb3B5cmlnaHQoc291cmNlKSkKKworZGVmIG1hbmdsZU5hbWUob2Jq
ZWN0LCBuYW1lKToKKyAgICBxTmFtZSA9IG9iamVjdCArICIuIiArIG5hbWUKKyAgICBtYW5nbGVk
TmFtZSA9ICIiCisgICAgaSA9IDAKKyAgICB3aGlsZSBpIDwgbGVuKHFOYW1lKToKKyAgICAgICAg
aWYgcU5hbWVbaV0gPT0gJy4nOgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFt
ZSArIHFOYW1lW2kgKyAxXS51cHBlcigpCisgICAgICAgICAgICBpID0gaSArIDEKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWUgKyBxTmFtZVtpXQor
ICAgICAgICBpID0gaSArIDEKKyAgICByZXR1cm4gbWFuZ2xlZE5hbWUKKworYnVpbHRpbnMgPSBb
XQorCitiYXNlTmFtZSA9IHN5cy5hcmd2Wy0xXQorYnVpbHRpbl9kZWZpbml0aW9ucyA9IHN5cy5h
cmd2WzE6LTFdCisob3V0cHV0X2Jhc2UsIF8pID0gb3MucGF0aC5zcGxpdGV4dChzeXMuYXJndlst
MV0pCisKK2NvcHlyaWdodHMgPSBbXQorZm9yIGZpbGUgaW4gYnVpbHRpbl9kZWZpbml0aW9uczoK
KyAgICBpZiBmbm1hdGNoLmZubWF0Y2goZmlsZSwgJyouanMnKToKKyAgICAgICAgKGJhc2VOYW1l
LCBmdW5jdGlvbnMsIG9iamVjdENvcHlyaWdodHMpID0gZ2VuZXJhdGVDb2RlKGZpbGUpCisgICAg
ICAgIGNvcHlyaWdodHMuZXh0ZW5kKG9iamVjdENvcHlyaWdodHMpCisgICAgICAgIGJ1aWx0aW5z
LmFwcGVuZCgoYmFzZU5hbWUsIGZ1bmN0aW9ucykpCisKK2NvcHlyaWdodHMgPSBsaXN0KHNldChj
b3B5cmlnaHRzKSkKKworY29weXJpZ2h0Qm9keSA9ICIiCitmb3IgY29weXJpZ2h0IGluIGNvcHly
aWdodHM6CisgICAgY29weXJpZ2h0Qm9keSA9IGNvcHlyaWdodEJvZHkgKyIgKiBDb3B5cmlnaHQg
KEMpICIgKyBjb3B5cmlnaHQgKyAiXG4iCisKK2J1aWx0aW5zSGVhZGVyID0gb3BlbihvdXRwdXRf
YmFzZSArICIuaC50bXAiLCAidyIpCitidWlsdGluc0ltcGxlbWVudGF0aW9uID0gb3BlbihvdXRw
dXRfYmFzZSArICIuY3BwLnRtcCIsICJ3IikKK2NvcHlyaWdodFRleHQgPSAiLypcbiIgKyBjb3B5
cmlnaHRCb2R5ICsgY29weXJpZ2h0VGV4dAorYnVpbHRpbnNIZWFkZXIud3JpdGUoIiIiJXMKKyVz
CisKKyNpZm5kZWYgSlNDQnVpbHRpbnNfSAorI2RlZmluZSBKU0NCdWlsdGluc19ICisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CitjbGFzcyBJZGVudGlmaWVy
OworY2xhc3MgSlNHbG9iYWxPYmplY3Q7CitjbGFzcyBTb3VyY2VDb2RlOworY2xhc3MgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU7CitjbGFzcyBWTTsKKworRnVuY3Rpb25FeGVjdXRhYmxlKiBj
cmVhdGVCdWlsdGluRXhlY3V0YWJsZShWTSYsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwg
Y29uc3QgU291cmNlQ29kZSYpOworCisiIiIgJSAoZ2VuZXJhdG9yU3RyaW5nLCBjb3B5cmlnaHRU
ZXh0KSkKKworY29kZVJlZmVyZW5jZXMgPSBbXQorCitmb3IgKG9iamVjdE5hbWUsIGZ1bmN0aW9u
cykgaW4gYnVpbHRpbnM6CisgICAgcHJpbnQoIkdlbmVyYXRpbmcgYmluZGluZ3MgZm9yIHRoZSAl
cyBidWlsdGluLiIgJSBvYmplY3ROYW1lKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIvKiAl
cyBmdW5jdGlvbnMgKi9cbiIgJSBvYmplY3ROYW1lKQorICAgIGZvciAobmFtZSwgaW1wbGVtZW50
YXRpb24sIF8pIGluIGZ1bmN0aW9uczoKKyAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVOYW1l
KG9iamVjdE5hbWUsIG5hbWUpCisgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWVbMF0u
bG93ZXIoKSArIG1hbmdsZWROYW1lWzE6XSArICJDb2RlIgorICAgICAgICBjb2RlUmVmZXJlbmNl
cy5hcHBlbmQoKG1hbmdsZWROYW1lLCBuYW1lLCBpbXBsZW1lbnRhdGlvbikpCisgICAgICAgIGJ1
aWx0aW5zSGVhZGVyLndyaXRlKCJleHRlcm4gY29uc3QgY2hhciogc18lcztcbiIgJSBtYW5nbGVk
TmFtZSkKKyAgICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoImV4dGVybiBjb25zdCBpbnQgc18l
c0xlbmd0aDtcbiIgJSBtYW5nbGVkTmFtZSkKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiXG4i
KQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19GT1JFQUNIXyVzX0JVSUxU
SU4obWFjcm8pIFxcXG4iICUgb2JqZWN0TmFtZS5yZXBsYWNlKCIuIiwgIl8iKS51cHBlcigpKQor
ICAgIGZvciAobmFtZSwgaW1wbGVtZW50YXRpb24sIGFyZ3VtZW50cykgaW4gZnVuY3Rpb25zOgor
ICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZU5hbWUob2JqZWN0TmFtZSwgbmFtZSkKKyAgICAg
ICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiAgICBtYWNybyglcywgJXMsICVkKSBcXFxuIiAlIChu
YW1lLCBtYW5nbGVkTmFtZSwgbGVuKGFyZ3VtZW50cykpKQorICAgIGJ1aWx0aW5zSGVhZGVyLndy
aXRlKCJcbiIpCisgICAgZm9yIChuYW1lLCBpbXBsZW1lbnRhdGlvbiwgYXJndW1lbnRzKSBpbiBm
dW5jdGlvbnM6CisgICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19CVUlM
VElOXyVzIDFcbiIgJSBtYW5nbGVOYW1lKG9iamVjdE5hbWUsIG5hbWUpLnVwcGVyKCkpCisgICAg
YnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuXG4iKQorbmFtZXMgPSBbXQorYnVpbHRpbnNIZWFkZXIu
d3JpdGUoIiNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTihtYWNybylcXFxuIikKK2ZvciAoY29k
ZVJlZmVyZW5jZSwgZnVuY3Rpb25OYW1lLCBzb3VyY2UpIGluIGNvZGVSZWZlcmVuY2VzOgorICAg
IGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIgICAgbWFjcm8oJXMsICVzLCBzXyVzTGVuZ3RoKSBcXFxu
IiAlIChjb2RlUmVmZXJlbmNlLCBmdW5jdGlvbk5hbWUsIGNvZGVSZWZlcmVuY2UpKQorICAgIG5h
bWVzLmFwcGVuZChmdW5jdGlvbk5hbWUpCisKK2J1aWx0aW5zSGVhZGVyLndyaXRlKCJcblxuIikK
K2J1aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJ
T05fTkFNRShtYWNybykgXFxcbiIpCitmb3IgbmFtZSBpbiBzb3J0ZWQoc2V0KG5hbWVzKSk6Cisg
ICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiAgICBtYWNybyglcykgXFxcbiIgJSBuYW1lKQorYnVp
bHRpbnNIZWFkZXIud3JpdGUoIiIiCisKKyNkZWZpbmUgSlNDX0RFQ0xBUkVfQlVJTFRJTl9HRU5F
UkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKKyAgICBGdW5j
dGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoVk0mKTsKKworSlNDX0ZPUkVBQ0hf
QlVJTFRJTihKU0NfREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBKU0NfREVDTEFS
RV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5lIEpTQ19CVUlMVElOX0VYSVNUUyhuYW1lKSBk
ZWZpbmVkKEpTQ19CVUlMVElOXyMjbmFtZSkKKworfQorCisjZW5kaWYKKworIiIiKQorCitidWls
dGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIiVzCislcworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgorCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFi
bGVzLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMu
aCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworIiIiICAlIChnZW5lcmF0
b3JTdHJpbmcsIGNvcHlyaWdodFRleHQpKQorCitmb3IgKGNvZGVSZWZlcmVuY2UsIG5hbWUsIHNv
dXJjZSkgaW4gY29kZVJlZmVyZW5jZXM6CisgICAgc291cmNlID0gIihmdW5jdGlvbiAiICsgc291
cmNlW3NvdXJjZS5pbmRleCgiKCIpOl0gKyAiKSIKKyAgICBsaW5lcyA9IGpzb24uZHVtcHMoc291
cmNlKVsxOi0xXS5zcGxpdCgiXFxuIikKKyAgICBzb3VyY2VMZW5ndGggPSBsZW4oc291cmNlKQor
ICAgIHNvdXJjZSA9ICIiCisgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgIHNvdXJjZSA9
IHNvdXJjZSArICgiICAgIFwiJXNcXG5cIiBcXFxuIiAlIGxpbmUpCisgICAgYnVpbHRpbnNJbXBs
ZW1lbnRhdGlvbi53cml0ZSgiY29uc3QgY2hhciogc18lcyA9XG4lcztcblxuIiAlIChjb2RlUmVm
ZXJlbmNlLCBzb3VyY2UpKQorICAgIGJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoImNvbnN0
IGludCBzXyVzTGVuZ3RoID0gJWQ7XG5cbiIgJSAoY29kZVJlZmVyZW5jZSwgc291cmNlTGVuZ3Ro
ICsgMSkpICMgKyAxIGZvciBcbgorCitidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIgor
RnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShWTSYgdm0sIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSkKK3sKKyAgICB1bnNpZ25lZCBsaW5lQ291bnQgPSB1bmxpbmtlZEV4ZWN1dGFi
bGUtPmxpbmVDb3VudCgpOworICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gMTsKKyAgICB1bnNp
Z25lZCBzb3VyY2VMZW5ndGggPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnNvdXJjZUxlbmd0aCgpOwor
ICAgIGJvb2wgZW5kQ29sdW1uSXNPblN0YXJ0TGluZSA9ICFsaW5lQ291bnQ7CisgICAgdW5zaWdu
ZWQgZW5kQ29sdW1uRXhjbHVkaW5nQnJhY2VzID0gdW5saW5rZWRFeGVjdXRhYmxlLT51bmxpbmtl
ZEJvZHlFbmRDb2x1bW4oKSArIChlbmRDb2x1bW5Jc09uU3RhcnRMaW5lID8gMCA6IDEpOworICAg
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gdW5saW5rZWRFeGVjdXRhYmxlLT5zdGFydE9mZnNldCgp
OworICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0RXhjbHVkaW5nT3BlbkJyYWNlID0gc3RhcnRPZmZz
ZXQgKyAxOworICAgIHVuc2lnbmVkIGVuZE9mZnNldEV4Y2x1ZGluZ0Nsb3NlQnJhY2UgPSBzdGFy
dE9mZnNldCArIHNvdXJjZUxlbmd0aCAtIDE7CisgICAgU291cmNlQ29kZSBib2R5U291cmNlKHNv
dXJjZS5wcm92aWRlcigpLCBzdGFydE9mZnNldEV4Y2x1ZGluZ09wZW5CcmFjZSwgZW5kT2Zmc2V0
RXhjbHVkaW5nQ2xvc2VCcmFjZSwgMCwgc3RhcnRDb2x1bW4pOworICAgIHJldHVybiBGdW5jdGlv
bkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgYm9keVNvdXJjZSwgdW5saW5rZWRFeGVjdXRhYmxlLCAw
LCBsaW5lQ291bnQsIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW5FeGNsdWRpbmdCcmFjZXMsIGZhbHNl
KTsKK30KKworI2RlZmluZSBKU0NfREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBm
dW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCitGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVO
YW1lIyNHZW5lcmF0b3IoVk0mIHZtKSBcXAoreyBcXAorICAgIHJldHVybiBjcmVhdGVCdWlsdGlu
RXhlY3V0YWJsZSh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRh
YmxlKCksIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyBcXAor
fQorCitKU0NfRk9SRUFDSF9CVUlMVElOKEpTQ19ERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisj
dW5kZWYgSlNDX0RFRklORV9CVUlMVElOX0dFTkVSQVRPUgorfQorCisiIiIpCisKK2J1aWx0aW5z
SGVhZGVyLmNsb3NlKCkKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24uY2xvc2UoKQorCitpZiAobm90
IG9zLnBhdGguZXhpc3RzKG91dHB1dF9iYXNlICsgIi5oIikpIG9yIChub3QgZmlsZWNtcC5jbXAo
b3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmgiLCBzaGFsbG93PUZhbHNl
KSk6CisgICAgb3MucmVuYW1lKG91dHB1dF9iYXNlICsgIi5oLnRtcCIsIG91dHB1dF9iYXNlICsg
Ii5oIikKK2Vsc2U6CisgICAgb3MucmVtb3ZlKG91dHB1dF9iYXNlICsgIi5oLnRtcCIpCisKK2lm
IChub3Qgb3MucGF0aC5leGlzdHMob3V0cHV0X2Jhc2UgKyAiLmNwcCIpKSBvciAobm90IGZpbGVj
bXAuY21wKG91dHB1dF9iYXNlICsgIi5jcHAudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmNwcCIsIHNo
YWxsb3c9RmFsc2UpKToKKyAgICBvcy5yZW5hbWUob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCBv
dXRwdXRfYmFzZSArICIuY3BwIikKK2Vsc2U6CisgICAgb3MucmVtb3ZlKG91dHB1dF9iYXNlICsg
Ii5jcHAudG1wIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCmluZGV4IGNhODkwYjA2ZWEzM2ZhOWU3ZjFmYTUxYTM1ZWEyZDQ4ZDAwOWEz
OGEuLjZjOWJmOTZjMTVmNjA5ZTI2NWNlMjUwYTQ1YmYwODYxZDA2Y2QxZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNTEs
NiArNTEsNyBAQAogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKICNpbmNsdWRl
ICJKU1N0YWNrSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNT
dHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNsdWRlICJMTElu
dENMb29wLmgiCiAjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuY3BwCmluZGV4IGYwZTAyYmE0
ZTQ3NmY5OWNjOTEzYjA0NjJhZDI3OTUwMDYwOWZhM2EuLjFjMjQwZGNkNzFiZTUyOWQ4OGNiZjQ2
MWQxODY4ZjVlYjJiMDJhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUg
IlByb3RvQ2FsbEZyYW1lLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJK
U0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAKIG5hbWVz
cGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXgg
Y2E3YWQxMWYyZTBiOGEzYjhiMTg1ODkxZDdlNTIyYmFlNDAzYTIzNi4uY2I1NTA3YmVhYzU1YmY4
ZWIxYjM3ZWM5MGZjYWIxOTM0ZmI0OGVhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1
ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9u
LmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDk4ZDEwYTNmNGRjYjEyZDg5
ZjM3YTEyZjIyNjA0Yjk0NmUwOGU2MjcuLmRkMDM1Mzc3OWU4YmRmOThmNDY1OGEzMDdlMzJkMDZl
NDcyNDQxNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
czMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82
NC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUg
IkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggOTI4ZGQ1MGZiMDE2ZTI3MTY0NGE1NzVl
MzBhYjVmMjUxNmViNTBlYy4uNDk4NzBlNjhhODdiZTE5ZTE1OGEwNmQxYzY0ZmVjOWI4YmQwODIy
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC00
MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9uV3Jh
cHBlcnMuaCIKICNpbmNsdWRlICJKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5o
IgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkpTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggMjZkZDRkMWFmNzQ1YWZhMWZiYzUzYTljMDIzYTZlNDc0
MWE2NmEwOS4uZGYxYmQzYTljZmE0MDJjNTJhNTIxMWNmMWFjY2U2N2Q1MTIxYjdlZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTI5
LDExICsyOSwxMyBAQAogI2luY2x1ZGUgIkpJVC5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJHQ0F3YXJlSklUU3R1
YlJvdXRpbmUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJJbnRlcnBy
ZXRlci5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisj
aW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTVmFyaWFibGVP
YmplY3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwCmluZGV4IGQxOGZlYTcxNWNiMDNiMzdhYTkyNmQ4NDlhOGU1YWI5NTYz
ZWNkM2QuLjMyNjFiM2FmNmVlYWJkNmYyNmE0M2EwOGQyMDRiYzYyYjA2NTg5YjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAi
SklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNWYXJpYWJsZU9iamVjdC5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcAppbmRleCA0MDc4NGI0OTQzMWZlMDJlOGU0NTIyZjE2MzA4YzkwMjQ3MTZkMjM2Li4y
Zjc5NTU1NGIwOTFkZWViYmMwM2JmMmJlOGM3NGY0MWFlNTQxZWQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpT
UHJveHkuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5l
cy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIK
ICNpbmNsdWRlICJTdGFja1Zpc2l0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggNjA0Y2MyNjNjZjk3ZTA4
NmZlZDA2ZWM5MDNiMGVjMTk4M2U3ODEzNy4uODE2NmU3ZjgxZmE4OWE3ZDRmNTBjNWYxYTk0ZmE5
NjhjNWQ1N2UxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJKSVRT
dHVicy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKLSNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNs
dWRlICJWTS5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNPYmpl
Y3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
CmluZGV4IDY2NDQ0YmFhMDhiNTYyZGQ2OTdlMGNjZDc3MjFlNTVjMTViYTQ5MTMuLmQ4MmU5ZTlj
MjgxODQ2MWUzMDVmZjg2NWQyZmIxNjhhNzhjYmI0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtNDAsNyArNDAsNyBAQAogI2luY2x1
ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKICNpbmNsdWRlICJKU0FjdGl2
YXRpb24uaCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlu
bGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUg
IkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCA4ZWMxZmQzMmEzYWRh
MjJlMTI1MjI5NTcwZGNmN2ZmMjhlYWJmMWVkLi40NmE3Yzc2YjJmOTAxZmMzY2MzNmQxY2UwYzA3
MzUzZWIwNmIyZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FT
VEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIu
aApAQCAtODg4LDkgKzg4OCw5IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRnVu
Y3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uCiAgICAgQVNTRVJU
KGZ1bmMtPmlzRG90QWNjZXNzb3JOb2RlKCkpOwogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0g
c3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4oZnVuYyk7CiAgICAgRnVuY3Rpb25DYWxsRG90
Tm9kZSogbm9kZTsKLSAgICBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlO
YW1lcy0+Y2FsbCkKKyAgICBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlO
YW1lcy0+Y2FsbCB8fCBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5j
YWxsUHJpdmF0ZU5hbWUpCiAgICAgICAgIG5vZGUgPSBuZXcgKG1fdm0pIENhbGxGdW5jdGlvbkNh
bGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3Ms
IGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7Ci0gICAgZWxzZSBpZiAoZG90LT5pZGVudGlm
aWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXBwbHkpCisgICAgZWxzZSBpZiAoZG90LT5p
ZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXBwbHkgfHwgZG90LT5pZGVudGlm
aWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXBwbHlQcml2YXRlTmFtZSkKICAgICAgICAg
bm9kZSA9IG5ldyAobV92bSkgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3Qt
PmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZv
dEVuZCk7CiAgICAgZWxzZQogICAgICAgICBub2RlID0gbmV3IChtX3ZtKSBGdW5jdGlvbkNhbGxE
b3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRp
dm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4
ZXIuY3BwCmluZGV4IGNhNGJiNGYwYWRlOGQ2YmM4MjY5MWE2YzAwMDE0Y2YxOThiZDg4YmQuLmNj
YjA3OWQ5NzVhMTQxYzVjNGIyZDdiNjIzMTMwMDA3MDk3Nzc4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC0yNSwxMCArMjUsMTAgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJMZXhlci5oIgogCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMu
aCIKKyNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMu
aCIKLQogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCi0jaW5jbHVkZSAiSWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIk5vZGVJbmZvLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKICNp
bmNsdWRlIDx3dGYvZHRvYS5oPgpAQCAtOTAsNiArOTAsNyBAQCBlbnVtIENoYXJhY3RlclR5cGUg
ewogCiAgICAgLy8gT3RoZXIgdHlwZXMgKG9ubHkgb25lIHNvIGZhcikKICAgICBDaGFyYWN0ZXJX
aGl0ZVNwYWNlLAorICAgIENoYXJhY3RlclByaXZhdGVJZGVudGlmaWVyU3RhcnQKIH07CiAKIC8v
IDI1NiBMYXRpbi0xIGNvZGVzCkBAIC0xNTgsNyArMTU5LDcgQEAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIHNob3J0IHR5cGVzT2ZMYXRpbjFDaGFyYWN0ZXJzWzI1Nl0gPSB7CiAvKiAgNjEgLSA9ICAg
ICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyRXF1YWwsCiAvKiAgNjIgLSA+ICAgICAgICAgICAg
ICAgICAgKi8gQ2hhcmFjdGVyR3JlYXRlciwKIC8qICA2MyAtID8gICAgICAgICAgICAgICAgICAq
LyBDaGFyYWN0ZXJRdWVzdGlvbiwKLS8qICA2NCAtIEAgICAgICAgICAgICAgICAgICAqLyBDaGFy
YWN0ZXJJbnZhbGlkLAorLyogIDY0IC0gQCAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlclBy
aXZhdGVJZGVudGlmaWVyU3RhcnQsCiAvKiAgNjUgLSBBICAgICAgICAgICAgICAgICAgKi8gQ2hh
cmFjdGVySWRlbnRpZmllclN0YXJ0LAogLyogIDY2IC0gQiAgICAgICAgICAgICAgICAgICovIENo
YXJhY3RlcklkZW50aWZpZXJTdGFydCwKIC8qICA2NyAtIEMgICAgICAgICAgICAgICAgICAqLyBD
aGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCkBAIC00ODYsOSArNDg3LDEwIEBAIHN0YXRpYyBjb25z
dCBMQ2hhciBzaW5nbGVDaGFyYWN0ZXJFc2NhcGVWYWx1ZXNGb3JBU0NJSVsxMjhdID0gewogfTsK
IAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1MZXhlcjxUPjo6TGV4ZXIoVk0qIHZtKQorTGV4ZXI8
VD46OkxleGVyKFZNKiB2bSwgSlNQYXJzZXJTdHJpY3RuZXNzIHN0cmljdG5lc3MpCiAgICAgOiBt
X2lzUmVwYXJzaW5nKGZhbHNlKQogICAgICwgbV92bSh2bSkKKyAgICAsIG1fcGFyc2luZ0J1aWx0
aW5GdW5jdGlvbihzdHJpY3RuZXNzID09IEpTUGFyc2VCdWlsdGluKQogewogfQogCkBAIC03NTMs
NyArNzU1LDI3IEBAIGlubGluZSB2b2lkIExleGVyPFQ+OjpyZWNvcmQxNihpbnQgYykKICAgICBB
U1NFUlQoYyA8PSBzdGF0aWNfY2FzdDxpbnQ+KFVTSFJUX01BWCkpOwogICAgIG1fYnVmZmVyMTYu
YXBwZW5kKHN0YXRpY19jYXN0PFVDaGFyPihjKSk7CiB9Ci0KKyAgICAKKyNpZiAhQVNTRVJUX0RJ
U0FCTEVECitib29sIGlzU2FmZUlkZW50aWZpZXIoVk0mIHZtLCBjb25zdCBJZGVudGlmaWVyKiBp
ZGVudCkKK3sKKyAgICBpZiAoIWlkZW50KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAvKiBK
dXN0IGJsb2NrIGFueSB1c2Ugb2Ygc3VzcGljaW91cyBpZGVudGlmaWVycy4gIFRoaXMgaXMgaW50
ZW5kZWQgdG8KKyAgICAgKiBiZSB1c2VkIGFzIGEgc2FmZXR5IG5ldCB3aGlsZSBpbXBsZW1lbnRp
bmcgYnVpbHRpbnMuCisgICAgICovCisgICAgaWYgKCppZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVz
LT5jYWxsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCppZGVudCA9PSB2bS5wcm9w
ZXJ0eU5hbWVzLT5hcHBseSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgqaWRlbnQg
PT0gdm0ucHJvcGVydHlOYW1lcy0+ZXZhbCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
ICgqaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+RnVuY3Rpb24pCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorICAgIAogdGVtcGxhdGUgPD4KIHRl
bXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tl
blR5cGUgTGV4ZXI8TENoYXI+OjpwYXJzZUlkZW50aWZpZXIoSlNUb2tlbkRhdGEqIHRva2VuRGF0
YSwgdW5zaWduZWQgbGV4ZXJGbGFncywgYm9vbCBzdHJpY3RNb2RlKQogewpAQCAtNzY1LDcgKzc4
NywxMSBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5M
SU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAogICAgICAgICAgICAgcmV0dXJuIGtleXdv
cmQgPT0gUkVTRVJWRURfSUZfU1RSSUNUICYmICFzdHJpY3RNb2RlID8gSURFTlQgOiBrZXl3b3Jk
OwogICAgICAgICB9CiAgICAgfQotCisgICAgCisgICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gbV9j
dXJyZW50ID09ICdAJyAmJiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247CisgICAgaWYgKGlzUHJp
dmF0ZU5hbWUpCisgICAgICAgIHNoaWZ0KCk7CisgICAgCiAgICAgY29uc3QgTENoYXIqIGlkZW50
aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKICAgICB1bnNpZ25lZCBpZGVudGlmaWVy
TGluZVN0YXJ0ID0gY3VycmVudExpbmVTdGFydE9mZnNldCgpOwogICAgIApAQCAtNzc5LDE1ICs4
MDUsMjYgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lO
TElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKIAogICAgIGNvbnN0IElkZW50aWZpZXIq
IGlkZW50ID0gMDsKICAgICAKLSAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcikgeworICAg
IGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyIHx8IG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikg
ewogICAgICAgICBpbnQgaWRlbnRpZmllckxlbmd0aCA9IGN1cnJlbnRTb3VyY2VQdHIoKSAtIGlk
ZW50aWZpZXJTdGFydDsKICAgICAgICAgaWRlbnQgPSBtYWtlSWRlbnRpZmllcihpZGVudGlmaWVy
U3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwotCisgICAgICAgIGlmIChtX3BhcnNpbmdCdWlsdGlu
RnVuY3Rpb24pIHsKKyAgICAgICAgICAgIGlmICghaXNTYWZlSWRlbnRpZmllcigqbV92bSwgaWRl
bnQpICYmICFpc1ByaXZhdGVOYW1lKSB7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3Nh
Z2UgPSBtYWtlU3RyaW5nKCJUaGUgdXNlIG9mICciLCBpZGVudC0+c3RyaW5nKCksICInIGlzIGRp
c2FsbG93ZWQgaW4gYnVpbHRpbiBmdW5jdGlvbnMuIik7CisgICAgICAgICAgICAgICAgcmV0dXJu
IEVSUk9SVE9LOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGlzUHJpdmF0ZU5hbWUp
CisgICAgICAgICAgICAgICAgaWRlbnQgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZXRQcml2YXRl
TmFtZSgqaWRlbnQpOworICAgICAgICAgICAgZWxzZSBpZiAoKmlkZW50ID09IG1fdm0tPnByb3Bl
cnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQpCisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5p
ZGVudCA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkUHJpdmF0ZU5hbWU7
CisgICAgICAgICAgICBpZiAoIWlkZW50KQorICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElE
X1BSSVZBVEVfTkFNRV9FUlJPUlRPSzsKKyAgICAgICAgfQogICAgICAgICB0b2tlbkRhdGEtPmlk
ZW50ID0gaWRlbnQ7CiAgICAgfSBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAwOwog
Ci0gICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIShsZXhl
ckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMpKSkgeworICAgIGlmIChVTkxJ
S0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICEobGV4ZXJGbGFncyAmIExleGVy
RmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsKICAgICAgICAg
QVNTRVJUKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpOwogICAgICAgICBpZiAocmVtYWluaW5nIDwg
bWF4VG9rZW5MZW5ndGgpIHsKICAgICAgICAgICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSBt
X3ZtLT5rZXl3b3Jkcy0+Z2V0S2V5d29yZCgqaWRlbnQpOwpAQCAtODE0LDYgKzg1MSwxMCBAQCB0
ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9r
ZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAgICAgICAgICAgcmV0dXJuIGtleXdvcmQgPT0gUkVT
RVJWRURfSUZfU1RSSUNUICYmICFzdHJpY3RNb2RlID8gSURFTlQgOiBrZXl3b3JkOwogICAgICAg
ICB9CiAgICAgfQorICAgIAorICAgIGJvb2wgaXNQcml2YXRlTmFtZSA9IG1fY3VycmVudCA9PSAn
QCcgJiYgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uOworICAgIGlmIChpc1ByaXZhdGVOYW1lKQor
ICAgICAgICBzaGlmdCgpOwogCiAgICAgY29uc3QgVUNoYXIqIGlkZW50aWZpZXJTdGFydCA9IGN1
cnJlbnRTb3VyY2VQdHIoKTsKICAgICBpbnQgaWRlbnRpZmllckxpbmVTdGFydCA9IGN1cnJlbnRM
aW5lU3RhcnRPZmZzZXQoKTsKQEAgLTgyNiw2ICs4NjcsNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91
bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFy
Pjo6cAogICAgIH0KICAgICAKICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50ID09ICdcXCcpKSB7
CisgICAgICAgIEFTU0VSVCghaXNQcml2YXRlTmFtZSk7CiAgICAgICAgIHNldE9mZnNldEZyb21T
b3VyY2VQdHIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGluZVN0YXJ0KTsKICAgICAgICAg
cmV0dXJuIHBhcnNlSWRlbnRpZmllclNsb3dDYXNlPHNob3VsZENyZWF0ZUlkZW50aWZpZXI+KHRv
a2VuRGF0YSwgbGV4ZXJGbGFncywgc3RyaWN0TW9kZSk7CiAgICAgfQpAQCAtODM3LDE4ICs4Nzks
MjkgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElO
RSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAKIAogICAgIGNvbnN0IElkZW50aWZpZXIqIGlk
ZW50ID0gMDsKICAgICAKLSAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcikgeworICAgIGlm
IChzaG91bGRDcmVhdGVJZGVudGlmaWVyIHx8IG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgewog
ICAgICAgICBpbnQgaWRlbnRpZmllckxlbmd0aCA9IGN1cnJlbnRTb3VyY2VQdHIoKSAtIGlkZW50
aWZpZXJTdGFydDsKICAgICAgICAgaWYgKGlzQWxsOEJpdCkKICAgICAgICAgICAgIGlkZW50ID0g
bWFrZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hhcihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJM
ZW5ndGgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBpZGVudCA9IG1ha2VJZGVudGlmaWVy
KGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCk7Ci0gICAgICAgIAorICAgICAgICBp
ZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CisgICAgICAgICAgICBpZiAoIWlzU2FmZUlk
ZW50aWZpZXIoKm1fdm0sIGlkZW50KSAmJiAhaXNQcml2YXRlTmFtZSkgeworICAgICAgICAgICAg
ICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZygiVGhlIHVzZSBvZiAnIiwgaWRlbnQt
PnN0cmluZygpLCAiJyBpcyBkaXNhbGxvd2VkIGluIGJ1aWx0aW4gZnVuY3Rpb25zLiIpOworICAg
ICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPSzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICAgICAgICAgIGlkZW50ID0gbV92bS0+cHJvcGVy
dHlOYW1lcy0+Z2V0UHJpdmF0ZU5hbWUoKmlkZW50KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCpp
ZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkKQorICAgICAgICAg
ICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVk
S2V5d29yZFByaXZhdGVOYW1lOworICAgICAgICAgICAgaWYgKCFpZGVudCkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gSU5WQUxJRF9QUklWQVRFX05BTUVfRVJST1JUT0s7CisgICAgICAgIH0KICAg
ICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IGlkZW50OwogICAgIH0gZWxzZQogICAgICAgICB0b2tl
bkRhdGEtPmlkZW50ID0gMDsKICAgICAKLSAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1h
eFRva2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxhZ3MgJiBMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRX
b3JkcykpKSB7CisgICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkg
JiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMpKSAmJiAhaXNQ
cml2YXRlTmFtZSkgewogICAgICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAg
ICAgICAgIGlmIChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgewogICAgICAgICAgICAgY29u
c3QgSGFzaEVudHJ5KiBlbnRyeSA9IG1fdm0tPmtleXdvcmRzLT5nZXRLZXl3b3JkKCppZGVudCk7
CkBAIC0xNjU4LDYgKzE3MTEsNyBAQCBpbk51bWJlckFmdGVyRGVjaW1hbFBvaW50OgogICAgICAg
ICBBU1NFUlQoaXNJZGVudFN0YXJ0KG1fY3VycmVudCkpOwogICAgICAgICBGQUxMVEhST1VHSDsK
ICAgICBjYXNlIENoYXJhY3RlckJhY2tTbGFzaDoKKyAgICAgICAgcGFyc2VJZGVudDoKICAgICAg
ICAgaWYgKGxleGVyRmxhZ3MgJiBMZXhleEZsYWdzRG9udEJ1aWxkS2V5d29yZHMpCiAgICAgICAg
ICAgICB0b2tlbiA9IHBhcnNlSWRlbnRpZmllcjxmYWxzZT4odG9rZW5EYXRhLCBsZXhlckZsYWdz
LCBzdHJpY3RNb2RlKTsKICAgICAgICAgZWxzZQpAQCAtMTY3MCw2ICsxNzI0LDExIEBAIGluTnVt
YmVyQWZ0ZXJEZWNpbWFsUG9pbnQ6CiAgICAgICAgIG1fdGVybWluYXRvciA9IHRydWU7CiAgICAg
ICAgIG1fbGluZVN0YXJ0ID0gbV9jb2RlOwogICAgICAgICBnb3RvIHN0YXJ0OworICAgIGNhc2Ug
Q2hhcmFjdGVyUHJpdmF0ZUlkZW50aWZpZXJTdGFydDoKKyAgICAgICAgaWYgKG1fcGFyc2luZ0J1
aWx0aW5GdW5jdGlvbikKKyAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudDsKKworICAgICAgICBG
QUxMVEhST1VHSDsKICAgICBjYXNlIENoYXJhY3RlckludmFsaWQ6CiAgICAgICAgIG1fbGV4RXJy
b3JNZXNzYWdlID0gaW52YWxpZENoYXJhY3Rlck1lc3NhZ2UoKTsKICAgICAgICAgdG9rZW4gPSBF
UlJPUlRPSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAppbmRleCAyOGM2MWJhMTk4
ZDJjMTVhNDliYjE4NTJlZDMwYmVmZWI4OTA0MDA4Li5iODg3M2U5OTUwMjg2NDRiZjhjYmIzZDRj
MmRhNTYyZTkzZTBlOGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0xleGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCkBAIC03
Miw3ICs3Miw3IEBAIGNsYXNzIExleGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IAogcHVibGljOgotICAgIExleGVyKFZNKik7CisgICAgTGV4ZXIoVk0qLCBKU1BhcnNlclN0cmlj
dG5lc3MpOwogICAgIH5MZXhlcigpOwogCiAgICAgLy8gQ2hhcmFjdGVyIG1hbmlwdWxhdGlvbiBm
dW5jdGlvbnMuCkBAIC0yMzgsNiArMjM4LDcgQEAgcHJpdmF0ZToKICAgICBJZGVudGlmaWVyQXJl
bmEqIG1fYXJlbmE7CiAKICAgICBWTSogbV92bTsKKyAgICBib29sIG1fcGFyc2luZ0J1aWx0aW5G
dW5jdGlvbjsKIH07CiAKIHRlbXBsYXRlIDw+CkBAIC0zMzUsNiArMzM2LDEyIEBAIEFMV0FZU19J
TkxJTkUgY29uc3QgSWRlbnRpZmllciogTGV4ZXI8VD46Om1ha2VMQ2hhcklkZW50aWZpZXIoY29u
c3QgVUNoYXIqIGNoYXJhCiAgICAgcmV0dXJuICZtX2FyZW5hLT5tYWtlSWRlbnRpZmllckxDaGFy
RnJvbVVDaGFyKG1fdm0sIGNoYXJhY3RlcnMsIGxlbmd0aCk7CiB9CiAKKyNpZiBBU1NFUlRfRElT
QUJMRUQKK0FMV0FZU19JTkxJTkUgYm9vbCBpc1NhZmVJZGVudGlmaWVyKFZNJiwgY29uc3QgSWRl
bnRpZmllciopIHsgcmV0dXJuIHRydWU7IH0KKyNlbHNlCitib29sIGlzU2FmZUlkZW50aWZpZXIo
Vk0mLCBjb25zdCBJZGVudGlmaWVyKik7CisjZW5kaWYKKwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVy
KEpTVG9rZW4qIHRva2VuUmVjb3JkLCB1bnNpZ25lZCBsZXhlckZsYWdzLCBib29sIHN0cmljdE1v
ZGUpCiB7CkBAIC0zNzAsMTAgKzM3NywxNSBAQCBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExl
eGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW4qIHRva2VuUmVjb3JkLCB1bgogICAg
IEFTU0VSVChjdXJyZW50T2Zmc2V0KCkgPj0gY3VycmVudExpbmVTdGFydE9mZnNldCgpKTsKIAog
ICAgIC8vIENyZWF0ZSB0aGUgaWRlbnRpZmllciBpZiBuZWVkZWQKLSAgICBpZiAobGV4ZXJGbGFn
cyAmIExleGV4RmxhZ3NEb250QnVpbGRLZXl3b3JkcykKKyAgICBpZiAobGV4ZXJGbGFncyAmIExl
eGV4RmxhZ3NEb250QnVpbGRLZXl3b3JkcworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAg
JiYgIW1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbgorI2VuZGlmCisgICAgICAgICkKICAgICAgICAg
dG9rZW5EYXRhLT5pZGVudCA9IDA7CiAgICAgZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50
ID0gbWFrZUxDaGFySWRlbnRpZmllcihzdGFydCwgcHRyIC0gc3RhcnQpOworCiAgICAgdG9rZW5M
b2NhdGlvbi0+bGluZSA9IG1fbGluZU51bWJlcjsKICAgICB0b2tlbkxvY2F0aW9uLT5saW5lU3Rh
cnRPZmZzZXQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CiAgICAgdG9rZW5Mb2NhdGlvbi0+
c3RhcnRPZmZzZXQgPSBvZmZzZXRGcm9tU291cmNlUHRyKHN0YXJ0KTsKQEAgLTM4MSw2ICszOTMs
MTMgQEAgQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRp
ZmllcihKU1Rva2VuKiB0b2tlblJlY29yZCwgdW4KICAgICBBU1NFUlQodG9rZW5Mb2NhdGlvbi0+
c3RhcnRPZmZzZXQgPj0gdG9rZW5Mb2NhdGlvbi0+bGluZVN0YXJ0T2Zmc2V0KTsKICAgICB0b2tl
blJlY29yZC0+bV9zdGFydFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbjsKICAgICB0b2tlblJlY29y
ZC0+bV9lbmRQb3NpdGlvbiA9IGN1cnJlbnRQb3NpdGlvbigpOworI2lmICFBU1NFUlRfRElTQUJM
RUQKKyAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CisgICAgICAgIGlmICghaXNT
YWZlSWRlbnRpZmllcigqbV92bSwgdG9rZW5EYXRhLT5pZGVudCkpCisgICAgICAgICAgICByZXR1
cm4gRVJST1JUT0s7CisgICAgfQorI2VuZGlmCisKICAgICBtX2xhc3RUb2tlbiA9IElERU5UOwog
ICAgIHJldHVybiBJREVOVDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5j
cHAKaW5kZXggZmM5Y2NkOWY2YzU3NmMxYWVmNTQ3ZjIxMWZkZDU5NmY0MmUwNTgwNi4uZDk1MmJh
NmE5NGQyZjZiNDE4MjE1NTAwNGQwYTk3MDg0MjliZDc4YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTEzMiw2ICsxMzIsMTIgQEAgUGFzc1JlZlB0cjxQcm9ncmFt
Tm9kZT4gUHJvZ3JhbU5vZGU6OmNyZWF0ZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
c3RhcnQKICAgICByZXR1cm4gbm9kZS5yZWxlYXNlKCk7CiB9CiAKKwordm9pZCBQcm9ncmFtTm9k
ZTo6c2V0Q2xvc2VkVmFyaWFibGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYg
Y2xvc2VkVmFyaWFibGVzKQoreworICAgIG1fY2xvc2VkVmFyaWFibGVzID0gc3RkOjptb3ZlKGNs
b3NlZFZhcmlhYmxlcyk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBF
dmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBpbmxpbmUgRXZhbE5vZGU6
OkV2YWxOb2RlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNv
dXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNr
KiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCBkNzc5YTE3OGQ5NTZmZjk5ZmQw
YmVkNWQ1ZjQ1NGFhM2U2YjUwODc5Li44MTZmZjAwMWFiZjAzNzZjNjQyZjFhOTM4ZDBlMGE5ZjUy
OWNhNmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xNDMxLDYgKzE0
MzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBuZWVkc0FjdGl2YXRpb24oKSBj
b25zdCB7IHJldHVybiAoaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkgfHwgKG1fZmVhdHVyZXMgJiAo
RXZhbEZlYXR1cmUgfCBXaXRoRmVhdHVyZSB8IENhdGNoRmVhdHVyZSkpOyB9CiAgICAgICAgIGJv
b2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiAhIW1fY2FwdHVyZWRWYXJp
YWJsZXMuc2l6ZSgpOyB9CiAgICAgICAgIHNpemVfdCBjYXB0dXJlZFZhcmlhYmxlQ291bnQoKSBj
b25zdCB7IHJldHVybiBtX2NhcHR1cmVkVmFyaWFibGVzLnNpemUoKTsgfQorICAgICAgICBjb25z
dCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2Fw
dHVyZWRWYXJpYWJsZXM7IH0KICAgICAgICAgYm9vbCBjYXB0dXJlcyhjb25zdCBJZGVudGlmaWVy
JiBpZGVudCkgeyByZXR1cm4gbV9jYXB0dXJlZFZhcmlhYmxlcy5jb250YWlucyhpZGVudC5pbXBs
KCkpOyB9CiAKICAgICAgICAgVmFyU3RhY2smIHZhclN0YWNrKCkgeyByZXR1cm4gbV92YXJTdGFj
azsgfQpAQCAtMTQ0Niw2ICsxNDQ3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0YXRl
bWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgZW1pdFN0
YXRlbWVudHNCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRlc3RpbmF0
aW9uKTsKKyAgICAgICAgCisgICAgICAgIHZvaWQgc2V0Q2xvc2VkVmFyaWFibGVzKGNvbnN0IFZl
Y3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYpIHsgfQogCiAgICAgcHJvdGVjdGVkOgogICAgICAg
ICB2b2lkIHNldFNvdXJjZShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpIHsgbV9zb3VyY2UgPSBz
b3VyY2U7IH0KQEAgLTE0NzUsMTEgKzE0NzgsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgc3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9uID0gZmFsc2U7CiAKKyAgICAgICAg
dm9pZCBzZXRDbG9zZWRWYXJpYWJsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4m
Jik7CisgICAgICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiBjbG9zZWRWYXJp
YWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2Nsb3NlZFZhcmlhYmxlczsgfQogICAgIHByaXZhdGU6
CiAgICAgICAgIFByb2dyYW1Ob2RlKFZNKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25l
ZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwg
SWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1D
b25zdGFudHMpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwotCisgICAgICAgIFZlY3RvcjxS
ZWZQdHI8U3RyaW5nSW1wbD4+IG1fY2xvc2VkVmFyaWFibGVzOwogICAgICAgICB1bnNpZ25lZCBt
X3N0YXJ0Q29sdW1uOwogICAgICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKICAgICB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDI5NzY2NmU3MjZlNDVkMDgz
ZWYxMzQ5ZGRmZmRmMzdlZjgwMGRmN2EuLjUwYmVjNzlmZTM4YWRmOGYzYTA0ZjZiNDZjYmQyYTVj
YmZjZjI0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTIw
NCw4ICsyMDQsOSBAQCBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKFZNKiB2bSwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcnMqCiAgICAgLCBtX2xhc3RJZGVudGlm
aWVyKDApCiAgICAgLCBtX2xhc3RGdW5jdGlvbk5hbWUobnVsbHB0cikKICAgICAsIG1fc291cmNl
RWxlbWVudHMoMCkKKyAgICAsIG1fcGFyc2luZ0J1aWx0aW4oc3RyaWN0bmVzcyA9PSBKU1BhcnNl
QnVpbHRpbikKIHsKLSAgICBtX2xleGVyID0gYWRvcHRQdHIobmV3IExleGVyVHlwZSh2bSkpOwor
ICAgIG1fbGV4ZXIgPSBhZG9wdFB0cihuZXcgTGV4ZXJUeXBlKHZtLCBzdHJpY3RuZXNzKSk7CiAg
ICAgbV9hcmVuYSA9IG1fdm0tPnBhcnNlckFyZW5hLmdldCgpOwogICAgIG1fbGV4ZXItPnNldENv
ZGUoc291cmNlLCBtX2FyZW5hKTsKICAgICBtX3Rva2VuLm1fbG9jYXRpb24ubGluZSA9IHNvdXJj
ZS5maXJzdExpbmUoKTsKQEAgLTI1Niw2ICsyNTcsNyBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlSW5uZXIoKQogICAgIElkZW50aWZpZXJTZXQgY2FwdHVyZWRWYXJpYWJsZXM7CiAg
ICAgYm9vbCBtb2RpZmllZFBhcmFtZXRlciA9IGZhbHNlOwogICAgIHNjb3BlLT5nZXRDYXB0dXJl
ZFZhcmlhYmxlcyhjYXB0dXJlZFZhcmlhYmxlcywgbW9kaWZpZWRQYXJhbWV0ZXIpOworICAgIAog
ICAgIENvZGVGZWF0dXJlcyBmZWF0dXJlcyA9IGNvbnRleHQuZmVhdHVyZXMoKTsKICAgICBpZiAo
c2NvcGUtPnN0cmljdE1vZGUoKSkKICAgICAgICAgZmVhdHVyZXMgfD0gU3RyaWN0TW9kZUZlYXR1
cmU7CkBAIC0yNjMsMjEgKzI2NSwzNiBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
SW5uZXIoKQogICAgICAgICBmZWF0dXJlcyB8PSBTaGFkb3dzQXJndW1lbnRzRmVhdHVyZTsKICAg
ICBpZiAobW9kaWZpZWRQYXJhbWV0ZXIpCiAgICAgICAgIGZlYXR1cmVzIHw9IE1vZGlmaWVkUGFy
YW1ldGVyRmVhdHVyZTsKLQorICAgIAorICAgIFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+IGNs
b3NlZFZhcmlhYmxlczsKKyAgICBpZiAobV9wYXJzaW5nQnVpbHRpbikgeworICAgICAgICBSRUxF
QVNFX0FTU0VSVCghY2FwdHVyZWRWYXJpYWJsZXMuc2l6ZSgpKTsKKyAgICAgICAgSWRlbnRpZmll
clNldCB1c2VkVmFyaWFibGVzOworICAgICAgICBzY29wZS0+Z2V0VXNlZFZhcmlhYmxlcyh1c2Vk
VmFyaWFibGVzKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiB2YXJpYWJsZSA6IHVzZWRWYXJp
YWJsZXMpIHsKKyAgICAgICAgICAgIGlmIChzY29wZS0+aGFzRGVjbGFyZWRWYXJpYWJsZShJZGVu
dGlmaWVyKG1fdm0sIHZhcmlhYmxlLmdldCgpKSkpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChzY29wZS0+aGFzRGVjbGFyZWRQYXJhbWV0
ZXIoSWRlbnRpZmllcihtX3ZtLCB2YXJpYWJsZS5nZXQoKSkpKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgY2xvc2VkVmFyaWFibGVzLmFwcGVuZCh2YXJpYWJsZSk7Cisg
ICAgICAgIH0KKyAgICB9CiAgICAgZGlkRmluaXNoUGFyc2luZyhzb3VyY2VFbGVtZW50cywgY29u
dGV4dC52YXJEZWNsYXJhdGlvbnMoKSwgY29udGV4dC5mdW5jRGVjbGFyYXRpb25zKCksIGZlYXR1
cmVzLAotICAgICAgICBjb250ZXh0Lm51bUNvbnN0YW50cygpLCBjYXB0dXJlZFZhcmlhYmxlcyk7
CisgICAgICAgIGNvbnRleHQubnVtQ29uc3RhbnRzKCksIGNhcHR1cmVkVmFyaWFibGVzLCBzdGQ6
Om1vdmUoY2xvc2VkVmFyaWFibGVzKSk7CiAKICAgICByZXR1cm4gcGFyc2VFcnJvcjsKIH0KIAog
dGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHZvaWQgUGFyc2VyPExleGVyVHlwZT46OmRp
ZEZpbmlzaFBhcnNpbmcoU291cmNlRWxlbWVudHMqIHNvdXJjZUVsZW1lbnRzLCBQYXJzZXJBcmVu
YURhdGE8RGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrPiogdmFyU3RhY2ssIAotICAgIFBhcnNl
ckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qIGZ1bmNTdGFjaywg
Q29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzLCBJZGVudGlmaWVyU2V0JiBj
YXB0dXJlZFZhcnMpCisgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5j
dGlvblN0YWNrPiogZnVuY1N0YWNrLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25z
dGFudHMsIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFycywgY29uc3QgVmVjdG9yPFJlZlB0cjxT
dHJpbmdJbXBsPj4mJiBjbG9zZWRWYXJpYWJsZXMpCiB7CiAgICAgbV9zb3VyY2VFbGVtZW50cyA9
IHNvdXJjZUVsZW1lbnRzOwogICAgIG1fdmFyRGVjbGFyYXRpb25zID0gdmFyU3RhY2s7CiAgICAg
bV9mdW5jRGVjbGFyYXRpb25zID0gZnVuY1N0YWNrOwogICAgIG1fY2FwdHVyZWRWYXJpYWJsZXMu
c3dhcChjYXB0dXJlZFZhcnMpOworICAgIG1fY2xvc2VkVmFyaWFibGVzID0gY2xvc2VkVmFyaWFi
bGVzOwogICAgIG1fZmVhdHVyZXMgPSBmZWF0dXJlczsKICAgICBtX251bUNvbnN0YW50cyA9IG51
bUNvbnN0YW50czsKIH0KQEAgLTIzNDYsNiArMjM2MywxMCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
TGV4ZXJUeXBlPiB2b2lkIFBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRUb2tlblRl
eHQoVwogICAgIGNhc2UgUkVTRVJWRUQ6CiAgICAgICAgIG91dC5wcmludCgiVW5leHBlY3RlZCB1
c2Ugb2YgcmVzZXJ2ZWQgd29yZCAnIiwgZ2V0VG9rZW4oKSwgIiciKTsKICAgICAgICAgcmV0dXJu
OworCisgICAgY2FzZSBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzoKKyAgICAgICAgb3V0
LnByaW50KCJJbnZhbGlkIHByaXZhdGUgbmFtZSAnIiwgZ2V0VG9rZW4oKSwgIiciKTsKKyAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgCiAgICAgY2FzZSBJREVOVDoKICAgICAgICAgb3V0LnBy
aW50KCJVbmV4cGVjdGVkIGlkZW50aWZpZXIgJyIsIGdldFRva2VuKCksICInIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBiNjk4ZWY5MzY4Y2I4YzhmMTk3Y2NkMDAw
YWNhYTZkZmIxMWJhMjQ0Li45MDMzODUwYzhjOTdmNTdlMjFkYTVlZWRiMDJkMDQ0ZjRjODk3OGVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTIzLDYgKzIzLDcgQEAK
ICNpZm5kZWYgUGFyc2VyX2gKICNkZWZpbmUgUGFyc2VyX2gKIAorI2luY2x1ZGUgIkNvbW1vbklk
ZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25I
ZWxwZXJzLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgpAQCAtMjU5LDYgKzI2MCwxMCBAQCBz
dHJ1Y3QgU2NvcGUgewogICAgICAgICByZXR1cm4gaXNWYWxpZFN0cmljdE1vZGUgPyBCaW5kaW5n
U3VjY2VlZGVkIDogU3RyaWN0QmluZGluZ0ZhaWxlZDsKICAgICB9CiAKKyAgICB2b2lkIGdldFVz
ZWRWYXJpYWJsZXMoSWRlbnRpZmllclNldCYgdXNlZFZhcmlhYmxlcykKKyAgICB7CisgICAgICAg
IHVzZWRWYXJpYWJsZXMuc3dhcChtX3VzZWRWYXJpYWJsZXMpOworICAgIH0KIAogICAgIHZvaWQg
dXNlVmFyaWFibGUoY29uc3QgSWRlbnRpZmllciogaWRlbnQsIGJvb2wgaXNFdmFsKQogICAgIHsK
QEAgLTQxNCw2ICs0MTksNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBw
YXJzZShQYXJzZXJFcnJvciYpOwogCiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVM
YXN0TmV3bGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4ZXItPnBvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmUoKTsgfQorICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYgY2xvc2Vk
VmFyaWFibGVzKCkgeyByZXR1cm4gc3RkOjptb3ZlKG1fY2xvc2VkVmFyaWFibGVzKTsgfQogCiBw
cml2YXRlOgogICAgIHN0cnVjdCBBbGxvd0luT3ZlcnJpZGUgewpAQCAtNTQwLDcgKzU0Niw3IEBA
IHByaXZhdGU6CiAgICAgU3RyaW5nIHBhcnNlSW5uZXIoKTsKIAogICAgIHZvaWQgZGlkRmluaXNo
UGFyc2luZyhTb3VyY2VFbGVtZW50cyosIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNr
czo6VmFyU3RhY2s+KiwgCi0gICAgICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNr
czo6RnVuY3Rpb25TdGFjaz4qLCBDb2RlRmVhdHVyZXMsIGludCwgSWRlbnRpZmllclNldCYpOwor
ICAgICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+
KiwgQ29kZUZlYXR1cmVzLCBpbnQsIElkZW50aWZpZXJTZXQmLCBjb25zdCBWZWN0b3I8UmVmUHRy
PFN0cmluZ0ltcGw+PiYmKTsKIAogICAgIC8vIFVzZWQgdG8gZGV0ZXJtaW5lIHR5cGUgb2YgZXJy
b3IgdG8gcmVwb3J0LgogICAgIGJvb2wgaXNGdW5jdGlvbkJvZHlOb2RlKFNjb3BlTm9kZSopIHsg
cmV0dXJuIGZhbHNlOyB9CkBAIC04NDAsOSArODQ2LDExIEBAIHByaXZhdGU6CiAgICAgY29uc3Qg
SWRlbnRpZmllciogbV9sYXN0RnVuY3Rpb25OYW1lOwogICAgIFJlZlB0cjxTb3VyY2VQcm92aWRl
ckNhY2hlPiBtX2Z1bmN0aW9uQ2FjaGU7CiAgICAgU291cmNlRWxlbWVudHMqIG1fc291cmNlRWxl
bWVudHM7CisgICAgYm9vbCBtX3BhcnNpbmdCdWlsdGluOwogICAgIFBhcnNlckFyZW5hRGF0YTxE
ZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+KiBtX3ZhckRlY2xhcmF0aW9uczsKICAgICBQYXJz
ZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KiBtX2Z1bmNEZWNs
YXJhdGlvbnM7CiAgICAgSWRlbnRpZmllclNldCBtX2NhcHR1cmVkVmFyaWFibGVzOworICAgIFZl
Y3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+IG1fY2xvc2VkVmFyaWFibGVzOwogICAgIENvZGVGZWF0
dXJlcyBtX2ZlYXR1cmVzOwogICAgIGludCBtX251bUNvbnN0YW50czsKICAgICAKQEAgLTk1Nyw2
ICs5NjUsMTAgQEAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBwYXJzZShWTSogdm0sIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25QYXJhbWV0ZXIKICAgICAgICAgUmVmUHRyPFBhcnNl
ZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvcik7CiAgICAgICAg
IGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAgICAgICAgKnBvc2l0aW9uQmVm
b3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOworICAg
ICAgICBpZiAoc3RyaWN0bmVzcyA9PSBKU1BhcnNlQnVpbHRpbikgeworICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQocmVzdWx0KTsKKyAgICAgICAgICAgIHJlc3VsdC0+c2V0Q2xvc2VkVmFyaWFi
bGVzKHN0ZDo6bW92ZShwYXJzZXIuY2xvc2VkVmFyaWFibGVzKCkpKTsKKyAgICAgICAgfQogICAg
ICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKICAgICB9CiAgICAgUGFyc2VyPExleGVyPFVD
aGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIHBhcmFtZXRlcnMsIG5hbWUsIHN0cmljdG5lc3MsIHBh
cnNlck1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXJNb2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCmlu
ZGV4IDRlOWExN2NkMjFjYTM0MTQ2YmJkNDgxNTZhMzcyY2Q0MDRkZWY2MGMuLmY3YTc1YmY3YzM3
ODU3ZTQ0YjZkNWQ3MWY0NTI5YmIxYWMxY2Y1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlck1vZGVzLmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLWVudW0gSlNQYXJzZXJTdHJpY3RuZXNzIHsgSlNQYXJzZU5vcm1hbCwgSlNQYXJzZVN0cmlj
dCB9OworZW51bSBKU1BhcnNlclN0cmljdG5lc3MgeyBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlQnVp
bHRpbiwgSlNQYXJzZVN0cmljdCB9OwogZW51bSBKU1BhcnNlck1vZGUgeyBKU1BhcnNlUHJvZ3Jh
bUNvZGUsIEpTUGFyc2VGdW5jdGlvbkNvZGUgfTsKIAogZW51bSBQcm9maWxlck1vZGUgeyBQcm9m
aWxlck9mZiwgUHJvZmlsZXJPbiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXJUb2tlbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyVG9rZW5zLmgKaW5kZXggODJhMjY2MzlhNzkyMjBhMDg0NDU2YjQ4ZjMyODUyZDE0M2M3Mzlk
MC4uOGM4N2FkOWZhZGJkYzRhZjM5YWM5OWRiMmQ4NDQ1ZTEzZmZmZDM1YSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCkBAIC0xNDksNiArMTQ5LDcgQEAg
ZW51bSBKU1Rva2VuVHlwZSB7CiAgICAgSU5WQUxJRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0sg
PSA3IHwgRXJyb3JUb2tlbkZsYWcsCiAgICAgVU5URVJNSU5BVEVEX1NUUklOR19MSVRFUkFMX0VS
Uk9SVE9LID0gOCB8IEVycm9yVG9rZW5GbGFnIHwgVW50ZXJtaW5hdGVkRXJyb3JUb2tlbkZsYWcs
CiAgICAgSU5WQUxJRF9TVFJJTkdfTElURVJBTF9FUlJPUlRPSyA9IDkgfCBFcnJvclRva2VuRmxh
ZywKKyAgICBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSyA9IDEwIHwgRXJyb3JUb2tlbkZs
YWcKIH07CiAKIHN0cnVjdCBKU1RleHRQb3NpdGlvbiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ0xpc3QuY3BwCmluZGV4IGUxMzEwNGRmNTkyMmQwNzc2MjU3ZDA1Y2I1ZTg3MDUz
N2QyMTQyOGEuLjI0YzA2YmJiMWMyYzM0YjlkYTVlZjg0YjI1NWM5OTAwZGFmODU5MTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwCkBAIC0yMiw3ICsyMiw3IEBA
CiAjaW5jbHVkZSAiQXJnTGlzdC5oIgogCiAjaW5jbHVkZSAiSGVhcFJvb3RWaXNpdG9yLmgiCi0j
aW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCmluZGV4IDhmZDE5NWNiOWI1Zjdl
ZjViZjNkMmZkOTMzNDJiMDEwMjcyNWZhZjEuLjRmYmFjNjg4NjM0ODYxNzE2NDlhMzM0ZDYxYjVk
Y2MzODE0ZGQ1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
Z3VtZW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRz
LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgogCiAjaW5jbHVk
ZSAiQ2FsbEZyYW1lSW5saW5lcy5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAj
aW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNBcmd1bWVudHNJdGVyYXRvci5o
IgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJndW1lbnRzLmgKaW5kZXggMThmMzg5MTcxMzg1MjM2MmM3YTc1YTMwNTNiNDYzMTQxN2JlYjgx
Yi4uZjE2ZmQzZGU0MDU1OTcwYmE5ZDljNmYwYWU2MzE4ZjIyMDRiNjU0ZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNkZWZp
bmUgQXJndW1lbnRzX2gKIAogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJDb21t
b25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRv
ckNvbnN0cnVjdG9yLmNwcAppbmRleCBhZmI1OTc5MGNiMDA5OTg5YmI3YjQyODYzZTkxODIzMzU3
NmI4YWFjLi45MWNhY2RmYTg1N2ViNjkzNzZhMzA4MWE4YzcwMmFjOWMyMTdjYTdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvckNvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJ
dGVyYXRvckNvbnN0cnVjdG9yLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkFyZ3Vt
ZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuaCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50c0l0ZXJhdG9y
UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJK
U0FyZ3VtZW50c0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNp
bmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKaW5kZXggZGQw
ODk0ZjE0YTAyMWQ1ZjEyNjU4YWNiMDFlNzIxZmNkNmQzNDhjYy4uNWI0YWU4NzE2YjA1NTNiZTQ2
MjM5NTVlOTllMWI0M2ViZjE4ZmUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtMjYs
NyArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFyZ3VtZW50c0l0ZXJh
dG9yUHJvdG90eXBlLmgiCiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1
ZGUgIkpTQXJndW1lbnRzSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5o
IgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IDI3YWM2ZDQ4YTcxZjc5NTUwMmExMGNlYTY0Nzg2
NTQxMzVhNDYzYTAuLjZkYzdiZTU2OTY5ZGU2N2Y2MjEwN2JiM2E1MWEzMDhmYTNiYTc2YmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAK
QEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0FycmF5SXRl
cmF0b3IuaCIKICNpbmNsdWRlICJKU1N0cmluZ0J1aWxkZXIuaCIKKyNpbmNsdWRlICJKU1N0cmlu
Z0lubGluZXMuaCIKICNpbmNsdWRlICJKU1N0cmluZ0pvaW5lci5oIgogI2luY2x1ZGUgIkxvb2t1
cC5oIgogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgpAQCAtNTYsNyArNTcsNiBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NsaWNlKEV4ZWNT
dGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1
bmNTb3J0KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlQcm90b0Z1bmNTcGxpY2UoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1VuU2hpZnQoRXhlY1N0YXRlKik7Ci1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0V2ZXJ5KEV4ZWNTdGF0
ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNG
b3JFYWNoKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlQcm90b0Z1bmNTb21lKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0ZSopOwpAQCAtOTU0LDY5
ICs5NTQsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jTWFw
KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdEFycmF5
KTsKIH0KIAotLy8gRG9jdW1lbnRhdGlvbiBmb3IgdGhlc2UgdGhyZWUgaXMgYXZhaWxhYmxlIGF0
OgotLy8gaHR0cDovL2RldmVsb3Blci10ZXN0Lm1vemlsbGEub3JnL2VuL2RvY3MvQ29yZV9KYXZh
U2NyaXB0XzEuNV9SZWZlcmVuY2U6T2JqZWN0czpBcnJheTpldmVyeQotLy8gaHR0cDovL2RldmVs
b3Blci10ZXN0Lm1vemlsbGEub3JnL2VuL2RvY3MvQ29yZV9KYXZhU2NyaXB0XzEuNV9SZWZlcmVu
Y2U6T2JqZWN0czpBcnJheTpmb3JFYWNoCi0vLyBodHRwOi8vZGV2ZWxvcGVyLXRlc3QubW96aWxs
YS5vcmcvZW4vZG9jcy9Db3JlX0phdmFTY3JpcHRfMS41X1JlZmVyZW5jZTpPYmplY3RzOkFycmF5
OnNvbWUKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0V2ZXJ5
KEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBKU09iamVjdCogdGhpc09iaiA9IGV4ZWMtPmhvc3RU
aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7Ci0gICAg
dW5zaWduZWQgbGVuZ3RoID0gdGhpc09iai0+Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5sZW5ndGgpLnRvVUludDMyKGV4ZWMpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQotICAgIEpT
VmFsdWUgZnVuY3Rpb24gPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBDYWxsRGF0YSBjYWxsRGF0
YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0
YSk7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0KLSAgICBKU1ZhbHVlIGFwcGx5VGhpcyA9IGV4ZWMtPmFy
Z3VtZW50KDEpOwotCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4odHJ1ZSk7Ci0KLSAg
ICB1bnNpZ25lZCBrID0gMDsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVKUyAmJiBpc0pT
QXJyYXkodGhpc09iaikpIHsKLSAgICAgICAgSlNGdW5jdGlvbiogZiA9IGpzQ2FzdDxKU0Z1bmN0
aW9uKj4oZnVuY3Rpb24pOwotICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodGhpc09i
aik7Ci0gICAgICAgIENhY2hlZENhbGwgY2FjaGVkQ2FsbChleGVjLCBmLCAzKTsKLSAgICAgICAg
Zm9yICg7IGsgPCBsZW5ndGggJiYgIWV4ZWMtPmhhZEV4Y2VwdGlvbigpOyArK2spIHsKLSAgICAg
ICAgICAgIGlmIChVTkxJS0VMWSghYXJyYXktPmNhbkdldEluZGV4UXVpY2tseShrKSkpCi0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGNhY2hlZENhbGwu
c2V0VGhpcyhhcHBseVRoaXMpOwotICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudCgw
LCBhcnJheS0+Z2V0SW5kZXhRdWlja2x5KGspKTsKLSAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0
QXJndW1lbnQoMSwganNOdW1iZXIoaykpOwotICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1
bWVudCgyLCB0aGlzT2JqKTsKLSAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FjaGVkQ2Fs
bC5jYWxsKCk7Ci0gICAgICAgICAgICBpZiAoIXJlc3VsdC50b0Jvb2xlYW4oZXhlYykpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKLSAg
ICAgICAgfQotICAgIH0KLSAgICBmb3IgKDsgayA8IGxlbmd0aCAmJiAhZXhlYy0+aGFkRXhjZXB0
aW9uKCk7ICsraykgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqKTsKLSAgICAg
ICAgaWYgKCF0aGlzT2JqLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaywgc2xvdCkpCi0gICAgICAg
ICAgICBjb250aW51ZTsKLQotICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBlYWNoQXJndW1l
bnRzOwotICAgICAgICBlYWNoQXJndW1lbnRzLmFwcGVuZChzbG90LmdldFZhbHVlKGV4ZWMsIGsp
KTsKLSAgICAgICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQoanNOdW1iZXIoaykpOwotICAgICAgICBl
YWNoQXJndW1lbnRzLmFwcGVuZCh0aGlzT2JqKTsKLQotICAgICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwotCi0gICAgICAgIGJvb2wgcHJlZGljYXRlUmVzdWx0ID0gY2FsbChleGVjLCBmdW5jdGlv
biwgY2FsbFR5cGUsIGNhbGxEYXRhLCBhcHBseVRoaXMsIGVhY2hBcmd1bWVudHMpLnRvQm9vbGVh
bihleGVjKTsKLSAgICAgICAgaWYgKCFwcmVkaWNhdGVSZXN1bHQpIHsKLSAgICAgICAgICAgIHJl
c3VsdCA9IGpzQm9vbGVhbihmYWxzZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKLX0KLQogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0ZvckVhY2goRXhlY1N0YXRlKiBl
eGVjKQogewogICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpLnRv
VGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IDUxMGUzODNmYWU1NzVhYWRhODE3NmMw
NDQxZWU3MjViNDNhNGM3MzIuLmQzMDQ4NzdmZTljZGUxYzA5MTlmZDQ1OTVmODExZWNhYmNlNzcy
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAt
MTQ0LDI0ICsxNDQsMjYgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNoZTo6
Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUoVk0mIHYKICAgICBKU1RleHRQb3Np
dGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lOwogICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4g
cHJvZ3JhbSA9IHBhcnNlPFByb2dyYW1Ob2RlPigmdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigp
LCBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlUHJvZ3JhbUNvZGUsIGVycm9yLCAmcG9zaXRpb25CZWZv
cmVMYXN0TmV3bGluZSk7CiAgICAgaWYgKCFwcm9ncmFtKSB7Ci0gICAgICAgIEFTU0VSVChlcnJv
ci5tX3R5cGUgIT0gUGFyc2VyRXJyb3I6OkVycm9yTm9uZSk7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGVycm9yLm1fdHlwZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKICAgICAgICAgbV9z
b3VyY2VDb2RlLnJlbW92ZShhZGRSZXN1bHQuaXRlcmF0b3IpOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgYW4gaW5wdXQgc3RyaW5nIHRo
YXQgd291bGQgcmVzdWx0IGluIGEgc2luZ2xlIGFub255bW91cyBmdW5jdGlvbiBleHByZXNzaW9u
LgogICAgIFN0YXRlbWVudE5vZGUqIGV4cHJTdGF0ZW1lbnQgPSBwcm9ncmFtLT5zaW5nbGVTdGF0
ZW1lbnQoKTsKLSAgICBBU1NFUlQoZXhwclN0YXRlbWVudCk7Ci0gICAgQVNTRVJUKGV4cHJTdGF0
ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChleHByU3RhdGVt
ZW50KTsKKyAgICBSRUxFQVNFX0FTU0VSVChleHByU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQo
KSk7CiAgICAgRXhwcmVzc2lvbk5vZGUqIGZ1bmNFeHByID0gc3RhdGljX2Nhc3Q8RXhwclN0YXRl
bWVudE5vZGUqPihleHByU3RhdGVtZW50KS0+ZXhwcigpOwotICAgIEFTU0VSVChmdW5jRXhwcik7
CisgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHIpOwogICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmNF
eHByLT5pc0Z1bmNFeHByTm9kZSgpKTsKICAgICBGdW5jdGlvbkJvZHlOb2RlKiBib2R5ID0gc3Rh
dGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZnVuY0V4cHIpLT5ib2R5KCk7CisgICAgUkVMRUFTRV9B
U1NFUlQoIXByb2dyYW0tPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpOworICAgIAogICAgIGJvZHkt
PnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwotICAgIEFTU0VSVChi
b2R5KTsKLSAgICBBU1NFUlQoYm9keS0+aWRlbnQoKS5pc051bGwoKSk7CisgICAgUkVMRUFTRV9B
U1NFUlQoYm9keSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keS0+aWRlbnQoKS5pc051bGwoKSk7
CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0g
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgYm9keSwgdHJ1
ZSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIGJvZHksIHRy
dWUsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24pOwogICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+bV9u
YW1lVmFsdWUuc2V0KHZtLCBmdW5jdGlvbkV4ZWN1dGFibGUsIGpzU3RyaW5nKCZ2bSwgbmFtZS5z
dHJpbmcoKSkpOwogCiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IFNvdXJjZUNvZGVW
YWx1ZSh2bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBtX3NvdXJjZUNvZGUuYWdlKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCmlu
ZGV4IDNmNWM2NDVjMDk4ZDUyN2ZjMGM3MjU5ZTk0NDdlZmJlODg2OGEyOWMuLjJmYzJiNzI3YWZj
ZWVlMWVjMmM2MjVkZTU2NzViM2JlMWNmNjBkNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKQEAgLTI3LDcgKzI3LDEwIEBA
IG5hbWVzcGFjZSBKU0MgewogCiAjZGVmaW5lIElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRShuYW1l
KSAsIG5hbWUodm0sICNuYW1lKQogI2RlZmluZSBJTklUSUFMSVpFX0tFWVdPUkQobmFtZSkgLCBu
YW1lIyNLZXl3b3JkKHZtLCAjbmFtZSkKLSNkZWZpbmUgSU5JVElBTElaRV9QUklWQVRFX05BTUUo
bmFtZSkgLCBuYW1lIyNQcml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tKFByaXZhdGVOYW1lKCkp
KQorI2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFNRShuYW1lKSBcCisgICAgLCBuYW1lIyNQ
cml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tKFByaXZhdGVOYW1lKCkpKSBcCisgICAgLCBtXyMj
bmFtZSMjUHVibGljU3RyaW5nUGFpcihuYW1lLCBuYW1lIyNQcml2YXRlTmFtZSkgXAorCiAKIENv
bW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyhWTSogdm0pCiAgICAgOiBudWxsSWRl
bnRpZmllcigpCkBAIC0zOCw4ICs0MSwyNiBAQCBDb21tb25JZGVudGlmaWVyczo6Q29tbW9uSWRl
bnRpZmllcnMoVk0qIHZtKQogICAgICwgaGFzTmV4dElkZW50aWZpZXIodm0sICJoYXNOZXh0IikK
ICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZV09SRChJTklUSUFMSVpFX0tFWVdP
UkQpCiAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElB
TElaRV9QUk9QRVJUWV9OQU1FKQorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFN
RShJTklUSUFMSVpFX1BST1BFUlRZX05BTUUpCiAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5U
SUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpFX1BSSVZBVEVfTkFNRSkKIHsKIH0K
IAorY29uc3QgSWRlbnRpZmllciogQ29tbW9uSWRlbnRpZmllcnM6OmdldFByaXZhdGVOYW1lKGNv
bnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAoreworI2RlZmluZSBSRVRVUk5fSUZfUFJJVkFU
RV9OQU1FX01BVENIRVMobmFtZSkgaWYgKG1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQYWlyLmZpcnN0
ID09IGlkZW50KSByZXR1cm4gJm1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQYWlyLnNlY29uZDsKKyAg
ICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKFJFVFVS
Tl9JRl9QUklWQVRFX05BTUVfTUFUQ0hFUykKKyN1bmRlZiBSRVRVUk5fSUZfUFJJVkFURV9OQU1F
X01BVENIRVMKKyAgICByZXR1cm4gMDsKK30KKworSWRlbnRpZmllciBDb21tb25JZGVudGlmaWVy
czo6Z2V0UHVibGljTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK3sKKyNkZWZp
bmUgUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKG5hbWUpIGlmIChtXyMjbmFtZSMjUHVi
bGljU3RyaW5nUGFpci5zZWNvbmQgPT0gaWRlbnQpIHJldHVybiBtXyMjbmFtZSMjUHVibGljU3Ry
aW5nUGFpci5maXJzdDsKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9Q
Uk9QRVJUWV9OQU1FKFJFVFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hFUykKKyN1bmRlZiBSRVRV
Uk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBlbXB0eUlkZW50aWZpZXI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmgKaW5kZXggZThmOWVkODJiYzc5NDYyMDM4MjY2YjMwMjA3ODIyNDdiMWZhMjdhMy4uOTI0ZDM2
YWM2OTEzNTAzNTdjYjM4MmIxZWYzYjQwYTBhMDhjMGFiYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0yMiw2ICsyMiw3IEBA
CiAjZGVmaW5lIENvbW1vbklkZW50aWZpZXJzX2gKIAogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIK
KyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
CiAvLyBNYXJrZWRBcmd1bWVudEJ1ZmZlciBvZiBwcm9wZXJ0eSBuYW1lcywgcGFzc2VkIHRvIGEg
bWFjcm8gc28gd2UgY2FuIGRvIHNldCB0aGVtIHVwIHZhcmlvdXMKQEAgLTEzMyw4ICsxMzQsMTAg
QEAKICAgICBtYWNybyhvc3JFeGl0cykgXAogICAgIG1hY3JvKHBhcnNlKSBcCiAgICAgbWFjcm8o
cHJvZmlsZWRCeXRlY29kZXMpIFwKKyAgICBtYWNybyhwcm9taXNlKSBcCiAgICAgbWFjcm8ocHJv
cGVydHlJc0VudW1lcmFibGUpIFwKICAgICBtYWNybyhwcm90b3R5cGUpIFwKKyAgICBtYWNybyhy
ZXNvbHZlKSBcCiAgICAgbWFjcm8oc2V0KSBcCiAgICAgbWFjcm8oc2l6ZSkgXAogICAgIG1hY3Jv
KHNsaWNlKSBcCkBAIC0xNTUsNyArMTU4LDE0IEBACiAgICAgbWFjcm8odmFsdWVzKSBcCiAgICAg
bWFjcm8odmFsdWVPZikgXAogICAgIG1hY3JvKHdpbmRvdykgXAotICAgIG1hY3JvKHdyaXRhYmxl
KQorICAgIG1hY3JvKHdyaXRhYmxlKSBcCisgICAgbWFjcm8oaXRlcmF0b3IpIFwKKyAgICBtYWNy
byhpdGVyYXRvck5leHQpIFwKKyAgICBtYWNybyhyZWplY3QpIFwKKyAgICBtYWNybyhmdWxmaWxs
bWVudEhhbmRsZXIpIFwKKyAgICBtYWNybyhyZWplY3Rpb25IYW5kbGVyKSBcCisgICAgbWFjcm8o
ZGVmZXJyZWQpIFwKKyAgICBtYWNybyhjb3VudGRvd25Ib2xkZXIpIFwKIAogI2RlZmluZSBKU0Nf
Q09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZV09SRChtYWNybykgXAogICAgIG1hY3JvKGJyZWFr
KSBcCkBAIC0yMDMsNyArMjEzLDcgQEAKICAgICBtYWNybyh2b2lkKSBcCiAgICAgbWFjcm8od2hp
bGUpIFwKICAgICBtYWNybyh3aXRoKSBcCi0gICAgbWFjcm8oeWllbGQpCisgICAgbWFjcm8oeWll
bGQpIFwKIAogI2RlZmluZSBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9Q
RVJUWV9OQU1FKG1hY3JvKSBcCiAgICAgbWFjcm8oaXRlcmF0b3IpIFwKQEAgLTIxNiw3ICsyMjYs
MTIgQEAKICAgICBtYWNybyhpbmRleCkgXAogICAgIG1hY3JvKHZhbHVlcykgXAogICAgIG1hY3Jv
KGRlZmVycmVkKSBcCi0gICAgbWFjcm8oY291bnRkb3duSG9sZGVyKQorICAgIG1hY3JvKGNvdW50
ZG93bkhvbGRlcikgXAorICAgIG1hY3JvKE9iamVjdCkgXAorICAgIG1hY3JvKFR5cGVFcnJvcikg
XAorICAgIG1hY3JvKHVuZGVmaW5lZEtleXdvcmQpIFwKKyAgICBtYWNybyhjYWxsKSBcCisgICAg
bWFjcm8oYXBwbHkpCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0yNDAsMTEgKzI1NSwxNSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjZGVmaW5lIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVf
UFJPUEVSVFlfTkFNRV9HTE9CQUwobmFtZSkgY29uc3QgSWRlbnRpZmllciBuYW1lOwogICAgICAg
ICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShKU0NfSURFTlRJRklF
Ul9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFMKQorICAgICAgICBKU0NfRk9SRUFDSF9CVUlM
VElOX0ZVTkNUSU9OX05BTUUoSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJUWV9OQU1FX0dM
T0JBTCkKICN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFM
CiAKLSNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVf
R0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSMjUHJpdmF0ZU5hbWU7CisjZGVmaW5l
IEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTChuYW1l
KSBjb25zdCBJZGVudGlmaWVyIG5hbWUjI1ByaXZhdGVOYW1lOyBjb25zdCBzdGQ6OnBhaXI8SWRl
bnRpZmllciwgSWRlbnRpZmllcj4gbV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXI7CiAgICAgICAg
IEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSlNDX0lE
RU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMKQogI3VuZGVmIEpT
Q19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTAorICAgICAg
ICAKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciogZ2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRp
ZmllciYpIGNvbnN0OworICAgICAgICBJZGVudGlmaWVyIGdldFB1YmxpY05hbWUoY29uc3QgSWRl
bnRpZmllciYpIGNvbnN0OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggMDc1
ODc1ZmIyMzE2YTU1NTcwNTBhNjY5MGNkMGY5ODgyNDg0ZjVmMy4uNWFmOTA4NzU0ZTc0N2Y4Y2Fl
MGNkMDRhZjhkNDkxNTAwNDY4YzJhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC00MSw3ICs0MSw3IEBACiAjaW5jbHVkZSAi
SklULmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIK
LSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
ICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTmFtZVNj
b3BlLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRp
b25zLmNwcAppbmRleCA1NTMzNGJlMmY5ODBhOThmN2ZlYTQyYTA1YmUwZjIwYzAxOWZmMGRkLi4x
NmViYWQxMGU0ZTQyYjZiNzg1ZTk3OGQzOGU4NzBlM2I1YTZjNDlkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRp
b25zLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJK
U0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgQ29tbW9uU2xvd1BhdGhzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggMDVlMTFlMGI4MGEz
NDMwYWVhYjIyYjAyMjJhMjEyZjRhOGUyYzQ5Yi4uMzY0Y2M3MTY2NjA4YjUwMDdkNDc3ZDg3Mzkx
OGE1ZDY0YjE2ODY1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uSGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uSGVscGVycy5jcHAKQEAgLTgxLDYgKzgxLDExIEBAIEpTT2JqZWN0KiBjcmVhdGVT
dGFja092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogSlNPYmpl
Y3QqIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCkKIHsKKyAgICAKKyAgICBpZiAoaWRlbnQuaW1wbCgpLT5pc0VtcHR5
VW5pcXVlKCkpIHsKKyAgICAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2FuJ3QgZmlu
ZCBwcml2YXRlIHZhcmlhYmxlOiBAIiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdldFB1YmxpY05h
bWUoaWRlbnQpLnN0cmluZygpKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJv
cihleGVjLCBtZXNzYWdlKTsKKyAgICB9CiAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygi
Q2FuJ3QgZmluZCB2YXJpYWJsZTogIiwgaWRlbnQuc3RyaW5nKCkpKTsKICAgICByZXR1cm4gY3Jl
YXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgbWVzc2FnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggMTk4OTc2YmIzZmU2ZTZlOTExNzk4MTJkMWNh
ZjliOGJmOWJmZDBiYi4uY2YwZTc1M2E3YzVmNTQ0NjdiNjRkOGUyYTliM2ZiYTI3MTUwMDAxMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtNDg0LDcg
KzQ4NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAKLSAgICBFeGVjdXRh
YmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5l
ZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UpOyB9Cisg
ICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRh
YmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZh
bHNlLCBmYWxzZSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1f
dW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQogICAgIHVuc2lnbmVkIG51
bWJlck9mRnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5u
dW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsgfQpAQCAtNTQwLDcgKzU0MCw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5m
bygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2Vz
RXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhl
Y3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRp
b24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSk7IH0KIAogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKQEAgLTYyOCw3ICs2Mjgs
OCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2tGb3Io
a2luZCk7CiAgICAgfQotICAgICAgICAKKworICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKTsg
fQogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0
YWJsZS0+bmFtZSgpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgaW5mZXJyZWROYW1lKCkgeyBy
ZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmluZmVycmVkTmFtZSgpOyB9CiAgICAgSlNTdHJp
bmcqIG5hbWVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1l
VmFsdWUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25Qcm90b3R5cGUuY3BwCmluZGV4IGMxYjA4YWYyZDgxOGRhZTU3ZTFiMDBmZGExNzNhODE2MTM3
NTI5YjUuLjEyNDkwYzQwZjMzNDE3ZWNhOTIzODUwYTBkYzY2MmRiYmNkNDBmMzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAK
QEAgLTIyLDEyICsyMiwxMyBAQAogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAKICNp
bmNsdWRlICJBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUg
IkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1N0cmluZ0J1aWxk
ZXIuaCIKLSNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5l
cy5oIgogI2luY2x1ZGUgIkxleGVyLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCkBAIC0x
MDgsNyArMTA5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByb3Rv
RnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKEpTRnVuY3Rp
b246OmluZm8oKSkpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNG
dW5jdGlvbio+KHRoaXNWYWx1ZSk7Ci0gICAgICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0RnVuY3Rp
b24oKSkKKyAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQog
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5n
KGV4ZWMsICJmdW5jdGlvbiAiLCBmdW5jdGlvbi0+bmFtZShleGVjKSwgIigpIHtcbiAgICBbbmF0
aXZlIGNvZGVdXG59IikpOwogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUg
PSBmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCk7CiAgICAgICAgIFN0cmluZyBzb3VyY2VTdHJpbmcg
PSBleGVjdXRhYmxlLT5zb3VyY2UoKS50b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKaW5kZXggNzJlZDFjNzEyNDA2MTE2OGIwYWRk
ZDMxMTZmNzU1YTExN2I4ZmI5MC4uYjM3NDk0MzA5OWUyMTU1YTM5NzcxMzMxMzQ3MDJjMmEyNGFj
Yzg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24u
Y3BwCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgSlNBY3RpdmF0aW9uOjp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAKIGlubGluZSBib29sIEpTQWN0aXZh
dGlvbjo6c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgp
LT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVF
bnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlkKCkp
OwogICAgIGlmIChlbnRyeS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC03
Miw3ICs3Miw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQoUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90CiAKIGlubGluZSBib29sIEpTQWN0
aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkg
PSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7Cisg
ICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9w
ZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChlbnRyeS5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCkBAIC04OSw3ICs4OSw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3lt
Ym9sVGFibGVQdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOCiAgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhl
YXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwogICAgIAotICAgIFN5bWJvbFRh
YmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1
YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCkt
PmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChlbnRyeS5pc051bGwoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChlbnRyeS5pc1JlYWRPbmx5KCkpIHsKQEAg
LTEzNiw3ICsxMzYsNyBAQCBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0
V2l0aEF0dHJpYnV0ZXMoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcAogICAgIFdyaXRlQmFycmll
ckJhc2U8VW5rbm93bj4qIHJlZzsKICAgICB7CiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIg
bG9ja2VyKHN5bWJvbFRhYmxlKCktPm1fbG9jayk7Ci0gICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6
Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZSgpLT5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1l
LnB1YmxpY05hbWUoKSk7CisgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIg
PSBzeW1ib2xUYWJsZSgpLT5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICAg
ICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUoKS0+ZW5kKGxvY2tlcikpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5ID0gaXRlci0+dmFs
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50
c0l0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRz
SXRlcmF0b3IuY3BwCmluZGV4IDJmY2Y4ODE1YzA1NjgwNTgxMmE3OTkxYTVmZjA2M2Q2ODczOTcx
NjQuLjlhOTI1ODNhYTBlYzkwZGJiMzI4ZWNkNTBkYzMxMzlhZWYwMjczYjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3Bw
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiSlNBcmd1bWVudHNJdGVyYXRvci5oIgogCiAj
aW5jbHVkZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5j
cHAKaW5kZXggOTAwN2I1ZjdkM2YxMDNiMWQyMWIxYTM2NWEyNmMyMTVjMzJiNGQyOC4uYmEwYTJk
MzhlOWM1M2UxNTkzN2Q0NmE4OTUxYThjOGM0NTA3OTI2NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJFeGVj
dXRhYmxlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSW5kZXhpbmdI
ZWFkZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
UHJvcGVydHlOYW1lQXJyYXkuaCIKICNpbmNsdWRlICJSZWplY3QuaCIKICNpbmNsdWRlIDx3dGYv
QVZMVHJlZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheUl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJ
dGVyYXRvci5jcHAKaW5kZXggZDUwNmM0ZWJkMjYyMGVmZDcwNzkzYTg3M2QwODUyZmJkOTc4Mjg1
OS4uY2YzNzA5N2VjMGM2OTI1YTg2N2I4YzAxMGMwZWZjNDA3NDQ4NWYxZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
Q2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJT
bG90VmlzaXRvcklubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCmluZGV4IGNjYTY4ODhiZjk4YTAyODY0NmNh
M2RkZGYzNzYyN2NlMGU3ZDkzMDIuLjMzOWE3YWI3ZjU5NTE1ZTk2YWZiN2VjNGI4NzQxZTdhYThl
MTY2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3Bw
CkBAIC0zMiw3ICszMiw5IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
R2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNOb3RBbk9iamVjdC5oIgorI2luY2x1ZGUgIkpT
U3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk51bWJlck9iamVjdC5oIgorI2luY2x1ZGUgIk9w
ZXJhdGlvbnMuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9T
dHJpbmdFeHRyYXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
SW5saW5lcy5oCmluZGV4IGY3Yzg0NDY0NTA5MmIyNTA4MDVlNmU4ZDQ4MzJjOTk4YmRiODliNTQu
LmQ3OTVkZDU2YTk3ZGRiNTk3YzA5MGZjMmUwYjdmMzA4ZTMzZWJjYTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKQEAgLTI3LDggKzI3LDEwIEBA
CiAjZGVmaW5lIEpTQ2VsbElubGluZXNfaAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5j
bHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJEZWZlckdDLmgiCiAjaW5jbHVk
ZSAiSGFuZGxlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJK
U0NlbGwuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDI0MTk2
NDYxMGJiNDQyN2IxODYzNzMzNDZlMjRmNWE4MmQwY2RjYzQuLjdiZWY1OTFiMTRmMzVmMWE5MzQ4
YWRlOWE5ZTBmNTkwZWI2YWRmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uY3BwCkBAIC0xMDksNiArMTA5LDE0IEBAIHZvaWQgSlNGdW5jdGlvbjo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBpbnQgbGVu
Z3RoCiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVy
KGxlbmd0aCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KIAorSlNGdW5j
dGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKFZNJiB2bSwgRnVuY3Rpb25F
eGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorewor
ICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY3JlYXRlKHZtLCBleGVjdXRhYmxlLCBnbG9iYWxP
YmplY3QpOworICAgIGZ1bmN0aW9uLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5h
bWUsIGpzU3RyaW5nKCZ2bSwgZXhlY3V0YWJsZS0+bmFtZSgpLnN0cmluZygpKSwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIGZ1bmN0aW9uLT5wdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoZXhlY3V0YWJsZS0+cGFyYW1ldGVyQ291
bnQoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICByZXR1cm4gZnVu
Y3Rpb247Cit9CisKIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKiBKU0Z1bmN0aW9uOjpjcmVhdGVB
bGxvY2F0aW9uUHJvZmlsZShFeGVjU3RhdGUqIGV4ZWMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSkK
IHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpAQCAtMTQyLDcgKzE1MCw3IEBAIGNvbnN0IFN0
cmluZyBKU0Z1bmN0aW9uOjpjYWxjdWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQog
ICAgICAgICByZXR1cm4gZXhwbGljaXROYW1lOwogICAgIAogICAgIGNvbnN0IFN0cmluZyBhY3R1
YWxOYW1lID0gbmFtZShleGVjKTsKLSAgICBpZiAoIWFjdHVhbE5hbWUuaXNFbXB0eSgpIHx8IGlz
SG9zdEZ1bmN0aW9uKCkpCisgICAgaWYgKCFhY3R1YWxOYW1lLmlzRW1wdHkoKSB8fCBpc0hvc3RP
ckJ1aWx0aW5GdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gYWN0dWFsTmFtZTsKICAgICAKICAg
ICByZXR1cm4ganNFeGVjdXRhYmxlKCktPmluZmVycmVkTmFtZSgpLnN0cmluZygpOwpAQCAtMTUw
LDEwICsxNTgsMjAgQEAgY29uc3QgU3RyaW5nIEpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5
TmFtZShFeGVjU3RhdGUqIGV4ZWMpCiAKIGNvbnN0IFNvdXJjZUNvZGUqIEpTRnVuY3Rpb246OnNv
dXJjZUNvZGUoKSBjb25zdAogewotICAgIGlmIChpc0hvc3RGdW5jdGlvbigpKQorICAgIGlmIChp
c0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4g
JmpzRXhlY3V0YWJsZSgpLT5zb3VyY2UoKTsKIH0KKyAgICAKK2Jvb2wgSlNGdW5jdGlvbjo6aXNI
b3N0T3JCdWlsdGluRnVuY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBpc0hvc3RGdW5jdGlv
bigpIHx8IGlzQnVpbHRpbkZ1bmN0aW9uKCk7Cit9CisKK2Jvb2wgSlNGdW5jdGlvbjo6aXNCdWls
dGluRnVuY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiAhaXNIb3N0RnVuY3Rpb24oKSAmJiBq
c0V4ZWN1dGFibGUoKS0+aXNCdWlsdGluRnVuY3Rpb24oKTsKK30KIAogdm9pZCBKU0Z1bmN0aW9u
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CkBA
IC0yNzcsNyArMjk1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgc2xvdEJhc2UKICAgICBpZiAoIWNhbGxl
ci5pc09iamVjdCgpIHx8ICFhc09iamVjdChjYWxsZXIpLT5pbmhlcml0cyhKU0Z1bmN0aW9uOjpp
bmZvKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxlcik7CiAgICAgSlNG
dW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxlcik7Ci0gICAgaWYg
KGZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpIHx8ICFmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCkt
PmlzU3RyaWN0TW9kZSgpKQorICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0T3JCdWlsdGluRnVuY3Rp
b24oKSB8fCAhZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsZXIpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJGdW5jdGlvbi5jYWxsZXIg
dXNlZCB0byByZXRyaWV2ZSBzdHJpY3QgY2FsbGVyIikpKTsKIH0KQEAgLTI5OSw3ICszMTcsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0Z1bmN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHVlIHNsb3RCYXNlLCBFbmNvZAogYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsKLSAgICBpZiAodGhpc09iamVjdC0+
aXNIb3N0RnVuY3Rpb24oKSkKKyAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVu
Y3Rpb24oKSkKICAgICAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9
PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlKSB7CkBAIC0zNjEsNyArMzc5LDcgQEAg
Ym9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KIHZvaWQgSlNGdW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQ
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewogICAgIEpT
RnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdCk7Ci0gICAg
aWYgKCF0aGlzT2JqZWN0LT5pc0hvc3RGdW5jdGlvbigpICYmIChtb2RlID09IEluY2x1ZGVEb250
RW51bVByb3BlcnRpZXMpKSB7CisgICAgaWYgKCF0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5G
dW5jdGlvbigpICYmIChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKSB7CiAgICAg
ICAgIC8vIE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFzIGJlZW4gcmVpZmllZC4KICAgICAgICAgUHJv
cGVydHlTbG90IHNsb3QodGhpc09iamVjdCk7CiAgICAgICAgIHRoaXNPYmplY3QtPm1ldGhvZFRh
YmxlKCktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkucHJvdG90eXBlLCBzbG90KTsKQEAgLTM3Nyw3ICszOTUsNyBAQCB2b2lkIEpTRnVu
Y3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsCiB2b2lkIEpTRnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNGdW5jdGlvbio+KGNlbGwpOwotICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RGdW5jdGlvbigp
KSB7CisgICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpIHsKICAg
ICAgICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDI1LDcgKzQ0Myw3IEBAIGJvb2wgSlNG
dW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wCiBib29sIEpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
Y29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9u
KQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9i
amVjdCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgaWYgKHRo
aXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBCYXNl
OjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRv
ciwgdGhyb3dFeGNlcHRpb24pOwogCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkucHJvdG90eXBlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmgKaW5kZXggN2NkMTRiOGMyZDgwMGY2MWJkYzEyZWRkMmRmMDRkMzVmYTA2MTli
Ni4uOTk1YzlkMTFiZDg5ODM4NmY3YTIwYzQxNjM0ZmE3Y2M5Yjc2OThlNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtNjgsNiArNjgsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbjsKICAgICAgICAgfQogICAg
ICAgICAKKyAgICAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihW
TSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTR2xvYmFsT2JqZWN0Kik7CisgICAgICAgIAogICAg
ICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgICAgICAKICAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nIG5hbWUoRXhlY1N0YXRlKik7CkBAIC0xNDUsNiArMTQ3LDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbV9hbGxvY2F0aW9uUHJvZmls
ZVdhdGNocG9pbnQ7CiAgICAgICAgIH0KIAorICAgICAgICBib29sIGlzSG9zdE9yQnVpbHRpbkZ1
bmN0aW9uKCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdDsK
KwogICAgIHByb3RlY3RlZDoKICAgICAgICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW1wbGVtZW50c0hhc0luc3Rh
bmNlIHwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMg
fCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0NvbnN0cnVjdG9ySW5saW5lcy5oCmluZGV4IDJkZGMyOWY3MTg5N2JiNTFkMzkwYjA2YjI1YTcz
ODMzODc0YmEwYzEuLmVkZDM0NDljZTQ3YjE3MzVlOGU1ZGJiMDVmMzE4ZTNkNTVmM2JlNjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaApAQCAtMjYs
NiArMjYsNyBAQAogI2lmbmRlZiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5s
aW5lc19oCiAjZGVmaW5lIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVz
X2gKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIK
ICNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3Rvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCA2ZGI4
NjI3NGMzYjg3NGFhYWRlNTE1MTg5ODI2NzI2ZmIxMzZjMTczLi5mMjRlYTczMDNkZjk2OWRiZDJk
Y2E1MmM4NmQxMWM3OGMwMGRiOWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAt
MjcsNiArMjcsNyBAQAogI2RlZmluZSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXNfaAog
CiAjaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmll
cnMuaCIKICNpbmNsdWRlICJEZWZlckdDLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRl
ICJFeGNlcHRpb25IZWxwZXJzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBl
SW5saW5lcy5oCmluZGV4IDQ1OTk5N2E0NjRiOTExOTQ3N2IxYmU4NGUzNmM0ZTI5NjZhY2VmODUu
LjhlNWZmODI3OTFlNmZmOGQ0ZWI5YzM3MzY5MWU0MzNlYjdkMTZhZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90
eXBlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZu
ZGVmIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lc19oCiAjZGVmaW5lIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lc19oCiAKKyNpbmNsdWRlICJDb21t
b25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
SGVscGVycy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAyYzI3NGMxYTdkNDgxYzA3
ZGYwZDJiZWIzYjI5MzFhMzkwN2E1ZTY2Li4wNmU1NGM4NGU3N2I5MDMyYmFhMWQyZGY0N2ExYzcy
ZTgwYjdkZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCkBAIC0zNDYsNyArMzQ2LDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVz
ZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAKICAgICAvLyBDb25zdHJ1Y3RvcnMKIAotICAgIEpTQ2Vs
bCogb2JqZWN0Q29uc3RydWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBPYmpl
Y3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90
eXBlLmdldCgpKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOworICAgIE9iamVjdENvbnN0cnVj
dG9yKiBvYmplY3RDb25zdHJ1Y3RvciA9IE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIE9i
amVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90
b3R5cGUuZ2V0KCkpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9vYmplY3RDb25z
dHJ1Y3Rvci5zZXQodm0sIHRoaXMsIG9iamVjdENvbnN0cnVjdG9yKTsKICAgICBKU0NlbGwqIGZ1
bmN0aW9uQ29uc3RydWN0b3IgPSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEZ1bmN0
aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3Rv
dHlwZS5nZXQoKSksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwogICAgIEpTQ2VsbCogYXJy
YXlDb25zdHJ1Y3RvciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgQXJyYXlDb25zdHJ1
Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgp
KSwgbV9hcnJheVByb3RvdHlwZS5nZXQoKSk7CiAKQEAgLTQzMiw3ICs0MzMsMTAgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvIHN0YXRpY0dsb2JhbHNbXSA9IHsKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPk5hTiwganNOYU4oKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+SW5m
aW5pdHksIGpzTnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSks
IERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQsIGpzVW5kZWZpbmVkKCks
IERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KQorICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8odm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCwganNVbmRlZmluZWQoKSwg
RG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8odm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZFByaXZhdGVOYW1lLCBqc1Vu
ZGVmaW5lZCgpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEds
b2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5PYmplY3RQcml2YXRlTmFtZSwgb2Jq
ZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPlR5cGVFcnJvclByaXZhdGVO
YW1lLCBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSB8IERvbnREZWxldGUg
fCBSZWFkT25seSkKICAgICB9OwogICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFscywg
V1RGX0FSUkFZX0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CiAgICAgCkBAIC02MDgsNiArNjEyLDcg
QEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5bnRh
eEVycm9yQ29uc3RydWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3R5
cGVFcnJvckNvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9V
UklFcnJvckNvbnN0cnVjdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9v
YmplY3RDb25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJv
bWlzZUNvbnN0cnVjdG9yKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2V2
YWxGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaAppbmRleCBiMGNhZDNkYzU0NzBmN2M3YTBlNTcwYmRjZDJkZmZhODk1ZTJhYTBjLi4z
YTYxNmM2ZjA1ZWRmMWQyOTVhZjg0NDFhYTY2NTAwZmI5MmE0YTQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTY3LDYgKzY3LDcgQEAg
Y2xhc3MgSlNTdGFjazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIE1pY3Jv
dGFzazsKIGNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I7CitjbGFzcyBPYmplY3RDb25zdHJ1
Y3RvcjsKIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsK
IGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yOwpAQCAtMTU4LDYgKzE1OSw3IEBAIHByb3RlY3RlZDoK
ICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV90eXBlRXJyb3JDb25z
dHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV9VUklF
cnJvckNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VDb25zdHJ1Y3Rvcj4g
bV9wcm9taXNlQ29uc3RydWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPE9iamVjdENvbnN0cnVjdG9y
PiBtX29iamVjdENvbnN0cnVjdG9yOwogCiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1f
ZXZhbEZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2NhbGxGdW5jdGlv
bjsKQEAgLTMzMCw2ICszMzIsNyBAQCBwdWJsaWM6CiAgICAgUmVnRXhwQ29uc3RydWN0b3IqIHJl
Z0V4cENvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBDb25zdHJ1Y3Rvci5nZXQo
KTsgfQogCiAgICAgRXJyb3JDb25zdHJ1Y3RvciogZXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsg
cmV0dXJuIG1fZXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQorICAgIE9iamVjdENvbnN0cnVjdG9y
KiBvYmplY3RDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0Q29uc3RydWN0b3Iu
Z2V0KCk7IH0KICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBldmFsRXJyb3JDb25zdHJ1Y3Rv
cigpIGNvbnN0IHsgcmV0dXJuIG1fZXZhbEVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KICAgICBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yKiByYW5nZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX3JhbmdlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgIE5hdGl2ZUVycm9yQ29u
c3RydWN0b3IqIHJlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3Jl
ZmVyZW5jZUVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KQEAgLTU4MSw3ICs1ODQsNyBAQCBpbmxp
bmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6aGFzT3duUHJvcGVydHlGb3JXcml0ZShFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZQogCiBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6c3ltYm9s
VGFibGVIYXNQcm9wZXJ0eShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIFN5bWJv
bFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1l
LnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxl
KCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIHJldHVybiAhZW50cnkuaXNO
dWxsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApp
bmRleCAyYjY3YTFkOWVlZDg0ZTk5NTZmOGJiOTY4Mzg0Yzg0Y2FlYTUzY2ZmLi4yZWEyYzI0ZTZl
YWI0Y2QwZDdmZmVkNjY1ZWY0YWU0MWFmMDc1MGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9p
ZCBnZXRDbGFzc1Byb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDbGFzc0luZm8q
IGNsYXNzCiAgICAgICAgIGludCBoYXNoU2l6ZU1hc2sgPSB0YWJsZS0+Y29tcGFjdFNpemUgLSAx
OwogICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gdGFibGUtPnRhYmxlOwogICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8PSBoYXNoU2l6ZU1hc2s7ICsraSwgKytlbnRyeSkgewotICAg
ICAgICAgICAgaWYgKGVudHJ5LT5rZXkoKSAmJiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgRG9u
dEVudW0pIHx8IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKSAmJiAhKChlbnRy
eS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pICYmIGRpZFJlaWZ5KSkKKyAgICAgICAgICAgIGlm
IChlbnRyeS0+a2V5KCkgJiYgKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCAo
bW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgJiYgISgoZW50cnktPmF0dHJpYnV0
ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSAmJiBkaWRSZWlmeSkpCiAgICAgICAgICAgICAgICAg
cHJvcGVydHlOYW1lcy5hZGQoZW50cnktPmtleSgpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE2
MTgsNyArMTYxOCw3IEBAIHZvaWQgSlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGVs
ZXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdCh0aGlzKTsKICAgICAgICAgZm9yIChIYXNoVGFibGU6OkNvbnN0SXRlcmF0
b3IgaXRlciA9IGhhc2hUYWJsZS0+YmVnaW4odm0pOyBpdGVyICE9IGhhc2hUYWJsZS0+ZW5kKHZt
KTsgKytpdGVyKSB7Ci0gICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygpICYgRnVuY3Rp
b24pCisgICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rp
b24pCiAgICAgICAgICAgICAgICAgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoZ2xvYmFsT2JqZWN0
KCktPmdsb2JhbEV4ZWMoKSwgKml0ZXIsIHRoaXMsIElkZW50aWZpZXIoJnZtLCBpdGVyLT5rZXko
KSksIHNsb3QpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjIzNiw2ICsyMjM2LDE2IEBAIHZvaWQg
SlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uCiAgICAgcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0
aW9uLCBhdHRyaWJ1dGVzKTsKIH0KIAordm9pZCBKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1
bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJvcGVy
dHlOYW1lJiBwcm9wZXJ0eU5hbWUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRh
YmxlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQoreworICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9w
ZXJ0eU5hbWUucHVibGljTmFtZSgpOworICAgIGlmICghbmFtZSkKKyAgICAgICAgbmFtZSA9IHZt
LnByb3BlcnR5TmFtZXMtPmFub255bW91cy5pbXBsKCk7CisgICAgQVNTRVJUKG5hbWUpOworICAg
IEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9u
KHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUp
LCBnbG9iYWxPYmplY3QpOworICAgIHB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCBmdW5jdGlv
biwgYXR0cmlidXRlcyk7Cit9CisKIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0
aW9uV2l0aG91dFRyYW5zaXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgZnVuY3Rpb25MZW5n
dGgsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5h
bWUucHVibGljTmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgK
aW5kZXggMDJiMTM3YjM1MGMyZmE4MzI1YmQzYjk2NDcxMTJhYmU4NzZmMzgzZi4uZGRlNTk3ZWZm
YWVjMGYxYjhkNDRjMjkxMTk1MDMwMWYwNjAwN2U5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQnV0dGVyZmx5
LmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ2xhc3NJbmZvLmgiCi0jaW5j
bHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJDb3B5V3JpdGVCYXJyaWVyLmgi
CiAjaW5jbHVkZSAiRGVmZXJHQy5oIgogI2luY2x1ZGUgIkhlYXAuaCIKQEAgLTU4MSw2ICs1ODAs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXREaXJlY3RVbmRlZmluZWQoUHJvcGVydHlPZmZzZXQg
b2Zmc2V0KSB7IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNldFVuZGVmaW5lZCgpOyB9CiAK
ICAgICB2b2lkIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBj
b25zdCBQcm9wZXJ0eU5hbWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rp
b24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgdm9pZCBwdXREaXJlY3RC
dWlsdGluRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYs
IEZ1bmN0aW9uRXhlY3V0YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIHZvaWQgcHV0
RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1
bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxk
VGhyb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9t
aXNlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9t
aXNlQ29uc3RydWN0b3IuY3BwCmluZGV4IDQwMjYxOTYzM2ZhMDZmZDI1NGIzZjJhN2E4Y2M3MWU4
MDdhYWY5MTEuLjE3ZDJhYjY1YTg4ZmZiMTNmYTlhNmM4ZjU4M2NhODQ0YWY4MzIyNDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1
Y3Rvci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJKU1Byb21pc2VEZWZlcnJlZC5o
IgogI2luY2x1ZGUgIkpTUHJvbWlzZUZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZVBy
b3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIkxvb2t1
cC5oIgogI2luY2x1ZGUgIk51bWJlck9iamVjdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGlu
ZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5jcHAKaW5kZXggNjhhOGJkODdkMzhhZGJiYjlkZDJhYzllYzRiNDlk
NWVmNDU0OWQ1Ni4uMjM3YzQyYmIwZGEwZjE2Njc2ZWIxMWFkZTgxODBhN2IwNmQ5OGViNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5jcHAKQEAgLTI5LDcgKzI5LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAKKyNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiT3BlcmF0
aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmgKaW5kZXggZjQzNjJmZjM1NGVlNmE1MDIyMWJiNzMxZDFhMjYxMWU2ZGQ2MWJj
MC4uZDA3MzcxOWRlMTYwZDJmMjkyMTEwYTU5NmExMDVlMmZhMjExNWZmYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aApAQCAtMzEsNyArMzEsNiBAQAogCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJK
U1N0cmluZy5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5h
bWVBcnJheS5oIgogI2luY2x1ZGUgPG1lbW9yeT4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmgKaW5kZXggMmIxY2RkZGM1ODQxZDYwZDE1N2EyZTYxZjcwMmIwZWU1ZmEx
ZDY3Ni4uZTM5MzQxNjBhZWE5MjZlZjE1OTMyZjg3OTBlMjRjNTJhZjAyZDM1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC0yNCw3ICsyNCw2IEBACiAjZGVm
aW5lIEpTU3RyaW5nX2gKIAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgotI2luY2x1ZGUgIkNvbW1v
bklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlByb3Bl
cnR5RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgpAQCAtNDcyLDMzICs0
NzEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJpdmlh
bFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4ganNOb250
cml2aWFsU3RyaW5nKCZleGVjLT52bSgpLCBzKTsgfQogICAgIGlubGluZSBKU1N0cmluZyoganNP
d25lZFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4ganNP
d25lZFN0cmluZygmZXhlYy0+dm0oKSwgcyk7IH0KIAotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBK
U1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQotICAgIHsKLSAgICAgICAgaWYg
KHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7Ci0gICAgICAg
ICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
LCBqc051bWJlcihtX2xlbmd0aCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IH0KLQotICAgICAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKLSAgICAg
ICAgaWYgKGkgPCBtX2xlbmd0aCkgewotICAgICAgICAgICAgQVNTRVJUKGkgIT0gUHJvcGVydHlO
YW1lOjpOb3RBbkluZGV4KTsgLy8gTm8gbmVlZCBmb3IgYW4gZXhwbGljaXQgY2hlY2ssIHRoZSBh
Ym92ZSB0ZXN0IHdvdWxkIGFsd2F5cyBmYWlsIQotICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0
aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIGkpKTsKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLSAgICAgICAgICAgIAotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3Ry
aW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCi0gICAgewotICAgICAgICBpZiAocHJvcGVydHlOYW1lIDwgbV9s
ZW5ndGgpIHsKLSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJl
YWRPbmx5LCBnZXRJbmRleChleGVjLCBwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQogICAg
IGlubGluZSBib29sIGlzSlNTdHJpbmcoSlNWYWx1ZSB2KSB7IHJldHVybiB2LmlzQ2VsbCgpICYm
IHYuYXNDZWxsKCktPmNsYXNzSW5mbygpID09IEpTU3RyaW5nOjppbmZvKCk7IH0KIAogICAgIC8v
IC0tLSBKU1ZhbHVlIGlubGluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTI4
LDMyICs1MDAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIHRvV1RGU3RyaW5n
U2xvd0Nhc2UoZXhlYyk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBTdHJpbmcgaW5saW5l
SlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKGNvbnN0IEpTVmFsdWUmIHZhbHVlLCBFeGVjU3RhdGUq
IGV4ZWMpCi0gICAgewotICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgICAgICBpZiAo
dmFsdWUuaXNJbnQzMigpKQotICAgICAgICAgICAgcmV0dXJuIHZtLm51bWVyaWNTdHJpbmdzLmFk
ZCh2YWx1ZS5hc0ludDMyKCkpOwotICAgICAgICBpZiAodmFsdWUuaXNEb3VibGUoKSkKLSAgICAg
ICAgICAgIHJldHVybiB2bS5udW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNEb3VibGUoKSk7Ci0g
ICAgICAgIGlmICh2YWx1ZS5pc1RydWUoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0
eU5hbWVzLT50cnVlS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzRmFsc2Uo
KSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5mYWxzZUtleXdvcmQuc3Ry
aW5nKCk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgICAgIHJldHVybiB2
bS5wcm9wZXJ0eU5hbWVzLT5udWxsS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHZhbHVl
LmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+dW5k
ZWZpbmVkS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIFN0cmluZyBKU1Zh
bHVlOjp0b1dURlN0cmluZ0lubGluZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci0gICAgewotICAg
ICAgICBpZiAoaXNTdHJpbmcoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU1N0
cmluZyo+KGFzQ2VsbCgpKS0+dmFsdWUoZXhlYyk7Ci0KLSAgICAgICAgcmV0dXJuIGlubGluZUpT
VmFsdWVOb3RTdHJpbmd0b1N0cmluZygqdGhpcywgZXhlYyk7Ci0gICAgfQotCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTU3RyaW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzc4YzA1ZmM4MGQ4OGU4
NTM3YzlkMmE1ZWFiOWZmMGJhOWI2MGE3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCkBAIC0wLDAgKzEsOTAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IEpTU3RyaW5nSW5saW5lc19oCisjZGVmaW5lIEpTU3RyaW5nSW5saW5lc19oCisKKyNpbmNsdWRl
ICJDb21tb25JZGVudGlmaWVycy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisj
aW5jbHVkZSAiSlNTdHJpbmcuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0FMV0FZU19JTkxJTkUg
Ym9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGlmIChw
cm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgeworICAgICAgICBz
bG90LnNldFZhbHVlKHRoaXMsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBqc051
bWJlcihtX2xlbmd0aCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAg
dW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGkgPCBtX2xlbmd0
aCkgeworICAgICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOyAvLyBO
byBuZWVkIGZvciBhbiBleHBsaWNpdCBjaGVjaywgdGhlIGFib3ZlIHRlc3Qgd291bGQgYWx3YXlz
IGZhaWwhCisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5
LCBnZXRJbmRleChleGVjLCBpKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0FMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0
U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgaWYgKHByb3BlcnR5TmFtZSA8IG1fbGVuZ3Ro
KSB7CisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBn
ZXRJbmRleChleGVjLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKworQUxXQVlTX0lOTElORSBTdHJpbmcgaW5s
aW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKGNvbnN0IEpTVmFsdWUmIHZhbHVlLCBFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBpZiAodmFsdWUuaXNJ
bnQzMigpKQorICAgICAgICByZXR1cm4gdm0ubnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVlLmFzSW50
MzIoKSk7CisgICAgaWYgKHZhbHVlLmlzRG91YmxlKCkpCisgICAgICAgIHJldHVybiB2bS5udW1l
cmljU3RyaW5ncy5hZGQodmFsdWUuYXNEb3VibGUoKSk7CisgICAgaWYgKHZhbHVlLmlzVHJ1ZSgp
KQorICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+dHJ1ZUtleXdvcmQuc3RyaW5nKCk7
CisgICAgaWYgKHZhbHVlLmlzRmFsc2UoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFt
ZXMtPmZhbHNlS2V5d29yZC5zdHJpbmcoKTsKKyAgICBpZiAodmFsdWUuaXNOdWxsKCkpCisgICAg
ICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5udWxsS2V5d29yZC5zdHJpbmcoKTsKKyAgICBp
ZiAodmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMt
PnVuZGVmaW5lZEtleXdvcmQuc3RyaW5nKCk7CisgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKTsKK30KKyAgICAKK0FMV0FZU19JTkxJTkUgU3RyaW5nIEpTVmFsdWU6
OnRvV1RGU3RyaW5nSW5saW5lKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBpZiAoaXNT
dHJpbmcoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTU3RyaW5nKj4oYXNDZWxsKCkp
LT52YWx1ZShleGVjKTsKKyAgICAKKyAgICByZXR1cm4gaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3Rv
U3RyaW5nKCp0aGlzLCBleGVjKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKaW5kZXggMmFj
MjUyNGM1ZGZkYTNkMTIyNDlkNzc5MGFkYzMxMjllM2MwZTg3MS4uZmJjOGI4OTVlYWU2YWY3ODg4
MzliZWI1ZTgzZDdiNmI5NzkyOGZhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKQEAgLTY0LDYgKzY0LDggQEAgdm9p
ZCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXQKICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIo
dGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+bV9sb2NrKTsKICAgICAgICAgU3ltYm9sVGFibGU6
Ok1hcDo6aXRlcmF0b3IgZW5kID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+ZW5kKGxvY2tl
cik7CiAgICAgICAgIGZvciAoU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXQgPSB0aGlzT2Jq
ZWN0LT5zeW1ib2xUYWJsZSgpLT5iZWdpbihsb2NrZXIpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAg
ICAgICAgICAgIGlmIChpdC0+a2V5LT5pc0VtcHR5VW5pcXVlKCkpCisgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICBpZiAoIShpdC0+dmFsdWUuZ2V0QXR0cmlidXRlcygpICYg
RG9udEVudW0pIHx8IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKQogICAgICAg
ICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgaXQtPmtleS5nZXQo
KSkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N5bWJvbFRhYmxlT2JqZWN0LmgKaW5kZXggYjViMjBhODQ1YjZhYjY0NDI0YjM3ZTMxYjI3NzRl
ZjkwNTM1M2Y3Zi4uZDAzYjI0NTExYzJkZTE5NTlmYjVmNTZkNjQ5YzY0ZDBlZmUwNjg1NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVj
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmpl
Y3QuaApAQCAtNzIsNyArNzIsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKIHsKICAg
ICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAg
IENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAgU3lt
Ym9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBw
cm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRv
ciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAg
ICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+dmFsdWU7CkBA
IC04Nyw3ICs4Nyw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogewogICAgIFN5bWJv
bFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgQ29uY3Vy
cmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICBTeW1ib2xUYWJs
ZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5
TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIg
PSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAo
aXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1ZTsKQEAgLTEwNCw3
ICsxMDQsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKIHsKICAgICBTeW1ib2xUYWJs
ZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgIENvbmN1cnJlbnRK
SVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAgU3ltYm9sVGFibGU6Ok1h
cDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUu
cHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3lt
Ym9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGl0ZXIg
PT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBT
eW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+dmFsdWU7CkBAIC0xMjYsNyArMTI2
LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoCiAgICAgewogICAgICAgICBTeW1ib2xU
YWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBHQ1Nh
ZmVDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2ssIGV4ZWMtPnZt
KCkuaGVhcCk7Ci0gICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1i
b2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgICAg
IFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tl
ciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUu
ZW5kKGxvY2tlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJvb2wgd2Fz
RmF0OwpAQCAtMTU5LDcgKzE1OSw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0
dHJpYnV0ZXMoCiAgICAgewogICAgICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2Jq
ZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihz
eW1ib2xUYWJsZS5tX2xvY2spOwotICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBp
dGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkp
OworICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUu
ZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgICAgIGlmIChpdGVyID09IHN5
bWJvbFRhYmxlLmVuZChsb2NrZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICBTeW1ib2xUYWJsZUVudHJ5JiBlbnRyeSA9IGl0ZXItPnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKaW5kZXggYTgwNmRkMDUyYTBjYmVlNGNhYzJjYWE2ZTA4
YzY3MTYwMDVjMjcwYy4uYTk3NjUyMDFiOWY1MTg2NDE0MjNkZGUwZmUwZTJlNTFhOGNlNzNiYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCkBAIC02OCw3ICs2OCw3
IEBAIHZvaWQgSGFzaFRhYmxlOjpkZWxldGVUYWJsZSgpIGNvbnN0CiBib29sIHNldFVwU3RhdGlj
RnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNP
YmplY3QqIHRoaXNPYmosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKICAgICBBU1NFUlQodGhpc09iai0+Z2xvYmFsT2JqZWN0KCkpOwotICAgIEFTU0VS
VChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pOworICAgIEFTU0VSVChlbnRyeS0+YXR0
cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSB0
aGlzT2JqLT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CkBA
IC03OSw5ICs3OSwxMyBAQCBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqCiAgICAgICAgIGlmICh0aGlz
T2JqLT5zdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgCi0gICAgICAgIHRoaXNPYmotPnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKAotICAgICAg
ICAgICAgdm0sIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5m
dW5jdGlvbkxlbmd0aCgpLAotICAgICAgICAgICAgZW50cnktPmZ1bmN0aW9uKCksIGVudHJ5LT5p
bnRyaW5zaWMoKSwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAgICAgIGlmIChlbnRyeS0+YXR0
cmlidXRlcygpICYgQnVpbHRpbikKKyAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdEJ1aWx0
aW5GdW5jdGlvbih2bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZW50
cnktPmJ1aWx0aW5HZW5lcmF0b3IoKSh2bSksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKAor
ICAgICAgICAgICAgICAgIHZtLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1l
LCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSwKKyAgICAgICAgICAgICAgICBlbnRyeS0+ZnVuY3Rp
b24oKSwgZW50cnktPmludHJpbnNpYygpLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAgICAgICAg
fQogICAgICAgICBvZmZzZXQgPSB0aGlzT2JqLT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5
TmFtZSwgYXR0cmlidXRlcyk7CiAgICAgICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1
cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKaW5kZXggYmRlODNk
NGE2ZmMzNTU3Nzg1MGUzMWU4OGJjMzlmZDA1ZjdiY2U1Mi4uZGJhMzg5ZTllMjQzZGQwZWNiMmJh
OThmMzk0ZDQwNzlmOWRlYTkzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTG9va3VwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3Vw
LmgKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgLy8gaWUuIHR5cGVkZWYg
SlNWYWx1ZSAoKkdldEZ1bmN0aW9uKShFeGVjU3RhdGUqLCBKU09iamVjdCogYmFzZU9iamVjdCkK
ICAgICB0eXBlZGVmIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIEdldEZ1bmN0aW9uOwogICAg
IHR5cGVkZWYgUHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmMgUHV0RnVuY3Rpb247CisgICAg
dHlwZWRlZiBGdW5jdGlvbkV4ZWN1dGFibGUqICgqQnVpbHRpbkdlbmVyYXRvcikoVk0mKTsKIAog
ICAgIGNsYXNzIEhhc2hFbnRyeSB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpA
QCAtNjgsMTEgKzY5LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1f
aW50cmluc2ljOwogICAgICAgICB9CiAKKyAgICAgICAgQnVpbHRpbkdlbmVyYXRvciBidWlsdGlu
R2VuZXJhdG9yKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgQnVpbHRpbik7IHJldHVy
biBtX3UuYnVpbHRpbkdlbmVyYXRvci5nZW5lcmF0b3JWYWx1ZTsgfQogICAgICAgICBOYXRpdmVG
dW5jdGlvbiBmdW5jdGlvbigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9u
KTsgcmV0dXJuIG1fdS5mdW5jdGlvbi5mdW5jdGlvblZhbHVlOyB9CiAgICAgICAgIHVuc2lnbmVk
IGNoYXIgZnVuY3Rpb25MZW5ndGgoKSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBGdW5j
dGlvbik7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihtX3UuZnVuY3Rpb24ubGVu
Z3RoKTsgfQogCi0gICAgICAgIEdldEZ1bmN0aW9uIHByb3BlcnR5R2V0dGVyKCkgY29uc3QgeyBB
U1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5Lmdl
dDsgfQotICAgICAgICBQdXRGdW5jdGlvbiBwcm9wZXJ0eVB1dHRlcigpIGNvbnN0IHsgQVNTRVJU
KCEobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0eS5wdXQ7IH0K
KyAgICAgICAgR2V0RnVuY3Rpb24gcHJvcGVydHlHZXR0ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1f
YXR0cmlidXRlcyAmIEJ1aWx0aW5PckZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVydHkuZ2V0
OyB9CisgICAgICAgIFB1dEZ1bmN0aW9uIHByb3BlcnR5UHV0dGVyKCkgY29uc3QgeyBBU1NFUlQo
IShtX2F0dHJpYnV0ZXMgJiBCdWlsdGluT3JGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5
LnB1dDsgfQogCiAgICAgICAgIGludHB0cl90IGxleGVyVmFsdWUoKSBjb25zdCB7IEFTU0VSVCgh
bV9hdHRyaWJ1dGVzKTsgcmV0dXJuIG1fdS5sZXhlci52YWx1ZTsgfQogCkBAIC05NCw2ICs5Niwx
MCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBpbnRwdHJfdCBsZW5ndGg7IC8v
IG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGZ1bmN0aW9uCiAgICAgICAgICAgICB9IGZ1bmN0aW9u
OwogICAgICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICBCdWlsdGluR2VuZXJhdG9y
IGdlbmVyYXRvclZhbHVlOworICAgICAgICAgICAgICAgIGludHB0cl90IHVudXNlZDsKKyAgICAg
ICAgICAgIH0gYnVpbHRpbkdlbmVyYXRvcjsKKyAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAg
ICAgICAgICAgR2V0RnVuY3Rpb24gZ2V0OwogICAgICAgICAgICAgICAgIFB1dEZ1bmN0aW9uIHB1
dDsKICAgICAgICAgICAgIH0gcHJvcGVydHk7CkBAIC0yMDksNyArMjE1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBIYXNoRW50
cnkqIGVudHJ5KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIFN0cmluZ0ltcGwqIGltcGwgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOwor
ICAgICAgICAgICAgU3RyaW5nSW1wbCogaW1wbCA9IHByb3BlcnR5TmFtZS51aWQoKTsKICAgICAg
ICAgICAgIGlmICghaW1wbCkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgCkBA
IC0yNDksNyArMjU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGlmICghZW50cnkpIC8v
IG5vdCBmb3VuZCwgZm9yd2FyZCB0byBwYXJlbnQKICAgICAgICAgICAgIHJldHVybiBQYXJlbnRJ
bXA6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogCi0gICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pCisgICAgICAg
IGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pCiAgICAgICAgICAg
ICByZXR1cm4gc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoZXhlYywgZW50cnksIHRoaXNPYmosIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhp
c09iaiwgZW50cnktPmF0dHJpYnV0ZXMoKSwgZW50cnktPnByb3BlcnR5R2V0dGVyKCkpOwpAQCAt
Mjg2LDcgKzI5Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpZiAoIWVudHJ5KSAvLyBu
b3QgZm91bmQsIGZvcndhcmQgdG8gcGFyZW50CiAgICAgICAgICAgICByZXR1cm4gUGFyZW50SW1w
OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iaiwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsK
IAotICAgICAgICBBU1NFUlQoIShlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pKTsKKyAg
ICAgICAgQVNTRVJUKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSk7
CiAKICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09iaiwgZW50cnktPmF0dHJp
YnV0ZXMoKSwgZW50cnktPnByb3BlcnR5R2V0dGVyKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTI5NSw3ICszMDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgdm9pZCBwdXRF
bnRyeShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0KiBi
YXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCiAgICAgewogICAgICAgICAvLyBJZiB0aGlzIGlzIGEgZnVuY3Rpb24gcHV0
IGl0IGFzIGFuIG92ZXJyaWRlIHByb3BlcnR5LgotICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0
ZXMoKSAmIEZ1bmN0aW9uKSB7CisgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVp
bHRpbk9yRnVuY3Rpb24pIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdCogdGhpc09iamVjdCA9
IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPihzbG90LnRoaXNWYWx1ZSgpKSkKICAgICAgICAgICAg
ICAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1
ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgUmVhZE9ubHkp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJv
ckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVy
cm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IGQ1ZTcyOGMyY2QxMDIwYTQ3ZTRhZGNkNjQ5Y2QxZmZm
YTVjZDZhODMuLmRjYTJmZDhkMWY2YWMyM2I4ZmY4MTdjYmIxOGZhYWU3YmNkNTk3MDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29u
c3RydWN0b3IuY3BwCkBAIC0zOCw2ICszOCwyMCBAQCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpO
YXRpdmVFcnJvckNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiB9
CiAKK3ZvaWQgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVy
ZSwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBu
YW1lKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAgCisgICAgTmF0aXZlRXJy
b3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1lLCB0aGlzKTsKKyAgICAKKyAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIERv
bnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsgLy8gRUNNQSAxNS4xMS43LjUKKyAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250
RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgbV9lcnJvclN0cnVjdHVyZS5zZXQo
dm0sIHRoaXMsIEVycm9ySW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUpKTsKKyAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZSk7CisgICAgQVNTRVJU
KG1fZXJyb3JTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOworfQorCiB2b2lkIE5hdGl2ZUVycm9yQ29u
c3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKIHsKICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PE5h
dGl2ZUVycm9yQ29uc3RydWN0b3IqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAppbmRleCA3NDBkM2Y5MzMy
OTJmZDJhY2NiNGI5OTAzNDQzMTJiOTMxOWFlMTEwLi40MzhhM2FmYjliYjBmNjQxMmM5NzkzMjIz
MGM4ODcxMDk2MWY1NDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCkBAIC01MSwxOSArNTEsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSgpIHsgcmV0dXJuIG1f
ZXJyb3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBuYW1lKTsKLSAgICAgICAgICAg
IEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKLQotICAgICAgICAgICAgTmF0aXZlRXJyb3JQcm90
b3R5cGUqIHByb3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1lLCB0aGlzKTsKLQotICAgICAgICAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBEb250
RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7IC8vIEVDTUEgMTUuMTEuNy41Ci0gICAgICAg
ICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBl
LCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Ci0gICAgICAgICAgICBtX2Vycm9y
U3RydWN0dXJlLnNldCh2bSwgdGhpcywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSkpOwotICAgICAgICAgICAgQVNTRVJUKG1fZXJyb3JT
dHJ1Y3R1cmUpOwotICAgICAgICAgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUtPmlzT2JqZWN0
KCkpOwotICAgICAgICB9CisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5h
bWUpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihWTSYs
IFN0cnVjdHVyZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlTbG90LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNs
b3QuaAppbmRleCBkOTM4ZmEzMTY0NWFmMjZiNzU4NTE0ZGI2YjI0NzhmMTgzZTllZWUxLi5jZmU5
YzRkMzJiYTc2OGM3NGU0ZmZiYjE5MTM1Mjc5ZGViZjExNzY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaApAQCAtNDIsNiArNDIsOCBAQCBlbnVtIEF0
dHJpYnV0ZSB7CiAgICAgRnVuY3Rpb24gICAgID0gMSA8PCA0LCAgLy8gcHJvcGVydHkgaXMgYSBm
dW5jdGlvbiAtIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIEFjY2Vzc29yICAg
ICA9IDEgPDwgNSwgIC8vIHByb3BlcnR5IGlzIGEgZ2V0dGVyL3NldHRlcgogICAgIEN1c3RvbUFj
Y2Vzc29yID0gMSA8PCA2LAorICAgIEJ1aWx0aW4gICAgICAgICA9IDEgPDwgNywgLy8gcHJvcGVy
dHkgaXMgYSBidWlsdGluIGZ1bmN0aW9uIC0gb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVz
CisgICAgQnVpbHRpbk9yRnVuY3Rpb24gPSBCdWlsdGluIHwgRnVuY3Rpb24sIC8vIGhlbHBlciBv
bmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKIH07CiAKIGNsYXNzIFByb3BlcnR5U2xvdCB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5jcHAKaW5kZXggYmM1MTZiMDZkNjY1MWYwZTY4MmEyMDE3YmRmOGIwM2JhYmVkNmVhMi4uMmMy
NDM0Yjg3ZDA0Zjc0OWNiMTJlNjAyYWI1NDc4NDk0NmE5MWYxZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcApAQCAtMjMsNiAr
MjMsNyBAQAogI2luY2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgiCiAKICNpbmNsdWRlICJFcnJv
ci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMu
aCIKICNpbmNsdWRlICJSZWdFeHBNYXRjaGVzQXJyYXkuaCIKICNpbmNsdWRlICJSZWdFeHBQcm90
b3R5cGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90
b3R5cGUuY3BwCmluZGV4IDg5ZDdhYzFiOGNiZjFkYjBlMTI2ZjFmYzc5NmRmZDVmYzg0YjJlNTku
LjlkZGEwYmE4ZGUxNDEyZWFmNGQyOTFkY2YwYzZiMzk2NTdmYjY3N2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcApAQCAtMjQsNyAr
MjQsNyBAQAogI2luY2x1ZGUgIkFycmF5UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIK
ICNpbmNsdWRlICJKU0FycmF5LmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUg
IkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAppbmRleCBiMjAzODg4ZDNjMTZjZGEz
YzAwMzUwNjIwOGFlMDg2OTVkYzVkYWFhLi5kMDI2NmE1OWVmM2Y1NWFhMzY5NGY1Zjc0MThjZjc4
ZTBhZTBkOGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29u
c3RydWN0b3IuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTZXQuaCIKKyNpbmNs
dWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJNYXBEYXRhLmgiCiAjaW5jbHVkZSAi
U2V0UHJvdG90eXBlLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdPYmplY3QuY3BwCmluZGV4IDQ0MGE2MDk0MjE5MzM4MDMxZTU5MjdhZjQ2YjI4OWRiY2ZiNWE3
MjguLjgwZTdlYWE4YzQ5MWNiNmQ1NGE4MzI0Y2U2NDdhNmNkYjdlODg3ODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAtMjIsNyArMjIs
OSBAQAogI2luY2x1ZGUgIlN0cmluZ09iamVjdC5oIgogCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNp
bmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0Lmgi
CisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgog
I2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDA0MjkxZjdlOGRkMjRlOGFiMzNkNzVhZjFkYTQ1
NjhmMmJjOTllNjguLjFlY2FiODVjMGJkYjI4Njk4OTQ1NzdhNzQxMjU0ZTM2NDQxNDlkODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMjcsMTIg
KzI3LDE4IEBACiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2su
aCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkR1bXBDb250ZXh0
LmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAj
aW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgorI2luY2x1ZGUgIlByb3BlcnR5TWFwSGFzaFRh
YmxlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKKyNpbmNsdWRlICJTbG90Vmlz
aXRvcklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgorI2luY2x1ZGUgIlN0
cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCIK
ICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRM
ZWFrQ291bnRlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDUyY2Nm
NDIzYTEwNDNlMTA3OWYyZDhiMTg5NDIxOTg5MGU3MWYyYmMuLjkxYWQ1NTdlMjg5YjQ3MzcwN2I4
MzlmNmNlNzBjYTM0NDE4NmE1ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJBcmdMaXN0LmgiCiAjaW5jbHVkZSAiQXJpdHlD
aGVja0ZhaWxSZXR1cm5UaHVua3MuaCIKICNpbmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnQuaCIKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKICNpbmNsdWRlICJD
YWxsRnJhbWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29k
ZUNhY2hlLmgiCkBAIC01NSw3ICs1NiwxMCBAQAogI2luY2x1ZGUgIkpTQVBJVmFsdWVXcmFwcGVy
LmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgi
CiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKQEAgLTY4LDEzICs3MiwxNiBAQAogI2luY2x1ZGUg
Ikxvb2t1cC5oIgogI2luY2x1ZGUgIk1hcERhdGEuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgorI2lu
Y2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlBhcnNlckFyZW5hLmgiCisjaW5jbHVkZSAiUHJv
cGVydHlNYXBIYXNoVGFibGUuaCIKICNpbmNsdWRlICJSZWdFeHBDYWNoZS5oIgogI2luY2x1ZGUg
IlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiU291cmNlUHJvdmlkZXJDYWNoZS5oIgogI2luY2x1ZGUgIlN0cmljdEV2YWxB
Y3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cnVj
dHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgogI2luY2x1ZGUg
IldlYWtNYXBEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NJRC5oPgpAQCAtMjI2LDYgKzIz
Myw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1f
aW5EZWZpbmVPd25Qcm9wZXJ0eShmYWxzZSkKICAgICAsIG1fY29kZUNhY2hlKENvZGVDYWNoZTo6
Y3JlYXRlKCkpCiAgICAgLCBtX2VuYWJsZWRQcm9maWxlcihudWxscHRyKQorICAgICwgbV9idWls
dGluRXhlY3V0YWJsZXMoQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGUoKnRoaXMpKQogewogICAg
IGludGVycHJldGVyID0gbmV3IEludGVycHJldGVyKCp0aGlzKTsKICAgICBTdGFja0JvdW5kcyBz
dGFjayA9IHd0ZlRocmVhZERhdGEoKS5zdGFjaygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKaW5kZXggNWE4NDEwNWVhZmI3YWJiYTVmYTQzMWVlZWRkNTVkN2E4OWY1NWNlMi4uNjk1OGFj
MzkzYjFhZWZjMGJlZmJmNmU0ZWI4YjY4MjVjZjdjOWEwYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiUHJpdmF0ZU5hbWUuaCIKICNp
bmNsdWRlICJQcm90b3R5cGVNYXAuaCIKICNpbmNsdWRlICJTbWFsbFN0cmluZ3MuaCIKKyNpbmNs
dWRlICJTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU3Ryb25nLmgiCiAjaW5jbHVkZSAiVGh1bmtH
ZW5lcmF0b3JzLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheUNvbnRyb2xsZXIuaCIKQEAgLTY5LDYg
KzcwLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQXJpdHlDaGVja0ZhaWxSZXR1
cm5UaHVua3M7CisgICAgY2xhc3MgQnVpbHRpbkV4ZWN1dGFibGVzOwogICAgIGNsYXNzIENvZGVC
bG9jazsKICAgICBjbGFzcyBDb2RlQ2FjaGU7CiAgICAgY2xhc3MgQ29tbW9uSWRlbnRpZmllcnM7
CkBAIC00OTcsNiArNDk5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcmVnaXN0
ZXJXYXRjaHBvaW50Rm9ySW1wdXJlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciYsIFdhdGNocG9p
bnQqKTsKICAgICAgICAgLy8gRklYTUU6IFVzZSBBdG9taWNTdHJpbmcgb25jZSBpdCBnb3QgbWVy
Z2VkIHdpdGggSWRlbnRpZmllci4KICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRJ
bXB1cmVQcm9wZXJ0eShjb25zdCBTdHJpbmcmKTsKKyAgICAgICAgCisgICAgICAgIEJ1aWx0aW5F
eGVjdXRhYmxlcyogYnVpbHRpbkV4ZWN1dGFibGVzKCkgeyByZXR1cm4gbV9idWlsdGluRXhlY3V0
YWJsZXMuZ2V0KCk7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CkBAIC01MzcsMTAgKzU0MSw5IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBKU1ZhbHVlIG1fZXhjZXB0aW9uOwogICAgICAgICBib29sIG1faW5EZWZpbmVPd25Q
cm9wZXJ0eTsKICAgICAgICAgT3duUHRyPENvZGVDYWNoZT4gbV9jb2RlQ2FjaGU7Ci0gICAgICAg
IFJlZkNvdW50ZWRBcnJheTxTdGFja0ZyYW1lPiBtX2V4Y2VwdGlvblN0YWNrOwotCiAgICAgICAg
IExlZ2FjeVByb2ZpbGVyKiBtX2VuYWJsZWRQcm9maWxlcjsKLQorICAgICAgICBPd25QdHI8QnVp
bHRpbkV4ZWN1dGFibGVzPiBtX2J1aWx0aW5FeGVjdXRhYmxlczsKKyAgICAgICAgUmVmQ291bnRl
ZEFycmF5PFN0YWNrRnJhbWU+IG1fZXhjZXB0aW9uU3RhY2s7CiAgICAgICAgIEhhc2hNYXA8U3Ry
aW5nLCBSZWZQdHI8V2F0Y2hwb2ludFNldD4+IG1faW1wdXJlUHJvcGVydHlXYXRjaHBvaW50U2V0
czsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hl
YWRlcnMvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MGZjYzM4NGU4ZWRm
YzM0YjE0MDgzYjg2NWQzNzM4MjBmNDE2NWM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaApAQCAtMCww
ICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSlNTdHJpbmdJbmxpbmVzX2gKKyNkZWZpbmUg
V2ViQ29yZV9GV0RfSlNTdHJpbmdJbmxpbmVzX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U1N0cmluZ0lubGluZXMuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAKaW5kZXgg
MmVkZGNkYmI5ZjAwNmNhNzYyNjY1MGI0MjAyNzg2MjZiOTI2MTQxNy4uM2M0ZTBkN2JiYjMxY2Fi
MTJiNWU2Yzk3NWM3NGQzZjQ4NGU5Y2IxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwCkBA
IC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTQ0pTVmFsdWVJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdJ
bmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcAppbmRleCA1NjQ5Yzg1Y2EwOTU4Nzc0OGEzZGEw
NmNkZGQwY2E5OTllNTBiOGU3Li4zZjRkOGVmYWViNTdmMzMwMDNlNzNhN2U3ODQyZTQyYzczY2U2
NDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFueUN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3Bw
CkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiSlNJREJPYmplY3RTdG9yZS5oIgogI2luY2x1
ZGUgIkpTSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUu
aCIKKyNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRh
dGFiYXNlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0YWJh
c2VDdXN0b20uY3BwCmluZGV4IDllYWU3NTY5YzcwNjAzYTRmZWQwYWYxNGM0Zjg3MThjZGU2NGE2
ZTEuLmY0OWRmZTkwYjRlODJkMzllZGNiZjliYTI5ZjJhZTc5OWMwZGRmMjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwCkBAIC0z
Nyw3ICszNyw3IEBACiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJKU0lE
Qk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgotI2luY2x1ZGUgPHJ1
bnRpbWUvSlNTdHJpbmcuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oPgog
CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwCmluZGV4IDc0ZmQzNTRiMjg2MDdjZjc4
MjJmODA1MzQ3OTcwZjVkN2FjOGM4MzIuLjU0MzRiM2I3ZDZjNTZlY2IwYTAzYTI3OTRjNjczNmE5
YWRmYjcwZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2Jq
ZWN0U3RvcmVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURC
T2JqZWN0U3RvcmVDdXN0b20uY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiSURCT2Jq
ZWN0U3RvcmUuaCIKICNpbmNsdWRlICJKU0lEQkluZGV4LmgiCiAjaW5jbHVkZSA8cnVudGltZS9F
cnJvci5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmcuaD4KKyNpbmNsdWRlIDxydW50aW1l
L0pTU3RyaW5nSW5saW5lcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjI1
ZjlmNzAyOTJmZGMxNGI4Y2E1MzM3NzBjMDRkNGI3MDA3ZjYzYy4uODhjN2FkNzk0ZDIwZjVkNDg5
ZWI4NWQwNzc5NTg1MWQzNDVhMjA3MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE0LTAxLTI5
ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3Nz
aWJsZSB0byBpbXBsZW1lbnQgSlMgYnVpbHRpbnMgaW4gSlMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzg4NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgdGhlIHRlc3QgcmVzdWx0cyBmb3Ig
bmV3IGVycm9yIG1lc3NhZ2VzIChub3cgdGhhdCB0aGV5J3JlCisgICAgICAgIGFjdHVhbGx5IGhl
bHBmdWwpLCBhbmQgYWRkZWQgYSBqcy1yZWdyZXNzIHRlc3QgdG8gdHJhY2sgcGVyZm9ybWFuY2Uu
CisKKyAgICAgICAgKiBqcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMv
ZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBq
cy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGpzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5qczog
QWRkZWQuCisgICAgICAgICh0ZXN0MSk6CisgICAgICAgICh0ZXN0Mik6CisgICAgICAgICh0ZXN0
Myk6CisKIDIwMTQtMDEtMjkgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBQbGF5IEJyZWFrcG9pbnQgU291bmQgaW4gRnJvbnRl
bmQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dAppbmRleCA1NDFiOGMzNThm
MDY4YTBjZWE4ODJjMTA1MTc1MzI1MTE0Y2QzM2Y3Li5jY2EzNjNkY2U1OGZiYTk1YTU4Y2U0NmZj
YjQ4YzM4YmY1OGFkZjU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9hcnJheS1ldmVyeS1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0
CkBAIC0zMCwxMiArMzAsMTIgQEAgUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KGlzQmln
RW5vdWdoQW5kRXhjZXB0aW9uKSB0aHJldyBleGNlcHRpb24gZXhjZXB0aW8KIFBBU1MgWzEyLCA1
NCwgMTgsIDEzMCwgNDRdLmV2ZXJ5KGlzQmlnRW5vdWdoQW5kRXhjZXB0aW9uKSB0aHJldyBleGNl
cHRpb24gZXhjZXB0aW9uIGZyb20gZnVuY3Rpb24uCiAKIDUuMCBXcm9uZyBUeXBlIGZvciBDYWxs
YmFjayBUZXN0Ci1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoNSkgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVy
eSgnd3JvbmcnKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBb
MTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KG5ldyBPYmplY3QoKSkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShudWxs
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgs
IDEzMCwgNDRdLmV2ZXJ5KHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlw
ZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSgpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnko
NSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxi
YWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSgn
d3JvbmcnKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkg
Y2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2
ZXJ5KG5ldyBPYmplY3QoKSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90
eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAx
MzAsIDQ0XS5ldmVyeShudWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90
b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgs
IDEzMCwgNDRdLmV2ZXJ5KHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJy
YXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEy
LCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5
LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCiAKIDYuMCBFYXJs
eSBFeGl0ICgiU2hvcnQgQ2lyY3VpdGluZyIpCiBQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZl
cnkoaXNCaWdFbm91Z2hTaG9ydENpcmN1aXQpIGlzIGZhbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9qcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvanMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApp
bmRleCAyYzJhNjhjYjEwNmRhMTBmMDg2YjIyYzViZjJiZjVjOGZlNzllMzNlLi41ZDllY2I3NWE4
ZGE3OWJhNjU2MDVlN2ViOWNmOGZjMjVmZTE4YWZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9q
cy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2pzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQKQEAg
LTE1LDcgKzE1LDcgQEAgUEFTUyBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh1bmRlZmluZWQs
IDAsIDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGUKIFBBU1MgQXJyYXkucHJvdG90
eXBlLnNvcnQuY2FsbCh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVm
aW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUuc29ydC5j
YWxsKHVuZGVmaW5lZCknKS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKHVuZGVm
aW5lZCwgMCwgMSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBh
biBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbCh1bmRlZmlu
ZWQsIDAsIDEpJykuCiBQQVNTIEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmNhbGwodW5kZWZpbmVk
LCB7fSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmpl
Y3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS51bnNoaWZ0LmNhbGwodW5kZWZpbmVkLCB7
fSknKS4KLVBBU1MgQXJyYXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVkLCB0b1N0cmlu
ZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3Qg
KGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5ldmVyeS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJp
bmcpJykuCitQQVNTIEFycmF5LnByb3RvdHlwZS5ldmVyeS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJp
bmcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1
aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkLgogUEFTUyBBcnJheS5wcm90b3R5cGUu
Zm9yRWFjaC5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5
cGUuZm9yRWFjaC5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpJykuCiBQQVNTIEFycmF5LnByb3Rv
dHlwZS5zb21lLmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3Rv
dHlwZS5zb21lLmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZyknKS4KIFBBU1MgQXJyYXkucHJvdG90
eXBlLmluZGV4T2YuY2FsbCh1bmRlZmluZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUu
aW5kZXhPZi5jYWxsKHVuZGVmaW5lZCwgMCknKS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xMjkwYzBlZWZmOGRlNDIxODMzZDkyZDI3ZTk1MjQxOTE3NjA0Yjk2Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnktZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkK
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93
bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0
bWwgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlNWNjMTcxYzQ4NzVhMzU4NWJmMTRlNTQxNWY1Y2QwZTU4MWQ1NDQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVy
eS5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2Ny
aXB0LXRlc3RzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJheS1w
cm90b3R5cGUtZXZlcnkuanMgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9h
cnJheS1wcm90b3R5cGUtZXZlcnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjk0YWExNjFjMGNlOThiMmFiMThh
M2ExYTFmMGRmYWFjOWQ3ZDJlMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Jl
Z3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5qcwpAQCAtMCwwICsxLDI5
IEBACit2YXIgcmVzdWx0ID0gMDsKK2Z1bmN0aW9uIHRlc3QxKGEpIHsKKyAgICByZXN1bHQgPDwg
MTsKKyAgICByZXN1bHQrKzsKKyAgICByZXR1cm4gdHJ1ZTsKK30KK2Z1bmN0aW9uIHRlc3QyKGEs
YikgeworICAgIHJlc3VsdCBePSAzOworICAgIHJlc3VsdCAqPSAzOworICAgIHJldHVybiB0cnVl
OworfQorZnVuY3Rpb24gdGVzdDMoYSxiLGMpIHsKKyAgICByZXN1bHQgXj0gcmVzdWx0ID4+IDE7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZhciByZXN1bHQgPSAwOwordmFyIGFycmF5ID0gW10K
K2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpCisgICAgYXJyYXlbaV0gPSAxOworCitm
b3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHsKKyAgICBhcnJheS5ldmVyeSh0ZXN0MSk7Cisg
ICAgYXJyYXkuZXZlcnkodGVzdDIpOworICAgIGFycmF5LmV2ZXJ5KHRlc3QzKTsKK30KKworaWYg
KHJlc3VsdCAhPSAxNDI4ODEwNDk2KQorICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiAr
IHJlc3VsdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222686</attachid>
            <date>2014-01-30 10:50:19 -0800</date>
            <delta_ts>2014-01-30 11:20:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140130105018.patch</filename>
            <type>text/plain</type>
            <size>197390</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NjBlMTQzNTgwZTZkYzc1ZmEwNjY2YzlhMWUyZGMxZmMzZWYyY2MyLi4yNzBmZTZjZjRmNDQ2OGM4
NGRlNGViMjI3M2VmM2U4NTM4N2YxODBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
IFRoaXMgcmVzdWx0IG9mIHRoaXMgcmVmYWN0b3JpbmcKKyAgICAgICAgaXMgdGhhdCBDb21tb25J
ZGVudGlmaWVycywgYW5kIGEgZmV3IG90aGVyIG1pc2NlbGxhbmVvdXMgaGVhZGVycyBub3cKKyAg
ICAgICAgbmVlZCB0byBiZSBpbmNsdWRlZCBkaXJlY3RseSBhcyB0aGV5IHdlcmUgZm9ybWVybHkg
Y2FwdHVyZWQgdGhyb3VnaCBvdGhlcgorICAgICAgICBwYXRocy4KKworICAgICAgICBJbiBhZGRp
dGlvbiB0aGlzIGFkZHMgYSBmbGFnIHRvIHRoZSBMb29rdXAgdGFibGUncyBoYXNoZW50cnkgdG8g
aW5kaWNhdGUKKyAgICAgICAgdGhhdCBhIHN0YXRpYyBmdW5jdGlvbiBpcyBhY3R1YWxseSBiYWNr
ZWQgYnkgSlMuIFRoZXJlIGlzIHRoZW4gYSBsb3Qgb2YKKyAgICAgICAgbG9naWMgdG8gdGhyZWFk
IHRoZSBzcGVjaWFsIG5hdHVyZSBvZiB0aGUgZnVuY3RvbiB0byB3aGVyZSBpdCBtYXR0ZXJzLgor
ICAgICAgICBUaGlzIGFsbG93cyB0b1N0cmluZygpLCAuY2FsbGVyLCBldGMgdG8gbWltaWMgdGhl
IGJlaGF2aW91ciBvZiBhIGhvc3QKKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAgICAgTm90ZXMg
b24gd3JpdGluZyBidWlsdGluczoKKyAgICAgICAgIC0gRWFjaCBmdW5jdGlvbiBpcyBjb21waWxl
ZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBvdGhlcnMsIGFuZCB0aG9zZQorICAgICAgICAgICBpbXBs
ZW1lbnRhdGlvbnMgY2Fubm90IGN1cnJlbnRseSBjYXB0dXJlIGFsbCBnbG9iYWwgcHJvcGVydGll
cyAoYXMKKyAgICAgICAgICAgdGhhdCBjb3VsZCBiZSBwb3RlbnRpYWxseSB1bnNhZmUpLiBJZiBh
IGZ1bmN0aW9uIGRvZXMgY2FwdHVyZSBhCisgICAgICAgICAgIGdsb2JhbCB3ZSB3aWxsIGRlbGli
ZXJhdGVseSBjcmFzaC4KKyAgICAgICAgIC0gRm9yIHRob3NlICJnbG9iYWwiIHByb3BlcnRpZXMg
dGhhdCB3ZSBkbyB3YW50IGFjY2VzcyB0bywgd2UgdXNlCisgICAgICAgICAgIHRoZSBAIHByZWZp
eCwgZS5nLiBPYmplY3QodGhpcykgYmVjb21lcyBAT2JqZWN0KHRoaXMpLiBUaGUgQCBpZGVudGlm
aWVycworICAgICAgICAgICBhcmUgcHJpdmF0ZSBuYW1lcywgYW5kIGJlaGF2ZSBqdXN0IGxpa2Ug
cmVndWxhciBwcm9wZXJ0aWVzLCBvbmx5CisgICAgICAgICAgIHdpdGhvdXQgdGhlIHJpc2sgb2Yg
YWR1bHRlcmF0aW9uLiBBZ2FpbiwgaW4gdGhlIEBPYmplY3QgY2FzZSwgd2UKKyAgICAgICAgICAg
ZXhwbGljaXRseSBkdXBsaWNhdGUgdGhlIE9iamVjdENvbnN0cnVjdG9yIHJlZmVyZW5jZSBvbiB0
aGUgR2xvYmFsT2JqZWN0CisgICAgICAgICAgIHNvIHRoYXQgd2UgaGF2ZSBndWFyYW50ZWVkIGFj
Y2VzcyB0byB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgY29uc3RydWN0
b3IuCisgICAgICAgICAtIGNhbGwsIGFwcGx5LCBldmFsLCBhbmQgRnVuY3Rpb24gYXJlIGFsbCBy
ZWplY3RlZCBpZGVudGlmaWVycywgYWdhaW4KKyAgICAgICAgICAgdG8gcHJldmVudCBhbnl0aGlu
ZyBmcm9tIGFjY2lkZW50YWxseSB1c2luZyBhbiBhZHVsdGVyYXRlZCBvYmplY3QuCisgICAgICAg
ICAgIEluc3RlYWQgQGNhbGwgYW5kIEBhcHBseSBhcmUgYXZhaWxhYmxlLCBhbmQgaGFwcGlseSB0
aGV5IGNvbXBsZXRlbHkKKyAgICAgICAgICAgZHJvcCB0aGUgbmVxX3B0ciBpbnN0cnVjdGlvbiBh
cyB0aGV5J3JlIGRlZmluZWQgYXMgYWx3YXlzIGJlaW5nIHRoZQorICAgICAgICAgICBvcmlnaW5h
bCBjYWxsL2FwcGx5IGZ1bmN0aW9ucy4KKworICAgICAgICBUaGVzZSByZXN0cmljdGlvbnMgYXJl
IGp1c3QgaW50ZW5kZWQgdG8gbWFrZSBpdCBoYXJkZXIgdG8gYWNjaWRlbnRhbGx5CisgICAgICAg
IG1ha2UgY2hhbmdlcyB0aGF0IGFyZSBpbmNvcnJlY3QgKGZvciBpbnN0YW5jZSBjYWxsaW5nIHdo
YXRldmVyIGhhcyBiZWVuCisgICAgICAgIGFzc2lnbmVkIHRvIGdsb2JhbC5PYmplY3QsIGluc3Rl
YWQgb2YgdGhlIG9yaWdpbmFsIGNvbnN0cnVjdG9yIGZ1bmN0aW9uKS4KKyAgICAgICAgSG93ZXZl
ciwgbWFraW5nIGEgbWlzdGFrZSBsaWtlIHRoaXMgc2hvdWxkIHJlc3VsdCBpbiBhIHB1cmVseSBz
ZW1hbnRpYworICAgICAgICBlcnJvciBhcyBmdW5kYW1lbnRhbGx5IHRoZXNlIGZ1bmN0aW9ucyBh
cmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlCisgICAgICAgIHJlZ3VsYXIgSlMgY29kZSBp
biB0aGUgaG9zdCBnbG9iYWwsIGFuZCBoYXZlIG5vIG1vcmUgcHJpdmlsZWdlcyB0aGFuCisgICAg
ICAgIGFueSBvdGhlciBKUy4KKworICAgICAgICBUaGUgaW5pdGlhbCBwcm9vZiBvZiBjb25jZXB0
IGlzIEFycmF5LnByb3RvdHlwZS5ldmVyeSwgdGhpcyBzaG93cyBhIDY1JQorICAgICAgICBwZXJm
b3JtYW5jZSBpbXByb3ZlbWVudCwgYW5kIHRoYXQgaW1wcm92ZW1lbnQgaXMgc2lnbmlmaWNhbnRs
eSBodXJ0IGJ5CisgICAgICAgIG91ciBwb29yIG9wdGltaXNhdGlvbiBvZiBvcF9pbi4KKworICAg
ICAgICBBcyB0aGlzIGlzIHN1Y2ggYSBsaW1pdGVkIGZ1bmN0aW9uLCB3ZSBoYXZlIG5vdCB5ZXQg
ZXhwb3J0ZWQgYWxsIHN5bWJvbHMKKyAgICAgICAgdGhhdCB3ZSBjb3VsZCBwb3NzaWJseSBuZWVk
LCBidXQgYXMgd2UgaW1wbGVtZW50IG1vcmUsIHRoZSBsaWtlbGlob29kCisgICAgICAgIG9mIGVu
Y291bnRlcmluZyBtaXNzaW5nIGZlYXR1cmVzIHdpbGwgcmVkdWNlLgorCisgICAgICAgIFRoaXMg
ZGlkIHJlcXVpcmUgYnJlYWtpbmcgb3V0IGEgSlNTdHJpbmdJbmxpbmVzIGhlYWRlciwgYW5kIHJl
cXVpcmVkCisgICAgICAgIGZpeGluZyBhIGZldyBvYmplY3RzIHRoYXQgd2VyZSB0cnlpbmcgdG8g
dXNpbmcgUHJvcGVydHlOYW1lOjpwdWJsaWNOYW1lCisgICAgICAgIHJhdGhlciB0aGFuIFByb3Bl
cnR5TmFtZTo6dWlkLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0
eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dCk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRpY1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWNGdW5jdGlvbkdl
dHRlcik6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tH
ZXR0ZXIpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBidWlsdGlucy9BcnJheS5wcm90b3R5cGUuanM6CisgICAgICAgIChldmVyeSk6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkJ1aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKToKKyAgICAgICAgKEpTQzo6
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSk6CisgICAgICAgICog
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVj
dXRhYmxlczo6Y3JlYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tG
b3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6dG9TdHJpY3RuZXNzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNCdWlsdGluRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBjcmVhdGVfaGFz
aF90YWJsZToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZ2Vu
ZXJhdGUtanMtYnVpbHRpbnM6IEFkZGVkLgorICAgICAgICAoZ2V0Q29weXJpZ2h0KToKKyAgICAg
ICAgKGdldEZ1bmN0aW9ucyk6CisgICAgICAgIChnZW5lcmF0ZUNvZGUpOgorICAgICAgICAobWFu
Z2xlTmFtZSk6CisgICAgICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSWRlbnRp
Zmllcik6CisgICAgICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChTb3VyY2VDb2RlKToK
KyAgICAgICAgKFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKFZNKToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvUHJvdG9DYWxsRnJhbWUuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUp
OgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpM
ZXhlcik6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpM
ZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFy
Pjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAg
ICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcik6CisgICAgICAgICog
cGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OnNldENsb3NlZFZh
cmlhYmxlcyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
Tm9kZTo6Y2FwdHVyZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OnNldENs
b3NlZFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmluaXNoUGFy
c2luZyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRU
b2tlblRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OmdldFVzZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNsb3NlZFZhcmlh
Ymxlcyk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9k
ZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAgICAgICogcnVudGlt
ZS9BcmdMaXN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAg
ICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJh
dG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpn
ZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpD
b21tb25JZGVudGlmaWVycyk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQ
cml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQdWJsaWNO
YW1lKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzRXhjZXB0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxl
OjpleGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpleGVj
dXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aXNCdWlsdGlu
RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1l
L0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFi
bGVHZXQpOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0KToKKyAg
ICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgICogcnVudGltZS9K
U0NlbGxJbmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6c291cmNlQ29kZSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzSG9zdE9y
QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6aXNCdWlsdGluRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIpOgorICAgICAg
ICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9w
ZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgICogcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6Om9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpnZXRDbGFzc1Byb3BlcnR5TmFtZXMpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZ0lubGlu
ZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjppbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9i
amVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgICAgRG9uJ3QgcmVw
b3J0IHByaXZhdGUgbmFtZXMuCisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6c3ltYm9s
VGFibGVQdXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChKU0M6OnNldFVwU3RhdGlj
RnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlND
OjpIYXNoRW50cnk6OmJ1aWx0aW5HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpIYXNoRW50cnk6
OnByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpwcm9wZXJ0eVB1dHRl
cik6CisgICAgICAgIChKU0M6Okhhc2hUYWJsZTo6ZW50cnkpOgorICAgICAgICAoSlNDOjpnZXRT
dGF0aWNQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpnZXRTdGF0aWNWYWx1ZVNsb3QpOgor
ICAgICAgICAoSlNDOjpwdXRFbnRyeSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6YnVp
bHRpbkV4ZWN1dGFibGVzKToKKwogMjAxNC0wMS0yOSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3Nz
eUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikgbGVmdG92ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTEzZjE4OGFlNjUyYjk1ZjNiNTcyYWMxNzcwZWEx
MjViYmFlNzVkMi4uNjMyYWNjNDNkYzE2YzcxMzRkNThjMDRiN2E1Y2U1NmE5MTk4ZWNjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE0LTAxLTI5ICBPbGl2ZXIgSHVudCAgPG9saXZl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBpbXBsZW1lbnQgSlMg
YnVpbHRpbnMgaW4gSlMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNzg4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVwZGF0aW5nIGZvciB0aGUgbmV3bHkgcmVxdWlyZWQgaGVhZGVycy4KKworICAgICAg
ICBUZXN0OiBqcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sCisKKyAgICAgICAg
KiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oOiBBZGRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcDoKKwogMjAxNC0wMS0zMCAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViUGFnZTo6ZGV0ZXJtaW5lUHJpbWFyeVNu
YXBzaG90dGVkUGx1Z0luIGlzIHNsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggNWJlMDUzZjFlMDg2YjQzZTY4
NmMzNjc0ZGFlN2M1MTYwNWEyODZlNy4uMGVjZWQ1MWYzZTJkNWI2MjFkYWRmMDU3NDlmNWU3NDY2
YTA2ZjUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBib29sIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZQogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKICAg
ICBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHByb3BlcnR5TmFtZVJlZjsKICAgICAKLSAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpT
Q2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xh
c3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgLy8gb3B0aW9uYWwgb3B0
aW1pemF0aW9uIHRvIGJ5cGFzcyBnZXRQcm9wZXJ0eSBpbiBjYXNlcyB3aGVuIHdlIG9ubHkgbmVl
ZCB0byBrbm93IGlmIHRoZSBwcm9wZXJ0eSBleGlzdHMKICAgICAgICAgICAgIGlmIChKU09iamVj
dEhhc1Byb3BlcnR5Q2FsbGJhY2sgaGFzUHJvcGVydHkgPSBqc0NsYXNzLT5oYXNQcm9wZXJ0eSkg
ewpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiAgICAgUmVmUHRy
PE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgSlNWYWx1ZVJlZiB2YWx1ZVJl
ZiA9IHRvUmVmKGV4ZWMsIHZhbHVlKTsKICAgICAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9
IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJl
bnRDbGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBz
ZXRQcm9wZXJ0eSA9IGpzQ2xhc3MtPnNldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFwcm9wZXJ0eU5hbWVSZWYpCkBAIC0zNDMsNyArMzQzLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm8KICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CiAgICAg
UmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0Ns
YXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNz
ID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdERlbGV0
ZVByb3BlcnR5Q2FsbGJhY2sgZGVsZXRlUHJvcGVydHkgPSBqc0NsYXNzLT5kZWxldGVQcm9wZXJ0
eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lUmVmKQpAQCAtNTY0LDcgKzU2
NCw3IEBAIEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiB7CiAgICAgSlNPYmplY3RSZWYgdGhpc1Jl
ZiA9IHRvUmVmKHRoaXMpOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gY2xhc3NS
ZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAg
ICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXMgPSBq
c0NsYXNzLT5zdGF0aWNWYWx1ZXMoZXhlYykpIHsKICAgICAgICAgICAgICAgICBpZiAoU3RhdGlj
VmFsdWVFbnRyeSogZW50cnkgPSBzdGF0aWNWYWx1ZXMtPmdldChuYW1lKSkgewpAQCAtNjAwLDcg
KzYwMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGlj
RnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFCiAgICAgaWYgKFBhcmVudDo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdDIpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QyLmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFt
ZSkpOwogCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsK
ICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqLT5jbGFzc1JlZigpOyBq
c0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlm
IChPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGUqIHN0YXRpY0Z1bmN0aW9ucyA9IGpz
Q2xhc3MtPnN0YXRpY0Z1bmN0aW9ucyhleGVjKSkgewogICAgICAgICAgICAgICAgIGlmIChTdGF0
aWNGdW5jdGlvbkVudHJ5KiBlbnRyeSA9IHN0YXRpY0Z1bmN0aW9ucy0+Z2V0KG5hbWUpKSB7CkBA
IC02MjYsNyArNjI2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpjYWxsYmFja0dldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWQKICAgICBKU09iamVjdFJl
ZiB0aGlzUmVmID0gdG9SZWYodGhpc09iaik7CiAgICAgUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBw
cm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2Jq
LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsK
ICAgICAgICAgICAgIGlmIChKU09iamVjdEdldFByb3BlcnR5Q2FsbGJhY2sgZ2V0UHJvcGVydHkg
PSBqc0NsYXNzLT5nZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlO
YW1lUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDI3YmM0YzE3ZjNk
ZmVlYjYxZDI1MjMyM2ZkODc4YzQ0NzgwZjc0YzUuLjQxMzRhNmMxZTNlZjMyYmU4NWE2MjQ1ZDdl
YjVlMDU1MmZlNTEzZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUy
LDYgKzUyLDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9TY3Jp
cHRPYmplY3QuY3BwCiAgICAgYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCiAKKyAgICBidWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCisKICAgICBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Q
cm9maWxlLmNwcAogICAgIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9C
eXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC04MTUsMTYgKzgxNywyNyBAQCBhZGRfY3VzdG9tX2Nv
bW1hbmQoCiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3Jl
X0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0vQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTLmpzb24gLS1vdXRwdXRf
aF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0cHV0X2Nw
cF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0cHV0X2pz
X2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIgLS1vdXRwdXRfdHlw
ZSBKYXZhU2NyaXB0IC0td3JpdGVfYWx3YXlzICYmIG1rZGlyIC1wICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yICYmIGNwICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTRnJvbnRlbmREaXNwYXRj
aGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNU
eXBlQnVpbGRlcnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3Bl
Y3RvcgogICAgIFZFUkJBVElNKQogCisjIEpTQ0J1aWx0aW5zCitmaWxlKEdMT0IgSlNDQnVpbHRp
bnNfanNfZmlsZXMgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9idWlsdGlucy8qLmpzIikK
K2FkZF9jdXN0b21fY29tbWFuZCgKKyAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19KQVZBU0NS
SVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBU
Q09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKKyAgIE1BSU5fREVQRU5ERU5DWSAke0NNQUtFX0NVUlJF
TlRfU09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMKKyAgIERFUEVORFMgJHtKU0NCdWls
dGluc19qc19maWxlc30KKyAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9D
VVJSRU5UX1NPVVJDRV9ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zICR7SlNDQnVpbHRpbnNfanNf
ZmlsZXN9ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMu
aCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcAor
ICAgVkVSQkFUSU0pCisKIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTQmFja2VuZERp
c3BhdGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0v
SW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwCisgICAgJHtE
RVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5jcHAKICkKIAog
bGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUwogICAgICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaAogICAg
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNGcm9udGVu
ZERpc3BhdGNoZXJzLmgKICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9
L0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgKKyAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NS
SVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKICkKIAogYWRkX2N1c3RvbV9jb21tYW5kKApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAxMTU2ZTk3ZmQ4ODYy
NTU3YzljZjhkM2I2OGJmNGQwM2MzZThiYThmLi45N2NjZTkzY2MwZTJhMmU3ZjM4ZDJmY2EwN2Nl
MjJhOGY5NjVkMTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQpAQCAtNTcsNiArNTcsNyBAQCBhbGwgOiBcCiAgICAgUmVnRXhwT2JqZWN0Lmx1dC5oIFwKICAg
ICBTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgdWRpczg2X2l0YWIuaCBcCisgICAgSlND
QnVpbHRpbnMgXAogIwogCiAjIGxvb2t1cCB0YWJsZXMgZm9yIGNsYXNzZXMKQEAgLTc5LDYgKzgw
LDE0IEBAIEtleXdvcmRMb29rdXAuaDogS2V5d29yZExvb2t1cEdlbmVyYXRvci5weSBLZXl3b3Jk
cy50YWJsZQogdWRpczg2X2l0YWIuaDogJChKYXZhU2NyaXB0Q29yZSkvZGlzYXNzZW1ibGVyL3Vk
aXM4Ni9pdGFiLnB5ICQoSmF2YVNjcmlwdENvcmUpL2Rpc2Fzc2VtYmxlci91ZGlzODYvb3B0YWJs
ZS54bWwKIAkoUFlUSE9OUEFUSD0kKEphdmFTY3JpcHRDb3JlKS9kaXNhc3NlbWJsZXIvdWRpczg2
IHB5dGhvbiAkKEphdmFTY3JpcHRDb3JlKS9kaXNhc3NlbWJsZXIvdWRpczg2L2l0YWIucHkgJChK
YXZhU2NyaXB0Q29yZSkvZGlzYXNzZW1ibGVyL3VkaXM4Ni9vcHRhYmxlLnhtbCB8fCBleGl0IDEp
CiAKKyMgYnVpbHRpbiBmdW5jdGlvbnMKKy5QSE9OWTogSlNDQnVpbHRpbnMKKworSlNDQnVpbHRp
bnM6ICQoSmF2YVNjcmlwdENvcmUpL0pTQ0J1aWx0aW5zLmggJChKYXZhU2NyaXB0Q29yZSkvSlND
QnVpbHRpbnMuY3BwCitKU0NCdWlsdGlucy5oOiAkKEphdmFTY3JpcHRDb3JlKS9nZW5lcmF0ZS1q
cy1idWlsdGlucyAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy8qLmpzCisJcHl0aG9uICReICRA
CisKK0pTQ0J1aWx0aW5zLmNwcDogJChKYXZhU2NyaXB0Q29yZSkvSlNDQnVpbHRpbnMuaAogCiAj
IEluc3BlY3RvciBpbnRlcmZhY2VzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KaW5kZXggY2RiNTQyNmIwNmI1MmE5ODI1NmVlOTA1OGJiYThmMTFlZWE2OWVlMC4u
YWZlOTY3MmI1YjFlZTkyNzExYmVkZDQ3NWU5YTEyODIwM2M4MTM2NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTEwMiw2ICsxMDIsOCBAQCBqYXZhc2Ny
aXB0Y29yZV9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mv
U2NyaXB0T2JqZWN0LmggXAogICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3Jp
cHRWYWx1ZS5jcHAgXAogICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRW
YWx1ZS5oIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcCBcCisgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5F
eGVjdXRhYmxlcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eUFsbG9jYXRpb25Qcm9maWxlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
cnJheVByb2ZpbGUuY3BwIFwKQEAgLTEyNDEsNyArMTI0Myw5IEBAIGphdmFzY3JpcHRjb3JlX3Nv
dXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpTRnJv
bnRlbmREaXNwYXRjaGVycy5jcHAgXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0lu
c3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAgXAotCURlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgKKwlEZXJpdmVkU291cmNlcy9K
YXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oIFwKKwlEZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5jcHAgXAorCURlcml2ZWRTb3VyY2VzL0phdmFT
Y3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmgKIAogbGxpbnRfbm9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagppbmRleCA1ZWRlZmRiZTg1NWY5NmE2MjY4
ZDg1NzNiZWMxZDBjM2Q4NThhYTVjLi5hMTJkYjE4MzQ4NmRmYmJjYTgzZjNhNzhlOWNmOTg2MzFi
MjY1M2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTMwOSw2
ICszMDksNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0RnVu
Y3Rpb25DYWxsLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNj
cmlwdE9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xT
Y3JpcHRWYWx1ZS5jcHAiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxidWlsdGluc1xC
dWlsdGluRXhlY3V0YWJsZXMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0
ZWNvZGVcQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxieXRlY29kZVxBcnJheVByb2ZpbGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cYnl0ZWNvZGVcQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCIgLz4KQEAgLTcyMSw2ICs3
MjIsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEluc3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0
Y2hlcnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVp
bGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXEluc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NCdWlsdGlucy5jcHAiIC8+CiAgIDwv
SXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXEFycmF5Q29uc3RydWN0b3IubHV0LmgiIC8+CkBAIC03NTAsNiAr
NzUyLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xSZWdFeHBPYmplY3QubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcUmVnRXhwUHJvdG90eXBlLmx1dC5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFN0cmluZ0NvbnN0cnVjdG9yLmx1
dC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEpTQ0J1aWx0aW5zLmgiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEFQSUNhbGxiYWNrRnVuY3Rpb24uaCIgLz4KQEAgLTc5
OCw2ICs4MDEsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0
RnVuY3Rpb25DYWxsLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xT
Y3JpcHRPYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNj
cmlwdFZhbHVlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWls
dGluRXhlY3V0YWJsZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2Rl
XEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGJ5dGVjb2RlXEFycmF5UHJvZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
Ynl0ZWNvZGVcQnlWYWxJbmZvLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggODdlMTJhNDcxNThiYjYyMjRkNDlmZDYyMjk3OGM0
YTljNDQzNWE2NS4uODY5YzFmNTg5YmNiNjg2ZWI5Y2YyMGMwOTZiZTFiODNhNTUxZTI0YyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAt
Nyw2ICs3LDkgQEAKICAgICA8RmlsdGVyIEluY2x1ZGU9ImJpbmRpbmdzIj4KICAgICAgIDxVbmlx
dWVJZGVudGlmaWVyPnswYmFjZTEyMy00NTgyLWVlYmMtOTMxNC03ODE5YjM3NmMxOTh9PC9Vbmlx
dWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iYnVpbHRp
bnMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezNiOWQ3MmE1LTEzNWItNDNiMy1hNTI0LWM2
ZDJiOWQyOWQzNX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CiAgICAgPEZpbHRl
ciBJbmNsdWRlPSJieXRlY29kZSI+CiAgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NzY2MDg4YTAt
MTIxNi00ODU0LWFhNDMtNTYwYzVlMjgzNjY4fTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8L0Zp
bHRlcj4KQEAgLTEwOCw2ICsxMTEsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYXNz
ZW1ibGVyXE1hY3JvQXNzZW1ibGVyLmNwcCI+CiAgICAgICA8RmlsdGVyPmFzc2VtYmxlcjwvRmls
dGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnVpbHRp
bnNcQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCI+CisgICAgICA8RmlsdGVyPmJ1aWx0aW5zPC9GaWx0
ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29k
ZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCI+CiAgICAgICA8RmlsdGVyPmJ5dGVjb2RlPC9G
aWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0xMzI5LDYgKzEzMzUsOSBAQAogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTVHlwZUJ1
aWxkZXJzLmNwcCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgogICAg
IDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVp
bGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXEpTQ0J1aWx0aW5zLmNwcCI+CisgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwv
RmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxBUElDYWxsYmFja0Z1bmN0aW9uLmgiPgpA
QCAtMTQ1NCw2ICsxNDYzLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFzc2VtYmxl
clxYODZBc3NlbWJsZXIuaCI+CiAgICAgICA8RmlsdGVyPmFzc2VtYmxlcjwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnVpbHRpbnNcQnVpbHRp
bkV4ZWN1dGFibGVzLmgiPgorICAgICAgPEZpbHRlcj5idWlsdGluczwvRmlsdGVyPgorICAgIDwv
Q2xDb21waWxlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZS5oIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KQEAgLTI1NTAsNiArMjU2Miw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcQXJyYXlQcm90b3R5cGUubHV0LmgiPgogICAgICAg
PEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3Jt
QXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NCdWlsdGlucy5o
Ij4KKyAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1
ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFZNLmgiPgogICAgICAgPEZp
bHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZUNv
bW1vbi5wcm9wcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlQ29tbW9uLnByb3BzCmluZGV4IDM2MjJmZmM1NzdjNDNkZGY3MGRhNTFm
ZjY4YWQ2NDZmNjMwNGU1NjcuLmM1ODg4NzBjMmZkMTNkNjA3NmQzOGY1MmNhNjIyNWRiMjg3MmM3
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlQ29tbW9uLnByb3BzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlQ29tbW9uLnByb3BzCkBAIC01
LDcgKzUsNyBAQAogICA8UHJvcGVydHlHcm91cCAvPgogICA8SXRlbURlZmluaXRpb25Hcm91cD4K
ICAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5c
Oy4uXHRvb2xzXDsuLlxydW50aW1lXDsuLlxsbGludFw7Li5caml0XDsuLlxkaXNhc3NlbWJsZXJc
Oy4uXGhlYXBcOy4uXGRlYnVnZ2VyXDsuLlxhc3NlbWJsZXJcOy4uXHByb2ZpbGVyXDsuLlx5YXJy
XDsuLlxpbnRlcnByZXRlclw7Li5cYnl0ZWNvZGVcOy4uXGRmZ1w7Li5cYnl0ZWNvbXBpbGVyXDsu
LlxwYXJzZXJcOy4uXEFQSVw7Li5cZnRsXDsuLlxiaW5kaW5nc1w7Li5caW5zcGVjdG9yXDskKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcSmF2YVNjcmlw
dENvcmVcRGVyaXZlZFNvdXJjZXNcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXDsk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZVw7JChDb25maWd1
cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVw7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNs
dWRlOyQoV2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZVxwcml2YXRlOyUoQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlw7Li5cdG9vbHNcOy4uXHJ1bnRpbWVcOy4uXGxs
aW50XDsuLlxqaXRcOy4uXGRpc2Fzc2VtYmxlclw7Li5caGVhcFw7Li5cZGVidWdnZXJcOy4uXGFz
c2VtYmxlclw7Li5ccHJvZmlsZXJcOy4uXHlhcnJcOy4uXGludGVycHJldGVyXDsuLlxieXRlY29k
ZVw7Li5cYnVpbHRpbnNcOy4uXGRmZ1w7Li5cYnl0ZWNvbXBpbGVyXDsuLlxwYXJzZXJcOy4uXEFQ
SVw7Li5cZnRsXDsuLlxiaW5kaW5nc1w7Li5caW5zcGVjdG9yXDskKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcSmF2YVNjcmlwdENvcmVcRGVyaXZlZFNv
dXJjZXNcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXDskKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZVw7JChDb25maWd1cmF0aW9uQnVpbGREaXIp
XGluY2x1ZGVccHJpdmF0ZVw7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlOyQoV2ViS2l0X0xp
YnJhcmllcylcaW5jbHVkZVxwcml2YXRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8
L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgICA8Rm9yY2VkSW5jbHVkZUZpbGVz
PklDVVZlcnNpb24uaDslKEZvcmNlZEluY2x1ZGVGaWxlcyk8L0ZvcmNlZEluY2x1ZGVGaWxlcz4K
ICAgICA8L0NsQ29tcGlsZT4KICAgICA8TGluaz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMjdlODc2NzQwYTk2NGIwMjg5ODRlZDY3ODE2MTgyMGE1ZGNmNzdjNC4uOTExNTczYWIx
N2QzMzk3NGFhN2M5YTAxMWRiMjAwYjA5YWY3OGJmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTkyMiw3ICs5MjIsNiBAQAogCQlBNTAzRkExOTE4OEUwRkIwMDAxMTBGMTQgLyog
SmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTAzRkExMzE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxG
cmFtZS5jcHAgKi87IH07CiAJCUE1MDNGQTFBMTg4RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0
Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNTAzRkExNDE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9
OwogCQlBNTAzRkExQjE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE1
MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwICovOyB9OwotCQlB
NTAzRkExQzE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNjE4OEUwRkIw
MDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmggKi87IH07CiAJCUE1MDNGQTFEMTg4
RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTcxODhFMEZC
MDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAgKi87IH07CiAJ
CUE1MDNGQTFFMTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNG
QTE4MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaCAq
LzsgfTsKIAkJQTUwM0ZBMjExODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlwdEJyZWFrcG9pbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTFGMTg4
RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRCcmVha3BvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwMjQsNiArMTAyMyw3IEBACiAJCUE3MEIw
ODMyMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwQjA4MzAxN0EwQjc5QjAwREFGMTRC
IC8qIERGR0JpbmFyeVN3aXRjaC5jcHAgKi87IH07CiAJCUE3MEIwODMzMTdBMEI3OUIwMERBRjE0
QiAvKiBERkdCaW5hcnlTd2l0Y2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3MEIwODMxMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2gu
aCAqLzsgfTsKIAkJQTcxMjM2RTUxMTk1RjMzQzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzEyMzZF
NDExOTVGMzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0LmNwcCAqLzsgfTsKKwkJQTcxREE4
MEYxODgwREJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxREE4MEUxODgwREJBQjAwRDFGMjk5IC8q
IEpTU3RyaW5nSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUE3MjAyOEI2MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRp
bHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcy
MDI4QjQxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAgKi87IH07CiAJ
CUE3MjAyOEI4MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjAyOEI1MTc5NzYwMUUw
MDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzIwMjhCQTE3OTc2MDNEMDA5ODAyOEMgLyogSlNG
dW5jdGlvbklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3MjAyOEI5MTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTUwLDYg
KzExNTAsMTAgQEAKIAkJQTdDQTNBRTgxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDQTNBRTIxN0RB
NDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5oICovOyB9OwogCQlBN0NBM0FFQjE3REE1MTY4MDA2
NTM4QUYgLyogV2Vha01hcERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTdDQTNBRTkxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNw
cCAqLzsgfTsKIAkJQTdDQTNBRUMxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0NBM0FFQTE3REE1
MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuaCAqLzsgfTsKKwkJQTdEODAxQTQxODgwRDY2RTAw
MjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4MDFBMTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRp
bkV4ZWN1dGFibGVzLmNwcCAqLzsgfTsKKwkJQTdEODAxQTUxODgwRDY2RTAwMjZDMzlCIC8qIEJ1
aWx0aW5FeGVjdXRhYmxlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTdEODAxQTIxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3RDgw
MUE4MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIgLyog
SlNDQnVpbHRpbnMuY3BwICovOyB9OworCQlBN0Q4MDFBOTE4ODBENkE4MDAyNkMzOUIgLyogSlND
QnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3RDgwMUE3MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3RDg5Q0YyMTdBMEI4Q0MwMDc3
M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3RDg5Q0UzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2Nr
LmNwcCAqLzsgfTsKIAkJQTdEODlDRjMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0
aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3RDg5Q0U0MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5jcHAgKi87
IH07CiAJCUE3RDg5Q0Y0MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODlDRTUx
N0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI0NjIsNiArMjQ2Niw4IEBACiAJ
CUE3MTIzNkU0MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUT3Bjb2RlczMyXzY0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxOEY2MUExMTc1NEEyMTAwMjQ2NUE3IC8qIFJlZ0V4
cEppdFRhYmxlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBKaXRU
YWJsZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxOEY4MjExMTc4RUI0QjAw
MjQ2NUE3IC8qIGNyZWF0ZV9yZWdleF90YWJsZXMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZXhwbGljaXRGaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgZmlsZUVuY29kaW5nID0g
NDsgcGF0aCA9IGNyZWF0ZV9yZWdleF90YWJsZXM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE3MURBODBEMTg4MEQ3MUYwMEQxRjI5OSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9ICJnZW5lcmF0ZS1qcy1idWlsdGlucyI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MURBODBFMTg4MERCQUIwMEQxRjI5OSAv
KiBKU1N0cmluZ0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNT
dHJpbmdJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI0MTc5
NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNDVGVzdFJ1bm5lclV0aWxzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTcyMDI4QjUxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5u
ZXJVdGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NUZXN0UnVubmVy
VXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyMDI4QjkxNzk3NjAzRDAw
OTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTRnVuY3Rpb25JbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yNTkwLDYgKzI1OTYsMTEgQEAKIAkJQTdDQTNBRTIxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vh
a01hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYWtNYXAuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdDQTNBRTkxN0RBNTE2ODAwNjUzOEFGIC8qIFdl
YWtNYXBEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYWtN
YXBEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdDQTNBRUExN0RBNTE2
ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYWtNYXBEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUEw
MTg4MEQ2NkUwMDI2QzM5QiAvKiBBcnJheS5wcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmphdmFzY3JpcHQ7IHBhdGggPSBBcnJheS5wcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUE3RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0
YWJsZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnVpbHRpbkV4
ZWN1dGFibGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTIxODgw
RDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBCdWlsdGluRXhlY3V0YWJsZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTdEODAxQTYxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ0J1aWx0aW5zLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTcxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1
aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ0J1aWx0aW5zLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RDg5Q0UzMTdBMEI4Q0MwMDc3M0FEOCAv
KiBERkdCYXNpY0Jsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IERGR0Jhc2ljQmxvY2suY3BwOyBwYXRoID0gZGZnL0RGR0Jhc2ljQmxvY2suY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBN0Q4OUNFNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxv
Y2tJbnNlcnRpb25TZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
REZHQmxvY2tJbnNlcnRpb25TZXQuY3BwOyBwYXRoID0gZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdEODlDRTUxN0EwQjhDQzAwNzcz
QUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IERGR0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBkZmcvREZHQmxvY2tJbnNlcnRp
b25TZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5MjYsNiArMjkzNyw3IEBA
CiAJCQkJODYwNEY0RjIxNDNBNkM0NDAwQjI5NUY1IC8qIENoYW5nZUxvZyAqLywKIAkJCQlGNjky
QTg1NDAyNTU1OTdEMDFGRjYwRjcgLyogY3JlYXRlX2hhc2hfdGFibGUgKi8sCiAJCQkJQTcxOEY4
MjExMTc4RUI0QjAwMjQ2NUE3IC8qIGNyZWF0ZV9yZWdleF90YWJsZXMgKi8sCisJCQkJQTcxREE4
MEQxODgwRDcxRjAwRDFGMjk5IC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zICovLAogCQkJCTQ1RTEy
RDg4MDZBNDlCMEYwMEU5REY4NCAvKiBqc2MuY3BwICovLAogCQkJCUY2OEVCQjhDMDI1NUQ0QzYw
MUZGNjBGNyAvKiBjb25maWcuaCAqLywKIAkJCQlGNUMyOTBFNjAyODRGOThFMDE4NjM1Q0EgLyog
SmF2YVNjcmlwdENvcmVQcmVmaXguaCAqLywKQEAgLTI5MzQsNiArMjk0Niw3IEBACiAJCQkJMTQz
MkVCRDcwQTM0Q0FENDAwNzE3QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4Q0IxMjBFRDEyQjRFMDAx
RDY0OUYgLyogYXNzZW1ibGVyICovLAogCQkJCUE1NENGMkVBMTg0RUE3MzkwMDIzN0YxOSAvKiBi
aW5kaW5ncyAqLywKKwkJCQlBN0Q4MDE5RjE4ODBENjZFMDAyNkMzOUIgLyogYnVpbHRpbnMgKi8s
CiAJCQkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovLAogCQkJCTdFMzlE
ODFEMEVDMzhFRkEwMDNBRjExQSAvKiBieXRlY29tcGlsZXIgKi8sCiAJCQkJMUM5MDUxM0UwQkE5
RTg4MzAwODFFOUQwIC8qIENvbmZpZ3VyYXRpb25zICovLApAQCAtMzUwOSw2ICszNTIyLDggQEAK
IAkJNjUwRkRGOEQwOUQwRkNBNzAwNzY5RTU0IC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQTdEODAxQTYxODgwRDZBODAw
MjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCAqLywKKwkJCQlBN0Q4MDFBNzE4ODBENkE4MDAyNkMz
OUIgLyogSlNDQnVpbHRpbnMuaCAqLywKIAkJCQlCQzE4QzUyMzBFMTZGQzhBMDBCMzQ0NjAgLyog
QXJyYXlQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJQkNEMjAzRTcwRTE3MThGNDAwMkM3RTgyIC8q
IERhdGVQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJQTUxM0U1QzYxODVGOTQzNjAwN0U5NUFEIC8q
IEluamVjdGVkU2NyaXB0U291cmNlLmggKi8sCkBAIC0zODExLDYgKzM4MjYsNyBAQAogCQkJCUE3
OTBERDZBMTgyRjQ5OTcwMDU4ODgwNyAvKiBKU1NldEl0ZXJhdG9yLmggKi8sCiAJCQkJQkMwMkU5
QjYwRTE4NDJGQTAwMEY5Mjk3IC8qIEpTU3RyaW5nLmNwcCAqLywKIAkJCQlGNjkyQTg2MjAyNTU1
OTdEMDFGRjYwRjcgLyogSlNTdHJpbmcuaCAqLywKKwkJCQlBNzFEQTgwRTE4ODBEQkFCMDBEMUYy
OTkgLyogSlNTdHJpbmdJbmxpbmVzLmggKi8sCiAJCQkJODZFODU1MzgxMTFCOTk2ODAwMUFGNTFF
IC8qIEpTU3RyaW5nQnVpbGRlci5oICovLAogCQkJCTI2MDBCNUE0MTUyQkFBQTcwMDkxRUU1RiAv
KiBKU1N0cmluZ0pvaW5lci5jcHAgKi8sCiAJCQkJMjYwMEI1QTUxNTJCQUFBNzAwOTFFRTVGIC8q
IEpTU3RyaW5nSm9pbmVyLmggKi8sCkBAIC00NTYxLDYgKzQ1NzcsMTYgQEAKIAkJCXBhdGggPSBy
ZW1vdGU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlBN0Q4MDE5RjE4ODBE
NjZFMDAyNkMzOUIgLyogYnVpbHRpbnMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCUE3RDgwMUEwMTg4MEQ2NkUwMDI2QzM5QiAvKiBBcnJheS5wcm90b3R5
cGUuanMgKi8sCisJCQkJQTdEODAxQTExODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRh
Ymxlcy5jcHAgKi8sCisJCQkJQTdEODAxQTIxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVj
dXRhYmxlcy5oICovLAorCQkJKTsKKwkJCXBhdGggPSBidWlsdGluczsKKwkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CisJCX07CiAvKiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLwogCiAvKiBCZWdp
biBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC00NjA2LDExICs0NjMyLDExIEBA
CiAJCQkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNUNFRUUxNTE4N0YzQkFEMDBFNTVDOTkgLyogSW5zcGVjdG9yQWdlbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTY1QzAyODVEMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RP
cGNvZGUuaCBpbiBIZWFkZXJzICovLAotIAkJCQkyQTY4Mjk1QjE4NzVGODA1MDBCNkMzRTIgLyog
Q29weVdyaXRlQmFycmllci5oIGluIEhlYWRlcnMgKi8sCi0gICAgICAgICAgICAgICAgMkE0RUM5
MEMxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMkE2ODI5NUIxODc1RjgwNTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTJBNEVDOTBDMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJC
dWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNTkzMkE4MTgzQzVBMjYwMEExRUNDQyAvKiBW
TUVudHJ5U2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MzI0MzkzMTg1Njk3MDkwMDJFRDY5
MiAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weSBpbiBIZWFkZXJzICovLAotIAkJ
CQlBNTMyNDM5MjE4NTY5NzA5MDAyRUQ2OTIgLyogQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSBp
biBIZWFkZXJzICovLAorCQkJCUE1MzI0MzkyMTg1Njk3MDkwMDJFRDY5MiAvKiBDb2RlR2VuZXJh
dG9ySW5zcGVjdG9yLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NEYxN0VFMjc0OTAwQUJC
MjE3IC8qIFRlbXBSZWdpc3RlclNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwRTRCNjQxODgw
OURENTAwNjhBNDZEIC8qIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRUI1OEMxNTE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTQ2MjIsNyArNDY0OCw3IEBACiAJCQkJMEY4MzM1QjgxNjM5QzFF
QTAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE1ODQwRTI5MTg3Q0E1RTYwMDg0M0IxMCAvKiBpbmxpbmUtYW5kLW1pbmlmeS1zdHlsZXNoZWV0
cy1hbmQtc2NyaXB0cy5weSBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwRTJCMTg3Q0E3NUIwMDg0
M0IxMCAvKiBqc21pbi5weSBpbiBIZWFkZXJzICovLAotIAkJCQlBNTMyNDM5ODE4NTZBNDg5MDAy
RUQ2OTIgLyogSW5zcGVjdG9ySlMuanNvbiBpbiBIZWFkZXJzICovLAorCQkJCUE1MzI0Mzk4MTg1
NkE0ODkwMDJFRDY5MiAvKiBJbnNwZWN0b3JKUy5qc29uIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4
NDBFMkExODdDQTc1OTAwODQzQjEwIC8qIHh4ZC5wbCBpbiBIZWFkZXJzICovLAogCQkJCUZFQTA4
NjIwMTgyQjdBMDQwMEY2RDg1MSAvKiBCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
N0E4QUYzNTE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLApA
QCAtNDczMyw3ICs0NzU5LDcgQEAKIAkJCQlBMUEwMDlDMDE4MzFBMjJEMDBDRjg3MTEgLyogTWFj
cm9Bc3NlbWJsZXJBUk02NC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQzlEQzUxMzI4REY4MjAw
MkIyQUQ3IC8qIERGR0J5dGVDb2RlUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMy
ODE4N0RGREVDMDA4M0I2ODcgLyogRlRMQXZhaWxhYmxlUmVjb3ZlcnkuaCBpbiBIZWFkZXJzICov
LAotICAgICAgICAgICAgICAgIEE1OTNDRjg3MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JB
Z2VudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTkzQ0Y4NzE4NDAzOENBMDBCRkNF
MjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNTZD
MzYxNjI3QjBBRDAwN0YyNzgzIC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJh
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEgLyogREZH
Q2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZGQzk1ODE0RUY5MEEyMDBDNzI1
MzIgLyogREZHQ0ZBUGhhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtNDg3Miw2ICs0ODk4LDcgQEAK
IAkJCQkwRkVBMEExRDE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkVBMEExRjE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU5NDU1OTMxODI0NzQ0NzAwQ0MzODQz
IC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdEODAx
QTkxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkVBMEEwQTE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjQ4NTMyQTE4N0RGREVDMDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRUEwQTIzMTcwOTYwNjkwMEJCNzIyQyAvKiBGVExDb21tb25W
YWx1ZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNDk0Niw2ICs0OTczLDcgQEAKIAkJCQlCQzE4QzQw
RjBFMTZGNUNEMDBCMzQ0NjAgLyogSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzI1
RjhCQ0UxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZCN0YzOTkxNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nSGVhZGVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQlBN0Q4MDFBNTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1
dGFibGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5QTE1RUQ4RTQ2MDBGMTY3QjIgLyog
SW5kZXhpbmdIZWFkZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5QjE1RUQ4
RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNFRkFC
MDE4MDVDQTZEMDA0NzJDRTQgLyogSW5pdGlhbGl6ZUxMVk0uaCBpbiBIZWFkZXJzICovLApAQCAt
NTIxOCw2ICs1MjQ2LDcgQEAKIAkJCQlBNTMyNDM4ODE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVj
dG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDU2MEUx
NkY1Q0QwMEIzNDQ2MCAvKiBQcm90ZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc0QzMzQjE2
QUEyRDk1MDA2MkYwMUQgLyogUHJvdG90eXBlTWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzFE
QTgwRjE4ODBEQkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjkzMzJBNDE0Q0E3REQ5MDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYwQ0Q0QzIxNUYxQTYwNzAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4TW9k
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MwMDhDRTcxODc2MzFCNjAwOTU1QzI0IC8qIE1pY3Jv
dGFzay5oIGluIEhlYWRlcnMgKi8sCkBAIC01ODM2LDYgKzU4NjUsNyBAQAogCQkJCUE3RDg5Q0Yy
MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE3MEIwODMyMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTdEODlDRjMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9u
U2V0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3RDgwMUE0MTg4MEQ2NkUwMDI2QzM5QiAvKiBC
dWlsdGluRXhlY3V0YWJsZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZFQzlEQzQxMzI4REY4
MjAwMkIyQUQ3IC8qIERGR0J5dGVDb2RlUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RDgyRTIxMTQxNzJDRTMwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEZGRkM5NTcxNEVGOTBBMDAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtNTg1Miw2ICs1ODgyLDcgQEAKIAkJCQkwRkZGQzk1OTE0RUY5MEE2MDBD
NzI1MzIgLyogREZHQ1NFUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyRkM3NzIxNkUx
MkY3MTAwMzhEOTc2IC8qIERGR0RDRVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEYy
Qjk5MTcyRjA0RkYwMDdEQkRBNSAvKiBERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQTdEODAxQTgxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE3M0UxMzMwMTc5NjI0Q0QwMEU0REVBOCAvKiBERkdEZXNpcmVk
U3RydWN0dXJlQ2hhaW5zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyQzBGN0NEMTdCQkZDNUIw
MDQ2NEZFNCAvKiBERkdEZXNpcmVkVHJhbnNpdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZFODUzNEIxNzIzQ0RBNTAwQjYxOEY1IC8qIERGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTU5NzYsNyArNjAwNyw3IEBACiAJCQkJMEY2QjFDQzUxODYyQzQ3ODAw
ODQ1RDk3IC8qIEZUTFVud2luZEluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5RDMzOUEx
ODAzQURCNzAwNzNDMkJDIC8qIEZUTFN0YWNrTWFwcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RkVBMEExNjE3MDZCQjkwMDBCQjcyMkMgLyogRlRMU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCi0g
CQkJCTdDMDA4Q0QyMTg2RjhBOTMwMDk1NUMyNCAvKiBKU1Byb21pc2VGdW5jdGlvbnMuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJN0MwMDhDRDIxODZGOEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlzZUZ1
bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNCNTE4NUZDOUU5MDA4NDVEOTcg
LyogRlRMSlNDYWxsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkUxMTcxNzhFMUMwMDY5
MEM3RiAvKiBGVExUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5M0NGN0MxODQwMzYw
MzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKaW5k
ZXggYWYxNGUzM2VhYzA1OTdmMmQ3OGM0YjNjZDE2MzU0MTFkYWJhOTY1ZS4uNjc5MjNmMDgyM2My
ZmJhYjMxMTI4YWRiNTE5ZGM4OWVhMDJiNjUwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRl
ICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlv
bklubGluZXMuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNs
dWRlIDx3dGYvQ29tcGlsYXRpb25UaHJlYWQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlYjQyZjVjYzQzM2Yx
NjM2MzQzYmZjOTgyYWEyYWFmYjMzNmU5NDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzCkBAIC0wLDAgKzEsNTEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlvbiBl
dmVyeShjYWxsYmFjayAvKiwgdGhpc0FyZyAqLykgeworICAgICJ1c2Ugc3RyaWN0IjsKKyAgICBp
ZiAodGhpcyA9PT0gbnVsbCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnBy
b3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCIpOworICAgIAor
ICAgIGlmICh0aGlzID09PSB1bmRlZmluZWQpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9y
KCJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVm
aW5lZCIpOworICAgIAorICAgIHZhciBhcnJheSA9IEBPYmplY3QodGhpcyk7CisgICAgdmFyIGxl
bmd0aCA9IGFycmF5Lmxlbmd0aCA+Pj4gMDsKKyAgICAKKyAgICBpZiAodHlwZW9mIGNhbGxiYWNr
ICE9PSAiZnVuY3Rpb24iKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJv
dG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOworCisgICAgdmFyIHRo
aXNBcmcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDsK
KyAgICAKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlm
ICghKGkgaW4gYXJyYXkpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghY2Fs
bGJhY2suQGNhbGwodGhpc0FyZywgYXJyYXlbaV0sIGksIGFycmF5KSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzQxZGJiNWY5MjI1ZTI4YTEyZWQzZDE3OThmZjE3NjhlNDM2NzFhNgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCdWls
dGluRXhlY3V0YWJsZXMuaCIKKworI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJK
U0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKKyNpbmNsdWRl
ICJQYXJzZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0J1aWx0aW5FeGVjdXRhYmxlczo6QnVp
bHRpbkV4ZWN1dGFibGVzKFZNJiB2bSkKKyAgICA6IG1fdm0odm0pCisjZGVmaW5lIElOSVRJQUxJ
WkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgLCBt
XyMjbmFtZSMjU291cmNlKG1ha2VTb3VyY2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwo
c18jI25hbWUsIGxlbmd0aCksIFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCI8YnVpbHRp
bj4iKSkpCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTihJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNF
X01FTUJFUlMpCisjdW5kZWYgRVhQT1NFX0JVSUxUSU5fU1RSSU5HUworeworfQorCitVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhl
Y3V0YWJsZShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGNvbnN0IElkZW50aWZpZXImIG5hbWUp
Cit7CisgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZTsKKyAgICBQ
YXJzZXJFcnJvciBlcnJvcjsKKyAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJz
ZTxQcm9ncmFtTm9kZT4oJm1fdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBKU1BhcnNlQnVp
bHRpbiwgSlNQYXJzZVByb2dyYW1Db2RlLCBlcnJvciwgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xp
bmUpOworCisgICAgaWYgKCFwcm9ncmFtKSB7CisgICAgICAgIGRhdGFMb2coIkZhdGFsIGVycm9y
IGNvbXBpbGluZyBidWlsdGluIGZ1bmN0aW9uICciLCBuYW1lLnN0cmluZygpLCAiJzogIiwgZXJy
b3IubV9tZXNzYWdlKTsKKyAgICAgICAgQ1JBU0goKTsKKyAgICB9CisKKyAgICBTdGF0ZW1lbnRO
b2RlKiBleHByU3RhdGVtZW50ID0gcHJvZ3JhbS0+c2luZ2xlU3RhdGVtZW50KCk7CisgICAgUkVM
RUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRl
bWVudC0+aXNFeHByU3RhdGVtZW50KCkpOworICAgIEV4cHJlc3Npb25Ob2RlKiBmdW5jRXhwciA9
IHN0YXRpY19jYXN0PEV4cHJTdGF0ZW1lbnROb2RlKj4oZXhwclN0YXRlbWVudCktPmV4cHIoKTsK
KyAgICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwcik7CisgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4
cHItPmlzRnVuY0V4cHJOb2RlKCkpOworICAgIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkgPSBzdGF0
aWNfY2FzdDxGdW5jRXhwck5vZGUqPihmdW5jRXhwciktPmJvZHkoKTsKKyAgICBSRUxFQVNFX0FT
U0VSVCghcHJvZ3JhbS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CisgICAgCisgICAgYm9keS0+
c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CisgICAgUkVMRUFTRV9B
U1NFUlQoYm9keSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keS0+aWRlbnQoKS5pc051bGwoKSk7
CisgICAgCisgICAgLy8gVGhpcyBmdW5jdGlvbiBhc3N1bWVzIGFuIGlucHV0IHN0cmluZyB0aGF0
IHdvdWxkIHJlc3VsdCBpbiBhIHNpbmdsZSBhbm9ueW1vdXMgZnVuY3Rpb24gZXhwcmVzc2lvbi4K
KyAgICBib2R5LT5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVChib2R5KTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNsb3NlZFZhcmlh
YmxlIDogcHJvZ3JhbS0+Y2xvc2VkVmFyaWFibGVzKCkpIHsKKyAgICAgICAgaWYgKGNsb3NlZFZh
cmlhYmxlID09IG1fdm0ucHJvcGVydHlOYW1lcy0+YXJndW1lbnRzLmltcGwoKSkKKyAgICAgICAg
Y29udGludWU7CisgICAgICAgIAorICAgICAgICBpZiAoY2xvc2VkVmFyaWFibGUgPT0gbV92bS5w
cm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLmltcGwoKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBSRUxFQVNFX0FTU0VSVChjbG9zZWRWYXJpYWJsZS0+aXNFbXB0eVVuaXF1
ZSgpKTsKKyAgICB9CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhl
Y3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJm1fdm0sIHNvdXJj
ZSwgYm9keSwgdHJ1ZSwgVW5saW5rZWRCdWlsdGluRnVuY3Rpb24pOworICAgIGZ1bmN0aW9uRXhl
Y3V0YWJsZS0+bV9uYW1lVmFsdWUuc2V0KG1fdm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwganNTdHJp
bmcoJm1fdm0sIG5hbWUuc3RyaW5nKCkpKTsKKyAgICByZXR1cm4gZnVuY3Rpb25FeGVjdXRhYmxl
OworfQorCisjZGVmaW5lIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9u
TmFtZSwgbGVuZ3RoKSBcCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1
dGFibGVzOjpuYW1lIyNFeGVjdXRhYmxlKCkgXAore1wKKyAgICBpZiAoIW1fIyNuYW1lIyNFeGVj
dXRhYmxlKVwKKyAgICAgICAgbV8jI25hbWUjI0V4ZWN1dGFibGUgPSBjcmVhdGVCdWlsdGluRXhl
Y3V0YWJsZShtXyMjbmFtZSMjU291cmNlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPmZ1bmN0aW9uTmFt
ZSk7XAorICAgIHJldHVybiBtXyMjbmFtZSMjRXhlY3V0YWJsZS5nZXQoKTtcCit9CitKU0NfRk9S
RUFDSF9CVUlMVElOKERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIEVYUE9TRV9C
VUlMVElOX1NPVVJDRVMKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5YTE5ZTI2MTUwNzk0YTY2OWVj
OThlMzk5YmY2N2Y3ZjcxMDY0MTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKQEAgLTAsMCArMSw2NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQnVpbHRp
bkV4ZWN1dGFibGVzX2gKKyNkZWZpbmUgQnVpbHRpbkV4ZWN1dGFibGVzX2gKKworI2luY2x1ZGUg
IkpTQ0J1aWx0aW5zLmgiCisjaW5jbHVkZSAiU291cmNlQ29kZS5oIgorI2luY2x1ZGUgIldlYWsu
aCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7CitjbGFzcyBJZGVudGlmaWVyOworY2xhc3Mg
Vk07CisKK2NsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlcyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NPd25QdHI8QnVpbHRpbkV4ZWN1dGFibGVzPiBjcmVhdGUoVk0mIHZtKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBCdWlsdGluRXhlY3V0YWJsZXModm0pKTsKKyAgICB9Cisg
ICAgCisjZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFt
ZSwgbGVuZ3RoKSBcCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0YWJs
ZSgpOyBcCitjb25zdCBTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSB7IHJldHVybiBtXyMjbmFt
ZSMjU291cmNlOyB9CisgICAgCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTihFWFBPU0VfQlVJTFRJ
Tl9FWEVDVVRBQkxFUykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJTl9TT1VSQ0VTCisgICAgCitwcml2
YXRlOgorICAgIEJ1aWx0aW5FeGVjdXRhYmxlcyhWTSYpOworICAgIFZNJiBtX3ZtOworICAgIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShjb25zdCBT
b3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYpOworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5f
U09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpXAorICAgIFNvdXJjZUNv
ZGUgbV8jI25hbWUjI1NvdXJjZTsgXAorICAgIFdlYWs8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU+IG1fIyNuYW1lIyNFeGVjdXRhYmxlOworICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4oREVDTEFS
RV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0Vf
TUVNQkVSUworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKaW5kZXggNGMwNTVmZWE1NzM4ZjFjNDYzMjY2ZDRlOWE5
MTU0OGExMjkzNDcwOS4uZWFlZmU1NGYyZDE1Mjg0YjY0YmY2OTk3MjY1OGNkMWM2M2I0ZWE3NSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAK
QEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJBcnJheVByb2ZpbGUuaCIKIAogI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSA8
d3RmL0NvbW1hUHJpbnRlci5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKaW5kZXggZDc0ODlkMzFhYmQ3
Yzk5ZjFiYzZmYWZhZTY1ODExMTJhYmRhY2ZkYi4uMWEzYjVmNGM3ODA3Yjk0ODhmZjM2NTcyZjc5
NGQwYmI5ZjM4ZDI1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJC
eXRlY29kZUJhc2ljQmxvY2suaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUg
IkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAppbmRleCA5MjYzMzRjNDQ0Yzlj
MmYzZGZjYzk1MDEyY2QwYTRhMDMxMDRkMmQ5Li5hZDRhZTIyOTVlYWM0OGFhNDBhZmJlZTNlYjY5
Mjg5NmZjY2FiZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcApAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5j
bHVkZSAiRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5l
cy5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKaW5k
ZXggNmE2MDA1NzZhMDAwYWRhYzhhZjIxNGU5ODgxMzY0NjE5ZjI5YTAxMC4uNGJmODE4ODY2MDI4
Yzc5NmE3MmU1NzgzMzJlNDY3NzU1NmIyMzdhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1
ZGUgIkRGR09wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJERkdUaHVua3MuaCIKKyNpbmNsdWRlICJK
U0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKIAogI2lmIEVO
QUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CmluZGV4IDI2M2VjN2NhZGY0Zjc5Y2E4MTAyNDQxZTYyYmYyYTA1YjVkZGMzZjIuLjc1MTUwNjU0
MjM3NmQ3ZWRjNTk5YWEwMGY5YjEyNjg1Y2RhMzUyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC00MywxMSArNDMsMTMgQEAKICNpbmNsdWRl
ICJKSVQuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5o
IgotI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2lu
Y2x1ZGUgIkxMSW50RW50cnlwb2ludC5oIgogI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIu
aCIKKyNpbmNsdWRlICJOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiT2JqZWN0
Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUG9seW1v
cnBoaWNQdXRCeUlkTGlzdC5oIgogI2luY2x1ZGUgIlJlZHVjZVdoaXRlc3BhY2UuaCIKQEAgLTE1
NjksNyArMTU3MSw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93
bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGluCiAKICAgICBzZXRDb25zdGFu
dFJlZ2lzdGVycyh1bmxpbmtlZENvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcnMoKSk7CiAgICAg
aWYgKHVubGlua2VkQ29kZUJsb2NrLT51c2VzR2xvYmFsT2JqZWN0KCkpCi0gICAgICAgIG1fY29u
c3RhbnRSZWdpc3RlcnNbdW5saW5rZWRDb2RlQmxvY2stPmdsb2JhbE9iamVjdFJlZ2lzdGVyKCku
b2Zmc2V0KCldLnNldCgqbV92bSwgb3duZXJFeGVjdXRhYmxlLCBtX2dsb2JhbE9iamVjdC5nZXQo
KSk7CisgICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnNbdW5saW5rZWRDb2RlQmxvY2stPmdsb2Jh
bE9iamVjdFJlZ2lzdGVyKCkudG9Db25zdGFudEluZGV4KCldLnNldCgqbV92bSwgb3duZXJFeGVj
dXRhYmxlLCBtX2dsb2JhbE9iamVjdC5nZXQoKSk7CiAgICAgbV9mdW5jdGlvbkRlY2xzLnJlc2l6
ZVRvRml0KHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSk7CiAgICAg
Zm9yIChzaXplX3QgY291bnQgPSB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRl
Y2xzKCksIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlID0gdW5saW5rZWRDb2RlQmxvY2stPmZ1bmN0
aW9uRGVjbChpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApp
bmRleCA2OGJjMDM3OWY1NzQ0YzlhOGY3NDMxZGI2NGY4YWI1NGU2ZTEwNTNmLi40OTk1YzUyY2Y4
YjJiMWI0ZDYyODA0NTNlZWQyN2M3NzRhNDk1NThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC01Niw3ICs1Niw2IEBACiAjaW5jbHVkZSAiSGFuZGxl
ckluZm8uaCIKICNpbmNsdWRlICJPYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oIgogI2luY2x1ZGUg
Ik9wdGlvbnMuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHV0UHJvcGVy
dHlTbG90LmgiCiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJKSVRDb2RlLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0
dGlzb25pbmdXYXRjaHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCmluZGV4IGJlNTBjOTc3OGJmMzNlMzM5
YWM4MzRiZjU2ZTNiMWU3NTU4NmZlM2UuLmI3NjQ2ZWQxZWYxNjQxODlmY2ZjN2I1MzY1NmZiNjVi
ZWQwNjRkMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdDb21tb24uaCIK
KyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCmluZGV4IDY4ZGM2
YjA1MzM1NTkwZWM0YzgxYzQyMzQ2YmI3NGRiYmQ4ZmFjNTYuLjE1Nzg4MDg5MzRkZDNjYzRjZDk3
ZDI3MWFlOGFjOGJmZTM5NzQ2YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlT3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZU9yaWdpbi5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDYWxsRnJhbWUu
aCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5j
bHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKIG5h
bWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2lu
dC5jcHAKaW5kZXggOTg2ZTAzZDBjYmE3MTg1YjM5Y2VlMDIzZjRhYjZiYzliOGNjYjZlNC4uNmYy
ZDVlYmExY2E0NWRkZWIxZGY2NWZkMDUxMjMzZTVmMTM4YmUwZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRj
aHBvaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRD
b2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVkZSAiREZH
RXhpdFByb2ZpbGUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5jcHAKaW5kZXggMWRmYjVhYzZhZDkwOTNmOGY4MTEwMWVmN2YyZTYxMjMx
MWFjMTkzOS4uNDMzOTBkOTY1ZmM1MDM0MDE2ZjdiZmZmMjNlNjhiYjFlMDU0NTUyYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
Y3BwCkBAIC00OSw5ICs0OSw5IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZFByb2dyYW1Db2Rl
QmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayIsCiBjb25zdCBDbGFz
c0luZm8gVW5saW5rZWRFdmFsQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZEV2YWxDb2Rl
QmxvY2siLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlua2Vk
RXZhbENvZGVCbG9jaykgfTsKIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5m
bywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKSB9
OwogCi1zdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNv
ZGVCbG9jayhWTSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgRGVi
dWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2Vy
RXJyb3ImIGVycm9yKQorc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRl
RnVuY3Rpb25Db2RlQmxvY2soVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
IGtpbmQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1v
ZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9y
KQogewotICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBib2R5ID0gcGFyc2U8RnVuY3Rpb25C
b2R5Tm9kZT4oJnZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0YWJs
ZS0+bmFtZSgpLCBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpID8gSlNQYXJzZVN0cmlj
dCA6IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VGdW5jdGlvbkNvZGUsIGVycm9yKTsKKyAgICBSZWZQ
dHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSA9IHBhcnNlPEZ1bmN0aW9uQm9keU5vZGU+KCZ2bSwg
c291cmNlLCBleGVjdXRhYmxlLT5wYXJhbWV0ZXJzKCksIGV4ZWN1dGFibGUtPm5hbWUoKSwgZXhl
Y3V0YWJsZS0+dG9TdHJpY3RuZXNzKCksIEpTUGFyc2VGdW5jdGlvbkNvZGUsIGVycm9yKTsKIAog
ICAgIGlmICghYm9keSkgewogICAgICAgICBBU1NFUlQoZXJyb3IubV90eXBlICE9IFBhcnNlckVy
cm9yOjpFcnJvck5vbmUpOwpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhWTSYgdm0sIFVubGlua2VkRnVu
YwogICAgIGJvZHktPmZpbmlzaFBhcnNpbmcoZXhlY3V0YWJsZS0+cGFyYW1ldGVycygpLCBleGVj
dXRhYmxlLT5uYW1lKCksIGV4ZWN1dGFibGUtPmZ1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZSgp
KTsKICAgICBleGVjdXRhYmxlLT5yZWNvcmRQYXJzZShib2R5LT5mZWF0dXJlcygpLCBib2R5LT5o
YXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKICAgICAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUoJnZtLCBGdW5j
dGlvbkNvZGUsIEV4ZWN1dGFibGVJbmZvKGJvZHktPm5lZWRzQWN0aXZhdGlvbigpLCBib2R5LT51
c2VzRXZhbCgpLCBib2R5LT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0
KSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5mbyhi
b2R5LT5uZWVkc0FjdGl2YXRpb24oKSwgYm9keS0+dXNlc0V2YWwoKSwgYm9keS0+aXNTdHJpY3RN
b2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2Vk
QnVpbHRpbkZ1bmN0aW9uKSk7CiAgICAgT3duUHRyPEJ5dGVjb2RlR2VuZXJhdG9yPiBnZW5lcmF0
b3IoYWRvcHRQdHIobmV3IEJ5dGVjb2RlR2VuZXJhdG9yKHZtLCBib2R5LmdldCgpLCByZXN1bHQs
IGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlKSkpOwogICAgIGVycm9yID0gZ2VuZXJhdG9yLT5n
ZW5lcmF0ZSgpOwogICAgIGJvZHktPmRlc3Ryb3lEYXRhKCk7CkBAIC04MiwxMyArODIsMTQgQEAg
dW5zaWduZWQgVW5saW5rZWRDb2RlQmxvY2s6OmFkZE9yRmluZENvbnN0YW50KEpTVmFsdWUgdikK
ICAgICByZXR1cm4gYWRkQ29uc3RhbnQodik7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJv
b2wgaXNGcm9tR2xvYmFsQ29kZSkKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9tR2xv
YmFsQ29kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCkKICAgICA6IEJhc2UoKnZtLCBzdHJ1
Y3R1cmUpCiAgICAgLCBtX251bUNhcHR1cmVkVmFyaWFibGVzKG5vZGUtPmNhcHR1cmVkVmFyaWFi
bGVDb3VudCgpKQogICAgICwgbV9mb3JjZVVzZXNBcmd1bWVudHMobm9kZS0+dXNlc0FyZ3VtZW50
cygpKQogICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChub2RlLT5pc1N0cmljdE1vZGUoKSkKICAg
ICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMobm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkK
ICAgICAsIG1faXNGcm9tR2xvYmFsQ29kZShpc0Zyb21HbG9iYWxDb2RlKQorICAgICwgbV9pc0J1
aWx0aW5GdW5jdGlvbihraW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uKQogICAgICwgbV9u
YW1lKG5vZGUtPmlkZW50KCkpCiAgICAgLCBtX2luZmVycmVkTmFtZShub2RlLT5pbmZlcnJlZE5h
bWUoKSkKICAgICAsIG1fcGFyYW1ldGVycyhub2RlLT5wYXJhbWV0ZXJzKCkpCkBAIC0xNjYsNyAr
MTY3LDcgQEAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU6OmNvZGVCbG9ja0ZvcihWTSYgdm0sIGNvbnMKICAgICAgICAgYnJlYWs7CiAgICAgfQog
Ci0gICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVGdW5jdGlv
bkNvZGVCbG9jayh2bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2Vy
TW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
ayogcmVzdWx0ID0gZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayh2bSwgdGhpcywgc291cmNlLCBz
cGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBpc0J1aWx0aW5G
dW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0
aW9uLCBlcnJvcik7CiAgICAgCiAgICAgaWYgKGVycm9yLm1fdHlwZSAhPSBQYXJzZXJFcnJvcjo6
RXJyb3JOb25lKQogICAgICAgICByZXR1cm4gMDsKQEAgLTIxMCw2ICsyMTEsNyBAQCBVbmxpbmtl
ZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgQ29kZVR5cGUgY29kZQogICAgICwgbV9pc1N0cmljdE1vZGUoaW5mby5tX2lzU3RyaWN0TW9k
ZSkKICAgICAsIG1faXNDb25zdHJ1Y3RvcihpbmZvLm1faXNDb25zdHJ1Y3RvcikKICAgICAsIG1f
aGFzQ2FwdHVyZWRWYXJpYWJsZXMoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGlu
Zm8ubV9pc0J1aWx0aW5GdW5jdGlvbikKICAgICAsIG1fZmlyc3RMaW5lKDApCiAgICAgLCBtX2xp
bmVDb3VudCgwKQogICAgICwgbV9lbmRDb2x1bW4oVUlOVF9NQVgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IGI5ZGFlMmQ1
YzY5Yzc5Y2VhYWE4MDIzZDJhM2ExZjI2ZDQ2MDk0M2IuLmFiZjZjZjM1YjkzMDZhNGY3YTMwMWFi
MGRmNzY2NmVjNjEyZTM3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC02NiwyNiArNjYsMzUgQEAgdHlwZWRlZiB1bnNp
Z25lZCBVbmxpbmtlZE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOwogdHlwZWRlZiB1bnNpZ25lZCBV
bmxpbmtlZExMSW50Q2FsbExpbmtJbmZvOwogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAg
IEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29s
IGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yKQorICAgIEV4ZWN1dGFibGVJbmZvKGJv
b2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9v
bCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKQogICAgICAgICA6IG1fbmVl
ZHNBY3RpdmF0aW9uKG5lZWRzQWN0aXZhdGlvbikKICAgICAgICAgLCBtX3VzZXNFdmFsKHVzZXNF
dmFsKQogICAgICAgICAsIG1faXNTdHJpY3RNb2RlKGlzU3RyaWN0TW9kZSkKICAgICAgICAgLCBt
X2lzQ29uc3RydWN0b3IoaXNDb25zdHJ1Y3RvcikKKyAgICAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0
aW9uKGlzQnVpbHRpbkZ1bmN0aW9uKQogICAgIHsKICAgICB9Ci0gICAgYm9vbCBtX25lZWRzQWN0
aXZhdGlvbjsKLSAgICBib29sIG1fdXNlc0V2YWw7Ci0gICAgYm9vbCBtX2lzU3RyaWN0TW9kZTsK
LSAgICBib29sIG1faXNDb25zdHJ1Y3RvcjsKKyAgICBib29sIG1fbmVlZHNBY3RpdmF0aW9uIDog
MTsKKyAgICBib29sIG1fdXNlc0V2YWwgOiAxOworICAgIGJvb2wgbV9pc1N0cmljdE1vZGUgOiAx
OworICAgIGJvb2wgbV9pc0NvbnN0cnVjdG9yIDogMTsKKyAgICBib29sIG1faXNCdWlsdGluRnVu
Y3Rpb24gOiAxOworfTsKKworZW51bSBVbmxpbmtlZEZ1bmN0aW9uS2luZCB7CisgICAgVW5saW5r
ZWROb3JtYWxGdW5jdGlvbiwKKyAgICBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwKIH07CiAKIGNs
YXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6
CisgICAgZnJpZW5kIGNsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlczsKICAgICBmcmllbmQgY2xhc3Mg
Q29kZUNhY2hlOworICAgIGZyaWVuZCBjbGFzcyBWTTsKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNl
OwotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNKiB2bSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlLCBib29sIGlz
RnJvbUdsb2JhbENvZGUgPSBmYWxzZSkKKyAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25C
b2R5Tm9kZSogbm9kZSwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2lu
ZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCkKICAgICB7Ci0gICAgICAgIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVhcCkpIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJj
ZSwgbm9kZSwgaXNGcm9tR2xvYmFsQ29kZSk7CisgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlPih2bS0+aGVhcCkpIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZt
LCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwg
bm9kZSwgaXNGcm9tR2xvYmFsQ29kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQpOwogICAgICAgICBp
bnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oKnZtKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwog
ICAgIH0KQEAgLTk5LDYgKzEwOCwxNCBAQCBwdWJsaWM6CiAgICAgfQogICAgIHNpemVfdCBwYXJh
bWV0ZXJDb3VudCgpIGNvbnN0OwogICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7
IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0OyB9CisgICAgSlNQYXJzZXJTdHJpY3RuZXNzIHRv
U3RyaWN0bmVzcygpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9pc0J1aWx0aW5GdW5jdGlv
bikKKyAgICAgICAgICAgIHJldHVybiBKU1BhcnNlQnVpbHRpbjsKKyAgICAgICAgaWYgKG1faXNJ
blN0cmljdENvbnRleHQpCisgICAgICAgICAgICByZXR1cm4gSlNQYXJzZVN0cmljdDsKKyAgICAg
ICAgcmV0dXJuIEpTUGFyc2VOb3JtYWw7CisgICAgfQogICAgIEZ1bmN0aW9uTmFtZUlzSW5TY29w
ZVRvZ2dsZSBmdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGUoKSBjb25zdCB7IHJldHVybiBtX2Z1
bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZTsgfQogCiAgICAgdW5zaWduZWQgZmlyc3RMaW5lT2Zm
c2V0KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdExpbmVPZmZzZXQ7IH0KQEAgLTE0Miw4ICsxNTks
MTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0ltbW9ydGFsU3RydWN0dXJl
ID0gdHJ1ZTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCisgICAgYm9vbCBp
c0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0K
KwogcHJpdmF0ZToKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVjdHVy
ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbkJvZHlOb2RlKiwgYm9vbCBpc0Zyb21HbG9i
YWxDb2RlKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVjdHVyZSos
IGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbkJvZHlOb2RlKiwgYm9vbCBpc0Zyb21HbG9iYWxD
b2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCk7CiAgICAgV3JpdGVCYXJyaWVyPFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2s+IG1fY29kZUJsb2NrRm9yQ2FsbDsKICAgICBXcml0ZUJhcnJpZXI8VW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3Q7CiAKQEAgLTE1
Miw2ICsxNzEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0luU3RyaWN0Q29udGV4dCA6IDE7
CiAgICAgYm9vbCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIDogMTsKICAgICBib29sIG1faXNGcm9t
R2xvYmFsQ29kZSA6IDE7CisgICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKIAogICAg
IElkZW50aWZpZXIgbV9uYW1lOwogICAgIElkZW50aWZpZXIgbV9pbmZlcnJlZE5hbWU7CkBAIC0z
MTksNiArMzM5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNOdW1lcmljQ29tcGFyZUZ1bmN0
aW9uKGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKSB7IG1faXNOdW1lcmljQ29tcGFyZUZ1
bmN0aW9uID0gaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CiAgICAgYm9vbCBpc051bWVyaWND
b21wYXJlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlv
bjsgfQogCisgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNC
dWlsdGluRnVuY3Rpb247IH0KKyAgICAKICAgICB2b2lkIHNocmlua1RvRml0KCkKICAgICB7CiAg
ICAgICAgIG1fanVtcFRhcmdldHMuc2hyaW5rVG9GaXQoKTsKQEAgLTUwMCw2ICs1MjIsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9pc1N0cmljdE1vZGUgOiAxOwogICAgIGJvb2wgbV9pc0NvbnN0
cnVjdG9yIDogMTsKICAgICBib29sIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgOiAxOworICAgIGJv
b2wgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CiAgICAgdW5zaWduZWQgbV9maXJzdExpbmU7CiAg
ICAgdW5zaWduZWQgbV9saW5lQ291bnQ7CiAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCmluZGV4IDY4MTBhYjgwMDJjZTZiYjhkNzhlN2ZmMjIyN2Y0YzZlYTdiNzU4YzIu
LmVjNTIxYjUzMDQ2MzkyM2U3NGMwMTBmYTIxOGU1OWVkMmE5YTNjYWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCkBAIC0xNzUsNiArMTc1LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFAKICNlbmRpZgog
ICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKICAgICAsIG1fZXhwcmVzc2lvblRvb0RlZXAo
ZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGZhbHNlKQogewogICAgIGlmIChtX3No
b3VsZEVtaXREZWJ1Z0hvb2tzKQogICAgICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNGdWxsU2Nv
cGVDaGFpbih0cnVlKTsKQEAgLTIyMiw3ICsyMjMsMTMgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb25Cb2R5LCBV
bmwKICNlbmRpZgogICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKICAgICAsIG1fZXhwcmVz
c2lvblRvb0RlZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGNvZGVCbG9jay0+
aXNCdWlsdGluRnVuY3Rpb24oKSkKIHsKKyAgICBpZiAobV9pc0J1aWx0aW5GdW5jdGlvbikgewor
ICAgICAgICBtX3Nob3VsZEVtaXRQcm9maWxlSG9va3MgPSBmYWxzZTsKKyAgICAgICAgbV9zaG91
bGRFbWl0RGVidWdIb29rcyA9IGZhbHNlOworICAgIH0KKwogICAgIGlmIChtX3Nob3VsZEVtaXRE
ZWJ1Z0hvb2tzKQogICAgICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNGdWxsU2NvcGVDaGFpbih0
cnVlKTsKIApAQCAtNDM4LDYgKzQ0NSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kCiAjZW5k
aWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAgICAgLCBtX2V4cHJlc3Npb25Ub29E
ZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihmYWxzZSkKIHsKICAgICBtX2Nv
ZGVCbG9jay0+c2V0TmVlZHNGdWxsU2NvcGVDaGFpbih0cnVlKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4
IDRlOWYyMTNjOWJmYTZjZjE5NGIxYTE0ZmU5MTllODMzMzdhZTM1ZDkuLjE1ODQyNzRiNzhlYTZj
MGJkMGVmYjBiOTgyNWM4MThiZTBkYmMwNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ2MSw3ICs0NjEs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBzaG91bGRFbWl0RGVidWdIb29rcygp
IHsgcmV0dXJuIG1fc2hvdWxkRW1pdERlYnVnSG9va3M7IH0KICAgICAgICAgCiAgICAgICAgIGJv
b2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9k
ZSgpOyB9Ci0KKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisgICAgICAgIAogICAgIHByaXZhdGU6
CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMYWJlbDsKICAgICAgICAgCkBAIC01NDMsNyArNTQ1LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogbWFrZUZ1bmN0aW9uKEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1f
dm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgYm9keSk7CisgICAgICAgICAgICByZXR1cm4gVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNl
KCksIGJvZHksIGZhbHNlLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVu
Y3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uKTsKICAgICAgICAgfQogCiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRJbml0TGF6eVJlZ2lzdGVyKFJlZ2lzdGVySUQqKTsKQEAgLTY3Nyw2ICs2
NzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIG1fdXNlc0V4Y2VwdGlvbnM7
CiAgICAgICAgIGJvb2wgbV9leHByZXNzaW9uVG9vRGVlcDsKKyAgICAgICAgYm9vbCBtX2lzQnVp
bHRpbkZ1bmN0aW9uOwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAxZmZkNGYzMTE4ODJkMGVlNWM1
NTE0ZjViOGIyNTkzOWQ5NzVlMzc5Li42MmVjYTM2YTEwZDc3MDhhOTI4ZDQzYWMwM2YyZmM4NjE1
Y2VjYTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwCkBAIC0yNiwxMCArMjYsMTAgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIk5vZGVzLmgiCi0jaW5jbHVkZSAiTm9kZUNvbnN0cnVjdG9ycy5oIgogCiAj
aW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNp
bmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5j
bHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtMzgsNiArMzgsNyBAQAog
I2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJMYWJlbFNjb3BlLmgiCiAjaW5jbHVk
ZSAiTGV4ZXIuaCIKKyNpbmNsdWRlICJOb2RlQ29uc3RydWN0b3JzLmgiCiAjaW5jbHVkZSAiT3Bl
cmF0aW9ucy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFy
cmF5LmgiCkBAIC01MzUsMzYgKzUzNiwzOSBAQCBSZWdpc3RlcklEKiBDYWxsRnVuY3Rpb25DYWxs
RG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAg
UmVmUHRyPExhYmVsPiBlbmQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwogICAgIGdlbmVyYXRv
ci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Npb25T
dGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5j
dGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRz
dCksIGJhc2UuZ2V0KCksIG1faWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlv
biA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCks
IGJhc2UuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuY2FsbCk7CiAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0
LCBmdW5jdGlvbi5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkNh
bGwoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKKyAgICBib29sIGVtaXRDYWxsQ2hl
Y2sgPSAhZ2VuZXJhdG9yLmlzQnVpbHRpbkZ1bmN0aW9uKCk7CisgICAgaWYgKGVtaXRDYWxsQ2hl
Y2spCisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKGZ1bmN0aW9u
LmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7CisKICAgICB7CiAgICAgICAgIGlmIChtX2FyZ3MtPm1f
bGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpIHsKICAgICAgICAgICAgIEFy
Z3VtZW50TGlzdE5vZGUqIG9sZExpc3QgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CiAgICAgICAgICAg
ICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKLQorICAg
ICAgICAgICAgCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0g
Z2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5n
ZXQoKSk7CiAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9y
LCBtX2FyZ3MpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMu
dGhpc1JlZ2lzdGVyKCksIG9sZExpc3QtPm1fZXhwcik7CiAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3Rl
ZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7Ci0KICAgICAg
ICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9sZExpc3Q7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVt
aXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAg
ICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwog
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVy
KCksIGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVy
blZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2Fs
bEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQotICAg
IGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOwotICAgIHsKLSAgICAgICAgQ2Fs
bEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkp
OwotICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9u
LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFi
ZWwocmVhbENhbGwuZ2V0KCkpOworICAgICAgICB7CisgICAgICAgICAgICBDYWxsQXJndW1lbnRz
IGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOworICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5n
ZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICB9CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFi
ZWwoZW5kLmdldCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0KCkp
OwogICAgIHJldHVybiByZXR1cm5WYWx1ZS5nZXQoKTsKIH0KIApAQCAtNTg1LDY1ICs1ODksNjcg
QEAgUmVnaXN0ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICBSZWZQdHI8TGFiZWw+IGVuZCA9IGdlbmVy
YXRvci5uZXdMYWJlbCgpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9y
LmVtaXROb2RlKG1fYmFzZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJl
eHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQo
KSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRHZXRC
eUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7
CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uOwogICAgIFJlZlB0cjxSZWdpc3RlcklE
PiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuY3Rpb24u
Z2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25BcHBseShmdW5jdGlv
bi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkpOwotICAgIHsKLSAgICAgICAgaWYgKG1heUJlQ2FsbCkg
ewotICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5v
ZGUtPm1fZXhwcikgewotICAgICAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIG9sZExpc3Qg
PSBtX2FyZ3MtPm1fbGlzdE5vZGU7Ci0gICAgICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0
Tm9kZS0+bV9uZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlz
dE5vZGUtPm1fbmV4dC0+bV9leHByLT5pc1NpbXBsZUFycmF5KCkpOwotICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoIW1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX25leHQpOwotICAgICAg
ICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBzdGF0aWNfY2FzdDxBcnJheU5vZGUq
PihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByKS0+dG9Bcmd1bWVudExpc3QoZ2Vu
ZXJhdG9yLnZtKCksIDAsIDApOwotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGlu
YXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIENhbGxBcmd1bWVu
dHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAgICAgICAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0
LT5tX2V4cHIpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJu
VmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxs
QXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9
IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50
ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIENh
bGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAgICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBvbGRMaXN0LT5tX2V4cHIpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENh
bGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0
aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBv
bGRMaXN0OworICAgIGJvb2wgZW1pdENhbGxDaGVjayA9ICFnZW5lcmF0b3IuaXNCdWlsdGluRnVu
Y3Rpb24oKTsKKyAgICBpZiAoZW1pdENhbGxDaGVjaykgeworICAgICAgICBmdW5jdGlvbiA9IGdl
bmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2Uu
Z2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYXBwbHkpOworICAgICAgICBnZW5lcmF0
b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHkoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdl
dCgpKTsKKyAgICB9CisgICAgaWYgKG1heUJlQ2FsbCkgeworICAgICAgICBpZiAobV9hcmdzLT5t
X2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKSB7CisgICAgICAgICAgICBB
cmd1bWVudExpc3ROb2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgICAgICAg
ICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KSB7CisgICAgICAgICAgICAgICAgQVNT
RVJUKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHItPmlzU2ltcGxlQXJyYXkoKSk7
CisgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9u
ZXh0KTsKKyAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBzdGF0aWNfY2FzdDxB
cnJheU5vZGUqPihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByKS0+dG9Bcmd1bWVu
dExpc3QoZ2VuZXJhdG9yLnZtKCksIDAsIDApOworICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBE
ZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBDYWxsQXJndW1l
bnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgICAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5t
X2V4cHIpOworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5n
ZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVu
dHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG1fYXJncy0+bV9saXN0
Tm9kZS0+bV9uZXh0OwogICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVu
Y3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3Qp
LCBiYXNlLmdldCgpKTsKICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVu
dHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9h
ZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwg
b2xkTGlzdC0+bV9leHByKTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0
dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBj
YWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAg
ICAgICAgfQorICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gb2xkTGlzdDsKICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9h
cmdzLT5tX2xpc3ROb2RlLT5tX25leHQpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHByb2ZpbGVIb29rUmVnaXN0ZXI7Ci0gICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLnNob3VsZEVt
aXRQcm9maWxlSG9va3MoKSkKLSAgICAgICAgICAgICAgICBwcm9maWxlSG9va1JlZ2lzdGVyID0g
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0
aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRo
aXNSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhw
cik7Ci0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXJnc1JlZ2lzdGVyOwotICAgICAg
ICAgICAgQXJndW1lbnRMaXN0Tm9kZSogYXJncyA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0
OwotICAgICAgICAgICAgaWYgKGFyZ3MtPm1fZXhwci0+aXNSZXNvbHZlTm9kZSgpICYmIGdlbmVy
YXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oYXJn
cy0+bV9leHByKS0+aWRlbnRpZmllcigpKSkKLSAgICAgICAgICAgICAgICBhcmdzUmVnaXN0ZXIg
PSBnZW5lcmF0b3IudW5jaGVja2VkUmVnaXN0ZXJGb3JBcmd1bWVudHMoKTsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUo
YXJncy0+bV9leHByKTsKLQotICAgICAgICAgICAgLy8gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5
IGlnbm9yZXMgZXh0cmEgYXJndW1lbnRzLCBidXQgd2Ugc3RpbGwKLSAgICAgICAgICAgIC8vIG5l
ZWQgdG8gZXZhbHVhdGUgdGhlbSBmb3Igc2lkZSBlZmZlY3RzLgotICAgICAgICAgICAgd2hpbGUg
KChhcmdzID0gYXJncy0+bV9uZXh0KSkKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5v
ZGUoYXJncy0+bV9leHByKTsKLQotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsVmFyYXJn
cyhyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCB0aGlzUmVnaXN0ZXIuZ2V0
KCksIGFyZ3NSZWdpc3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm9maWxl
SG9va1JlZ2lzdGVyLmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwor
ICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdz
KTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdp
c3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChy
ZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24s
IGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAg
ICAgIH0KLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5v
ZGUtPm1fbmV4dCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9maWxlSG9va1JlZ2lz
dGVyOworICAgICAgICBpZiAoZ2VuZXJhdG9yLnNob3VsZEVtaXRQcm9maWxlSG9va3MoKSkKKyAg
ICAgICAgICAgIHByb2ZpbGVIb29rUmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7
CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1p
dE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKKyAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZSht
X2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcik7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBh
cmdzUmVnaXN0ZXI7CisgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MgPSBtX2FyZ3MtPm1f
bGlzdE5vZGUtPm1fbmV4dDsKKyAgICAgICAgaWYgKGFyZ3MtPm1fZXhwci0+aXNSZXNvbHZlTm9k
ZSgpICYmIGdlbmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHN0YXRpY19jYXN0PFJlc29s
dmVOb2RlKj4oYXJncy0+bV9leHByKS0+aWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIGFyZ3NS
ZWdpc3RlciA9IGdlbmVyYXRvci51bmNoZWNrZWRSZWdpc3RlckZvckFyZ3VtZW50cygpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUo
YXJncy0+bV9leHByKTsKKworICAgICAgICAvLyBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkgaWdu
b3JlcyBleHRyYSBhcmd1bWVudHMsIGJ1dCB3ZSBzdGlsbAorICAgICAgICAvLyBuZWVkIHRvIGV2
YWx1YXRlIHRoZW0gZm9yIHNpZGUgZWZmZWN0cy4KKyAgICAgICAgd2hpbGUgKChhcmdzID0gYXJn
cy0+bV9uZXh0KSkKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShhcmdzLT5tX2V4cHIp
OworCisgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbFZhcmFyZ3MocmV0dXJuVmFsdWUuZ2V0KCks
IHJlYWxGdW5jdGlvbi5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBhcmdzUmVnaXN0ZXIuZ2V0
KCksIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQoKSwg
ZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9y
LmVtaXRMYWJlbChyZWFsQ2FsbC5nZXQoKSk7Ci0gICAgeworICAgIGlmIChlbWl0Q2FsbENoZWNr
KSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKICAgICAgICAgQ2FsbEFyZ3VtZW50cyBj
YWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRN
b3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwogICAgICAgICBn
ZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICB9
Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0KCkpOwogICAgIHJldHVybiByZXR1cm5W
YWx1ZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0
ZV9oYXNoX3RhYmxlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlCmlu
ZGV4IDM5Nzk3NmIwNmM3YTliNTgzNjMzMjkwMGE2ZWJiOTNlYzY4Yjc0ODYuLmNhZDY1YmM0Y2M4
ODhlMzE0Zjg4ZDY2NWRkNGE2ZTY0NWEwOWEzNTUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3Jl
YXRlX2hhc2hfdGFibGUKQEAgLTI4OSw3ICsyODksMTcgQEAgc3ViIG91dHB1dCgpIHsKICAgICAg
ICAgICAgICRpbnRyaW5zaWMgPSAiUmVnRXhwVGVzdEludHJpbnNpYyIgaWYgKCRrZXkgZXEgInRl
c3QiKTsKICAgICAgICAgfQogCisgICAgICAgIGlmICgkdmFsdWVzWyRpXXsidHlwZSJ9IGVxICJG
dW5jdGlvbiIpICB7CisgICAgICAgICAgICBteSAkdGFibGVIZWFkID0gJG5hbWU7CisgICAgICAg
ICAgICAkdGFibGVIZWFkID1+IHMvVGFibGUkLy87CisgICAgICAgICAgICBwcmludCAiICNpZiBK
U0NfQlVJTFRJTl9FWElTVFMoIiAuIHVjKCR0YWJsZUhlYWQgLiAka2V5KSAuIilcbiI7CisgICAg
ICAgICAgICBwcmludCAiICAgeyBcIiRrZXlcIiwgKCgkYXR0cnNbJGldKSAmIH5GdW5jdGlvbikg
fCBCdWlsdGluLCAkaW50cmluc2ljLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8QnVpbHRpbkdlbmVy
YXRvcj4oIiAuICR0YWJsZUhlYWQgLiB1Y2ZpcnN0KCRrZXkpIC4gIkNvZGVHZW5lcmF0b3IpLCAo
aW50cHRyX3QpJHNlY29uZFZhbHVlIH0sXG4iOworICAgICAgICAgICAgcHJpbnQgIiAjZWxzZVxu
IgorICAgICAgICB9CiAgICAgICAgIHByaW50ICIgICB7IFwiJGtleVwiLCAkYXR0cnNbJGldLCAk
aW50cmluc2ljLCAoaW50cHRyX3QpIiAuICRmaXJzdENhc3RTdHIgLiAiKCRmaXJzdFZhbHVlKSwg
KGludHB0cl90KSIgLiAkc2Vjb25kQ2FzdFN0ciAuICIoJHNlY29uZFZhbHVlKSB9LFxuIjsKKyAg
ICAgICAgaWYgKCR2YWx1ZXNbJGldeyJ0eXBlIn0gZXEgIkZ1bmN0aW9uIikgIHsKKyAgICAgICAg
ICAgIHByaW50ICIgI2VuZGlmXG4iCisgICAgICAgIH0KICAgICAgICAgJGkrKzsKICAgICB9CiAg
ICAgcHJpbnQgIiAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIDAsIDAgfVxuIjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXZhaWxhYmlsaXR5LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQXZhaWxhYmlsaXR5LmNwcAppbmRleCA2NjljMmI0MzkyNDZi
MDdkZGI1N2QxMTc4ODMwMjlhODhkM2E0YWZmLi5kMGJjZWQxY2ZiZDIzNzQ2NzkzN2VlMWI2N2Y5
MzJhNjYzNzRmOGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0F2
YWlsYWJpbGl0eS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdmFpbGFi
aWxpdHkuY3BwCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiREZHQXZhaWxhYmlsaXR5LmgiCiAKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgor
CiAjaWYgRU5BQkxFKERGR19KSVQpCiAKICNpbmNsdWRlICJERkdOb2RlLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAyZmYwYzM0MTQ2ZTJjMGJh
MmZmNzZjNGQzZjdjNDZiYTNlMjU1MTQ3Li45MDQ0Y2RjNmI4YzNhZDRhMWU5NDE4OGRkMWQwZTIw
MGU2OWZiOTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRl
ICJWTS5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiTmFtZUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29uc3Ry
dWN0b3IuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Z2VuZXJhdGUtanMtYnVpbHRpbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY0YjZkNDk5ZjAyNWMwNTNiMmY5N2I2
ZjEwMGU4NTUwNDZmM2U1MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9nZW5lcmF0ZS1qcy1idWlsdGlucwpAQCAtMCwwICsxLDMwNCBAQAorIyEvdXNyL2Jpbi9weXRo
b24KKyMgQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorIyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyMgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorIyBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBmaWxlY21wCitpbXBvcnQgZm5tYXRjaAoraW1wb3J0
IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzeXMKK2ltcG9ydCBkYXRldGlt
ZQoraW1wb3J0IGpzb24KKworY29weXJpZ2h0VGV4dCA9ICIiIiAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovXG4KKyIiIgorCitnZW5lcmF0b3JTdHJpbmcgPSAiLyogR2Vu
ZXJhdGVkIGJ5ICVzIGRvIG5vdCBoYW5kIGVkaXQuICovXG4iICUgb3MucGF0aC5iYXNlbmFtZShf
X2ZpbGVfXykKKworZnVuY3Rpb25IZWFkUmVnRXhwID0gcmUuY29tcGlsZShyImZ1bmN0aW9uXHMr
XHcrXHMqXCguKj9cKSIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitmdW5jdGlvbk5hbWVSZWdFeHAg
PSByZS5jb21waWxlKHIiZnVuY3Rpb25ccysoXHcrKVxzKlwoIiwgcmUuTVVMVElMSU5FIHwgcmUu
UykKK2Z1bmN0aW9uUGFyYW1ldGVyRmluZGVyID0gcmUuY29tcGlsZShyIl5mdW5jdGlvblxzKyg/
Olx3KylccypcKCgoPzpccypcdyspP1xzKig/OlxzKixccypcdyspKik/XCkiLCByZS5NVUxUSUxJ
TkUgfCByZS5TKQorCittdWx0aWxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwvXCou
Kj9cKlwvIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK3NpbmdsZUxpbmVDb21tZW50UmVnRXhwID0g
cmUuY29tcGlsZShyIlwvXC8uKj9cbiIsIHJlLk1VTFRJTElORSB8IHJlLlMpCisKK2RlZiBnZXRD
b3B5cmlnaHQoc291cmNlKToKKyAgICBjb3B5cmlnaHRCbG9jayA9IG11bHRpbGluZUNvbW1lbnRS
ZWdFeHAuZmluZGFsbChzb3VyY2UpWzBdCisgICAgY29weXJpZ2h0QmxvY2sgPSBjb3B5cmlnaHRC
bG9ja1s6Y29weXJpZ2h0QmxvY2suaW5kZXgoIlJlZGlzdHJpYnV0aW9uIildCisgICAgY29weVJp
Z2h0TGluZXMgPSBbXQorCisgICAgZm9yIGxpbmUgaW4gY29weXJpZ2h0QmxvY2suc3BsaXQoIlxu
Iik6CisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIi8qIiwgIiIpCisgICAgICAgIGxpbmUg
PSBsaW5lLnJlcGxhY2UoIiovIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIioi
LCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiQ29weXJpZ2h0IiwgIiIpCisgICAg
ICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoImNvcHlyaWdodCIsICIiKQorICAgICAgICBsaW5lID0g
bGluZS5yZXBsYWNlKCIoQykiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKGMp
IiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgaWYgbGVuKGxpbmUp
ID09IDA6CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIGNvcHlSaWdodExpbmVzLmFw
cGVuZChsaW5lKQorICAgIAorICAgIHJldHVybiBsaXN0KHNldChjb3B5UmlnaHRMaW5lcykpCisK
KworCitkZWYgZ2V0RnVuY3Rpb25zKHNvdXJjZSk6CisKKyAgICBzb3VyY2UgPSBtdWx0aWxpbmVD
b21tZW50UmVnRXhwLnN1YigiLyoqLyIsIHNpbmdsZUxpbmVDb21tZW50UmVnRXhwLnN1YigiLy9c
biIsIHNvdXJjZSkpCisKKyAgICBtYXRjaGVzID0gWyBmIGZvciBmIGluIGZ1bmN0aW9uSGVhZFJl
Z0V4cC5maW5kaXRlcihzb3VyY2UpXQorICAgIGZ1bmN0aW9uQm91bmRzID0gW10KKyAgICBzdGFy
dCA9IDAKKyAgICBlbmQgPSAwCisgICAgZm9yIG1hdGNoIGluIG1hdGNoZXM6CisgICAgICAgIHN0
YXJ0ID0gbWF0Y2guc3RhcnQoKQorICAgICAgICBpZiBzdGFydCA8IGVuZDoKKyAgICAgICAgICAg
IGNvbnRpbnVlCisgICAgICAgIGVuZCA9IG1hdGNoLmVuZCgpCisgICAgICAgIHdoaWxlIHNvdXJj
ZVtlbmRdICE9ICd7JzoKKyAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgZGVwdGgg
PSAxCisgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgd2hpbGUgZGVwdGggPiAwOgorICAg
ICAgICAgICAgaWYgc291cmNlW2VuZF0gPT0gJ3snOgorICAgICAgICAgICAgICAgIGRlcHRoID0g
ZGVwdGggKyAxCisgICAgICAgICAgICBlbGlmIHNvdXJjZVtlbmRdID09ICd9JzoKKyAgICAgICAg
ICAgICAgICBkZXB0aCA9IGRlcHRoIC0gMQorICAgICAgICAgICAgZW5kID0gZW5kICsgMQorICAg
ICAgICBmdW5jdGlvbkJvdW5kcy5hcHBlbmQoKHN0YXJ0LCBlbmQpKQorCisgICAgZnVuY3Rpb25z
ID0gW3NvdXJjZVtzdGFydDplbmRdLnN0cmlwKCkgZm9yIChzdGFydCwgZW5kKSBpbiBmdW5jdGlv
bkJvdW5kc10KKyAgICByZXN1bHQgPSBbXQorICAgIGZvciBmdW5jdGlvbiBpbiBmdW5jdGlvbnM6
CisgICAgICAgIGZ1bmN0aW9uID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5zdWIoIiIsIGZ1bmN0
aW9uKQorICAgICAgICBmdW5jdGlvbk5hbWUgPSBmdW5jdGlvbk5hbWVSZWdFeHAuZmluZGFsbChm
dW5jdGlvbilbMF0KKyAgICAgICAgZnVuY3Rpb25QYXJhbWV0ZXJzID0gZnVuY3Rpb25QYXJhbWV0
ZXJGaW5kZXIuZmluZGFsbChmdW5jdGlvbilbMF0uc3BsaXQoJywnKQorICAgICAgICBpZiBsZW4o
ZnVuY3Rpb25QYXJhbWV0ZXJzWzBdKSA9PSAwOgorICAgICAgICAgICAgZnVuY3Rpb25QYXJhbWV0
ZXJzID0gW10KKyAgICAgICAgICAgIAorICAgICAgICByZXN1bHQuYXBwZW5kKChmdW5jdGlvbk5h
bWUsIGZ1bmN0aW9uLCBmdW5jdGlvblBhcmFtZXRlcnMpKQorICAgIHJldHVybiByZXN1bHQKKyAg
ICAgICAgCisKK2RlZiBnZW5lcmF0ZUNvZGUoc291cmNlKToKKyAgICBpbnB1dEZpbGUgPSBvcGVu
KHNvdXJjZSwgInIiKQorICAgIGJhc2VOYW1lID0gb3MucGF0aC5iYXNlbmFtZShzb3VyY2UpLnJl
cGxhY2UoIi5qcyIsICIiKQorICAgIAorICAgIHNvdXJjZSA9ICIiCisgICAgZm9yIGxpbmUgaW4g
aW5wdXRGaWxlOgorICAgICAgICBzb3VyY2UgPSBzb3VyY2UgKyBsaW5lCisgICAgCisgICAgaWYg
c3lzLnBsYXRmb3JtID09ICJjeWd3aW4iOgorICAgICAgICBzb3VyY2UgPSBzb3VyY2UucmVwbGFj
ZSgiXHJcbiIsICJcbiIpCisgICAgcmV0dXJuIChiYXNlTmFtZSwgZ2V0RnVuY3Rpb25zKHNvdXJj
ZSksIGdldENvcHlyaWdodChzb3VyY2UpKQorCitkZWYgbWFuZ2xlTmFtZShvYmplY3QsIG5hbWUp
OgorICAgIHFOYW1lID0gb2JqZWN0ICsgIi4iICsgbmFtZQorICAgIG1hbmdsZWROYW1lID0gIiIK
KyAgICBpID0gMAorICAgIHdoaWxlIGkgPCBsZW4ocU5hbWUpOgorICAgICAgICBpZiBxTmFtZVtp
XSA9PSAnLic6CisgICAgICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lICsgcU5hbWVb
aSArIDFdLnVwcGVyKCkKKyAgICAgICAgICAgIGkgPSBpICsgMQorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZSArIHFOYW1lW2ldCisgICAgICAgIGkg
PSBpICsgMQorICAgIHJldHVybiBtYW5nbGVkTmFtZQorCitidWlsdGlucyA9IFtdCisKK2Jhc2VO
YW1lID0gc3lzLmFyZ3ZbLTFdCitidWlsdGluX2RlZmluaXRpb25zID0gc3lzLmFyZ3ZbMTotMV0K
KyhvdXRwdXRfYmFzZSwgXykgPSBvcy5wYXRoLnNwbGl0ZXh0KHN5cy5hcmd2Wy0xXSkKKworY29w
eXJpZ2h0cyA9IFtdCitmb3IgZmlsZSBpbiBidWlsdGluX2RlZmluaXRpb25zOgorICAgIGlmIGZu
bWF0Y2guZm5tYXRjaChmaWxlLCAnKi5qcycpOgorICAgICAgICAoYmFzZU5hbWUsIGZ1bmN0aW9u
cywgb2JqZWN0Q29weXJpZ2h0cykgPSBnZW5lcmF0ZUNvZGUoZmlsZSkKKyAgICAgICAgY29weXJp
Z2h0cy5leHRlbmQob2JqZWN0Q29weXJpZ2h0cykKKyAgICAgICAgYnVpbHRpbnMuYXBwZW5kKChi
YXNlTmFtZSwgZnVuY3Rpb25zKSkKKworY29weXJpZ2h0cyA9IGxpc3Qoc2V0KGNvcHlyaWdodHMp
KQorCitjb3B5cmlnaHRCb2R5ID0gIiIKK2ZvciBjb3B5cmlnaHQgaW4gY29weXJpZ2h0czoKKyAg
ICBjb3B5cmlnaHRCb2R5ID0gY29weXJpZ2h0Qm9keSArIiAqIENvcHlyaWdodCAoQykgIiArIGNv
cHlyaWdodCArICJcbiIKKworYnVpbHRpbnNIZWFkZXIgPSBvcGVuKG91dHB1dF9iYXNlICsgIi5o
LnRtcCIsICJ3IikKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24gPSBvcGVuKG91dHB1dF9iYXNlICsg
Ii5jcHAudG1wIiwgInciKQorY29weXJpZ2h0VGV4dCA9ICIvKlxuIiArIGNvcHlyaWdodEJvZHkg
KyBjb3B5cmlnaHRUZXh0CitidWlsdGluc0hlYWRlci53cml0ZSgiIiIlcworJXMKKworI2lmbmRl
ZiBKU0NCdWlsdGluc19ICisjZGVmaW5lIEpTQ0J1aWx0aW5zX0gKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIElkZW50aWZpZXI7CitjbGFzcyBK
U0dsb2JhbE9iamVjdDsKK2NsYXNzIFNvdXJjZUNvZGU7CitjbGFzcyBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTsKK2NsYXNzIFZNOworCitGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0
aW5FeGVjdXRhYmxlKFZNJiwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCBjb25zdCBTb3Vy
Y2VDb2RlJik7CisKKyIiIiAlIChnZW5lcmF0b3JTdHJpbmcsIGNvcHlyaWdodFRleHQpKQorCitj
b2RlUmVmZXJlbmNlcyA9IFtdCisKK2ZvciAob2JqZWN0TmFtZSwgZnVuY3Rpb25zKSBpbiBidWls
dGluczoKKyAgICBwcmludCgiR2VuZXJhdGluZyBiaW5kaW5ncyBmb3IgdGhlICVzIGJ1aWx0aW4u
IiAlIG9iamVjdE5hbWUpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIi8qICVzIGZ1bmN0aW9u
cyAqL1xuIiAlIG9iamVjdE5hbWUpCisgICAgZm9yIChuYW1lLCBpbXBsZW1lbnRhdGlvbiwgXykg
aW4gZnVuY3Rpb25zOgorICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZU5hbWUob2JqZWN0TmFt
ZSwgbmFtZSkKKyAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZVswXS5sb3dlcigpICsg
bWFuZ2xlZE5hbWVbMTpdICsgIkNvZGUiCisgICAgICAgIGNvZGVSZWZlcmVuY2VzLmFwcGVuZCgo
bWFuZ2xlZE5hbWUsIG5hbWUsIGltcGxlbWVudGF0aW9uKSkKKyAgICAgICAgYnVpbHRpbnNIZWFk
ZXIud3JpdGUoImV4dGVybiBjb25zdCBjaGFyKiBzXyVzO1xuIiAlIG1hbmdsZWROYW1lKQorICAg
ICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiZXh0ZXJuIGNvbnN0IGludCBzXyVzTGVuZ3RoO1xu
IiAlIG1hbmdsZWROYW1lKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJcbiIpCisgICAgYnVp
bHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0ZPUkVBQ0hfJXNfQlVJTFRJTihtYWNybykg
XFxcbiIgJSBvYmplY3ROYW1lLnJlcGxhY2UoIi4iLCAiXyIpLnVwcGVyKCkpCisgICAgZm9yIChu
YW1lLCBpbXBsZW1lbnRhdGlvbiwgYXJndW1lbnRzKSBpbiBmdW5jdGlvbnM6CisgICAgICAgIG1h
bmdsZWROYW1lID0gbWFuZ2xlTmFtZShvYmplY3ROYW1lLCBuYW1lKQorICAgICAgICBidWlsdGlu
c0hlYWRlci53cml0ZSgiICAgIG1hY3JvKCVzLCAlcywgJWQpIFxcXG4iICUgKG5hbWUsIG1hbmds
ZWROYW1lLCBsZW4oYXJndW1lbnRzKSkpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuIikK
KyAgICBmb3IgKG5hbWUsIGltcGxlbWVudGF0aW9uLCBhcmd1bWVudHMpIGluIGZ1bmN0aW9uczoK
KyAgICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0JVSUxUSU5fJXMgMVxu
IiAlIG1hbmdsZU5hbWUob2JqZWN0TmFtZSwgbmFtZSkudXBwZXIoKSkKKyAgICBidWlsdGluc0hl
YWRlci53cml0ZSgiXG5cbiIpCituYW1lcyA9IFtdCitidWlsdGluc0hlYWRlci53cml0ZSgiI2Rl
ZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOKG1hY3JvKVxcXG4iKQorZm9yIChjb2RlUmVmZXJlbmNl
LCBmdW5jdGlvbk5hbWUsIHNvdXJjZSkgaW4gY29kZVJlZmVyZW5jZXM6CisgICAgYnVpbHRpbnNI
ZWFkZXIud3JpdGUoIiAgICBtYWNybyglcywgJXMsIHNfJXNMZW5ndGgpIFxcXG4iICUgKGNvZGVS
ZWZlcmVuY2UsIGZ1bmN0aW9uTmFtZSwgY29kZVJlZmVyZW5jZSkpCisgICAgbmFtZXMuYXBwZW5k
KGZ1bmN0aW9uTmFtZSkKKworYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuXG4iKQorYnVpbHRpbnNI
ZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKG1h
Y3JvKSBcXFxuIikKK2ZvciBuYW1lIGluIHNvcnRlZChzZXQobmFtZXMpKToKKyAgICBidWlsdGlu
c0hlYWRlci53cml0ZSgiICAgIG1hY3JvKCVzKSBcXFxuIiAlIG5hbWUpCitidWlsdGluc0hlYWRl
ci53cml0ZSgiIiIKKworI2RlZmluZSBKU0NfREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2Rl
TmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAorICAgIEZ1bmN0aW9uRXhlY3V0
YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihWTSYpOworCitKU0NfRk9SRUFDSF9CVUlMVElOKEpT
Q19ERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIEpTQ19ERUNMQVJFX0JVSUxUSU5f
R0VORVJBVE9SCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fRVhJU1RTKG5hbWUpIGRlZmluZWQoSlND
X0JVSUxUSU5fIyNuYW1lKQorCit9CisKKyNlbmRpZgorCisiIiIpCisKK2J1aWx0aW5zSW1wbGVt
ZW50YXRpb24ud3JpdGUoIiIiJXMKKyVzCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1
ZGUgIkpTQ0J1aWx0aW5zLmgiCisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNp
bmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1
ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0MgeworCisiIiIgICUgKGdlbmVyYXRvclN0cmluZywg
Y29weXJpZ2h0VGV4dCkpCisKK2ZvciAoY29kZVJlZmVyZW5jZSwgbmFtZSwgc291cmNlKSBpbiBj
b2RlUmVmZXJlbmNlczoKKyAgICBzb3VyY2UgPSAiKGZ1bmN0aW9uICIgKyBzb3VyY2Vbc291cmNl
LmluZGV4KCIoIik6XSArICIpIgorICAgIGxpbmVzID0ganNvbi5kdW1wcyhzb3VyY2UpWzE6LTFd
LnNwbGl0KCJcXG4iKQorICAgIHNvdXJjZUxlbmd0aCA9IGxlbihzb3VyY2UpCisgICAgc291cmNl
ID0gIiIKKyAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgc291cmNlID0gc291cmNlICsg
KCIgICAgXCIlc1xcblwiIFxcXG4iICUgbGluZSkKKyAgICBidWlsdGluc0ltcGxlbWVudGF0aW9u
LndyaXRlKCJjb25zdCBjaGFyKiBzXyVzID1cbiVzO1xuXG4iICUgKGNvZGVSZWZlcmVuY2UsIHNv
dXJjZSkpCisgICAgYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiY29uc3QgaW50IHNfJXNM
ZW5ndGggPSAlZDtcblxuIiAlIChjb2RlUmVmZXJlbmNlLCBzb3VyY2VMZW5ndGggKyAxKSkgIyAr
IDEgZm9yIFxuCisKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoIiIiCitGdW5jdGlvbkV4
ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKFZNJiB2bSwgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
KQoreworICAgIHVuc2lnbmVkIGxpbmVDb3VudCA9IHVubGlua2VkRXhlY3V0YWJsZS0+bGluZUNv
dW50KCk7CisgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSAxOworICAgIHVuc2lnbmVkIHNvdXJj
ZUxlbmd0aCA9IHVubGlua2VkRXhlY3V0YWJsZS0+c291cmNlTGVuZ3RoKCk7CisgICAgYm9vbCBl
bmRDb2x1bW5Jc09uU3RhcnRMaW5lID0gIWxpbmVDb3VudDsKKyAgICB1bnNpZ25lZCBlbmRDb2x1
bW5FeGNsdWRpbmdCcmFjZXMgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnVubGlua2VkQm9keUVuZENv
bHVtbigpICsgKGVuZENvbHVtbklzT25TdGFydExpbmUgPyAwIDogMSk7CisgICAgdW5zaWduZWQg
c3RhcnRPZmZzZXQgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnN0YXJ0T2Zmc2V0KCk7CisgICAgdW5z
aWduZWQgc3RhcnRPZmZzZXRFeGNsdWRpbmdPcGVuQnJhY2UgPSBzdGFydE9mZnNldCArIDE7Cisg
ICAgdW5zaWduZWQgZW5kT2Zmc2V0RXhjbHVkaW5nQ2xvc2VCcmFjZSA9IHN0YXJ0T2Zmc2V0ICsg
c291cmNlTGVuZ3RoIC0gMTsKKyAgICBTb3VyY2VDb2RlIGJvZHlTb3VyY2Uoc291cmNlLnByb3Zp
ZGVyKCksIHN0YXJ0T2Zmc2V0RXhjbHVkaW5nT3BlbkJyYWNlLCBlbmRPZmZzZXRFeGNsdWRpbmdD
bG9zZUJyYWNlLCAwLCBzdGFydENvbHVtbik7CisgICAgcmV0dXJuIEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6Y3JlYXRlKHZtLCBib2R5U291cmNlLCB1bmxpbmtlZEV4ZWN1dGFibGUsIDAsIGxpbmVDb3Vu
dCwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbkV4Y2x1ZGluZ0JyYWNlcywgZmFsc2UpOworfQorCisj
ZGVmaW5lIEpTQ19ERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFt
ZSwgYXJndW1lbnRDb3VudCkgXFwKK0Z1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVy
YXRvcihWTSYgdm0pIFxcCit7IFxcCisgICAgcmV0dXJuIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxl
KHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKSwgdm0u
YnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IFxcCit9CisKK0pTQ19G
T1JFQUNIX0JVSUxUSU4oSlNDX0RFRklORV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBKU0Nf
REVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCit9CisKKyIiIikKKworYnVpbHRpbnNIZWFkZXIuY2xv
c2UoKQorYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi5jbG9zZSgpCisKK2lmIChub3Qgb3MucGF0aC5l
eGlzdHMob3V0cHV0X2Jhc2UgKyAiLmgiKSkgb3IgKG5vdCBmaWxlY21wLmNtcChvdXRwdXRfYmFz
ZSArICIuaC50bXAiLCBvdXRwdXRfYmFzZSArICIuaCIsIHNoYWxsb3c9RmFsc2UpKToKKyAgICBv
cy5yZW5hbWUob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmgiKQorZWxz
ZToKKyAgICBvcy5yZW1vdmUob3V0cHV0X2Jhc2UgKyAiLmgudG1wIikKKworaWYgKG5vdCBvcy5w
YXRoLmV4aXN0cyhvdXRwdXRfYmFzZSArICIuY3BwIikpIG9yIChub3QgZmlsZWNtcC5jbXAob3V0
cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCBvdXRwdXRfYmFzZSArICIuY3BwIiwgc2hhbGxvdz1GYWxz
ZSkpOgorICAgIG9zLnJlbmFtZShvdXRwdXRfYmFzZSArICIuY3BwLnRtcCIsIG91dHB1dF9iYXNl
ICsgIi5jcHAiKQorZWxzZToKKyAgICBvcy5yZW1vdmUob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAi
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAKaW5kZXggY2E4OTBiMDZlYTMzZmE5ZTdmMWZhNTFhMzVlYTJkNDhkMDA5YTM4YS4uNmM5YmY5
NmMxNWY2MDllMjY1Y2UyNTBhNDViZjA4NjFkMDZjZDFmMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC01MSw2ICs1MSw3IEBA
CiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTU3RhY2tJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGlu
ZXMuaCIKICNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIkxMSW50Q0xvb3AuaCIK
ICNpbmNsdWRlICJMTEludFRodW5rcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAKaW5kZXggZjBlMDJiYTRlNDc2Zjk5Y2M5
MTNiMDQ2MmFkMjc5NTAwNjA5ZmEzYS4uMWMyNDBkY2Q3MWJlNTI5ZDg4Y2JmNDYxZDE4NjhmNWVi
MmIwMmFkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1By
b3RvQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
UHJvdG9DYWxsRnJhbWUuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiUHJvdG9DYWxs
RnJhbWUuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKIAogbmFtZXNwYWNlIEpTQyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCBjYTdhZDExZjJl
MGI4YTNiOGIxODU4OTFkN2U1MjJiYWU0MDNhMjM2Li5jYjU1MDdiZWFjNTViZjhlYjFiMzdlYzkw
ZmNhYjE5MzRmYjQ4ZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSklUSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggOThkMTBhM2Y0ZGNiMTJkODlmMzdhMTJmMjI2
MDRiOTQ2ZTA4ZTYyNy4uZGQwMzUzNzc5ZThiZGY5OGY0NjU4YTMwN2UzMmQwNmU0NzI0NDE1OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiSklUSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAppbmRleCA5MjhkZDUwZmIwMTZlMjcxNjQ0YTU3NWUzMGFiNWYyNTE2
ZWI1MGVjLi40OTg3MGU2OGE4N2JlMTllMTU4YTA2ZDFjNjRmZWM5YjhiZDA4MjIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTQxLDYgKzQxLDcg
QEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25XcmFwcGVycy5oIgog
I2luY2x1ZGUgIkpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCisjaW5jbHVk
ZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9u
cy5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcAppbmRleCAyNmRkNGQxYWY3NDVhZmExZmJjNTNhOWMwMjNhNmU0NzQxYTY2YTA5Li5k
ZjFiZDNhOWNmYTQwMmM1MmE1MjExY2YxYWNjZTY3ZDUxMjFiN2VlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMjksMTEgKzI5LDEz
IEBACiAjaW5jbHVkZSAiSklULmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRl
ICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkdDQXdhcmVKSVRTdHViUm91dGluZS5o
IgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAj
aW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJK
U0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNWYXJpYWJsZU9iamVjdC5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMy
XzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82
NC5jcHAKaW5kZXggZDE4ZmVhNzE1Y2IwM2IzN2FhOTI2ZDg0OWE4ZTVhYjk1NjNlY2QzZC4uMzI2
MWIzYWY2ZWVhYmQ2ZjI2YTQzYTA4ZDIwNGJjNjJiMDY1ODliNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0zNCw2
ICszNCw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0
b3IuaCIKICNpbmNsdWRlICJKU1ZhcmlhYmxlT2JqZWN0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmlu
ZGV4IDQwNzg0YjQ5NDMxZmUwMmU4ZTQ1MjJmMTYzMDhjOTAyNDcxNmQyMzYuLjJmNzk1NTU0YjA5
MWRlZWJiYzAzYmYyYmU4Yzc0ZjQxYWU1NDFlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0z
OCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNQcm94eS5oIgog
I2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgogI2luY2x1ZGUg
IlN0YWNrVmlzaXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCA2MDRjYzI2M2NmOTdlMDg2ZmVkMDZlYzkw
M2IwZWMxOTgzZTc4MTM3Li44MTY2ZTdmODFmYTg5YTdkNGY1MGM1ZjFhOTRmYTk2OGM1ZDU3ZTFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0
cmFjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRz
RXh0cmFjdG9yLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAj
aW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgotI2luY2x1ZGUgIkpTRnVu
Y3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIlZNLmgi
CiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNjY0
NDRiYWEwOGI1NjJkZDY5N2UwY2NkNzcyMWU1NWMxNWJhNDkxMy4uZDgyZTllOWMyODE4NDYxZTMw
NWZmODY1ZDJmYjE2OGE3OGNiYjRmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSAiSklULmgi
CiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgot
I2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2Nv
cGUuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IDhlYzFmZDMyYTNhZGEyMmUxMjUyMjk1
NzBkY2Y3ZmYyOGVhYmYxZWQuLjQ2YTdjNzZiMmY5MDFmYzNjYzM2ZDFjZTBjMDczNTNlYjA2YjJm
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC04ODgs
OSArODg4LDkgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24KICAgICBBU1NFUlQoZnVuYy0+aXNE
b3RBY2Nlc3Nvck5vZGUoKSk7CiAgICAgRG90QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0aWNfY2Fz
dDxEb3RBY2Nlc3Nvck5vZGUqPihmdW5jKTsKICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKiBub2Rl
OwotICAgIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5jYWxs
KQorICAgIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5jYWxs
IHx8IGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmNhbGxQcml2YXRl
TmFtZSkKICAgICAgICAgbm9kZSA9IG5ldyAobV92bSkgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUo
bG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRp
dm90U3RhcnQsIGRpdm90RW5kKTsKLSAgICBlbHNlIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBt
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcHBseSkKKyAgICBlbHNlIGlmIChkb3QtPmlkZW50aWZpZXIo
KSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcHBseSB8fCBkb3QtPmlkZW50aWZpZXIoKSA9PSBt
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcHBseVByaXZhdGVOYW1lKQogICAgICAgICBub2RlID0gbmV3
IChtX3ZtKSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBk
b3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKICAg
ICBlbHNlCiAgICAgICAgIG5vZGUgPSBuZXcgKG1fdm0pIEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9j
YXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90
U3RhcnQsIGRpdm90RW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTGV4ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKaW5k
ZXggY2E0YmI0ZjBhZGU4ZDZiYzgyNjkxYTZjMDAwMTRjZjE5OGJkODhiZC4uY2NiMDc5ZDk3NWEx
NDFjNWM0YjJkN2I2MjMxMzAwMDcwOTc3NzgyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9MZXhlci5jcHAKQEAgLTI1LDEwICsyNSwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkxleGVyLmgiCiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgorI2luY2x1
ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgotCiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKLSNpbmNsdWRlICJJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSAiTm9kZUluZm8uaCIKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUgPHd0
Zi9kdG9hLmg+CkBAIC05MCw2ICs5MCw3IEBAIGVudW0gQ2hhcmFjdGVyVHlwZSB7CiAKICAgICAv
LyBPdGhlciB0eXBlcyAob25seSBvbmUgc28gZmFyKQogICAgIENoYXJhY3RlcldoaXRlU3BhY2Us
CisgICAgQ2hhcmFjdGVyUHJpdmF0ZUlkZW50aWZpZXJTdGFydAogfTsKIAogLy8gMjU2IExhdGlu
LTEgY29kZXMKQEAgLTE1OCw3ICsxNTksNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQg
dHlwZXNPZkxhdGluMUNoYXJhY3RlcnNbMjU2XSA9IHsKIC8qICA2MSAtID0gICAgICAgICAgICAg
ICAgICAqLyBDaGFyYWN0ZXJFcXVhbCwKIC8qICA2MiAtID4gICAgICAgICAgICAgICAgICAqLyBD
aGFyYWN0ZXJHcmVhdGVyLAogLyogIDYzIC0gPyAgICAgICAgICAgICAgICAgICovIENoYXJhY3Rl
clF1ZXN0aW9uLAotLyogIDY0IC0gQCAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlckludmFs
aWQsCisvKiAgNjQgLSBAICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyUHJpdmF0ZUlkZW50
aWZpZXJTdGFydCwKIC8qICA2NSAtIEEgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVu
dGlmaWVyU3RhcnQsCiAvKiAgNjYgLSBCICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRl
bnRpZmllclN0YXJ0LAogLyogIDY3IC0gQyAgICAgICAgICAgICAgICAgICovIENoYXJhY3Rlcklk
ZW50aWZpZXJTdGFydCwKQEAgLTQ4Niw5ICs0ODcsMTAgQEAgc3RhdGljIGNvbnN0IExDaGFyIHNp
bmdsZUNoYXJhY3RlckVzY2FwZVZhbHVlc0ZvckFTQ0lJWzEyOF0gPSB7CiB9OwogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLUxleGVyPFQ+OjpMZXhlcihWTSogdm0pCitMZXhlcjxUPjo6TGV4ZXIo
Vk0qIHZtLCBKU1BhcnNlclN0cmljdG5lc3Mgc3RyaWN0bmVzcykKICAgICA6IG1faXNSZXBhcnNp
bmcoZmFsc2UpCiAgICAgLCBtX3ZtKHZtKQorICAgICwgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9u
KHN0cmljdG5lc3MgPT0gSlNQYXJzZUJ1aWx0aW4pCiB7CiB9CiAKQEAgLTc1Myw3ICs3NTUsMjcg
QEAgaW5saW5lIHZvaWQgTGV4ZXI8VD46OnJlY29yZDE2KGludCBjKQogICAgIEFTU0VSVChjIDw9
IHN0YXRpY19jYXN0PGludD4oVVNIUlRfTUFYKSk7CiAgICAgbV9idWZmZXIxNi5hcHBlbmQoc3Rh
dGljX2Nhc3Q8VUNoYXI+KGMpKTsKIH0KLQorICAgIAorI2lmICFBU1NFUlRfRElTQUJMRUQKK2Jv
b2wgaXNTYWZlSWRlbnRpZmllcihWTSYgdm0sIGNvbnN0IElkZW50aWZpZXIqIGlkZW50KQorewor
ICAgIGlmICghaWRlbnQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIC8qIEp1c3QgYmxvY2sg
YW55IHVzZSBvZiBzdXNwaWNpb3VzIGlkZW50aWZpZXJzLiAgVGhpcyBpcyBpbnRlbmRlZCB0bwor
ICAgICAqIGJlIHVzZWQgYXMgYSBzYWZldHkgbmV0IHdoaWxlIGltcGxlbWVudGluZyBidWlsdGlu
cy4KKyAgICAgKi8KKyAgICBpZiAoKmlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmNhbGwpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKmlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMt
PmFwcGx5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCppZGVudCA9PSB2bS5wcm9w
ZXJ0eU5hbWVzLT5ldmFsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCppZGVudCA9
PSB2bS5wcm9wZXJ0eU5hbWVzLT5GdW5jdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiB0cnVlOworfQorI2VuZGlmCisgICAgCiB0ZW1wbGF0ZSA8PgogdGVtcGxhdGUgPGJv
b2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhl
cjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcihKU1Rva2VuRGF0YSogdG9rZW5EYXRhLCB1bnNpZ25l
ZCBsZXhlckZsYWdzLCBib29sIHN0cmljdE1vZGUpCiB7CkBAIC03NjUsNyArNzg3LDExIEBAIHRl
bXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tl
blR5cGUgTGV4ZXI8TENoYXI+OjpwCiAgICAgICAgICAgICByZXR1cm4ga2V5d29yZCA9PSBSRVNF
UlZFRF9JRl9TVFJJQ1QgJiYgIXN0cmljdE1vZGUgPyBJREVOVCA6IGtleXdvcmQ7CiAgICAgICAg
IH0KICAgICB9Ci0KKyAgICAKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJlbnQgPT0g
J0AnICYmIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKKyAgICBpZiAoaXNQcml2YXRlTmFtZSkK
KyAgICAgICAgc2hpZnQoKTsKKyAgICAKICAgICBjb25zdCBMQ2hhciogaWRlbnRpZmllclN0YXJ0
ID0gY3VycmVudFNvdXJjZVB0cigpOwogICAgIHVuc2lnbmVkIGlkZW50aWZpZXJMaW5lU3RhcnQg
PSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CiAgICAgCkBAIC03NzksMTUgKzgwNSwyNiBAQCB0
ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9r
ZW5UeXBlIExleGVyPExDaGFyPjo6cAogCiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAw
OwogICAgIAotICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyKSB7CisgICAgaWYgKHNob3Vs
ZENyZWF0ZUlkZW50aWZpZXIgfHwgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CiAgICAgICAg
IGludCBpZGVudGlmaWVyTGVuZ3RoID0gY3VycmVudFNvdXJjZVB0cigpIC0gaWRlbnRpZmllclN0
YXJ0OwogICAgICAgICBpZGVudCA9IG1ha2VJZGVudGlmaWVyKGlkZW50aWZpZXJTdGFydCwgaWRl
bnRpZmllckxlbmd0aCk7Ci0KKyAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikg
eworICAgICAgICAgICAgaWYgKCFpc1NhZmVJZGVudGlmaWVyKCptX3ZtLCBpZGVudCkgJiYgIWlz
UHJpdmF0ZU5hbWUpIHsKKyAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IG1ha2VT
dHJpbmcoIlRoZSB1c2Ugb2YgJyIsIGlkZW50LT5zdHJpbmcoKSwgIicgaXMgZGlzYWxsb3dlZCBp
biBidWlsdGluIGZ1bmN0aW9ucy4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAg
ICAgICAgICBpZGVudCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPmdldFByaXZhdGVOYW1lKCppZGVu
dCk7CisgICAgICAgICAgICBlbHNlIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+
dW5kZWZpbmVkS2V5d29yZCkKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gJm1f
dm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmRQcml2YXRlTmFtZTsKKyAgICAgICAg
ICAgIGlmICghaWRlbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSURfUFJJVkFURV9O
QU1FX0VSUk9SVE9LOworICAgICAgICB9CiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBpZGVu
dDsKICAgICB9IGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IDA7CiAKLSAgICBpZiAo
VU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxhZ3MgJiBM
ZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpKSB7CisgICAgaWYgKFVOTElLRUxZKChyZW1h
aW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9y
ZVJlc2VydmVkV29yZHMpKSAmJiAhaXNQcml2YXRlTmFtZSkgewogICAgICAgICBBU1NFUlQoc2hv
dWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChyZW1haW5pbmcgPCBtYXhUb2tlbkxl
bmd0aCkgewogICAgICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IG1fdm0tPmtleXdv
cmRzLT5nZXRLZXl3b3JkKCppZGVudCk7CkBAIC04MTQsNiArODUxLDEwIEBAIHRlbXBsYXRlIDxi
b29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4
ZXI8VUNoYXI+OjpwCiAgICAgICAgICAgICByZXR1cm4ga2V5d29yZCA9PSBSRVNFUlZFRF9JRl9T
VFJJQ1QgJiYgIXN0cmljdE1vZGUgPyBJREVOVCA6IGtleXdvcmQ7CiAgICAgICAgIH0KICAgICB9
CisgICAgCisgICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gbV9jdXJyZW50ID09ICdAJyAmJiBtX3Bh
cnNpbmdCdWlsdGluRnVuY3Rpb247CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgIHNo
aWZ0KCk7CiAKICAgICBjb25zdCBVQ2hhciogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudFNvdXJj
ZVB0cigpOwogICAgIGludCBpZGVudGlmaWVyTGluZVN0YXJ0ID0gY3VycmVudExpbmVTdGFydE9m
ZnNldCgpOwpAQCAtODI2LDYgKzg2Nyw3IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlk
ZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+OjpwCiAgICAg
fQogICAgIAogICAgIGlmIChVTkxJS0VMWShtX2N1cnJlbnQgPT0gJ1xcJykpIHsKKyAgICAgICAg
QVNTRVJUKCFpc1ByaXZhdGVOYW1lKTsKICAgICAgICAgc2V0T2Zmc2V0RnJvbVNvdXJjZVB0cihp
ZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMaW5lU3RhcnQpOwogICAgICAgICByZXR1cm4gcGFy
c2VJZGVudGlmaWVyU2xvd0Nhc2U8c2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4odG9rZW5EYXRhLCBs
ZXhlckZsYWdzLCBzdHJpY3RNb2RlKTsKICAgICB9CkBAIC04MzcsMTggKzg3OSwyOSBAQCB0ZW1w
bGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5U
eXBlIExleGVyPFVDaGFyPjo6cAogCiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAwOwog
ICAgIAotICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyKSB7CisgICAgaWYgKHNob3VsZENy
ZWF0ZUlkZW50aWZpZXIgfHwgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CiAgICAgICAgIGlu
dCBpZGVudGlmaWVyTGVuZ3RoID0gY3VycmVudFNvdXJjZVB0cigpIC0gaWRlbnRpZmllclN0YXJ0
OwogICAgICAgICBpZiAoaXNBbGw4Qml0KQogICAgICAgICAgICAgaWRlbnQgPSBtYWtlSWRlbnRp
ZmllckxDaGFyRnJvbVVDaGFyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIGlkZW50ID0gbWFrZUlkZW50aWZpZXIoaWRlbnRpZmll
clN0YXJ0LCBpZGVudGlmaWVyTGVuZ3RoKTsKLSAgICAgICAgCisgICAgICAgIGlmIChtX3BhcnNp
bmdCdWlsdGluRnVuY3Rpb24pIHsKKyAgICAgICAgICAgIGlmICghaXNTYWZlSWRlbnRpZmllcigq
bV92bSwgaWRlbnQpICYmICFpc1ByaXZhdGVOYW1lKSB7CisgICAgICAgICAgICAgICAgbV9sZXhF
cnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJUaGUgdXNlIG9mICciLCBpZGVudC0+c3RyaW5nKCks
ICInIGlzIGRpc2FsbG93ZWQgaW4gYnVpbHRpbiBmdW5jdGlvbnMuIik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIEVSUk9SVE9LOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGlzUHJp
dmF0ZU5hbWUpCisgICAgICAgICAgICAgICAgaWRlbnQgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5n
ZXRQcml2YXRlTmFtZSgqaWRlbnQpOworICAgICAgICAgICAgZWxzZSBpZiAoKmlkZW50ID09IG1f
dm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQpCisgICAgICAgICAgICAgICAgdG9r
ZW5EYXRhLT5pZGVudCA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkUHJp
dmF0ZU5hbWU7CisgICAgICAgICAgICBpZiAoIWlkZW50KQorICAgICAgICAgICAgICAgIHJldHVy
biBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzsKKyAgICAgICAgfQogICAgICAgICB0b2tl
bkRhdGEtPmlkZW50ID0gaWRlbnQ7CiAgICAgfSBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRl
bnQgPSAwOwogICAgIAotICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5n
dGgpICYmICEobGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkpIHsK
KyAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhKGxleGVy
RmxhZ3MgJiBMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpICYmICFpc1ByaXZhdGVOYW1l
KSB7CiAgICAgICAgIEFTU0VSVChzaG91bGRDcmVhdGVJZGVudGlmaWVyKTsKICAgICAgICAgaWYg
KHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSB7CiAgICAgICAgICAgICBjb25zdCBIYXNoRW50
cnkqIGVudHJ5ID0gbV92bS0+a2V5d29yZHMtPmdldEtleXdvcmQoKmlkZW50KTsKQEAgLTE2NTgs
NiArMTcxMSw3IEBAIGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ6CiAgICAgICAgIEFTU0VSVChp
c0lkZW50U3RhcnQobV9jdXJyZW50KSk7CiAgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2Ug
Q2hhcmFjdGVyQmFja1NsYXNoOgorICAgICAgICBwYXJzZUlkZW50OgogICAgICAgICBpZiAobGV4
ZXJGbGFncyAmIExleGV4RmxhZ3NEb250QnVpbGRLZXl3b3JkcykKICAgICAgICAgICAgIHRva2Vu
ID0gcGFyc2VJZGVudGlmaWVyPGZhbHNlPih0b2tlbkRhdGEsIGxleGVyRmxhZ3MsIHN0cmljdE1v
ZGUpOwogICAgICAgICBlbHNlCkBAIC0xNjcwLDYgKzE3MjQsMTEgQEAgaW5OdW1iZXJBZnRlckRl
Y2ltYWxQb2ludDoKICAgICAgICAgbV90ZXJtaW5hdG9yID0gdHJ1ZTsKICAgICAgICAgbV9saW5l
U3RhcnQgPSBtX2NvZGU7CiAgICAgICAgIGdvdG8gc3RhcnQ7CisgICAgY2FzZSBDaGFyYWN0ZXJQ
cml2YXRlSWRlbnRpZmllclN0YXJ0OgorICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0
aW9uKQorICAgICAgICAgICAgZ290byBwYXJzZUlkZW50OworCisgICAgICAgIEZBTExUSFJPVUdI
OwogICAgIGNhc2UgQ2hhcmFjdGVySW52YWxpZDoKICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2Ug
PSBpbnZhbGlkQ2hhcmFjdGVyTWVzc2FnZSgpOwogICAgICAgICB0b2tlbiA9IEVSUk9SVE9LOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCmluZGV4IDI4YzYxYmExOThkMmMxNWE0OWJi
MTg1MmVkMzBiZWZlYjg5MDQwMDguLmI4ODczZTk5NTAyODY0NGJmOGNiYjNkNGMyZGE1NjJlOTNl
MGU4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKQEAgLTcyLDcgKzcyLDcg
QEAgY2xhc3MgTGV4ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCiBwdWJsaWM6
Ci0gICAgTGV4ZXIoVk0qKTsKKyAgICBMZXhlcihWTSosIEpTUGFyc2VyU3RyaWN0bmVzcyk7CiAg
ICAgfkxleGVyKCk7CiAKICAgICAvLyBDaGFyYWN0ZXIgbWFuaXB1bGF0aW9uIGZ1bmN0aW9ucy4K
QEAgLTIzOCw2ICsyMzgsNyBAQCBwcml2YXRlOgogICAgIElkZW50aWZpZXJBcmVuYSogbV9hcmVu
YTsKIAogICAgIFZNKiBtX3ZtOworICAgIGJvb2wgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uOwog
fTsKIAogdGVtcGxhdGUgPD4KQEAgLTMzNSw2ICszMzYsMTIgQEAgQUxXQVlTX0lOTElORSBjb25z
dCBJZGVudGlmaWVyKiBMZXhlcjxUPjo6bWFrZUxDaGFySWRlbnRpZmllcihjb25zdCBVQ2hhciog
Y2hhcmEKICAgICByZXR1cm4gJm1fYXJlbmEtPm1ha2VJZGVudGlmaWVyTENoYXJGcm9tVUNoYXIo
bV92bSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKIH0KIAorI2lmIEFTU0VSVF9ESVNBQkxFRAorQUxX
QVlTX0lOTElORSBib29sIGlzU2FmZUlkZW50aWZpZXIoVk0mLCBjb25zdCBJZGVudGlmaWVyKikg
eyByZXR1cm4gdHJ1ZTsgfQorI2Vsc2UKK2Jvb2wgaXNTYWZlSWRlbnRpZmllcihWTSYsIGNvbnN0
IElkZW50aWZpZXIqKTsKKyNlbmRpZgorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIEFMV0FZU19J
TkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tlbiog
dG9rZW5SZWNvcmQsIHVuc2lnbmVkIGxleGVyRmxhZ3MsIGJvb2wgc3RyaWN0TW9kZSkKIHsKQEAg
LTM3MCwxMCArMzc3LDE1IEBAIEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46Omxl
eEV4cGVjdElkZW50aWZpZXIoSlNUb2tlbiogdG9rZW5SZWNvcmQsIHVuCiAgICAgQVNTRVJUKGN1
cnJlbnRPZmZzZXQoKSA+PSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCkpOwogCiAgICAgLy8gQ3Jl
YXRlIHRoZSBpZGVudGlmaWVyIGlmIG5lZWRlZAotICAgIGlmIChsZXhlckZsYWdzICYgTGV4ZXhG
bGFnc0RvbnRCdWlsZEtleXdvcmRzKQorICAgIGlmIChsZXhlckZsYWdzICYgTGV4ZXhGbGFnc0Rv
bnRCdWlsZEtleXdvcmRzCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICAmJiAhbV9wYXJz
aW5nQnVpbHRpbkZ1bmN0aW9uCisjZW5kaWYKKyAgICAgICAgKQogICAgICAgICB0b2tlbkRhdGEt
PmlkZW50ID0gMDsKICAgICBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBtYWtlTENo
YXJJZGVudGlmaWVyKHN0YXJ0LCBwdHIgLSBzdGFydCk7CisKICAgICB0b2tlbkxvY2F0aW9uLT5s
aW5lID0gbV9saW5lTnVtYmVyOwogICAgIHRva2VuTG9jYXRpb24tPmxpbmVTdGFydE9mZnNldCA9
IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKICAgICB0b2tlbkxvY2F0aW9uLT5zdGFydE9mZnNl
dCA9IG9mZnNldEZyb21Tb3VyY2VQdHIoc3RhcnQpOwpAQCAtMzgxLDYgKzM5MywxMyBAQCBBTFdB
WVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9r
ZW4qIHRva2VuUmVjb3JkLCB1bgogICAgIEFTU0VSVCh0b2tlbkxvY2F0aW9uLT5zdGFydE9mZnNl
dCA+PSB0b2tlbkxvY2F0aW9uLT5saW5lU3RhcnRPZmZzZXQpOwogICAgIHRva2VuUmVjb3JkLT5t
X3N0YXJ0UG9zaXRpb24gPSBzdGFydFBvc2l0aW9uOwogICAgIHRva2VuUmVjb3JkLT5tX2VuZFBv
c2l0aW9uID0gY3VycmVudFBvc2l0aW9uKCk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIGlm
IChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKKyAgICAgICAgaWYgKCFpc1NhZmVJZGVudGlm
aWVyKCptX3ZtLCB0b2tlbkRhdGEtPmlkZW50KSkKKyAgICAgICAgICAgIHJldHVybiBFUlJPUlRP
SzsKKyAgICB9CisjZW5kaWYKKwogICAgIG1fbGFzdFRva2VuID0gSURFTlQ7CiAgICAgcmV0dXJu
IElERU5UOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCBm
YzljY2Q5ZjZjNTc2YzFhZWY1NDdmMjExZmRkNTk2ZjQyZTA1ODA2Li5kOTUyYmE2YTk0ZDJmNmI0
MTgyMTU1MDA0ZDBhOTcwODQyOWJkNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVzLmNwcApAQCAtMTMyLDYgKzEzMiwxMiBAQCBQYXNzUmVmUHRyPFByb2dyYW1Ob2RlPiBQcm9n
cmFtTm9kZTo6Y3JlYXRlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydAogICAg
IHJldHVybiBub2RlLnJlbGVhc2UoKTsKIH0KIAorCit2b2lkIFByb2dyYW1Ob2RlOjpzZXRDbG9z
ZWRWYXJpYWJsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJiBjbG9zZWRWYXJp
YWJsZXMpCit7CisgICAgbV9jbG9zZWRWYXJpYWJsZXMgPSBzdGQ6Om1vdmUoY2xvc2VkVmFyaWFi
bGVzKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV2YWxOb2RlIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGlubGluZSBFdmFsTm9kZTo6RXZhbE5vZGUo
Vk0qIHZtLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVu
dHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFj
aywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IGQ3NzlhMTc4ZDk1NmZmOTlmZDBiZWQ1ZDVmNDU0
YWEzZTZiNTA4NzkuLjgxNmZmMDAxYWJmMDM3NmM2NDJmMWE5MzhkMGUwYTlmNTI5Y2E2YmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTE0MzEsNiArMTQzMSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG5lZWRzQWN0aXZhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIChoYXNDYXB0dXJlZFZhcmlhYmxlcygpKSB8fCAobV9mZWF0dXJlcyAmIChFdmFsRmVhdHVy
ZSB8IFdpdGhGZWF0dXJlIHwgQ2F0Y2hGZWF0dXJlKSk7IH0KICAgICAgICAgYm9vbCBoYXNDYXB0
dXJlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuICEhbV9jYXB0dXJlZFZhcmlhYmxlcy5zaXpl
KCk7IH0KICAgICAgICAgc2l6ZV90IGNhcHR1cmVkVmFyaWFibGVDb3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fY2FwdHVyZWRWYXJpYWJsZXMuc2l6ZSgpOyB9CisgICAgICAgIGNvbnN0IElkZW50aWZp
ZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9jYXB0dXJlZFZhcmlh
YmxlczsgfQogICAgICAgICBib29sIGNhcHR1cmVzKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSB7
IHJldHVybiBtX2NhcHR1cmVkVmFyaWFibGVzLmNvbnRhaW5zKGlkZW50LmltcGwoKSk7IH0KIAog
ICAgICAgICBWYXJTdGFjayYgdmFyU3RhY2soKSB7IHJldHVybiBtX3ZhclN0YWNrOyB9CkBAIC0x
NDQ2LDYgKzE0NDcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RhdGVtZW50Tm9kZSog
c2luZ2xlU3RhdGVtZW50KCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBlbWl0U3RhdGVtZW50c0J5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZGVzdGluYXRpb24pOworICAg
ICAgICAKKyAgICAgICAgdm9pZCBzZXRDbG9zZWRWYXJpYWJsZXMoY29uc3QgVmVjdG9yPFJlZlB0
cjxTdHJpbmdJbXBsPj4mJikgeyB9CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZvaWQgc2V0
U291cmNlKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkgeyBtX3NvdXJjZSA9IHNvdXJjZTsgfQpA
QCAtMTQ3NSwxMSArMTQ3OCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBzY29wZUlzRnVuY3Rpb24gPSBmYWxzZTsKIAorICAgICAgICB2b2lkIHNldENs
b3NlZFZhcmlhYmxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmKTsKKyAgICAg
ICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mIGNsb3NlZFZhcmlhYmxlcygpIGNv
bnN0IHsgcmV0dXJuIG1fY2xvc2VkVmFyaWFibGVzOyB9CiAgICAgcHJpdmF0ZToKICAgICAgICAg
UHJvZ3JhbU5vZGUoVk0qLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVt
biwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVy
U2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7
CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7Ci0KKyAgICAgICAgVmVjdG9yPFJlZlB0cjxTdHJp
bmdJbXBsPj4gbV9jbG9zZWRWYXJpYWJsZXM7CiAgICAgICAgIHVuc2lnbmVkIG1fc3RhcnRDb2x1
bW47CiAgICAgICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwogICAgIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggMjk3NjY2ZTcyNmU0NWQwODNlZjEzNDlkZGZm
ZGYzN2VmODAwZGY3YS4uNTBiZWM3OWZlMzhhZGY4ZjNhMDRmNmI0NmNiZDJhNWNiZmNmMjQ2YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjA0LDggKzIwNCw5
IEBAIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIEZ1bmN0aW9uUGFyYW1ldGVycyoKICAgICAsIG1fbGFzdElkZW50aWZpZXIoMCkKICAg
ICAsIG1fbGFzdEZ1bmN0aW9uTmFtZShudWxscHRyKQogICAgICwgbV9zb3VyY2VFbGVtZW50cygw
KQorICAgICwgbV9wYXJzaW5nQnVpbHRpbihzdHJpY3RuZXNzID09IEpTUGFyc2VCdWlsdGluKQog
ewotICAgIG1fbGV4ZXIgPSBhZG9wdFB0cihuZXcgTGV4ZXJUeXBlKHZtKSk7CisgICAgbV9sZXhl
ciA9IGFkb3B0UHRyKG5ldyBMZXhlclR5cGUodm0sIHN0cmljdG5lc3MpKTsKICAgICBtX2FyZW5h
ID0gbV92bS0+cGFyc2VyQXJlbmEuZ2V0KCk7CiAgICAgbV9sZXhlci0+c2V0Q29kZShzb3VyY2Us
IG1fYXJlbmEpOwogICAgIG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lID0gc291cmNlLmZpcnN0TGlu
ZSgpOwpAQCAtMjU2LDYgKzI1Nyw3IEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJ
bm5lcigpCiAgICAgSWRlbnRpZmllclNldCBjYXB0dXJlZFZhcmlhYmxlczsKICAgICBib29sIG1v
ZGlmaWVkUGFyYW1ldGVyID0gZmFsc2U7CiAgICAgc2NvcGUtPmdldENhcHR1cmVkVmFyaWFibGVz
KGNhcHR1cmVkVmFyaWFibGVzLCBtb2RpZmllZFBhcmFtZXRlcik7CisgICAgCiAgICAgQ29kZUZl
YXR1cmVzIGZlYXR1cmVzID0gY29udGV4dC5mZWF0dXJlcygpOwogICAgIGlmIChzY29wZS0+c3Ry
aWN0TW9kZSgpKQogICAgICAgICBmZWF0dXJlcyB8PSBTdHJpY3RNb2RlRmVhdHVyZTsKQEAgLTI2
MywyMSArMjY1LDM2IEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcigpCiAg
ICAgICAgIGZlYXR1cmVzIHw9IFNoYWRvd3NBcmd1bWVudHNGZWF0dXJlOwogICAgIGlmIChtb2Rp
ZmllZFBhcmFtZXRlcikKICAgICAgICAgZmVhdHVyZXMgfD0gTW9kaWZpZWRQYXJhbWV0ZXJGZWF0
dXJlOwotCisgICAgCisgICAgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4gY2xvc2VkVmFyaWFi
bGVzOworICAgIGlmIChtX3BhcnNpbmdCdWlsdGluKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KCFjYXB0dXJlZFZhcmlhYmxlcy5zaXplKCkpOworICAgICAgICBJZGVudGlmaWVyU2V0IHVzZWRW
YXJpYWJsZXM7CisgICAgICAgIHNjb3BlLT5nZXRVc2VkVmFyaWFibGVzKHVzZWRWYXJpYWJsZXMp
OworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHZhcmlhYmxlIDogdXNlZFZhcmlhYmxlcykgewor
ICAgICAgICAgICAgaWYgKHNjb3BlLT5oYXNEZWNsYXJlZFZhcmlhYmxlKElkZW50aWZpZXIobV92
bSwgdmFyaWFibGUuZ2V0KCkpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgaWYgKHNjb3BlLT5oYXNEZWNsYXJlZFBhcmFtZXRlcihJZGVudGlm
aWVyKG1fdm0sIHZhcmlhYmxlLmdldCgpKSkpCisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICBjbG9zZWRWYXJpYWJsZXMuYXBwZW5kKHZhcmlhYmxlKTsKKyAgICAgICAgfQor
ICAgIH0KICAgICBkaWRGaW5pc2hQYXJzaW5nKHNvdXJjZUVsZW1lbnRzLCBjb250ZXh0LnZhckRl
Y2xhcmF0aW9ucygpLCBjb250ZXh0LmZ1bmNEZWNsYXJhdGlvbnMoKSwgZmVhdHVyZXMsCi0gICAg
ICAgIGNvbnRleHQubnVtQ29uc3RhbnRzKCksIGNhcHR1cmVkVmFyaWFibGVzKTsKKyAgICAgICAg
Y29udGV4dC5udW1Db25zdGFudHMoKSwgY2FwdHVyZWRWYXJpYWJsZXMsIHN0ZDo6bW92ZShjbG9z
ZWRWYXJpYWJsZXMpKTsKIAogICAgIHJldHVybiBwYXJzZUVycm9yOwogfQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgTGV4ZXJUeXBlPgogdm9pZCBQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmluaXNoUGFy
c2luZyhTb3VyY2VFbGVtZW50cyogc291cmNlRWxlbWVudHMsIFBhcnNlckFyZW5hRGF0YTxEZWNs
YXJhdGlvblN0YWNrczo6VmFyU3RhY2s+KiB2YXJTdGFjaywgCi0gICAgUGFyc2VyQXJlbmFEYXRh
PERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiogZnVuY1N0YWNrLCBDb2RlRmVhdHVy
ZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMsIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFy
cykKKyAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+
KiBmdW5jU3RhY2ssIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cywgSWRl
bnRpZmllclNldCYgY2FwdHVyZWRWYXJzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+
PiYmIGNsb3NlZFZhcmlhYmxlcykKIHsKICAgICBtX3NvdXJjZUVsZW1lbnRzID0gc291cmNlRWxl
bWVudHM7CiAgICAgbV92YXJEZWNsYXJhdGlvbnMgPSB2YXJTdGFjazsKICAgICBtX2Z1bmNEZWNs
YXJhdGlvbnMgPSBmdW5jU3RhY2s7CiAgICAgbV9jYXB0dXJlZFZhcmlhYmxlcy5zd2FwKGNhcHR1
cmVkVmFycyk7CisgICAgbV9jbG9zZWRWYXJpYWJsZXMgPSBjbG9zZWRWYXJpYWJsZXM7CiAgICAg
bV9mZWF0dXJlcyA9IGZlYXR1cmVzOwogICAgIG1fbnVtQ29uc3RhbnRzID0gbnVtQ29uc3RhbnRz
OwogfQpAQCAtMjM0Niw2ICsyMzYzLDEwIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+
IHZvaWQgUGFyc2VyPExleGVyVHlwZT46OnByaW50VW5leHBlY3RlZFRva2VuVGV4dChXCiAgICAg
Y2FzZSBSRVNFUlZFRDoKICAgICAgICAgb3V0LnByaW50KCJVbmV4cGVjdGVkIHVzZSBvZiByZXNl
cnZlZCB3b3JkICciLCBnZXRUb2tlbigpLCAiJyIpOwogICAgICAgICByZXR1cm47CisKKyAgICBj
YXNlIElOVkFMSURfUFJJVkFURV9OQU1FX0VSUk9SVE9LOgorICAgICAgICBvdXQucHJpbnQoIklu
dmFsaWQgcHJpdmF0ZSBuYW1lICciLCBnZXRUb2tlbigpLCAiJyIpOworICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICAKICAgICBjYXNlIElERU5UOgogICAgICAgICBvdXQucHJpbnQoIlVuZXhw
ZWN0ZWQgaWRlbnRpZmllciAnIiwgZ2V0VG9rZW4oKSwgIiciKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5oCmluZGV4IGI2OThlZjkzNjhjYjhjOGYxOTdjY2QwMDBhY2FhNmRmYjEx
YmEyNDQuLjkwMzM4NTBjOGM5N2Y1N2UyMWRhNWVlZGIwMmQwNDRmNGM4OTc4ZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjMsNiArMjMsNyBAQAogI2lmbmRlZiBQ
YXJzZXJfaAogI2RlZmluZSBQYXJzZXJfaAogCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMu
aCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIK
ICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCkBAIC0yNTksNiArMjYwLDEwIEBAIHN0cnVjdCBTY29w
ZSB7CiAgICAgICAgIHJldHVybiBpc1ZhbGlkU3RyaWN0TW9kZSA/IEJpbmRpbmdTdWNjZWVkZWQg
OiBTdHJpY3RCaW5kaW5nRmFpbGVkOwogICAgIH0KIAorICAgIHZvaWQgZ2V0VXNlZFZhcmlhYmxl
cyhJZGVudGlmaWVyU2V0JiB1c2VkVmFyaWFibGVzKQorICAgIHsKKyAgICAgICAgdXNlZFZhcmlh
Ymxlcy5zd2FwKG1fdXNlZFZhcmlhYmxlcyk7CisgICAgfQogCiAgICAgdm9pZCB1c2VWYXJpYWJs
ZShjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgYm9vbCBpc0V2YWwpCiAgICAgewpAQCAtNDE0LDYg
KzQxOSw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNl
ckVycm9yJik7CiAKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5l
KCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOyB9
CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJiBjbG9zZWRWYXJpYWJsZXMo
KSB7IHJldHVybiBzdGQ6Om1vdmUobV9jbG9zZWRWYXJpYWJsZXMpOyB9CiAKIHByaXZhdGU6CiAg
ICAgc3RydWN0IEFsbG93SW5PdmVycmlkZSB7CkBAIC01NDAsNyArNTQ2LDcgQEAgcHJpdmF0ZToK
ICAgICBTdHJpbmcgcGFyc2VJbm5lcigpOwogCiAgICAgdm9pZCBkaWRGaW5pc2hQYXJzaW5nKFNv
dXJjZUVsZW1lbnRzKiwgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFj
az4qLCAKLSAgICAgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlv
blN0YWNrPiosIENvZGVGZWF0dXJlcywgaW50LCBJZGVudGlmaWVyU2V0Jik7CisgICAgICAgIFBh
cnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qLCBDb2RlRmVh
dHVyZXMsIGludCwgSWRlbnRpZmllclNldCYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1w
bD4+JiYpOwogCiAgICAgLy8gVXNlZCB0byBkZXRlcm1pbmUgdHlwZSBvZiBlcnJvciB0byByZXBv
cnQuCiAgICAgYm9vbCBpc0Z1bmN0aW9uQm9keU5vZGUoU2NvcGVOb2RlKikgeyByZXR1cm4gZmFs
c2U7IH0KQEAgLTg0MCw5ICs4NDYsMTEgQEAgcHJpdmF0ZToKICAgICBjb25zdCBJZGVudGlmaWVy
KiBtX2xhc3RGdW5jdGlvbk5hbWU7CiAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyQ2FjaGU+IG1f
ZnVuY3Rpb25DYWNoZTsKICAgICBTb3VyY2VFbGVtZW50cyogbV9zb3VyY2VFbGVtZW50czsKKyAg
ICBib29sIG1fcGFyc2luZ0J1aWx0aW47CiAgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9u
U3RhY2tzOjpWYXJTdGFjaz4qIG1fdmFyRGVjbGFyYXRpb25zOwogICAgIFBhcnNlckFyZW5hRGF0
YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qIG1fZnVuY0RlY2xhcmF0aW9uczsK
ICAgICBJZGVudGlmaWVyU2V0IG1fY2FwdHVyZWRWYXJpYWJsZXM7CisgICAgVmVjdG9yPFJlZlB0
cjxTdHJpbmdJbXBsPj4gbV9jbG9zZWRWYXJpYWJsZXM7CiAgICAgQ29kZUZlYXR1cmVzIG1fZmVh
dHVyZXM7CiAgICAgaW50IG1fbnVtQ29uc3RhbnRzOwogICAgIApAQCAtOTU3LDYgKzk2NSwxMCBA
QCBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IHBhcnNlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBGdW5jdGlvblBhcmFtZXRlcgogICAgICAgICBSZWZQdHI8UGFyc2VkTm9kZT4gcmVz
dWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yKTsKICAgICAgICAgaWYgKHBvc2l0
aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CisgICAgICAgIGlmIChz
dHJpY3RuZXNzID09IEpTUGFyc2VCdWlsdGluKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChyZXN1bHQpOworICAgICAgICAgICAgcmVzdWx0LT5zZXRDbG9zZWRWYXJpYWJsZXMoc3RkOjpt
b3ZlKHBhcnNlci5jbG9zZWRWYXJpYWJsZXMoKSkpOworICAgICAgICB9CiAgICAgICAgIHJldHVy
biByZXN1bHQucmVsZWFzZSgpOwogICAgIH0KICAgICBQYXJzZXI8TGV4ZXI8VUNoYXI+PiBwYXJz
ZXIodm0sIHNvdXJjZSwgcGFyYW1ldGVycywgbmFtZSwgc3RyaWN0bmVzcywgcGFyc2VyTW9kZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKaW5kZXggNGU5YTE3
Y2QyMWNhMzQxNDZiYmQ0ODE1NmEzNzJjZDQwNGRlZjYwYy4uZjdhNzViZjdjMzc4NTdlNDRiNmQ1
ZDcxZjQ1MjliYjFhYzFjZjVmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyTW9kZXMuaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51bSBK
U1BhcnNlclN0cmljdG5lc3MgeyBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlU3RyaWN0IH07CitlbnVt
IEpTUGFyc2VyU3RyaWN0bmVzcyB7IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VCdWlsdGluLCBKU1Bh
cnNlU3RyaWN0IH07CiBlbnVtIEpTUGFyc2VyTW9kZSB7IEpTUGFyc2VQcm9ncmFtQ29kZSwgSlNQ
YXJzZUZ1bmN0aW9uQ29kZSB9OwogCiBlbnVtIFByb2ZpbGVyTW9kZSB7IFByb2ZpbGVyT2ZmLCBQ
cm9maWxlck9uIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlclRva2Vucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMu
aAppbmRleCA4MmEyNjYzOWE3OTIyMGEwODQ0NTZiNDhmMzI4NTJkMTQzYzczOWQwLi44Yzg3YWQ5
ZmFkYmRjNGFmMzlhYzk5ZGIyZDg0NDVlMTNmZmZkMzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKQEAgLTE0OSw2ICsxNDksNyBAQCBlbnVtIEpTVG9r
ZW5UeXBlIHsKICAgICBJTlZBTElEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSyA9IDcgfCBFcnJv
clRva2VuRmxhZywKICAgICBVTlRFUk1JTkFURURfU1RSSU5HX0xJVEVSQUxfRVJST1JUT0sgPSA4
IHwgRXJyb3JUb2tlbkZsYWcgfCBVbnRlcm1pbmF0ZWRFcnJvclRva2VuRmxhZywKICAgICBJTlZB
TElEX1NUUklOR19MSVRFUkFMX0VSUk9SVE9LID0gOSB8IEVycm9yVG9rZW5GbGFnLAorICAgIElO
VkFMSURfUFJJVkFURV9OQU1FX0VSUk9SVE9LID0gMTAgfCBFcnJvclRva2VuRmxhZwogfTsKIAog
c3RydWN0IEpTVGV4dFBvc2l0aW9uIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ0xpc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJn
TGlzdC5jcHAKaW5kZXggZTEzMTA0ZGY1OTIyZDA3NzYyNTdkMDVjYjVlODcwNTM3ZDIxNDI4YS4u
MjRjMDZiYmIxYzJjMzRiOWRhNWVmODRiMjU1Yzk5MDBkYWY4NTkxMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5jcHAKQEAgLTIyLDcgKzIyLDcgQEAKICNpbmNsdWRl
ICJBcmdMaXN0LmgiCiAKICNpbmNsdWRlICJIZWFwUm9vdFZpc2l0b3IuaCIKLSNpbmNsdWRlICJK
U0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJK
U09iamVjdC5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKaW5kZXggOGZkMTk1Y2I5YjVmN2VmNWJmM2QyZmQ5
MzM0MmIwMTAyNzI1ZmFmMS4uNGZiYWM2ODg2MzQ4NjE3MTY0OWEzMzRkNjFiNWRjYzM4MTRkZDU1
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCkBAIC0y
Niw2ICsyNiw3IEBACiAjaW5jbHVkZSAiQXJndW1lbnRzLmgiCiAKICNpbmNsdWRlICJDYWxsRnJh
bWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJK
U0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0FyZ3VtZW50c0l0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMu
aAppbmRleCAxOGYzODkxNzEzODUyMzYyYzdhNzVhMzA1M2I0NjMxNDE3YmViODFiLi5mMTZmZDNk
ZTQwNTU5NzBiYTlkOWM2ZjBhZTYzMThmMjIwNGI2NTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bcmd1bWVudHMuaApAQCAtMjUsNiArMjUsNyBAQAogI2RlZmluZSBBcmd1bWVu
dHNfaAogCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZp
ZXJzLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNEZXN0cnVjdGli
bGVPYmplY3QuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0
b3IuY3BwCmluZGV4IGFmYjU5NzkwY2IwMDk5ODliYjdiNDI4NjNlOTE4MjMzNTc2YjhhYWMuLjkx
Y2FjZGZhODU3ZWI2OTM3NmEzMDgxYThjNzAyYWM5YzIxN2NhN2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yQ29u
c3RydWN0b3IuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQXJndW1lbnRzSXRlcmF0
b3JDb25zdHJ1Y3Rvci5oIgogCiAjaW5jbHVkZSAiQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUu
aCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkpTQXJndW1lbnRz
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
Q2VsbElubGluZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcAppbmRleCBkZDA4OTRmMTRhMDIx
ZDVmMTI2NThhY2IwMWU3MjFmY2Q2ZDM0OGNjLi41YjRhZTg3MTZiMDU1M2JlNDYyMzk1NWU5OWUx
YjQzZWJmMThmZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCkBAIC0yNiw3ICsyNiw5IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5
cGUuaCIKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiSlNBcmd1
bWVudHNJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAKIG5hbWVz
cGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVBy
b3RvdHlwZS5jcHAKaW5kZXggMjdhYzZkNDhhNzFmNzk1NTAyYTEwY2VhNjQ3ODY1NDEzNWE0NjNh
MC4uNmRjN2JlNTY5NjlkZTY3ZjYyMTA3YmIzYTUxYTMwOGZhM2JhNzZiZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTQXJyYXlJdGVyYXRvci5oIgog
I2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTU3RyaW5nSm9pbmVyLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5j
bHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCkBAIC01Niw3ICs1Nyw2IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKik7CiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NvcnQoRXhl
Y1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3Rv
RnVuY1NwbGljZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGFycmF5UHJvdG9GdW5jVW5TaGlmdChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRXZlcnkoRXhlY1N0YXRlKik7CiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0ZvckVhY2goRXhl
Y1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3Rv
RnVuY1NvbWUoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvRnVuY0luZGV4T2YoRXhlY1N0YXRlKik7CkBAIC05NTQsNjkgKzk1NCw2IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNNYXAoRXhlY1N0YXRl
KiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0QXJyYXkpOwogfQogCi0v
LyBEb2N1bWVudGF0aW9uIGZvciB0aGVzZSB0aHJlZSBpcyBhdmFpbGFibGUgYXQ6Ci0vLyBodHRw
Oi8vZGV2ZWxvcGVyLXRlc3QubW96aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0phdmFTY3JpcHRfMS41
X1JlZmVyZW5jZTpPYmplY3RzOkFycmF5OmV2ZXJ5Ci0vLyBodHRwOi8vZGV2ZWxvcGVyLXRlc3Qu
bW96aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0phdmFTY3JpcHRfMS41X1JlZmVyZW5jZTpPYmplY3Rz
OkFycmF5OmZvckVhY2gKLS8vIGh0dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3ppbGxhLm9yZy9lbi9k
b2NzL0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6QXJyYXk6c29tZQotCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRXZlcnkoRXhlY1N0YXRl
KiBleGVjKQotewotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgp
LnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKLSAgICB1bnNpZ25lZCBs
ZW5ndGggPSB0aGlzT2JqLT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCku
dG9VSW50MzIoZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCi0gICAgSlNWYWx1ZSBmdW5j
dGlvbiA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENh
bGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBp
ZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjKTsKLQotICAgIEpTVmFsdWUgYXBwbHlUaGlzID0gZXhlYy0+YXJndW1lbnQoMSk7
Ci0KLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbih0cnVlKTsKLQotICAgIHVuc2lnbmVk
IGsgPSAwOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUpTICYmIGlzSlNBcnJheSh0aGlz
T2JqKSkgewotICAgICAgICBKU0Z1bmN0aW9uKiBmID0ganNDYXN0PEpTRnVuY3Rpb24qPihmdW5j
dGlvbik7Ci0gICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh0aGlzT2JqKTsKLSAgICAg
ICAgQ2FjaGVkQ2FsbCBjYWNoZWRDYWxsKGV4ZWMsIGYsIDMpOwotICAgICAgICBmb3IgKDsgayA8
IGxlbmd0aCAmJiAhZXhlYy0+aGFkRXhjZXB0aW9uKCk7ICsraykgewotICAgICAgICAgICAgaWYg
KFVOTElLRUxZKCFhcnJheS0+Y2FuR2V0SW5kZXhRdWlja2x5KGspKSkKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRUaGlzKGFw
cGx5VGhpcyk7Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDAsIGFycmF5LT5n
ZXRJbmRleFF1aWNrbHkoaykpOwotICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudCgx
LCBqc051bWJlcihrKSk7Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDIsIHRo
aXNPYmopOwotICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWNoZWRDYWxsLmNhbGwoKTsK
LSAgICAgICAgICAgIGlmICghcmVzdWx0LnRvQm9vbGVhbihleGVjKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwotICAgICAgICB9Ci0g
ICAgfQotICAgIGZvciAoOyBrIDwgbGVuZ3RoICYmICFleGVjLT5oYWRFeGNlcHRpb24oKTsgKytr
KSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmopOwotICAgICAgICBpZiAoIXRo
aXNPYmotPmdldFByb3BlcnR5U2xvdChleGVjLCBrLCBzbG90KSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotCi0gICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGVhY2hBcmd1bWVudHM7Ci0gICAg
ICAgIGVhY2hBcmd1bWVudHMuYXBwZW5kKHNsb3QuZ2V0VmFsdWUoZXhlYywgaykpOwotICAgICAg
ICBlYWNoQXJndW1lbnRzLmFwcGVuZChqc051bWJlcihrKSk7Ci0gICAgICAgIGVhY2hBcmd1bWVu
dHMuYXBwZW5kKHRoaXNPYmopOwotCi0gICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
LSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KLSAg
ICAgICAgYm9vbCBwcmVkaWNhdGVSZXN1bHQgPSBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlw
ZSwgY2FsbERhdGEsIGFwcGx5VGhpcywgZWFjaEFyZ3VtZW50cykudG9Cb29sZWFuKGV4ZWMpOwot
ICAgICAgICBpZiAoIXByZWRpY2F0ZVJlc3VsdCkgewotICAgICAgICAgICAgcmVzdWx0ID0ganNC
b29sZWFuKGZhbHNlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotfQotCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRm9yRWFjaChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAg
ICAgSlNPYmplY3QqIHRoaXNPYmogPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMs
IFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggNTEwZTM4M2ZhZTU3NWFhZGE4MTc2YzA0NDFlZTcyNWI0
M2E0YzczMi4uZDMwNDg3N2ZlOWNkZTFjMDkxOWZkNDU5NWY4MTFlY2FiY2U3NzI3NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC0xNDQsMjQgKzE0
NCwyNiBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hlOjpnZXRGdW5jdGlv
bkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShWTSYgdgogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0
aW9uQmVmb3JlTGFzdE5ld2xpbmU7CiAgICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtID0g
cGFyc2U8UHJvZ3JhbU5vZGU+KCZ2bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIEpTUGFyc2VO
b3JtYWwsIEpTUGFyc2VQcm9ncmFtQ29kZSwgZXJyb3IsICZwb3NpdGlvbkJlZm9yZUxhc3ROZXds
aW5lKTsKICAgICBpZiAoIXByb2dyYW0pIHsKLSAgICAgICAgQVNTRVJUKGVycm9yLm1fdHlwZSAh
PSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXJyb3Iu
bV90eXBlICE9IFBhcnNlckVycm9yOjpFcnJvck5vbmUpOwogICAgICAgICBtX3NvdXJjZUNvZGUu
cmVtb3ZlKGFkZFJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAog
ICAgIC8vIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBhbiBpbnB1dCBzdHJpbmcgdGhhdCB3b3VsZCBy
ZXN1bHQgaW4gYSBzaW5nbGUgYW5vbnltb3VzIGZ1bmN0aW9uIGV4cHJlc3Npb24uCiAgICAgU3Rh
dGVtZW50Tm9kZSogZXhwclN0YXRlbWVudCA9IHByb2dyYW0tPnNpbmdsZVN0YXRlbWVudCgpOwot
ICAgIEFTU0VSVChleHByU3RhdGVtZW50KTsKLSAgICBBU1NFUlQoZXhwclN0YXRlbWVudC0+aXNF
eHByU3RhdGVtZW50KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQpOworICAg
IFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKICAgICBF
eHByZXNzaW9uTm9kZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVtZW50Tm9kZSo+
KGV4cHJTdGF0ZW1lbnQpLT5leHByKCk7Ci0gICAgQVNTRVJUKGZ1bmNFeHByKTsKKyAgICBSRUxF
QVNFX0FTU0VSVChmdW5jRXhwcik7CiAgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHItPmlzRnVu
Y0V4cHJOb2RlKCkpOwogICAgIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkgPSBzdGF0aWNfY2FzdDxG
dW5jRXhwck5vZGUqPihmdW5jRXhwciktPmJvZHkoKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghcHJv
Z3JhbS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CisgICAgCiAgICAgYm9keS0+c2V0RW5kUG9z
aXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7Ci0gICAgQVNTRVJUKGJvZHkpOwotICAg
IEFTU0VSVChib2R5LT5pZGVudCgpLmlzTnVsbCgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5
KTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5LT5pZGVudCgpLmlzTnVsbCgpKTsKIAotICAgIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBib2R5LCB0cnVlKTsKKyAgICBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgYm9keSwgdHJ1ZSwgVW5saW5r
ZWROb3JtYWxGdW5jdGlvbik7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5tX25hbWVWYWx1ZS5z
ZXQodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwganNTdHJpbmcoJnZtLCBuYW1lLnN0cmluZygpKSk7
CiAKICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gU291cmNlQ29kZVZhbHVlKHZtLCBm
dW5jdGlvbkV4ZWN1dGFibGUsIG1fc291cmNlQ29kZS5hZ2UoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKaW5kZXggM2Y1YzY0
NWMwOThkNTI3ZmMwYzcyNTllOTQ0N2VmYmU4ODY4YTI5Yy4uMmZjMmI3MjdhZmNlZWUxZWMyYzYy
NWRlNTY3NWIzYmUxY2Y2MGQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcApAQCAtMjcsNyArMjcsMTAgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICNkZWZpbmUgSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKG5hbWUpICwgbmFtZSh2
bSwgI25hbWUpCiAjZGVmaW5lIElOSVRJQUxJWkVfS0VZV09SRChuYW1lKSAsIG5hbWUjI0tleXdv
cmQodm0sICNuYW1lKQotI2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFNRShuYW1lKSAsIG5h
bWUjI1ByaXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb20oUHJpdmF0ZU5hbWUoKSkpCisjZGVmaW5l
IElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKG5hbWUpIFwKKyAgICAsIG5hbWUjI1ByaXZhdGVOYW1l
KElkZW50aWZpZXI6OmZyb20oUHJpdmF0ZU5hbWUoKSkpIFwKKyAgICAsIG1fIyNuYW1lIyNQdWJs
aWNTdHJpbmdQYWlyKG5hbWUsIG5hbWUjI1ByaXZhdGVOYW1lKSBcCisKIAogQ29tbW9uSWRlbnRp
ZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZNKiB2bSkKICAgICA6IG51bGxJZGVudGlmaWVyKCkK
QEAgLTM4LDggKzQxLDI2IEBAIENvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyhW
TSogdm0pCiAgICAgLCBoYXNOZXh0SWRlbnRpZmllcih2bSwgImhhc05leHQiKQogICAgIEpTQ19D
T01NT05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKElOSVRJQUxJWkVfS0VZV09SRCkKICAgICBK
U0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpFX1BST1BF
UlRZX05BTUUpCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJ
WkVfUFJPUEVSVFlfTkFNRSkKICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFD
SF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKQogewogfQogCitjb25zdCBJ
ZGVudGlmaWVyKiBDb21tb25JZGVudGlmaWVyczo6Z2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQpIGNvbnN0Cit7CisjZGVmaW5lIFJFVFVSTl9JRl9QUklWQVRFX05BTUVfTUFU
Q0hFUyhuYW1lKSBpZiAobV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuZmlyc3QgPT0gaWRlbnQp
IHJldHVybiAmbV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuc2Vjb25kOworICAgIEpTQ19DT01N
T05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoUkVUVVJOX0lGX1BSSVZB
VEVfTkFNRV9NQVRDSEVTKQorI3VuZGVmIFJFVFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hFUwor
ICAgIHJldHVybiAwOworfQorCitJZGVudGlmaWVyIENvbW1vbklkZW50aWZpZXJzOjpnZXRQdWJs
aWNOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAoreworI2RlZmluZSBSRVRVUk5f
SUZfUFJJVkFURV9OQU1FX01BVENIRVMobmFtZSkgaWYgKG1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQ
YWlyLnNlY29uZCA9PSBpZGVudCkgcmV0dXJuIG1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQYWlyLmZp
cnN0OworICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05B
TUUoUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKQorI3VuZGVmIFJFVFVSTl9JRl9QUklW
QVRFX05BTUVfTUFUQ0hFUworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIGVtcHR5SWRlbnRpZmllcjsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCBl
OGY5ZWQ4MmJjNzk0NjIwMzgyNjZiMzAyMDc4MjI0N2IxZmEyN2EzLi45MjRkMzZhYzY5MTM1MDM1
N2NiMzgyYjFlZjNiNDBhMGEwOGMwYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTIyLDYgKzIyLDcgQEAKICNkZWZpbmUg
Q29tbW9uSWRlbnRpZmllcnNfaAogCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
IkpTQ0J1aWx0aW5zLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIC8vIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIG9mIHByb3BlcnR5IG5hbWVzLCBwYXNzZWQgdG8gYSBtYWNybyBzbyB3
ZSBjYW4gZG8gc2V0IHRoZW0gdXAgdmFyaW91cwpAQCAtMTMzLDggKzEzNCwxMCBAQAogICAgIG1h
Y3JvKG9zckV4aXRzKSBcCiAgICAgbWFjcm8ocGFyc2UpIFwKICAgICBtYWNybyhwcm9maWxlZEJ5
dGVjb2RlcykgXAorICAgIG1hY3JvKHByb21pc2UpIFwKICAgICBtYWNybyhwcm9wZXJ0eUlzRW51
bWVyYWJsZSkgXAogICAgIG1hY3JvKHByb3RvdHlwZSkgXAorICAgIG1hY3JvKHJlc29sdmUpIFwK
ICAgICBtYWNybyhzZXQpIFwKICAgICBtYWNybyhzaXplKSBcCiAgICAgbWFjcm8oc2xpY2UpIFwK
QEAgLTE1NSw3ICsxNTgsMTQgQEAKICAgICBtYWNybyh2YWx1ZXMpIFwKICAgICBtYWNybyh2YWx1
ZU9mKSBcCiAgICAgbWFjcm8od2luZG93KSBcCi0gICAgbWFjcm8od3JpdGFibGUpCisgICAgbWFj
cm8od3JpdGFibGUpIFwKKyAgICBtYWNybyhpdGVyYXRvcikgXAorICAgIG1hY3JvKGl0ZXJhdG9y
TmV4dCkgXAorICAgIG1hY3JvKHJlamVjdCkgXAorICAgIG1hY3JvKGZ1bGZpbGxtZW50SGFuZGxl
cikgXAorICAgIG1hY3JvKHJlamVjdGlvbkhhbmRsZXIpIFwKKyAgICBtYWNybyhkZWZlcnJlZCkg
XAorICAgIG1hY3JvKGNvdW50ZG93bkhvbGRlcikgXAogCiAjZGVmaW5lIEpTQ19DT01NT05fSURF
TlRJRklFUlNfRUFDSF9LRVlXT1JEKG1hY3JvKSBcCiAgICAgbWFjcm8oYnJlYWspIFwKQEAgLTIw
Myw3ICsyMTMsNyBAQAogICAgIG1hY3JvKHZvaWQpIFwKICAgICBtYWNybyh3aGlsZSkgXAogICAg
IG1hY3JvKHdpdGgpIFwKLSAgICBtYWNybyh5aWVsZCkKKyAgICBtYWNybyh5aWVsZCkgXAogCiAj
ZGVmaW5lIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUo
bWFjcm8pIFwKICAgICBtYWNybyhpdGVyYXRvcikgXApAQCAtMjE2LDcgKzIyNiwxMiBAQAogICAg
IG1hY3JvKGluZGV4KSBcCiAgICAgbWFjcm8odmFsdWVzKSBcCiAgICAgbWFjcm8oZGVmZXJyZWQp
IFwKLSAgICBtYWNybyhjb3VudGRvd25Ib2xkZXIpCisgICAgbWFjcm8oY291bnRkb3duSG9sZGVy
KSBcCisgICAgbWFjcm8oT2JqZWN0KSBcCisgICAgbWFjcm8oVHlwZUVycm9yKSBcCisgICAgbWFj
cm8odW5kZWZpbmVkS2V5d29yZCkgXAorICAgIG1hY3JvKGNhbGwpIFwKKyAgICBtYWNybyhhcHBs
eSkKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTI0MCwxMSArMjU1LDE1IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAKICNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJUWV9O
QU1FX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWU7CiAgICAgICAgIEpTQ19DT01N
T05fSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVf
UFJPUEVSVFlfTkFNRV9HTE9CQUwpCisgICAgICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJ
T05fTkFNRShKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFMKQogI3Vu
ZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwKIAotI2RlZmlu
ZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwobmFt
ZSkgY29uc3QgSWRlbnRpZmllciBuYW1lIyNQcml2YXRlTmFtZTsKKyNkZWZpbmUgSlNDX0lERU5U
SUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMKG5hbWUpIGNvbnN0IElk
ZW50aWZpZXIgbmFtZSMjUHJpdmF0ZU5hbWU7IGNvbnN0IHN0ZDo6cGFpcjxJZGVudGlmaWVyLCBJ
ZGVudGlmaWVyPiBtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpcjsKICAgICAgICAgSlNDX0NPTU1P
Tl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShKU0NfSURFTlRJRklFUl9E
RUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwpCiAjdW5kZWYgSlNDX0lERU5USUZJ
RVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMCisgICAgICAgIAorICAgICAg
ICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29u
c3Q7CisgICAgICAgIElkZW50aWZpZXIgZ2V0UHVibGljTmFtZShjb25zdCBJZGVudGlmaWVyJikg
Y29uc3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCAwNzU4NzVmYjIzMTZh
NTU1NzA1MGE2NjkwY2QwZjk4ODI0ODRmNWYzLi41YWY5MDg3NTRlNzQ3ZjhjYWUwY2QwNGFmOGQ0
OTE1MDA0NjhjMmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNp
bmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgotI2luY2x1ZGUg
IkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNp
bmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwCmlu
ZGV4IDU1MzM0YmUyZjk4MGE5OGY3ZmVhNDJhMDViZTBmMjBjMDE5ZmYwZGQuLjE2ZWJhZDEwZTRl
NDJiNmI3ODVlOTc4ZDM4ZTg3MGUzYjVhNmM0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBDb21tb25TbG93UGF0aHMgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCAwNWUxMWUwYjgwYTM0MzBhZWFiMjJi
MDIyMmEyMTJmNGE4ZTJjNDliLi4zNjRjYzcxNjY2MDhiNTAwN2Q0NzdkODczOTE4YTVkNjRiMTY4
NjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmNwcApAQCAtODEsNiArODEsMTEgQEAgSlNPYmplY3QqIGNyZWF0ZVN0YWNrT3ZlcmZs
b3dFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiBKU09iamVjdCogY3JlYXRl
VW5kZWZpbmVkVmFyaWFibGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50KQogeworICAgIAorICAgIGlmIChpZGVudC5pbXBsKCktPmlzRW1wdHlVbmlxdWUoKSkg
eworICAgICAgICBTdHJpbmcgbWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBmaW5kIHByaXZhdGUg
dmFyaWFibGU6IEAiLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2V0UHVibGljTmFtZShpZGVudCku
c3RyaW5nKCkpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIG1l
c3NhZ2UpOworICAgIH0KICAgICBTdHJpbmcgbWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBmaW5k
IHZhcmlhYmxlOiAiLCBpZGVudC5zdHJpbmcoKSkpOwogICAgIHJldHVybiBjcmVhdGVSZWZlcmVu
Y2VFcnJvcihleGVjLCBtZXNzYWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4ZWN1dGFibGUuaAppbmRleCAxOTg5NzZiYjNmZTZlNmU5MTE3OTgxMmQxY2FmOWI4YmY5YmZk
MGJiLi5jZjBlNzUzYTdjNWY1NDQ2N2I2NGQ4ZTJhOWIzZmJhMjcxNTAwMDEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC00ODQsNyArNDg0LDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBjbGVhckNvZGUoKTsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4
ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0
aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRh
YmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5l
ZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNl
KTsgfQogCiAgICAgdW5zaWduZWQgbnVtVmFyaWFibGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2
YWxDb2RlQmxvY2stPm51bVZhcmlhYmxlcygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZGdW5j
dGlvbkRlY2xzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bWJlck9mRnVu
Y3Rpb25EZWNscygpOyB9CkBAIC01NDAsNyArNTQwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBj
bGVhckNvZGUoKTsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3Qg
eyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlz
U3RyaWN0TW9kZSgpLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5m
bygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2Vz
RXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlKTsgfQogCiBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwpAQCAtNjI4LDcgKzYyOCw4IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIHJldHVybiBiYXNlbGluZUNvZGVCbG9ja0ZvcihraW5kKTsKICAg
ICB9Ci0gICAgICAgIAorCisgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpOyB9CiAgICAgY29u
c3QgSWRlbnRpZmllciYgbmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1l
KCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBpbmZlcnJlZE5hbWUoKSB7IHJldHVybiBtX3Vu
bGlua2VkRXhlY3V0YWJsZS0+aW5mZXJyZWROYW1lKCk7IH0KICAgICBKU1N0cmluZyogbmFtZVZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWVWYWx1ZSgpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlw
ZS5jcHAKaW5kZXggYzFiMDhhZjJkODE4ZGFlNTdlMWIwMGZkYTE3M2E4MTYxMzc1MjliNS4uMTI0
OTBjNDBmMzM0MTdlY2E5MjM4NTBhMGRjNjYyZGJiY2Q0MGYzMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcApAQCAtMjIsMTIg
KzIyLDEzIEBACiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKIAogI2luY2x1ZGUgIkFy
Z3VtZW50cy5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5o
IgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5oIgotI2lu
Y2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiTGV4ZXIuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKQEAgLTEwOCw3ICsxMDks
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJp
bmcoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRo
aXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygp
KSkgewogICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4o
dGhpc1ZhbHVlKTsKLSAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpKQorICAg
ICAgICBpZiAoZnVuY3Rpb24tPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgImZ1
bmN0aW9uICIsIGZ1bmN0aW9uLT5uYW1lKGV4ZWMpLCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1c
bn0iKSk7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGZ1bmN0aW9u
LT5qc0V4ZWN1dGFibGUoKTsKICAgICAgICAgU3RyaW5nIHNvdXJjZVN0cmluZyA9IGV4ZWN1dGFi
bGUtPnNvdXJjZSgpLnRvU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBY3RpdmF0aW9uLmNwcAppbmRleCA3MmVkMWM3MTI0MDYxMTY4YjBhZGRkMzExNmY3NTVh
MTE3YjhmYjkwLi5iMzc0OTQzMDk5ZTIxNTVhMzk3NzEzMzEzNDcwMmMyYTI0YWNjODZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKQEAgLTU4
LDcgKzU4LDcgQEAgdm9pZCBKU0FjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKIAogaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1i
b2xUYWJsZUdldChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7Ci0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdl
dChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5
ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYg
KGVudHJ5LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTcyLDcgKzcyLDcg
QEAgaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QKIAogaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpz
eW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRh
YmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xU
YWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS51
aWQoKSk7CiAgICAgaWYgKGVudHJ5LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
QEAgLTg5LDcgKzg5LDcgQEAgaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1
dChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU4KICAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2
YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CiAgICAgCi0gICAgU3ltYm9sVGFibGVFbnRyeSBl
bnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgp
KTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0
KHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGVudHJ5LmlzTnVsbCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgaWYgKGVudHJ5LmlzUmVhZE9ubHkoKSkgewpAQCAtMTM2LDcgKzEz
Niw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmli
dXRlcyhWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wCiAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtu
b3duPiogcmVnOwogICAgIHsKICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3lt
Ym9sVGFibGUoKS0+bV9sb2NrKTsKLSAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3Ig
aXRlciA9IHN5bWJvbFRhYmxlKCktPmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpKTsKKyAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRh
YmxlKCktPmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgICAgICBpZiAoaXRl
ciA9PSBzeW1ib2xUYWJsZSgpLT5lbmQobG9ja2VyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSYgZW50cnkgPSBpdGVyLT52YWx1ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5j
cHAKaW5kZXggMmZjZjg4MTVjMDU2ODA1ODEyYTc5OTFhNWZmMDYzZDY4NzM5NzE2NC4uOWE5MjU4
M2FhMGVjOTBkYmIzMjhlY2Q1MGRjMzEzOWFlZjAyNzNiNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5jcHAKQEAgLTI3LDYg
KzI3LDcgQEAKICNpbmNsdWRlICJKU0FyZ3VtZW50c0l0ZXJhdG9yLmgiCiAKICNpbmNsdWRlICJB
cmd1bWVudHMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogCiBuYW1lc3BhY2Ug
SlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCA5
MDA3YjVmN2QzZjEwM2IxZDIxYjFhMzY1YTI2YzIxNWMzMmI0ZDI4Li5iYTBhMmQzOGU5YzUzZTE1
OTM3ZDQ2YTg5NTFhOGM4YzQ1MDc5MjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIK
ICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJJbmRleGluZ0hlYWRlcklubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5h
bWVBcnJheS5oIgogI2luY2x1ZGUgIlJlamVjdC5oIgogI2luY2x1ZGUgPHd0Zi9BVkxUcmVlLmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNw
cAppbmRleCBkNTA2YzRlYmQyNjIwZWZkNzA3OTNhODczZDA4NTJmYmQ5NzgyODU5Li5jZjM3MDk3
ZWMwYzY5MjVhODY3YjhjMDEwYzBlZmM0MDc0NDg1ZjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5l
cy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9y
SW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZS5jcHAKaW5kZXggY2NhNjg4OGJmOThhMDI4NjQ2Y2EzZGRkZjM3NjI3
Y2UwZTdkOTMwMi4uMzM5YTdhYjdmNTk1MTVlOTZhZmI3ZWM0Yjg3NDFlN2FhOGUxNjZmOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAgLTMyLDcg
KzMyLDkgQEAKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3QuaCIKICNpbmNsdWRlICJKU05vdEFuT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiTnVtYmVyT2JqZWN0LmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5o
IgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJh
cy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgK
aW5kZXggZjdjODQ0NjQ1MDkyYjI1MDgwNWU2ZThkNDgzMmM5OThiZGI4OWI1NC4uZDc5NWRkNTZh
OTdkZGI1OTdjMDkwZmMyZTBiN2YzMDhlMzNlYmNhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaApAQCAtMjcsOCArMjcsMTAgQEAKICNkZWZpbmUg
SlNDZWxsSW5saW5lc19oCiAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb21t
b25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkRlZmVyR0MuaCIKICNpbmNsdWRlICJIYW5kbGUu
aCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgog
I2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggMjQxOTY0NjEwYmI0NDI3
YjE4NjM3MzM0NmUyNGY1YTgyZDBjZGNjNC4uN2JlZjU5MWIxNGYzNWYxYTkzNDhhZGU5YTllMGY1
OTBlYjZhZGY4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5jcHAKQEAgLTEwOSw2ICsxMDksMTQgQEAgdm9pZCBKU0Z1bmN0aW9uOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGludCBsZW5ndGgKICAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIobGVuZ3RoKSwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogCitKU0Z1bmN0aW9uKiBKU0Z1
bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgSlNGdW5j
dGlvbiogZnVuY3Rpb24gPSBjcmVhdGUodm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCk7Cisg
ICAgZnVuY3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJp
bmcoJnZtLCBleGVjdXRhYmxlLT5uYW1lKCkuc3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9u
bHkgfCBEb250RW51bSk7CisgICAgZnVuY3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoLCBqc051bWJlcihleGVjdXRhYmxlLT5wYXJhbWV0ZXJDb3VudCgpKSwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHJldHVybiBmdW5jdGlvbjsKK30K
KwogT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUqIEpTRnVuY3Rpb246OmNyZWF0ZUFsbG9jYXRpb25Q
cm9maWxlKEV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IGlubGluZUNhcGFjaXR5KQogewogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC0xNDIsNyArMTUwLDcgQEAgY29uc3QgU3RyaW5nIEpTRnVu
Y3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJl
dHVybiBleHBsaWNpdE5hbWU7CiAgICAgCiAgICAgY29uc3QgU3RyaW5nIGFjdHVhbE5hbWUgPSBu
YW1lKGV4ZWMpOwotICAgIGlmICghYWN0dWFsTmFtZS5pc0VtcHR5KCkgfHwgaXNIb3N0RnVuY3Rp
b24oKSkKKyAgICBpZiAoIWFjdHVhbE5hbWUuaXNFbXB0eSgpIHx8IGlzSG9zdE9yQnVpbHRpbkZ1
bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBhY3R1YWxOYW1lOwogICAgIAogICAgIHJldHVybiBq
c0V4ZWN1dGFibGUoKS0+aW5mZXJyZWROYW1lKCkuc3RyaW5nKCk7CkBAIC0xNTAsMTAgKzE1OCwy
MCBAQCBjb25zdCBTdHJpbmcgSlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKEV4ZWNT
dGF0ZSogZXhlYykKIAogY29uc3QgU291cmNlQ29kZSogSlNGdW5jdGlvbjo6c291cmNlQ29kZSgp
IGNvbnN0CiB7Ci0gICAgaWYgKGlzSG9zdEZ1bmN0aW9uKCkpCisgICAgaWYgKGlzSG9zdE9yQnVp
bHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiAmanNFeGVjdXRh
YmxlKCktPnNvdXJjZSgpOwogfQorICAgIAorYm9vbCBKU0Z1bmN0aW9uOjppc0hvc3RPckJ1aWx0
aW5GdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzSG9zdEZ1bmN0aW9uKCkgfHwgaXNC
dWlsdGluRnVuY3Rpb24oKTsKK30KKworYm9vbCBKU0Z1bmN0aW9uOjppc0J1aWx0aW5GdW5jdGlv
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuICFpc0hvc3RGdW5jdGlvbigpICYmIGpzRXhlY3V0YWJs
ZSgpLT5pc0J1aWx0aW5GdW5jdGlvbigpOworfQogCiB2b2lkIEpTRnVuY3Rpb246OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKQEAgLTI3Nyw3ICsy
OTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIoRXhlY1N0YXRl
KiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBzbG90QmFzZQogICAgIGlmICghY2FsbGVyLmlzT2JqZWN0
KCkgfHwgIWFzT2JqZWN0KGNhbGxlciktPmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbGVyKTsKICAgICBKU0Z1bmN0aW9uKiBm
dW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2FsbGVyKTsKLSAgICBpZiAoZnVuY3Rpb24t
PmlzSG9zdEZ1bmN0aW9uKCkgfHwgIWZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RN
b2RlKCkpCisgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpIHx8ICFm
dW5jdGlvbi0+anNFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNhbGxlcik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkZ1bmN0aW9uLmNhbGxlciB1c2VkIHRvIHJl
dHJpZXZlIHN0cmljdCBjYWxsZXIiKSkpOwogfQpAQCAtMjk5LDcgKzMxNyw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTRnVuY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUg
c2xvdEJhc2UsIEVuY29kCiBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RGdW5j
dGlvbigpKQorICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQog
ICAgICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpIHsKQEAgLTM2MSw3ICszNzksNyBAQCBib29sIEpTRnVu
Y3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5Tgogdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFt
ZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYg
cHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7CiAgICAgSlNGdW5jdGlvbiog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsKLSAgICBpZiAoIXRoaXNP
YmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkgJiYgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVy
dGllcykpIHsKKyAgICBpZiAoIXRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkg
JiYgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpIHsKICAgICAgICAgLy8gTWFr
ZSBzdXJlIHByb3RvdHlwZSBoYXMgYmVlbiByZWlmaWVkLgogICAgICAgICBQcm9wZXJ0eVNsb3Qg
c2xvdCh0aGlzT2JqZWN0KTsKICAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0
T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5w
cm90b3R5cGUsIHNsb3QpOwpAQCAtMzc3LDcgKzM5NSw3IEBAIHZvaWQgSlNGdW5jdGlvbjo6Z2V0
T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywKIHZvaWQgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9u
Kj4oY2VsbCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkpIHsKKyAgICBp
ZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkgewogICAgICAgICBCYXNl
OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC00MjUsNyArNDQzLDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3AKIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9w
ZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CiAgICAg
SlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsKLSAg
ICBpZiAodGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICBpZiAodGhpc09iamVjdC0+
aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93
blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4
Y2VwdGlvbik7CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5wcm90b3R5cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
aAppbmRleCA3Y2QxNGI4YzJkODAwZjYxYmRjMTJlZGQyZGYwNGQzNWZhMDYxOWI2Li45OTVjOWQx
MWJkODk4Mzg2ZjdhMjBjNDE2MzRmYTdjYzliNzY5OGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC02OCw2ICs2OCw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uOwogICAgICAgICB9CiAgICAgICAgIAorICAg
ICAgICBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlQnVpbHRpbkZ1bmN0aW9uKFZNJiwgRnVuY3Rp
b25FeGVjdXRhYmxlKiwgSlNHbG9iYWxPYmplY3QqKTsKKyAgICAgICAgCiAgICAgICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBTdHJpbmcgbmFtZShFeGVjU3RhdGUqKTsKQEAgLTE0NSw2ICsxNDcsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2lu
dDsKICAgICAgICAgfQogCisgICAgICAgIGJvb2wgaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSBj
b25zdDsKKyAgICAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0OworCiAgICAgcHJv
dGVjdGVkOgogICAgICAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBPdmVy
cmlkZXNWaXNpdENoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTT2JqZWN0
OjpTdHJ1Y3R1cmVGbGFnczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3JJbmxpbmVzLmgKaW5kZXggMmRkYzI5ZjcxODk3YmI1MWQzOTBiMDZiMjVhNzM4MzM4NzRiYTBj
MS4uZWRkMzQ0OWNlNDdiMTczNWU4ZTVkYmIwNWYzMThlM2Q1NWYzYmU2MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25z
dHJ1Y3RvcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaWZuZGVmIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzX2gKICNk
ZWZpbmUgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXNfaAogCisjaW5j
bHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUg
IkpTQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0
cnVjdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IDZkYjg2Mjc0YzNiODc0
YWFhZGU1MTUxODk4MjY3MjZmYjEzNmMxNzMuLmYyNGVhNzMwM2RmOTY5ZGJkMmRjYTUyYzg2ZDEx
Yzc4YzAwZGI5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0yNyw2ICsyNyw3
IEBACiAjZGVmaW5lIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lc19oCiAKICNpbmNsdWRl
ICJBcnJheUJ1ZmZlclZpZXcuaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2lu
Y2x1ZGUgIkRlZmVyR0MuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlv
bkhlbHBlcnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmgK
aW5kZXggNDU5OTk3YTQ2NGI5MTE5NDc3YjFiZTg0ZTM2YzRlMjk2NmFjZWY4NS4uOGU1ZmY4Mjc5
MWU2ZmY4ZDRlYjljMzczNjkxZTQzM2ViN2QxNmFlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdQcm90b3R5cGVJbmxpbmVzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzX2gKICNkZWZpbmUgSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzX2gKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZp
ZXJzLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgi
CiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDJjMjc0YzFhN2Q0ODFjMDdkZjBkMmJlYjNi
MjkzMWEzOTA3YTVlNjYuLjA2ZTU0Yzg0ZTc3YjkwMzJiYWExZDJkZjQ3YTFjNzJlODBiN2RlYTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKQEAgLTM0Niw3ICszNDYsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVl
IHByb3RvdHlwZSkKIAogICAgIC8vIENvbnN0cnVjdG9ycwogCi0gICAgSlNDZWxsKiBvYmplY3RD
b25zdHJ1Y3RvciA9IE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIE9iamVjdENvbnN0cnVj
dG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkp
LCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CisgICAgT2JqZWN0Q29uc3RydWN0b3IqIG9iamVj
dENvbnN0cnVjdG9yID0gT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgT2JqZWN0Q29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQo
KSksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKKyAgICBtX29iamVjdENvbnN0cnVjdG9yLnNl
dCh2bSwgdGhpcywgb2JqZWN0Q29uc3RydWN0b3IpOwogICAgIEpTQ2VsbCogZnVuY3Rpb25Db25z
dHJ1Y3RvciA9IEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgRnVuY3Rpb25Db25zdHJ1
Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgp
KSwgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CiAgICAgSlNDZWxsKiBhcnJheUNvbnN0cnVj
dG9yID0gQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBBcnJheUNvbnN0cnVjdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2FycmF5
UHJvdG90eXBlLmdldCgpKTsKIApAQCAtNDMyLDcgKzQzMywxMCBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKICAgICBHbG9iYWxQcm9wZXJ0eUluZm8gc3Rh
dGljR2xvYmFsc1tdID0gewogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+TmFOLCBqc05hTigpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAg
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5JbmZpbml0eSwganNO
dW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCwganNVbmRlZmluZWQoKSwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5w
cm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLCBqc1VuZGVmaW5lZCgpLCBEb250RW51bSB8
IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5w
cm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkUHJpdmF0ZU5hbWUsIGpzVW5kZWZpbmVkKCks
IERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPk9iamVjdFByaXZhdGVOYW1lLCBvYmplY3RDb25zdHJ1
Y3RvciwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+VHlwZUVycm9yUHJpdmF0ZU5hbWUsIG1fdHlw
ZUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KQogICAgIH07CiAgICAgYWRkU3RhdGljR2xvYmFscyhzdGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlf
TEVOR1RIKHN0YXRpY0dsb2JhbHMpKTsKICAgICAKQEAgLTYwOCw2ICs2MTIsNyBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3ludGF4RXJyb3JDb25z
dHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdHlwZUVycm9yQ29u
c3RydWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX1VSSUVycm9yQ29u
c3RydWN0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX29iamVjdENvbnN0
cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcm9taXNlQ29uc3Ry
dWN0b3IpOwogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZXZhbEZ1bmN0aW9u
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmlu
ZGV4IGIwY2FkM2RjNTQ3MGY3YzdhMGU1NzBiZGNkMmRmZmE4OTVlMmFhMGMuLjNhNjE2YzZmMDVl
ZGYxZDI5NWFmODQ0MWFhNjY1MDBmYjkyYTRhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNjcsNiArNjcsNyBAQCBjbGFzcyBKU1N0
YWNrOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgTWljcm90YXNrOwogY2xh
c3MgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjsKK2NsYXNzIE9iamVjdENvbnN0cnVjdG9yOwogY2xh
c3MgUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwogY2xhc3MgUmVn
RXhwQ29uc3RydWN0b3I7CkBAIC0xNTgsNiArMTU5LDcgQEAgcHJvdGVjdGVkOgogICAgIFdyaXRl
QmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX3R5cGVFcnJvckNvbnN0cnVjdG9yOwog
ICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX1VSSUVycm9yQ29uc3Ry
dWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlzZUNvbnN0cnVjdG9yPiBtX3Byb21pc2VD
b25zdHJ1Y3RvcjsKKyAgICBXcml0ZUJhcnJpZXI8T2JqZWN0Q29uc3RydWN0b3I+IG1fb2JqZWN0
Q29uc3RydWN0b3I7CiAKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9ldmFsRnVuY3Rp
b247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fY2FsbEZ1bmN0aW9uOwpAQCAtMzMw
LDYgKzMzMiw3IEBAIHB1YmxpYzoKICAgICBSZWdFeHBDb25zdHJ1Y3RvciogcmVnRXhwQ29uc3Ry
dWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cENvbnN0cnVjdG9yLmdldCgpOyB9CiAKICAg
ICBFcnJvckNvbnN0cnVjdG9yKiBlcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9l
cnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CisgICAgT2JqZWN0Q29uc3RydWN0b3IqIG9iamVjdENv
bnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RDb25zdHJ1Y3Rvci5nZXQoKTsgfQog
ICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGV2YWxFcnJvckNvbnN0cnVjdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9ldmFsRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgIE5hdGl2ZUVycm9y
Q29uc3RydWN0b3IqIHJhbmdlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFu
Z2VFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CiAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvciog
cmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlRXJy
b3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQpAQCAtNTgxLDcgKzU4NCw3IEBAIGlubGluZSBib29sIEpT
R2xvYmFsT2JqZWN0OjpoYXNPd25Qcm9wZXJ0eUZvcldyaXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lCiAKIGlubGluZSBib29sIEpTR2xvYmFsT2JqZWN0OjpzeW1ib2xUYWJsZUhhc1By
b3BlcnR5KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgU3ltYm9sVGFibGVFbnRy
eSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5l
R2V0KHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgcmV0dXJuICFlbnRyeS5pc051bGwoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IDJiNjdh
MWQ5ZWVkODRlOTk1NmY4YmI5NjgzODRjODRjYWVhNTNjZmYuLjJlYTJjMjRlNmVhYjRjZDBkN2Zm
ZWQ2NjVlZjRhZTQxYWYwNzUwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGdldENsYXNz
UHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENsYXNzSW5mbyogY2xhc3MKICAg
ICAgICAgaW50IGhhc2hTaXplTWFzayA9IHRhYmxlLT5jb21wYWN0U2l6ZSAtIDE7CiAgICAgICAg
IGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSB0YWJsZS0+dGFibGU7CiAgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDw9IGhhc2hTaXplTWFzazsgKytpLCArK2VudHJ5KSB7Ci0gICAgICAgICAgICBp
ZiAoZW50cnktPmtleSgpICYmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwg
KG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpICYmICEoKGVudHJ5LT5hdHRyaWJ1
dGVzKCkgJiBGdW5jdGlvbikgJiYgZGlkUmVpZnkpKQorICAgICAgICAgICAgaWYgKGVudHJ5LT5r
ZXkoKSAmJiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IChtb2RlID09IElu
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpKSAmJiAhKChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVp
bHRpbk9yRnVuY3Rpb24pICYmIGRpZFJlaWZ5KSkKICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5h
bWVzLmFkZChlbnRyeS0+a2V5KCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTYxOCw3ICsxNjE4
LDcgQEAgdm9pZCBKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUoRXhlY1N0
YXRlKiBleGVjKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIFByb3BlcnR5U2xvdCBz
bG90KHRoaXMpOwogICAgICAgICBmb3IgKEhhc2hUYWJsZTo6Q29uc3RJdGVyYXRvciBpdGVyID0g
aGFzaFRhYmxlLT5iZWdpbih2bSk7IGl0ZXIgIT0gaGFzaFRhYmxlLT5lbmQodm0pOyArK2l0ZXIp
IHsKLSAgICAgICAgICAgIGlmIChpdGVyLT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikKKyAgICAg
ICAgICAgIGlmIChpdGVyLT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikKICAgICAg
ICAgICAgICAgICBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChnbG9iYWxPYmplY3QoKS0+Z2xvYmFs
RXhlYygpLCAqaXRlciwgdGhpcywgSWRlbnRpZmllcigmdm0sIGl0ZXItPmtleSgpKSwgc2xvdCk7
CiAgICAgICAgIH0KICAgICB9CkBAIC0yMjM2LDYgKzIyMzYsMTYgQEAgdm9pZCBKU09iamVjdDo6
cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb24KICAgICBwdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgZnVuY3Rpb24sIGF0dHJp
YnV0ZXMpOwogfQogCit2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RCdWlsdGluRnVuY3Rpb24oVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIHBy
b3BlcnR5TmFtZSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpCit7CisgICAgU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5w
dWJsaWNOYW1lKCk7CisgICAgaWYgKCFuYW1lKQorICAgICAgICBuYW1lID0gdm0ucHJvcGVydHlO
YW1lcy0+YW5vbnltb3VzLmltcGwoKTsKKyAgICBBU1NFUlQobmFtZSk7CisgICAgSlNGdW5jdGlv
biogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHN0YXRp
Y19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIGdsb2JhbE9i
amVjdCk7CisgICAgcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1
dGVzKTsKK30KKwogdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFBy
b3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZl
RnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMpCiB7CiAgICAgU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNO
YW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCAwMmIx
MzdiMzUwYzJmYTgzMjViZDNiOTY0NzExMmFiZTg3NmYzODNmLi5kZGU1OTdlZmZhZWMwZjFiOGQ0
NGMyOTExOTUwMzAxZjA2MDA3ZTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJCdXR0ZXJmbHkuaCIKICNpbmNs
dWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKLSNpbmNsdWRlICJDb21t
b25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkNvcHlXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRl
ICJEZWZlckdDLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgpAQCAtNTgxLDYgKzU4MCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHB1dERpcmVjdFVuZGVmaW5lZChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpIHsg
bG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KS0+c2V0VW5kZWZpbmVkKCk7IH0KIAogICAgIHZvaWQg
cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3Bl
cnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50cmlu
c2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICB2b2lkIHB1dERpcmVjdEJ1aWx0aW5GdW5j
dGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgRnVuY3Rpb25F
eGVjdXRhYmxlKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgdm9pZCBwdXREaXJlY3ROYXRp
dmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQ
cm9wZXJ0eU5hbWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24sIElu
dHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1
Y3Rvci5jcHAKaW5kZXggNDAyNjE5NjMzZmEwNmZkMjU0YjNmMmE3YThjYzcxZTgwN2FhZjkxMS4u
MTdkMmFiNjVhODhmZmIxM2ZhOWE2YzhmNTgzY2E4NDRhZjgzMjI0MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcApA
QCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkpTUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVk
ZSAiSlNQcm9taXNlRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlUHJvdG90eXBlLmgi
CisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5j
bHVkZSAiTnVtYmVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmNwcAppbmRleCA2OGE4YmQ4N2QzOGFkYmJiOWRkMmFjOWVjNGI0OWQ1ZWY0NTQ5ZDU2
Li4yMzdjNDJiYjBkYTBmMTY2NzZlYjExYWRlODE4MGE3YjA2ZDk4ZWI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcApAQCAtMjksNyArMjksOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpT
UHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKIAorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aAppbmRleCBmNDM2MmZmMzU0ZWU2YTUwMjIxYmI3MzFkMWEyNjExZTZkZDYxYmMwLi5kMDczNzE5
ZGUxNjBkMmYyOTIxMTBhNTk2YTEwNWUyZmEyMTE1ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCkBAIC0zMSw3
ICszMSw2IEBACiAKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgi
Ci0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5Lmgi
CiAjaW5jbHVkZSA8bWVtb3J5PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmcuaAppbmRleCAyYjFjZGRkYzU4NDFkNjBkMTU3YTJlNjFmNzAyYjBlZTVmYTFkNjc2Li5lMzkz
NDE2MGFlYTkyNmVmMTU5MzJmODc5MGUyNGM1MmFmMDJkMzVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKQEAgLTI0LDcgKzI0LDYgQEAKICNkZWZpbmUgSlNTdHJp
bmdfaAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmll
cnMuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlEZXNjcmlw
dG9yLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCkBAIC00NzIsMzMgKzQ3MSw2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIGlubGluZSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBqc05vbnRyaXZpYWxTdHJp
bmcoJmV4ZWMtPnZtKCksIHMpOyB9CiAgICAgaW5saW5lIEpTU3RyaW5nKiBqc093bmVkU3RyaW5n
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBqc093bmVkU3RyaW5n
KCZleGVjLT52bSgpLCBzKTsgfQogCi0gICAgQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpn
ZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi0gICAgewotICAgICAgICBpZiAocHJvcGVydHlO
YW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKLSAgICAgICAgICAgIHNsb3Qu
c2V0VmFsdWUodGhpcywgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGpzTnVtYmVy
KG1fbGVuZ3RoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOwotICAgICAgICBpZiAoaSA8
IG1fbGVuZ3RoKSB7Ci0gICAgICAgICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFu
SW5kZXgpOyAvLyBObyBuZWVkIGZvciBhbiBleHBsaWNpdCBjaGVjaywgdGhlIGFib3ZlIHRlc3Qg
d291bGQgYWx3YXlzIGZhaWwhCi0gICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnRE
ZWxldGUgfCBSZWFkT25seSwgZ2V0SW5kZXgoZXhlYywgaSkpOwotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgICAg
ICAgICAgCi0gICAgQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0
eVNsb3QoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKLSAgICB7Ci0gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPCBtX2xlbmd0aCkgewot
ICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGdl
dEluZGV4KGV4ZWMsIHByb3BlcnR5TmFtZSkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCiAgICAgaW5saW5lIGJv
b2wgaXNKU1N0cmluZyhKU1ZhbHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxsKCkgJiYgdi5hc0NlbGwo
KS0+Y2xhc3NJbmZvKCkgPT0gSlNTdHJpbmc6OmluZm8oKTsgfQogCiAgICAgLy8gLS0tIEpTVmFs
dWUgaW5saW5lcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC01MjgsMzIgKzUwMCw2
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gdG9XVEZTdHJpbmdTbG93Q2FzZShl
eGVjKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIFN0cmluZyBpbmxpbmVKU1ZhbHVlTm90
U3RyaW5ndG9TdHJpbmcoY29uc3QgSlNWYWx1ZSYgdmFsdWUsIEV4ZWNTdGF0ZSogZXhlYykKLSAg
ICB7Ci0gICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc0lu
dDMyKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0ubnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVlLmFz
SW50MzIoKSk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc0RvdWJsZSgpKQotICAgICAgICAgICAgcmV0
dXJuIHZtLm51bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZS5hc0RvdWJsZSgpKTsKLSAgICAgICAgaWYg
KHZhbHVlLmlzVHJ1ZSgpKQotICAgICAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPnRy
dWVLZXl3b3JkLnN0cmluZygpOwotICAgICAgICBpZiAodmFsdWUuaXNGYWxzZSgpKQotICAgICAg
ICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPmZhbHNlS2V5d29yZC5zdHJpbmcoKTsKLSAg
ICAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5
TmFtZXMtPm51bGxLZXl3b3JkLnN0cmluZygpOwotICAgICAgICBpZiAodmFsdWUuaXNVbmRlZmlu
ZWQoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3
b3JkLnN0cmluZygpOwotICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgU3RyaW5nIEpTVmFsdWU6OnRvV1RG
U3RyaW5nSW5saW5lKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChp
c1N0cmluZygpKQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTU3RyaW5nKj4oYXND
ZWxsKCkpLT52YWx1ZShleGVjKTsKLQotICAgICAgICByZXR1cm4gaW5saW5lSlNWYWx1ZU5vdFN0
cmluZ3RvU3RyaW5nKCp0aGlzLCBleGVjKTsKLSAgICB9Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwog
CiAjZW5kaWYgLy8gSlNTdHJpbmdfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZ0lubGluZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzhjMDVmYzgwZDg4ZTg1MzdjOWQyYTVl
YWI5ZmYwYmE5YjYwYTc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNTdHJpbmdJ
bmxpbmVzX2gKKyNkZWZpbmUgSlNTdHJpbmdJbmxpbmVzX2gKKworI2luY2x1ZGUgIkNvbW1vbklk
ZW50aWZpZXJzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJK
U1N0cmluZy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworQUxXQVlTX0lOTElORSBib29sIEpTU3Ry
aW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CisgICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpcywgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGpzTnVtYmVyKG1fbGVu
Z3RoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBp
ID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaSA8IG1fbGVuZ3RoKSB7CisgICAg
ICAgIEFTU0VSVChpICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCk7IC8vIE5vIG5lZWQgZm9y
IGFuIGV4cGxpY2l0IGNoZWNrLCB0aGUgYWJvdmUgdGVzdCB3b3VsZCBhbHdheXMgZmFpbCEKKyAg
ICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4
KGV4ZWMsIGkpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHJldHVy
biBmYWxzZTsKK30KKworQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9w
ZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKK3sKKyAgICBpZiAocHJvcGVydHlOYW1lIDwgbV9sZW5ndGgpIHsKKyAgICAg
ICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4KGV4
ZWMsIHByb3BlcnR5TmFtZSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitBTFdBWVNfSU5MSU5FIFN0cmluZyBpbmxpbmVKU1ZhbHVl
Tm90U3RyaW5ndG9TdHJpbmcoY29uc3QgSlNWYWx1ZSYgdmFsdWUsIEV4ZWNTdGF0ZSogZXhlYykK
K3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpCisg
ICAgICAgIHJldHVybiB2bS5udW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNJbnQzMigpKTsKKyAg
ICBpZiAodmFsdWUuaXNEb3VibGUoKSkKKyAgICAgICAgcmV0dXJuIHZtLm51bWVyaWNTdHJpbmdz
LmFkZCh2YWx1ZS5hc0RvdWJsZSgpKTsKKyAgICBpZiAodmFsdWUuaXNUcnVlKCkpCisgICAgICAg
IHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT50cnVlS2V5d29yZC5zdHJpbmcoKTsKKyAgICBpZiAo
dmFsdWUuaXNGYWxzZSgpKQorICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+ZmFsc2VL
ZXl3b3JkLnN0cmluZygpOworICAgIGlmICh2YWx1ZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJu
IHZtLnByb3BlcnR5TmFtZXMtPm51bGxLZXl3b3JkLnN0cmluZygpOworICAgIGlmICh2YWx1ZS5p
c1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVk
S2V5d29yZC5zdHJpbmcoKTsKKyAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOworfQorICAgIAorQUxXQVlTX0lOTElORSBTdHJpbmcgSlNWYWx1ZTo6dG9XVEZTdHJp
bmdJbmxpbmUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIGlmIChpc1N0cmluZygpKQor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNTdHJpbmcqPihhc0NlbGwoKSktPnZhbHVlKGV4
ZWMpOworICAgIAorICAgIHJldHVybiBpbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcoKnRo
aXMsIGV4ZWMpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAppbmRleCAyYWMyNTI0YzVkZmRh
M2QxMjI0OWQ3NzkwYWRjMzEyOWUzYzBlODcxLi5mYmM4Yjg5NWVhZTZhZjc4ODgzOWJlYjVlODNk
N2I2Yjk3OTI4ZmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N5bWJvbFRhYmxlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcApAQCAtNjQsNiArNjQsOCBAQCB2b2lkIEpTU3ltYm9s
VGFibGVPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdAogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcih0aGlzT2JqZWN0
LT5zeW1ib2xUYWJsZSgpLT5tX2xvY2spOwogICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVy
YXRvciBlbmQgPSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5lbmQobG9ja2VyKTsKICAgICAg
ICAgZm9yIChTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdCA9IHRoaXNPYmplY3QtPnN5bWJv
bFRhYmxlKCktPmJlZ2luKGxvY2tlcik7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAg
aWYgKGl0LT5rZXktPmlzRW1wdHlVbmlxdWUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIGlmICghKGl0LT52YWx1ZS5nZXRBdHRyaWJ1dGVzKCkgJiBEb250RW51bSkg
fHwgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpCiAgICAgICAgICAgICAgICAg
cHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcihleGVjLCBpdC0+a2V5LmdldCgpKSk7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9s
VGFibGVPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFi
bGVPYmplY3QuaAppbmRleCBiNWIyMGE4NDViNmFiNjQ0MjRiMzdlMzFiMjc3NGVmOTA1MzUzZjdm
Li5kMDNiMjQ1MTFjMmRlMTk1OWZiNWY1NmQ2NDljNjRkMGVmZTA2ODU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCkBAIC03
Miw3ICs3Miw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogewogICAgIFN5bWJvbFRh
YmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgQ29uY3VycmVu
dEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICBTeW1ib2xUYWJsZTo6
TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFt
ZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBz
eW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoaXRl
ciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1ZTsKQEAgLTg3LDcgKzg3
LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiB7CiAgICAgU3ltYm9sVGFibGUmIHN5
bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9sVGFibGUoKTsKICAgICBDb25jdXJyZW50SklUTG9j
a2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2spOwotICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0
ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1Ymxp
Y05hbWUoKSk7CisgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRh
YmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChpdGVyID09IHN5
bWJvbFRhYmxlLmVuZChsb2NrZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgU3ltYm9s
VGFibGVFbnRyeTo6RmFzdCBlbnRyeSA9IGl0ZXItPnZhbHVlOwpAQCAtMTA0LDcgKzEwNCw3IEBA
IGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogewogICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xU
YWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgQ29uY3VycmVudEpJVExvY2tlciBs
b2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRv
ciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1l
KCkpOworICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5m
aW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoaXRlciA9PSBzeW1ib2xU
YWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFN5bWJvbFRhYmxl
RW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1ZTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBpbmxp
bmUgYm9vbCBzeW1ib2xUYWJsZVB1dCgKICAgICB7CiAgICAgICAgIFN5bWJvbFRhYmxlJiBzeW1i
b2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgICAgIEdDU2FmZUNvbmN1cnJl
bnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jaywgZXhlYy0+dm0oKS5oZWFwKTsK
LSAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZp
bmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICAgICAgU3ltYm9sVGFi
bGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0
eU5hbWUudWlkKCkpOwogICAgICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2Vy
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYm9vbCB3YXNGYXQ7CkBAIC0x
NTksNyArMTU5LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcygK
ICAgICB7CiAgICAgICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJv
bFRhYmxlKCk7CiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxl
Lm1fbG9jayk7Ci0gICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1i
b2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgICAg
IFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tl
ciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUu
ZW5kKGxvY2tlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIFN5bWJvbFRh
YmxlRW50cnkmIGVudHJ5ID0gaXRlci0+dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTG9va3VwLmNwcAppbmRleCBhODA2ZGQwNTJhMGNiZWU0Y2FjMmNhYTZlMDhjNjcxNjAwNWMy
NzBjLi5hOTc2NTIwMWI5ZjUxODY0MTQyM2RkZTBmZTBlMmU1MWE4Y2U3M2JjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBI
YXNoVGFibGU6OmRlbGV0ZVRhYmxlKCkgY29uc3QKIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNs
b3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCogdGhp
c09iaiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewog
ICAgIEFTU0VSVCh0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSk7Ci0gICAgQVNTRVJUKGVudHJ5LT5h
dHRyaWJ1dGVzKCkgJiBGdW5jdGlvbik7CisgICAgQVNTRVJUKGVudHJ5LT5hdHRyaWJ1dGVzKCkg
JiBCdWlsdGluT3JGdW5jdGlvbik7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICB1bnNp
Z25lZCBhdHRyaWJ1dGVzOwogICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHRoaXNPYmotPmdl
dERpcmVjdE9mZnNldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKQEAgLTc5LDkgKzc5
LDEzIEBAIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCoKICAgICAgICAgaWYgKHRoaXNPYmotPnN0YXRp
Y0Z1bmN0aW9uc1JlaWZpZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAg
ICAgICAgdGhpc09iai0+cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oCi0gICAgICAgICAgICB2bSwg
dGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZW50cnktPmZ1bmN0aW9uTGVu
Z3RoKCksCi0gICAgICAgICAgICBlbnRyeS0+ZnVuY3Rpb24oKSwgZW50cnktPmludHJpbnNpYygp
LCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkg
JiBCdWlsdGluKQorICAgICAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9u
KHZtLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBlbnRyeS0+YnVpbHRp
bkdlbmVyYXRvcigpKHZtKSwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oCisgICAgICAgICAg
ICAgICAgdm0sIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5m
dW5jdGlvbkxlbmd0aCgpLAorICAgICAgICAgICAgICAgIGVudHJ5LT5mdW5jdGlvbigpLCBlbnRy
eS0+aW50cmluc2ljKCksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAgICAgICB9CiAgICAgICAg
IG9mZnNldCA9IHRoaXNPYmotPmdldERpcmVjdE9mZnNldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRy
aWJ1dGVzKTsKICAgICAgICAgQVNTRVJUKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAppbmRleCBiZGU4M2Q0YTZmYzM1NTc3
ODUwZTMxZTg4YmMzOWZkMDVmN2JjZTUyLi5kYmEzODllOWUyNDNkZDBlY2IyYmE5OGYzOTRkNDA3
OWY5ZGVhOTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29r
dXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaApAQCAtNDMs
NiArNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAvLyBpZS4gdHlwZWRlZiBKU1ZhbHVlICgq
R2V0RnVuY3Rpb24pKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBiYXNlT2JqZWN0KQogICAgIHR5cGVk
ZWYgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgR2V0RnVuY3Rpb247CiAgICAgdHlwZWRlZiBQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYyBQdXRGdW5jdGlvbjsKKyAgICB0eXBlZGVmIEZ1
bmN0aW9uRXhlY3V0YWJsZSogKCpCdWlsdGluR2VuZXJhdG9yKShWTSYpOwogCiAgICAgY2xhc3Mg
SGFzaEVudHJ5IHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC02OCwxMSAr
NjksMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbV9pbnRyaW5zaWM7
CiAgICAgICAgIH0KIAorICAgICAgICBCdWlsdGluR2VuZXJhdG9yIGJ1aWx0aW5HZW5lcmF0b3Io
KSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBCdWlsdGluKTsgcmV0dXJuIG1fdS5idWls
dGluR2VuZXJhdG9yLmdlbmVyYXRvclZhbHVlOyB9CiAgICAgICAgIE5hdGl2ZUZ1bmN0aW9uIGZ1
bmN0aW9uKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pOyByZXR1cm4g
bV91LmZ1bmN0aW9uLmZ1bmN0aW9uVmFsdWU7IH0KICAgICAgICAgdW5zaWduZWQgY2hhciBmdW5j
dGlvbkxlbmd0aCgpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKTsgcmV0
dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KG1fdS5mdW5jdGlvbi5sZW5ndGgpOyB9CiAK
LSAgICAgICAgR2V0RnVuY3Rpb24gcHJvcGVydHlHZXR0ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1f
YXR0cmlidXRlcyAmIEZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVydHkuZ2V0OyB9Ci0gICAg
ICAgIFB1dEZ1bmN0aW9uIHByb3BlcnR5UHV0dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0dHJp
YnV0ZXMgJiBGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5LnB1dDsgfQorICAgICAgICBH
ZXRGdW5jdGlvbiBwcm9wZXJ0eUdldHRlcigpIGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1dGVz
ICYgQnVpbHRpbk9yRnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0eS5nZXQ7IH0KKyAgICAg
ICAgUHV0RnVuY3Rpb24gcHJvcGVydHlQdXR0ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1fYXR0cmli
dXRlcyAmIEJ1aWx0aW5PckZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVydHkucHV0OyB9CiAK
ICAgICAgICAgaW50cHRyX3QgbGV4ZXJWYWx1ZSgpIGNvbnN0IHsgQVNTRVJUKCFtX2F0dHJpYnV0
ZXMpOyByZXR1cm4gbV91LmxleGVyLnZhbHVlOyB9CiAKQEAgLTk0LDYgKzk2LDEwIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAgICAgICAgIGludHB0cl90IGxlbmd0aDsgLy8gbnVtYmVyIG9m
IGFyZ3VtZW50cyBmb3IgZnVuY3Rpb24KICAgICAgICAgICAgIH0gZnVuY3Rpb247CiAgICAgICAg
ICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgICAgIEJ1aWx0aW5HZW5lcmF0b3IgZ2VuZXJhdG9y
VmFsdWU7CisgICAgICAgICAgICAgICAgaW50cHRyX3QgdW51c2VkOworICAgICAgICAgICAgfSBi
dWlsdGluR2VuZXJhdG9yOworICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICBH
ZXRGdW5jdGlvbiBnZXQ7CiAgICAgICAgICAgICAgICAgUHV0RnVuY3Rpb24gcHV0OwogICAgICAg
ICAgICAgfSBwcm9wZXJ0eTsKQEAgLTIwOSw3ICsyMTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBwcml2YXRlOgogICAgICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IEhhc2hFbnRyeSogZW50cnko
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAg
U3RyaW5nSW1wbCogaW1wbCA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CisgICAgICAgICAg
ICBTdHJpbmdJbXBsKiBpbXBsID0gcHJvcGVydHlOYW1lLnVpZCgpOwogICAgICAgICAgICAgaWYg
KCFpbXBsKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAKQEAgLTI0OSw3ICsy
NTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaWYgKCFlbnRyeSkgLy8gbm90IGZvdW5k
LCBmb3J3YXJkIHRvIHBhcmVudAogICAgICAgICAgICAgcmV0dXJuIFBhcmVudEltcDo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKLSAgICAg
ICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikKKyAgICAgICAgaWYgKGVudHJ5
LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikKICAgICAgICAgICAgIHJldHVybiBz
ZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChleGVjLCBlbnRyeSwgdGhpc09iaiwgcHJvcGVydHlOYW1l
LCBzbG90KTsKIAogICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqLCBlbnRy
eS0+YXR0cmlidXRlcygpLCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSk7CkBAIC0yODYsNyArMjky
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGlmICghZW50cnkpIC8vIG5vdCBmb3VuZCwg
Zm9yd2FyZCB0byBwYXJlbnQKICAgICAgICAgICAgIHJldHVybiBQYXJlbnRJbXA6OmdldE93blBy
b3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCi0gICAgICAg
IEFTU0VSVCghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikpOworICAgICAgICBBU1NF
UlQoIShlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pKTsKIAogICAgICAg
ICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqLCBlbnRyeS0+YXR0cmlidXRlcygpLCBl
bnRyeS0+cHJvcGVydHlHZXR0ZXIoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjk1LDcg
KzMwMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGlubGluZSB2b2lkIHB1dEVudHJ5KEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIGJhc2UsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xv
dCkKICAgICB7CiAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBmdW5jdGlvbiBwdXQgaXQgYXMgYW4g
b3ZlcnJpZGUgcHJvcGVydHkuCi0gICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVu
Y3Rpb24pIHsKKyAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5j
dGlvbikgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNEeW5hbWlj
Q2FzdDxKU09iamVjdCo+KHNsb3QudGhpc1ZhbHVlKCkpKQogICAgICAgICAgICAgICAgIHRoaXNP
YmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKICAgICAg
ICAgfSBlbHNlIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBSZWFkT25seSkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1
Y3Rvci5jcHAKaW5kZXggZDVlNzI4YzJjZDEwMjBhNDdlNGFkY2Q2NDljZDFmZmZhNWNkNmE4My4u
ZGNhMmZkOGQxZjZhYzIzYjhmZjgxN2NiYjE4ZmFhZTdiY2Q1OTcwMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5j
cHAKQEAgLTM4LDYgKzM4LDIwIEBAIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6Ok5hdGl2ZUVycm9y
Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAordm9pZCBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBT
dHJpbmcmIG5hbWUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIG5hbWUpOworICAg
IEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICAKKyAgICBOYXRpdmVFcnJvclByb3RvdHlw
ZSogcHJvdG90eXBlID0gTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5hbWUsIHRoaXMpOworICAgIAorICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5IHwgRG9udEVudW0pOyAvLyBFQ01BIDE1LjExLjcuNQorICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBS
ZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBtX2Vycm9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywg
RXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSkpOworICAgIEFTU0VSVChtX2Vycm9yU3RydWN0dXJlKTsKKyAgICBBU1NFUlQobV9lcnJvclN0
cnVjdHVyZS0+aXNPYmplY3QoKSk7Cit9CisKIHZvaWQgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAg
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8TmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvcio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCmluZGV4IDc0MGQzZjkzMzI5MmZkMmFjY2I0
Yjk5MDM0NDMxMmI5MzE5YWUxMTAuLjQzOGEzYWZiOWJiMGY2NDEyYzk3OTMyMjMwYzg4NzEwOTYx
ZjU0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVy
cm9yQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRp
dmVFcnJvckNvbnN0cnVjdG9yLmgKQEAgLTUxLDE5ICs1MSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlKCkgeyByZXR1cm4gbV9lcnJvclN0cnVj
dHVyZS5nZXQoKTsgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBwcm90
b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkKLSAgICAgICAgewotICAgICAgICAg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIG5hbWUpOwotICAgICAgICAgICAgQVNTRVJUKGlu
aGVyaXRzKGluZm8oKSkpOwotCi0gICAgICAgICAgICBOYXRpdmVFcnJvclByb3RvdHlwZSogcHJv
dG90eXBlID0gTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGVTdHJ1Y3R1cmUsIG5hbWUsIHRoaXMpOwotCi0gICAgICAgICAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIERvbnREZWxldGUgfCBS
ZWFkT25seSB8IERvbnRFbnVtKTsgLy8gRUNNQSAxNS4xMS43LjUKLSAgICAgICAgICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxl
dGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKLSAgICAgICAgICAgIG1fZXJyb3JTdHJ1Y3R1cmUu
c2V0KHZtLCB0aGlzLCBFcnJvckluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlKSk7Ci0gICAgICAgICAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZSk7
Ci0gICAgICAgICAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZS0+aXNPYmplY3QoKSk7Ci0gICAg
ICAgIH0KKyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJl
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNs
b3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCmluZGV4
IGQ5MzhmYTMxNjQ1YWYyNmI3NTg1MTRkYjZiMjQ3OGYxODNlOWVlZTEuLmNmZTljNGQzMmJhNzY4
Yzc0ZTRmZmJiMTkxMzUyNzlkZWJmMTE3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5U2xvdC5oCkBAIC00Miw2ICs0Miw4IEBAIGVudW0gQXR0cmlidXRlIHsK
ICAgICBGdW5jdGlvbiAgICAgPSAxIDw8IDQsICAvLyBwcm9wZXJ0eSBpcyBhIGZ1bmN0aW9uIC0g
b25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCiAgICAgQWNjZXNzb3IgICAgID0gMSA8PCA1
LCAgLy8gcHJvcGVydHkgaXMgYSBnZXR0ZXIvc2V0dGVyCiAgICAgQ3VzdG9tQWNjZXNzb3IgPSAx
IDw8IDYsCisgICAgQnVpbHRpbiAgICAgICAgID0gMSA8PCA3LCAvLyBwcm9wZXJ0eSBpcyBhIGJ1
aWx0aW4gZnVuY3Rpb24gLSBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKKyAgICBCdWls
dGluT3JGdW5jdGlvbiA9IEJ1aWx0aW4gfCBGdW5jdGlvbiwgLy8gaGVscGVyIG9ubHkgdXNlZCBi
eSBzdGF0aWMgaGFzaHRhYmxlcwogfTsKIAogY2xhc3MgUHJvcGVydHlTbG90IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAppbmRl
eCBiYzUxNmIwNmQ2NjUxZjBlNjgyYTIwMTdiZGY4YjAzYmFiZWQ2ZWEyLi4yYzI0MzRiODdkMDRm
NzQ5Y2IxMmU2MDJhYjU0Nzg0OTQ2YTkxZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAj
aW5jbHVkZSAiUmVnRXhwQ29uc3RydWN0b3IuaCIKIAogI2luY2x1ZGUgIkVycm9yLmgiCisjaW5j
bHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1
ZGUgIlJlZ0V4cE1hdGNoZXNBcnJheS5oIgogI2luY2x1ZGUgIlJlZ0V4cFByb3RvdHlwZS5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAK
aW5kZXggODlkN2FjMWI4Y2JmMWRiMGUxMjZmMWZjNzk2ZGZkNWZjODRiMmU1OS4uOWRkYTBiYThk
ZTE0MTJlYWY0ZDI5MWRjZjBjNmIzOTY1N2ZiNjc3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAj
aW5jbHVkZSAiQXJyYXlQcm90b3R5cGUuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUg
IkpTQXJyYXkuaCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNPYmplY3Qu
aCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCmluZGV4IGIyMDM4ODhkM2MxNmNkYTNjMDAzNTA2MjA4
YWUwODY5NWRjNWRhYWEuLmQwMjY2YTU5ZWYzZjU1YWEzNjk0ZjVmNzQxOGNmNzhlMGFlMGQ4YjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5j
cHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU1NldC5oIgorI2luY2x1ZGUgIkpTU3Ry
aW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk1hcERhdGEuaCIKICNpbmNsdWRlICJTZXRQcm90b3R5
cGUuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5j
cHAKaW5kZXggNDQwYTYwOTQyMTkzMzgwMzFlNTkyN2FmNDZiMjg5ZGJjZmI1YTcyOC4uODBlN2Vh
YThjNDkxY2I2ZDU0YTgzMjRjZTY0N2E2Y2RiN2U4ODc4MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCkBAIC0yMiw3ICsyMiw5IEBACiAjaW5j
bHVkZSAiU3RyaW5nT2JqZWN0LmgiCiAKICNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpT
Q0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRl
ICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAi
UHJvcGVydHlOYW1lQXJyYXkuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5jcHAKaW5kZXggMDQyOTFmN2U4ZGQyNGU4YWIzM2Q3NWFmMWRhNDU2OGYyYmM5OWU2
OC4uMWVjYWI4NWMwYmRiMjg2OTg5NDU3N2E3NDEyNTRlMzY0NDE0OWQ4OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0yNywxMiArMjcsMTggQEAK
ICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1
ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRHVtcENvbnRleHQuaCIKKyNpbmNs
dWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiTG9va3VwLmgiCisjaW5jbHVkZSAiUHJvcGVydHlNYXBIYXNoVGFibGUuaCIKICNp
bmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5l
cy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5s
aW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oIgogI2luY2x1ZGUg
PHd0Zi9Db21tYVByaW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVy
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNTJjY2Y0MjNhMTA0M2Ux
MDc5ZjJkOGIxODk0MjE5ODkwZTcxZjJiYy4uOTFhZDU1N2UyODliNDczNzA3YjgzOWY2Y2U3MGNh
MzQ0MTg2YTVmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMzIsNiAr
MzIsNyBAQAogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKICNpbmNsdWRlICJBcml0eUNoZWNrRmFpbFJl
dHVyblRodW5rcy5oIgogI2luY2x1ZGUgIkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5o
IgorI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZUlu
bGluZXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2RlQ2FjaGUuaCIK
QEAgLTU1LDcgKzU2LDEwIEBACiAjaW5jbHVkZSAiSlNBUElWYWx1ZVdyYXBwZXIuaCIKICNpbmNs
dWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlND
SlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRl
ICJKU05hbWVTY29wZS5oIgpAQCAtNjgsMTMgKzcyLDE2IEBACiAjaW5jbHVkZSAiTG9va3VwLmgi
CiAjaW5jbHVkZSAiTWFwRGF0YS5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCisjaW5jbHVkZSAiUGFy
c2VyLmgiCiAjaW5jbHVkZSAiUGFyc2VyQXJlbmEuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eU1hcEhh
c2hUYWJsZS5oIgogI2luY2x1ZGUgIlJlZ0V4cENhY2hlLmgiCiAjaW5jbHVkZSAiUmVnRXhwT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJTb3VyY2VQcm92aWRlckNhY2hlLmgiCiAjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24u
aCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5l
cy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiV2Vha01hcERh
dGEuaCIKICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CkBAIC0yMjYsNiArMjMzLDcgQEAgVk06
OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9pbkRlZmluZU93
blByb3BlcnR5KGZhbHNlKQogICAgICwgbV9jb2RlQ2FjaGUoQ29kZUNhY2hlOjpjcmVhdGUoKSkK
ICAgICAsIG1fZW5hYmxlZFByb2ZpbGVyKG51bGxwdHIpCisgICAgLCBtX2J1aWx0aW5FeGVjdXRh
YmxlcyhCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgaW50ZXJwcmV0
ZXIgPSBuZXcgSW50ZXJwcmV0ZXIoKnRoaXMpOwogICAgIFN0YWNrQm91bmRzIHN0YWNrID0gd3Rm
VGhyZWFkRGF0YSgpLnN0YWNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA1
YTg0MTA1ZWFmYjdhYmJhNWZhNDMxZWVlZGQ1NWQ3YTg5ZjU1Y2UyLi42OTU4YWMzOTNiMWFlZmMw
YmVmYmY2ZTRlYjhiNjgyNWNmN2M5YTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
QEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJQcml2YXRlTmFtZS5oIgogI2luY2x1ZGUgIlBy
b3RvdHlwZU1hcC5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgorI2luY2x1ZGUgIlNvdXJj
ZUNvZGUuaCIKICNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMu
aCIKICNpbmNsdWRlICJUeXBlZEFycmF5Q29udHJvbGxlci5oIgpAQCAtNjksNiArNzAsNyBAQAog
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcml0eUNoZWNrRmFpbFJldHVyblRodW5rczsK
KyAgICBjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXM7CiAgICAgY2xhc3MgQ29kZUJsb2NrOwogICAg
IGNsYXNzIENvZGVDYWNoZTsKICAgICBjbGFzcyBDb21tb25JZGVudGlmaWVyczsKQEAgLTQ5Nyw2
ICs0OTksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCByZWdpc3RlcldhdGNocG9p
bnRGb3JJbXB1cmVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyJiwgV2F0Y2hwb2ludCopOwogICAg
ICAgICAvLyBGSVhNRTogVXNlIEF0b21pY1N0cmluZyBvbmNlIGl0IGdvdCBtZXJnZWQgd2l0aCBJ
ZGVudGlmaWVyLgogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFkZEltcHVyZVByb3Bl
cnR5KGNvbnN0IFN0cmluZyYpOworICAgICAgICAKKyAgICAgICAgQnVpbHRpbkV4ZWN1dGFibGVz
KiBidWlsdGluRXhlY3V0YWJsZXMoKSB7IHJldHVybiBtX2J1aWx0aW5FeGVjdXRhYmxlcy5nZXQo
KTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKQEAgLTUzNywxMCArNTQxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpT
VmFsdWUgbV9leGNlcHRpb247CiAgICAgICAgIGJvb2wgbV9pbkRlZmluZU93blByb3BlcnR5Owog
ICAgICAgICBPd25QdHI8Q29kZUNhY2hlPiBtX2NvZGVDYWNoZTsKLSAgICAgICAgUmVmQ291bnRl
ZEFycmF5PFN0YWNrRnJhbWU+IG1fZXhjZXB0aW9uU3RhY2s7Ci0KICAgICAgICAgTGVnYWN5UHJv
ZmlsZXIqIG1fZW5hYmxlZFByb2ZpbGVyOwotCisgICAgICAgIE93blB0cjxCdWlsdGluRXhlY3V0
YWJsZXM+IG1fYnVpbHRpbkV4ZWN1dGFibGVzOworICAgICAgICBSZWZDb3VudGVkQXJyYXk8U3Rh
Y2tGcmFtZT4gbV9leGNlcHRpb25TdGFjazsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0
cjxXYXRjaHBvaW50U2V0Pj4gbV9pbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnRTZXRzOwogICAgIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUv
SlNTdHJpbmdJbmxpbmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50
aW1lL0pTU3RyaW5nSW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwZmNjMzg0ZThlZGZjMzRiMTQwODNi
ODY1ZDM3MzgyMGY0MTY1YzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3
YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCkBAIC0wLDAgKzEsNCBAQAor
I2lmbmRlZiBXZWJDb3JlX0ZXRF9KU1N0cmluZ0lubGluZXNfaAorI2RlZmluZSBXZWJDb3JlX0ZX
RF9KU1N0cmluZ0lubGluZXNfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nSW5s
aW5lcy5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdp
bnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcAppbmRleCAyZWRkY2RiYjlm
MDA2Y2E3NjI2NjUwYjQyMDI3ODYyNmI5MjYxNDE3Li4zYzRlMGQ3YmJiMzFjYWIxMmI1ZTZjOTc1
Yzc0ZDNmNDg0ZTljYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdp
bnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAKQEAgLTQ2LDYgKzQ2
LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1
ZUlubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ0lubGluZXMuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJREJBbnlDdXN0b20uY3BwCmluZGV4IDU2NDljODVjYTA5NTg3NzQ4YTNkYTA2Y2RkZDBjYTk5
OWU1MGI4ZTcuLjNmNGQ4ZWZhZWI1N2YzMzAwM2U3M2E3ZTc4NDJlNDJjNzNjZTY0OTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFueUN1c3RvbS5jcHAKQEAgLTQ3LDYg
KzQ3LDcgQEAKICNpbmNsdWRlICJKU0lEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSlNJREJU
cmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1
ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5j
cHAKaW5kZXggOWVhZTc1NjljNzA2MDNhNGZlZDBhZjE0YzRmODcxOGNkZTY0YTZlMS4uZjQ5ZGZl
OTBiNGU4MmQzOWVkY2JmOWJhMjlmMmFlNzk5YzBkZGYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKQEAgLTM3LDcgKzM3LDcg
QEAKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIkpTSURCT2JqZWN0U3Rv
cmUuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1N0
cmluZy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SURCT2JqZWN0U3RvcmVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJ
REJPYmplY3RTdG9yZUN1c3RvbS5jcHAKaW5kZXggNzRmZDM1NGIyODYwN2NmNzgyMmY4MDUzNDc5
NzBmNWQ3YWM4YzgzMi4uNTQzNGIzYjdkNmM1NmVjYjBhMDNhMjc5NGM2NzM2YTlhZGZiNzBlMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9y
ZUN1c3RvbS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5o
IgogI2luY2x1ZGUgIkpTSURCSW5kZXguaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0j
aW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJ
bmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2MjVmOWY3MDI5MmZk
YzE0YjhjYTUzMzc3MGMwNGQ0YjcwMDdmNjNjLi44OGM3YWQ3OTRkMjBmNWQ0ODllYjg1ZDA3Nzk1
ODUxZDM0NWEyMDcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBI
dW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGlt
cGxlbWVudCBKUyBidWlsdGlucyBpbiBKUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXBkYXRlZCB0aGUgdGVzdCByZXN1bHRzIGZvciBuZXcgZXJyb3Ig
bWVzc2FnZXMgKG5vdyB0aGF0IHRoZXkncmUKKyAgICAgICAgYWN0dWFsbHkgaGVscGZ1bCksIGFu
ZCBhZGRlZCBhIGpzLXJlZ3Jlc3MgdGVzdCB0byB0cmFjayBwZXJmb3JtYW5jZS4KKworICAgICAg
ICAqIGpzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9kb20vYXJyYXkt
cHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL3JlZ3Jlc3Mv
YXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMv
cmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbDogQWRkZWQuCisgICAgICAgICoganMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzOiBBZGRlZC4KKyAg
ICAgICAgKHRlc3QxKToKKyAgICAgICAgKHRlc3QyKToKKyAgICAgICAgKHRlc3QzKToKKwogMjAx
NC0wMS0yOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IFBsYXkgQnJlYWtwb2ludCBTb3VuZCBpbiBGcm9udGVuZApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0CmluZGV4IDU0MWI4YzM1OGYwNjhhMGNlYTg4
MmMxMDUxNzUzMjUxMTRjZDMzZjcuLmNjYTM2M2RjZTU4ZmJhOTVhNThjZTQ2ZmNiNDhjMzhiZjU4
YWRmNTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQKQEAgLTMwLDEy
ICszMCwxMiBAQCBQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoaXNCaWdFbm91Z2hBbmRF
eGNlcHRpb24pIHRocmV3IGV4Y2VwdGlvbiBleGNlcHRpbwogUEFTUyBbMTIsIDU0LCAxOCwgMTMw
LCA0NF0uZXZlcnkoaXNCaWdFbm91Z2hBbmRFeGNlcHRpb24pIHRocmV3IGV4Y2VwdGlvbiBleGNl
cHRpb24gZnJvbSBmdW5jdGlvbi4KIAogNS4wIFdyb25nIFR5cGUgZm9yIENhbGxiYWNrIFRlc3QK
LVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSg1KSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCd3cm9uZycp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwg
MTMwLCA0NF0uZXZlcnkobmV3IE9iamVjdCgpKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBU
eXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KG51bGwpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0u
ZXZlcnkodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgot
UEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogVHlwZSBlcnJvci4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSg1KSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBi
ZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCd3cm9uZycpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBt
dXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkobmV3IE9i
amVjdCgpKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkg
Y2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2
ZXJ5KG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVy
eSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0u
ZXZlcnkodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5
cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEz
MCwgNDRdLmV2ZXJ5KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBl
LmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KIAogNi4wIEVhcmx5IEV4aXQgKCJT
aG9ydCBDaXJjdWl0aW5nIikKIFBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShpc0JpZ0Vu
b3VnaFNob3J0Q2lyY3VpdCkgaXMgZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Rv
bS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9q
cy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CmluZGV4IDJjMmE2
OGNiMTA2ZGExMGYwODZiMjJjNWJmMmJmNWM4ZmU3OWUzM2UuLjVkOWVjYjc1YThkYTc5YmE2NTYw
NWU3ZWI5Y2Y4ZmMyNWZlMThhZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2RvbS9hcnJh
eS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMv
ZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApAQCAtMTUsNyArMTUs
NyBAQCBQQVNTIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHVuZGVmaW5lZCwgMCwgMSkgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZQogUEFTUyBBcnJheS5wcm90b3R5cGUuc29ydC5j
YWxsKHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5v
dCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5zb3J0LmNhbGwodW5kZWZp
bmVkKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwodW5kZWZpbmVkLCAwLCAx
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAo
ZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKHVuZGVmaW5lZCwgMCwgMSkn
KS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuY2FsbCh1bmRlZmluZWQsIHt9KSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVh
dGluZyAnQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuY2FsbCh1bmRlZmluZWQsIHt9KScpLgotUEFT
UyBBcnJheS5wcm90b3R5cGUuZXZlcnkuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGlu
ZyAnQXJyYXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZyknKS4KK1BB
U1MgQXJyYXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZykgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQg
fHRoaXN8IG5vdCBiZSB1bmRlZmluZWQuCiBQQVNTIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNh
bGwodW5kZWZpbmVkLCB0b1N0cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZp
bmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5mb3JFYWNo
LmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZyknKS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLnNvbWUu
Y2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRl
ZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnNvbWUu
Y2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUuaW5kZXhP
Zi5jYWxsKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVk
IGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5pbmRleE9mLmNh
bGwodW5kZWZpbmVkLCAwKScpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9h
cnJheS1wcm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9hcnJheS1wcm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyOTBjMGVl
ZmY4ZGU0MjE4MzNkOTJkMjdlOTUyNDE5MTc2MDRiOTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeQorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbCBiL0xheW91
dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU1Y2MxNzFjNDg3NWEzNTg1YmYxNGU1NDE1ZjVjZDBlNTgxZDU0NAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwKQEAg
LTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMv
YXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5LXByb3RvdHlwZS1l
dmVyeS5qcyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5LXByb3Rv
dHlwZS1ldmVyeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTRhYTE2MWMwY2U5OGIyYWIxOGEzYTFhMWYwZGZh
YWM5ZDdkMmUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3Jp
cHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzCkBAIC0wLDAgKzEsMjkgQEAKK3ZhciBy
ZXN1bHQgPSAwOworZnVuY3Rpb24gdGVzdDEoYSkgeworICAgIHJlc3VsdCA8PCAxOworICAgIHJl
c3VsdCsrOworICAgIHJldHVybiB0cnVlOworfQorZnVuY3Rpb24gdGVzdDIoYSxiKSB7CisgICAg
cmVzdWx0IF49IDM7CisgICAgcmVzdWx0ICo9IDM7CisgICAgcmV0dXJuIHRydWU7Cit9CitmdW5j
dGlvbiB0ZXN0MyhhLGIsYykgeworICAgIHJlc3VsdCBePSByZXN1bHQgPj4gMTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwordmFyIHJlc3VsdCA9IDA7Cit2YXIgYXJyYXkgPSBbXQorZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDAwMDA7ICsraSkKKyAgICBhcnJheVtpXSA9IDE7CisKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMTA7IGkrKykgeworICAgIGFycmF5LmV2ZXJ5KHRlc3QxKTsKKyAgICBhcnJheS5l
dmVyeSh0ZXN0Mik7CisgICAgYXJyYXkuZXZlcnkodGVzdDMpOworfQorCitpZiAocmVzdWx0ICE9
IDE0Mjg4MTA0OTYpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222694</attachid>
            <date>2014-01-30 11:20:12 -0800</date>
            <delta_ts>2014-01-30 11:59:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140130112011.patch</filename>
            <type>text/plain</type>
            <size>197402</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZTQ0Nzc0OGY2OTgwZDU3YjU5YWY5NjNlZTMwMDg2N2UyYWE3ZmY1Li5mMjZkYTFjZTVmM2YzZWNh
NTExMzUwZWU1MWY3M2VjODJhZjhkMzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
IFRoaXMgcmVzdWx0IG9mIHRoaXMgcmVmYWN0b3JpbmcKKyAgICAgICAgaXMgdGhhdCBDb21tb25J
ZGVudGlmaWVycywgYW5kIGEgZmV3IG90aGVyIG1pc2NlbGxhbmVvdXMgaGVhZGVycyBub3cKKyAg
ICAgICAgbmVlZCB0byBiZSBpbmNsdWRlZCBkaXJlY3RseSBhcyB0aGV5IHdlcmUgZm9ybWVybHkg
Y2FwdHVyZWQgdGhyb3VnaCBvdGhlcgorICAgICAgICBwYXRocy4KKworICAgICAgICBJbiBhZGRp
dGlvbiB0aGlzIGFkZHMgYSBmbGFnIHRvIHRoZSBMb29rdXAgdGFibGUncyBoYXNoZW50cnkgdG8g
aW5kaWNhdGUKKyAgICAgICAgdGhhdCBhIHN0YXRpYyBmdW5jdGlvbiBpcyBhY3R1YWxseSBiYWNr
ZWQgYnkgSlMuIFRoZXJlIGlzIHRoZW4gYSBsb3Qgb2YKKyAgICAgICAgbG9naWMgdG8gdGhyZWFk
IHRoZSBzcGVjaWFsIG5hdHVyZSBvZiB0aGUgZnVuY3RvbiB0byB3aGVyZSBpdCBtYXR0ZXJzLgor
ICAgICAgICBUaGlzIGFsbG93cyB0b1N0cmluZygpLCAuY2FsbGVyLCBldGMgdG8gbWltaWMgdGhl
IGJlaGF2aW91ciBvZiBhIGhvc3QKKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAgICAgTm90ZXMg
b24gd3JpdGluZyBidWlsdGluczoKKyAgICAgICAgIC0gRWFjaCBmdW5jdGlvbiBpcyBjb21waWxl
ZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBvdGhlcnMsIGFuZCB0aG9zZQorICAgICAgICAgICBpbXBs
ZW1lbnRhdGlvbnMgY2Fubm90IGN1cnJlbnRseSBjYXB0dXJlIGFsbCBnbG9iYWwgcHJvcGVydGll
cyAoYXMKKyAgICAgICAgICAgdGhhdCBjb3VsZCBiZSBwb3RlbnRpYWxseSB1bnNhZmUpLiBJZiBh
IGZ1bmN0aW9uIGRvZXMgY2FwdHVyZSBhCisgICAgICAgICAgIGdsb2JhbCB3ZSB3aWxsIGRlbGli
ZXJhdGVseSBjcmFzaC4KKyAgICAgICAgIC0gRm9yIHRob3NlICJnbG9iYWwiIHByb3BlcnRpZXMg
dGhhdCB3ZSBkbyB3YW50IGFjY2VzcyB0bywgd2UgdXNlCisgICAgICAgICAgIHRoZSBAIHByZWZp
eCwgZS5nLiBPYmplY3QodGhpcykgYmVjb21lcyBAT2JqZWN0KHRoaXMpLiBUaGUgQCBpZGVudGlm
aWVycworICAgICAgICAgICBhcmUgcHJpdmF0ZSBuYW1lcywgYW5kIGJlaGF2ZSBqdXN0IGxpa2Ug
cmVndWxhciBwcm9wZXJ0aWVzLCBvbmx5CisgICAgICAgICAgIHdpdGhvdXQgdGhlIHJpc2sgb2Yg
YWR1bHRlcmF0aW9uLiBBZ2FpbiwgaW4gdGhlIEBPYmplY3QgY2FzZSwgd2UKKyAgICAgICAgICAg
ZXhwbGljaXRseSBkdXBsaWNhdGUgdGhlIE9iamVjdENvbnN0cnVjdG9yIHJlZmVyZW5jZSBvbiB0
aGUgR2xvYmFsT2JqZWN0CisgICAgICAgICAgIHNvIHRoYXQgd2UgaGF2ZSBndWFyYW50ZWVkIGFj
Y2VzcyB0byB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgY29uc3RydWN0
b3IuCisgICAgICAgICAtIGNhbGwsIGFwcGx5LCBldmFsLCBhbmQgRnVuY3Rpb24gYXJlIGFsbCBy
ZWplY3RlZCBpZGVudGlmaWVycywgYWdhaW4KKyAgICAgICAgICAgdG8gcHJldmVudCBhbnl0aGlu
ZyBmcm9tIGFjY2lkZW50YWxseSB1c2luZyBhbiBhZHVsdGVyYXRlZCBvYmplY3QuCisgICAgICAg
ICAgIEluc3RlYWQgQGNhbGwgYW5kIEBhcHBseSBhcmUgYXZhaWxhYmxlLCBhbmQgaGFwcGlseSB0
aGV5IGNvbXBsZXRlbHkKKyAgICAgICAgICAgZHJvcCB0aGUgbmVxX3B0ciBpbnN0cnVjdGlvbiBh
cyB0aGV5J3JlIGRlZmluZWQgYXMgYWx3YXlzIGJlaW5nIHRoZQorICAgICAgICAgICBvcmlnaW5h
bCBjYWxsL2FwcGx5IGZ1bmN0aW9ucy4KKworICAgICAgICBUaGVzZSByZXN0cmljdGlvbnMgYXJl
IGp1c3QgaW50ZW5kZWQgdG8gbWFrZSBpdCBoYXJkZXIgdG8gYWNjaWRlbnRhbGx5CisgICAgICAg
IG1ha2UgY2hhbmdlcyB0aGF0IGFyZSBpbmNvcnJlY3QgKGZvciBpbnN0YW5jZSBjYWxsaW5nIHdo
YXRldmVyIGhhcyBiZWVuCisgICAgICAgIGFzc2lnbmVkIHRvIGdsb2JhbC5PYmplY3QsIGluc3Rl
YWQgb2YgdGhlIG9yaWdpbmFsIGNvbnN0cnVjdG9yIGZ1bmN0aW9uKS4KKyAgICAgICAgSG93ZXZl
ciwgbWFraW5nIGEgbWlzdGFrZSBsaWtlIHRoaXMgc2hvdWxkIHJlc3VsdCBpbiBhIHB1cmVseSBz
ZW1hbnRpYworICAgICAgICBlcnJvciBhcyBmdW5kYW1lbnRhbGx5IHRoZXNlIGZ1bmN0aW9ucyBh
cmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlCisgICAgICAgIHJlZ3VsYXIgSlMgY29kZSBp
biB0aGUgaG9zdCBnbG9iYWwsIGFuZCBoYXZlIG5vIG1vcmUgcHJpdmlsZWdlcyB0aGFuCisgICAg
ICAgIGFueSBvdGhlciBKUy4KKworICAgICAgICBUaGUgaW5pdGlhbCBwcm9vZiBvZiBjb25jZXB0
IGlzIEFycmF5LnByb3RvdHlwZS5ldmVyeSwgdGhpcyBzaG93cyBhIDY1JQorICAgICAgICBwZXJm
b3JtYW5jZSBpbXByb3ZlbWVudCwgYW5kIHRoYXQgaW1wcm92ZW1lbnQgaXMgc2lnbmlmaWNhbnRs
eSBodXJ0IGJ5CisgICAgICAgIG91ciBwb29yIG9wdGltaXNhdGlvbiBvZiBvcF9pbi4KKworICAg
ICAgICBBcyB0aGlzIGlzIHN1Y2ggYSBsaW1pdGVkIGZ1bmN0aW9uLCB3ZSBoYXZlIG5vdCB5ZXQg
ZXhwb3J0ZWQgYWxsIHN5bWJvbHMKKyAgICAgICAgdGhhdCB3ZSBjb3VsZCBwb3NzaWJseSBuZWVk
LCBidXQgYXMgd2UgaW1wbGVtZW50IG1vcmUsIHRoZSBsaWtlbGlob29kCisgICAgICAgIG9mIGVu
Y291bnRlcmluZyBtaXNzaW5nIGZlYXR1cmVzIHdpbGwgcmVkdWNlLgorCisgICAgICAgIFRoaXMg
ZGlkIHJlcXVpcmUgYnJlYWtpbmcgb3V0IGEgSlNTdHJpbmdJbmxpbmVzIGhlYWRlciwgYW5kIHJl
cXVpcmVkCisgICAgICAgIGZpeGluZyBhIGZldyBvYmplY3RzIHRoYXQgd2VyZSB0cnlpbmcgdG8g
dXNpbmcgUHJvcGVydHlOYW1lOjpwdWJsaWNOYW1lCisgICAgICAgIHJhdGhlciB0aGFuIFByb3Bl
cnR5TmFtZTo6dWlkLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0
eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dCk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRpY1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWNGdW5jdGlvbkdl
dHRlcik6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tH
ZXR0ZXIpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBidWlsdGlucy9BcnJheS5wcm90b3R5cGUuanM6CisgICAgICAgIChldmVyeSk6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkJ1aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKToKKyAgICAgICAgKEpTQzo6
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSk6CisgICAgICAgICog
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVj
dXRhYmxlczo6Y3JlYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tG
b3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6dG9TdHJpY3RuZXNzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNCdWlsdGluRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBjcmVhdGVfaGFz
aF90YWJsZToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZ2Vu
ZXJhdGUtanMtYnVpbHRpbnM6IEFkZGVkLgorICAgICAgICAoZ2V0Q29weXJpZ2h0KToKKyAgICAg
ICAgKGdldEZ1bmN0aW9ucyk6CisgICAgICAgIChnZW5lcmF0ZUNvZGUpOgorICAgICAgICAobWFu
Z2xlTmFtZSk6CisgICAgICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSWRlbnRp
Zmllcik6CisgICAgICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChTb3VyY2VDb2RlKToK
KyAgICAgICAgKFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKFZNKToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvUHJvdG9DYWxsRnJhbWUuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUp
OgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpM
ZXhlcik6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpM
ZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFy
Pjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAg
ICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcik6CisgICAgICAgICog
cGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OnNldENsb3NlZFZh
cmlhYmxlcyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
Tm9kZTo6Y2FwdHVyZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OnNldENs
b3NlZFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmluaXNoUGFy
c2luZyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRU
b2tlblRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OmdldFVzZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNsb3NlZFZhcmlh
Ymxlcyk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9k
ZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAgICAgICogcnVudGlt
ZS9BcmdMaXN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAg
ICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJh
dG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpn
ZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpD
b21tb25JZGVudGlmaWVycyk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQ
cml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQdWJsaWNO
YW1lKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzRXhjZXB0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxl
OjpleGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpleGVj
dXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aXNCdWlsdGlu
RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1l
L0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFi
bGVHZXQpOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0KToKKyAg
ICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgICogcnVudGltZS9K
U0NlbGxJbmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6c291cmNlQ29kZSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzSG9zdE9y
QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6aXNCdWlsdGluRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIpOgorICAgICAg
ICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9w
ZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgICogcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6Om9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpnZXRDbGFzc1Byb3BlcnR5TmFtZXMpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZ0lubGlu
ZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjppbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9i
amVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgICAgRG9uJ3QgcmVw
b3J0IHByaXZhdGUgbmFtZXMuCisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6c3ltYm9s
VGFibGVQdXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChKU0M6OnNldFVwU3RhdGlj
RnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlND
OjpIYXNoRW50cnk6OmJ1aWx0aW5HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpIYXNoRW50cnk6
OnByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpwcm9wZXJ0eVB1dHRl
cik6CisgICAgICAgIChKU0M6Okhhc2hUYWJsZTo6ZW50cnkpOgorICAgICAgICAoSlNDOjpnZXRT
dGF0aWNQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpnZXRTdGF0aWNWYWx1ZVNsb3QpOgor
ICAgICAgICAoSlNDOjpwdXRFbnRyeSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6YnVp
bHRpbkV4ZWN1dGFibGVzKToKKwogMjAxNC0wMS0zMCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2Vr
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gT25seSBkaXNhYmxlIC1mdHJlZS1kY2Ugb3B0
aW1pemF0aW9uIHdoZW4gY29tcGlsaW5nIHdpdGggR0NDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjkwMTgyNzU0
ZjM1YzMyYmNmZjU3OTU1YTI3MzAwOWIxNmI1OTk2Ny4uMWIxZDUxNGMwOTk2MTQ1NTljMzk2MTM2
NWM1ODgwY2FmZmJjYzEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE0LTAxLTI5
ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3Nz
aWJsZSB0byBpbXBsZW1lbnQgSlMgYnVpbHRpbnMgaW4gSlMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzg4NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0aW5nIGZvciB0aGUgbmV3bHkgcmVxdWly
ZWQgaGVhZGVycy4KKworICAgICAgICBUZXN0OiBqcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1l
dmVyeS5odG1sCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5n
SW5saW5lcy5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9t
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcDoKKwogMjAxNC0w
MS0zMCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIE1v
ZGVybml6ZSBIVFRQSGVhZGVyTWFwIGl0ZXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAppbmRleCA1YmUwNTNmMWUw
ODZiNDNlNjg2YzM2NzRkYWU3YzUxNjA1YTI4NmU3Li4wZWNlZDUxZjNlMmQ1YjYyMWRhZGYwNTc0
OWY1ZTc0NjZhMDZmNTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaApAQCAtMTM2LDcgKzEzNiw3IEBAIGJvb2wgSlND
YWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBlCiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmpl
Y3QpOwogICAgIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwogICAgIAot
ICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkgewor
ICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CiAgICAgICAg
IGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iamVjdC0+Y2xhc3NSZWYoKTsganNDbGFz
czsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgICAgICAvLyBvcHRp
b25hbCBvcHRpbWl6YXRpb24gdG8gYnlwYXNzIGdldFByb3BlcnR5IGluIGNhc2VzIHdoZW4gd2Ug
b25seSBuZWVkIHRvIGtub3cgaWYgdGhlIHByb3BlcnR5IGV4aXN0cwogICAgICAgICAgICAgaWYg
KEpTT2JqZWN0SGFzUHJvcGVydHlDYWxsYmFjayBoYXNQcm9wZXJ0eSA9IGpzQ2xhc3MtPmhhc1By
b3BlcnR5KSB7CkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVu
dD46OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHAKICAg
ICBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHByb3BlcnR5TmFtZVJlZjsKICAgICBKU1ZhbHVlUmVm
IHZhbHVlUmVmID0gdG9SZWYoZXhlYywgdmFsdWUpOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBs
KiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBs
KiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBq
c0NsYXNzID0gdGhpc09iamVjdC0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xh
c3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgICAgICBpZiAoSlNPYmplY3RTZXRQcm9wZXJ0eUNh
bGxiYWNrIHNldFByb3BlcnR5ID0ganNDbGFzcy0+c2V0UHJvcGVydHkpIHsKICAgICAgICAgICAg
ICAgICBpZiAoIXByb3BlcnR5TmFtZVJlZikKQEAgLTM0Myw3ICszNDMsNyBAQCBib29sIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFBybwogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0
KTsKICAgICBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHByb3BlcnR5TmFtZVJlZjsKICAgICAKLSAg
ICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAg
ICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBm
b3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7
IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2Jq
ZWN0RGVsZXRlUHJvcGVydHlDYWxsYmFjayBkZWxldGVQcm9wZXJ0eSA9IGpzQ2xhc3MtPmRlbGV0
ZVByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5hbWVSZWYpCkBAIC01
NjQsNyArNTY0LDcgQEAgSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRp
Y1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHAKIHsKICAgICBKU09iamVjdFJl
ZiB0aGlzUmVmID0gdG9SZWYodGhpcyk7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUg
PSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUg
PSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3Mg
PSBjbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsK
ICAgICAgICAgICAgIGlmIChPcGFxdWVKU0NsYXNzU3RhdGljVmFsdWVzVGFibGUqIHN0YXRpY1Zh
bHVlcyA9IGpzQ2xhc3MtPnN0YXRpY1ZhbHVlcyhleGVjKSkgewogICAgICAgICAgICAgICAgIGlm
IChTdGF0aWNWYWx1ZUVudHJ5KiBlbnRyeSA9IHN0YXRpY1ZhbHVlcy0+Z2V0KG5hbWUpKSB7CkBA
IC02MDAsNyArNjAwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpzdGF0aWNGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEUKICAgICBpZiAoUGFyZW50
OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iaiwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90Mikp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2xvdDIuZ2V0VmFsdWUoZXhlYywgcHJv
cGVydHlOYW1lKSk7CiAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5w
dWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS51
aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmotPmNsYXNz
UmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAg
ICAgICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZSogc3RhdGljRnVuY3Rp
b25zID0ganNDbGFzcy0+c3RhdGljRnVuY3Rpb25zKGV4ZWMpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKFN0YXRpY0Z1bmN0aW9uRW50cnkqIGVudHJ5ID0gc3RhdGljRnVuY3Rpb25zLT5nZXQobmFt
ZSkpIHsKQEAgLTYyNiw3ICs2MjYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmNhbGxiYWNrR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZAogICAgIEpT
T2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqKTsKICAgICBSZWZQdHI8T3BhcXVlSlNT
dHJpbmc+IHByb3BlcnR5TmFtZVJlZjsKICAgICAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9
IHRoaXNPYmotPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRD
bGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0R2V0UHJvcGVydHlDYWxsYmFjayBnZXRQ
cm9wZXJ0eSA9IGpzQ2xhc3MtPmdldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFw
cm9wZXJ0eU5hbWVSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMjdi
YzRjMTdmM2RmZWViNjFkMjUyMzIzZmQ4NzhjNDQ3ODBmNzRjNS4uNDEzNGE2YzFlM2VmMzJiZTg1
YTYyNDVkN2ViNWUwNTUyZmU1MTNlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtNTIsNiArNTIsOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGJpbmRp
bmdzL1NjcmlwdE9iamVjdC5jcHAKICAgICBiaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAKIAorICAg
IGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKKwogICAgIGJ5dGVjb2RlL0FycmF5QWxs
b2NhdGlvblByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAogICAgIGJ5
dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKQEAgLTgxNSwxNiArODE3LDI3IEBAIGFkZF9j
dXN0b21fY29tbWFuZCgKICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7SmF2YVNj
cmlwdENvcmVfSU5TUEVDVE9SX1NDUklQVFNfRElSfS9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlMuanNvbiAt
LW91dHB1dF9oX2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIgLS1v
dXRwdXRfY3BwX2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIgLS1v
dXRwdXRfanNfZGlyICIke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9IiAtLW91
dHB1dF90eXBlIEphdmFTY3JpcHQgLS13cml0ZV9hbHdheXMgJiYgbWtkaXIgLXAgJHtERVJJVkVE
X1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IgJiYgY3AgJHtERVJJVkVEX1NP
VVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5o
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNGcm9udGVu
ZERpc3BhdGNoZXJzLmggJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNw
ZWN0b3JKU1R5cGVCdWlsZGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vaW5zcGVjdG9yCiAgICAgVkVSQkFUSU0pCiAKKyMgSlNDQnVpbHRpbnMKK2ZpbGUoR0xPQiBK
U0NCdWlsdGluc19qc19maWxlcyAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2J1aWx0aW5z
LyouanMiKQorYWRkX2N1c3RvbV9jb21tYW5kKAorICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuY3BwICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAorICAgTUFJTl9ERVBFTkRFTkNZICR7Q01B
S0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucworICAgREVQRU5EUyAk
e0pTQ0J1aWx0aW5zX2pzX2ZpbGVzfQorICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMgJHtKU0NCdWls
dGluc19qc19maWxlc30gJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NC
dWlsdGlucy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRp
bnMuY3BwCisgICBWRVJCQVRJTSkKKwogbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfU09VUkNF
UwogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNC
YWNrZW5kRGlzcGF0Y2hlcnMuY3BwCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENP
UkVfRElSfS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuY3BwCiAgICAgJHtERVJJVkVE
X1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAK
KyAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNw
cAogKQogCiBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTCiAgICAgJHtERVJJVkVE
X1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVy
cy5oCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JK
U0Zyb250ZW5kRGlzcGF0Y2hlcnMuaAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRD
T1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaAorICAgICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAogKQogCiBhZGRfY3VzdG9tX2NvbW1h
bmQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDExNTZl
OTdmZDg4NjI1NTdjOWNmOGQzYjY4YmY0ZDAzYzNlOGJhOGYuLjU1ZDhiNzNmMWFlNzBiYzkyMGY4
MzUxNzJhOWFhNzdmMDZkYjE5MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCkBAIC01Nyw2ICs1Nyw3IEBAIGFsbCA6IFwKICAgICBSZWdFeHBPYmplY3QubHV0
LmggXAogICAgIFN0cmluZ0NvbnN0cnVjdG9yLmx1dC5oIFwKICAgICB1ZGlzODZfaXRhYi5oIFwK
KyAgICBKU0NCdWlsdGlucyBcCiAjCiAKICMgbG9va3VwIHRhYmxlcyBmb3IgY2xhc3NlcwpAQCAt
NzksNiArODAsMTQgQEAgS2V5d29yZExvb2t1cC5oOiBLZXl3b3JkTG9va3VwR2VuZXJhdG9yLnB5
IEtleXdvcmRzLnRhYmxlCiB1ZGlzODZfaXRhYi5oOiAkKEphdmFTY3JpcHRDb3JlKS9kaXNhc3Nl
bWJsZXIvdWRpczg2L2l0YWIucHkgJChKYXZhU2NyaXB0Q29yZSkvZGlzYXNzZW1ibGVyL3VkaXM4
Ni9vcHRhYmxlLnhtbAogCShQWVRIT05QQVRIPSQoSmF2YVNjcmlwdENvcmUpL2Rpc2Fzc2VtYmxl
ci91ZGlzODYgcHl0aG9uICQoSmF2YVNjcmlwdENvcmUpL2Rpc2Fzc2VtYmxlci91ZGlzODYvaXRh
Yi5weSAkKEphdmFTY3JpcHRDb3JlKS9kaXNhc3NlbWJsZXIvdWRpczg2L29wdGFibGUueG1sIHx8
IGV4aXQgMSkKIAorIyBidWlsdGluIGZ1bmN0aW9ucworLlBIT05ZOiBKU0NCdWlsdGlucworCitK
U0NCdWlsdGluczogJChKYXZhU2NyaXB0Q29yZSkvZ2VuZXJhdGUtanMtYnVpbHRpbnMgSlNDQnVp
bHRpbnMuaCBKU0NCdWlsdGlucy5jcHAKK0pTQ0J1aWx0aW5zLmg6ICQoSmF2YVNjcmlwdENvcmUp
L2dlbmVyYXRlLWpzLWJ1aWx0aW5zICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zLyouanMKKwlw
eXRob24gJF4gJEAKKworSlNDQnVpbHRpbnMuY3BwOiBKU0NCdWlsdGlucy5oCiAKICMgSW5zcGVj
dG9yIGludGVyZmFjZXMKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQppbmRleCBjZGI1NDI2YjA2YjUyYTk4MjU2ZWU5MDU4YmJhOGYxMWVlYTY5ZWUwLi5hZmU5Njcy
YjViMWVlOTI3MTFiZWRkNDc1ZTlhMTI4MjAzYzgxMzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTAyLDYgKzEwMiw4IEBAIGphdmFzY3JpcHRjb3Jl
X3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRP
YmplY3QuaCBcCiAgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVl
LmNwcCBcCiAgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmgg
XAorICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMu
Y3BwIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFi
bGVzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheUFsbG9jYXRpb25Q
cm9maWxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5QWxsb2Nh
dGlvblByb2ZpbGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJv
ZmlsZS5jcHAgXApAQCAtMTI0MSw3ICsxMjQzLDkgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyAr
PSBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNGcm9udGVuZERp
c3BhdGNoZXJzLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9y
SlNGcm9udGVuZERpc3BhdGNoZXJzLmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3Jl
L0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmggXAorCURlcml2ZWRTb3VyY2VzL0phdmFT
Y3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvSlNDQnVpbHRpbnMuaAogCiBsbGludF9ub3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDVlZGVmZGJlODU1Zjk2YTYyNjhkODU3M2Jl
YzFkMGMzZDg1OGFhNWMuLmExMmRiMTgzNDg2ZGZiYmNhODNmM2E3OGU5Y2Y5ODYzMWIyNjUzZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtMzA5LDYgKzMwOSw3
IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNh
bGwuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0T2Jq
ZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdFZh
bHVlLmNwcCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5F
eGVjdXRhYmxlcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxB
cnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGJ5dGVjb2RlXEFycmF5UHJvZmlsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxieXRlY29kZVxCeXRlY29kZUJhc2ljQmxvY2suY3BwIiAvPgpAQCAtNzIxLDYgKzcyMiw3IEBA
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQ
bGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVj
dG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
SW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmNwcCIgLz4KICAgPC9JdGVtR3Jv
dXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcQXJyYXlDb25zdHJ1Y3Rvci5sdXQuaCIgLz4KQEAgLTc1MCw2ICs3NTIsNyBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFJlZ0V4
cE9iamVjdC5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xSZWdFeHBQcm90b3R5cGUubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcU3RyaW5nQ29uc3RydWN0b3IubHV0LmgiIC8+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQ
bGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVp
bHRpbnMuaCIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxBUElcQVBJQ2FsbGJhY2tGdW5jdGlvbi5oIiAvPgpAQCAtNzk4LDYgKzgw
MSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlv
bkNhbGwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdE9i
amVjdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0VmFs
dWUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVj
dXRhYmxlcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlB
bGxvY2F0aW9uUHJvZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNv
ZGVcQXJyYXlQcm9maWxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29k
ZVxCeVZhbEluZm8uaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ouZmlsdGVycwppbmRleCA4N2UxMmE0NzE1OGJiNjIyNGQ0OWZkNjIyOTc4YzRhOWM0NDM1
YTY1Li44NjljMWY1ODliY2I2ODZlYjljZjIwYzA5NmJlMWI4M2E1NTFlMjRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC03LDYgKzcs
OSBAQAogICAgIDxGaWx0ZXIgSW5jbHVkZT0iYmluZGluZ3MiPgogICAgICAgPFVuaXF1ZUlkZW50
aWZpZXI+ezBiYWNlMTIzLTQ1ODItZWViYy05MzE0LTc4MTliMzc2YzE5OH08L1VuaXF1ZUlkZW50
aWZpZXI+CiAgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJidWlsdGlucyI+Cisg
ICAgICA8VW5pcXVlSWRlbnRpZmllcj57M2I5ZDcyYTUtMTM1Yi00M2IzLWE1MjQtYzZkMmI5ZDI5
ZDM1fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KICAgICA8RmlsdGVyIEluY2x1
ZGU9ImJ5dGVjb2RlIj4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns3NjYwODhhMC0xMjE2LTQ4
NTQtYWE0My01NjBjNWUyODM2Njh9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgpA
QCAtMTA4LDYgKzExMSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJc
TWFjcm9Bc3NlbWJsZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAg
ICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWls
dGluRXhlY3V0YWJsZXMuY3BwIj4KKyAgICAgIDxGaWx0ZXI+YnVpbHRpbnM8L0ZpbHRlcj4KKyAg
ICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5
QWxsb2NhdGlvblByb2ZpbGUuY3BwIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4K
ICAgICA8L0NsQ29tcGlsZT4KQEAgLTEzMjksNiArMTMzNSw5IEBACiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVy
ZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMu
Y3BwIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbENv
bXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
SlNDQnVpbHRpbnMuY3BwIj4KKyAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+
CisgICAgPC9DbENvbXBpbGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEFQSUNhbGxiYWNrRnVuY3Rpb24uaCI+CkBAIC0xNDU0
LDYgKzE0NjMsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXFg4NkFz
c2VtYmxlci5oIj4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWlsdGluRXhlY3V0
YWJsZXMuaCI+CisgICAgICA8RmlsdGVyPmJ1aWx0aW5zPC9GaWx0ZXI+CisgICAgPC9DbENvbXBp
bGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Q
cm9maWxlLmgiPgogICAgICAgPEZpbHRlcj5ieXRlY29kZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNs
dWRlPgpAQCAtMjU1MCw2ICsyNTYyLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3RO
YW1lKVxEZXJpdmVkU291cmNlc1xBcnJheVByb3RvdHlwZS5sdXQuaCI+CiAgICAgICA8RmlsdGVy
PkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmgiPgorICAg
ICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVk0uaCI+CiAgICAgICA8RmlsdGVyPnJ1
bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlQ29tbW9uLnBy
b3BzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmVDb21tb24ucHJvcHMKaW5kZXggMzYyMmZmYzU3N2M0M2RkZjcwZGE1MWZmNjhhZDY0
NmY2MzA0ZTU2Ny4uYzU4ODg3MGMyZmQxM2Q2MDc2ZDM4ZjUyY2E2MjI1ZGIyODcyYzc4MiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmVDb21tb24ucHJvcHMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmVDb21tb24ucHJvcHMKQEAgLTUsNyArNSw3
IEBACiAgIDxQcm9wZXJ0eUdyb3VwIC8+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxD
bENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlw7Li5cdG9v
bHNcOy4uXHJ1bnRpbWVcOy4uXGxsaW50XDsuLlxqaXRcOy4uXGRpc2Fzc2VtYmxlclw7Li5caGVh
cFw7Li5cZGVidWdnZXJcOy4uXGFzc2VtYmxlclw7Li5ccHJvZmlsZXJcOy4uXHlhcnJcOy4uXGlu
dGVycHJldGVyXDsuLlxieXRlY29kZVw7Li5cZGZnXDsuLlxieXRlY29tcGlsZXJcOy4uXHBhcnNl
clw7Li5cQVBJXDsuLlxmdGxcOy4uXGJpbmRpbmdzXDsuLlxpbnNwZWN0b3JcOyQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVxKYXZhU2NyaXB0Q29yZVxE
ZXJpdmVkU291cmNlc1w7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcOyQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlXDskKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcaW5jbHVkZVxwcml2YXRlXDskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGU7JChX
ZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlXHByaXZhdGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPi4uXDsuLlx0b29sc1w7Li5ccnVudGltZVw7Li5cbGxpbnRcOy4u
XGppdFw7Li5cZGlzYXNzZW1ibGVyXDsuLlxoZWFwXDsuLlxkZWJ1Z2dlclw7Li5cYXNzZW1ibGVy
XDsuLlxwcm9maWxlclw7Li5ceWFyclw7Li5caW50ZXJwcmV0ZXJcOy4uXGJ5dGVjb2RlXDsuLlxi
dWlsdGluc1w7Li5cZGZnXDsuLlxieXRlY29tcGlsZXJcOy4uXHBhcnNlclw7Li5cQVBJXDsuLlxm
dGxcOy4uXGJpbmRpbmdzXDsuLlxpbnNwZWN0b3JcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1w7
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVk
ZVxwcml2YXRlXDskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGU7JChXZWJLaXRfTGlicmFyaWVz
KVxpbmNsdWRlXHByaXZhdGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICAgIDxGb3JjZWRJbmNsdWRlRmlsZXM+SUNVVmVy
c2lvbi5oOyUoRm9yY2VkSW5jbHVkZUZpbGVzKTwvRm9yY2VkSW5jbHVkZUZpbGVzPgogICAgIDwv
Q2xDb21waWxlPgogICAgIDxMaW5rPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAy
N2U4NzY3NDBhOTY0YjAyODk4NGVkNjc4MTYxODIwYTVkY2Y3N2M0Li45MTE1NzNhYjE3ZDMzOTc0
YWE3YzlhMDExZGIyMDBiMDlhZjc4YmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtOTIyLDcgKzkyMiw2IEBACiAJCUE1MDNGQTE5MTg4RTBGQjAwMDExMEYxNCAvKiBKYXZhU2Ny
aXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1MDNGQTEzMTg4RTBGQUYwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNw
cCAqLzsgfTsKIAkJQTUwM0ZBMUExODhFMEZCMDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJh
bWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNG
QTE0MTg4RTBGQUYwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggKi87IH07CiAJCUE1
MDNGQTFCMTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTUxODhFMEZC
MDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi87IH07Ci0JCUE1MDNGQTFD
MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE2MTg4RTBGQjAwMDExMEYx
NCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCAqLzsgfTsKIAkJQTUwM0ZBMUQxODhFMEZCMDAw
MTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNzE4OEUwRkIwMDAxMTBG
MTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcCAqLzsgfTsKIAkJQTUwM0ZB
MUUxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTgxODhF
MEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oICovOyB9Owog
CQlBNTAzRkEyMTE4OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0QnJlYWtwb2ludC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMUYxODhFRkY2ODAw
MTEwRjE0IC8qIFNjcmlwdEJyZWFrcG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTAyNCw2ICsxMDIzLDcgQEAKIAkJQTcwQjA4MzIxN0Ew
Qjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzBCMDgzMDE3QTBCNzlCMDBEQUYxNEIgLyogREZH
QmluYXJ5U3dpdGNoLmNwcCAqLzsgfTsKIAkJQTcwQjA4MzMxN0EwQjc5QjAwREFGMTRCIC8qIERG
R0JpbmFyeVN3aXRjaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTcwQjA4MzExN0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5oICovOyB9
OwogCQlBNzEyMzZFNTExOTVGMzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MTIzNkU0MTE5NUYz
M0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3BwICovOyB9OworCQlBNzFEQTgwRjE4ODBE
QkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzFEQTgwRTE4ODBEQkFCMDBEMUYyOTkgLyogSlNTdHJp
bmdJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQTcyMDI4QjYxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIwMjhCNDE3
OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmNwcCAqLzsgfTsKIAkJQTcyMDI4
QjgxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyMDI4QjUxNzk3NjAxRTAwOTgwMjhD
IC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUE3MjAyOEJBMTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9u
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTcyMDI4QjkxNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExNTAsNiArMTE1MCwx
MCBAQAogCQlBN0NBM0FFODE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0NBM0FFMjE3REE0MUFFMDA2
NTM4QUYgLyogSlNXZWFrTWFwLmggKi87IH07CiAJCUE3Q0EzQUVCMTdEQTUxNjgwMDY1MzhBRiAv
KiBXZWFrTWFwRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBN0NBM0FFOTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuY3BwICovOyB9
OwogCQlBN0NBM0FFQzE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0EzQUVBMTdEQTUxNjgwMDY1
MzhBRiAvKiBXZWFrTWFwRGF0YS5oICovOyB9OworCQlBN0Q4MDFBNDE4ODBENjZFMDAyNkMzOUIg
LyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0
YWJsZXMuY3BwICovOyB9OworCQlBN0Q4MDFBNTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4
ZWN1dGFibGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBN0Q4MDFBMjE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdEODAxQTgxODgw
RDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDgwMUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWls
dGlucy5jcHAgKi87IH07CisJCUE3RDgwMUE5MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlu
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAx
QTcxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTdEODlDRjIxN0EwQjhDQzAwNzczQUQ4IC8q
IERGR0Jhc2ljQmxvY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTdEODlDRTMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jhc2ljQmxvY2suY3BwICov
OyB9OwogCQlBN0Q4OUNGMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODlD
RTQxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCAqLzsgfTsKIAkJ
QTdEODlDRjQxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4OUNFNTE3QTBCOEND
MDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjQ2Miw2ICsyNDY2LDggQEAKIAkJQTcxMjM2
RTQxMTk1RjMzQzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRPcGNvZGVzMzJfNjQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNzE4RjYxQTExNzU0QTIxMDAyNDY1QTcgLyogUmVnRXhwSml0VGFi
bGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEppdFRhYmxlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzE4RjgyMTExNzhFQjRCMDAyNDY1QTcg
LyogY3JlYXRlX3JlZ2V4X3RhYmxlcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBs
aWNpdEZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRo
ID0gY3JlYXRlX3JlZ2V4X3RhYmxlczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcx
REE4MEQxODgwRDcxRjAwRDFGMjk5IC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gImdlbmVyYXRlLWpzLWJ1aWx0aW5zIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcxREE4MEUxODgwREJBQjAwRDFGMjk5IC8qIEpTU3Ry
aW5nSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0cmluZ0lu
bGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyMDI4QjQxNzk3NjAxRTAw
OTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0NUZXN0UnVubmVyVXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNzIwMjhCNTE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ1Rlc3RSdW5uZXJVdGlscy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzIwMjhCOTE3OTc2MDNEMDA5ODAyOEMg
LyogSlNGdW5jdGlvbklubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNGdW5jdGlvbklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1OTAs
NiArMjU5NiwxMSBAQAogCQlBN0NBM0FFMjE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2Vha01hcC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBN0NBM0FFOTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERh
dGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vha01hcERhdGEu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0NBM0FFQTE3REE1MTY4MDA2NTM4
QUYgLyogV2Vha01hcERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vh
a01hcERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTAxODgwRDY2
RTAwMjZDMzlCIC8qIEFycmF5LnByb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2
YXNjcmlwdDsgcGF0aCA9IEFycmF5LnByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTdEODAxQTExODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCdWlsdGluRXhlY3V0YWJs
ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFBMjE4ODBENjZFMDAy
NkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEJ1aWx0aW5FeGVjdXRhYmxlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBN0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDQnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBN0Q4MDFBNzE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDQnVpbHRpbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdEODlDRTMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jh
c2ljQmxvY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQmFz
aWNCbG9jay5jcHA7IHBhdGggPSBkZmcvREZHQmFzaWNCbG9jay5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE3RDg5Q0U0MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2Vy
dGlvblNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdCbG9j
a0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0Q4OUNFNTE3QTBCOENDMDA3NzNBRDggLyog
REZHQmxvY2tJbnNlcnRpb25TZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
REZHQmxvY2tJbnNlcnRpb25TZXQuaDsgcGF0aCA9IGRmZy9ERkdCbG9ja0luc2VydGlvblNldC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjkyNiw2ICsyOTM3LDcgQEAKIAkJCQk4
NjA0RjRGMjE0M0E2QzQ0MDBCMjk1RjUgLyogQ2hhbmdlTG9nICovLAogCQkJCUY2OTJBODU0MDI1
NTU5N0QwMUZGNjBGNyAvKiBjcmVhdGVfaGFzaF90YWJsZSAqLywKIAkJCQlBNzE4RjgyMTExNzhF
QjRCMDAyNDY1QTcgLyogY3JlYXRlX3JlZ2V4X3RhYmxlcyAqLywKKwkJCQlBNzFEQTgwRDE4ODBE
NzFGMDBEMUYyOTkgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMgKi8sCiAJCQkJNDVFMTJEODgwNkE0
OUIwRjAwRTlERjg0IC8qIGpzYy5jcHAgKi8sCiAJCQkJRjY4RUJCOEMwMjU1RDRDNjAxRkY2MEY3
IC8qIGNvbmZpZy5oICovLAogCQkJCUY1QzI5MEU2MDI4NEY5OEUwMTg2MzVDQSAvKiBKYXZhU2Ny
aXB0Q29yZVByZWZpeC5oICovLApAQCAtMjkzNCw2ICsyOTQ2LDcgQEAKIAkJCQkxNDMyRUJENzBB
MzRDQUQ0MDA3MTdCOUYgLyogQVBJICovLAogCQkJCTk2ODhDQjEyMEVEMTJCNEUwMDFENjQ5RiAv
KiBhc3NlbWJsZXIgKi8sCiAJCQkJQTU0Q0YyRUExODRFQTczOTAwMjM3RjE5IC8qIGJpbmRpbmdz
ICovLAorCQkJCUE3RDgwMTlGMTg4MEQ2NkUwMDI2QzM5QiAvKiBidWlsdGlucyAqLywKIAkJCQk5
NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8sCiAJCQkJN0UzOUQ4MUQwRUMz
OEVGQTAwM0FGMTFBIC8qIGJ5dGVjb21waWxlciAqLywKIAkJCQkxQzkwNTEzRTBCQTlFODgzMDA4
MUU5RDAgLyogQ29uZmlndXJhdGlvbnMgKi8sCkBAIC0zNTA5LDYgKzM1MjIsOCBAQAogCQk2NTBG
REY4RDA5RDBGQ0E3MDA3NjlFNTQgLyogRGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlBN0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIg
LyogSlNDQnVpbHRpbnMuY3BwICovLAorCQkJCUE3RDgwMUE3MTg4MEQ2QTgwMDI2QzM5QiAvKiBK
U0NCdWlsdGlucy5oICovLAogCQkJCUJDMThDNTIzMEUxNkZDOEEwMEIzNDQ2MCAvKiBBcnJheVBy
b3RvdHlwZS5sdXQuaCAqLywKIAkJCQlCQ0QyMDNFNzBFMTcxOEY0MDAyQzdFODIgLyogRGF0ZVBy
b3RvdHlwZS5sdXQuaCAqLywKIAkJCQlBNTEzRTVDNjE4NUY5NDM2MDA3RTk1QUQgLyogSW5qZWN0
ZWRTY3JpcHRTb3VyY2UuaCAqLywKQEAgLTM4MTEsNiArMzgyNiw3IEBACiAJCQkJQTc5MERENkEx
ODJGNDk5NzAwNTg4ODA3IC8qIEpTU2V0SXRlcmF0b3IuaCAqLywKIAkJCQlCQzAyRTlCNjBFMTg0
MkZBMDAwRjkyOTcgLyogSlNTdHJpbmcuY3BwICovLAogCQkJCUY2OTJBODYyMDI1NTU5N0QwMUZG
NjBGNyAvKiBKU1N0cmluZy5oICovLAorCQkJCUE3MURBODBFMTg4MERCQUIwMEQxRjI5OSAvKiBK
U1N0cmluZ0lubGluZXMuaCAqLywKIAkJCQk4NkU4NTUzODExMUI5OTY4MDAxQUY1MUUgLyogSlNT
dHJpbmdCdWlsZGVyLmggKi8sCiAJCQkJMjYwMEI1QTQxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3Ry
aW5nSm9pbmVyLmNwcCAqLywKIAkJCQkyNjAwQjVBNTE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJp
bmdKb2luZXIuaCAqLywKQEAgLTQ1NjEsNiArNDU3NywxNiBAQAogCQkJcGF0aCA9IHJlbW90ZTsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUE3RDgwMTlGMTg4MEQ2NkUwMDI2
QzM5QiAvKiBidWlsdGlucyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4g
PSAoCisJCQkJQTdEODAxQTAxODgwRDY2RTAwMjZDMzlCIC8qIEFycmF5LnByb3RvdHlwZS5qcyAq
LywKKwkJCQlBN0Q4MDFBMTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmNw
cCAqLywKKwkJCQlBN0Q4MDFBMjE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVz
LmggKi8sCisJCQkpOworCQkJcGF0aCA9IGJ1aWx0aW5zOworCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKKwkJfTsKIC8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEhl
YWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTQ2MDYsMTEgKzQ2MzIsMTEgQEAKIAkJCQk4
NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE1Q0VFRTE1MTg3RjNCQUQwMEU1NUM5OSAvKiBJbnNwZWN0b3JBZ2VudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNjVDMDI4NUQxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5o
IGluIEhlYWRlcnMgKi8sCi0gCQkJCTJBNjgyOTVCMTg3NUY4MDUwMEI2QzNFMiAvKiBDb3B5V3Jp
dGVCYXJyaWVyLmggaW4gSGVhZGVycyAqLywKLSAgICAgICAgICAgICAgICAyQTRFQzkwQzE4NjBE
NkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQky
QTY4Mjk1QjE4NzVGODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMkE0RUM5MEMxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkU1OTMyQTgxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlT
Y29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzMjQzOTMxODU2OTcwOTAwMkVENjkyIC8qIENv
ZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5IGluIEhlYWRlcnMgKi8sCi0gCQkJCUE1MzI0
MzkyMTg1Njk3MDkwMDJFRDY5MiAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGluIEhlYWRl
cnMgKi8sCisJCQkJQTUzMjQzOTIxODU2OTcwOTAwMkVENjkyIC8qIENvZGVHZW5lcmF0b3JJbnNw
ZWN0b3IucHkgaW4gSGVhZGVycyAqLywKIAkJCQkwRjI0RTU0RjE3RUUyNzQ5MDBBQkIyMTcgLyog
VGVtcFJlZ2lzdGVyU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTBFNEI2NDE4ODA5REQ1MDA2
OEE0NkQgLyogSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZFQjU4QzE1MTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJvckhhbmRsaW5nU2NvcGUuaCBpbiBIZWFk
ZXJzICovLApAQCAtNDYyMiw3ICs0NjQ4LDcgQEAKIAkJCQkwRjgzMzVCODE2MzlDMUVBMDAxNDQz
QjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBF
MjkxODdDQTVFNjAwODQzQjEwIC8qIGlubGluZS1hbmQtbWluaWZ5LXN0eWxlc2hlZXRzLWFuZC1z
Y3JpcHRzLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMkIxODdDQTc1QjAwODQzQjEwIC8q
IGpzbWluLnB5IGluIEhlYWRlcnMgKi8sCi0gCQkJCUE1MzI0Mzk4MTg1NkE0ODkwMDJFRDY5MiAv
KiBJbnNwZWN0b3JKUy5qc29uIGluIEhlYWRlcnMgKi8sCisJCQkJQTUzMjQzOTgxODU2QTQ4OTAw
MkVENjkyIC8qIEluc3BlY3RvckpTLmpzb24gaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUyQTE4
N0NBNzU5MDA4NDNCMTAgLyogeHhkLnBsIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVBMDg2MjAxODJC
N0EwNDAwRjZEODUxIC8qIEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjM1
MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC00NzMz
LDcgKzQ3NTksNyBAQAogCQkJCUExQTAwOUMwMTgzMUEyMkQwMENGODcxMSAvKiBNYWNyb0Fzc2Vt
YmxlckFSTTY0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDOURDNTEzMjhERjgyMDAyQjJBRDcg
LyogREZHQnl0ZUNvZGVQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDg1MzI4MTg3REZE
RUMwMDgzQjY4NyAvKiBGVExBdmFpbGFibGVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8sCi0gICAg
ICAgICAgICAgICAgQTU5M0NGODcxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVn
aXN0cnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1OTNDRjg3MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJ
bnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI1NkMzNjE2MjdC
MEFEMDA3RjI3ODMgLyogREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmls
aXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZDOTU4MTRFRjkwQTIwMEM3MjUzMiAvKiBE
RkdDRkFQaGFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC00ODcyLDYgKzQ4OTgsNyBAQAogCQkJCTBG
RUEwQTFEMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRUEwQTFGMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTk0NTU5MzE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNH
bG9iYWxPYmplY3REZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0Q4MDFBOTE4ODBE
NkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTBB
MTcwNTEzREIwMEJCNzIyQyAvKiBGVExDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGNDg1MzJBMTg3REZERUMwMDgzQjY4NyAvKiBGVExSZWNvdmVyeU9wY29kZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZFQTBBMjMxNzA5NjA2OTAwQkI3MjJDIC8qIEZUTENvbW1vblZhbHVlcy5o
IGluIEhlYWRlcnMgKi8sCkBAIC00OTQ2LDYgKzQ5NzMsNyBAQAogCQkJCUJDMThDNDBGMEUxNkY1
Q0QwMEIzNDQ2MCAvKiBJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjVGOEJDRTE1
NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkI3RjM5OTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUE3RDgwMUE1MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzlBMTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGlu
Z0hlYWRlcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzlCMTVFRDhFNDYwMEYx
NjdCMiAvKiBJbmRleGluZ1R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQ0VGQUIwMTgwNUNB
NkQwMDQ3MkNFNCAvKiBJbml0aWFsaXplTExWTS5oIGluIEhlYWRlcnMgKi8sCkBAIC01MjE4LDYg
KzUyNDYsNyBAQAogCQkJCUE1MzI0Mzg4MTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JKU0Jh
Y2tlbmREaXNwYXRjaGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NTYwRTE2RjVDRDAw
QjM0NDYwIC8qIFByb3RlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzRDMzNCMTZBQTJEOTUw
MDYyRjAxRCAvKiBQcm90b3R5cGVNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3MURBODBGMTg4
MERCQUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
OTMzMkE0MTRDQTdERDkwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjBDRDRDMjE1RjFBNjA3MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk3QzAwOENFNzE4NzYzMUI2MDA5NTVDMjQgLyogTWljcm90YXNrLmgg
aW4gSGVhZGVycyAqLywKQEAgLTU4MzYsNiArNTg2NSw3IEBACiAJCQkJQTdEODlDRjIxN0EwQjhD
QzAwNzczQUQ4IC8qIERGR0Jhc2ljQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcwQjA4
MzIxN0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBN0Q4OUNGMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJQTdEODAxQTQxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5F
eGVjdXRhYmxlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkVDOURDNDEzMjhERjgyMDAyQjJB
RDcgLyogREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEODJFMjEx
NDE3MkNFMzAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkZGQzk1NzE0RUY5MEEwMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC01ODUyLDYgKzU4ODIsNyBAQAogCQkJCTBGRkZDOTU5MTRFRjkwQTYwMEM3MjUzMiAv
KiBERkdDU0VQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJGQzc3MjE2RTEyRjcxMDAz
OEQ5NzYgLyogREZHRENFUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4RjJCOTkxNzJG
MDRGRjAwN0RCREE1IC8qIERGR0Rlc2lyZWRJZGVudGlmaWVycy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlBN0Q4MDFBODE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTczRTEzMzAxNzk2MjRDRDAwRTRERUE4IC8qIERGR0Rlc2lyZWRTdHJ1Y3R1
cmVDaGFpbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzJDMEY3Q0QxN0JCRkM1QjAwNDY0RkU0
IC8qIERGR0Rlc2lyZWRUcmFuc2l0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkU4NTM0
QjE3MjNDREE1MDBCNjE4RjUgLyogREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtNTk3Niw3ICs2MDA3LDcgQEAKIAkJCQkwRjZCMUNDNTE4NjJDNDc4MDA4NDVEOTcg
LyogRlRMVW53aW5kSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM5QTE4MDNBREI3
MDA3M0MyQkMgLyogRlRMU3RhY2tNYXBzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEwQTE2
MTcwNkJCOTAwMEJCNzIyQyAvKiBGVExTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKLSAJCQkJN0Mw
MDhDRDIxODZGOEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk3QzAwOENEMjE4NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9taXNlRnVuY3Rpb25z
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNkIxQ0I1MTg1RkM5RTkwMDg0NUQ5NyAvKiBGVExK
U0NhbGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMzVCRTExNzE3OEUxQzAwNjkwQzdGIC8q
IEZUTFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTkzQ0Y3QzE4NDAzNjAzMDBCRkNF
MjcgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAppbmRleCBhZjE0
ZTMzZWFjMDU5N2YyZDc4YzRiM2NkMTYzNTQxMWRhYmE5NjVlLi42NzkyM2YwODIzYzJmYmFiMzEx
MjhhZGI1MTlkYzg5ZWEwMmI2NTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTGlua0J1ZmZlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5l
cy5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgPHd0
Zi9Db21waWxhdGlvblRocmVhZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9BcnJheS5wcm90b3R5cGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ViNDJmNWNjNDMzZjE2MzYzNDNi
ZmM5ODJhYTJhYWZiMzM2ZTk0OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9uIGV2ZXJ5KGNh
bGxiYWNrIC8qLCB0aGlzQXJnICovKSB7CisgICAgInVzZSBzdHJpY3QiOworICAgIGlmICh0aGlz
ID09PSBudWxsKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBl
LmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIik7CisgICAgCisgICAgaWYg
KHRoaXMgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5
LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkIik7
CisgICAgCisgICAgdmFyIGFycmF5ID0gQE9iamVjdCh0aGlzKTsKKyAgICB2YXIgbGVuZ3RoID0g
YXJyYXkubGVuZ3RoID4+PiAwOworICAgIAorICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICJm
dW5jdGlvbiIpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUu
ZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7CisKKyAgICB2YXIgdGhpc0FyZyA9
IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkOworICAgIAor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKCEoaSBp
biBhcnJheSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFjYWxsYmFjay5A
Y2FsbCh0aGlzQXJnLCBhcnJheVtpXSwgaSwgYXJyYXkpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zNDFkYmI1ZjkyMjVlMjhhMTJlZDNkMTc5OGZmMTc2OGU0MzY3MWE2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxl
cy5jcHAKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJ1aWx0aW5FeGVj
dXRhYmxlcy5oIgorCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkpTQ2VsbElu
bGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgorI2luY2x1ZGUgIlBhcnNl
ci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworQnVpbHRpbkV4ZWN1dGFibGVzOjpCdWlsdGluRXhl
Y3V0YWJsZXMoVk0mIHZtKQorICAgIDogbV92bSh2bSkKKyNkZWZpbmUgSU5JVElBTElaRV9CVUlM
VElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSAsIG1fIyNuYW1l
IyNTb3VyY2UobWFrZVNvdXJjZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChzXyMjbmFt
ZSwgbGVuZ3RoKSwgU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoIjxidWlsdGluPiIpKSkK
KyAgICBKU0NfRk9SRUFDSF9CVUlMVElOKElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVS
UykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJTl9TVFJJTkdTCit7Cit9CisKK1VubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxl
KGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSkKK3sKKyAg
ICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lOworICAgIFBhcnNlckVy
cm9yIGVycm9yOworICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9IHBhcnNlPFByb2dy
YW1Ob2RlPigmbV92bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIEpTUGFyc2VCdWlsdGluLCBK
U1BhcnNlUHJvZ3JhbUNvZGUsIGVycm9yLCAmcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CisK
KyAgICBpZiAoIXByb2dyYW0pIHsKKyAgICAgICAgZGF0YUxvZygiRmF0YWwgZXJyb3IgY29tcGls
aW5nIGJ1aWx0aW4gZnVuY3Rpb24gJyIsIG5hbWUuc3RyaW5nKCksICInOiAiLCBlcnJvci5tX21l
c3NhZ2UpOworICAgICAgICBDUkFTSCgpOworICAgIH0KKworICAgIFN0YXRlbWVudE5vZGUqIGV4
cHJTdGF0ZW1lbnQgPSBwcm9ncmFtLT5zaW5nbGVTdGF0ZW1lbnQoKTsKKyAgICBSRUxFQVNFX0FT
U0VSVChleHByU3RhdGVtZW50KTsKKyAgICBSRUxFQVNFX0FTU0VSVChleHByU3RhdGVtZW50LT5p
c0V4cHJTdGF0ZW1lbnQoKSk7CisgICAgRXhwcmVzc2lvbk5vZGUqIGZ1bmNFeHByID0gc3RhdGlj
X2Nhc3Q8RXhwclN0YXRlbWVudE5vZGUqPihleHByU3RhdGVtZW50KS0+ZXhwcigpOworICAgIFJF
TEVBU0VfQVNTRVJUKGZ1bmNFeHByKTsKKyAgICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwci0+aXNG
dW5jRXhwck5vZGUoKSk7CisgICAgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSA9IHN0YXRpY19jYXN0
PEZ1bmNFeHByTm9kZSo+KGZ1bmNFeHByKS0+Ym9keSgpOworICAgIFJFTEVBU0VfQVNTRVJUKCFw
cm9ncmFtLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKKyAgICAKKyAgICBib2R5LT5zZXRFbmRQ
b3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKKyAgICBSRUxFQVNFX0FTU0VSVChi
b2R5KTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5LT5pZGVudCgpLmlzTnVsbCgpKTsKKyAgICAK
KyAgICAvLyBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgYW4gaW5wdXQgc3RyaW5nIHRoYXQgd291bGQg
cmVzdWx0IGluIGEgc2luZ2xlIGFub255bW91cyBmdW5jdGlvbiBleHByZXNzaW9uLgorICAgIGJv
ZHktPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOworICAgIFJFTEVB
U0VfQVNTRVJUKGJvZHkpOworICAgIGZvciAoY29uc3QgYXV0byYgY2xvc2VkVmFyaWFibGUgOiBw
cm9ncmFtLT5jbG9zZWRWYXJpYWJsZXMoKSkgeworICAgICAgICBpZiAoY2xvc2VkVmFyaWFibGUg
PT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMuaW1wbCgpKQorICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgCisgICAgICAgIGlmIChjbG9zZWRWYXJpYWJsZSA9PSBtX3ZtLnByb3BlcnR5
TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQuaW1wbCgpKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGNsb3NlZFZhcmlhYmxlLT5pc0VtcHR5VW5pcXVlKCkpOwor
ICAgIH0KKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxl
ID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmbV92bSwgc291cmNlLCBib2R5
LCB0cnVlLCBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbik7CisgICAgZnVuY3Rpb25FeGVjdXRhYmxl
LT5tX25hbWVWYWx1ZS5zZXQobV92bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBqc1N0cmluZygmbV92
bSwgbmFtZS5zdHJpbmcoKSkpOworICAgIHJldHVybiBmdW5jdGlvbkV4ZWN1dGFibGU7Cit9CisK
KyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBs
ZW5ndGgpIFwKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6
Om5hbWUjI0V4ZWN1dGFibGUoKSBcCit7XAorICAgIGlmICghbV8jI25hbWUjI0V4ZWN1dGFibGUp
XAorICAgICAgICBtXyMjbmFtZSMjRXhlY3V0YWJsZSA9IGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxl
KG1fIyNuYW1lIyNTb3VyY2UsIG1fdm0ucHJvcGVydHlOYW1lcy0+ZnVuY3Rpb25OYW1lKTtcCisg
ICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1wKK30KK0pTQ19GT1JFQUNIX0JV
SUxUSU4oREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgRVhQT1NFX0JVSUxUSU5f
U09VUkNFUworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QnVpbHRpbkV4ZWN1dGFibGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbkV4ZWN1dGFibGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDlhMTllMjYxNTA3OTRhNjY5ZWM5OGUzOTli
ZjY3ZjdmNzEwNjQxOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBCdWlsdGluRXhlY3V0
YWJsZXNfaAorI2RlZmluZSBCdWlsdGluRXhlY3V0YWJsZXNfaAorCisjaW5jbHVkZSAiSlNDQnVp
bHRpbnMuaCIKKyNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSAiV2Vhay5oIgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIElkZW50aWZpZXI7CitjbGFzcyBWTTsKKwor
Y2xhc3MgQnVpbHRpbkV4ZWN1dGFibGVzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0
cjxCdWlsdGluRXhlY3V0YWJsZXM+IGNyZWF0ZShWTSYgdm0pCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IEJ1aWx0aW5FeGVjdXRhYmxlcyh2bSkpOworICAgIH0KKyAgICAKKyNk
ZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5n
dGgpIFwKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuYW1lIyNFeGVjdXRhYmxlKCk7IFwK
K2NvbnN0IFNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIHsgcmV0dXJuIG1fIyNuYW1lIyNTb3Vy
Y2U7IH0KKyAgICAKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOKEVYUE9TRV9CVUlMVElOX0VYRUNV
VEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX1NPVVJDRVMKKyAgICAKK3ByaXZhdGU6Cisg
ICAgQnVpbHRpbkV4ZWN1dGFibGVzKFZNJik7CisgICAgVk0mIG1fdm07CisgICAgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKGNvbnN0IFNvdXJjZUNv
ZGUmLCBjb25zdCBJZGVudGlmaWVyJik7CisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0Vf
TUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aClcCisgICAgU291cmNlQ29kZSBtXyMj
bmFtZSMjU291cmNlOyBcCisgICAgV2VhazxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4gbV8j
I25hbWUjI0V4ZWN1dGFibGU7CisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTihERUNMQVJFX0JVSUxU
SU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJT
Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QXJyYXlQcm9maWxlLmNwcAppbmRleCA0YzA1NWZlYTU3MzhmMWM0NjMyNjZkNGU5YTkxNTQ4YTEy
OTM0NzA5Li5lYWVmZTU0ZjJkMTUyODRiNjRiZjY5OTcyNjU4Y2QxYzYzYjRlYTc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcApAQCAtMjcs
NiArMjcsNyBAQAogI2luY2x1ZGUgIkFycmF5UHJvZmlsZS5oIgogCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvQ29t
bWFQcmludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogI2luY2x1ZGUgPHd0
Zi9TdHJpbmdQcmludFN0cmVhbS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAppbmRleCBkNzQ4OWQzMWFiZDdjOTlmMWJj
NmZhZmFlNjU4MTExMmFiZGFjZmRiLi4xYTNiNWY0Yzc4MDdiOTQ4OGZmMzY1NzJmNzk0ZDBiYjlm
MzhkMjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVCYXNpY0Jsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVCYXNpY0Jsb2NrLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2Rl
QmFzaWNCbG9jay5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSlNGdW5j
dGlvbklubGluZXMuaCIKICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKIAogbmFtZXNw
YWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCmluZGV4IDkyNjMzNGM0NDRjOWMyZjNkZmNj
OTUwMTJjZDBhNGEwMzEwNGQyZDkuLmFkNGFlMjI5NWVhYzQ4YWE0MGFmYmVlM2ViNjkyODk2ZmNj
YWJkMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJG
dWxsQnl0ZWNvZGVMaXZlbmVzcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAj
aW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAppbmRleCA2YTYw
MDU3NmEwMDBhZGFjOGFmMjE0ZTk4ODEzNjQ2MTlmMjlhMDEwLi40YmY4MTg4NjYwMjhjNzk2YTcy
ZTU3ODMzMmU0Njc3NTU2YjIzN2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiREZH
T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkRGR1RodW5rcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rp
b25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZlci5oIgogCiAjaWYgRU5BQkxFKEpJ
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXgg
MjYzZWM3Y2FkZjRmNzljYTgxMDI0NDFlNjJiZjJhMDViNWRkYzNmMi4uNzUxNTA2NTQyMzc2ZDdl
ZGM1OTlhYTAwZjliMTI2ODVjZGEzNTJjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTQzLDExICs0MywxMyBAQAogI2luY2x1ZGUgIkpJVC5o
IgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCi0jaW5j
bHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAi
TExJbnRFbnRyeXBvaW50LmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2lu
Y2x1ZGUgIk5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1
Y3Rvci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQb2x5bW9ycGhpY1B1
dEJ5SWRMaXN0LmgiCiAjaW5jbHVkZSAiUmVkdWNlV2hpdGVzcGFjZS5oIgpAQCAtMTU2OSw3ICsx
NTcxLDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVj
dXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW4KIAogICAgIHNldENvbnN0YW50UmVnaXN0
ZXJzKHVubGlua2VkQ29kZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVycygpKTsKICAgICBpZiAodW5s
aW5rZWRDb2RlQmxvY2stPnVzZXNHbG9iYWxPYmplY3QoKSkKLSAgICAgICAgbV9jb25zdGFudFJl
Z2lzdGVyc1t1bmxpbmtlZENvZGVCbG9jay0+Z2xvYmFsT2JqZWN0UmVnaXN0ZXIoKS5vZmZzZXQo
KV0uc2V0KCptX3ZtLCBvd25lckV4ZWN1dGFibGUsIG1fZ2xvYmFsT2JqZWN0LmdldCgpKTsKKyAg
ICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1t1bmxpbmtlZENvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
UmVnaXN0ZXIoKS50b0NvbnN0YW50SW5kZXgoKV0uc2V0KCptX3ZtLCBvd25lckV4ZWN1dGFibGUs
IG1fZ2xvYmFsT2JqZWN0LmdldCgpKTsKICAgICBtX2Z1bmN0aW9uRGVjbHMucmVzaXplVG9GaXQo
dW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpKTsKICAgICBmb3IgKHNp
emVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSwg
aSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNs
KGkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDY4
YmMwMzc5ZjU3NDRjOWE4Zjc0MzFkYjY0ZjhhYjU0ZTZlMTA1M2YuLjQ5OTVjNTJjZjhiMmIxYjRk
NjI4MDQ1M2VlZDI3Yzc3NGE0OTU1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmgKQEAgLTU2LDcgKzU2LDYgQEAKICNpbmNsdWRlICJIYW5kbGVySW5mby5o
IgogI2luY2x1ZGUgIk9iamVjdEFsbG9jYXRpb25Qcm9maWxlLmgiCiAjaW5jbHVkZSAiT3B0aW9u
cy5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQdXRQcm9wZXJ0eVNsb3Qu
aCIKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
a0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAKaW5kZXggYmU1MGM5Nzc4YmYzM2UzMzlhYzgzNGJm
NTZlM2IxZTc1NTg2ZmUzZS4uYjc2NDZlZDFlZjE2NDE4OWZjZmM3YjUzNjU2ZmI2NWJlZDA2NGQy
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0pl
dHRpc29uaW5nV2F0Y2hwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgorI2luY2x1
ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAKaW5kZXggNjhkYzZiMDUzMzU1
OTBlYzRjODFjNDIzNDZiYjc0ZGJiZDhmYWM1Ni4uMTU3ODgwODkzNGRkM2NjNGNkOTdkMjcxYWU4
YWM4YmZlMzk3NDZjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
T3JpZ2luLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2lu
Y2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJK
U0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZmls
ZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcApp
bmRleCA5ODZlMDNkMGNiYTcxODViMzljZWUwMjNmNGFiNmJjOWI4Y2NiNmU0Li42ZjJkNWViYTFj
YTQ1ZGRlYjFkZjY1ZmQwNTEyMzNlNWYxMzhiZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9j
a0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdDb21tb24uaCIKICNpbmNsdWRlICJERkdFeGl0UHJv
ZmlsZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcAppbmRleCAxZGZiNWFjNmFkOTA5M2Y4ZjgxMTAxZWY3ZjJlNjEyMzExYWMxOTM5
Li40MzM5MGQ5NjVmYzUwMzQwMTZmN2JmZmYyM2U2OGJiMWUwNTQ1NTJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAg
LTQ5LDkgKzQ5LDkgQEAgY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jazo6
c19pbmZvID0geyAiVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrIiwKIGNvbnN0IENsYXNzSW5mbyBV
bmxpbmtlZEV2YWxDb2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkRXZhbENvZGVCbG9jayIs
ICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRFdmFsQ29k
ZUJsb2NrKSB9OwogY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OnNf
aW5mbyA9IHsgIlVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCAwLCAw
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2spIH07CiAKLXN0
YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2Nr
KFZNJiB2bSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1v
ZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYg
ZXJyb3IpCitzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlv
bkNvZGVCbG9jayhWTSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxl
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwg
RGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgVW5s
aW5rZWRGdW5jdGlvbktpbmQgZnVuY3Rpb25LaW5kLCBQYXJzZXJFcnJvciYgZXJyb3IpCiB7Ci0g
ICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGJvZHkgPSBwYXJzZTxGdW5jdGlvbkJvZHlOb2Rl
Pigmdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+cGFyYW1ldGVycygpLCBleGVjdXRhYmxlLT5uYW1l
KCksIGV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCkgPyBKU1BhcnNlU3RyaWN0IDogSlNQ
YXJzZU5vcm1hbCwgSlNQYXJzZUZ1bmN0aW9uQ29kZSwgZXJyb3IpOworICAgIFJlZlB0cjxGdW5j
dGlvbkJvZHlOb2RlPiBib2R5ID0gcGFyc2U8RnVuY3Rpb25Cb2R5Tm9kZT4oJnZtLCBzb3VyY2Us
IGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxl
LT50b1N0cmljdG5lc3MoKSwgSlNQYXJzZUZ1bmN0aW9uQ29kZSwgZXJyb3IpOwogCiAgICAgaWYg
KCFib2R5KSB7CiAgICAgICAgIEFTU0VSVChlcnJvci5tX3R5cGUgIT0gUGFyc2VyRXJyb3I6OkVy
cm9yTm9uZSk7CkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKiBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKFZNJiB2bSwgVW5saW5rZWRGdW5jCiAgICAg
Ym9keS0+ZmluaXNoUGFyc2luZyhleGVjdXRhYmxlLT5wYXJhbWV0ZXJzKCksIGV4ZWN1dGFibGUt
Pm5hbWUoKSwgZXhlY3V0YWJsZS0+ZnVuY3Rpb25OYW1lSXNJblNjb3BlVG9nZ2xlKCkpOwogICAg
IGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGJvZHktPmZlYXR1cmVzKCksIGJvZHktPmhhc0NhcHR1
cmVkVmFyaWFibGVzKCkpOwogICAgIAotICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJl
c3VsdCA9IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmdm0sIEZ1bmN0aW9uQ29k
ZSwgRXhlY3V0YWJsZUluZm8oYm9keS0+bmVlZHNBY3RpdmF0aW9uKCksIGJvZHktPnVzZXNFdmFs
KCksIGJvZHktPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpKTsKKyAg
ICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrOjpjcmVhdGUoJnZtLCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFibGVJbmZvKGJvZHktPm5l
ZWRzQWN0aXZhdGlvbigpLCBib2R5LT51c2VzRXZhbCgpLCBib2R5LT5pc1N0cmljdE1vZGUoKSwg
a2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGlu
RnVuY3Rpb24pKTsKICAgICBPd25QdHI8Qnl0ZWNvZGVHZW5lcmF0b3I+IGdlbmVyYXRvcihhZG9w
dFB0cihuZXcgQnl0ZWNvZGVHZW5lcmF0b3Iodm0sIGJvZHkuZ2V0KCksIHJlc3VsdCwgZGVidWdn
ZXJNb2RlLCBwcm9maWxlck1vZGUpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3ItPmdlbmVyYXRl
KCk7CiAgICAgYm9keS0+ZGVzdHJveURhdGEoKTsKQEAgLTgyLDEzICs4MiwxNCBAQCB1bnNpZ25l
ZCBVbmxpbmtlZENvZGVCbG9jazo6YWRkT3JGaW5kQ29uc3RhbnQoSlNWYWx1ZSB2KQogICAgIHJl
dHVybiBhZGRDb25zdGFudCh2KTsKIH0KIAotVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSogbm9kZSwgYm9vbCBpc0Zy
b21HbG9iYWxDb2RlKQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSogbm9kZSwgYm9vbCBpc0Zyb21HbG9iYWxDb2Rl
LCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kKQogICAgIDogQmFzZSgqdm0sIHN0cnVjdHVyZSkK
ICAgICAsIG1fbnVtQ2FwdHVyZWRWYXJpYWJsZXMobm9kZS0+Y2FwdHVyZWRWYXJpYWJsZUNvdW50
KCkpCiAgICAgLCBtX2ZvcmNlVXNlc0FyZ3VtZW50cyhub2RlLT51c2VzQXJndW1lbnRzKCkpCiAg
ICAgLCBtX2lzSW5TdHJpY3RDb250ZXh0KG5vZGUtPmlzU3RyaWN0TW9kZSgpKQogICAgICwgbV9o
YXNDYXB0dXJlZFZhcmlhYmxlcyhub2RlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKQogICAgICwg
bV9pc0Zyb21HbG9iYWxDb2RlKGlzRnJvbUdsb2JhbENvZGUpCisgICAgLCBtX2lzQnVpbHRpbkZ1
bmN0aW9uKGtpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24pCiAgICAgLCBtX25hbWUobm9k
ZS0+aWRlbnQoKSkKICAgICAsIG1faW5mZXJyZWROYW1lKG5vZGUtPmluZmVycmVkTmFtZSgpKQog
ICAgICwgbV9wYXJhbWV0ZXJzKG5vZGUtPnBhcmFtZXRlcnMoKSkKQEAgLTE2Niw3ICsxNjcsNyBA
QCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29kZUJsb2NrRm9yKFZNJiB2bSwgY29ucwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJs
b2NrKHZtLCB0aGlzLCBzb3VyY2UsIHNwZWNpYWxpemF0aW9uS2luZCwgZGVidWdnZXJNb2RlLCBw
cm9maWxlck1vZGUsIGVycm9yKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1
bHQgPSBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKHZtLCB0aGlzLCBzb3VyY2UsIHNwZWNpYWxp
emF0aW9uS2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGlzQnVpbHRpbkZ1bmN0aW9u
KCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGVy
cm9yKTsKICAgICAKICAgICBpZiAoZXJyb3IubV90eXBlICE9IFBhcnNlckVycm9yOjpFcnJvck5v
bmUpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjEwLDYgKzIxMSw3IEBAIFVubGlua2VkQ29kZUJs
b2NrOjpVbmxpbmtlZENvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb2Rl
VHlwZSBjb2RlCiAgICAgLCBtX2lzU3RyaWN0TW9kZShpbmZvLm1faXNTdHJpY3RNb2RlKQogICAg
ICwgbV9pc0NvbnN0cnVjdG9yKGluZm8ubV9pc0NvbnN0cnVjdG9yKQogICAgICwgbV9oYXNDYXB0
dXJlZFZhcmlhYmxlcyhmYWxzZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaW5mby5tX2lz
QnVpbHRpbkZ1bmN0aW9uKQogICAgICwgbV9maXJzdExpbmUoMCkKICAgICAsIG1fbGluZUNvdW50
KDApCiAgICAgLCBtX2VuZENvbHVtbihVSU5UX01BWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggYjlkYWUyZDVjNjljNzlj
ZWFhYTgwMjNkMmEzYTFmMjZkNDYwOTQzYi4uYWJmNmNmMzViOTMwNmE0ZjdhMzAxYWIwZGY3NjY2
ZWM2MTJlMzc5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmgKQEAgLTY2LDI2ICs2NiwzNSBAQCB0eXBlZGVmIHVuc2lnbmVkIFVu
bGlua2VkT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7CiB0eXBlZGVmIHVuc2lnbmVkIFVubGlua2Vk
TExJbnRDYWxsTGlua0luZm87CiAKIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7Ci0gICAgRXhlY3V0
YWJsZUluZm8oYm9vbCBuZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJp
Y3RNb2RlLCBib29sIGlzQ29uc3RydWN0b3IpCisgICAgRXhlY3V0YWJsZUluZm8oYm9vbCBuZWVk
c0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJpY3RNb2RlLCBib29sIGlzQ29u
c3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24pCiAgICAgICAgIDogbV9uZWVkc0FjdGl2
YXRpb24obmVlZHNBY3RpdmF0aW9uKQogICAgICAgICAsIG1fdXNlc0V2YWwodXNlc0V2YWwpCiAg
ICAgICAgICwgbV9pc1N0cmljdE1vZGUoaXNTdHJpY3RNb2RlKQogICAgICAgICAsIG1faXNDb25z
dHJ1Y3Rvcihpc0NvbnN0cnVjdG9yKQorICAgICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaXNC
dWlsdGluRnVuY3Rpb24pCiAgICAgewogICAgIH0KLSAgICBib29sIG1fbmVlZHNBY3RpdmF0aW9u
OwotICAgIGJvb2wgbV91c2VzRXZhbDsKLSAgICBib29sIG1faXNTdHJpY3RNb2RlOwotICAgIGJv
b2wgbV9pc0NvbnN0cnVjdG9yOworICAgIGJvb2wgbV9uZWVkc0FjdGl2YXRpb24gOiAxOworICAg
IGJvb2wgbV91c2VzRXZhbCA6IDE7CisgICAgYm9vbCBtX2lzU3RyaWN0TW9kZSA6IDE7CisgICAg
Ym9vbCBtX2lzQ29uc3RydWN0b3IgOiAxOworICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlvbiA6
IDE7Cit9OworCitlbnVtIFVubGlua2VkRnVuY3Rpb25LaW5kIHsKKyAgICBVbmxpbmtlZE5vcm1h
bEZ1bmN0aW9uLAorICAgIFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLAogfTsKIAogY2xhc3MgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgOiBwdWJsaWMgSlNDZWxsIHsKIHB1YmxpYzoKKyAgICBm
cmllbmQgY2xhc3MgQnVpbHRpbkV4ZWN1dGFibGVzOwogICAgIGZyaWVuZCBjbGFzcyBDb2RlQ2Fj
aGU7CisgICAgZnJpZW5kIGNsYXNzIFZNOwogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7Ci0gICAg
c3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9tR2xv
YmFsQ29kZSA9IGZhbHNlKQorICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
Y3JlYXRlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlOb2Rl
KiBub2RlLCBib29sIGlzRnJvbUdsb2JhbENvZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlu
a2VkRnVuY3Rpb25LaW5kKQogICAgIHsKLSAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU+KHZtLT5oZWFwKSkgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZt
LT51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgc291cmNlLCBub2Rl
LCBpc0Zyb21HbG9iYWxDb2RlKTsKKyAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU+KHZtLT5oZWFwKSkgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZtLT51
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgc291cmNlLCBub2RlLCBp
c0Zyb21HbG9iYWxDb2RlLCB1bmxpbmtlZEZ1bmN0aW9uS2luZCk7CiAgICAgICAgIGluc3RhbmNl
LT5maW5pc2hDcmVhdGlvbigqdm0pOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpA
QCAtOTksNiArMTA4LDE0IEBAIHB1YmxpYzoKICAgICB9CiAgICAgc2l6ZV90IHBhcmFtZXRlckNv
dW50KCkgY29uc3Q7CiAgICAgYm9vbCBpc0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNJblN0cmljdENvbnRleHQ7IH0KKyAgICBKU1BhcnNlclN0cmljdG5lc3MgdG9TdHJpY3Ru
ZXNzKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2lzQnVpbHRpbkZ1bmN0aW9uKQorICAg
ICAgICAgICAgcmV0dXJuIEpTUGFyc2VCdWlsdGluOworICAgICAgICBpZiAobV9pc0luU3RyaWN0
Q29udGV4dCkKKyAgICAgICAgICAgIHJldHVybiBKU1BhcnNlU3RyaWN0OworICAgICAgICByZXR1
cm4gSlNQYXJzZU5vcm1hbDsKKyAgICB9CiAgICAgRnVuY3Rpb25OYW1lSXNJblNjb3BlVG9nZ2xl
IGZ1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25O
YW1lSXNJblNjb3BlVG9nZ2xlOyB9CiAKICAgICB1bnNpZ25lZCBmaXJzdExpbmVPZmZzZXQoKSBj
b25zdCB7IHJldHVybiBtX2ZpcnN0TGluZU9mZnNldDsgfQpAQCAtMTQyLDggKzE1OSwxMCBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSW1tb3J0YWxTdHJ1Y3R1cmUgPSB0cnVl
OwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKKyAgICBib29sIGlzQnVpbHRp
bkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQorCiBwcml2
YXRlOgotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwgY29u
c3QgU291cmNlQ29kZSYsIEZ1bmN0aW9uQm9keU5vZGUqLCBib29sIGlzRnJvbUdsb2JhbENvZGUp
OworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwgY29uc3Qg
U291cmNlQ29kZSYsIEZ1bmN0aW9uQm9keU5vZGUqLCBib29sIGlzRnJvbUdsb2JhbENvZGUsIFVu
bGlua2VkRnVuY3Rpb25LaW5kKTsKICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jaz4gbV9jb2RlQmxvY2tGb3JDYWxsOwogICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrPiBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdDsKIApAQCAtMTUyLDYgKzE3
MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzSW5TdHJpY3RDb250ZXh0IDogMTsKICAgICBi
b29sIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgOiAxOwogICAgIGJvb2wgbV9pc0Zyb21HbG9iYWxD
b2RlIDogMTsKKyAgICBib29sIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogCiAgICAgSWRlbnRp
ZmllciBtX25hbWU7CiAgICAgSWRlbnRpZmllciBtX2luZmVycmVkTmFtZTsKQEAgLTMxOSw2ICsz
MzksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc051bWVyaWNDb21wYXJlRnVuY3Rpb24oYm9v
bCBpc051bWVyaWNDb21wYXJlRnVuY3Rpb24pIHsgbV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb24g
PSBpc051bWVyaWNDb21wYXJlRnVuY3Rpb247IH0KICAgICBib29sIGlzTnVtZXJpY0NvbXBhcmVG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CiAK
KyAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5G
dW5jdGlvbjsgfQorICAgIAogICAgIHZvaWQgc2hyaW5rVG9GaXQoKQogICAgIHsKICAgICAgICAg
bV9qdW1wVGFyZ2V0cy5zaHJpbmtUb0ZpdCgpOwpAQCAtNTAwLDYgKzUyMiw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX2lzU3RyaWN0TW9kZSA6IDE7CiAgICAgYm9vbCBtX2lzQ29uc3RydWN0b3Ig
OiAxOwogICAgIGJvb2wgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CisgICAgYm9vbCBtX2lz
QnVpbHRpbkZ1bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2ZpcnN0TGluZTsKICAgICB1bnNp
Z25lZCBtX2xpbmVDb3VudDsKICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAKaW5kZXggNjgxMGFiODAwMmNlNmJiOGQ3OGU3ZmYyMjI3ZjRjNmVhN2I3NThjMi4uZWM1MjFi
NTMwNDYzOTIzZTc0YzAxMGZhMjE4ZTU5ZWQyYTlhM2NhZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAg
LTE3NSw2ICsxNzUsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0m
IHZtLCBQcm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUAogI2VuZGlmCiAgICAgLCBt
X3VzZXNFeGNlcHRpb25zKGZhbHNlKQogICAgICwgbV9leHByZXNzaW9uVG9vRGVlcChmYWxzZSkK
KyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oZmFsc2UpCiB7CiAgICAgaWYgKG1fc2hvdWxkRW1p
dERlYnVnSG9va3MpCiAgICAgICAgIG1fY29kZUJsb2NrLT5zZXROZWVkc0Z1bGxTY29wZUNoYWlu
KHRydWUpOwpAQCAtMjIyLDcgKzIyMywxMyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbkJvZHksIFVubAogI2Vu
ZGlmCiAgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQogICAgICwgbV9leHByZXNzaW9uVG9v
RGVlcChmYWxzZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oY29kZUJsb2NrLT5pc0J1aWx0
aW5GdW5jdGlvbigpKQogeworICAgIGlmIChtX2lzQnVpbHRpbkZ1bmN0aW9uKSB7CisgICAgICAg
IG1fc2hvdWxkRW1pdFByb2ZpbGVIb29rcyA9IGZhbHNlOworICAgICAgICBtX3Nob3VsZEVtaXRE
ZWJ1Z0hvb2tzID0gZmFsc2U7CisgICAgfQorCiAgICAgaWYgKG1fc2hvdWxkRW1pdERlYnVnSG9v
a3MpCiAgICAgICAgIG1fY29kZUJsb2NrLT5zZXROZWVkc0Z1bGxTY29wZUNoYWluKHRydWUpOwog
CkBAIC00MzgsNiArNDQ1LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9y
KFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2QKICNlbmRpZgogICAg
ICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKICAgICAsIG1fZXhwcmVzc2lvblRvb0RlZXAoZmFs
c2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGZhbHNlKQogewogICAgIG1fY29kZUJsb2Nr
LT5zZXROZWVkc0Z1bGxTY29wZUNoYWluKHRydWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggNGU5ZjIx
M2M5YmZhNmNmMTk0YjFhMTRmZTkxOWU4MzMzN2FlMzVkOS4uMTU4NDI3NGI3OGVhNmMwYmQwZWZi
MGI5ODI1YzgxOGJlMGRiYzA2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNDYxLDcgKzQ2MSw5IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBib29sIHNob3VsZEVtaXREZWJ1Z0hvb2tzKCkgeyByZXR1
cm4gbV9zaG91bGRFbWl0RGVidWdIb29rczsgfQogICAgICAgICAKICAgICAgICAgYm9vbCBpc1N0
cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7IH0K
LQorICAgICAgICAKKyAgICAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KKyAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgZnJpZW5kIGNsYXNzIExhYmVsOwogICAgICAgICAKQEAgLTU0Myw3ICs1NDUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBtYWtlRnVuY3Rpb24oRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSkKICAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9z
Y29wZU5vZGUtPnNvdXJjZSgpLCBib2R5KTsKKyAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgYm9k
eSwgZmFsc2UsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6
IFVubGlua2VkTm9ybWFsRnVuY3Rpb24pOwogICAgICAgICB9CiAKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdEluaXRMYXp5UmVnaXN0ZXIoUmVnaXN0ZXJJRCopOwpAQCAtNjc3LDYgKzY3OSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wgbV91c2VzRXhjZXB0aW9uczsKICAgICAg
ICAgYm9vbCBtX2V4cHJlc3Npb25Ub29EZWVwOworICAgICAgICBib29sIG1faXNCdWlsdGluRnVu
Y3Rpb247CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDFmZmQ0ZjMxMTg4MmQwZWU1YzU1MTRmNWI4
YjI1OTM5ZDk3NWUzNzkuLjYyZWNhMzZhMTBkNzcwOGE5MjhkNDNhYzAzZjJmYzg2MTVjZWNhNzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAKQEAgLTI2LDEwICsyNiwxMCBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiTm9kZXMuaCIKLSNpbmNsdWRlICJOb2RlQ29uc3RydWN0b3JzLmgiCiAKICNpbmNsdWRl
ICJCeXRlY29kZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUg
IkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJK
SVQuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVk
ZSAiSlNPTk9iamVjdC5oIgogI2luY2x1ZGUgIkxhYmVsU2NvcGUuaCIKICNpbmNsdWRlICJMZXhl
ci5oIgorI2luY2x1ZGUgIk5vZGVDb25zdHJ1Y3RvcnMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25z
LmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIK
QEAgLTUzNSwzNiArNTM2LDM5IEBAIFJlZ2lzdGVySUQqIENhbGxGdW5jdGlvbkNhbGxEb3ROb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICBSZWZQdHI8
TGFiZWw+IGVuZCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYmFzZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRF
eHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0KCks
IHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uID0g
Z2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFz
ZS5nZXQoKSwgbV9pZGVudCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uID0gZ2Vu
ZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5n
ZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5jYWxsKTsKICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGZ1bmN0
aW9uLmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQ2FsbChmdW5j
dGlvbi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkpOworICAgIGJvb2wgZW1pdENhbGxDaGVjayA9ICFn
ZW5lcmF0b3IuaXNCdWlsdGluRnVuY3Rpb24oKTsKKyAgICBpZiAoZW1pdENhbGxDaGVjaykKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkNhbGwoZnVuY3Rpb24uZ2V0KCks
IHJlYWxDYWxsLmdldCgpKTsKKwogICAgIHsKICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9k
ZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcikgewogICAgICAgICAgICAgQXJndW1lbnRM
aXN0Tm9kZSogb2xkTGlzdCA9IG1fYXJncy0+bV9saXN0Tm9kZTsKICAgICAgICAgICAgIG1fYXJn
cy0+bV9saXN0Tm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwotCisgICAgICAgICAg
ICAKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0
b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsK
ICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJn
cyk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVn
aXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2Fs
bChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rp
b24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0g
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKLQogICAgICAgICAgICAg
bV9hcmdzLT5tX2xpc3ROb2RlID0gb2xkTGlzdDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUo
Z2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKICAgICAgICAgICAg
IENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNV
bmRlZmluZWQoKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUu
Z2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1l
bnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgZ2VuZXJh
dG9yLmVtaXRMYWJlbChyZWFsQ2FsbC5nZXQoKSk7Ci0gICAgewotICAgICAgICBDYWxsQXJndW1l
bnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgICAgICBnZW5lcmF0b3Iu
ZW1pdE1vdmUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7Ci0gICAg
ICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0KCks
IE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKKyAgICBpZiAoZW1pdENhbGxDaGVjaykgeworICAgICAgICBnZW5lcmF0
b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChyZWFs
Q2FsbC5nZXQoKSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFy
Z3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE1v
dmUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7CisgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBO
b0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7CisgICAgICAgIH0KKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQu
Z2V0KCkpOwogICAgIH0KLSAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAg
cmV0dXJuIHJldHVyblZhbHVlLmdldCgpOwogfQogCkBAIC01ODUsNjUgKzU4OSw2NyBAQCBSZWdp
c3RlcklEKiBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLAogICAgIFJlZlB0cjxMYWJlbD4gZW5kID0gZ2VuZXJhdG9yLm5l
d0xhYmVsKCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUobV9iYXNlKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Np
b25EaXZvdCgpLCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2Vu
ZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBtX2lkZW50KTsKKyAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gZnVuY3Rpb247CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVy
blZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBmdW5jdGlvbi5nZXQoKSk7
Ci0gICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KGZ1bmN0aW9uLmdldCgp
LCByZWFsQ2FsbC5nZXQoKSk7Ci0gICAgewotICAgICAgICBpZiAobWF5QmVDYWxsKSB7Ci0gICAg
ICAgICAgICBpZiAobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9l
eHByKSB7Ci0gICAgICAgICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogb2xkTGlzdCA9IG1fYXJn
cy0+bV9saXN0Tm9kZTsKLSAgICAgICAgICAgICAgICBpZiAobV9hcmdzLT5tX2xpc3ROb2RlLT5t
X25leHQpIHsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZS0+
bV9uZXh0LT5tX2V4cHItPmlzU2ltcGxlQXJyYXkoKSk7Ci0gICAgICAgICAgICAgICAgICAgIEFT
U0VSVCghbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fbmV4dCk7Ci0gICAgICAgICAgICAg
ICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IHN0YXRpY19jYXN0PEFycmF5Tm9kZSo+KG1fYXJn
cy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHIpLT50b0FyZ3VtZW50TGlzdChnZW5lcmF0b3Iu
dm0oKSwgMCwgMCk7Ci0gICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFs
RnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihk
c3QpLCBiYXNlLmdldCgpKTsKLSAgICAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxs
QXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG9sZExpc3QtPm1fZXhw
cik7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5n
ZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVu
dHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gbV9hcmdz
LT5tX2xpc3ROb2RlLT5tX25leHQ7Ci0gICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0
aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKLSAgICAgICAgICAgICAgICAgICAgQ2FsbEFyZ3Vt
ZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAgICAgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG9sZExp
c3QtPm1fZXhwcik7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1
cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNh
bGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9sZExpc3Q7
CisgICAgYm9vbCBlbWl0Q2FsbENoZWNrID0gIWdlbmVyYXRvci5pc0J1aWx0aW5GdW5jdGlvbigp
OworICAgIGlmIChlbWl0Q2FsbENoZWNrKSB7CisgICAgICAgIGZ1bmN0aW9uID0gZ2VuZXJhdG9y
LmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwg
Z2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5hcHBseSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0
SnVtcElmTm90RnVuY3Rpb25BcHBseShmdW5jdGlvbi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkpOwor
ICAgIH0KKyAgICBpZiAobWF5QmVDYWxsKSB7CisgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5v
ZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpIHsKKyAgICAgICAgICAgIEFyZ3VtZW50
TGlzdE5vZGUqIG9sZExpc3QgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CisgICAgICAgICAgICBpZiAo
bV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQobV9h
cmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwci0+aXNTaW1wbGVBcnJheSgpKTsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQoIW1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX25leHQpOwor
ICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IHN0YXRpY19jYXN0PEFycmF5Tm9k
ZSo+KG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHIpLT50b0FyZ3VtZW50TGlzdChn
ZW5lcmF0b3Iudm0oKSwgMCwgMCk7CisgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0
aW9uKGRzdCksIGJhc2UuZ2V0KCkpOworICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2Fs
bEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG9sZExpc3QtPm1fZXhwcik7
CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBy
ZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5t
X25leHQ7CiAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9
IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2Uu
Z2V0KCkpOwogICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5l
cmF0b3IsIG1fYXJncyk7Ci0gICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxB
cmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0
LT5tX2V4cHIpOwogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1
ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1
bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICB9
CisgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBvbGRMaXN0OwogICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1f
bGlzdE5vZGUtPm1fbmV4dCk7Ci0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvZmls
ZUhvb2tSZWdpc3RlcjsKLSAgICAgICAgICAgIGlmIChnZW5lcmF0b3Iuc2hvdWxkRW1pdFByb2Zp
bGVIb29rcygpKQotICAgICAgICAgICAgICAgIHByb2ZpbGVIb29rUmVnaXN0ZXIgPSBnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1
bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0
KSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1JlZ2lz
dGVyID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKTsKLSAg
ICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhcmdzUmVnaXN0ZXI7Ci0gICAgICAgICAgICBB
cmd1bWVudExpc3ROb2RlKiBhcmdzID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQ7Ci0gICAg
ICAgICAgICBpZiAoYXJncy0+bV9leHByLT5pc1Jlc29sdmVOb2RlKCkgJiYgZ2VuZXJhdG9yLndp
bGxSZXNvbHZlVG9Bcmd1bWVudHMoc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihhcmdzLT5tX2V4
cHIpLT5pZGVudGlmaWVyKCkpKQotICAgICAgICAgICAgICAgIGFyZ3NSZWdpc3RlciA9IGdlbmVy
YXRvci51bmNoZWNrZWRSZWdpc3RlckZvckFyZ3VtZW50cygpOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIGFyZ3NSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShhcmdzLT5t
X2V4cHIpOwotCi0gICAgICAgICAgICAvLyBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkgaWdub3Jl
cyBleHRyYSBhcmd1bWVudHMsIGJ1dCB3ZSBzdGlsbAotICAgICAgICAgICAgLy8gbmVlZCB0byBl
dmFsdWF0ZSB0aGVtIGZvciBzaWRlIGVmZmVjdHMuCi0gICAgICAgICAgICB3aGlsZSAoKGFyZ3Mg
PSBhcmdzLT5tX25leHQpKQotICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShhcmdz
LT5tX2V4cHIpOwotCi0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxWYXJhcmdzKHJldHVy
blZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJn
c1JlZ2lzdGVyLmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb2ZpbGVIb29rUmVn
aXN0ZXIuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAg
ICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCks
IGpzVW5kZWZpbmVkKCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZh
bHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFy
Z3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgfQot
ICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBBU1NFUlQobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9u
ZXh0KTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb2ZpbGVIb29rUmVnaXN0ZXI7Cisg
ICAgICAgIGlmIChnZW5lcmF0b3Iuc2hvdWxkRW1pdFByb2ZpbGVIb29rcygpKQorICAgICAgICAg
ICAgcHJvZmlsZUhvb2tSZWdpc3RlciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShn
ZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOworICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gdGhpc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYXJncy0+
bV9saXN0Tm9kZS0+bV9leHByKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFyZ3NSZWdp
c3RlcjsKKyAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogYXJncyA9IG1fYXJncy0+bV9saXN0Tm9k
ZS0+bV9uZXh0OworICAgICAgICBpZiAoYXJncy0+bV9leHByLT5pc1Jlc29sdmVOb2RlKCkgJiYg
Z2VuZXJhdG9yLndpbGxSZXNvbHZlVG9Bcmd1bWVudHMoc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUq
PihhcmdzLT5tX2V4cHIpLT5pZGVudGlmaWVyKCkpKQorICAgICAgICAgICAgYXJnc1JlZ2lzdGVy
ID0gZ2VuZXJhdG9yLnVuY2hlY2tlZFJlZ2lzdGVyRm9yQXJndW1lbnRzKCk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGFyZ3NSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShhcmdzLT5t
X2V4cHIpOworCisgICAgICAgIC8vIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseSBpZ25vcmVzIGV4
dHJhIGFyZ3VtZW50cywgYnV0IHdlIHN0aWxsCisgICAgICAgIC8vIG5lZWQgdG8gZXZhbHVhdGUg
dGhlbSBmb3Igc2lkZSBlZmZlY3RzLgorICAgICAgICB3aGlsZSAoKGFyZ3MgPSBhcmdzLT5tX25l
eHQpKQorICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7CisKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsVmFyYXJncyhyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1
bmN0aW9uLmdldCgpLCB0aGlzUmVnaXN0ZXIuZ2V0KCksIGFyZ3NSZWdpc3Rlci5nZXQoKSwgZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm9maWxlSG9va1JlZ2lzdGVyLmdldCgpLCBkaXZvdCgp
LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIH0KLSAgICBnZW5lcmF0b3IuZW1pdExh
YmVsKHJlYWxDYWxsLmdldCgpKTsKLSAgICB7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5l
bWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOwogICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1
bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUoY2Fs
bEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7CiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRG
dW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0KCkpOwogICAgIH0KLSAgICBn
ZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlLmdl
dCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hf
dGFibGUgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUKaW5kZXggMzk3
OTc2YjA2YzdhOWI1ODM2MzMyOTAwYTZlYmI5M2VjNjhiNzQ4Ni4uY2FkNjViYzRjYzg4OGUzMTRm
ODhkNjY1ZGQ0YTZlNjQ1YTA5YTM1NSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2NyZWF0ZV9oYXNoX3RhYmxlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFz
aF90YWJsZQpAQCAtMjg5LDcgKzI4OSwxNyBAQCBzdWIgb3V0cHV0KCkgewogICAgICAgICAgICAg
JGludHJpbnNpYyA9ICJSZWdFeHBUZXN0SW50cmluc2ljIiBpZiAoJGtleSBlcSAidGVzdCIpOwog
ICAgICAgICB9CiAKKyAgICAgICAgaWYgKCR2YWx1ZXNbJGldeyJ0eXBlIn0gZXEgIkZ1bmN0aW9u
IikgIHsKKyAgICAgICAgICAgIG15ICR0YWJsZUhlYWQgPSAkbmFtZTsKKyAgICAgICAgICAgICR0
YWJsZUhlYWQgPX4gcy9UYWJsZSQvLzsKKyAgICAgICAgICAgIHByaW50ICIgI2lmIEpTQ19CVUlM
VElOX0VYSVNUUygiIC4gdWMoJHRhYmxlSGVhZCAuICRrZXkpIC4iKVxuIjsKKyAgICAgICAgICAg
IHByaW50ICIgICB7IFwiJGtleVwiLCAoKCRhdHRyc1skaV0pICYgfkZ1bmN0aW9uKSB8IEJ1aWx0
aW4sICRpbnRyaW5zaWMsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxCdWlsdGluR2VuZXJhdG9yPigi
IC4gJHRhYmxlSGVhZCAuIHVjZmlyc3QoJGtleSkgLiAiQ29kZUdlbmVyYXRvciksIChpbnRwdHJf
dCkkc2Vjb25kVmFsdWUgfSxcbiI7CisgICAgICAgICAgICBwcmludCAiICNlbHNlXG4iCisgICAg
ICAgIH0KICAgICAgICAgcHJpbnQgIiAgIHsgXCIka2V5XCIsICRhdHRyc1skaV0sICRpbnRyaW5z
aWMsIChpbnRwdHJfdCkiIC4gJGZpcnN0Q2FzdFN0ciAuICIoJGZpcnN0VmFsdWUpLCAoaW50cHRy
X3QpIiAuICRzZWNvbmRDYXN0U3RyIC4gIigkc2Vjb25kVmFsdWUpIH0sXG4iOworICAgICAgICBp
ZiAoJHZhbHVlc1skaV17InR5cGUifSBlcSAiRnVuY3Rpb24iKSAgeworICAgICAgICAgICAgcHJp
bnQgIiAjZW5kaWZcbiIKKyAgICAgICAgfQogICAgICAgICAkaSsrOwogICAgIH0KICAgICBwcmlu
dCAiICAgeyAwLCAwLCBOb0ludHJpbnNpYywgMCwgMCB9XG4iOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdmFpbGFiaWxpdHkuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBdmFpbGFiaWxpdHkuY3BwCmluZGV4IDY2OWMyYjQzOTI0NmIwN2RkYjU3
ZDExNzg4MzAyOWE4OGQzYTRhZmYuLmQwYmNlZDFjZmJkMjM3NDY3OTM3ZWUxYjY3ZjkzMmE2NjM3
NGY4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXZhaWxhYmls
aXR5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0F2YWlsYWJpbGl0eS5j
cHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJERkdB
dmFpbGFiaWxpdHkuaCIKIAorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCisKICNpZiBF
TkFCTEUoREZHX0pJVCkKIAogI2luY2x1ZGUgIkRGR05vZGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDJmZjBjMzQxNDZlMmMwYmEyZmY3NmM0
ZDNmN2M0NmJhM2UyNTUxNDcuLjkwNDRjZGM2YjhjM2FkNGExZTk0MTg4ZGQxZDBlMjAwZTY5ZmI5
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAt
NDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIlZNLmgi
CiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIK
ICNpbmNsdWRlICJOYW1lSW5zdGFuY2UuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5o
IgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0
ZS1qcy1idWlsdGlucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjRiNmQ0OTlmMDI1YzA1M2IyZjk3YjZmMTAwZTg1
NTA0NmYzZTUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVy
YXRlLWpzLWJ1aWx0aW5zCkBAIC0wLDAgKzEsMzA0IEBACisjIS91c3IvYmluL3B5dGhvbgorIyBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisjIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorIyBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisjIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorIyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisjIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworaW1wb3J0IGZpbGVjbXAKK2ltcG9ydCBmbm1hdGNoCitpbXBvcnQgb3MKK2lt
cG9ydCByZQoraW1wb3J0IHNodXRpbAoraW1wb3J0IHN5cworaW1wb3J0IGRhdGV0aW1lCitpbXBv
cnQganNvbgorCitjb3B5cmlnaHRUZXh0ID0gIiIiICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi9cbgorIiIiCisKK2dlbmVyYXRvclN0cmluZyA9ICIvKiBHZW5lcmF0ZWQg
YnkgJXMgZG8gbm90IGhhbmQgZWRpdC4gKi9cbiIgJSBvcy5wYXRoLmJhc2VuYW1lKF9fZmlsZV9f
KQorCitmdW5jdGlvbkhlYWRSZWdFeHAgPSByZS5jb21waWxlKHIiZnVuY3Rpb25ccytcdytccypc
KC4qP1wpIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK2Z1bmN0aW9uTmFtZVJlZ0V4cCA9IHJlLmNv
bXBpbGUociJmdW5jdGlvblxzKyhcdyspXHMqXCgiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorZnVu
Y3Rpb25QYXJhbWV0ZXJGaW5kZXIgPSByZS5jb21waWxlKHIiXmZ1bmN0aW9uXHMrKD86XHcrKVxz
KlwoKCg/OlxzKlx3Kyk/XHMqKD86XHMqLFxzKlx3KykqKT9cKSIsIHJlLk1VTFRJTElORSB8IHJl
LlMpCisKK211bHRpbGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cKi4qP1wqXC8i
LCByZS5NVUxUSUxJTkUgfCByZS5TKQorc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21w
aWxlKHIiXC9cLy4qP1xuIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKKworZGVmIGdldENvcHlyaWdo
dChzb3VyY2UpOgorICAgIGNvcHlyaWdodEJsb2NrID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5m
aW5kYWxsKHNvdXJjZSlbMF0KKyAgICBjb3B5cmlnaHRCbG9jayA9IGNvcHlyaWdodEJsb2NrWzpj
b3B5cmlnaHRCbG9jay5pbmRleCgiUmVkaXN0cmlidXRpb24iKV0KKyAgICBjb3B5UmlnaHRMaW5l
cyA9IFtdCisKKyAgICBmb3IgbGluZSBpbiBjb3B5cmlnaHRCbG9jay5zcGxpdCgiXG4iKToKKyAg
ICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiLyoiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUu
cmVwbGFjZSgiKi8iLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKiIsICIiKQor
ICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCJDb3B5cmlnaHQiLCAiIikKKyAgICAgICAgbGlu
ZSA9IGxpbmUucmVwbGFjZSgiY29weXJpZ2h0IiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJl
cGxhY2UoIihDKSIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIoYykiLCAiIikK
KyAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgICAgICBpZiBsZW4obGluZSkgPT0gMDoK
KyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgY29weVJpZ2h0TGluZXMuYXBwZW5kKGxp
bmUpCisgICAgCisgICAgcmV0dXJuIGxpc3Qoc2V0KGNvcHlSaWdodExpbmVzKSkKKworCisKK2Rl
ZiBnZXRGdW5jdGlvbnMoc291cmNlKToKKworICAgIHNvdXJjZSA9IG11bHRpbGluZUNvbW1lbnRS
ZWdFeHAuc3ViKCIvKiovIiwgc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAuc3ViKCIvL1xuIiwgc291
cmNlKSkKKworICAgIG1hdGNoZXMgPSBbIGYgZm9yIGYgaW4gZnVuY3Rpb25IZWFkUmVnRXhwLmZp
bmRpdGVyKHNvdXJjZSldCisgICAgZnVuY3Rpb25Cb3VuZHMgPSBbXQorICAgIHN0YXJ0ID0gMAor
ICAgIGVuZCA9IDAKKyAgICBmb3IgbWF0Y2ggaW4gbWF0Y2hlczoKKyAgICAgICAgc3RhcnQgPSBt
YXRjaC5zdGFydCgpCisgICAgICAgIGlmIHN0YXJ0IDwgZW5kOgorICAgICAgICAgICAgY29udGlu
dWUKKyAgICAgICAgZW5kID0gbWF0Y2guZW5kKCkKKyAgICAgICAgd2hpbGUgc291cmNlW2VuZF0g
IT0gJ3snOgorICAgICAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICBkZXB0aCA9IDEKKyAg
ICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICB3aGlsZSBkZXB0aCA+IDA6CisgICAgICAgICAg
ICBpZiBzb3VyY2VbZW5kXSA9PSAneyc6CisgICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCAr
IDEKKyAgICAgICAgICAgIGVsaWYgc291cmNlW2VuZF0gPT0gJ30nOgorICAgICAgICAgICAgICAg
IGRlcHRoID0gZGVwdGggLSAxCisgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgIGZ1
bmN0aW9uQm91bmRzLmFwcGVuZCgoc3RhcnQsIGVuZCkpCisKKyAgICBmdW5jdGlvbnMgPSBbc291
cmNlW3N0YXJ0OmVuZF0uc3RyaXAoKSBmb3IgKHN0YXJ0LCBlbmQpIGluIGZ1bmN0aW9uQm91bmRz
XQorICAgIHJlc3VsdCA9IFtdCisgICAgZm9yIGZ1bmN0aW9uIGluIGZ1bmN0aW9uczoKKyAgICAg
ICAgZnVuY3Rpb24gPSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLnN1YigiIiwgZnVuY3Rpb24pCisg
ICAgICAgIGZ1bmN0aW9uTmFtZSA9IGZ1bmN0aW9uTmFtZVJlZ0V4cC5maW5kYWxsKGZ1bmN0aW9u
KVswXQorICAgICAgICBmdW5jdGlvblBhcmFtZXRlcnMgPSBmdW5jdGlvblBhcmFtZXRlckZpbmRl
ci5maW5kYWxsKGZ1bmN0aW9uKVswXS5zcGxpdCgnLCcpCisgICAgICAgIGlmIGxlbihmdW5jdGlv
blBhcmFtZXRlcnNbMF0pID09IDA6CisgICAgICAgICAgICBmdW5jdGlvblBhcmFtZXRlcnMgPSBb
XQorICAgICAgICAgICAgCisgICAgICAgIHJlc3VsdC5hcHBlbmQoKGZ1bmN0aW9uTmFtZSwgZnVu
Y3Rpb24sIGZ1bmN0aW9uUGFyYW1ldGVycykpCisgICAgcmV0dXJuIHJlc3VsdAorICAgICAgICAK
KworZGVmIGdlbmVyYXRlQ29kZShzb3VyY2UpOgorICAgIGlucHV0RmlsZSA9IG9wZW4oc291cmNl
LCAiciIpCisgICAgYmFzZU5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHNvdXJjZSkucmVwbGFjZSgi
LmpzIiwgIiIpCisgICAgCisgICAgc291cmNlID0gIiIKKyAgICBmb3IgbGluZSBpbiBpbnB1dEZp
bGU6CisgICAgICAgIHNvdXJjZSA9IHNvdXJjZSArIGxpbmUKKyAgICAKKyAgICBpZiBzeXMucGxh
dGZvcm0gPT0gImN5Z3dpbiI6CisgICAgICAgIHNvdXJjZSA9IHNvdXJjZS5yZXBsYWNlKCJcclxu
IiwgIlxuIikKKyAgICByZXR1cm4gKGJhc2VOYW1lLCBnZXRGdW5jdGlvbnMoc291cmNlKSwgZ2V0
Q29weXJpZ2h0KHNvdXJjZSkpCisKK2RlZiBtYW5nbGVOYW1lKG9iamVjdCwgbmFtZSk6CisgICAg
cU5hbWUgPSBvYmplY3QgKyAiLiIgKyBuYW1lCisgICAgbWFuZ2xlZE5hbWUgPSAiIgorICAgIGkg
PSAwCisgICAgd2hpbGUgaSA8IGxlbihxTmFtZSk6CisgICAgICAgIGlmIHFOYW1lW2ldID09ICcu
JzoKKyAgICAgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWUgKyBxTmFtZVtpICsgMV0u
dXBwZXIoKQorICAgICAgICAgICAgaSA9IGkgKyAxCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lICsgcU5hbWVbaV0KKyAgICAgICAgaSA9IGkgKyAx
CisgICAgcmV0dXJuIG1hbmdsZWROYW1lCisKK2J1aWx0aW5zID0gW10KKworYmFzZU5hbWUgPSBz
eXMuYXJndlstMV0KK2J1aWx0aW5fZGVmaW5pdGlvbnMgPSBzeXMuYXJndlsxOi0xXQorKG91dHB1
dF9iYXNlLCBfKSA9IG9zLnBhdGguc3BsaXRleHQoc3lzLmFyZ3ZbLTFdKQorCitjb3B5cmlnaHRz
ID0gW10KK2ZvciBmaWxlIGluIGJ1aWx0aW5fZGVmaW5pdGlvbnM6CisgICAgaWYgZm5tYXRjaC5m
bm1hdGNoKGZpbGUsICcqLmpzJyk6CisgICAgICAgIChiYXNlTmFtZSwgZnVuY3Rpb25zLCBvYmpl
Y3RDb3B5cmlnaHRzKSA9IGdlbmVyYXRlQ29kZShmaWxlKQorICAgICAgICBjb3B5cmlnaHRzLmV4
dGVuZChvYmplY3RDb3B5cmlnaHRzKQorICAgICAgICBidWlsdGlucy5hcHBlbmQoKGJhc2VOYW1l
LCBmdW5jdGlvbnMpKQorCitjb3B5cmlnaHRzID0gbGlzdChzZXQoY29weXJpZ2h0cykpCisKK2Nv
cHlyaWdodEJvZHkgPSAiIgorZm9yIGNvcHlyaWdodCBpbiBjb3B5cmlnaHRzOgorICAgIGNvcHly
aWdodEJvZHkgPSBjb3B5cmlnaHRCb2R5ICsiICogQ29weXJpZ2h0IChDKSAiICsgY29weXJpZ2h0
ICsgIlxuIgorCitidWlsdGluc0hlYWRlciA9IG9wZW4ob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwg
InciKQorYnVpbHRpbnNJbXBsZW1lbnRhdGlvbiA9IG9wZW4ob3V0cHV0X2Jhc2UgKyAiLmNwcC50
bXAiLCAidyIpCitjb3B5cmlnaHRUZXh0ID0gIi8qXG4iICsgY29weXJpZ2h0Qm9keSArIGNvcHly
aWdodFRleHQKK2J1aWx0aW5zSGVhZGVyLndyaXRlKCIiIiVzCislcworCisjaWZuZGVmIEpTQ0J1
aWx0aW5zX0gKKyNkZWZpbmUgSlNDQnVpbHRpbnNfSAorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgRnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgSWRlbnRpZmllcjsKK2NsYXNzIEpTR2xvYmFs
T2JqZWN0OworY2xhc3MgU291cmNlQ29kZTsKK2NsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOworY2xhc3MgVk07CisKK0Z1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1
dGFibGUoVk0mLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUm
KTsKKworIiIiICUgKGdlbmVyYXRvclN0cmluZywgY29weXJpZ2h0VGV4dCkpCisKK2NvZGVSZWZl
cmVuY2VzID0gW10KKworZm9yIChvYmplY3ROYW1lLCBmdW5jdGlvbnMpIGluIGJ1aWx0aW5zOgor
ICAgIHByaW50KCJHZW5lcmF0aW5nIGJpbmRpbmdzIGZvciB0aGUgJXMgYnVpbHRpbi4iICUgb2Jq
ZWN0TmFtZSkKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiLyogJXMgZnVuY3Rpb25zICovXG4i
ICUgb2JqZWN0TmFtZSkKKyAgICBmb3IgKG5hbWUsIGltcGxlbWVudGF0aW9uLCBfKSBpbiBmdW5j
dGlvbnM6CisgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlTmFtZShvYmplY3ROYW1lLCBuYW1l
KQorICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lWzBdLmxvd2VyKCkgKyBtYW5nbGVk
TmFtZVsxOl0gKyAiQ29kZSIKKyAgICAgICAgY29kZVJlZmVyZW5jZXMuYXBwZW5kKChtYW5nbGVk
TmFtZSwgbmFtZSwgaW1wbGVtZW50YXRpb24pKQorICAgICAgICBidWlsdGluc0hlYWRlci53cml0
ZSgiZXh0ZXJuIGNvbnN0IGNoYXIqIHNfJXM7XG4iICUgbWFuZ2xlZE5hbWUpCisgICAgICAgIGJ1
aWx0aW5zSGVhZGVyLndyaXRlKCJleHRlcm4gY29uc3QgaW50IHNfJXNMZW5ndGg7XG4iICUgbWFu
Z2xlZE5hbWUpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuIikKKyAgICBidWlsdGluc0hl
YWRlci53cml0ZSgiI2RlZmluZSBKU0NfRk9SRUFDSF8lc19CVUlMVElOKG1hY3JvKSBcXFxuIiAl
IG9iamVjdE5hbWUucmVwbGFjZSgiLiIsICJfIikudXBwZXIoKSkKKyAgICBmb3IgKG5hbWUsIGlt
cGxlbWVudGF0aW9uLCBhcmd1bWVudHMpIGluIGZ1bmN0aW9uczoKKyAgICAgICAgbWFuZ2xlZE5h
bWUgPSBtYW5nbGVOYW1lKG9iamVjdE5hbWUsIG5hbWUpCisgICAgICAgIGJ1aWx0aW5zSGVhZGVy
LndyaXRlKCIgICAgbWFjcm8oJXMsICVzLCAlZCkgXFxcbiIgJSAobmFtZSwgbWFuZ2xlZE5hbWUs
IGxlbihhcmd1bWVudHMpKSkKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiXG4iKQorICAgIGZv
ciAobmFtZSwgaW1wbGVtZW50YXRpb24sIGFyZ3VtZW50cykgaW4gZnVuY3Rpb25zOgorICAgICAg
ICBidWlsdGluc0hlYWRlci53cml0ZSgiI2RlZmluZSBKU0NfQlVJTFRJTl8lcyAxXG4iICUgbWFu
Z2xlTmFtZShvYmplY3ROYW1lLCBuYW1lKS51cHBlcigpKQorICAgIGJ1aWx0aW5zSGVhZGVyLndy
aXRlKCJcblxuIikKK25hbWVzID0gW10KK2J1aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lIEpT
Q19GT1JFQUNIX0JVSUxUSU4obWFjcm8pXFxcbiIpCitmb3IgKGNvZGVSZWZlcmVuY2UsIGZ1bmN0
aW9uTmFtZSwgc291cmNlKSBpbiBjb2RlUmVmZXJlbmNlczoKKyAgICBidWlsdGluc0hlYWRlci53
cml0ZSgiICAgIG1hY3JvKCVzLCAlcywgc18lc0xlbmd0aCkgXFxcbiIgJSAoY29kZVJlZmVyZW5j
ZSwgZnVuY3Rpb25OYW1lLCBjb2RlUmVmZXJlbmNlKSkKKyAgICBuYW1lcy5hcHBlbmQoZnVuY3Rp
b25OYW1lKQorCitidWlsdGluc0hlYWRlci53cml0ZSgiXG5cbiIpCitidWlsdGluc0hlYWRlci53
cml0ZSgiI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFxc
XG4iKQorZm9yIG5hbWUgaW4gc29ydGVkKHNldChuYW1lcykpOgorICAgIGJ1aWx0aW5zSGVhZGVy
LndyaXRlKCIgICAgbWFjcm8oJXMpIFxcXG4iICUgbmFtZSkKK2J1aWx0aW5zSGVhZGVyLndyaXRl
KCIiIgorCisjZGVmaW5lIEpTQ19ERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBm
dW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBj
b2RlTmFtZSMjR2VuZXJhdG9yKFZNJik7CisKK0pTQ19GT1JFQUNIX0JVSUxUSU4oSlNDX0RFQ0xB
UkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgSlNDX0RFQ0xBUkVfQlVJTFRJTl9HRU5FUkFU
T1IKKworI2RlZmluZSBKU0NfQlVJTFRJTl9FWElTVFMobmFtZSkgZGVmaW5lZChKU0NfQlVJTFRJ
Tl8jI25hbWUpCisKK30KKworI2VuZGlmCisKKyIiIikKKworYnVpbHRpbnNJbXBsZW1lbnRhdGlv
bi53cml0ZSgiIiIlcworJXMKKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiSlND
QnVpbHRpbnMuaCIKKworI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUg
IkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiVk0u
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKKyIiIiAgJSAoZ2VuZXJhdG9yU3RyaW5nLCBjb3B5cmln
aHRUZXh0KSkKKworZm9yIChjb2RlUmVmZXJlbmNlLCBuYW1lLCBzb3VyY2UpIGluIGNvZGVSZWZl
cmVuY2VzOgorICAgIHNvdXJjZSA9ICIoZnVuY3Rpb24gIiArIHNvdXJjZVtzb3VyY2UuaW5kZXgo
IigiKTpdICsgIikiCisgICAgbGluZXMgPSBqc29uLmR1bXBzKHNvdXJjZSlbMTotMV0uc3BsaXQo
IlxcbiIpCisgICAgc291cmNlTGVuZ3RoID0gbGVuKHNvdXJjZSkKKyAgICBzb3VyY2UgPSAiIgor
ICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICBzb3VyY2UgPSBzb3VyY2UgKyAoIiAgICBc
IiVzXFxuXCIgXFxcbiIgJSBsaW5lKQorICAgIGJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUo
ImNvbnN0IGNoYXIqIHNfJXMgPVxuJXM7XG5cbiIgJSAoY29kZVJlZmVyZW5jZSwgc291cmNlKSkK
KyAgICBidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCJjb25zdCBpbnQgc18lc0xlbmd0aCA9
ICVkO1xuXG4iICUgKGNvZGVSZWZlcmVuY2UsIHNvdXJjZUxlbmd0aCArIDEpKSAjICsgMSBmb3Ig
XG4KKworYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiIiIKK0Z1bmN0aW9uRXhlY3V0YWJs
ZSogY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUoVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCit7Cisg
ICAgdW5zaWduZWQgbGluZUNvdW50ID0gdW5saW5rZWRFeGVjdXRhYmxlLT5saW5lQ291bnQoKTsK
KyAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IDE7CisgICAgdW5zaWduZWQgc291cmNlTGVuZ3Ro
ID0gdW5saW5rZWRFeGVjdXRhYmxlLT5zb3VyY2VMZW5ndGgoKTsKKyAgICBib29sIGVuZENvbHVt
bklzT25TdGFydExpbmUgPSAhbGluZUNvdW50OworICAgIHVuc2lnbmVkIGVuZENvbHVtbkV4Y2x1
ZGluZ0JyYWNlcyA9IHVubGlua2VkRXhlY3V0YWJsZS0+dW5saW5rZWRCb2R5RW5kQ29sdW1uKCkg
KyAoZW5kQ29sdW1uSXNPblN0YXJ0TGluZSA/IDAgOiAxKTsKKyAgICB1bnNpZ25lZCBzdGFydE9m
ZnNldCA9IHVubGlua2VkRXhlY3V0YWJsZS0+c3RhcnRPZmZzZXQoKTsKKyAgICB1bnNpZ25lZCBz
dGFydE9mZnNldEV4Y2x1ZGluZ09wZW5CcmFjZSA9IHN0YXJ0T2Zmc2V0ICsgMTsKKyAgICB1bnNp
Z25lZCBlbmRPZmZzZXRFeGNsdWRpbmdDbG9zZUJyYWNlID0gc3RhcnRPZmZzZXQgKyBzb3VyY2VM
ZW5ndGggLSAxOworICAgIFNvdXJjZUNvZGUgYm9keVNvdXJjZShzb3VyY2UucHJvdmlkZXIoKSwg
c3RhcnRPZmZzZXRFeGNsdWRpbmdPcGVuQnJhY2UsIGVuZE9mZnNldEV4Y2x1ZGluZ0Nsb3NlQnJh
Y2UsIDAsIHN0YXJ0Q29sdW1uKTsKKyAgICByZXR1cm4gRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVh
dGUodm0sIGJvZHlTb3VyY2UsIHVubGlua2VkRXhlY3V0YWJsZSwgMCwgbGluZUNvdW50LCBzdGFy
dENvbHVtbiwgZW5kQ29sdW1uRXhjbHVkaW5nQnJhY2VzLCBmYWxzZSk7Cit9CisKKyNkZWZpbmUg
SlNDX0RFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1
bWVudENvdW50KSBcXAorRnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKFZN
JiB2bSkgXFwKK3sgXFwKKyAgICByZXR1cm4gY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUodm0sIHZt
LmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLCB2bS5idWlsdGlu
RXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpKTsgXFwKK30KKworSlNDX0ZPUkVBQ0hf
QlVJTFRJTihKU0NfREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIEpTQ19ERUZJTkVf
QlVJTFRJTl9HRU5FUkFUT1IKK30KKworIiIiKQorCitidWlsdGluc0hlYWRlci5jbG9zZSgpCiti
dWlsdGluc0ltcGxlbWVudGF0aW9uLmNsb3NlKCkKKworaWYgKG5vdCBvcy5wYXRoLmV4aXN0cyhv
dXRwdXRfYmFzZSArICIuaCIpKSBvciAobm90IGZpbGVjbXAuY21wKG91dHB1dF9iYXNlICsgIi5o
LnRtcCIsIG91dHB1dF9iYXNlICsgIi5oIiwgc2hhbGxvdz1GYWxzZSkpOgorICAgIG9zLnJlbmFt
ZShvdXRwdXRfYmFzZSArICIuaC50bXAiLCBvdXRwdXRfYmFzZSArICIuaCIpCitlbHNlOgorICAg
IG9zLnJlbW92ZShvdXRwdXRfYmFzZSArICIuaC50bXAiKQorCitpZiAobm90IG9zLnBhdGguZXhp
c3RzKG91dHB1dF9iYXNlICsgIi5jcHAiKSkgb3IgKG5vdCBmaWxlY21wLmNtcChvdXRwdXRfYmFz
ZSArICIuY3BwLnRtcCIsIG91dHB1dF9iYXNlICsgIi5jcHAiLCBzaGFsbG93PUZhbHNlKSk6Cisg
ICAgb3MucmVuYW1lKG91dHB1dF9iYXNlICsgIi5jcHAudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmNw
cCIpCitlbHNlOgorICAgIG9zLnJlbW92ZShvdXRwdXRfYmFzZSArICIuY3BwLnRtcCIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRl
eCBjYTg5MGIwNmVhMzNmYTllN2YxZmE1MWEzNWVhMmQ0OGQwMDlhMzhhLi42YzliZjk2YzE1ZjYw
OWUyNjVjZTI1MGE0NWJmMDg2MWQwNmNkMWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNs
dWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdGFja0lubGluZXMu
aCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5jbHVkZSAiTExJbnRDTG9vcC5oIgogI2luY2x1
ZGUgIkxMSW50VGh1bmtzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcAppbmRleCBmMGUwMmJhNGU0NzZmOTljYzkxM2IwNDYy
YWQyNzk1MDA2MDlmYTNhLi4xYzI0MGRjZDcxYmU1MjlkODhjYmY0NjFkMTg2OGY1ZWIyYjAyYWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxs
RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0Nh
bGxGcmFtZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5o
IgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGNhN2FkMTFmMmUwYjhhM2I4
YjE4NTg5MWQ3ZTUyMmJhZTQwM2EyMzYuLmNiNTUwN2JlYWM1NWJmOGViMWIzN2VjOTBmY2FiMTkz
NGZiNDhlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
UHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcAppbmRleCA5OGQxMGEzZjRkY2IxMmQ4OWYzN2ExMmYyMjYwNGI5NDZl
MDhlNjI3Li5kZDAzNTM3NzllOGJkZjk4ZjQ2NThhMzA3ZTMyZDA2ZTQ3MjQ0MTU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCmluZGV4IDkyOGRkNTBmYjAxNmUyNzE2NDRhNTc1ZTMwYWI1ZjI1MTZlYjUwZWMu
LjQ5ODcwZTY4YTg3YmUxOWUxNThhMDZkMWM2NGZlYzliOGJkMDgyMjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2lu
Y2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbldyYXBwZXJzLmgiCiAjaW5jbHVk
ZSAiSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAj
aW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3Bw
CmluZGV4IDI2ZGQ0ZDFhZjc0NWFmYTFmYmM1M2E5YzAyM2E2ZTQ3NDFhNjZhMDkuLmRmMWJkM2E5
Y2ZhNDAyYzUyYTUyMTFjZjFhY2NlNjdkNTEyMWI3ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0yOSwxMSArMjksMTMgQEAKICNp
bmNsdWRlICJKSVQuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkNvbW1v
bklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgiCiAjaW5j
bHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRl
ICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFs
dWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1ZhcmlhYmxlT2JqZWN0LmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApp
bmRleCBkMThmZWE3MTVjYjAzYjM3YWE5MjZkODQ5YThlNWFiOTU2M2VjZDNkLi4zMjYxYjNhZjZl
ZWFiZDZmMjZhNDNhMDhkMjA0YmM2MmIwNjU4OWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNp
bmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgog
I2luY2x1ZGUgIkpTVmFyaWFibGVPYmplY3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggNDA3
ODRiNDk0MzFmZTAyZThlNDUyMmYxNjMwOGM5MDI0NzE2ZDIzNi4uMmY3OTU1NTRiMDkxZGVlYmJj
MDNiZjJiZThjNzRmNDFhZTU0MWVkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTM4LDYgKzM4
LDcgQEAKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU1Byb3h5LmgiCiAjaW5jbHVk
ZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJP
cGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCiAjaW5jbHVkZSAiU3RhY2tW
aXNpdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRP
ZmZzZXRzRXh0cmFjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9m
ZnNldHNFeHRyYWN0b3IuY3BwCmluZGV4IDYwNGNjMjYzY2Y5N2UwODZmZWQwNmVjOTAzYjBlYzE5
ODNlNzgxMzcuLjgxNjZlN2Y4MWZhODlhN2Q0ZjUwYzVmMWE5NGZhOTY4YzVkNTdlMWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0
b3IuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRl
ICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCi0jaW5jbHVkZSAiSlNGdW5jdGlvbi5o
IgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNs
dWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA2NjQ0NGJhYTA4
YjU2MmRkNjk3ZTBjY2Q3NzIxZTU1YzE1YmE0OTEzLi5kODJlOWU5YzI4MTg0NjFlMzA1ZmY4NjVk
MmZiMTY4YTc4Y2JiNGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNs
dWRlICJKSVRFeGNlcHRpb25zLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCi0jaW5jbHVk
ZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgog
I2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggOGVjMWZkMzJhM2FkYTIyZTEyNTIyOTU3MGRjZjdm
ZjI4ZWFiZjFlZC4uNDZhN2M3NmIyZjkwMWZjM2NjMzZkMWNlMGMwNzM1M2ViMDZiMmY1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTg4OCw5ICs4ODgs
OSBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbgogICAgIEFTU0VSVChmdW5jLT5pc0RvdEFjY2Vz
c29yTm9kZSgpKTsKICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRpY19jYXN0PERvdEFj
Y2Vzc29yTm9kZSo+KGZ1bmMpOwogICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUqIG5vZGU7Ci0gICAg
aWYgKGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmNhbGwpCisgICAg
aWYgKGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmNhbGwgfHwgZG90
LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y2FsbFByaXZhdGVOYW1lKQog
ICAgICAgICBub2RlID0gbmV3IChtX3ZtKSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlv
biwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFy
dCwgZGl2b3RFbmQpOwotICAgIGVsc2UgaWYgKGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnBy
b3BlcnR5TmFtZXMtPmFwcGx5KQorICAgIGVsc2UgaWYgKGRvdC0+aWRlbnRpZmllcigpID09IG1f
dm0tPnByb3BlcnR5TmFtZXMtPmFwcGx5IHx8IGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnBy
b3BlcnR5TmFtZXMtPmFwcGx5UHJpdmF0ZU5hbWUpCiAgICAgICAgIG5vZGUgPSBuZXcgKG1fdm0p
IEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRl
bnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwogICAgIGVsc2UK
ICAgICAgICAgbm9kZSA9IG5ldyAobV92bSkgRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwg
ZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwg
ZGl2b3RFbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCBjYTRi
YjRmMGFkZThkNmJjODI2OTFhNmMwMDAxNGNmMTk4YmQ4OGJkLi5jY2IwNzlkOTc1YTE0MWM1YzRi
MmQ3YjYyMzEzMDAwNzA5Nzc3ODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0xleGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVy
LmNwcApAQCAtMjUsMTAgKzI1LDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
TGV4ZXIuaCIKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCisjaW5jbHVkZSAiSWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCi0KICNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgotI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJOb2RlSW5mby5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSA8d3RmL2R0b2Eu
aD4KQEAgLTkwLDYgKzkwLDcgQEAgZW51bSBDaGFyYWN0ZXJUeXBlIHsKIAogICAgIC8vIE90aGVy
IHR5cGVzIChvbmx5IG9uZSBzbyBmYXIpCiAgICAgQ2hhcmFjdGVyV2hpdGVTcGFjZSwKKyAgICBD
aGFyYWN0ZXJQcml2YXRlSWRlbnRpZmllclN0YXJ0CiB9OwogCiAvLyAyNTYgTGF0aW4tMSBjb2Rl
cwpAQCAtMTU4LDcgKzE1OSw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCB0eXBlc09m
TGF0aW4xQ2hhcmFjdGVyc1syNTZdID0gewogLyogIDYxIC0gPSAgICAgICAgICAgICAgICAgICov
IENoYXJhY3RlckVxdWFsLAogLyogIDYyIC0gPiAgICAgICAgICAgICAgICAgICovIENoYXJhY3Rl
ckdyZWF0ZXIsCiAvKiAgNjMgLSA/ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyUXVlc3Rp
b24sCi0vKiAgNjQgLSBAICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKKy8q
ICA2NCAtIEAgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJQcml2YXRlSWRlbnRpZmllclN0
YXJ0LAogLyogIDY1IC0gQSAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJT
dGFydCwKIC8qICA2NiAtIEIgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVy
U3RhcnQsCiAvKiAgNjcgLSBDICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmll
clN0YXJ0LApAQCAtNDg2LDkgKzQ4NywxMCBAQCBzdGF0aWMgY29uc3QgTENoYXIgc2luZ2xlQ2hh
cmFjdGVyRXNjYXBlVmFsdWVzRm9yQVNDSUlbMTI4XSA9IHsKIH07CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotTGV4ZXI8VD46OkxleGVyKFZNKiB2bSkKK0xleGVyPFQ+OjpMZXhlcihWTSogdm0s
IEpTUGFyc2VyU3RyaWN0bmVzcyBzdHJpY3RuZXNzKQogICAgIDogbV9pc1JlcGFyc2luZyhmYWxz
ZSkKICAgICAsIG1fdm0odm0pCisgICAgLCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24oc3RyaWN0
bmVzcyA9PSBKU1BhcnNlQnVpbHRpbikKIHsKIH0KIApAQCAtNzUzLDcgKzc1NSwyNyBAQCBpbmxp
bmUgdm9pZCBMZXhlcjxUPjo6cmVjb3JkMTYoaW50IGMpCiAgICAgQVNTRVJUKGMgPD0gc3RhdGlj
X2Nhc3Q8aW50PihVU0hSVF9NQVgpKTsKICAgICBtX2J1ZmZlcjE2LmFwcGVuZChzdGF0aWNfY2Fz
dDxVQ2hhcj4oYykpOwogfQotCisgICAgCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorYm9vbCBpc1Nh
ZmVJZGVudGlmaWVyKFZNJiB2bSwgY29uc3QgSWRlbnRpZmllciogaWRlbnQpCit7CisgICAgaWYg
KCFpZGVudCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgLyogSnVzdCBibG9jayBhbnkgdXNl
IG9mIHN1c3BpY2lvdXMgaWRlbnRpZmllcnMuICBUaGlzIGlzIGludGVuZGVkIHRvCisgICAgICog
YmUgdXNlZCBhcyBhIHNhZmV0eSBuZXQgd2hpbGUgaW1wbGVtZW50aW5nIGJ1aWx0aW5zLgorICAg
ICAqLworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+Y2FsbCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+YXBwbHkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKmlkZW50ID09IHZtLnByb3BlcnR5TmFt
ZXMtPmV2YWwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKmlkZW50ID09IHZtLnBy
b3BlcnR5TmFtZXMtPkZ1bmN0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJu
IHRydWU7Cit9CisjZW5kaWYKKyAgICAKIHRlbXBsYXRlIDw+CiB0ZW1wbGF0ZSA8Ym9vbCBzaG91
bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFy
Pjo6cGFyc2VJZGVudGlmaWVyKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEsIHVuc2lnbmVkIGxleGVy
RmxhZ3MsIGJvb2wgc3RyaWN0TW9kZSkKIHsKQEAgLTc2NSw3ICs3ODcsMTEgQEAgdGVtcGxhdGUg
PGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBM
ZXhlcjxMQ2hhcj46OnAKICAgICAgICAgICAgIHJldHVybiBrZXl3b3JkID09IFJFU0VSVkVEX0lG
X1NUUklDVCAmJiAhc3RyaWN0TW9kZSA/IElERU5UIDoga2V5d29yZDsKICAgICAgICAgfQogICAg
IH0KLQorICAgIAorICAgIGJvb2wgaXNQcml2YXRlTmFtZSA9IG1fY3VycmVudCA9PSAnQCcgJiYg
bV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uOworICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAg
ICBzaGlmdCgpOworICAgIAogICAgIGNvbnN0IExDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJy
ZW50U291cmNlUHRyKCk7CiAgICAgdW5zaWduZWQgaWRlbnRpZmllckxpbmVTdGFydCA9IGN1cnJl
bnRMaW5lU3RhcnRPZmZzZXQoKTsKICAgICAKQEAgLTc3OSwxNSArODA1LDI2IEBAIHRlbXBsYXRl
IDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUg
TGV4ZXI8TENoYXI+OjpwCiAKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IDA7CiAgICAg
Ci0gICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpIHsKKyAgICBpZiAoc2hvdWxkQ3JlYXRl
SWRlbnRpZmllciB8fCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKICAgICAgICAgaW50IGlk
ZW50aWZpZXJMZW5ndGggPSBjdXJyZW50U291cmNlUHRyKCkgLSBpZGVudGlmaWVyU3RhcnQ7CiAg
ICAgICAgIGlkZW50ID0gbWFrZUlkZW50aWZpZXIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVy
TGVuZ3RoKTsKLQorICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CisgICAg
ICAgICAgICBpZiAoIWlzU2FmZUlkZW50aWZpZXIoKm1fdm0sIGlkZW50KSAmJiAhaXNQcml2YXRl
TmFtZSkgeworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZygi
VGhlIHVzZSBvZiAnIiwgaWRlbnQtPnN0cmluZygpLCAiJyBpcyBkaXNhbGxvd2VkIGluIGJ1aWx0
aW4gZnVuY3Rpb25zLiIpOworICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPSzsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICAgICAgICAg
IGlkZW50ID0gbV92bS0+cHJvcGVydHlOYW1lcy0+Z2V0UHJpdmF0ZU5hbWUoKmlkZW50KTsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmlu
ZWRLZXl3b3JkKQorICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAmbV92bS0+cHJv
cGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZFByaXZhdGVOYW1lOworICAgICAgICAgICAgaWYg
KCFpZGVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9QUklWQVRFX05BTUVfRVJS
T1JUT0s7CisgICAgICAgIH0KICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IGlkZW50OwogICAg
IH0gZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gMDsKIAotICAgIGlmIChVTkxJS0VM
WSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICEobGV4ZXJGbGFncyAmIExleGVyRmxh
Z3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkpIHsKKyAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8
IG1heFRva2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxhZ3MgJiBMZXhlckZsYWdzSWdub3JlUmVzZXJ2
ZWRXb3JkcykpICYmICFpc1ByaXZhdGVOYW1lKSB7CiAgICAgICAgIEFTU0VSVChzaG91bGRDcmVh
dGVJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSB7
CiAgICAgICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gbV92bS0+a2V5d29yZHMtPmdl
dEtleXdvcmQoKmlkZW50KTsKQEAgLTgxNCw2ICs4NTEsMTAgQEAgdGVtcGxhdGUgPGJvb2wgc2hv
dWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hh
cj46OnAKICAgICAgICAgICAgIHJldHVybiBrZXl3b3JkID09IFJFU0VSVkVEX0lGX1NUUklDVCAm
JiAhc3RyaWN0TW9kZSA/IElERU5UIDoga2V5d29yZDsKICAgICAgICAgfQogICAgIH0KKyAgICAK
KyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJlbnQgPT0gJ0AnICYmIG1fcGFyc2luZ0J1
aWx0aW5GdW5jdGlvbjsKKyAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgc2hpZnQoKTsK
IAogICAgIGNvbnN0IFVDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50U291cmNlUHRyKCk7
CiAgICAgaW50IGlkZW50aWZpZXJMaW5lU3RhcnQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7
CkBAIC04MjYsNiArODY3LDcgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmll
cj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAKICAgICB9CiAgICAg
CiAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudCA9PSAnXFwnKSkgeworICAgICAgICBBU1NFUlQo
IWlzUHJpdmF0ZU5hbWUpOwogICAgICAgICBzZXRPZmZzZXRGcm9tU291cmNlUHRyKGlkZW50aWZp
ZXJTdGFydCwgaWRlbnRpZmllckxpbmVTdGFydCk7CiAgICAgICAgIHJldHVybiBwYXJzZUlkZW50
aWZpZXJTbG93Q2FzZTxzaG91bGRDcmVhdGVJZGVudGlmaWVyPih0b2tlbkRhdGEsIGxleGVyRmxh
Z3MsIHN0cmljdE1vZGUpOwogICAgIH0KQEAgLTgzNywxOCArODc5LDI5IEBAIHRlbXBsYXRlIDxi
b29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4
ZXI8VUNoYXI+OjpwCiAKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IDA7CiAgICAgCi0g
ICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpIHsKKyAgICBpZiAoc2hvdWxkQ3JlYXRlSWRl
bnRpZmllciB8fCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKICAgICAgICAgaW50IGlkZW50
aWZpZXJMZW5ndGggPSBjdXJyZW50U291cmNlUHRyKCkgLSBpZGVudGlmaWVyU3RhcnQ7CiAgICAg
ICAgIGlmIChpc0FsbDhCaXQpCiAgICAgICAgICAgICBpZGVudCA9IG1ha2VJZGVudGlmaWVyTENo
YXJGcm9tVUNoYXIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVuZ3RoKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgaWRlbnQgPSBtYWtlSWRlbnRpZmllcihpZGVudGlmaWVyU3RhcnQs
IGlkZW50aWZpZXJMZW5ndGgpOwotICAgICAgICAKKyAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0
aW5GdW5jdGlvbikgeworICAgICAgICAgICAgaWYgKCFpc1NhZmVJZGVudGlmaWVyKCptX3ZtLCBp
ZGVudCkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsKKyAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVz
c2FnZSA9IG1ha2VTdHJpbmcoIlRoZSB1c2Ugb2YgJyIsIGlkZW50LT5zdHJpbmcoKSwgIicgaXMg
ZGlzYWxsb3dlZCBpbiBidWlsdGluIGZ1bmN0aW9ucy4iKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gRVJST1JUT0s7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaXNQcml2YXRlTmFt
ZSkKKyAgICAgICAgICAgICAgICBpZGVudCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPmdldFByaXZh
dGVOYW1lKCppZGVudCk7CisgICAgICAgICAgICBlbHNlIGlmICgqaWRlbnQgPT0gbV92bS0+cHJv
cGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCkKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEt
PmlkZW50ID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmRQcml2YXRlTmFt
ZTsKKyAgICAgICAgICAgIGlmICghaWRlbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFM
SURfUFJJVkFURV9OQU1FX0VSUk9SVE9LOworICAgICAgICB9CiAgICAgICAgIHRva2VuRGF0YS0+
aWRlbnQgPSBpZGVudDsKICAgICB9IGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IDA7
CiAgICAgCi0gICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYg
IShsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMpKSkgeworICAgIGlm
IChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICEobGV4ZXJGbGFncyAm
IExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsKICAg
ICAgICAgQVNTRVJUKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpOwogICAgICAgICBpZiAocmVtYWlu
aW5nIDwgbWF4VG9rZW5MZW5ndGgpIHsKICAgICAgICAgICAgIGNvbnN0IEhhc2hFbnRyeSogZW50
cnkgPSBtX3ZtLT5rZXl3b3Jkcy0+Z2V0S2V5d29yZCgqaWRlbnQpOwpAQCAtMTY1OCw2ICsxNzEx
LDcgQEAgaW5OdW1iZXJBZnRlckRlY2ltYWxQb2ludDoKICAgICAgICAgQVNTRVJUKGlzSWRlbnRT
dGFydChtX2N1cnJlbnQpKTsKICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBDaGFyYWN0
ZXJCYWNrU2xhc2g6CisgICAgICAgIHBhcnNlSWRlbnQ6CiAgICAgICAgIGlmIChsZXhlckZsYWdz
ICYgTGV4ZXhGbGFnc0RvbnRCdWlsZEtleXdvcmRzKQogICAgICAgICAgICAgdG9rZW4gPSBwYXJz
ZUlkZW50aWZpZXI8ZmFsc2U+KHRva2VuRGF0YSwgbGV4ZXJGbGFncywgc3RyaWN0TW9kZSk7CiAg
ICAgICAgIGVsc2UKQEAgLTE2NzAsNiArMTcyNCwxMSBAQCBpbk51bWJlckFmdGVyRGVjaW1hbFBv
aW50OgogICAgICAgICBtX3Rlcm1pbmF0b3IgPSB0cnVlOwogICAgICAgICBtX2xpbmVTdGFydCA9
IG1fY29kZTsKICAgICAgICAgZ290byBzdGFydDsKKyAgICBjYXNlIENoYXJhY3RlclByaXZhdGVJ
ZGVudGlmaWVyU3RhcnQ6CisgICAgICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pCisg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnQ7CisKKyAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAg
Y2FzZSBDaGFyYWN0ZXJJbnZhbGlkOgogICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IGludmFs
aWRDaGFyYWN0ZXJNZXNzYWdlKCk7CiAgICAgICAgIHRva2VuID0gRVJST1JUT0s7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0xleGVyLmgKaW5kZXggMjhjNjFiYTE5OGQyYzE1YTQ5YmIxODUyZWQz
MGJlZmViODkwNDAwOC4uYjg4NzNlOTk1MDI4NjQ0YmY4Y2JiM2Q0YzJkYTU2MmU5M2UwZThlNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaApAQCAtNzIsNyArNzIsNyBAQCBjbGFz
cyBMZXhlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKIHB1YmxpYzoKLSAgICBM
ZXhlcihWTSopOworICAgIExleGVyKFZNKiwgSlNQYXJzZXJTdHJpY3RuZXNzKTsKICAgICB+TGV4
ZXIoKTsKIAogICAgIC8vIENoYXJhY3RlciBtYW5pcHVsYXRpb24gZnVuY3Rpb25zLgpAQCAtMjM4
LDYgKzIzOCw3IEBAIHByaXZhdGU6CiAgICAgSWRlbnRpZmllckFyZW5hKiBtX2FyZW5hOwogCiAg
ICAgVk0qIG1fdm07CisgICAgYm9vbCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247CiB9OwogCiB0
ZW1wbGF0ZSA8PgpAQCAtMzM1LDYgKzMzNiwxMiBAQCBBTFdBWVNfSU5MSU5FIGNvbnN0IElkZW50
aWZpZXIqIExleGVyPFQ+OjptYWtlTENoYXJJZGVudGlmaWVyKGNvbnN0IFVDaGFyKiBjaGFyYQog
ICAgIHJldHVybiAmbV9hcmVuYS0+bWFrZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hhcihtX3ZtLCBj
aGFyYWN0ZXJzLCBsZW5ndGgpOwogfQogCisjaWYgQVNTRVJUX0RJU0FCTEVECitBTFdBWVNfSU5M
SU5FIGJvb2wgaXNTYWZlSWRlbnRpZmllcihWTSYsIGNvbnN0IElkZW50aWZpZXIqKSB7IHJldHVy
biB0cnVlOyB9CisjZWxzZQorYm9vbCBpc1NhZmVJZGVudGlmaWVyKFZNJiwgY29uc3QgSWRlbnRp
ZmllciopOworI2VuZGlmCisKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogQUxXQVlTX0lOTElORSBK
U1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rva2VuKiB0b2tlblJl
Y29yZCwgdW5zaWduZWQgbGV4ZXJGbGFncywgYm9vbCBzdHJpY3RNb2RlKQogewpAQCAtMzcwLDEw
ICszNzcsMTUgQEAgQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4RXhwZWN0
SWRlbnRpZmllcihKU1Rva2VuKiB0b2tlblJlY29yZCwgdW4KICAgICBBU1NFUlQoY3VycmVudE9m
ZnNldCgpID49IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKSk7CiAKICAgICAvLyBDcmVhdGUgdGhl
IGlkZW50aWZpZXIgaWYgbmVlZGVkCi0gICAgaWYgKGxleGVyRmxhZ3MgJiBMZXhleEZsYWdzRG9u
dEJ1aWxkS2V5d29yZHMpCisgICAgaWYgKGxleGVyRmxhZ3MgJiBMZXhleEZsYWdzRG9udEJ1aWxk
S2V5d29yZHMKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgICYmICFtX3BhcnNpbmdCdWls
dGluRnVuY3Rpb24KKyNlbmRpZgorICAgICAgICApCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQg
PSAwOwogICAgIGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG1ha2VMQ2hhcklkZW50
aWZpZXIoc3RhcnQsIHB0ciAtIHN0YXJ0KTsKKwogICAgIHRva2VuTG9jYXRpb24tPmxpbmUgPSBt
X2xpbmVOdW1iZXI7CiAgICAgdG9rZW5Mb2NhdGlvbi0+bGluZVN0YXJ0T2Zmc2V0ID0gY3VycmVu
dExpbmVTdGFydE9mZnNldCgpOwogICAgIHRva2VuTG9jYXRpb24tPnN0YXJ0T2Zmc2V0ID0gb2Zm
c2V0RnJvbVNvdXJjZVB0cihzdGFydCk7CkBAIC0zODEsNiArMzkzLDEzIEBAIEFMV0FZU19JTkxJ
TkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tlbiogdG9r
ZW5SZWNvcmQsIHVuCiAgICAgQVNTRVJUKHRva2VuTG9jYXRpb24tPnN0YXJ0T2Zmc2V0ID49IHRv
a2VuTG9jYXRpb24tPmxpbmVTdGFydE9mZnNldCk7CiAgICAgdG9rZW5SZWNvcmQtPm1fc3RhcnRQ
b3NpdGlvbiA9IHN0YXJ0UG9zaXRpb247CiAgICAgdG9rZW5SZWNvcmQtPm1fZW5kUG9zaXRpb24g
PSBjdXJyZW50UG9zaXRpb24oKTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgaWYgKG1fcGFy
c2luZ0J1aWx0aW5GdW5jdGlvbikgeworICAgICAgICBpZiAoIWlzU2FmZUlkZW50aWZpZXIoKm1f
dm0sIHRva2VuRGF0YS0+aWRlbnQpKQorICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LOworICAg
IH0KKyNlbmRpZgorCiAgICAgbV9sYXN0VG9rZW4gPSBJREVOVDsKICAgICByZXR1cm4gSURFTlQ7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IGZjOWNjZDlm
NmM1NzZjMWFlZjU0N2YyMTFmZGQ1OTZmNDJlMDU4MDYuLmQ5NTJiYTZhOTRkMmY2YjQxODIxNTUw
MDRkMGE5NzA4NDI5YmQ3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3Bw
CkBAIC0xMzIsNiArMTMyLDEyIEBAIFBhc3NSZWZQdHI8UHJvZ3JhbU5vZGU+IFByb2dyYW1Ob2Rl
OjpjcmVhdGUoVk0qIHZtLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0CiAgICAgcmV0dXJu
IG5vZGUucmVsZWFzZSgpOwogfQogCisKK3ZvaWQgUHJvZ3JhbU5vZGU6OnNldENsb3NlZFZhcmlh
Ymxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmIGNsb3NlZFZhcmlhYmxlcykK
K3sKKyAgICBtX2Nsb3NlZFZhcmlhYmxlcyA9IHN0ZDo6bW92ZShjbG9zZWRWYXJpYWJsZXMpOwor
fQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXZhbE5vZGUgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogaW5saW5lIEV2YWxOb2RlOjpFdmFsTm9kZShWTSogdm0s
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyogY2hp
bGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVu
dGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBD
b2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmgKaW5kZXggZDc3OWExNzhkOTU2ZmY5OWZkMGJlZDVkNWY0NTRhYTNlNmI1
MDg3OS4uODE2ZmYwMDFhYmYwMzc2YzY0MmYxYTkzOGQwZTBhOWY1MjljYTZiYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTQzMSw2ICsxNDMxLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGJvb2wgbmVlZHNBY3RpdmF0aW9uKCkgY29uc3QgeyByZXR1cm4gKGhh
c0NhcHR1cmVkVmFyaWFibGVzKCkpIHx8IChtX2ZlYXR1cmVzICYgKEV2YWxGZWF0dXJlIHwgV2l0
aEZlYXR1cmUgfCBDYXRjaEZlYXR1cmUpKTsgfQogICAgICAgICBib29sIGhhc0NhcHR1cmVkVmFy
aWFibGVzKCkgY29uc3QgeyByZXR1cm4gISFtX2NhcHR1cmVkVmFyaWFibGVzLnNpemUoKTsgfQog
ICAgICAgICBzaXplX3QgY2FwdHVyZWRWYXJpYWJsZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9j
YXB0dXJlZFZhcmlhYmxlcy5zaXplKCk7IH0KKyAgICAgICAgY29uc3QgSWRlbnRpZmllclNldCYg
Y2FwdHVyZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2NhcHR1cmVkVmFyaWFibGVzOyB9
CiAgICAgICAgIGJvb2wgY2FwdHVyZXMoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIHsgcmV0dXJu
IG1fY2FwdHVyZWRWYXJpYWJsZXMuY29udGFpbnMoaWRlbnQuaW1wbCgpKTsgfQogCiAgICAgICAg
IFZhclN0YWNrJiB2YXJTdGFjaygpIHsgcmV0dXJuIG1fdmFyU3RhY2s7IH0KQEAgLTE0NDYsNiAr
MTQ0Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVT
dGF0ZW1lbnQoKSBjb25zdDsKIAogICAgICAgICB2b2lkIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkZXN0aW5hdGlvbik7CisgICAgICAgIAor
ICAgICAgICB2b2lkIHNldENsb3NlZFZhcmlhYmxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmlu
Z0ltcGw+PiYmKSB7IH0KIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgdm9pZCBzZXRTb3VyY2Uo
Y29uc3QgU291cmNlQ29kZSYgc291cmNlKSB7IG1fc291cmNlID0gc291cmNlOyB9CkBAIC0xNDc1
LDExICsxNDc4LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBjb25zdCBi
b29sIHNjb3BlSXNGdW5jdGlvbiA9IGZhbHNlOwogCisgICAgICAgIHZvaWQgc2V0Q2xvc2VkVmFy
aWFibGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYpOworICAgICAgICBjb25z
dCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYgY2xvc2VkVmFyaWFibGVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9jbG9zZWRWYXJpYWJsZXM7IH0KICAgICBwcml2YXRlOgogICAgICAgICBQcm9ncmFt
Tm9kZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3Vy
Y2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBj
b25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKSBvdmVycmlkZTsKLQorICAgICAgICBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+
PiBtX2Nsb3NlZFZhcmlhYmxlczsKICAgICAgICAgdW5zaWduZWQgbV9zdGFydENvbHVtbjsKICAg
ICAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcAppbmRleCAyOTc2NjZlNzI2ZTQ1ZDA4M2VmMTM0OWRkZmZkZjM3ZWY4
MDBkZjdhLi41MGJlYzc5ZmUzOGFkZjhmM2EwNGY2YjQ2Y2JkMmE1Y2JmY2YyNDZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yMDQsOCArMjA0LDkgQEAgUGFy
c2VyPExleGVyVHlwZT46OlBhcnNlcihWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
RnVuY3Rpb25QYXJhbWV0ZXJzKgogICAgICwgbV9sYXN0SWRlbnRpZmllcigwKQogICAgICwgbV9s
YXN0RnVuY3Rpb25OYW1lKG51bGxwdHIpCiAgICAgLCBtX3NvdXJjZUVsZW1lbnRzKDApCisgICAg
LCBtX3BhcnNpbmdCdWlsdGluKHN0cmljdG5lc3MgPT0gSlNQYXJzZUJ1aWx0aW4pCiB7Ci0gICAg
bV9sZXhlciA9IGFkb3B0UHRyKG5ldyBMZXhlclR5cGUodm0pKTsKKyAgICBtX2xleGVyID0gYWRv
cHRQdHIobmV3IExleGVyVHlwZSh2bSwgc3RyaWN0bmVzcykpOwogICAgIG1fYXJlbmEgPSBtX3Zt
LT5wYXJzZXJBcmVuYS5nZXQoKTsKICAgICBtX2xleGVyLT5zZXRDb2RlKHNvdXJjZSwgbV9hcmVu
YSk7CiAgICAgbV90b2tlbi5tX2xvY2F0aW9uLmxpbmUgPSBzb3VyY2UuZmlyc3RMaW5lKCk7CkBA
IC0yNTYsNiArMjU3LDcgQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKCkK
ICAgICBJZGVudGlmaWVyU2V0IGNhcHR1cmVkVmFyaWFibGVzOwogICAgIGJvb2wgbW9kaWZpZWRQ
YXJhbWV0ZXIgPSBmYWxzZTsKICAgICBzY29wZS0+Z2V0Q2FwdHVyZWRWYXJpYWJsZXMoY2FwdHVy
ZWRWYXJpYWJsZXMsIG1vZGlmaWVkUGFyYW1ldGVyKTsKKyAgICAKICAgICBDb2RlRmVhdHVyZXMg
ZmVhdHVyZXMgPSBjb250ZXh0LmZlYXR1cmVzKCk7CiAgICAgaWYgKHNjb3BlLT5zdHJpY3RNb2Rl
KCkpCiAgICAgICAgIGZlYXR1cmVzIHw9IFN0cmljdE1vZGVGZWF0dXJlOwpAQCAtMjYzLDIxICsy
NjUsMzYgQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKCkKICAgICAgICAg
ZmVhdHVyZXMgfD0gU2hhZG93c0FyZ3VtZW50c0ZlYXR1cmU7CiAgICAgaWYgKG1vZGlmaWVkUGFy
YW1ldGVyKQogICAgICAgICBmZWF0dXJlcyB8PSBNb2RpZmllZFBhcmFtZXRlckZlYXR1cmU7Ci0K
KyAgICAKKyAgICBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiBjbG9zZWRWYXJpYWJsZXM7Cisg
ICAgaWYgKG1fcGFyc2luZ0J1aWx0aW4pIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWNhcHR1
cmVkVmFyaWFibGVzLnNpemUoKSk7CisgICAgICAgIElkZW50aWZpZXJTZXQgdXNlZFZhcmlhYmxl
czsKKyAgICAgICAgc2NvcGUtPmdldFVzZWRWYXJpYWJsZXModXNlZFZhcmlhYmxlcyk7CisgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgdmFyaWFibGUgOiB1c2VkVmFyaWFibGVzKSB7CisgICAgICAg
ICAgICBpZiAoc2NvcGUtPmhhc0RlY2xhcmVkVmFyaWFibGUoSWRlbnRpZmllcihtX3ZtLCB2YXJp
YWJsZS5nZXQoKSkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisg
ICAgICAgICAgICBpZiAoc2NvcGUtPmhhc0RlY2xhcmVkUGFyYW1ldGVyKElkZW50aWZpZXIobV92
bSwgdmFyaWFibGUuZ2V0KCkpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIGNsb3NlZFZhcmlhYmxlcy5hcHBlbmQodmFyaWFibGUpOworICAgICAgICB9CisgICAgfQog
ICAgIGRpZEZpbmlzaFBhcnNpbmcoc291cmNlRWxlbWVudHMsIGNvbnRleHQudmFyRGVjbGFyYXRp
b25zKCksIGNvbnRleHQuZnVuY0RlY2xhcmF0aW9ucygpLCBmZWF0dXJlcywKLSAgICAgICAgY29u
dGV4dC5udW1Db25zdGFudHMoKSwgY2FwdHVyZWRWYXJpYWJsZXMpOworICAgICAgICBjb250ZXh0
Lm51bUNvbnN0YW50cygpLCBjYXB0dXJlZFZhcmlhYmxlcywgc3RkOjptb3ZlKGNsb3NlZFZhcmlh
YmxlcykpOwogCiAgICAgcmV0dXJuIHBhcnNlRXJyb3I7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBMZXhlclR5cGU+CiB2b2lkIFBhcnNlcjxMZXhlclR5cGU+OjpkaWRGaW5pc2hQYXJzaW5nKFNv
dXJjZUVsZW1lbnRzKiBzb3VyY2VFbGVtZW50cywgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9u
U3RhY2tzOjpWYXJTdGFjaz4qIHZhclN0YWNrLCAKLSAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFy
YXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KiBmdW5jU3RhY2ssIENvZGVGZWF0dXJlcyBmZWF0
dXJlcywgaW50IG51bUNvbnN0YW50cywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJzKQorICAg
IFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qIGZ1bmNT
dGFjaywgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzLCBJZGVudGlmaWVy
U2V0JiBjYXB0dXJlZFZhcnMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYgY2xv
c2VkVmFyaWFibGVzKQogewogICAgIG1fc291cmNlRWxlbWVudHMgPSBzb3VyY2VFbGVtZW50czsK
ICAgICBtX3ZhckRlY2xhcmF0aW9ucyA9IHZhclN0YWNrOwogICAgIG1fZnVuY0RlY2xhcmF0aW9u
cyA9IGZ1bmNTdGFjazsKICAgICBtX2NhcHR1cmVkVmFyaWFibGVzLnN3YXAoY2FwdHVyZWRWYXJz
KTsKKyAgICBtX2Nsb3NlZFZhcmlhYmxlcyA9IGNsb3NlZFZhcmlhYmxlczsKICAgICBtX2ZlYXR1
cmVzID0gZmVhdHVyZXM7CiAgICAgbV9udW1Db25zdGFudHMgPSBudW1Db25zdGFudHM7CiB9CkBA
IC0yMzQ2LDYgKzIzNjMsMTAgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4gdm9pZCBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cHJpbnRVbmV4cGVjdGVkVG9rZW5UZXh0KFcKICAgICBjYXNlIFJF
U0VSVkVEOgogICAgICAgICBvdXQucHJpbnQoIlVuZXhwZWN0ZWQgdXNlIG9mIHJlc2VydmVkIHdv
cmQgJyIsIGdldFRva2VuKCksICInIik7CiAgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgSU5W
QUxJRF9QUklWQVRFX05BTUVfRVJST1JUT0s6CisgICAgICAgIG91dC5wcmludCgiSW52YWxpZCBw
cml2YXRlIG5hbWUgJyIsIGdldFRva2VuKCksICInIik7CisgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIAogICAgIGNhc2UgSURFTlQ6CiAgICAgICAgIG91dC5wcmludCgiVW5leHBlY3RlZCBp
ZGVudGlmaWVyICciLCBnZXRUb2tlbigpLCAiJyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmgKaW5kZXggYjY5OGVmOTM2OGNiOGM4ZjE5N2NjZDAwMGFjYWE2ZGZiMTFiYTI0NC4u
OTAzMzg1MGM4Yzk3ZjU3ZTIxZGE1ZWVkYjAyZDA0NGY0Yzg5NzhlYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0yMyw2ICsyMyw3IEBACiAjaWZuZGVmIFBhcnNlcl9o
CiAjZGVmaW5lIFBhcnNlcl9oCiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2lu
Y2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1
ZGUgIkV4ZWN1dGFibGUuaCIKQEAgLTI1OSw2ICsyNjAsMTAgQEAgc3RydWN0IFNjb3BlIHsKICAg
ICAgICAgcmV0dXJuIGlzVmFsaWRTdHJpY3RNb2RlID8gQmluZGluZ1N1Y2NlZWRlZCA6IFN0cmlj
dEJpbmRpbmdGYWlsZWQ7CiAgICAgfQogCisgICAgdm9pZCBnZXRVc2VkVmFyaWFibGVzKElkZW50
aWZpZXJTZXQmIHVzZWRWYXJpYWJsZXMpCisgICAgeworICAgICAgICB1c2VkVmFyaWFibGVzLnN3
YXAobV91c2VkVmFyaWFibGVzKTsKKyAgICB9CiAKICAgICB2b2lkIHVzZVZhcmlhYmxlKGNvbnN0
IElkZW50aWZpZXIqIGlkZW50LCBib29sIGlzRXZhbCkKICAgICB7CkBAIC00MTQsNiArNDE5LDcg
QEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3Im
KTsKIAogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKSBjb25z
dCB7IHJldHVybiBtX2xleGVyLT5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7IH0KKyAgICBj
b25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmIGNsb3NlZFZhcmlhYmxlcygpIHsgcmV0
dXJuIHN0ZDo6bW92ZShtX2Nsb3NlZFZhcmlhYmxlcyk7IH0KIAogcHJpdmF0ZToKICAgICBzdHJ1
Y3QgQWxsb3dJbk92ZXJyaWRlIHsKQEAgLTU0MCw3ICs1NDYsNyBAQCBwcml2YXRlOgogICAgIFN0
cmluZyBwYXJzZUlubmVyKCk7CiAKICAgICB2b2lkIGRpZEZpbmlzaFBhcnNpbmcoU291cmNlRWxl
bWVudHMqLCBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrPiosIAot
ICAgICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+
KiwgQ29kZUZlYXR1cmVzLCBpbnQsIElkZW50aWZpZXJTZXQmKTsKKyAgICAgICAgUGFyc2VyQXJl
bmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiosIENvZGVGZWF0dXJlcywg
aW50LCBJZGVudGlmaWVyU2V0JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJik7
CiAKICAgICAvLyBVc2VkIHRvIGRldGVybWluZSB0eXBlIG9mIGVycm9yIHRvIHJlcG9ydC4KICAg
ICBib29sIGlzRnVuY3Rpb25Cb2R5Tm9kZShTY29wZU5vZGUqKSB7IHJldHVybiBmYWxzZTsgfQpA
QCAtODQwLDkgKzg0NiwxMSBAQCBwcml2YXRlOgogICAgIGNvbnN0IElkZW50aWZpZXIqIG1fbGFz
dEZ1bmN0aW9uTmFtZTsKICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXJDYWNoZT4gbV9mdW5jdGlv
bkNhY2hlOwogICAgIFNvdXJjZUVsZW1lbnRzKiBtX3NvdXJjZUVsZW1lbnRzOworICAgIGJvb2wg
bV9wYXJzaW5nQnVpbHRpbjsKICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6
OlZhclN0YWNrPiogbV92YXJEZWNsYXJhdGlvbnM7CiAgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xh
cmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiogbV9mdW5jRGVjbGFyYXRpb25zOwogICAgIElk
ZW50aWZpZXJTZXQgbV9jYXB0dXJlZFZhcmlhYmxlczsKKyAgICBWZWN0b3I8UmVmUHRyPFN0cmlu
Z0ltcGw+PiBtX2Nsb3NlZFZhcmlhYmxlczsKICAgICBDb2RlRmVhdHVyZXMgbV9mZWF0dXJlczsK
ICAgICBpbnQgbV9udW1Db25zdGFudHM7CiAgICAgCkBAIC05NTcsNiArOTY1LDEwIEBAIFBhc3NS
ZWZQdHI8UGFyc2VkTm9kZT4gcGFyc2UoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IEZ1bmN0aW9uUGFyYW1ldGVyCiAgICAgICAgIFJlZlB0cjxQYXJzZWROb2RlPiByZXN1bHQgPSBw
YXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IpOwogICAgICAgICBpZiAocG9zaXRpb25CZWZv
cmVMYXN0TmV3bGluZSkKICAgICAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0g
cGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKKyAgICAgICAgaWYgKHN0cmljdG5l
c3MgPT0gSlNQYXJzZUJ1aWx0aW4pIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3Vs
dCk7CisgICAgICAgICAgICByZXN1bHQtPnNldENsb3NlZFZhcmlhYmxlcyhzdGQ6Om1vdmUocGFy
c2VyLmNsb3NlZFZhcmlhYmxlcygpKSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3Vs
dC5yZWxlYXNlKCk7CiAgICAgfQogICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwg
c291cmNlLCBwYXJhbWV0ZXJzLCBuYW1lLCBzdHJpY3RuZXNzLCBwYXJzZXJNb2RlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAppbmRleCA0ZTlhMTdjZDIxY2Ez
NDE0NmJiZDQ4MTU2YTM3MmNkNDA0ZGVmNjBjLi5mN2E3NWJmN2MzNzg1N2U0NGI2ZDVkNzFmNDUy
OWJiMWFjMWNmNWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlck1vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rl
cy5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1lbnVtIEpTUGFyc2Vy
U3RyaWN0bmVzcyB7IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VTdHJpY3QgfTsKK2VudW0gSlNQYXJz
ZXJTdHJpY3RuZXNzIHsgSlNQYXJzZU5vcm1hbCwgSlNQYXJzZUJ1aWx0aW4sIEpTUGFyc2VTdHJp
Y3QgfTsKIGVudW0gSlNQYXJzZXJNb2RlIHsgSlNQYXJzZVByb2dyYW1Db2RlLCBKU1BhcnNlRnVu
Y3Rpb25Db2RlIH07CiAKIGVudW0gUHJvZmlsZXJNb2RlIHsgUHJvZmlsZXJPZmYsIFByb2ZpbGVy
T24gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9r
ZW5zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCmluZGV4
IDgyYTI2NjM5YTc5MjIwYTA4NDQ1NmI0OGYzMjg1MmQxNDNjNzM5ZDAuLjhjODdhZDlmYWRiZGM0
YWYzOWFjOTlkYjJkODQ0NWUxM2ZmZmQzNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXJUb2tlbnMuaApAQCAtMTQ5LDYgKzE0OSw3IEBAIGVudW0gSlNUb2tlblR5cGUg
ewogICAgIElOVkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LID0gNyB8IEVycm9yVG9rZW5G
bGFnLAogICAgIFVOVEVSTUlOQVRFRF9TVFJJTkdfTElURVJBTF9FUlJPUlRPSyA9IDggfCBFcnJv
clRva2VuRmxhZyB8IFVudGVybWluYXRlZEVycm9yVG9rZW5GbGFnLAogICAgIElOVkFMSURfU1RS
SU5HX0xJVEVSQUxfRVJST1JUT0sgPSA5IHwgRXJyb3JUb2tlbkZsYWcsCisgICAgSU5WQUxJRF9Q
UklWQVRFX05BTUVfRVJST1JUT0sgPSAxMCB8IEVycm9yVG9rZW5GbGFnCiB9OwogCiBzdHJ1Y3Qg
SlNUZXh0UG9zaXRpb24gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJnTGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmNw
cAppbmRleCBlMTMxMDRkZjU5MjJkMDc3NjI1N2QwNWNiNWU4NzA1MzdkMjE0MjhhLi4yNGMwNmJi
YjFjMmMzNGI5ZGE1ZWY4NGIyNTVjOTkwMGRhZjg1OTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcmdMaXN0LmNwcApAQCAtMjIsNyArMjIsNyBAQAogI2luY2x1ZGUgIkFyZ0xp
c3QuaCIKIAogI2luY2x1ZGUgIkhlYXBSb290VmlzaXRvci5oIgotI2luY2x1ZGUgIkpTQ0pTVmFs
dWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJndW1lbnRzLmNwcAppbmRleCA4ZmQxOTVjYjliNWY3ZWY1YmYzZDJmZDkzMzQyYjAx
MDI3MjVmYWYxLi40ZmJhYzY4ODYzNDg2MTcxNjQ5YTMzNGQ2MWI1ZGNjMzgxNGRkNTU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKQEAgLTI2LDYgKzI2
LDcgQEAKICNpbmNsdWRlICJBcmd1bWVudHMuaCIKIAogI2luY2x1ZGUgIkNhbGxGcmFtZUlubGlu
ZXMuaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkpTQWN0aXZh
dGlvbi5oIgogI2luY2x1ZGUgIkpTQXJndW1lbnRzSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1
bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCmluZGV4
IDE4ZjM4OTE3MTM4NTIzNjJjN2E3NWEzMDUzYjQ2MzE0MTdiZWI4MWIuLmYxNmZkM2RlNDA1NTk3
MGJhOWQ5YzZmMGFlNjMxOGYyMjA0YjY1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FyZ3VtZW50cy5oCkBAIC0yNSw2ICsyNSw3IEBACiAjZGVmaW5lIEFyZ3VtZW50c19oCiAK
ICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIK
ICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVj
dC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAK
aW5kZXggYWZiNTk3OTBjYjAwOTk4OWJiN2I0Mjg2M2U5MTgyMzM1NzZiOGFhYy4uOTFjYWNkZmE4
NTdlYjY5Mzc2YTMwODFhOGM3MDJhYzljMjE3Y2E3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJBcmd1bWVudHNJdGVyYXRvckNvbnN0
cnVjdG9yLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5oIgorI2lu
Y2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiSlNBcmd1bWVudHNJdGVyYXRv
ci5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5s
aW5lcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1l
bnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCmluZGV4IGRkMDg5NGYxNGEwMjFkNWYxMjY1
OGFjYjAxZTcyMWZjZDZkMzQ4Y2MuLjViNGFlODcxNmIwNTUzYmU0NjIzOTU1ZTk5ZTFiNDNlYmYx
OGZlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50
c0l0ZXJhdG9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTI2LDcgKzI2LDkgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5oIgog
CisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJKU0FyZ3VtZW50c0l0
ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpT
QyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJv
dG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBl
LmNwcAppbmRleCAyN2FjNmQ0OGE3MWY3OTU1MDJhMTBjZWE2NDc4NjU0MTM1YTQ2M2EwLi42ZGM3
YmU1Njk2OWRlNjdmNjIxMDdiYjNhNTFhMzA4ZmEzYmE3NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiSlNTdHJpbmdCdWlsZGVyLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNTdHJpbmdKb2luZXIuaCIKICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJP
YmplY3RQcm90b3R5cGUuaCIKQEAgLTU2LDcgKzU3LDYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU29ydChFeGVjU3RhdGUq
KTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU3Bs
aWNlKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJy
YXlQcm90b0Z1bmNVblNoaWZ0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNFdmVyeShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRm9yRWFjaChFeGVjU3RhdGUq
KTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU29t
ZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5
UHJvdG9GdW5jSW5kZXhPZihFeGVjU3RhdGUqKTsKQEAgLTk1NCw2OSArOTU0LDYgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY01hcChFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHRBcnJheSk7CiB9CiAKLS8vIERvY3Vt
ZW50YXRpb24gZm9yIHRoZXNlIHRocmVlIGlzIGF2YWlsYWJsZSBhdDoKLS8vIGh0dHA6Ly9kZXZl
bG9wZXItdGVzdC5tb3ppbGxhLm9yZy9lbi9kb2NzL0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJl
bmNlOk9iamVjdHM6QXJyYXk6ZXZlcnkKLS8vIGh0dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3ppbGxh
Lm9yZy9lbi9kb2NzL0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6QXJyYXk6
Zm9yRWFjaAotLy8gaHR0cDovL2RldmVsb3Blci10ZXN0Lm1vemlsbGEub3JnL2VuL2RvY3MvQ29y
ZV9KYXZhU2NyaXB0XzEuNV9SZWZlcmVuY2U6T2JqZWN0czpBcnJheTpzb21lCi0KLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNFdmVyeShFeGVjU3RhdGUqIGV4ZWMp
Ci17Ci0gICAgSlNPYmplY3QqIHRoaXNPYmogPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCkudG9UaGlz
KGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9
IHRoaXNPYmotPmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKS50b1VJbnQz
MihleGVjKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KLSAgICBKU1ZhbHVlIGZ1bmN0aW9uID0g
ZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUg
Y2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwotICAgIGlmIChjYWxs
VHlwZSA9PSBDYWxsVHlwZU5vbmUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMpOwotCi0gICAgSlNWYWx1ZSBhcHBseVRoaXMgPSBleGVjLT5hcmd1bWVudCgxKTsKLQotICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKHRydWUpOwotCi0gICAgdW5zaWduZWQgayA9IDA7
Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlSlMgJiYgaXNKU0FycmF5KHRoaXNPYmopKSB7
Ci0gICAgICAgIEpTRnVuY3Rpb24qIGYgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGZ1bmN0aW9uKTsK
LSAgICAgICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KHRoaXNPYmopOwotICAgICAgICBDYWNo
ZWRDYWxsIGNhY2hlZENhbGwoZXhlYywgZiwgMyk7Ci0gICAgICAgIGZvciAoOyBrIDwgbGVuZ3Ro
ICYmICFleGVjLT5oYWRFeGNlcHRpb24oKTsgKytrKSB7Ci0gICAgICAgICAgICBpZiAoVU5MSUtF
TFkoIWFycmF5LT5jYW5HZXRJbmRleFF1aWNrbHkoaykpKQotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldFRoaXMoYXBwbHlUaGlz
KTsKLSAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoMCwgYXJyYXktPmdldEluZGV4
UXVpY2tseShrKSk7Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDEsIGpzTnVt
YmVyKGspKTsKLSAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoMiwgdGhpc09iaik7
Ci0gICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhY2hlZENhbGwuY2FsbCgpOwotICAgICAg
ICAgICAgaWYgKCFyZXN1bHQudG9Cb29sZWFuKGV4ZWMpKQotICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgZm9yICg7IGsgPCBsZW5ndGggJiYgIWV4ZWMtPmhhZEV4Y2VwdGlvbigpOyArK2spIHsKLSAg
ICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iaik7Ci0gICAgICAgIGlmICghdGhpc09iai0+
Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGssIHNsb3QpKQotICAgICAgICAgICAgY29udGludWU7Ci0K
LSAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgZWFjaEFyZ3VtZW50czsKLSAgICAgICAgZWFj
aEFyZ3VtZW50cy5hcHBlbmQoc2xvdC5nZXRWYWx1ZShleGVjLCBrKSk7Ci0gICAgICAgIGVhY2hB
cmd1bWVudHMuYXBwZW5kKGpzTnVtYmVyKGspKTsKLSAgICAgICAgZWFjaEFyZ3VtZW50cy5hcHBl
bmQodGhpc09iaik7Ci0KLSAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQotICAgICAgICBi
b29sIHByZWRpY2F0ZVJlc3VsdCA9IGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxs
RGF0YSwgYXBwbHlUaGlzLCBlYWNoQXJndW1lbnRzKS50b0Jvb2xlYW4oZXhlYyk7Ci0gICAgICAg
IGlmICghcHJlZGljYXRlUmVzdWx0KSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBqc0Jvb2xlYW4o
ZmFsc2UpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci19Ci0KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b0Z1bmNGb3JFYWNoKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU09i
amVjdCogdGhpc09iaiA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0
TW9kZSkudG9PYmplY3QoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29k
ZUNhY2hlLmNwcAppbmRleCA1MTBlMzgzZmFlNTc1YWFkYTgxNzZjMDQ0MWVlNzI1YjQzYTRjNzMy
Li5kMzA0ODc3ZmU5Y2RlMWMwOTE5ZmQ0NTk1ZjgxMWVjYWJjZTc3Mjc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTE0NCwyNCArMTQ0LDI2IEBA
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0
YWJsZUZyb21HbG9iYWxDb2RlKFZNJiB2CiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZv
cmVMYXN0TmV3bGluZTsKICAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQ
cm9ncmFtTm9kZT4oJnZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIoKSwgSlNQYXJzZU5vcm1hbCwg
SlNQYXJzZVByb2dyYW1Db2RlLCBlcnJvciwgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwog
ICAgIGlmICghcHJvZ3JhbSkgewotICAgICAgICBBU1NFUlQoZXJyb3IubV90eXBlICE9IFBhcnNl
ckVycm9yOjpFcnJvck5vbmUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChlcnJvci5tX3R5cGUg
IT0gUGFyc2VyRXJyb3I6OkVycm9yTm9uZSk7CiAgICAgICAgIG1fc291cmNlQ29kZS5yZW1vdmUo
YWRkUmVzdWx0Lml0ZXJhdG9yKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgICAgLy8g
VGhpcyBmdW5jdGlvbiBhc3N1bWVzIGFuIGlucHV0IHN0cmluZyB0aGF0IHdvdWxkIHJlc3VsdCBp
biBhIHNpbmdsZSBhbm9ueW1vdXMgZnVuY3Rpb24gZXhwcmVzc2lvbi4KICAgICBTdGF0ZW1lbnRO
b2RlKiBleHByU3RhdGVtZW50ID0gcHJvZ3JhbS0+c2luZ2xlU3RhdGVtZW50KCk7Ci0gICAgQVNT
RVJUKGV4cHJTdGF0ZW1lbnQpOwotICAgIEFTU0VSVChleHByU3RhdGVtZW50LT5pc0V4cHJTdGF0
ZW1lbnQoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudCk7CisgICAgUkVMRUFT
RV9BU1NFUlQoZXhwclN0YXRlbWVudC0+aXNFeHByU3RhdGVtZW50KCkpOwogICAgIEV4cHJlc3Np
b25Ob2RlKiBmdW5jRXhwciA9IHN0YXRpY19jYXN0PEV4cHJTdGF0ZW1lbnROb2RlKj4oZXhwclN0
YXRlbWVudCktPmV4cHIoKTsKLSAgICBBU1NFUlQoZnVuY0V4cHIpOworICAgIFJFTEVBU0VfQVNT
RVJUKGZ1bmNFeHByKTsKICAgICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwci0+aXNGdW5jRXhwck5v
ZGUoKSk7CiAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSA9IHN0YXRpY19jYXN0PEZ1bmNFeHBy
Tm9kZSo+KGZ1bmNFeHByKS0+Ym9keSgpOworICAgIFJFTEVBU0VfQVNTRVJUKCFwcm9ncmFtLT5o
YXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKKyAgICAKICAgICBib2R5LT5zZXRFbmRQb3NpdGlvbihw
b3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKLSAgICBBU1NFUlQoYm9keSk7Ci0gICAgQVNTRVJU
KGJvZHktPmlkZW50KCkuaXNOdWxsKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGJvZHkpOworICAg
IFJFTEVBU0VfQVNTRVJUKGJvZHktPmlkZW50KCkuaXNOdWxsKCkpOwogCi0gICAgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIGJvZHksIHRydWUpOworICAgIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBib2R5LCB0cnVlLCBVbmxpbmtlZE5vcm1h
bEZ1bmN0aW9uKTsKICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPm1fbmFtZVZhbHVlLnNldCh2bSwg
ZnVuY3Rpb25FeGVjdXRhYmxlLCBqc1N0cmluZygmdm0sIG5hbWUuc3RyaW5nKCkpKTsKIAogICAg
IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBTb3VyY2VDb2RlVmFsdWUodm0sIGZ1bmN0aW9u
RXhlY3V0YWJsZSwgbV9zb3VyY2VDb2RlLmFnZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcAppbmRleCAzZjVjNjQ1YzA5OGQ1
MjdmYzBjNzI1OWU5NDQ3ZWZiZTg4NjhhMjljLi4yZmMyYjcyN2FmY2VlZTFlYzJjNjI1ZGU1Njc1
YjNiZTFjZjYwZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuY3BwCkBAIC0yNyw3ICsyNywxMCBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogI2RlZmluZSBJTklUSUFMSVpFX1BST1BFUlRZX05BTUUobmFtZSkgLCBuYW1lKHZtLCAjbmFt
ZSkKICNkZWZpbmUgSU5JVElBTElaRV9LRVlXT1JEKG5hbWUpICwgbmFtZSMjS2V5d29yZCh2bSwg
I25hbWUpCi0jZGVmaW5lIElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKG5hbWUpICwgbmFtZSMjUHJp
dmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbShQcml2YXRlTmFtZSgpKSkKKyNkZWZpbmUgSU5JVElB
TElaRV9QUklWQVRFX05BTUUobmFtZSkgXAorICAgICwgbmFtZSMjUHJpdmF0ZU5hbWUoSWRlbnRp
Zmllcjo6ZnJvbShQcml2YXRlTmFtZSgpKSkgXAorICAgICwgbV8jI25hbWUjI1B1YmxpY1N0cmlu
Z1BhaXIobmFtZSwgbmFtZSMjUHJpdmF0ZU5hbWUpIFwKKwogCiBDb21tb25JZGVudGlmaWVyczo6
Q29tbW9uSWRlbnRpZmllcnMoVk0qIHZtKQogICAgIDogbnVsbElkZW50aWZpZXIoKQpAQCAtMzgs
OCArNDEsMjYgQEAgQ29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZNKiB2bSkK
ICAgICAsIGhhc05leHRJZGVudGlmaWVyKHZtLCAiaGFzTmV4dCIpCiAgICAgSlNDX0NPTU1PTl9J
REVOVElGSUVSU19FQUNIX0tFWVdPUkQoSU5JVElBTElaRV9LRVlXT1JEKQogICAgIEpTQ19DT01N
T05fSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJWkVfUFJPUEVSVFlfTkFN
RSkKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoSU5JVElBTElaRV9QUk9Q
RVJUWV9OQU1FKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BF
UlRZX05BTUUoSU5JVElBTElaRV9QUklWQVRFX05BTUUpCiB7CiB9CiAKK2NvbnN0IElkZW50aWZp
ZXIqIENvbW1vbklkZW50aWZpZXJzOjpnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCkgY29uc3QKK3sKKyNkZWZpbmUgUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKG5h
bWUpIGlmIChtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpci5maXJzdCA9PSBpZGVudCkgcmV0dXJu
ICZtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpci5zZWNvbmQ7CisgICAgSlNDX0NPTU1PTl9QUklW
QVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShSRVRVUk5fSUZfUFJJVkFURV9OQU1F
X01BVENIRVMpCisjdW5kZWYgUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTCisgICAgcmV0
dXJuIDA7Cit9CisKK0lkZW50aWZpZXIgQ29tbW9uSWRlbnRpZmllcnM6OmdldFB1YmxpY05hbWUo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0Cit7CisjZGVmaW5lIFJFVFVSTl9JRl9QUklW
QVRFX05BTUVfTUFUQ0hFUyhuYW1lKSBpZiAobV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuc2Vj
b25kID09IGlkZW50KSByZXR1cm4gbV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuZmlyc3Q7Cisg
ICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShSRVRV
Uk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMpCisjdW5kZWYgUkVUVVJOX0lGX1BSSVZBVEVfTkFN
RV9NQVRDSEVTCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
ZW1wdHlJZGVudGlmaWVyOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IGU4ZjllZDgy
YmM3OTQ2MjAzODI2NmIzMDIwNzgyMjQ3YjFmYTI3YTMuLjkyNGQzNmFjNjkxMzUwMzU3Y2IzODJi
MWVmM2I0MGEwYTA4YzBhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBDb21tb25J
ZGVudGlmaWVyc19oCiAKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiSlNDQnVp
bHRpbnMuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogLy8gTWFya2VkQXJndW1l
bnRCdWZmZXIgb2YgcHJvcGVydHkgbmFtZXMsIHBhc3NlZCB0byBhIG1hY3JvIHNvIHdlIGNhbiBk
byBzZXQgdGhlbSB1cCB2YXJpb3VzCkBAIC0xMzMsOCArMTM0LDEwIEBACiAgICAgbWFjcm8ob3Ny
RXhpdHMpIFwKICAgICBtYWNybyhwYXJzZSkgXAogICAgIG1hY3JvKHByb2ZpbGVkQnl0ZWNvZGVz
KSBcCisgICAgbWFjcm8ocHJvbWlzZSkgXAogICAgIG1hY3JvKHByb3BlcnR5SXNFbnVtZXJhYmxl
KSBcCiAgICAgbWFjcm8ocHJvdG90eXBlKSBcCisgICAgbWFjcm8ocmVzb2x2ZSkgXAogICAgIG1h
Y3JvKHNldCkgXAogICAgIG1hY3JvKHNpemUpIFwKICAgICBtYWNybyhzbGljZSkgXApAQCAtMTU1
LDcgKzE1OCwxNCBAQAogICAgIG1hY3JvKHZhbHVlcykgXAogICAgIG1hY3JvKHZhbHVlT2YpIFwK
ICAgICBtYWNybyh3aW5kb3cpIFwKLSAgICBtYWNybyh3cml0YWJsZSkKKyAgICBtYWNybyh3cml0
YWJsZSkgXAorICAgIG1hY3JvKGl0ZXJhdG9yKSBcCisgICAgbWFjcm8oaXRlcmF0b3JOZXh0KSBc
CisgICAgbWFjcm8ocmVqZWN0KSBcCisgICAgbWFjcm8oZnVsZmlsbG1lbnRIYW5kbGVyKSBcCisg
ICAgbWFjcm8ocmVqZWN0aW9uSGFuZGxlcikgXAorICAgIG1hY3JvKGRlZmVycmVkKSBcCisgICAg
bWFjcm8oY291bnRkb3duSG9sZGVyKSBcCiAKICNkZWZpbmUgSlNDX0NPTU1PTl9JREVOVElGSUVS
U19FQUNIX0tFWVdPUkQobWFjcm8pIFwKICAgICBtYWNybyhicmVhaykgXApAQCAtMjAzLDcgKzIx
Myw3IEBACiAgICAgbWFjcm8odm9pZCkgXAogICAgIG1hY3JvKHdoaWxlKSBcCiAgICAgbWFjcm8o
d2l0aCkgXAotICAgIG1hY3JvKHlpZWxkKQorICAgIG1hY3JvKHlpZWxkKSBcCiAKICNkZWZpbmUg
SlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShtYWNybykg
XAogICAgIG1hY3JvKGl0ZXJhdG9yKSBcCkBAIC0yMTYsNyArMjI2LDEyIEBACiAgICAgbWFjcm8o
aW5kZXgpIFwKICAgICBtYWNybyh2YWx1ZXMpIFwKICAgICBtYWNybyhkZWZlcnJlZCkgXAotICAg
IG1hY3JvKGNvdW50ZG93bkhvbGRlcikKKyAgICBtYWNybyhjb3VudGRvd25Ib2xkZXIpIFwKKyAg
ICBtYWNybyhPYmplY3QpIFwKKyAgICBtYWNybyhUeXBlRXJyb3IpIFwKKyAgICBtYWNybyh1bmRl
ZmluZWRLZXl3b3JkKSBcCisgICAgbWFjcm8oY2FsbCkgXAorICAgIG1hY3JvKGFwcGx5KQogCiBu
YW1lc3BhY2UgSlNDIHsKIApAQCAtMjQwLDExICsyNTUsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIAogI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xP
QkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZTsKICAgICAgICAgSlNDX0NPTU1PTl9JREVO
VElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJU
WV9OQU1FX0dMT0JBTCkKKyAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1F
KEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwpCiAjdW5kZWYgSlND
X0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJUWV9OQU1FX0dMT0JBTAogCi0jZGVmaW5lIEpTQ19J
REVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTChuYW1lKSBjb25z
dCBJZGVudGlmaWVyIG5hbWUjI1ByaXZhdGVOYW1lOworI2RlZmluZSBKU0NfSURFTlRJRklFUl9E
RUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwobmFtZSkgY29uc3QgSWRlbnRpZmll
ciBuYW1lIyNQcml2YXRlTmFtZTsgY29uc3Qgc3RkOjpwYWlyPElkZW50aWZpZXIsIElkZW50aWZp
ZXI+IG1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQYWlyOwogICAgICAgICBKU0NfQ09NTU9OX1BSSVZB
VEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVf
UFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTCkKICN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNM
QVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwKKyAgICAgICAgCisgICAgICAgIGNvbnN0
IElkZW50aWZpZXIqIGdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKKyAg
ICAgICAgSWRlbnRpZmllciBnZXRQdWJsaWNOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsK
ICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDA3NTg3NWZiMjMxNmE1NTU3MDUw
YTY2OTBjZDBmOTg4MjQ4NGY1ZjMuLjVhZjkwODc1NGU3NDdmOGNhZTBjZDA0YWY4ZDQ5MTUwMDQ2
OGMyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUg
IkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCi0jaW5jbHVkZSAiSlNDSlNW
YWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUg
IkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAKaW5kZXggNTUz
MzRiZTJmOTgwYTk4ZjdmZWE0MmEwNWJlMGYyMGMwMTlmZjBkZC4uMTZlYmFkMTBlNGU0MmI2Yjc4
NWU5NzhkMzhlODcwZTNiNWE2YzQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIK
ICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKICNpbmNsdWRlICJMTEludENvbW1vbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IENvbW1vblNsb3dQYXRocyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IDA1ZTExZTBiODBhMzQzMGFlYWIyMmIwMjIyYTIx
MmY0YThlMmM0OWIuLjM2NGNjNzE2NjYwOGI1MDA3ZDQ3N2Q4NzM5MThhNWQ2NGIxNjg2NTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMu
Y3BwCkBAIC04MSw2ICs4MSwxMSBAQCBKU09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9y
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKIEpTT2JqZWN0KiBjcmVhdGVVbmRlZmlu
ZWRWYXJpYWJsZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnQp
CiB7CisgICAgCisgICAgaWYgKGlkZW50LmltcGwoKS0+aXNFbXB0eVVuaXF1ZSgpKSB7CisgICAg
ICAgIFN0cmluZyBtZXNzYWdlKG1ha2VTdHJpbmcoIkNhbid0IGZpbmQgcHJpdmF0ZSB2YXJpYWJs
ZTogQCIsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZXRQdWJsaWNOYW1lKGlkZW50KS5zdHJpbmco
KSkpOworICAgICAgICByZXR1cm4gY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgbWVzc2FnZSk7
CisgICAgfQogICAgIFN0cmluZyBtZXNzYWdlKG1ha2VTdHJpbmcoIkNhbid0IGZpbmQgdmFyaWFi
bGU6ICIsIGlkZW50LnN0cmluZygpKSk7CiAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9y
KGV4ZWMsIG1lc3NhZ2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5oCmluZGV4IDE5ODk3NmJiM2ZlNmU2ZTkxMTc5ODEyZDFjYWY5YjhiZjliZmQwYmIuLmNm
MGU3NTNhN2M1ZjU0NDY3YjY0ZDhlMmE5YjNmYmEyNzE1MDAwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTQ4NCw3ICs0ODQsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGNsZWFyQ29kZSgpOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJs
ZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwg
dXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZv
IGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3Rp
dmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UpOyB9CiAK
ICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVC
bG9jay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkZ1bmN0aW9uRGVj
bHMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRl
Y2xzKCk7IH0KQEAgLTU0MCw3ICs1NDAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyQ29k
ZSgpOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVy
biBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RN
b2RlKCksIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29u
c3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCks
IGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CkBAIC02MjgsNyArNjI4LDggQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2NrRm9yKGtpbmQpOwogICAgIH0KLSAg
ICAgICAgCisKKyAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91
bmxpbmtlZEV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCk7IH0KICAgICBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWUoKTsgfQog
ICAgIGNvbnN0IElkZW50aWZpZXImIGluZmVycmVkTmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRF
eGVjdXRhYmxlLT5pbmZlcnJlZE5hbWUoKTsgfQogICAgIEpTU3RyaW5nKiBuYW1lVmFsdWUoKSBj
b25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZVZhbHVlKCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcApp
bmRleCBjMWIwOGFmMmQ4MThkYWU1N2UxYjAwZmRhMTczYTgxNjEzNzUyOWI1Li4xMjQ5MGM0MGYz
MzQxN2VjYTkyMzg1MGEwZGM2NjJkYmJjZDQwZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC0yMiwxMiArMjIsMTMg
QEAKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgogCiAjaW5jbHVkZSAiQXJndW1lbnRz
LmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5j
bHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdCdWlsZGVyLmgiCi0jaW5jbHVkZSAi
SW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJM
ZXhlci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIApAQCAtMTA4LDcgKzEwOSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVl
KCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0cyhKU0Z1bmN0aW9uOjppbmZvKCkpKSB7CiAg
ICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPih0aGlzVmFs
dWUpOwotICAgICAgICBpZiAoZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAgIGlm
IChmdW5jdGlvbi0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiZnVuY3Rpb24g
IiwgZnVuY3Rpb24tPm5hbWUoZXhlYyksICIoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKTsK
ICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gZnVuY3Rpb24tPmpzRXhl
Y3V0YWJsZSgpOwogICAgICAgICBTdHJpbmcgc291cmNlU3RyaW5nID0gZXhlY3V0YWJsZS0+c291
cmNlKCkudG9TdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fj
dGl2YXRpb24uY3BwCmluZGV4IDcyZWQxYzcxMjQwNjExNjhiMGFkZGQzMTE2Zjc1NWExMTdiOGZi
OTAuLmIzNzQ5NDMwOTllMjE1NWEzOTc3MTMzMTM0NzAyYzJhMjRhY2M4NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcApAQCAtNTgsNyArNTgs
NyBAQCB2b2lkIEpTQWN0aXZhdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogCiBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxl
R2V0KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAg
ICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3Bl
cnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1i
b2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoZW50cnku
aXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzIsNyArNzIsNyBAQCBpbmxp
bmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdAogCiBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRh
YmxlR2V0KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvcikKIHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+
aW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlRW50
cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnVpZCgpKTsK
ICAgICBpZiAoZW50cnkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtODks
NyArODksNyBAQCBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0KEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TgogICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9
PSBIZWFwOjpoZWFwKHRoaXMpKTsKICAgICAKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0g
c3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAg
IFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVy
dHlOYW1lLnVpZCgpKTsKICAgICBpZiAoZW50cnkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpZiAoZW50cnkuaXNSZWFkT25seSgpKSB7CkBAIC0xMzYsNyArMTM2LDcgQEAg
aW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKFZN
JiB2bSwgUHJvcGVydHlOYW1lIHByb3AKICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBy
ZWc7CiAgICAgewogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJs
ZSgpLT5tX2xvY2spOwotICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0g
c3ltYm9sVGFibGUoKS0+ZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwor
ICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUoKS0+
ZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgICAgIGlmIChpdGVyID09IHN5
bWJvbFRhYmxlKCktPmVuZChsb2NrZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICBTeW1ib2xUYWJsZUVudHJ5JiBlbnRyeSA9IGl0ZXItPnZhbHVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcAppbmRl
eCAyZmNmODgxNWMwNTY4MDU4MTJhNzk5MWE1ZmYwNjNkNjg3Mzk3MTY0Li45YTkyNTgzYWEwZWM5
MGRiYjMyOGVjZDUwZGMzMTM5YWVmMDI3M2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcApAQCAtMjcsNiArMjcsNyBA
QAogI2luY2x1ZGUgIkpTQXJndW1lbnRzSXRlcmF0b3IuaCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50
cy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0Mgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCmluZGV4IDkwMDdiNWY3
ZDNmMTAzYjFkMjFiMWEzNjVhMjZjMjE1YzMyYjRkMjguLmJhMGEyZDM4ZTljNTNlMTU5MzdkNDZh
ODk1MWE4YzhjNDUwNzkyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXkuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgogI2luY2x1
ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkluZGV4aW5nSGVhZGVySW5saW5lcy5oIgor
I2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5
LmgiCiAjaW5jbHVkZSAiUmVqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL0FWTFRyZWUuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3BwCmluZGV4
IGQ1MDZjNGViZDI2MjBlZmQ3MDc5M2E4NzNkMDg1MmZiZDk3ODI4NTkuLmNmMzcwOTdlYzBjNjky
NWE4NjdiOGMwMTBjMGVmYzQwNzQ0ODVmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5j
bHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisj
aW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVz
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlLmNwcAppbmRleCBjY2E2ODg4YmY5OGEwMjg2NDZjYTNkZGRmMzc2MjdjZTBlN2Q5
MzAyLi4zMzlhN2FiN2Y1OTUxNWU5NmFmYjdlYzRiODc0MWU3YWE4ZTE2NmY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApAQCAtMzIsNyArMzIsOSBA
QAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgog
I2luY2x1ZGUgIkpTTm90QW5PYmplY3QuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIK
ICNpbmNsdWRlICJOdW1iZXJPYmplY3QuaCIKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5j
bHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAppbmRleCBm
N2M4NDQ2NDUwOTJiMjUwODA1ZTZlOGQ0ODMyYzk5OGJkYjg5YjU0Li5kNzk1ZGQ1NmE5N2RkYjU5
N2MwOTBmYzJlMGI3ZjMwOGUzM2ViY2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsSW5saW5lcy5oCkBAIC0yNyw4ICsyNywxMCBAQAogI2RlZmluZSBKU0NlbGxJ
bmxpbmVzX2gKIAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50
aWZpZXJzLmgiCiAjaW5jbHVkZSAiRGVmZXJHQy5oIgogI2luY2x1ZGUgIkhhbmRsZS5oIgorI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCAyNDE5NjQ2MTBiYjQ0MjdiMTg2Mzcz
MzQ2ZTI0ZjVhODJkMGNkY2M0Li43YmVmNTkxYjE0ZjM1ZjFhOTM0OGFkZTlhOWUwZjU5MGViNmFk
Zjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApA
QCAtMTA5LDYgKzEwOSwxNCBAQCB2b2lkIEpTRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgaW50IGxlbmd0aAogICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKK0pTRnVuY3Rpb24qIEpTRnVuY3Rpb246
OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBKU0Z1bmN0aW9uKiBm
dW5jdGlvbiA9IGNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBmdW5j
dGlvbi0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZygmdm0s
IGV4ZWN1dGFibGUtPm5hbWUoKS5zdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERv
bnRFbnVtKTsKKyAgICBmdW5jdGlvbi0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGgsIGpzTnVtYmVyKGV4ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCkpLCBEb250RGVsZXRl
IHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uOworfQorCiBPYmpl
Y3RBbGxvY2F0aW9uUHJvZmlsZSogSlNGdW5jdGlvbjo6Y3JlYXRlQWxsb2NhdGlvblByb2ZpbGUo
RXhlY1N0YXRlKiBleGVjLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpCiB7CiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKQEAgLTE0Miw3ICsxNTAsNyBAQCBjb25zdCBTdHJpbmcgSlNGdW5jdGlvbjo6
Y2FsY3VsYXRlZERpc3BsYXlOYW1lKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIGV4
cGxpY2l0TmFtZTsKICAgICAKICAgICBjb25zdCBTdHJpbmcgYWN0dWFsTmFtZSA9IG5hbWUoZXhl
Yyk7Ci0gICAgaWYgKCFhY3R1YWxOYW1lLmlzRW1wdHkoKSB8fCBpc0hvc3RGdW5jdGlvbigpKQor
ICAgIGlmICghYWN0dWFsTmFtZS5pc0VtcHR5KCkgfHwgaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24o
KSkKICAgICAgICAgcmV0dXJuIGFjdHVhbE5hbWU7CiAgICAgCiAgICAgcmV0dXJuIGpzRXhlY3V0
YWJsZSgpLT5pbmZlcnJlZE5hbWUoKS5zdHJpbmcoKTsKQEAgLTE1MCwxMCArMTU4LDIwIEBAIGNv
bnN0IFN0cmluZyBKU0Z1bmN0aW9uOjpjYWxjdWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0YXRlKiBl
eGVjKQogCiBjb25zdCBTb3VyY2VDb2RlKiBKU0Z1bmN0aW9uOjpzb3VyY2VDb2RlKCkgY29uc3QK
IHsKLSAgICBpZiAoaXNIb3N0RnVuY3Rpb24oKSkKKyAgICBpZiAoaXNIb3N0T3JCdWlsdGluRnVu
Y3Rpb24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuICZqc0V4ZWN1dGFibGUoKS0+
c291cmNlKCk7CiB9CisgICAgCitib29sIEpTRnVuY3Rpb246OmlzSG9zdE9yQnVpbHRpbkZ1bmN0
aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNIb3N0RnVuY3Rpb24oKSB8fCBpc0J1aWx0aW5G
dW5jdGlvbigpOworfQorCitib29sIEpTRnVuY3Rpb246OmlzQnVpbHRpbkZ1bmN0aW9uKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gIWlzSG9zdEZ1bmN0aW9uKCkgJiYganNFeGVjdXRhYmxlKCktPmlz
QnVpbHRpbkZ1bmN0aW9uKCk7Cit9CiAKIHZvaWQgSlNGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewpAQCAtMjc3LDcgKzI5NSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTRnVuY3Rpb246OmNhbGxlckdldHRlcihFeGVjU3RhdGUqIGV4ZWMs
IEVuY29kZWRKU1ZhbHVlIHNsb3RCYXNlCiAgICAgaWYgKCFjYWxsZXIuaXNPYmplY3QoKSB8fCAh
YXNPYmplY3QoY2FsbGVyKS0+aW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsZXIpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9u
ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjYWxsZXIpOwotICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0
RnVuY3Rpb24oKSB8fCAhZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkK
KyAgICBpZiAoZnVuY3Rpb24tPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgfHwgIWZ1bmN0aW9u
LT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY2FsbGVyKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRnVuY3Rpb24uY2FsbGVyIHVzZWQgdG8gcmV0cmlldmUg
c3RyaWN0IGNhbGxlciIpKSk7CiB9CkBAIC0yOTksNyArMzE3LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNGdW5jdGlvbjo6bmFtZUdldHRlcihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBzbG90QmFz
ZSwgRW5jb2QKIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNG
dW5jdGlvbio+KG9iamVjdCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkp
CisgICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAg
IHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCBzbG90KTsKIAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlO
YW1lcygpLnByb3RvdHlwZSkgewpAQCAtMzYxLDcgKzM3OSw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOCiB2b2lkIEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0
eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICghdGhpc09iamVjdC0+
aXNIb3N0RnVuY3Rpb24oKSAmJiAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkg
eworICAgIGlmICghdGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSAmJiAobW9k
ZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgewogICAgICAgICAvLyBNYWtlIHN1cmUg
cHJvdG90eXBlIGhhcyBiZWVuIHJlaWZpZWQuCiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRo
aXNPYmplY3QpOwogICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9w
ZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlw
ZSwgc2xvdCk7CkBAIC0zNzcsNyArMzk1LDcgQEAgdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLAogdm9p
ZCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjZWxs
KTsKLSAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSkgeworICAgIGlmICh0aGlz
T2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKSB7CiAgICAgICAgIEJhc2U6OnB1dCh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTQyNSw3ICs0NDMsNyBAQCBib29sIEpTRnVuY3Rpb246OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcAog
Ym9vbCBKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVz
Y3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKIHsKICAgICBKU0Z1bmN0
aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICh0
aGlzT2JqZWN0LT5pc0hvc3RGdW5jdGlvbigpKQorICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RP
ckJ1aWx0aW5GdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVy
dHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9u
KTsKIAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3Rv
dHlwZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4
IDdjZDE0YjhjMmQ4MDBmNjFiZGMxMmVkZDJkZjA0ZDM1ZmEwNjE5YjYuLjk5NWM5ZDExYmQ4OTgz
ODZmN2EyMGM0MTYzNGZhN2NjOWI3Njk4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmgKQEAgLTY4LDYgKzY4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICByZXR1cm4gZnVuY3Rpb247CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHN0
YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGVCdWlsdGluRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1
dGFibGUqLCBKU0dsb2JhbE9iamVjdCopOworICAgICAgICAKICAgICAgICAgc3RhdGljIHZvaWQg
ZGVzdHJveShKU0NlbGwqKTsKICAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0
cmluZyBuYW1lKEV4ZWNTdGF0ZSopOwpAQCAtMTQ1LDYgKzE0Nyw5IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgcmV0dXJuIG1fYWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OwogICAg
ICAgICB9CiAKKyAgICAgICAgYm9vbCBpc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpIGNvbnN0Owor
ICAgICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3Q7CisKICAgICBwcm90ZWN0ZWQ6
CiAgICAgICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdCB8IEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IE92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVj
dHVyZUZsYWdzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGlu
ZXMuaAppbmRleCAyZGRjMjlmNzE4OTdiYjUxZDM5MGIwNmIyNWE3MzgzMzg3NGJhMGMxLi5lZGQz
NDQ5Y2U0N2IxNzM1ZThlNWRiYjA1ZjMxOGUzZDU1ZjNiZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9y
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5k
ZWYgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXNfaAogI2RlZmluZSBK
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lc19oCiAKKyNpbmNsdWRlICJD
b21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiSlNBcnJh
eUJ1ZmZlci5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3Iu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggNmRiODYyNzRjM2I4NzRhYWFkZTUx
NTE4OTgyNjcyNmZiMTM2YzE3My4uZjI0ZWE3MzAzZGY5NjlkYmQyZGNhNTJjODZkMTFjNzhjMDBk
YjllYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNk
ZWZpbmUgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzX2gKIAogI2luY2x1ZGUgIkFycmF5
QnVmZmVyVmlldy5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAi
RGVmZXJHQy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVy
cy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaAppbmRleCA0
NTk5OTdhNDY0YjkxMTk0NzdiMWJlODRlMzZjNGUyOTY2YWNlZjg1Li44ZTVmZjgyNzkxZTZmZjhk
NGViOWMzNzM2OTFlNDMzZWI3ZDE2YWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1By
b3RvdHlwZUlubGluZXMuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBKU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXNfaAogI2RlZmluZSBKU0dlbmVyaWNUeXBlZEFycmF5
Vmlld1Byb3RvdHlwZUlubGluZXNfaAogCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIK
ICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMmMyNzRjMWE3ZDQ4MWMwN2RmMGQyYmViM2IyOTMxYTM5
MDdhNWU2Ni4uMDZlNTRjODRlNzdiOTAzMmJhYTFkMmRmNDdhMWM3MmU4MGI3ZGVhMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAt
MzQ2LDcgKzM0Niw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90
eXBlKQogCiAgICAgLy8gQ29uc3RydWN0b3JzCiAKLSAgICBKU0NlbGwqIG9iamVjdENvbnN0cnVj
dG9yID0gT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgT2JqZWN0Q29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fb2Jq
ZWN0UHJvdG90eXBlLmdldCgpKTsKKyAgICBPYmplY3RDb25zdHJ1Y3Rvciogb2JqZWN0Q29uc3Ry
dWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBPYmplY3RDb25zdHJ1Y3Rvcjo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9v
YmplY3RQcm90b3R5cGUuZ2V0KCkpOworICAgIG1fb2JqZWN0Q29uc3RydWN0b3Iuc2V0KHZtLCB0
aGlzLCBvYmplY3RDb25zdHJ1Y3Rvcik7CiAgICAgSlNDZWxsKiBmdW5jdGlvbkNvbnN0cnVjdG9y
ID0gRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBGdW5jdGlvbkNvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2Z1
bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKICAgICBKU0NlbGwqIGFycmF5Q29uc3RydWN0b3IgPSBB
cnJheUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fYXJyYXlQcm90b3R5
cGUuZ2V0KCkpOwogCkBAIC00MzIsNyArNDMzLDEwIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJl
c2V0KEpTVmFsdWUgcHJvdG90eXBlKQogICAgIEdsb2JhbFByb3BlcnR5SW5mbyBzdGF0aWNHbG9i
YWxzW10gPSB7CiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5O
YU4sIGpzTmFOKCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAg
R2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPkluZmluaXR5LCBqc051bWJlcihz
dGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpLCBEb250RW51bSB8IERvbnRE
ZWxldGUgfCBSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLCBqc1VuZGVmaW5lZCgpLCBEb250RW51bSB8IERvbnRE
ZWxldGUgfCBSZWFkT25seSkKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQsIGpzVW5kZWZpbmVkKCksIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPnVuZGVmaW5lZEtleXdvcmRQcml2YXRlTmFtZSwganNVbmRlZmluZWQoKSwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+T2JqZWN0UHJpdmF0ZU5hbWUsIG9iamVjdENvbnN0cnVjdG9yLCBE
b250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5UeXBlRXJyb3JQcml2YXRlTmFtZSwgbV90eXBlRXJyb3JD
b25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpCiAgICAg
fTsKICAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2JhbHMsIFdURl9BUlJBWV9MRU5HVEgo
c3RhdGljR2xvYmFscykpOwogICAgIApAQCAtNjA4LDYgKzYxMiw3IEBAIHZvaWQgSlNHbG9iYWxP
YmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zeW50YXhFcnJvckNvbnN0cnVjdG9y
KTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV90eXBlRXJyb3JDb25zdHJ1Y3Rv
cik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fVVJJRXJyb3JDb25zdHJ1Y3Rv
cik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fb2JqZWN0Q29uc3RydWN0b3Ip
OwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Byb21pc2VDb25zdHJ1Y3Rvcik7
CiAKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9ldmFsRnVuY3Rpb24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggYjBj
YWQzZGM1NDcwZjdjN2EwZTU3MGJkY2QyZGZmYTg5NWUyYWEwYy4uM2E2MTZjNmYwNWVkZjFkMjk1
YWY4NDQxYWE2NjUwMGZiOTJhNGE0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC02Nyw2ICs2Nyw3IEBAIGNsYXNzIEpTU3RhY2s7CiBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBNaWNyb3Rhc2s7CiBjbGFzcyBOYXRp
dmVFcnJvckNvbnN0cnVjdG9yOworY2xhc3MgT2JqZWN0Q29uc3RydWN0b3I7CiBjbGFzcyBQcm9n
cmFtQ29kZUJsb2NrOwogY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7CiBjbGFzcyBSZWdFeHBDb25z
dHJ1Y3RvcjsKQEAgLTE1OCw2ICsxNTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV3JpdGVCYXJyaWVy
PE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IG1fdHlwZUVycm9yQ29uc3RydWN0b3I7CiAgICAgV3Jp
dGVCYXJyaWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IG1fVVJJRXJyb3JDb25zdHJ1Y3RvcjsK
ICAgICBXcml0ZUJhcnJpZXI8SlNQcm9taXNlQ29uc3RydWN0b3I+IG1fcHJvbWlzZUNvbnN0cnVj
dG9yOworICAgIFdyaXRlQmFycmllcjxPYmplY3RDb25zdHJ1Y3Rvcj4gbV9vYmplY3RDb25zdHJ1
Y3RvcjsKIAogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2V2YWxGdW5jdGlvbjsKICAg
ICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9jYWxsRnVuY3Rpb247CkBAIC0zMzAsNiArMzMy
LDcgQEAgcHVibGljOgogICAgIFJlZ0V4cENvbnN0cnVjdG9yKiByZWdFeHBDb25zdHJ1Y3Rvcigp
IGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwQ29uc3RydWN0b3IuZ2V0KCk7IH0KIAogICAgIEVycm9y
Q29uc3RydWN0b3IqIGVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yQ29u
c3RydWN0b3IuZ2V0KCk7IH0KKyAgICBPYmplY3RDb25zdHJ1Y3Rvciogb2JqZWN0Q29uc3RydWN0
b3IoKSBjb25zdCB7IHJldHVybiBtX29iamVjdENvbnN0cnVjdG9yLmdldCgpOyB9CiAgICAgTmF0
aXZlRXJyb3JDb25zdHJ1Y3RvciogZXZhbEVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVy
biBtX2V2YWxFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CiAgICAgTmF0aXZlRXJyb3JDb25zdHJ1
Y3RvciogcmFuZ2VFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZUVycm9y
Q29uc3RydWN0b3IuZ2V0KCk7IH0KICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiByZWZlcmVu
Y2VFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2VFcnJvckNvbnN0
cnVjdG9yLmdldCgpOyB9CkBAIC01ODEsNyArNTg0LDcgQEAgaW5saW5lIGJvb2wgSlNHbG9iYWxP
YmplY3Q6Omhhc093blByb3BlcnR5Rm9yV3JpdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUKIAogaW5saW5lIGJvb2wgSlNHbG9iYWxPYmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVydHko
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5
ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwor
ICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJv
cGVydHlOYW1lLnVpZCgpKTsKICAgICByZXR1cm4gIWVudHJ5LmlzTnVsbCgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggMmI2N2ExZDllZWQ4
NGU5OTU2ZjhiYjk2ODM4NGM4NGNhZWE1M2NmZi4uMmVhMmMyNGU2ZWFiNGNkMGQ3ZmZlZDY2NWVm
NGFlNDFhZjA3NTBmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2V0Q2xhc3NQcm9wZXJ0
eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQ2xhc3NJbmZvKiBjbGFzcwogICAgICAgICBp
bnQgaGFzaFNpemVNYXNrID0gdGFibGUtPmNvbXBhY3RTaXplIC0gMTsKICAgICAgICAgY29uc3Qg
SGFzaEVudHJ5KiBlbnRyeSA9IHRhYmxlLT50YWJsZTsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPD0gaGFzaFNpemVNYXNrOyArK2ksICsrZW50cnkpIHsKLSAgICAgICAgICAgIGlmIChlbnRy
eS0+a2V5KCkgJiYgKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCAobW9kZSA9
PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgJiYgISgoZW50cnktPmF0dHJpYnV0ZXMoKSAm
IEZ1bmN0aW9uKSAmJiBkaWRSZWlmeSkpCisgICAgICAgICAgICBpZiAoZW50cnktPmtleSgpICYm
ICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwgKG1vZGUgPT0gSW5jbHVkZURv
bnRFbnVtUHJvcGVydGllcykpICYmICEoKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JG
dW5jdGlvbikgJiYgZGlkUmVpZnkpKQogICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRk
KGVudHJ5LT5rZXkoKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNjE4LDcgKzE2MTgsNyBAQCB2
b2lkIEpTT2JqZWN0OjpyZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlbGV0ZShFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhp
cyk7CiAgICAgICAgIGZvciAoSGFzaFRhYmxlOjpDb25zdEl0ZXJhdG9yIGl0ZXIgPSBoYXNoVGFi
bGUtPmJlZ2luKHZtKTsgaXRlciAhPSBoYXNoVGFibGUtPmVuZCh2bSk7ICsraXRlcikgewotICAg
ICAgICAgICAgaWYgKGl0ZXItPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKQorICAgICAgICAgICAg
aWYgKGl0ZXItPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKQogICAgICAgICAgICAg
ICAgIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KGdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCks
ICppdGVyLCB0aGlzLCBJZGVudGlmaWVyKCZ2bSwgaXRlci0+a2V5KCkpLCBzbG90KTsKICAgICAg
ICAgfQogICAgIH0KQEAgLTIyMzYsNiArMjIzNiwxNiBAQCB2b2lkIEpTT2JqZWN0OjpwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bgogICAgIHB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCBmdW5jdGlvbiwgYXR0cmlidXRlcyk7
CiB9CiAKK3ZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbihWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlO
YW1lLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdW5zaWduZWQgYXR0
cmlidXRlcykKK3sKKyAgICBTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05h
bWUoKTsKKyAgICBpZiAoIW5hbWUpCisgICAgICAgIG5hbWUgPSB2bS5wcm9wZXJ0eU5hbWVzLT5h
bm9ueW1vdXMuaW1wbCgpOworICAgIEFTU0VSVChuYW1lKTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5j
dGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgc3RhdGljX2Nhc3Q8
RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxlKSwgZ2xvYmFsT2JqZWN0KTsK
KyAgICBwdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgZnVuY3Rpb24sIGF0dHJpYnV0ZXMpOwor
fQorCiB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0
aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJvcGVydHlO
YW1lJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlv
biBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRl
cykKIHsKICAgICBTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDAyYjEzN2IzNTBj
MmZhODMyNWJkM2I5NjQ3MTEyYWJlODc2ZjM4M2YuLmRkZTU5N2VmZmFlYzBmMWI4ZDQ0YzI5MTE5
NTAzMDFmMDYwMDdlOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkJ1dHRlcmZseS5oIgogI2luY2x1ZGUgIkNh
bGxGcmFtZS5oIgogI2luY2x1ZGUgIkNsYXNzSW5mby5oIgotI2luY2x1ZGUgIkNvbW1vbklkZW50
aWZpZXJzLmgiCiAjaW5jbHVkZSAiQ29weVdyaXRlQmFycmllci5oIgogI2luY2x1ZGUgIkRlZmVy
R0MuaCIKICNpbmNsdWRlICJIZWFwLmgiCkBAIC01ODEsNiArNTgwLDcgQEAgcHVibGljOgogICAg
IHZvaWQgcHV0RGlyZWN0VW5kZWZpbmVkKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgeyBsb2NhdGlv
bkZvck9mZnNldChvZmZzZXQpLT5zZXRVbmRlZmluZWQoKTsgfQogCiAgICAgdm9pZCBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1l
JiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIHZvaWQgcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCBGdW5jdGlvbkV4ZWN1dGFi
bGUqLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICB2b2lkIHB1dERpcmVjdE5hdGl2ZUZ1bmN0
aW9uV2l0aG91dFRyYW5zaXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5
TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2lj
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNw
cAppbmRleCA0MDI2MTk2MzNmYTA2ZmQyNTRiM2YyYTdhOGNjNzFlODA3YWFmOTExLi4xN2QyYWI2
NWE4OGZmYjEzZmE5YTZjOGY1ODNjYTg0NGFmODMyMjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCkBAIC0zNSw2
ICszNSw3IEBACiAjaW5jbHVkZSAiSlNQcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU1By
b21pc2VGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU1Byb21pc2VQcm90b3R5cGUuaCIKKyNpbmNs
dWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJO
dW1iZXJPYmplY3QuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
Y3BwCmluZGV4IDY4YThiZDg3ZDM4YWRiYmI5ZGQyYWM5ZWM0YjQ5ZDVlZjQ1NDlkNTYuLjIzN2M0
MmJiMGRhMGYxNjY3NmViMTFhZGU4MTgwYTdiMDZkOThlYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCkBA
IC0yOSw3ICsyOSw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oIgogCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNs
dWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCmluZGV4
IGY0MzYyZmYzNTRlZTZhNTAyMjFiYjczMWQxYTI2MTFlNmRkNjFiYzAuLmQwNzM3MTlkZTE2MGQy
ZjI5MjExMGE1OTZhMTA1ZTJmYTIxMTVmZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKQEAgLTMxLDcgKzMxLDYg
QEAKIAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKLSNpbmNs
dWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKICNpbmNs
dWRlIDxtZW1vcnk+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCmlu
ZGV4IDJiMWNkZGRjNTg0MWQ2MGQxNTdhMmU2MWY3MDJiMGVlNWZhMWQ2NzYuLmUzOTM0MTYwYWVh
OTI2ZWYxNTkzMmY4NzkwZTI0YzUyYWYwMmQzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdHJpbmcuaApAQCAtMjQsNyArMjQsNiBAQAogI2RlZmluZSBKU1N0cmluZ19oCiAK
ICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKLSNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgog
I2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQcm9wZXJ0eURlc2NyaXB0b3IuaCIK
ICNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKQEAgLTQ3MiwzMyArNDcxLDYgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgaW5saW5lIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBTdHJpbmcmIHMpIHsgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZygmZXhl
Yy0+dm0oKSwgcyk7IH0KICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMpIHsgcmV0dXJuIGpzT3duZWRTdHJpbmcoJmV4ZWMt
PnZtKCksIHMpOyB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgSlNTdHJpbmc6OmdldFN0cmlu
Z1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkKLSAgICB7Ci0gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0g
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewotICAgICAgICAgICAgc2xvdC5zZXRWYWx1
ZSh0aGlzLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSwganNOdW1iZXIobV9sZW5n
dGgpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgdW5z
aWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7Ci0gICAgICAgIGlmIChpIDwgbV9sZW5n
dGgpIHsKLSAgICAgICAgICAgIEFTU0VSVChpICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCk7
IC8vIE5vIG5lZWQgZm9yIGFuIGV4cGxpY2l0IGNoZWNrLCB0aGUgYWJvdmUgdGVzdCB3b3VsZCBh
bHdheXMgZmFpbCEKLSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8
IFJlYWRPbmx5LCBnZXRJbmRleChleGVjLCBpKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgICAgICAgICAK
LSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgSlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5U2xvdChF
eGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQotICAgIHsKLSAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA8IG1fbGVuZ3RoKSB7Ci0gICAgICAg
ICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnREZWxldGUgfCBSZWFkT25seSwgZ2V0SW5kZXgo
ZXhlYywgcHJvcGVydHlOYW1lKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
fQotCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KICAgICBpbmxpbmUgYm9vbCBpc0pT
U3RyaW5nKEpTVmFsdWUgdikgeyByZXR1cm4gdi5pc0NlbGwoKSAmJiB2LmFzQ2VsbCgpLT5jbGFz
c0luZm8oKSA9PSBKU1N0cmluZzo6aW5mbygpOyB9CiAKICAgICAvLyAtLS0gSlNWYWx1ZSBpbmxp
bmVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTUyOCwzMiArNTAwLDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiB0b1dURlN0cmluZ1Nsb3dDYXNlKGV4ZWMpOwog
ICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgU3RyaW5nIGlubGluZUpTVmFsdWVOb3RTdHJpbmd0
b1N0cmluZyhjb25zdCBKU1ZhbHVlJiB2YWx1ZSwgRXhlY1N0YXRlKiBleGVjKQotICAgIHsKLSAg
ICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzSW50MzIoKSkK
LSAgICAgICAgICAgIHJldHVybiB2bS5udW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNJbnQzMigp
KTsKLSAgICAgICAgaWYgKHZhbHVlLmlzRG91YmxlKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0u
bnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVlLmFzRG91YmxlKCkpOwotICAgICAgICBpZiAodmFsdWUu
aXNUcnVlKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+dHJ1ZUtleXdv
cmQuc3RyaW5nKCk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc0ZhbHNlKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+ZmFsc2VLZXl3b3JkLnN0cmluZygpOwotICAgICAgICBp
ZiAodmFsdWUuaXNOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+
bnVsbEtleXdvcmQuc3RyaW5nKCk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZCgpKQot
ICAgICAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQuc3Ry
aW5nKCk7Ci0gICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSBTdHJpbmcgSlNWYWx1ZTo6dG9XVEZTdHJpbmdJ
bmxpbmUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGlzU3RyaW5n
KCkpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNTdHJpbmcqPihhc0NlbGwoKSkt
PnZhbHVlKGV4ZWMpOwotCi0gICAgICAgIHJldHVybiBpbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9T
dHJpbmcoKnRoaXMsIGV4ZWMpOwotICAgIH0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRp
ZiAvLyBKU1N0cmluZ19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZ0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nSW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3OGMwNWZjODBkODhlODUzN2M5ZDJhNWVhYjlmZjBi
YTliNjBhNzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZ0lubGluZXMuaApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU1N0cmluZ0lubGluZXNf
aAorI2RlZmluZSBKU1N0cmluZ0lubGluZXNfaAorCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmll
cnMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTU3RyaW5n
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitBTFdBWVNfSU5MSU5FIGJvb2wgSlNTdHJpbmc6Omdl
dFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBpZiAocHJvcGVydHlOYW1lID09IGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKKyAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlz
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSwganNOdW1iZXIobV9sZW5ndGgpKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIGkgPSBwcm9w
ZXJ0eU5hbWUuYXNJbmRleCgpOworICAgIGlmIChpIDwgbV9sZW5ndGgpIHsKKyAgICAgICAgQVNT
RVJUKGkgIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTsgLy8gTm8gbmVlZCBmb3IgYW4gZXhw
bGljaXQgY2hlY2ssIHRoZSBhYm92ZSB0ZXN0IHdvdWxkIGFsd2F5cyBmYWlsIQorICAgICAgICBz
bG90LnNldFZhbHVlKHRoaXMsIERvbnREZWxldGUgfCBSZWFkT25seSwgZ2V0SW5kZXgoZXhlYywg
aSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGZhbHNl
OworfQorCitBTFdBWVNfSU5MSU5FIGJvb2wgSlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5U2xv
dChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBz
bG90KQoreworICAgIGlmIChwcm9wZXJ0eU5hbWUgPCBtX2xlbmd0aCkgeworICAgICAgICBzbG90
LnNldFZhbHVlKHRoaXMsIERvbnREZWxldGUgfCBSZWFkT25seSwgZ2V0SW5kZXgoZXhlYywgcHJv
cGVydHlOYW1lKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK0FMV0FZU19JTkxJTkUgU3RyaW5nIGlubGluZUpTVmFsdWVOb3RTdHJp
bmd0b1N0cmluZyhjb25zdCBKU1ZhbHVlJiB2YWx1ZSwgRXhlY1N0YXRlKiBleGVjKQoreworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgaWYgKHZhbHVlLmlzSW50MzIoKSkKKyAgICAgICAg
cmV0dXJuIHZtLm51bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZS5hc0ludDMyKCkpOworICAgIGlmICh2
YWx1ZS5pc0RvdWJsZSgpKQorICAgICAgICByZXR1cm4gdm0ubnVtZXJpY1N0cmluZ3MuYWRkKHZh
bHVlLmFzRG91YmxlKCkpOworICAgIGlmICh2YWx1ZS5pc1RydWUoKSkKKyAgICAgICAgcmV0dXJu
IHZtLnByb3BlcnR5TmFtZXMtPnRydWVLZXl3b3JkLnN0cmluZygpOworICAgIGlmICh2YWx1ZS5p
c0ZhbHNlKCkpCisgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5mYWxzZUtleXdvcmQu
c3RyaW5nKCk7CisgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gdm0ucHJv
cGVydHlOYW1lcy0+bnVsbEtleXdvcmQuc3RyaW5nKCk7CisgICAgaWYgKHZhbHVlLmlzVW5kZWZp
bmVkKCkpCisgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3Jk
LnN0cmluZygpOworICAgIHJldHVybiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
Cit9CisgICAgCitBTFdBWVNfSU5MSU5FIFN0cmluZyBKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGlu
ZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgaWYgKGlzU3RyaW5nKCkpCisgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxKU1N0cmluZyo+KGFzQ2VsbCgpKS0+dmFsdWUoZXhlYyk7Cisg
ICAgCisgICAgcmV0dXJuIGlubGluZUpTVmFsdWVOb3RTdHJpbmd0b1N0cmluZygqdGhpcywgZXhl
Yyk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCmluZGV4IDJhYzI1MjRjNWRmZGEzZDEyMjQ5
ZDc3OTBhZGMzMTI5ZTNjMGU4NzEuLmZiYzhiODk1ZWFlNmFmNzg4ODM5YmViNWU4M2Q3YjZiOTc5
MjhmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9s
VGFibGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3lt
Ym9sVGFibGVPYmplY3QuY3BwCkBAIC02NCw2ICs2NCw4IEBAIHZvaWQgSlNTeW1ib2xUYWJsZU9i
amVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0CiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHRoaXNPYmplY3QtPnN5bWJv
bFRhYmxlKCktPm1fbG9jayk7CiAgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGVu
ZCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmVuZChsb2NrZXIpOwogICAgICAgICBmb3Ig
KFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUo
KS0+YmVnaW4obG9ja2VyKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBpZiAoaXQt
PmtleS0+aXNFbXB0eVVuaXF1ZSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgaWYgKCEoaXQtPnZhbHVlLmdldEF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCAobW9k
ZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkKICAgICAgICAgICAgICAgICBwcm9wZXJ0
eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4ZWMsIGl0LT5rZXkuZ2V0KCkpKTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVj
dC5oCmluZGV4IGI1YjIwYTg0NWI2YWI2NDQyNGIzN2UzMWIyNzc0ZWY5MDUzNTNmN2YuLmQwM2Iy
NDUxMWMyZGUxOTU5ZmI1ZjU2ZDY0OWM2NGQwZWZlMDY4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKQEAgLTcyLDcgKzcy
LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiB7CiAgICAgU3ltYm9sVGFibGUmIHN5
bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9sVGFibGUoKTsKICAgICBDb25jdXJyZW50SklUTG9j
a2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2spOwotICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0
ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1Ymxp
Y05hbWUoKSk7CisgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRh
YmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChpdGVyID09IHN5
bWJvbFRhYmxlLmVuZChsb2NrZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgU3ltYm9s
VGFibGVFbnRyeTo6RmFzdCBlbnRyeSA9IGl0ZXItPnZhbHVlOwpAQCAtODcsNyArODcsNyBAQCBp
bmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKIHsKICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFi
bGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9j
a2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3Ig
aXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgp
KTsKKyAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmlu
ZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFi
bGUuZW5kKGxvY2tlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBTeW1ib2xUYWJsZUVu
dHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+dmFsdWU7CkBAIC0xMDQsNyArMTA0LDcgQEAgaW5saW5l
IGJvb2wgc3ltYm9sVGFibGVHZXQoCiB7CiAgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0g
Km9iamVjdC0+c3ltYm9sVGFibGUoKTsKICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihz
eW1ib2xUYWJsZS5tX2xvY2spOwotICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIg
PSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7Cisg
ICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9j
a2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVu
ZChsb2NrZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgU3ltYm9sVGFibGVFbnRyeTo6
RmFzdCBlbnRyeSA9IGl0ZXItPnZhbHVlOwpAQCAtMTI2LDcgKzEyNiw3IEBAIGlubGluZSBib29s
IHN5bWJvbFRhYmxlUHV0KAogICAgIHsKICAgICAgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxl
ID0gKm9iamVjdC0+c3ltYm9sVGFibGUoKTsKICAgICAgICAgR0NTYWZlQ29uY3VycmVudEpJVExv
Y2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrLCBleGVjLT52bSgpLmhlYXApOwotICAgICAg
ICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2Nr
ZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgICAgICBTeW1ib2xUYWJsZTo6TWFw
OjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51
aWQoKSk7CiAgICAgICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBib29sIHdhc0ZhdDsKQEAgLTE1OSw3ICsx
NTksNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKAogICAgIHsK
ICAgICAgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9sVGFibGUo
KTsKICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2Nr
KTsKLSAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxl
LmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICAgICAgU3ltYm9s
VGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9w
ZXJ0eU5hbWUudWlkKCkpOwogICAgICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9j
a2VyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgU3ltYm9sVGFibGVFbnRy
eSYgZW50cnkgPSBpdGVyLT52YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0xvb2t1cC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29r
dXAuY3BwCmluZGV4IGE4MDZkZDA1MmEwY2JlZTRjYWMyY2FhNmUwOGM2NzE2MDA1YzI3MGMuLmE5
NzY1MjAxYjlmNTE4NjQxNDIzZGRlMGZlMGUyZTUxYThjZTczYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIEhhc2hUYWJs
ZTo6ZGVsZXRlVGFibGUoKSBjb25zdAogYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0KiB0aGlzT2JqLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgQVNT
RVJUKHRoaXNPYmotPmdsb2JhbE9iamVjdCgpKTsKLSAgICBBU1NFUlQoZW50cnktPmF0dHJpYnV0
ZXMoKSAmIEZ1bmN0aW9uKTsKKyAgICBBU1NFUlQoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0
aW5PckZ1bmN0aW9uKTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIHVuc2lnbmVkIGF0
dHJpYnV0ZXM7CiAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gdGhpc09iai0+Z2V0RGlyZWN0
T2Zmc2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwpAQCAtNzksOSArNzksMTMgQEAg
Ym9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hF
bnRyeSogZW50cnksIEpTT2JqZWN0KgogICAgICAgICBpZiAodGhpc09iai0+c3RhdGljRnVuY3Rp
b25zUmVpZmllZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgICAgICB0
aGlzT2JqLT5wdXREaXJlY3ROYXRpdmVGdW5jdGlvbigKLSAgICAgICAgICAgIHZtLCB0aGlzT2Jq
LT5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSwK
LSAgICAgICAgICAgIGVudHJ5LT5mdW5jdGlvbigpLCBlbnRyeS0+aW50cmluc2ljKCksIGVudHJ5
LT5hdHRyaWJ1dGVzKCkpOworICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0
aW4pCisgICAgICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3RCdWlsdGluRnVuY3Rpb24odm0sIHRo
aXNPYmotPmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5idWlsdGluR2VuZXJh
dG9yKCkodm0pLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICB0aGlzT2JqLT5wdXREaXJlY3ROYXRpdmVGdW5jdGlvbigKKyAgICAgICAgICAgICAgICB2
bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZW50cnktPmZ1bmN0aW9u
TGVuZ3RoKCksCisgICAgICAgICAgICAgICAgZW50cnktPmZ1bmN0aW9uKCksIGVudHJ5LT5pbnRy
aW5zaWMoKSwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAgICAgIH0KICAgICAgICAgb2Zmc2V0
ID0gdGhpc09iai0+Z2V0RGlyZWN0T2Zmc2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMp
OwogICAgICAgICBBU1NFUlQoaXNWYWxpZE9mZnNldChvZmZzZXQpKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCmluZGV4IGJkZTgzZDRhNmZjMzU1Nzc4NTBlMzFl
ODhiYzM5ZmQwNWY3YmNlNTIuLmRiYTM4OWU5ZTI0M2RkMGVjYjJiYTk4ZjM5NGQ0MDc5ZjlkZWE5
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCkBAIC00Myw2ICs0Myw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIC8vIGllLiB0eXBlZGVmIEpTVmFsdWUgKCpHZXRGdW5j
dGlvbikoRXhlY1N0YXRlKiwgSlNPYmplY3QqIGJhc2VPYmplY3QpCiAgICAgdHlwZWRlZiBQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBHZXRGdW5jdGlvbjsKICAgICB0eXBlZGVmIFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jIFB1dEZ1bmN0aW9uOworICAgIHR5cGVkZWYgRnVuY3Rpb25F
eGVjdXRhYmxlKiAoKkJ1aWx0aW5HZW5lcmF0b3IpKFZNJik7CiAKICAgICBjbGFzcyBIYXNoRW50
cnkgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTY4LDExICs2OSwxMiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2ludHJpbnNpYzsKICAgICAg
ICAgfQogCisgICAgICAgIEJ1aWx0aW5HZW5lcmF0b3IgYnVpbHRpbkdlbmVyYXRvcigpIGNvbnN0
IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEJ1aWx0aW4pOyByZXR1cm4gbV91LmJ1aWx0aW5HZW5l
cmF0b3IuZ2VuZXJhdG9yVmFsdWU7IH0KICAgICAgICAgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24o
KSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBGdW5jdGlvbik7IHJldHVybiBtX3UuZnVu
Y3Rpb24uZnVuY3Rpb25WYWx1ZTsgfQogICAgICAgICB1bnNpZ25lZCBjaGFyIGZ1bmN0aW9uTGVu
Z3RoKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pOyByZXR1cm4gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obV91LmZ1bmN0aW9uLmxlbmd0aCk7IH0KIAotICAgICAg
ICBHZXRGdW5jdGlvbiBwcm9wZXJ0eUdldHRlcigpIGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1
dGVzICYgRnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0eS5nZXQ7IH0KLSAgICAgICAgUHV0
RnVuY3Rpb24gcHJvcGVydHlQdXR0ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAm
IEZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVydHkucHV0OyB9CisgICAgICAgIEdldEZ1bmN0
aW9uIHByb3BlcnR5R2V0dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBCdWls
dGluT3JGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5LmdldDsgfQorICAgICAgICBQdXRG
dW5jdGlvbiBwcm9wZXJ0eVB1dHRlcigpIGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1dGVzICYg
QnVpbHRpbk9yRnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0eS5wdXQ7IH0KIAogICAgICAg
ICBpbnRwdHJfdCBsZXhlclZhbHVlKCkgY29uc3QgeyBBU1NFUlQoIW1fYXR0cmlidXRlcyk7IHJl
dHVybiBtX3UubGV4ZXIudmFsdWU7IH0KIApAQCAtOTQsNiArOTYsMTAgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICAgICAgaW50cHRyX3QgbGVuZ3RoOyAvLyBudW1iZXIgb2YgYXJndW1l
bnRzIGZvciBmdW5jdGlvbgogICAgICAgICAgICAgfSBmdW5jdGlvbjsKICAgICAgICAgICAgIHN0
cnVjdCB7CisgICAgICAgICAgICAgICAgQnVpbHRpbkdlbmVyYXRvciBnZW5lcmF0b3JWYWx1ZTsK
KyAgICAgICAgICAgICAgICBpbnRwdHJfdCB1bnVzZWQ7CisgICAgICAgICAgICB9IGJ1aWx0aW5H
ZW5lcmF0b3I7CisgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgIEdldEZ1bmN0
aW9uIGdldDsKICAgICAgICAgICAgICAgICBQdXRGdW5jdGlvbiBwdXQ7CiAgICAgICAgICAgICB9
IHByb3BlcnR5OwpAQCAtMjA5LDcgKzIxNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZh
dGU6CiAgICAgICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSGFzaEVudHJ5KiBlbnRyeShQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICBTdHJpbmdJ
bXBsKiBpbXBsID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsKKyAgICAgICAgICAgIFN0cmlu
Z0ltcGwqIGltcGwgPSBwcm9wZXJ0eU5hbWUudWlkKCk7CiAgICAgICAgICAgICBpZiAoIWltcGwp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIApAQCAtMjQ5LDcgKzI1NSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpZiAoIWVudHJ5KSAvLyBub3QgZm91bmQsIGZvcndh
cmQgdG8gcGFyZW50CiAgICAgICAgICAgICByZXR1cm4gUGFyZW50SW1wOjpnZXRPd25Qcm9wZXJ0
eVNsb3QodGhpc09iaiwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIAotICAgICAgICBpZiAo
ZW50cnktPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKQorICAgICAgICBpZiAoZW50cnktPmF0dHJp
YnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKQogICAgICAgICAgICAgcmV0dXJuIHNldFVwU3Rh
dGljRnVuY3Rpb25TbG90KGV4ZWMsIGVudHJ5LCB0aGlzT2JqLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogCiAgICAgICAgIHNsb3Quc2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXNPYmosIGVudHJ5LT5hdHRy
aWJ1dGVzKCksIGVudHJ5LT5wcm9wZXJ0eUdldHRlcigpKTsKQEAgLTI4Niw3ICsyOTIsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgaWYgKCFlbnRyeSkgLy8gbm90IGZvdW5kLCBmb3J3YXJk
IHRvIHBhcmVudAogICAgICAgICAgICAgcmV0dXJuIFBhcmVudEltcDo6Z2V0T3duUHJvcGVydHlT
bG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKLSAgICAgICAgQVNTRVJU
KCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKSk7CisgICAgICAgIEFTU0VSVCghKGVu
dHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikpOwogCiAgICAgICAgIHNsb3Qu
c2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXNPYmosIGVudHJ5LT5hdHRyaWJ1dGVzKCksIGVudHJ5LT5w
cm9wZXJ0eUdldHRlcigpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yOTUsNyArMzAxLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5saW5lIHZvaWQgcHV0RW50cnkoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCogYmFzZSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogICAg
IHsKICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIGZ1bmN0aW9uIHB1dCBpdCBhcyBhbiBvdmVycmlk
ZSBwcm9wZXJ0eS4KLSAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikg
eworICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSB7
CiAgICAgICAgICAgICBpZiAoSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpT
T2JqZWN0Kj4oc2xvdC50aGlzVmFsdWUoKSkpCiAgICAgICAgICAgICAgICAgdGhpc09iamVjdC0+
cHV0RGlyZWN0KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUpOwogICAgICAgICB9IGVs
c2UgaWYgKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIFJlYWRPbmx5KSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNw
cAppbmRleCBkNWU3MjhjMmNkMTAyMGE0N2U0YWRjZDY0OWNkMWZmZmE1Y2Q2YTgzLi5kY2EyZmQ4
ZDFmNmFjMjNiOGZmODE3Y2JiMThmYWFlN2JjZDU5NzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcApAQCAt
MzgsNiArMzgsMjAgQEAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6TmF0aXZlRXJyb3JDb25zdHJ1
Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogfQogCit2b2lkIE5hdGl2ZUVy
cm9yQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYg
bmFtZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgbmFtZSk7CisgICAgQVNTRVJU
KGluaGVyaXRzKGluZm8oKSkpOworICAgIAorICAgIE5hdGl2ZUVycm9yUHJvdG90eXBlKiBwcm90
b3R5cGUgPSBOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZVN0cnVjdHVyZSwgbmFtZSwgdGhpcyk7CisgICAgCisgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBEb250RGVsZXRlIHwgUmVhZE9u
bHkgfCBEb250RW51bSk7IC8vIEVDTUEgMTUuMTEuNy41CisgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
IHwgRG9udEVudW0pOworICAgIG1fZXJyb3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBFcnJvcklu
c3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlKSk7Cisg
ICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUpOworICAgIEFTU0VSVChtX2Vycm9yU3RydWN0dXJl
LT5pc09iamVjdCgpKTsKK30KKwogdm9pZCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgTmF0aXZl
RXJyb3JDb25zdHJ1Y3RvciogdGhpc09iamVjdCA9IGpzQ2FzdDxOYXRpdmVFcnJvckNvbnN0cnVj
dG9yKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
YXRpdmVFcnJvckNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
YXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKaW5kZXggNzQwZDNmOTMzMjkyZmQyYWNjYjRiOTkwMzQ0
MzEyYjkzMTlhZTExMC4uNDM4YTNhZmI5YmIwZjY0MTJjOTc5MzIyMzBjODg3MTA5NjFmNTQ2NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9y
Q29uc3RydWN0b3IuaApAQCAtNTEsMTkgKzUxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2Vycm9yU3RydWN0dXJlLmdl
dCgpOyB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0
cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lKQotICAgICAgICB7Ci0gICAgICAgICAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSwgbmFtZSk7Ci0gICAgICAgICAgICBBU1NFUlQoaW5oZXJpdHMo
aW5mbygpKSk7Ci0KLSAgICAgICAgICAgIE5hdGl2ZUVycm9yUHJvdG90eXBlKiBwcm90b3R5cGUg
PSBOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZVN0cnVjdHVyZSwgbmFtZSwgdGhpcyk7Ci0KLSAgICAgICAgICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
IHwgRG9udEVudW0pOyAvLyBFQ01BIDE1LjExLjcuNQotICAgICAgICAgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5IHwgRG9udEVudW0pOwotICAgICAgICAgICAgbV9lcnJvclN0cnVjdHVyZS5zZXQodm0s
IHRoaXMsIEVycm9ySW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUpKTsKLSAgICAgICAgICAgIEFTU0VSVChtX2Vycm9yU3RydWN0dXJlKTsKLSAgICAg
ICAgICAgIEFTU0VSVChtX2Vycm9yU3RydWN0dXJlLT5pc09iamVjdCgpKTsKLSAgICAgICAgfQor
ICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKaW5kZXggZDkzOGZh
MzE2NDVhZjI2Yjc1ODUxNGRiNmIyNDc4ZjE4M2U5ZWVlMS4uY2ZlOWM0ZDMyYmE3NjhjNzRlNGZm
YmIxOTEzNTI3OWRlYmYxMTc2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlTbG90LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlTbG90LmgKQEAgLTQyLDYgKzQyLDggQEAgZW51bSBBdHRyaWJ1dGUgewogICAgIEZ1
bmN0aW9uICAgICA9IDEgPDwgNCwgIC8vIHByb3BlcnR5IGlzIGEgZnVuY3Rpb24gLSBvbmx5IHVz
ZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKICAgICBBY2Nlc3NvciAgICAgPSAxIDw8IDUsICAvLyBw
cm9wZXJ0eSBpcyBhIGdldHRlci9zZXR0ZXIKICAgICBDdXN0b21BY2Nlc3NvciA9IDEgPDwgNiwK
KyAgICBCdWlsdGluICAgICAgICAgPSAxIDw8IDcsIC8vIHByb3BlcnR5IGlzIGEgYnVpbHRpbiBm
dW5jdGlvbiAtIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcworICAgIEJ1aWx0aW5PckZ1
bmN0aW9uID0gQnVpbHRpbiB8IEZ1bmN0aW9uLCAvLyBoZWxwZXIgb25seSB1c2VkIGJ5IHN0YXRp
YyBoYXNodGFibGVzCiB9OwogCiBjbGFzcyBQcm9wZXJ0eVNsb3QgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCmluZGV4IGJjNTE2
YjA2ZDY2NTFmMGU2ODJhMjAxN2JkZjhiMDNiYWJlZDZlYTIuLjJjMjQzNGI4N2QwNGY3NDljYjEy
ZTYwMmFiNTQ3ODQ5NDZhOTFmMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRl
ICJSZWdFeHBDb25zdHJ1Y3Rvci5oIgogCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJK
U1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUmVn
RXhwTWF0Y2hlc0FycmF5LmgiCiAjaW5jbHVkZSAiUmVnRXhwUHJvdG90eXBlLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAppbmRleCA4
OWQ3YWMxYjhjYmYxZGIwZTEyNmYxZmM3OTZkZmQ1ZmM4NGIyZTU5Li45ZGRhMGJhOGRlMTQxMmVh
ZjRkMjkxZGNmMGM2YjM5NjU3ZmI2NzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRl
ICJBcnJheVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiSlNBcnJh
eS5oIgotI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2lu
Y2x1ZGUgIkpTU3RyaW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
ZXRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYjIwMzg4OGQzYzE2Y2RhM2MwMDM1MDYyMDhhZTA4Njk1
ZGM1ZGFhYS4uZDAyNjZhNTllZjNmNTVhYTM2OTRmNWY3NDE4Y2Y3OGUwYWUwZDhiMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcApAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTU2V0LmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiTWFwRGF0YS5oIgogI2luY2x1ZGUgIlNldFByb3RvdHlwZS5oIgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAppbmRl
eCA0NDBhNjA5NDIxOTMzODAzMWU1OTI3YWY0NmIyODlkYmNmYjVhNzI4Li44MGU3ZWFhOGM0OTFj
YjZkNTRhODMyNGNlNjQ3YTZjZGI3ZTg4NzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKQEAgLTIyLDcgKzIyLDkgQEAKICNpbmNsdWRlICJT
dHJpbmdPYmplY3QuaCIKIAogI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3Ry
aW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQcm9wZXJ0
eU5hbWVBcnJheS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmNwcAppbmRleCAwNDI5MWY3ZThkZDI0ZThhYjMzZDc1YWYxZGE0NTY4ZjJiYzk5ZTY4Li4xZWNh
Yjg1YzBiZGIyODY5ODk0NTc3YTc0MTI1NGUzNjQ0MTQ5ZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTI3LDEyICsyNywxOCBAQAogI2luY2x1
ZGUgIlN0cnVjdHVyZS5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29t
bW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJEdW1wQ29udGV4dC5oIgorI2luY2x1ZGUgIkpT
Q2VsbElubGluZXMuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRl
ICJMb29rdXAuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgogI2luY2x1ZGUg
IlByb3BlcnR5TmFtZUFycmF5LmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0Nv
bW1hUHJpbnRlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA1MmNjZjQyM2ExMDQzZTEwNzlmMmQ4
YjE4OTQyMTk4OTBlNzFmMmJjLi45MWFkNTU3ZTI4OWI0NzM3MDdiODM5ZjZjZTcwY2EzNDQxODZh
NWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiQXJnTGlzdC5oIgogI2luY2x1ZGUgIkFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1
bmtzLmgiCiAjaW5jbHVkZSAiQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgiCisjaW5j
bHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lSW5saW5lcy5o
IgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVDYWNoZS5oIgpAQCAtNTUs
NyArNTYsMTAgQEAKICNpbmNsdWRlICJKU0FQSVZhbHVlV3JhcHBlci5oIgogI2luY2x1ZGUgIkpT
QWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTTmFt
ZVNjb3BlLmgiCkBAIC02OCwxMyArNzIsMTYgQEAKICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNs
dWRlICJNYXBEYXRhLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKKyNpbmNsdWRlICJQYXJzZXIuaCIK
ICNpbmNsdWRlICJQYXJzZXJBcmVuYS5oIgorI2luY2x1ZGUgIlByb3BlcnR5TWFwSGFzaFRhYmxl
LmgiCiAjaW5jbHVkZSAiUmVnRXhwQ2FjaGUuaCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIK
ICNpbmNsdWRlICJTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNvdXJj
ZVByb3ZpZGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTdHJpY3RFdmFsQWN0aXZhdGlvbi5oIgogI2lu
Y2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKICNpbmNsdWRlICJXZWFrTWFwRGF0YS5oIgog
I2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KQEAgLTIyNiw2ICsyMzMsNyBAQCBWTTo6Vk0oVk1U
eXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2luRGVmaW5lT3duUHJvcGVy
dHkoZmFsc2UpCiAgICAgLCBtX2NvZGVDYWNoZShDb2RlQ2FjaGU6OmNyZWF0ZSgpKQogICAgICwg
bV9lbmFibGVkUHJvZmlsZXIobnVsbHB0cikKKyAgICAsIG1fYnVpbHRpbkV4ZWN1dGFibGVzKEJ1
aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlKCp0aGlzKSkKIHsKICAgICBpbnRlcnByZXRlciA9IG5l
dyBJbnRlcnByZXRlcigqdGhpcyk7CiAgICAgU3RhY2tCb3VuZHMgc3RhY2sgPSB3dGZUaHJlYWRE
YXRhKCkuc3RhY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDVhODQxMDVl
YWZiN2FiYmE1ZmE0MzFlZWVkZDU1ZDdhODlmNTVjZTIuLjY5NThhYzM5M2IxYWVmYzBiZWZiZjZl
NGViOGI2ODI1Y2Y3YzlhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNDQs
NiArNDQsNyBAQAogI2luY2x1ZGUgIlByaXZhdGVOYW1lLmgiCiAjaW5jbHVkZSAiUHJvdG90eXBl
TWFwLmgiCiAjaW5jbHVkZSAiU21hbGxTdHJpbmdzLmgiCisjaW5jbHVkZSAiU291cmNlQ29kZS5o
IgogI2luY2x1ZGUgIlN0cm9uZy5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgogI2lu
Y2x1ZGUgIlR5cGVkQXJyYXlDb250cm9sbGVyLmgiCkBAIC02OSw2ICs3MCw3IEBACiBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzOworICAgIGNs
YXNzIEJ1aWx0aW5FeGVjdXRhYmxlczsKICAgICBjbGFzcyBDb2RlQmxvY2s7CiAgICAgY2xhc3Mg
Q29kZUNhY2hlOwogICAgIGNsYXNzIENvbW1vbklkZW50aWZpZXJzOwpAQCAtNDk3LDYgKzQ5OSw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHJlZ2lzdGVyV2F0Y2hwb2ludEZvcklt
cHVyZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImLCBXYXRjaHBvaW50Kik7CiAgICAgICAgIC8v
IEZJWE1FOiBVc2UgQXRvbWljU3RyaW5nIG9uY2UgaXQgZ290IG1lcmdlZCB3aXRoIElkZW50aWZp
ZXIuCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkSW1wdXJlUHJvcGVydHkoY29u
c3QgU3RyaW5nJik7CisgICAgICAgIAorICAgICAgICBCdWlsdGluRXhlY3V0YWJsZXMqIGJ1aWx0
aW5FeGVjdXRhYmxlcygpIHsgcmV0dXJuIG1fYnVpbHRpbkV4ZWN1dGFibGVzLmdldCgpOyB9CiAK
ICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwpAQCAtNTM3LDEwICs1NDEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNWYWx1ZSBt
X2V4Y2VwdGlvbjsKICAgICAgICAgYm9vbCBtX2luRGVmaW5lT3duUHJvcGVydHk7CiAgICAgICAg
IE93blB0cjxDb2RlQ2FjaGU+IG1fY29kZUNhY2hlOwotICAgICAgICBSZWZDb3VudGVkQXJyYXk8
U3RhY2tGcmFtZT4gbV9leGNlcHRpb25TdGFjazsKLQogICAgICAgICBMZWdhY3lQcm9maWxlciog
bV9lbmFibGVkUHJvZmlsZXI7Ci0KKyAgICAgICAgT3duUHRyPEJ1aWx0aW5FeGVjdXRhYmxlcz4g
bV9idWlsdGluRXhlY3V0YWJsZXM7CisgICAgICAgIFJlZkNvdW50ZWRBcnJheTxTdGFja0ZyYW1l
PiBtX2V4Y2VwdGlvblN0YWNrOwogICAgICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdhdGNo
cG9pbnRTZXQ+PiBtX2ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludFNldHM7CiAgICAgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU1N0cmlu
Z0lubGluZXMuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNT
dHJpbmdJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBmY2MzODRlOGVkZmMzNGIxNDA4M2I4NjVkMzcz
ODIwZjQxNjVjNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdI
ZWFkZXJzL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVm
IFdlYkNvcmVfRldEX0pTU3RyaW5nSW5saW5lc19oCisjZGVmaW5lIFdlYkNvcmVfRldEX0pTU3Ry
aW5nSW5saW5lc19oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdJbmxpbmVzLmg+
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdp
bnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwCmluZGV4IDJlZGRjZGJiOWYwMDZjYTc2
MjY2NTBiNDIwMjc4NjI2YjkyNjE0MTcuLjNjNGUwZDdiYmIzMWNhYjEyYjVlNmM5NzVjNzRkM2Y0
ODRlOWNiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
bHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcApAQCAtNDYsNiArNDYsNyBAQAog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0Jhc2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlSW5saW5l
cy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nSW5saW5lcy5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0lEQkFueUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFu
eUN1c3RvbS5jcHAKaW5kZXggNTY0OWM4NWNhMDk1ODc3NDhhM2RhMDZjZGRkMGNhOTk5ZTUwYjhl
Ny4uM2Y0ZDhlZmFlYjU3ZjMzMDAzZTczYTdlNzg0MmU0MmM3M2NlNjQ5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcApAQCAtNDcsNiArNDcsNyBA
QAogI2luY2x1ZGUgIkpTSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJKU0lEQlRyYW5zYWN0
aW9uLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8cnVu
dGltZS9KU1N0cmluZ0lubGluZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAppbmRl
eCA5ZWFlNzU2OWM3MDYwM2E0ZmVkMGFmMTRjNGY4NzE4Y2RlNjRhNmUxLi5mNDlkZmU5MGI0ZTgy
ZDM5ZWRjYmY5YmEyOWYyYWU3OTljMGRkZjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2lu
Y2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSlNJREJPYmplY3RTdG9yZS5oIgog
I2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nLmg+
CisjaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZ0lubGluZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmpl
Y3RTdG9yZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVj
dFN0b3JlQ3VzdG9tLmNwcAppbmRleCA3NGZkMzU0YjI4NjA3Y2Y3ODIyZjgwNTM0Nzk3MGY1ZDdh
YzhjODMyLi41NDM0YjNiN2Q2YzU2ZWNiMGEwM2EyNzk0YzY3MzZhOWFkZmI3MGUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9t
LmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCiAjaW5j
bHVkZSAiSlNJREJJbmRleC5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KLSNpbmNsdWRl
IDxydW50aW1lL0pTU3RyaW5nLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZ0lubGluZXMu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGJkNjc1MGI1OTI2NjA0NDZkNWU1
ZWE5MTkwOTkxN2U4M2ZjMmJkYTIuLjlhYWVkNjM2ZWRiY2Q3MDM3N2JjM2U1ZGFiMmY3ZmQ1OGZi
ODNiYTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxNC0wMS0yOSAgT2xpdmVyIEh1bnQgIDxv
bGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gaW1wbGVtZW50
IEpTIGJ1aWx0aW5zIGluIEpTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjc4ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVcGRhdGVkIHRoZSB0ZXN0IHJlc3VsdHMgZm9yIG5ldyBlcnJvciBtZXNzYWdl
cyAobm93IHRoYXQgdGhleSdyZQorICAgICAgICBhY3R1YWxseSBoZWxwZnVsKSwgYW5kIGFkZGVk
IGEganMtcmVncmVzcyB0ZXN0IHRvIHRyYWNrIHBlcmZvcm1hbmNlLgorCisgICAgICAgICoganMv
YXJyYXktZXZlcnktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL2RvbS9hcnJheS1wcm90b3R5
cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvcmVncmVzcy9hcnJheS1w
cm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNz
L2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNz
L3NjcmlwdC10ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuanM6IEFkZGVkLgorICAgICAgICAo
dGVzdDEpOgorICAgICAgICAodGVzdDIpOgorICAgICAgICAodGVzdDMpOgorCiAyMDE0LTAxLTMw
ICBLcnp5c3p0b2YgV29sYW5za2kgIDxrLndvbGFuc2tpQHNhbXN1bmcuY29tPgogCiAgICAgICAg
IFtFRkxdIFVwZGF0ZSB0ZXN0IGV4cGVjdGF0aW9ucyBmb3IgV0sxIGFuZCBXSzIgYWZ0ZXIgcjE2
Mjk0NwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0CmluZGV4IDU0MWI4YzM1
OGYwNjhhMGNlYTg4MmMxMDUxNzUzMjUxMTRjZDMzZjcuLmNjYTM2M2RjZTU4ZmJhOTVhNThjZTQ2
ZmNiNDhjMzhiZjU4YWRmNTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJheS1ldmVyeS1leHBlY3RlZC50
eHQKQEAgLTMwLDEyICszMCwxMiBAQCBQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoaXNC
aWdFbm91Z2hBbmRFeGNlcHRpb24pIHRocmV3IGV4Y2VwdGlvbiBleGNlcHRpbwogUEFTUyBbMTIs
IDU0LCAxOCwgMTMwLCA0NF0uZXZlcnkoaXNCaWdFbm91Z2hBbmRFeGNlcHRpb24pIHRocmV3IGV4
Y2VwdGlvbiBleGNlcHRpb24gZnJvbSBmdW5jdGlvbi4KIAogNS4wIFdyb25nIFR5cGUgZm9yIENh
bGxiYWNrIFRlc3QKLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSg1KSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2
ZXJ5KCd3cm9uZycpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNT
IFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkobmV3IE9iamVjdCgpKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KG51
bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwg
OCwgMTMwLCA0NF0uZXZlcnkodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBU
eXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCkgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVy
eSg1KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2Fs
bGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5
KCd3cm9uZycpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVy
eSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0u
ZXZlcnkobmV3IE9iamVjdCgpKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90
b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgs
IDEzMCwgNDRdLmV2ZXJ5KG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnBy
b3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwg
OCwgMTMwLCA0NF0uZXZlcnkodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBB
cnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBb
MTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJy
YXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KIAogNi4wIEVh
cmx5IEV4aXQgKCJTaG9ydCBDaXJjdWl0aW5nIikKIFBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5l
dmVyeShpc0JpZ0Vub3VnaFNob3J0Q2lyY3VpdCkgaXMgZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9qcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0
CmluZGV4IDJjMmE2OGNiMTA2ZGExMGYwODZiMjJjNWJmMmJmNWM4ZmU3OWUzM2UuLjVkOWVjYjc1
YThkYTc5YmE2NTYwNWU3ZWI5Y2Y4ZmMyNWZlMThhZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2pzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvanMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApA
QCAtMTUsNyArMTUsNyBAQCBQQVNTIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHVuZGVmaW5l
ZCwgMCwgMSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZQogUEFTUyBBcnJheS5wcm90
b3R5cGUuc29ydC5jYWxsKHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5k
ZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5zb3J0
LmNhbGwodW5kZWZpbmVkKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwodW5k
ZWZpbmVkLCAwLCAxKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90
IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKHVuZGVm
aW5lZCwgMCwgMSknKS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuY2FsbCh1bmRlZmlu
ZWQsIHt9KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9i
amVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuY2FsbCh1bmRlZmluZWQs
IHt9KScpLgotUEFTUyBBcnJheS5wcm90b3R5cGUuZXZlcnkuY2FsbCh1bmRlZmluZWQsIHRvU3Ry
aW5nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVj
dCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVkLCB0b1N0
cmluZyknKS4KK1BBU1MgQXJyYXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVkLCB0b1N0
cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJl
cXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSB1bmRlZmluZWQuCiBQQVNTIEFycmF5LnByb3RvdHlw
ZS5mb3JFYWNoLmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3Rv
dHlwZS5mb3JFYWNoLmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZyknKS4KIFBBU1MgQXJyYXkucHJv
dG90eXBlLnNvbWUuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJv
dG90eXBlLnNvbWUuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKScpLgogUEFTUyBBcnJheS5wcm90
b3R5cGUuaW5kZXhPZi5jYWxsKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlw
ZS5pbmRleE9mLmNhbGwodW5kZWZpbmVkLCAwKScpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjEyOTBjMGVlZmY4ZGU0MjE4MzNkOTJkMjdlOTUyNDE5MTc2MDRiOTYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVy
eQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhy
b3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnku
aHRtbCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmU1Y2MxNzFjNDg3NWEzNTg1YmYxNGU1NDE1ZjVjZDBlNTgxZDU0NAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2
ZXJ5Lmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJz
Y3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5
LXByb3RvdHlwZS1ldmVyeS5qcyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3Rz
L2FycmF5LXByb3RvdHlwZS1ldmVyeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTRhYTE2MWMwY2U5OGIyYWIx
OGEzYTFhMWYwZGZhYWM5ZDdkMmUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzCkBAIC0wLDAgKzEs
MjkgQEAKK3ZhciByZXN1bHQgPSAwOworZnVuY3Rpb24gdGVzdDEoYSkgeworICAgIHJlc3VsdCA8
PCAxOworICAgIHJlc3VsdCsrOworICAgIHJldHVybiB0cnVlOworfQorZnVuY3Rpb24gdGVzdDIo
YSxiKSB7CisgICAgcmVzdWx0IF49IDM7CisgICAgcmVzdWx0ICo9IDM7CisgICAgcmV0dXJuIHRy
dWU7Cit9CitmdW5jdGlvbiB0ZXN0MyhhLGIsYykgeworICAgIHJlc3VsdCBePSByZXN1bHQgPj4g
MTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordmFyIHJlc3VsdCA9IDA7Cit2YXIgYXJyYXkgPSBb
XQorZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkKKyAgICBhcnJheVtpXSA9IDE7CisK
K2ZvciAodmFyIGkgPSAwOyBpIDwgMTA7IGkrKykgeworICAgIGFycmF5LmV2ZXJ5KHRlc3QxKTsK
KyAgICBhcnJheS5ldmVyeSh0ZXN0Mik7CisgICAgYXJyYXkuZXZlcnkodGVzdDMpOworfQorCitp
ZiAocmVzdWx0ICE9IDE0Mjg4MTA0OTYpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAi
ICsgcmVzdWx0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222704</attachid>
            <date>2014-01-30 11:59:58 -0800</date>
            <delta_ts>2014-01-30 13:26:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140130115958.patch</filename>
            <type>text/plain</type>
            <size>200945</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZTQ0Nzc0OGY2OTgwZDU3YjU5YWY5NjNlZTMwMDg2N2UyYWE3ZmY1Li5mMjZkYTFjZTVmM2YzZWNh
NTExMzUwZWU1MWY3M2VjODJhZjhkMzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
IFRoaXMgcmVzdWx0IG9mIHRoaXMgcmVmYWN0b3JpbmcKKyAgICAgICAgaXMgdGhhdCBDb21tb25J
ZGVudGlmaWVycywgYW5kIGEgZmV3IG90aGVyIG1pc2NlbGxhbmVvdXMgaGVhZGVycyBub3cKKyAg
ICAgICAgbmVlZCB0byBiZSBpbmNsdWRlZCBkaXJlY3RseSBhcyB0aGV5IHdlcmUgZm9ybWVybHkg
Y2FwdHVyZWQgdGhyb3VnaCBvdGhlcgorICAgICAgICBwYXRocy4KKworICAgICAgICBJbiBhZGRp
dGlvbiB0aGlzIGFkZHMgYSBmbGFnIHRvIHRoZSBMb29rdXAgdGFibGUncyBoYXNoZW50cnkgdG8g
aW5kaWNhdGUKKyAgICAgICAgdGhhdCBhIHN0YXRpYyBmdW5jdGlvbiBpcyBhY3R1YWxseSBiYWNr
ZWQgYnkgSlMuIFRoZXJlIGlzIHRoZW4gYSBsb3Qgb2YKKyAgICAgICAgbG9naWMgdG8gdGhyZWFk
IHRoZSBzcGVjaWFsIG5hdHVyZSBvZiB0aGUgZnVuY3RvbiB0byB3aGVyZSBpdCBtYXR0ZXJzLgor
ICAgICAgICBUaGlzIGFsbG93cyB0b1N0cmluZygpLCAuY2FsbGVyLCBldGMgdG8gbWltaWMgdGhl
IGJlaGF2aW91ciBvZiBhIGhvc3QKKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAgICAgTm90ZXMg
b24gd3JpdGluZyBidWlsdGluczoKKyAgICAgICAgIC0gRWFjaCBmdW5jdGlvbiBpcyBjb21waWxl
ZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBvdGhlcnMsIGFuZCB0aG9zZQorICAgICAgICAgICBpbXBs
ZW1lbnRhdGlvbnMgY2Fubm90IGN1cnJlbnRseSBjYXB0dXJlIGFsbCBnbG9iYWwgcHJvcGVydGll
cyAoYXMKKyAgICAgICAgICAgdGhhdCBjb3VsZCBiZSBwb3RlbnRpYWxseSB1bnNhZmUpLiBJZiBh
IGZ1bmN0aW9uIGRvZXMgY2FwdHVyZSBhCisgICAgICAgICAgIGdsb2JhbCB3ZSB3aWxsIGRlbGli
ZXJhdGVseSBjcmFzaC4KKyAgICAgICAgIC0gRm9yIHRob3NlICJnbG9iYWwiIHByb3BlcnRpZXMg
dGhhdCB3ZSBkbyB3YW50IGFjY2VzcyB0bywgd2UgdXNlCisgICAgICAgICAgIHRoZSBAIHByZWZp
eCwgZS5nLiBPYmplY3QodGhpcykgYmVjb21lcyBAT2JqZWN0KHRoaXMpLiBUaGUgQCBpZGVudGlm
aWVycworICAgICAgICAgICBhcmUgcHJpdmF0ZSBuYW1lcywgYW5kIGJlaGF2ZSBqdXN0IGxpa2Ug
cmVndWxhciBwcm9wZXJ0aWVzLCBvbmx5CisgICAgICAgICAgIHdpdGhvdXQgdGhlIHJpc2sgb2Yg
YWR1bHRlcmF0aW9uLiBBZ2FpbiwgaW4gdGhlIEBPYmplY3QgY2FzZSwgd2UKKyAgICAgICAgICAg
ZXhwbGljaXRseSBkdXBsaWNhdGUgdGhlIE9iamVjdENvbnN0cnVjdG9yIHJlZmVyZW5jZSBvbiB0
aGUgR2xvYmFsT2JqZWN0CisgICAgICAgICAgIHNvIHRoYXQgd2UgaGF2ZSBndWFyYW50ZWVkIGFj
Y2VzcyB0byB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgY29uc3RydWN0
b3IuCisgICAgICAgICAtIGNhbGwsIGFwcGx5LCBldmFsLCBhbmQgRnVuY3Rpb24gYXJlIGFsbCBy
ZWplY3RlZCBpZGVudGlmaWVycywgYWdhaW4KKyAgICAgICAgICAgdG8gcHJldmVudCBhbnl0aGlu
ZyBmcm9tIGFjY2lkZW50YWxseSB1c2luZyBhbiBhZHVsdGVyYXRlZCBvYmplY3QuCisgICAgICAg
ICAgIEluc3RlYWQgQGNhbGwgYW5kIEBhcHBseSBhcmUgYXZhaWxhYmxlLCBhbmQgaGFwcGlseSB0
aGV5IGNvbXBsZXRlbHkKKyAgICAgICAgICAgZHJvcCB0aGUgbmVxX3B0ciBpbnN0cnVjdGlvbiBh
cyB0aGV5J3JlIGRlZmluZWQgYXMgYWx3YXlzIGJlaW5nIHRoZQorICAgICAgICAgICBvcmlnaW5h
bCBjYWxsL2FwcGx5IGZ1bmN0aW9ucy4KKworICAgICAgICBUaGVzZSByZXN0cmljdGlvbnMgYXJl
IGp1c3QgaW50ZW5kZWQgdG8gbWFrZSBpdCBoYXJkZXIgdG8gYWNjaWRlbnRhbGx5CisgICAgICAg
IG1ha2UgY2hhbmdlcyB0aGF0IGFyZSBpbmNvcnJlY3QgKGZvciBpbnN0YW5jZSBjYWxsaW5nIHdo
YXRldmVyIGhhcyBiZWVuCisgICAgICAgIGFzc2lnbmVkIHRvIGdsb2JhbC5PYmplY3QsIGluc3Rl
YWQgb2YgdGhlIG9yaWdpbmFsIGNvbnN0cnVjdG9yIGZ1bmN0aW9uKS4KKyAgICAgICAgSG93ZXZl
ciwgbWFraW5nIGEgbWlzdGFrZSBsaWtlIHRoaXMgc2hvdWxkIHJlc3VsdCBpbiBhIHB1cmVseSBz
ZW1hbnRpYworICAgICAgICBlcnJvciBhcyBmdW5kYW1lbnRhbGx5IHRoZXNlIGZ1bmN0aW9ucyBh
cmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlCisgICAgICAgIHJlZ3VsYXIgSlMgY29kZSBp
biB0aGUgaG9zdCBnbG9iYWwsIGFuZCBoYXZlIG5vIG1vcmUgcHJpdmlsZWdlcyB0aGFuCisgICAg
ICAgIGFueSBvdGhlciBKUy4KKworICAgICAgICBUaGUgaW5pdGlhbCBwcm9vZiBvZiBjb25jZXB0
IGlzIEFycmF5LnByb3RvdHlwZS5ldmVyeSwgdGhpcyBzaG93cyBhIDY1JQorICAgICAgICBwZXJm
b3JtYW5jZSBpbXByb3ZlbWVudCwgYW5kIHRoYXQgaW1wcm92ZW1lbnQgaXMgc2lnbmlmaWNhbnRs
eSBodXJ0IGJ5CisgICAgICAgIG91ciBwb29yIG9wdGltaXNhdGlvbiBvZiBvcF9pbi4KKworICAg
ICAgICBBcyB0aGlzIGlzIHN1Y2ggYSBsaW1pdGVkIGZ1bmN0aW9uLCB3ZSBoYXZlIG5vdCB5ZXQg
ZXhwb3J0ZWQgYWxsIHN5bWJvbHMKKyAgICAgICAgdGhhdCB3ZSBjb3VsZCBwb3NzaWJseSBuZWVk
LCBidXQgYXMgd2UgaW1wbGVtZW50IG1vcmUsIHRoZSBsaWtlbGlob29kCisgICAgICAgIG9mIGVu
Y291bnRlcmluZyBtaXNzaW5nIGZlYXR1cmVzIHdpbGwgcmVkdWNlLgorCisgICAgICAgIFRoaXMg
ZGlkIHJlcXVpcmUgYnJlYWtpbmcgb3V0IGEgSlNTdHJpbmdJbmxpbmVzIGhlYWRlciwgYW5kIHJl
cXVpcmVkCisgICAgICAgIGZpeGluZyBhIGZldyBvYmplY3RzIHRoYXQgd2VyZSB0cnlpbmcgdG8g
dXNpbmcgUHJvcGVydHlOYW1lOjpwdWJsaWNOYW1lCisgICAgICAgIHJhdGhlciB0aGFuIFByb3Bl
cnR5TmFtZTo6dWlkLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0
eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dCk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRpY1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWNGdW5jdGlvbkdl
dHRlcik6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tH
ZXR0ZXIpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBidWlsdGlucy9BcnJheS5wcm90b3R5cGUuanM6CisgICAgICAgIChldmVyeSk6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkJ1aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKToKKyAgICAgICAgKEpTQzo6
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSk6CisgICAgICAgICog
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVj
dXRhYmxlczo6Y3JlYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tG
b3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6dG9TdHJpY3RuZXNzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNCdWlsdGluRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBjcmVhdGVfaGFz
aF90YWJsZToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZ2Vu
ZXJhdGUtanMtYnVpbHRpbnM6IEFkZGVkLgorICAgICAgICAoZ2V0Q29weXJpZ2h0KToKKyAgICAg
ICAgKGdldEZ1bmN0aW9ucyk6CisgICAgICAgIChnZW5lcmF0ZUNvZGUpOgorICAgICAgICAobWFu
Z2xlTmFtZSk6CisgICAgICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSWRlbnRp
Zmllcik6CisgICAgICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChTb3VyY2VDb2RlKToK
KyAgICAgICAgKFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKFZNKToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvUHJvdG9DYWxsRnJhbWUuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUp
OgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpM
ZXhlcik6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpM
ZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFy
Pjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAg
ICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcik6CisgICAgICAgICog
cGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OnNldENsb3NlZFZh
cmlhYmxlcyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
Tm9kZTo6Y2FwdHVyZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OnNldENs
b3NlZFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmluaXNoUGFy
c2luZyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRU
b2tlblRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OmdldFVzZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNsb3NlZFZhcmlh
Ymxlcyk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9k
ZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAgICAgICogcnVudGlt
ZS9BcmdMaXN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAg
ICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJh
dG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpn
ZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpD
b21tb25JZGVudGlmaWVycyk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQ
cml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQdWJsaWNO
YW1lKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzRXhjZXB0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxl
OjpleGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpleGVj
dXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aXNCdWlsdGlu
RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1l
L0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFi
bGVHZXQpOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0KToKKyAg
ICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgICogcnVudGltZS9K
U0NlbGxJbmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6c291cmNlQ29kZSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzSG9zdE9y
QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6aXNCdWlsdGluRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIpOgorICAgICAg
ICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9w
ZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgICogcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6Om9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpnZXRDbGFzc1Byb3BlcnR5TmFtZXMpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZ0lubGlu
ZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjppbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9i
amVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgICAgRG9uJ3QgcmVw
b3J0IHByaXZhdGUgbmFtZXMuCisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6c3ltYm9s
VGFibGVQdXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChKU0M6OnNldFVwU3RhdGlj
RnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlND
OjpIYXNoRW50cnk6OmJ1aWx0aW5HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpIYXNoRW50cnk6
OnByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpwcm9wZXJ0eVB1dHRl
cik6CisgICAgICAgIChKU0M6Okhhc2hUYWJsZTo6ZW50cnkpOgorICAgICAgICAoSlNDOjpnZXRT
dGF0aWNQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpnZXRTdGF0aWNWYWx1ZVNsb3QpOgor
ICAgICAgICAoSlNDOjpwdXRFbnRyeSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6YnVp
bHRpbkV4ZWN1dGFibGVzKToKKwogMjAxNC0wMS0zMCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2Vr
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gT25seSBkaXNhYmxlIC1mdHJlZS1kY2Ugb3B0
aW1pemF0aW9uIHdoZW4gY29tcGlsaW5nIHdpdGggR0NDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjkwMTgyNzU0
ZjM1YzMyYmNmZjU3OTU1YTI3MzAwOWIxNmI1OTk2Ny4uMWIxZDUxNGMwOTk2MTQ1NTljMzk2MTM2
NWM1ODgwY2FmZmJjYzEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE0LTAxLTI5
ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3Nz
aWJsZSB0byBpbXBsZW1lbnQgSlMgYnVpbHRpbnMgaW4gSlMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzg4NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0aW5nIGZvciB0aGUgbmV3bHkgcmVxdWly
ZWQgaGVhZGVycy4KKworICAgICAgICBUZXN0OiBqcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1l
dmVyeS5odG1sCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5n
SW5saW5lcy5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9t
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcDoKKwogMjAxNC0w
MS0zMCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIE1v
ZGVybml6ZSBIVFRQSGVhZGVyTWFwIGl0ZXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAppbmRleCA1YmUwNTNmMWUw
ODZiNDNlNjg2YzM2NzRkYWU3YzUxNjA1YTI4NmU3Li4wZWNlZDUxZjNlMmQ1YjYyMWRhZGYwNTc0
OWY1ZTc0NjZhMDZmNTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaApAQCAtMTM2LDcgKzEzNiw3IEBAIGJvb2wgSlND
YWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBlCiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmpl
Y3QpOwogICAgIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwogICAgIAot
ICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkgewor
ICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CiAgICAgICAg
IGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iamVjdC0+Y2xhc3NSZWYoKTsganNDbGFz
czsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgICAgICAvLyBvcHRp
b25hbCBvcHRpbWl6YXRpb24gdG8gYnlwYXNzIGdldFByb3BlcnR5IGluIGNhc2VzIHdoZW4gd2Ug
b25seSBuZWVkIHRvIGtub3cgaWYgdGhlIHByb3BlcnR5IGV4aXN0cwogICAgICAgICAgICAgaWYg
KEpTT2JqZWN0SGFzUHJvcGVydHlDYWxsYmFjayBoYXNQcm9wZXJ0eSA9IGpzQ2xhc3MtPmhhc1By
b3BlcnR5KSB7CkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVu
dD46OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHAKICAg
ICBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHByb3BlcnR5TmFtZVJlZjsKICAgICBKU1ZhbHVlUmVm
IHZhbHVlUmVmID0gdG9SZWYoZXhlYywgdmFsdWUpOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBs
KiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBs
KiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBq
c0NsYXNzID0gdGhpc09iamVjdC0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xh
c3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgICAgICBpZiAoSlNPYmplY3RTZXRQcm9wZXJ0eUNh
bGxiYWNrIHNldFByb3BlcnR5ID0ganNDbGFzcy0+c2V0UHJvcGVydHkpIHsKICAgICAgICAgICAg
ICAgICBpZiAoIXByb3BlcnR5TmFtZVJlZikKQEAgLTM0Myw3ICszNDMsNyBAQCBib29sIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFBybwogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0
KTsKICAgICBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHByb3BlcnR5TmFtZVJlZjsKICAgICAKLSAg
ICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAg
ICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBm
b3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7
IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2Jq
ZWN0RGVsZXRlUHJvcGVydHlDYWxsYmFjayBkZWxldGVQcm9wZXJ0eSA9IGpzQ2xhc3MtPmRlbGV0
ZVByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5hbWVSZWYpCkBAIC01
NjQsNyArNTY0LDcgQEAgSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRp
Y1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHAKIHsKICAgICBKU09iamVjdFJl
ZiB0aGlzUmVmID0gdG9SZWYodGhpcyk7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUg
PSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUg
PSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3Mg
PSBjbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsK
ICAgICAgICAgICAgIGlmIChPcGFxdWVKU0NsYXNzU3RhdGljVmFsdWVzVGFibGUqIHN0YXRpY1Zh
bHVlcyA9IGpzQ2xhc3MtPnN0YXRpY1ZhbHVlcyhleGVjKSkgewogICAgICAgICAgICAgICAgIGlm
IChTdGF0aWNWYWx1ZUVudHJ5KiBlbnRyeSA9IHN0YXRpY1ZhbHVlcy0+Z2V0KG5hbWUpKSB7CkBA
IC02MDAsNyArNjAwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpzdGF0aWNGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEUKICAgICBpZiAoUGFyZW50
OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iaiwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90Mikp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2xvdDIuZ2V0VmFsdWUoZXhlYywgcHJv
cGVydHlOYW1lKSk7CiAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5w
dWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS51
aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmotPmNsYXNz
UmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAg
ICAgICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZSogc3RhdGljRnVuY3Rp
b25zID0ganNDbGFzcy0+c3RhdGljRnVuY3Rpb25zKGV4ZWMpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKFN0YXRpY0Z1bmN0aW9uRW50cnkqIGVudHJ5ID0gc3RhdGljRnVuY3Rpb25zLT5nZXQobmFt
ZSkpIHsKQEAgLTYyNiw3ICs2MjYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmNhbGxiYWNrR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZAogICAgIEpT
T2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqKTsKICAgICBSZWZQdHI8T3BhcXVlSlNT
dHJpbmc+IHByb3BlcnR5TmFtZVJlZjsKICAgICAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9
IHRoaXNPYmotPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRD
bGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0R2V0UHJvcGVydHlDYWxsYmFjayBnZXRQ
cm9wZXJ0eSA9IGpzQ2xhc3MtPmdldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFw
cm9wZXJ0eU5hbWVSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMjdi
YzRjMTdmM2RmZWViNjFkMjUyMzIzZmQ4NzhjNDQ3ODBmNzRjNS4uNDEzNGE2YzFlM2VmMzJiZTg1
YTYyNDVkN2ViNWUwNTUyZmU1MTNlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtNTIsNiArNTIsOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGJpbmRp
bmdzL1NjcmlwdE9iamVjdC5jcHAKICAgICBiaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAKIAorICAg
IGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKKwogICAgIGJ5dGVjb2RlL0FycmF5QWxs
b2NhdGlvblByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAogICAgIGJ5
dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKQEAgLTgxNSwxNiArODE3LDI3IEBAIGFkZF9j
dXN0b21fY29tbWFuZCgKICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7SmF2YVNj
cmlwdENvcmVfSU5TUEVDVE9SX1NDUklQVFNfRElSfS9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlMuanNvbiAt
LW91dHB1dF9oX2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIgLS1v
dXRwdXRfY3BwX2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIgLS1v
dXRwdXRfanNfZGlyICIke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9IiAtLW91
dHB1dF90eXBlIEphdmFTY3JpcHQgLS13cml0ZV9hbHdheXMgJiYgbWtkaXIgLXAgJHtERVJJVkVE
X1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IgJiYgY3AgJHtERVJJVkVEX1NP
VVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5o
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNGcm9udGVu
ZERpc3BhdGNoZXJzLmggJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNw
ZWN0b3JKU1R5cGVCdWlsZGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vaW5zcGVjdG9yCiAgICAgVkVSQkFUSU0pCiAKKyMgSlNDQnVpbHRpbnMKK2ZpbGUoR0xPQiBK
U0NCdWlsdGluc19qc19maWxlcyAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2J1aWx0aW5z
LyouanMiKQorYWRkX2N1c3RvbV9jb21tYW5kKAorICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuY3BwICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAorICAgTUFJTl9ERVBFTkRFTkNZICR7Q01B
S0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucworICAgREVQRU5EUyAk
e0pTQ0J1aWx0aW5zX2pzX2ZpbGVzfQorICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMgJHtKU0NCdWls
dGluc19qc19maWxlc30gJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NC
dWlsdGlucy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRp
bnMuY3BwCisgICBWRVJCQVRJTSkKKwogbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfU09VUkNF
UwogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNC
YWNrZW5kRGlzcGF0Y2hlcnMuY3BwCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENP
UkVfRElSfS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuY3BwCiAgICAgJHtERVJJVkVE
X1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAK
KyAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNw
cAogKQogCiBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTCiAgICAgJHtERVJJVkVE
X1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVy
cy5oCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JK
U0Zyb250ZW5kRGlzcGF0Y2hlcnMuaAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRD
T1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaAorICAgICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAogKQogCiBhZGRfY3VzdG9tX2NvbW1h
bmQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDExNTZl
OTdmZDg4NjI1NTdjOWNmOGQzYjY4YmY0ZDAzYzNlOGJhOGYuLjU1ZDhiNzNmMWFlNzBiYzkyMGY4
MzUxNzJhOWFhNzdmMDZkYjE5MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCkBAIC01Nyw2ICs1Nyw3IEBAIGFsbCA6IFwKICAgICBSZWdFeHBPYmplY3QubHV0
LmggXAogICAgIFN0cmluZ0NvbnN0cnVjdG9yLmx1dC5oIFwKICAgICB1ZGlzODZfaXRhYi5oIFwK
KyAgICBKU0NCdWlsdGlucyBcCiAjCiAKICMgbG9va3VwIHRhYmxlcyBmb3IgY2xhc3NlcwpAQCAt
NzksNiArODAsMTQgQEAgS2V5d29yZExvb2t1cC5oOiBLZXl3b3JkTG9va3VwR2VuZXJhdG9yLnB5
IEtleXdvcmRzLnRhYmxlCiB1ZGlzODZfaXRhYi5oOiAkKEphdmFTY3JpcHRDb3JlKS9kaXNhc3Nl
bWJsZXIvdWRpczg2L2l0YWIucHkgJChKYXZhU2NyaXB0Q29yZSkvZGlzYXNzZW1ibGVyL3VkaXM4
Ni9vcHRhYmxlLnhtbAogCShQWVRIT05QQVRIPSQoSmF2YVNjcmlwdENvcmUpL2Rpc2Fzc2VtYmxl
ci91ZGlzODYgcHl0aG9uICQoSmF2YVNjcmlwdENvcmUpL2Rpc2Fzc2VtYmxlci91ZGlzODYvaXRh
Yi5weSAkKEphdmFTY3JpcHRDb3JlKS9kaXNhc3NlbWJsZXIvdWRpczg2L29wdGFibGUueG1sIHx8
IGV4aXQgMSkKIAorIyBidWlsdGluIGZ1bmN0aW9ucworLlBIT05ZOiBKU0NCdWlsdGlucworCitK
U0NCdWlsdGluczogJChKYXZhU2NyaXB0Q29yZSkvZ2VuZXJhdGUtanMtYnVpbHRpbnMgSlNDQnVp
bHRpbnMuaCBKU0NCdWlsdGlucy5jcHAKK0pTQ0J1aWx0aW5zLmg6ICQoSmF2YVNjcmlwdENvcmUp
L2dlbmVyYXRlLWpzLWJ1aWx0aW5zICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zLyouanMKKwlw
eXRob24gJF4gJEAKKworSlNDQnVpbHRpbnMuY3BwOiBKU0NCdWlsdGlucy5oCiAKICMgSW5zcGVj
dG9yIGludGVyZmFjZXMKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQppbmRleCBjZGI1NDI2YjA2YjUyYTk4MjU2ZWU5MDU4YmJhOGYxMWVlYTY5ZWUwLi5hZmU5Njcy
YjViMWVlOTI3MTFiZWRkNDc1ZTlhMTI4MjAzYzgxMzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTAyLDYgKzEwMiw4IEBAIGphdmFzY3JpcHRjb3Jl
X3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRP
YmplY3QuaCBcCiAgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVl
LmNwcCBcCiAgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmgg
XAorICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMu
Y3BwIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFi
bGVzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheUFsbG9jYXRpb25Q
cm9maWxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5QWxsb2Nh
dGlvblByb2ZpbGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJv
ZmlsZS5jcHAgXApAQCAtMTI0MSw3ICsxMjQzLDkgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyAr
PSBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNGcm9udGVuZERp
c3BhdGNoZXJzLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9y
SlNGcm9udGVuZERpc3BhdGNoZXJzLmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3Jl
L0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmggXAorCURlcml2ZWRTb3VyY2VzL0phdmFT
Y3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvSlNDQnVpbHRpbnMuaAogCiBsbGludF9ub3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDVlZGVmZGJlODU1Zjk2YTYyNjhkODU3M2Jl
YzFkMGMzZDg1OGFhNWMuLmExMmRiMTgzNDg2ZGZiYmNhODNmM2E3OGU5Y2Y5ODYzMWIyNjUzZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtMzA5LDYgKzMwOSw3
IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNh
bGwuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0T2Jq
ZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdFZh
bHVlLmNwcCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5F
eGVjdXRhYmxlcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxB
cnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGJ5dGVjb2RlXEFycmF5UHJvZmlsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxieXRlY29kZVxCeXRlY29kZUJhc2ljQmxvY2suY3BwIiAvPgpAQCAtNzIxLDYgKzcyMiw3IEBA
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQ
bGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVj
dG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
SW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmNwcCIgLz4KICAgPC9JdGVtR3Jv
dXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcQXJyYXlDb25zdHJ1Y3Rvci5sdXQuaCIgLz4KQEAgLTc1MCw2ICs3NTIsNyBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFJlZ0V4
cE9iamVjdC5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xSZWdFeHBQcm90b3R5cGUubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcU3RyaW5nQ29uc3RydWN0b3IubHV0LmgiIC8+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQ
bGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVp
bHRpbnMuaCIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxBUElcQVBJQ2FsbGJhY2tGdW5jdGlvbi5oIiAvPgpAQCAtNzk4LDYgKzgw
MSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlv
bkNhbGwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdE9i
amVjdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0VmFs
dWUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVj
dXRhYmxlcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlB
bGxvY2F0aW9uUHJvZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNv
ZGVcQXJyYXlQcm9maWxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29k
ZVxCeVZhbEluZm8uaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ouZmlsdGVycwppbmRleCA4N2UxMmE0NzE1OGJiNjIyNGQ0OWZkNjIyOTc4YzRhOWM0NDM1
YTY1Li44NjljMWY1ODliY2I2ODZlYjljZjIwYzA5NmJlMWI4M2E1NTFlMjRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC03LDYgKzcs
OSBAQAogICAgIDxGaWx0ZXIgSW5jbHVkZT0iYmluZGluZ3MiPgogICAgICAgPFVuaXF1ZUlkZW50
aWZpZXI+ezBiYWNlMTIzLTQ1ODItZWViYy05MzE0LTc4MTliMzc2YzE5OH08L1VuaXF1ZUlkZW50
aWZpZXI+CiAgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJidWlsdGlucyI+Cisg
ICAgICA8VW5pcXVlSWRlbnRpZmllcj57M2I5ZDcyYTUtMTM1Yi00M2IzLWE1MjQtYzZkMmI5ZDI5
ZDM1fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KICAgICA8RmlsdGVyIEluY2x1
ZGU9ImJ5dGVjb2RlIj4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns3NjYwODhhMC0xMjE2LTQ4
NTQtYWE0My01NjBjNWUyODM2Njh9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgpA
QCAtMTA4LDYgKzExMSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJc
TWFjcm9Bc3NlbWJsZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAg
ICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWls
dGluRXhlY3V0YWJsZXMuY3BwIj4KKyAgICAgIDxGaWx0ZXI+YnVpbHRpbnM8L0ZpbHRlcj4KKyAg
ICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5
QWxsb2NhdGlvblByb2ZpbGUuY3BwIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4K
ICAgICA8L0NsQ29tcGlsZT4KQEAgLTEzMjksNiArMTMzNSw5IEBACiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVy
ZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMu
Y3BwIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbENv
bXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
SlNDQnVpbHRpbnMuY3BwIj4KKyAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+
CisgICAgPC9DbENvbXBpbGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEFQSUNhbGxiYWNrRnVuY3Rpb24uaCI+CkBAIC0xNDU0
LDYgKzE0NjMsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXFg4NkFz
c2VtYmxlci5oIj4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWlsdGluRXhlY3V0
YWJsZXMuaCI+CisgICAgICA8RmlsdGVyPmJ1aWx0aW5zPC9GaWx0ZXI+CisgICAgPC9DbENvbXBp
bGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Q
cm9maWxlLmgiPgogICAgICAgPEZpbHRlcj5ieXRlY29kZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNs
dWRlPgpAQCAtMjU1MCw2ICsyNTYyLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3RO
YW1lKVxEZXJpdmVkU291cmNlc1xBcnJheVByb3RvdHlwZS5sdXQuaCI+CiAgICAgICA8RmlsdGVy
PkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmgiPgorICAg
ICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVk0uaCI+CiAgICAgICA8RmlsdGVyPnJ1
bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlQ29tbW9uLnBy
b3BzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmVDb21tb24ucHJvcHMKaW5kZXggMzYyMmZmYzU3N2M0M2RkZjcwZGE1MWZmNjhhZDY0
NmY2MzA0ZTU2Ny4uYzU4ODg3MGMyZmQxM2Q2MDc2ZDM4ZjUyY2E2MjI1ZGIyODcyYzc4MiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmVDb21tb24ucHJvcHMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmVDb21tb24ucHJvcHMKQEAgLTUsNyArNSw3
IEBACiAgIDxQcm9wZXJ0eUdyb3VwIC8+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxD
bENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlw7Li5cdG9v
bHNcOy4uXHJ1bnRpbWVcOy4uXGxsaW50XDsuLlxqaXRcOy4uXGRpc2Fzc2VtYmxlclw7Li5caGVh
cFw7Li5cZGVidWdnZXJcOy4uXGFzc2VtYmxlclw7Li5ccHJvZmlsZXJcOy4uXHlhcnJcOy4uXGlu
dGVycHJldGVyXDsuLlxieXRlY29kZVw7Li5cZGZnXDsuLlxieXRlY29tcGlsZXJcOy4uXHBhcnNl
clw7Li5cQVBJXDsuLlxmdGxcOy4uXGJpbmRpbmdzXDsuLlxpbnNwZWN0b3JcOyQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVxKYXZhU2NyaXB0Q29yZVxE
ZXJpdmVkU291cmNlc1w7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcOyQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlXDskKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcaW5jbHVkZVxwcml2YXRlXDskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGU7JChX
ZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlXHByaXZhdGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPi4uXDsuLlx0b29sc1w7Li5ccnVudGltZVw7Li5cbGxpbnRcOy4u
XGppdFw7Li5cZGlzYXNzZW1ibGVyXDsuLlxoZWFwXDsuLlxkZWJ1Z2dlclw7Li5cYXNzZW1ibGVy
XDsuLlxwcm9maWxlclw7Li5ceWFyclw7Li5caW50ZXJwcmV0ZXJcOy4uXGJ5dGVjb2RlXDsuLlxi
dWlsdGluc1w7Li5cZGZnXDsuLlxieXRlY29tcGlsZXJcOy4uXHBhcnNlclw7Li5cQVBJXDsuLlxm
dGxcOy4uXGJpbmRpbmdzXDsuLlxpbnNwZWN0b3JcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1w7
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVk
ZVxwcml2YXRlXDskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGU7JChXZWJLaXRfTGlicmFyaWVz
KVxpbmNsdWRlXHByaXZhdGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICAgIDxGb3JjZWRJbmNsdWRlRmlsZXM+SUNVVmVy
c2lvbi5oOyUoRm9yY2VkSW5jbHVkZUZpbGVzKTwvRm9yY2VkSW5jbHVkZUZpbGVzPgogICAgIDwv
Q2xDb21waWxlPgogICAgIDxMaW5rPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAy
N2U4NzY3NDBhOTY0YjAyODk4NGVkNjc4MTYxODIwYTVkY2Y3N2M0Li45MTE1NzNhYjE3ZDMzOTc0
YWE3YzlhMDExZGIyMDBiMDlhZjc4YmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtOTIyLDcgKzkyMiw2IEBACiAJCUE1MDNGQTE5MTg4RTBGQjAwMDExMEYxNCAvKiBKYXZhU2Ny
aXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1MDNGQTEzMTg4RTBGQUYwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNw
cCAqLzsgfTsKIAkJQTUwM0ZBMUExODhFMEZCMDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJh
bWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNG
QTE0MTg4RTBGQUYwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggKi87IH07CiAJCUE1
MDNGQTFCMTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTUxODhFMEZC
MDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi87IH07Ci0JCUE1MDNGQTFD
MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE2MTg4RTBGQjAwMDExMEYx
NCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCAqLzsgfTsKIAkJQTUwM0ZBMUQxODhFMEZCMDAw
MTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNzE4OEUwRkIwMDAxMTBG
MTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcCAqLzsgfTsKIAkJQTUwM0ZB
MUUxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTgxODhF
MEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oICovOyB9Owog
CQlBNTAzRkEyMTE4OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0QnJlYWtwb2ludC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMUYxODhFRkY2ODAw
MTEwRjE0IC8qIFNjcmlwdEJyZWFrcG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTAyNCw2ICsxMDIzLDcgQEAKIAkJQTcwQjA4MzIxN0Ew
Qjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzBCMDgzMDE3QTBCNzlCMDBEQUYxNEIgLyogREZH
QmluYXJ5U3dpdGNoLmNwcCAqLzsgfTsKIAkJQTcwQjA4MzMxN0EwQjc5QjAwREFGMTRCIC8qIERG
R0JpbmFyeVN3aXRjaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTcwQjA4MzExN0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5oICovOyB9
OwogCQlBNzEyMzZFNTExOTVGMzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MTIzNkU0MTE5NUYz
M0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3BwICovOyB9OworCQlBNzFEQTgwRjE4ODBE
QkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzFEQTgwRTE4ODBEQkFCMDBEMUYyOTkgLyogSlNTdHJp
bmdJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQTcyMDI4QjYxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIwMjhCNDE3
OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmNwcCAqLzsgfTsKIAkJQTcyMDI4
QjgxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyMDI4QjUxNzk3NjAxRTAwOTgwMjhD
IC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUE3MjAyOEJBMTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9u
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTcyMDI4QjkxNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExNTAsNiArMTE1MCwx
MCBAQAogCQlBN0NBM0FFODE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0NBM0FFMjE3REE0MUFFMDA2
NTM4QUYgLyogSlNXZWFrTWFwLmggKi87IH07CiAJCUE3Q0EzQUVCMTdEQTUxNjgwMDY1MzhBRiAv
KiBXZWFrTWFwRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBN0NBM0FFOTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuY3BwICovOyB9
OwogCQlBN0NBM0FFQzE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0EzQUVBMTdEQTUxNjgwMDY1
MzhBRiAvKiBXZWFrTWFwRGF0YS5oICovOyB9OworCQlBN0Q4MDFBNDE4ODBENjZFMDAyNkMzOUIg
LyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0
YWJsZXMuY3BwICovOyB9OworCQlBN0Q4MDFBNTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4
ZWN1dGFibGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBN0Q4MDFBMjE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdEODAxQTgxODgw
RDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDgwMUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWls
dGlucy5jcHAgKi87IH07CisJCUE3RDgwMUE5MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlu
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAx
QTcxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTdEODlDRjIxN0EwQjhDQzAwNzczQUQ4IC8q
IERGR0Jhc2ljQmxvY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTdEODlDRTMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jhc2ljQmxvY2suY3BwICov
OyB9OwogCQlBN0Q4OUNGMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODlD
RTQxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCAqLzsgfTsKIAkJ
QTdEODlDRjQxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4OUNFNTE3QTBCOEND
MDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjQ2Miw2ICsyNDY2LDggQEAKIAkJQTcxMjM2
RTQxMTk1RjMzQzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRPcGNvZGVzMzJfNjQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNzE4RjYxQTExNzU0QTIxMDAyNDY1QTcgLyogUmVnRXhwSml0VGFi
bGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEppdFRhYmxlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzE4RjgyMTExNzhFQjRCMDAyNDY1QTcg
LyogY3JlYXRlX3JlZ2V4X3RhYmxlcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBs
aWNpdEZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRo
ID0gY3JlYXRlX3JlZ2V4X3RhYmxlczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcx
REE4MEQxODgwRDcxRjAwRDFGMjk5IC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gImdlbmVyYXRlLWpzLWJ1aWx0aW5zIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcxREE4MEUxODgwREJBQjAwRDFGMjk5IC8qIEpTU3Ry
aW5nSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0cmluZ0lu
bGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyMDI4QjQxNzk3NjAxRTAw
OTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0NUZXN0UnVubmVyVXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNzIwMjhCNTE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ1Rlc3RSdW5uZXJVdGlscy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzIwMjhCOTE3OTc2MDNEMDA5ODAyOEMg
LyogSlNGdW5jdGlvbklubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNGdW5jdGlvbklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1OTAs
NiArMjU5NiwxMSBAQAogCQlBN0NBM0FFMjE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2Vha01hcC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBN0NBM0FFOTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERh
dGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vha01hcERhdGEu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0NBM0FFQTE3REE1MTY4MDA2NTM4
QUYgLyogV2Vha01hcERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vh
a01hcERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTAxODgwRDY2
RTAwMjZDMzlCIC8qIEFycmF5LnByb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2
YXNjcmlwdDsgcGF0aCA9IEFycmF5LnByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTdEODAxQTExODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCdWlsdGluRXhlY3V0YWJs
ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFBMjE4ODBENjZFMDAy
NkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEJ1aWx0aW5FeGVjdXRhYmxlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBN0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDQnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBN0Q4MDFBNzE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDQnVpbHRpbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdEODlDRTMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jh
c2ljQmxvY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQmFz
aWNCbG9jay5jcHA7IHBhdGggPSBkZmcvREZHQmFzaWNCbG9jay5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE3RDg5Q0U0MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2Vy
dGlvblNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdCbG9j
a0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0Q4OUNFNTE3QTBCOENDMDA3NzNBRDggLyog
REZHQmxvY2tJbnNlcnRpb25TZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
REZHQmxvY2tJbnNlcnRpb25TZXQuaDsgcGF0aCA9IGRmZy9ERkdCbG9ja0luc2VydGlvblNldC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjkyNiw2ICsyOTM3LDcgQEAKIAkJCQk4
NjA0RjRGMjE0M0E2QzQ0MDBCMjk1RjUgLyogQ2hhbmdlTG9nICovLAogCQkJCUY2OTJBODU0MDI1
NTU5N0QwMUZGNjBGNyAvKiBjcmVhdGVfaGFzaF90YWJsZSAqLywKIAkJCQlBNzE4RjgyMTExNzhF
QjRCMDAyNDY1QTcgLyogY3JlYXRlX3JlZ2V4X3RhYmxlcyAqLywKKwkJCQlBNzFEQTgwRDE4ODBE
NzFGMDBEMUYyOTkgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMgKi8sCiAJCQkJNDVFMTJEODgwNkE0
OUIwRjAwRTlERjg0IC8qIGpzYy5jcHAgKi8sCiAJCQkJRjY4RUJCOEMwMjU1RDRDNjAxRkY2MEY3
IC8qIGNvbmZpZy5oICovLAogCQkJCUY1QzI5MEU2MDI4NEY5OEUwMTg2MzVDQSAvKiBKYXZhU2Ny
aXB0Q29yZVByZWZpeC5oICovLApAQCAtMjkzNCw2ICsyOTQ2LDcgQEAKIAkJCQkxNDMyRUJENzBB
MzRDQUQ0MDA3MTdCOUYgLyogQVBJICovLAogCQkJCTk2ODhDQjEyMEVEMTJCNEUwMDFENjQ5RiAv
KiBhc3NlbWJsZXIgKi8sCiAJCQkJQTU0Q0YyRUExODRFQTczOTAwMjM3RjE5IC8qIGJpbmRpbmdz
ICovLAorCQkJCUE3RDgwMTlGMTg4MEQ2NkUwMDI2QzM5QiAvKiBidWlsdGlucyAqLywKIAkJCQk5
NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8sCiAJCQkJN0UzOUQ4MUQwRUMz
OEVGQTAwM0FGMTFBIC8qIGJ5dGVjb21waWxlciAqLywKIAkJCQkxQzkwNTEzRTBCQTlFODgzMDA4
MUU5RDAgLyogQ29uZmlndXJhdGlvbnMgKi8sCkBAIC0zNTA5LDYgKzM1MjIsOCBAQAogCQk2NTBG
REY4RDA5RDBGQ0E3MDA3NjlFNTQgLyogRGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlBN0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIg
LyogSlNDQnVpbHRpbnMuY3BwICovLAorCQkJCUE3RDgwMUE3MTg4MEQ2QTgwMDI2QzM5QiAvKiBK
U0NCdWlsdGlucy5oICovLAogCQkJCUJDMThDNTIzMEUxNkZDOEEwMEIzNDQ2MCAvKiBBcnJheVBy
b3RvdHlwZS5sdXQuaCAqLywKIAkJCQlCQ0QyMDNFNzBFMTcxOEY0MDAyQzdFODIgLyogRGF0ZVBy
b3RvdHlwZS5sdXQuaCAqLywKIAkJCQlBNTEzRTVDNjE4NUY5NDM2MDA3RTk1QUQgLyogSW5qZWN0
ZWRTY3JpcHRTb3VyY2UuaCAqLywKQEAgLTM4MTEsNiArMzgyNiw3IEBACiAJCQkJQTc5MERENkEx
ODJGNDk5NzAwNTg4ODA3IC8qIEpTU2V0SXRlcmF0b3IuaCAqLywKIAkJCQlCQzAyRTlCNjBFMTg0
MkZBMDAwRjkyOTcgLyogSlNTdHJpbmcuY3BwICovLAogCQkJCUY2OTJBODYyMDI1NTU5N0QwMUZG
NjBGNyAvKiBKU1N0cmluZy5oICovLAorCQkJCUE3MURBODBFMTg4MERCQUIwMEQxRjI5OSAvKiBK
U1N0cmluZ0lubGluZXMuaCAqLywKIAkJCQk4NkU4NTUzODExMUI5OTY4MDAxQUY1MUUgLyogSlNT
dHJpbmdCdWlsZGVyLmggKi8sCiAJCQkJMjYwMEI1QTQxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3Ry
aW5nSm9pbmVyLmNwcCAqLywKIAkJCQkyNjAwQjVBNTE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJp
bmdKb2luZXIuaCAqLywKQEAgLTQ1NjEsNiArNDU3NywxNiBAQAogCQkJcGF0aCA9IHJlbW90ZTsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUE3RDgwMTlGMTg4MEQ2NkUwMDI2
QzM5QiAvKiBidWlsdGlucyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4g
PSAoCisJCQkJQTdEODAxQTAxODgwRDY2RTAwMjZDMzlCIC8qIEFycmF5LnByb3RvdHlwZS5qcyAq
LywKKwkJCQlBN0Q4MDFBMTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmNw
cCAqLywKKwkJCQlBN0Q4MDFBMjE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVz
LmggKi8sCisJCQkpOworCQkJcGF0aCA9IGJ1aWx0aW5zOworCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKKwkJfTsKIC8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEhl
YWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTQ2MDYsMTEgKzQ2MzIsMTEgQEAKIAkJCQk4
NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE1Q0VFRTE1MTg3RjNCQUQwMEU1NUM5OSAvKiBJbnNwZWN0b3JBZ2VudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNjVDMDI4NUQxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5o
IGluIEhlYWRlcnMgKi8sCi0gCQkJCTJBNjgyOTVCMTg3NUY4MDUwMEI2QzNFMiAvKiBDb3B5V3Jp
dGVCYXJyaWVyLmggaW4gSGVhZGVycyAqLywKLSAgICAgICAgICAgICAgICAyQTRFQzkwQzE4NjBE
NkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQky
QTY4Mjk1QjE4NzVGODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMkE0RUM5MEMxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkU1OTMyQTgxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlT
Y29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzMjQzOTMxODU2OTcwOTAwMkVENjkyIC8qIENv
ZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5IGluIEhlYWRlcnMgKi8sCi0gCQkJCUE1MzI0
MzkyMTg1Njk3MDkwMDJFRDY5MiAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGluIEhlYWRl
cnMgKi8sCisJCQkJQTUzMjQzOTIxODU2OTcwOTAwMkVENjkyIC8qIENvZGVHZW5lcmF0b3JJbnNw
ZWN0b3IucHkgaW4gSGVhZGVycyAqLywKIAkJCQkwRjI0RTU0RjE3RUUyNzQ5MDBBQkIyMTcgLyog
VGVtcFJlZ2lzdGVyU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTBFNEI2NDE4ODA5REQ1MDA2
OEE0NkQgLyogSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZFQjU4QzE1MTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJvckhhbmRsaW5nU2NvcGUuaCBpbiBIZWFk
ZXJzICovLApAQCAtNDYyMiw3ICs0NjQ4LDcgQEAKIAkJCQkwRjgzMzVCODE2MzlDMUVBMDAxNDQz
QjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBF
MjkxODdDQTVFNjAwODQzQjEwIC8qIGlubGluZS1hbmQtbWluaWZ5LXN0eWxlc2hlZXRzLWFuZC1z
Y3JpcHRzLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMkIxODdDQTc1QjAwODQzQjEwIC8q
IGpzbWluLnB5IGluIEhlYWRlcnMgKi8sCi0gCQkJCUE1MzI0Mzk4MTg1NkE0ODkwMDJFRDY5MiAv
KiBJbnNwZWN0b3JKUy5qc29uIGluIEhlYWRlcnMgKi8sCisJCQkJQTUzMjQzOTgxODU2QTQ4OTAw
MkVENjkyIC8qIEluc3BlY3RvckpTLmpzb24gaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUyQTE4
N0NBNzU5MDA4NDNCMTAgLyogeHhkLnBsIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVBMDg2MjAxODJC
N0EwNDAwRjZEODUxIC8qIEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjM1
MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC00NzMz
LDcgKzQ3NTksNyBAQAogCQkJCUExQTAwOUMwMTgzMUEyMkQwMENGODcxMSAvKiBNYWNyb0Fzc2Vt
YmxlckFSTTY0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDOURDNTEzMjhERjgyMDAyQjJBRDcg
LyogREZHQnl0ZUNvZGVQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDg1MzI4MTg3REZE
RUMwMDgzQjY4NyAvKiBGVExBdmFpbGFibGVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8sCi0gICAg
ICAgICAgICAgICAgQTU5M0NGODcxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVn
aXN0cnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1OTNDRjg3MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJ
bnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI1NkMzNjE2MjdC
MEFEMDA3RjI3ODMgLyogREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmls
aXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZDOTU4MTRFRjkwQTIwMEM3MjUzMiAvKiBE
RkdDRkFQaGFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC00ODcyLDYgKzQ4OTgsNyBAQAogCQkJCTBG
RUEwQTFEMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRUEwQTFGMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTk0NTU5MzE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNH
bG9iYWxPYmplY3REZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0Q4MDFBOTE4ODBE
NkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTBB
MTcwNTEzREIwMEJCNzIyQyAvKiBGVExDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGNDg1MzJBMTg3REZERUMwMDgzQjY4NyAvKiBGVExSZWNvdmVyeU9wY29kZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZFQTBBMjMxNzA5NjA2OTAwQkI3MjJDIC8qIEZUTENvbW1vblZhbHVlcy5o
IGluIEhlYWRlcnMgKi8sCkBAIC00OTQ2LDYgKzQ5NzMsNyBAQAogCQkJCUJDMThDNDBGMEUxNkY1
Q0QwMEIzNDQ2MCAvKiBJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjVGOEJDRTE1
NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkI3RjM5OTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUE3RDgwMUE1MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzlBMTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGlu
Z0hlYWRlcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzlCMTVFRDhFNDYwMEYx
NjdCMiAvKiBJbmRleGluZ1R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQ0VGQUIwMTgwNUNB
NkQwMDQ3MkNFNCAvKiBJbml0aWFsaXplTExWTS5oIGluIEhlYWRlcnMgKi8sCkBAIC01MjE4LDYg
KzUyNDYsNyBAQAogCQkJCUE1MzI0Mzg4MTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JKU0Jh
Y2tlbmREaXNwYXRjaGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NTYwRTE2RjVDRDAw
QjM0NDYwIC8qIFByb3RlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzRDMzNCMTZBQTJEOTUw
MDYyRjAxRCAvKiBQcm90b3R5cGVNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3MURBODBGMTg4
MERCQUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
OTMzMkE0MTRDQTdERDkwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjBDRDRDMjE1RjFBNjA3MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk3QzAwOENFNzE4NzYzMUI2MDA5NTVDMjQgLyogTWljcm90YXNrLmgg
aW4gSGVhZGVycyAqLywKQEAgLTU4MzYsNiArNTg2NSw3IEBACiAJCQkJQTdEODlDRjIxN0EwQjhD
QzAwNzczQUQ4IC8qIERGR0Jhc2ljQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcwQjA4
MzIxN0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBN0Q4OUNGMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJQTdEODAxQTQxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5F
eGVjdXRhYmxlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkVDOURDNDEzMjhERjgyMDAyQjJB
RDcgLyogREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEODJFMjEx
NDE3MkNFMzAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkZGQzk1NzE0RUY5MEEwMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC01ODUyLDYgKzU4ODIsNyBAQAogCQkJCTBGRkZDOTU5MTRFRjkwQTYwMEM3MjUzMiAv
KiBERkdDU0VQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJGQzc3MjE2RTEyRjcxMDAz
OEQ5NzYgLyogREZHRENFUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4RjJCOTkxNzJG
MDRGRjAwN0RCREE1IC8qIERGR0Rlc2lyZWRJZGVudGlmaWVycy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlBN0Q4MDFBODE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTczRTEzMzAxNzk2MjRDRDAwRTRERUE4IC8qIERGR0Rlc2lyZWRTdHJ1Y3R1
cmVDaGFpbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzJDMEY3Q0QxN0JCRkM1QjAwNDY0RkU0
IC8qIERGR0Rlc2lyZWRUcmFuc2l0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkU4NTM0
QjE3MjNDREE1MDBCNjE4RjUgLyogREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtNTk3Niw3ICs2MDA3LDcgQEAKIAkJCQkwRjZCMUNDNTE4NjJDNDc4MDA4NDVEOTcg
LyogRlRMVW53aW5kSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM5QTE4MDNBREI3
MDA3M0MyQkMgLyogRlRMU3RhY2tNYXBzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEwQTE2
MTcwNkJCOTAwMEJCNzIyQyAvKiBGVExTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKLSAJCQkJN0Mw
MDhDRDIxODZGOEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk3QzAwOENEMjE4NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9taXNlRnVuY3Rpb25z
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNkIxQ0I1MTg1RkM5RTkwMDg0NUQ5NyAvKiBGVExK
U0NhbGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMzVCRTExNzE3OEUxQzAwNjkwQzdGIC8q
IEZUTFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTkzQ0Y3QzE4NDAzNjAzMDBCRkNF
MjcgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAppbmRleCBhZjE0
ZTMzZWFjMDU5N2YyZDc4YzRiM2NkMTYzNTQxMWRhYmE5NjVlLi42NzkyM2YwODIzYzJmYmFiMzEx
MjhhZGI1MTlkYzg5ZWEwMmI2NTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTGlua0J1ZmZlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5l
cy5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgPHd0
Zi9Db21waWxhdGlvblRocmVhZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9BcnJheS5wcm90b3R5cGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ViNDJmNWNjNDMzZjE2MzYzNDNi
ZmM5ODJhYTJhYWZiMzM2ZTk0OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9uIGV2ZXJ5KGNh
bGxiYWNrIC8qLCB0aGlzQXJnICovKSB7CisgICAgInVzZSBzdHJpY3QiOworICAgIGlmICh0aGlz
ID09PSBudWxsKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBl
LmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIik7CisgICAgCisgICAgaWYg
KHRoaXMgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5
LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkIik7
CisgICAgCisgICAgdmFyIGFycmF5ID0gQE9iamVjdCh0aGlzKTsKKyAgICB2YXIgbGVuZ3RoID0g
YXJyYXkubGVuZ3RoID4+PiAwOworICAgIAorICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICJm
dW5jdGlvbiIpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUu
ZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7CisKKyAgICB2YXIgdGhpc0FyZyA9
IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkOworICAgIAor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKCEoaSBp
biBhcnJheSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFjYWxsYmFjay5A
Y2FsbCh0aGlzQXJnLCBhcnJheVtpXSwgaSwgYXJyYXkpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zNDFkYmI1ZjkyMjVlMjhhMTJlZDNkMTc5OGZmMTc2OGU0MzY3MWE2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxl
cy5jcHAKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJ1aWx0aW5FeGVj
dXRhYmxlcy5oIgorCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkpTQ2VsbElu
bGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgorI2luY2x1ZGUgIlBhcnNl
ci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworQnVpbHRpbkV4ZWN1dGFibGVzOjpCdWlsdGluRXhl
Y3V0YWJsZXMoVk0mIHZtKQorICAgIDogbV92bSh2bSkKKyNkZWZpbmUgSU5JVElBTElaRV9CVUlM
VElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSAsIG1fIyNuYW1l
IyNTb3VyY2UobWFrZVNvdXJjZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChzXyMjbmFt
ZSwgbGVuZ3RoKSwgU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoIjxidWlsdGluPiIpKSkK
KyAgICBKU0NfRk9SRUFDSF9CVUlMVElOKElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVS
UykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJTl9TVFJJTkdTCit7Cit9CisKK1VubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxl
KGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSkKK3sKKyAg
ICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lOworICAgIFBhcnNlckVy
cm9yIGVycm9yOworICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9IHBhcnNlPFByb2dy
YW1Ob2RlPigmbV92bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIEpTUGFyc2VCdWlsdGluLCBK
U1BhcnNlUHJvZ3JhbUNvZGUsIGVycm9yLCAmcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CisK
KyAgICBpZiAoIXByb2dyYW0pIHsKKyAgICAgICAgZGF0YUxvZygiRmF0YWwgZXJyb3IgY29tcGls
aW5nIGJ1aWx0aW4gZnVuY3Rpb24gJyIsIG5hbWUuc3RyaW5nKCksICInOiAiLCBlcnJvci5tX21l
c3NhZ2UpOworICAgICAgICBDUkFTSCgpOworICAgIH0KKworICAgIFN0YXRlbWVudE5vZGUqIGV4
cHJTdGF0ZW1lbnQgPSBwcm9ncmFtLT5zaW5nbGVTdGF0ZW1lbnQoKTsKKyAgICBSRUxFQVNFX0FT
U0VSVChleHByU3RhdGVtZW50KTsKKyAgICBSRUxFQVNFX0FTU0VSVChleHByU3RhdGVtZW50LT5p
c0V4cHJTdGF0ZW1lbnQoKSk7CisgICAgRXhwcmVzc2lvbk5vZGUqIGZ1bmNFeHByID0gc3RhdGlj
X2Nhc3Q8RXhwclN0YXRlbWVudE5vZGUqPihleHByU3RhdGVtZW50KS0+ZXhwcigpOworICAgIFJF
TEVBU0VfQVNTRVJUKGZ1bmNFeHByKTsKKyAgICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwci0+aXNG
dW5jRXhwck5vZGUoKSk7CisgICAgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSA9IHN0YXRpY19jYXN0
PEZ1bmNFeHByTm9kZSo+KGZ1bmNFeHByKS0+Ym9keSgpOworICAgIFJFTEVBU0VfQVNTRVJUKCFw
cm9ncmFtLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKKyAgICAKKyAgICBib2R5LT5zZXRFbmRQ
b3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKKyAgICBSRUxFQVNFX0FTU0VSVChi
b2R5KTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5LT5pZGVudCgpLmlzTnVsbCgpKTsKKyAgICAK
KyAgICAvLyBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgYW4gaW5wdXQgc3RyaW5nIHRoYXQgd291bGQg
cmVzdWx0IGluIGEgc2luZ2xlIGFub255bW91cyBmdW5jdGlvbiBleHByZXNzaW9uLgorICAgIGJv
ZHktPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOworICAgIFJFTEVB
U0VfQVNTRVJUKGJvZHkpOworICAgIGZvciAoY29uc3QgYXV0byYgY2xvc2VkVmFyaWFibGUgOiBw
cm9ncmFtLT5jbG9zZWRWYXJpYWJsZXMoKSkgeworICAgICAgICBpZiAoY2xvc2VkVmFyaWFibGUg
PT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMuaW1wbCgpKQorICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgCisgICAgICAgIGlmIChjbG9zZWRWYXJpYWJsZSA9PSBtX3ZtLnByb3BlcnR5
TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQuaW1wbCgpKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGNsb3NlZFZhcmlhYmxlLT5pc0VtcHR5VW5pcXVlKCkpOwor
ICAgIH0KKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxl
ID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmbV92bSwgc291cmNlLCBib2R5
LCB0cnVlLCBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbik7CisgICAgZnVuY3Rpb25FeGVjdXRhYmxl
LT5tX25hbWVWYWx1ZS5zZXQobV92bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBqc1N0cmluZygmbV92
bSwgbmFtZS5zdHJpbmcoKSkpOworICAgIHJldHVybiBmdW5jdGlvbkV4ZWN1dGFibGU7Cit9CisK
KyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBs
ZW5ndGgpIFwKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6
Om5hbWUjI0V4ZWN1dGFibGUoKSBcCit7XAorICAgIGlmICghbV8jI25hbWUjI0V4ZWN1dGFibGUp
XAorICAgICAgICBtXyMjbmFtZSMjRXhlY3V0YWJsZSA9IGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxl
KG1fIyNuYW1lIyNTb3VyY2UsIG1fdm0ucHJvcGVydHlOYW1lcy0+ZnVuY3Rpb25OYW1lKTtcCisg
ICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1wKK30KK0pTQ19GT1JFQUNIX0JV
SUxUSU4oREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgRVhQT1NFX0JVSUxUSU5f
U09VUkNFUworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QnVpbHRpbkV4ZWN1dGFibGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbkV4ZWN1dGFibGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDlhMTllMjYxNTA3OTRhNjY5ZWM5OGUzOTli
ZjY3ZjdmNzEwNjQxOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBCdWlsdGluRXhlY3V0
YWJsZXNfaAorI2RlZmluZSBCdWlsdGluRXhlY3V0YWJsZXNfaAorCisjaW5jbHVkZSAiSlNDQnVp
bHRpbnMuaCIKKyNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSAiV2Vhay5oIgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIElkZW50aWZpZXI7CitjbGFzcyBWTTsKKwor
Y2xhc3MgQnVpbHRpbkV4ZWN1dGFibGVzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0
cjxCdWlsdGluRXhlY3V0YWJsZXM+IGNyZWF0ZShWTSYgdm0pCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IEJ1aWx0aW5FeGVjdXRhYmxlcyh2bSkpOworICAgIH0KKyAgICAKKyNk
ZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5n
dGgpIFwKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuYW1lIyNFeGVjdXRhYmxlKCk7IFwK
K2NvbnN0IFNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIHsgcmV0dXJuIG1fIyNuYW1lIyNTb3Vy
Y2U7IH0KKyAgICAKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOKEVYUE9TRV9CVUlMVElOX0VYRUNV
VEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX1NPVVJDRVMKKyAgICAKK3ByaXZhdGU6Cisg
ICAgQnVpbHRpbkV4ZWN1dGFibGVzKFZNJik7CisgICAgVk0mIG1fdm07CisgICAgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKGNvbnN0IFNvdXJjZUNv
ZGUmLCBjb25zdCBJZGVudGlmaWVyJik7CisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0Vf
TUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aClcCisgICAgU291cmNlQ29kZSBtXyMj
bmFtZSMjU291cmNlOyBcCisgICAgV2VhazxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4gbV8j
I25hbWUjI0V4ZWN1dGFibGU7CisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTihERUNMQVJFX0JVSUxU
SU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJT
Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QXJyYXlQcm9maWxlLmNwcAppbmRleCA0YzA1NWZlYTU3MzhmMWM0NjMyNjZkNGU5YTkxNTQ4YTEy
OTM0NzA5Li5lYWVmZTU0ZjJkMTUyODRiNjRiZjY5OTcyNjU4Y2QxYzYzYjRlYTc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcApAQCAtMjcs
NiArMjcsNyBAQAogI2luY2x1ZGUgIkFycmF5UHJvZmlsZS5oIgogCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvQ29t
bWFQcmludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogI2luY2x1ZGUgPHd0
Zi9TdHJpbmdQcmludFN0cmVhbS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAppbmRleCBkNzQ4OWQzMWFiZDdjOTlmMWJj
NmZhZmFlNjU4MTExMmFiZGFjZmRiLi4xYTNiNWY0Yzc4MDdiOTQ4OGZmMzY1NzJmNzk0ZDBiYjlm
MzhkMjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVCYXNpY0Jsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVCYXNpY0Jsb2NrLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2Rl
QmFzaWNCbG9jay5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSlNGdW5j
dGlvbklubGluZXMuaCIKICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKIAogbmFtZXNw
YWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCmluZGV4IDkyNjMzNGM0NDRjOWMyZjNkZmNj
OTUwMTJjZDBhNGEwMzEwNGQyZDkuLmFkNGFlMjI5NWVhYzQ4YWE0MGFmYmVlM2ViNjkyODk2ZmNj
YWJkMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJG
dWxsQnl0ZWNvZGVMaXZlbmVzcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAj
aW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAppbmRleCA2YTYw
MDU3NmEwMDBhZGFjOGFmMjE0ZTk4ODEzNjQ2MTlmMjlhMDEwLi40YmY4MTg4NjYwMjhjNzk2YTcy
ZTU3ODMzMmU0Njc3NTU2YjIzN2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiREZH
T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkRGR1RodW5rcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rp
b25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZlci5oIgogCiAjaWYgRU5BQkxFKEpJ
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXgg
MjYzZWM3Y2FkZjRmNzljYTgxMDI0NDFlNjJiZjJhMDViNWRkYzNmMi4uNzUxNTA2NTQyMzc2ZDdl
ZGM1OTlhYTAwZjliMTI2ODVjZGEzNTJjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTQzLDExICs0MywxMyBAQAogI2luY2x1ZGUgIkpJVC5o
IgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCi0jaW5j
bHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAi
TExJbnRFbnRyeXBvaW50LmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2lu
Y2x1ZGUgIk5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1
Y3Rvci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQb2x5bW9ycGhpY1B1
dEJ5SWRMaXN0LmgiCiAjaW5jbHVkZSAiUmVkdWNlV2hpdGVzcGFjZS5oIgpAQCAtMTU2OSw3ICsx
NTcxLDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVj
dXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW4KIAogICAgIHNldENvbnN0YW50UmVnaXN0
ZXJzKHVubGlua2VkQ29kZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVycygpKTsKICAgICBpZiAodW5s
aW5rZWRDb2RlQmxvY2stPnVzZXNHbG9iYWxPYmplY3QoKSkKLSAgICAgICAgbV9jb25zdGFudFJl
Z2lzdGVyc1t1bmxpbmtlZENvZGVCbG9jay0+Z2xvYmFsT2JqZWN0UmVnaXN0ZXIoKS5vZmZzZXQo
KV0uc2V0KCptX3ZtLCBvd25lckV4ZWN1dGFibGUsIG1fZ2xvYmFsT2JqZWN0LmdldCgpKTsKKyAg
ICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1t1bmxpbmtlZENvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
UmVnaXN0ZXIoKS50b0NvbnN0YW50SW5kZXgoKV0uc2V0KCptX3ZtLCBvd25lckV4ZWN1dGFibGUs
IG1fZ2xvYmFsT2JqZWN0LmdldCgpKTsKICAgICBtX2Z1bmN0aW9uRGVjbHMucmVzaXplVG9GaXQo
dW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpKTsKICAgICBmb3IgKHNp
emVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSwg
aSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNs
KGkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDY4
YmMwMzc5ZjU3NDRjOWE4Zjc0MzFkYjY0ZjhhYjU0ZTZlMTA1M2YuLjQ5OTVjNTJjZjhiMmIxYjRk
NjI4MDQ1M2VlZDI3Yzc3NGE0OTU1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmgKQEAgLTU2LDcgKzU2LDYgQEAKICNpbmNsdWRlICJIYW5kbGVySW5mby5o
IgogI2luY2x1ZGUgIk9iamVjdEFsbG9jYXRpb25Qcm9maWxlLmgiCiAjaW5jbHVkZSAiT3B0aW9u
cy5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQdXRQcm9wZXJ0eVNsb3Qu
aCIKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
a0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAKaW5kZXggYmU1MGM5Nzc4YmYzM2UzMzlhYzgzNGJm
NTZlM2IxZTc1NTg2ZmUzZS4uYjc2NDZlZDFlZjE2NDE4OWZjZmM3YjUzNjU2ZmI2NWJlZDA2NGQy
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0pl
dHRpc29uaW5nV2F0Y2hwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgorI2luY2x1
ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAKaW5kZXggNjhkYzZiMDUzMzU1
OTBlYzRjODFjNDIzNDZiYjc0ZGJiZDhmYWM1Ni4uMTU3ODgwODkzNGRkM2NjNGNkOTdkMjcxYWU4
YWM4YmZlMzk3NDZjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
T3JpZ2luLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2lu
Y2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJK
U0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lz
ZUp1bXBUYXJnZXRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNl
SnVtcFRhcmdldHMuY3BwCmluZGV4IGVkZThhMzY0MzdkZDc4YzJlNDZhMjlkNmIzZTA3OWQzZDJk
MGZlZWQuLmM5NDAyMmY5N2ZiOGJkNzhjZGM1ZDEzOGU2ZDVmNzBmNDZkNGQzMmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMu
Y3BwCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHJl
Y2lzZUp1bXBUYXJnZXRzLmgiCiAKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgorCiBu
YW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGUgPHNpemVfdCB2ZWN0b3JTaXplPgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlz
b25pbmdXYXRjaHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9m
aWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAKaW5kZXggOTg2ZTAzZDBjYmE3
MTg1YjM5Y2VlMDIzZjRhYjZiYzliOGNjYjZlNC4uNmYyZDVlYmExY2E0NWRkZWIxZGY2NWZkMDUx
MjMzZTVmMTM4YmUwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNo
cG9pbnQuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5j
bHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVkZSAiREZHRXhpdFByb2ZpbGUuaCIKKyNpbmNsdWRl
ICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXgg
MWRmYjVhYzZhZDkwOTNmOGY4MTEwMWVmN2YyZTYxMjMxMWFjMTkzOS4uNDMzOTBkOTY1ZmM1MDM0
MDE2ZjdiZmZmMjNlNjhiYjFlMDU0NTUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC00OSw5ICs0OSw5IEBAIGNv
bnN0IENsYXNzSW5mbyBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlu
a2VkUHJvZ3JhbUNvZGVCbG9jayIsCiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRFdmFsQ29kZUJs
b2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZEV2YWxDb2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCAw
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlua2VkRXZhbENvZGVCbG9jaykgfTsKIGNvbnN0
IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKSB9OwogCi1zdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhWTSYgdm0sIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwg
UHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorc3RhdGljIFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZt
LCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIERlYnVnZ2VyTW9kZSBkZWJ1
Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5k
IGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yKQogewotICAgIFJlZlB0cjxGdW5jdGlv
bkJvZHlOb2RlPiBib2R5ID0gcGFyc2U8RnVuY3Rpb25Cb2R5Tm9kZT4oJnZtLCBzb3VyY2UsIGV4
ZWN1dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT5p
c0luU3RyaWN0Q29udGV4dCgpID8gSlNQYXJzZVN0cmljdCA6IEpTUGFyc2VOb3JtYWwsIEpTUGFy
c2VGdW5jdGlvbkNvZGUsIGVycm9yKTsKKyAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9k
eSA9IHBhcnNlPEZ1bmN0aW9uQm9keU5vZGU+KCZ2bSwgc291cmNlLCBleGVjdXRhYmxlLT5wYXJh
bWV0ZXJzKCksIGV4ZWN1dGFibGUtPm5hbWUoKSwgZXhlY3V0YWJsZS0+dG9TdHJpY3RuZXNzKCks
IEpTUGFyc2VGdW5jdGlvbkNvZGUsIGVycm9yKTsKIAogICAgIGlmICghYm9keSkgewogICAgICAg
ICBBU1NFUlQoZXJyb3IubV90eXBlICE9IFBhcnNlckVycm9yOjpFcnJvck5vbmUpOwpAQCAtNjMs
NyArNjMsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5j
dGlvbkNvZGVCbG9jayhWTSYgdm0sIFVubGlua2VkRnVuYwogICAgIGJvZHktPmZpbmlzaFBhcnNp
bmcoZXhlY3V0YWJsZS0+cGFyYW1ldGVycygpLCBleGVjdXRhYmxlLT5uYW1lKCksIGV4ZWN1dGFi
bGUtPmZ1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZSgpKTsKICAgICBleGVjdXRhYmxlLT5yZWNv
cmRQYXJzZShib2R5LT5mZWF0dXJlcygpLCBib2R5LT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsK
ICAgICAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUoJnZtLCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFibGVJbmZv
KGJvZHktPm5lZWRzQWN0aXZhdGlvbigpLCBib2R5LT51c2VzRXZhbCgpLCBib2R5LT5pc1N0cmlj
dE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KSk7CisgICAgVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKCZ2
bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5mbyhib2R5LT5uZWVkc0FjdGl2YXRpb24oKSwg
Ym9keS0+dXNlc0V2YWwoKSwgYm9keS0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNv
bnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uKSk7CiAgICAg
T3duUHRyPEJ5dGVjb2RlR2VuZXJhdG9yPiBnZW5lcmF0b3IoYWRvcHRQdHIobmV3IEJ5dGVjb2Rl
R2VuZXJhdG9yKHZtLCBib2R5LmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJN
b2RlKSkpOwogICAgIGVycm9yID0gZ2VuZXJhdG9yLT5nZW5lcmF0ZSgpOwogICAgIGJvZHktPmRl
c3Ryb3lEYXRhKCk7CkBAIC04MiwxMyArODIsMTQgQEAgdW5zaWduZWQgVW5saW5rZWRDb2RlQmxv
Y2s6OmFkZE9yRmluZENvbnN0YW50KEpTVmFsdWUgdikKICAgICByZXR1cm4gYWRkQ29uc3RhbnQo
dik7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSkKK1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSog
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0
aW9uQm9keU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSwgVW5saW5rZWRGdW5jdGlv
bktpbmQga2luZCkKICAgICA6IEJhc2UoKnZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX251bUNhcHR1
cmVkVmFyaWFibGVzKG5vZGUtPmNhcHR1cmVkVmFyaWFibGVDb3VudCgpKQogICAgICwgbV9mb3Jj
ZVVzZXNBcmd1bWVudHMobm9kZS0+dXNlc0FyZ3VtZW50cygpKQogICAgICwgbV9pc0luU3RyaWN0
Q29udGV4dChub2RlLT5pc1N0cmljdE1vZGUoKSkKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJs
ZXMobm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkKICAgICAsIG1faXNGcm9tR2xvYmFsQ29k
ZShpc0Zyb21HbG9iYWxDb2RlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihraW5kID09IFVu
bGlua2VkQnVpbHRpbkZ1bmN0aW9uKQogICAgICwgbV9uYW1lKG5vZGUtPmlkZW50KCkpCiAgICAg
LCBtX2luZmVycmVkTmFtZShub2RlLT5pbmZlcnJlZE5hbWUoKSkKICAgICAsIG1fcGFyYW1ldGVy
cyhub2RlLT5wYXJhbWV0ZXJzKCkpCkBAIC0xNjYsNyArMTY3LDcgQEAgVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jayogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNvZGVCbG9ja0ZvcihWTSYg
dm0sIGNvbnMKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayh2bSwgdGhpcywgc291
cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJv
cik7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVGdW5j
dGlvbkNvZGVCbG9jayh2bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVn
Z2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWls
dGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBlcnJvcik7CiAgICAgCiAgICAg
aWYgKGVycm9yLm1fdHlwZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKQogICAgICAgICByZXR1
cm4gMDsKQEAgLTIxMCw2ICsyMTEsNyBAQCBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2Rl
QmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZVR5cGUgY29kZQogICAgICwg
bV9pc1N0cmljdE1vZGUoaW5mby5tX2lzU3RyaWN0TW9kZSkKICAgICAsIG1faXNDb25zdHJ1Y3Rv
cihpbmZvLm1faXNDb25zdHJ1Y3RvcikKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMoZmFs
c2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8ubV9pc0J1aWx0aW5GdW5jdGlvbikK
ICAgICAsIG1fZmlyc3RMaW5lKDApCiAgICAgLCBtX2xpbmVDb3VudCgwKQogICAgICwgbV9lbmRD
b2x1bW4oVUlOVF9NQVgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oCmluZGV4IGI5ZGFlMmQ1YzY5Yzc5Y2VhYWE4MDIzZDJhM2ExZjI2
ZDQ2MDk0M2IuLmFiZjZjZjM1YjkzMDZhNGY3YTMwMWFiMGRmNzY2NmVjNjEyZTM3OWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5o
CkBAIC02NiwyNiArNjYsMzUgQEAgdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZE9iamVjdEFsbG9j
YXRpb25Qcm9maWxlOwogdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZExMSW50Q2FsbExpbmtJbmZv
OwogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVl
ZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0Nv
bnN0cnVjdG9yKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29s
IHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29sIGlz
QnVpbHRpbkZ1bmN0aW9uKQogICAgICAgICA6IG1fbmVlZHNBY3RpdmF0aW9uKG5lZWRzQWN0aXZh
dGlvbikKICAgICAgICAgLCBtX3VzZXNFdmFsKHVzZXNFdmFsKQogICAgICAgICAsIG1faXNTdHJp
Y3RNb2RlKGlzU3RyaWN0TW9kZSkKICAgICAgICAgLCBtX2lzQ29uc3RydWN0b3IoaXNDb25zdHJ1
Y3RvcikKKyAgICAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGlzQnVpbHRpbkZ1bmN0aW9uKQog
ICAgIHsKICAgICB9Ci0gICAgYm9vbCBtX25lZWRzQWN0aXZhdGlvbjsKLSAgICBib29sIG1fdXNl
c0V2YWw7Ci0gICAgYm9vbCBtX2lzU3RyaWN0TW9kZTsKLSAgICBib29sIG1faXNDb25zdHJ1Y3Rv
cjsKKyAgICBib29sIG1fbmVlZHNBY3RpdmF0aW9uIDogMTsKKyAgICBib29sIG1fdXNlc0V2YWwg
OiAxOworICAgIGJvb2wgbV9pc1N0cmljdE1vZGUgOiAxOworICAgIGJvb2wgbV9pc0NvbnN0cnVj
dG9yIDogMTsKKyAgICBib29sIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOworfTsKKworZW51bSBV
bmxpbmtlZEZ1bmN0aW9uS2luZCB7CisgICAgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwKKyAgICBV
bmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwKIH07CiAKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlIDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6CisgICAgZnJpZW5kIGNsYXNzIEJ1aWx0
aW5FeGVjdXRhYmxlczsKICAgICBmcmllbmQgY2xhc3MgQ29kZUNhY2hlOworICAgIGZyaWVuZCBj
bGFzcyBWTTsKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0YXRpYyBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlLCBib29sIGlzRnJvbUdsb2JhbENvZGUgPSBmYWxzZSkK
KyAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSogbm9kZSwgYm9vbCBpc0Zy
b21HbG9iYWxDb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCkK
ICAgICB7Ci0gICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+
aGVhcCkpIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgaXNGcm9tR2xvYmFsQ29k
ZSk7CisgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVh
cCkpIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgaXNGcm9tR2xvYmFsQ29kZSwg
dW5saW5rZWRGdW5jdGlvbktpbmQpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24o
KnZtKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KQEAgLTk5LDYgKzEwOCwxNCBA
QCBwdWJsaWM6CiAgICAgfQogICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0OwogICAg
IGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250
ZXh0OyB9CisgICAgSlNQYXJzZXJTdHJpY3RuZXNzIHRvU3RyaWN0bmVzcygpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAobV9pc0J1aWx0aW5GdW5jdGlvbikKKyAgICAgICAgICAgIHJldHVybiBK
U1BhcnNlQnVpbHRpbjsKKyAgICAgICAgaWYgKG1faXNJblN0cmljdENvbnRleHQpCisgICAgICAg
ICAgICByZXR1cm4gSlNQYXJzZVN0cmljdDsKKyAgICAgICAgcmV0dXJuIEpTUGFyc2VOb3JtYWw7
CisgICAgfQogICAgIEZ1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZSBmdW5jdGlvbk5hbWVJc0lu
U2NvcGVUb2dnbGUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2ds
ZTsgfQogCiAgICAgdW5zaWduZWQgZmlyc3RMaW5lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9m
aXJzdExpbmVPZmZzZXQ7IH0KQEAgLTE0Miw4ICsxNTksMTAgQEAgcHVibGljOgogICAgIHN0YXRp
YyBjb25zdCBib29sIGhhc0ltbW9ydGFsU3RydWN0dXJlID0gdHJ1ZTsKICAgICBzdGF0aWMgdm9p
ZCBkZXN0cm95KEpTQ2VsbCopOwogCisgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KKwogcHJpdmF0ZToKLSAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBG
dW5jdGlvbkJvZHlOb2RlKiwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlKTsKKyAgICBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5j
dGlvbkJvZHlOb2RlKiwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2lu
ZCk7CiAgICAgV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fY29kZUJs
b2NrRm9yQ2FsbDsKICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4g
bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3Q7CiAKQEAgLTE1Miw2ICsxNzEsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9pc0luU3RyaWN0Q29udGV4dCA6IDE7CiAgICAgYm9vbCBtX2hhc0NhcHR1cmVk
VmFyaWFibGVzIDogMTsKICAgICBib29sIG1faXNGcm9tR2xvYmFsQ29kZSA6IDE7CisgICAgYm9v
bCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKIAogICAgIElkZW50aWZpZXIgbV9uYW1lOwogICAg
IElkZW50aWZpZXIgbV9pbmZlcnJlZE5hbWU7CkBAIC0zMTksNiArMzM5LDggQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0SXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKGJvb2wgaXNOdW1lcmljQ29tcGFy
ZUZ1bmN0aW9uKSB7IG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uID0gaXNOdW1lcmljQ29tcGFy
ZUZ1bmN0aW9uOyB9CiAgICAgYm9vbCBpc051bWVyaWNDb21wYXJlRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQogCisgICAgYm9vbCBpc0J1aWx0
aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KKyAgICAK
ICAgICB2b2lkIHNocmlua1RvRml0KCkKICAgICB7CiAgICAgICAgIG1fanVtcFRhcmdldHMuc2hy
aW5rVG9GaXQoKTsKQEAgLTUwMCw2ICs1MjIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1N0
cmljdE1vZGUgOiAxOwogICAgIGJvb2wgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICBib29sIG1f
aGFzQ2FwdHVyZWRWYXJpYWJsZXMgOiAxOworICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlvbiA6
IDE7CiAgICAgdW5zaWduZWQgbV9maXJzdExpbmU7CiAgICAgdW5zaWduZWQgbV9saW5lQ291bnQ7
CiAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDY4MTBhYjgw
MDJjZTZiYjhkNzhlN2ZmMjIyN2Y0YzZlYTdiNzU4YzIuLmVjNTIxYjUzMDQ2MzkyM2U3NGMwMTBm
YTIxOGU1OWVkMmE5YTNjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0xNzUsNiArMTc1LDcgQEAg
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUq
IHByb2dyYW1Ob2RlLCBVbmxpbmtlZFAKICNlbmRpZgogICAgICwgbV91c2VzRXhjZXB0aW9ucyhm
YWxzZSkKICAgICAsIG1fZXhwcmVzc2lvblRvb0RlZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRp
bkZ1bmN0aW9uKGZhbHNlKQogewogICAgIGlmIChtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKQogICAg
ICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNGdWxsU2NvcGVDaGFpbih0cnVlKTsKQEAgLTIyMiw3
ICsyMjMsMTMgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwg
RnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb25Cb2R5LCBVbmwKICNlbmRpZgogICAgICwgbV91c2Vz
RXhjZXB0aW9ucyhmYWxzZSkKICAgICAsIG1fZXhwcmVzc2lvblRvb0RlZXAoZmFsc2UpCisgICAg
LCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGNvZGVCbG9jay0+aXNCdWlsdGluRnVuY3Rpb24oKSkKIHsK
KyAgICBpZiAobV9pc0J1aWx0aW5GdW5jdGlvbikgeworICAgICAgICBtX3Nob3VsZEVtaXRQcm9m
aWxlSG9va3MgPSBmYWxzZTsKKyAgICAgICAgbV9zaG91bGRFbWl0RGVidWdIb29rcyA9IGZhbHNl
OworICAgIH0KKwogICAgIGlmIChtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKQogICAgICAgICBtX2Nv
ZGVCbG9jay0+c2V0TmVlZHNGdWxsU2NvcGVDaGFpbih0cnVlKTsKIApAQCAtNDM4LDYgKzQ0NSw3
IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2Rl
KiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kCiAjZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlv
bnMoZmFsc2UpCiAgICAgLCBtX2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1
aWx0aW5GdW5jdGlvbihmYWxzZSkKIHsKICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNGdWxsU2Nv
cGVDaGFpbih0cnVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDRlOWYyMTNjOWJmYTZjZjE5NGIxYTE0
ZmU5MTllODMzMzdhZTM1ZDkuLjE1ODQyNzRiNzhlYTZjMGJkMGVmYjBiOTgyNWM4MThiZTBkYmMw
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ2MSw3ICs0NjEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgYm9vbCBzaG91bGRFbWl0RGVidWdIb29rcygpIHsgcmV0dXJuIG1fc2hvdWxkRW1pdERl
YnVnSG9va3M7IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOyB9Ci0KKyAgICAgICAgCisgICAg
ICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1
bmN0aW9uOyB9CisgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBM
YWJlbDsKICAgICAgICAgCkBAIC01NDMsNyArNTQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIAogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbWFrZUZ1bmN0aW9uKEZ1
bmN0aW9uQm9keU5vZGUqIGJvZHkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2Uo
KSwgYm9keSk7CisgICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIGJvZHksIGZhbHNlLCBpc0J1aWx0
aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1
bmN0aW9uKTsKICAgICAgICAgfQogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbml0TGF6eVJl
Z2lzdGVyKFJlZ2lzdGVySUQqKTsKQEAgLTY3Nyw2ICs2NzksNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICBib29sIG1fdXNlc0V4Y2VwdGlvbnM7CiAgICAgICAgIGJvb2wgbV9leHByZXNz
aW9uVG9vRGVlcDsKKyAgICAgICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9uOwogICAgIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcAppbmRleCAxZmZkNGYzMTE4ODJkMGVlNWM1NTE0ZjViOGIyNTkzOWQ5NzVlMzc5Li42
MmVjYTM2YTEwZDc3MDhhOTI4ZDQzYWMwM2YyZmM4NjE1Y2VjYTc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0yNiwx
MCArMjYsMTAgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCi0j
aW5jbHVkZSAiTm9kZUNvbnN0cnVjdG9ycy5oIgogCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0
b3IuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVy
cy5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAi
SlNGdW5jdGlvbi5oIgpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIK
ICNpbmNsdWRlICJMYWJlbFNjb3BlLmgiCiAjaW5jbHVkZSAiTGV4ZXIuaCIKKyNpbmNsdWRlICJO
b2RlQ29uc3RydWN0b3JzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBh
cnNlci5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCkBAIC01MzUsMzYgKzUzNiwz
OSBAQCBSZWdpc3RlcklEKiBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgUmVmUHRyPExhYmVsPiBlbmQgPSBnZW5l
cmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRv
ci5lbWl0Tm9kZShtX2Jhc2UpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3Vi
ZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Npb25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5k
KCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0
QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIG1faWRlbnQp
OworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJ
ZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIGdlbmVyYXRvci5w
cm9wZXJ0eU5hbWVzKCkuY2FsbCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblZhbHVl
ID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBmdW5jdGlvbi5nZXQoKSk7Ci0gICAg
Z2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkNhbGwoZnVuY3Rpb24uZ2V0KCksIHJlYWxD
YWxsLmdldCgpKTsKKyAgICBib29sIGVtaXRDYWxsQ2hlY2sgPSAhZ2VuZXJhdG9yLmlzQnVpbHRp
bkZ1bmN0aW9uKCk7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2spCisgICAgICAgIGdlbmVyYXRvci5l
bWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKGZ1bmN0aW9uLmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7
CisKICAgICB7CiAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xp
c3ROb2RlLT5tX2V4cHIpIHsKICAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIG9sZExpc3Qg
PSBtX2FyZ3MtPm1fbGlzdE5vZGU7CiAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBt
X2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKLQorICAgICAgICAgICAgCiAgICAgICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVy
YXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICBDYWxs
QXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG9sZExpc3Qt
Pm1fZXhwcik7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0
KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRz
LCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7Ci0KICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9k
ZSA9IG9sZExpc3Q7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVz
dGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNh
bGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwogICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rp
b24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChl
bmQuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVh
bENhbGwuZ2V0KCkpOwotICAgIHsKLSAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRz
KGdlbmVyYXRvciwgbV9hcmdzKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1
bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1p
dENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rp
b24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Cisg
ICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5n
ZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOworICAg
ICAgICB7CisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9y
LCBtX2FyZ3MpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMu
dGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRD
YWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9u
LCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAg
ICAgICB9CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICB9Ci0g
ICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0KCkpOwogICAgIHJldHVybiByZXR1cm5WYWx1
ZS5nZXQoKTsKIH0KIApAQCAtNTg1LDY1ICs1ODksNjcgQEAgUmVnaXN0ZXJJRCogQXBwbHlGdW5j
dGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwKICAgICBSZWZQdHI8TGFiZWw+IGVuZCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYmFzZSk7CiAgICAg
Z2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhw
cmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGlu
YXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IGZ1bmN0aW9uOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRv
ci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuY3Rpb24uZ2V0KCkpOwotICAgIGdlbmVyYXRvci5l
bWl0SnVtcElmTm90RnVuY3Rpb25BcHBseShmdW5jdGlvbi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkp
OwotICAgIHsKLSAgICAgICAgaWYgKG1heUJlQ2FsbCkgewotICAgICAgICAgICAgaWYgKG1fYXJn
cy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcikgewotICAgICAgICAg
ICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIG9sZExpc3QgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7Ci0g
ICAgICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KSB7Ci0gICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByLT5p
c1NpbXBsZUFycmF5KCkpOwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fYXJncy0+bV9s
aXN0Tm9kZS0+bV9uZXh0LT5tX25leHQpOwotICAgICAgICAgICAgICAgICAgICBtX2FyZ3MtPm1f
bGlzdE5vZGUgPSBzdGF0aWNfY2FzdDxBcnJheU5vZGUqPihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1f
bmV4dC0+bV9leHByKS0+dG9Bcmd1bWVudExpc3QoZ2VuZXJhdG9yLnZtKCksIDAsIDApOwotICAg
ICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJh
dG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7
Ci0gICAgICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0
b3IsIG1fYXJncyk7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxs
QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwotICAgICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlv
bi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9u
ZXh0OwotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9u
ID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFz
ZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50
cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwotICAg
ICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJl
YWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZv
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBvbGRMaXN0OworICAgIGJvb2wgZW1pdENh
bGxDaGVjayA9ICFnZW5lcmF0b3IuaXNCdWlsdGluRnVuY3Rpb24oKTsKKyAgICBpZiAoZW1pdENh
bGxDaGVjaykgeworICAgICAgICBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5l
cmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0
eU5hbWVzKCkuYXBwbHkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9u
QXBwbHkoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKKyAgICB9CisgICAgaWYgKG1h
eUJlQ2FsbCkgeworICAgICAgICBpZiAobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9s
aXN0Tm9kZS0+bV9leHByKSB7CisgICAgICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBvbGRMaXN0
ID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9k
ZS0+bV9uZXh0KSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZS0+
bV9uZXh0LT5tX2V4cHItPmlzU2ltcGxlQXJyYXkoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJU
KCFtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9uZXh0KTsKKyAgICAgICAgICAgICAgICBt
X2FyZ3MtPm1fbGlzdE5vZGUgPSBzdGF0aWNfY2FzdDxBcnJheU5vZGUqPihtX2FyZ3MtPm1fbGlz
dE5vZGUtPm1fbmV4dC0+bV9leHByKS0+dG9Bcmd1bWVudExpc3QoZ2VuZXJhdG9yLnZtKCksIDAs
IDApOworICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBn
ZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJh
dG9yLCBtX2FyZ3MpOworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJn
dW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOworICAgICAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgp
LCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQo
KSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1f
YXJncy0+bV9saXN0Tm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwogICAgICAgICAg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1v
dmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKICAgICAgICAg
ICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwot
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdp
c3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5v
ZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5j
dGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9h
cmdzLT5tX2xpc3ROb2RlID0gb2xkTGlzdDsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQp
OwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb2ZpbGVIb29rUmVnaXN0ZXI7Ci0g
ICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLnNob3VsZEVtaXRQcm9maWxlSG9va3MoKSkKLSAgICAg
ICAgICAgICAgICBwcm9maWxlSG9va1JlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
OwogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRv
ci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwot
ICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNSZWdpc3RlciA9IGdlbmVyYXRvci5l
bWl0Tm9kZShtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcik7Ci0gICAgICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gYXJnc1JlZ2lzdGVyOwotICAgICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSog
YXJncyA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwotICAgICAgICAgICAgaWYgKGFyZ3Mt
Pm1fZXhwci0+aXNSZXNvbHZlTm9kZSgpICYmIGdlbmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1l
bnRzKHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oYXJncy0+bV9leHByKS0+aWRlbnRpZmllcigp
KSkKLSAgICAgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IudW5jaGVja2VkUmVn
aXN0ZXJGb3JBcmd1bWVudHMoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBh
cmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKLQotICAgICAg
ICAgICAgLy8gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5IGlnbm9yZXMgZXh0cmEgYXJndW1lbnRz
LCBidXQgd2Ugc3RpbGwKLSAgICAgICAgICAgIC8vIG5lZWQgdG8gZXZhbHVhdGUgdGhlbSBmb3Ig
c2lkZSBlZmZlY3RzLgotICAgICAgICAgICAgd2hpbGUgKChhcmdzID0gYXJncy0+bV9uZXh0KSkK
LSAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKLQotICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsVmFyYXJncyhyZXR1cm5WYWx1ZS5nZXQoKSwgcmVh
bEZ1bmN0aW9uLmdldCgpLCB0aGlzUmVnaXN0ZXIuZ2V0KCksIGFyZ3NSZWdpc3Rlci5nZXQoKSwg
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm9maWxlSG9va1JlZ2lzdGVyLmdldCgpLCBkaXZv
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICAgICAgQ2FsbEFyZ3VtZW50
cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsK
KyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1
bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCks
IGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIH0KLSAgICAgICAgZ2VuZXJhdG9y
LmVtaXRKdW1wKGVuZC5nZXQoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1fYXJn
cy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCk7CisgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBwcm9maWxlSG9va1JlZ2lzdGVyOworICAgICAgICBpZiAoZ2VuZXJh
dG9yLnNob3VsZEVtaXRQcm9maWxlSG9va3MoKSkKKyAgICAgICAgICAgIHByb2ZpbGVIb29rUmVn
aXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0
aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRo
aXNSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhw
cik7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhcmdzUmVnaXN0ZXI7CisgICAgICAgIEFy
Z3VtZW50TGlzdE5vZGUqIGFyZ3MgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKKyAgICAg
ICAgaWYgKGFyZ3MtPm1fZXhwci0+aXNSZXNvbHZlTm9kZSgpICYmIGdlbmVyYXRvci53aWxsUmVz
b2x2ZVRvQXJndW1lbnRzKHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oYXJncy0+bV9leHByKS0+
aWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIGFyZ3NSZWdpc3RlciA9IGdlbmVyYXRvci51bmNo
ZWNrZWRSZWdpc3RlckZvckFyZ3VtZW50cygpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBh
cmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKKworICAgICAg
ICAvLyBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkgaWdub3JlcyBleHRyYSBhcmd1bWVudHMsIGJ1
dCB3ZSBzdGlsbAorICAgICAgICAvLyBuZWVkIHRvIGV2YWx1YXRlIHRoZW0gZm9yIHNpZGUgZWZm
ZWN0cy4KKyAgICAgICAgd2hpbGUgKChhcmdzID0gYXJncy0+bV9uZXh0KSkKKyAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0Tm9kZShhcmdzLT5tX2V4cHIpOworCisgICAgICAgIGdlbmVyYXRvci5l
bWl0Q2FsbFZhcmFyZ3MocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgdGhp
c1JlZ2lzdGVyLmdldCgpLCBhcmdzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKSwgcHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChyZWFsQ2FsbC5nZXQo
KSk7Ci0gICAgeworICAgIGlmIChlbWl0Q2FsbENoZWNrKSB7CisgICAgICAgIGdlbmVyYXRvci5l
bWl0SnVtcChlbmQuZ2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHJlYWxDYWxs
LmdldCgpKTsKICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwg
bV9hcmdzKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1Jl
Z2lzdGVyKCksIGJhc2UuZ2V0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJu
VmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1
bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGdlbmVy
YXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJl
bChlbmQuZ2V0KCkpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZS5nZXQoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlCmluZGV4IDM5Nzk3NmIwNmM3YTliNTgzNjMz
MjkwMGE2ZWJiOTNlYzY4Yjc0ODYuLmNhZDY1YmM0Y2M4ODhlMzE0Zjg4ZDY2NWRkNGE2ZTY0NWEw
OWEzNTUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJs
ZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUKQEAgLTI4OSw3
ICsyODksMTcgQEAgc3ViIG91dHB1dCgpIHsKICAgICAgICAgICAgICRpbnRyaW5zaWMgPSAiUmVn
RXhwVGVzdEludHJpbnNpYyIgaWYgKCRrZXkgZXEgInRlc3QiKTsKICAgICAgICAgfQogCisgICAg
ICAgIGlmICgkdmFsdWVzWyRpXXsidHlwZSJ9IGVxICJGdW5jdGlvbiIpICB7CisgICAgICAgICAg
ICBteSAkdGFibGVIZWFkID0gJG5hbWU7CisgICAgICAgICAgICAkdGFibGVIZWFkID1+IHMvVGFi
bGUkLy87CisgICAgICAgICAgICBwcmludCAiICNpZiBKU0NfQlVJTFRJTl9FWElTVFMoIiAuIHVj
KCR0YWJsZUhlYWQgLiAka2V5KSAuIilcbiI7CisgICAgICAgICAgICBwcmludCAiICAgeyBcIiRr
ZXlcIiwgKCgkYXR0cnNbJGldKSAmIH5GdW5jdGlvbikgfCBCdWlsdGluLCAkaW50cmluc2ljLCAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8QnVpbHRpbkdlbmVyYXRvcj4oIiAuICR0YWJsZUhlYWQgLiB1
Y2ZpcnN0KCRrZXkpIC4gIkNvZGVHZW5lcmF0b3IpLCAoaW50cHRyX3QpJHNlY29uZFZhbHVlIH0s
XG4iOworICAgICAgICAgICAgcHJpbnQgIiAjZWxzZVxuIgorICAgICAgICB9CiAgICAgICAgIHBy
aW50ICIgICB7IFwiJGtleVwiLCAkYXR0cnNbJGldLCAkaW50cmluc2ljLCAoaW50cHRyX3QpIiAu
ICRmaXJzdENhc3RTdHIgLiAiKCRmaXJzdFZhbHVlKSwgKGludHB0cl90KSIgLiAkc2Vjb25kQ2Fz
dFN0ciAuICIoJHNlY29uZFZhbHVlKSB9LFxuIjsKKyAgICAgICAgaWYgKCR2YWx1ZXNbJGldeyJ0
eXBlIn0gZXEgIkZ1bmN0aW9uIikgIHsKKyAgICAgICAgICAgIHByaW50ICIgI2VuZGlmXG4iCisg
ICAgICAgIH0KICAgICAgICAgJGkrKzsKICAgICB9CiAgICAgcHJpbnQgIiAgIHsgMCwgMCwgTm9J
bnRyaW5zaWMsIDAsIDAgfVxuIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXIuY3BwCmluZGV4IGFmYTc1NDZjODA2NWI4ZjNiMTcwZGY4MWEzMzcyYThmMDY5YWRiNDEu
LjNhMWFiM2VkNzY3YzFiY2QzZDg0MzUwZTFlMzA5NmFjZjVhYTc4M2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcApAQCAtMjksNyArMjksNyBAQAogI2lu
Y2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAj
aW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKLSNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisj
aW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5o
IgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXZhaWxhYmlsaXR5LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXZhaWxhYmlsaXR5LmNwcAppbmRleCA2NjljMmI0Mzky
NDZiMDdkZGI1N2QxMTc4ODMwMjlhODhkM2E0YWZmLi5kMGJjZWQxY2ZiZDIzNzQ2NzkzN2VlMWI2
N2Y5MzJhNjYzNzRmOGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0F2YWlsYWJpbGl0eS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdmFp
bGFiaWxpdHkuY3BwCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiREZHQXZhaWxhYmlsaXR5LmgiCiAKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5o
IgorCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKICNpbmNsdWRlICJERkdOb2RlLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDU4ZjM2
OTE2NTBkZmM2NGQ0Y2U3NTZiMDI1NmJjOWQxNWZlOTY2NmMuLmJhNDI5N2RiNDEzNDU5MmY2OGM3
YzIwYzFmZmMzZGU0YTE5ZWY4ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiREZHSklU
Q29kZS5oIgogI2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRp
b24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIk9wZXJhdGlv
bnMuaCIKICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKICNpbmNsdWRlICJQdXRCeUlk
U3RhdHVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IDEzNWNh
ODVmYzkxNzcwMWUzNTUyNDVjOWIwMTAwYzIwZmVlYjlhNzEuLjYwYzRhZTQyZmUyZjRmMTI0ZTI0
Yjc4NThhMmRhYjM0N2NiYzk4ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
Y3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxlRHVtcC5o
IgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgorI2luY2x1ZGUg
IkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0
aENhbGwuaCIKICNpbmNsdWRlICJPcGVyYW5kc0lubGluZXMuaCIKICNpbmNsdWRlICJPcGVyYXRp
b25zLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludmFsaWRh
dGlvblBvaW50SW5qZWN0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJbnZhbGlkYXRpb25Qb2ludEluamVjdGlvblBoYXNlLmNwcAppbmRleCBkNzFhN2NiZGFiNzc2
MjAzMzNhZDE3ZWFiZDdiZDA3Y2U5ZmJlNTI4Li5iNTY1OGNlMjZlNDJkYzExN2VhMmY2N2UzMWYx
YjE1NjBhNTJjNWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0lu
dmFsaWRhdGlvblBvaW50SW5qZWN0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSW52YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFzZS5jcHAKQEAgLTMyLDYg
KzMyLDcgQEAKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkRGR0luc2VydGlvblNl
dC5oIgogI2luY2x1ZGUgIkRGR1BoYXNlLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMu
aCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4
IDJmZjBjMzQxNDZlMmMwYmEyZmY3NmM0ZDNmN2M0NmJhM2UyNTUxNDcuLjkwNDRjZGM2YjhjM2Fk
NGExZTk0MTg4ZGQxZDBlMjAwZTY5ZmI5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIkpTQWN0aXZh
dGlvbi5oIgogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKKyNpbmNs
dWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJOYW1lSW5zdGFuY2UuaCIKICNpbmNs
dWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjRiNmQ0
OTlmMDI1YzA1M2IyZjk3YjZmMTAwZTg1NTA0NmYzZTUxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5zCkBAIC0wLDAgKzEsMzA0IEBA
CisjIS91c3IvYmluL3B5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisjIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorIyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorIyBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisjIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGZpbGVjbXAKK2ltcG9y
dCBmbm1hdGNoCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHNodXRpbAoraW1wb3J0IHN5
cworaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQganNvbgorCitjb3B5cmlnaHRUZXh0ID0gIiIiICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi9cbgorIiIiCisKK2dlbmVyYXRv
clN0cmluZyA9ICIvKiBHZW5lcmF0ZWQgYnkgJXMgZG8gbm90IGhhbmQgZWRpdC4gKi9cbiIgJSBv
cy5wYXRoLmJhc2VuYW1lKF9fZmlsZV9fKQorCitmdW5jdGlvbkhlYWRSZWdFeHAgPSByZS5jb21w
aWxlKHIiZnVuY3Rpb25ccytcdytccypcKC4qP1wpIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK2Z1
bmN0aW9uTmFtZVJlZ0V4cCA9IHJlLmNvbXBpbGUociJmdW5jdGlvblxzKyhcdyspXHMqXCgiLCBy
ZS5NVUxUSUxJTkUgfCByZS5TKQorZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIgPSByZS5jb21waWxl
KHIiXmZ1bmN0aW9uXHMrKD86XHcrKVxzKlwoKCg/OlxzKlx3Kyk/XHMqKD86XHMqLFxzKlx3Kykq
KT9cKSIsIHJlLk1VTFRJTElORSB8IHJlLlMpCisKK211bHRpbGluZUNvbW1lbnRSZWdFeHAgPSBy
ZS5jb21waWxlKHIiXC9cKi4qP1wqXC8iLCByZS5NVUxUSUxJTkUgfCByZS5TKQorc2luZ2xlTGlu
ZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cLy4qP1xuIiwgcmUuTVVMVElMSU5FIHwg
cmUuUykKKworZGVmIGdldENvcHlyaWdodChzb3VyY2UpOgorICAgIGNvcHlyaWdodEJsb2NrID0g
bXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5maW5kYWxsKHNvdXJjZSlbMF0KKyAgICBjb3B5cmlnaHRC
bG9jayA9IGNvcHlyaWdodEJsb2NrWzpjb3B5cmlnaHRCbG9jay5pbmRleCgiUmVkaXN0cmlidXRp
b24iKV0KKyAgICBjb3B5UmlnaHRMaW5lcyA9IFtdCisKKyAgICBmb3IgbGluZSBpbiBjb3B5cmln
aHRCbG9jay5zcGxpdCgiXG4iKToKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiLyoiLCAi
IikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKi8iLCAiIikKKyAgICAgICAgbGluZSA9
IGxpbmUucmVwbGFjZSgiKiIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCJDb3B5
cmlnaHQiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiY29weXJpZ2h0IiwgIiIp
CisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIihDKSIsICIiKQorICAgICAgICBsaW5lID0g
bGluZS5yZXBsYWNlKCIoYykiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAg
ICAgICBpZiBsZW4obGluZSkgPT0gMDoKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAg
Y29weVJpZ2h0TGluZXMuYXBwZW5kKGxpbmUpCisgICAgCisgICAgcmV0dXJuIGxpc3Qoc2V0KGNv
cHlSaWdodExpbmVzKSkKKworCisKK2RlZiBnZXRGdW5jdGlvbnMoc291cmNlKToKKworICAgIHNv
dXJjZSA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAuc3ViKCIvKiovIiwgc2luZ2xlTGluZUNvbW1l
bnRSZWdFeHAuc3ViKCIvL1xuIiwgc291cmNlKSkKKworICAgIG1hdGNoZXMgPSBbIGYgZm9yIGYg
aW4gZnVuY3Rpb25IZWFkUmVnRXhwLmZpbmRpdGVyKHNvdXJjZSldCisgICAgZnVuY3Rpb25Cb3Vu
ZHMgPSBbXQorICAgIHN0YXJ0ID0gMAorICAgIGVuZCA9IDAKKyAgICBmb3IgbWF0Y2ggaW4gbWF0
Y2hlczoKKyAgICAgICAgc3RhcnQgPSBtYXRjaC5zdGFydCgpCisgICAgICAgIGlmIHN0YXJ0IDwg
ZW5kOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgZW5kID0gbWF0Y2guZW5kKCkKKyAg
ICAgICAgd2hpbGUgc291cmNlW2VuZF0gIT0gJ3snOgorICAgICAgICAgICAgZW5kID0gZW5kICsg
MQorICAgICAgICBkZXB0aCA9IDEKKyAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICB3aGls
ZSBkZXB0aCA+IDA6CisgICAgICAgICAgICBpZiBzb3VyY2VbZW5kXSA9PSAneyc6CisgICAgICAg
ICAgICAgICAgZGVwdGggPSBkZXB0aCArIDEKKyAgICAgICAgICAgIGVsaWYgc291cmNlW2VuZF0g
PT0gJ30nOgorICAgICAgICAgICAgICAgIGRlcHRoID0gZGVwdGggLSAxCisgICAgICAgICAgICBl
bmQgPSBlbmQgKyAxCisgICAgICAgIGZ1bmN0aW9uQm91bmRzLmFwcGVuZCgoc3RhcnQsIGVuZCkp
CisKKyAgICBmdW5jdGlvbnMgPSBbc291cmNlW3N0YXJ0OmVuZF0uc3RyaXAoKSBmb3IgKHN0YXJ0
LCBlbmQpIGluIGZ1bmN0aW9uQm91bmRzXQorICAgIHJlc3VsdCA9IFtdCisgICAgZm9yIGZ1bmN0
aW9uIGluIGZ1bmN0aW9uczoKKyAgICAgICAgZnVuY3Rpb24gPSBtdWx0aWxpbmVDb21tZW50UmVn
RXhwLnN1YigiIiwgZnVuY3Rpb24pCisgICAgICAgIGZ1bmN0aW9uTmFtZSA9IGZ1bmN0aW9uTmFt
ZVJlZ0V4cC5maW5kYWxsKGZ1bmN0aW9uKVswXQorICAgICAgICBmdW5jdGlvblBhcmFtZXRlcnMg
PSBmdW5jdGlvblBhcmFtZXRlckZpbmRlci5maW5kYWxsKGZ1bmN0aW9uKVswXS5zcGxpdCgnLCcp
CisgICAgICAgIGlmIGxlbihmdW5jdGlvblBhcmFtZXRlcnNbMF0pID09IDA6CisgICAgICAgICAg
ICBmdW5jdGlvblBhcmFtZXRlcnMgPSBbXQorICAgICAgICAgICAgCisgICAgICAgIHJlc3VsdC5h
cHBlbmQoKGZ1bmN0aW9uTmFtZSwgZnVuY3Rpb24sIGZ1bmN0aW9uUGFyYW1ldGVycykpCisgICAg
cmV0dXJuIHJlc3VsdAorICAgICAgICAKKworZGVmIGdlbmVyYXRlQ29kZShzb3VyY2UpOgorICAg
IGlucHV0RmlsZSA9IG9wZW4oc291cmNlLCAiciIpCisgICAgYmFzZU5hbWUgPSBvcy5wYXRoLmJh
c2VuYW1lKHNvdXJjZSkucmVwbGFjZSgiLmpzIiwgIiIpCisgICAgCisgICAgc291cmNlID0gIiIK
KyAgICBmb3IgbGluZSBpbiBpbnB1dEZpbGU6CisgICAgICAgIHNvdXJjZSA9IHNvdXJjZSArIGxp
bmUKKyAgICAKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gImN5Z3dpbiI6CisgICAgICAgIHNvdXJj
ZSA9IHNvdXJjZS5yZXBsYWNlKCJcclxuIiwgIlxuIikKKyAgICByZXR1cm4gKGJhc2VOYW1lLCBn
ZXRGdW5jdGlvbnMoc291cmNlKSwgZ2V0Q29weXJpZ2h0KHNvdXJjZSkpCisKK2RlZiBtYW5nbGVO
YW1lKG9iamVjdCwgbmFtZSk6CisgICAgcU5hbWUgPSBvYmplY3QgKyAiLiIgKyBuYW1lCisgICAg
bWFuZ2xlZE5hbWUgPSAiIgorICAgIGkgPSAwCisgICAgd2hpbGUgaSA8IGxlbihxTmFtZSk6Cisg
ICAgICAgIGlmIHFOYW1lW2ldID09ICcuJzoKKyAgICAgICAgICAgIG1hbmdsZWROYW1lID0gbWFu
Z2xlZE5hbWUgKyBxTmFtZVtpICsgMV0udXBwZXIoKQorICAgICAgICAgICAgaSA9IGkgKyAxCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lICsgcU5h
bWVbaV0KKyAgICAgICAgaSA9IGkgKyAxCisgICAgcmV0dXJuIG1hbmdsZWROYW1lCisKK2J1aWx0
aW5zID0gW10KKworYmFzZU5hbWUgPSBzeXMuYXJndlstMV0KK2J1aWx0aW5fZGVmaW5pdGlvbnMg
PSBzeXMuYXJndlsxOi0xXQorKG91dHB1dF9iYXNlLCBfKSA9IG9zLnBhdGguc3BsaXRleHQoc3lz
LmFyZ3ZbLTFdKQorCitjb3B5cmlnaHRzID0gW10KK2ZvciBmaWxlIGluIGJ1aWx0aW5fZGVmaW5p
dGlvbnM6CisgICAgaWYgZm5tYXRjaC5mbm1hdGNoKGZpbGUsICcqLmpzJyk6CisgICAgICAgIChi
YXNlTmFtZSwgZnVuY3Rpb25zLCBvYmplY3RDb3B5cmlnaHRzKSA9IGdlbmVyYXRlQ29kZShmaWxl
KQorICAgICAgICBjb3B5cmlnaHRzLmV4dGVuZChvYmplY3RDb3B5cmlnaHRzKQorICAgICAgICBi
dWlsdGlucy5hcHBlbmQoKGJhc2VOYW1lLCBmdW5jdGlvbnMpKQorCitjb3B5cmlnaHRzID0gbGlz
dChzZXQoY29weXJpZ2h0cykpCisKK2NvcHlyaWdodEJvZHkgPSAiIgorZm9yIGNvcHlyaWdodCBp
biBjb3B5cmlnaHRzOgorICAgIGNvcHlyaWdodEJvZHkgPSBjb3B5cmlnaHRCb2R5ICsiICogQ29w
eXJpZ2h0IChDKSAiICsgY29weXJpZ2h0ICsgIlxuIgorCitidWlsdGluc0hlYWRlciA9IG9wZW4o
b3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgInciKQorYnVpbHRpbnNJbXBsZW1lbnRhdGlvbiA9IG9w
ZW4ob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCAidyIpCitjb3B5cmlnaHRUZXh0ID0gIi8qXG4i
ICsgY29weXJpZ2h0Qm9keSArIGNvcHlyaWdodFRleHQKK2J1aWx0aW5zSGVhZGVyLndyaXRlKCIi
IiVzCislcworCisjaWZuZGVmIEpTQ0J1aWx0aW5zX0gKKyNkZWZpbmUgSlNDQnVpbHRpbnNfSAor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgSWRl
bnRpZmllcjsKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OworY2xhc3MgU291cmNlQ29kZTsKK2NsYXNz
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgVk07CisKK0Z1bmN0aW9uRXhlY3V0
YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUoVk0mLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKKworIiIiICUgKGdlbmVyYXRvclN0cmluZywgY29w
eXJpZ2h0VGV4dCkpCisKK2NvZGVSZWZlcmVuY2VzID0gW10KKworZm9yIChvYmplY3ROYW1lLCBm
dW5jdGlvbnMpIGluIGJ1aWx0aW5zOgorICAgIHByaW50KCJHZW5lcmF0aW5nIGJpbmRpbmdzIGZv
ciB0aGUgJXMgYnVpbHRpbi4iICUgb2JqZWN0TmFtZSkKKyAgICBidWlsdGluc0hlYWRlci53cml0
ZSgiLyogJXMgZnVuY3Rpb25zICovXG4iICUgb2JqZWN0TmFtZSkKKyAgICBmb3IgKG5hbWUsIGlt
cGxlbWVudGF0aW9uLCBfKSBpbiBmdW5jdGlvbnM6CisgICAgICAgIG1hbmdsZWROYW1lID0gbWFu
Z2xlTmFtZShvYmplY3ROYW1lLCBuYW1lKQorICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWRO
YW1lWzBdLmxvd2VyKCkgKyBtYW5nbGVkTmFtZVsxOl0gKyAiQ29kZSIKKyAgICAgICAgY29kZVJl
ZmVyZW5jZXMuYXBwZW5kKChtYW5nbGVkTmFtZSwgbmFtZSwgaW1wbGVtZW50YXRpb24pKQorICAg
ICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiZXh0ZXJuIGNvbnN0IGNoYXIqIHNfJXM7XG4iICUg
bWFuZ2xlZE5hbWUpCisgICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJleHRlcm4gY29uc3Qg
aW50IHNfJXNMZW5ndGg7XG4iICUgbWFuZ2xlZE5hbWUpCisgICAgYnVpbHRpbnNIZWFkZXIud3Jp
dGUoIlxuIikKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiI2RlZmluZSBKU0NfRk9SRUFDSF8l
c19CVUlMVElOKG1hY3JvKSBcXFxuIiAlIG9iamVjdE5hbWUucmVwbGFjZSgiLiIsICJfIikudXBw
ZXIoKSkKKyAgICBmb3IgKG5hbWUsIGltcGxlbWVudGF0aW9uLCBhcmd1bWVudHMpIGluIGZ1bmN0
aW9uczoKKyAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVOYW1lKG9iamVjdE5hbWUsIG5hbWUp
CisgICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIgICAgbWFjcm8oJXMsICVzLCAlZCkgXFxc
biIgJSAobmFtZSwgbWFuZ2xlZE5hbWUsIGxlbihhcmd1bWVudHMpKSkKKyAgICBidWlsdGluc0hl
YWRlci53cml0ZSgiXG4iKQorICAgIGZvciAobmFtZSwgaW1wbGVtZW50YXRpb24sIGFyZ3VtZW50
cykgaW4gZnVuY3Rpb25zOgorICAgICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiI2RlZmluZSBK
U0NfQlVJTFRJTl8lcyAxXG4iICUgbWFuZ2xlTmFtZShvYmplY3ROYW1lLCBuYW1lKS51cHBlcigp
KQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJcblxuIikKK25hbWVzID0gW10KK2J1aWx0aW5z
SGVhZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU4obWFjcm8pXFxcbiIpCitm
b3IgKGNvZGVSZWZlcmVuY2UsIGZ1bmN0aW9uTmFtZSwgc291cmNlKSBpbiBjb2RlUmVmZXJlbmNl
czoKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiICAgIG1hY3JvKCVzLCAlcywgc18lc0xlbmd0
aCkgXFxcbiIgJSAoY29kZVJlZmVyZW5jZSwgZnVuY3Rpb25OYW1lLCBjb2RlUmVmZXJlbmNlKSkK
KyAgICBuYW1lcy5hcHBlbmQoZnVuY3Rpb25OYW1lKQorCitidWlsdGluc0hlYWRlci53cml0ZSgi
XG5cbiIpCitidWlsdGluc0hlYWRlci53cml0ZSgiI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElO
X0ZVTkNUSU9OX05BTUUobWFjcm8pIFxcXG4iKQorZm9yIG5hbWUgaW4gc29ydGVkKHNldChuYW1l
cykpOgorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIgICAgbWFjcm8oJXMpIFxcXG4iICUgbmFt
ZSkKK2J1aWx0aW5zSGVhZGVyLndyaXRlKCIiIgorCisjZGVmaW5lIEpTQ19ERUNMQVJFX0JVSUxU
SU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCisg
ICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKFZNJik7CisKK0pTQ19G
T1JFQUNIX0JVSUxUSU4oSlNDX0RFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgSlND
X0RFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IKKworI2RlZmluZSBKU0NfQlVJTFRJTl9FWElTVFMo
bmFtZSkgZGVmaW5lZChKU0NfQlVJTFRJTl8jI25hbWUpCisKK30KKworI2VuZGlmCisKKyIiIikK
KworYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiIiIlcworJXMKKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKKworI2luY2x1ZGUgIkJ1aWx0aW5F
eGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJKU0NlbGxJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKKyIiIiAgJSAo
Z2VuZXJhdG9yU3RyaW5nLCBjb3B5cmlnaHRUZXh0KSkKKworZm9yIChjb2RlUmVmZXJlbmNlLCBu
YW1lLCBzb3VyY2UpIGluIGNvZGVSZWZlcmVuY2VzOgorICAgIHNvdXJjZSA9ICIoZnVuY3Rpb24g
IiArIHNvdXJjZVtzb3VyY2UuaW5kZXgoIigiKTpdICsgIikiCisgICAgbGluZXMgPSBqc29uLmR1
bXBzKHNvdXJjZSlbMTotMV0uc3BsaXQoIlxcbiIpCisgICAgc291cmNlTGVuZ3RoID0gbGVuKHNv
dXJjZSkKKyAgICBzb3VyY2UgPSAiIgorICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICBz
b3VyY2UgPSBzb3VyY2UgKyAoIiAgICBcIiVzXFxuXCIgXFxcbiIgJSBsaW5lKQorICAgIGJ1aWx0
aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoImNvbnN0IGNoYXIqIHNfJXMgPVxuJXM7XG5cbiIgJSAo
Y29kZVJlZmVyZW5jZSwgc291cmNlKSkKKyAgICBidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRl
KCJjb25zdCBpbnQgc18lc0xlbmd0aCA9ICVkO1xuXG4iICUgKGNvZGVSZWZlcmVuY2UsIHNvdXJj
ZUxlbmd0aCArIDEpKSAjICsgMSBmb3IgXG4KKworYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0
ZSgiIiIKK0Z1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUoVk0mIHZt
LCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UpCit7CisgICAgdW5zaWduZWQgbGluZUNvdW50ID0gdW5saW5rZWRF
eGVjdXRhYmxlLT5saW5lQ291bnQoKTsKKyAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IDE7Cisg
ICAgdW5zaWduZWQgc291cmNlTGVuZ3RoID0gdW5saW5rZWRFeGVjdXRhYmxlLT5zb3VyY2VMZW5n
dGgoKTsKKyAgICBib29sIGVuZENvbHVtbklzT25TdGFydExpbmUgPSAhbGluZUNvdW50OworICAg
IHVuc2lnbmVkIGVuZENvbHVtbkV4Y2x1ZGluZ0JyYWNlcyA9IHVubGlua2VkRXhlY3V0YWJsZS0+
dW5saW5rZWRCb2R5RW5kQ29sdW1uKCkgKyAoZW5kQ29sdW1uSXNPblN0YXJ0TGluZSA/IDAgOiAx
KTsKKyAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IHVubGlua2VkRXhlY3V0YWJsZS0+c3RhcnRP
ZmZzZXQoKTsKKyAgICB1bnNpZ25lZCBzdGFydE9mZnNldEV4Y2x1ZGluZ09wZW5CcmFjZSA9IHN0
YXJ0T2Zmc2V0ICsgMTsKKyAgICB1bnNpZ25lZCBlbmRPZmZzZXRFeGNsdWRpbmdDbG9zZUJyYWNl
ID0gc3RhcnRPZmZzZXQgKyBzb3VyY2VMZW5ndGggLSAxOworICAgIFNvdXJjZUNvZGUgYm9keVNv
dXJjZShzb3VyY2UucHJvdmlkZXIoKSwgc3RhcnRPZmZzZXRFeGNsdWRpbmdPcGVuQnJhY2UsIGVu
ZE9mZnNldEV4Y2x1ZGluZ0Nsb3NlQnJhY2UsIDAsIHN0YXJ0Q29sdW1uKTsKKyAgICByZXR1cm4g
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUodm0sIGJvZHlTb3VyY2UsIHVubGlua2VkRXhlY3V0
YWJsZSwgMCwgbGluZUNvdW50LCBzdGFydENvbHVtbiwgZW5kQ29sdW1uRXhjbHVkaW5nQnJhY2Vz
LCBmYWxzZSk7Cit9CisKKyNkZWZpbmUgSlNDX0RFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2Rl
TmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAorRnVuY3Rpb25FeGVjdXRhYmxl
KiBjb2RlTmFtZSMjR2VuZXJhdG9yKFZNJiB2bSkgXFwKK3sgXFwKKyAgICByZXR1cm4gY3JlYXRl
QnVpbHRpbkV4ZWN1dGFibGUodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMj
RXhlY3V0YWJsZSgpLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgp
KTsgXFwKK30KKworSlNDX0ZPUkVBQ0hfQlVJTFRJTihKU0NfREVGSU5FX0JVSUxUSU5fR0VORVJB
VE9SKQorI3VuZGVmIEpTQ19ERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKK30KKworIiIiKQorCiti
dWlsdGluc0hlYWRlci5jbG9zZSgpCitidWlsdGluc0ltcGxlbWVudGF0aW9uLmNsb3NlKCkKKwor
aWYgKG5vdCBvcy5wYXRoLmV4aXN0cyhvdXRwdXRfYmFzZSArICIuaCIpKSBvciAobm90IGZpbGVj
bXAuY21wKG91dHB1dF9iYXNlICsgIi5oLnRtcCIsIG91dHB1dF9iYXNlICsgIi5oIiwgc2hhbGxv
dz1GYWxzZSkpOgorICAgIG9zLnJlbmFtZShvdXRwdXRfYmFzZSArICIuaC50bXAiLCBvdXRwdXRf
YmFzZSArICIuaCIpCitlbHNlOgorICAgIG9zLnJlbW92ZShvdXRwdXRfYmFzZSArICIuaC50bXAi
KQorCitpZiAobm90IG9zLnBhdGguZXhpc3RzKG91dHB1dF9iYXNlICsgIi5jcHAiKSkgb3IgKG5v
dCBmaWxlY21wLmNtcChvdXRwdXRfYmFzZSArICIuY3BwLnRtcCIsIG91dHB1dF9iYXNlICsgIi5j
cHAiLCBzaGFsbG93PUZhbHNlKSk6CisgICAgb3MucmVuYW1lKG91dHB1dF9iYXNlICsgIi5jcHAu
dG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmNwcCIpCitlbHNlOgorICAgIG9zLnJlbW92ZShvdXRwdXRf
YmFzZSArICIuY3BwLnRtcCIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcAppbmRleCBjYTg5MGIwNmVhMzNmYTllN2YxZmE1MWEzNWVhMmQ0
OGQwMDlhMzhhLi42YzliZjk2YzE1ZjYwOWUyNjVjZTI1MGE0NWJmMDg2MWQwNmNkMWYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAK
QEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAj
aW5jbHVkZSAiSlNTdGFja0lubGluZXMuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1
ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5jbHVk
ZSAiTExJbnRDTG9vcC5oIgogI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcAppbmRleCBm
MGUwMmJhNGU0NzZmOTljYzkxM2IwNDYyYWQyNzk1MDA2MDlmYTNhLi4xYzI0MGRjZDcxYmU1Mjlk
ODhjYmY0NjFkMTg2OGY1ZWIyYjAyYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNp
bmNsdWRlICJQcm90b0NhbGxGcmFtZS5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5j
bHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgog
CiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
CmluZGV4IGNhN2FkMTFmMmUwYjhhM2I4YjE4NTg5MWQ3ZTUyMmJhZTQwM2EyMzYuLmNiNTUwN2Jl
YWM1NWJmOGViMWIzN2VjOTBmY2FiMTkzNGZiNDhlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkhlYXAuaCIK
ICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUg
IkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCA5OGQxMGEzZjRk
Y2IxMmQ4OWYzN2ExMmYyMjYwNGI5NDZlMDhlNjI3Li5kZDAzNTM3NzllOGJkZjk4ZjQ2NThhMzA3
ZTMyZDA2ZTQ3MjQ0MTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNp
bmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpT
Q0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDkyOGRkNTBmYjAxNmUyNzE2
NDRhNTc1ZTMwYWI1ZjI1MTZlYjUwZWMuLjkwODhiN2ZiMmZiN2FkMDEzODA2ZWY0OWI1YWY0MjBm
YTY0ODQwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cApAQCAtNDEsNiArNDEsOCBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVE9wZXJh
dGlvbldyYXBwZXJzLmgiCiAjaW5jbHVkZSAiSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2Fs
bGJhY2suaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVu
Y3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNp
bmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAK
aW5kZXggMjZkZDRkMWFmNzQ1YWZhMWZiYzUzYTljMDIzYTZlNDc0MWE2NmEwOS4uZGYxYmQzYTlj
ZmE0MDJjNTJhNTIxMWNmMWFjY2U2N2Q1MTIxYjdlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTI5LDExICsyOSwxMyBAQAogI2lu
Y2x1ZGUgIkpJVC5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29tbW9u
SWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJHQ0F3YXJlSklUU3R1YlJvdXRpbmUuaCIKICNpbmNs
dWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUg
IkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTVmFyaWFibGVPYmplY3QuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmlu
ZGV4IGQxOGZlYTcxNWNiMDNiMzdhYTkyNmQ4NDlhOGU1YWI5NTYzZWNkM2QuLjMyNjFiM2FmNmVl
YWJkNmYyNmE0M2EwOGQyMDRiYzYyYjA2NTg5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMzQsNiArMzQsNyBA
QAogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAj
aW5jbHVkZSAiSlNWYXJpYWJsZU9iamVjdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCA0MDc4
NGI0OTQzMWZlMDJlOGU0NTIyZjE2MzA4YzkwMjQ3MTZkMjM2Li4yZjc5NTU1NGIwOTFkZWViYmMw
M2JmMmJlOGM3NGY0MWFlNTQxZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMzgsNiArMzgs
NyBAQAogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTUHJveHkuaCIKICNpbmNsdWRl
ICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk9w
ZXJhdGlvbnMuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKICNpbmNsdWRlICJTdGFja1Zp
c2l0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9m
ZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zm
c2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggNjA0Y2MyNjNjZjk3ZTA4NmZlZDA2ZWM5MDNiMGVjMTk4
M2U3ODEzNy4uODE2NmU3ZjgxZmE4OWE3ZDRmNTBjNWYxYTk0ZmE5NjhjNWQ1N2UxYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUg
IkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKLSNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJWTS5oIgogI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDY2NDQ0YmFhMDhi
NTYyZGQ2OTdlMGNjZDc3MjFlNTVjMTViYTQ5MTMuLjgzZTAxZWJhZmRhMjc3ZTI1ZDhjZjBiMGNl
NjZiZDkxZTU1YzQ2OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcApAQCAtNDAsNyArNDAsOCBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1
ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKLSNpbmNsdWRl
ICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRl
ICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25z
LmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1
aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4
IDhlYzFmZDMyYTNhZGEyMmUxMjUyMjk1NzBkY2Y3ZmYyOGVhYmYxZWQuLjQ2YTdjNzZiMmY5MDFm
YzNjYzM2ZDFjZTBjMDczNTNlYjA2YjJmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvQVNUQnVpbGRlci5oCkBAIC04ODgsOSArODg4LDkgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1
aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24KICAgICBBU1NFUlQoZnVuYy0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CiAgICAgRG90QWNjZXNz
b3JOb2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihmdW5jKTsKICAgICBG
dW5jdGlvbkNhbGxEb3ROb2RlKiBub2RlOwotICAgIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBt
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5jYWxsKQorICAgIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBt
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5jYWxsIHx8IGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnBy
b3BlcnR5TmFtZXMtPmNhbGxQcml2YXRlTmFtZSkKICAgICAgICAgbm9kZSA9IG5ldyAobV92bSkg
Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50
aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKLSAgICBlbHNlIGlm
IChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcHBseSkKKyAgICBl
bHNlIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcHBseSB8
fCBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcHBseVByaXZhdGVO
YW1lKQogICAgICAgICBub2RlID0gbmV3IChtX3ZtKSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUo
bG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRp
dm90U3RhcnQsIGRpdm90RW5kKTsKICAgICBlbHNlCiAgICAgICAgIG5vZGUgPSBuZXcgKG1fdm0p
IEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZp
ZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9MZXhlci5jcHAKaW5kZXggY2E0YmI0ZjBhZGU4ZDZiYzgyNjkxYTZjMDAwMTRj
ZjE5OGJkODhiZC4uY2NiMDc5ZDk3NWExNDFjNWM0YjJkN2I2MjMxMzAwMDcwOTc3NzgyOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKQEAgLTI1LDEwICsyNSwxMCBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxleGVyLmgiCiAKKyNpbmNsdWRlICJDb21t
b25JZGVudGlmaWVycy5oIgorI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJKU0Z1
bmN0aW9uSW5saW5lcy5oIgotCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIK
LSNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTm9kZUluZm8uaCIKICNpbmNsdWRl
ICJOb2Rlcy5oIgogI2luY2x1ZGUgPHd0Zi9kdG9hLmg+CkBAIC05MCw2ICs5MCw3IEBAIGVudW0g
Q2hhcmFjdGVyVHlwZSB7CiAKICAgICAvLyBPdGhlciB0eXBlcyAob25seSBvbmUgc28gZmFyKQog
ICAgIENoYXJhY3RlcldoaXRlU3BhY2UsCisgICAgQ2hhcmFjdGVyUHJpdmF0ZUlkZW50aWZpZXJT
dGFydAogfTsKIAogLy8gMjU2IExhdGluLTEgY29kZXMKQEAgLTE1OCw3ICsxNTksNyBAQCBzdGF0
aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgdHlwZXNPZkxhdGluMUNoYXJhY3RlcnNbMjU2XSA9IHsK
IC8qICA2MSAtID0gICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJFcXVhbCwKIC8qICA2MiAt
ID4gICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJHcmVhdGVyLAogLyogIDYzIC0gPyAgICAg
ICAgICAgICAgICAgICovIENoYXJhY3RlclF1ZXN0aW9uLAotLyogIDY0IC0gQCAgICAgICAgICAg
ICAgICAgICovIENoYXJhY3RlckludmFsaWQsCisvKiAgNjQgLSBAICAgICAgICAgICAgICAgICAg
Ki8gQ2hhcmFjdGVyUHJpdmF0ZUlkZW50aWZpZXJTdGFydCwKIC8qICA2NSAtIEEgICAgICAgICAg
ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCiAvKiAgNjYgLSBCICAgICAgICAg
ICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAogLyogIDY3IC0gQyAgICAgICAg
ICAgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKQEAgLTQ4Niw5ICs0ODcsMTAg
QEAgc3RhdGljIGNvbnN0IExDaGFyIHNpbmdsZUNoYXJhY3RlckVzY2FwZVZhbHVlc0ZvckFTQ0lJ
WzEyOF0gPSB7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUxleGVyPFQ+OjpMZXhlcihW
TSogdm0pCitMZXhlcjxUPjo6TGV4ZXIoVk0qIHZtLCBKU1BhcnNlclN0cmljdG5lc3Mgc3RyaWN0
bmVzcykKICAgICA6IG1faXNSZXBhcnNpbmcoZmFsc2UpCiAgICAgLCBtX3ZtKHZtKQorICAgICwg
bV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKHN0cmljdG5lc3MgPT0gSlNQYXJzZUJ1aWx0aW4pCiB7
CiB9CiAKQEAgLTc1Myw3ICs3NTUsMjcgQEAgaW5saW5lIHZvaWQgTGV4ZXI8VD46OnJlY29yZDE2
KGludCBjKQogICAgIEFTU0VSVChjIDw9IHN0YXRpY19jYXN0PGludD4oVVNIUlRfTUFYKSk7CiAg
ICAgbV9idWZmZXIxNi5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KGMpKTsKIH0KLQorICAgIAor
I2lmICFBU1NFUlRfRElTQUJMRUQKK2Jvb2wgaXNTYWZlSWRlbnRpZmllcihWTSYgdm0sIGNvbnN0
IElkZW50aWZpZXIqIGlkZW50KQoreworICAgIGlmICghaWRlbnQpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIC8qIEp1c3QgYmxvY2sgYW55IHVzZSBvZiBzdXNwaWNpb3VzIGlkZW50aWZpZXJz
LiAgVGhpcyBpcyBpbnRlbmRlZCB0bworICAgICAqIGJlIHVzZWQgYXMgYSBzYWZldHkgbmV0IHdo
aWxlIGltcGxlbWVudGluZyBidWlsdGlucy4KKyAgICAgKi8KKyAgICBpZiAoKmlkZW50ID09IHZt
LnByb3BlcnR5TmFtZXMtPmNhbGwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKmlk
ZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmFwcGx5KQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCppZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5ldmFsKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKCppZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5GdW5jdGlvbikKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisgICAgCiB0
ZW1wbGF0ZSA8PgogdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlT
X0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcihKU1Rva2Vu
RGF0YSogdG9rZW5EYXRhLCB1bnNpZ25lZCBsZXhlckZsYWdzLCBib29sIHN0cmljdE1vZGUpCiB7
CkBAIC03NjUsNyArNzg3LDExIEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZp
ZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAgICAgICAgICAg
ICByZXR1cm4ga2V5d29yZCA9PSBSRVNFUlZFRF9JRl9TVFJJQ1QgJiYgIXN0cmljdE1vZGUgPyBJ
REVOVCA6IGtleXdvcmQ7CiAgICAgICAgIH0KICAgICB9Ci0KKyAgICAKKyAgICBib29sIGlzUHJp
dmF0ZU5hbWUgPSBtX2N1cnJlbnQgPT0gJ0AnICYmIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsK
KyAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgc2hpZnQoKTsKKyAgICAKICAgICBjb25z
dCBMQ2hhciogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudFNvdXJjZVB0cigpOwogICAgIHVuc2ln
bmVkIGlkZW50aWZpZXJMaW5lU3RhcnQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CiAgICAg
CkBAIC03NzksMTUgKzgwNSwyNiBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlm
aWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAogCiAgICAgY29u
c3QgSWRlbnRpZmllciogaWRlbnQgPSAwOwogICAgIAotICAgIGlmIChzaG91bGRDcmVhdGVJZGVu
dGlmaWVyKSB7CisgICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIgfHwgbV9wYXJzaW5nQnVp
bHRpbkZ1bmN0aW9uKSB7CiAgICAgICAgIGludCBpZGVudGlmaWVyTGVuZ3RoID0gY3VycmVudFNv
dXJjZVB0cigpIC0gaWRlbnRpZmllclN0YXJ0OwogICAgICAgICBpZGVudCA9IG1ha2VJZGVudGlm
aWVyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCk7Ci0KKyAgICAgICAgaWYgKG1f
cGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgeworICAgICAgICAgICAgaWYgKCFpc1NhZmVJZGVudGlm
aWVyKCptX3ZtLCBpZGVudCkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsKKyAgICAgICAgICAgICAgICBt
X2xleEVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIlRoZSB1c2Ugb2YgJyIsIGlkZW50LT5zdHJp
bmcoKSwgIicgaXMgZGlzYWxsb3dlZCBpbiBidWlsdGluIGZ1bmN0aW9ucy4iKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gRVJST1JUT0s7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
aXNQcml2YXRlTmFtZSkKKyAgICAgICAgICAgICAgICBpZGVudCA9IG1fdm0tPnByb3BlcnR5TmFt
ZXMtPmdldFByaXZhdGVOYW1lKCppZGVudCk7CisgICAgICAgICAgICBlbHNlIGlmICgqaWRlbnQg
PT0gbV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCkKKyAgICAgICAgICAgICAg
ICB0b2tlbkRhdGEtPmlkZW50ID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdv
cmRQcml2YXRlTmFtZTsKKyAgICAgICAgICAgIGlmICghaWRlbnQpCisgICAgICAgICAgICAgICAg
cmV0dXJuIElOVkFMSURfUFJJVkFURV9OQU1FX0VSUk9SVE9LOworICAgICAgICB9CiAgICAgICAg
IHRva2VuRGF0YS0+aWRlbnQgPSBpZGVudDsKICAgICB9IGVsc2UKICAgICAgICAgdG9rZW5EYXRh
LT5pZGVudCA9IDA7CiAKLSAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVu
Z3RoKSAmJiAhKGxleGVyRmxhZ3MgJiBMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpKSB7
CisgICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIShsZXhl
ckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMpKSAmJiAhaXNQcml2YXRlTmFt
ZSkgewogICAgICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAgIGlm
IChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgewogICAgICAgICAgICAgY29uc3QgSGFzaEVu
dHJ5KiBlbnRyeSA9IG1fdm0tPmtleXdvcmRzLT5nZXRLZXl3b3JkKCppZGVudCk7CkBAIC04MTQs
NiArODUxLDEwIEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZ
U19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+OjpwCiAgICAgICAgICAgICByZXR1cm4g
a2V5d29yZCA9PSBSRVNFUlZFRF9JRl9TVFJJQ1QgJiYgIXN0cmljdE1vZGUgPyBJREVOVCA6IGtl
eXdvcmQ7CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgYm9vbCBpc1ByaXZhdGVOYW1lID0g
bV9jdXJyZW50ID09ICdAJyAmJiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247CisgICAgaWYgKGlz
UHJpdmF0ZU5hbWUpCisgICAgICAgIHNoaWZ0KCk7CiAKICAgICBjb25zdCBVQ2hhciogaWRlbnRp
ZmllclN0YXJ0ID0gY3VycmVudFNvdXJjZVB0cigpOwogICAgIGludCBpZGVudGlmaWVyTGluZVN0
YXJ0ID0gY3VycmVudExpbmVTdGFydE9mZnNldCgpOwpAQCAtODI2LDYgKzg2Nyw3IEBAIHRlbXBs
YXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5
cGUgTGV4ZXI8VUNoYXI+OjpwCiAgICAgfQogICAgIAogICAgIGlmIChVTkxJS0VMWShtX2N1cnJl
bnQgPT0gJ1xcJykpIHsKKyAgICAgICAgQVNTRVJUKCFpc1ByaXZhdGVOYW1lKTsKICAgICAgICAg
c2V0T2Zmc2V0RnJvbVNvdXJjZVB0cihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMaW5lU3Rh
cnQpOwogICAgICAgICByZXR1cm4gcGFyc2VJZGVudGlmaWVyU2xvd0Nhc2U8c2hvdWxkQ3JlYXRl
SWRlbnRpZmllcj4odG9rZW5EYXRhLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKTsKICAgICB9CkBA
IC04MzcsMTggKzg3OSwyOSBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVy
PiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogCiAgICAgY29uc3Qg
SWRlbnRpZmllciogaWRlbnQgPSAwOwogICAgIAotICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlm
aWVyKSB7CisgICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIgfHwgbV9wYXJzaW5nQnVpbHRp
bkZ1bmN0aW9uKSB7CiAgICAgICAgIGludCBpZGVudGlmaWVyTGVuZ3RoID0gY3VycmVudFNvdXJj
ZVB0cigpIC0gaWRlbnRpZmllclN0YXJ0OwogICAgICAgICBpZiAoaXNBbGw4Qml0KQogICAgICAg
ICAgICAgaWRlbnQgPSBtYWtlSWRlbnRpZmllckxDaGFyRnJvbVVDaGFyKGlkZW50aWZpZXJTdGFy
dCwgaWRlbnRpZmllckxlbmd0aCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGlkZW50ID0g
bWFrZUlkZW50aWZpZXIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVuZ3RoKTsKLSAgICAg
ICAgCisgICAgICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKKyAgICAgICAgICAg
IGlmICghaXNTYWZlSWRlbnRpZmllcigqbV92bSwgaWRlbnQpICYmICFpc1ByaXZhdGVOYW1lKSB7
CisgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJUaGUgdXNl
IG9mICciLCBpZGVudC0+c3RyaW5nKCksICInIGlzIGRpc2FsbG93ZWQgaW4gYnVpbHRpbiBmdW5j
dGlvbnMuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgICAgICAgICAgaWRlbnQg
PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZXRQcml2YXRlTmFtZSgqaWRlbnQpOworICAgICAgICAg
ICAgZWxzZSBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdv
cmQpCisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9ICZtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT51bmRlZmluZWRLZXl3b3JkUHJpdmF0ZU5hbWU7CisgICAgICAgICAgICBpZiAoIWlkZW50
KQorICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzsK
KyAgICAgICAgfQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gaWRlbnQ7CiAgICAgfSBlbHNl
CiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAwOwogICAgIAotICAgIGlmIChVTkxJS0VMWSgo
cmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICEobGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJ
Z25vcmVSZXNlcnZlZFdvcmRzKSkpIHsKKyAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1h
eFRva2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxhZ3MgJiBMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRX
b3JkcykpICYmICFpc1ByaXZhdGVOYW1lKSB7CiAgICAgICAgIEFTU0VSVChzaG91bGRDcmVhdGVJ
ZGVudGlmaWVyKTsKICAgICAgICAgaWYgKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSB7CiAg
ICAgICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gbV92bS0+a2V5d29yZHMtPmdldEtl
eXdvcmQoKmlkZW50KTsKQEAgLTE2NTgsNiArMTcxMSw3IEBAIGluTnVtYmVyQWZ0ZXJEZWNpbWFs
UG9pbnQ6CiAgICAgICAgIEFTU0VSVChpc0lkZW50U3RhcnQobV9jdXJyZW50KSk7CiAgICAgICAg
IEZBTExUSFJPVUdIOwogICAgIGNhc2UgQ2hhcmFjdGVyQmFja1NsYXNoOgorICAgICAgICBwYXJz
ZUlkZW50OgogICAgICAgICBpZiAobGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250QnVpbGRLZXl3
b3JkcykKICAgICAgICAgICAgIHRva2VuID0gcGFyc2VJZGVudGlmaWVyPGZhbHNlPih0b2tlbkRh
dGEsIGxleGVyRmxhZ3MsIHN0cmljdE1vZGUpOwogICAgICAgICBlbHNlCkBAIC0xNjcwLDYgKzE3
MjQsMTEgQEAgaW5OdW1iZXJBZnRlckRlY2ltYWxQb2ludDoKICAgICAgICAgbV90ZXJtaW5hdG9y
ID0gdHJ1ZTsKICAgICAgICAgbV9saW5lU3RhcnQgPSBtX2NvZGU7CiAgICAgICAgIGdvdG8gc3Rh
cnQ7CisgICAgY2FzZSBDaGFyYWN0ZXJQcml2YXRlSWRlbnRpZmllclN0YXJ0OgorICAgICAgICBp
ZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKQorICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
OworCisgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2UgQ2hhcmFjdGVySW52YWxpZDoKICAg
ICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBpbnZhbGlkQ2hhcmFjdGVyTWVzc2FnZSgpOwogICAg
ICAgICB0b2tlbiA9IEVSUk9SVE9LOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9MZXhlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCmlu
ZGV4IDI4YzYxYmExOThkMmMxNWE0OWJiMTg1MmVkMzBiZWZlYjg5MDQwMDguLmI4ODczZTk5NTAy
ODY0NGJmOGNiYjNkNGMyZGE1NjJlOTNlMGU4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0xleGVyLmgKQEAgLTcyLDcgKzcyLDcgQEAgY2xhc3MgTGV4ZXIgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogCiBwdWJsaWM6Ci0gICAgTGV4ZXIoVk0qKTsKKyAgICBMZXhlcihWTSos
IEpTUGFyc2VyU3RyaWN0bmVzcyk7CiAgICAgfkxleGVyKCk7CiAKICAgICAvLyBDaGFyYWN0ZXIg
bWFuaXB1bGF0aW9uIGZ1bmN0aW9ucy4KQEAgLTIzOCw2ICsyMzgsNyBAQCBwcml2YXRlOgogICAg
IElkZW50aWZpZXJBcmVuYSogbV9hcmVuYTsKIAogICAgIFZNKiBtX3ZtOworICAgIGJvb2wgbV9w
YXJzaW5nQnVpbHRpbkZ1bmN0aW9uOwogfTsKIAogdGVtcGxhdGUgPD4KQEAgLTMzNSw2ICszMzYs
MTIgQEAgQUxXQVlTX0lOTElORSBjb25zdCBJZGVudGlmaWVyKiBMZXhlcjxUPjo6bWFrZUxDaGFy
SWRlbnRpZmllcihjb25zdCBVQ2hhciogY2hhcmEKICAgICByZXR1cm4gJm1fYXJlbmEtPm1ha2VJ
ZGVudGlmaWVyTENoYXJGcm9tVUNoYXIobV92bSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKIH0KIAor
I2lmIEFTU0VSVF9ESVNBQkxFRAorQUxXQVlTX0lOTElORSBib29sIGlzU2FmZUlkZW50aWZpZXIo
Vk0mLCBjb25zdCBJZGVudGlmaWVyKikgeyByZXR1cm4gdHJ1ZTsgfQorI2Vsc2UKK2Jvb2wgaXNT
YWZlSWRlbnRpZmllcihWTSYsIGNvbnN0IElkZW50aWZpZXIqKTsKKyNlbmRpZgorCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KIEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4
cGVjdElkZW50aWZpZXIoSlNUb2tlbiogdG9rZW5SZWNvcmQsIHVuc2lnbmVkIGxleGVyRmxhZ3Ms
IGJvb2wgc3RyaWN0TW9kZSkKIHsKQEAgLTM3MCwxMCArMzc3LDE1IEBAIEFMV0FZU19JTkxJTkUg
SlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tlbiogdG9rZW5S
ZWNvcmQsIHVuCiAgICAgQVNTRVJUKGN1cnJlbnRPZmZzZXQoKSA+PSBjdXJyZW50TGluZVN0YXJ0
T2Zmc2V0KCkpOwogCiAgICAgLy8gQ3JlYXRlIHRoZSBpZGVudGlmaWVyIGlmIG5lZWRlZAotICAg
IGlmIChsZXhlckZsYWdzICYgTGV4ZXhGbGFnc0RvbnRCdWlsZEtleXdvcmRzKQorICAgIGlmIChs
ZXhlckZsYWdzICYgTGV4ZXhGbGFnc0RvbnRCdWlsZEtleXdvcmRzCisjaWYgIUFTU0VSVF9ESVNB
QkxFRAorICAgICAgICAmJiAhbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uCisjZW5kaWYKKyAgICAg
ICAgKQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gMDsKICAgICBlbHNlCiAgICAgICAgIHRv
a2VuRGF0YS0+aWRlbnQgPSBtYWtlTENoYXJJZGVudGlmaWVyKHN0YXJ0LCBwdHIgLSBzdGFydCk7
CisKICAgICB0b2tlbkxvY2F0aW9uLT5saW5lID0gbV9saW5lTnVtYmVyOwogICAgIHRva2VuTG9j
YXRpb24tPmxpbmVTdGFydE9mZnNldCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKICAgICB0
b2tlbkxvY2F0aW9uLT5zdGFydE9mZnNldCA9IG9mZnNldEZyb21Tb3VyY2VQdHIoc3RhcnQpOwpA
QCAtMzgxLDYgKzM5MywxMyBAQCBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+Ojps
ZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW4qIHRva2VuUmVjb3JkLCB1bgogICAgIEFTU0VSVCh0
b2tlbkxvY2F0aW9uLT5zdGFydE9mZnNldCA+PSB0b2tlbkxvY2F0aW9uLT5saW5lU3RhcnRPZmZz
ZXQpOwogICAgIHRva2VuUmVjb3JkLT5tX3N0YXJ0UG9zaXRpb24gPSBzdGFydFBvc2l0aW9uOwog
ICAgIHRva2VuUmVjb3JkLT5tX2VuZFBvc2l0aW9uID0gY3VycmVudFBvc2l0aW9uKCk7CisjaWYg
IUFTU0VSVF9ESVNBQkxFRAorICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKKyAg
ICAgICAgaWYgKCFpc1NhZmVJZGVudGlmaWVyKCptX3ZtLCB0b2tlbkRhdGEtPmlkZW50KSkKKyAg
ICAgICAgICAgIHJldHVybiBFUlJPUlRPSzsKKyAgICB9CisjZW5kaWYKKwogICAgIG1fbGFzdFRv
a2VuID0gSURFTlQ7CiAgICAgcmV0dXJuIElERU5UOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmNwcAppbmRleCBmYzljY2Q5ZjZjNTc2YzFhZWY1NDdmMjExZmRkNTk2ZjQy
ZTA1ODA2Li5kOTUyYmE2YTk0ZDJmNmI0MTgyMTU1MDA0ZDBhOTcwODQyOWJkNzhhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMTMyLDYgKzEzMiwxMiBAQCBQYXNz
UmVmUHRyPFByb2dyYW1Ob2RlPiBQcm9ncmFtTm9kZTo6Y3JlYXRlKFZNKiB2bSwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBzdGFydAogICAgIHJldHVybiBub2RlLnJlbGVhc2UoKTsKIH0KIAorCit2
b2lkIFByb2dyYW1Ob2RlOjpzZXRDbG9zZWRWYXJpYWJsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxT
dHJpbmdJbXBsPj4mJiBjbG9zZWRWYXJpYWJsZXMpCit7CisgICAgbV9jbG9zZWRWYXJpYWJsZXMg
PSBzdGQ6Om1vdmUoY2xvc2VkVmFyaWFibGVzKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIEV2YWxOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGlu
bGluZSBFdmFsTm9kZTo6RXZhbE5vZGUoVk0qIHZtLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0
YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVk
IGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ss
IEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJs
ZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQg
bnVtQ29uc3RhbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IGQ3Nzlh
MTc4ZDk1NmZmOTlmZDBiZWQ1ZDVmNDU0YWEzZTZiNTA4NzkuLjgxNmZmMDAxYWJmMDM3NmM2NDJm
MWE5MzhkMGUwYTlmNTI5Y2E2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgK
QEAgLTE0MzEsNiArMTQzMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG5lZWRz
QWN0aXZhdGlvbigpIGNvbnN0IHsgcmV0dXJuIChoYXNDYXB0dXJlZFZhcmlhYmxlcygpKSB8fCAo
bV9mZWF0dXJlcyAmIChFdmFsRmVhdHVyZSB8IFdpdGhGZWF0dXJlIHwgQ2F0Y2hGZWF0dXJlKSk7
IH0KICAgICAgICAgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuICEh
bV9jYXB0dXJlZFZhcmlhYmxlcy5zaXplKCk7IH0KICAgICAgICAgc2l6ZV90IGNhcHR1cmVkVmFy
aWFibGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FwdHVyZWRWYXJpYWJsZXMuc2l6ZSgpOyB9
CisgICAgICAgIGNvbnN0IElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzKCkgY29uc3Qg
eyByZXR1cm4gbV9jYXB0dXJlZFZhcmlhYmxlczsgfQogICAgICAgICBib29sIGNhcHR1cmVzKGNv
bnN0IElkZW50aWZpZXImIGlkZW50KSB7IHJldHVybiBtX2NhcHR1cmVkVmFyaWFibGVzLmNvbnRh
aW5zKGlkZW50LmltcGwoKSk7IH0KIAogICAgICAgICBWYXJTdGFjayYgdmFyU3RhY2soKSB7IHJl
dHVybiBtX3ZhclN0YWNrOyB9CkBAIC0xNDQ2LDYgKzE0NDcsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50KCkgY29uc3Q7CiAKICAgICAg
ICAgdm9pZCBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogZGVzdGluYXRpb24pOworICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRDbG9zZWRWYXJp
YWJsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJikgeyB9CiAKICAgICBwcm90
ZWN0ZWQ6CiAgICAgICAgIHZvaWQgc2V0U291cmNlKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkg
eyBtX3NvdXJjZSA9IHNvdXJjZTsgfQpAQCAtMTQ3NSwxMSArMTQ3OCwxMyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzY29wZUlzRnVuY3Rpb24gPSBmYWxz
ZTsKIAorICAgICAgICB2b2lkIHNldENsb3NlZFZhcmlhYmxlcyhjb25zdCBWZWN0b3I8UmVmUHRy
PFN0cmluZ0ltcGw+PiYmKTsKKyAgICAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBs
Pj4mIGNsb3NlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2xvc2VkVmFyaWFibGVzOyB9
CiAgICAgcHJpdmF0ZToKICAgICAgICAgUHJvZ3JhbU5vZGUoVk0qLCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQgc3RhcnRD
b2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1
bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0
dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7Ci0KKyAg
ICAgICAgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4gbV9jbG9zZWRWYXJpYWJsZXM7CiAgICAg
ICAgIHVuc2lnbmVkIG1fc3RhcnRDb2x1bW47CiAgICAgICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1u
OwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggMjk3
NjY2ZTcyNmU0NWQwODNlZjEzNDlkZGZmZGYzN2VmODAwZGY3YS4uNTBiZWM3OWZlMzhhZGY4ZjNh
MDRmNmI0NmNiZDJhNWNiZmNmMjQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcApAQCAtMjA0LDggKzIwNCw5IEBAIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIoVk0q
IHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uUGFyYW1ldGVycyoKICAgICAs
IG1fbGFzdElkZW50aWZpZXIoMCkKICAgICAsIG1fbGFzdEZ1bmN0aW9uTmFtZShudWxscHRyKQog
ICAgICwgbV9zb3VyY2VFbGVtZW50cygwKQorICAgICwgbV9wYXJzaW5nQnVpbHRpbihzdHJpY3Ru
ZXNzID09IEpTUGFyc2VCdWlsdGluKQogewotICAgIG1fbGV4ZXIgPSBhZG9wdFB0cihuZXcgTGV4
ZXJUeXBlKHZtKSk7CisgICAgbV9sZXhlciA9IGFkb3B0UHRyKG5ldyBMZXhlclR5cGUodm0sIHN0
cmljdG5lc3MpKTsKICAgICBtX2FyZW5hID0gbV92bS0+cGFyc2VyQXJlbmEuZ2V0KCk7CiAgICAg
bV9sZXhlci0+c2V0Q29kZShzb3VyY2UsIG1fYXJlbmEpOwogICAgIG1fdG9rZW4ubV9sb2NhdGlv
bi5saW5lID0gc291cmNlLmZpcnN0TGluZSgpOwpAQCAtMjU2LDYgKzI1Nyw3IEBAIFN0cmluZyBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcigpCiAgICAgSWRlbnRpZmllclNldCBjYXB0dXJl
ZFZhcmlhYmxlczsKICAgICBib29sIG1vZGlmaWVkUGFyYW1ldGVyID0gZmFsc2U7CiAgICAgc2Nv
cGUtPmdldENhcHR1cmVkVmFyaWFibGVzKGNhcHR1cmVkVmFyaWFibGVzLCBtb2RpZmllZFBhcmFt
ZXRlcik7CisgICAgCiAgICAgQ29kZUZlYXR1cmVzIGZlYXR1cmVzID0gY29udGV4dC5mZWF0dXJl
cygpOwogICAgIGlmIChzY29wZS0+c3RyaWN0TW9kZSgpKQogICAgICAgICBmZWF0dXJlcyB8PSBT
dHJpY3RNb2RlRmVhdHVyZTsKQEAgLTI2MywyMSArMjY1LDM2IEBAIFN0cmluZyBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VJbm5lcigpCiAgICAgICAgIGZlYXR1cmVzIHw9IFNoYWRvd3NBcmd1bWVu
dHNGZWF0dXJlOwogICAgIGlmIChtb2RpZmllZFBhcmFtZXRlcikKICAgICAgICAgZmVhdHVyZXMg
fD0gTW9kaWZpZWRQYXJhbWV0ZXJGZWF0dXJlOwotCisgICAgCisgICAgVmVjdG9yPFJlZlB0cjxT
dHJpbmdJbXBsPj4gY2xvc2VkVmFyaWFibGVzOworICAgIGlmIChtX3BhcnNpbmdCdWlsdGluKSB7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFjYXB0dXJlZFZhcmlhYmxlcy5zaXplKCkpOworICAg
ICAgICBJZGVudGlmaWVyU2V0IHVzZWRWYXJpYWJsZXM7CisgICAgICAgIHNjb3BlLT5nZXRVc2Vk
VmFyaWFibGVzKHVzZWRWYXJpYWJsZXMpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHZhcmlh
YmxlIDogdXNlZFZhcmlhYmxlcykgeworICAgICAgICAgICAgaWYgKHNjb3BlLT5oYXNEZWNsYXJl
ZFZhcmlhYmxlKElkZW50aWZpZXIobV92bSwgdmFyaWFibGUuZ2V0KCkpKSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHNjb3BlLT5oYXNE
ZWNsYXJlZFBhcmFtZXRlcihJZGVudGlmaWVyKG1fdm0sIHZhcmlhYmxlLmdldCgpKSkpCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBjbG9zZWRWYXJpYWJsZXMuYXBwZW5k
KHZhcmlhYmxlKTsKKyAgICAgICAgfQorICAgIH0KICAgICBkaWRGaW5pc2hQYXJzaW5nKHNvdXJj
ZUVsZW1lbnRzLCBjb250ZXh0LnZhckRlY2xhcmF0aW9ucygpLCBjb250ZXh0LmZ1bmNEZWNsYXJh
dGlvbnMoKSwgZmVhdHVyZXMsCi0gICAgICAgIGNvbnRleHQubnVtQ29uc3RhbnRzKCksIGNhcHR1
cmVkVmFyaWFibGVzKTsKKyAgICAgICAgY29udGV4dC5udW1Db25zdGFudHMoKSwgY2FwdHVyZWRW
YXJpYWJsZXMsIHN0ZDo6bW92ZShjbG9zZWRWYXJpYWJsZXMpKTsKIAogICAgIHJldHVybiBwYXJz
ZUVycm9yOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdm9pZCBQYXJzZXI8
TGV4ZXJUeXBlPjo6ZGlkRmluaXNoUGFyc2luZyhTb3VyY2VFbGVtZW50cyogc291cmNlRWxlbWVu
dHMsIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+KiB2YXJTdGFj
aywgCi0gICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNr
PiogZnVuY1N0YWNrLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMsIElk
ZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFycykKKyAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRp
b25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KiBmdW5jU3RhY2ssIENvZGVGZWF0dXJlcyBmZWF0dXJl
cywgaW50IG51bUNvbnN0YW50cywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJzLCBjb25zdCBW
ZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmIGNsb3NlZFZhcmlhYmxlcykKIHsKICAgICBtX3Nv
dXJjZUVsZW1lbnRzID0gc291cmNlRWxlbWVudHM7CiAgICAgbV92YXJEZWNsYXJhdGlvbnMgPSB2
YXJTdGFjazsKICAgICBtX2Z1bmNEZWNsYXJhdGlvbnMgPSBmdW5jU3RhY2s7CiAgICAgbV9jYXB0
dXJlZFZhcmlhYmxlcy5zd2FwKGNhcHR1cmVkVmFycyk7CisgICAgbV9jbG9zZWRWYXJpYWJsZXMg
PSBjbG9zZWRWYXJpYWJsZXM7CiAgICAgbV9mZWF0dXJlcyA9IGZlYXR1cmVzOwogICAgIG1fbnVt
Q29uc3RhbnRzID0gbnVtQ29uc3RhbnRzOwogfQpAQCAtMjM0Niw2ICsyMzYzLDEwIEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+IHZvaWQgUGFyc2VyPExleGVyVHlwZT46OnByaW50VW5l
eHBlY3RlZFRva2VuVGV4dChXCiAgICAgY2FzZSBSRVNFUlZFRDoKICAgICAgICAgb3V0LnByaW50
KCJVbmV4cGVjdGVkIHVzZSBvZiByZXNlcnZlZCB3b3JkICciLCBnZXRUb2tlbigpLCAiJyIpOwog
ICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIElOVkFMSURfUFJJVkFURV9OQU1FX0VSUk9SVE9L
OgorICAgICAgICBvdXQucHJpbnQoIkludmFsaWQgcHJpdmF0ZSBuYW1lICciLCBnZXRUb2tlbigp
LCAiJyIpOworICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAKICAgICBjYXNlIElERU5UOgog
ICAgICAgICBvdXQucHJpbnQoIlVuZXhwZWN0ZWQgaWRlbnRpZmllciAnIiwgZ2V0VG9rZW4oKSwg
IiciKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGI2OThlZjkzNjhj
YjhjOGYxOTdjY2QwMDBhY2FhNmRmYjExYmEyNDQuLjkwMzM4NTBjOGM5N2Y1N2UyMWRhNWVlZGIw
MmQwNDRmNGM4OTc4ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAt
MjMsNiArMjMsNyBAQAogI2lmbmRlZiBQYXJzZXJfaAogI2RlZmluZSBQYXJzZXJfaAogCisjaW5j
bHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1
ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCkBAIC0yNTks
NiArMjYwLDEwIEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgIHJldHVybiBpc1ZhbGlkU3RyaWN0
TW9kZSA/IEJpbmRpbmdTdWNjZWVkZWQgOiBTdHJpY3RCaW5kaW5nRmFpbGVkOwogICAgIH0KIAor
ICAgIHZvaWQgZ2V0VXNlZFZhcmlhYmxlcyhJZGVudGlmaWVyU2V0JiB1c2VkVmFyaWFibGVzKQor
ICAgIHsKKyAgICAgICAgdXNlZFZhcmlhYmxlcy5zd2FwKG1fdXNlZFZhcmlhYmxlcyk7CisgICAg
fQogCiAgICAgdm9pZCB1c2VWYXJpYWJsZShjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgYm9vbCBp
c0V2YWwpCiAgICAgewpAQCAtNDE0LDYgKzQxOSw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRy
PFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNlckVycm9yJik7CiAKICAgICBKU1RleHRQb3NpdGlvbiBw
b3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+cG9zaXRp
b25CZWZvcmVMYXN0TmV3bGluZSgpOyB9CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJ
bXBsPj4mJiBjbG9zZWRWYXJpYWJsZXMoKSB7IHJldHVybiBzdGQ6Om1vdmUobV9jbG9zZWRWYXJp
YWJsZXMpOyB9CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IEFsbG93SW5PdmVycmlkZSB7CkBAIC01
NDAsNyArNTQ2LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgcGFyc2VJbm5lcigpOwogCiAgICAg
dm9pZCBkaWRGaW5pc2hQYXJzaW5nKFNvdXJjZUVsZW1lbnRzKiwgUGFyc2VyQXJlbmFEYXRhPERl
Y2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjaz4qLCAKLSAgICAgICAgUGFyc2VyQXJlbmFEYXRhPERl
Y2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiosIENvZGVGZWF0dXJlcywgaW50LCBJZGVu
dGlmaWVyU2V0Jik7CisgICAgICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6
RnVuY3Rpb25TdGFjaz4qLCBDb2RlRmVhdHVyZXMsIGludCwgSWRlbnRpZmllclNldCYsIGNvbnN0
IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYpOwogCiAgICAgLy8gVXNlZCB0byBkZXRlcm1p
bmUgdHlwZSBvZiBlcnJvciB0byByZXBvcnQuCiAgICAgYm9vbCBpc0Z1bmN0aW9uQm9keU5vZGUo
U2NvcGVOb2RlKikgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTg0MCw5ICs4NDYsMTEgQEAgcHJpdmF0
ZToKICAgICBjb25zdCBJZGVudGlmaWVyKiBtX2xhc3RGdW5jdGlvbk5hbWU7CiAgICAgUmVmUHRy
PFNvdXJjZVByb3ZpZGVyQ2FjaGU+IG1fZnVuY3Rpb25DYWNoZTsKICAgICBTb3VyY2VFbGVtZW50
cyogbV9zb3VyY2VFbGVtZW50czsKKyAgICBib29sIG1fcGFyc2luZ0J1aWx0aW47CiAgICAgUGFy
c2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjaz4qIG1fdmFyRGVjbGFyYXRp
b25zOwogICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFj
az4qIG1fZnVuY0RlY2xhcmF0aW9uczsKICAgICBJZGVudGlmaWVyU2V0IG1fY2FwdHVyZWRWYXJp
YWJsZXM7CisgICAgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4gbV9jbG9zZWRWYXJpYWJsZXM7
CiAgICAgQ29kZUZlYXR1cmVzIG1fZmVhdHVyZXM7CiAgICAgaW50IG1fbnVtQ29uc3RhbnRzOwog
ICAgIApAQCAtOTU3LDYgKzk2NSwxMCBAQCBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IHBhcnNlKFZN
KiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcgogICAgICAg
ICBSZWZQdHI8UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVy
cm9yKTsKICAgICAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAg
ICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3RO
ZXdsaW5lKCk7CisgICAgICAgIGlmIChzdHJpY3RuZXNzID09IEpTUGFyc2VCdWlsdGluKSB7Cisg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOworICAgICAgICAgICAgcmVzdWx0LT5z
ZXRDbG9zZWRWYXJpYWJsZXMoc3RkOjptb3ZlKHBhcnNlci5jbG9zZWRWYXJpYWJsZXMoKSkpOwor
ICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogICAgIH0KICAgICBQ
YXJzZXI8TGV4ZXI8VUNoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgcGFyYW1ldGVycywgbmFtZSwg
c3RyaWN0bmVzcywgcGFyc2VyTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlck1vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlck1vZGVzLmgKaW5kZXggNGU5YTE3Y2QyMWNhMzQxNDZiYmQ0ODE1NmEzNzJjZDQwNGRlZjYw
Yy4uZjdhNzViZjdjMzc4NTdlNDRiNmQ1ZDcxZjQ1MjliYjFhYzFjZjVmMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaApAQCAtMjksNyArMjksNyBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAotZW51bSBKU1BhcnNlclN0cmljdG5lc3MgeyBKU1BhcnNlTm9ybWFs
LCBKU1BhcnNlU3RyaWN0IH07CitlbnVtIEpTUGFyc2VyU3RyaWN0bmVzcyB7IEpTUGFyc2VOb3Jt
YWwsIEpTUGFyc2VCdWlsdGluLCBKU1BhcnNlU3RyaWN0IH07CiBlbnVtIEpTUGFyc2VyTW9kZSB7
IEpTUGFyc2VQcm9ncmFtQ29kZSwgSlNQYXJzZUZ1bmN0aW9uQ29kZSB9OwogCiBlbnVtIFByb2Zp
bGVyTW9kZSB7IFByb2ZpbGVyT2ZmLCBQcm9maWxlck9uIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAppbmRleCA4MmEyNjYzOWE3OTIyMGEwODQ0NTZiNDhm
MzI4NTJkMTQzYzczOWQwLi44Yzg3YWQ5ZmFkYmRjNGFmMzlhYzk5ZGIyZDg0NDVlMTNmZmZkMzVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKQEAgLTE0
OSw2ICsxNDksNyBAQCBlbnVtIEpTVG9rZW5UeXBlIHsKICAgICBJTlZBTElEX05VTUVSSUNfTElU
RVJBTF9FUlJPUlRPSyA9IDcgfCBFcnJvclRva2VuRmxhZywKICAgICBVTlRFUk1JTkFURURfU1RS
SU5HX0xJVEVSQUxfRVJST1JUT0sgPSA4IHwgRXJyb3JUb2tlbkZsYWcgfCBVbnRlcm1pbmF0ZWRF
cnJvclRva2VuRmxhZywKICAgICBJTlZBTElEX1NUUklOR19MSVRFUkFMX0VSUk9SVE9LID0gOSB8
IEVycm9yVG9rZW5GbGFnLAorICAgIElOVkFMSURfUFJJVkFURV9OQU1FX0VSUk9SVE9LID0gMTAg
fCBFcnJvclRva2VuRmxhZwogfTsKIAogc3RydWN0IEpTVGV4dFBvc2l0aW9uIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9MZWdhY3lQcm9maWxlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvTGVnYWN5UHJvZmlsZXIuY3BwCmluZGV4IGRk
MmFjZDlmMGU4YzdlZTE2ODQwNjFmNTJjNzdlNzhiOGZjZmE5NWYuLjAyNjA3MGY5NTk4MjQ5OWQy
NzNiOGRkNGNjZTRhOGY4NjJmYjY2ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9MZWdhY3lQcm9maWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Byb2ZpbGVyL0xlZ2FjeVByb2ZpbGVyLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAi
SW50ZXJuYWxGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJK
U0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiTm9kZXMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ0xpc3QuY3BwCmluZGV4IGUxMzEwNGRmNTkyMmQwNzc2MjU3ZDA1Y2I1ZTg3
MDUzN2QyMTQyOGEuLjI0YzA2YmJiMWMyYzM0YjlkYTVlZjg0YjI1NWM5OTAwZGFmODU5MTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwCkBAIC0yMiw3ICsyMiw3
IEBACiAjaW5jbHVkZSAiQXJnTGlzdC5oIgogCiAjaW5jbHVkZSAiSGVhcFJvb3RWaXNpdG9yLmgi
Ci0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCmluZGV4IDhmZDE5NWNiOWI1
ZjdlZjViZjNkMmZkOTMzNDJiMDEwMjcyNWZhZjEuLjRmYmFjNjg4NjM0ODYxNzE2NDlhMzM0ZDYx
YjVkY2MzODE0ZGQ1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1l
bnRzLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgogCiAjaW5j
bHVkZSAiQ2FsbEZyYW1lSW5saW5lcy5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgi
CiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNBcmd1bWVudHNJdGVyYXRv
ci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJndW1lbnRzLmgKaW5kZXggMThmMzg5MTcxMzg1MjM2MmM3YTc1YTMwNTNiNDYzMTQxN2Jl
YjgxYi4uZjE2ZmQzZGU0MDU1OTcwYmE5ZDljNmYwYWU2MzE4ZjIyMDRiNjU0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNk
ZWZpbmUgQXJndW1lbnRzX2gKIAogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJD
b21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUg
IkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVy
YXRvckNvbnN0cnVjdG9yLmNwcAppbmRleCBhZmI1OTc5MGNiMDA5OTg5YmI3YjQyODYzZTkxODIz
MzU3NmI4YWFjLi45MWNhY2RmYTg1N2ViNjkzNzZhMzA4MWE4YzcwMmFjOWMyMTdjYTdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvckNv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVu
dHNJdGVyYXRvckNvbnN0cnVjdG9yLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkFy
Z3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuaCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50c0l0ZXJh
dG9yUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRl
ICJKU0FyZ3VtZW50c0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
ICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKaW5kZXgg
ZGQwODk0ZjE0YTAyMWQ1ZjEyNjU4YWNiMDFlNzIxZmNkNmQzNDhjYy4uNWI0YWU4NzE2YjA1NTNi
ZTQ2MjM5NTVlOTllMWI0M2ViZjE4ZmUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAt
MjYsNyArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFyZ3VtZW50c0l0
ZXJhdG9yUHJvdG90eXBlLmgiCiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2lu
Y2x1ZGUgIkpTQXJndW1lbnRzSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5l
cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IDI3YWM2ZDQ4YTcxZjc5NTUwMmExMGNlYTY0
Nzg2NTQxMzVhNDYzYTAuLjZkYzdiZTU2OTY5ZGU2N2Y2MjEwN2JiM2E1MWEzMDhmYTNiYTc2YmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5j
cHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0FycmF5
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1N0cmluZ0J1aWxkZXIuaCIKKyNpbmNsdWRlICJKU1N0
cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJKU1N0cmluZ0pvaW5lci5oIgogI2luY2x1ZGUgIkxv
b2t1cC5oIgogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgpAQCAtNTYsNyArNTcsNiBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NsaWNlKEV4
ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b0Z1bmNTb3J0KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlQcm90b0Z1bmNTcGxpY2UoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1VuU2hpZnQoRXhlY1N0YXRlKik7Ci1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0V2ZXJ5KEV4ZWNT
dGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1
bmNGb3JFYWNoKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlQcm90b0Z1bmNTb21lKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0ZSopOwpAQCAtOTU0
LDY5ICs5NTQsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5j
TWFwKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdEFy
cmF5KTsKIH0KIAotLy8gRG9jdW1lbnRhdGlvbiBmb3IgdGhlc2UgdGhyZWUgaXMgYXZhaWxhYmxl
IGF0OgotLy8gaHR0cDovL2RldmVsb3Blci10ZXN0Lm1vemlsbGEub3JnL2VuL2RvY3MvQ29yZV9K
YXZhU2NyaXB0XzEuNV9SZWZlcmVuY2U6T2JqZWN0czpBcnJheTpldmVyeQotLy8gaHR0cDovL2Rl
dmVsb3Blci10ZXN0Lm1vemlsbGEub3JnL2VuL2RvY3MvQ29yZV9KYXZhU2NyaXB0XzEuNV9SZWZl
cmVuY2U6T2JqZWN0czpBcnJheTpmb3JFYWNoCi0vLyBodHRwOi8vZGV2ZWxvcGVyLXRlc3QubW96
aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0phdmFTY3JpcHRfMS41X1JlZmVyZW5jZTpPYmplY3RzOkFy
cmF5OnNvbWUKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0V2
ZXJ5KEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBKU09iamVjdCogdGhpc09iaiA9IGV4ZWMtPmhv
c3RUaGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7Ci0g
ICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpc09iai0+Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5sZW5ndGgpLnRvVUludDMyKGV4ZWMpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQotICAg
IEpTVmFsdWUgZnVuY3Rpb24gPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBDYWxsRGF0YSBjYWxs
RGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxs
RGF0YSk7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0KLSAgICBKU1ZhbHVlIGFwcGx5VGhpcyA9IGV4ZWMt
PmFyZ3VtZW50KDEpOwotCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4odHJ1ZSk7Ci0K
LSAgICB1bnNpZ25lZCBrID0gMDsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVKUyAmJiBp
c0pTQXJyYXkodGhpc09iaikpIHsKLSAgICAgICAgSlNGdW5jdGlvbiogZiA9IGpzQ2FzdDxKU0Z1
bmN0aW9uKj4oZnVuY3Rpb24pOwotICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodGhp
c09iaik7Ci0gICAgICAgIENhY2hlZENhbGwgY2FjaGVkQ2FsbChleGVjLCBmLCAzKTsKLSAgICAg
ICAgZm9yICg7IGsgPCBsZW5ndGggJiYgIWV4ZWMtPmhhZEV4Y2VwdGlvbigpOyArK2spIHsKLSAg
ICAgICAgICAgIGlmIChVTkxJS0VMWSghYXJyYXktPmNhbkdldEluZGV4UXVpY2tseShrKSkpCi0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGNhY2hlZENh
bGwuc2V0VGhpcyhhcHBseVRoaXMpOwotICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVu
dCgwLCBhcnJheS0+Z2V0SW5kZXhRdWlja2x5KGspKTsKLSAgICAgICAgICAgIGNhY2hlZENhbGwu
c2V0QXJndW1lbnQoMSwganNOdW1iZXIoaykpOwotICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRB
cmd1bWVudCgyLCB0aGlzT2JqKTsKLSAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FjaGVk
Q2FsbC5jYWxsKCk7Ci0gICAgICAgICAgICBpZiAoIXJlc3VsdC50b0Jvb2xlYW4oZXhlYykpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsK
LSAgICAgICAgfQotICAgIH0KLSAgICBmb3IgKDsgayA8IGxlbmd0aCAmJiAhZXhlYy0+aGFkRXhj
ZXB0aW9uKCk7ICsraykgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqKTsKLSAg
ICAgICAgaWYgKCF0aGlzT2JqLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaywgc2xvdCkpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBlYWNoQXJn
dW1lbnRzOwotICAgICAgICBlYWNoQXJndW1lbnRzLmFwcGVuZChzbG90LmdldFZhbHVlKGV4ZWMs
IGspKTsKLSAgICAgICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQoanNOdW1iZXIoaykpOwotICAgICAg
ICBlYWNoQXJndW1lbnRzLmFwcGVuZCh0aGlzT2JqKTsKLQotICAgICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwotCi0gICAgICAgIGJvb2wgcHJlZGljYXRlUmVzdWx0ID0gY2FsbChleGVjLCBmdW5j
dGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBhcHBseVRoaXMsIGVhY2hBcmd1bWVudHMpLnRvQm9v
bGVhbihleGVjKTsKLSAgICAgICAgaWYgKCFwcmVkaWNhdGVSZXN1bHQpIHsKLSAgICAgICAgICAg
IHJlc3VsdCA9IGpzQm9vbGVhbihmYWxzZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKLX0KLQogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0ZvckVhY2goRXhlY1N0YXRl
KiBleGVjKQogewogICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgp
LnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IDUxMGUzODNmYWU1NzVhYWRhODE3
NmMwNDQxZWU3MjViNDNhNGM3MzIuLmQzMDQ4NzdmZTljZGUxYzA5MTlmZDQ1OTVmODExZWNhYmNl
NzcyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNo
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApA
QCAtMTQ0LDI0ICsxNDQsMjYgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNo
ZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUoVk0mIHYKICAgICBKU1RleHRQ
b3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lOwogICAgIFJlZlB0cjxQcm9ncmFtTm9k
ZT4gcHJvZ3JhbSA9IHBhcnNlPFByb2dyYW1Ob2RlPigmdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmll
cigpLCBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlUHJvZ3JhbUNvZGUsIGVycm9yLCAmcG9zaXRpb25C
ZWZvcmVMYXN0TmV3bGluZSk7CiAgICAgaWYgKCFwcm9ncmFtKSB7Ci0gICAgICAgIEFTU0VSVChl
cnJvci5tX3R5cGUgIT0gUGFyc2VyRXJyb3I6OkVycm9yTm9uZSk7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGVycm9yLm1fdHlwZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKICAgICAgICAg
bV9zb3VyY2VDb2RlLnJlbW92ZShhZGRSZXN1bHQuaXRlcmF0b3IpOwogICAgICAgICByZXR1cm4g
MDsKICAgICB9CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgYW4gaW5wdXQgc3RyaW5n
IHRoYXQgd291bGQgcmVzdWx0IGluIGEgc2luZ2xlIGFub255bW91cyBmdW5jdGlvbiBleHByZXNz
aW9uLgogICAgIFN0YXRlbWVudE5vZGUqIGV4cHJTdGF0ZW1lbnQgPSBwcm9ncmFtLT5zaW5nbGVT
dGF0ZW1lbnQoKTsKLSAgICBBU1NFUlQoZXhwclN0YXRlbWVudCk7Ci0gICAgQVNTRVJUKGV4cHJT
dGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChleHByU3Rh
dGVtZW50KTsKKyAgICBSRUxFQVNFX0FTU0VSVChleHByU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1l
bnQoKSk7CiAgICAgRXhwcmVzc2lvbk5vZGUqIGZ1bmNFeHByID0gc3RhdGljX2Nhc3Q8RXhwclN0
YXRlbWVudE5vZGUqPihleHByU3RhdGVtZW50KS0+ZXhwcigpOwotICAgIEFTU0VSVChmdW5jRXhw
cik7CisgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHIpOwogICAgIFJFTEVBU0VfQVNTRVJUKGZ1
bmNFeHByLT5pc0Z1bmNFeHByTm9kZSgpKTsKICAgICBGdW5jdGlvbkJvZHlOb2RlKiBib2R5ID0g
c3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZnVuY0V4cHIpLT5ib2R5KCk7CisgICAgUkVMRUFT
RV9BU1NFUlQoIXByb2dyYW0tPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpOworICAgIAogICAgIGJv
ZHktPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwotICAgIEFTU0VS
VChib2R5KTsKLSAgICBBU1NFUlQoYm9keS0+aWRlbnQoKS5pc051bGwoKSk7CisgICAgUkVMRUFT
RV9BU1NFUlQoYm9keSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keS0+aWRlbnQoKS5pc051bGwo
KSk7CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxl
ID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgYm9keSwg
dHJ1ZSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIGJvZHks
IHRydWUsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24pOwogICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+
bV9uYW1lVmFsdWUuc2V0KHZtLCBmdW5jdGlvbkV4ZWN1dGFibGUsIGpzU3RyaW5nKCZ2bSwgbmFt
ZS5zdHJpbmcoKSkpOwogCiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IFNvdXJjZUNv
ZGVWYWx1ZSh2bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBtX3NvdXJjZUNvZGUuYWdlKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3Bw
CmluZGV4IDNmNWM2NDVjMDk4ZDUyN2ZjMGM3MjU5ZTk0NDdlZmJlODg2OGEyOWMuLjJmYzJiNzI3
YWZjZWVlMWVjMmM2MjVkZTU2NzViM2JlMWNmNjBkNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKQEAgLTI3LDcgKzI3LDEw
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAjZGVmaW5lIElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRShu
YW1lKSAsIG5hbWUodm0sICNuYW1lKQogI2RlZmluZSBJTklUSUFMSVpFX0tFWVdPUkQobmFtZSkg
LCBuYW1lIyNLZXl3b3JkKHZtLCAjbmFtZSkKLSNkZWZpbmUgSU5JVElBTElaRV9QUklWQVRFX05B
TUUobmFtZSkgLCBuYW1lIyNQcml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tKFByaXZhdGVOYW1l
KCkpKQorI2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFNRShuYW1lKSBcCisgICAgLCBuYW1l
IyNQcml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tKFByaXZhdGVOYW1lKCkpKSBcCisgICAgLCBt
XyMjbmFtZSMjUHVibGljU3RyaW5nUGFpcihuYW1lLCBuYW1lIyNQcml2YXRlTmFtZSkgXAorCiAK
IENvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyhWTSogdm0pCiAgICAgOiBudWxs
SWRlbnRpZmllcigpCkBAIC0zOCw4ICs0MSwyNiBAQCBDb21tb25JZGVudGlmaWVyczo6Q29tbW9u
SWRlbnRpZmllcnMoVk0qIHZtKQogICAgICwgaGFzTmV4dElkZW50aWZpZXIodm0sICJoYXNOZXh0
IikKICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZV09SRChJTklUSUFMSVpFX0tF
WVdPUkQpCiAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5J
VElBTElaRV9QUk9QRVJUWV9OQU1FKQorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05f
TkFNRShJTklUSUFMSVpFX1BST1BFUlRZX05BTUUpCiAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lE
RU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpFX1BSSVZBVEVfTkFNRSkKIHsK
IH0KIAorY29uc3QgSWRlbnRpZmllciogQ29tbW9uSWRlbnRpZmllcnM6OmdldFByaXZhdGVOYW1l
KGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAoreworI2RlZmluZSBSRVRVUk5fSUZfUFJJ
VkFURV9OQU1FX01BVENIRVMobmFtZSkgaWYgKG1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQYWlyLmZp
cnN0ID09IGlkZW50KSByZXR1cm4gJm1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQYWlyLnNlY29uZDsK
KyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKFJF
VFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hFUykKKyN1bmRlZiBSRVRVUk5fSUZfUFJJVkFURV9O
QU1FX01BVENIRVMKKyAgICByZXR1cm4gMDsKK30KKworSWRlbnRpZmllciBDb21tb25JZGVudGlm
aWVyczo6Z2V0UHVibGljTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK3sKKyNk
ZWZpbmUgUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKG5hbWUpIGlmIChtXyMjbmFtZSMj
UHVibGljU3RyaW5nUGFpci5zZWNvbmQgPT0gaWRlbnQpIHJldHVybiBtXyMjbmFtZSMjUHVibGlj
U3RyaW5nUGFpci5maXJzdDsKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFD
SF9QUk9QRVJUWV9OQU1FKFJFVFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hFUykKKyN1bmRlZiBS
RVRVUk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBlbXB0eUlkZW50aWZpZXI7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmgKaW5kZXggZThmOWVkODJiYzc5NDYyMDM4MjY2YjMwMjA3ODIyNDdiMWZhMjdhMy4uOTI0
ZDM2YWM2OTEzNTAzNTdjYjM4MmIxZWYzYjQwYTBhMDhjMGFiYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0yMiw2ICsyMiw3
IEBACiAjZGVmaW5lIENvbW1vbklkZW50aWZpZXJzX2gKIAogI2luY2x1ZGUgIklkZW50aWZpZXIu
aCIKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgogCiAvLyBNYXJrZWRBcmd1bWVudEJ1ZmZlciBvZiBwcm9wZXJ0eSBuYW1lcywgcGFzc2VkIHRv
IGEgbWFjcm8gc28gd2UgY2FuIGRvIHNldCB0aGVtIHVwIHZhcmlvdXMKQEAgLTEzMyw4ICsxMzQs
MTAgQEAKICAgICBtYWNybyhvc3JFeGl0cykgXAogICAgIG1hY3JvKHBhcnNlKSBcCiAgICAgbWFj
cm8ocHJvZmlsZWRCeXRlY29kZXMpIFwKKyAgICBtYWNybyhwcm9taXNlKSBcCiAgICAgbWFjcm8o
cHJvcGVydHlJc0VudW1lcmFibGUpIFwKICAgICBtYWNybyhwcm90b3R5cGUpIFwKKyAgICBtYWNy
byhyZXNvbHZlKSBcCiAgICAgbWFjcm8oc2V0KSBcCiAgICAgbWFjcm8oc2l6ZSkgXAogICAgIG1h
Y3JvKHNsaWNlKSBcCkBAIC0xNTUsNyArMTU4LDE0IEBACiAgICAgbWFjcm8odmFsdWVzKSBcCiAg
ICAgbWFjcm8odmFsdWVPZikgXAogICAgIG1hY3JvKHdpbmRvdykgXAotICAgIG1hY3JvKHdyaXRh
YmxlKQorICAgIG1hY3JvKHdyaXRhYmxlKSBcCisgICAgbWFjcm8oaXRlcmF0b3IpIFwKKyAgICBt
YWNybyhpdGVyYXRvck5leHQpIFwKKyAgICBtYWNybyhyZWplY3QpIFwKKyAgICBtYWNybyhmdWxm
aWxsbWVudEhhbmRsZXIpIFwKKyAgICBtYWNybyhyZWplY3Rpb25IYW5kbGVyKSBcCisgICAgbWFj
cm8oZGVmZXJyZWQpIFwKKyAgICBtYWNybyhjb3VudGRvd25Ib2xkZXIpIFwKIAogI2RlZmluZSBK
U0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZV09SRChtYWNybykgXAogICAgIG1hY3JvKGJy
ZWFrKSBcCkBAIC0yMDMsNyArMjEzLDcgQEAKICAgICBtYWNybyh2b2lkKSBcCiAgICAgbWFjcm8o
d2hpbGUpIFwKICAgICBtYWNybyh3aXRoKSBcCi0gICAgbWFjcm8oeWllbGQpCisgICAgbWFjcm8o
eWllbGQpIFwKIAogI2RlZmluZSBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9Q
Uk9QRVJUWV9OQU1FKG1hY3JvKSBcCiAgICAgbWFjcm8oaXRlcmF0b3IpIFwKQEAgLTIxNiw3ICsy
MjYsMTIgQEAKICAgICBtYWNybyhpbmRleCkgXAogICAgIG1hY3JvKHZhbHVlcykgXAogICAgIG1h
Y3JvKGRlZmVycmVkKSBcCi0gICAgbWFjcm8oY291bnRkb3duSG9sZGVyKQorICAgIG1hY3JvKGNv
dW50ZG93bkhvbGRlcikgXAorICAgIG1hY3JvKE9iamVjdCkgXAorICAgIG1hY3JvKFR5cGVFcnJv
cikgXAorICAgIG1hY3JvKHVuZGVmaW5lZEtleXdvcmQpIFwKKyAgICBtYWNybyhjYWxsKSBcCisg
ICAgbWFjcm8oYXBwbHkpCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0yNDAsMTEgKzI1NSwxNSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjZGVmaW5lIEpTQ19JREVOVElGSUVSX0RFQ0xB
UkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwobmFtZSkgY29uc3QgSWRlbnRpZmllciBuYW1lOwogICAg
ICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShKU0NfSURFTlRJ
RklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFMKQorICAgICAgICBKU0NfRk9SRUFDSF9C
VUlMVElOX0ZVTkNUSU9OX05BTUUoSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJUWV9OQU1F
X0dMT0JBTCkKICN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xP
QkFMCiAKLSNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05B
TUVfR0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSMjUHJpdmF0ZU5hbWU7CisjZGVm
aW5lIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTChu
YW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWUjI1ByaXZhdGVOYW1lOyBjb25zdCBzdGQ6OnBhaXI8
SWRlbnRpZmllciwgSWRlbnRpZmllcj4gbV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXI7CiAgICAg
ICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSlND
X0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMKQogI3VuZGVm
IEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTAorICAg
ICAgICAKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciogZ2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRl
bnRpZmllciYpIGNvbnN0OworICAgICAgICBJZGVudGlmaWVyIGdldFB1YmxpY05hbWUoY29uc3Qg
SWRlbnRpZmllciYpIGNvbnN0OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXgg
MDc1ODc1ZmIyMzE2YTU1NTcwNTBhNjY5MGNkMGY5ODgyNDg0ZjVmMy4uNWFmOTA4NzU0ZTc0N2Y4
Y2FlMGNkMDRhZjhkNDkxNTAwNDY4YzJhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC00MSw3ICs0MSw3IEBACiAjaW5jbHVk
ZSAiSklULmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24u
aCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTmFt
ZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9u
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNl
cHRpb25zLmNwcAppbmRleCA1NTMzNGJlMmY5ODBhOThmN2ZlYTQyYTA1YmUwZjIwYzAxOWZmMGRk
Li4xNmViYWQxMGU0ZTQyYjZiNzg1ZTk3OGQzOGU4NzBlM2I1YTZjNDlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNl
cHRpb25zLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2lu
Y2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRl
ICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCiAKIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgQ29tbW9uU2xvd1BhdGhzIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggMDVlMTFlMGI4
MGEzNDMwYWVhYjIyYjAyMjJhMjEyZjRhOGUyYzQ5Yi4uMzY0Y2M3MTY2NjA4YjUwMDdkNDc3ZDg3
MzkxOGE1ZDY0YjE2ODY1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhjZXB0aW9uSGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhjZXB0aW9uSGVscGVycy5jcHAKQEAgLTgxLDYgKzgxLDExIEBAIEpTT2JqZWN0KiBjcmVh
dGVTdGFja092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogSlNP
YmplY3QqIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCkKIHsKKyAgICAKKyAgICBpZiAoaWRlbnQuaW1wbCgpLT5pc0Vt
cHR5VW5pcXVlKCkpIHsKKyAgICAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2FuJ3Qg
ZmluZCBwcml2YXRlIHZhcmlhYmxlOiBAIiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdldFB1Ymxp
Y05hbWUoaWRlbnQpLnN0cmluZygpKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVSZWZlcmVuY2VF
cnJvcihleGVjLCBtZXNzYWdlKTsKKyAgICB9CiAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmlu
ZygiQ2FuJ3QgZmluZCB2YXJpYWJsZTogIiwgaWRlbnQuc3RyaW5nKCkpKTsKICAgICByZXR1cm4g
Y3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgbWVzc2FnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggMTk4OTc2YmIzZmU2ZTZlOTExNzk4MTJk
MWNhZjliOGJmOWJmZDBiYi4uY2YwZTc1M2E3YzVmNTQ0NjdiNjRkOGUyYTliM2ZiYTI3MTUwMDAx
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtNDg0
LDcgKzQ4NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAKLSAgICBFeGVj
dXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZv
KG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UpOyB9
CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVj
dXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCks
IGZhbHNlLCBmYWxzZSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsgcmV0dXJu
IG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQogICAgIHVuc2lnbmVk
IG51bWJlck9mRnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2Nr
LT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsgfQpAQCAtNTQwLDcgKzU0MCw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxl
SW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1
c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8g
ZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2
YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSk7IH0KIAog
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKQEAgLTYyOCw3ICs2
MjgsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2tG
b3Ioa2luZCk7CiAgICAgfQotICAgICAgICAKKworICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24o
KTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhl
Y3V0YWJsZS0+bmFtZSgpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgaW5mZXJyZWROYW1lKCkg
eyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmluZmVycmVkTmFtZSgpOyB9CiAgICAgSlNT
dHJpbmcqIG5hbWVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5u
YW1lVmFsdWUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25Qcm90b3R5cGUuY3BwCmluZGV4IGMxYjA4YWYyZDgxOGRhZTU3ZTFiMDBmZGExNzNhODE2
MTM3NTI5YjUuLjEyNDkwYzQwZjMzNDE3ZWNhOTIzODUwYTBkYzY2MmRiYmNkNDBmMzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5j
cHAKQEAgLTIyLDEyICsyMiwxMyBAQAogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAK
ICNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1
ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1N0cmluZ0J1
aWxkZXIuaCIKLSNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkxleGVyLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCkBA
IC0xMDgsNyArMTA5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBy
b3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKEpTRnVu
Y3Rpb246OmluZm8oKSkpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8
SlNGdW5jdGlvbio+KHRoaXNWYWx1ZSk7Ci0gICAgICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0RnVu
Y3Rpb24oKSkKKyAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigp
KQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3Ry
aW5nKGV4ZWMsICJmdW5jdGlvbiAiLCBmdW5jdGlvbi0+bmFtZShleGVjKSwgIigpIHtcbiAgICBb
bmF0aXZlIGNvZGVdXG59IikpOwogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUgPSBmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCk7CiAgICAgICAgIFN0cmluZyBzb3VyY2VTdHJp
bmcgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS50b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKaW5kZXggNzJlZDFjNzEyNDA2MTE2OGIw
YWRkZDMxMTZmNzU1YTExN2I4ZmI5MC4uYjM3NDk0MzA5OWUyMTU1YTM5NzcxMzMxMzQ3MDJjMmEy
NGFjYzg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3Rp
dmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRp
b24uY3BwCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgSlNBY3RpdmF0aW9uOjp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAKIGlubGluZSBib29sIEpTQWN0
aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJs
ZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFi
bGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlk
KCkpOwogICAgIGlmIChlbnRyeS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC03Miw3ICs3Miw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQo
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90CiAKIGlubGluZSBib29sIEpT
QWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50
cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7
CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChw
cm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChlbnRyeS5pc051bGwoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkBAIC04OSw3ICs4OSw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6
c3ltYm9sVGFibGVQdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOCiAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8
IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwogICAgIAotICAgIFN5bWJv
bFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1l
LnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxl
KCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChlbnRyeS5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChlbnRyeS5pc1JlYWRPbmx5KCkpIHsK
QEAgLTEzNiw3ICsxMzYsNyBAQCBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxl
UHV0V2l0aEF0dHJpYnV0ZXMoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcAogICAgIFdyaXRlQmFy
cmllckJhc2U8VW5rbm93bj4qIHJlZzsKICAgICB7CiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2Nr
ZXIgbG9ja2VyKHN5bWJvbFRhYmxlKCktPm1fbG9jayk7Ci0gICAgICAgIFN5bWJvbFRhYmxlOjpN
YXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZSgpLT5maW5kKGxvY2tlciwgcHJvcGVydHlO
YW1lLnB1YmxpY05hbWUoKSk7CisgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0
ZXIgPSBzeW1ib2xUYWJsZSgpLT5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAg
ICAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUoKS0+ZW5kKGxvY2tlcikpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5ID0gaXRlci0+
dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3Vt
ZW50c0l0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1l
bnRzSXRlcmF0b3IuY3BwCmluZGV4IDJmY2Y4ODE1YzA1NjgwNTgxMmE3OTkxYTVmZjA2M2Q2ODcz
OTcxNjQuLjlhOTI1ODNhYTBlYzkwZGJiMzI4ZWNkNTBkYzMxMzlhZWYwMjczYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3Iu
Y3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiSlNBcmd1bWVudHNJdGVyYXRvci5oIgog
CiAjaW5jbHVkZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
IAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5jcHAKaW5kZXggOTAwN2I1ZjdkM2YxMDNiMWQyMWIxYTM2NWEyNmMyMTVjMzJiNGQyOC4uYmEw
YTJkMzhlOWM1M2UxNTkzN2Q0NmE4OTUxYThjOGM0NTA3OTI2NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJF
eGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSW5kZXhp
bmdIZWFkZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKICNpbmNsdWRlICJSZWplY3QuaCIKICNpbmNsdWRlIDx3
dGYvQVZMVHJlZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXlJdGVyYXRvci5jcHAKaW5kZXggZDUwNmM0ZWJkMjYyMGVmZDcwNzkzYTg3M2QwODUyZmJkOTc4
Mjg1OS4uY2YzNzA5N2VjMGM2OTI1YTg2N2I4YzAxMGMwZWZjNDA3NDQ4NWYxZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRl
ICJTbG90VmlzaXRvcklubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCmluZGV4IGNjYTY4ODhiZjk4YTAyODY0
NmNhM2RkZGYzNzYyN2NlMGU3ZDkzMDIuLjMzOWE3YWI3ZjU5NTE1ZTk2YWZiN2VjNGI4NzQxZTdh
YThlMTY2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
Y3BwCkBAIC0zMiw3ICszMiw5IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNOb3RBbk9iamVjdC5oIgorI2luY2x1ZGUg
IkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk51bWJlck9iamVjdC5oIgorI2luY2x1ZGUg
Ik9wZXJhdGlvbnMuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0
Zi9TdHJpbmdFeHRyYXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsSW5saW5lcy5oCmluZGV4IGY3Yzg0NDY0NTA5MmIyNTA4MDVlNmU4ZDQ4MzJjOTk4YmRiODli
NTQuLmQ3OTVkZDU2YTk3ZGRiNTk3YzA5MGZjMmUwYjdmMzA4ZTMzZWJjYTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKQEAgLTI3LDggKzI3LDEw
IEBACiAjZGVmaW5lIEpTQ2VsbElubGluZXNfaAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisj
aW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJEZWZlckdDLmgiCiAjaW5j
bHVkZSAiSGFuZGxlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRl
ICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDI0
MTk2NDYxMGJiNDQyN2IxODYzNzMzNDZlMjRmNWE4MmQwY2RjYzQuLmFjZTZjMTQ3ZTQ5N2ZlZTIw
MjkyZmI1NTM5NzYwZDVkNjk4MjljZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0zNCw3ICszNCw4IEBACiAjaW5jbHVkZSAiRnVuY3Rpb25Q
cm90b3R5cGUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJKU0FycmF5
LmgiCi0jaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiIAorI2luY2x1ZGUgIkpTQm91bmRGdW5j
dGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3QuaCIKICNpbmNsdWRlICJKU05vdEFuT2JqZWN0LmgiCiAjaW5jbHVkZSAiSW50ZXJw
cmV0ZXIuaCIKQEAgLTEwOSw2ICsxMTAsMTQgQEAgdm9pZCBKU0Z1bmN0aW9uOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGludCBsZW5ndGgKICAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIobGVuZ3Ro
KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogCitKU0Z1bmN0aW9uKiBK
U0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgSlNG
dW5jdGlvbiogZnVuY3Rpb24gPSBjcmVhdGUodm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCk7
CisgICAgZnVuY3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNT
dHJpbmcoJnZtLCBleGVjdXRhYmxlLT5uYW1lKCkuc3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkgfCBEb250RW51bSk7CisgICAgZnVuY3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcihleGVjdXRhYmxlLT5wYXJhbWV0ZXJDb3VudCgpKSwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHJldHVybiBmdW5jdGlvbjsK
K30KKwogT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUqIEpTRnVuY3Rpb246OmNyZWF0ZUFsbG9jYXRp
b25Qcm9maWxlKEV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IGlubGluZUNhcGFjaXR5KQogewogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC0xNDIsNyArMTUxLDcgQEAgY29uc3QgU3RyaW5nIEpT
RnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAg
IHJldHVybiBleHBsaWNpdE5hbWU7CiAgICAgCiAgICAgY29uc3QgU3RyaW5nIGFjdHVhbE5hbWUg
PSBuYW1lKGV4ZWMpOwotICAgIGlmICghYWN0dWFsTmFtZS5pc0VtcHR5KCkgfHwgaXNIb3N0RnVu
Y3Rpb24oKSkKKyAgICBpZiAoIWFjdHVhbE5hbWUuaXNFbXB0eSgpIHx8IGlzSG9zdE9yQnVpbHRp
bkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBhY3R1YWxOYW1lOwogICAgIAogICAgIHJldHVy
biBqc0V4ZWN1dGFibGUoKS0+aW5mZXJyZWROYW1lKCkuc3RyaW5nKCk7CkBAIC0xNTAsMTAgKzE1
OSwyMCBAQCBjb25zdCBTdHJpbmcgSlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKEV4
ZWNTdGF0ZSogZXhlYykKIAogY29uc3QgU291cmNlQ29kZSogSlNGdW5jdGlvbjo6c291cmNlQ29k
ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKGlzSG9zdEZ1bmN0aW9uKCkpCisgICAgaWYgKGlzSG9zdE9y
QnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiAmanNFeGVj
dXRhYmxlKCktPnNvdXJjZSgpOwogfQorICAgIAorYm9vbCBKU0Z1bmN0aW9uOjppc0hvc3RPckJ1
aWx0aW5GdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzSG9zdEZ1bmN0aW9uKCkgfHwg
aXNCdWlsdGluRnVuY3Rpb24oKTsKK30KKworYm9vbCBKU0Z1bmN0aW9uOjppc0J1aWx0aW5GdW5j
dGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuICFpc0hvc3RGdW5jdGlvbigpICYmIGpzRXhlY3V0
YWJsZSgpLT5pc0J1aWx0aW5GdW5jdGlvbigpOworfQogCiB2b2lkIEpTRnVuY3Rpb246OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKQEAgLTI3Nyw3
ICsyOTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIoRXhlY1N0
YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBzbG90QmFzZQogICAgIGlmICghY2FsbGVyLmlzT2Jq
ZWN0KCkgfHwgIWFzT2JqZWN0KGNhbGxlciktPmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbGVyKTsKICAgICBKU0Z1bmN0aW9u
KiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2FsbGVyKTsKLSAgICBpZiAoZnVuY3Rp
b24tPmlzSG9zdEZ1bmN0aW9uKCkgfHwgIWZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJp
Y3RNb2RlKCkpCisgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpIHx8
ICFmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxlcik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkZ1bmN0aW9uLmNhbGxlciB1c2VkIHRv
IHJldHJpZXZlIHN0cmljdCBjYWxsZXIiKSkpOwogfQpAQCAtMjk5LDcgKzMxOCw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTRnVuY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFs
dWUgc2xvdEJhc2UsIEVuY29kCiBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RG
dW5jdGlvbigpKQorICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigp
KQogICAgICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpIHsKQEAgLTM2MSw3ICszODAsNyBAQCBib29sIEpT
RnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5Tgogdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJh
eSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7CiAgICAgSlNGdW5jdGlv
biogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsKLSAgICBpZiAoIXRo
aXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkgJiYgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJv
cGVydGllcykpIHsKKyAgICBpZiAoIXRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9u
KCkgJiYgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpIHsKICAgICAgICAgLy8g
TWFrZSBzdXJlIHByb3RvdHlwZSBoYXMgYmVlbiByZWlmaWVkLgogICAgICAgICBQcm9wZXJ0eVNs
b3Qgc2xvdCh0aGlzT2JqZWN0KTsKICAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+
Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5wcm90b3R5cGUsIHNsb3QpOwpAQCAtMzc3LDcgKzM5Niw3IEBAIHZvaWQgSlNGdW5jdGlvbjo6
Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywKIHZvaWQgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0
aW9uKj4oY2VsbCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkpIHsKKyAg
ICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkgewogICAgICAgICBC
YXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MjUsNyArNDQ0LDcgQEAgYm9vbCBKU0Z1bmN0aW9u
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3AKIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQ
cm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CiAg
ICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsK
LSAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICBpZiAodGhpc09iamVj
dC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIEJhc2U6OmRlZmlu
ZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJv
d0V4Y2VwdGlvbik7CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5wcm90b3R5cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uaAppbmRleCA3Y2QxNGI4YzJkODAwZjYxYmRjMTJlZGQyZGYwNGQzNWZhMDYxOWI2Li45OTVj
OWQxMWJkODk4Mzg2ZjdhMjBjNDE2MzRmYTdjYzliNzY5OGU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC02OCw2ICs2OCw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uOwogICAgICAgICB9CiAgICAgICAgIAor
ICAgICAgICBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlQnVpbHRpbkZ1bmN0aW9uKFZNJiwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiwgSlNHbG9iYWxPYmplY3QqKTsKKyAgICAgICAgCiAgICAgICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAgIAogICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBTdHJpbmcgbmFtZShFeGVjU3RhdGUqKTsKQEAgLTE0NSw2ICsxNDcsOSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hw
b2ludDsKICAgICAgICAgfQogCisgICAgICAgIGJvb2wgaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24o
KSBjb25zdDsKKyAgICAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0OworCiAgICAg
cHJvdGVjdGVkOgogICAgICAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBP
dmVycmlkZXNWaXNpdENoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTT2Jq
ZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3Ry
dWN0b3JJbmxpbmVzLmgKaW5kZXggMmRkYzI5ZjcxODk3YmI1MWQzOTBiMDZiMjVhNzM4MzM4NzRi
YTBjMS4uZWRkMzQ0OWNlNDdiMTczNWU4ZTVkYmIwNWYzMThlM2Q1NWYzYmU2MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdD
b25zdHJ1Y3RvcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCkBAIC0yNiw2ICsyNiw3
IEBACiAjaWZuZGVmIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzX2gK
ICNkZWZpbmUgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXNfaAogCisj
aW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1
ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0Nv
bnN0cnVjdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IDZkYjg2Mjc0YzNi
ODc0YWFhZGU1MTUxODk4MjY3MjZmYjEzNmMxNzMuLmYyNGVhNzMwM2RmOTY5ZGJkMmRjYTUyYzg2
ZDExYzc4YzAwZGI5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0yNyw2ICsy
Nyw3IEBACiAjZGVmaW5lIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lc19oCiAKICNpbmNs
dWRlICJBcnJheUJ1ZmZlclZpZXcuaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgog
I2luY2x1ZGUgIkRlZmVyR0MuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkhlbHBlcnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVz
LmgKaW5kZXggNDU5OTk3YTQ2NGI5MTE5NDc3YjFiZTg0ZTM2YzRlMjk2NmFjZWY4NS4uOGU1ZmY4
Mjc5MWU2ZmY4ZDRlYjljMzczNjkxZTQzM2ViN2QxNmFlZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzX2gKICNkZWZpbmUgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzX2gKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50
aWZpZXJzLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJz
LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDJjMjc0YzFhN2Q0ODFjMDdkZjBkMmJl
YjNiMjkzMWEzOTA3YTVlNjYuLjA2ZTU0Yzg0ZTc3YjkwMzJiYWExZDJkZjQ3YTFjNzJlODBiN2Rl
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKQEAgLTM0Niw3ICszNDYsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1Zh
bHVlIHByb3RvdHlwZSkKIAogICAgIC8vIENvbnN0cnVjdG9ycwogCi0gICAgSlNDZWxsKiBvYmpl
Y3RDb25zdHJ1Y3RvciA9IE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIE9iamVjdENvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCkpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CisgICAgT2JqZWN0Q29uc3RydWN0b3IqIG9i
amVjdENvbnN0cnVjdG9yID0gT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgT2JqZWN0Q29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5n
ZXQoKSksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKKyAgICBtX29iamVjdENvbnN0cnVjdG9y
LnNldCh2bSwgdGhpcywgb2JqZWN0Q29uc3RydWN0b3IpOwogICAgIEpTQ2VsbCogZnVuY3Rpb25D
b25zdHJ1Y3RvciA9IEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgRnVuY3Rpb25Db25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdl
dCgpKSwgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CiAgICAgSlNDZWxsKiBhcnJheUNvbnN0
cnVjdG9yID0gQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBBcnJheUNvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2Fy
cmF5UHJvdG90eXBlLmdldCgpKTsKIApAQCAtNDMyLDcgKzQzMywxMCBAQCB2b2lkIEpTR2xvYmFs
T2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKICAgICBHbG9iYWxQcm9wZXJ0eUluZm8g
c3RhdGljR2xvYmFsc1tdID0gewogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+TmFOLCBqc05hTigpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSks
CiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5JbmZpbml0eSwg
anNOdW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCwganNVbmRlZmluZWQoKSwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2
bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLCBqc1VuZGVmaW5lZCgpLCBEb250RW51
bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2
bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkUHJpdmF0ZU5hbWUsIGpzVW5kZWZpbmVk
KCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJv
cGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPk9iamVjdFByaXZhdGVOYW1lLCBvYmplY3RDb25z
dHJ1Y3RvciwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+VHlwZUVycm9yUHJpdmF0ZU5hbWUsIG1f
dHlwZUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5KQogICAgIH07CiAgICAgYWRkU3RhdGljR2xvYmFscyhzdGF0aWNHbG9iYWxzLCBXVEZfQVJS
QVlfTEVOR1RIKHN0YXRpY0dsb2JhbHMpKTsKICAgICAKQEAgLTYwOCw2ICs2MTIsNyBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3ludGF4RXJyb3JD
b25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdHlwZUVycm9y
Q29uc3RydWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX1VSSUVycm9y
Q29uc3RydWN0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX29iamVjdENv
bnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcm9taXNlQ29u
c3RydWN0b3IpOwogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZXZhbEZ1bmN0
aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
CmluZGV4IGIwY2FkM2RjNTQ3MGY3YzdhMGU1NzBiZGNkMmRmZmE4OTVlMmFhMGMuLjNhNjE2YzZm
MDVlZGYxZDI5NWFmODQ0MWFhNjY1MDBmYjkyYTRhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNjcsNiArNjcsNyBAQCBjbGFzcyBK
U1N0YWNrOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgTWljcm90YXNrOwog
Y2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjsKK2NsYXNzIE9iamVjdENvbnN0cnVjdG9yOwog
Y2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwogY2xhc3Mg
UmVnRXhwQ29uc3RydWN0b3I7CkBAIC0xNTgsNiArMTU5LDcgQEAgcHJvdGVjdGVkOgogICAgIFdy
aXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX3R5cGVFcnJvckNvbnN0cnVjdG9y
OwogICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX1VSSUVycm9yQ29u
c3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlzZUNvbnN0cnVjdG9yPiBtX3Byb21p
c2VDb25zdHJ1Y3RvcjsKKyAgICBXcml0ZUJhcnJpZXI8T2JqZWN0Q29uc3RydWN0b3I+IG1fb2Jq
ZWN0Q29uc3RydWN0b3I7CiAKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9ldmFsRnVu
Y3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fY2FsbEZ1bmN0aW9uOwpAQCAt
MzMwLDYgKzMzMiw3IEBAIHB1YmxpYzoKICAgICBSZWdFeHBDb25zdHJ1Y3RvciogcmVnRXhwQ29u
c3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cENvbnN0cnVjdG9yLmdldCgpOyB9CiAK
ICAgICBFcnJvckNvbnN0cnVjdG9yKiBlcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4g
bV9lcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CisgICAgT2JqZWN0Q29uc3RydWN0b3IqIG9iamVj
dENvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RDb25zdHJ1Y3Rvci5nZXQoKTsg
fQogICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGV2YWxFcnJvckNvbnN0cnVjdG9yKCkgY29u
c3QgeyByZXR1cm4gbV9ldmFsRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgIE5hdGl2ZUVy
cm9yQ29uc3RydWN0b3IqIHJhbmdlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1f
cmFuZ2VFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CiAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ciogcmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNl
RXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQpAQCAtNTgxLDcgKzU4NCw3IEBAIGlubGluZSBib29s
IEpTR2xvYmFsT2JqZWN0OjpoYXNPd25Qcm9wZXJ0eUZvcldyaXRlKEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lCiAKIGlubGluZSBib29sIEpTR2xvYmFsT2JqZWN0OjpzeW1ib2xUYWJsZUhh
c1Byb3BlcnR5KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgU3ltYm9sVGFibGVF
bnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGlj
TmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5s
aW5lR2V0KHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgcmV0dXJuICFlbnRyeS5pc051bGwoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IDJi
NjdhMWQ5ZWVkODRlOTk1NmY4YmI5NjgzODRjODRjYWVhNTNjZmYuLjJlYTJjMjRlNmVhYjRjZDBk
N2ZmZWQ2NjVlZjRhZTQxYWYwNzUwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGdldENs
YXNzUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENsYXNzSW5mbyogY2xhc3MK
ICAgICAgICAgaW50IGhhc2hTaXplTWFzayA9IHRhYmxlLT5jb21wYWN0U2l6ZSAtIDE7CiAgICAg
ICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSB0YWJsZS0+dGFibGU7CiAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDw9IGhhc2hTaXplTWFzazsgKytpLCArK2VudHJ5KSB7Ci0gICAgICAgICAg
ICBpZiAoZW50cnktPmtleSgpICYmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBEb250RW51bSkg
fHwgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpICYmICEoKGVudHJ5LT5hdHRy
aWJ1dGVzKCkgJiBGdW5jdGlvbikgJiYgZGlkUmVpZnkpKQorICAgICAgICAgICAgaWYgKGVudHJ5
LT5rZXkoKSAmJiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IChtb2RlID09
IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKSAmJiAhKChlbnRyeS0+YXR0cmlidXRlcygpICYg
QnVpbHRpbk9yRnVuY3Rpb24pICYmIGRpZFJlaWZ5KSkKICAgICAgICAgICAgICAgICBwcm9wZXJ0
eU5hbWVzLmFkZChlbnRyeS0+a2V5KCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTYxOCw3ICsx
NjE4LDcgQEAgdm9pZCBKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUoRXhl
Y1N0YXRlKiBleGVjKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIFByb3BlcnR5U2xv
dCBzbG90KHRoaXMpOwogICAgICAgICBmb3IgKEhhc2hUYWJsZTo6Q29uc3RJdGVyYXRvciBpdGVy
ID0gaGFzaFRhYmxlLT5iZWdpbih2bSk7IGl0ZXIgIT0gaGFzaFRhYmxlLT5lbmQodm0pOyArK2l0
ZXIpIHsKLSAgICAgICAgICAgIGlmIChpdGVyLT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikKKyAg
ICAgICAgICAgIGlmIChpdGVyLT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikKICAg
ICAgICAgICAgICAgICBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChnbG9iYWxPYmplY3QoKS0+Z2xv
YmFsRXhlYygpLCAqaXRlciwgdGhpcywgSWRlbnRpZmllcigmdm0sIGl0ZXItPmtleSgpKSwgc2xv
dCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yMjM2LDYgKzIyMzYsMTYgQEAgdm9pZCBKU09iamVj
dDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb24KICAgICBwdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgZnVuY3Rpb24sIGF0
dHJpYnV0ZXMpOwogfQogCit2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RCdWlsdGluRnVuY3Rpb24o
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUm
IHByb3BlcnR5TmFtZSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpCit7CisgICAgU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFt
ZS5wdWJsaWNOYW1lKCk7CisgICAgaWYgKCFuYW1lKQorICAgICAgICBuYW1lID0gdm0ucHJvcGVy
dHlOYW1lcy0+YW5vbnltb3VzLmltcGwoKTsKKyAgICBBU1NFUlQobmFtZSk7CisgICAgSlNGdW5j
dGlvbiogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHN0
YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIGdsb2Jh
bE9iamVjdCk7CisgICAgcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRy
aWJ1dGVzKTsKK30KKwogdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0
aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpCiB7CiAgICAgU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJs
aWNOYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCAw
MmIxMzdiMzUwYzJmYTgzMjViZDNiOTY0NzExMmFiZTg3NmYzODNmLi5kZGU1OTdlZmZhZWMwZjFi
OGQ0NGMyOTExOTUwMzAxZjA2MDA3ZTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJCdXR0ZXJmbHkuaCIKICNp
bmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKLSNpbmNsdWRlICJD
b21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkNvcHlXcml0ZUJhcnJpZXIuaCIKICNpbmNs
dWRlICJEZWZlckdDLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgpAQCAtNTgxLDYgKzU4MCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHB1dERpcmVjdFVuZGVmaW5lZChQcm9wZXJ0eU9mZnNldCBvZmZzZXQp
IHsgbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KS0+c2V0VW5kZWZpbmVkKCk7IH0KIAogICAgIHZv
aWQgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFBy
b3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50
cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICB2b2lkIHB1dERpcmVjdEJ1aWx0aW5G
dW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgRnVuY3Rp
b25FeGVjdXRhYmxlKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgdm9pZCBwdXREaXJlY3RO
YXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25z
dCBQcm9wZXJ0eU5hbWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24s
IEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggNDAyNjE5NjMzZmEwNmZkMjU0YjNmMmE3YThjYzcxZTgwN2FhZjkx
MS4uMTdkMmFiNjVhODhmZmIxM2ZhOWE2YzhmNTgzY2E4NDRhZjgzMjI0MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNw
cApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkpTUHJvbWlzZURlZmVycmVkLmgiCiAjaW5j
bHVkZSAiSlNQcm9taXNlRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlUHJvdG90eXBl
LmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCiAj
aW5jbHVkZSAiTnVtYmVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmNwcAppbmRleCA2OGE4YmQ4N2QzOGFkYmJiOWRkMmFjOWVjNGI0OWQ1ZWY0NTQ5
ZDU2Li4yMzdjNDJiYjBkYTBmMTY2NzZlYjExYWRlODE4MGE3YjA2ZDk4ZWI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmNwcApAQCAtMjksNyArMjksOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKIAorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgi
CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0
b3IuaAppbmRleCBmNDM2MmZmMzU0ZWU2YTUwMjIxYmI3MzFkMWEyNjExZTZkZDYxYmMwLi5kMDcz
NzE5ZGUxNjBkMmYyOTIxMTBhNTk2YTEwNWUyZmEyMTE1ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCkBAIC0z
MSw3ICszMSw2IEBACiAKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5n
LmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5
LmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuaAppbmRleCAyYjFjZGRkYzU4NDFkNjBkMTU3YTJlNjFmNzAyYjBlZTVmYTFkNjc2Li5l
MzkzNDE2MGFlYTkyNmVmMTU5MzJmODc5MGUyNGM1MmFmMDJkMzVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKQEAgLTI0LDcgKzI0LDYgQEAKICNkZWZpbmUgSlNT
dHJpbmdfaAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiQ29tbW9uSWRlbnRp
ZmllcnMuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlEZXNj
cmlwdG9yLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCkBAIC00NzIsMzMgKzQ3MSw2IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIGlubGluZSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5n
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBqc05vbnRyaXZpYWxT
dHJpbmcoJmV4ZWMtPnZtKCksIHMpOyB9CiAgICAgaW5saW5lIEpTU3RyaW5nKiBqc093bmVkU3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBqc093bmVkU3Ry
aW5nKCZleGVjLT52bSgpLCBzKTsgfQogCi0gICAgQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5n
OjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi0gICAgewotICAgICAgICBpZiAocHJvcGVy
dHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKLSAgICAgICAgICAgIHNs
b3Quc2V0VmFsdWUodGhpcywgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGpzTnVt
YmVyKG1fbGVuZ3RoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOwotICAgICAgICBpZiAo
aSA8IG1fbGVuZ3RoKSB7Ci0gICAgICAgICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5v
dEFuSW5kZXgpOyAvLyBObyBuZWVkIGZvciBhbiBleHBsaWNpdCBjaGVjaywgdGhlIGFib3ZlIHRl
c3Qgd291bGQgYWx3YXlzIGZhaWwhCi0gICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERv
bnREZWxldGUgfCBSZWFkT25seSwgZ2V0SW5kZXgoZXhlYywgaSkpOwotICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAg
ICAgICAgICAgCi0gICAgQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9w
ZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKLSAgICB7Ci0gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPCBtX2xlbmd0aCkg
ewotICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHks
IGdldEluZGV4KGV4ZWMsIHByb3BlcnR5TmFtZSkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCiAgICAgaW5saW5l
IGJvb2wgaXNKU1N0cmluZyhKU1ZhbHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxsKCkgJiYgdi5hc0Nl
bGwoKS0+Y2xhc3NJbmZvKCkgPT0gSlNTdHJpbmc6OmluZm8oKTsgfQogCiAgICAgLy8gLS0tIEpT
VmFsdWUgaW5saW5lcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC01MjgsMzIgKzUw
MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gdG9XVEZTdHJpbmdTbG93Q2Fz
ZShleGVjKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIFN0cmluZyBpbmxpbmVKU1ZhbHVl
Tm90U3RyaW5ndG9TdHJpbmcoY29uc3QgSlNWYWx1ZSYgdmFsdWUsIEV4ZWNTdGF0ZSogZXhlYykK
LSAgICB7Ci0gICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgICAgIGlmICh2YWx1ZS5p
c0ludDMyKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0ubnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVl
LmFzSW50MzIoKSk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc0RvdWJsZSgpKQotICAgICAgICAgICAg
cmV0dXJuIHZtLm51bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZS5hc0RvdWJsZSgpKTsKLSAgICAgICAg
aWYgKHZhbHVlLmlzVHJ1ZSgpKQotICAgICAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMt
PnRydWVLZXl3b3JkLnN0cmluZygpOwotICAgICAgICBpZiAodmFsdWUuaXNGYWxzZSgpKQotICAg
ICAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPmZhbHNlS2V5d29yZC5zdHJpbmcoKTsK
LSAgICAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIHZtLnByb3Bl
cnR5TmFtZXMtPm51bGxLZXl3b3JkLnN0cmluZygpOwotICAgICAgICBpZiAodmFsdWUuaXNVbmRl
ZmluZWQoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRL
ZXl3b3JkLnN0cmluZygpOwotICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgU3RyaW5nIEpTVmFsdWU6OnRv
V1RGU3RyaW5nSW5saW5lKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKLSAgICB7Ci0gICAgICAgIGlm
IChpc1N0cmluZygpKQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTU3RyaW5nKj4o
YXNDZWxsKCkpLT52YWx1ZShleGVjKTsKLQotICAgICAgICByZXR1cm4gaW5saW5lSlNWYWx1ZU5v
dFN0cmluZ3RvU3RyaW5nKCp0aGlzLCBleGVjKTsKLSAgICB9Ci0KIH0gLy8gbmFtZXNwYWNlIEpT
QwogCiAjZW5kaWYgLy8gSlNTdHJpbmdfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZ0lubGluZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzhjMDVmYzgwZDg4ZTg1MzdjOWQy
YTVlYWI5ZmYwYmE5YjYwYTc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNTdHJp
bmdJbmxpbmVzX2gKKyNkZWZpbmUgSlNTdHJpbmdJbmxpbmVzX2gKKworI2luY2x1ZGUgIkNvbW1v
bklkZW50aWZpZXJzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRl
ICJKU1N0cmluZy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworQUxXQVlTX0lOTElORSBib29sIEpT
U3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgaWYgKHByb3BlcnR5
TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CisgICAgICAgIHNsb3Quc2V0
VmFsdWUodGhpcywgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGpzTnVtYmVyKG1f
bGVuZ3RoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25l
ZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaSA8IG1fbGVuZ3RoKSB7Cisg
ICAgICAgIEFTU0VSVChpICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCk7IC8vIE5vIG5lZWQg
Zm9yIGFuIGV4cGxpY2l0IGNoZWNrLCB0aGUgYWJvdmUgdGVzdCB3b3VsZCBhbHdheXMgZmFpbCEK
KyAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGdldElu
ZGV4KGV4ZWMsIGkpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHJl
dHVybiBmYWxzZTsKK30KKworQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQ
cm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYgc2xvdCkKK3sKKyAgICBpZiAocHJvcGVydHlOYW1lIDwgbV9sZW5ndGgpIHsKKyAg
ICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4
KGV4ZWMsIHByb3BlcnR5TmFtZSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitBTFdBWVNfSU5MSU5FIFN0cmluZyBpbmxpbmVKU1Zh
bHVlTm90U3RyaW5ndG9TdHJpbmcoY29uc3QgSlNWYWx1ZSYgdmFsdWUsIEV4ZWNTdGF0ZSogZXhl
YykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGlmICh2YWx1ZS5pc0ludDMyKCkp
CisgICAgICAgIHJldHVybiB2bS5udW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNJbnQzMigpKTsK
KyAgICBpZiAodmFsdWUuaXNEb3VibGUoKSkKKyAgICAgICAgcmV0dXJuIHZtLm51bWVyaWNTdHJp
bmdzLmFkZCh2YWx1ZS5hc0RvdWJsZSgpKTsKKyAgICBpZiAodmFsdWUuaXNUcnVlKCkpCisgICAg
ICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT50cnVlS2V5d29yZC5zdHJpbmcoKTsKKyAgICBp
ZiAodmFsdWUuaXNGYWxzZSgpKQorICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+ZmFs
c2VLZXl3b3JkLnN0cmluZygpOworICAgIGlmICh2YWx1ZS5pc051bGwoKSkKKyAgICAgICAgcmV0
dXJuIHZtLnByb3BlcnR5TmFtZXMtPm51bGxLZXl3b3JkLnN0cmluZygpOworICAgIGlmICh2YWx1
ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZp
bmVkS2V5d29yZC5zdHJpbmcoKTsKKyAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOworfQorICAgIAorQUxXQVlTX0lOTElORSBTdHJpbmcgSlNWYWx1ZTo6dG9XVEZT
dHJpbmdJbmxpbmUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIGlmIChpc1N0cmluZygp
KQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNTdHJpbmcqPihhc0NlbGwoKSktPnZhbHVl
KGV4ZWMpOworICAgIAorICAgIHJldHVybiBpbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmco
KnRoaXMsIGV4ZWMpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAppbmRleCAyYWMyNTI0YzVk
ZmRhM2QxMjI0OWQ3NzkwYWRjMzEyOWUzYzBlODcxLi5mYmM4Yjg5NWVhZTZhZjc4ODgzOWJlYjVl
ODNkN2I2Yjk3OTI4ZmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcApAQCAtNjQsNiArNjQsOCBAQCB2b2lkIEpTU3lt
Ym9sVGFibGVPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdAogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcih0aGlzT2Jq
ZWN0LT5zeW1ib2xUYWJsZSgpLT5tX2xvY2spOwogICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjpp
dGVyYXRvciBlbmQgPSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5lbmQobG9ja2VyKTsKICAg
ICAgICAgZm9yIChTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdCA9IHRoaXNPYmplY3QtPnN5
bWJvbFRhYmxlKCktPmJlZ2luKGxvY2tlcik7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAg
ICAgaWYgKGl0LT5rZXktPmlzRW1wdHlVbmlxdWUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIGlmICghKGl0LT52YWx1ZS5nZXRBdHRyaWJ1dGVzKCkgJiBEb250RW51
bSkgfHwgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpCiAgICAgICAgICAgICAg
ICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcihleGVjLCBpdC0+a2V5LmdldCgpKSk7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3lt
Ym9sVGFibGVPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9s
VGFibGVPYmplY3QuaAppbmRleCBiNWIyMGE4NDViNmFiNjQ0MjRiMzdlMzFiMjc3NGVmOTA1MzUz
ZjdmLi5kMDNiMjQ1MTFjMmRlMTk1OWZiNWY1NmQ2NDljNjRkMGVmZTA2ODU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCkBA
IC03Miw3ICs3Miw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogewogICAgIFN5bWJv
bFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgQ29uY3Vy
cmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICBTeW1ib2xUYWJs
ZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5
TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIg
PSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAo
aXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1ZTsKQEAgLTg3LDcg
Kzg3LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiB7CiAgICAgU3ltYm9sVGFibGUm
IHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9sVGFibGUoKTsKICAgICBDb25jdXJyZW50SklU
TG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2spOwotICAgIFN5bWJvbFRhYmxlOjpNYXA6
Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1
YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJv
bFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChpdGVyID09
IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgU3lt
Ym9sVGFibGVFbnRyeTo6RmFzdCBlbnRyeSA9IGl0ZXItPnZhbHVlOwpAQCAtMTA0LDcgKzEwNCw3
IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogewogICAgIFN5bWJvbFRhYmxlJiBzeW1i
b2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgQ29uY3VycmVudEpJVExvY2tl
ciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVy
YXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNO
YW1lKCkpOworICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJs
ZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoaXRlciA9PSBzeW1i
b2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFN5bWJvbFRh
YmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1ZTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBp
bmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dCgKICAgICB7CiAgICAgICAgIFN5bWJvbFRhYmxlJiBz
eW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgICAgIEdDU2FmZUNvbmN1
cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jaywgZXhlYy0+dm0oKS5oZWFw
KTsKLSAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxl
LmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICAgICAgU3ltYm9s
VGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9w
ZXJ0eU5hbWUudWlkKCkpOwogICAgICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9j
a2VyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYm9vbCB3YXNGYXQ7CkBA
IC0xNTksNyArMTU5LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRl
cygKICAgICB7CiAgICAgICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5
bWJvbFRhYmxlKCk7CiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRh
YmxlLm1fbG9jayk7Ci0gICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBz
eW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAg
ICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxv
Y2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFi
bGUuZW5kKGxvY2tlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIFN5bWJv
bFRhYmxlRW50cnkmIGVudHJ5ID0gaXRlci0+dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTG9va3VwLmNwcAppbmRleCBhODA2ZGQwNTJhMGNiZWU0Y2FjMmNhYTZlMDhjNjcxNjAw
NWMyNzBjLi5hOTc2NTIwMWI5ZjUxODY0MTQyM2RkZTBmZTBlMmU1MWE4Y2U3M2JjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9p
ZCBIYXNoVGFibGU6OmRlbGV0ZVRhYmxlKCkgY29uc3QKIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlv
blNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCog
dGhpc09iaiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIEFTU0VSVCh0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSk7Ci0gICAgQVNTRVJUKGVudHJ5
LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbik7CisgICAgQVNTRVJUKGVudHJ5LT5hdHRyaWJ1dGVz
KCkgJiBCdWlsdGluT3JGdW5jdGlvbik7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICB1
bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHRoaXNPYmot
PmdldERpcmVjdE9mZnNldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKQEAgLTc5LDkg
Kzc5LDEzIEBAIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCoKICAgICAgICAgaWYgKHRoaXNPYmotPnN0
YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAK
LSAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oCi0gICAgICAgICAgICB2
bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZW50cnktPmZ1bmN0aW9u
TGVuZ3RoKCksCi0gICAgICAgICAgICBlbnRyeS0+ZnVuY3Rpb24oKSwgZW50cnktPmludHJpbnNp
YygpLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVz
KCkgJiBCdWlsdGluKQorICAgICAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0QnVpbHRpbkZ1bmN0
aW9uKHZtLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBlbnRyeS0+YnVp
bHRpbkdlbmVyYXRvcigpKHZtKSwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oCisgICAgICAg
ICAgICAgICAgdm0sIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5
LT5mdW5jdGlvbkxlbmd0aCgpLAorICAgICAgICAgICAgICAgIGVudHJ5LT5mdW5jdGlvbigpLCBl
bnRyeS0+aW50cmluc2ljKCksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAgICAgICB9CiAgICAg
ICAgIG9mZnNldCA9IHRoaXNPYmotPmdldERpcmVjdE9mZnNldCh2bSwgcHJvcGVydHlOYW1lLCBh
dHRyaWJ1dGVzKTsKICAgICAgICAgQVNTRVJUKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAppbmRleCBiZGU4M2Q0YTZmYzM1
NTc3ODUwZTMxZTg4YmMzOWZkMDVmN2JjZTUyLi5kYmEzODllOWUyNDNkZDBlY2IyYmE5OGYzOTRk
NDA3OWY5ZGVhOTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9M
b29rdXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaApAQCAt
NDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAvLyBpZS4gdHlwZWRlZiBKU1ZhbHVl
ICgqR2V0RnVuY3Rpb24pKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBiYXNlT2JqZWN0KQogICAgIHR5
cGVkZWYgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgR2V0RnVuY3Rpb247CiAgICAgdHlwZWRl
ZiBQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYyBQdXRGdW5jdGlvbjsKKyAgICB0eXBlZGVm
IEZ1bmN0aW9uRXhlY3V0YWJsZSogKCpCdWlsdGluR2VuZXJhdG9yKShWTSYpOwogCiAgICAgY2xh
c3MgSGFzaEVudHJ5IHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC02OCwx
MSArNjksMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbV9pbnRyaW5z
aWM7CiAgICAgICAgIH0KIAorICAgICAgICBCdWlsdGluR2VuZXJhdG9yIGJ1aWx0aW5HZW5lcmF0
b3IoKSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBCdWlsdGluKTsgcmV0dXJuIG1fdS5i
dWlsdGluR2VuZXJhdG9yLmdlbmVyYXRvclZhbHVlOyB9CiAgICAgICAgIE5hdGl2ZUZ1bmN0aW9u
IGZ1bmN0aW9uKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pOyByZXR1
cm4gbV91LmZ1bmN0aW9uLmZ1bmN0aW9uVmFsdWU7IH0KICAgICAgICAgdW5zaWduZWQgY2hhciBm
dW5jdGlvbkxlbmd0aCgpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKTsg
cmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KG1fdS5mdW5jdGlvbi5sZW5ndGgpOyB9
CiAKLSAgICAgICAgR2V0RnVuY3Rpb24gcHJvcGVydHlHZXR0ZXIoKSBjb25zdCB7IEFTU0VSVCgh
KG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVydHkuZ2V0OyB9Ci0g
ICAgICAgIFB1dEZ1bmN0aW9uIHByb3BlcnR5UHV0dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0
dHJpYnV0ZXMgJiBGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5LnB1dDsgfQorICAgICAg
ICBHZXRGdW5jdGlvbiBwcm9wZXJ0eUdldHRlcigpIGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1
dGVzICYgQnVpbHRpbk9yRnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0eS5nZXQ7IH0KKyAg
ICAgICAgUHV0RnVuY3Rpb24gcHJvcGVydHlQdXR0ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1fYXR0
cmlidXRlcyAmIEJ1aWx0aW5PckZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVydHkucHV0OyB9
CiAKICAgICAgICAgaW50cHRyX3QgbGV4ZXJWYWx1ZSgpIGNvbnN0IHsgQVNTRVJUKCFtX2F0dHJp
YnV0ZXMpOyByZXR1cm4gbV91LmxleGVyLnZhbHVlOyB9CiAKQEAgLTk0LDYgKzk2LDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIGludHB0cl90IGxlbmd0aDsgLy8gbnVtYmVy
IG9mIGFyZ3VtZW50cyBmb3IgZnVuY3Rpb24KICAgICAgICAgICAgIH0gZnVuY3Rpb247CiAgICAg
ICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgICAgIEJ1aWx0aW5HZW5lcmF0b3IgZ2VuZXJh
dG9yVmFsdWU7CisgICAgICAgICAgICAgICAgaW50cHRyX3QgdW51c2VkOworICAgICAgICAgICAg
fSBidWlsdGluR2VuZXJhdG9yOworICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAg
ICBHZXRGdW5jdGlvbiBnZXQ7CiAgICAgICAgICAgICAgICAgUHV0RnVuY3Rpb24gcHV0OwogICAg
ICAgICAgICAgfSBwcm9wZXJ0eTsKQEAgLTIwOSw3ICsyMTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBwcml2YXRlOgogICAgICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IEhhc2hFbnRyeSogZW50
cnkoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKICAgICAgICAgewotICAgICAgICAg
ICAgU3RyaW5nSW1wbCogaW1wbCA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CisgICAgICAg
ICAgICBTdHJpbmdJbXBsKiBpbXBsID0gcHJvcGVydHlOYW1lLnVpZCgpOwogICAgICAgICAgICAg
aWYgKCFpbXBsKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAKQEAgLTI0OSw3
ICsyNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaWYgKCFlbnRyeSkgLy8gbm90IGZv
dW5kLCBmb3J3YXJkIHRvIHBhcmVudAogICAgICAgICAgICAgcmV0dXJuIFBhcmVudEltcDo6Z2V0
T3duUHJvcGVydHlTbG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKLSAg
ICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikKKyAgICAgICAgaWYgKGVu
dHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikKICAgICAgICAgICAgIHJldHVy
biBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChleGVjLCBlbnRyeSwgdGhpc09iaiwgcHJvcGVydHlO
YW1lLCBzbG90KTsKIAogICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqLCBl
bnRyeS0+YXR0cmlidXRlcygpLCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSk7CkBAIC0yODYsNyAr
MjkyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGlmICghZW50cnkpIC8vIG5vdCBmb3Vu
ZCwgZm9yd2FyZCB0byBwYXJlbnQKICAgICAgICAgICAgIHJldHVybiBQYXJlbnRJbXA6OmdldE93
blByb3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCi0gICAg
ICAgIEFTU0VSVCghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikpOworICAgICAgICBB
U1NFUlQoIShlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pKTsKIAogICAg
ICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqLCBlbnRyeS0+YXR0cmlidXRlcygp
LCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjk1
LDcgKzMwMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGlubGluZSB2b2lkIHB1dEVudHJ5KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIGJhc2UsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKICAgICB7CiAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBmdW5jdGlvbiBwdXQgaXQgYXMg
YW4gb3ZlcnJpZGUgcHJvcGVydHkuCi0gICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYg
RnVuY3Rpb24pIHsKKyAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JG
dW5jdGlvbikgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU09iamVjdCo+KHNsb3QudGhpc1ZhbHVlKCkpKQogICAgICAgICAgICAgICAgIHRo
aXNPYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKICAg
ICAgICAgfSBlbHNlIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBSZWFkT25seSkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggZDVlNzI4YzJjZDEwMjBhNDdlNGFkY2Q2NDljZDFmZmZhNWNkNmE4
My4uZGNhMmZkOGQxZjZhYzIzYjhmZjgxN2NiYjE4ZmFhZTdiY2Q1OTcwMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTM4LDYgKzM4LDIwIEBAIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6Ok5hdGl2ZUVy
cm9yQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAordm9p
ZCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25z
dCBTdHJpbmcmIG5hbWUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIG5hbWUpOwor
ICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICAKKyAgICBOYXRpdmVFcnJvclByb3Rv
dHlwZSogcHJvdG90eXBlID0gTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5hbWUsIHRoaXMpOworICAgIAorICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOyAvLyBFQ01BIDE1LjExLjcuNQorICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUg
fCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBtX2Vycm9yU3RydWN0dXJlLnNldCh2bSwgdGhp
cywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSkpOworICAgIEFTU0VSVChtX2Vycm9yU3RydWN0dXJlKTsKKyAgICBBU1NFUlQobV9lcnJv
clN0cnVjdHVyZS0+aXNPYmplY3QoKSk7Cit9CisKIHZvaWQgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
cjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewog
ICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8TmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvcio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCmluZGV4IDc0MGQzZjkzMzI5MmZkMmFj
Y2I0Yjk5MDM0NDMxMmI5MzE5YWUxMTAuLjQzOGEzYWZiOWJiMGY2NDEyYzk3OTMyMjMwYzg4NzEw
OTYxZjU0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUVycm9yQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
YXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKQEAgLTUxLDE5ICs1MSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlKCkgeyByZXR1cm4gbV9lcnJvclN0
cnVjdHVyZS5nZXQoKTsgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBw
cm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkKLSAgICAgICAgewotICAgICAg
ICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIG5hbWUpOwotICAgICAgICAgICAgQVNTRVJU
KGluaGVyaXRzKGluZm8oKSkpOwotCi0gICAgICAgICAgICBOYXRpdmVFcnJvclByb3RvdHlwZSog
cHJvdG90eXBlID0gTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5hbWUsIHRoaXMpOwotCi0gICAgICAgICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIERvbnREZWxldGUg
fCBSZWFkT25seSB8IERvbnRFbnVtKTsgLy8gRUNNQSAxNS4xMS43LjUKLSAgICAgICAgICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnRE
ZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKLSAgICAgICAgICAgIG1fZXJyb3JTdHJ1Y3R1
cmUuc2V0KHZtLCB0aGlzLCBFcnJvckluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlKSk7Ci0gICAgICAgICAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVy
ZSk7Ci0gICAgICAgICAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZS0+aXNPYmplY3QoKSk7Ci0g
ICAgICAgIH0KKyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKFZNJiwgU3RydWN0
dXJlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eVNsb3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCmlu
ZGV4IGQ5MzhmYTMxNjQ1YWYyNmI3NTg1MTRkYjZiMjQ3OGYxODNlOWVlZTEuLmNmZTljNGQzMmJh
NzY4Yzc0ZTRmZmJiMTkxMzUyNzlkZWJmMTE3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCkBAIC00Miw2ICs0Miw4IEBAIGVudW0gQXR0cmlidXRl
IHsKICAgICBGdW5jdGlvbiAgICAgPSAxIDw8IDQsICAvLyBwcm9wZXJ0eSBpcyBhIGZ1bmN0aW9u
IC0gb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCiAgICAgQWNjZXNzb3IgICAgID0gMSA8
PCA1LCAgLy8gcHJvcGVydHkgaXMgYSBnZXR0ZXIvc2V0dGVyCiAgICAgQ3VzdG9tQWNjZXNzb3Ig
PSAxIDw8IDYsCisgICAgQnVpbHRpbiAgICAgICAgID0gMSA8PCA3LCAvLyBwcm9wZXJ0eSBpcyBh
IGJ1aWx0aW4gZnVuY3Rpb24gLSBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKKyAgICBC
dWlsdGluT3JGdW5jdGlvbiA9IEJ1aWx0aW4gfCBGdW5jdGlvbiwgLy8gaGVscGVyIG9ubHkgdXNl
ZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogfTsKIAogY2xhc3MgUHJvcGVydHlTbG90IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcApp
bmRleCBiYzUxNmIwNmQ2NjUxZjBlNjgyYTIwMTdiZGY4YjAzYmFiZWQ2ZWEyLi4yYzI0MzRiODdk
MDRmNzQ5Y2IxMmU2MDJhYjU0Nzg0OTQ2YTkxZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCkBAIC0yMyw2ICsyMyw3IEBA
CiAjaW5jbHVkZSAiUmVnRXhwQ29uc3RydWN0b3IuaCIKIAogI2luY2x1ZGUgIkVycm9yLmgiCisj
aW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2lu
Y2x1ZGUgIlJlZ0V4cE1hdGNoZXNBcnJheS5oIgogI2luY2x1ZGUgIlJlZ0V4cFByb3RvdHlwZS5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5j
cHAKaW5kZXggODlkN2FjMWI4Y2JmMWRiMGUxMjZmMWZjNzk2ZGZkNWZjODRiMmU1OS4uOWRkYTBi
YThkZTE0MTJlYWY0ZDI5MWRjZjBjNmIzOTY1N2ZiNjc3YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCkBAIC0yNCw3ICsyNCw3IEBA
CiAjaW5jbHVkZSAiQXJyYXlQcm90b3R5cGUuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1
ZGUgIkpTQXJyYXkuaCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNPYmpl
Y3QuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCmluZGV4IGIyMDM4ODhkM2MxNmNkYTNjMDAzNTA2
MjA4YWUwODY5NWRjNWRhYWEuLmQwMjY2YTU5ZWYzZjU1YWEzNjk0ZjVmNzQxOGNmNzhlMGFlMGQ4
YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU1NldC5oIgorI2luY2x1ZGUgIkpT
U3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk1hcERhdGEuaCIKICNpbmNsdWRlICJTZXRQcm90
b3R5cGUuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVj
dC5jcHAKaW5kZXggNDQwYTYwOTQyMTkzMzgwMzFlNTkyN2FmNDZiMjg5ZGJjZmI1YTcyOC4uODBl
N2VhYThjNDkxY2I2ZDU0YTgzMjRjZTY0N2E2Y2RiN2U4ODc4MSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCkBAIC0yMiw3ICsyMiw5IEBACiAj
aW5jbHVkZSAiU3RyaW5nT2JqZWN0LmgiCiAKICNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUg
IkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNs
dWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVk
ZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAKaW5kZXggMDQyOTFmN2U4ZGQyNGU4YWIzM2Q3NWFmMWRhNDU2OGYyYmM5
OWU2OC4uMWVjYWI4NWMwYmRiMjg2OTg5NDU3N2E3NDEyNTRlMzY0NDE0OWQ4OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0yNywxMiArMjcsMTgg
QEAKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2lu
Y2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRHVtcENvbnRleHQuaCIKKyNp
bmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRl
ICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiTG9va3VwLmgiCisjaW5jbHVkZSAiUHJvcGVydHlNYXBIYXNoVGFibGUuaCIK
ICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5s
aW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCisjaW5jbHVkZSAiU3RydWN0dXJl
SW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oIgogI2luY2x1
ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3Vu
dGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNTJjY2Y0MjNhMTA0
M2UxMDc5ZjJkOGIxODk0MjE5ODkwZTcxZjJiYy4uMDIwNjk1ZmFjODNlZDRlNTE4NWI3MGU2OTY5
OTYzYTJkZTlhMzY3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKICNpbmNsdWRlICJBcml0eUNoZWNrRmFp
bFJldHVyblRodW5rcy5oIgogI2luY2x1ZGUgIkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2lu
dC5oIgorI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgogI2luY2x1ZGUgIkNhbGxGcmFt
ZUlubGluZXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2RlQ2FjaGUu
aCIKQEAgLTU1LDcgKzU2LDkgQEAKICNpbmNsdWRlICJKU0FQSVZhbHVlV3JhcHBlci5oIgogI2lu
Y2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKLSNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJK
U0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRl
ICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1
ZGUgIkpTTmFtZVNjb3BlLmgiCkBAIC02OCwxMyArNzEsMTYgQEAKICNpbmNsdWRlICJMb29rdXAu
aCIKICNpbmNsdWRlICJNYXBEYXRhLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKKyNpbmNsdWRlICJQ
YXJzZXIuaCIKICNpbmNsdWRlICJQYXJzZXJBcmVuYS5oIgorI2luY2x1ZGUgIlByb3BlcnR5TWFw
SGFzaFRhYmxlLmgiCiAjaW5jbHVkZSAiUmVnRXhwQ2FjaGUuaCIKICNpbmNsdWRlICJSZWdFeHBP
YmplY3QuaCIKICNpbmNsdWRlICJTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oIgogI2luY2x1
ZGUgIlNvdXJjZVByb3ZpZGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTdHJpY3RFdmFsQWN0aXZhdGlv
bi5oIgogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKICNpbmNsdWRlICJXZWFrTWFw
RGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KQEAgLTIyNiw2ICsyMzIsNyBAQCBW
TTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2luRGVmaW5l
T3duUHJvcGVydHkoZmFsc2UpCiAgICAgLCBtX2NvZGVDYWNoZShDb2RlQ2FjaGU6OmNyZWF0ZSgp
KQogICAgICwgbV9lbmFibGVkUHJvZmlsZXIobnVsbHB0cikKKyAgICAsIG1fYnVpbHRpbkV4ZWN1
dGFibGVzKEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlKCp0aGlzKSkKIHsKICAgICBpbnRlcnBy
ZXRlciA9IG5ldyBJbnRlcnByZXRlcigqdGhpcyk7CiAgICAgU3RhY2tCb3VuZHMgc3RhY2sgPSB3
dGZUaHJlYWREYXRhKCkuc3RhY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4
IDVhODQxMDVlYWZiN2FiYmE1ZmE0MzFlZWVkZDU1ZDdhODlmNTVjZTIuLjY5NThhYzM5M2IxYWVm
YzBiZWZiZjZlNGViOGI2ODI1Y2Y3YzlhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlByaXZhdGVOYW1lLmgiCiAjaW5jbHVkZSAi
UHJvdG90eXBlTWFwLmgiCiAjaW5jbHVkZSAiU21hbGxTdHJpbmdzLmgiCisjaW5jbHVkZSAiU291
cmNlQ29kZS5oIgogI2luY2x1ZGUgIlN0cm9uZy5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9y
cy5oIgogI2luY2x1ZGUgIlR5cGVkQXJyYXlDb250cm9sbGVyLmgiCkBAIC02OSw2ICs3MCw3IEBA
CiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtz
OworICAgIGNsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlczsKICAgICBjbGFzcyBDb2RlQmxvY2s7CiAg
ICAgY2xhc3MgQ29kZUNhY2hlOwogICAgIGNsYXNzIENvbW1vbklkZW50aWZpZXJzOwpAQCAtNDk3
LDYgKzQ5OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHJlZ2lzdGVyV2F0Y2hw
b2ludEZvckltcHVyZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImLCBXYXRjaHBvaW50Kik7CiAg
ICAgICAgIC8vIEZJWE1FOiBVc2UgQXRvbWljU3RyaW5nIG9uY2UgaXQgZ290IG1lcmdlZCB3aXRo
IElkZW50aWZpZXIuCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkSW1wdXJlUHJv
cGVydHkoY29uc3QgU3RyaW5nJik7CisgICAgICAgIAorICAgICAgICBCdWlsdGluRXhlY3V0YWJs
ZXMqIGJ1aWx0aW5FeGVjdXRhYmxlcygpIHsgcmV0dXJuIG1fYnVpbHRpbkV4ZWN1dGFibGVzLmdl
dCgpOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwpAQCAtNTM3LDEwICs1NDEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
SlNWYWx1ZSBtX2V4Y2VwdGlvbjsKICAgICAgICAgYm9vbCBtX2luRGVmaW5lT3duUHJvcGVydHk7
CiAgICAgICAgIE93blB0cjxDb2RlQ2FjaGU+IG1fY29kZUNhY2hlOwotICAgICAgICBSZWZDb3Vu
dGVkQXJyYXk8U3RhY2tGcmFtZT4gbV9leGNlcHRpb25TdGFjazsKLQogICAgICAgICBMZWdhY3lQ
cm9maWxlciogbV9lbmFibGVkUHJvZmlsZXI7Ci0KKyAgICAgICAgT3duUHRyPEJ1aWx0aW5FeGVj
dXRhYmxlcz4gbV9idWlsdGluRXhlY3V0YWJsZXM7CisgICAgICAgIFJlZkNvdW50ZWRBcnJheTxT
dGFja0ZyYW1lPiBtX2V4Y2VwdGlvblN0YWNrOwogICAgICAgICBIYXNoTWFwPFN0cmluZywgUmVm
UHRyPFdhdGNocG9pbnRTZXQ+PiBtX2ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludFNldHM7CiAgICAg
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGlt
ZS9KU1N0cmluZ0lubGluZXMuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1
bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBmY2MzODRlOGVkZmMzNGIxNDA4
M2I4NjVkMzczODIwZjQxNjVjNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgKQEAgLTAsMCArMSw0IEBA
CisjaWZuZGVmIFdlYkNvcmVfRldEX0pTU3RyaW5nSW5saW5lc19oCisjZGVmaW5lIFdlYkNvcmVf
RldEX0pTU3RyaW5nSW5saW5lc19oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdJ
bmxpbmVzLmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1
Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwCmluZGV4IDJlZGRjZGJi
OWYwMDZjYTc2MjY2NTBiNDIwMjc4NjI2YjkyNjE0MTcuLjNjNGUwZDdiYmIzMWNhYjEyYjVlNmM5
NzVjNzRkM2Y0ODRlOWNiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1
Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcApAQCAtNDYsNiAr
NDYsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1Zh
bHVlSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nSW5saW5lcy5o
PgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0lEQkFueUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0lEQkFueUN1c3RvbS5jcHAKaW5kZXggNTY0OWM4NWNhMDk1ODc3NDhhM2RhMDZjZGRkMGNh
OTk5ZTUwYjhlNy4uM2Y0ZDhlZmFlYjU3ZjMzMDAzZTczYTdlNzg0MmU0MmM3M2NlNjQ5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcApAQCAtNDcs
NiArNDcsNyBAQAogI2luY2x1ZGUgIkpTSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJKU0lE
QlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5j
bHVkZSA8cnVudGltZS9KU1N0cmluZ0lubGluZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9t
LmNwcAppbmRleCA5ZWFlNzU2OWM3MDYwM2E0ZmVkMGFmMTRjNGY4NzE4Y2RlNjRhNmUxLi5mNDlk
ZmU5MGI0ZTgyZDM5ZWRjYmY5YmEyOWYyYWU3OTljMGRkZjI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcApAQCAtMzcsNyArMzcs
NyBAQAogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSlNJREJPYmplY3RT
dG9yZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pT
U3RyaW5nLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZ0lubGluZXMuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcAppbmRleCA3NGZkMzU0YjI4NjA3Y2Y3ODIyZjgwNTM0
Nzk3MGY1ZDdhYzhjODMyLi41NDM0YjNiN2Q2YzU2ZWNiMGEwM2EyNzk0YzY3MzZhOWFkZmI3MGUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3Jl
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0
b3JlQ3VzdG9tLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIklEQk9iamVjdFN0b3Jl
LmgiCiAjaW5jbHVkZSAiSlNJREJJbmRleC5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4K
LSNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU1N0cmlu
Z0lubGluZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGJkNjc1MGI1OTI2
NjA0NDZkNWU1ZWE5MTkwOTkxN2U4M2ZjMmJkYTIuLjlhYWVkNjM2ZWRiY2Q3MDM3N2JjM2U1ZGFi
MmY3ZmQ1OGZiODNiYTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxNC0wMS0yOSAgT2xpdmVy
IEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8g
aW1wbGVtZW50IEpTIGJ1aWx0aW5zIGluIEpTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc4ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIHRoZSB0ZXN0IHJlc3VsdHMgZm9yIG5ldyBlcnJv
ciBtZXNzYWdlcyAobm93IHRoYXQgdGhleSdyZQorICAgICAgICBhY3R1YWxseSBoZWxwZnVsKSwg
YW5kIGFkZGVkIGEganMtcmVncmVzcyB0ZXN0IHRvIHRyYWNrIHBlcmZvcm1hbmNlLgorCisgICAg
ICAgICoganMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL2RvbS9hcnJh
eS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvcmVncmVz
cy9hcnJheS1wcm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBq
cy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBq
cy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuanM6IEFkZGVkLgor
ICAgICAgICAodGVzdDEpOgorICAgICAgICAodGVzdDIpOgorICAgICAgICAodGVzdDMpOgorCiAy
MDE0LTAxLTMwICBLcnp5c3p0b2YgV29sYW5za2kgIDxrLndvbGFuc2tpQHNhbXN1bmcuY29tPgog
CiAgICAgICAgIFtFRkxdIFVwZGF0ZSB0ZXN0IGV4cGVjdGF0aW9ucyBmb3IgV0sxIGFuZCBXSzIg
YWZ0ZXIgcjE2Mjk0NwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0CmluZGV4
IDU0MWI4YzM1OGYwNjhhMGNlYTg4MmMxMDUxNzUzMjUxMTRjZDMzZjcuLmNjYTM2M2RjZTU4ZmJh
OTVhNThjZTQ2ZmNiNDhjMzhiZjU4YWRmNTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2Fy
cmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJheS1ldmVyeS1l
eHBlY3RlZC50eHQKQEAgLTMwLDEyICszMCwxMiBAQCBQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0u
ZXZlcnkoaXNCaWdFbm91Z2hBbmRFeGNlcHRpb24pIHRocmV3IGV4Y2VwdGlvbiBleGNlcHRpbwog
UEFTUyBbMTIsIDU0LCAxOCwgMTMwLCA0NF0uZXZlcnkoaXNCaWdFbm91Z2hBbmRFeGNlcHRpb24p
IHRocmV3IGV4Y2VwdGlvbiBleGNlcHRpb24gZnJvbSBmdW5jdGlvbi4KIAogNS4wIFdyb25nIFR5
cGUgZm9yIENhbGxiYWNrIFRlc3QKLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSg1KSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEz
MCwgNDRdLmV2ZXJ5KCd3cm9uZycpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJy
b3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkobmV3IE9iamVjdCgpKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRd
LmV2ZXJ5KG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNT
IFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCkgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgWzEyLCA1LCA4LCAxMzAs
IDQ0XS5ldmVyeSg1KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUu
ZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwg
NDRdLmV2ZXJ5KCd3cm9uZycpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3Rv
dHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwg
MTMwLCA0NF0uZXZlcnkobmV3IE9iamVjdCgpKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBB
cnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBb
MTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNT
IFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9u
LgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4K
IAogNi4wIEVhcmx5IEV4aXQgKCJTaG9ydCBDaXJjdWl0aW5nIikKIFBBU1MgWzEyLCA1LCA4LCAx
MzAsIDQ0XS5ldmVyeShpc0JpZ0Vub3VnaFNob3J0Q2lyY3VpdCkgaXMgZmFsc2UKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhw
ZWN0ZWQudHh0CmluZGV4IDJjMmE2OGNiMTA2ZGExMGYwODZiMjJjNWJmMmJmNWM4ZmU3OWUzM2Uu
LjVkOWVjYjc1YThkYTc5YmE2NTYwNWU3ZWI5Y2Y4ZmMyNWZlMThhZmIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2pzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVj
dGVkLnR4dApAQCAtMTUsNyArMTUsNyBAQCBQQVNTIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxs
KHVuZGVmaW5lZCwgMCwgMSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZQogUEFTUyBB
cnJheS5wcm90b3R5cGUuc29ydC5jYWxsKHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3Rv
dHlwZS5zb3J0LmNhbGwodW5kZWZpbmVkKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUuc3BsaWNl
LmNhbGwodW5kZWZpbmVkLCAwLCAxKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmlu
ZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnNwbGljZS5j
YWxsKHVuZGVmaW5lZCwgMCwgMSknKS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuY2Fs
bCh1bmRlZmluZWQsIHt9KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMg
bm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuY2FsbCh1
bmRlZmluZWQsIHt9KScpLgotUEFTUyBBcnJheS5wcm90b3R5cGUuZXZlcnkuY2FsbCh1bmRlZmlu
ZWQsIHRvU3RyaW5nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90
IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZp
bmVkLCB0b1N0cmluZyknKS4KK1BBU1MgQXJyYXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZp
bmVkLCB0b1N0cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBl
LmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSB1bmRlZmluZWQuCiBQQVNTIEFycmF5
LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZykgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0Fy
cmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZyknKS4KIFBBU1Mg
QXJyYXkucHJvdG90eXBlLnNvbWUuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAn
QXJyYXkucHJvdG90eXBlLnNvbWUuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKScpLgogUEFTUyBB
cnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5
LnByb3RvdHlwZS5pbmRleE9mLmNhbGwodW5kZWZpbmVkLCAwKScpLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjEyOTBjMGVlZmY4ZGU0MjE4MzNkOTJkMjdlOTUyNDE5MTc2MDRiOTYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1l
dmVyeS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL2FycmF5LXByb3Rv
dHlwZS1ldmVyeQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNl
cHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5
cGUtZXZlcnkuaHRtbCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2
ZXJ5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU1Y2MxNzFjNDg3NWEzNTg1YmYxNGU1NDE1ZjVjZDBlNTgx
ZDU0NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJv
dG90eXBlLWV2ZXJ5Lmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRl
c3RzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5qcyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTRhYTE2MWMw
Y2U5OGIyYWIxOGEzYTFhMWYwZGZhYWM5ZDdkMmUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzCkBA
IC0wLDAgKzEsMjkgQEAKK3ZhciByZXN1bHQgPSAwOworZnVuY3Rpb24gdGVzdDEoYSkgeworICAg
IHJlc3VsdCA8PCAxOworICAgIHJlc3VsdCsrOworICAgIHJldHVybiB0cnVlOworfQorZnVuY3Rp
b24gdGVzdDIoYSxiKSB7CisgICAgcmVzdWx0IF49IDM7CisgICAgcmVzdWx0ICo9IDM7CisgICAg
cmV0dXJuIHRydWU7Cit9CitmdW5jdGlvbiB0ZXN0MyhhLGIsYykgeworICAgIHJlc3VsdCBePSBy
ZXN1bHQgPj4gMTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordmFyIHJlc3VsdCA9IDA7Cit2YXIg
YXJyYXkgPSBbXQorZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkKKyAgICBhcnJheVtp
XSA9IDE7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTA7IGkrKykgeworICAgIGFycmF5LmV2ZXJ5
KHRlc3QxKTsKKyAgICBhcnJheS5ldmVyeSh0ZXN0Mik7CisgICAgYXJyYXkuZXZlcnkodGVzdDMp
OworfQorCitpZiAocmVzdWx0ICE9IDE0Mjg4MTA0OTYpCisgICAgdGhyb3cgIkVycm9yOiBiYWQg
cmVzdWx0OiAiICsgcmVzdWx0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222722</attachid>
            <date>2014-01-30 13:26:05 -0800</date>
            <delta_ts>2014-01-30 15:01:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140130132603.patch</filename>
            <type>text/plain</type>
            <size>203520</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZTQ0Nzc0OGY2OTgwZDU3YjU5YWY5NjNlZTMwMDg2N2UyYWE3ZmY1Li5mMjZkYTFjZTVmM2YzZWNh
NTExMzUwZWU1MWY3M2VjODJhZjhkMzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
IFRoaXMgcmVzdWx0IG9mIHRoaXMgcmVmYWN0b3JpbmcKKyAgICAgICAgaXMgdGhhdCBDb21tb25J
ZGVudGlmaWVycywgYW5kIGEgZmV3IG90aGVyIG1pc2NlbGxhbmVvdXMgaGVhZGVycyBub3cKKyAg
ICAgICAgbmVlZCB0byBiZSBpbmNsdWRlZCBkaXJlY3RseSBhcyB0aGV5IHdlcmUgZm9ybWVybHkg
Y2FwdHVyZWQgdGhyb3VnaCBvdGhlcgorICAgICAgICBwYXRocy4KKworICAgICAgICBJbiBhZGRp
dGlvbiB0aGlzIGFkZHMgYSBmbGFnIHRvIHRoZSBMb29rdXAgdGFibGUncyBoYXNoZW50cnkgdG8g
aW5kaWNhdGUKKyAgICAgICAgdGhhdCBhIHN0YXRpYyBmdW5jdGlvbiBpcyBhY3R1YWxseSBiYWNr
ZWQgYnkgSlMuIFRoZXJlIGlzIHRoZW4gYSBsb3Qgb2YKKyAgICAgICAgbG9naWMgdG8gdGhyZWFk
IHRoZSBzcGVjaWFsIG5hdHVyZSBvZiB0aGUgZnVuY3RvbiB0byB3aGVyZSBpdCBtYXR0ZXJzLgor
ICAgICAgICBUaGlzIGFsbG93cyB0b1N0cmluZygpLCAuY2FsbGVyLCBldGMgdG8gbWltaWMgdGhl
IGJlaGF2aW91ciBvZiBhIGhvc3QKKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAgICAgTm90ZXMg
b24gd3JpdGluZyBidWlsdGluczoKKyAgICAgICAgIC0gRWFjaCBmdW5jdGlvbiBpcyBjb21waWxl
ZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBvdGhlcnMsIGFuZCB0aG9zZQorICAgICAgICAgICBpbXBs
ZW1lbnRhdGlvbnMgY2Fubm90IGN1cnJlbnRseSBjYXB0dXJlIGFsbCBnbG9iYWwgcHJvcGVydGll
cyAoYXMKKyAgICAgICAgICAgdGhhdCBjb3VsZCBiZSBwb3RlbnRpYWxseSB1bnNhZmUpLiBJZiBh
IGZ1bmN0aW9uIGRvZXMgY2FwdHVyZSBhCisgICAgICAgICAgIGdsb2JhbCB3ZSB3aWxsIGRlbGli
ZXJhdGVseSBjcmFzaC4KKyAgICAgICAgIC0gRm9yIHRob3NlICJnbG9iYWwiIHByb3BlcnRpZXMg
dGhhdCB3ZSBkbyB3YW50IGFjY2VzcyB0bywgd2UgdXNlCisgICAgICAgICAgIHRoZSBAIHByZWZp
eCwgZS5nLiBPYmplY3QodGhpcykgYmVjb21lcyBAT2JqZWN0KHRoaXMpLiBUaGUgQCBpZGVudGlm
aWVycworICAgICAgICAgICBhcmUgcHJpdmF0ZSBuYW1lcywgYW5kIGJlaGF2ZSBqdXN0IGxpa2Ug
cmVndWxhciBwcm9wZXJ0aWVzLCBvbmx5CisgICAgICAgICAgIHdpdGhvdXQgdGhlIHJpc2sgb2Yg
YWR1bHRlcmF0aW9uLiBBZ2FpbiwgaW4gdGhlIEBPYmplY3QgY2FzZSwgd2UKKyAgICAgICAgICAg
ZXhwbGljaXRseSBkdXBsaWNhdGUgdGhlIE9iamVjdENvbnN0cnVjdG9yIHJlZmVyZW5jZSBvbiB0
aGUgR2xvYmFsT2JqZWN0CisgICAgICAgICAgIHNvIHRoYXQgd2UgaGF2ZSBndWFyYW50ZWVkIGFj
Y2VzcyB0byB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgY29uc3RydWN0
b3IuCisgICAgICAgICAtIGNhbGwsIGFwcGx5LCBldmFsLCBhbmQgRnVuY3Rpb24gYXJlIGFsbCBy
ZWplY3RlZCBpZGVudGlmaWVycywgYWdhaW4KKyAgICAgICAgICAgdG8gcHJldmVudCBhbnl0aGlu
ZyBmcm9tIGFjY2lkZW50YWxseSB1c2luZyBhbiBhZHVsdGVyYXRlZCBvYmplY3QuCisgICAgICAg
ICAgIEluc3RlYWQgQGNhbGwgYW5kIEBhcHBseSBhcmUgYXZhaWxhYmxlLCBhbmQgaGFwcGlseSB0
aGV5IGNvbXBsZXRlbHkKKyAgICAgICAgICAgZHJvcCB0aGUgbmVxX3B0ciBpbnN0cnVjdGlvbiBh
cyB0aGV5J3JlIGRlZmluZWQgYXMgYWx3YXlzIGJlaW5nIHRoZQorICAgICAgICAgICBvcmlnaW5h
bCBjYWxsL2FwcGx5IGZ1bmN0aW9ucy4KKworICAgICAgICBUaGVzZSByZXN0cmljdGlvbnMgYXJl
IGp1c3QgaW50ZW5kZWQgdG8gbWFrZSBpdCBoYXJkZXIgdG8gYWNjaWRlbnRhbGx5CisgICAgICAg
IG1ha2UgY2hhbmdlcyB0aGF0IGFyZSBpbmNvcnJlY3QgKGZvciBpbnN0YW5jZSBjYWxsaW5nIHdo
YXRldmVyIGhhcyBiZWVuCisgICAgICAgIGFzc2lnbmVkIHRvIGdsb2JhbC5PYmplY3QsIGluc3Rl
YWQgb2YgdGhlIG9yaWdpbmFsIGNvbnN0cnVjdG9yIGZ1bmN0aW9uKS4KKyAgICAgICAgSG93ZXZl
ciwgbWFraW5nIGEgbWlzdGFrZSBsaWtlIHRoaXMgc2hvdWxkIHJlc3VsdCBpbiBhIHB1cmVseSBz
ZW1hbnRpYworICAgICAgICBlcnJvciBhcyBmdW5kYW1lbnRhbGx5IHRoZXNlIGZ1bmN0aW9ucyBh
cmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlCisgICAgICAgIHJlZ3VsYXIgSlMgY29kZSBp
biB0aGUgaG9zdCBnbG9iYWwsIGFuZCBoYXZlIG5vIG1vcmUgcHJpdmlsZWdlcyB0aGFuCisgICAg
ICAgIGFueSBvdGhlciBKUy4KKworICAgICAgICBUaGUgaW5pdGlhbCBwcm9vZiBvZiBjb25jZXB0
IGlzIEFycmF5LnByb3RvdHlwZS5ldmVyeSwgdGhpcyBzaG93cyBhIDY1JQorICAgICAgICBwZXJm
b3JtYW5jZSBpbXByb3ZlbWVudCwgYW5kIHRoYXQgaW1wcm92ZW1lbnQgaXMgc2lnbmlmaWNhbnRs
eSBodXJ0IGJ5CisgICAgICAgIG91ciBwb29yIG9wdGltaXNhdGlvbiBvZiBvcF9pbi4KKworICAg
ICAgICBBcyB0aGlzIGlzIHN1Y2ggYSBsaW1pdGVkIGZ1bmN0aW9uLCB3ZSBoYXZlIG5vdCB5ZXQg
ZXhwb3J0ZWQgYWxsIHN5bWJvbHMKKyAgICAgICAgdGhhdCB3ZSBjb3VsZCBwb3NzaWJseSBuZWVk
LCBidXQgYXMgd2UgaW1wbGVtZW50IG1vcmUsIHRoZSBsaWtlbGlob29kCisgICAgICAgIG9mIGVu
Y291bnRlcmluZyBtaXNzaW5nIGZlYXR1cmVzIHdpbGwgcmVkdWNlLgorCisgICAgICAgIFRoaXMg
ZGlkIHJlcXVpcmUgYnJlYWtpbmcgb3V0IGEgSlNTdHJpbmdJbmxpbmVzIGhlYWRlciwgYW5kIHJl
cXVpcmVkCisgICAgICAgIGZpeGluZyBhIGZldyBvYmplY3RzIHRoYXQgd2VyZSB0cnlpbmcgdG8g
dXNpbmcgUHJvcGVydHlOYW1lOjpwdWJsaWNOYW1lCisgICAgICAgIHJhdGhlciB0aGFuIFByb3Bl
cnR5TmFtZTo6dWlkLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0
eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dCk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRpY1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWNGdW5jdGlvbkdl
dHRlcik6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tH
ZXR0ZXIpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBidWlsdGlucy9BcnJheS5wcm90b3R5cGUuanM6CisgICAgICAgIChldmVyeSk6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkJ1aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKToKKyAgICAgICAgKEpTQzo6
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSk6CisgICAgICAgICog
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVj
dXRhYmxlczo6Y3JlYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tG
b3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6dG9TdHJpY3RuZXNzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNCdWlsdGluRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBjcmVhdGVfaGFz
aF90YWJsZToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZ2Vu
ZXJhdGUtanMtYnVpbHRpbnM6IEFkZGVkLgorICAgICAgICAoZ2V0Q29weXJpZ2h0KToKKyAgICAg
ICAgKGdldEZ1bmN0aW9ucyk6CisgICAgICAgIChnZW5lcmF0ZUNvZGUpOgorICAgICAgICAobWFu
Z2xlTmFtZSk6CisgICAgICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSWRlbnRp
Zmllcik6CisgICAgICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChTb3VyY2VDb2RlKToK
KyAgICAgICAgKFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKFZNKToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvUHJvdG9DYWxsRnJhbWUuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUp
OgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpM
ZXhlcik6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpM
ZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFy
Pjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAg
ICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcik6CisgICAgICAgICog
cGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OnNldENsb3NlZFZh
cmlhYmxlcyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
Tm9kZTo6Y2FwdHVyZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OnNldENs
b3NlZFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmluaXNoUGFy
c2luZyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRU
b2tlblRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OmdldFVzZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNsb3NlZFZhcmlh
Ymxlcyk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9k
ZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAgICAgICogcnVudGlt
ZS9BcmdMaXN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAg
ICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJh
dG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpn
ZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpD
b21tb25JZGVudGlmaWVycyk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQ
cml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQdWJsaWNO
YW1lKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzRXhjZXB0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxl
OjpleGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpleGVj
dXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aXNCdWlsdGlu
RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1l
L0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFi
bGVHZXQpOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0KToKKyAg
ICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgICogcnVudGltZS9K
U0NlbGxJbmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6c291cmNlQ29kZSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzSG9zdE9y
QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6aXNCdWlsdGluRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIpOgorICAgICAg
ICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9w
ZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgICogcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6Om9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpnZXRDbGFzc1Byb3BlcnR5TmFtZXMpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZ0lubGlu
ZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjppbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9i
amVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgICAgRG9uJ3QgcmVw
b3J0IHByaXZhdGUgbmFtZXMuCisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6c3ltYm9s
VGFibGVQdXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChKU0M6OnNldFVwU3RhdGlj
RnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlND
OjpIYXNoRW50cnk6OmJ1aWx0aW5HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpIYXNoRW50cnk6
OnByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpwcm9wZXJ0eVB1dHRl
cik6CisgICAgICAgIChKU0M6Okhhc2hUYWJsZTo6ZW50cnkpOgorICAgICAgICAoSlNDOjpnZXRT
dGF0aWNQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpnZXRTdGF0aWNWYWx1ZVNsb3QpOgor
ICAgICAgICAoSlNDOjpwdXRFbnRyeSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6YnVp
bHRpbkV4ZWN1dGFibGVzKToKKwogMjAxNC0wMS0zMCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2Vr
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gT25seSBkaXNhYmxlIC1mdHJlZS1kY2Ugb3B0
aW1pemF0aW9uIHdoZW4gY29tcGlsaW5nIHdpdGggR0NDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjkwMTgyNzU0
ZjM1YzMyYmNmZjU3OTU1YTI3MzAwOWIxNmI1OTk2Ny4uMWIxZDUxNGMwOTk2MTQ1NTljMzk2MTM2
NWM1ODgwY2FmZmJjYzEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE0LTAxLTI5
ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3Nz
aWJsZSB0byBpbXBsZW1lbnQgSlMgYnVpbHRpbnMgaW4gSlMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzg4NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0aW5nIGZvciB0aGUgbmV3bHkgcmVxdWly
ZWQgaGVhZGVycy4KKworICAgICAgICBUZXN0OiBqcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1l
dmVyeS5odG1sCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5n
SW5saW5lcy5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9t
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcDoKKwogMjAxNC0w
MS0zMCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIE1v
ZGVybml6ZSBIVFRQSGVhZGVyTWFwIGl0ZXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAppbmRleCA1YmUwNTNmMWUw
ODZiNDNlNjg2YzM2NzRkYWU3YzUxNjA1YTI4NmU3Li4wZWNlZDUxZjNlMmQ1YjYyMWRhZGYwNTc0
OWY1ZTc0NjZhMDZmNTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaApAQCAtMTM2LDcgKzEzNiw3IEBAIGJvb2wgSlND
YWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBlCiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmpl
Y3QpOwogICAgIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwogICAgIAot
ICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkgewor
ICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CiAgICAgICAg
IGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iamVjdC0+Y2xhc3NSZWYoKTsganNDbGFz
czsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgICAgICAvLyBvcHRp
b25hbCBvcHRpbWl6YXRpb24gdG8gYnlwYXNzIGdldFByb3BlcnR5IGluIGNhc2VzIHdoZW4gd2Ug
b25seSBuZWVkIHRvIGtub3cgaWYgdGhlIHByb3BlcnR5IGV4aXN0cwogICAgICAgICAgICAgaWYg
KEpTT2JqZWN0SGFzUHJvcGVydHlDYWxsYmFjayBoYXNQcm9wZXJ0eSA9IGpzQ2xhc3MtPmhhc1By
b3BlcnR5KSB7CkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVu
dD46OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHAKICAg
ICBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHByb3BlcnR5TmFtZVJlZjsKICAgICBKU1ZhbHVlUmVm
IHZhbHVlUmVmID0gdG9SZWYoZXhlYywgdmFsdWUpOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBs
KiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBs
KiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBq
c0NsYXNzID0gdGhpc09iamVjdC0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xh
c3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgICAgICBpZiAoSlNPYmplY3RTZXRQcm9wZXJ0eUNh
bGxiYWNrIHNldFByb3BlcnR5ID0ganNDbGFzcy0+c2V0UHJvcGVydHkpIHsKICAgICAgICAgICAg
ICAgICBpZiAoIXByb3BlcnR5TmFtZVJlZikKQEAgLTM0Myw3ICszNDMsNyBAQCBib29sIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFBybwogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0
KTsKICAgICBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHByb3BlcnR5TmFtZVJlZjsKICAgICAKLSAg
ICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAg
ICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBm
b3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7
IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2Jq
ZWN0RGVsZXRlUHJvcGVydHlDYWxsYmFjayBkZWxldGVQcm9wZXJ0eSA9IGpzQ2xhc3MtPmRlbGV0
ZVByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5hbWVSZWYpCkBAIC01
NjQsNyArNTY0LDcgQEAgSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRp
Y1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHAKIHsKICAgICBKU09iamVjdFJl
ZiB0aGlzUmVmID0gdG9SZWYodGhpcyk7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUg
PSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUg
PSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3Mg
PSBjbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsK
ICAgICAgICAgICAgIGlmIChPcGFxdWVKU0NsYXNzU3RhdGljVmFsdWVzVGFibGUqIHN0YXRpY1Zh
bHVlcyA9IGpzQ2xhc3MtPnN0YXRpY1ZhbHVlcyhleGVjKSkgewogICAgICAgICAgICAgICAgIGlm
IChTdGF0aWNWYWx1ZUVudHJ5KiBlbnRyeSA9IHN0YXRpY1ZhbHVlcy0+Z2V0KG5hbWUpKSB7CkBA
IC02MDAsNyArNjAwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpzdGF0aWNGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEUKICAgICBpZiAoUGFyZW50
OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iaiwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90Mikp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2xvdDIuZ2V0VmFsdWUoZXhlYywgcHJv
cGVydHlOYW1lKSk7CiAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5w
dWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS51
aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmotPmNsYXNz
UmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAg
ICAgICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZSogc3RhdGljRnVuY3Rp
b25zID0ganNDbGFzcy0+c3RhdGljRnVuY3Rpb25zKGV4ZWMpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKFN0YXRpY0Z1bmN0aW9uRW50cnkqIGVudHJ5ID0gc3RhdGljRnVuY3Rpb25zLT5nZXQobmFt
ZSkpIHsKQEAgLTYyNiw3ICs2MjYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmNhbGxiYWNrR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZAogICAgIEpT
T2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqKTsKICAgICBSZWZQdHI8T3BhcXVlSlNT
dHJpbmc+IHByb3BlcnR5TmFtZVJlZjsKICAgICAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9
IHRoaXNPYmotPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRD
bGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0R2V0UHJvcGVydHlDYWxsYmFjayBnZXRQ
cm9wZXJ0eSA9IGpzQ2xhc3MtPmdldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFw
cm9wZXJ0eU5hbWVSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMjdi
YzRjMTdmM2RmZWViNjFkMjUyMzIzZmQ4NzhjNDQ3ODBmNzRjNS4uNDEzNGE2YzFlM2VmMzJiZTg1
YTYyNDVkN2ViNWUwNTUyZmU1MTNlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtNTIsNiArNTIsOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGJpbmRp
bmdzL1NjcmlwdE9iamVjdC5jcHAKICAgICBiaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAKIAorICAg
IGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKKwogICAgIGJ5dGVjb2RlL0FycmF5QWxs
b2NhdGlvblByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAogICAgIGJ5
dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKQEAgLTgxNSwxNiArODE3LDI3IEBAIGFkZF9j
dXN0b21fY29tbWFuZCgKICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7SmF2YVNj
cmlwdENvcmVfSU5TUEVDVE9SX1NDUklQVFNfRElSfS9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlMuanNvbiAt
LW91dHB1dF9oX2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIgLS1v
dXRwdXRfY3BwX2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIgLS1v
dXRwdXRfanNfZGlyICIke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9IiAtLW91
dHB1dF90eXBlIEphdmFTY3JpcHQgLS13cml0ZV9hbHdheXMgJiYgbWtkaXIgLXAgJHtERVJJVkVE
X1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IgJiYgY3AgJHtERVJJVkVEX1NP
VVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5o
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNGcm9udGVu
ZERpc3BhdGNoZXJzLmggJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNw
ZWN0b3JKU1R5cGVCdWlsZGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vaW5zcGVjdG9yCiAgICAgVkVSQkFUSU0pCiAKKyMgSlNDQnVpbHRpbnMKK2ZpbGUoR0xPQiBK
U0NCdWlsdGluc19qc19maWxlcyAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2J1aWx0aW5z
LyouanMiKQorYWRkX2N1c3RvbV9jb21tYW5kKAorICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuY3BwICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAorICAgTUFJTl9ERVBFTkRFTkNZICR7Q01B
S0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucworICAgREVQRU5EUyAk
e0pTQ0J1aWx0aW5zX2pzX2ZpbGVzfQorICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMgJHtKU0NCdWls
dGluc19qc19maWxlc30gJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NC
dWlsdGlucy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRp
bnMuY3BwCisgICBWRVJCQVRJTSkKKwogbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfU09VUkNF
UwogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNC
YWNrZW5kRGlzcGF0Y2hlcnMuY3BwCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENP
UkVfRElSfS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuY3BwCiAgICAgJHtERVJJVkVE
X1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAK
KyAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNw
cAogKQogCiBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTCiAgICAgJHtERVJJVkVE
X1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVy
cy5oCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JK
U0Zyb250ZW5kRGlzcGF0Y2hlcnMuaAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRD
T1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaAorICAgICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAogKQogCiBhZGRfY3VzdG9tX2NvbW1h
bmQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDExNTZl
OTdmZDg4NjI1NTdjOWNmOGQzYjY4YmY0ZDAzYzNlOGJhOGYuLjU1ZDhiNzNmMWFlNzBiYzkyMGY4
MzUxNzJhOWFhNzdmMDZkYjE5MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCkBAIC01Nyw2ICs1Nyw3IEBAIGFsbCA6IFwKICAgICBSZWdFeHBPYmplY3QubHV0
LmggXAogICAgIFN0cmluZ0NvbnN0cnVjdG9yLmx1dC5oIFwKICAgICB1ZGlzODZfaXRhYi5oIFwK
KyAgICBKU0NCdWlsdGlucyBcCiAjCiAKICMgbG9va3VwIHRhYmxlcyBmb3IgY2xhc3NlcwpAQCAt
NzksNiArODAsMTQgQEAgS2V5d29yZExvb2t1cC5oOiBLZXl3b3JkTG9va3VwR2VuZXJhdG9yLnB5
IEtleXdvcmRzLnRhYmxlCiB1ZGlzODZfaXRhYi5oOiAkKEphdmFTY3JpcHRDb3JlKS9kaXNhc3Nl
bWJsZXIvdWRpczg2L2l0YWIucHkgJChKYXZhU2NyaXB0Q29yZSkvZGlzYXNzZW1ibGVyL3VkaXM4
Ni9vcHRhYmxlLnhtbAogCShQWVRIT05QQVRIPSQoSmF2YVNjcmlwdENvcmUpL2Rpc2Fzc2VtYmxl
ci91ZGlzODYgcHl0aG9uICQoSmF2YVNjcmlwdENvcmUpL2Rpc2Fzc2VtYmxlci91ZGlzODYvaXRh
Yi5weSAkKEphdmFTY3JpcHRDb3JlKS9kaXNhc3NlbWJsZXIvdWRpczg2L29wdGFibGUueG1sIHx8
IGV4aXQgMSkKIAorIyBidWlsdGluIGZ1bmN0aW9ucworLlBIT05ZOiBKU0NCdWlsdGlucworCitK
U0NCdWlsdGluczogJChKYXZhU2NyaXB0Q29yZSkvZ2VuZXJhdGUtanMtYnVpbHRpbnMgSlNDQnVp
bHRpbnMuaCBKU0NCdWlsdGlucy5jcHAKK0pTQ0J1aWx0aW5zLmg6ICQoSmF2YVNjcmlwdENvcmUp
L2dlbmVyYXRlLWpzLWJ1aWx0aW5zICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zLyouanMKKwlw
eXRob24gJF4gJEAKKworSlNDQnVpbHRpbnMuY3BwOiBKU0NCdWlsdGlucy5oCiAKICMgSW5zcGVj
dG9yIGludGVyZmFjZXMKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGZl
NTQ0OGRkYzFiY2ZhYTRjNzI5YTFjYzAwZGVhNjI0MzE5MzkwYTIuLmM3MzQyMTJkM2ZiOGQxYTY0
MDRjZWM2ZjZhNWU2MTg3YWViZjNmN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUu
YW0KQEAgLTExNiw2ICsxMTYsMTAgQEAgRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJ
bnRBc3NlbWJseS5oOiBQcm9ncmFtcy9MTEludE9mZnNldHNFeHRyYWN0b3IkKEUKIAkkKEFNX1Zf
R0VOKSQoUlVCWSkgJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Fz
bS5yYiAkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtIFByb2dyYW1zL0xMSW50T2Zmc2V0c0V4dHJhY3RvciQoRVhFRVhUKSAkQAogCSQo
QU1fVl9hdCl0b3VjaCAkQAogCitEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NCdWls
dGlucy5oOiBEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5jcHAKK0Rl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmNwcDogJChzcmNkaXIpL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucyAkKGphdmFzY3JpcHRjb3Jl
X2J1aWx0aW5zX2pzX3NvdXJjZXMpCisJJChBTV9WX0dFTikkKFBZVEhPTikgJF4gJEAKKwogJChs
aWJqYXZhc2NyaXB0Y29yZWd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lU
R1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9PQkpFQ1RTKTogRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvTExJbnRBc3NlbWJseS5oCiAKIGpzYzogJChqYXZhc2NyaXB0Y29yZV9idWlsdF9u
b3NvdXJjZXMpIFByb2dyYW1zL2pzYyQoRVhFRVhUKQpAQCAtMjE2LDYgKzIyMCw3IEBAIEVYVFJB
X0RJU1QgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9LZXl3b3JkTG9va3VwR2VuZXJhdG9y
LnB5IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0tleXdvcmRzLnRhYmxlIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvVEhBTktTIFwKKwkkKGphdmFzY3JpcHRjb3JlX2J1aWx0aW5z
X2pzX25vc291cmNlcykgXAogCSQobGxpbnRfbm9zb3VyY2VzKSBcCiAJJChvZmZsaW5lYXNtX25v
c291cmNlcykKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRl
eCBjZGI1NDI2YjA2YjUyYTk4MjU2ZWU5MDU4YmJhOGYxMWVlYTY5ZWUwLi45OGZhYWE3ZDE3NWFh
NjFmMjA4OTZjZWViMTM4NjNlMjdiMjY2Y2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQpAQCAtMjAsNiArMjAsOCBAQCBqYXZhc2NyaXB0Y29yZV9idWlsdF9u
b3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0Vycm9yUHJvdG90
eXBlLmx1dC5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0RhdGFWaWV3UHJv
dG90eXBlLmx1dC5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9i
amVjdC5sdXQuaCBcCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNDQnVpbHRpbnMu
Y3BwIFwKKwlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5oIFwKIAlE
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU09OT2JqZWN0Lmx1dC5oIFwKIAlEZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCBcCiAJRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNQcm9taXNlUHJvdG90eXBlLmx1dC5oIFwKQEAg
LTM1LDYgKzM3LDkgQEAgamF2YXNjcmlwdGNvcmVfYnVpbHRfbm9zb3VyY2VzICs9IFwKIAlEZXJp
dmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9MTEludERlc2lyZWRPZmZzZXRzLmggXAogCURlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50QXNzZW1ibHkuaAogCitqYXZhc2NyaXB0Y29y
ZV9idWlsdGluc19qc19ub3NvdXJjZXMgKz0gXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9BcnJheS5wcm90b3R5cGUuanMKKwogamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYWxsYmFja0Z1bmN0aW9uLmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FzdC5oIFwKQEAgLTEwMiw2ICsxMDcsOCBAQCBqYXZh
c2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGlu
Z3MvU2NyaXB0T2JqZWN0LmggXAogICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9T
Y3JpcHRWYWx1ZS5jcHAgXAogICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3Jp
cHRWYWx1ZS5oIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmNwcCBcCisgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5FeGVjdXRhYmxlcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlB
bGxvY2F0aW9uUHJvZmlsZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
cnJheUFsbG9jYXRpb25Qcm9maWxlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9BcnJheVByb2ZpbGUuY3BwIFwKQEAgLTEyNDEsNyArMTI0OCw5IEBAIGphdmFzY3JpcHRjb3Jl
X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpT
RnJvbnRlbmREaXNwYXRjaGVycy5jcHAgXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3Jl
L0luc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAgXAotCURlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgKKwlEZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oIFwKKwlEZXJpdmVkU291
cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5jcHAgXAorCURlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmgKIAogbGxpbnRfbm9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagppbmRleCA1ZWRlZmRiZTg1NWY5NmE2
MjY4ZDg1NzNiZWMxZDBjM2Q4NThhYTVjLi5hMTJkYjE4MzQ4NmRmYmJjYTgzZjNhNzhlOWNmOTg2
MzFiMjY1M2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTMw
OSw2ICszMDksNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0
RnVuY3Rpb25DYWxsLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdz
XFNjcmlwdE9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xTY3JpcHRWYWx1ZS5jcHAiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxidWlsdGlu
c1xCdWlsdGluRXhlY3V0YWJsZXMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
Ynl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxieXRlY29kZVxBcnJheVByb2ZpbGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cYnl0ZWNvZGVcQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCIgLz4KQEAgLTcyMSw2
ICs3MjIsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEluc3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JKU0Zyb250ZW5kRGlz
cGF0Y2hlcnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEluc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmNwcCIgLz4KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NCdWlsdGlucy5jcHAiIC8+CiAg
IDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEFycmF5Q29uc3RydWN0b3IubHV0LmgiIC8+CkBAIC03NTAs
NiArNzUyLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xSZWdFeHBPYmplY3QubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcUmVnRXhwUHJvdG90eXBlLmx1dC5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFN0cmluZ0NvbnN0cnVjdG9y
Lmx1dC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEpTQ0J1aWx0aW5zLmgiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEFQSUNhbGxiYWNrRnVuY3Rpb24uaCIgLz4KQEAg
LTc5OCw2ICs4MDEsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2Ny
aXB0RnVuY3Rpb25DYWxsLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5n
c1xTY3JpcHRPYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdz
XFNjcmlwdFZhbHVlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxidWlsdGluc1xC
dWlsdGluRXhlY3V0YWJsZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVj
b2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGJ5dGVjb2RlXEFycmF5UHJvZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cYnl0ZWNvZGVcQnlWYWxJbmZvLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRl
cnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggODdlMTJhNDcxNThiYjYyMjRkNDlmZDYyMjk3
OGM0YTljNDQzNWE2NS4uODY5YzFmNTg5YmNiNjg2ZWI5Y2YyMGMwOTZiZTFiODNhNTUxZTI0YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpA
QCAtNyw2ICs3LDkgQEAKICAgICA8RmlsdGVyIEluY2x1ZGU9ImJpbmRpbmdzIj4KICAgICAgIDxV
bmlxdWVJZGVudGlmaWVyPnswYmFjZTEyMy00NTgyLWVlYmMtOTMxNC03ODE5YjM3NmMxOTh9PC9V
bmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iYnVp
bHRpbnMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezNiOWQ3MmE1LTEzNWItNDNiMy1hNTI0
LWM2ZDJiOWQyOWQzNX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CiAgICAgPEZp
bHRlciBJbmNsdWRlPSJieXRlY29kZSI+CiAgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NzY2MDg4
YTAtMTIxNi00ODU0LWFhNDMtNTYwYzVlMjgzNjY4fTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8
L0ZpbHRlcj4KQEAgLTEwOCw2ICsxMTEsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
YXNzZW1ibGVyXE1hY3JvQXNzZW1ibGVyLmNwcCI+CiAgICAgICA8RmlsdGVyPmFzc2VtYmxlcjwv
RmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnVp
bHRpbnNcQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCI+CisgICAgICA8RmlsdGVyPmJ1aWx0aW5zPC9G
aWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRl
Y29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCI+CiAgICAgICA8RmlsdGVyPmJ5dGVjb2Rl
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0xMzI5LDYgKzEzMzUsOSBAQAogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTVHlw
ZUJ1aWxkZXJzLmNwcCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmNwcCI+CisgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNl
czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91
cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxBUElDYWxsYmFja0Z1bmN0aW9uLmgi
PgpAQCAtMTQ1NCw2ICsxNDYzLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFzc2Vt
YmxlclxYODZBc3NlbWJsZXIuaCI+CiAgICAgICA8RmlsdGVyPmFzc2VtYmxlcjwvRmlsdGVyPgog
ICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnVpbHRpbnNcQnVp
bHRpbkV4ZWN1dGFibGVzLmgiPgorICAgICAgPEZpbHRlcj5idWlsdGluczwvRmlsdGVyPgorICAg
IDwvQ2xDb21waWxlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlB
bGxvY2F0aW9uUHJvZmlsZS5oIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAg
ICA8L0NsSW5jbHVkZT4KQEAgLTI1NTAsNiArMjU2Miw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcQXJyYXlQcm90b3R5cGUubHV0LmgiPgogICAg
ICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NCdWlsdGlu
cy5oIj4KKyAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CisgICAgPC9DbElu
Y2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFZNLmgiPgogICAgICAg
PEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZUNvbW1vbi5wcm9wcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlQ29tbW9uLnByb3BzCmluZGV4IDM2MjJmZmM1NzdjNDNkZGY3MGRh
NTFmZjY4YWQ2NDZmNjMwNGU1NjcuLmM1ODg4NzBjMmZkMTNkNjA3NmQzOGY1MmNhNjIyNWRiMjg3
MmM3ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlQ29tbW9uLnByb3BzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlQ29tbW9uLnByb3BzCkBA
IC01LDcgKzUsNyBAQAogICA8UHJvcGVydHlHcm91cCAvPgogICA8SXRlbURlZmluaXRpb25Hcm91
cD4KICAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
Li5cOy4uXHRvb2xzXDsuLlxydW50aW1lXDsuLlxsbGludFw7Li5caml0XDsuLlxkaXNhc3NlbWJs
ZXJcOy4uXGhlYXBcOy4uXGRlYnVnZ2VyXDsuLlxhc3NlbWJsZXJcOy4uXHByb2ZpbGVyXDsuLlx5
YXJyXDsuLlxpbnRlcnByZXRlclw7Li5cYnl0ZWNvZGVcOy4uXGRmZ1w7Li5cYnl0ZWNvbXBpbGVy
XDsuLlxwYXJzZXJcOy4uXEFQSVw7Li5cZnRsXDsuLlxiaW5kaW5nc1w7Li5caW5zcGVjdG9yXDsk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcSmF2YVNj
cmlwdENvcmVcRGVyaXZlZFNvdXJjZXNcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRl
XDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZVw7JChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVw7JChXZWJLaXRfTGlicmFyaWVzKVxp
bmNsdWRlOyQoV2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZVxwcml2YXRlOyUoQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlw7Li5cdG9vbHNcOy4uXHJ1bnRpbWVcOy4u
XGxsaW50XDsuLlxqaXRcOy4uXGRpc2Fzc2VtYmxlclw7Li5caGVhcFw7Li5cZGVidWdnZXJcOy4u
XGFzc2VtYmxlclw7Li5ccHJvZmlsZXJcOy4uXHlhcnJcOy4uXGludGVycHJldGVyXDsuLlxieXRl
Y29kZVw7Li5cYnVpbHRpbnNcOy4uXGRmZ1w7Li5cYnl0ZWNvbXBpbGVyXDsuLlxwYXJzZXJcOy4u
XEFQSVw7Li5cZnRsXDsuLlxiaW5kaW5nc1w7Li5caW5zcGVjdG9yXDskKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcSmF2YVNjcmlwdENvcmVcRGVyaXZl
ZFNvdXJjZXNcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXDskKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZVw7JChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXGluY2x1ZGVccHJpdmF0ZVw7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlOyQoV2ViS2l0
X0xpYnJhcmllcylcaW5jbHVkZVxwcml2YXRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgICA8Rm9yY2VkSW5jbHVkZUZp
bGVzPklDVVZlcnNpb24uaDslKEZvcmNlZEluY2x1ZGVGaWxlcyk8L0ZvcmNlZEluY2x1ZGVGaWxl
cz4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8TGluaz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMjdlODc2NzQwYTk2NGIwMjg5ODRlZDY3ODE2MTgyMGE1ZGNmNzdjNC4uOTExNTcz
YWIxN2QzMzk3NGFhN2M5YTAxMWRiMjAwYjA5YWY3OGJmYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTkyMiw3ICs5MjIsNiBAQAogCQlBNTAzRkExOTE4OEUwRkIwMDAxMTBGMTQg
LyogSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExMzE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlwdENh
bGxGcmFtZS5jcHAgKi87IH07CiAJCUE1MDNGQTFBMTg4RTBGQjAwMDExMEYxNCAvKiBKYXZhU2Ny
aXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTAzRkExNDE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oICov
OyB9OwogCQlBNTAzRkExQjE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1l
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNG
QTE1MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwICovOyB9Owot
CQlBNTAzRkExQzE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNjE4OEUw
RkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmggKi87IH07CiAJCUE1MDNGQTFE
MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTcxODhF
MEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAgKi87IH07
CiAJCUE1MDNGQTFFMTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90
b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
MDNGQTE4MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUu
aCAqLzsgfTsKIAkJQTUwM0ZBMjExODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlwdEJyZWFrcG9pbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTFG
MTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRCcmVha3BvaW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwMjQsNiArMTAyMyw3IEBACiAJCUE3
MEIwODMyMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwQjA4MzAxN0EwQjc5QjAwREFG
MTRCIC8qIERGR0JpbmFyeVN3aXRjaC5jcHAgKi87IH07CiAJCUE3MEIwODMzMTdBMEI3OUIwMERB
RjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3MEIwODMxMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0
Y2guaCAqLzsgfTsKIAkJQTcxMjM2RTUxMTk1RjMzQzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82
NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzEy
MzZFNDExOTVGMzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0LmNwcCAqLzsgfTsKKwkJQTcx
REE4MEYxODgwREJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxREE4MEUxODgwREJBQjAwRDFGMjk5
IC8qIEpTU3RyaW5nSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUE3MjAyOEI2MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVy
VXRpbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTcyMDI4QjQxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAgKi87IH07
CiAJCUE3MjAyOEI4MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjAyOEI1MTc5NzYw
MUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzIwMjhCQTE3OTc2MDNEMDA5ODAyOEMgLyog
SlNGdW5jdGlvbklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3MjAyOEI5MTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTUw
LDYgKzExNTAsMTAgQEAKIAkJQTdDQTNBRTgxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDQTNBRTIx
N0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5oICovOyB9OwogCQlBN0NBM0FFQjE3REE1MTY4
MDA2NTM4QUYgLyogV2Vha01hcERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTdDQTNBRTkxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRh
LmNwcCAqLzsgfTsKIAkJQTdDQTNBRUMxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0NBM0FFQTE3
REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuaCAqLzsgfTsKKwkJQTdEODAxQTQxODgwRDY2
RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4MDFBMTE4ODBENjZFMDAyNkMzOUIgLyogQnVp
bHRpbkV4ZWN1dGFibGVzLmNwcCAqLzsgfTsKKwkJQTdEODAxQTUxODgwRDY2RTAwMjZDMzlCIC8q
IEJ1aWx0aW5FeGVjdXRhYmxlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTdEODAxQTIxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxl
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3
RDgwMUE4MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIg
LyogSlNDQnVpbHRpbnMuY3BwICovOyB9OworCQlBN0Q4MDFBOTE4ODBENkE4MDAyNkMzOUIgLyog
SlNDQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3RDgwMUE3MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3RDg5Q0YyMTdBMEI4Q0Mw
MDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDg5Q0UzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Js
b2NrLmNwcCAqLzsgfTsKIAkJQTdEODlDRjMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5z
ZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3RDg5Q0U0MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5jcHAg
Ki87IH07CiAJCUE3RDg5Q0Y0MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNl
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODlD
RTUxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI0NjIsNiArMjQ2Niw4IEBA
CiAJCUE3MTIzNkU0MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUT3Bjb2RlczMyXzY0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxOEY2MUExMTc1NEEyMTAwMjQ2NUE3IC8qIFJl
Z0V4cEppdFRhYmxlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBK
aXRUYWJsZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxOEY4MjExMTc4RUI0
QjAwMjQ2NUE3IC8qIGNyZWF0ZV9yZWdleF90YWJsZXMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgZmlsZUVuY29kaW5n
ID0gNDsgcGF0aCA9IGNyZWF0ZV9yZWdleF90YWJsZXM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUE3MURBODBEMTg4MEQ3MUYwMEQxRjI5OSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9ICJnZW5lcmF0ZS1qcy1idWlsdGlu
cyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MURBODBFMTg4MERCQUIwMEQxRjI5
OSAvKiBKU1N0cmluZ0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNTdHJpbmdJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI0
MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDVGVzdFJ1bm5lclV0aWxzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyMDI4QjUxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RS
dW5uZXJVdGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NUZXN0UnVu
bmVyVXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyMDI4QjkxNzk3NjAz
RDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTRnVuY3Rpb25JbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yNTkwLDYgKzI1OTYsMTEgQEAKIAkJQTdDQTNBRTIxN0RBNDFBRTAwNjUzOEFGIC8qIEpT
V2Vha01hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYWtNYXAuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdDQTNBRTkxN0RBNTE2ODAwNjUzOEFGIC8q
IFdlYWtNYXBEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YWtNYXBEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdDQTNBRUExN0RB
NTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYWtNYXBEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgw
MUEwMTg4MEQ2NkUwMDI2QzM5QiAvKiBBcnJheS5wcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBBcnJheS5wcm90b3R5cGUuanM7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhl
Y3V0YWJsZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnVpbHRp
bkV4ZWN1dGFibGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTIx
ODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBCdWlsdGluRXhlY3V0YWJsZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTdEODAxQTYxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ0J1aWx0aW5zLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTcxODgwRDZBODAwMjZDMzlCIC8qIEpT
Q0J1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ0J1aWx0aW5z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RDg5Q0UzMTdBMEI4Q0MwMDc3M0FE
OCAvKiBERkdCYXNpY0Jsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERGR0Jhc2ljQmxvY2suY3BwOyBwYXRoID0gZGZnL0RGR0Jhc2ljQmxvY2suY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0Q4OUNFNDE3QTBCOENDMDA3NzNBRDggLyogREZH
QmxvY2tJbnNlcnRpb25TZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwOyBwYXRoID0gZGZnL0RGR0Jsb2NrSW5zZXJ0aW9u
U2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdEODlDRTUxN0EwQjhDQzAw
NzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IERGR0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHBhdGggPSBkZmcvREZHQmxvY2tJbnNl
cnRpb25TZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5MjYsNiArMjkzNyw3
IEBACiAJCQkJODYwNEY0RjIxNDNBNkM0NDAwQjI5NUY1IC8qIENoYW5nZUxvZyAqLywKIAkJCQlG
NjkyQTg1NDAyNTU1OTdEMDFGRjYwRjcgLyogY3JlYXRlX2hhc2hfdGFibGUgKi8sCiAJCQkJQTcx
OEY4MjExMTc4RUI0QjAwMjQ2NUE3IC8qIGNyZWF0ZV9yZWdleF90YWJsZXMgKi8sCisJCQkJQTcx
REE4MEQxODgwRDcxRjAwRDFGMjk5IC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zICovLAogCQkJCTQ1
RTEyRDg4MDZBNDlCMEYwMEU5REY4NCAvKiBqc2MuY3BwICovLAogCQkJCUY2OEVCQjhDMDI1NUQ0
QzYwMUZGNjBGNyAvKiBjb25maWcuaCAqLywKIAkJCQlGNUMyOTBFNjAyODRGOThFMDE4NjM1Q0Eg
LyogSmF2YVNjcmlwdENvcmVQcmVmaXguaCAqLywKQEAgLTI5MzQsNiArMjk0Niw3IEBACiAJCQkJ
MTQzMkVCRDcwQTM0Q0FENDAwNzE3QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4Q0IxMjBFRDEyQjRF
MDAxRDY0OUYgLyogYXNzZW1ibGVyICovLAogCQkJCUE1NENGMkVBMTg0RUE3MzkwMDIzN0YxOSAv
KiBiaW5kaW5ncyAqLywKKwkJCQlBN0Q4MDE5RjE4ODBENjZFMDAyNkMzOUIgLyogYnVpbHRpbnMg
Ki8sCiAJCQkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovLAogCQkJCTdF
MzlEODFEMEVDMzhFRkEwMDNBRjExQSAvKiBieXRlY29tcGlsZXIgKi8sCiAJCQkJMUM5MDUxM0Uw
QkE5RTg4MzAwODFFOUQwIC8qIENvbmZpZ3VyYXRpb25zICovLApAQCAtMzUwOSw2ICszNTIyLDgg
QEAKIAkJNjUwRkRGOEQwOUQwRkNBNzAwNzY5RTU0IC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQTdEODAxQTYxODgwRDZB
ODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCAqLywKKwkJCQlBN0Q4MDFBNzE4ODBENkE4MDAy
NkMzOUIgLyogSlNDQnVpbHRpbnMuaCAqLywKIAkJCQlCQzE4QzUyMzBFMTZGQzhBMDBCMzQ0NjAg
LyogQXJyYXlQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJQkNEMjAzRTcwRTE3MThGNDAwMkM3RTgy
IC8qIERhdGVQcm90b3R5cGUubHV0LmggKi8sCiAJCQkJQTUxM0U1QzYxODVGOTQzNjAwN0U5NUFE
IC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggKi8sCkBAIC0zODExLDYgKzM4MjYsNyBAQAogCQkJ
CUE3OTBERDZBMTgyRjQ5OTcwMDU4ODgwNyAvKiBKU1NldEl0ZXJhdG9yLmggKi8sCiAJCQkJQkMw
MkU5QjYwRTE4NDJGQTAwMEY5Mjk3IC8qIEpTU3RyaW5nLmNwcCAqLywKIAkJCQlGNjkyQTg2MjAy
NTU1OTdEMDFGRjYwRjcgLyogSlNTdHJpbmcuaCAqLywKKwkJCQlBNzFEQTgwRTE4ODBEQkFCMDBE
MUYyOTkgLyogSlNTdHJpbmdJbmxpbmVzLmggKi8sCiAJCQkJODZFODU1MzgxMTFCOTk2ODAwMUFG
NTFFIC8qIEpTU3RyaW5nQnVpbGRlci5oICovLAogCQkJCTI2MDBCNUE0MTUyQkFBQTcwMDkxRUU1
RiAvKiBKU1N0cmluZ0pvaW5lci5jcHAgKi8sCiAJCQkJMjYwMEI1QTUxNTJCQUFBNzAwOTFFRTVG
IC8qIEpTU3RyaW5nSm9pbmVyLmggKi8sCkBAIC00NTYxLDYgKzQ1NzcsMTYgQEAKIAkJCXBhdGgg
PSByZW1vdGU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlBN0Q4MDE5RjE4
ODBENjZFMDAyNkMzOUIgLyogYnVpbHRpbnMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJ
CWNoaWxkcmVuID0gKAorCQkJCUE3RDgwMUEwMTg4MEQ2NkUwMDI2QzM5QiAvKiBBcnJheS5wcm90
b3R5cGUuanMgKi8sCisJCQkJQTdEODAxQTExODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVj
dXRhYmxlcy5jcHAgKi8sCisJCQkJQTdEODAxQTIxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5F
eGVjdXRhYmxlcy5oICovLAorCQkJKTsKKwkJCXBhdGggPSBidWlsdGluczsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CiAvKiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLwogCiAvKiBC
ZWdpbiBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC00NjA2LDExICs0NjMyLDEx
IEBACiAJCQkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNUNFRUUxNTE4N0YzQkFEMDBFNTVDOTkgLyogSW5zcGVjdG9yQWdl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1QzAyODVEMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12
N0RPcGNvZGUuaCBpbiBIZWFkZXJzICovLAotIAkJCQkyQTY4Mjk1QjE4NzVGODA1MDBCNkMzRTIg
LyogQ29weVdyaXRlQmFycmllci5oIGluIEhlYWRlcnMgKi8sCi0gICAgICAgICAgICAgICAgMkE0
RUM5MEMxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMkE2ODI5NUIxODc1RjgwNTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTJBNEVDOTBDMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJp
ZXJCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNTkzMkE4MTgzQzVBMjYwMEExRUNDQyAv
KiBWTUVudHJ5U2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MzI0MzkzMTg1Njk3MDkwMDJF
RDY5MiAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yU3RyaW5ncy5weSBpbiBIZWFkZXJzICovLAot
IAkJCQlBNTMyNDM5MjE4NTY5NzA5MDAyRUQ2OTIgLyogQ29kZUdlbmVyYXRvckluc3BlY3Rvci5w
eSBpbiBIZWFkZXJzICovLAorCQkJCUE1MzI0MzkyMTg1Njk3MDkwMDJFRDY5MiAvKiBDb2RlR2Vu
ZXJhdG9ySW5zcGVjdG9yLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NEYxN0VFMjc0OTAw
QUJCMjE3IC8qIFRlbXBSZWdpc3RlclNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwRTRCNjQx
ODgwOURENTAwNjhBNDZEIC8qIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRUI1OEMxNTE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3Bl
LmggaW4gSGVhZGVycyAqLywKQEAgLTQ2MjIsNyArNDY0OCw3IEBACiAJCQkJMEY4MzM1QjgxNjM5
QzFFQTAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1ODQwRTI5MTg3Q0E1RTYwMDg0M0IxMCAvKiBpbmxpbmUtYW5kLW1pbmlmeS1zdHlsZXNo
ZWV0cy1hbmQtc2NyaXB0cy5weSBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwRTJCMTg3Q0E3NUIw
MDg0M0IxMCAvKiBqc21pbi5weSBpbiBIZWFkZXJzICovLAotIAkJCQlBNTMyNDM5ODE4NTZBNDg5
MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlMuanNvbiBpbiBIZWFkZXJzICovLAorCQkJCUE1MzI0Mzk4
MTg1NkE0ODkwMDJFRDY5MiAvKiBJbnNwZWN0b3JKUy5qc29uIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTU4NDBFMkExODdDQTc1OTAwODQzQjEwIC8qIHh4ZC5wbCBpbiBIZWFkZXJzICovLAogCQkJCUZF
QTA4NjIwMTgyQjdBMDQwMEY2RDg1MSAvKiBCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBN0E4QUYzNTE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICov
LApAQCAtNDczMyw3ICs0NzU5LDcgQEAKIAkJCQlBMUEwMDlDMDE4MzFBMjJEMDBDRjg3MTEgLyog
TWFjcm9Bc3NlbWJsZXJBUk02NC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQzlEQzUxMzI4REY4
MjAwMkIyQUQ3IC8qIERGR0J5dGVDb2RlUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4
NTMyODE4N0RGREVDMDA4M0I2ODcgLyogRlRMQXZhaWxhYmxlUmVjb3ZlcnkuaCBpbiBIZWFkZXJz
ICovLAotICAgICAgICAgICAgICAgIEE1OTNDRjg3MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0
b3JBZ2VudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTkzQ0Y4NzE4NDAzOENBMDBC
RkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
NTZDMzYxNjI3QjBBRDAwN0YyNzgzIC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2Vu
ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEgLyog
REZHQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZGQzk1ODE0RUY5MEEyMDBD
NzI1MzIgLyogREZHQ0ZBUGhhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtNDg3Miw2ICs0ODk4LDcg
QEAKIAkJCQkwRkVBMEExRDE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkVBMEExRjE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU5NDU1OTMxODI0NzQ0NzAwQ0Mz
ODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdE
ODAxQTkxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkVBMEEwQTE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjQ4NTMyQTE4N0RGREVDMDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTIzMTcwOTYwNjkwMEJCNzIyQyAvKiBGVExDb21t
b25WYWx1ZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNDk0Niw2ICs0OTczLDcgQEAKIAkJCQlCQzE4
QzQwRjBFMTZGNUNEMDBCMzQ0NjAgLyogSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QzI1RjhCQ0UxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZCN0YzOTkxNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nSGVhZGVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlBN0Q4MDFBNTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4
ZWN1dGFibGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5QTE1RUQ4RTQ2MDBGMTY3QjIg
LyogSW5kZXhpbmdIZWFkZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5QjE1
RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNF
RkFCMDE4MDVDQTZEMDA0NzJDRTQgLyogSW5pdGlhbGl6ZUxMVk0uaCBpbiBIZWFkZXJzICovLApA
QCAtNTIxOCw2ICs1MjQ2LDcgQEAKIAkJCQlBNTMyNDM4ODE4NTY4MzM1MDAyRUQ2OTIgLyogSW5z
cGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDU2
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBQcm90ZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc0QzMz
QjE2QUEyRDk1MDA2MkYwMUQgLyogUHJvdG90eXBlTWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQlB
NzFEQTgwRjE4ODBEQkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxpbmVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjkzMzJBNDE0Q0E3REQ5MDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYwQ0Q0QzIxNUYxQTYwNzAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4
TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MwMDhDRTcxODc2MzFCNjAwOTU1QzI0IC8qIE1p
Y3JvdGFzay5oIGluIEhlYWRlcnMgKi8sCkBAIC01ODM2LDYgKzU4NjUsNyBAQAogCQkJCUE3RDg5
Q0YyMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE3MEIwODMyMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTdEODlDRjMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0
aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3RDgwMUE0MTg4MEQ2NkUwMDI2QzM5QiAv
KiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZFQzlEQzQxMzI4
REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVDb2RlUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGRDgyRTIxMTQxNzJDRTMwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZGRkM5NTcxNEVGOTBBMDAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCBp
biBTb3VyY2VzICovLApAQCAtNTg1Miw2ICs1ODgyLDcgQEAKIAkJCQkwRkZGQzk1OTE0RUY5MEE2
MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyRkM3NzIx
NkUxMkY3MTAwMzhEOTc2IC8qIERGR0RDRVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
OEYyQjk5MTcyRjA0RkYwMDdEQkRBNSAvKiBERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQTdEODAxQTgxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE3M0UxMzMwMTc5NjI0Q0QwMEU0REVBOCAvKiBERkdEZXNp
cmVkU3RydWN0dXJlQ2hhaW5zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyQzBGN0NEMTdCQkZD
NUIwMDQ2NEZFNCAvKiBERkdEZXNpcmVkVHJhbnNpdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZFODUzNEIxNzIzQ0RBNTAwQjYxOEY1IC8qIERGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTU5NzYsNyArNjAwNyw3IEBACiAJCQkJMEY2QjFDQzUxODYyQzQ3
ODAwODQ1RDk3IC8qIEZUTFVud2luZEluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5RDMz
OUExODAzQURCNzAwNzNDMkJDIC8qIEZUTFN0YWNrTWFwcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkVBMEExNjE3MDZCQjkwMDBCQjcyMkMgLyogRlRMU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8s
Ci0gCQkJCTdDMDA4Q0QyMTg2RjhBOTMwMDk1NUMyNCAvKiBKU1Byb21pc2VGdW5jdGlvbnMuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJN0MwMDhDRDIxODZGOEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlz
ZUZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNCNTE4NUZDOUU5MDA4NDVE
OTcgLyogRlRMSlNDYWxsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkUxMTcxNzhFMUMw
MDY5MEM3RiAvKiBGVExUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5M0NGN0MxODQw
MzYwMzAwQkZDRTI3IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVm
ZmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAK
aW5kZXggYWYxNGUzM2VhYzA1OTdmMmQ3OGM0YjNjZDE2MzU0MTFkYWJhOTY1ZS4uNjc5MjNmMDgy
M2MyZmJhYjMxMTI4YWRiNTE5ZGM4OWVhMDJiNjUwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNs
dWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCisjaW5jbHVkZSAiSlNGdW5j
dGlvbklubGluZXMuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiVk0uaCIKICNp
bmNsdWRlIDx3dGYvQ29tcGlsYXRpb25UaHJlYWQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlYjQyZjVjYzQz
M2YxNjM2MzQzYmZjOTgyYWEyYWFmYjMzNmU5NDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzCkBAIC0wLDAgKzEsNTEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlv
biBldmVyeShjYWxsYmFjayAvKiwgdGhpc0FyZyAqLykgeworICAgICJ1c2Ugc3RyaWN0IjsKKyAg
ICBpZiAodGhpcyA9PT0gbnVsbCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5
LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCIpOworICAg
IAorICAgIGlmICh0aGlzID09PSB1bmRlZmluZWQpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVy
cm9yKCJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVu
ZGVmaW5lZCIpOworICAgIAorICAgIHZhciBhcnJheSA9IEBPYmplY3QodGhpcyk7CisgICAgdmFy
IGxlbmd0aCA9IGFycmF5Lmxlbmd0aCA+Pj4gMDsKKyAgICAKKyAgICBpZiAodHlwZW9mIGNhbGxi
YWNrICE9PSAiZnVuY3Rpb24iKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXku
cHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOworCisgICAgdmFy
IHRoaXNBcmcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5l
ZDsKKyAgICAKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAg
IGlmICghKGkgaW4gYXJyYXkpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICgh
Y2FsbGJhY2suQGNhbGwodGhpc0FyZywgYXJyYXlbaV0sIGksIGFycmF5KSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzQxZGJiNWY5MjI1ZTI4YTEyZWQzZDE3OThmZjE3NjhlNDM2NzFhNgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
RXhlY3V0YWJsZXMuY3BwCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJC
dWlsdGluRXhlY3V0YWJsZXMuaCIKKworI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRl
ICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKKyNpbmNs
dWRlICJQYXJzZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0J1aWx0aW5FeGVjdXRhYmxlczo6
QnVpbHRpbkV4ZWN1dGFibGVzKFZNJiB2bSkKKyAgICA6IG1fdm0odm0pCisjZGVmaW5lIElOSVRJ
QUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkg
LCBtXyMjbmFtZSMjU291cmNlKG1ha2VTb3VyY2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVy
YWwoc18jI25hbWUsIGxlbmd0aCksIFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCI8YnVp
bHRpbj4iKSkpCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTihJTklUSUFMSVpFX0JVSUxUSU5fU09V
UkNFX01FTUJFUlMpCisjdW5kZWYgRVhQT1NFX0JVSUxUSU5fU1RSSU5HUworeworfQorCitVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGlu
RXhlY3V0YWJsZShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGNvbnN0IElkZW50aWZpZXImIG5h
bWUpCit7CisgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZTsKKyAg
ICBQYXJzZXJFcnJvciBlcnJvcjsKKyAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBw
YXJzZTxQcm9ncmFtTm9kZT4oJm1fdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBKU1BhcnNl
QnVpbHRpbiwgSlNQYXJzZVByb2dyYW1Db2RlLCBlcnJvciwgJnBvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmUpOworCisgICAgaWYgKCFwcm9ncmFtKSB7CisgICAgICAgIGRhdGFMb2coIkZhdGFsIGVy
cm9yIGNvbXBpbGluZyBidWlsdGluIGZ1bmN0aW9uICciLCBuYW1lLnN0cmluZygpLCAiJzogIiwg
ZXJyb3IubV9tZXNzYWdlKTsKKyAgICAgICAgQ1JBU0goKTsKKyAgICB9CisKKyAgICBTdGF0ZW1l
bnROb2RlKiBleHByU3RhdGVtZW50ID0gcHJvZ3JhbS0+c2luZ2xlU3RhdGVtZW50KCk7CisgICAg
UkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0
YXRlbWVudC0+aXNFeHByU3RhdGVtZW50KCkpOworICAgIEV4cHJlc3Npb25Ob2RlKiBmdW5jRXhw
ciA9IHN0YXRpY19jYXN0PEV4cHJTdGF0ZW1lbnROb2RlKj4oZXhwclN0YXRlbWVudCktPmV4cHIo
KTsKKyAgICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwcik7CisgICAgUkVMRUFTRV9BU1NFUlQoZnVu
Y0V4cHItPmlzRnVuY0V4cHJOb2RlKCkpOworICAgIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkgPSBz
dGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihmdW5jRXhwciktPmJvZHkoKTsKKyAgICBSRUxFQVNF
X0FTU0VSVCghcHJvZ3JhbS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CisgICAgCisgICAgYm9k
eS0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CisgICAgUkVMRUFT
RV9BU1NFUlQoYm9keSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keS0+aWRlbnQoKS5pc051bGwo
KSk7CisgICAgCisgICAgLy8gVGhpcyBmdW5jdGlvbiBhc3N1bWVzIGFuIGlucHV0IHN0cmluZyB0
aGF0IHdvdWxkIHJlc3VsdCBpbiBhIHNpbmdsZSBhbm9ueW1vdXMgZnVuY3Rpb24gZXhwcmVzc2lv
bi4KKyAgICBib2R5LT5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsK
KyAgICBSRUxFQVNFX0FTU0VSVChib2R5KTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNsb3NlZFZh
cmlhYmxlIDogcHJvZ3JhbS0+Y2xvc2VkVmFyaWFibGVzKCkpIHsKKyAgICAgICAgaWYgKGNsb3Nl
ZFZhcmlhYmxlID09IG1fdm0ucHJvcGVydHlOYW1lcy0+YXJndW1lbnRzLmltcGwoKSkKKyAgICAg
ICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBpZiAoY2xvc2VkVmFyaWFibGUgPT0gbV92
bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLmltcGwoKSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICBSRUxFQVNFX0FTU0VSVChjbG9zZWRWYXJpYWJsZS0+aXNFbXB0eVVu
aXF1ZSgpKTsKKyAgICB9CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9u
RXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJm1fdm0sIHNv
dXJjZSwgYm9keSwgdHJ1ZSwgVW5saW5rZWRCdWlsdGluRnVuY3Rpb24pOworICAgIGZ1bmN0aW9u
RXhlY3V0YWJsZS0+bV9uYW1lVmFsdWUuc2V0KG1fdm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwganNT
dHJpbmcoJm1fdm0sIG5hbWUuc3RyaW5nKCkpKTsKKyAgICByZXR1cm4gZnVuY3Rpb25FeGVjdXRh
YmxlOworfQorCisjZGVmaW5lIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0
aW9uTmFtZSwgbGVuZ3RoKSBcCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4
ZWN1dGFibGVzOjpuYW1lIyNFeGVjdXRhYmxlKCkgXAore1wKKyAgICBpZiAoIW1fIyNuYW1lIyNF
eGVjdXRhYmxlKVwKKyAgICAgICAgbV8jI25hbWUjI0V4ZWN1dGFibGUgPSBjcmVhdGVCdWlsdGlu
RXhlY3V0YWJsZShtXyMjbmFtZSMjU291cmNlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPmZ1bmN0aW9u
TmFtZSk7XAorICAgIHJldHVybiBtXyMjbmFtZSMjRXhlY3V0YWJsZS5nZXQoKTtcCit9CitKU0Nf
Rk9SRUFDSF9CVUlMVElOKERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIEVYUE9T
RV9CVUlMVElOX1NPVVJDRVMKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5YTE5ZTI2MTUwNzk0YTY2
OWVjOThlMzk5YmY2N2Y3ZjcxMDY0MTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKQEAgLTAsMCArMSw2NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQnVp
bHRpbkV4ZWN1dGFibGVzX2gKKyNkZWZpbmUgQnVpbHRpbkV4ZWN1dGFibGVzX2gKKworI2luY2x1
ZGUgIkpTQ0J1aWx0aW5zLmgiCisjaW5jbHVkZSAiU291cmNlQ29kZS5oIgorI2luY2x1ZGUgIldl
YWsuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7CitjbGFzcyBJZGVudGlmaWVyOworY2xh
c3MgVk07CisKK2NsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlcyB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NPd25QdHI8QnVpbHRpbkV4ZWN1dGFibGVzPiBjcmVhdGUoVk0mIHZtKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBCdWlsdGluRXhlY3V0YWJsZXModm0pKTsKKyAgICB9
CisgICAgCisjZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9u
TmFtZSwgbGVuZ3RoKSBcCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0
YWJsZSgpOyBcCitjb25zdCBTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSB7IHJldHVybiBtXyMj
bmFtZSMjU291cmNlOyB9CisgICAgCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTihFWFBPU0VfQlVJ
TFRJTl9FWEVDVVRBQkxFUykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJTl9TT1VSQ0VTCisgICAgCitw
cml2YXRlOgorICAgIEJ1aWx0aW5FeGVjdXRhYmxlcyhWTSYpOworICAgIFZNJiBtX3ZtOworICAg
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShjb25z
dCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYpOworI2RlZmluZSBERUNMQVJFX0JVSUxU
SU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpXAorICAgIFNvdXJj
ZUNvZGUgbV8jI25hbWUjI1NvdXJjZTsgXAorICAgIFdlYWs8VW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU+IG1fIyNuYW1lIyNFeGVjdXRhYmxlOworICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4oREVD
TEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VS
Q0VfTUVNQkVSUworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKaW5kZXggNGMwNTVmZWE1NzM4ZjFjNDYzMjY2ZDRl
OWE5MTU0OGExMjkzNDcwOS4uZWFlZmU1NGYyZDE1Mjg0YjY0YmY2OTk3MjY1OGNkMWM2M2I0ZWE3
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmls
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5j
cHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJBcnJheVByb2ZpbGUuaCIKIAogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVk
ZSA8d3RmL0NvbW1hUHJpbnRlci5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKaW5kZXggZDc0ODlkMzFh
YmQ3Yzk5ZjFiYzZmYWZhZTY1ODExMTJhYmRhY2ZkYi4uMWEzYjVmNGM3ODA3Yjk0ODhmZjM2NTcy
Zjc5NGQwYmI5ZjM4ZDI1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRl
ICJCeXRlY29kZUJhc2ljQmxvY2suaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1
ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgi
CiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAppbmRleCA5MjYzMzRjNDQ0
YzljMmYzZGZjYzk1MDEyY2QwYTRhMDMxMDRkMmQ5Li5hZDRhZTIyOTVlYWM0OGFhNDBhZmJlZTNl
YjY5Mjg5NmZjY2FiZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcApAQCAtMzAsNiArMzAsNyBA
QAogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAj
aW5jbHVkZSAiRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5s
aW5lcy5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgogCiBuYW1lc3BhY2UgSlND
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0lu
Zm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAK
aW5kZXggNmE2MDA1NzZhMDAwYWRhYzhhZjIxNGU5ODgxMzY0NjE5ZjI5YTAxMC4uNGJmODE4ODY2
MDI4Yzc5NmE3MmU1NzgzMzJlNDY3NzU1NmIyMzdhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lu
Y2x1ZGUgIkRGR09wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJERkdUaHVua3MuaCIKKyNpbmNsdWRl
ICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKIAogI2lm
IEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCmluZGV4IDI2M2VjN2NhZGY0Zjc5Y2E4MTAyNDQxZTYyYmYyYTA1YjVkZGMzZjIuLjc1MTUw
NjU0MjM3NmQ3ZWRjNTk5YWEwMGY5YjEyNjg1Y2RhMzUyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC00MywxMSArNDMsMTMgQEAKICNpbmNs
dWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlv
bi5oIgotI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgog
I2luY2x1ZGUgIkxMSW50RW50cnlwb2ludC5oIgogI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0
ZXIuaCIKKyNpbmNsdWRlICJOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiT2Jq
ZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUG9s
eW1vcnBoaWNQdXRCeUlkTGlzdC5oIgogI2luY2x1ZGUgIlJlZHVjZVdoaXRlc3BhY2UuaCIKQEAg
LTE1NjksNyArMTU3MSw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUq
IG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGluCiAKICAgICBzZXRDb25z
dGFudFJlZ2lzdGVycyh1bmxpbmtlZENvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcnMoKSk7CiAg
ICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT51c2VzR2xvYmFsT2JqZWN0KCkpCi0gICAgICAgIG1f
Y29uc3RhbnRSZWdpc3RlcnNbdW5saW5rZWRDb2RlQmxvY2stPmdsb2JhbE9iamVjdFJlZ2lzdGVy
KCkub2Zmc2V0KCldLnNldCgqbV92bSwgb3duZXJFeGVjdXRhYmxlLCBtX2dsb2JhbE9iamVjdC5n
ZXQoKSk7CisgICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnNbdW5saW5rZWRDb2RlQmxvY2stPmds
b2JhbE9iamVjdFJlZ2lzdGVyKCkudG9Db25zdGFudEluZGV4KCldLnNldCgqbV92bSwgb3duZXJF
eGVjdXRhYmxlLCBtX2dsb2JhbE9iamVjdC5nZXQoKSk7CiAgICAgbV9mdW5jdGlvbkRlY2xzLnJl
c2l6ZVRvRml0KHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSk7CiAg
ICAgZm9yIChzaXplX3QgY291bnQgPSB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlv
bkRlY2xzKCksIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlID0gdW5saW5rZWRDb2RlQmxvY2stPmZ1
bmN0aW9uRGVjbChpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aAppbmRleCA2OGJjMDM3OWY1NzQ0YzlhOGY3NDMxZGI2NGY4YWI1NGU2ZTEwNTNmLi40OTk1YzUy
Y2Y4YjJiMWI0ZDYyODA0NTNlZWQyN2M3NzRhNDk1NThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC01Niw3ICs1Niw2IEBACiAjaW5jbHVkZSAiSGFu
ZGxlckluZm8uaCIKICNpbmNsdWRlICJPYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oIgogI2luY2x1
ZGUgIk9wdGlvbnMuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHV0UHJv
cGVydHlTbG90LmgiCiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJKSVRDb2Rl
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
SmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCmluZGV4IGJlNTBjOTc3OGJmMzNl
MzM5YWM4MzRiZjU2ZTNiMWU3NTU4NmZlM2UuLmI3NjQ2ZWQxZWYxNjQxODlmY2ZjN2I1MzY1NmZi
NjViZWQwNjRkMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdDb21tb24u
aCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCmluZGV4IDY4
ZGM2YjA1MzM1NTkwZWM0YzgxYzQyMzQ2YmI3NGRiYmQ4ZmFjNTYuLjE1Nzg4MDg5MzRkZDNjYzRj
ZDk3ZDI3MWFlOGFjOGJmZTM5NzQ2YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlT3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZU9yaWdpbi5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDYWxsRnJh
bWUuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisj
aW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAppbmRleCBlZGU4YTM2NDM3ZGQ3OGMyZTQ2YTI5ZDZi
M2UwNzlkM2QyZDBmZWVkLi5jOTQwMjJmOTdmYjhiZDc4Y2RjNWQxMzhlNmQ1ZjcwZjQ2ZDRkMzJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBU
YXJnZXRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1
bXBUYXJnZXRzLmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgogCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGlu
ZXMuaCIKKwogbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRlIDxzaXplX3QgdmVjdG9yU2l6ZT4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVC
bG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCmluZGV4IDk4
NmUwM2QwY2JhNzE4NWIzOWNlZTAyM2Y0YWI2YmM5YjhjY2I2ZTQuLjZmMmQ1ZWJhMWNhNDVkZGVi
MWRmNjVmZDA1MTIzM2U1ZjEzOGJlMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlz
b25pbmdXYXRjaHBvaW50LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9j
ay5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgogI2luY2x1ZGUgIkRGR0V4aXRQcm9maWxlLmgi
CisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
Y3BwCmluZGV4IDFkZmI1YWM2YWQ5MDkzZjhmODExMDFlZjdmMmU2MTIzMTFhYzE5MzkuLjQzMzkw
ZDk2NWZjNTAzNDAxNmY3YmZmZjIzZTY4YmIxZTA1NDU1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNDksOSAr
NDksOSBAQCBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOjpzX2luZm8g
PSB7ICJVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2siLAogY29uc3QgQ2xhc3NJbmZvIFVubGlua2Vk
RXZhbENvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRFdmFsQ29kZUJsb2NrIiwgJkJhc2U6
OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZEV2YWxDb2RlQmxvY2sp
IH07CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6c19pbmZvID0g
eyAiVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaykgfTsKIAotc3RhdGljIFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZt
LCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIERlYnVnZ2VyTW9kZSBkZWJ1
Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikK
K3N0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJs
b2NrKFZNJiB2bSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dl
ck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBVbmxpbmtlZEZ1
bmN0aW9uS2luZCBmdW5jdGlvbktpbmQsIFBhcnNlckVycm9yJiBlcnJvcikKIHsKLSAgICBSZWZQ
dHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSA9IHBhcnNlPEZ1bmN0aW9uQm9keU5vZGU+KCZ2bSwg
c291cmNlLCBleGVjdXRhYmxlLT5wYXJhbWV0ZXJzKCksIGV4ZWN1dGFibGUtPm5hbWUoKSwgZXhl
Y3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2VTdHJpY3QgOiBKU1BhcnNlTm9y
bWFsLCBKU1BhcnNlRnVuY3Rpb25Db2RlLCBlcnJvcik7CisgICAgUmVmUHRyPEZ1bmN0aW9uQm9k
eU5vZGU+IGJvZHkgPSBwYXJzZTxGdW5jdGlvbkJvZHlOb2RlPigmdm0sIHNvdXJjZSwgZXhlY3V0
YWJsZS0+cGFyYW1ldGVycygpLCBleGVjdXRhYmxlLT5uYW1lKCksIGV4ZWN1dGFibGUtPnRvU3Ry
aWN0bmVzcygpLCBKU1BhcnNlRnVuY3Rpb25Db2RlLCBlcnJvcik7CiAKICAgICBpZiAoIWJvZHkp
IHsKICAgICAgICAgQVNTRVJUKGVycm9yLm1fdHlwZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25l
KTsKQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdl
bmVyYXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZtLCBVbmxpbmtlZEZ1bmMKICAgICBib2R5LT5m
aW5pc2hQYXJzaW5nKGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgp
LCBleGVjdXRhYmxlLT5mdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGUoKSk7CiAgICAgZXhlY3V0
YWJsZS0+cmVjb3JkUGFyc2UoYm9keS0+ZmVhdHVyZXMoKSwgYm9keS0+aGFzQ2FwdHVyZWRWYXJp
YWJsZXMoKSk7CiAgICAgCi0gICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0g
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLCBFeGVj
dXRhYmxlSW5mbyhib2R5LT5uZWVkc0FjdGl2YXRpb24oKSwgYm9keS0+dXNlc0V2YWwoKSwgYm9k
eS0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCkpOworICAgIFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6
OmNyZWF0ZSgmdm0sIEZ1bmN0aW9uQ29kZSwgRXhlY3V0YWJsZUluZm8oYm9keS0+bmVlZHNBY3Rp
dmF0aW9uKCksIGJvZHktPnVzZXNFdmFsKCksIGJvZHktPmlzU3RyaWN0TW9kZSgpLCBraW5kID09
IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlv
bikpOwogICAgIE93blB0cjxCeXRlY29kZUdlbmVyYXRvcj4gZ2VuZXJhdG9yKGFkb3B0UHRyKG5l
dyBCeXRlY29kZUdlbmVyYXRvcih2bSwgYm9keS5nZXQoKSwgcmVzdWx0LCBkZWJ1Z2dlck1vZGUs
IHByb2ZpbGVyTW9kZSkpKTsKICAgICBlcnJvciA9IGdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKICAg
ICBib2R5LT5kZXN0cm95RGF0YSgpOwpAQCAtODIsMTMgKzgyLDE0IEBAIHVuc2lnbmVkIFVubGlu
a2VkQ29kZUJsb2NrOjphZGRPckZpbmRDb25zdGFudChKU1ZhbHVlIHYpCiAgICAgcmV0dXJuIGFk
ZENvbnN0YW50KHYpOwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlLCBib29sIGlzRnJvbUdsb2Jh
bENvZGUpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlLCBib29sIGlzRnJvbUdsb2JhbENvZGUsIFVubGlu
a2VkRnVuY3Rpb25LaW5kIGtpbmQpCiAgICAgOiBCYXNlKCp2bSwgc3RydWN0dXJlKQogICAgICwg
bV9udW1DYXB0dXJlZFZhcmlhYmxlcyhub2RlLT5jYXB0dXJlZFZhcmlhYmxlQ291bnQoKSkKICAg
ICAsIG1fZm9yY2VVc2VzQXJndW1lbnRzKG5vZGUtPnVzZXNBcmd1bWVudHMoKSkKICAgICAsIG1f
aXNJblN0cmljdENvbnRleHQobm9kZS0+aXNTdHJpY3RNb2RlKCkpCiAgICAgLCBtX2hhc0NhcHR1
cmVkVmFyaWFibGVzKG5vZGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpCiAgICAgLCBtX2lzRnJv
bUdsb2JhbENvZGUoaXNGcm9tR2xvYmFsQ29kZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24o
a2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbikKICAgICAsIG1fbmFtZShub2RlLT5pZGVu
dCgpKQogICAgICwgbV9pbmZlcnJlZE5hbWUobm9kZS0+aW5mZXJyZWROYW1lKCkpCiAgICAgLCBt
X3BhcmFtZXRlcnMobm9kZS0+cGFyYW1ldGVycygpKQpAQCAtMTY2LDcgKzE2Nyw3IEBAIFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxv
Y2tGb3IoVk0mIHZtLCBjb25zCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIFVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2sodm0s
IHRoaXMsIHNvdXJjZSwgc3BlY2lhbGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVy
TW9kZSwgZXJyb3IpOworICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IGdl
bmVyYXRlRnVuY3Rpb25Db2RlQmxvY2sodm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lhbGl6YXRpb25L
aW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVu
bGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgZXJyb3IpOwog
ICAgIAogICAgIGlmIChlcnJvci5tX3R5cGUgIT0gUGFyc2VyRXJyb3I6OkVycm9yTm9uZSkKICAg
ICAgICAgcmV0dXJuIDA7CkBAIC0yMTAsNiArMjExLDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVu
bGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNv
ZGUKICAgICAsIG1faXNTdHJpY3RNb2RlKGluZm8ubV9pc1N0cmljdE1vZGUpCiAgICAgLCBtX2lz
Q29uc3RydWN0b3IoaW5mby5tX2lzQ29uc3RydWN0b3IpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFy
aWFibGVzKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpbmZvLm1faXNCdWlsdGlu
RnVuY3Rpb24pCiAgICAgLCBtX2ZpcnN0TGluZSgwKQogICAgICwgbV9saW5lQ291bnQoMCkKICAg
ICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCBiOWRhZTJkNWM2OWM3OWNlYWFhODAy
M2QyYTNhMWYyNmQ0NjA5NDNiLi5hYmY2Y2YzNWI5MzA2YTRmN2EzMDFhYjBkZjc2NjZlYzYxMmUz
NzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suaApAQCAtNjYsMjYgKzY2LDM1IEBAIHR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRP
YmplY3RBbGxvY2F0aW9uUHJvZmlsZTsKIHR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRMTEludENh
bGxMaW5rSW5mbzsKIAogc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKLSAgICBFeGVjdXRhYmxlSW5m
byhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUs
IGJvb2wgaXNDb25zdHJ1Y3RvcikKKyAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZh
dGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3Rv
ciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbikKICAgICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihu
ZWVkc0FjdGl2YXRpb24pCiAgICAgICAgICwgbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAg
LCBtX2lzU3RyaWN0TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9y
KGlzQ29uc3RydWN0b3IpCisgICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5G
dW5jdGlvbikKICAgICB7CiAgICAgfQotICAgIGJvb2wgbV9uZWVkc0FjdGl2YXRpb247Ci0gICAg
Ym9vbCBtX3VzZXNFdmFsOwotICAgIGJvb2wgbV9pc1N0cmljdE1vZGU7Ci0gICAgYm9vbCBtX2lz
Q29uc3RydWN0b3I7CisgICAgYm9vbCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CisgICAgYm9vbCBt
X3VzZXNFdmFsIDogMTsKKyAgICBib29sIG1faXNTdHJpY3RNb2RlIDogMTsKKyAgICBib29sIG1f
aXNDb25zdHJ1Y3RvciA6IDE7CisgICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKK307
CisKK2VudW0gVW5saW5rZWRGdW5jdGlvbktpbmQgeworICAgIFVubGlua2VkTm9ybWFsRnVuY3Rp
b24sCisgICAgVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sCiB9OwogCiBjbGFzcyBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgorICAgIGZyaWVuZCBj
bGFzcyBCdWlsdGluRXhlY3V0YWJsZXM7CiAgICAgZnJpZW5kIGNsYXNzIENvZGVDYWNoZTsKKyAg
ICBmcmllbmQgY2xhc3MgVk07CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKLSAgICBzdGF0aWMg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSogbm9kZSwgYm9vbCBpc0Zyb21HbG9iYWxDb2Rl
ID0gZmFsc2UpCisgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUo
Vk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUs
IGJvb2wgaXNGcm9tR2xvYmFsQ29kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5j
dGlvbktpbmQpCiAgICAgewotICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5z
dGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZT4odm0tPmhlYXApKSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIG5vZGUsIGlzRnJv
bUdsb2JhbENvZGUpOworICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFu
Y2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZT4odm0tPmhlYXApKSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIG5vZGUsIGlzRnJvbUds
b2JhbENvZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kKTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlz
aENyZWF0aW9uKCp2bSk7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CkBAIC05OSw2
ICsxMDgsMTQgQEAgcHVibGljOgogICAgIH0KICAgICBzaXplX3QgcGFyYW1ldGVyQ291bnQoKSBj
b25zdDsKICAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0lu
U3RyaWN0Q29udGV4dDsgfQorICAgIEpTUGFyc2VyU3RyaWN0bmVzcyB0b1N0cmljdG5lc3MoKSBj
b25zdAorICAgIHsKKyAgICAgICAgaWYgKG1faXNCdWlsdGluRnVuY3Rpb24pCisgICAgICAgICAg
ICByZXR1cm4gSlNQYXJzZUJ1aWx0aW47CisgICAgICAgIGlmIChtX2lzSW5TdHJpY3RDb250ZXh0
KQorICAgICAgICAgICAgcmV0dXJuIEpTUGFyc2VTdHJpY3Q7CisgICAgICAgIHJldHVybiBKU1Bh
cnNlTm9ybWFsOworICAgIH0KICAgICBGdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGUgZnVuY3Rp
b25OYW1lSXNJblNjb3BlVG9nZ2xlKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbk5hbWVJc0lu
U2NvcGVUb2dnbGU7IH0KIAogICAgIHVuc2lnbmVkIGZpcnN0TGluZU9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fZmlyc3RMaW5lT2Zmc2V0OyB9CkBAIC0xNDIsOCArMTU5LDEwIEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJbW1vcnRhbFN0cnVjdHVyZSA9IHRydWU7CiAgICAg
c3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAorICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisKIHByaXZhdGU6Ci0g
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSk7CisgICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VD
b2RlJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSwgVW5saW5rZWRG
dW5jdGlvbktpbmQpOwogICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
PiBtX2NvZGVCbG9ja0ZvckNhbGw7CiAgICAgV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2s+IG1fY29kZUJsb2NrRm9yQ29uc3RydWN0OwogCkBAIC0xNTIsNiArMTcxLDcgQEAg
cHJpdmF0ZToKICAgICBib29sIG1faXNJblN0cmljdENvbnRleHQgOiAxOwogICAgIGJvb2wgbV9o
YXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgYm9vbCBtX2lzRnJvbUdsb2JhbENvZGUgOiAx
OworICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CiAKICAgICBJZGVudGlmaWVyIG1f
bmFtZTsKICAgICBJZGVudGlmaWVyIG1faW5mZXJyZWROYW1lOwpAQCAtMzE5LDYgKzMzOSw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldElzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbihib29sIGlzTnVt
ZXJpY0NvbXBhcmVGdW5jdGlvbikgeyBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbiA9IGlzTnVt
ZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQogICAgIGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb247IH0KIAorICAgIGJv
b2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9u
OyB9CisgICAgCiAgICAgdm9pZCBzaHJpbmtUb0ZpdCgpCiAgICAgewogICAgICAgICBtX2p1bXBU
YXJnZXRzLnNocmlua1RvRml0KCk7CkBAIC01MDAsNiArNTIyLDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1faXNTdHJpY3RNb2RlIDogMTsKICAgICBib29sIG1faXNDb25zdHJ1Y3RvciA6IDE7CiAg
ICAgYm9vbCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIDogMTsKKyAgICBib29sIG1faXNCdWlsdGlu
RnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAgIHVuc2lnbmVkIG1f
bGluZUNvdW50OwogICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRl
eCA2ODEwYWI4MDAyY2U2YmI4ZDc4ZTdmZjIyMjdmNGM2ZWE3Yjc1OGMyLi5lYzUyMWI1MzA0NjM5
MjNlNzRjMDEwZmEyMThlNTllZDJhOWEzY2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTc1LDYg
KzE3NSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFBy
b2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQCiAjZW5kaWYKICAgICAsIG1fdXNlc0V4
Y2VwdGlvbnMoZmFsc2UpCiAgICAgLCBtX2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwg
bV9pc0J1aWx0aW5GdW5jdGlvbihmYWxzZSkKIHsKICAgICBpZiAobV9zaG91bGRFbWl0RGVidWdI
b29rcykKICAgICAgICAgbV9jb2RlQmxvY2stPnNldE5lZWRzRnVsbFNjb3BlQ2hhaW4odHJ1ZSk7
CkBAIC0yMjIsNyArMjIzLDEzIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihWTSYgdm0sIEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9uQm9keSwgVW5sCiAjZW5kaWYKICAg
ICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAgICAgLCBtX2V4cHJlc3Npb25Ub29EZWVwKGZh
bHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihjb2RlQmxvY2stPmlzQnVpbHRpbkZ1bmN0
aW9uKCkpCiB7CisgICAgaWYgKG1faXNCdWlsdGluRnVuY3Rpb24pIHsKKyAgICAgICAgbV9zaG91
bGRFbWl0UHJvZmlsZUhvb2tzID0gZmFsc2U7CisgICAgICAgIG1fc2hvdWxkRW1pdERlYnVnSG9v
a3MgPSBmYWxzZTsKKyAgICB9CisKICAgICBpZiAobV9zaG91bGRFbWl0RGVidWdIb29rcykKICAg
ICAgICAgbV9jb2RlQmxvY2stPnNldE5lZWRzRnVsbFNjb3BlQ2hhaW4odHJ1ZSk7CiAKQEAgLTQz
OCw2ICs0NDUsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZt
LCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZAogI2VuZGlmCiAgICAgLCBtX3Vz
ZXNFeGNlcHRpb25zKGZhbHNlKQogICAgICwgbV9leHByZXNzaW9uVG9vRGVlcChmYWxzZSkKKyAg
ICAsIG1faXNCdWlsdGluRnVuY3Rpb24oZmFsc2UpCiB7CiAgICAgbV9jb2RlQmxvY2stPnNldE5l
ZWRzRnVsbFNjb3BlQ2hhaW4odHJ1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA0ZTlmMjEzYzliZmE2
Y2YxOTRiMWExNGZlOTE5ZTgzMzM3YWUzNWQ5Li4xNTg0Mjc0Yjc4ZWE2YzBiZDBlZmIwYjk4MjVj
ODE4YmUwZGJjMDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC00NjEsNyArNDYxLDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGJvb2wgc2hvdWxkRW1pdERlYnVnSG9va3MoKSB7IHJldHVybiBtX3No
b3VsZEVtaXREZWJ1Z0hvb2tzOyB9CiAgICAgICAgIAogICAgICAgICBib29sIGlzU3RyaWN0TW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKTsgfQotCisgICAg
ICAgIAorICAgICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9p
c0J1aWx0aW5GdW5jdGlvbjsgfQorICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICBmcmll
bmQgY2xhc3MgTGFiZWw7CiAgICAgICAgIApAQCAtNTQzLDcgKzU0NSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAKICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG1ha2VG
dW5jdGlvbihGdW5jdGlvbkJvZHlOb2RlKiBib2R5KQogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9k
ZS0+c291cmNlKCksIGJvZHkpOworICAgICAgICAgICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCBib2R5LCBmYWxz
ZSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5r
ZWROb3JtYWxGdW5jdGlvbik7CiAgICAgICAgIH0KIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
SW5pdExhenlSZWdpc3RlcihSZWdpc3RlcklEKik7CkBAIC02NzcsNiArNjc5LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBtX3VzZXNFeGNlcHRpb25zOwogICAgICAgICBib29s
IG1fZXhwcmVzc2lvblRvb0RlZXA7CisgICAgICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlvbjsK
ICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMWZmZDRmMzExODgyZDBlZTVjNTUxNGY1YjhiMjU5Mzlk
OTc1ZTM3OS4uNjJlY2EzNmExMGQ3NzA4YTkyOGQ0M2FjMDNmMmZjODYxNWNlY2E3OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cApAQCAtMjYsMTAgKzI2LDEwIEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJO
b2Rlcy5oIgotI2luY2x1ZGUgIk5vZGVDb25zdHJ1Y3RvcnMuaCIKIAogI2luY2x1ZGUgIkJ5dGVj
b2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29tbW9u
SWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkpJVC5oIgog
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJKU09O
T2JqZWN0LmgiCiAjaW5jbHVkZSAiTGFiZWxTY29wZS5oIgogI2luY2x1ZGUgIkxleGVyLmgiCisj
aW5jbHVkZSAiTm9kZUNvbnN0cnVjdG9ycy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNp
bmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgpAQCAtNTM1
LDM2ICs1MzYsMzkgQEAgUmVnaXN0ZXJJRCogQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLAogICAgIFJlZlB0cjxMYWJlbD4g
ZW5kID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2Ug
PSBnZW5lcmF0b3IuZW1pdE5vZGUobV9iYXNlKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Np
b25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhw
cmVzc2lvbkVuZCgpKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0
b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgp
LCBtX2lkZW50KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3Iu
ZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBn
ZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmNhbGwpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBy
ZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuY3Rpb24uZ2V0
KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKGZ1bmN0aW9uLmdl
dCgpLCByZWFsQ2FsbC5nZXQoKSk7CisgICAgYm9vbCBlbWl0Q2FsbENoZWNrID0gIWdlbmVyYXRv
ci5pc0J1aWx0aW5GdW5jdGlvbigpOworICAgIGlmIChlbWl0Q2FsbENoZWNrKQorICAgICAgICBn
ZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQ2FsbChmdW5jdGlvbi5nZXQoKSwgcmVhbENh
bGwuZ2V0KCkpOworCiAgICAgewogICAgICAgICBpZiAobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1f
YXJncy0+bV9saXN0Tm9kZS0+bV9leHByKSB7CiAgICAgICAgICAgICBBcmd1bWVudExpc3ROb2Rl
KiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2RlOwogICAgICAgICAgICAgbV9hcmdzLT5tX2xp
c3ROb2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQ7Ci0KKyAgICAgICAgICAgIAogICAg
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0
TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAg
ICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBvbGRMaXN0LT5tX2V4cHIpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVy
blZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2Fs
bEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOwotCiAgICAgICAgICAgICBtX2FyZ3Mt
Pm1fbGlzdE5vZGUgPSBvbGRMaXN0OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0
b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgQ2FsbEFy
Z3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5l
ZCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwg
cmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRp
dm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdEp1bXAoZW5kLmdldCgpKTsKICAgICAgICAgfQogICAgIH0KLSAgICBnZW5lcmF0b3IuZW1p
dExhYmVsKHJlYWxDYWxsLmdldCgpKTsKLSAgICB7Ci0gICAgICAgIENhbGxBcmd1bWVudHMgY2Fs
bEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0TW92
ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgpKTsKLSAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOworICAgIGlmIChlbWl0Q2FsbENoZWNrKSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0
SnVtcChlbmQuZ2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdl
dCgpKTsKKyAgICAgICAgeworICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRz
KGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxs
QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0
ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKKyAgICAgICAgfQorICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7
CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICByZXR1cm4g
cmV0dXJuVmFsdWUuZ2V0KCk7CiB9CiAKQEAgLTU4NSw2NSArNTg5LDY3IEBAIFJlZ2lzdGVySUQq
IEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsCiAgICAgUmVmUHRyPExhYmVsPiBlbmQgPSBnZW5lcmF0b3IubmV3TGFiZWwo
KTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jh
c2UpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90
KCksIHN1YmV4cHJlc3Npb25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwotICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3Iu
dGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIG1faWRlbnQpOworICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBmdW5jdGlvbjsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUg
PSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGZ1bmN0aW9uLmdldCgpKTsKLSAgICBn
ZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHkoZnVuY3Rpb24uZ2V0KCksIHJlYWxD
YWxsLmdldCgpKTsKLSAgICB7Ci0gICAgICAgIGlmIChtYXlCZUNhbGwpIHsKLSAgICAgICAgICAg
IGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpIHsK
LSAgICAgICAgICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xp
c3ROb2RlOwotICAgICAgICAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCkg
ewotICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQt
Pm1fZXhwci0+aXNTaW1wbGVBcnJheSgpKTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFt
X2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9uZXh0KTsKLSAgICAgICAgICAgICAgICAgICAg
bV9hcmdzLT5tX2xpc3ROb2RlID0gc3RhdGljX2Nhc3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xp
c3ROb2RlLT5tX25leHQtPm1fZXhwciktPnRvQXJndW1lbnRMaXN0KGdlbmVyYXRvci52bSgpLCAw
LCAwKTsKLSAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlv
biA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJh
c2UuZ2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVu
dHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKLSAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBy
ZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBtX2FyZ3MtPm1fbGlz
dE5vZGUtPm1fbmV4dDsKLSAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJl
YWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9u
KGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNh
bGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgICAgICAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9l
eHByKTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVl
LmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3Vt
ZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gb2xkTGlzdDsKKyAgICBi
b29sIGVtaXRDYWxsQ2hlY2sgPSAhZ2VuZXJhdG9yLmlzQnVpbHRpbkZ1bmN0aW9uKCk7CisgICAg
aWYgKGVtaXRDYWxsQ2hlY2spIHsKKyAgICAgICAgZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdl
dEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0
b3IucHJvcGVydHlOYW1lcygpLmFwcGx5KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZO
b3RGdW5jdGlvbkFwcGx5KGZ1bmN0aW9uLmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7CisgICAgfQor
ICAgIGlmIChtYXlCZUNhbGwpIHsKKyAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBt
X2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcikgeworICAgICAgICAgICAgQXJndW1lbnRMaXN0Tm9k
ZSogb2xkTGlzdCA9IG1fYXJncy0+bV9saXN0Tm9kZTsKKyAgICAgICAgICAgIGlmIChtX2FyZ3Mt
Pm1fbGlzdE5vZGUtPm1fbmV4dCkgeworICAgICAgICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1f
bGlzdE5vZGUtPm1fbmV4dC0+bV9leHByLT5pc1NpbXBsZUFycmF5KCkpOworICAgICAgICAgICAg
ICAgIEFTU0VSVCghbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fbmV4dCk7CisgICAgICAg
ICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gc3RhdGljX2Nhc3Q8QXJyYXlOb2RlKj4obV9h
cmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwciktPnRvQXJndW1lbnRMaXN0KGdlbmVyYXRv
ci52bSgpLCAwLCAwKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1
bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0
KSwgYmFzZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1l
bnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5v
ZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKKyAgICAg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5j
dGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsK
ICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJh
dG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7
CiAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwg
bV9hcmdzKTsKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50
cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG9sZExpc3QtPm1fZXhw
cik7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgp
LCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywg
ZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9sZExpc3Q7CiAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBBU1NFUlQobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9k
ZS0+bV9uZXh0KTsKLSAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9maWxlSG9va1Jl
Z2lzdGVyOwotICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5zaG91bGRFbWl0UHJvZmlsZUhvb2tz
KCkpCi0gICAgICAgICAgICAgICAgcHJvZmlsZUhvb2tSZWdpc3RlciA9IGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKTsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24g
PSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNl
LmdldCgpKTsKLSAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzUmVnaXN0ZXIgPSBn
ZW5lcmF0b3IuZW1pdE5vZGUobV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpOwotICAgICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFyZ3NSZWdpc3RlcjsKLSAgICAgICAgICAgIEFyZ3VtZW50
TGlzdE5vZGUqIGFyZ3MgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKLSAgICAgICAgICAg
IGlmIChhcmdzLT5tX2V4cHItPmlzUmVzb2x2ZU5vZGUoKSAmJiBnZW5lcmF0b3Iud2lsbFJlc29s
dmVUb0FyZ3VtZW50cyhzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGFyZ3MtPm1fZXhwciktPmlk
ZW50aWZpZXIoKSkpCi0gICAgICAgICAgICAgICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLnVu
Y2hlY2tlZFJlZ2lzdGVyRm9yQXJndW1lbnRzKCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7
Ci0KLSAgICAgICAgICAgIC8vIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseSBpZ25vcmVzIGV4dHJh
IGFyZ3VtZW50cywgYnV0IHdlIHN0aWxsCi0gICAgICAgICAgICAvLyBuZWVkIHRvIGV2YWx1YXRl
IHRoZW0gZm9yIHNpZGUgZWZmZWN0cy4KLSAgICAgICAgICAgIHdoaWxlICgoYXJncyA9IGFyZ3Mt
Pm1fbmV4dCkpCi0gICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhw
cik7Ci0KLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbFZhcmFyZ3MocmV0dXJuVmFsdWUu
Z2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBhcmdzUmVnaXN0
ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcHJvZmlsZUhvb2tSZWdpc3Rlci5n
ZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAgIENh
bGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CisgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRl
ZmluZWQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0
KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRz
LCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICB9Ci0gICAgICAg
IGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIEFT
U0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQpOwor
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvZmlsZUhvb2tSZWdpc3RlcjsKKyAgICAgICAg
aWYgKGdlbmVyYXRvci5zaG91bGRFbWl0UHJvZmlsZUhvb2tzKCkpCisgICAgICAgICAgICBwcm9m
aWxlSG9va1JlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRv
ci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CisgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiB0aGlzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9hcmdzLT5tX2xpc3RO
b2RlLT5tX2V4cHIpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXJnc1JlZ2lzdGVyOwor
ICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBhcmdzID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25l
eHQ7CisgICAgICAgIGlmIChhcmdzLT5tX2V4cHItPmlzUmVzb2x2ZU5vZGUoKSAmJiBnZW5lcmF0
b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50cyhzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGFyZ3Mt
Pm1fZXhwciktPmlkZW50aWZpZXIoKSkpCisgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5l
cmF0b3IudW5jaGVja2VkUmVnaXN0ZXJGb3JBcmd1bWVudHMoKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7
CisKKyAgICAgICAgLy8gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5IGlnbm9yZXMgZXh0cmEgYXJn
dW1lbnRzLCBidXQgd2Ugc3RpbGwKKyAgICAgICAgLy8gbmVlZCB0byBldmFsdWF0ZSB0aGVtIGZv
ciBzaWRlIGVmZmVjdHMuCisgICAgICAgIHdoaWxlICgoYXJncyA9IGFyZ3MtPm1fbmV4dCkpCisg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKKworICAgICAgICBn
ZW5lcmF0b3IuZW1pdENhbGxWYXJhcmdzKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24u
Z2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJnc1JlZ2lzdGVyLmdldCgpLCBnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCksIHByb2ZpbGVIb29rUmVnaXN0ZXIuZ2V0KCksIGRpdm90KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVh
bENhbGwuZ2V0KCkpOwotICAgIHsKKyAgICBpZiAoZW1pdENhbGxDaGVjaykgeworICAgICAgICBn
ZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJl
bChyZWFsQ2FsbC5nZXQoKSk7CiAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhn
ZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1l
bnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRD
YWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9u
LCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAgfQotICAgIGdlbmVyYXRv
ci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWUuZ2V0KCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZQppbmRleCAzOTc5NzZiMDZj
N2E5YjU4MzYzMzI5MDBhNmViYjkzZWM2OGI3NDg2Li5jYWQ2NWJjNGNjODg4ZTMxNGY4OGQ2NjVk
ZDRhNmU2NDVhMDlhMzU1IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRl
X2hhc2hfdGFibGUKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxl
CkBAIC0yODksNyArMjg5LDE3IEBAIHN1YiBvdXRwdXQoKSB7CiAgICAgICAgICAgICAkaW50cmlu
c2ljID0gIlJlZ0V4cFRlc3RJbnRyaW5zaWMiIGlmICgka2V5IGVxICJ0ZXN0Iik7CiAgICAgICAg
IH0KIAorICAgICAgICBpZiAoJHZhbHVlc1skaV17InR5cGUifSBlcSAiRnVuY3Rpb24iKSAgewor
ICAgICAgICAgICAgbXkgJHRhYmxlSGVhZCA9ICRuYW1lOworICAgICAgICAgICAgJHRhYmxlSGVh
ZCA9fiBzL1RhYmxlJC8vOworICAgICAgICAgICAgcHJpbnQgIiAjaWYgSlNDX0JVSUxUSU5fRVhJ
U1RTKCIgLiB1YygkdGFibGVIZWFkIC4gJGtleSkgLiIpXG4iOworICAgICAgICAgICAgcHJpbnQg
IiAgIHsgXCIka2V5XCIsICgoJGF0dHJzWyRpXSkgJiB+RnVuY3Rpb24pIHwgQnVpbHRpbiwgJGlu
dHJpbnNpYywgKGludHB0cl90KXN0YXRpY19jYXN0PEJ1aWx0aW5HZW5lcmF0b3I+KCIgLiAkdGFi
bGVIZWFkIC4gdWNmaXJzdCgka2V5KSAuICJDb2RlR2VuZXJhdG9yKSwgKGludHB0cl90KSRzZWNv
bmRWYWx1ZSB9LFxuIjsKKyAgICAgICAgICAgIHByaW50ICIgI2Vsc2VcbiIKKyAgICAgICAgfQog
ICAgICAgICBwcmludCAiICAgeyBcIiRrZXlcIiwgJGF0dHJzWyRpXSwgJGludHJpbnNpYywgKGlu
dHB0cl90KSIgLiAkZmlyc3RDYXN0U3RyIC4gIigkZmlyc3RWYWx1ZSksIChpbnRwdHJfdCkiIC4g
JHNlY29uZENhc3RTdHIgLiAiKCRzZWNvbmRWYWx1ZSkgfSxcbiI7CisgICAgICAgIGlmICgkdmFs
dWVzWyRpXXsidHlwZSJ9IGVxICJGdW5jdGlvbiIpICB7CisgICAgICAgICAgICBwcmludCAiICNl
bmRpZlxuIgorICAgICAgICB9CiAgICAgICAgICRpKys7CiAgICAgfQogICAgIHByaW50ICIgICB7
IDAsIDAsIE5vSW50cmluc2ljLCAwLCAwIH1cbiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyLmNwcAppbmRleCBhZmE3NTQ2YzgwNjViOGYzYjE3MGRmODFhMzM3MmE4
ZjA2OWFkYjQxLi4zYTFhYjNlZDc2N2MxYmNkM2Q4NDM1MGUxZTMwOTZhY2Y1YWE3ODNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKQEAgLTI5LDcgKzI5
LDcgQEAKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJJbnRlcnBy
ZXRlci5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNGdW5j
dGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3QuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0F2YWlsYWJpbGl0eS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0F2YWlsYWJpbGl0eS5jcHAKaW5kZXgg
NjY5YzJiNDM5MjQ2YjA3ZGRiNTdkMTE3ODgzMDI5YTg4ZDNhNGFmZi4uZDBiY2VkMWNmYmQyMzc0
Njc5MzdlZTFiNjdmOTMyYTY2Mzc0ZjhkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBdmFpbGFiaWxpdHkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXZhaWxhYmlsaXR5LmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkRGR0F2YWlsYWJpbGl0eS5oIgogCisjaW5jbHVkZSAiSlNGdW5jdGlv
bklubGluZXMuaCIKKwogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVkZSAiREZHTm9kZS5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApp
bmRleCA1OGYzNjkxNjUwZGZjNjRkNGNlNzU2YjAyNTZiYzlkMTVmZTk2NjZjLi5iYTQyOTdkYjQx
MzQ1OTJmNjhjN2MyMGMxZmZjM2RlNGExOWVmODg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1
ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAi
SlNBY3RpdmF0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRl
ICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAjaW5jbHVk
ZSAiUHV0QnlJZFN0YXR1cy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcApp
bmRleCAxMzVjYTg1ZmM5MTc3MDFlMzU1MjQ1YzliMDEwMGMyMGZlZWI5YTcxLi42MGM0YWU0MmZl
MmY0ZjEyNGUyNGI3ODU4YTJkYWIzNDdjYmM5ODg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkZ1bmN0aW9uRXhlY3V0
YWJsZUR1bXAuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIK
KyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIk1heEZyYW1lRXh0ZW50
Rm9yU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiT3BlcmFuZHNJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiT3BlcmF0aW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJbnZhbGlkYXRpb25Qb2ludEluamVjdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSW52YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFzZS5jcHAKaW5kZXggZDcx
YTdjYmRhYjc3NjIwMzMzYWQxN2VhYmQ3YmQwN2NlOWZiZTUyOC4uYjU2NThjZTI2ZTQyZGMxMTdl
YTJmNjdlMzFmMWIxNTYwYTUyYzVlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdJbnZhbGlkYXRpb25Qb2ludEluamVjdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uUGhhc2UuY3Bw
CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdJ
bnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJERkdQaGFzZS5oIgorI2luY2x1ZGUgIkpTRnVuY3Rp
b25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcAppbmRleCAyZmYwYzM0MTQ2ZTJjMGJhMmZmNzZjNGQzZjdjNDZiYTNlMjU1MTQ3Li45MDQ0
Y2RjNmI4YzNhZDRhMWU5NDE4OGRkMWQwZTIwMGU2OWZiOTlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRl
ICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3Bl
LmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTmFtZUluc3RhbmNl
LmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJPcGVyYXRpb25z
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtanMtYnVpbHRp
bnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMmY0YjZkNDk5ZjAyNWMwNTNiMmY5N2I2ZjEwMGU4NTUwNDZmM2U1MQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucwpAQCAtMCww
ICsxLDMwNCBAQAorIyEvdXNyL2Jpbi9weXRob24KKyMgQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorIyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyMgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorIyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBmaWxl
Y21wCitpbXBvcnQgZm5tYXRjaAoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzaHV0aWwK
K2ltcG9ydCBzeXMKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IGpzb24KKworY29weXJpZ2h0VGV4
dCA9ICIiIiAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovXG4KKyIiIgor
CitnZW5lcmF0b3JTdHJpbmcgPSAiLyogR2VuZXJhdGVkIGJ5ICVzIGRvIG5vdCBoYW5kIGVkaXQu
ICovXG4iICUgb3MucGF0aC5iYXNlbmFtZShfX2ZpbGVfXykKKworZnVuY3Rpb25IZWFkUmVnRXhw
ID0gcmUuY29tcGlsZShyImZ1bmN0aW9uXHMrXHcrXHMqXCguKj9cKSIsIHJlLk1VTFRJTElORSB8
IHJlLlMpCitmdW5jdGlvbk5hbWVSZWdFeHAgPSByZS5jb21waWxlKHIiZnVuY3Rpb25ccysoXHcr
KVxzKlwoIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK2Z1bmN0aW9uUGFyYW1ldGVyRmluZGVyID0g
cmUuY29tcGlsZShyIl5mdW5jdGlvblxzKyg/Olx3KylccypcKCgoPzpccypcdyspP1xzKig/Olxz
KixccypcdyspKik/XCkiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorCittdWx0aWxpbmVDb21tZW50
UmVnRXhwID0gcmUuY29tcGlsZShyIlwvXCouKj9cKlwvIiwgcmUuTVVMVElMSU5FIHwgcmUuUykK
K3NpbmdsZUxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwvXC8uKj9cbiIsIHJlLk1V
TFRJTElORSB8IHJlLlMpCisKK2RlZiBnZXRDb3B5cmlnaHQoc291cmNlKToKKyAgICBjb3B5cmln
aHRCbG9jayA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAuZmluZGFsbChzb3VyY2UpWzBdCisgICAg
Y29weXJpZ2h0QmxvY2sgPSBjb3B5cmlnaHRCbG9ja1s6Y29weXJpZ2h0QmxvY2suaW5kZXgoIlJl
ZGlzdHJpYnV0aW9uIildCisgICAgY29weVJpZ2h0TGluZXMgPSBbXQorCisgICAgZm9yIGxpbmUg
aW4gY29weXJpZ2h0QmxvY2suc3BsaXQoIlxuIik6CisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxh
Y2UoIi8qIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIiovIiwgIiIpCisgICAg
ICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIioiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVw
bGFjZSgiQ29weXJpZ2h0IiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoImNvcHly
aWdodCIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIoQykiLCAiIikKKyAgICAg
ICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKGMpIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnN0
cmlwKCkKKyAgICAgICAgaWYgbGVuKGxpbmUpID09IDA6CisgICAgICAgICAgICBjb250aW51ZQor
CisgICAgICAgIGNvcHlSaWdodExpbmVzLmFwcGVuZChsaW5lKQorICAgIAorICAgIHJldHVybiBs
aXN0KHNldChjb3B5UmlnaHRMaW5lcykpCisKKworCitkZWYgZ2V0RnVuY3Rpb25zKHNvdXJjZSk6
CisKKyAgICBzb3VyY2UgPSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLnN1YigiLyoqLyIsIHNpbmds
ZUxpbmVDb21tZW50UmVnRXhwLnN1YigiLy9cbiIsIHNvdXJjZSkpCisKKyAgICBtYXRjaGVzID0g
WyBmIGZvciBmIGluIGZ1bmN0aW9uSGVhZFJlZ0V4cC5maW5kaXRlcihzb3VyY2UpXQorICAgIGZ1
bmN0aW9uQm91bmRzID0gW10KKyAgICBzdGFydCA9IDAKKyAgICBlbmQgPSAwCisgICAgZm9yIG1h
dGNoIGluIG1hdGNoZXM6CisgICAgICAgIHN0YXJ0ID0gbWF0Y2guc3RhcnQoKQorICAgICAgICBp
ZiBzdGFydCA8IGVuZDoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGVuZCA9IG1hdGNo
LmVuZCgpCisgICAgICAgIHdoaWxlIHNvdXJjZVtlbmRdICE9ICd7JzoKKyAgICAgICAgICAgIGVu
ZCA9IGVuZCArIDEKKyAgICAgICAgZGVwdGggPSAxCisgICAgICAgIGVuZCA9IGVuZCArIDEKKyAg
ICAgICAgd2hpbGUgZGVwdGggPiAwOgorICAgICAgICAgICAgaWYgc291cmNlW2VuZF0gPT0gJ3sn
OgorICAgICAgICAgICAgICAgIGRlcHRoID0gZGVwdGggKyAxCisgICAgICAgICAgICBlbGlmIHNv
dXJjZVtlbmRdID09ICd9JzoKKyAgICAgICAgICAgICAgICBkZXB0aCA9IGRlcHRoIC0gMQorICAg
ICAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICBmdW5jdGlvbkJvdW5kcy5hcHBlbmQoKHN0
YXJ0LCBlbmQpKQorCisgICAgZnVuY3Rpb25zID0gW3NvdXJjZVtzdGFydDplbmRdLnN0cmlwKCkg
Zm9yIChzdGFydCwgZW5kKSBpbiBmdW5jdGlvbkJvdW5kc10KKyAgICByZXN1bHQgPSBbXQorICAg
IGZvciBmdW5jdGlvbiBpbiBmdW5jdGlvbnM6CisgICAgICAgIGZ1bmN0aW9uID0gbXVsdGlsaW5l
Q29tbWVudFJlZ0V4cC5zdWIoIiIsIGZ1bmN0aW9uKQorICAgICAgICBmdW5jdGlvbk5hbWUgPSBm
dW5jdGlvbk5hbWVSZWdFeHAuZmluZGFsbChmdW5jdGlvbilbMF0KKyAgICAgICAgZnVuY3Rpb25Q
YXJhbWV0ZXJzID0gZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIuZmluZGFsbChmdW5jdGlvbilbMF0u
c3BsaXQoJywnKQorICAgICAgICBpZiBsZW4oZnVuY3Rpb25QYXJhbWV0ZXJzWzBdKSA9PSAwOgor
ICAgICAgICAgICAgZnVuY3Rpb25QYXJhbWV0ZXJzID0gW10KKyAgICAgICAgICAgIAorICAgICAg
ICByZXN1bHQuYXBwZW5kKChmdW5jdGlvbk5hbWUsIGZ1bmN0aW9uLCBmdW5jdGlvblBhcmFtZXRl
cnMpKQorICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgCisKK2RlZiBnZW5lcmF0ZUNvZGUoc291
cmNlKToKKyAgICBpbnB1dEZpbGUgPSBvcGVuKHNvdXJjZSwgInIiKQorICAgIGJhc2VOYW1lID0g
b3MucGF0aC5iYXNlbmFtZShzb3VyY2UpLnJlcGxhY2UoIi5qcyIsICIiKQorICAgIAorICAgIHNv
dXJjZSA9ICIiCisgICAgZm9yIGxpbmUgaW4gaW5wdXRGaWxlOgorICAgICAgICBzb3VyY2UgPSBz
b3VyY2UgKyBsaW5lCisgICAgCisgICAgaWYgc3lzLnBsYXRmb3JtID09ICJjeWd3aW4iOgorICAg
ICAgICBzb3VyY2UgPSBzb3VyY2UucmVwbGFjZSgiXHJcbiIsICJcbiIpCisgICAgcmV0dXJuIChi
YXNlTmFtZSwgZ2V0RnVuY3Rpb25zKHNvdXJjZSksIGdldENvcHlyaWdodChzb3VyY2UpKQorCitk
ZWYgbWFuZ2xlTmFtZShvYmplY3QsIG5hbWUpOgorICAgIHFOYW1lID0gb2JqZWN0ICsgIi4iICsg
bmFtZQorICAgIG1hbmdsZWROYW1lID0gIiIKKyAgICBpID0gMAorICAgIHdoaWxlIGkgPCBsZW4o
cU5hbWUpOgorICAgICAgICBpZiBxTmFtZVtpXSA9PSAnLic6CisgICAgICAgICAgICBtYW5nbGVk
TmFtZSA9IG1hbmdsZWROYW1lICsgcU5hbWVbaSArIDFdLnVwcGVyKCkKKyAgICAgICAgICAgIGkg
PSBpICsgMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVk
TmFtZSArIHFOYW1lW2ldCisgICAgICAgIGkgPSBpICsgMQorICAgIHJldHVybiBtYW5nbGVkTmFt
ZQorCitidWlsdGlucyA9IFtdCisKK2Jhc2VOYW1lID0gc3lzLmFyZ3ZbLTFdCitidWlsdGluX2Rl
ZmluaXRpb25zID0gc3lzLmFyZ3ZbMTotMV0KKyhvdXRwdXRfYmFzZSwgXykgPSBvcy5wYXRoLnNw
bGl0ZXh0KHN5cy5hcmd2Wy0xXSkKKworY29weXJpZ2h0cyA9IFtdCitmb3IgZmlsZSBpbiBidWls
dGluX2RlZmluaXRpb25zOgorICAgIGlmIGZubWF0Y2guZm5tYXRjaChmaWxlLCAnKi5qcycpOgor
ICAgICAgICAoYmFzZU5hbWUsIGZ1bmN0aW9ucywgb2JqZWN0Q29weXJpZ2h0cykgPSBnZW5lcmF0
ZUNvZGUoZmlsZSkKKyAgICAgICAgY29weXJpZ2h0cy5leHRlbmQob2JqZWN0Q29weXJpZ2h0cykK
KyAgICAgICAgYnVpbHRpbnMuYXBwZW5kKChiYXNlTmFtZSwgZnVuY3Rpb25zKSkKKworY29weXJp
Z2h0cyA9IGxpc3Qoc2V0KGNvcHlyaWdodHMpKQorCitjb3B5cmlnaHRCb2R5ID0gIiIKK2ZvciBj
b3B5cmlnaHQgaW4gY29weXJpZ2h0czoKKyAgICBjb3B5cmlnaHRCb2R5ID0gY29weXJpZ2h0Qm9k
eSArIiAqIENvcHlyaWdodCAoQykgIiArIGNvcHlyaWdodCArICJcbiIKKworYnVpbHRpbnNIZWFk
ZXIgPSBvcGVuKG91dHB1dF9iYXNlICsgIi5oLnRtcCIsICJ3IikKK2J1aWx0aW5zSW1wbGVtZW50
YXRpb24gPSBvcGVuKG91dHB1dF9iYXNlICsgIi5jcHAudG1wIiwgInciKQorY29weXJpZ2h0VGV4
dCA9ICIvKlxuIiArIGNvcHlyaWdodEJvZHkgKyBjb3B5cmlnaHRUZXh0CitidWlsdGluc0hlYWRl
ci53cml0ZSgiIiIlcworJXMKKworI2lmbmRlZiBKU0NCdWlsdGluc19ICisjZGVmaW5lIEpTQ0J1
aWx0aW5zX0gKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsK
K2NsYXNzIElkZW50aWZpZXI7CitjbGFzcyBKU0dsb2JhbE9iamVjdDsKK2NsYXNzIFNvdXJjZUNv
ZGU7CitjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIFZNOworCitGdW5j
dGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKFZNJiwgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CisKKyIiIiAlIChnZW5lcmF0b3JT
dHJpbmcsIGNvcHlyaWdodFRleHQpKQorCitjb2RlUmVmZXJlbmNlcyA9IFtdCisKK2ZvciAob2Jq
ZWN0TmFtZSwgZnVuY3Rpb25zKSBpbiBidWlsdGluczoKKyAgICBwcmludCgiR2VuZXJhdGluZyBi
aW5kaW5ncyBmb3IgdGhlICVzIGJ1aWx0aW4uIiAlIG9iamVjdE5hbWUpCisgICAgYnVpbHRpbnNI
ZWFkZXIud3JpdGUoIi8qICVzIGZ1bmN0aW9ucyAqL1xuIiAlIG9iamVjdE5hbWUpCisgICAgZm9y
IChuYW1lLCBpbXBsZW1lbnRhdGlvbiwgXykgaW4gZnVuY3Rpb25zOgorICAgICAgICBtYW5nbGVk
TmFtZSA9IG1hbmdsZU5hbWUob2JqZWN0TmFtZSwgbmFtZSkKKyAgICAgICAgbWFuZ2xlZE5hbWUg
PSBtYW5nbGVkTmFtZVswXS5sb3dlcigpICsgbWFuZ2xlZE5hbWVbMTpdICsgIkNvZGUiCisgICAg
ICAgIGNvZGVSZWZlcmVuY2VzLmFwcGVuZCgobWFuZ2xlZE5hbWUsIG5hbWUsIGltcGxlbWVudGF0
aW9uKSkKKyAgICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoImV4dGVybiBjb25zdCBjaGFyKiBz
XyVzO1xuIiAlIG1hbmdsZWROYW1lKQorICAgICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiZXh0
ZXJuIGNvbnN0IGludCBzXyVzTGVuZ3RoO1xuIiAlIG1hbmdsZWROYW1lKQorICAgIGJ1aWx0aW5z
SGVhZGVyLndyaXRlKCJcbiIpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlND
X0ZPUkVBQ0hfJXNfQlVJTFRJTihtYWNybykgXFxcbiIgJSBvYmplY3ROYW1lLnJlcGxhY2UoIi4i
LCAiXyIpLnVwcGVyKCkpCisgICAgZm9yIChuYW1lLCBpbXBsZW1lbnRhdGlvbiwgYXJndW1lbnRz
KSBpbiBmdW5jdGlvbnM6CisgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlTmFtZShvYmplY3RO
YW1lLCBuYW1lKQorICAgICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiICAgIG1hY3JvKCVzLCAl
cywgJWQpIFxcXG4iICUgKG5hbWUsIG1hbmdsZWROYW1lLCBsZW4oYXJndW1lbnRzKSkpCisgICAg
YnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuIikKKyAgICBmb3IgKG5hbWUsIGltcGxlbWVudGF0aW9u
LCBhcmd1bWVudHMpIGluIGZ1bmN0aW9uczoKKyAgICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUo
IiNkZWZpbmUgSlNDX0JVSUxUSU5fJXMgMVxuIiAlIG1hbmdsZU5hbWUob2JqZWN0TmFtZSwgbmFt
ZSkudXBwZXIoKSkKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiXG5cbiIpCituYW1lcyA9IFtd
CitidWlsdGluc0hlYWRlci53cml0ZSgiI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOKG1hY3Jv
KVxcXG4iKQorZm9yIChjb2RlUmVmZXJlbmNlLCBmdW5jdGlvbk5hbWUsIHNvdXJjZSkgaW4gY29k
ZVJlZmVyZW5jZXM6CisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiAgICBtYWNybyglcywgJXMs
IHNfJXNMZW5ndGgpIFxcXG4iICUgKGNvZGVSZWZlcmVuY2UsIGZ1bmN0aW9uTmFtZSwgY29kZVJl
ZmVyZW5jZSkpCisgICAgbmFtZXMuYXBwZW5kKGZ1bmN0aW9uTmFtZSkKKworYnVpbHRpbnNIZWFk
ZXIud3JpdGUoIlxuXG4iKQorYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0ZPUkVB
Q0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKG1hY3JvKSBcXFxuIikKK2ZvciBuYW1lIGluIHNvcnRl
ZChzZXQobmFtZXMpKToKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiICAgIG1hY3JvKCVzKSBc
XFxuIiAlIG5hbWUpCitidWlsdGluc0hlYWRlci53cml0ZSgiIiIKKworI2RlZmluZSBKU0NfREVD
TEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENv
dW50KSBcXAorICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihWTSYp
OworCitKU0NfRk9SRUFDSF9CVUlMVElOKEpTQ19ERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQor
I3VuZGVmIEpTQ19ERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCisKKyNkZWZpbmUgSlNDX0JVSUxU
SU5fRVhJU1RTKG5hbWUpIGRlZmluZWQoSlNDX0JVSUxUSU5fIyNuYW1lKQorCit9CisKKyNlbmRp
ZgorCisiIiIpCisKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoIiIiJXMKKyVzCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisKKyNpbmNsdWRl
ICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVk
ZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CisiIiIgICUgKGdlbmVyYXRvclN0cmluZywgY29weXJpZ2h0VGV4dCkpCisKK2ZvciAoY29kZVJl
ZmVyZW5jZSwgbmFtZSwgc291cmNlKSBpbiBjb2RlUmVmZXJlbmNlczoKKyAgICBzb3VyY2UgPSAi
KGZ1bmN0aW9uICIgKyBzb3VyY2Vbc291cmNlLmluZGV4KCIoIik6XSArICIpIgorICAgIGxpbmVz
ID0ganNvbi5kdW1wcyhzb3VyY2UpWzE6LTFdLnNwbGl0KCJcXG4iKQorICAgIHNvdXJjZUxlbmd0
aCA9IGxlbihzb3VyY2UpCisgICAgc291cmNlID0gIiIKKyAgICBmb3IgbGluZSBpbiBsaW5lczoK
KyAgICAgICAgc291cmNlID0gc291cmNlICsgKCIgICAgXCIlc1xcblwiIFxcXG4iICUgbGluZSkK
KyAgICBidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCJjb25zdCBjaGFyKiBzXyVzID1cbiVz
O1xuXG4iICUgKGNvZGVSZWZlcmVuY2UsIHNvdXJjZSkpCisgICAgYnVpbHRpbnNJbXBsZW1lbnRh
dGlvbi53cml0ZSgiY29uc3QgaW50IHNfJXNMZW5ndGggPSAlZDtcblxuIiAlIChjb2RlUmVmZXJl
bmNlLCBzb3VyY2VMZW5ndGggKyAxKSkgIyArIDEgZm9yIFxuCisKK2J1aWx0aW5zSW1wbGVtZW50
YXRpb24ud3JpdGUoIiIiCitGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0aW5FeGVjdXRh
YmxlKFZNJiB2bSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJs
ZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQoreworICAgIHVuc2lnbmVkIGxpbmVDb3VudCA9
IHVubGlua2VkRXhlY3V0YWJsZS0+bGluZUNvdW50KCk7CisgICAgdW5zaWduZWQgc3RhcnRDb2x1
bW4gPSAxOworICAgIHVuc2lnbmVkIHNvdXJjZUxlbmd0aCA9IHVubGlua2VkRXhlY3V0YWJsZS0+
c291cmNlTGVuZ3RoKCk7CisgICAgYm9vbCBlbmRDb2x1bW5Jc09uU3RhcnRMaW5lID0gIWxpbmVD
b3VudDsKKyAgICB1bnNpZ25lZCBlbmRDb2x1bW5FeGNsdWRpbmdCcmFjZXMgPSB1bmxpbmtlZEV4
ZWN1dGFibGUtPnVubGlua2VkQm9keUVuZENvbHVtbigpICsgKGVuZENvbHVtbklzT25TdGFydExp
bmUgPyAwIDogMSk7CisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSB1bmxpbmtlZEV4ZWN1dGFi
bGUtPnN0YXJ0T2Zmc2V0KCk7CisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXRFeGNsdWRpbmdPcGVu
QnJhY2UgPSBzdGFydE9mZnNldCArIDE7CisgICAgdW5zaWduZWQgZW5kT2Zmc2V0RXhjbHVkaW5n
Q2xvc2VCcmFjZSA9IHN0YXJ0T2Zmc2V0ICsgc291cmNlTGVuZ3RoIC0gMTsKKyAgICBTb3VyY2VD
b2RlIGJvZHlTb3VyY2Uoc291cmNlLnByb3ZpZGVyKCksIHN0YXJ0T2Zmc2V0RXhjbHVkaW5nT3Bl
bkJyYWNlLCBlbmRPZmZzZXRFeGNsdWRpbmdDbG9zZUJyYWNlLCAwLCBzdGFydENvbHVtbik7Cisg
ICAgcmV0dXJuIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBib2R5U291cmNlLCB1bmxp
bmtlZEV4ZWN1dGFibGUsIDAsIGxpbmVDb3VudCwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbkV4Y2x1
ZGluZ0JyYWNlcywgZmFsc2UpOworfQorCisjZGVmaW5lIEpTQ19ERUZJTkVfQlVJTFRJTl9HRU5F
UkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKK0Z1bmN0aW9u
RXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihWTSYgdm0pIFxcCit7IFxcCisgICAgcmV0
dXJuIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+
Y29kZU5hbWUjI0V4ZWN1dGFibGUoKSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1l
IyNTb3VyY2UoKSk7IFxcCit9CisKK0pTQ19GT1JFQUNIX0JVSUxUSU4oSlNDX0RFRklORV9CVUlM
VElOX0dFTkVSQVRPUikKKyN1bmRlZiBKU0NfREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCit9CisK
KyIiIikKKworYnVpbHRpbnNIZWFkZXIuY2xvc2UoKQorYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi5j
bG9zZSgpCisKK2lmIChub3Qgb3MucGF0aC5leGlzdHMob3V0cHV0X2Jhc2UgKyAiLmgiKSkgb3Ig
KG5vdCBmaWxlY21wLmNtcChvdXRwdXRfYmFzZSArICIuaC50bXAiLCBvdXRwdXRfYmFzZSArICIu
aCIsIHNoYWxsb3c9RmFsc2UpKToKKyAgICBvcy5yZW5hbWUob3V0cHV0X2Jhc2UgKyAiLmgudG1w
Iiwgb3V0cHV0X2Jhc2UgKyAiLmgiKQorZWxzZToKKyAgICBvcy5yZW1vdmUob3V0cHV0X2Jhc2Ug
KyAiLmgudG1wIikKKworaWYgKG5vdCBvcy5wYXRoLmV4aXN0cyhvdXRwdXRfYmFzZSArICIuY3Bw
IikpIG9yIChub3QgZmlsZWNtcC5jbXAob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCBvdXRwdXRf
YmFzZSArICIuY3BwIiwgc2hhbGxvdz1GYWxzZSkpOgorICAgIG9zLnJlbmFtZShvdXRwdXRfYmFz
ZSArICIuY3BwLnRtcCIsIG91dHB1dF9iYXNlICsgIi5jcHAiKQorZWxzZToKKyAgICBvcy5yZW1v
dmUob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggY2E4OTBiMDZlYTMzZmE5ZTdmMWZh
NTFhMzVlYTJkNDhkMDA5YTM4YS4uNmM5YmY5NmMxNWY2MDllMjY1Y2UyNTBhNDViZjA4NjFkMDZj
ZDFmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oIgogI2luY2x1ZGUgIkpTU3RhY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcu
aCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJKU1dpdGhTY29wZS5o
IgogI2luY2x1ZGUgIkxMSW50Q0xvb3AuaCIKICNpbmNsdWRlICJMTEludFRodW5rcy5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1l
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5j
cHAKaW5kZXggZjBlMDJiYTRlNDc2Zjk5Y2M5MTNiMDQ2MmFkMjc5NTAwNjA5ZmEzYS4uMWMyNDBk
Y2Q3MWJlNTI5ZDg4Y2JmNDYxZDE4NjhmNWViMmIwMmFkNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuY3BwCkBAIC0yNyw2ICsy
Nyw3IEBACiAjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9j
ay5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGln
bm1lbnQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcAppbmRleCBjYTdhZDExZjJlMGI4YTNiOGIxODU4OTFkN2U1MjJiYWU0MDNhMjM2
Li5jYjU1MDdiZWFjNTViZjhlYjFiMzdlYzkwZmNhYjE5MzRmYjQ4ZWEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
ICJIZWFwLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIK
KyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXgg
OThkMTBhM2Y0ZGNiMTJkODlmMzdhMTJmMjI2MDRiOTQ2ZTA4ZTYyNy4uZGQwMzUzNzc5ZThiZGY5
OGY0NjU4YTMwN2UzMmQwNmU0NzI0NDE1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRlYnVn
Z2VyLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNp
bmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA5MjhkZDUw
ZmIwMTZlMjcxNjQ0YTU3NWUzMGFiNWYyNTE2ZWI1MGVjLi45MDg4YjdmYjJmYjdhZDAxMzgwNmVm
NDliNWFmNDIwZmE2NDg0MDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKQEAgLTQxLDYgKzQxLDggQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRl
ICJKSVRPcGVyYXRpb25XcmFwcGVycy5oIgogI2luY2x1ZGUgIkpJVFRvREZHRGVmZXJyZWRDb21w
aWxhdGlvbkNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNs
dWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rp
b25zLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwCmluZGV4IDI2ZGQ0ZDFhZjc0NWFmYTFmYmM1M2E5YzAyM2E2ZTQ3NDFhNjZhMDku
LmRmMWJkM2E5Y2ZhNDAyYzUyYTUyMTFjZjFhY2NlNjdkNTEyMWI3ZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0yOSwxMSArMjks
MTMgQEAKICNpbmNsdWRlICJKSVQuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1
ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiR0NBd2FyZUpJVFN0dWJSb3V0aW5l
LmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIK
ICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUg
IkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1ZhcmlhYmxlT2JqZWN0Lmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
MzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMy
XzY0LmNwcAppbmRleCBkMThmZWE3MTVjYjAzYjM3YWE5MjZkODQ5YThlNWFiOTU2M2VjZDNkLi4z
MjYxYjNhZjZlZWFiZDZmMjZhNDNhMDhkMjA0YmM2MmIwNjU4OWI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVElubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oIgogI2luY2x1ZGUgIkpTVmFyaWFibGVPYmplY3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAK
aW5kZXggNDA3ODRiNDk0MzFmZTAyZThlNDUyMmYxNjMwOGM5MDI0NzE2ZDIzNi4uMmY3OTU1NTRi
MDkxZGVlYmJjMDNiZjJiZThjNzRmNDFhZTU0MWVkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAg
LTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU1Byb3h5Lmgi
CiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNp
bmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCiAjaW5jbHVk
ZSAiU3RhY2tWaXNpdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCmluZGV4IDYwNGNjMjYzY2Y5N2UwODZmZWQwNmVj
OTAzYjBlYzE5ODNlNzgxMzcuLjgxNjZlN2Y4MWZhODlhN2Q0ZjUwYzVmMWE5NGZhOTY4YzVkNTdl
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNF
eHRyYWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiSklUU3R1YnMuaCIK
ICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCi0jaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiVk0u
aCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA2
NjQ0NGJhYTA4YjU2MmRkNjk3ZTBjY2Q3NzIxZTU1YzE1YmE0OTEzLi44M2UwMWViYWZkYTI3N2Uy
NWQ4Y2YwYjBjZTY2YmQ5MWU1NWM0NjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTQwLDcgKzQwLDggQEAKICNpbmNsdWRlICJKSVQu
aCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgi
Ci0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
CisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxk
ZXIuaAppbmRleCA4ZWMxZmQzMmEzYWRhMjJlMTI1MjI5NTcwZGNmN2ZmMjhlYWJmMWVkLi40NmE3
Yzc2YjJmOTAxZmMzY2MzNmQxY2UwYzA3MzUzZWIwNmIyZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtODg4LDkgKzg4OCw5IEBAIEV4cHJlc3Npb25O
b2RlKiBBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uCiAgICAgQVNTRVJUKGZ1bmMtPmlzRG90QWNjZXNzb3JOb2RlKCkpOwogICAg
IERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4oZnVu
Yyk7CiAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZSogbm9kZTsKLSAgICBpZiAoZG90LT5pZGVudGlm
aWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y2FsbCkKKyAgICBpZiAoZG90LT5pZGVudGlm
aWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y2FsbCB8fCBkb3QtPmlkZW50aWZpZXIoKSA9
PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5jYWxsUHJpdmF0ZU5hbWUpCiAgICAgICAgIG5vZGUgPSBu
ZXcgKG1fdm0pIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwg
ZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7Ci0g
ICAgZWxzZSBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXBw
bHkpCisgICAgZWxzZSBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1l
cy0+YXBwbHkgfHwgZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXBw
bHlQcml2YXRlTmFtZSkKICAgICAgICAgbm9kZSA9IG5ldyAobV92bSkgQXBwbHlGdW5jdGlvbkNh
bGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3Ms
IGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiAgICAgZWxzZQogICAgICAgICBub2RlID0g
bmV3IChtX3ZtKSBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90
LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IGNhNGJiNGYwYWRlOGQ2YmM4MjY5
MWE2YzAwMDE0Y2YxOThiZDg4YmQuLmNjYjA3OWQ5NzVhMTQxYzVjNGIyZDdiNjIzMTMwMDA3MDk3
Nzc4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC0yNSwxMCAr
MjUsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMZXhlci5oIgogCisjaW5j
bHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKKyNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKLQogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVu
Y3Rpb25zLmgiCi0jaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk5vZGVJbmZvLmgi
CiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlIDx3dGYvZHRvYS5oPgpAQCAtOTAsNiArOTAs
NyBAQCBlbnVtIENoYXJhY3RlclR5cGUgewogCiAgICAgLy8gT3RoZXIgdHlwZXMgKG9ubHkgb25l
IHNvIGZhcikKICAgICBDaGFyYWN0ZXJXaGl0ZVNwYWNlLAorICAgIENoYXJhY3RlclByaXZhdGVJ
ZGVudGlmaWVyU3RhcnQKIH07CiAKIC8vIDI1NiBMYXRpbi0xIGNvZGVzCkBAIC0xNTgsNyArMTU5
LDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IHR5cGVzT2ZMYXRpbjFDaGFyYWN0ZXJz
WzI1Nl0gPSB7CiAvKiAgNjEgLSA9ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyRXF1YWws
CiAvKiAgNjIgLSA+ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyR3JlYXRlciwKIC8qICA2
MyAtID8gICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJRdWVzdGlvbiwKLS8qICA2NCAtIEAg
ICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyogIDY0IC0gQCAgICAgICAg
ICAgICAgICAgICovIENoYXJhY3RlclByaXZhdGVJZGVudGlmaWVyU3RhcnQsCiAvKiAgNjUgLSBB
ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAogLyogIDY2IC0g
QiAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKIC8qICA2NyAt
IEMgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCkBAIC00ODYs
OSArNDg3LDEwIEBAIHN0YXRpYyBjb25zdCBMQ2hhciBzaW5nbGVDaGFyYWN0ZXJFc2NhcGVWYWx1
ZXNGb3JBU0NJSVsxMjhdID0gewogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1MZXhlcjxU
Pjo6TGV4ZXIoVk0qIHZtKQorTGV4ZXI8VD46OkxleGVyKFZNKiB2bSwgSlNQYXJzZXJTdHJpY3Ru
ZXNzIHN0cmljdG5lc3MpCiAgICAgOiBtX2lzUmVwYXJzaW5nKGZhbHNlKQogICAgICwgbV92bSh2
bSkKKyAgICAsIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbihzdHJpY3RuZXNzID09IEpTUGFyc2VC
dWlsdGluKQogewogfQogCkBAIC03NTMsNyArNzU1LDI3IEBAIGlubGluZSB2b2lkIExleGVyPFQ+
OjpyZWNvcmQxNihpbnQgYykKICAgICBBU1NFUlQoYyA8PSBzdGF0aWNfY2FzdDxpbnQ+KFVTSFJU
X01BWCkpOwogICAgIG1fYnVmZmVyMTYuYXBwZW5kKHN0YXRpY19jYXN0PFVDaGFyPihjKSk7CiB9
Ci0KKyAgICAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECitib29sIGlzU2FmZUlkZW50aWZpZXIoVk0m
IHZtLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCkKK3sKKyAgICBpZiAoIWlkZW50KQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAvKiBKdXN0IGJsb2NrIGFueSB1c2Ugb2Ygc3VzcGljaW91cyBp
ZGVudGlmaWVycy4gIFRoaXMgaXMgaW50ZW5kZWQgdG8KKyAgICAgKiBiZSB1c2VkIGFzIGEgc2Fm
ZXR5IG5ldCB3aGlsZSBpbXBsZW1lbnRpbmcgYnVpbHRpbnMuCisgICAgICovCisgICAgaWYgKCpp
ZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCppZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5hcHBseSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+ZXZhbCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+RnVu
Y3Rpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRp
ZgorICAgIAogdGVtcGxhdGUgPD4KIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZp
ZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwYXJzZUlkZW50aWZp
ZXIoSlNUb2tlbkRhdGEqIHRva2VuRGF0YSwgdW5zaWduZWQgbGV4ZXJGbGFncywgYm9vbCBzdHJp
Y3RNb2RlKQogewpAQCAtNzY1LDcgKzc4NywxMSBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVh
dGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAog
ICAgICAgICAgICAgcmV0dXJuIGtleXdvcmQgPT0gUkVTRVJWRURfSUZfU1RSSUNUICYmICFzdHJp
Y3RNb2RlID8gSURFTlQgOiBrZXl3b3JkOwogICAgICAgICB9CiAgICAgfQotCisgICAgCisgICAg
Ym9vbCBpc1ByaXZhdGVOYW1lID0gbV9jdXJyZW50ID09ICdAJyAmJiBtX3BhcnNpbmdCdWlsdGlu
RnVuY3Rpb247CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgIHNoaWZ0KCk7CisgICAg
CiAgICAgY29uc3QgTENoYXIqIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsK
ICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTGluZVN0YXJ0ID0gY3VycmVudExpbmVTdGFydE9mZnNl
dCgpOwogICAgIApAQCAtNzc5LDE1ICs4MDUsMjYgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3Jl
YXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAK
IAogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gMDsKICAgICAKLSAgICBpZiAoc2hvdWxk
Q3JlYXRlSWRlbnRpZmllcikgeworICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyIHx8IG1f
cGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgewogICAgICAgICBpbnQgaWRlbnRpZmllckxlbmd0aCA9
IGN1cnJlbnRTb3VyY2VQdHIoKSAtIGlkZW50aWZpZXJTdGFydDsKICAgICAgICAgaWRlbnQgPSBt
YWtlSWRlbnRpZmllcihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwotCisgICAg
ICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKKyAgICAgICAgICAgIGlmICghaXNT
YWZlSWRlbnRpZmllcigqbV92bSwgaWRlbnQpICYmICFpc1ByaXZhdGVOYW1lKSB7CisgICAgICAg
ICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJUaGUgdXNlIG9mICciLCBp
ZGVudC0+c3RyaW5nKCksICInIGlzIGRpc2FsbG93ZWQgaW4gYnVpbHRpbiBmdW5jdGlvbnMuIik7
CisgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgICAgICAgICAgaWRlbnQgPSBtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5nZXRQcml2YXRlTmFtZSgqaWRlbnQpOworICAgICAgICAgICAgZWxzZSBp
ZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQpCisgICAg
ICAgICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRl
ZmluZWRLZXl3b3JkUHJpdmF0ZU5hbWU7CisgICAgICAgICAgICBpZiAoIWlkZW50KQorICAgICAg
ICAgICAgICAgIHJldHVybiBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzsKKyAgICAgICAg
fQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gaWRlbnQ7CiAgICAgfSBlbHNlCiAgICAgICAg
IHRva2VuRGF0YS0+aWRlbnQgPSAwOwogCi0gICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBt
YXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVk
V29yZHMpKSkgeworICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgp
ICYmICEobGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlz
UHJpdmF0ZU5hbWUpIHsKICAgICAgICAgQVNTRVJUKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpOwog
ICAgICAgICBpZiAocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHsKICAgICAgICAgICAgIGNv
bnN0IEhhc2hFbnRyeSogZW50cnkgPSBtX3ZtLT5rZXl3b3Jkcy0+Z2V0S2V5d29yZCgqaWRlbnQp
OwpAQCAtODE0LDYgKzg1MSwxMCBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlm
aWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAgICAgICAg
ICAgcmV0dXJuIGtleXdvcmQgPT0gUkVTRVJWRURfSUZfU1RSSUNUICYmICFzdHJpY3RNb2RlID8g
SURFTlQgOiBrZXl3b3JkOwogICAgICAgICB9CiAgICAgfQorICAgIAorICAgIGJvb2wgaXNQcml2
YXRlTmFtZSA9IG1fY3VycmVudCA9PSAnQCcgJiYgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uOwor
ICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICBzaGlmdCgpOwogCiAgICAgY29uc3QgVUNo
YXIqIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKICAgICBpbnQgaWRlbnRp
ZmllckxpbmVTdGFydCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKQEAgLTgyNiw2ICs4Njcs
NyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5F
IEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAgIH0KICAgICAKICAgICBpZiAoVU5MSUtF
TFkobV9jdXJyZW50ID09ICdcXCcpKSB7CisgICAgICAgIEFTU0VSVCghaXNQcml2YXRlTmFtZSk7
CiAgICAgICAgIHNldE9mZnNldEZyb21Tb3VyY2VQdHIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlm
aWVyTGluZVN0YXJ0KTsKICAgICAgICAgcmV0dXJuIHBhcnNlSWRlbnRpZmllclNsb3dDYXNlPHNo
b3VsZENyZWF0ZUlkZW50aWZpZXI+KHRva2VuRGF0YSwgbGV4ZXJGbGFncywgc3RyaWN0TW9kZSk7
CiAgICAgfQpAQCAtODM3LDE4ICs4NzksMjkgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRl
SWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAKIAog
ICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gMDsKICAgICAKLSAgICBpZiAoc2hvdWxkQ3Jl
YXRlSWRlbnRpZmllcikgeworICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyIHx8IG1fcGFy
c2luZ0J1aWx0aW5GdW5jdGlvbikgewogICAgICAgICBpbnQgaWRlbnRpZmllckxlbmd0aCA9IGN1
cnJlbnRTb3VyY2VQdHIoKSAtIGlkZW50aWZpZXJTdGFydDsKICAgICAgICAgaWYgKGlzQWxsOEJp
dCkKICAgICAgICAgICAgIGlkZW50ID0gbWFrZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hhcihpZGVu
dGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBpZGVudCA9IG1ha2VJZGVudGlmaWVyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0
aCk7Ci0gICAgICAgIAorICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7Cisg
ICAgICAgICAgICBpZiAoIWlzU2FmZUlkZW50aWZpZXIoKm1fdm0sIGlkZW50KSAmJiAhaXNQcml2
YXRlTmFtZSkgeworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gbWFrZVN0cmlu
ZygiVGhlIHVzZSBvZiAnIiwgaWRlbnQtPnN0cmluZygpLCAiJyBpcyBkaXNhbGxvd2VkIGluIGJ1
aWx0aW4gZnVuY3Rpb25zLiIpOworICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPSzsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICAgICAg
ICAgIGlkZW50ID0gbV92bS0+cHJvcGVydHlOYW1lcy0+Z2V0UHJpdmF0ZU5hbWUoKmlkZW50KTsK
KyAgICAgICAgICAgIGVsc2UgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRl
ZmluZWRLZXl3b3JkKQorICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAmbV92bS0+
cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZFByaXZhdGVOYW1lOworICAgICAgICAgICAg
aWYgKCFpZGVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9QUklWQVRFX05BTUVf
RVJST1JUT0s7CisgICAgICAgIH0KICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IGlkZW50Owog
ICAgIH0gZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gMDsKICAgICAKLSAgICBpZiAo
VU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxhZ3MgJiBM
ZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpKSB7CisgICAgaWYgKFVOTElLRUxZKChyZW1h
aW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9y
ZVJlc2VydmVkV29yZHMpKSAmJiAhaXNQcml2YXRlTmFtZSkgewogICAgICAgICBBU1NFUlQoc2hv
dWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChyZW1haW5pbmcgPCBtYXhUb2tlbkxl
bmd0aCkgewogICAgICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IG1fdm0tPmtleXdv
cmRzLT5nZXRLZXl3b3JkKCppZGVudCk7CkBAIC0xNjU4LDYgKzE3MTEsNyBAQCBpbk51bWJlckFm
dGVyRGVjaW1hbFBvaW50OgogICAgICAgICBBU1NFUlQoaXNJZGVudFN0YXJ0KG1fY3VycmVudCkp
OwogICAgICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNlIENoYXJhY3RlckJhY2tTbGFzaDoKKyAg
ICAgICAgcGFyc2VJZGVudDoKICAgICAgICAgaWYgKGxleGVyRmxhZ3MgJiBMZXhleEZsYWdzRG9u
dEJ1aWxkS2V5d29yZHMpCiAgICAgICAgICAgICB0b2tlbiA9IHBhcnNlSWRlbnRpZmllcjxmYWxz
ZT4odG9rZW5EYXRhLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKTsKICAgICAgICAgZWxzZQpAQCAt
MTY3MCw2ICsxNzI0LDExIEBAIGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ6CiAgICAgICAgIG1f
dGVybWluYXRvciA9IHRydWU7CiAgICAgICAgIG1fbGluZVN0YXJ0ID0gbV9jb2RlOwogICAgICAg
ICBnb3RvIHN0YXJ0OworICAgIGNhc2UgQ2hhcmFjdGVyUHJpdmF0ZUlkZW50aWZpZXJTdGFydDoK
KyAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikKKyAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudDsKKworICAgICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNlIENoYXJhY3Rlcklu
dmFsaWQ6CiAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gaW52YWxpZENoYXJhY3Rlck1lc3Nh
Z2UoKTsKICAgICAgICAgdG9rZW4gPSBFUlJPUlRPSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
TGV4ZXIuaAppbmRleCAyOGM2MWJhMTk4ZDJjMTVhNDliYjE4NTJlZDMwYmVmZWI4OTA0MDA4Li5i
ODg3M2U5OTUwMjg2NDRiZjhjYmIzZDRjMmRhNTYyZTkzZTBlOGU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9MZXhlci5oCkBAIC03Miw3ICs3Miw3IEBAIGNsYXNzIExleGVyIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAogcHVibGljOgotICAgIExleGVyKFZNKik7CisgICAg
TGV4ZXIoVk0qLCBKU1BhcnNlclN0cmljdG5lc3MpOwogICAgIH5MZXhlcigpOwogCiAgICAgLy8g
Q2hhcmFjdGVyIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMuCkBAIC0yMzgsNiArMjM4LDcgQEAgcHJp
dmF0ZToKICAgICBJZGVudGlmaWVyQXJlbmEqIG1fYXJlbmE7CiAKICAgICBWTSogbV92bTsKKyAg
ICBib29sIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKIH07CiAKIHRlbXBsYXRlIDw+CkBAIC0z
MzUsNiArMzM2LDEyIEBAIEFMV0FZU19JTkxJTkUgY29uc3QgSWRlbnRpZmllciogTGV4ZXI8VD46
Om1ha2VMQ2hhcklkZW50aWZpZXIoY29uc3QgVUNoYXIqIGNoYXJhCiAgICAgcmV0dXJuICZtX2Fy
ZW5hLT5tYWtlSWRlbnRpZmllckxDaGFyRnJvbVVDaGFyKG1fdm0sIGNoYXJhY3RlcnMsIGxlbmd0
aCk7CiB9CiAKKyNpZiBBU1NFUlRfRElTQUJMRUQKK0FMV0FZU19JTkxJTkUgYm9vbCBpc1NhZmVJ
ZGVudGlmaWVyKFZNJiwgY29uc3QgSWRlbnRpZmllciopIHsgcmV0dXJuIHRydWU7IH0KKyNlbHNl
Citib29sIGlzU2FmZUlkZW50aWZpZXIoVk0mLCBjb25zdCBJZGVudGlmaWVyKik7CisjZW5kaWYK
KwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVy
PFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW4qIHRva2VuUmVjb3JkLCB1bnNpZ25lZCBs
ZXhlckZsYWdzLCBib29sIHN0cmljdE1vZGUpCiB7CkBAIC0zNzAsMTAgKzM3NywxNSBAQCBBTFdB
WVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9r
ZW4qIHRva2VuUmVjb3JkLCB1bgogICAgIEFTU0VSVChjdXJyZW50T2Zmc2V0KCkgPj0gY3VycmVu
dExpbmVTdGFydE9mZnNldCgpKTsKIAogICAgIC8vIENyZWF0ZSB0aGUgaWRlbnRpZmllciBpZiBu
ZWVkZWQKLSAgICBpZiAobGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250QnVpbGRLZXl3b3JkcykK
KyAgICBpZiAobGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250QnVpbGRLZXl3b3JkcworI2lmICFB
U1NFUlRfRElTQUJMRUQKKyAgICAgICAgJiYgIW1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbgorI2Vu
ZGlmCisgICAgICAgICkKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IDA7CiAgICAgZWxzZQog
ICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gbWFrZUxDaGFySWRlbnRpZmllcihzdGFydCwgcHRy
IC0gc3RhcnQpOworCiAgICAgdG9rZW5Mb2NhdGlvbi0+bGluZSA9IG1fbGluZU51bWJlcjsKICAg
ICB0b2tlbkxvY2F0aW9uLT5saW5lU3RhcnRPZmZzZXQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0
KCk7CiAgICAgdG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZzZXQgPSBvZmZzZXRGcm9tU291cmNlUHRy
KHN0YXJ0KTsKQEAgLTM4MSw2ICszOTMsMTMgQEAgQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBM
ZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rva2VuKiB0b2tlblJlY29yZCwgdW4KICAg
ICBBU1NFUlQodG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZzZXQgPj0gdG9rZW5Mb2NhdGlvbi0+bGlu
ZVN0YXJ0T2Zmc2V0KTsKICAgICB0b2tlblJlY29yZC0+bV9zdGFydFBvc2l0aW9uID0gc3RhcnRQ
b3NpdGlvbjsKICAgICB0b2tlblJlY29yZC0+bV9lbmRQb3NpdGlvbiA9IGN1cnJlbnRQb3NpdGlv
bigpOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0
aW9uKSB7CisgICAgICAgIGlmICghaXNTYWZlSWRlbnRpZmllcigqbV92bSwgdG9rZW5EYXRhLT5p
ZGVudCkpCisgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7CisgICAgfQorI2VuZGlmCisKICAg
ICBtX2xhc3RUb2tlbiA9IElERU5UOwogICAgIHJldHVybiBJREVOVDsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggZmM5Y2NkOWY2YzU3NmMxYWVmNTQ3ZjIx
MWZkZDU5NmY0MmUwNTgwNi4uZDk1MmJhNmE5NGQyZjZiNDE4MjE1NTAwNGQwYTk3MDg0MjliZDc4
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTEzMiw2ICsxMzIs
MTIgQEAgUGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4gUHJvZ3JhbU5vZGU6OmNyZWF0ZShWTSogdm0s
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQKICAgICByZXR1cm4gbm9kZS5yZWxlYXNlKCk7
CiB9CiAKKwordm9pZCBQcm9ncmFtTm9kZTo6c2V0Q2xvc2VkVmFyaWFibGVzKGNvbnN0IFZlY3Rv
cjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYgY2xvc2VkVmFyaWFibGVzKQoreworICAgIG1fY2xvc2Vk
VmFyaWFibGVzID0gc3RkOjptb3ZlKGNsb3NlZFZhcmlhYmxlcyk7Cit9CisKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFdmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCiBpbmxpbmUgRXZhbE5vZGU6OkV2YWxOb2RlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9u
LCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sq
IHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1
cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0
dXJlcywgaW50IG51bUNvbnN0YW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApp
bmRleCBkNzc5YTE3OGQ5NTZmZjk5ZmQwYmVkNWQ1ZjQ1NGFhM2U2YjUwODc5Li44MTZmZjAwMWFi
ZjAzNzZjNjQyZjFhOTM4ZDBlMGE5ZjUyOWNhNmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2Rlcy5oCkBAIC0xNDMxLDYgKzE0MzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
Ym9vbCBuZWVkc0FjdGl2YXRpb24oKSBjb25zdCB7IHJldHVybiAoaGFzQ2FwdHVyZWRWYXJpYWJs
ZXMoKSkgfHwgKG1fZmVhdHVyZXMgJiAoRXZhbEZlYXR1cmUgfCBXaXRoRmVhdHVyZSB8IENhdGNo
RmVhdHVyZSkpOyB9CiAgICAgICAgIGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSBjb25zdCB7
IHJldHVybiAhIW1fY2FwdHVyZWRWYXJpYWJsZXMuc2l6ZSgpOyB9CiAgICAgICAgIHNpemVfdCBj
YXB0dXJlZFZhcmlhYmxlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2NhcHR1cmVkVmFyaWFibGVz
LnNpemUoKTsgfQorICAgICAgICBjb25zdCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxl
cygpIGNvbnN0IHsgcmV0dXJuIG1fY2FwdHVyZWRWYXJpYWJsZXM7IH0KICAgICAgICAgYm9vbCBj
YXB0dXJlcyhjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgeyByZXR1cm4gbV9jYXB0dXJlZFZhcmlh
Ymxlcy5jb250YWlucyhpZGVudC5pbXBsKCkpOyB9CiAKICAgICAgICAgVmFyU3RhY2smIHZhclN0
YWNrKCkgeyByZXR1cm4gbV92YXJTdGFjazsgfQpAQCAtMTQ0Niw2ICsxNDQ3LDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCgpIGNvbnN0
OwogCiAgICAgICAgIHZvaWQgZW1pdFN0YXRlbWVudHNCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9uKTsKKyAgICAgICAgCisgICAgICAgIHZvaWQgc2V0
Q2xvc2VkVmFyaWFibGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYpIHsgfQog
CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2b2lkIHNldFNvdXJjZShjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UpIHsgbV9zb3VyY2UgPSBzb3VyY2U7IH0KQEAgLTE0NzUsMTEgKzE0NzgsMTMgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0
aW9uID0gZmFsc2U7CiAKKyAgICAgICAgdm9pZCBzZXRDbG9zZWRWYXJpYWJsZXMoY29uc3QgVmVj
dG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJik7CisgICAgICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8
U3RyaW5nSW1wbD4+JiBjbG9zZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2Nsb3NlZFZh
cmlhYmxlczsgfQogICAgIHByaXZhdGU6CiAgICAgICAgIFByb2dyYW1Ob2RlKFZNKiwgY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2ln
bmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFy
U3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUm
LCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJy
aWRlOwotCisgICAgICAgIFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+IG1fY2xvc2VkVmFyaWFi
bGVzOwogICAgICAgICB1bnNpZ25lZCBtX3N0YXJ0Q29sdW1uOwogICAgICAgICB1bnNpZ25lZCBt
X2VuZENvbHVtbjsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
CmluZGV4IDI5NzY2NmU3MjZlNDVkMDgzZWYxMzQ5ZGRmZmRmMzdlZjgwMGRmN2EuLjUwYmVjNzlm
ZTM4YWRmOGYzYTA0ZjZiNDZjYmQyYTVjYmZjZjI0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5jcHAKQEAgLTIwNCw4ICsyMDQsOSBAQCBQYXJzZXI8TGV4ZXJUeXBlPjo6
UGFyc2VyKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRl
cnMqCiAgICAgLCBtX2xhc3RJZGVudGlmaWVyKDApCiAgICAgLCBtX2xhc3RGdW5jdGlvbk5hbWUo
bnVsbHB0cikKICAgICAsIG1fc291cmNlRWxlbWVudHMoMCkKKyAgICAsIG1fcGFyc2luZ0J1aWx0
aW4oc3RyaWN0bmVzcyA9PSBKU1BhcnNlQnVpbHRpbikKIHsKLSAgICBtX2xleGVyID0gYWRvcHRQ
dHIobmV3IExleGVyVHlwZSh2bSkpOworICAgIG1fbGV4ZXIgPSBhZG9wdFB0cihuZXcgTGV4ZXJU
eXBlKHZtLCBzdHJpY3RuZXNzKSk7CiAgICAgbV9hcmVuYSA9IG1fdm0tPnBhcnNlckFyZW5hLmdl
dCgpOwogICAgIG1fbGV4ZXItPnNldENvZGUoc291cmNlLCBtX2FyZW5hKTsKICAgICBtX3Rva2Vu
Lm1fbG9jYXRpb24ubGluZSA9IHNvdXJjZS5maXJzdExpbmUoKTsKQEAgLTI1Niw2ICsyNTcsNyBA
QCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoKQogICAgIElkZW50aWZpZXJT
ZXQgY2FwdHVyZWRWYXJpYWJsZXM7CiAgICAgYm9vbCBtb2RpZmllZFBhcmFtZXRlciA9IGZhbHNl
OwogICAgIHNjb3BlLT5nZXRDYXB0dXJlZFZhcmlhYmxlcyhjYXB0dXJlZFZhcmlhYmxlcywgbW9k
aWZpZWRQYXJhbWV0ZXIpOworICAgIAogICAgIENvZGVGZWF0dXJlcyBmZWF0dXJlcyA9IGNvbnRl
eHQuZmVhdHVyZXMoKTsKICAgICBpZiAoc2NvcGUtPnN0cmljdE1vZGUoKSkKICAgICAgICAgZmVh
dHVyZXMgfD0gU3RyaWN0TW9kZUZlYXR1cmU7CkBAIC0yNjMsMjEgKzI2NSwzNiBAQCBTdHJpbmcg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoKQogICAgICAgICBmZWF0dXJlcyB8PSBTaGFk
b3dzQXJndW1lbnRzRmVhdHVyZTsKICAgICBpZiAobW9kaWZpZWRQYXJhbWV0ZXIpCiAgICAgICAg
IGZlYXR1cmVzIHw9IE1vZGlmaWVkUGFyYW1ldGVyRmVhdHVyZTsKLQorICAgIAorICAgIFZlY3Rv
cjxSZWZQdHI8U3RyaW5nSW1wbD4+IGNsb3NlZFZhcmlhYmxlczsKKyAgICBpZiAobV9wYXJzaW5n
QnVpbHRpbikgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghY2FwdHVyZWRWYXJpYWJsZXMuc2l6
ZSgpKTsKKyAgICAgICAgSWRlbnRpZmllclNldCB1c2VkVmFyaWFibGVzOworICAgICAgICBzY29w
ZS0+Z2V0VXNlZFZhcmlhYmxlcyh1c2VkVmFyaWFibGVzKTsKKyAgICAgICAgZm9yIChjb25zdCBh
dXRvJiB2YXJpYWJsZSA6IHVzZWRWYXJpYWJsZXMpIHsKKyAgICAgICAgICAgIGlmIChzY29wZS0+
aGFzRGVjbGFyZWRWYXJpYWJsZShJZGVudGlmaWVyKG1fdm0sIHZhcmlhYmxlLmdldCgpKSkpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChz
Y29wZS0+aGFzRGVjbGFyZWRQYXJhbWV0ZXIoSWRlbnRpZmllcihtX3ZtLCB2YXJpYWJsZS5nZXQo
KSkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgY2xvc2VkVmFyaWFi
bGVzLmFwcGVuZCh2YXJpYWJsZSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgZGlkRmluaXNoUGFy
c2luZyhzb3VyY2VFbGVtZW50cywgY29udGV4dC52YXJEZWNsYXJhdGlvbnMoKSwgY29udGV4dC5m
dW5jRGVjbGFyYXRpb25zKCksIGZlYXR1cmVzLAotICAgICAgICBjb250ZXh0Lm51bUNvbnN0YW50
cygpLCBjYXB0dXJlZFZhcmlhYmxlcyk7CisgICAgICAgIGNvbnRleHQubnVtQ29uc3RhbnRzKCks
IGNhcHR1cmVkVmFyaWFibGVzLCBzdGQ6Om1vdmUoY2xvc2VkVmFyaWFibGVzKSk7CiAKICAgICBy
ZXR1cm4gcGFyc2VFcnJvcjsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHZv
aWQgUGFyc2VyPExleGVyVHlwZT46OmRpZEZpbmlzaFBhcnNpbmcoU291cmNlRWxlbWVudHMqIHNv
dXJjZUVsZW1lbnRzLCBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNr
PiogdmFyU3RhY2ssIAotICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVu
Y3Rpb25TdGFjaz4qIGZ1bmNTdGFjaywgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29u
c3RhbnRzLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcnMpCisgICAgUGFyc2VyQXJlbmFEYXRh
PERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiogZnVuY1N0YWNrLCBDb2RlRmVhdHVy
ZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMsIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFy
cywgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJiBjbG9zZWRWYXJpYWJsZXMpCiB7
CiAgICAgbV9zb3VyY2VFbGVtZW50cyA9IHNvdXJjZUVsZW1lbnRzOwogICAgIG1fdmFyRGVjbGFy
YXRpb25zID0gdmFyU3RhY2s7CiAgICAgbV9mdW5jRGVjbGFyYXRpb25zID0gZnVuY1N0YWNrOwog
ICAgIG1fY2FwdHVyZWRWYXJpYWJsZXMuc3dhcChjYXB0dXJlZFZhcnMpOworICAgIG1fY2xvc2Vk
VmFyaWFibGVzID0gY2xvc2VkVmFyaWFibGVzOwogICAgIG1fZmVhdHVyZXMgPSBmZWF0dXJlczsK
ICAgICBtX251bUNvbnN0YW50cyA9IG51bUNvbnN0YW50czsKIH0KQEAgLTIzNDYsNiArMjM2Mywx
MCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPiB2b2lkIFBhcnNlcjxMZXhlclR5cGU+
OjpwcmludFVuZXhwZWN0ZWRUb2tlblRleHQoVwogICAgIGNhc2UgUkVTRVJWRUQ6CiAgICAgICAg
IG91dC5wcmludCgiVW5leHBlY3RlZCB1c2Ugb2YgcmVzZXJ2ZWQgd29yZCAnIiwgZ2V0VG9rZW4o
KSwgIiciKTsKICAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBJTlZBTElEX1BSSVZBVEVfTkFN
RV9FUlJPUlRPSzoKKyAgICAgICAgb3V0LnByaW50KCJJbnZhbGlkIHByaXZhdGUgbmFtZSAnIiwg
Z2V0VG9rZW4oKSwgIiciKTsKKyAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAgICAgY2Fz
ZSBJREVOVDoKICAgICAgICAgb3V0LnByaW50KCJVbmV4cGVjdGVkIGlkZW50aWZpZXIgJyIsIGdl
dFRva2VuKCksICInIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBi
Njk4ZWY5MzY4Y2I4YzhmMTk3Y2NkMDAwYWNhYTZkZmIxMWJhMjQ0Li45MDMzODUwYzhjOTdmNTdl
MjFkYTVlZWRiMDJkMDQ0ZjRjODk3OGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmgKQEAgLTIzLDYgKzIzLDcgQEAKICNpZm5kZWYgUGFyc2VyX2gKICNkZWZpbmUgUGFyc2Vy
X2gKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIu
aCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5o
IgpAQCAtMjU5LDYgKzI2MCwxMCBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICByZXR1cm4gaXNW
YWxpZFN0cmljdE1vZGUgPyBCaW5kaW5nU3VjY2VlZGVkIDogU3RyaWN0QmluZGluZ0ZhaWxlZDsK
ICAgICB9CiAKKyAgICB2b2lkIGdldFVzZWRWYXJpYWJsZXMoSWRlbnRpZmllclNldCYgdXNlZFZh
cmlhYmxlcykKKyAgICB7CisgICAgICAgIHVzZWRWYXJpYWJsZXMuc3dhcChtX3VzZWRWYXJpYWJs
ZXMpOworICAgIH0KIAogICAgIHZvaWQgdXNlVmFyaWFibGUoY29uc3QgSWRlbnRpZmllciogaWRl
bnQsIGJvb2wgaXNFdmFsKQogICAgIHsKQEAgLTQxNCw2ICs0MTksNyBAQCBwdWJsaWM6CiAgICAg
UGFzc1JlZlB0cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYpOwogCiAgICAgSlNUZXh0
UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4
ZXItPnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsgfQorICAgIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8U3RyaW5nSW1wbD4+JiYgY2xvc2VkVmFyaWFibGVzKCkgeyByZXR1cm4gc3RkOjptb3ZlKG1f
Y2xvc2VkVmFyaWFibGVzKTsgfQogCiBwcml2YXRlOgogICAgIHN0cnVjdCBBbGxvd0luT3ZlcnJp
ZGUgewpAQCAtNTQwLDcgKzU0Niw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIHBhcnNlSW5uZXIo
KTsKIAogICAgIHZvaWQgZGlkRmluaXNoUGFyc2luZyhTb3VyY2VFbGVtZW50cyosIFBhcnNlckFy
ZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+KiwgCi0gICAgICAgIFBhcnNlckFy
ZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qLCBDb2RlRmVhdHVyZXMs
IGludCwgSWRlbnRpZmllclNldCYpOworICAgICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRp
b25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KiwgQ29kZUZlYXR1cmVzLCBpbnQsIElkZW50aWZpZXJT
ZXQmLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmKTsKIAogICAgIC8vIFVzZWQg
dG8gZGV0ZXJtaW5lIHR5cGUgb2YgZXJyb3IgdG8gcmVwb3J0LgogICAgIGJvb2wgaXNGdW5jdGlv
bkJvZHlOb2RlKFNjb3BlTm9kZSopIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC04NDAsOSArODQ2LDEx
IEBAIHByaXZhdGU6CiAgICAgY29uc3QgSWRlbnRpZmllciogbV9sYXN0RnVuY3Rpb25OYW1lOwog
ICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlckNhY2hlPiBtX2Z1bmN0aW9uQ2FjaGU7CiAgICAgU291
cmNlRWxlbWVudHMqIG1fc291cmNlRWxlbWVudHM7CisgICAgYm9vbCBtX3BhcnNpbmdCdWlsdGlu
OwogICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+KiBtX3Zh
ckRlY2xhcmF0aW9uczsKICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1
bmN0aW9uU3RhY2s+KiBtX2Z1bmNEZWNsYXJhdGlvbnM7CiAgICAgSWRlbnRpZmllclNldCBtX2Nh
cHR1cmVkVmFyaWFibGVzOworICAgIFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+IG1fY2xvc2Vk
VmFyaWFibGVzOwogICAgIENvZGVGZWF0dXJlcyBtX2ZlYXR1cmVzOwogICAgIGludCBtX251bUNv
bnN0YW50czsKICAgICAKQEAgLTk1Nyw2ICs5NjUsMTAgQEAgUGFzc1JlZlB0cjxQYXJzZWROb2Rl
PiBwYXJzZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25QYXJhbWV0
ZXIKICAgICAgICAgUmVmUHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJz
ZWROb2RlPihlcnJvcik7CiAgICAgICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQog
ICAgICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25C
ZWZvcmVMYXN0TmV3bGluZSgpOworICAgICAgICBpZiAoc3RyaWN0bmVzcyA9PSBKU1BhcnNlQnVp
bHRpbikgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKKyAgICAgICAgICAg
IHJlc3VsdC0+c2V0Q2xvc2VkVmFyaWFibGVzKHN0ZDo6bW92ZShwYXJzZXIuY2xvc2VkVmFyaWFi
bGVzKCkpKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKICAg
ICB9CiAgICAgUGFyc2VyPExleGVyPFVDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIHBhcmFtZXRl
cnMsIG5hbWUsIHN0cmljdG5lc3MsIHBhcnNlck1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXJNb2Rlcy5oCmluZGV4IDRlOWExN2NkMjFjYTM0MTQ2YmJkNDgxNTZhMzcy
Y2Q0MDRkZWY2MGMuLmY3YTc1YmY3YzM3ODU3ZTQ0YjZkNWQ3MWY0NTI5YmIxYWMxY2Y1ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKQEAgLTI5LDcgKzI5
LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gSlNQYXJzZXJTdHJpY3RuZXNzIHsgSlNQ
YXJzZU5vcm1hbCwgSlNQYXJzZVN0cmljdCB9OworZW51bSBKU1BhcnNlclN0cmljdG5lc3MgeyBK
U1BhcnNlTm9ybWFsLCBKU1BhcnNlQnVpbHRpbiwgSlNQYXJzZVN0cmljdCB9OwogZW51bSBKU1Bh
cnNlck1vZGUgeyBKU1BhcnNlUHJvZ3JhbUNvZGUsIEpTUGFyc2VGdW5jdGlvbkNvZGUgfTsKIAog
ZW51bSBQcm9maWxlck1vZGUgeyBQcm9maWxlck9mZiwgUHJvZmlsZXJPbiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXggODJhMjY2MzlhNzkyMjBh
MDg0NDU2YjQ4ZjMyODUyZDE0M2M3MzlkMC4uOGM4N2FkOWZhZGJkYzRhZjM5YWM5OWRiMmQ4NDQ1
ZTEzZmZmZDM1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXJUb2tlbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vu
cy5oCkBAIC0xNDksNiArMTQ5LDcgQEAgZW51bSBKU1Rva2VuVHlwZSB7CiAgICAgSU5WQUxJRF9O
VU1FUklDX0xJVEVSQUxfRVJST1JUT0sgPSA3IHwgRXJyb3JUb2tlbkZsYWcsCiAgICAgVU5URVJN
SU5BVEVEX1NUUklOR19MSVRFUkFMX0VSUk9SVE9LID0gOCB8IEVycm9yVG9rZW5GbGFnIHwgVW50
ZXJtaW5hdGVkRXJyb3JUb2tlbkZsYWcsCiAgICAgSU5WQUxJRF9TVFJJTkdfTElURVJBTF9FUlJP
UlRPSyA9IDkgfCBFcnJvclRva2VuRmxhZywKKyAgICBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJP
UlRPSyA9IDEwIHwgRXJyb3JUb2tlbkZsYWcKIH07CiAKIHN0cnVjdCBKU1RleHRQb3NpdGlvbiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvTGVnYWN5UHJvZmls
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0xlZ2FjeVByb2ZpbGVyLmNw
cAppbmRleCBkZDJhY2Q5ZjBlOGM3ZWUxNjg0MDYxZjUyYzc3ZTc4YjhmY2ZhOTVmLi4wMjYwNzBm
OTU5ODI0OTlkMjczYjhkZDRjY2U0YThmODYyZmI2NmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvTGVnYWN5UHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9MZWdhY3lQcm9maWxlci5jcHAKQEAgLTMzLDcgKzMzLDcgQEAK
ICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgog
I2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisj
aW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5o
IgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmNwcAppbmRleCBlMTMxMDRkZjU5MjJkMDc3NjI1
N2QwNWNiNWU4NzA1MzdkMjE0MjhhLi4yNGMwNmJiYjFjMmMzNGI5ZGE1ZWY4NGIyNTVjOTkwMGRh
Zjg1OTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmNwcApAQCAt
MjIsNyArMjIsNyBAQAogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKIAogI2luY2x1ZGUgIkhlYXBSb290
VmlzaXRvci5oIgotI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5o
IgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAppbmRleCA4
ZmQxOTVjYjliNWY3ZWY1YmYzZDJmZDkzMzQyYjAxMDI3MjVmYWYxLi40ZmJhYzY4ODYzNDg2MTcx
NjQ5YTMzNGQ2MWI1ZGNjMzgxNGRkNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FyZ3VtZW50cy5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJBcmd1bWVudHMu
aCIKIAogI2luY2x1ZGUgIkNhbGxGcmFtZUlubGluZXMuaCIKKyNpbmNsdWRlICJDb21tb25JZGVu
dGlmaWVycy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIkpTQXJndW1l
bnRzSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCmluZGV4IDE4ZjM4OTE3MTM4NTIzNjJjN2E3NWEzMDUz
YjQ2MzE0MTdiZWI4MWIuLmYxNmZkM2RlNDA1NTk3MGJhOWQ5YzZmMGFlNjMxOGYyMjA0YjY1NGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCkBAIC0yNSw2ICsy
NSw3IEBACiAjZGVmaW5lIEFyZ3VtZW50c19oCiAKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCisj
aW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIK
ICNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24u
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0
ZXJhdG9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJn
dW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYWZiNTk3OTBjYjAwOTk4OWJiN2I0
Mjg2M2U5MTgyMzM1NzZiOGFhYy4uOTFjYWNkZmE4NTdlYjY5Mzc2YTMwODFhOGM3MDJhYzljMjE3
Y2E3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRz
SXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNp
bmNsdWRlICJBcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmgiCiAKICNpbmNsdWRlICJBcmd1
bWVudHNJdGVyYXRvclByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgi
CiAjaW5jbHVkZSAiSlNBcmd1bWVudHNJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUu
Y3BwCmluZGV4IGRkMDg5NGYxNGEwMjFkNWYxMjY1OGFjYjAxZTcyMWZjZDZkMzQ4Y2MuLjViNGFl
ODcxNmIwNTUzYmU0NjIzOTU1ZTk5ZTFiNDNlYmYxOGZlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlw
ZS5jcHAKQEAgLTI2LDcgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJB
cmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5oIgogCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmll
cnMuaCIKICNpbmNsdWRlICJKU0FyZ3VtZW50c0l0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCAyN2FjNmQ0OGE3MWY3OTU1
MDJhMTBjZWE2NDc4NjU0MTM1YTQ2M2EwLi42ZGM3YmU1Njk2OWRlNjdmNjIxMDdiYjNhNTFhMzA4
ZmEzYmE3NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQ
cm90b3R5cGUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVk
ZSAiSlNBcnJheUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdCdWlsZGVyLmgiCisjaW5j
bHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdKb2luZXIuaCIKICNp
bmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKQEAgLTU2LDcg
KzU3LDYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1
bmNTbGljZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5UHJvdG9GdW5jU29ydChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU3BsaWNlKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNVblNoaWZ0KEV4ZWNTdGF0
ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNF
dmVyeShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFy
cmF5UHJvdG9GdW5jRm9yRWFjaChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU29tZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jSW5kZXhPZihFeGVjU3RhdGUq
KTsKQEAgLTk1NCw2OSArOTU0LDYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJh
eVByb3RvRnVuY01hcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHRBcnJheSk7CiB9CiAKLS8vIERvY3VtZW50YXRpb24gZm9yIHRoZXNlIHRocmVlIGlz
IGF2YWlsYWJsZSBhdDoKLS8vIGh0dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3ppbGxhLm9yZy9lbi9k
b2NzL0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6QXJyYXk6ZXZlcnkKLS8v
IGh0dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3ppbGxhLm9yZy9lbi9kb2NzL0NvcmVfSmF2YVNjcmlw
dF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6QXJyYXk6Zm9yRWFjaAotLy8gaHR0cDovL2RldmVsb3Bl
ci10ZXN0Lm1vemlsbGEub3JnL2VuL2RvY3MvQ29yZV9KYXZhU2NyaXB0XzEuNV9SZWZlcmVuY2U6
T2JqZWN0czpBcnJheTpzb21lCi0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQ
cm90b0Z1bmNFdmVyeShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNPYmplY3QqIHRoaXNPYmog
PSBleGVjLT5ob3N0VGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0
KGV4ZWMpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmotPmdldChleGVjLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkubGVuZ3RoKS50b1VJbnQzMihleGVjKTsKLSAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7Ci0KLSAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgQ2Fs
bERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5j
dGlvbiwgY2FsbERhdGEpOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwotCi0gICAgSlNWYWx1ZSBhcHBseVRo
aXMgPSBleGVjLT5hcmd1bWVudCgxKTsKLQotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFu
KHRydWUpOwotCi0gICAgdW5zaWduZWQgayA9IDA7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxU
eXBlSlMgJiYgaXNKU0FycmF5KHRoaXNPYmopKSB7Ci0gICAgICAgIEpTRnVuY3Rpb24qIGYgPSBq
c0Nhc3Q8SlNGdW5jdGlvbio+KGZ1bmN0aW9uKTsKLSAgICAgICAgSlNBcnJheSogYXJyYXkgPSBh
c0FycmF5KHRoaXNPYmopOwotICAgICAgICBDYWNoZWRDYWxsIGNhY2hlZENhbGwoZXhlYywgZiwg
Myk7Ci0gICAgICAgIGZvciAoOyBrIDwgbGVuZ3RoICYmICFleGVjLT5oYWRFeGNlcHRpb24oKTsg
KytrKSB7Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWFycmF5LT5jYW5HZXRJbmRleFF1aWNr
bHkoaykpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAgICAg
ICBjYWNoZWRDYWxsLnNldFRoaXMoYXBwbHlUaGlzKTsKLSAgICAgICAgICAgIGNhY2hlZENhbGwu
c2V0QXJndW1lbnQoMCwgYXJyYXktPmdldEluZGV4UXVpY2tseShrKSk7Ci0gICAgICAgICAgICBj
YWNoZWRDYWxsLnNldEFyZ3VtZW50KDEsIGpzTnVtYmVyKGspKTsKLSAgICAgICAgICAgIGNhY2hl
ZENhbGwuc2V0QXJndW1lbnQoMiwgdGhpc09iaik7Ci0gICAgICAgICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGNhY2hlZENhbGwuY2FsbCgpOwotICAgICAgICAgICAgaWYgKCFyZXN1bHQudG9Cb29sZWFu
KGV4ZWMpKQotICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KGZhbHNlKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZm9yICg7IGsgPCBsZW5ndGggJiYgIWV4
ZWMtPmhhZEV4Y2VwdGlvbigpOyArK2spIHsKLSAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhp
c09iaik7Ci0gICAgICAgIGlmICghdGhpc09iai0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGssIHNs
b3QpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgZWFjaEFyZ3VtZW50czsKLSAgICAgICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQoc2xvdC5nZXRW
YWx1ZShleGVjLCBrKSk7Ci0gICAgICAgIGVhY2hBcmd1bWVudHMuYXBwZW5kKGpzTnVtYmVyKGsp
KTsKLSAgICAgICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQodGhpc09iaik7Ci0KLSAgICAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKLQotICAgICAgICBib29sIHByZWRpY2F0ZVJlc3VsdCA9IGNhbGwo
ZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgYXBwbHlUaGlzLCBlYWNoQXJndW1l
bnRzKS50b0Jvb2xlYW4oZXhlYyk7Ci0gICAgICAgIGlmICghcHJlZGljYXRlUmVzdWx0KSB7Ci0g
ICAgICAgICAgICByZXN1bHQgPSBqc0Jvb2xlYW4oZmFsc2UpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
Ci19Ci0KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNGb3JFYWNo
KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU09iamVjdCogdGhpc09iaiA9IGV4ZWMtPmhvc3RU
aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCA1MTBlMzgzZmFl
NTc1YWFkYTgxNzZjMDQ0MWVlNzI1YjQzYTRjNzMyLi5kMzA0ODc3ZmU5Y2RlMWMwOTE5ZmQ0NTk1
ZjgxMWVjYWJjZTc3Mjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVD
YWNoZS5jcHAKQEAgLTE0NCwyNCArMTQ0LDI2IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBDb2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZNJiB2CiAg
ICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZTsKICAgICBSZWZQdHI8
UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oJnZtLCBzb3VyY2UsIDAs
IElkZW50aWZpZXIoKSwgSlNQYXJzZU5vcm1hbCwgSlNQYXJzZVByb2dyYW1Db2RlLCBlcnJvciwg
JnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwogICAgIGlmICghcHJvZ3JhbSkgewotICAgICAg
ICBBU1NFUlQoZXJyb3IubV90eXBlICE9IFBhcnNlckVycm9yOjpFcnJvck5vbmUpOworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChlcnJvci5tX3R5cGUgIT0gUGFyc2VyRXJyb3I6OkVycm9yTm9uZSk7
CiAgICAgICAgIG1fc291cmNlQ29kZS5yZW1vdmUoYWRkUmVzdWx0Lml0ZXJhdG9yKTsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBhc3N1bWVzIGFuIGlu
cHV0IHN0cmluZyB0aGF0IHdvdWxkIHJlc3VsdCBpbiBhIHNpbmdsZSBhbm9ueW1vdXMgZnVuY3Rp
b24gZXhwcmVzc2lvbi4KICAgICBTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVtZW50ID0gcHJvZ3Jh
bS0+c2luZ2xlU3RhdGVtZW50KCk7Ci0gICAgQVNTRVJUKGV4cHJTdGF0ZW1lbnQpOwotICAgIEFT
U0VSVChleHByU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CisgICAgUkVMRUFTRV9BU1NF
UlQoZXhwclN0YXRlbWVudCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudC0+aXNF
eHByU3RhdGVtZW50KCkpOwogICAgIEV4cHJlc3Npb25Ob2RlKiBmdW5jRXhwciA9IHN0YXRpY19j
YXN0PEV4cHJTdGF0ZW1lbnROb2RlKj4oZXhwclN0YXRlbWVudCktPmV4cHIoKTsKLSAgICBBU1NF
UlQoZnVuY0V4cHIpOworICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmNFeHByKTsKICAgICBSRUxFQVNF
X0FTU0VSVChmdW5jRXhwci0+aXNGdW5jRXhwck5vZGUoKSk7CiAgICAgRnVuY3Rpb25Cb2R5Tm9k
ZSogYm9keSA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGZ1bmNFeHByKS0+Ym9keSgpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKCFwcm9ncmFtLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKKyAg
ICAKICAgICBib2R5LT5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsK
LSAgICBBU1NFUlQoYm9keSk7Ci0gICAgQVNTRVJUKGJvZHktPmlkZW50KCkuaXNOdWxsKCkpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKGJvZHkpOworICAgIFJFTEVBU0VfQVNTRVJUKGJvZHktPmlkZW50
KCkuaXNOdWxsKCkpOwogCi0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9u
RXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3Vy
Y2UsIGJvZHksIHRydWUpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlv
bkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291
cmNlLCBib2R5LCB0cnVlLCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uKTsKICAgICBmdW5jdGlvbkV4
ZWN1dGFibGUtPm1fbmFtZVZhbHVlLnNldCh2bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBqc1N0cmlu
Zygmdm0sIG5hbWUuc3RyaW5nKCkpKTsKIAogICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBTb3VyY2VDb2RlVmFsdWUodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwgbV9zb3VyY2VDb2RlLmFn
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmNwcAppbmRleCAzZjVjNjQ1YzA5OGQ1MjdmYzBjNzI1OWU5NDQ3ZWZiZTg4NjhhMjlj
Li4yZmMyYjcyN2FmY2VlZTFlYzJjNjI1ZGU1Njc1YjNiZTFjZjYwZDc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCkBAIC0y
Nyw3ICsyNywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2RlZmluZSBJTklUSUFMSVpFX1BST1BF
UlRZX05BTUUobmFtZSkgLCBuYW1lKHZtLCAjbmFtZSkKICNkZWZpbmUgSU5JVElBTElaRV9LRVlX
T1JEKG5hbWUpICwgbmFtZSMjS2V5d29yZCh2bSwgI25hbWUpCi0jZGVmaW5lIElOSVRJQUxJWkVf
UFJJVkFURV9OQU1FKG5hbWUpICwgbmFtZSMjUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbShQ
cml2YXRlTmFtZSgpKSkKKyNkZWZpbmUgSU5JVElBTElaRV9QUklWQVRFX05BTUUobmFtZSkgXAor
ICAgICwgbmFtZSMjUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbShQcml2YXRlTmFtZSgpKSkg
XAorICAgICwgbV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIobmFtZSwgbmFtZSMjUHJpdmF0ZU5h
bWUpIFwKKwogCiBDb21tb25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMoVk0qIHZtKQog
ICAgIDogbnVsbElkZW50aWZpZXIoKQpAQCAtMzgsOCArNDEsMjYgQEAgQ29tbW9uSWRlbnRpZmll
cnM6OkNvbW1vbklkZW50aWZpZXJzKFZNKiB2bSkKICAgICAsIGhhc05leHRJZGVudGlmaWVyKHZt
LCAiaGFzTmV4dCIpCiAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQoSU5J
VElBTElaRV9LRVlXT1JEKQogICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUk9QRVJU
WV9OQU1FKElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRSkKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElO
X0ZVTkNUSU9OX05BTUUoSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKQogICAgIEpTQ19DT01NT05f
UFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElaRV9QUklWQVRF
X05BTUUpCiB7CiB9CiAKK2NvbnN0IElkZW50aWZpZXIqIENvbW1vbklkZW50aWZpZXJzOjpnZXRQ
cml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK3sKKyNkZWZpbmUgUkVU
VVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKG5hbWUpIGlmIChtXyMjbmFtZSMjUHVibGljU3Ry
aW5nUGFpci5maXJzdCA9PSBpZGVudCkgcmV0dXJuICZtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFp
ci5zZWNvbmQ7CisgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVS
VFlfTkFNRShSRVRVUk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMpCisjdW5kZWYgUkVUVVJOX0lG
X1BSSVZBVEVfTkFNRV9NQVRDSEVTCisgICAgcmV0dXJuIDA7Cit9CisKK0lkZW50aWZpZXIgQ29t
bW9uSWRlbnRpZmllcnM6OmdldFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNv
bnN0Cit7CisjZGVmaW5lIFJFVFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hFUyhuYW1lKSBpZiAo
bV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuc2Vjb25kID09IGlkZW50KSByZXR1cm4gbV8jI25h
bWUjI1B1YmxpY1N0cmluZ1BhaXIuZmlyc3Q7CisgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5U
SUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShSRVRVUk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMp
CisjdW5kZWYgUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTCisgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZW1wdHlJZGVudGlmaWVyOworfQorCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5oCmluZGV4IGU4ZjllZDgyYmM3OTQ2MjAzODI2NmIzMDIwNzgyMjQ3YjFm
YTI3YTMuLjkyNGQzNmFjNjkxMzUwMzU3Y2IzODJiMWVmM2I0MGEwYTA4YzBhYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAt
MjIsNiArMjIsNyBAQAogI2RlZmluZSBDb21tb25JZGVudGlmaWVyc19oCiAKICNpbmNsdWRlICJJ
ZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KIAogLy8gTWFya2VkQXJndW1lbnRCdWZmZXIgb2YgcHJvcGVydHkgbmFtZXMs
IHBhc3NlZCB0byBhIG1hY3JvIHNvIHdlIGNhbiBkbyBzZXQgdGhlbSB1cCB2YXJpb3VzCkBAIC0x
MzMsOCArMTM0LDEwIEBACiAgICAgbWFjcm8ob3NyRXhpdHMpIFwKICAgICBtYWNybyhwYXJzZSkg
XAogICAgIG1hY3JvKHByb2ZpbGVkQnl0ZWNvZGVzKSBcCisgICAgbWFjcm8ocHJvbWlzZSkgXAog
ICAgIG1hY3JvKHByb3BlcnR5SXNFbnVtZXJhYmxlKSBcCiAgICAgbWFjcm8ocHJvdG90eXBlKSBc
CisgICAgbWFjcm8ocmVzb2x2ZSkgXAogICAgIG1hY3JvKHNldCkgXAogICAgIG1hY3JvKHNpemUp
IFwKICAgICBtYWNybyhzbGljZSkgXApAQCAtMTU1LDcgKzE1OCwxNCBAQAogICAgIG1hY3JvKHZh
bHVlcykgXAogICAgIG1hY3JvKHZhbHVlT2YpIFwKICAgICBtYWNybyh3aW5kb3cpIFwKLSAgICBt
YWNybyh3cml0YWJsZSkKKyAgICBtYWNybyh3cml0YWJsZSkgXAorICAgIG1hY3JvKGl0ZXJhdG9y
KSBcCisgICAgbWFjcm8oaXRlcmF0b3JOZXh0KSBcCisgICAgbWFjcm8ocmVqZWN0KSBcCisgICAg
bWFjcm8oZnVsZmlsbG1lbnRIYW5kbGVyKSBcCisgICAgbWFjcm8ocmVqZWN0aW9uSGFuZGxlcikg
XAorICAgIG1hY3JvKGRlZmVycmVkKSBcCisgICAgbWFjcm8oY291bnRkb3duSG9sZGVyKSBcCiAK
ICNkZWZpbmUgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQobWFjcm8pIFwKICAg
ICBtYWNybyhicmVhaykgXApAQCAtMjAzLDcgKzIxMyw3IEBACiAgICAgbWFjcm8odm9pZCkgXAog
ICAgIG1hY3JvKHdoaWxlKSBcCiAgICAgbWFjcm8od2l0aCkgXAotICAgIG1hY3JvKHlpZWxkKQor
ICAgIG1hY3JvKHlpZWxkKSBcCiAKICNkZWZpbmUgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJ
RVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShtYWNybykgXAogICAgIG1hY3JvKGl0ZXJhdG9yKSBcCkBA
IC0yMTYsNyArMjI2LDEyIEBACiAgICAgbWFjcm8oaW5kZXgpIFwKICAgICBtYWNybyh2YWx1ZXMp
IFwKICAgICBtYWNybyhkZWZlcnJlZCkgXAotICAgIG1hY3JvKGNvdW50ZG93bkhvbGRlcikKKyAg
ICBtYWNybyhjb3VudGRvd25Ib2xkZXIpIFwKKyAgICBtYWNybyhPYmplY3QpIFwKKyAgICBtYWNy
byhUeXBlRXJyb3IpIFwKKyAgICBtYWNybyh1bmRlZmluZWRLZXl3b3JkKSBcCisgICAgbWFjcm8o
Y2FsbCkgXAorICAgIG1hY3JvKGFwcGx5KQogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMjQwLDEx
ICsyNTUsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2RlZmluZSBKU0NfSURFTlRJ
RklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIg
bmFtZTsKICAgICAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUo
SlNDX0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJUWV9OQU1FX0dMT0JBTCkKKyAgICAgICAgSlND
X0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJP
UEVSVFlfTkFNRV9HTE9CQUwpCiAjdW5kZWYgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJU
WV9OQU1FX0dMT0JBTAogCi0jZGVmaW5lIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9Q
Uk9QRVJUWV9OQU1FX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWUjI1ByaXZhdGVO
YW1lOworI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFN
RV9HTE9CQUwobmFtZSkgY29uc3QgSWRlbnRpZmllciBuYW1lIyNQcml2YXRlTmFtZTsgY29uc3Qg
c3RkOjpwYWlyPElkZW50aWZpZXIsIElkZW50aWZpZXI+IG1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQ
YWlyOwogICAgICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJU
WV9OQU1FKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JB
TCkKICN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9H
TE9CQUwKKyAgICAgICAgCisgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGdldFByaXZhdGVOYW1l
KGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKKyAgICAgICAgSWRlbnRpZmllciBnZXRQdWJsaWNO
YW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwCmluZGV4IDA3NTg3NWZiMjMxNmE1NTU3MDUwYTY2OTBjZDBmOTg4MjQ4NGY1ZjMuLjVhZjkw
ODc1NGU3NDdmOGNhZTBjZDA0YWY4ZDQ5MTUwMDQ2OGMyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtNDEsNyArNDEsNyBA
QAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNB
Y3RpdmF0aW9uLmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFs
dWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNs
dWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
c0V4Y2VwdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzRXhjZXB0aW9ucy5jcHAKaW5kZXggNTUzMzRiZTJmOTgwYTk4ZjdmZWE0MmEwNWJlMGYy
MGMwMTlmZjBkZC4uMTZlYmFkMTBlNGU0MmI2Yjc4NWU5NzhkMzhlODcwZTNiNWE2YzQ5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhj
ZXB0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzRXhjZXB0aW9ucy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDYWxsRnJh
bWUuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgi
CisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJMTEludENvbW1vbi5o
IgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIENvbW1vblNsb3dQYXRocyB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4
IDA1ZTExZTBiODBhMzQzMGFlYWIyMmIwMjIyYTIxMmY0YThlMmM0OWIuLjM2NGNjNzE2NjYwOGI1
MDA3ZDQ3N2Q4NzM5MThhNWQ2NGIxNjg2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC04MSw2ICs4MSwxMSBAQCBKU09i
amVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiAKIEpTT2JqZWN0KiBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7CisgICAgCisgICAgaWYgKGlkZW50Lmlt
cGwoKS0+aXNFbXB0eVVuaXF1ZSgpKSB7CisgICAgICAgIFN0cmluZyBtZXNzYWdlKG1ha2VTdHJp
bmcoIkNhbid0IGZpbmQgcHJpdmF0ZSB2YXJpYWJsZTogQCIsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5nZXRQdWJsaWNOYW1lKGlkZW50KS5zdHJpbmcoKSkpOworICAgICAgICByZXR1cm4gY3JlYXRl
UmVmZXJlbmNlRXJyb3IoZXhlYywgbWVzc2FnZSk7CisgICAgfQogICAgIFN0cmluZyBtZXNzYWdl
KG1ha2VTdHJpbmcoIkNhbid0IGZpbmQgdmFyaWFibGU6ICIsIGlkZW50LnN0cmluZygpKSk7CiAg
ICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIG1lc3NhZ2UpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IDE5ODk3NmJiM2ZlNmU2
ZTkxMTc5ODEyZDFjYWY5YjhiZjliZmQwYmIuLmNmMGU3NTNhN2M1ZjU0NDY3YjY0ZDhlMmE5YjNm
YmEyNzE1MDAwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmgKQEAgLTQ4NCw3ICs0ODQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyQ29kZSgpOwog
Ci0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVj
dXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCks
IGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyBy
ZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3Ry
aWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UpOyB9CiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMo
KSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7IH0KICAg
ICB1bnNpZ25lZCBudW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3VubGlua2VkRXZh
bENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KQEAgLTU0MCw3ICs1NDAsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyQ29kZSgpOwogCi0gICAgRXhlY3V0YWJsZUluZm8g
ZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2
YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlKTsgfQorICAgIEV4ZWN1
dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8o
bmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFs
c2UpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CkBA
IC02MjgsNyArNjI4LDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGJhc2VsaW5l
Q29kZUJsb2NrRm9yKGtpbmQpOwogICAgIH0KLSAgICAgICAgCisKKyAgICBib29sIGlzQnVpbHRp
bkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQnVpbHRp
bkZ1bmN0aW9uKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lKCkgeyByZXR1cm4gbV91
bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWUoKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIGluZmVy
cmVkTmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pbmZlcnJlZE5hbWUoKTsg
fQogICAgIEpTU3RyaW5nKiBuYW1lVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhl
Y3V0YWJsZS0+bmFtZVZhbHVlKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAppbmRleCBjMWIwOGFmMmQ4MThkYWU1N2UxYjAw
ZmRhMTczYTgxNjEzNzUyOWI1Li4xMjQ5MGM0MGYzMzQxN2VjYTkyMzg1MGEwZGM2NjJkYmJjZDQw
ZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblBy
b3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Q
cm90b3R5cGUuY3BwCkBAIC0yMiwxMiArMjIsMTMgQEAKICNpbmNsdWRlICJGdW5jdGlvblByb3Rv
dHlwZS5oIgogCiAjaW5jbHVkZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIu
aCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAi
SlNTdHJpbmdCdWlsZGVyLmgiCi0jaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJK
U1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJMZXhlci5oIgogI2luY2x1ZGUgIk9wZXJhdGlv
bnMuaCIKIApAQCAtMTA4LDcgKzEwOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pbmhl
cml0cyhKU0Z1bmN0aW9uOjppbmZvKCkpKSB7CiAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9u
ID0ganNDYXN0PEpTRnVuY3Rpb24qPih0aGlzVmFsdWUpOwotICAgICAgICBpZiAoZnVuY3Rpb24t
PmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0T3JCdWlsdGlu
RnVuY3Rpb24oKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9u
dHJpdmlhbFN0cmluZyhleGVjLCAiZnVuY3Rpb24gIiwgZnVuY3Rpb24tPm5hbWUoZXhlYyksICIo
KSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKTsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxl
KiBleGVjdXRhYmxlID0gZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpOwogICAgICAgICBTdHJpbmcg
c291cmNlU3RyaW5nID0gZXhlY3V0YWJsZS0+c291cmNlKCkudG9TdHJpbmcoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCmluZGV4IDcyZWQxYzcx
MjQwNjExNjhiMGFkZGQzMTE2Zjc1NWExMTdiOGZiOTAuLmIzNzQ5NDMwOTllMjE1NWEzOTc3MTMz
MTM0NzAyYzJhMjRhY2M4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQWN0aXZhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBY3RpdmF0aW9uLmNwcApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIEpTQWN0aXZhdGlvbjo6dmlz
aXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogCiBpbmxpbmUg
Ym9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0g
c3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAg
IFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVy
dHlOYW1lLnVpZCgpKTsKICAgICBpZiAoZW50cnkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApAQCAtNzIsNyArNzIsNyBAQCBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJv
bFRhYmxlR2V0KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdAogCiBpbmxp
bmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKLSAgICBTeW1ib2xUYWJs
ZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJs
aWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5p
bmxpbmVHZXQocHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoZW50cnkuaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtODksNyArODksNyBAQCBpbmxpbmUgYm9vbCBKU0Fj
dGl2YXRpb246OnN5bWJvbFRhYmxlUHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TgogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFw
KHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMpKTsKICAgICAK
LSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHBy
b3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBz
eW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoZW50
cnkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoZW50cnkuaXNSZWFk
T25seSgpKSB7CkBAIC0xMzYsNyArMTM2LDcgQEAgaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpz
eW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3AKICAg
ICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiByZWc7CiAgICAgewogICAgICAgICBDb25jdXJy
ZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZSgpLT5tX2xvY2spOwotICAgICAgICBTeW1i
b2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUoKS0+ZmluZChsb2NrZXIs
IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjpp
dGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUoKS0+ZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51
aWQoKSk7CiAgICAgICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlKCktPmVuZChsb2NrZXIpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5JiBlbnRy
eSA9IGl0ZXItPnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcmd1bWVudHNJdGVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcAppbmRleCAyZmNmODgxNWMwNTY4MDU4MTJhNzk5MWE1
ZmYwNjNkNjg3Mzk3MTY0Li45YTkyNTgzYWEwZWM5MGRiYjMyOGVjZDUwZGMzMTM5YWVmMDI3M2I1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50
c0l0ZXJhdG9yLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkpTQXJndW1lbnRzSXRl
cmF0b3IuaCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuY3BwCmluZGV4IDkwMDdiNWY3ZDNmMTAzYjFkMjFiMWEzNjVhMjZjMjE1YzMy
YjRkMjguLmJhMGEyZDM4ZTljNTNlMTU5MzdkNDZhODk1MWE4YzhjNDUwNzkyNjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1
ZGUgIkluZGV4aW5nSGVhZGVySW5saW5lcy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5o
IgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSAiUmVqZWN0LmgiCiAj
aW5jbHVkZSA8d3RmL0FWTFRyZWUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5SXRlcmF0b3IuY3BwCmluZGV4IGQ1MDZjNGViZDI2MjBlZmQ3MDc5M2E4NzNk
MDg1MmZiZDk3ODI4NTkuLmNmMzcwOTdlYzBjNjkyNWE4NjdiOGMwMTBjMGVmYzQwNzQ0ODVmMWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9y
LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
ICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAppbmRleCBjY2E2ODg4
YmY5OGEwMjg2NDZjYTNkZGRmMzc2MjdjZTBlN2Q5MzAyLi4zMzlhN2FiN2Y1OTUxNWU5NmFmYjdl
YzRiODc0MWU3YWE4ZTE2NmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlLmNwcApAQCAtMzIsNyArMzIsOSBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTm90QW5PYmplY3QuaCIK
KyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJOdW1iZXJPYmplY3QuaCIK
KyNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbElubGluZXMuaAppbmRleCBmN2M4NDQ2NDUwOTJiMjUwODA1ZTZlOGQ0ODMy
Yzk5OGJkYjg5YjU0Li5kNzk1ZGQ1NmE5N2RkYjU5N2MwOTBmYzJlMGI3ZjMwOGUzM2ViY2E1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCkBAIC0y
Nyw4ICsyNywxMCBAQAogI2RlZmluZSBKU0NlbGxJbmxpbmVzX2gKIAogI2luY2x1ZGUgIkNhbGxG
cmFtZS5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRGVmZXJH
Qy5oIgogI2luY2x1ZGUgIkhhbmRsZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJK
U1N0cmluZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNw
cAppbmRleCAyNDE5NjQ2MTBiYjQ0MjdiMTg2MzczMzQ2ZTI0ZjVhODJkMGNkY2M0Li5hY2U2YzE0
N2U0OTdmZWUyMDI5MmZiNTUzOTc2MGQ1ZDY5ODI5Y2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtMzQsNyArMzQsOCBAQAogI2luY2x1ZGUg
IkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVk
ZSAiSlNBcnJheS5oIgotI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIiAKKyNpbmNsdWRlICJK
U0JvdW5kRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNOb3RBbk9iamVjdC5oIgogI2luY2x1
ZGUgIkludGVycHJldGVyLmgiCkBAIC0xMDksNiArMTEwLDE0IEBAIHZvaWQgSlNGdW5jdGlvbjo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBpbnQg
bGVuZ3RoCiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVt
YmVyKGxlbmd0aCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KIAorSlNG
dW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKFZNJiB2bSwgRnVuY3Rp
b25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
eworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY3JlYXRlKHZtLCBleGVjdXRhYmxlLCBnbG9i
YWxPYmplY3QpOworICAgIGZ1bmN0aW9uLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pm5hbWUsIGpzU3RyaW5nKCZ2bSwgZXhlY3V0YWJsZS0+bmFtZSgpLnN0cmluZygpKSwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIGZ1bmN0aW9uLT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoZXhlY3V0YWJsZS0+cGFyYW1ldGVy
Q291bnQoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICByZXR1cm4g
ZnVuY3Rpb247Cit9CisKIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKiBKU0Z1bmN0aW9uOjpjcmVh
dGVBbGxvY2F0aW9uUHJvZmlsZShFeGVjU3RhdGUqIGV4ZWMsIHNpemVfdCBpbmxpbmVDYXBhY2l0
eSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpAQCAtMTQyLDcgKzE1MSw3IEBAIGNvbnN0
IFN0cmluZyBKU0Z1bmN0aW9uOjpjYWxjdWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVj
KQogICAgICAgICByZXR1cm4gZXhwbGljaXROYW1lOwogICAgIAogICAgIGNvbnN0IFN0cmluZyBh
Y3R1YWxOYW1lID0gbmFtZShleGVjKTsKLSAgICBpZiAoIWFjdHVhbE5hbWUuaXNFbXB0eSgpIHx8
IGlzSG9zdEZ1bmN0aW9uKCkpCisgICAgaWYgKCFhY3R1YWxOYW1lLmlzRW1wdHkoKSB8fCBpc0hv
c3RPckJ1aWx0aW5GdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gYWN0dWFsTmFtZTsKICAgICAK
ICAgICByZXR1cm4ganNFeGVjdXRhYmxlKCktPmluZmVycmVkTmFtZSgpLnN0cmluZygpOwpAQCAt
MTUwLDEwICsxNTksMjAgQEAgY29uc3QgU3RyaW5nIEpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNw
bGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMpCiAKIGNvbnN0IFNvdXJjZUNvZGUqIEpTRnVuY3Rpb246
OnNvdXJjZUNvZGUoKSBjb25zdAogewotICAgIGlmIChpc0hvc3RGdW5jdGlvbigpKQorICAgIGlm
IChpc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1
cm4gJmpzRXhlY3V0YWJsZSgpLT5zb3VyY2UoKTsKIH0KKyAgICAKK2Jvb2wgSlNGdW5jdGlvbjo6
aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBpc0hvc3RGdW5j
dGlvbigpIHx8IGlzQnVpbHRpbkZ1bmN0aW9uKCk7Cit9CisKK2Jvb2wgSlNGdW5jdGlvbjo6aXNC
dWlsdGluRnVuY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiAhaXNIb3N0RnVuY3Rpb24oKSAm
JiBqc0V4ZWN1dGFibGUoKS0+aXNCdWlsdGluRnVuY3Rpb24oKTsKK30KIAogdm9pZCBKU0Z1bmN0
aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7
CkBAIC0yNzcsNyArMjk2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNGdW5jdGlvbjo6Y2FsbGVyR2V0
dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgc2xvdEJhc2UKICAgICBpZiAoIWNh
bGxlci5pc09iamVjdCgpIHx8ICFhc09iamVjdChjYWxsZXIpLT5pbmhlcml0cyhKU0Z1bmN0aW9u
OjppbmZvKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxlcik7CiAgICAg
SlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxlcik7Ci0gICAg
aWYgKGZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpIHx8ICFmdW5jdGlvbi0+anNFeGVjdXRhYmxl
KCktPmlzU3RyaWN0TW9kZSgpKQorICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0T3JCdWlsdGluRnVu
Y3Rpb24oKSB8fCAhZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsZXIpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJGdW5jdGlvbi5jYWxs
ZXIgdXNlZCB0byByZXRyaWV2ZSBzdHJpY3QgY2FsbGVyIikpKTsKIH0KQEAgLTI5OSw3ICszMTgs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Z1bmN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSosIEVu
Y29kZWRKU1ZhbHVlIHNsb3RCYXNlLCBFbmNvZAogYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsKLSAgICBpZiAodGhpc09iamVj
dC0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGlu
RnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCiAgICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlKSB7CkBAIC0zNjEsNyArMzgwLDcg
QEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KIHZvaWQgSlNGdW5jdGlvbjo6Z2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewogICAg
IEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdCk7Ci0g
ICAgaWYgKCF0aGlzT2JqZWN0LT5pc0hvc3RGdW5jdGlvbigpICYmIChtb2RlID09IEluY2x1ZGVE
b250RW51bVByb3BlcnRpZXMpKSB7CisgICAgaWYgKCF0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0
aW5GdW5jdGlvbigpICYmIChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKSB7CiAg
ICAgICAgIC8vIE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFzIGJlZW4gcmVpZmllZC4KICAgICAgICAg
UHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCk7CiAgICAgICAgIHRoaXNPYmplY3QtPm1ldGhv
ZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBzbG90KTsKQEAgLTM3Nyw3ICszOTYsNyBAQCB2b2lkIEpT
RnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsCiB2b2lkIEpTRnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNGdW5jdGlvbio+KGNlbGwpOwotICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RGdW5jdGlv
bigpKSB7CisgICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpIHsK
ICAgICAgICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDI1LDcgKzQ0NCw3IEBAIGJvb2wg
SlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wCiBib29sIEpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0
aW9uKQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+
KG9iamVjdCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgaWYg
KHRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBC
YXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3Jp
cHRvciwgdGhyb3dFeGNlcHRpb24pOwogCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmgKaW5kZXggN2NkMTRiOGMyZDgwMGY2MWJkYzEyZWRkMmRmMDRkMzVmYTA2
MTliNi4uOTk1YzlkMTFiZDg5ODM4NmY3YTIwYzQxNjM0ZmE3Y2M5Yjc2OThlNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtNjgsNiArNjgsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbjsKICAgICAgICAgfQog
ICAgICAgICAKKyAgICAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZUJ1aWx0aW5GdW5jdGlv
bihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTR2xvYmFsT2JqZWN0Kik7CisgICAgICAgIAog
ICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgICAgICAKICAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG5hbWUoRXhlY1N0YXRlKik7CkBAIC0xNDUsNiArMTQ3
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbV9hbGxvY2F0aW9uUHJv
ZmlsZVdhdGNocG9pbnQ7CiAgICAgICAgIH0KIAorICAgICAgICBib29sIGlzSG9zdE9yQnVpbHRp
bkZ1bmN0aW9uKCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25z
dDsKKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW1wbGVtZW50c0hhc0lu
c3RhbmNlIHwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFt
ZXMgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCmluZGV4IDJkZGMyOWY3MTg5N2JiNTFkMzkwYjA2YjI1
YTczODMzODc0YmEwYzEuLmVkZDM0NDljZTQ3YjE3MzVlOGU1ZGJiMDVmMzE4ZTNkNTVmM2JlNjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaApAQCAt
MjYsNiArMjYsNyBAQAogI2lmbmRlZiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9y
SW5saW5lc19oCiAjZGVmaW5lIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxp
bmVzX2gKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRXJyb3Iu
aCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdDb25zdHJ1Y3Rvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCA2
ZGI4NjI3NGMzYjg3NGFhYWRlNTE1MTg5ODI2NzI2ZmIxMzZjMTczLi5mMjRlYTczMDNkZjk2OWRi
ZDJkY2E1MmM4NmQxMWM3OGMwMGRiOWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApA
QCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXNf
aAogCiAjaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRp
ZmllcnMuaCIKICNpbmNsdWRlICJEZWZlckdDLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNs
dWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90
eXBlSW5saW5lcy5oCmluZGV4IDQ1OTk5N2E0NjRiOTExOTQ3N2IxYmU4NGUzNmM0ZTI5NjZhY2Vm
ODUuLjhlNWZmODI3OTFlNmZmOGQ0ZWI5YzM3MzY5MWU0MzNlYjdkMTZhZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJv
dG90eXBlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oCkBAIC0yNiw2ICsyNiw3IEBACiAj
aWZuZGVmIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lc19oCiAjZGVmaW5l
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lc19oCiAKKyNpbmNsdWRlICJD
b21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0
aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAyYzI3NGMxYTdkNDgx
YzA3ZGYwZDJiZWIzYjI5MzFhMzkwN2E1ZTY2Li4wNmU1NGM4NGU3N2I5MDMyYmFhMWQyZGY0N2Ex
YzcyZTgwYjdkZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCkBAIC0zNDYsNyArMzQ2LDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6
cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAKICAgICAvLyBDb25zdHJ1Y3RvcnMKIAotICAgIEpT
Q2VsbCogb2JqZWN0Q29uc3RydWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBP
YmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJv
dG90eXBlLmdldCgpKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOworICAgIE9iamVjdENvbnN0
cnVjdG9yKiBvYmplY3RDb25zdHJ1Y3RvciA9IE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUodm0s
IE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Q
cm90b3R5cGUuZ2V0KCkpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9vYmplY3RD
b25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIG9iamVjdENvbnN0cnVjdG9yKTsKICAgICBKU0NlbGwq
IGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEZ1
bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblBy
b3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwogICAgIEpTQ2VsbCog
YXJyYXlDb25zdHJ1Y3RvciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgQXJyYXlDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdl
dCgpKSwgbV9hcnJheVByb3RvdHlwZS5nZXQoKSk7CiAKQEAgLTQzMiw3ICs0MzMsMTAgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgR2xvYmFsUHJv
cGVydHlJbmZvIHN0YXRpY0dsb2JhbHNbXSA9IHsKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPk5hTiwganNOYU4oKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwg
UmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+
SW5maW5pdHksIGpzTnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHko
KSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJv
cGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQsIGpzVW5kZWZpbmVk
KCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KQorICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCwganNVbmRlZmluZWQo
KSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZFByaXZhdGVOYW1lLCBq
c1VuZGVmaW5lZCgpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5PYmplY3RQcml2YXRlTmFtZSwg
b2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPlR5cGVFcnJvclByaXZh
dGVOYW1lLCBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSB8IERvbnREZWxl
dGUgfCBSZWFkT25seSkKICAgICB9OwogICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFs
cywgV1RGX0FSUkFZX0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CiAgICAgCkBAIC02MDgsNiArNjEy
LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5
bnRheEVycm9yQ29uc3RydWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X3R5cGVFcnJvckNvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9VUklFcnJvckNvbnN0cnVjdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9vYmplY3RDb25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
cHJvbWlzZUNvbnN0cnVjdG9yKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X2V2YWxGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAppbmRleCBiMGNhZDNkYzU0NzBmN2M3YTBlNTcwYmRjZDJkZmZhODk1ZTJhYTBj
Li4zYTYxNmM2ZjA1ZWRmMWQyOTVhZjg0NDFhYTY2NTAwZmI5MmE0YTQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTY3LDYgKzY3LDcg
QEAgY2xhc3MgSlNTdGFjazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIE1p
Y3JvdGFzazsKIGNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I7CitjbGFzcyBPYmplY3RDb25z
dHJ1Y3RvcjsKIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBQcm9ncmFtRXhlY3V0YWJs
ZTsKIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yOwpAQCAtMTU4LDYgKzE1OSw3IEBAIHByb3RlY3Rl
ZDoKICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV90eXBlRXJyb3JD
b25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV9V
UklFcnJvckNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VDb25zdHJ1Y3Rv
cj4gbV9wcm9taXNlQ29uc3RydWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPE9iamVjdENvbnN0cnVj
dG9yPiBtX29iamVjdENvbnN0cnVjdG9yOwogCiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+
IG1fZXZhbEZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2NhbGxGdW5j
dGlvbjsKQEAgLTMzMCw2ICszMzIsNyBAQCBwdWJsaWM6CiAgICAgUmVnRXhwQ29uc3RydWN0b3Iq
IHJlZ0V4cENvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBDb25zdHJ1Y3Rvci5n
ZXQoKTsgfQogCiAgICAgRXJyb3JDb25zdHJ1Y3RvciogZXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1fZXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQorICAgIE9iamVjdENvbnN0cnVj
dG9yKiBvYmplY3RDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0Q29uc3RydWN0
b3IuZ2V0KCk7IH0KICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBldmFsRXJyb3JDb25zdHJ1
Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXZhbEVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KICAg
ICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiByYW5nZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7
IHJldHVybiBtX3JhbmdlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgIE5hdGl2ZUVycm9y
Q29uc3RydWN0b3IqIHJlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBt
X3JlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KQEAgLTU4MSw3ICs1ODQsNyBAQCBp
bmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6aGFzT3duUHJvcGVydHlGb3JXcml0ZShFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZQogCiBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6c3lt
Ym9sVGFibGVIYXNQcm9wZXJ0eShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIFN5
bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlO
YW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRh
YmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIHJldHVybiAhZW50cnku
aXNOdWxsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNw
cAppbmRleCAyYjY3YTFkOWVlZDg0ZTk5NTZmOGJiOTY4Mzg0Yzg0Y2FlYTUzY2ZmLi4yZWEyYzI0
ZTZlYWI0Y2QwZDdmZmVkNjY1ZWY0YWU0MWFmMDc1MGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCBnZXRDbGFzc1Byb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDbGFzc0lu
Zm8qIGNsYXNzCiAgICAgICAgIGludCBoYXNoU2l6ZU1hc2sgPSB0YWJsZS0+Y29tcGFjdFNpemUg
LSAxOwogICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gdGFibGUtPnRhYmxlOwogICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8PSBoYXNoU2l6ZU1hc2s7ICsraSwgKytlbnRyeSkgewot
ICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkoKSAmJiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYg
RG9udEVudW0pIHx8IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKSAmJiAhKChl
bnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pICYmIGRpZFJlaWZ5KSkKKyAgICAgICAgICAg
IGlmIChlbnRyeS0+a2V5KCkgJiYgKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8
fCAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgJiYgISgoZW50cnktPmF0dHJp
YnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSAmJiBkaWRSZWlmeSkpCiAgICAgICAgICAgICAg
ICAgcHJvcGVydHlOYW1lcy5hZGQoZW50cnktPmtleSgpKTsKICAgICAgICAgfQogICAgIH0KQEAg
LTE2MTgsNyArMTYxOCw3IEBAIHZvaWQgSlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9y
RGVsZXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdCh0aGlzKTsKICAgICAgICAgZm9yIChIYXNoVGFibGU6OkNvbnN0SXRl
cmF0b3IgaXRlciA9IGhhc2hUYWJsZS0+YmVnaW4odm0pOyBpdGVyICE9IGhhc2hUYWJsZS0+ZW5k
KHZtKTsgKytpdGVyKSB7Ci0gICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygpICYgRnVu
Y3Rpb24pCisgICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVu
Y3Rpb24pCiAgICAgICAgICAgICAgICAgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoZ2xvYmFsT2Jq
ZWN0KCktPmdsb2JhbEV4ZWMoKSwgKml0ZXIsIHRoaXMsIElkZW50aWZpZXIoJnZtLCBpdGVyLT5r
ZXkoKSksIHNsb3QpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjIzNiw2ICsyMjM2LDE2IEBAIHZv
aWQgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uCiAgICAgcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1
bmN0aW9uLCBhdHRyaWJ1dGVzKTsKIH0KIAordm9pZCBKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRp
bkZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJv
cGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVj
dXRhYmxlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQoreworICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBw
cm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOworICAgIGlmICghbmFtZSkKKyAgICAgICAgbmFtZSA9
IHZtLnByb3BlcnR5TmFtZXMtPmFub255bW91cy5pbXBsKCk7CisgICAgQVNTRVJUKG5hbWUpOwor
ICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0
aW9uKHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFi
bGUpLCBnbG9iYWxPYmplY3QpOworICAgIHB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCBmdW5j
dGlvbiwgYXR0cmlidXRlcyk7Cit9CisKIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgZnVuY3Rpb25M
ZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2lj
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUucHVibGljTmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmgKaW5kZXggMDJiMTM3YjM1MGMyZmE4MzI1YmQzYjk2NDcxMTJhYmU4NzZmMzgzZi4uZGRlNTk3
ZWZmYWVjMGYxYjhkNDRjMjkxMTk1MDMwMWYwNjAwN2U5OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQnV0dGVy
Zmx5LmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ2xhc3NJbmZvLmgiCi0j
aW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJDb3B5V3JpdGVCYXJyaWVy
LmgiCiAjaW5jbHVkZSAiRGVmZXJHQy5oIgogI2luY2x1ZGUgIkhlYXAuaCIKQEAgLTU4MSw2ICs1
ODAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXREaXJlY3RVbmRlZmluZWQoUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0KSB7IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNldFVuZGVmaW5lZCgpOyB9
CiAKICAgICB2b2lkIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBjb25zdCBQcm9wZXJ0eU5hbWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVu
Y3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgdm9pZCBwdXREaXJl
Y3RCdWlsdGluRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFt
ZSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIHZvaWQg
cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2
ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hv
dWxkVGhyb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9taXNlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9taXNlQ29uc3RydWN0b3IuY3BwCmluZGV4IDQwMjYxOTYzM2ZhMDZmZDI1NGIzZjJhN2E4Y2M3
MWU4MDdhYWY5MTEuLjE3ZDJhYjY1YTg4ZmZiMTNmYTlhNmM4ZjU4M2NhODQ0YWY4MzIyNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25z
dHJ1Y3Rvci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJKU1Byb21pc2VEZWZlcnJl
ZC5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZUZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTUHJvbWlz
ZVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIkxv
b2t1cC5oIgogI2luY2x1ZGUgIk51bWJlck9iamVjdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlu
bGluZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
cGVydHlOYW1lSXRlcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKaW5kZXggNjhhOGJkODdkMzhhZGJiYjlkZDJhYzllYzRi
NDlkNWVmNDU0OWQ1Ni4uMjM3YzQyYmIwZGEwZjE2Njc2ZWIxMWFkZTgxODBhN2IwNmQ5OGViNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5jcHAKQEAgLTI5LDcgKzI5LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiT3Bl
cmF0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpT
QyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmgKaW5kZXggZjQzNjJmZjM1NGVlNmE1MDIyMWJiNzMxZDFhMjYxMWU2ZGQ2
MWJjMC4uZDA3MzcxOWRlMTYwZDJmMjkyMTEwYTU5NmExMDVlMmZhMjExNWZmYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0
b3IuaApAQCAtMzEsNyArMzEsNiBAQAogCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRl
ICJKU1N0cmluZy5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQcm9wZXJ0
eU5hbWVBcnJheS5oIgogI2luY2x1ZGUgPG1lbW9yeT4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmgKaW5kZXggMmIxY2RkZGM1ODQxZDYwZDE1N2EyZTYxZjcwMmIwZWU1
ZmExZDY3Ni4uZTM5MzQxNjBhZWE5MjZlZjE1OTMyZjg3OTBlMjRjNTJhZjAyZDM1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC0yNCw3ICsyNCw2IEBACiAj
ZGVmaW5lIEpTU3RyaW5nX2gKIAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgotI2luY2x1ZGUgIkNv
bW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlBy
b3BlcnR5RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgpAQCAtNDcyLDMz
ICs0NzEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJp
dmlhbFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4ganNO
b250cml2aWFsU3RyaW5nKCZleGVjLT52bSgpLCBzKTsgfQogICAgIGlubGluZSBKU1N0cmluZyog
anNPd25lZFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4g
anNPd25lZFN0cmluZygmZXhlYy0+dm0oKSwgcyk7IH0KIAotICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQotICAgIHsKLSAgICAgICAg
aWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7Ci0gICAg
ICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5LCBqc051bWJlcihtX2xlbmd0aCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgIH0KLQotICAgICAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKLSAg
ICAgICAgaWYgKGkgPCBtX2xlbmd0aCkgewotICAgICAgICAgICAgQVNTRVJUKGkgIT0gUHJvcGVy
dHlOYW1lOjpOb3RBbkluZGV4KTsgLy8gTm8gbmVlZCBmb3IgYW4gZXhwbGljaXQgY2hlY2ssIHRo
ZSBhYm92ZSB0ZXN0IHdvdWxkIGFsd2F5cyBmYWlsIQotICAgICAgICAgICAgc2xvdC5zZXRWYWx1
ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIGkpKTsKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLSAgICAgICAgICAgIAotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0
U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi0gICAgewotICAgICAgICBpZiAocHJvcGVydHlOYW1lIDwg
bV9sZW5ndGgpIHsKLSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8
IFJlYWRPbmx5LCBnZXRJbmRleChleGVjLCBwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQog
ICAgIGlubGluZSBib29sIGlzSlNTdHJpbmcoSlNWYWx1ZSB2KSB7IHJldHVybiB2LmlzQ2VsbCgp
ICYmIHYuYXNDZWxsKCktPmNsYXNzSW5mbygpID09IEpTU3RyaW5nOjppbmZvKCk7IH0KIAogICAg
IC8vIC0tLSBKU1ZhbHVlIGlubGluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAt
NTI4LDMyICs1MDAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIHRvV1RGU3Ry
aW5nU2xvd0Nhc2UoZXhlYyk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBTdHJpbmcgaW5s
aW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKGNvbnN0IEpTVmFsdWUmIHZhbHVlLCBFeGVjU3Rh
dGUqIGV4ZWMpCi0gICAgewotICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgICAgICBp
ZiAodmFsdWUuaXNJbnQzMigpKQotICAgICAgICAgICAgcmV0dXJuIHZtLm51bWVyaWNTdHJpbmdz
LmFkZCh2YWx1ZS5hc0ludDMyKCkpOwotICAgICAgICBpZiAodmFsdWUuaXNEb3VibGUoKSkKLSAg
ICAgICAgICAgIHJldHVybiB2bS5udW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNEb3VibGUoKSk7
Ci0gICAgICAgIGlmICh2YWx1ZS5pc1RydWUoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9w
ZXJ0eU5hbWVzLT50cnVlS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzRmFs
c2UoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5mYWxzZUtleXdvcmQu
c3RyaW5nKCk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgICAgIHJldHVy
biB2bS5wcm9wZXJ0eU5hbWVzLT5udWxsS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHZh
bHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+
dW5kZWZpbmVkS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIFN0cmluZyBK
U1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci0gICAgewot
ICAgICAgICBpZiAoaXNTdHJpbmcoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxK
U1N0cmluZyo+KGFzQ2VsbCgpKS0+dmFsdWUoZXhlYyk7Ci0KLSAgICAgICAgcmV0dXJuIGlubGlu
ZUpTVmFsdWVOb3RTdHJpbmd0b1N0cmluZygqdGhpcywgZXhlYyk7Ci0gICAgfQotCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTU3RyaW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzc4YzA1ZmM4MGQ4
OGU4NTM3YzlkMmE1ZWFiOWZmMGJhOWI2MGE3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCkBAIC0wLDAgKzEsOTAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEpTU3RyaW5nSW5saW5lc19oCisjZGVmaW5lIEpTU3RyaW5nSW5saW5lc19oCisKKyNpbmNs
dWRlICJDb21tb25JZGVudGlmaWVycy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
CisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0FMV0FZU19JTkxJ
TkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgeworICAgICAg
ICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBq
c051bWJlcihtX2xlbmd0aCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisg
ICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGkgPCBtX2xl
bmd0aCkgeworICAgICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOyAv
LyBObyBuZWVkIGZvciBhbiBleHBsaWNpdCBjaGVjaywgdGhlIGFib3ZlIHRlc3Qgd291bGQgYWx3
YXlzIGZhaWwhCisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRP
bmx5LCBnZXRJbmRleChleGVjLCBpKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0FMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6
Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgaWYgKHByb3BlcnR5TmFtZSA8IG1fbGVu
Z3RoKSB7CisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5
LCBnZXRJbmRleChleGVjLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKworQUxXQVlTX0lOTElORSBTdHJpbmcg
aW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKGNvbnN0IEpTVmFsdWUmIHZhbHVlLCBFeGVj
U3RhdGUqIGV4ZWMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBpZiAodmFsdWUu
aXNJbnQzMigpKQorICAgICAgICByZXR1cm4gdm0ubnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVlLmFz
SW50MzIoKSk7CisgICAgaWYgKHZhbHVlLmlzRG91YmxlKCkpCisgICAgICAgIHJldHVybiB2bS5u
dW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNEb3VibGUoKSk7CisgICAgaWYgKHZhbHVlLmlzVHJ1
ZSgpKQorICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+dHJ1ZUtleXdvcmQuc3RyaW5n
KCk7CisgICAgaWYgKHZhbHVlLmlzRmFsc2UoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5
TmFtZXMtPmZhbHNlS2V5d29yZC5zdHJpbmcoKTsKKyAgICBpZiAodmFsdWUuaXNOdWxsKCkpCisg
ICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5udWxsS2V5d29yZC5zdHJpbmcoKTsKKyAg
ICBpZiAodmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFt
ZXMtPnVuZGVmaW5lZEtleXdvcmQuc3RyaW5nKCk7CisgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKK30KKyAgICAKK0FMV0FZU19JTkxJTkUgU3RyaW5nIEpTVmFs
dWU6OnRvV1RGU3RyaW5nSW5saW5lKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBpZiAo
aXNTdHJpbmcoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTU3RyaW5nKj4oYXNDZWxs
KCkpLT52YWx1ZShleGVjKTsKKyAgICAKKyAgICByZXR1cm4gaW5saW5lSlNWYWx1ZU5vdFN0cmlu
Z3RvU3RyaW5nKCp0aGlzLCBleGVjKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKaW5kZXgg
MmFjMjUyNGM1ZGZkYTNkMTIyNDlkNzc5MGFkYzMxMjllM2MwZTg3MS4uZmJjOGI4OTVlYWU2YWY3
ODg4MzliZWI1ZTgzZDdiNmI5NzkyOGZhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKQEAgLTY0LDYgKzY0LDggQEAg
dm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXQKICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIodGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+bV9sb2NrKTsKICAgICAgICAgU3ltYm9sVGFi
bGU6Ok1hcDo6aXRlcmF0b3IgZW5kID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+ZW5kKGxv
Y2tlcik7CiAgICAgICAgIGZvciAoU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXQgPSB0aGlz
T2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5iZWdpbihsb2NrZXIpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
KyAgICAgICAgICAgIGlmIChpdC0+a2V5LT5pc0VtcHR5VW5pcXVlKCkpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoIShpdC0+dmFsdWUuZ2V0QXR0cmlidXRlcygp
ICYgRG9udEVudW0pIHx8IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKQogICAg
ICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgaXQtPmtleS5n
ZXQoKSkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKaW5kZXggYjViMjBhODQ1YjZhYjY0NDI0YjM3ZTMxYjI3
NzRlZjkwNTM1M2Y3Zi4uZDAzYjI0NTExYzJkZTE5NTlmYjVmNTZkNjQ5YzY0ZDBlZmUwNjg1NSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVP
YmplY3QuaApAQCAtNzIsNyArNzIsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKIHsK
ICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwog
ICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAg
U3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2Vy
LCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVy
YXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7
CiAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+dmFsdWU7
CkBAIC04Nyw3ICs4Nyw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogewogICAgIFN5
bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgQ29u
Y3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICBTeW1ib2xU
YWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3Bl
cnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0
ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBp
ZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1ZTsKQEAgLTEw
NCw3ICsxMDQsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKIHsKICAgICBTeW1ib2xU
YWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgIENvbmN1cnJl
bnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAgU3ltYm9sVGFibGU6
Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5h
bWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0g
c3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGl0
ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+dmFsdWU7CkBAIC0xMjYsNyAr
MTI2LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoCiAgICAgewogICAgICAgICBTeW1i
b2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBH
Q1NhZmVDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2ssIGV4ZWMt
PnZtKCkuaGVhcCk7Ci0gICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBz
eW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAg
ICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxv
Y2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFi
bGUuZW5kKGxvY2tlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJvb2wg
d2FzRmF0OwpAQCAtMTU5LDcgKzE1OSw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0V2l0
aEF0dHJpYnV0ZXMoCiAgICAgewogICAgICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAq
b2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tl
cihzeW1ib2xUYWJsZS5tX2xvY2spOwotICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRv
ciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1l
KCkpOworICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFi
bGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgICAgIGlmIChpdGVyID09
IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICBTeW1ib2xUYWJsZUVudHJ5JiBlbnRyeSA9IGl0ZXItPnZhbHVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKaW5kZXggYTgwNmRkMDUyYTBjYmVlNGNhYzJjYWE2
ZTA4YzY3MTYwMDVjMjcwYy4uYTk3NjUyMDFiOWY1MTg2NDE0MjNkZGUwZmUwZTJlNTFhOGNlNzNi
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCkBAIC02OCw3ICs2
OCw3IEBAIHZvaWQgSGFzaFRhYmxlOjpkZWxldGVUYWJsZSgpIGNvbnN0CiBib29sIHNldFVwU3Rh
dGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwg
SlNPYmplY3QqIHRoaXNPYmosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKICAgICBBU1NFUlQodGhpc09iai0+Z2xvYmFsT2JqZWN0KCkpOwotICAgIEFT
U0VSVChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pOworICAgIEFTU0VSVChlbnRyeS0+
YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQg
PSB0aGlzT2JqLT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7
CkBAIC03OSw5ICs3OSwxMyBAQCBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqCiAgICAgICAgIGlmICh0
aGlzT2JqLT5zdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgCi0gICAgICAgIHRoaXNPYmotPnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKAotICAg
ICAgICAgICAgdm0sIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5
LT5mdW5jdGlvbkxlbmd0aCgpLAotICAgICAgICAgICAgZW50cnktPmZ1bmN0aW9uKCksIGVudHJ5
LT5pbnRyaW5zaWMoKSwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAgICAgIGlmIChlbnRyeS0+
YXR0cmlidXRlcygpICYgQnVpbHRpbikKKyAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdEJ1
aWx0aW5GdW5jdGlvbih2bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwg
ZW50cnktPmJ1aWx0aW5HZW5lcmF0b3IoKSh2bSksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
KAorICAgICAgICAgICAgICAgIHZtLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlO
YW1lLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSwKKyAgICAgICAgICAgICAgICBlbnRyeS0+ZnVu
Y3Rpb24oKSwgZW50cnktPmludHJpbnNpYygpLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAgICAg
ICAgfQogICAgICAgICBvZmZzZXQgPSB0aGlzT2JqLT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3Bl
cnR5TmFtZSwgYXR0cmlidXRlcyk7CiAgICAgICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG9mZnNl
dCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xv
b2t1cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKaW5kZXggYmRl
ODNkNGE2ZmMzNTU3Nzg1MGUzMWU4OGJjMzlmZDA1ZjdiY2U1Mi4uZGJhMzg5ZTllMjQzZGQwZWNi
MmJhOThmMzk0ZDQwNzlmOWRlYTkzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTG9va3VwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9v
a3VwLmgKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgLy8gaWUuIHR5cGVk
ZWYgSlNWYWx1ZSAoKkdldEZ1bmN0aW9uKShFeGVjU3RhdGUqLCBKU09iamVjdCogYmFzZU9iamVj
dCkKICAgICB0eXBlZGVmIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIEdldEZ1bmN0aW9uOwog
ICAgIHR5cGVkZWYgUHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmMgUHV0RnVuY3Rpb247Cisg
ICAgdHlwZWRlZiBGdW5jdGlvbkV4ZWN1dGFibGUqICgqQnVpbHRpbkdlbmVyYXRvcikoVk0mKTsK
IAogICAgIGNsYXNzIEhhc2hFbnRyeSB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwpAQCAtNjgsMTEgKzY5LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJu
IG1faW50cmluc2ljOwogICAgICAgICB9CiAKKyAgICAgICAgQnVpbHRpbkdlbmVyYXRvciBidWls
dGluR2VuZXJhdG9yKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgQnVpbHRpbik7IHJl
dHVybiBtX3UuYnVpbHRpbkdlbmVyYXRvci5nZW5lcmF0b3JWYWx1ZTsgfQogICAgICAgICBOYXRp
dmVGdW5jdGlvbiBmdW5jdGlvbigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0
aW9uKTsgcmV0dXJuIG1fdS5mdW5jdGlvbi5mdW5jdGlvblZhbHVlOyB9CiAgICAgICAgIHVuc2ln
bmVkIGNoYXIgZnVuY3Rpb25MZW5ndGgoKSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBG
dW5jdGlvbik7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihtX3UuZnVuY3Rpb24u
bGVuZ3RoKTsgfQogCi0gICAgICAgIEdldEZ1bmN0aW9uIHByb3BlcnR5R2V0dGVyKCkgY29uc3Qg
eyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5
LmdldDsgfQotICAgICAgICBQdXRGdW5jdGlvbiBwcm9wZXJ0eVB1dHRlcigpIGNvbnN0IHsgQVNT
RVJUKCEobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0eS5wdXQ7
IH0KKyAgICAgICAgR2V0RnVuY3Rpb24gcHJvcGVydHlHZXR0ZXIoKSBjb25zdCB7IEFTU0VSVCgh
KG1fYXR0cmlidXRlcyAmIEJ1aWx0aW5PckZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVydHku
Z2V0OyB9CisgICAgICAgIFB1dEZ1bmN0aW9uIHByb3BlcnR5UHV0dGVyKCkgY29uc3QgeyBBU1NF
UlQoIShtX2F0dHJpYnV0ZXMgJiBCdWlsdGluT3JGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3Bl
cnR5LnB1dDsgfQogCiAgICAgICAgIGludHB0cl90IGxleGVyVmFsdWUoKSBjb25zdCB7IEFTU0VS
VCghbV9hdHRyaWJ1dGVzKTsgcmV0dXJuIG1fdS5sZXhlci52YWx1ZTsgfQogCkBAIC05NCw2ICs5
NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBpbnRwdHJfdCBsZW5ndGg7
IC8vIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGZ1bmN0aW9uCiAgICAgICAgICAgICB9IGZ1bmN0
aW9uOwogICAgICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICBCdWlsdGluR2VuZXJh
dG9yIGdlbmVyYXRvclZhbHVlOworICAgICAgICAgICAgICAgIGludHB0cl90IHVudXNlZDsKKyAg
ICAgICAgICAgIH0gYnVpbHRpbkdlbmVyYXRvcjsKKyAgICAgICAgICAgIHN0cnVjdCB7CiAgICAg
ICAgICAgICAgICAgR2V0RnVuY3Rpb24gZ2V0OwogICAgICAgICAgICAgICAgIFB1dEZ1bmN0aW9u
IHB1dDsKICAgICAgICAgICAgIH0gcHJvcGVydHk7CkBAIC0yMDksNyArMjE1LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBIYXNo
RW50cnkqIGVudHJ5KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgICAgIHsK
LSAgICAgICAgICAgIFN0cmluZ0ltcGwqIGltcGwgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgp
OworICAgICAgICAgICAgU3RyaW5nSW1wbCogaW1wbCA9IHByb3BlcnR5TmFtZS51aWQoKTsKICAg
ICAgICAgICAgIGlmICghaW1wbCkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAg
CkBAIC0yNDksNyArMjU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGlmICghZW50cnkp
IC8vIG5vdCBmb3VuZCwgZm9yd2FyZCB0byBwYXJlbnQKICAgICAgICAgICAgIHJldHVybiBQYXJl
bnRJbXA6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogCi0gICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pCisgICAg
ICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pCiAgICAgICAg
ICAgICByZXR1cm4gc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoZXhlYywgZW50cnksIHRoaXNPYmos
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20o
dGhpc09iaiwgZW50cnktPmF0dHJpYnV0ZXMoKSwgZW50cnktPnByb3BlcnR5R2V0dGVyKCkpOwpA
QCAtMjg2LDcgKzI5Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpZiAoIWVudHJ5KSAv
LyBub3QgZm91bmQsIGZvcndhcmQgdG8gcGFyZW50CiAgICAgICAgICAgICByZXR1cm4gUGFyZW50
SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iaiwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90
KTsKIAotICAgICAgICBBU1NFUlQoIShlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pKTsK
KyAgICAgICAgQVNTRVJUKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9u
KSk7CiAKICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09iaiwgZW50cnktPmF0
dHJpYnV0ZXMoKSwgZW50cnktPnByb3BlcnR5R2V0dGVyKCkpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTI5NSw3ICszMDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgdm9pZCBw
dXRFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0
KiBiYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpCiAgICAgewogICAgICAgICAvLyBJZiB0aGlzIGlzIGEgZnVuY3Rpb24g
cHV0IGl0IGFzIGFuIG92ZXJyaWRlIHByb3BlcnR5LgotICAgICAgICBpZiAoZW50cnktPmF0dHJp
YnV0ZXMoKSAmIEZ1bmN0aW9uKSB7CisgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYg
QnVpbHRpbk9yRnVuY3Rpb24pIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdCogdGhpc09iamVj
dCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPihzbG90LnRoaXNWYWx1ZSgpKSkKICAgICAgICAg
ICAgICAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2
YWx1ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgUmVhZE9u
bHkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVF
cnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUVycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IGQ1ZTcyOGMyY2QxMDIwYTQ3ZTRhZGNkNjQ5Y2Qx
ZmZmYTVjZDZhODMuLmRjYTJmZDhkMWY2YWMyM2I4ZmY4MTdjYmIxOGZhYWU3YmNkNTk3MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9y
Q29uc3RydWN0b3IuY3BwCkBAIC0zOCw2ICszOCwyMCBAQCBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
OjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7
CiB9CiAKK3ZvaWQgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVj
dHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
LCBuYW1lKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAgCisgICAgTmF0aXZl
RXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1lLCB0aGlzKTsKKyAgICAK
KyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSks
IERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsgLy8gRUNNQSAxNS4xMS43LjUKKyAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgbV9lcnJvclN0cnVjdHVyZS5z
ZXQodm0sIHRoaXMsIEVycm9ySW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUpKTsKKyAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZSk7CisgICAgQVNT
RVJUKG1fZXJyb3JTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOworfQorCiB2b2lkIE5hdGl2ZUVycm9y
Q29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0
PE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAppbmRleCA3NDBkM2Y5
MzMyOTJmZDJhY2NiNGI5OTAzNDQzMTJiOTMxOWFlMTEwLi40MzhhM2FmYjliYjBmNjQxMmM5Nzkz
MjIzMGM4ODcxMDk2MWY1NDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCkBAIC01MSwxOSArNTEsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSgpIHsgcmV0dXJu
IG1fZXJyb3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBuYW1lKTsKLSAgICAgICAg
ICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKLQotICAgICAgICAgICAgTmF0aXZlRXJyb3JQ
cm90b3R5cGUqIHByb3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1lLCB0aGlzKTsKLQotICAgICAgICAg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7IC8vIEVDTUEgMTUuMTEuNy41Ci0gICAg
ICAgICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90
eXBlLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Ci0gICAgICAgICAgICBtX2Vy
cm9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSkpOwotICAgICAgICAgICAgQVNTRVJUKG1fZXJy
b3JTdHJ1Y3R1cmUpOwotICAgICAgICAgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUtPmlzT2Jq
ZWN0KCkpOwotICAgICAgICB9CisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcm
IG5hbWUpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihW
TSYsIFN0cnVjdHVyZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlTbG90LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eVNsb3QuaAppbmRleCBkOTM4ZmEzMTY0NWFmMjZiNzU4NTE0ZGI2YjI0NzhmMTgzZTllZWUxLi5j
ZmU5YzRkMzJiYTc2OGM3NGU0ZmZiYjE5MTM1Mjc5ZGViZjExNzY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaApAQCAtNDIsNiArNDIsOCBAQCBlbnVt
IEF0dHJpYnV0ZSB7CiAgICAgRnVuY3Rpb24gICAgID0gMSA8PCA0LCAgLy8gcHJvcGVydHkgaXMg
YSBmdW5jdGlvbiAtIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIEFjY2Vzc29y
ICAgICA9IDEgPDwgNSwgIC8vIHByb3BlcnR5IGlzIGEgZ2V0dGVyL3NldHRlcgogICAgIEN1c3Rv
bUFjY2Vzc29yID0gMSA8PCA2LAorICAgIEJ1aWx0aW4gICAgICAgICA9IDEgPDwgNywgLy8gcHJv
cGVydHkgaXMgYSBidWlsdGluIGZ1bmN0aW9uIC0gb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFi
bGVzCisgICAgQnVpbHRpbk9yRnVuY3Rpb24gPSBCdWlsdGluIHwgRnVuY3Rpb24sIC8vIGhlbHBl
ciBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKIH07CiAKIGNsYXNzIFByb3BlcnR5U2xv
dCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1
Y3Rvci5jcHAKaW5kZXggYmM1MTZiMDZkNjY1MWYwZTY4MmEyMDE3YmRmOGIwM2JhYmVkNmVhMi4u
MmMyNDM0Yjg3ZDA0Zjc0OWNiMTJlNjAyYWI1NDc4NDk0NmE5MWYxZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcApAQCAtMjMs
NiArMjMsNyBAQAogI2luY2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgiCiAKICNpbmNsdWRlICJF
cnJvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk9wZXJhdGlv
bnMuaCIKICNpbmNsdWRlICJSZWdFeHBNYXRjaGVzQXJyYXkuaCIKICNpbmNsdWRlICJSZWdFeHBQ
cm90b3R5cGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQ
cm90b3R5cGUuY3BwCmluZGV4IDg5ZDdhYzFiOGNiZjFkYjBlMTI2ZjFmYzc5NmRmZDVmYzg0YjJl
NTkuLjlkZGEwYmE4ZGUxNDEyZWFmNGQyOTFkY2YwYzZiMzk2NTdmYjY3N2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcApAQCAtMjQs
NyArMjQsNyBAQAogI2luY2x1ZGUgIkFycmF5UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiRXJyb3Iu
aCIKICNpbmNsdWRlICJKU0FycmF5LmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1
ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAppbmRleCBiMjAzODg4ZDNjMTZj
ZGEzYzAwMzUwNjIwOGFlMDg2OTVkYzVkYWFhLi5kMDI2NmE1OWVmM2Y1NWFhMzY5NGY1Zjc0MThj
Zjc4ZTBhZTBkOGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
ZXRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0
Q29uc3RydWN0b3IuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSlNDZWxsSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTZXQuaCIKKyNp
bmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJNYXBEYXRhLmgiCiAjaW5jbHVk
ZSAiU2V0UHJvdG90eXBlLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdPYmplY3QuY3BwCmluZGV4IDQ0MGE2MDk0MjE5MzM4MDMxZTU5MjdhZjQ2YjI4OWRiY2Zi
NWE3MjguLjgwZTdlYWE4YzQ5MWNiNmQ1NGE4MzI0Y2U2NDdhNmNkYjdlODg3ODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAtMjIsNyAr
MjIsOSBAQAogI2luY2x1ZGUgIlN0cmluZ09iamVjdC5oIgogCiAjaW5jbHVkZSAiRXJyb3IuaCIK
KyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0
LmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5o
IgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDA0MjkxZjdlOGRkMjRlOGFiMzNkNzVhZjFk
YTQ1NjhmMmJjOTllNjguLjFlY2FiODVjMGJkYjI4Njk4OTQ1NzdhNzQxMjU0ZTM2NDQxNDlkODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMjcs
MTIgKzI3LDE4IEBACiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAKICNpbmNsdWRlICJDb2RlQmxv
Y2suaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkR1bXBDb250
ZXh0LmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5n
SW5saW5lcy5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgorI2luY2x1ZGUgIlByb3BlcnR5TWFwSGFz
aFRhYmxlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKKyNpbmNsdWRlICJTbG90
VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgorI2luY2x1ZGUg
IlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMu
aCIKICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWRMZWFrQ291bnRlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDUy
Y2NmNDIzYTEwNDNlMTA3OWYyZDhiMTg5NDIxOTg5MGU3MWYyYmMuLjAyMDY5NWZhYzgzZWQ0ZTUx
ODViNzBlNjk2OTk2M2EyZGU5YTM2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJBcmdMaXN0LmgiCiAjaW5jbHVkZSAiQXJp
dHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuaCIKICNpbmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKICNpbmNsdWRl
ICJDYWxsRnJhbWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAi
Q29kZUNhY2hlLmgiCkBAIC01NSw3ICs1Niw5IEBACiAjaW5jbHVkZSAiSlNBUElWYWx1ZVdyYXBw
ZXIuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCi0j
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisj
aW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU0xvY2su
aCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgpAQCAtNjgsMTMgKzcxLDE2IEBACiAjaW5jbHVk
ZSAiTG9va3VwLmgiCiAjaW5jbHVkZSAiTWFwRGF0YS5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCisj
aW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiUGFyc2VyQXJlbmEuaCIKKyNpbmNsdWRlICJQ
cm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgogI2luY2x1ZGUgIlJlZ0V4cENhY2hlLmgiCiAjaW5jbHVk
ZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJTb3VyY2VQcm92aWRlckNhY2hlLmgiCiAjaW5jbHVkZSAiU3RyaWN0RXZh
bEFjdGl2YXRpb24uaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3Ry
dWN0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAjaW5jbHVk
ZSAiV2Vha01hcERhdGEuaCIKICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CkBAIC0yMjYsNiAr
MjMyLDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwg
bV9pbkRlZmluZU93blByb3BlcnR5KGZhbHNlKQogICAgICwgbV9jb2RlQ2FjaGUoQ29kZUNhY2hl
OjpjcmVhdGUoKSkKICAgICAsIG1fZW5hYmxlZFByb2ZpbGVyKG51bGxwdHIpCisgICAgLCBtX2J1
aWx0aW5FeGVjdXRhYmxlcyhCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZSgqdGhpcykpCiB7CiAg
ICAgaW50ZXJwcmV0ZXIgPSBuZXcgSW50ZXJwcmV0ZXIoKnRoaXMpOwogICAgIFN0YWNrQm91bmRz
IHN0YWNrID0gd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAppbmRleCA1YTg0MTA1ZWFmYjdhYmJhNWZhNDMxZWVlZGQ1NWQ3YTg5ZjU1Y2UyLi42OTU4
YWMzOTNiMWFlZmMwYmVmYmY2ZTRlYjhiNjgyNWNmN2M5YTBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJQcml2YXRlTmFtZS5oIgog
I2luY2x1ZGUgIlByb3RvdHlwZU1hcC5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgorI2lu
Y2x1ZGUgIlNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJUaHVu
a0dlbmVyYXRvcnMuaCIKICNpbmNsdWRlICJUeXBlZEFycmF5Q29udHJvbGxlci5oIgpAQCAtNjks
NiArNzAsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcml0eUNoZWNrRmFpbFJl
dHVyblRodW5rczsKKyAgICBjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXM7CiAgICAgY2xhc3MgQ29k
ZUJsb2NrOwogICAgIGNsYXNzIENvZGVDYWNoZTsKICAgICBjbGFzcyBDb21tb25JZGVudGlmaWVy
czsKQEAgLTQ5Nyw2ICs0OTksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCByZWdp
c3RlcldhdGNocG9pbnRGb3JJbXB1cmVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyJiwgV2F0Y2hw
b2ludCopOwogICAgICAgICAvLyBGSVhNRTogVXNlIEF0b21pY1N0cmluZyBvbmNlIGl0IGdvdCBt
ZXJnZWQgd2l0aCBJZGVudGlmaWVyLgogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFk
ZEltcHVyZVByb3BlcnR5KGNvbnN0IFN0cmluZyYpOworICAgICAgICAKKyAgICAgICAgQnVpbHRp
bkV4ZWN1dGFibGVzKiBidWlsdGluRXhlY3V0YWJsZXMoKSB7IHJldHVybiBtX2J1aWx0aW5FeGVj
dXRhYmxlcy5nZXQoKTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKQEAgLTUzNywxMCArNTQxLDkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIEpTVmFsdWUgbV9leGNlcHRpb247CiAgICAgICAgIGJvb2wgbV9pbkRlZmluZU93
blByb3BlcnR5OwogICAgICAgICBPd25QdHI8Q29kZUNhY2hlPiBtX2NvZGVDYWNoZTsKLSAgICAg
ICAgUmVmQ291bnRlZEFycmF5PFN0YWNrRnJhbWU+IG1fZXhjZXB0aW9uU3RhY2s7Ci0KICAgICAg
ICAgTGVnYWN5UHJvZmlsZXIqIG1fZW5hYmxlZFByb2ZpbGVyOwotCisgICAgICAgIE93blB0cjxC
dWlsdGluRXhlY3V0YWJsZXM+IG1fYnVpbHRpbkV4ZWN1dGFibGVzOworICAgICAgICBSZWZDb3Vu
dGVkQXJyYXk8U3RhY2tGcmFtZT4gbV9leGNlcHRpb25TdGFjazsKICAgICAgICAgSGFzaE1hcDxT
dHJpbmcsIFJlZlB0cjxXYXRjaHBvaW50U2V0Pj4gbV9pbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnRT
ZXRzOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFk
ZXJzL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwZmNjMzg0ZThl
ZGZjMzRiMTQwODNiODY1ZDM3MzgyMGY0MTY1YzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCkBAIC0w
LDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9KU1N0cmluZ0lubGluZXNfaAorI2RlZmlu
ZSBXZWJDb3JlX0ZXRF9KU1N0cmluZ0lubGluZXNfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTU3RyaW5nSW5saW5lcy5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcAppbmRl
eCAyZWRkY2RiYjlmMDA2Y2E3NjI2NjUwYjQyMDI3ODYyNmI5MjYxNDE3Li4zYzRlMGQ3YmJiMzFj
YWIxMmI1ZTZjOTc1Yzc0ZDNmNDg0ZTljYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAK
QEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDSlNWYWx1ZUlubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmlu
Z0lubGluZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwCmluZGV4IDU2NDljODVjYTA5NTg3NzQ4YTNk
YTA2Y2RkZDBjYTk5OWU1MGI4ZTcuLjNmNGQ4ZWZhZWI1N2YzMzAwM2U3M2E3ZTc4NDJlNDJjNzNj
ZTY0OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCQW55Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFueUN1c3RvbS5j
cHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJKU0lEQk9iamVjdFN0b3JlLmgiCiAjaW5j
bHVkZSAiSlNJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURC
RGF0YWJhc2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRh
YmFzZUN1c3RvbS5jcHAKaW5kZXggOWVhZTc1NjljNzA2MDNhNGZlZDBhZjE0YzRmODcxOGNkZTY0
YTZlMS4uZjQ5ZGZlOTBiNGU4MmQzOWVkY2JmOWJhMjlmMmFlNzk5YzBkZGYyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKQEAg
LTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIkpT
SURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0jaW5jbHVkZSA8
cnVudGltZS9KU1N0cmluZy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAKaW5kZXggNzRmZDM1NGIyODYwN2Nm
NzgyMmY4MDUzNDc5NzBmNWQ3YWM4YzgzMi4uNTQzNGIzYjdkNmM1NmVjYjBhMDNhMjc5NGM2NzM2
YTlhZGZiNzBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJP
YmplY3RTdG9yZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJ
REJPYmplY3RTdG9yZUN1c3RvbS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJJREJP
YmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIkpTSURCSW5kZXguaCIKICNpbmNsdWRlIDxydW50aW1l
L0Vycm9yLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgorI2luY2x1ZGUgPHJ1bnRp
bWUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBi
ZDY3NTBiNTkyNjYwNDQ2ZDVlNWVhOTE5MDk5MTdlODNmYzJiZGEyLi45YWFlZDYzNmVkYmNkNzAz
NzdiYzNlNWRhYjJmN2ZkNThmYjgzYmEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTQtMDEt
MjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGl0IHBv
c3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBKUworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlZCB0aGUgdGVzdCByZXN1bHRzIGZv
ciBuZXcgZXJyb3IgbWVzc2FnZXMgKG5vdyB0aGF0IHRoZXkncmUKKyAgICAgICAgYWN0dWFsbHkg
aGVscGZ1bCksIGFuZCBhZGRlZCBhIGpzLXJlZ3Jlc3MgdGVzdCB0byB0cmFjayBwZXJmb3JtYW5j
ZS4KKworICAgICAgICAqIGpzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBq
cy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGpzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICoganMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbDogQWRkZWQuCisg
ICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmpz
OiBBZGRlZC4KKyAgICAgICAgKHRlc3QxKToKKyAgICAgICAgKHRlc3QyKToKKyAgICAgICAgKHRl
c3QzKToKKwogMjAxNC0wMS0zMCAgS3J6eXN6dG9mIFdvbGFuc2tpICA8ay53b2xhbnNraUBzYW1z
dW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBVcGRhdGUgdGVzdCBleHBlY3RhdGlvbnMgZm9yIFdL
MSBhbmQgV0syIGFmdGVyIHIxNjI5NDcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2FycmF5
LWV2ZXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVk
LnR4dAppbmRleCA1NDFiOGMzNThmMDY4YTBjZWE4ODJjMTA1MTc1MzI1MTE0Y2QzM2Y3Li5jY2Ez
NjNkY2U1OGZiYTk1YTU4Y2U0NmZjYjQ4YzM4YmY1OGFkZjU5IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9qcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJy
YXktZXZlcnktZXhwZWN0ZWQudHh0CkBAIC0zMCwxMiArMzAsMTIgQEAgUEFTUyBbMTIsIDUsIDgs
IDEzMCwgNDRdLmV2ZXJ5KGlzQmlnRW5vdWdoQW5kRXhjZXB0aW9uKSB0aHJldyBleGNlcHRpb24g
ZXhjZXB0aW8KIFBBU1MgWzEyLCA1NCwgMTgsIDEzMCwgNDRdLmV2ZXJ5KGlzQmlnRW5vdWdoQW5k
RXhjZXB0aW9uKSB0aHJldyBleGNlcHRpb24gZXhjZXB0aW9uIGZyb20gZnVuY3Rpb24uCiAKIDUu
MCBXcm9uZyBUeXBlIGZvciBDYWxsYmFjayBUZXN0Ci1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0u
ZXZlcnkoNSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEy
LCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSgnd3JvbmcnKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KG5ldyBPYmplY3Qo
KSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4
LCAxMzAsIDQ0XS5ldmVyeShudWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVy
cm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KHVuZGVmaW5lZCkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5l
dmVyeSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIFsxMiwg
NSwgOCwgMTMwLCA0NF0uZXZlcnkoNSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXku
cHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1
LCA4LCAxMzAsIDQ0XS5ldmVyeSgnd3JvbmcnKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBB
cnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBb
MTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KG5ldyBPYmplY3QoKSkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlv
bi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShudWxsKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0
aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KHVuZGVmaW5lZCkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUg
YSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSgpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEg
ZnVuY3Rpb24uCiAKIDYuMCBFYXJseSBFeGl0ICgiU2hvcnQgQ2lyY3VpdGluZyIpCiBQQVNTIFsx
MiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoaXNCaWdFbm91Z2hTaG9ydENpcmN1aXQpIGlzIGZhbHNl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRp
ZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9w
ZXJ0aWVzLWV4cGVjdGVkLnR4dAppbmRleCAyYzJhNjhjYjEwNmRhMTBmMDg2YjIyYzViZjJiZjVj
OGZlNzllMzNlLi41ZDllY2I3NWE4ZGE3OWJhNjU2MDVlN2ViOWNmOGZjMjVmZTE4YWZiIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVy
dGllcy1leHBlY3RlZC50eHQKQEAgLTE1LDcgKzE1LDcgQEAgUEFTUyBBcnJheS5wcm90b3R5cGUu
c2xpY2UuY2FsbCh1bmRlZmluZWQsIDAsIDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVu
ZGUKIFBBU1MgQXJyYXkucHJvdG90eXBlLnNvcnQuY2FsbCh1bmRlZmluZWQpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdB
cnJheS5wcm90b3R5cGUuc29ydC5jYWxsKHVuZGVmaW5lZCknKS4KIFBBU1MgQXJyYXkucHJvdG90
eXBlLnNwbGljZS5jYWxsKHVuZGVmaW5lZCwgMCwgMSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlw
ZS5zcGxpY2UuY2FsbCh1bmRlZmluZWQsIDAsIDEpJykuCiBQQVNTIEFycmF5LnByb3RvdHlwZS51
bnNoaWZ0LmNhbGwodW5kZWZpbmVkLCB7fSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5k
ZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS51bnNo
aWZ0LmNhbGwodW5kZWZpbmVkLCB7fSknKS4KLVBBU1MgQXJyYXkucHJvdG90eXBlLmV2ZXJ5LmNh
bGwodW5kZWZpbmVkLCB0b1N0cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZp
bmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5ldmVyeS5j
YWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpJykuCitQQVNTIEFycmF5LnByb3RvdHlwZS5ldmVyeS5j
YWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5
LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkLgog
UEFTUyBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFs
dWF0aW5nICdBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcp
JykuCiBQQVNTIEFycmF5LnByb3RvdHlwZS5zb21lLmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZykg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2
YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5zb21lLmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZykn
KS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbCh1bmRlZmluZWQsIDApIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0
aW5nICdBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKHVuZGVmaW5lZCwgMCknKS4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMjkwYzBlZWZmOGRlNDIxODMzZDkyZDI3ZTk1MjQxOTE3
NjA0Yjk2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1w
cm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9h
cnJheS1wcm90b3R5cGUtZXZlcnkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJy
YXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXBy
b3RvdHlwZS1ldmVyeS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlNWNjMTcxYzQ4NzVhMzU4NWJmMTRlNTQx
NWY1Y2QwZTU4MWQ1NDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3NjcmlwdC10ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuanMgYi9MYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Mjk0YWExNjFjMGNlOThiMmFiMThhM2ExYTFmMGRmYWFjOWQ3ZDJlMgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5LXByb3RvdHlwZS1l
dmVyeS5qcwpAQCAtMCwwICsxLDI5IEBACit2YXIgcmVzdWx0ID0gMDsKK2Z1bmN0aW9uIHRlc3Qx
KGEpIHsKKyAgICByZXN1bHQgPDwgMTsKKyAgICByZXN1bHQrKzsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KK2Z1bmN0aW9uIHRlc3QyKGEsYikgeworICAgIHJlc3VsdCBePSAzOworICAgIHJlc3VsdCAq
PSAzOworICAgIHJldHVybiB0cnVlOworfQorZnVuY3Rpb24gdGVzdDMoYSxiLGMpIHsKKyAgICBy
ZXN1bHQgXj0gcmVzdWx0ID4+IDE7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZhciByZXN1bHQg
PSAwOwordmFyIGFycmF5ID0gW10KK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpCisg
ICAgYXJyYXlbaV0gPSAxOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHsKKyAgICBh
cnJheS5ldmVyeSh0ZXN0MSk7CisgICAgYXJyYXkuZXZlcnkodGVzdDIpOworICAgIGFycmF5LmV2
ZXJ5KHRlc3QzKTsKK30KKworaWYgKHJlc3VsdCAhPSAxNDI4ODEwNDk2KQorICAgIHRocm93ICJF
cnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxlLmFt
IGIvR05VbWFrZWZpbGUuYW0KaW5kZXggNzNmYzQ5MjhjNGRkNDliNTQ5ODY5YjUwNjc4YzZiZGU3
NGY0NDc2MC4uMDhjOTExNTQyNjA1MDBkZTNmZjA0YjAyMGNlMGQ2MGY5OGU4Y2ZlOCAxMDA2NDQK
LS0tIGEvR05VbWFrZWZpbGUuYW0KKysrIGIvR05VbWFrZWZpbGUuYW0KQEAgLTY4LDYgKzY4LDcg
QEAgQUxMX01PRklMRVMgOj0KIGRvbV9iaW5kaW5nX2lkbHMgOj0KIHd0Zl9zb3VyY2VzIDo9CiBq
YXZhc2NyaXB0Y29yZV9oX2FwaSA6PQoramF2YXNjcmlwdGNvcmVfYnVpbHRpbnNfanNfbm9zb3Vy
Y2VzIDo9CiBqYXZhc2NyaXB0Y29yZV9jcHBmbGFnczo9CiBqYXZhc2NyaXB0Y29yZV9jZmxhZ3Mg
Oj0KIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgOj0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222744</attachid>
            <date>2014-01-30 15:01:49 -0800</date>
            <delta_ts>2014-01-30 15:20:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140130150148.patch</filename>
            <type>text/plain</type>
            <size>212081</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
OTkwYjgxNTkwMTAzNDQyNzUxNzI3NjliZWMzMmNjN2Q0ZTRmMjZjLi42NmIwMTRmMjMyNzMxNDUy
MGIzYjJkM2ZlODQzNWJlOTljMDAxYzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
IFRoaXMgcmVzdWx0IG9mIHRoaXMgcmVmYWN0b3JpbmcKKyAgICAgICAgaXMgdGhhdCBDb21tb25J
ZGVudGlmaWVycywgYW5kIGEgZmV3IG90aGVyIG1pc2NlbGxhbmVvdXMgaGVhZGVycyBub3cKKyAg
ICAgICAgbmVlZCB0byBiZSBpbmNsdWRlZCBkaXJlY3RseSBhcyB0aGV5IHdlcmUgZm9ybWVybHkg
Y2FwdHVyZWQgdGhyb3VnaCBvdGhlcgorICAgICAgICBwYXRocy4KKworICAgICAgICBJbiBhZGRp
dGlvbiB0aGlzIGFkZHMgYSBmbGFnIHRvIHRoZSBMb29rdXAgdGFibGUncyBoYXNoZW50cnkgdG8g
aW5kaWNhdGUKKyAgICAgICAgdGhhdCBhIHN0YXRpYyBmdW5jdGlvbiBpcyBhY3R1YWxseSBiYWNr
ZWQgYnkgSlMuIFRoZXJlIGlzIHRoZW4gYSBsb3Qgb2YKKyAgICAgICAgbG9naWMgdG8gdGhyZWFk
IHRoZSBzcGVjaWFsIG5hdHVyZSBvZiB0aGUgZnVuY3RvbiB0byB3aGVyZSBpdCBtYXR0ZXJzLgor
ICAgICAgICBUaGlzIGFsbG93cyB0b1N0cmluZygpLCAuY2FsbGVyLCBldGMgdG8gbWltaWMgdGhl
IGJlaGF2aW91ciBvZiBhIGhvc3QKKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAgICAgTm90ZXMg
b24gd3JpdGluZyBidWlsdGluczoKKyAgICAgICAgIC0gRWFjaCBmdW5jdGlvbiBpcyBjb21waWxl
ZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBvdGhlcnMsIGFuZCB0aG9zZQorICAgICAgICAgICBpbXBs
ZW1lbnRhdGlvbnMgY2Fubm90IGN1cnJlbnRseSBjYXB0dXJlIGFsbCBnbG9iYWwgcHJvcGVydGll
cyAoYXMKKyAgICAgICAgICAgdGhhdCBjb3VsZCBiZSBwb3RlbnRpYWxseSB1bnNhZmUpLiBJZiBh
IGZ1bmN0aW9uIGRvZXMgY2FwdHVyZSBhCisgICAgICAgICAgIGdsb2JhbCB3ZSB3aWxsIGRlbGli
ZXJhdGVseSBjcmFzaC4KKyAgICAgICAgIC0gRm9yIHRob3NlICJnbG9iYWwiIHByb3BlcnRpZXMg
dGhhdCB3ZSBkbyB3YW50IGFjY2VzcyB0bywgd2UgdXNlCisgICAgICAgICAgIHRoZSBAIHByZWZp
eCwgZS5nLiBPYmplY3QodGhpcykgYmVjb21lcyBAT2JqZWN0KHRoaXMpLiBUaGUgQCBpZGVudGlm
aWVycworICAgICAgICAgICBhcmUgcHJpdmF0ZSBuYW1lcywgYW5kIGJlaGF2ZSBqdXN0IGxpa2Ug
cmVndWxhciBwcm9wZXJ0aWVzLCBvbmx5CisgICAgICAgICAgIHdpdGhvdXQgdGhlIHJpc2sgb2Yg
YWR1bHRlcmF0aW9uLiBBZ2FpbiwgaW4gdGhlIEBPYmplY3QgY2FzZSwgd2UKKyAgICAgICAgICAg
ZXhwbGljaXRseSBkdXBsaWNhdGUgdGhlIE9iamVjdENvbnN0cnVjdG9yIHJlZmVyZW5jZSBvbiB0
aGUgR2xvYmFsT2JqZWN0CisgICAgICAgICAgIHNvIHRoYXQgd2UgaGF2ZSBndWFyYW50ZWVkIGFj
Y2VzcyB0byB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgY29uc3RydWN0
b3IuCisgICAgICAgICAtIGNhbGwsIGFwcGx5LCBldmFsLCBhbmQgRnVuY3Rpb24gYXJlIGFsbCBy
ZWplY3RlZCBpZGVudGlmaWVycywgYWdhaW4KKyAgICAgICAgICAgdG8gcHJldmVudCBhbnl0aGlu
ZyBmcm9tIGFjY2lkZW50YWxseSB1c2luZyBhbiBhZHVsdGVyYXRlZCBvYmplY3QuCisgICAgICAg
ICAgIEluc3RlYWQgQGNhbGwgYW5kIEBhcHBseSBhcmUgYXZhaWxhYmxlLCBhbmQgaGFwcGlseSB0
aGV5IGNvbXBsZXRlbHkKKyAgICAgICAgICAgZHJvcCB0aGUgbmVxX3B0ciBpbnN0cnVjdGlvbiBh
cyB0aGV5J3JlIGRlZmluZWQgYXMgYWx3YXlzIGJlaW5nIHRoZQorICAgICAgICAgICBvcmlnaW5h
bCBjYWxsL2FwcGx5IGZ1bmN0aW9ucy4KKworICAgICAgICBUaGVzZSByZXN0cmljdGlvbnMgYXJl
IGp1c3QgaW50ZW5kZWQgdG8gbWFrZSBpdCBoYXJkZXIgdG8gYWNjaWRlbnRhbGx5CisgICAgICAg
IG1ha2UgY2hhbmdlcyB0aGF0IGFyZSBpbmNvcnJlY3QgKGZvciBpbnN0YW5jZSBjYWxsaW5nIHdo
YXRldmVyIGhhcyBiZWVuCisgICAgICAgIGFzc2lnbmVkIHRvIGdsb2JhbC5PYmplY3QsIGluc3Rl
YWQgb2YgdGhlIG9yaWdpbmFsIGNvbnN0cnVjdG9yIGZ1bmN0aW9uKS4KKyAgICAgICAgSG93ZXZl
ciwgbWFraW5nIGEgbWlzdGFrZSBsaWtlIHRoaXMgc2hvdWxkIHJlc3VsdCBpbiBhIHB1cmVseSBz
ZW1hbnRpYworICAgICAgICBlcnJvciBhcyBmdW5kYW1lbnRhbGx5IHRoZXNlIGZ1bmN0aW9ucyBh
cmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlCisgICAgICAgIHJlZ3VsYXIgSlMgY29kZSBp
biB0aGUgaG9zdCBnbG9iYWwsIGFuZCBoYXZlIG5vIG1vcmUgcHJpdmlsZWdlcyB0aGFuCisgICAg
ICAgIGFueSBvdGhlciBKUy4KKworICAgICAgICBUaGUgaW5pdGlhbCBwcm9vZiBvZiBjb25jZXB0
IGlzIEFycmF5LnByb3RvdHlwZS5ldmVyeSwgdGhpcyBzaG93cyBhIDY1JQorICAgICAgICBwZXJm
b3JtYW5jZSBpbXByb3ZlbWVudCwgYW5kIHRoYXQgaW1wcm92ZW1lbnQgaXMgc2lnbmlmaWNhbnRs
eSBodXJ0IGJ5CisgICAgICAgIG91ciBwb29yIG9wdGltaXNhdGlvbiBvZiBvcF9pbi4KKworICAg
ICAgICBBcyB0aGlzIGlzIHN1Y2ggYSBsaW1pdGVkIGZ1bmN0aW9uLCB3ZSBoYXZlIG5vdCB5ZXQg
ZXhwb3J0ZWQgYWxsIHN5bWJvbHMKKyAgICAgICAgdGhhdCB3ZSBjb3VsZCBwb3NzaWJseSBuZWVk
LCBidXQgYXMgd2UgaW1wbGVtZW50IG1vcmUsIHRoZSBsaWtlbGlob29kCisgICAgICAgIG9mIGVu
Y291bnRlcmluZyBtaXNzaW5nIGZlYXR1cmVzIHdpbGwgcmVkdWNlLgorCisgICAgICAgIFRoaXMg
ZGlkIHJlcXVpcmUgYnJlYWtpbmcgb3V0IGEgSlNTdHJpbmdJbmxpbmVzIGhlYWRlciwgYW5kIHJl
cXVpcmVkCisgICAgICAgIGZpeGluZyBhIGZldyBvYmplY3RzIHRoYXQgd2VyZSB0cnlpbmcgdG8g
dXNpbmcgUHJvcGVydHlOYW1lOjpwdWJsaWNOYW1lCisgICAgICAgIHJhdGhlciB0aGFuIFByb3Bl
cnR5TmFtZTo6dWlkLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0
eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dCk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRpY1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWNGdW5jdGlvbkdl
dHRlcik6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tH
ZXR0ZXIpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBidWlsdGlucy9BcnJheS5wcm90b3R5cGUuanM6CisgICAgICAgIChldmVyeSk6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkJ1aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKToKKyAgICAgICAgKEpTQzo6
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSk6CisgICAgICAgICog
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVj
dXRhYmxlczo6Y3JlYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tG
b3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6dG9TdHJpY3RuZXNzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNCdWlsdGluRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBjcmVhdGVfaGFz
aF90YWJsZToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZ2Vu
ZXJhdGUtanMtYnVpbHRpbnM6IEFkZGVkLgorICAgICAgICAoZ2V0Q29weXJpZ2h0KToKKyAgICAg
ICAgKGdldEZ1bmN0aW9ucyk6CisgICAgICAgIChnZW5lcmF0ZUNvZGUpOgorICAgICAgICAobWFu
Z2xlTmFtZSk6CisgICAgICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSWRlbnRp
Zmllcik6CisgICAgICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChTb3VyY2VDb2RlKToK
KyAgICAgICAgKFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKFZNKToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvUHJvdG9DYWxsRnJhbWUuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUp
OgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpM
ZXhlcik6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpM
ZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFy
Pjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAg
ICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcik6CisgICAgICAgICog
cGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OnNldENsb3NlZFZh
cmlhYmxlcyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
Tm9kZTo6Y2FwdHVyZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OnNldENs
b3NlZFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmluaXNoUGFy
c2luZyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRU
b2tlblRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OmdldFVzZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNsb3NlZFZhcmlh
Ymxlcyk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9k
ZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAgICAgICogcnVudGlt
ZS9BcmdMaXN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAg
ICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJh
dG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpn
ZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpD
b21tb25JZGVudGlmaWVycyk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQ
cml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQdWJsaWNO
YW1lKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzRXhjZXB0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxl
OjpleGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpleGVj
dXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aXNCdWlsdGlu
RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1l
L0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFi
bGVHZXQpOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0KToKKyAg
ICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgICogcnVudGltZS9K
U0NlbGxJbmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6c291cmNlQ29kZSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzSG9zdE9y
QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6aXNCdWlsdGluRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIpOgorICAgICAg
ICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9w
ZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgICogcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6Om9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpnZXRDbGFzc1Byb3BlcnR5TmFtZXMpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZ0lubGlu
ZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjppbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9i
amVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgICAgRG9uJ3QgcmVw
b3J0IHByaXZhdGUgbmFtZXMuCisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6c3ltYm9s
VGFibGVQdXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChKU0M6OnNldFVwU3RhdGlj
RnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlND
OjpIYXNoRW50cnk6OmJ1aWx0aW5HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpIYXNoRW50cnk6
OnByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpwcm9wZXJ0eVB1dHRl
cik6CisgICAgICAgIChKU0M6Okhhc2hUYWJsZTo6ZW50cnkpOgorICAgICAgICAoSlNDOjpnZXRT
dGF0aWNQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpnZXRTdGF0aWNWYWx1ZVNsb3QpOgor
ICAgICAgICAoSlNDOjpwdXRFbnRyeSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6YnVp
bHRpbkV4ZWN1dGFibGVzKToKKwogMjAxNC0wMS0zMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBw
bGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBGVEwgU3RhY2tNYXBzIHBhcnNlciB0byBzdGFja1Np
emUgY2hhbmdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM4NDMzNTUzODg3NWI1YTI0NWY1YTdhMDVhNzhjYzhk
ZmVjZWE1Yi4uMDY3MThhN2QxMmUxZTlkZGZjNmFkOWU3OGFjNzcwYmE0ZmJjMzY0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE0LTAxLTI5ICBPbGl2ZXIgSHVudCAgPG9saXZlckBh
cHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBpbXBsZW1lbnQgSlMgYnVp
bHRpbnMgaW4gSlMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyNzg4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVwZGF0aW5nIGZvciB0aGUgbmV3bHkgcmVxdWlyZWQgaGVhZGVycy4KKworICAgICAgICBU
ZXN0OiBqcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sCisKKyAgICAgICAgKiBG
b3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oOiBBZGRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0lE
Qk9iamVjdFN0b3JlQ3VzdG9tLmNwcDoKKwogMjAxNC0wMS0zMCAgRXJpYyBDYXJsc29uICA8ZXJp
Yy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBkb24ndCB1cGRhdGUgbWVkaWEg
bGF5ZXJzIG9uIG1haW4gdGhyZWFkIHdoZW4gdXNpbmcgQVZGb3VuZGF0aW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCmlu
ZGV4IDViZTA1M2YxZTA4NmI0M2U2ODZjMzY3NGRhZTdjNTE2MDVhMjg2ZTcuLjBlY2VkNTFmM2Uy
ZDViNjIxZGFkZjA1NzQ5ZjVlNzQ2NmEwNmY1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCkBAIC0xMzYsNyArMTM2
LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGUKICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0g
dG9SZWYodGhpc09iamVjdCk7CiAgICAgUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5h
bWVSZWY7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVi
bGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlk
KCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFz
c1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAg
ICAgICAgIC8vIG9wdGlvbmFsIG9wdGltaXphdGlvbiB0byBieXBhc3MgZ2V0UHJvcGVydHkgaW4g
Y2FzZXMgd2hlbiB3ZSBvbmx5IG5lZWQgdG8ga25vdyBpZiB0aGUgcHJvcGVydHkgZXhpc3RzCiAg
ICAgICAgICAgICBpZiAoSlNPYmplY3RIYXNQcm9wZXJ0eUNhbGxiYWNrIGhhc1Byb3BlcnR5ID0g
anNDbGFzcy0+aGFzUHJvcGVydHkpIHsKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIEpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcAogICAgIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwog
ICAgIEpTVmFsdWVSZWYgdmFsdWVSZWYgPSB0b1JlZihleGVjLCB2YWx1ZSk7CiAgICAgCi0gICAg
aWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAg
aWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9y
IChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBq
c0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVj
dFNldFByb3BlcnR5Q2FsbGJhY2sgc2V0UHJvcGVydHkgPSBqc0NsYXNzLT5zZXRQcm9wZXJ0eSkg
ewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lUmVmKQpAQCAtMzQzLDcgKzM0Myw3
IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvCiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRv
UmVmKHRoaXNPYmplY3QpOwogICAgIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1l
UmVmOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1Ymxp
Y05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgp
KSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iamVjdC0+Y2xhc3NS
ZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAg
ICAgICBpZiAoSlNPYmplY3REZWxldGVQcm9wZXJ0eUNhbGxiYWNrIGRlbGV0ZVByb3BlcnR5ID0g
anNDbGFzcy0+ZGVsZXRlUHJvcGVydHkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5
TmFtZVJlZikKQEAgLTU2NCw3ICs1NjQsNyBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6Z2V0U3RhdGljVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcAogewog
ICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzKTsKICAgICAKLSAgICBpZiAoU3Ry
aW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3Ry
aW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xh
c3NSZWYganNDbGFzcyA9IGNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5w
YXJlbnRDbGFzcykgewogICAgICAgICAgICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNU
YWJsZSogc3RhdGljVmFsdWVzID0ganNDbGFzcy0+c3RhdGljVmFsdWVzKGV4ZWMpKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKFN0YXRpY1ZhbHVlRW50cnkqIGVudHJ5ID0gc3RhdGljVmFsdWVzLT5n
ZXQobmFtZSkpIHsKQEAgLTYwMCw3ICs2MDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNr
T2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRQog
ICAgIGlmIChQYXJlbnQ6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHNsb3QyKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90Mi5nZXRW
YWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpKTsKIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0g
cHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0g
cHJvcGVydHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0g
dGhpc09iai0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENs
YXNzKSB7CiAgICAgICAgICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxl
KiBzdGF0aWNGdW5jdGlvbnMgPSBqc0NsYXNzLT5zdGF0aWNGdW5jdGlvbnMoZXhlYykpIHsKICAg
ICAgICAgICAgICAgICBpZiAoU3RhdGljRnVuY3Rpb25FbnRyeSogZW50cnkgPSBzdGF0aWNGdW5j
dGlvbnMtPmdldChuYW1lKSkgewpAQCAtNjI2LDcgKzYyNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBF
bmNvZGVkCiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmopOwogICAgIFJl
ZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwogICAgIAotICAgIGlmIChTdHJp
bmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJp
bmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFz
c1JlZiBqc0NsYXNzID0gdGhpc09iai0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpz
Q2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgICAgICBpZiAoSlNPYmplY3RHZXRQcm9wZXJ0
eUNhbGxiYWNrIGdldFByb3BlcnR5ID0ganNDbGFzcy0+Z2V0UHJvcGVydHkpIHsKICAgICAgICAg
ICAgICAgICBpZiAoIXByb3BlcnR5TmFtZVJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCAyN2JjNGMxN2YzZGZlZWI2MWQyNTIzMjNmZDg3OGM0NDc4MGY3NGM1Li4wYzRk
ZWZiOTlkYjM5OTQzYmE2NTIyNDZlY2RmOTkyN2YxNGU2ZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CkBAIC01Miw2ICs1Miw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VS
Q0VTCiAgICAgYmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcAogICAgIGJpbmRpbmdzL1NjcmlwdFZh
bHVlLmNwcAogCisgICAgYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAorCiAgICAgYnl0
ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9BcnJheVByb2Zp
bGUuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcApAQCAtNzA3LDcgKzcw
OSw3IEBAIHNldChIQVNIX0xVVF9HRU5FUkFUT1IgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9
L2NyZWF0ZV9oYXNoX3RhYmxlKQogbWFjcm8oR0VORVJBVEVfSEFTSF9MVVQgX2lucHV0IF9vdXRw
dXQpCiAgICAgYWRkX2N1c3RvbV9jb21tYW5kKAogICAgICAgICBPVVRQVVQgJHtfb3V0cHV0fQot
ICAgICAgICBERVBFTkRTICR7SEFTSF9MVVRfR0VORVJBVE9SfSAke19pbnB1dH0KKyAgICAgICAg
REVQRU5EUyAke0hBU0hfTFVUX0dFTkVSQVRPUn0gJHtfaW5wdXR9ICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAogICAgICAgICBDT01NQU5EICR7UEVS
TF9FWEVDVVRBQkxFfSAke0hBU0hfTFVUX0dFTkVSQVRPUn0gJHtfaW5wdXR9IC1pID4gJHtfb3V0
cHV0fQogICAgICAgICBWRVJCQVRJTSkKICAgICBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9I
RUFERVJTICR7X291dHB1dH0pCkBAIC04MTUsMTYgKzgxNywyNyBAQCBhZGRfY3VzdG9tX2NvbW1h
bmQoCiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX0lO
U1BFQ1RPUl9TQ1JJUFRTX0RJUn0vQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSAke0RFUklWRURf
U09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTLmpzb24gLS1vdXRwdXRfaF9k
aXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0cHV0X2NwcF9k
aXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0cHV0X2pzX2Rp
ciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIgLS1vdXRwdXRfdHlwZSBK
YXZhU2NyaXB0IC0td3JpdGVfYWx3YXlzICYmIG1rZGlyIC1wICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yICYmIGNwICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFT
Q1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCAke0RFUklWRURf
U09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVy
cy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBl
QnVpbGRlcnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rv
cgogICAgIFZFUkJBVElNKQogCisjIEpTQ0J1aWx0aW5zCitmaWxlKEdMT0IgSlNDQnVpbHRpbnNf
anNfZmlsZXMgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9idWlsdGlucy8qLmpzIikKK2Fk
ZF9jdXN0b21fY29tbWFuZCgKKyAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBU
Q09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09S
RV9ESVJ9L0pTQ0J1aWx0aW5zLmgKKyAgIE1BSU5fREVQRU5ERU5DWSAke0NNQUtFX0NVUlJFTlRf
U09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMKKyAgIERFUEVORFMgJHtKU0NCdWlsdGlu
c19qc19maWxlc30KKyAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9DVVJS
RU5UX1NPVVJDRV9ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zICR7SlNDQnVpbHRpbnNfanNfZmls
ZXN9ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaCAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcAorICAg
VkVSQkFUSU0pCisKIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICAke0RF
UklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTQmFja2VuZERpc3Bh
dGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5z
cGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwCisgICAgJHtERVJJ
VkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5jcHAKICkKIAogbGlz
dChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUwogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaAogICAgICR7
REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNGcm9udGVuZERp
c3BhdGNoZXJzLmgKICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0lu
c3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgKKyAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBU
Q09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKICkKIAogYWRkX2N1c3RvbV9jb21tYW5kKApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAxMTU2ZTk3ZmQ4ODYyNTU3
YzljZjhkM2I2OGJmNGQwM2MzZThiYThmLi43Yzk4MmI2OTEzZTJmODhkNTg4ODRkYmUyMzczZjU5
NWU3YjQ1OTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpA
QCAtMjgsOCArMjgsOSBAQCBWUEFUSCA9IFwKICAgICAkKEphdmFTY3JpcHRDb3JlKSBcCiAgICAg
JChKYXZhU2NyaXB0Q29yZSkvcGFyc2VyIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9ydW50aW1l
IFwKLSAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnRlcnByZXRlciBcCi0gICAgJChKYXZhU2NyaXB0
Q29yZSkvaml0IFwKKwkkKEphdmFTY3JpcHRDb3JlKS9pbnRlcnByZXRlciBcCisJJChKYXZhU2Ny
aXB0Q29yZSkvaml0IFwKKwkkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucyBcCiAjCiAKIC5QSE9O
WSA6IGFsbApAQCAtNTcsMTIgKzU4LDI1IEBAIGFsbCA6IFwKICAgICBSZWdFeHBPYmplY3QubHV0
LmggXAogICAgIFN0cmluZ0NvbnN0cnVjdG9yLmx1dC5oIFwKICAgICB1ZGlzODZfaXRhYi5oIFwK
KyAgICBKU0NCdWlsdGlucyBcCiAjCiAKKyMgYnVpbHRpbiBmdW5jdGlvbnMKKy5QSE9OWTogSlND
QnVpbHRpbnMKKworSlNDQnVpbHRpbnM6ICQoSmF2YVNjcmlwdENvcmUpL2dlbmVyYXRlLWpzLWJ1
aWx0aW5zIEpTQ0J1aWx0aW5zLmggSlNDQnVpbHRpbnMuY3BwCitKU0NCdWlsdGlucy5oOiAkKEph
dmFTY3JpcHRDb3JlKS9nZW5lcmF0ZS1qcy1idWlsdGlucyAkKEphdmFTY3JpcHRDb3JlKS9idWls
dGlucy8qLmpzCisJcHl0aG9uICReICRACisJCQkJCQkJCQkJCQkJCQkJCQkJCSAKK0pTQ0J1aWx0
aW5zLmNwcDogSlNDQnVpbHRpbnMuaAorCiAjIGxvb2t1cCB0YWJsZXMgZm9yIGNsYXNzZXMKIAor
Y3JlYXRlX2hhc2hfdGFibGU6IEpTQ0J1aWx0aW5zCisKICUubHV0Lmg6IGNyZWF0ZV9oYXNoX3Rh
YmxlICUuY3BwCiAJJF4gLWkgPiAkQAorCiBMZXhlci5sdXQuaDogY3JlYXRlX2hhc2hfdGFibGUg
S2V5d29yZHMudGFibGUKIAkkXiA+ICRACiAKQEAgLTc5LDcgKzkzLDYgQEAgS2V5d29yZExvb2t1
cC5oOiBLZXl3b3JkTG9va3VwR2VuZXJhdG9yLnB5IEtleXdvcmRzLnRhYmxlCiB1ZGlzODZfaXRh
Yi5oOiAkKEphdmFTY3JpcHRDb3JlKS9kaXNhc3NlbWJsZXIvdWRpczg2L2l0YWIucHkgJChKYXZh
U2NyaXB0Q29yZSkvZGlzYXNzZW1ibGVyL3VkaXM4Ni9vcHRhYmxlLnhtbAogCShQWVRIT05QQVRI
PSQoSmF2YVNjcmlwdENvcmUpL2Rpc2Fzc2VtYmxlci91ZGlzODYgcHl0aG9uICQoSmF2YVNjcmlw
dENvcmUpL2Rpc2Fzc2VtYmxlci91ZGlzODYvaXRhYi5weSAkKEphdmFTY3JpcHRDb3JlKS9kaXNh
c3NlbWJsZXIvdWRpczg2L29wdGFibGUueG1sIHx8IGV4aXQgMSkKIAotCiAjIEluc3BlY3RvciBp
bnRlcmZhY2VzCiAKIElOU1BFQ1RPUl9ET01BSU5TID0gXApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmFtCmluZGV4IGZlNTQ0OGRkYzFiY2ZhYTRjNzI5YTFjYzAwZGVhNjI0MzE5MzkwYTIu
LmI2MjIxZTUwZTRhYzAwYzAyZmYxYzJkNmM1NTI1OTM4NjBjMjc0NTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTk3LDYgKzk3LDggQEAgJChzaGVsbCBta2RpciAtcCBE
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZSkKIERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlL0xleGVyLmx1dC5oOiAkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9o
YXNoX3RhYmxlICQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0tleXdvcmRz
LnRhYmxlCiAJJChBTV9WX0dFTikkKFBFUkwpICReID4gJEAKIAorJChzcmNkaXIpL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZTogJChzcmNkaXIpL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucworCiBEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0
Q29yZS8lLmx1dC5oOiAkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNo
X3RhYmxlICQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS8lLmNwcAogCSQo
QU1fVl9HRU4pJChQRVJMKSAkXiAtaSA+ICRACiAKQEAgLTExMCwxMiArMTEyLDE2IEBAIERlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaDogJChqYXZhc2Ny
aXB0Y29yZV9zb3VyY2VzKSAkCiAJJChBTV9WX0dFTikkKFJVQlkpICQoc3JjZGlyKS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiICQo
c3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20gJEAKIAkkKEFNX1ZfYXQpdG91Y2ggJEAKIAotJChQcm9ncmFtc19MTEludE9mZnNldHNFeHRy
YWN0b3JfT0JKRUNUUyk6IERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJl
ZE9mZnNldHMuaAorJChQcm9ncmFtc19MTEludE9mZnNldHNFeHRyYWN0b3JfT0JKRUNUUyk6IERl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaCAKIAogRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnRBc3NlbWJseS5oOiBQcm9ncmFtcy9MTElu
dE9mZnNldHNFeHRyYWN0b3IkKEVYRUVYVCkKIAkkKEFNX1ZfR0VOKSQoUlVCWSkgJChzcmNkaXIp
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYiAkKHNyY2RpcikvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIFByb2dyYW1zL0xM
SW50T2Zmc2V0c0V4dHJhY3RvciQoRVhFRVhUKSAkQAogCSQoQU1fVl9hdCl0b3VjaCAkQAogCitE
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5oOiBEZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5jcHAKK0Rlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL0pTQ0J1aWx0aW5zLmNwcDogJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9n
ZW5lcmF0ZS1qcy1idWlsdGlucyAkKGphdmFzY3JpcHRjb3JlX2J1aWx0aW5zX2pzX3NvdXJjZXMp
CisJJChBTV9WX0dFTikkKFBZVEhPTikgJF4gJEAKKwogJChsaWJqYXZhc2NyaXB0Y29yZWd0a19A
V0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9O
QF9sYV9PQkpFQ1RTKTogRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnRBc3NlbWJs
eS5oCiAKIGpzYzogJChqYXZhc2NyaXB0Y29yZV9idWlsdF9ub3NvdXJjZXMpIFByb2dyYW1zL2pz
YyQoRVhFRVhUKQpAQCAtMjE2LDYgKzIyMiw3IEBAIEVYVFJBX0RJU1QgKz0gXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9LZXl3b3JkTG9va3VwR2VuZXJhdG9yLnB5IFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0tleXdvcmRzLnRhYmxlIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
VEhBTktTIFwKKwkkKGphdmFzY3JpcHRjb3JlX2J1aWx0aW5zX2pzX25vc291cmNlcykgXAogCSQo
bGxpbnRfbm9zb3VyY2VzKSBcCiAJJChvZmZsaW5lYXNtX25vc291cmNlcykKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBjZGI1NDI2YjA2YjUyYTk4MjU2
ZWU5MDU4YmJhOGYxMWVlYTY5ZWUwLi45OGZhYWE3ZDE3NWFhNjFmMjA4OTZjZWViMTM4NjNlMjdi
MjY2Y2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAt
MjAsNiArMjAsOCBAQCBqYXZhc2NyaXB0Y29yZV9idWlsdF9ub3NvdXJjZXMgKz0gXAogCURlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0Vycm9yUHJvdG90eXBlLmx1dC5oIFwKIAlEZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0RhdGFWaWV3UHJvdG90eXBlLmx1dC5oIFwKIAlEZXJp
dmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5sdXQuaCBcCisJRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNDQnVpbHRpbnMuY3BwIFwKKwlEZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9KU09OT2JqZWN0Lmx1dC5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29y
ZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvSlNQcm9taXNlUHJvdG90eXBlLmx1dC5oIFwKQEAgLTM1LDYgKzM3LDkgQEAgamF2YXNj
cmlwdGNvcmVfYnVpbHRfbm9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0
Q29yZS9MTEludERlc2lyZWRPZmZzZXRzLmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlL0xMSW50QXNzZW1ibHkuaAogCitqYXZhc2NyaXB0Y29yZV9idWlsdGluc19qc19ub3NvdXJj
ZXMgKz0gXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUu
anMKKwogamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9BUElDYWxsYmFja0Z1bmN0aW9uLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
QVBJQ2FzdC5oIFwKQEAgLTEwMiw2ICsxMDcsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9
IFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0T2JqZWN0LmggXAog
ICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAgXAogICAg
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5oIFwKKyAgICBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBcCisgICAg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxl
LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwIFwK
QEAgLTEyNDEsNyArMTI0OCw5IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCURlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5j
cHAgXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpTRnJvbnRlbmRE
aXNwYXRjaGVycy5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JK
U1R5cGVCdWlsZGVycy5jcHAgXAotCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3Bl
Y3RvckpTVHlwZUJ1aWxkZXJzLmgKKwlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnNw
ZWN0b3JKU1R5cGVCdWlsZGVycy5oIFwKKwlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9K
U0NCdWlsdGlucy5jcHAgXAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0
aW5zLmgKIAogbGxpbnRfbm9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvagppbmRleCA1ZWRlZmRiZTg1NWY5NmE2MjY4ZDg1NzNiZWMxZDBjM2Q4NThh
YTVjLi5hMTJkYjE4MzQ4NmRmYmJjYTgzZjNhNzhlOWNmOTg2MzFiMjY1M2RjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTMwOSw2ICszMDksNyBAQAogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdE9iamVjdC5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRWYWx1ZS5jcHAiIC8+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWlsdGluRXhlY3V0YWJsZXMu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0
aW9uUHJvZmlsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxB
cnJheVByb2ZpbGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVc
Qnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCIgLz4KQEAgLTcyMSw2ICs3MjIsNyBAQAogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTQmFja2Vu
ZERpc3BhdGNoZXJzLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xJbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZv
cm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpT
VHlwZUJ1aWxkZXJzLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xKU0NCdWlsdGlucy5jcHAiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRl
bUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEFycmF5Q29uc3RydWN0b3IubHV0LmgiIC8+CkBAIC03NTAsNiArNzUyLDcgQEAKICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJj
aGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xSZWdFeHBPYmplY3QubHV0
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
UmVnRXhwUHJvdG90eXBlLmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXFN0cmluZ0NvbnN0cnVjdG9yLmx1dC5oIiAvPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmgiIC8+
CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cQVBJXEFQSUNhbGxiYWNrRnVuY3Rpb24uaCIgLz4KQEAgLTc5OCw2ICs4MDEsNyBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0RnVuY3Rpb25DYWxsLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRPYmplY3QuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdFZhbHVlLmgiIC8+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWlsdGluRXhlY3V0YWJsZXMuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlvblBy
b2ZpbGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5UHJv
ZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQnlWYWxJbmZv
LmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRl
cnMKaW5kZXggODdlMTJhNDcxNThiYjYyMjRkNDlmZDYyMjk3OGM0YTljNDQzNWE2NS4uODY5YzFm
NTg5YmNiNjg2ZWI5Y2YyMGMwOTZiZTFiODNhNTUxZTI0YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
ai5maWx0ZXJzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtNyw2ICs3LDkgQEAKICAgICA8
RmlsdGVyIEluY2x1ZGU9ImJpbmRpbmdzIj4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnswYmFj
ZTEyMy00NTgyLWVlYmMtOTMxNC03ODE5YjM3NmMxOTh9PC9VbmlxdWVJZGVudGlmaWVyPgogICAg
IDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iYnVpbHRpbnMiPgorICAgICAgPFVuaXF1
ZUlkZW50aWZpZXI+ezNiOWQ3MmE1LTEzNWItNDNiMy1hNTI0LWM2ZDJiOWQyOWQzNX08L1VuaXF1
ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CiAgICAgPEZpbHRlciBJbmNsdWRlPSJieXRlY29k
ZSI+CiAgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NzY2MDg4YTAtMTIxNi00ODU0LWFhNDMtNTYw
YzVlMjgzNjY4fTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8L0ZpbHRlcj4KQEAgLTEwOCw2ICsx
MTEsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXE1hY3JvQXNzZW1i
bGVyLmNwcCI+CiAgICAgICA8RmlsdGVyPmFzc2VtYmxlcjwvRmlsdGVyPgogICAgIDwvQ2xDb21w
aWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnVpbHRpbnNcQnVpbHRpbkV4ZWN1dGFi
bGVzLmNwcCI+CisgICAgICA8RmlsdGVyPmJ1aWx0aW5zPC9GaWx0ZXI+CisgICAgPC9DbENvbXBp
bGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Q
cm9maWxlLmNwcCI+CiAgICAgICA8RmlsdGVyPmJ5dGVjb2RlPC9GaWx0ZXI+CiAgICAgPC9DbENv
bXBpbGU+CkBAIC0xMzI5LDYgKzEzMzUsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmNwcCI+CiAgICAg
ICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZv
cm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5z
LmNwcCI+CisgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgorICAgIDwvQ2xD
b21waWxlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXEFQSVxBUElDYWxsYmFja0Z1bmN0aW9uLmgiPgpAQCAtMTQ1NCw2ICsxNDYzLDkg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxYODZBc3NlbWJsZXIuaCI+
CiAgICAgICA8RmlsdGVyPmFzc2VtYmxlcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnVpbHRpbnNcQnVpbHRpbkV4ZWN1dGFibGVzLmgiPgor
ICAgICAgPEZpbHRlcj5idWlsdGluczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIj4K
ICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTI1
NTAsNiArMjU2Miw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcQXJyYXlQcm90b3R5cGUubHV0LmgiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkIFNv
dXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NCdWlsdGlucy5oIj4KKyAgICAgIDxGaWx0ZXI+
RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXFZNLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZUNvbW1vbi5wcm9wcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlQ29t
bW9uLnByb3BzCmluZGV4IDM2MjJmZmM1NzdjNDNkZGY3MGRhNTFmZjY4YWQ2NDZmNjMwNGU1Njcu
LmM1ODg4NzBjMmZkMTNkNjA3NmQzOGY1MmNhNjIyNWRiMjg3MmM3ODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
Q29tbW9uLnByb3BzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlQ29tbW9uLnByb3BzCkBAIC01LDcgKzUsNyBAQAogICA8UHJv
cGVydHlHcm91cCAvPgogICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgot
ICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cOy4uXHRvb2xzXDsuLlxydW50
aW1lXDsuLlxsbGludFw7Li5caml0XDsuLlxkaXNhc3NlbWJsZXJcOy4uXGhlYXBcOy4uXGRlYnVn
Z2VyXDsuLlxhc3NlbWJsZXJcOy4uXHByb2ZpbGVyXDsuLlx5YXJyXDsuLlxpbnRlcnByZXRlclw7
Li5cYnl0ZWNvZGVcOy4uXGRmZ1w7Li5cYnl0ZWNvbXBpbGVyXDsuLlxwYXJzZXJcOy4uXEFQSVw7
Li5cZnRsXDsuLlxiaW5kaW5nc1w7Li5caW5zcGVjdG9yXDskKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcSmF2YVNjcmlwdENvcmVcRGVyaXZlZFNvdXJj
ZXNcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXDskKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZVw7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGlu
Y2x1ZGVccHJpdmF0ZVw7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlOyQoV2ViS2l0X0xpYnJh
cmllcylcaW5jbHVkZVxwcml2YXRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0Fk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcz4uLlw7Li5cdG9vbHNcOy4uXHJ1bnRpbWVcOy4uXGxsaW50XDsuLlxqaXRcOy4uXGRp
c2Fzc2VtYmxlclw7Li5caGVhcFw7Li5cZGVidWdnZXJcOy4uXGFzc2VtYmxlclw7Li5ccHJvZmls
ZXJcOy4uXHlhcnJcOy4uXGludGVycHJldGVyXDsuLlxieXRlY29kZVw7Li5cYnVpbHRpbnNcOy4u
XGRmZ1w7Li5cYnl0ZWNvbXBpbGVyXDsuLlxwYXJzZXJcOy4uXEFQSVw7Li5cZnRsXDsuLlxiaW5k
aW5nc1w7Li5caW5zcGVjdG9yXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcSmF2YVNjcmlwdENvcmVcRGVyaXZlZFNvdXJjZXNcOyQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxpbmNsdWRlXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxK
YXZhU2NyaXB0Q29yZVw7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVw7
JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlOyQoV2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZVxw
cml2YXRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM+CiAgICAgICA8Rm9yY2VkSW5jbHVkZUZpbGVzPklDVVZlcnNpb24uaDslKEZv
cmNlZEluY2x1ZGVGaWxlcyk8L0ZvcmNlZEluY2x1ZGVGaWxlcz4KICAgICA8L0NsQ29tcGlsZT4K
ICAgICA8TGluaz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjdlODc2NzQwYTk2
NGIwMjg5ODRlZDY3ODE2MTgyMGE1ZGNmNzdjNC4uOTExNTczYWIxN2QzMzk3NGFhN2M5YTAxMWRi
MjAwYjA5YWY3OGJmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkyMiw3ICs5
MjIsNiBAQAogCQlBNTAzRkExOTE4OEUwRkIwMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFt
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAz
RkExMzE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi87IH07CiAJ
CUE1MDNGQTFBMTg4RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNDE4OEUwRkFG
MDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQlBNTAzRkExQjE4OEUw
RkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE1MTg4RTBGQjAwMDExMEYxNCAv
KiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwICovOyB9OwotCQlBNTAzRkExQzE4OEUwRkIwMDAx
MTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNjE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lLmggKi87IH07CiAJCUE1MDNGQTFEMTg4RTBGQjAwMDExMEYxNCAvKiBK
U0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTcxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2
YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAgKi87IH07CiAJCUE1MDNGQTFFMTg4RTBGQjAw
MDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE4MTg4RTBGQjAwMDExMEYx
NCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaCAqLzsgfTsKIAkJQTUwM0ZBMjEx
ODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTFGMTg4RUZGNjgwMDExMEYxNCAvKiBT
Y3JpcHRCcmVha3BvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTEwMjQsNiArMTAyMyw3IEBACiAJCUE3MEIwODMyMTdBMEI3OUIwMERBRjE0
QiAvKiBERkdCaW5hcnlTd2l0Y2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTcwQjA4MzAxN0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRj
aC5jcHAgKi87IH07CiAJCUE3MEIwODMzMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0
Y2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MEIw
ODMxMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guaCAqLzsgfTsKIAkJQTcxMjM2
RTUxMTk1RjMzQzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzEyMzZFNDExOTVGMzNDMDBCRDIxNzQg
LyogSklUT3Bjb2RlczMyXzY0LmNwcCAqLzsgfTsKKwkJQTcxREE4MEYxODgwREJBQjAwRDFGMjk5
IC8qIEpTU3RyaW5nSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTcxREE4MEUxODgwREJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3MjAy
OEI2MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyMDI4QjQxNzk3NjAxRTAwOTgw
MjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAgKi87IH07CiAJCUE3MjAyOEI4MTc5NzYwMUUw
MDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjAyOEI1MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0
UnVubmVyVXRpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlBNzIwMjhCQTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklubGluZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjAyOEI5MTc5
NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTUwLDYgKzExNTAsMTAgQEAKIAkJQTdD
QTNBRTgxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDQTNBRTIxN0RBNDFBRTAwNjUzOEFGIC8qIEpT
V2Vha01hcC5oICovOyB9OwogCQlBN0NBM0FFQjE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERh
dGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdD
QTNBRTkxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCAqLzsgfTsKIAkJQTdDQTNB
RUMxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0NBM0FFQTE3REE1MTY4MDA2NTM4QUYgLyogV2Vh
a01hcERhdGEuaCAqLzsgfTsKKwkJQTdEODAxQTQxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5F
eGVjdXRhYmxlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBN0Q4MDFBMTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCAq
LzsgfTsKKwkJQTdEODAxQTUxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTIx
ODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3RDgwMUE4MTg4MEQ2QTgwMDI2QzM5
QiAvKiBKU0NCdWlsdGlucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBN0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwICov
OyB9OworCQlBN0Q4MDFBOTE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDgwMUE3MTg4MEQ2QTgw
MDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUE3RDg5Q0YyMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Js
b2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
RDg5Q0UzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNwcCAqLzsgfTsKIAkJQTdE
ODlDRjMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDg5Q0U0MTdBMEI4Q0Mw
MDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5jcHAgKi87IH07CiAJCUE3RDg5Q0Y0MTdB
MEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODlDRTUxN0EwQjhDQzAwNzczQUQ4IC8q
IERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTI0NjIsNiArMjQ2Niw4IEBACiAJCUE3MTIzNkU0MTE5NUYzM0Mw
MEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSklUT3Bjb2RlczMyXzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTcxOEY2MUExMTc1NEEyMTAwMjQ2NUE3IC8qIFJlZ0V4cEppdFRhYmxlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBKaXRUYWJsZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxOEY4MjExMTc4RUI0QjAwMjQ2NUE3IC8qIGNyZWF0ZV9y
ZWdleF90YWJsZXMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlw
ZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IGNyZWF0ZV9y
ZWdleF90YWJsZXM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MURBODBEMTg4MEQ3
MUYwMEQxRjI5OSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0
LnB5dGhvbjsgcGF0aCA9ICJnZW5lcmF0ZS1qcy1idWlsdGlucyI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE3MURBODBFMTg4MERCQUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdJbmxpbmVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI0MTc5NzYwMUUwMDk4MDI4QyAvKiBK
U0NUZXN0UnVubmVyVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNDVGVzdFJ1bm5lclV0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTcyMDI4QjUxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NUZXN0UnVubmVyVXRpbHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyMDI4QjkxNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rp
b25JbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRnVuY3Rpb25J
bmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTkwLDYgKzI1OTYsMTEg
QEAKIAkJQTdDQTNBRTIxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYWtNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTdDQTNBRTkxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYWtNYXBEYXRhLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdDQTNBRUExN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtN
YXBEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtNYXBEYXRhLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUEwMTg4MEQ2NkUwMDI2QzM5QiAv
KiBBcnJheS5wcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBh
dGggPSBBcnJheS5wcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3
RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTIxODgwRDY2RTAwMjZDMzlCIC8qIEJ1
aWx0aW5FeGVjdXRhYmxlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdWls
dGluRXhlY3V0YWJsZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTYx
ODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQ0J1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTdEODAxQTcxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ0J1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE3RDg5Q0UzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Jhc2ljQmxvY2suY3Bw
OyBwYXRoID0gZGZnL0RGR0Jhc2ljQmxvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBN0Q4OUNFNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQmxvY2tJbnNlcnRpb25T
ZXQuY3BwOyBwYXRoID0gZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTdEODlDRTUxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5z
ZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Jsb2NrSW5z
ZXJ0aW9uU2V0Lmg7IHBhdGggPSBkZmcvREZHQmxvY2tJbnNlcnRpb25TZXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5MjYsNiArMjkzNyw3IEBACiAJCQkJODYwNEY0RjIxNDNB
NkM0NDAwQjI5NUY1IC8qIENoYW5nZUxvZyAqLywKIAkJCQlGNjkyQTg1NDAyNTU1OTdEMDFGRjYw
RjcgLyogY3JlYXRlX2hhc2hfdGFibGUgKi8sCiAJCQkJQTcxOEY4MjExMTc4RUI0QjAwMjQ2NUE3
IC8qIGNyZWF0ZV9yZWdleF90YWJsZXMgKi8sCisJCQkJQTcxREE4MEQxODgwRDcxRjAwRDFGMjk5
IC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zICovLAogCQkJCTQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4
NCAvKiBqc2MuY3BwICovLAogCQkJCUY2OEVCQjhDMDI1NUQ0QzYwMUZGNjBGNyAvKiBjb25maWcu
aCAqLywKIAkJCQlGNUMyOTBFNjAyODRGOThFMDE4NjM1Q0EgLyogSmF2YVNjcmlwdENvcmVQcmVm
aXguaCAqLywKQEAgLTI5MzQsNiArMjk0Niw3IEBACiAJCQkJMTQzMkVCRDcwQTM0Q0FENDAwNzE3
QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4Q0IxMjBFRDEyQjRFMDAxRDY0OUYgLyogYXNzZW1ibGVy
ICovLAogCQkJCUE1NENGMkVBMTg0RUE3MzkwMDIzN0YxOSAvKiBiaW5kaW5ncyAqLywKKwkJCQlB
N0Q4MDE5RjE4ODBENjZFMDAyNkMzOUIgLyogYnVpbHRpbnMgKi8sCiAJCQkJOTY5QTA3OEYwRUQx
RDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovLAogCQkJCTdFMzlEODFEMEVDMzhFRkEwMDNBRjEx
QSAvKiBieXRlY29tcGlsZXIgKi8sCiAJCQkJMUM5MDUxM0UwQkE5RTg4MzAwODFFOUQwIC8qIENv
bmZpZ3VyYXRpb25zICovLApAQCAtMzUwOSw2ICszNTIyLDggQEAKIAkJNjUwRkRGOEQwOUQwRkNB
NzAwNzY5RTU0IC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCisJCQkJQTdEODAxQTYxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0
aW5zLmNwcCAqLywKKwkJCQlBN0Q4MDFBNzE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMu
aCAqLywKIAkJCQlCQzE4QzUyMzBFMTZGQzhBMDBCMzQ0NjAgLyogQXJyYXlQcm90b3R5cGUubHV0
LmggKi8sCiAJCQkJQkNEMjAzRTcwRTE3MThGNDAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUubHV0
LmggKi8sCiAJCQkJQTUxM0U1QzYxODVGOTQzNjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291
cmNlLmggKi8sCkBAIC0zODExLDYgKzM4MjYsNyBAQAogCQkJCUE3OTBERDZBMTgyRjQ5OTcwMDU4
ODgwNyAvKiBKU1NldEl0ZXJhdG9yLmggKi8sCiAJCQkJQkMwMkU5QjYwRTE4NDJGQTAwMEY5Mjk3
IC8qIEpTU3RyaW5nLmNwcCAqLywKIAkJCQlGNjkyQTg2MjAyNTU1OTdEMDFGRjYwRjcgLyogSlNT
dHJpbmcuaCAqLywKKwkJCQlBNzFEQTgwRTE4ODBEQkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxp
bmVzLmggKi8sCiAJCQkJODZFODU1MzgxMTFCOTk2ODAwMUFGNTFFIC8qIEpTU3RyaW5nQnVpbGRl
ci5oICovLAogCQkJCTI2MDBCNUE0MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5j
cHAgKi8sCiAJCQkJMjYwMEI1QTUxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVyLmgg
Ki8sCkBAIC00NTYxLDYgKzQ1NzcsMTYgQEAKIAkJCXBhdGggPSByZW1vdGU7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwogCQl9OworCQlBN0Q4MDE5RjE4ODBENjZFMDAyNkMzOUIgLyogYnVp
bHRpbnMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUE3
RDgwMUEwMTg4MEQ2NkUwMDI2QzM5QiAvKiBBcnJheS5wcm90b3R5cGUuanMgKi8sCisJCQkJQTdE
ODAxQTExODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi8sCisJCQkJ
QTdEODAxQTIxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oICovLAorCQkJ
KTsKKwkJCXBhdGggPSBidWlsdGluczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07
CiAvKiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhIZWFkZXJzQnVpbGRQ
aGFzZSBzZWN0aW9uICovCkBAIC00NjA2LDExICs0NjMyLDExIEBACiAJCQkJODZBREQxNDUwRkRE
RUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUNF
RUUxNTE4N0YzQkFEMDBFNTVDOTkgLyogSW5zcGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTY1QzAyODVEMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuaCBpbiBIZWFkZXJz
ICovLAotIAkJCQkyQTY4Mjk1QjE4NzVGODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5o
IGluIEhlYWRlcnMgKi8sCi0gICAgICAgICAgICAgICAgMkE0RUM5MEMxODYwRDZDMjAwOTRGNzgy
IC8qIFdyaXRlQmFycmllckJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkE2ODI5NUIxODc1
RjgwNTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTJB
NEVDOTBDMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZFNTkzMkE4MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1MzI0MzkzMTg1Njk3MDkwMDJFRDY5MiAvKiBDb2RlR2VuZXJhdG9y
SW5zcGVjdG9yU3RyaW5ncy5weSBpbiBIZWFkZXJzICovLAotIAkJCQlBNTMyNDM5MjE4NTY5NzA5
MDAyRUQ2OTIgLyogQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSBpbiBIZWFkZXJzICovLAorCQkJ
CUE1MzI0MzkyMTg1Njk3MDkwMDJFRDY5MiAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NEYxN0VFMjc0OTAwQUJCMjE3IC8qIFRlbXBSZWdpc3Rl
clNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwRTRCNjQxODgwOURENTAwNjhBNDZEIC8qIEpT
R2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUI1OEMxNTE4
N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLywKQEAg
LTQ2MjIsNyArNDY0OCw3IEBACiAJCQkJMEY4MzM1QjgxNjM5QzFFQTAwMTQ0M0I1IC8qIEFycmF5
QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwRTI5MTg3Q0E1RTYw
MDg0M0IxMCAvKiBpbmxpbmUtYW5kLW1pbmlmeS1zdHlsZXNoZWV0cy1hbmQtc2NyaXB0cy5weSBp
biBIZWFkZXJzICovLAogCQkJCUE1ODQwRTJCMTg3Q0E3NUIwMDg0M0IxMCAvKiBqc21pbi5weSBp
biBIZWFkZXJzICovLAotIAkJCQlBNTMyNDM5ODE4NTZBNDg5MDAyRUQ2OTIgLyogSW5zcGVjdG9y
SlMuanNvbiBpbiBIZWFkZXJzICovLAorCQkJCUE1MzI0Mzk4MTg1NkE0ODkwMDJFRDY5MiAvKiBJ
bnNwZWN0b3JKUy5qc29uIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMkExODdDQTc1OTAwODQz
QjEwIC8qIHh4ZC5wbCBpbiBIZWFkZXJzICovLAogCQkJCUZFQTA4NjIwMTgyQjdBMDQwMEY2RDg1
MSAvKiBCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzNTE3QURCNUYzMDA1
QUIxNzQgLyogQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNDczMyw3ICs0NzU5LDcg
QEAKIAkJCQlBMUEwMDlDMDE4MzFBMjJEMDBDRjg3MTEgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQzlEQzUxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVD
b2RlUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyODE4N0RGREVDMDA4M0I2ODcg
LyogRlRMQXZhaWxhYmxlUmVjb3ZlcnkuaCBpbiBIZWFkZXJzICovLAotICAgICAgICAgICAgICAg
IEE1OTNDRjg3MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggaW4g
SGVhZGVycyAqLywKKwkJCQlBNTkzQ0Y4NzE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdl
bnRSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNTZDMzYxNjI3QjBBRDAwN0YyNzgz
IC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0aWVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkZGQzk1ODE0RUY5MEEyMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2Uu
aCBpbiBIZWFkZXJzICovLApAQCAtNDg3Miw2ICs0ODk4LDcgQEAKIAkJCQkwRkVBMEExRDE3MDhC
MDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVB
MEExRjE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTU5NDU1OTMxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0
RGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdEODAxQTkxODgwRDZBODAwMjZDMzlC
IC8qIEpTQ0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEEwQTE3MDUxM0RCMDBC
QjcyMkMgLyogRlRMQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyQTE4
N0RGREVDMDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRUEwQTIzMTcwOTYwNjkwMEJCNzIyQyAvKiBGVExDb21tb25WYWx1ZXMuaCBpbiBIZWFkZXJz
ICovLApAQCAtNDk0Niw2ICs0OTczLDcgQEAKIAkJCQlCQzE4QzQwRjBFMTZGNUNEMDBCMzQ0NjAg
LyogSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzI1RjhCQ0UxNTc1NDRBOTAwMjQ1
QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTkx
NUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nSGVhZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlB
N0Q4MDFBNTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkI3RjM5QTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXJJbmxp
bmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5QjE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5k
ZXhpbmdUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNFRkFCMDE4MDVDQTZEMDA0NzJDRTQg
LyogSW5pdGlhbGl6ZUxMVk0uaCBpbiBIZWFkZXJzICovLApAQCAtNTIxOCw2ICs1MjQ2LDcgQEAK
IAkJCQlBNTMyNDM4ODE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0
Y2hlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDU2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBQ
cm90ZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc0QzMzQjE2QUEyRDk1MDA2MkYwMUQgLyog
UHJvdG90eXBlTWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzFEQTgwRjE4ODBEQkFCMDBEMUYy
OTkgLyogSlNTdHJpbmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMzJBNDE0Q0E3
REQ5MDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQ0Q0
QzIxNUYxQTYwNzAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4TW9kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJN0MwMDhDRTcxODc2MzFCNjAwOTU1QzI0IC8qIE1pY3JvdGFzay5oIGluIEhlYWRlcnMg
Ki8sCkBAIC01ODM2LDYgKzU4NjUsNyBAQAogCQkJCUE3RDg5Q0YyMTdBMEI4Q0MwMDc3M0FEOCAv
KiBERkdCYXNpY0Jsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MEIwODMyMTdBMEI3OUIw
MERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlD
RjMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUE3RDgwMUE0MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZFQzlEQzQxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5
dGVDb2RlUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDgyRTIxMTQxNzJDRTMwMDE3
OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGRkM5NTcx
NEVGOTBBMDAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTg1
Miw2ICs1ODgyLDcgQEAKIAkJCQkwRkZGQzk1OTE0RUY5MEE2MDBDNzI1MzIgLyogREZHQ1NFUGhh
c2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyRkM3NzIxNkUxMkY3MTAwMzhEOTc2IC8qIERG
R0RDRVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEYyQjk5MTcyRjA0RkYwMDdEQkRB
NSAvKiBERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTdEODAx
QTgxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE3M0UxMzMwMTc5NjI0Q0QwMEU0REVBOCAvKiBERkdEZXNpcmVkU3RydWN0dXJlQ2hhaW5zLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUMyQzBGN0NEMTdCQkZDNUIwMDQ2NEZFNCAvKiBERkdEZXNp
cmVkVHJhbnNpdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFODUzNEIxNzIzQ0RBNTAw
QjYxOEY1IC8qIERGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU5
NzYsNyArNjAwNyw3IEBACiAJCQkJMEY2QjFDQzUxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVud2lu
ZEluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5RDMzOUExODAzQURCNzAwNzNDMkJDIC8q
IEZUTFN0YWNrTWFwcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEExNjE3MDZCQjkwMDBC
QjcyMkMgLyogRlRMU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCi0gCQkJCTdDMDA4Q0QyMTg2RjhB
OTMwMDk1NUMyNCAvKiBKU1Byb21pc2VGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
N0MwMDhDRDIxODZGOEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjZCMUNCNTE4NUZDOUU5MDA4NDVEOTcgLyogRlRMSlNDYWxsLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGMjM1QkUxMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExUaHVua3Mu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5M0NGN0MxODQwMzYwMzAwQkZDRTI3IC8qIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKaW5kZXggYWYxNGUzM2VhYzA1OTdm
MmQ3OGM0YjNjZDE2MzU0MTFkYWJhOTY1ZS4uNjc5MjNmMDgyM2MyZmJhYjMxMTI4YWRiNTE5ZGM4
OWVhMDJiNjUwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9M
aW5rQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtC
dWZmZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNp
bmNsdWRlICJKSVRDb2RlLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNs
dWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlIDx3dGYvQ29tcGlsYXRp
b25UaHJlYWQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9B
cnJheS5wcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXku
cHJvdG90eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlYjQyZjVjYzQzM2YxNjM2MzQzYmZjOTgyYWEyYWFm
YjMzNmU5NDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQXJyYXkucHJvdG90eXBlLmpzCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlvbiBldmVyeShjYWxsYmFjayAvKiwg
dGhpc0FyZyAqLykgeworICAgICJ1c2Ugc3RyaWN0IjsKKyAgICBpZiAodGhpcyA9PT0gbnVsbCkK
KyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1
aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCIpOworICAgIAorICAgIGlmICh0aGlzID09PSB1
bmRlZmluZWQpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUu
ZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVmaW5lZCIpOworICAgIAorICAg
IHZhciBhcnJheSA9IEBPYmplY3QodGhpcyk7CisgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0
aCA+Pj4gMDsKKyAgICAKKyAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKQor
ICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxi
YWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOworCisgICAgdmFyIHRoaXNBcmcgPSBhcmd1bWVudHMu
bGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDsKKyAgICAKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmICghKGkgaW4gYXJyYXkpKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghY2FsbGJhY2suQGNhbGwodGhpc0Fy
ZywgYXJyYXlbaV0sIGksIGFycmF5KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQxZGJi
NWY5MjI1ZTI4YTEyZWQzZDE3OThmZjE3NjhlNDM2NzFhNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCkBAIC0w
LDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIK
KworI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisj
aW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKKyNpbmNsdWRlICJQYXJzZXIuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK0J1aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKFZN
JiB2bSkKKyAgICA6IG1fdm0odm0pCisjZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0Vf
TUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgLCBtXyMjbmFtZSMjU291cmNlKG1h
a2VTb3VyY2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoc18jI25hbWUsIGxlbmd0aCks
IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCI8YnVpbHRpbj4iKSkpCisgICAgSlNDX0ZP
UkVBQ0hfQlVJTFRJTihJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYg
RVhQT1NFX0JVSUxUSU5fU1RSSU5HUworeworfQorCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCit7CisgICAgSlNUZXh0UG9z
aXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZTsKKyAgICBQYXJzZXJFcnJvciBlcnJvcjsK
KyAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oJm1f
dm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBKU1BhcnNlQnVpbHRpbiwgSlNQYXJzZVByb2dy
YW1Db2RlLCBlcnJvciwgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOworCisgICAgaWYgKCFw
cm9ncmFtKSB7CisgICAgICAgIGRhdGFMb2coIkZhdGFsIGVycm9yIGNvbXBpbGluZyBidWlsdGlu
IGZ1bmN0aW9uICciLCBuYW1lLnN0cmluZygpLCAiJzogIiwgZXJyb3IubV9tZXNzYWdlKTsKKyAg
ICAgICAgQ1JBU0goKTsKKyAgICB9CisKKyAgICBTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVtZW50
ID0gcHJvZ3JhbS0+c2luZ2xlU3RhdGVtZW50KCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0
YXRlbWVudCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudC0+aXNFeHByU3RhdGVt
ZW50KCkpOworICAgIEV4cHJlc3Npb25Ob2RlKiBmdW5jRXhwciA9IHN0YXRpY19jYXN0PEV4cHJT
dGF0ZW1lbnROb2RlKj4oZXhwclN0YXRlbWVudCktPmV4cHIoKTsKKyAgICBSRUxFQVNFX0FTU0VS
VChmdW5jRXhwcik7CisgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHItPmlzRnVuY0V4cHJOb2Rl
KCkpOworICAgIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkgPSBzdGF0aWNfY2FzdDxGdW5jRXhwck5v
ZGUqPihmdW5jRXhwciktPmJvZHkoKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghcHJvZ3JhbS0+aGFz
Q2FwdHVyZWRWYXJpYWJsZXMoKSk7CisgICAgCisgICAgYm9keS0+c2V0RW5kUG9zaXRpb24ocG9z
aXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keSk7CisgICAg
UkVMRUFTRV9BU1NFUlQoYm9keS0+aWRlbnQoKS5pc051bGwoKSk7CisgICAgCisgICAgLy8gVGhp
cyBmdW5jdGlvbiBhc3N1bWVzIGFuIGlucHV0IHN0cmluZyB0aGF0IHdvdWxkIHJlc3VsdCBpbiBh
IHNpbmdsZSBhbm9ueW1vdXMgZnVuY3Rpb24gZXhwcmVzc2lvbi4KKyAgICBib2R5LT5zZXRFbmRQ
b3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKKyAgICBSRUxFQVNFX0FTU0VSVChi
b2R5KTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNsb3NlZFZhcmlhYmxlIDogcHJvZ3JhbS0+Y2xv
c2VkVmFyaWFibGVzKCkpIHsKKyAgICAgICAgaWYgKGNsb3NlZFZhcmlhYmxlID09IG1fdm0ucHJv
cGVydHlOYW1lcy0+YXJndW1lbnRzLmltcGwoKSkKKyAgICAgICAgY29udGludWU7CisgICAgICAg
IAorICAgICAgICBpZiAoY2xvc2VkVmFyaWFibGUgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT51bmRl
ZmluZWRLZXl3b3JkLmltcGwoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBSRUxF
QVNFX0FTU0VSVChjbG9zZWRWYXJpYWJsZS0+aXNFbXB0eVVuaXF1ZSgpKTsKKyAgICB9CisgICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJm1fdm0sIHNvdXJjZSwgYm9keSwgdHJ1ZSwgVW5s
aW5rZWRCdWlsdGluRnVuY3Rpb24pOworICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+bV9uYW1lVmFs
dWUuc2V0KG1fdm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwganNTdHJpbmcoJm1fdm0sIG5hbWUuc3Ry
aW5nKCkpKTsKKyAgICByZXR1cm4gZnVuY3Rpb25FeGVjdXRhYmxlOworfQorCisjZGVmaW5lIERF
RklORV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpuYW1lIyNFeGVj
dXRhYmxlKCkgXAore1wKKyAgICBpZiAoIW1fIyNuYW1lIyNFeGVjdXRhYmxlKVwKKyAgICAgICAg
bV8jI25hbWUjI0V4ZWN1dGFibGUgPSBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShtXyMjbmFtZSMj
U291cmNlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPmZ1bmN0aW9uTmFtZSk7XAorICAgIHJldHVybiBt
XyMjbmFtZSMjRXhlY3V0YWJsZS5nZXQoKTtcCit9CitKU0NfRk9SRUFDSF9CVUlMVElOKERFRklO
RV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX1NPVVJDRVMKKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRh
Ymxlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQ5YTE5ZTI2MTUwNzk0YTY2OWVjOThlMzk5YmY2N2Y3ZjcxMDY0
MTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbkV4ZWN1dGFibGVzLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQnVpbHRpbkV4ZWN1dGFibGVzX2gKKyNk
ZWZpbmUgQnVpbHRpbkV4ZWN1dGFibGVzX2gKKworI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisj
aW5jbHVkZSAiU291cmNlQ29kZS5oIgorI2luY2x1ZGUgIldlYWsuaCIKKyNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU7CitjbGFzcyBJZGVudGlmaWVyOworY2xhc3MgVk07CisKK2NsYXNzIEJ1aWx0
aW5FeGVjdXRhYmxlcyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8QnVpbHRpbkV4
ZWN1dGFibGVzPiBjcmVhdGUoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBCdWlsdGluRXhlY3V0YWJsZXModm0pKTsKKyAgICB9CisgICAgCisjZGVmaW5lIEVYUE9T
RV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCitjb25zdCBTb3Vy
Y2VDb2RlJiBuYW1lIyNTb3VyY2UoKSB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CisgICAg
CisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTihFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1
bmRlZiBFWFBPU0VfQlVJTFRJTl9TT1VSQ0VTCisgICAgCitwcml2YXRlOgorICAgIEJ1aWx0aW5F
eGVjdXRhYmxlcyhWTSYpOworICAgIFZNJiBtX3ZtOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShjb25zdCBTb3VyY2VDb2RlJiwgY29uc3Qg
SWRlbnRpZmllciYpOworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFt
ZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpXAorICAgIFNvdXJjZUNvZGUgbV8jI25hbWUjI1NvdXJj
ZTsgXAorICAgIFdlYWs8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+IG1fIyNuYW1lIyNFeGVj
dXRhYmxlOworICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4oREVDTEFSRV9CVUlMVElOX1NPVVJDRV9N
RU1CRVJTKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworfTsKKworfQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eVByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmls
ZS5jcHAKaW5kZXggNGMwNTVmZWE1NzM4ZjFjNDYzMjY2ZDRlOWE5MTU0OGExMjkzNDcwOS4uZWFl
ZmU1NGYyZDE1Mjg0YjY0YmY2OTk3MjY1OGNkMWM2M2I0ZWE3NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAK
ICNpbmNsdWRlICJBcnJheVByb2ZpbGUuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2lu
Y2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5o
PgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJp
bnRTdHJlYW0uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUJhc2ljQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlQmFzaWNCbG9jay5jcHAKaW5kZXggZDc0ODlkMzFhYmQ3Yzk5ZjFiYzZmYWZhZTY1ODEx
MTJhYmRhY2ZkYi4uMWEzYjVmNGM3ODA3Yjk0ODhmZjM2NTcyZjc5NGQwYmI5ZjM4ZDI1YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9j
ay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNC
bG9jay5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUJhc2ljQmxvY2su
aCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVz
LmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAKIG5hbWVzcGFjZSBKU0Mgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmNwcAppbmRleCA5MjYzMzRjNDQ0YzljMmYzZGZjYzk1MDEyY2QwYTRh
MDMxMDRkMmQ5Li5hZDRhZTIyOTVlYWM0OGFhNDBhZmJlZTNlYjY5Mjg5NmZjY2FiZDJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2Rl
VXNlRGVmLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRnVsbEJ5dGVjb2Rl
TGl2ZW5lc3MuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIlBy
ZWNpc2VKdW1wVGFyZ2V0cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKaW5kZXggNmE2MDA1NzZhMDAwYWRh
YzhhZjIxNGU5ODgxMzY0NjE5ZjI5YTAxMC4uNGJmODE4ODY2MDI4Yzc5NmE3MmU1NzgzMzJlNDY3
NzU1NmIyMzdhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxM
aW5rSW5mby5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkRGR09wZXJhdGlvbnMu
aCIKICNpbmNsdWRlICJERkdUaHVua3MuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5o
IgogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKIAogI2lmIEVOQUJMRShKSVQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDI2M2VjN2NhZGY0
Zjc5Y2E4MTAyNDQxZTYyYmYyYTA1YjVkZGMzZjIuLjc1MTUwNjU0MjM3NmQ3ZWRjNTk5YWEwMGY5
YjEyNjg1Y2RhMzUyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCkBAIC00MywxMSArNDMsMTMgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRl
ICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgotI2luY2x1ZGUgIkpTQ0pT
VmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkxMSW50RW50cnlw
b2ludC5oIgogI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJOYXRp
dmVFcnJvckNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5o
IgogI2luY2x1ZGUgIlJlZHVjZVdoaXRlc3BhY2UuaCIKQEAgLTE1NjksNyArMTU3MSw3IEBAIENv
ZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5s
aW5rZWRDb2RlQmxvY2sqIHVubGluCiAKICAgICBzZXRDb25zdGFudFJlZ2lzdGVycyh1bmxpbmtl
ZENvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcnMoKSk7CiAgICAgaWYgKHVubGlua2VkQ29kZUJs
b2NrLT51c2VzR2xvYmFsT2JqZWN0KCkpCi0gICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnNbdW5s
aW5rZWRDb2RlQmxvY2stPmdsb2JhbE9iamVjdFJlZ2lzdGVyKCkub2Zmc2V0KCldLnNldCgqbV92
bSwgb3duZXJFeGVjdXRhYmxlLCBtX2dsb2JhbE9iamVjdC5nZXQoKSk7CisgICAgICAgIG1fY29u
c3RhbnRSZWdpc3RlcnNbdW5saW5rZWRDb2RlQmxvY2stPmdsb2JhbE9iamVjdFJlZ2lzdGVyKCku
dG9Db25zdGFudEluZGV4KCldLnNldCgqbV92bSwgb3duZXJFeGVjdXRhYmxlLCBtX2dsb2JhbE9i
amVjdC5nZXQoKSk7CiAgICAgbV9mdW5jdGlvbkRlY2xzLnJlc2l6ZVRvRml0KHVubGlua2VkQ29k
ZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSk7CiAgICAgZm9yIChzaXplX3QgY291bnQg
PSB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCksIGkgPSAwOyBpIDwg
Y291bnQ7ICsraSkgewogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5r
ZWRFeGVjdXRhYmxlID0gdW5saW5rZWRDb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA2OGJjMDM3OWY1NzQ0
YzlhOGY3NDMxZGI2NGY4YWI1NGU2ZTEwNTNmLi40OTk1YzUyY2Y4YjJiMWI0ZDYyODA0NTNlZWQy
N2M3NzRhNDk1NThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCkBAIC01Niw3ICs1Niw2IEBACiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIKICNpbmNsdWRl
ICJPYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKLSNpbmNs
dWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHV0UHJvcGVydHlTbG90LmgiCiAjaW5jbHVk
ZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuY3BwCmluZGV4IGJlNTBjOTc3OGJmMzNlMzM5YWM4MzRiZjU2ZTNiMWU3NTU4
NmZlM2UuLmI3NjQ2ZWQxZWYxNjQxODlmY2ZjN2I1MzY1NmZiNjViZWQwNjRkMjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tKZXR0aXNvbmluZ1dh
dGNocG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRl
ICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdDb21tb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0
aW9uSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCmluZGV4IDY4ZGM2YjA1MzM1NTkwZWM0YzgxYzQy
MzQ2YmI3NGRiYmQ4ZmFjNTYuLjE1Nzg4MDg5MzRkZDNjYzRjZDk3ZDI3MWFlOGFjOGJmZTM5NzQ2
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2lu
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDb2Rl
QmxvY2suaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklu
bGluZXMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuY3Bw
CmluZGV4IDNhNjQ2YTg2YTk0OTE0M2VlMmNmMjMzYjI5YzhmMzgyMWFlOWYzMTEuLmJmYjUwNjEy
MGEyNzA1MTJlYjgxZDg0NGFjZWMyOTFlNzIwNDU0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0aW9uQ291bnRlci5jcHAKQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0
b3IuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9TdHJp
bmdFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5j
cHAKaW5kZXggMWFjNWJiNWEwNGY3NjA1ZDBkZGJjZGVmNjY0ZWQyN2M0ODIwNmU1NC4uZTAwNDJm
OTYyYjQzODE2ZDAwY2E2M2IzMmIyNTM0MzJmMmJjMTQyYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQ
cm9maWxlLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5j
bHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKaW5kZXggZWRlOGEzNjQzN2RkNzhjMmU0NmEyOWQ2YjNl
MDc5ZDNkMmQwZmVlZC4uYzk0MDIyZjk3ZmI4YmQ3OGNkYzVkMTM4ZTZkNWY3MGY0NmQ0ZDMyZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFy
Z2V0cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1w
VGFyZ2V0cy5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKIAorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVz
LmgiCisKIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZSA8c2l6ZV90IHZlY3RvclNpemU+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxv
Y2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcAppbmRleCA5ODZl
MDNkMGNiYTcxODViMzljZWUwMjNmNGFiNmJjOWI4Y2NiNmU0Li4yZjkwZmI2OWY4YzBiNjk5YWQx
MmFjNDYyMTFhMjljNGNhZmJiNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29u
aW5nV2F0Y2hwb2ludC5jcHAKQEAgLTMxLDYgKzMxLDggQEAKICNpbmNsdWRlICJDb2RlQmxvY2su
aCIKICNpbmNsdWRlICJERkdDb21tb24uaCIKICNpbmNsdWRlICJERkdFeGl0UHJvZmlsZS5oIgor
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGlu
ZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAKaW5kZXggZDE4ZGJjMWZmMWUwMTNlNmFkYTdmZjVkNDg3
MWZlYzEwODUxYTQ5Yi4uZjE4NDUzZTU2Njk2NDJlMTZlMTA0ZDJhOGQ0OTM2YWVlM2FkMzY2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAK
QEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIklu
dGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJP
cGNvZGUuaCIKIAogI2lmICFPUyhXSU5ET1dTKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHAKaW5kZXggNzc4OTY1M2YwNTRjYmUxZWRlNjJl
YjBiZWVmN2YxY2FmNjA0ZTAxZC4uMGRiMzU5ZGYzYzI5MDQyN2Q5NTI3MDhkYjE3ZTI1ZTc2YWZj
ZDU3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQ
b2ludGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBv
aW50ZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU3BlY2lhbFBvaW50ZXIuaCIK
IAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5n
V2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAKaW5kZXggNWNmYjNkMWU4ZjUyODVhYmE3MTk0OGY2
ZjNhMzBlZjVlY2VhYjZkZi4uZWM4NmE3MTgwY2Y1NDhkZjY0Njg3NDVmNmEyZjNkMDBkMWJiZmMz
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0
dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcApAQCAtMjksNiArMjksNyBA
QAogI2lmIEVOQUJMRShKSVQpCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJK
U0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAKIG5h
bWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggMWRmYjVhYzZhZDkwOTNmOGY4MTEwMWVmN2YyZTYx
MjMxMWFjMTkzOS4uNDMzOTBkOTY1ZmM1MDM0MDE2ZjdiZmZmMjNlNjhiYjFlMDU0NTUyYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCkBAIC00OSw5ICs0OSw5IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZFByb2dyYW1D
b2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayIsCiBjb25zdCBD
bGFzc0luZm8gVW5saW5rZWRFdmFsQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZEV2YWxD
b2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlu
a2VkRXZhbENvZGVCbG9jaykgfTsKIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrIiwgJkJhc2U6OnNf
aW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KSB9OwogCi1zdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlv
bkNvZGVCbG9jayhWTSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxl
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwg
RGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFy
c2VyRXJyb3ImIGVycm9yKQorc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVy
YXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxl
ck1vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVy
cm9yKQogewotICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBib2R5ID0gcGFyc2U8RnVuY3Rp
b25Cb2R5Tm9kZT4oJnZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0
YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpID8gSlNQYXJzZVN0
cmljdCA6IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VGdW5jdGlvbkNvZGUsIGVycm9yKTsKKyAgICBS
ZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSA9IHBhcnNlPEZ1bmN0aW9uQm9keU5vZGU+KCZ2
bSwgc291cmNlLCBleGVjdXRhYmxlLT5wYXJhbWV0ZXJzKCksIGV4ZWN1dGFibGUtPm5hbWUoKSwg
ZXhlY3V0YWJsZS0+dG9TdHJpY3RuZXNzKCksIEpTUGFyc2VGdW5jdGlvbkNvZGUsIGVycm9yKTsK
IAogICAgIGlmICghYm9keSkgewogICAgICAgICBBU1NFUlQoZXJyb3IubV90eXBlICE9IFBhcnNl
ckVycm9yOjpFcnJvck5vbmUpOwpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhWTSYgdm0sIFVubGlua2Vk
RnVuYwogICAgIGJvZHktPmZpbmlzaFBhcnNpbmcoZXhlY3V0YWJsZS0+cGFyYW1ldGVycygpLCBl
eGVjdXRhYmxlLT5uYW1lKCksIGV4ZWN1dGFibGUtPmZ1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2ds
ZSgpKTsKICAgICBleGVjdXRhYmxlLT5yZWNvcmRQYXJzZShib2R5LT5mZWF0dXJlcygpLCBib2R5
LT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKICAgICAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUoJnZtLCBG
dW5jdGlvbkNvZGUsIEV4ZWN1dGFibGVJbmZvKGJvZHktPm5lZWRzQWN0aXZhdGlvbigpLCBib2R5
LT51c2VzRXZhbCgpLCBib2R5LT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3Ry
dWN0KSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5m
byhib2R5LT5uZWVkc0FjdGl2YXRpb24oKSwgYm9keS0+dXNlc0V2YWwoKSwgYm9keS0+aXNTdHJp
Y3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlu
a2VkQnVpbHRpbkZ1bmN0aW9uKSk7CiAgICAgT3duUHRyPEJ5dGVjb2RlR2VuZXJhdG9yPiBnZW5l
cmF0b3IoYWRvcHRQdHIobmV3IEJ5dGVjb2RlR2VuZXJhdG9yKHZtLCBib2R5LmdldCgpLCByZXN1
bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlKSkpOwogICAgIGVycm9yID0gZ2VuZXJhdG9y
LT5nZW5lcmF0ZSgpOwogICAgIGJvZHktPmRlc3Ryb3lEYXRhKCk7CkBAIC04MiwxMyArODIsMTQg
QEAgdW5zaWduZWQgVW5saW5rZWRDb2RlQmxvY2s6OmFkZE9yRmluZENvbnN0YW50KEpTVmFsdWUg
dikKICAgICByZXR1cm4gYWRkQ29uc3RhbnQodik7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUs
IGJvb2wgaXNGcm9tR2xvYmFsQ29kZSkKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9t
R2xvYmFsQ29kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCkKICAgICA6IEJhc2UoKnZtLCBz
dHJ1Y3R1cmUpCiAgICAgLCBtX251bUNhcHR1cmVkVmFyaWFibGVzKG5vZGUtPmNhcHR1cmVkVmFy
aWFibGVDb3VudCgpKQogICAgICwgbV9mb3JjZVVzZXNBcmd1bWVudHMobm9kZS0+dXNlc0FyZ3Vt
ZW50cygpKQogICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChub2RlLT5pc1N0cmljdE1vZGUoKSkK
ICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMobm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMo
KSkKICAgICAsIG1faXNGcm9tR2xvYmFsQ29kZShpc0Zyb21HbG9iYWxDb2RlKQorICAgICwgbV9p
c0J1aWx0aW5GdW5jdGlvbihraW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uKQogICAgICwg
bV9uYW1lKG5vZGUtPmlkZW50KCkpCiAgICAgLCBtX2luZmVycmVkTmFtZShub2RlLT5pbmZlcnJl
ZE5hbWUoKSkKICAgICAsIG1fcGFyYW1ldGVycyhub2RlLT5wYXJhbWV0ZXJzKCkpCkBAIC0xNjYs
NyArMTY3LDcgQEAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OmNvZGVCbG9ja0ZvcihWTSYgdm0sIGNvbnMKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCi0gICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVGdW5j
dGlvbkNvZGVCbG9jayh2bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVn
Z2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jayogcmVzdWx0ID0gZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayh2bSwgdGhpcywgc291cmNl
LCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBpc0J1aWx0
aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1
bmN0aW9uLCBlcnJvcik7CiAgICAgCiAgICAgaWYgKGVycm9yLm1fdHlwZSAhPSBQYXJzZXJFcnJv
cjo6RXJyb3JOb25lKQogICAgICAgICByZXR1cm4gMDsKQEAgLTIxMCw2ICsyMTEsNyBAQCBVbmxp
bmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgQ29kZVR5cGUgY29kZQogICAgICwgbV9pc1N0cmljdE1vZGUoaW5mby5tX2lzU3RyaWN0
TW9kZSkKICAgICAsIG1faXNDb25zdHJ1Y3RvcihpbmZvLm1faXNDb25zdHJ1Y3RvcikKICAgICAs
IG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9u
KGluZm8ubV9pc0J1aWx0aW5GdW5jdGlvbikKICAgICAsIG1fZmlyc3RMaW5lKDApCiAgICAgLCBt
X2xpbmVDb3VudCgwKQogICAgICwgbV9lbmRDb2x1bW4oVUlOVF9NQVgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IGI5ZGFl
MmQ1YzY5Yzc5Y2VhYWE4MDIzZDJhM2ExZjI2ZDQ2MDk0M2IuLmFiZjZjZjM1YjkzMDZhNGY3YTMw
MWFiMGRmNzY2NmVjNjEyZTM3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC02NiwyNiArNjYsMzUgQEAgdHlwZWRlZiB1
bnNpZ25lZCBVbmxpbmtlZE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOwogdHlwZWRlZiB1bnNpZ25l
ZCBVbmxpbmtlZExMSW50Q2FsbExpbmtJbmZvOwogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewot
ICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBi
b29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yKQorICAgIEV4ZWN1dGFibGVJbmZv
KGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwg
Ym9vbCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKQogICAgICAgICA6IG1f
bmVlZHNBY3RpdmF0aW9uKG5lZWRzQWN0aXZhdGlvbikKICAgICAgICAgLCBtX3VzZXNFdmFsKHVz
ZXNFdmFsKQogICAgICAgICAsIG1faXNTdHJpY3RNb2RlKGlzU3RyaWN0TW9kZSkKICAgICAgICAg
LCBtX2lzQ29uc3RydWN0b3IoaXNDb25zdHJ1Y3RvcikKKyAgICAgICAgLCBtX2lzQnVpbHRpbkZ1
bmN0aW9uKGlzQnVpbHRpbkZ1bmN0aW9uKQogICAgIHsKICAgICB9Ci0gICAgYm9vbCBtX25lZWRz
QWN0aXZhdGlvbjsKLSAgICBib29sIG1fdXNlc0V2YWw7Ci0gICAgYm9vbCBtX2lzU3RyaWN0TW9k
ZTsKLSAgICBib29sIG1faXNDb25zdHJ1Y3RvcjsKKyAgICBib29sIG1fbmVlZHNBY3RpdmF0aW9u
IDogMTsKKyAgICBib29sIG1fdXNlc0V2YWwgOiAxOworICAgIGJvb2wgbV9pc1N0cmljdE1vZGUg
OiAxOworICAgIGJvb2wgbV9pc0NvbnN0cnVjdG9yIDogMTsKKyAgICBib29sIG1faXNCdWlsdGlu
RnVuY3Rpb24gOiAxOworfTsKKworZW51bSBVbmxpbmtlZEZ1bmN0aW9uS2luZCB7CisgICAgVW5s
aW5rZWROb3JtYWxGdW5jdGlvbiwKKyAgICBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwKIH07CiAK
IGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGljIEpTQ2VsbCB7CiBwdWJs
aWM6CisgICAgZnJpZW5kIGNsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlczsKICAgICBmcmllbmQgY2xh
c3MgQ29kZUNhY2hlOworICAgIGZyaWVuZCBjbGFzcyBWTTsKICAgICB0eXBlZGVmIEpTQ2VsbCBC
YXNlOwotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNKiB2
bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlLCBib29s
IGlzRnJvbUdsb2JhbENvZGUgPSBmYWxzZSkKKyAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rp
b25Cb2R5Tm9kZSogbm9kZSwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlLCBVbmxpbmtlZEZ1bmN0aW9u
S2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCkKICAgICB7Ci0gICAgICAgIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVhcCkpIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNv
dXJjZSwgbm9kZSwgaXNGcm9tR2xvYmFsQ29kZSk7CisgICAgICAgIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVhcCkpIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJj
ZSwgbm9kZSwgaXNGcm9tR2xvYmFsQ29kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQpOwogICAgICAg
ICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oKnZtKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNl
OwogICAgIH0KQEAgLTk5LDYgKzEwOCwxNCBAQCBwdWJsaWM6CiAgICAgfQogICAgIHNpemVfdCBw
YXJhbWV0ZXJDb3VudCgpIGNvbnN0OwogICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBjb25z
dCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0OyB9CisgICAgSlNQYXJzZXJTdHJpY3RuZXNz
IHRvU3RyaWN0bmVzcygpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9pc0J1aWx0aW5GdW5j
dGlvbikKKyAgICAgICAgICAgIHJldHVybiBKU1BhcnNlQnVpbHRpbjsKKyAgICAgICAgaWYgKG1f
aXNJblN0cmljdENvbnRleHQpCisgICAgICAgICAgICByZXR1cm4gSlNQYXJzZVN0cmljdDsKKyAg
ICAgICAgcmV0dXJuIEpTUGFyc2VOb3JtYWw7CisgICAgfQogICAgIEZ1bmN0aW9uTmFtZUlzSW5T
Y29wZVRvZ2dsZSBmdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGUoKSBjb25zdCB7IHJldHVybiBt
X2Z1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZTsgfQogCiAgICAgdW5zaWduZWQgZmlyc3RMaW5l
T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdExpbmVPZmZzZXQ7IH0KQEAgLTE0Miw4ICsx
NTksMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0ltbW9ydGFsU3RydWN0
dXJlID0gdHJ1ZTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCisgICAgYm9v
bCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247
IH0KKwogcHJpdmF0ZToKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVj
dHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbkJvZHlOb2RlKiwgYm9vbCBpc0Zyb21H
bG9iYWxDb2RlKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVjdHVy
ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbkJvZHlOb2RlKiwgYm9vbCBpc0Zyb21HbG9i
YWxDb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCk7CiAgICAgV3JpdGVCYXJyaWVyPFVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2s+IG1fY29kZUJsb2NrRm9yQ2FsbDsKICAgICBXcml0ZUJhcnJpZXI8
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3Q7CiAKQEAg
LTE1Miw2ICsxNzEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0luU3RyaWN0Q29udGV4dCA6
IDE7CiAgICAgYm9vbCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIDogMTsKICAgICBib29sIG1faXNG
cm9tR2xvYmFsQ29kZSA6IDE7CisgICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKIAog
ICAgIElkZW50aWZpZXIgbV9uYW1lOwogICAgIElkZW50aWZpZXIgbV9pbmZlcnJlZE5hbWU7CkBA
IC0zMTksNiArMzM5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNOdW1lcmljQ29tcGFyZUZ1
bmN0aW9uKGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKSB7IG1faXNOdW1lcmljQ29tcGFy
ZUZ1bmN0aW9uID0gaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CiAgICAgYm9vbCBpc051bWVy
aWNDb21wYXJlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzTnVtZXJpY0NvbXBhcmVGdW5j
dGlvbjsgfQogCisgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
aXNCdWlsdGluRnVuY3Rpb247IH0KKyAgICAKICAgICB2b2lkIHNocmlua1RvRml0KCkKICAgICB7
CiAgICAgICAgIG1fanVtcFRhcmdldHMuc2hyaW5rVG9GaXQoKTsKQEAgLTUwMCw2ICs1MjIsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1N0cmljdE1vZGUgOiAxOwogICAgIGJvb2wgbV9pc0Nv
bnN0cnVjdG9yIDogMTsKICAgICBib29sIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgOiAxOworICAg
IGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CiAgICAgdW5zaWduZWQgbV9maXJzdExpbmU7
CiAgICAgdW5zaWduZWQgbV9saW5lQ291bnQ7CiAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCmluZGV4IDY4MTBhYjgwMDJjZTZiYjhkNzhlN2ZmMjIyN2Y0YzZlYTdiNzU4
YzIuLmVjNTIxYjUzMDQ2MzkyM2U3NGMwMTBmYTIxOGU1OWVkMmE5YTNjYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCkBAIC0xNzUsNiArMTc1LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2Vu
ZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFAKICNlbmRp
ZgogICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKICAgICAsIG1fZXhwcmVzc2lvblRvb0Rl
ZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGZhbHNlKQogewogICAgIGlmICht
X3Nob3VsZEVtaXREZWJ1Z0hvb2tzKQogICAgICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNGdWxs
U2NvcGVDaGFpbih0cnVlKTsKQEAgLTIyMiw3ICsyMjMsMTMgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb25Cb2R5
LCBVbmwKICNlbmRpZgogICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKICAgICAsIG1fZXhw
cmVzc2lvblRvb0RlZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGNvZGVCbG9j
ay0+aXNCdWlsdGluRnVuY3Rpb24oKSkKIHsKKyAgICBpZiAobV9pc0J1aWx0aW5GdW5jdGlvbikg
eworICAgICAgICBtX3Nob3VsZEVtaXRQcm9maWxlSG9va3MgPSBmYWxzZTsKKyAgICAgICAgbV9z
aG91bGRFbWl0RGVidWdIb29rcyA9IGZhbHNlOworICAgIH0KKwogICAgIGlmIChtX3Nob3VsZEVt
aXREZWJ1Z0hvb2tzKQogICAgICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNGdWxsU2NvcGVDaGFp
bih0cnVlKTsKIApAQCAtNDM4LDYgKzQ0NSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kCiAj
ZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAgICAgLCBtX2V4cHJlc3Npb25U
b29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihmYWxzZSkKIHsKICAgICBt
X2NvZGVCbG9jay0+c2V0TmVlZHNGdWxsU2NvcGVDaGFpbih0cnVlKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmlu
ZGV4IDRlOWYyMTNjOWJmYTZjZjE5NGIxYTE0ZmU5MTllODMzMzdhZTM1ZDkuLjE1ODQyNzRiNzhl
YTZjMGJkMGVmYjBiOTgyNWM4MThiZTBkYmMwNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ2MSw3ICs0
NjEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBzaG91bGRFbWl0RGVidWdIb29r
cygpIHsgcmV0dXJuIG1fc2hvdWxkRW1pdERlYnVnSG9va3M7IH0KICAgICAgICAgCiAgICAgICAg
IGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzU3RyaWN0
TW9kZSgpOyB9Ci0KKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisgICAgICAgIAogICAgIHByaXZh
dGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMYWJlbDsKICAgICAgICAgCkBAIC01NDMsNyArNTQ1
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogbWFrZUZ1bmN0aW9uKEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRl
KG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgYm9keSk7CisgICAgICAgICAgICByZXR1cm4g
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291
cmNlKCksIGJvZHksIGZhbHNlLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGlu
RnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uKTsKICAgICAgICAgfQogCiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRJbml0TGF6eVJlZ2lzdGVyKFJlZ2lzdGVySUQqKTsKQEAgLTY3Nyw2
ICs2NzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIG1fdXNlc0V4Y2VwdGlv
bnM7CiAgICAgICAgIGJvb2wgbV9leHByZXNzaW9uVG9vRGVlcDsKKyAgICAgICAgYm9vbCBtX2lz
QnVpbHRpbkZ1bmN0aW9uOwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAxZmZkNGYzMTE4ODJkMGVl
NWM1NTE0ZjViOGIyNTkzOWQ5NzVlMzc5Li42MmVjYTM2YTEwZDc3MDhhOTI4ZDQzYWMwM2YyZmM4
NjE1Y2VjYTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0yNiwxMCArMjYsMTAgQEAKIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCi0jaW5jbHVkZSAiTm9kZUNvbnN0cnVjdG9ycy5oIgog
CiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIK
KyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAj
aW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtMzgsNiArMzgsNyBA
QAogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJMYWJlbFNjb3BlLmgiCiAjaW5j
bHVkZSAiTGV4ZXIuaCIKKyNpbmNsdWRlICJOb2RlQ29uc3RydWN0b3JzLmgiCiAjaW5jbHVkZSAi
T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFt
ZUFycmF5LmgiCkBAIC01MzUsMzYgKzUzNiwzOSBAQCBSZWdpc3RlcklEKiBDYWxsRnVuY3Rpb25D
YWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAg
ICAgUmVmUHRyPExhYmVsPiBlbmQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwogICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Np
b25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBm
dW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9u
KGRzdCksIGJhc2UuZ2V0KCksIG1faWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5j
dGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRz
dCksIGJhc2UuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuY2FsbCk7CiAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24o
ZHN0LCBmdW5jdGlvbi5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlv
bkNhbGwoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKKyAgICBib29sIGVtaXRDYWxs
Q2hlY2sgPSAhZ2VuZXJhdG9yLmlzQnVpbHRpbkZ1bmN0aW9uKCk7CisgICAgaWYgKGVtaXRDYWxs
Q2hlY2spCisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKGZ1bmN0
aW9uLmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7CisKICAgICB7CiAgICAgICAgIGlmIChtX2FyZ3Mt
Pm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpIHsKICAgICAgICAgICAg
IEFyZ3VtZW50TGlzdE5vZGUqIG9sZExpc3QgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CiAgICAgICAg
ICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKLQor
ICAgICAgICAgICAgCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9u
ID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFz
ZS5nZXQoKSk7CiAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJh
dG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVu
dHMudGhpc1JlZ2lzdGVyKCksIG9sZExpc3QtPm1fZXhwcik7CiAgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7Ci0KICAg
ICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9sZExpc3Q7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9y
LmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAg
ICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3Mp
OwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lz
dGVyKCksIGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJl
dHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwg
Y2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQot
ICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOwotICAgIHsKLSAgICAgICAg
Q2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAgICAgICAg
Z2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0
KCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0
aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRp
dm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0
TGFiZWwocmVhbENhbGwuZ2V0KCkpOworICAgICAgICB7CisgICAgICAgICAgICBDYWxsQXJndW1l
bnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwor
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlv
bi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICB9CisgICAgICAgIGdlbmVyYXRvci5lbWl0
TGFiZWwoZW5kLmdldCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0
KCkpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZS5nZXQoKTsKIH0KIApAQCAtNTg1LDY1ICs1ODks
NjcgQEAgUmVnaXN0ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICBSZWZQdHI8TGFiZWw+IGVuZCA9IGdl
bmVyYXRvci5uZXdMYWJlbCgpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJh
dG9yLmVtaXROb2RlKG1fYmFzZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhz
dWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25F
bmQoKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRH
ZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgbV9pZGVu
dCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uOwogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuY3Rp
b24uZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25BcHBseShmdW5j
dGlvbi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkpOwotICAgIHsKLSAgICAgICAgaWYgKG1heUJlQ2Fs
bCkgewotICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlz
dE5vZGUtPm1fZXhwcikgewotICAgICAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIG9sZExp
c3QgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7Ci0gICAgICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9s
aXN0Tm9kZS0+bV9uZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1f
bGlzdE5vZGUtPm1fbmV4dC0+bV9leHByLT5pc1NpbXBsZUFycmF5KCkpOwotICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoIW1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX25leHQpOwotICAg
ICAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBzdGF0aWNfY2FzdDxBcnJheU5v
ZGUqPihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByKS0+dG9Bcmd1bWVudExpc3Qo
Z2VuZXJhdG9yLnZtKCksIDAsIDApOwotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVz
dGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIENhbGxBcmd1
bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAgICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRM
aXN0LT5tX2V4cHIpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0
dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBj
YWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9k
ZSA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwotICAgICAgICAgICAgICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRv
ci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAg
IENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAgICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rl
cigpLCBvbGRMaXN0LT5tX2V4cHIpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1
bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUg
PSBvbGRMaXN0OworICAgIGJvb2wgZW1pdENhbGxDaGVjayA9ICFnZW5lcmF0b3IuaXNCdWlsdGlu
RnVuY3Rpb24oKTsKKyAgICBpZiAoZW1pdENhbGxDaGVjaykgeworICAgICAgICBmdW5jdGlvbiA9
IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJh
c2UuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYXBwbHkpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHkoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxs
LmdldCgpKTsKKyAgICB9CisgICAgaWYgKG1heUJlQ2FsbCkgeworICAgICAgICBpZiAobV9hcmdz
LT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKSB7CisgICAgICAgICAg
ICBBcmd1bWVudExpc3ROb2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgICAg
ICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KSB7CisgICAgICAgICAgICAgICAg
QVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHItPmlzU2ltcGxlQXJyYXko
KSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+
bV9uZXh0KTsKKyAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBzdGF0aWNfY2Fz
dDxBcnJheU5vZGUqPihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByKS0+dG9Bcmd1
bWVudExpc3QoZ2VuZXJhdG9yLnZtKCksIDAsIDApOworICAgICAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRl
bXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBDYWxsQXJn
dW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgICAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0
LT5tX2V4cHIpOworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1
ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1
bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG1fYXJncy0+bV9s
aXN0Tm9kZS0+bV9uZXh0OwogICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFs
RnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihk
c3QpLCBiYXNlLmdldCgpKTsKICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1
bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIo
KSwgb2xkTGlzdC0+bV9leHByKTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwo
cmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9u
LCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAg
ICAgICAgICAgfQorICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gb2xkTGlzdDsKICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYg
bV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHByb2ZpbGVIb29rUmVnaXN0ZXI7Ci0gICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLnNob3Vs
ZEVtaXRQcm9maWxlSG9va3MoKSkKLSAgICAgICAgICAgICAgICBwcm9maWxlSG9va1JlZ2lzdGVy
ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3Rp
bmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHRoaXNSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2FyZ3MtPm1fbGlzdE5vZGUtPm1f
ZXhwcik7Ci0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXJnc1JlZ2lzdGVyOwotICAg
ICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogYXJncyA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9u
ZXh0OwotICAgICAgICAgICAgaWYgKGFyZ3MtPm1fZXhwci0+aXNSZXNvbHZlTm9kZSgpICYmIGdl
bmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4o
YXJncy0+bV9leHByKS0+aWRlbnRpZmllcigpKSkKLSAgICAgICAgICAgICAgICBhcmdzUmVnaXN0
ZXIgPSBnZW5lcmF0b3IudW5jaGVja2VkUmVnaXN0ZXJGb3JBcmd1bWVudHMoKTsKLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUoYXJncy0+bV9leHByKTsKLQotICAgICAgICAgICAgLy8gRnVuY3Rpb24ucHJvdG90eXBlLmFw
cGx5IGlnbm9yZXMgZXh0cmEgYXJndW1lbnRzLCBidXQgd2Ugc3RpbGwKLSAgICAgICAgICAgIC8v
IG5lZWQgdG8gZXZhbHVhdGUgdGhlbSBmb3Igc2lkZSBlZmZlY3RzLgotICAgICAgICAgICAgd2hp
bGUgKChhcmdzID0gYXJncy0+bV9uZXh0KSkKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dE5vZGUoYXJncy0+bV9leHByKTsKLQotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsVmFy
YXJncyhyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCB0aGlzUmVnaXN0ZXIu
Z2V0KCksIGFyZ3NSZWdpc3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm9m
aWxlSG9va1JlZ2lzdGVyLmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OworICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9h
cmdzKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNS
ZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2Fs
bChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rp
b24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAg
ICAgICAgIH0KLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlz
dE5vZGUtPm1fbmV4dCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9maWxlSG9va1Jl
Z2lzdGVyOworICAgICAgICBpZiAoZ2VuZXJhdG9yLnNob3VsZEVtaXRQcm9maWxlSG9va3MoKSkK
KyAgICAgICAgICAgIHByb2ZpbGVIb29rUmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3Iu
ZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKKyAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9k
ZShtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcik7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBhcmdzUmVnaXN0ZXI7CisgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MgPSBtX2FyZ3Mt
Pm1fbGlzdE5vZGUtPm1fbmV4dDsKKyAgICAgICAgaWYgKGFyZ3MtPm1fZXhwci0+aXNSZXNvbHZl
Tm9kZSgpICYmIGdlbmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHN0YXRpY19jYXN0PFJl
c29sdmVOb2RlKj4oYXJncy0+bV9leHByKS0+aWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIGFy
Z3NSZWdpc3RlciA9IGdlbmVyYXRvci51bmNoZWNrZWRSZWdpc3RlckZvckFyZ3VtZW50cygpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUoYXJncy0+bV9leHByKTsKKworICAgICAgICAvLyBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkg
aWdub3JlcyBleHRyYSBhcmd1bWVudHMsIGJ1dCB3ZSBzdGlsbAorICAgICAgICAvLyBuZWVkIHRv
IGV2YWx1YXRlIHRoZW0gZm9yIHNpZGUgZWZmZWN0cy4KKyAgICAgICAgd2hpbGUgKChhcmdzID0g
YXJncy0+bV9uZXh0KSkKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShhcmdzLT5tX2V4
cHIpOworCisgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbFZhcmFyZ3MocmV0dXJuVmFsdWUuZ2V0
KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBhcmdzUmVnaXN0ZXIu
Z2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQo
KSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICB9Ci0gICAgZ2VuZXJh
dG9yLmVtaXRMYWJlbChyZWFsQ2FsbC5nZXQoKSk7Ci0gICAgeworICAgIGlmIChlbWl0Q2FsbENo
ZWNrKSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOworICAgICAgICBn
ZW5lcmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKICAgICAgICAgQ2FsbEFyZ3VtZW50
cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwogICAgICAg
ICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBO
b0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAg
ICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0KCkpOwogICAgIHJldHVybiByZXR1
cm5WYWx1ZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Ny
ZWF0ZV9oYXNoX3RhYmxlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxl
CmluZGV4IDM5Nzk3NmIwNmM3YTliNTgzNjMzMjkwMGE2ZWJiOTNlYzY4Yjc0ODYuLmNhZDY1YmM0
Y2M4ODhlMzE0Zjg4ZDY2NWRkNGE2ZTY0NWEwOWEzNTUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Y3JlYXRlX2hhc2hfdGFibGUKQEAgLTI4OSw3ICsyODksMTcgQEAgc3ViIG91dHB1dCgpIHsKICAg
ICAgICAgICAgICRpbnRyaW5zaWMgPSAiUmVnRXhwVGVzdEludHJpbnNpYyIgaWYgKCRrZXkgZXEg
InRlc3QiKTsKICAgICAgICAgfQogCisgICAgICAgIGlmICgkdmFsdWVzWyRpXXsidHlwZSJ9IGVx
ICJGdW5jdGlvbiIpICB7CisgICAgICAgICAgICBteSAkdGFibGVIZWFkID0gJG5hbWU7CisgICAg
ICAgICAgICAkdGFibGVIZWFkID1+IHMvVGFibGUkLy87CisgICAgICAgICAgICBwcmludCAiICNp
ZiBKU0NfQlVJTFRJTl9FWElTVFMoIiAuIHVjKCR0YWJsZUhlYWQgLiAka2V5KSAuIilcbiI7Cisg
ICAgICAgICAgICBwcmludCAiICAgeyBcIiRrZXlcIiwgKCgkYXR0cnNbJGldKSAmIH5GdW5jdGlv
bikgfCBCdWlsdGluLCAkaW50cmluc2ljLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8QnVpbHRpbkdl
bmVyYXRvcj4oIiAuICR0YWJsZUhlYWQgLiB1Y2ZpcnN0KCRrZXkpIC4gIkNvZGVHZW5lcmF0b3Ip
LCAoaW50cHRyX3QpJHNlY29uZFZhbHVlIH0sXG4iOworICAgICAgICAgICAgcHJpbnQgIiAjZWxz
ZVxuIgorICAgICAgICB9CiAgICAgICAgIHByaW50ICIgICB7IFwiJGtleVwiLCAkYXR0cnNbJGld
LCAkaW50cmluc2ljLCAoaW50cHRyX3QpIiAuICRmaXJzdENhc3RTdHIgLiAiKCRmaXJzdFZhbHVl
KSwgKGludHB0cl90KSIgLiAkc2Vjb25kQ2FzdFN0ciAuICIoJHNlY29uZFZhbHVlKSB9LFxuIjsK
KyAgICAgICAgaWYgKCR2YWx1ZXNbJGldeyJ0eXBlIn0gZXEgIkZ1bmN0aW9uIikgIHsKKyAgICAg
ICAgICAgIHByaW50ICIgI2VuZGlmXG4iCisgICAgICAgIH0KICAgICAgICAgJGkrKzsKICAgICB9
CiAgICAgcHJpbnQgIiAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIDAsIDAgfVxuIjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCmluZGV4IGFmYTc1NDZjODA2NWI4
ZjNiMTcwZGY4MWEzMzcyYThmMDY5YWRiNDEuLjNhMWFiM2VkNzY3YzFiY2QzZDg0MzUwZTFlMzA5
NmFjZjVhYTc4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2Vy
LmNwcApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgog
I2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
LSNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIK
ICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNp
bmNsdWRlICJQYXJzZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXZhaWxhYmlsaXR5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXZhaWxh
YmlsaXR5LmNwcAppbmRleCA2NjljMmI0MzkyNDZiMDdkZGI1N2QxMTc4ODMwMjlhODhkM2E0YWZm
Li5kMGJjZWQxY2ZiZDIzNzQ2NzkzN2VlMWI2N2Y5MzJhNjYzNzRmOGQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0F2YWlsYWJpbGl0eS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdmFpbGFiaWxpdHkuY3BwCkBAIC0yNiw2ICsyNiw4IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiREZHQXZhaWxhYmlsaXR5LmgiCiAKKyNp
bmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgorCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKICNp
bmNsdWRlICJERkdOb2RlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QmxvY2tJbnNlcnRpb25TZXQuY3BwCmluZGV4IDI1MmQ2MzhlZTEyZDBkMjI0NzNlNzdlNTRkZTc0
ODc1Y2YxYWViZTkuLjI1ZGVhNTQ5MDljNjIwMzM3YWM4MDc0ODRiOWFhYmRhOTc3NWFmM2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmxvY2tJbnNlcnRpb25TZXQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmxvY2tJbnNlcnRpb25TZXQu
Y3BwCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiREZH
QmxvY2tJbnNlcnRpb25TZXQuaCIKIAorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCisK
ICNpZiBFTkFCTEUoREZHX0pJVCkKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRl
eCA1OGYzNjkxNjUwZGZjNjRkNGNlNzU2YjAyNTZiYzlkMTVmZTk2NjZjLi5iYTQyOTdkYjQxMzQ1
OTJmNjhjN2MyMGMxZmZjM2RlNGExOWVmODg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUg
IkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiSlNB
Y3RpdmF0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJP
cGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAjaW5jbHVkZSAi
UHV0QnlJZFN0YXR1cy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDU0VQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNw
cAppbmRleCBkM2JmYzUwYmRlOGQ2ZDc4NDY4ZGZkMDdkZTM2YjllZmFhNWRiMWI3Li5iYWM5NmI3
NjVhYzY4NjE3YzEzMjkzNWZjZWYwYjYyMTc3ZmNmNTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NTRVBoYXNlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRGR0dy
YXBoLmgiCiAjaW5jbHVkZSAiREZHUGhhc2UuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgi
CisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlIDxhcnJheT4KICNpbmNs
dWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggZDFiZWI5MzEyNDU4YjUyOWI4ODhiMWMxOWVmZTVj
Y2JjNmIxNGJmYi4uMmM5NjE5ZTc4NTUzZTdkODAzZjBhYzQyOTEzOWRiZmRlMTgyMGQwZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbi5o
IgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMu
aCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbW1vbi5jcHAKaW5kZXggYWRiMDhiNTk1ZWQ0MWQzNDY4ZjJlYjFkODliODAw
ZjcxMGIwMzRhMy4uODczOGM1Y2RmY2NjZmRjN2M5ZjI2OTIyNjIxYWE1MzdmOTk3YjE2OSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmNwcApAQCAtMjksNiArMjksNyBAQAog
I2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVkZSAiREZHTm9kZS5oIgorI2luY2x1ZGUgIkpT
RnVuY3Rpb25JbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBXVEYgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbXBpbGF0aW9uS2V5LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29tcGlsYXRpb25LZXkuY3BwCmluZGV4IGQzMWFjOWUyZDU4YWQ1
ZmQyNmM5YzI3ZDU2ZDVkMjg0ODRkNWRjZjguLjA5ZjVlMGNhYmE1YTI5YmMyNzYyMjhlOTE2Yjhm
ODUzZDJlOGMwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29t
cGlsYXRpb25LZXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tcGls
YXRpb25LZXkuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiREZHQ29tcGlsYXRpb25L
ZXkuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25Jbmxp
bmVzLmgiCiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwCmluZGV4IGY2NTg3ZjQ3ZjA0OTFk
ZTU4NDY3YzQ3MzY0ZTY1MWU3ZmM2NDc2NDguLmYxMDEzYTNhODE5NTM2YzM3Y2ViOGFiOGQ2NDcz
MDBmNTI4NjQ5MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVz
aXJlZElkZW50aWZpZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rl
c2lyZWRJZGVudGlmaWVycy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoREZHX0pJ
VCkKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVz
LmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmNwcAppbmRleCAxMzVjYTg1ZmM5MTc3MDFlMzU1MjQ1YzliMDEwMGMy
MGZlZWI5YTcxLi42MGM0YWU0MmZlMmY0ZjEyNGUyNGI3ODU4YTJkYWIzNDdjYmM5ODg0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2lu
Y2x1ZGUgIkZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNs
dWRlICJKU0FjdGl2YXRpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIk1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiT3BlcmFu
ZHNJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnZhbGlkYXRpb25Qb2ludEluamVjdGlvblBoYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW52YWxpZGF0aW9uUG9pbnRJbmplY3Rp
b25QaGFzZS5jcHAKaW5kZXggZDcxYTdjYmRhYjc3NjIwMzMzYWQxN2VhYmQ3YmQwN2NlOWZiZTUy
OC4uYjU2NThjZTI2ZTQyZGMxMTdlYTJmNjdlMzFmMWIxNTYwYTUyYzVlYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnZhbGlkYXRpb25Qb2ludEluamVjdGlvblBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludmFsaWRhdGlvblBv
aW50SW5qZWN0aW9uUGhhc2UuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiREZHR3Jh
cGguaCIKICNpbmNsdWRlICJERkdJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJERkdQaGFzZS5o
IgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5o
IgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAyZmYwYzM0MTQ2ZTJjMGJhMmZmNzZjNGQz
ZjdjNDZiYTNlMjU1MTQ3Li45MDQ0Y2RjNmI4YzNhZDRhMWU5NDE4OGRkMWQwZTIwMGU2OWZiOTlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTQ4
LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJWTS5oIgog
I2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiTmFtZUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIK
ICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUt
anMtYnVpbHRpbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY0YjZkNDk5ZjAyNWMwNTNiMmY5N2I2ZjEwMGU4NTUw
NDZmM2U1MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0
ZS1qcy1idWlsdGlucwpAQCAtMCwwICsxLDMwNCBAQAorIyEvdXNyL2Jpbi9weXRob24KKyMgQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisj
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorIyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyMgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
IyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorIyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKK2ltcG9ydCBmaWxlY21wCitpbXBvcnQgZm5tYXRjaAoraW1wb3J0IG9zCitpbXBv
cnQgcmUKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzeXMKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0
IGpzb24KKworY29weXJpZ2h0VGV4dCA9ICIiIiAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovXG4KKyIiIgorCitnZW5lcmF0b3JTdHJpbmcgPSAiLyogR2VuZXJhdGVkIGJ5
ICVzIGRvIG5vdCBoYW5kIGVkaXQuICovXG4iICUgb3MucGF0aC5iYXNlbmFtZShfX2ZpbGVfXykK
KworZnVuY3Rpb25IZWFkUmVnRXhwID0gcmUuY29tcGlsZShyImZ1bmN0aW9uXHMrXHcrXHMqXCgu
Kj9cKSIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitmdW5jdGlvbk5hbWVSZWdFeHAgPSByZS5jb21w
aWxlKHIiZnVuY3Rpb25ccysoXHcrKVxzKlwoIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK2Z1bmN0
aW9uUGFyYW1ldGVyRmluZGVyID0gcmUuY29tcGlsZShyIl5mdW5jdGlvblxzKyg/Olx3Kylccypc
KCgoPzpccypcdyspP1xzKig/OlxzKixccypcdyspKik/XCkiLCByZS5NVUxUSUxJTkUgfCByZS5T
KQorCittdWx0aWxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwvXCouKj9cKlwvIiwg
cmUuTVVMVElMSU5FIHwgcmUuUykKK3NpbmdsZUxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGls
ZShyIlwvXC8uKj9cbiIsIHJlLk1VTFRJTElORSB8IHJlLlMpCisKK2RlZiBnZXRDb3B5cmlnaHQo
c291cmNlKToKKyAgICBjb3B5cmlnaHRCbG9jayA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAuZmlu
ZGFsbChzb3VyY2UpWzBdCisgICAgY29weXJpZ2h0QmxvY2sgPSBjb3B5cmlnaHRCbG9ja1s6Y29w
eXJpZ2h0QmxvY2suaW5kZXgoIlJlZGlzdHJpYnV0aW9uIildCisgICAgY29weVJpZ2h0TGluZXMg
PSBbXQorCisgICAgZm9yIGxpbmUgaW4gY29weXJpZ2h0QmxvY2suc3BsaXQoIlxuIik6CisgICAg
ICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIi8qIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJl
cGxhY2UoIiovIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIioiLCAiIikKKyAg
ICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiQ29weXJpZ2h0IiwgIiIpCisgICAgICAgIGxpbmUg
PSBsaW5lLnJlcGxhY2UoImNvcHlyaWdodCIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBs
YWNlKCIoQykiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKGMpIiwgIiIpCisg
ICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgaWYgbGVuKGxpbmUpID09IDA6Cisg
ICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIGNvcHlSaWdodExpbmVzLmFwcGVuZChsaW5l
KQorICAgIAorICAgIHJldHVybiBsaXN0KHNldChjb3B5UmlnaHRMaW5lcykpCisKKworCitkZWYg
Z2V0RnVuY3Rpb25zKHNvdXJjZSk6CisKKyAgICBzb3VyY2UgPSBtdWx0aWxpbmVDb21tZW50UmVn
RXhwLnN1YigiLyoqLyIsIHNpbmdsZUxpbmVDb21tZW50UmVnRXhwLnN1YigiLy9cbiIsIHNvdXJj
ZSkpCisKKyAgICBtYXRjaGVzID0gWyBmIGZvciBmIGluIGZ1bmN0aW9uSGVhZFJlZ0V4cC5maW5k
aXRlcihzb3VyY2UpXQorICAgIGZ1bmN0aW9uQm91bmRzID0gW10KKyAgICBzdGFydCA9IDAKKyAg
ICBlbmQgPSAwCisgICAgZm9yIG1hdGNoIGluIG1hdGNoZXM6CisgICAgICAgIHN0YXJ0ID0gbWF0
Y2guc3RhcnQoKQorICAgICAgICBpZiBzdGFydCA8IGVuZDoKKyAgICAgICAgICAgIGNvbnRpbnVl
CisgICAgICAgIGVuZCA9IG1hdGNoLmVuZCgpCisgICAgICAgIHdoaWxlIHNvdXJjZVtlbmRdICE9
ICd7JzoKKyAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgZGVwdGggPSAxCisgICAg
ICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgd2hpbGUgZGVwdGggPiAwOgorICAgICAgICAgICAg
aWYgc291cmNlW2VuZF0gPT0gJ3snOgorICAgICAgICAgICAgICAgIGRlcHRoID0gZGVwdGggKyAx
CisgICAgICAgICAgICBlbGlmIHNvdXJjZVtlbmRdID09ICd9JzoKKyAgICAgICAgICAgICAgICBk
ZXB0aCA9IGRlcHRoIC0gMQorICAgICAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICBmdW5j
dGlvbkJvdW5kcy5hcHBlbmQoKHN0YXJ0LCBlbmQpKQorCisgICAgZnVuY3Rpb25zID0gW3NvdXJj
ZVtzdGFydDplbmRdLnN0cmlwKCkgZm9yIChzdGFydCwgZW5kKSBpbiBmdW5jdGlvbkJvdW5kc10K
KyAgICByZXN1bHQgPSBbXQorICAgIGZvciBmdW5jdGlvbiBpbiBmdW5jdGlvbnM6CisgICAgICAg
IGZ1bmN0aW9uID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5zdWIoIiIsIGZ1bmN0aW9uKQorICAg
ICAgICBmdW5jdGlvbk5hbWUgPSBmdW5jdGlvbk5hbWVSZWdFeHAuZmluZGFsbChmdW5jdGlvbilb
MF0KKyAgICAgICAgZnVuY3Rpb25QYXJhbWV0ZXJzID0gZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIu
ZmluZGFsbChmdW5jdGlvbilbMF0uc3BsaXQoJywnKQorICAgICAgICBpZiBsZW4oZnVuY3Rpb25Q
YXJhbWV0ZXJzWzBdKSA9PSAwOgorICAgICAgICAgICAgZnVuY3Rpb25QYXJhbWV0ZXJzID0gW10K
KyAgICAgICAgICAgIAorICAgICAgICByZXN1bHQuYXBwZW5kKChmdW5jdGlvbk5hbWUsIGZ1bmN0
aW9uLCBmdW5jdGlvblBhcmFtZXRlcnMpKQorICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgCisK
K2RlZiBnZW5lcmF0ZUNvZGUoc291cmNlKToKKyAgICBpbnB1dEZpbGUgPSBvcGVuKHNvdXJjZSwg
InIiKQorICAgIGJhc2VOYW1lID0gb3MucGF0aC5iYXNlbmFtZShzb3VyY2UpLnJlcGxhY2UoIi5q
cyIsICIiKQorICAgIAorICAgIHNvdXJjZSA9ICIiCisgICAgZm9yIGxpbmUgaW4gaW5wdXRGaWxl
OgorICAgICAgICBzb3VyY2UgPSBzb3VyY2UgKyBsaW5lCisgICAgCisgICAgaWYgc3lzLnBsYXRm
b3JtID09ICJjeWd3aW4iOgorICAgICAgICBzb3VyY2UgPSBzb3VyY2UucmVwbGFjZSgiXHJcbiIs
ICJcbiIpCisgICAgcmV0dXJuIChiYXNlTmFtZSwgZ2V0RnVuY3Rpb25zKHNvdXJjZSksIGdldENv
cHlyaWdodChzb3VyY2UpKQorCitkZWYgbWFuZ2xlTmFtZShvYmplY3QsIG5hbWUpOgorICAgIHFO
YW1lID0gb2JqZWN0ICsgIi4iICsgbmFtZQorICAgIG1hbmdsZWROYW1lID0gIiIKKyAgICBpID0g
MAorICAgIHdoaWxlIGkgPCBsZW4ocU5hbWUpOgorICAgICAgICBpZiBxTmFtZVtpXSA9PSAnLic6
CisgICAgICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lICsgcU5hbWVbaSArIDFdLnVw
cGVyKCkKKyAgICAgICAgICAgIGkgPSBpICsgMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
bWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZSArIHFOYW1lW2ldCisgICAgICAgIGkgPSBpICsgMQor
ICAgIHJldHVybiBtYW5nbGVkTmFtZQorCitidWlsdGlucyA9IFtdCisKK2Jhc2VOYW1lID0gc3lz
LmFyZ3ZbLTFdCitidWlsdGluX2RlZmluaXRpb25zID0gc3lzLmFyZ3ZbMTotMV0KKyhvdXRwdXRf
YmFzZSwgXykgPSBvcy5wYXRoLnNwbGl0ZXh0KHN5cy5hcmd2Wy0xXSkKKworY29weXJpZ2h0cyA9
IFtdCitmb3IgZmlsZSBpbiBidWlsdGluX2RlZmluaXRpb25zOgorICAgIGlmIGZubWF0Y2guZm5t
YXRjaChmaWxlLCAnKi5qcycpOgorICAgICAgICAoYmFzZU5hbWUsIGZ1bmN0aW9ucywgb2JqZWN0
Q29weXJpZ2h0cykgPSBnZW5lcmF0ZUNvZGUoZmlsZSkKKyAgICAgICAgY29weXJpZ2h0cy5leHRl
bmQob2JqZWN0Q29weXJpZ2h0cykKKyAgICAgICAgYnVpbHRpbnMuYXBwZW5kKChiYXNlTmFtZSwg
ZnVuY3Rpb25zKSkKKworY29weXJpZ2h0cyA9IGxpc3Qoc2V0KGNvcHlyaWdodHMpKQorCitjb3B5
cmlnaHRCb2R5ID0gIiIKK2ZvciBjb3B5cmlnaHQgaW4gY29weXJpZ2h0czoKKyAgICBjb3B5cmln
aHRCb2R5ID0gY29weXJpZ2h0Qm9keSArIiAqIENvcHlyaWdodCAoQykgIiArIGNvcHlyaWdodCAr
ICJcbiIKKworYnVpbHRpbnNIZWFkZXIgPSBvcGVuKG91dHB1dF9iYXNlICsgIi5oLnRtcCIsICJ3
IikKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24gPSBvcGVuKG91dHB1dF9iYXNlICsgIi5jcHAudG1w
IiwgInciKQorY29weXJpZ2h0VGV4dCA9ICIvKlxuIiArIGNvcHlyaWdodEJvZHkgKyBjb3B5cmln
aHRUZXh0CitidWlsdGluc0hlYWRlci53cml0ZSgiIiIlcworJXMKKworI2lmbmRlZiBKU0NCdWls
dGluc19ICisjZGVmaW5lIEpTQ0J1aWx0aW5zX0gKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIElkZW50aWZpZXI7CitjbGFzcyBKU0dsb2JhbE9i
amVjdDsKK2NsYXNzIFNvdXJjZUNvZGU7CitjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTsKK2NsYXNzIFZNOworCitGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0aW5FeGVjdXRh
YmxlKFZNJiwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCBjb25zdCBTb3VyY2VDb2RlJik7
CisKKyIiIiAlIChnZW5lcmF0b3JTdHJpbmcsIGNvcHlyaWdodFRleHQpKQorCitjb2RlUmVmZXJl
bmNlcyA9IFtdCisKK2ZvciAob2JqZWN0TmFtZSwgZnVuY3Rpb25zKSBpbiBidWlsdGluczoKKyAg
ICBwcmludCgiR2VuZXJhdGluZyBiaW5kaW5ncyBmb3IgdGhlICVzIGJ1aWx0aW4uIiAlIG9iamVj
dE5hbWUpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIi8qICVzIGZ1bmN0aW9ucyAqL1xuIiAl
IG9iamVjdE5hbWUpCisgICAgZm9yIChuYW1lLCBpbXBsZW1lbnRhdGlvbiwgXykgaW4gZnVuY3Rp
b25zOgorICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZU5hbWUob2JqZWN0TmFtZSwgbmFtZSkK
KyAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZVswXS5sb3dlcigpICsgbWFuZ2xlZE5h
bWVbMTpdICsgIkNvZGUiCisgICAgICAgIGNvZGVSZWZlcmVuY2VzLmFwcGVuZCgobWFuZ2xlZE5h
bWUsIG5hbWUsIGltcGxlbWVudGF0aW9uKSkKKyAgICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUo
ImV4dGVybiBjb25zdCBjaGFyKiBzXyVzO1xuIiAlIG1hbmdsZWROYW1lKQorICAgICAgICBidWls
dGluc0hlYWRlci53cml0ZSgiZXh0ZXJuIGNvbnN0IGludCBzXyVzTGVuZ3RoO1xuIiAlIG1hbmds
ZWROYW1lKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJcbiIpCisgICAgYnVpbHRpbnNIZWFk
ZXIud3JpdGUoIiNkZWZpbmUgSlNDX0ZPUkVBQ0hfJXNfQlVJTFRJTihtYWNybykgXFxcbiIgJSBv
YmplY3ROYW1lLnJlcGxhY2UoIi4iLCAiXyIpLnVwcGVyKCkpCisgICAgZm9yIChuYW1lLCBpbXBs
ZW1lbnRhdGlvbiwgYXJndW1lbnRzKSBpbiBmdW5jdGlvbnM6CisgICAgICAgIG1hbmdsZWROYW1l
ID0gbWFuZ2xlTmFtZShvYmplY3ROYW1lLCBuYW1lKQorICAgICAgICBidWlsdGluc0hlYWRlci53
cml0ZSgiICAgIG1hY3JvKCVzLCAlcywgJWQpIFxcXG4iICUgKG5hbWUsIG1hbmdsZWROYW1lLCBs
ZW4oYXJndW1lbnRzKSkpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuIikKKyAgICBmb3Ig
KG5hbWUsIGltcGxlbWVudGF0aW9uLCBhcmd1bWVudHMpIGluIGZ1bmN0aW9uczoKKyAgICAgICAg
YnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0JVSUxUSU5fJXMgMVxuIiAlIG1hbmds
ZU5hbWUob2JqZWN0TmFtZSwgbmFtZSkudXBwZXIoKSkKKyAgICBidWlsdGluc0hlYWRlci53cml0
ZSgiXG5cbiIpCituYW1lcyA9IFtdCitidWlsdGluc0hlYWRlci53cml0ZSgiI2RlZmluZSBKU0Nf
Rk9SRUFDSF9CVUlMVElOKG1hY3JvKVxcXG4iKQorZm9yIChjb2RlUmVmZXJlbmNlLCBmdW5jdGlv
bk5hbWUsIHNvdXJjZSkgaW4gY29kZVJlZmVyZW5jZXM6CisgICAgYnVpbHRpbnNIZWFkZXIud3Jp
dGUoIiAgICBtYWNybyglcywgJXMsIHNfJXNMZW5ndGgpIFxcXG4iICUgKGNvZGVSZWZlcmVuY2Us
IGZ1bmN0aW9uTmFtZSwgY29kZVJlZmVyZW5jZSkpCisgICAgbmFtZXMuYXBwZW5kKGZ1bmN0aW9u
TmFtZSkKKworYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuXG4iKQorYnVpbHRpbnNIZWFkZXIud3Jp
dGUoIiNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKG1hY3JvKSBcXFxu
IikKK2ZvciBuYW1lIGluIHNvcnRlZChzZXQobmFtZXMpKToKKyAgICBidWlsdGluc0hlYWRlci53
cml0ZSgiICAgIG1hY3JvKCVzKSBcXFxuIiAlIG5hbWUpCitidWlsdGluc0hlYWRlci53cml0ZSgi
IiIKKworI2RlZmluZSBKU0NfREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVu
Y3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAorICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogY29k
ZU5hbWUjI0dlbmVyYXRvcihWTSYpOworCitKU0NfRk9SRUFDSF9CVUlMVElOKEpTQ19ERUNMQVJF
X0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIEpTQ19ERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9S
CisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fRVhJU1RTKG5hbWUpIGRlZmluZWQoSlNDX0JVSUxUSU5f
IyNuYW1lKQorCit9CisKKyNlbmRpZgorCisiIiIpCisKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24u
d3JpdGUoIiIiJXMKKyVzCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkpTQ0J1
aWx0aW5zLmgiCisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJF
eGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlZNLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCisiIiIgICUgKGdlbmVyYXRvclN0cmluZywgY29weXJpZ2h0
VGV4dCkpCisKK2ZvciAoY29kZVJlZmVyZW5jZSwgbmFtZSwgc291cmNlKSBpbiBjb2RlUmVmZXJl
bmNlczoKKyAgICBzb3VyY2UgPSAiKGZ1bmN0aW9uICIgKyBzb3VyY2Vbc291cmNlLmluZGV4KCIo
Iik6XSArICIpIgorICAgIGxpbmVzID0ganNvbi5kdW1wcyhzb3VyY2UpWzE6LTFdLnNwbGl0KCJc
XG4iKQorICAgIHNvdXJjZUxlbmd0aCA9IGxlbihzb3VyY2UpCisgICAgc291cmNlID0gIiIKKyAg
ICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgc291cmNlID0gc291cmNlICsgKCIgICAgXCIl
c1xcblwiIFxcXG4iICUgbGluZSkKKyAgICBidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCJj
b25zdCBjaGFyKiBzXyVzID1cbiVzO1xuXG4iICUgKGNvZGVSZWZlcmVuY2UsIHNvdXJjZSkpCisg
ICAgYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiY29uc3QgaW50IHNfJXNMZW5ndGggPSAl
ZDtcblxuIiAlIChjb2RlUmVmZXJlbmNlLCBzb3VyY2VMZW5ndGggKyAxKSkgIyArIDEgZm9yIFxu
CisKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoIiIiCitGdW5jdGlvbkV4ZWN1dGFibGUq
IGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKFZNJiB2bSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIHVubGlua2VkRXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQoreworICAg
IHVuc2lnbmVkIGxpbmVDb3VudCA9IHVubGlua2VkRXhlY3V0YWJsZS0+bGluZUNvdW50KCk7Cisg
ICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSAxOworICAgIHVuc2lnbmVkIHNvdXJjZUxlbmd0aCA9
IHVubGlua2VkRXhlY3V0YWJsZS0+c291cmNlTGVuZ3RoKCk7CisgICAgYm9vbCBlbmRDb2x1bW5J
c09uU3RhcnRMaW5lID0gIWxpbmVDb3VudDsKKyAgICB1bnNpZ25lZCBlbmRDb2x1bW5FeGNsdWRp
bmdCcmFjZXMgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnVubGlua2VkQm9keUVuZENvbHVtbigpICsg
KGVuZENvbHVtbklzT25TdGFydExpbmUgPyAwIDogMSk7CisgICAgdW5zaWduZWQgc3RhcnRPZmZz
ZXQgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnN0YXJ0T2Zmc2V0KCk7CisgICAgdW5zaWduZWQgc3Rh
cnRPZmZzZXRFeGNsdWRpbmdPcGVuQnJhY2UgPSBzdGFydE9mZnNldCArIDE7CisgICAgdW5zaWdu
ZWQgZW5kT2Zmc2V0RXhjbHVkaW5nQ2xvc2VCcmFjZSA9IHN0YXJ0T2Zmc2V0ICsgc291cmNlTGVu
Z3RoIC0gMTsKKyAgICBTb3VyY2VDb2RlIGJvZHlTb3VyY2Uoc291cmNlLnByb3ZpZGVyKCksIHN0
YXJ0T2Zmc2V0RXhjbHVkaW5nT3BlbkJyYWNlLCBlbmRPZmZzZXRFeGNsdWRpbmdDbG9zZUJyYWNl
LCAwLCBzdGFydENvbHVtbik7CisgICAgcmV0dXJuIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRl
KHZtLCBib2R5U291cmNlLCB1bmxpbmtlZEV4ZWN1dGFibGUsIDAsIGxpbmVDb3VudCwgc3RhcnRD
b2x1bW4sIGVuZENvbHVtbkV4Y2x1ZGluZ0JyYWNlcywgZmFsc2UpOworfQorCisjZGVmaW5lIEpT
Q19ERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1l
bnRDb3VudCkgXFwKK0Z1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihWTSYg
dm0pIFxcCit7IFxcCisgICAgcmV0dXJuIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKHZtLCB2bS5i
dWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKSwgdm0uYnVpbHRpbkV4
ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IFxcCit9CisKK0pTQ19GT1JFQUNIX0JV
SUxUSU4oSlNDX0RFRklORV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBKU0NfREVGSU5FX0JV
SUxUSU5fR0VORVJBVE9SCit9CisKKyIiIikKKworYnVpbHRpbnNIZWFkZXIuY2xvc2UoKQorYnVp
bHRpbnNJbXBsZW1lbnRhdGlvbi5jbG9zZSgpCisKK2lmIChub3Qgb3MucGF0aC5leGlzdHMob3V0
cHV0X2Jhc2UgKyAiLmgiKSkgb3IgKG5vdCBmaWxlY21wLmNtcChvdXRwdXRfYmFzZSArICIuaC50
bXAiLCBvdXRwdXRfYmFzZSArICIuaCIsIHNoYWxsb3c9RmFsc2UpKToKKyAgICBvcy5yZW5hbWUo
b3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmgiKQorZWxzZToKKyAgICBv
cy5yZW1vdmUob3V0cHV0X2Jhc2UgKyAiLmgudG1wIikKKworaWYgKG5vdCBvcy5wYXRoLmV4aXN0
cyhvdXRwdXRfYmFzZSArICIuY3BwIikpIG9yIChub3QgZmlsZWNtcC5jbXAob3V0cHV0X2Jhc2Ug
KyAiLmNwcC50bXAiLCBvdXRwdXRfYmFzZSArICIuY3BwIiwgc2hhbGxvdz1GYWxzZSkpOgorICAg
IG9zLnJlbmFtZShvdXRwdXRfYmFzZSArICIuY3BwLnRtcCIsIG91dHB1dF9iYXNlICsgIi5jcHAi
KQorZWxzZToKKyAgICBvcy5yZW1vdmUob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXgg
Y2E4OTBiMDZlYTMzZmE5ZTdmMWZhNTFhMzVlYTJkNDhkMDA5YTM4YS4uNmM5YmY5NmMxNWY2MDll
MjY1Y2UyNTBhNDViZjA4NjFkMDZjZDFmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVk
ZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTU3RhY2tJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNp
bmNsdWRlICJKU1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIkxMSW50Q0xvb3AuaCIKICNpbmNsdWRl
ICJMTEludFRodW5rcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAKaW5kZXggZjBlMDJiYTRlNDc2Zjk5Y2M5MTNiMDQ2MmFk
Mjc5NTAwNjA5ZmEzYS4uMWMyNDBkY2Q3MWJlNTI5ZDg4Y2JmNDYxZDE4NjhmNWViMmIwMmFkNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZy
YW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxs
RnJhbWUuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIK
IAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCBjYTdhZDExZjJlMGI4YTNiOGIx
ODU4OTFkN2U1MjJiYWU0MDNhMjM2Li5jYjU1MDdiZWFjNTViZjhlYjFiMzdlYzkwZmNhYjE5MzRm
YjQ4ZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMzMl82NC5jcHAKaW5kZXggOThkMTBhM2Y0ZGNiMTJkODlmMzdhMTJmMjI2MDRiOTQ2ZTA4
ZTYyNy4uZGQwMzUzNzc5ZThiZGY5OGY0NjU4YTMwN2UzMmQwNmU0NzI0NDE1OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAppbmRleCA5MjhkZDUwZmIwMTZlMjcxNjQ0YTU3NWUzMGFiNWYyNTE2ZWI1MGVjLi45
MDg4YjdmYjJmYjdhZDAxMzgwNmVmNDliNWFmNDIwZmE2NDg0MDdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTQxLDYgKzQxLDggQEAKICNpbmNs
dWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25XcmFwcGVycy5oIgogI2luY2x1ZGUg
IkpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNp
bmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDI2ZGQ0ZDFhZjc0NWFmYTFmYmM1
M2E5YzAyM2E2ZTQ3NDFhNjZhMDkuLmRmMWJkM2E5Y2ZhNDAyYzUyYTUyMTFjZjFhY2NlNjdkNTEy
MWI3ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCkBAIC0yOSwxMSArMjksMTMgQEAKICNpbmNsdWRlICJKSVQuaCIKIAogI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAi
R0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5j
bHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKICNpbmNsdWRl
ICJKU1ZhcmlhYmxlT2JqZWN0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCBkMThmZWE3MTVjYjAzYjM3YWE5MjZk
ODQ5YThlNWFiOTU2M2VjZDNkLi4zMjYxYjNhZjZlZWFiZDZmMjZhNDNhMDhkMjA0YmM2MmIwNjU4
OWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJJbnRlcnByZXRlci5o
IgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVk
ZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTVmFyaWFibGVPYmplY3Qu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggNDA3ODRiNDk0MzFmZTAyZThlNDUyMmYxNjMwOGM5
MDI0NzE2ZDIzNi4uMmY3OTU1NTRiMDkxZGVlYmJjMDNiZjJiZThjNzRmNDFhZTU0MWVkNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJKU0xvY2suaCIK
ICNpbmNsdWRlICJKU1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJK
U1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiU2Ft
cGxpbmdUb29sLmgiCiAjaW5jbHVkZSAiU3RhY2tWaXNpdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCmluZGV4IDYw
NGNjMjYzY2Y5N2UwODZmZWQwNmVjOTAzYjBlYzE5ODNlNzgxMzcuLjgxNjZlN2Y4MWZhODlhN2Q0
ZjUwYzVmMWE5NGZhOTY4YzVkNTdlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAj
aW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlND
ZWxsLmgiCi0jaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25Jbmxp
bmVzLmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcAppbmRleCA2NjQ0NGJhYTA4YjU2MmRkNjk3ZTBjY2Q3NzIxZTU1YzE1YmE0
OTEzLi44M2UwMWViYWZkYTI3N2UyNWQ4Y2YwYjBjZTY2YmQ5MWU1NWM0NjhiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTQwLDcgKzQw
LDggQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCiAjaW5j
bHVkZSAiSlNBY3RpdmF0aW9uLmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUg
IkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3Bl
LmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCA4ZWMxZmQzMmEzYWRhMjJlMTI1MjI5NTcw
ZGNmN2ZmMjhlYWJmMWVkLi40NmE3Yzc2YjJmOTAxZmMzY2MzNmQxY2UwYzA3MzUzZWIwNmIyZjVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtODg4LDkg
Kzg4OCw5IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uCiAgICAgQVNTRVJUKGZ1bmMtPmlzRG90
QWNjZXNzb3JOb2RlKCkpOwogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8
RG90QWNjZXNzb3JOb2RlKj4oZnVuYyk7CiAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZSogbm9kZTsK
LSAgICBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y2FsbCkK
KyAgICBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y2FsbCB8
fCBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5jYWxsUHJpdmF0ZU5h
bWUpCiAgICAgICAgIG5vZGUgPSBuZXcgKG1fdm0pIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGxv
Y2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZv
dFN0YXJ0LCBkaXZvdEVuZCk7Ci0gICAgZWxzZSBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92
bS0+cHJvcGVydHlOYW1lcy0+YXBwbHkpCisgICAgZWxzZSBpZiAoZG90LT5pZGVudGlmaWVyKCkg
PT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXBwbHkgfHwgZG90LT5pZGVudGlmaWVyKCkgPT0gbV92
bS0+cHJvcGVydHlOYW1lcy0+YXBwbHlQcml2YXRlTmFtZSkKICAgICAgICAgbm9kZSA9IG5ldyAo
bV92bSkgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90
LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiAgICAg
ZWxzZQogICAgICAgICBub2RlID0gbmV3IChtX3ZtKSBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0
aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0
YXJ0LCBkaXZvdEVuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4
IGNhNGJiNGYwYWRlOGQ2YmM4MjY5MWE2YzAwMDE0Y2YxOThiZDg4YmQuLmNjYjA3OWQ5NzVhMTQx
YzVjNGIyZDdiNjIzMTMwMDA3MDk3Nzc4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
TGV4ZXIuY3BwCkBAIC0yNSwxMCArMjUsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJMZXhlci5oIgogCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKKyNpbmNsdWRl
ICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKLQogI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCi0jaW5jbHVkZSAiSWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIk5vZGVJbmZvLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlIDx3dGYv
ZHRvYS5oPgpAQCAtOTAsNiArOTAsNyBAQCBlbnVtIENoYXJhY3RlclR5cGUgewogCiAgICAgLy8g
T3RoZXIgdHlwZXMgKG9ubHkgb25lIHNvIGZhcikKICAgICBDaGFyYWN0ZXJXaGl0ZVNwYWNlLAor
ICAgIENoYXJhY3RlclByaXZhdGVJZGVudGlmaWVyU3RhcnQKIH07CiAKIC8vIDI1NiBMYXRpbi0x
IGNvZGVzCkBAIC0xNTgsNyArMTU5LDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IHR5
cGVzT2ZMYXRpbjFDaGFyYWN0ZXJzWzI1Nl0gPSB7CiAvKiAgNjEgLSA9ICAgICAgICAgICAgICAg
ICAgKi8gQ2hhcmFjdGVyRXF1YWwsCiAvKiAgNjIgLSA+ICAgICAgICAgICAgICAgICAgKi8gQ2hh
cmFjdGVyR3JlYXRlciwKIC8qICA2MyAtID8gICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJR
dWVzdGlvbiwKLS8qICA2NCAtIEAgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlk
LAorLyogIDY0IC0gQCAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlclByaXZhdGVJZGVudGlm
aWVyU3RhcnQsCiAvKiAgNjUgLSBBICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRp
ZmllclN0YXJ0LAogLyogIDY2IC0gQiAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlcklkZW50
aWZpZXJTdGFydCwKIC8qICA2NyAtIEMgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVu
dGlmaWVyU3RhcnQsCkBAIC00ODYsOSArNDg3LDEwIEBAIHN0YXRpYyBjb25zdCBMQ2hhciBzaW5n
bGVDaGFyYWN0ZXJFc2NhcGVWYWx1ZXNGb3JBU0NJSVsxMjhdID0gewogfTsKIAogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1MZXhlcjxUPjo6TGV4ZXIoVk0qIHZtKQorTGV4ZXI8VD46OkxleGVyKFZN
KiB2bSwgSlNQYXJzZXJTdHJpY3RuZXNzIHN0cmljdG5lc3MpCiAgICAgOiBtX2lzUmVwYXJzaW5n
KGZhbHNlKQogICAgICwgbV92bSh2bSkKKyAgICAsIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbihz
dHJpY3RuZXNzID09IEpTUGFyc2VCdWlsdGluKQogewogfQogCkBAIC03NTMsNyArNzU1LDI3IEBA
IGlubGluZSB2b2lkIExleGVyPFQ+OjpyZWNvcmQxNihpbnQgYykKICAgICBBU1NFUlQoYyA8PSBz
dGF0aWNfY2FzdDxpbnQ+KFVTSFJUX01BWCkpOwogICAgIG1fYnVmZmVyMTYuYXBwZW5kKHN0YXRp
Y19jYXN0PFVDaGFyPihjKSk7CiB9Ci0KKyAgICAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECitib29s
IGlzU2FmZUlkZW50aWZpZXIoVk0mIHZtLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCkKK3sKKyAg
ICBpZiAoIWlkZW50KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAvKiBKdXN0IGJsb2NrIGFu
eSB1c2Ugb2Ygc3VzcGljaW91cyBpZGVudGlmaWVycy4gIFRoaXMgaXMgaW50ZW5kZWQgdG8KKyAg
ICAgKiBiZSB1c2VkIGFzIGEgc2FmZXR5IG5ldCB3aGlsZSBpbXBsZW1lbnRpbmcgYnVpbHRpbnMu
CisgICAgICovCisgICAgaWYgKCppZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCppZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5h
cHBseSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJvcGVy
dHlOYW1lcy0+ZXZhbCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgqaWRlbnQgPT0g
dm0ucHJvcGVydHlOYW1lcy0+RnVuY3Rpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorICAgIAogdGVtcGxhdGUgPD4KIHRlbXBsYXRlIDxib29s
IHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8
TENoYXI+OjpwYXJzZUlkZW50aWZpZXIoSlNUb2tlbkRhdGEqIHRva2VuRGF0YSwgdW5zaWduZWQg
bGV4ZXJGbGFncywgYm9vbCBzdHJpY3RNb2RlKQogewpAQCAtNzY1LDcgKzc4NywxMSBAQCB0ZW1w
bGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5U
eXBlIExleGVyPExDaGFyPjo6cAogICAgICAgICAgICAgcmV0dXJuIGtleXdvcmQgPT0gUkVTRVJW
RURfSUZfU1RSSUNUICYmICFzdHJpY3RNb2RlID8gSURFTlQgOiBrZXl3b3JkOwogICAgICAgICB9
CiAgICAgfQotCisgICAgCisgICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gbV9jdXJyZW50ID09ICdA
JyAmJiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisg
ICAgICAgIHNoaWZ0KCk7CisgICAgCiAgICAgY29uc3QgTENoYXIqIGlkZW50aWZpZXJTdGFydCA9
IGN1cnJlbnRTb3VyY2VQdHIoKTsKICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTGluZVN0YXJ0ID0g
Y3VycmVudExpbmVTdGFydE9mZnNldCgpOwogICAgIApAQCAtNzc5LDE1ICs4MDUsMjYgQEAgdGVt
cGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2Vu
VHlwZSBMZXhlcjxMQ2hhcj46OnAKIAogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gMDsK
ICAgICAKLSAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcikgeworICAgIGlmIChzaG91bGRD
cmVhdGVJZGVudGlmaWVyIHx8IG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgewogICAgICAgICBp
bnQgaWRlbnRpZmllckxlbmd0aCA9IGN1cnJlbnRTb3VyY2VQdHIoKSAtIGlkZW50aWZpZXJTdGFy
dDsKICAgICAgICAgaWRlbnQgPSBtYWtlSWRlbnRpZmllcihpZGVudGlmaWVyU3RhcnQsIGlkZW50
aWZpZXJMZW5ndGgpOwotCisgICAgICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsK
KyAgICAgICAgICAgIGlmICghaXNTYWZlSWRlbnRpZmllcigqbV92bSwgaWRlbnQpICYmICFpc1By
aXZhdGVOYW1lKSB7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBtYWtlU3Ry
aW5nKCJUaGUgdXNlIG9mICciLCBpZGVudC0+c3RyaW5nKCksICInIGlzIGRpc2FsbG93ZWQgaW4g
YnVpbHRpbiBmdW5jdGlvbnMuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgICAg
ICAgICAgaWRlbnQgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZXRQcml2YXRlTmFtZSgqaWRlbnQp
OworICAgICAgICAgICAgZWxzZSBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnVu
ZGVmaW5lZEtleXdvcmQpCisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9ICZtX3Zt
LT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkUHJpdmF0ZU5hbWU7CisgICAgICAgICAg
ICBpZiAoIWlkZW50KQorICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEX1BSSVZBVEVfTkFN
RV9FUlJPUlRPSzsKKyAgICAgICAgfQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gaWRlbnQ7
CiAgICAgfSBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAwOwogCi0gICAgaWYgKFVO
TElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4
ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMpKSkgeworICAgIGlmIChVTkxJS0VMWSgocmVtYWlu
aW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICEobGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25vcmVS
ZXNlcnZlZFdvcmRzKSkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsKICAgICAgICAgQVNTRVJUKHNob3Vs
ZENyZWF0ZUlkZW50aWZpZXIpOwogICAgICAgICBpZiAocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5n
dGgpIHsKICAgICAgICAgICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSBtX3ZtLT5rZXl3b3Jk
cy0+Z2V0S2V5d29yZCgqaWRlbnQpOwpAQCAtODE0LDYgKzg1MSwxMCBAQCB0ZW1wbGF0ZSA8Ym9v
bCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVy
PFVDaGFyPjo6cAogICAgICAgICAgICAgcmV0dXJuIGtleXdvcmQgPT0gUkVTRVJWRURfSUZfU1RS
SUNUICYmICFzdHJpY3RNb2RlID8gSURFTlQgOiBrZXl3b3JkOwogICAgICAgICB9CiAgICAgfQor
ICAgIAorICAgIGJvb2wgaXNQcml2YXRlTmFtZSA9IG1fY3VycmVudCA9PSAnQCcgJiYgbV9wYXJz
aW5nQnVpbHRpbkZ1bmN0aW9uOworICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICBzaGlm
dCgpOwogCiAgICAgY29uc3QgVUNoYXIqIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQ
dHIoKTsKICAgICBpbnQgaWRlbnRpZmllckxpbmVTdGFydCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZz
ZXQoKTsKQEAgLTgyNiw2ICs4NjcsNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVu
dGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAgIH0K
ICAgICAKICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50ID09ICdcXCcpKSB7CisgICAgICAgIEFT
U0VSVCghaXNQcml2YXRlTmFtZSk7CiAgICAgICAgIHNldE9mZnNldEZyb21Tb3VyY2VQdHIoaWRl
bnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGluZVN0YXJ0KTsKICAgICAgICAgcmV0dXJuIHBhcnNl
SWRlbnRpZmllclNsb3dDYXNlPHNob3VsZENyZWF0ZUlkZW50aWZpZXI+KHRva2VuRGF0YSwgbGV4
ZXJGbGFncywgc3RyaWN0TW9kZSk7CiAgICAgfQpAQCAtODM3LDE4ICs4NzksMjkgQEAgdGVtcGxh
dGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlw
ZSBMZXhlcjxVQ2hhcj46OnAKIAogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gMDsKICAg
ICAKLSAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcikgeworICAgIGlmIChzaG91bGRDcmVh
dGVJZGVudGlmaWVyIHx8IG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgewogICAgICAgICBpbnQg
aWRlbnRpZmllckxlbmd0aCA9IGN1cnJlbnRTb3VyY2VQdHIoKSAtIGlkZW50aWZpZXJTdGFydDsK
ICAgICAgICAgaWYgKGlzQWxsOEJpdCkKICAgICAgICAgICAgIGlkZW50ID0gbWFrZUlkZW50aWZp
ZXJMQ2hhckZyb21VQ2hhcihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBpZGVudCA9IG1ha2VJZGVudGlmaWVyKGlkZW50aWZpZXJT
dGFydCwgaWRlbnRpZmllckxlbmd0aCk7Ci0gICAgICAgIAorICAgICAgICBpZiAobV9wYXJzaW5n
QnVpbHRpbkZ1bmN0aW9uKSB7CisgICAgICAgICAgICBpZiAoIWlzU2FmZUlkZW50aWZpZXIoKm1f
dm0sIGlkZW50KSAmJiAhaXNQcml2YXRlTmFtZSkgeworICAgICAgICAgICAgICAgIG1fbGV4RXJy
b3JNZXNzYWdlID0gbWFrZVN0cmluZygiVGhlIHVzZSBvZiAnIiwgaWRlbnQtPnN0cmluZygpLCAi
JyBpcyBkaXNhbGxvd2VkIGluIGJ1aWx0aW4gZnVuY3Rpb25zLiIpOworICAgICAgICAgICAgICAg
IHJldHVybiBFUlJPUlRPSzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpc1ByaXZh
dGVOYW1lKQorICAgICAgICAgICAgICAgIGlkZW50ID0gbV92bS0+cHJvcGVydHlOYW1lcy0+Z2V0
UHJpdmF0ZU5hbWUoKmlkZW50KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCppZGVudCA9PSBtX3Zt
LT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkKQorICAgICAgICAgICAgICAgIHRva2Vu
RGF0YS0+aWRlbnQgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZFByaXZh
dGVOYW1lOworICAgICAgICAgICAgaWYgKCFpZGVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4g
SU5WQUxJRF9QUklWQVRFX05BTUVfRVJST1JUT0s7CisgICAgICAgIH0KICAgICAgICAgdG9rZW5E
YXRhLT5pZGVudCA9IGlkZW50OwogICAgIH0gZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50
ID0gMDsKICAgICAKLSAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3Ro
KSAmJiAhKGxleGVyRmxhZ3MgJiBMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpKSB7Cisg
ICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZs
YWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMpKSAmJiAhaXNQcml2YXRlTmFtZSkg
ewogICAgICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChy
ZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgewogICAgICAgICAgICAgY29uc3QgSGFzaEVudHJ5
KiBlbnRyeSA9IG1fdm0tPmtleXdvcmRzLT5nZXRLZXl3b3JkKCppZGVudCk7CkBAIC0xNjU4LDYg
KzE3MTEsNyBAQCBpbk51bWJlckFmdGVyRGVjaW1hbFBvaW50OgogICAgICAgICBBU1NFUlQoaXNJ
ZGVudFN0YXJ0KG1fY3VycmVudCkpOwogICAgICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNlIENo
YXJhY3RlckJhY2tTbGFzaDoKKyAgICAgICAgcGFyc2VJZGVudDoKICAgICAgICAgaWYgKGxleGVy
RmxhZ3MgJiBMZXhleEZsYWdzRG9udEJ1aWxkS2V5d29yZHMpCiAgICAgICAgICAgICB0b2tlbiA9
IHBhcnNlSWRlbnRpZmllcjxmYWxzZT4odG9rZW5EYXRhLCBsZXhlckZsYWdzLCBzdHJpY3RNb2Rl
KTsKICAgICAgICAgZWxzZQpAQCAtMTY3MCw2ICsxNzI0LDExIEBAIGluTnVtYmVyQWZ0ZXJEZWNp
bWFsUG9pbnQ6CiAgICAgICAgIG1fdGVybWluYXRvciA9IHRydWU7CiAgICAgICAgIG1fbGluZVN0
YXJ0ID0gbV9jb2RlOwogICAgICAgICBnb3RvIHN0YXJ0OworICAgIGNhc2UgQ2hhcmFjdGVyUHJp
dmF0ZUlkZW50aWZpZXJTdGFydDoKKyAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlv
bikKKyAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudDsKKworICAgICAgICBGQUxMVEhST1VHSDsK
ICAgICBjYXNlIENoYXJhY3RlckludmFsaWQ6CiAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0g
aW52YWxpZENoYXJhY3Rlck1lc3NhZ2UoKTsKICAgICAgICAgdG9rZW4gPSBFUlJPUlRPSzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAppbmRleCAyOGM2MWJhMTk4ZDJjMTVhNDliYjE4
NTJlZDMwYmVmZWI4OTA0MDA4Li5iODg3M2U5OTUwMjg2NDRiZjhjYmIzZDRjMmRhNTYyZTkzZTBl
OGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCkBAIC03Miw3ICs3Miw3IEBA
IGNsYXNzIExleGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAogcHVibGljOgot
ICAgIExleGVyKFZNKik7CisgICAgTGV4ZXIoVk0qLCBKU1BhcnNlclN0cmljdG5lc3MpOwogICAg
IH5MZXhlcigpOwogCiAgICAgLy8gQ2hhcmFjdGVyIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMuCkBA
IC0yMzgsNiArMjM4LDcgQEAgcHJpdmF0ZToKICAgICBJZGVudGlmaWVyQXJlbmEqIG1fYXJlbmE7
CiAKICAgICBWTSogbV92bTsKKyAgICBib29sIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKIH07
CiAKIHRlbXBsYXRlIDw+CkBAIC0zMzUsNiArMzM2LDEyIEBAIEFMV0FZU19JTkxJTkUgY29uc3Qg
SWRlbnRpZmllciogTGV4ZXI8VD46Om1ha2VMQ2hhcklkZW50aWZpZXIoY29uc3QgVUNoYXIqIGNo
YXJhCiAgICAgcmV0dXJuICZtX2FyZW5hLT5tYWtlSWRlbnRpZmllckxDaGFyRnJvbVVDaGFyKG1f
dm0sIGNoYXJhY3RlcnMsIGxlbmd0aCk7CiB9CiAKKyNpZiBBU1NFUlRfRElTQUJMRUQKK0FMV0FZ
U19JTkxJTkUgYm9vbCBpc1NhZmVJZGVudGlmaWVyKFZNJiwgY29uc3QgSWRlbnRpZmllciopIHsg
cmV0dXJuIHRydWU7IH0KKyNlbHNlCitib29sIGlzU2FmZUlkZW50aWZpZXIoVk0mLCBjb25zdCBJ
ZGVudGlmaWVyKik7CisjZW5kaWYKKwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBBTFdBWVNfSU5M
SU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW4qIHRv
a2VuUmVjb3JkLCB1bnNpZ25lZCBsZXhlckZsYWdzLCBib29sIHN0cmljdE1vZGUpCiB7CkBAIC0z
NzAsMTAgKzM3NywxNSBAQCBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhF
eHBlY3RJZGVudGlmaWVyKEpTVG9rZW4qIHRva2VuUmVjb3JkLCB1bgogICAgIEFTU0VSVChjdXJy
ZW50T2Zmc2V0KCkgPj0gY3VycmVudExpbmVTdGFydE9mZnNldCgpKTsKIAogICAgIC8vIENyZWF0
ZSB0aGUgaWRlbnRpZmllciBpZiBuZWVkZWQKLSAgICBpZiAobGV4ZXJGbGFncyAmIExleGV4Rmxh
Z3NEb250QnVpbGRLZXl3b3JkcykKKyAgICBpZiAobGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250
QnVpbGRLZXl3b3JkcworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgJiYgIW1fcGFyc2lu
Z0J1aWx0aW5GdW5jdGlvbgorI2VuZGlmCisgICAgICAgICkKICAgICAgICAgdG9rZW5EYXRhLT5p
ZGVudCA9IDA7CiAgICAgZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gbWFrZUxDaGFy
SWRlbnRpZmllcihzdGFydCwgcHRyIC0gc3RhcnQpOworCiAgICAgdG9rZW5Mb2NhdGlvbi0+bGlu
ZSA9IG1fbGluZU51bWJlcjsKICAgICB0b2tlbkxvY2F0aW9uLT5saW5lU3RhcnRPZmZzZXQgPSBj
dXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CiAgICAgdG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZzZXQg
PSBvZmZzZXRGcm9tU291cmNlUHRyKHN0YXJ0KTsKQEAgLTM4MSw2ICszOTMsMTMgQEAgQUxXQVlT
X0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rva2Vu
KiB0b2tlblJlY29yZCwgdW4KICAgICBBU1NFUlQodG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZzZXQg
Pj0gdG9rZW5Mb2NhdGlvbi0+bGluZVN0YXJ0T2Zmc2V0KTsKICAgICB0b2tlblJlY29yZC0+bV9z
dGFydFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbjsKICAgICB0b2tlblJlY29yZC0+bV9lbmRQb3Np
dGlvbiA9IGN1cnJlbnRQb3NpdGlvbigpOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBpZiAo
bV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CisgICAgICAgIGlmICghaXNTYWZlSWRlbnRpZmll
cigqbV92bSwgdG9rZW5EYXRhLT5pZGVudCkpCisgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7
CisgICAgfQorI2VuZGlmCisKICAgICBtX2xhc3RUb2tlbiA9IElERU5UOwogICAgIHJldHVybiBJ
REVOVDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggZmM5
Y2NkOWY2YzU3NmMxYWVmNTQ3ZjIxMWZkZDU5NmY0MmUwNTgwNi4uZDk1MmJhNmE5NGQyZjZiNDE4
MjE1NTAwNGQwYTk3MDg0MjliZDc4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5jcHAKQEAgLTEzMiw2ICsxMzIsMTIgQEAgUGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4gUHJvZ3Jh
bU5vZGU6OmNyZWF0ZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQKICAgICBy
ZXR1cm4gbm9kZS5yZWxlYXNlKCk7CiB9CiAKKwordm9pZCBQcm9ncmFtTm9kZTo6c2V0Q2xvc2Vk
VmFyaWFibGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYgY2xvc2VkVmFyaWFi
bGVzKQoreworICAgIG1fY2xvc2VkVmFyaWFibGVzID0gc3RkOjptb3ZlKGNsb3NlZFZhcmlhYmxl
cyk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFdmFsTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBpbmxpbmUgRXZhbE5vZGU6OkV2YWxOb2RlKFZN
KiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRz
KiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ss
IElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCBkNzc5YTE3OGQ5NTZmZjk5ZmQwYmVkNWQ1ZjQ1NGFh
M2U2YjUwODc5Li44MTZmZjAwMWFiZjAzNzZjNjQyZjFhOTM4ZDBlMGE5ZjUyOWNhNmJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xNDMxLDYgKzE0MzEsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBuZWVkc0FjdGl2YXRpb24oKSBjb25zdCB7IHJldHVy
biAoaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkgfHwgKG1fZmVhdHVyZXMgJiAoRXZhbEZlYXR1cmUg
fCBXaXRoRmVhdHVyZSB8IENhdGNoRmVhdHVyZSkpOyB9CiAgICAgICAgIGJvb2wgaGFzQ2FwdHVy
ZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiAhIW1fY2FwdHVyZWRWYXJpYWJsZXMuc2l6ZSgp
OyB9CiAgICAgICAgIHNpemVfdCBjYXB0dXJlZFZhcmlhYmxlQ291bnQoKSBjb25zdCB7IHJldHVy
biBtX2NhcHR1cmVkVmFyaWFibGVzLnNpemUoKTsgfQorICAgICAgICBjb25zdCBJZGVudGlmaWVy
U2V0JiBjYXB0dXJlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2FwdHVyZWRWYXJpYWJs
ZXM7IH0KICAgICAgICAgYm9vbCBjYXB0dXJlcyhjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgeyBy
ZXR1cm4gbV9jYXB0dXJlZFZhcmlhYmxlcy5jb250YWlucyhpZGVudC5pbXBsKCkpOyB9CiAKICAg
ICAgICAgVmFyU3RhY2smIHZhclN0YWNrKCkgeyByZXR1cm4gbV92YXJTdGFjazsgfQpAQCAtMTQ0
Niw2ICsxNDQ3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIHNp
bmdsZVN0YXRlbWVudCgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgZW1pdFN0YXRlbWVudHNCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9uKTsKKyAgICAg
ICAgCisgICAgICAgIHZvaWQgc2V0Q2xvc2VkVmFyaWFibGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8
U3RyaW5nSW1wbD4+JiYpIHsgfQogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2b2lkIHNldFNv
dXJjZShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpIHsgbV9zb3VyY2UgPSBzb3VyY2U7IH0KQEAg
LTE0NzUsMTEgKzE0NzgsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIGNv
bnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9uID0gZmFsc2U7CiAKKyAgICAgICAgdm9pZCBzZXRDbG9z
ZWRWYXJpYWJsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJik7CisgICAgICAg
IGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiBjbG9zZWRWYXJpYWJsZXMoKSBjb25z
dCB7IHJldHVybiBtX2Nsb3NlZFZhcmlhYmxlczsgfQogICAgIHByaXZhdGU6CiAgICAgICAgIFBy
b2dyYW1Ob2RlKFZNKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4s
IFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNl
dCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwog
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwotCisgICAgICAgIFZlY3RvcjxSZWZQdHI8U3RyaW5n
SW1wbD4+IG1fY2xvc2VkVmFyaWFibGVzOwogICAgICAgICB1bnNpZ25lZCBtX3N0YXJ0Q29sdW1u
OwogICAgICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDI5NzY2NmU3MjZlNDVkMDgzZWYxMzQ5ZGRmZmRm
MzdlZjgwMGRmN2EuLjUwYmVjNzlmZTM4YWRmOGYzYTA0ZjZiNDZjYmQyYTVjYmZjZjI0NmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTIwNCw4ICsyMDQsOSBA
QCBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBGdW5jdGlvblBhcmFtZXRlcnMqCiAgICAgLCBtX2xhc3RJZGVudGlmaWVyKDApCiAgICAg
LCBtX2xhc3RGdW5jdGlvbk5hbWUobnVsbHB0cikKICAgICAsIG1fc291cmNlRWxlbWVudHMoMCkK
KyAgICAsIG1fcGFyc2luZ0J1aWx0aW4oc3RyaWN0bmVzcyA9PSBKU1BhcnNlQnVpbHRpbikKIHsK
LSAgICBtX2xleGVyID0gYWRvcHRQdHIobmV3IExleGVyVHlwZSh2bSkpOworICAgIG1fbGV4ZXIg
PSBhZG9wdFB0cihuZXcgTGV4ZXJUeXBlKHZtLCBzdHJpY3RuZXNzKSk7CiAgICAgbV9hcmVuYSA9
IG1fdm0tPnBhcnNlckFyZW5hLmdldCgpOwogICAgIG1fbGV4ZXItPnNldENvZGUoc291cmNlLCBt
X2FyZW5hKTsKICAgICBtX3Rva2VuLm1fbG9jYXRpb24ubGluZSA9IHNvdXJjZS5maXJzdExpbmUo
KTsKQEAgLTI1Niw2ICsyNTcsNyBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5u
ZXIoKQogICAgIElkZW50aWZpZXJTZXQgY2FwdHVyZWRWYXJpYWJsZXM7CiAgICAgYm9vbCBtb2Rp
ZmllZFBhcmFtZXRlciA9IGZhbHNlOwogICAgIHNjb3BlLT5nZXRDYXB0dXJlZFZhcmlhYmxlcyhj
YXB0dXJlZFZhcmlhYmxlcywgbW9kaWZpZWRQYXJhbWV0ZXIpOworICAgIAogICAgIENvZGVGZWF0
dXJlcyBmZWF0dXJlcyA9IGNvbnRleHQuZmVhdHVyZXMoKTsKICAgICBpZiAoc2NvcGUtPnN0cmlj
dE1vZGUoKSkKICAgICAgICAgZmVhdHVyZXMgfD0gU3RyaWN0TW9kZUZlYXR1cmU7CkBAIC0yNjMs
MjEgKzI2NSwzNiBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoKQogICAg
ICAgICBmZWF0dXJlcyB8PSBTaGFkb3dzQXJndW1lbnRzRmVhdHVyZTsKICAgICBpZiAobW9kaWZp
ZWRQYXJhbWV0ZXIpCiAgICAgICAgIGZlYXR1cmVzIHw9IE1vZGlmaWVkUGFyYW1ldGVyRmVhdHVy
ZTsKLQorICAgIAorICAgIFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+IGNsb3NlZFZhcmlhYmxl
czsKKyAgICBpZiAobV9wYXJzaW5nQnVpbHRpbikgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
Y2FwdHVyZWRWYXJpYWJsZXMuc2l6ZSgpKTsKKyAgICAgICAgSWRlbnRpZmllclNldCB1c2VkVmFy
aWFibGVzOworICAgICAgICBzY29wZS0+Z2V0VXNlZFZhcmlhYmxlcyh1c2VkVmFyaWFibGVzKTsK
KyAgICAgICAgZm9yIChjb25zdCBhdXRvJiB2YXJpYWJsZSA6IHVzZWRWYXJpYWJsZXMpIHsKKyAg
ICAgICAgICAgIGlmIChzY29wZS0+aGFzRGVjbGFyZWRWYXJpYWJsZShJZGVudGlmaWVyKG1fdm0s
IHZhcmlhYmxlLmdldCgpKSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGlmIChzY29wZS0+aGFzRGVjbGFyZWRQYXJhbWV0ZXIoSWRlbnRpZmll
cihtX3ZtLCB2YXJpYWJsZS5nZXQoKSkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgY2xvc2VkVmFyaWFibGVzLmFwcGVuZCh2YXJpYWJsZSk7CisgICAgICAgIH0KKyAg
ICB9CiAgICAgZGlkRmluaXNoUGFyc2luZyhzb3VyY2VFbGVtZW50cywgY29udGV4dC52YXJEZWNs
YXJhdGlvbnMoKSwgY29udGV4dC5mdW5jRGVjbGFyYXRpb25zKCksIGZlYXR1cmVzLAotICAgICAg
ICBjb250ZXh0Lm51bUNvbnN0YW50cygpLCBjYXB0dXJlZFZhcmlhYmxlcyk7CisgICAgICAgIGNv
bnRleHQubnVtQ29uc3RhbnRzKCksIGNhcHR1cmVkVmFyaWFibGVzLCBzdGQ6Om1vdmUoY2xvc2Vk
VmFyaWFibGVzKSk7CiAKICAgICByZXR1cm4gcGFyc2VFcnJvcjsKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIExleGVyVHlwZT4KIHZvaWQgUGFyc2VyPExleGVyVHlwZT46OmRpZEZpbmlzaFBhcnNp
bmcoU291cmNlRWxlbWVudHMqIHNvdXJjZUVsZW1lbnRzLCBQYXJzZXJBcmVuYURhdGE8RGVjbGFy
YXRpb25TdGFja3M6OlZhclN0YWNrPiogdmFyU3RhY2ssIAotICAgIFBhcnNlckFyZW5hRGF0YTxE
ZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qIGZ1bmNTdGFjaywgQ29kZUZlYXR1cmVz
IGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcnMp
CisgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiog
ZnVuY1N0YWNrLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMsIElkZW50
aWZpZXJTZXQmIGNhcHR1cmVkVmFycywgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4m
JiBjbG9zZWRWYXJpYWJsZXMpCiB7CiAgICAgbV9zb3VyY2VFbGVtZW50cyA9IHNvdXJjZUVsZW1l
bnRzOwogICAgIG1fdmFyRGVjbGFyYXRpb25zID0gdmFyU3RhY2s7CiAgICAgbV9mdW5jRGVjbGFy
YXRpb25zID0gZnVuY1N0YWNrOwogICAgIG1fY2FwdHVyZWRWYXJpYWJsZXMuc3dhcChjYXB0dXJl
ZFZhcnMpOworICAgIG1fY2xvc2VkVmFyaWFibGVzID0gY2xvc2VkVmFyaWFibGVzOwogICAgIG1f
ZmVhdHVyZXMgPSBmZWF0dXJlczsKICAgICBtX251bUNvbnN0YW50cyA9IG51bUNvbnN0YW50czsK
IH0KQEAgLTIzNDYsNiArMjM2MywxMCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPiB2
b2lkIFBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRUb2tlblRleHQoVwogICAgIGNh
c2UgUkVTRVJWRUQ6CiAgICAgICAgIG91dC5wcmludCgiVW5leHBlY3RlZCB1c2Ugb2YgcmVzZXJ2
ZWQgd29yZCAnIiwgZ2V0VG9rZW4oKSwgIiciKTsKICAgICAgICAgcmV0dXJuOworCisgICAgY2Fz
ZSBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzoKKyAgICAgICAgb3V0LnByaW50KCJJbnZh
bGlkIHByaXZhdGUgbmFtZSAnIiwgZ2V0VG9rZW4oKSwgIiciKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgCiAgICAgY2FzZSBJREVOVDoKICAgICAgICAgb3V0LnByaW50KCJVbmV4cGVj
dGVkIGlkZW50aWZpZXIgJyIsIGdldFRva2VuKCksICInIik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaAppbmRleCBiNjk4ZWY5MzY4Y2I4YzhmMTk3Y2NkMDAwYWNhYTZkZmIxMWJh
MjQ0Li45MDMzODUwYzhjOTdmNTdlMjFkYTVlZWRiMDJkMDQ0ZjRjODk3OGViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTIzLDYgKzIzLDcgQEAKICNpZm5kZWYgUGFy
c2VyX2gKICNkZWZpbmUgUGFyc2VyX2gKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgi
CiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAj
aW5jbHVkZSAiRXhlY3V0YWJsZS5oIgpAQCAtMjU5LDYgKzI2MCwxMCBAQCBzdHJ1Y3QgU2NvcGUg
ewogICAgICAgICByZXR1cm4gaXNWYWxpZFN0cmljdE1vZGUgPyBCaW5kaW5nU3VjY2VlZGVkIDog
U3RyaWN0QmluZGluZ0ZhaWxlZDsKICAgICB9CiAKKyAgICB2b2lkIGdldFVzZWRWYXJpYWJsZXMo
SWRlbnRpZmllclNldCYgdXNlZFZhcmlhYmxlcykKKyAgICB7CisgICAgICAgIHVzZWRWYXJpYWJs
ZXMuc3dhcChtX3VzZWRWYXJpYWJsZXMpOworICAgIH0KIAogICAgIHZvaWQgdXNlVmFyaWFibGUo
Y29uc3QgSWRlbnRpZmllciogaWRlbnQsIGJvb2wgaXNFdmFsKQogICAgIHsKQEAgLTQxNCw2ICs0
MTksNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJF
cnJvciYpOwogCiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbGV4ZXItPnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsgfQor
ICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYgY2xvc2VkVmFyaWFibGVzKCkg
eyByZXR1cm4gc3RkOjptb3ZlKG1fY2xvc2VkVmFyaWFibGVzKTsgfQogCiBwcml2YXRlOgogICAg
IHN0cnVjdCBBbGxvd0luT3ZlcnJpZGUgewpAQCAtNTQwLDcgKzU0Niw3IEBAIHByaXZhdGU6CiAg
ICAgU3RyaW5nIHBhcnNlSW5uZXIoKTsKIAogICAgIHZvaWQgZGlkRmluaXNoUGFyc2luZyhTb3Vy
Y2VFbGVtZW50cyosIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+
KiwgCi0gICAgICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25T
dGFjaz4qLCBDb2RlRmVhdHVyZXMsIGludCwgSWRlbnRpZmllclNldCYpOworICAgICAgICBQYXJz
ZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KiwgQ29kZUZlYXR1
cmVzLCBpbnQsIElkZW50aWZpZXJTZXQmLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+
PiYmKTsKIAogICAgIC8vIFVzZWQgdG8gZGV0ZXJtaW5lIHR5cGUgb2YgZXJyb3IgdG8gcmVwb3J0
LgogICAgIGJvb2wgaXNGdW5jdGlvbkJvZHlOb2RlKFNjb3BlTm9kZSopIHsgcmV0dXJuIGZhbHNl
OyB9CkBAIC04NDAsOSArODQ2LDExIEBAIHByaXZhdGU6CiAgICAgY29uc3QgSWRlbnRpZmllciog
bV9sYXN0RnVuY3Rpb25OYW1lOwogICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlckNhY2hlPiBtX2Z1
bmN0aW9uQ2FjaGU7CiAgICAgU291cmNlRWxlbWVudHMqIG1fc291cmNlRWxlbWVudHM7CisgICAg
Ym9vbCBtX3BhcnNpbmdCdWlsdGluOwogICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0
YWNrczo6VmFyU3RhY2s+KiBtX3ZhckRlY2xhcmF0aW9uczsKICAgICBQYXJzZXJBcmVuYURhdGE8
RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KiBtX2Z1bmNEZWNsYXJhdGlvbnM7CiAg
ICAgSWRlbnRpZmllclNldCBtX2NhcHR1cmVkVmFyaWFibGVzOworICAgIFZlY3RvcjxSZWZQdHI8
U3RyaW5nSW1wbD4+IG1fY2xvc2VkVmFyaWFibGVzOwogICAgIENvZGVGZWF0dXJlcyBtX2ZlYXR1
cmVzOwogICAgIGludCBtX251bUNvbnN0YW50czsKICAgICAKQEAgLTk1Nyw2ICs5NjUsMTAgQEAg
UGFzc1JlZlB0cjxQYXJzZWROb2RlPiBwYXJzZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgRnVuY3Rpb25QYXJhbWV0ZXIKICAgICAgICAgUmVmUHRyPFBhcnNlZE5vZGU+IHJlc3Vs
dCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvcik7CiAgICAgICAgIGlmIChwb3NpdGlv
bkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xp
bmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOworICAgICAgICBpZiAoc3Ry
aWN0bmVzcyA9PSBKU1BhcnNlQnVpbHRpbikgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
cmVzdWx0KTsKKyAgICAgICAgICAgIHJlc3VsdC0+c2V0Q2xvc2VkVmFyaWFibGVzKHN0ZDo6bW92
ZShwYXJzZXIuY2xvc2VkVmFyaWFibGVzKCkpKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4g
cmVzdWx0LnJlbGVhc2UoKTsKICAgICB9CiAgICAgUGFyc2VyPExleGVyPFVDaGFyPj4gcGFyc2Vy
KHZtLCBzb3VyY2UsIHBhcmFtZXRlcnMsIG5hbWUsIHN0cmljdG5lc3MsIHBhcnNlck1vZGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCmluZGV4IDRlOWExN2Nk
MjFjYTM0MTQ2YmJkNDgxNTZhMzcyY2Q0MDRkZWY2MGMuLmY3YTc1YmY3YzM3ODU3ZTQ0YjZkNWQ3
MWY0NTI5YmIxYWMxY2Y1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyTW9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ck1vZGVzLmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gSlNQ
YXJzZXJTdHJpY3RuZXNzIHsgSlNQYXJzZU5vcm1hbCwgSlNQYXJzZVN0cmljdCB9OworZW51bSBK
U1BhcnNlclN0cmljdG5lc3MgeyBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlQnVpbHRpbiwgSlNQYXJz
ZVN0cmljdCB9OwogZW51bSBKU1BhcnNlck1vZGUgeyBKU1BhcnNlUHJvZ3JhbUNvZGUsIEpTUGFy
c2VGdW5jdGlvbkNvZGUgfTsKIAogZW51bSBQcm9maWxlck1vZGUgeyBQcm9maWxlck9mZiwgUHJv
ZmlsZXJPbiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXJUb2tlbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgK
aW5kZXggODJhMjY2MzlhNzkyMjBhMDg0NDU2YjQ4ZjMyODUyZDE0M2M3MzlkMC4uOGM4N2FkOWZh
ZGJkYzRhZjM5YWM5OWRiMmQ4NDQ1ZTEzZmZmZDM1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCkBAIC0xNDksNiArMTQ5LDcgQEAgZW51bSBKU1Rva2Vu
VHlwZSB7CiAgICAgSU5WQUxJRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0sgPSA3IHwgRXJyb3JU
b2tlbkZsYWcsCiAgICAgVU5URVJNSU5BVEVEX1NUUklOR19MSVRFUkFMX0VSUk9SVE9LID0gOCB8
IEVycm9yVG9rZW5GbGFnIHwgVW50ZXJtaW5hdGVkRXJyb3JUb2tlbkZsYWcsCiAgICAgSU5WQUxJ
RF9TVFJJTkdfTElURVJBTF9FUlJPUlRPSyA9IDkgfCBFcnJvclRva2VuRmxhZywKKyAgICBJTlZB
TElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSyA9IDEwIHwgRXJyb3JUb2tlbkZsYWcKIH07CiAKIHN0
cnVjdCBKU1RleHRQb3NpdGlvbiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvTGVnYWN5UHJvZmlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL0xlZ2FjeVByb2ZpbGVyLmNwcAppbmRleCBkZDJhY2Q5ZjBlOGM3ZWUxNjg0MDYxZjUyYzc3
ZTc4YjhmY2ZhOTVmLi4wMjYwNzBmOTU5ODI0OTlkMjczYjhkZDRjY2U0YThmODYyZmI2NmVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvTGVnYWN5UHJvZmlsZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9MZWdhY3lQcm9maWxlci5j
cHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJD
b21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKLSNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNs
dWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiT3Bl
cmF0aW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJn
TGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmNwcAppbmRl
eCBlMTMxMDRkZjU5MjJkMDc3NjI1N2QwNWNiNWU4NzA1MzdkMjE0MjhhLi4yNGMwNmJiYjFjMmMz
NGI5ZGE1ZWY4NGIyNTVjOTkwMGRhZjg1OTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcmdMaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcmdMaXN0LmNwcApAQCAtMjIsNyArMjIsNyBAQAogI2luY2x1ZGUgIkFyZ0xpc3QuaCIK
IAogI2luY2x1ZGUgIkhlYXBSb290VmlzaXRvci5oIgotI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIK
KyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAj
aW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bcmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJndW1lbnRzLmNwcAppbmRleCA4ZmQxOTVjYjliNWY3ZWY1YmYzZDJmZDkzMzQyYjAxMDI3MjVm
YWYxLi40ZmJhYzY4ODYzNDg2MTcxNjQ5YTMzNGQ2MWI1ZGNjMzgxNGRkNTU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbmNsdWRlICJBcmd1bWVudHMuaCIKIAogI2luY2x1ZGUgIkNhbGxGcmFtZUlubGluZXMuaCIK
KyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5o
IgogI2luY2x1ZGUgIkpTQXJndW1lbnRzSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9u
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCmluZGV4IDE4ZjM4
OTE3MTM4NTIzNjJjN2E3NWEzMDUzYjQ2MzE0MTdiZWI4MWIuLmYxNmZkM2RlNDA1NTk3MGJhOWQ5
YzZmMGFlNjMxOGYyMjA0YjY1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
Z3VtZW50cy5oCkBAIC0yNSw2ICsyNSw3IEBACiAjZGVmaW5lIEFyZ3VtZW50c19oCiAKICNpbmNs
dWRlICJDb2RlT3JpZ2luLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNs
dWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgog
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
YWZiNTk3OTBjYjAwOTk4OWJiN2I0Mjg2M2U5MTgyMzM1NzZiOGFhYy4uOTFjYWNkZmE4NTdlYjY5
Mzc2YTMwODFhOGM3MDJhYzljMjE3Y2E3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAK
QEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJBcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9y
LmgiCiAKICNpbmNsdWRlICJBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5oIgorI2luY2x1ZGUg
IkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiSlNBcmd1bWVudHNJdGVyYXRvci5oIgog
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRl
cmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1l
bnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCmluZGV4IGRkMDg5NGYxNGEwMjFkNWYxMjY1OGFjYjAx
ZTcyMWZjZDZkMzQ4Y2MuLjViNGFlODcxNmIwNTUzYmU0NjIzOTU1ZTk5ZTFiNDNlYmYxOGZlMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJh
dG9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1
bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTI2LDcgKzI2LDkgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5oIgogCisjaW5j
bHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJKU0FyZ3VtZW50c0l0ZXJhdG9y
LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApp
bmRleCAyN2FjNmQ0OGE3MWY3OTU1MDJhMTBjZWE2NDc4NjU0MTM1YTQ2M2EwLi42ZGM3YmU1Njk2
OWRlNjdmNjIxMDdiYjNhNTFhMzA4ZmEzYmE3NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNT
dHJpbmdCdWlsZGVyLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNTdHJpbmdKb2luZXIuaCIKICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJPYmplY3RQ
cm90b3R5cGUuaCIKQEAgLTU2LDcgKzU3LDYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU29ydChFeGVjU3RhdGUqKTsKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU3BsaWNlKEV4
ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b0Z1bmNVblNoaWZ0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b0Z1bmNFdmVyeShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRm9yRWFjaChFeGVjU3RhdGUqKTsKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU29tZShFeGVj
U3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9G
dW5jSW5kZXhPZihFeGVjU3RhdGUqKTsKQEAgLTk1NCw2OSArOTU0LDYgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY01hcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHRBcnJheSk7CiB9CiAKLS8vIERvY3VtZW50YXRp
b24gZm9yIHRoZXNlIHRocmVlIGlzIGF2YWlsYWJsZSBhdDoKLS8vIGh0dHA6Ly9kZXZlbG9wZXIt
dGVzdC5tb3ppbGxhLm9yZy9lbi9kb2NzL0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9i
amVjdHM6QXJyYXk6ZXZlcnkKLS8vIGh0dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3ppbGxhLm9yZy9l
bi9kb2NzL0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6QXJyYXk6Zm9yRWFj
aAotLy8gaHR0cDovL2RldmVsb3Blci10ZXN0Lm1vemlsbGEub3JnL2VuL2RvY3MvQ29yZV9KYXZh
U2NyaXB0XzEuNV9SZWZlcmVuY2U6T2JqZWN0czpBcnJheTpzb21lCi0KLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNFdmVyeShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0g
ICAgSlNPYmplY3QqIHRoaXNPYmogPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMs
IFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNP
YmotPmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKS50b1VJbnQzMihleGVj
KTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KLSAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gZXhlYy0+
YXJndW1lbnQoMCk7Ci0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5
cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwotICAgIGlmIChjYWxsVHlwZSA9
PSBDYWxsVHlwZU5vbmUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwot
Ci0gICAgSlNWYWx1ZSBhcHBseVRoaXMgPSBleGVjLT5hcmd1bWVudCgxKTsKLQotICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNCb29sZWFuKHRydWUpOwotCi0gICAgdW5zaWduZWQgayA9IDA7Ci0gICAg
aWYgKGNhbGxUeXBlID09IENhbGxUeXBlSlMgJiYgaXNKU0FycmF5KHRoaXNPYmopKSB7Ci0gICAg
ICAgIEpTRnVuY3Rpb24qIGYgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGZ1bmN0aW9uKTsKLSAgICAg
ICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KHRoaXNPYmopOwotICAgICAgICBDYWNoZWRDYWxs
IGNhY2hlZENhbGwoZXhlYywgZiwgMyk7Ci0gICAgICAgIGZvciAoOyBrIDwgbGVuZ3RoICYmICFl
eGVjLT5oYWRFeGNlcHRpb24oKTsgKytrKSB7Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWFy
cmF5LT5jYW5HZXRJbmRleFF1aWNrbHkoaykpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldFRoaXMoYXBwbHlUaGlzKTsKLSAg
ICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoMCwgYXJyYXktPmdldEluZGV4UXVpY2ts
eShrKSk7Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDEsIGpzTnVtYmVyKGsp
KTsKLSAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoMiwgdGhpc09iaik7Ci0gICAg
ICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhY2hlZENhbGwuY2FsbCgpOwotICAgICAgICAgICAg
aWYgKCFyZXN1bHQudG9Cb29sZWFuKGV4ZWMpKQotICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZm9y
ICg7IGsgPCBsZW5ndGggJiYgIWV4ZWMtPmhhZEV4Y2VwdGlvbigpOyArK2spIHsKLSAgICAgICAg
UHJvcGVydHlTbG90IHNsb3QodGhpc09iaik7Ci0gICAgICAgIGlmICghdGhpc09iai0+Z2V0UHJv
cGVydHlTbG90KGV4ZWMsIGssIHNsb3QpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgZWFjaEFyZ3VtZW50czsKLSAgICAgICAgZWFjaEFyZ3Vt
ZW50cy5hcHBlbmQoc2xvdC5nZXRWYWx1ZShleGVjLCBrKSk7Ci0gICAgICAgIGVhY2hBcmd1bWVu
dHMuYXBwZW5kKGpzTnVtYmVyKGspKTsKLSAgICAgICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQodGhp
c09iaik7Ci0KLSAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQotICAgICAgICBib29sIHBy
ZWRpY2F0ZVJlc3VsdCA9IGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwg
YXBwbHlUaGlzLCBlYWNoQXJndW1lbnRzKS50b0Jvb2xlYW4oZXhlYyk7Ci0gICAgICAgIGlmICgh
cHJlZGljYXRlUmVzdWx0KSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBqc0Jvb2xlYW4oZmFsc2Up
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci19Ci0KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlQcm90b0Z1bmNGb3JFYWNoKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU09iamVjdCog
dGhpc09iaiA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSku
dG9PYmplY3QoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hl
LmNwcAppbmRleCA1MTBlMzgzZmFlNTc1YWFkYTgxNzZjMDQ0MWVlNzI1YjQzYTRjNzMyLi5kMzA0
ODc3ZmU5Y2RlMWMwOTE5ZmQ0NTk1ZjgxMWVjYWJjZTc3Mjc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTE0NCwyNCArMTQ0LDI2IEBAIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZy
b21HbG9iYWxDb2RlKFZNJiB2CiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZTsKICAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFt
Tm9kZT4oJnZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIoKSwgSlNQYXJzZU5vcm1hbCwgSlNQYXJz
ZVByb2dyYW1Db2RlLCBlcnJvciwgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwogICAgIGlm
ICghcHJvZ3JhbSkgewotICAgICAgICBBU1NFUlQoZXJyb3IubV90eXBlICE9IFBhcnNlckVycm9y
OjpFcnJvck5vbmUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChlcnJvci5tX3R5cGUgIT0gUGFy
c2VyRXJyb3I6OkVycm9yTm9uZSk7CiAgICAgICAgIG1fc291cmNlQ29kZS5yZW1vdmUoYWRkUmVz
dWx0Lml0ZXJhdG9yKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgICAgLy8gVGhpcyBm
dW5jdGlvbiBhc3N1bWVzIGFuIGlucHV0IHN0cmluZyB0aGF0IHdvdWxkIHJlc3VsdCBpbiBhIHNp
bmdsZSBhbm9ueW1vdXMgZnVuY3Rpb24gZXhwcmVzc2lvbi4KICAgICBTdGF0ZW1lbnROb2RlKiBl
eHByU3RhdGVtZW50ID0gcHJvZ3JhbS0+c2luZ2xlU3RhdGVtZW50KCk7Ci0gICAgQVNTRVJUKGV4
cHJTdGF0ZW1lbnQpOwotICAgIEFTU0VSVChleHByU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQo
KSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudCk7CisgICAgUkVMRUFTRV9BU1NF
UlQoZXhwclN0YXRlbWVudC0+aXNFeHByU3RhdGVtZW50KCkpOwogICAgIEV4cHJlc3Npb25Ob2Rl
KiBmdW5jRXhwciA9IHN0YXRpY19jYXN0PEV4cHJTdGF0ZW1lbnROb2RlKj4oZXhwclN0YXRlbWVu
dCktPmV4cHIoKTsKLSAgICBBU1NFUlQoZnVuY0V4cHIpOworICAgIFJFTEVBU0VfQVNTRVJUKGZ1
bmNFeHByKTsKICAgICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwci0+aXNGdW5jRXhwck5vZGUoKSk7
CiAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+
KGZ1bmNFeHByKS0+Ym9keSgpOworICAgIFJFTEVBU0VfQVNTRVJUKCFwcm9ncmFtLT5oYXNDYXB0
dXJlZFZhcmlhYmxlcygpKTsKKyAgICAKICAgICBib2R5LT5zZXRFbmRQb3NpdGlvbihwb3NpdGlv
bkJlZm9yZUxhc3ROZXdsaW5lKTsKLSAgICBBU1NFUlQoYm9keSk7Ci0gICAgQVNTRVJUKGJvZHkt
PmlkZW50KCkuaXNOdWxsKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGJvZHkpOworICAgIFJFTEVB
U0VfQVNTRVJUKGJvZHktPmlkZW50KCkuaXNOdWxsKCkpOwogCi0gICAgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIGJvZHksIHRydWUpOworICAgIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBib2R5LCB0cnVlLCBVbmxpbmtlZE5vcm1hbEZ1bmN0
aW9uKTsKICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPm1fbmFtZVZhbHVlLnNldCh2bSwgZnVuY3Rp
b25FeGVjdXRhYmxlLCBqc1N0cmluZygmdm0sIG5hbWUuc3RyaW5nKCkpKTsKIAogICAgIGFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUgPSBTb3VyY2VDb2RlVmFsdWUodm0sIGZ1bmN0aW9uRXhlY3V0
YWJsZSwgbV9zb3VyY2VDb2RlLmFnZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcAppbmRleCAzZjVjNjQ1YzA5OGQ1MjdmYzBj
NzI1OWU5NDQ3ZWZiZTg4NjhhMjljLi4yZmMyYjcyN2FmY2VlZTFlYzJjNjI1ZGU1Njc1YjNiZTFj
ZjYwZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuY3BwCkBAIC0yNyw3ICsyNywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2Rl
ZmluZSBJTklUSUFMSVpFX1BST1BFUlRZX05BTUUobmFtZSkgLCBuYW1lKHZtLCAjbmFtZSkKICNk
ZWZpbmUgSU5JVElBTElaRV9LRVlXT1JEKG5hbWUpICwgbmFtZSMjS2V5d29yZCh2bSwgI25hbWUp
Ci0jZGVmaW5lIElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKG5hbWUpICwgbmFtZSMjUHJpdmF0ZU5h
bWUoSWRlbnRpZmllcjo6ZnJvbShQcml2YXRlTmFtZSgpKSkKKyNkZWZpbmUgSU5JVElBTElaRV9Q
UklWQVRFX05BTUUobmFtZSkgXAorICAgICwgbmFtZSMjUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6
ZnJvbShQcml2YXRlTmFtZSgpKSkgXAorICAgICwgbV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIo
bmFtZSwgbmFtZSMjUHJpdmF0ZU5hbWUpIFwKKwogCiBDb21tb25JZGVudGlmaWVyczo6Q29tbW9u
SWRlbnRpZmllcnMoVk0qIHZtKQogICAgIDogbnVsbElkZW50aWZpZXIoKQpAQCAtMzgsOCArNDEs
MjYgQEAgQ29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZNKiB2bSkKICAgICAs
IGhhc05leHRJZGVudGlmaWVyKHZtLCAiaGFzTmV4dCIpCiAgICAgSlNDX0NPTU1PTl9JREVOVElG
SUVSU19FQUNIX0tFWVdPUkQoSU5JVElBTElaRV9LRVlXT1JEKQogICAgIEpTQ19DT01NT05fSURF
TlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRSkKKyAg
ICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoSU5JVElBTElaRV9QUk9QRVJUWV9O
QU1FKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05B
TUUoSU5JVElBTElaRV9QUklWQVRFX05BTUUpCiB7CiB9CiAKK2NvbnN0IElkZW50aWZpZXIqIENv
bW1vbklkZW50aWZpZXJzOjpnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkg
Y29uc3QKK3sKKyNkZWZpbmUgUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKG5hbWUpIGlm
IChtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpci5maXJzdCA9PSBpZGVudCkgcmV0dXJuICZtXyMj
bmFtZSMjUHVibGljU3RyaW5nUGFpci5zZWNvbmQ7CisgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lE
RU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShSRVRVUk5fSUZfUFJJVkFURV9OQU1FX01BVENI
RVMpCisjdW5kZWYgUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTCisgICAgcmV0dXJuIDA7
Cit9CisKK0lkZW50aWZpZXIgQ29tbW9uSWRlbnRpZmllcnM6OmdldFB1YmxpY05hbWUoY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQpIGNvbnN0Cit7CisjZGVmaW5lIFJFVFVSTl9JRl9QUklWQVRFX05B
TUVfTUFUQ0hFUyhuYW1lKSBpZiAobV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuc2Vjb25kID09
IGlkZW50KSByZXR1cm4gbV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuZmlyc3Q7CisgICAgSlND
X0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShSRVRVUk5fSUZf
UFJJVkFURV9OQU1FX01BVENIRVMpCisjdW5kZWYgUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRD
SEVTCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZW1wdHlJ
ZGVudGlmaWVyOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IGU4ZjllZDgyYmM3OTQ2
MjAzODI2NmIzMDIwNzgyMjQ3YjFmYTI3YTMuLjkyNGQzNmFjNjkxMzUwMzU3Y2IzODJiMWVmM2I0
MGEwYTA4YzBhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaApAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBDb21tb25JZGVudGlm
aWVyc19oCiAKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMu
aCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogLy8gTWFya2VkQXJndW1lbnRCdWZm
ZXIgb2YgcHJvcGVydHkgbmFtZXMsIHBhc3NlZCB0byBhIG1hY3JvIHNvIHdlIGNhbiBkbyBzZXQg
dGhlbSB1cCB2YXJpb3VzCkBAIC0xMzMsOCArMTM0LDEwIEBACiAgICAgbWFjcm8ob3NyRXhpdHMp
IFwKICAgICBtYWNybyhwYXJzZSkgXAogICAgIG1hY3JvKHByb2ZpbGVkQnl0ZWNvZGVzKSBcCisg
ICAgbWFjcm8ocHJvbWlzZSkgXAogICAgIG1hY3JvKHByb3BlcnR5SXNFbnVtZXJhYmxlKSBcCiAg
ICAgbWFjcm8ocHJvdG90eXBlKSBcCisgICAgbWFjcm8ocmVzb2x2ZSkgXAogICAgIG1hY3JvKHNl
dCkgXAogICAgIG1hY3JvKHNpemUpIFwKICAgICBtYWNybyhzbGljZSkgXApAQCAtMTU1LDcgKzE1
OCwxNCBAQAogICAgIG1hY3JvKHZhbHVlcykgXAogICAgIG1hY3JvKHZhbHVlT2YpIFwKICAgICBt
YWNybyh3aW5kb3cpIFwKLSAgICBtYWNybyh3cml0YWJsZSkKKyAgICBtYWNybyh3cml0YWJsZSkg
XAorICAgIG1hY3JvKGl0ZXJhdG9yKSBcCisgICAgbWFjcm8oaXRlcmF0b3JOZXh0KSBcCisgICAg
bWFjcm8ocmVqZWN0KSBcCisgICAgbWFjcm8oZnVsZmlsbG1lbnRIYW5kbGVyKSBcCisgICAgbWFj
cm8ocmVqZWN0aW9uSGFuZGxlcikgXAorICAgIG1hY3JvKGRlZmVycmVkKSBcCisgICAgbWFjcm8o
Y291bnRkb3duSG9sZGVyKSBcCiAKICNkZWZpbmUgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNI
X0tFWVdPUkQobWFjcm8pIFwKICAgICBtYWNybyhicmVhaykgXApAQCAtMjAzLDcgKzIxMyw3IEBA
CiAgICAgbWFjcm8odm9pZCkgXAogICAgIG1hY3JvKHdoaWxlKSBcCiAgICAgbWFjcm8od2l0aCkg
XAotICAgIG1hY3JvKHlpZWxkKQorICAgIG1hY3JvKHlpZWxkKSBcCiAKICNkZWZpbmUgSlNDX0NP
TU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShtYWNybykgXAogICAg
IG1hY3JvKGl0ZXJhdG9yKSBcCkBAIC0yMTYsNyArMjI2LDEyIEBACiAgICAgbWFjcm8oaW5kZXgp
IFwKICAgICBtYWNybyh2YWx1ZXMpIFwKICAgICBtYWNybyhkZWZlcnJlZCkgXAotICAgIG1hY3Jv
KGNvdW50ZG93bkhvbGRlcikKKyAgICBtYWNybyhjb3VudGRvd25Ib2xkZXIpIFwKKyAgICBtYWNy
byhPYmplY3QpIFwKKyAgICBtYWNybyhUeXBlRXJyb3IpIFwKKyAgICBtYWNybyh1bmRlZmluZWRL
ZXl3b3JkKSBcCisgICAgbWFjcm8oY2FsbCkgXAorICAgIG1hY3JvKGFwcGx5KQogCiBuYW1lc3Bh
Y2UgSlNDIHsKIApAQCAtMjQwLDExICsyNTUsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IAogI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFMKG5h
bWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZTsKICAgICAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVS
U19FQUNIX1BST1BFUlRZX05BTUUoSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJUWV9OQU1F
X0dMT0JBTCkKKyAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKEpTQ19J
REVOVElGSUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwpCiAjdW5kZWYgSlNDX0lERU5U
SUZJRVJfREVDTEFSRV9QUk9QRVJUWV9OQU1FX0dMT0JBTAogCi0jZGVmaW5lIEpTQ19JREVOVElG
SUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTChuYW1lKSBjb25zdCBJZGVu
dGlmaWVyIG5hbWUjI1ByaXZhdGVOYW1lOworI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJF
X1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwobmFtZSkgY29uc3QgSWRlbnRpZmllciBuYW1l
IyNQcml2YXRlTmFtZTsgY29uc3Qgc3RkOjpwYWlyPElkZW50aWZpZXIsIElkZW50aWZpZXI+IG1f
IyNuYW1lIyNQdWJsaWNTdHJpbmdQYWlyOwogICAgICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURF
TlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFU
RV9QUk9QRVJUWV9OQU1FX0dMT0JBTCkKICN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BS
SVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwKKyAgICAgICAgCisgICAgICAgIGNvbnN0IElkZW50
aWZpZXIqIGdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKKyAgICAgICAg
SWRlbnRpZmllciBnZXRQdWJsaWNOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKICAgICB9
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDA3NTg3NWZiMjMxNmE1NTU3MDUwYTY2OTBj
ZDBmOTg4MjQ4NGY1ZjMuLjVhZjkwODc1NGU3NDdmOGNhZTBjZDA0YWY4ZDQ5MTUwMDQ2OGMyYTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVFN0
dWJzLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5o
IgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkpTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmgKaW5kZXggNjhmNjQwODRmYTI4MTEyZmVlMGQ5NDQyZGJkZWUzOGQ1
MjExNDU3MS4uOGQ4YzhmZWQ1NGQyMjQ1ZjBhN2ZmNTI2N2JmZmIxYjgyMTkwZGI1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2RlU3BlY2lh
bGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgorI2luY2x1ZGUg
IkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTdGFja0lubGluZXMuaCIKICNpbmNs
dWRlICJOYW1lSW5zdGFuY2UuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0
aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNF
eGNlcHRpb25zLmNwcAppbmRleCA1NTMzNGJlMmY5ODBhOThmN2ZlYTQyYTA1YmUwZjIwYzAxOWZm
MGRkLi5mYTU3YzAyNjg1ZTUzZDUyNTI4ODA1N2UyMTFkOThiMTA5ODFkNzNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRpb25z
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNF
eGNlcHRpb25zLmNwcApAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgog
I2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKKyNpbmNs
dWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgi
CiAjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBD
b21tb25TbG93UGF0aHMgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCAwNWUxMWUwYjgwYTM0MzBhZWFiMjJiMDIyMmEyMTJm
NGE4ZTJjNDliLi4zNjRjYzcxNjY2MDhiNTAwN2Q0NzdkODczOTE4YTVkNjRiMTY4NjU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNw
cApAQCAtODEsNiArODEsMTEgQEAgSlNPYmplY3QqIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiBKU09iamVjdCogY3JlYXRlVW5kZWZpbmVk
VmFyaWFibGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQog
eworICAgIAorICAgIGlmIChpZGVudC5pbXBsKCktPmlzRW1wdHlVbmlxdWUoKSkgeworICAgICAg
ICBTdHJpbmcgbWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBmaW5kIHByaXZhdGUgdmFyaWFibGU6
IEAiLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2V0UHVibGljTmFtZShpZGVudCkuc3RyaW5nKCkp
KTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIG1lc3NhZ2UpOwor
ICAgIH0KICAgICBTdHJpbmcgbWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBmaW5kIHZhcmlhYmxl
OiAiLCBpZGVudC5zdHJpbmcoKSkpOwogICAgIHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJvcihl
eGVjLCBtZXNzYWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuaAppbmRleCAxOTg5NzZiYjNmZTZlNmU5MTE3OTgxMmQxY2FmOWI4YmY5YmZkMGJiLi5jZjBl
NzUzYTdjNWY1NDQ2N2I2NGQ4ZTJhOWIzZmJhMjcxNTAwMDEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC00ODQsNyArNDg0LDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBjbGVhckNvZGUoKTsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJ
bmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVz
ZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBl
eGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZh
dGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlKTsgfQogCiAg
ICAgdW5zaWduZWQgbnVtVmFyaWFibGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxv
Y2stPm51bVZhcmlhYmxlcygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZGdW5jdGlvbkRlY2xz
KCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNs
cygpOyB9CkBAIC01NDAsNyArNTQwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckNvZGUo
KTsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4g
RXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9k
ZSgpLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0
IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBp
c1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBj
bGFzcyBTY3JpcHRFeGVjdXRhYmxlOwpAQCAtNjI4LDcgKzYyOCw4IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHJldHVybiBiYXNlbGluZUNvZGVCbG9ja0ZvcihraW5kKTsKICAgICB9Ci0gICAg
ICAgIAorCisgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5s
aW5rZWRFeGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpOyB9CiAgICAgY29uc3QgSWRlbnRp
ZmllciYgbmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1lKCk7IH0KICAg
ICBjb25zdCBJZGVudGlmaWVyJiBpbmZlcnJlZE5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhl
Y3V0YWJsZS0+aW5mZXJyZWROYW1lKCk7IH0KICAgICBKU1N0cmluZyogbmFtZVZhbHVlKCkgY29u
c3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWVWYWx1ZSgpOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKaW5k
ZXggYzFiMDhhZjJkODE4ZGFlNTdlMWIwMGZkYTE3M2E4MTYxMzc1MjliNS4uMTI0OTBjNDBmMzM0
MTdlY2E5MjM4NTBhMGRjNjYyZGJiY2Q0MGYzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcApAQCAtMjIsMTIgKzIyLDEzIEBA
CiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50cy5o
IgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1
ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5oIgotI2luY2x1ZGUgIklu
dGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTGV4
ZXIuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKQEAgLTEwOCw3ICsxMDksNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0
YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgp
OwogICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkgewogICAg
ICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4odGhpc1ZhbHVl
KTsKLSAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpKQorICAgICAgICBpZiAo
ZnVuY3Rpb24tPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgImZ1bmN0aW9uICIs
IGZ1bmN0aW9uLT5uYW1lKGV4ZWMpLCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iKSk7CiAg
ICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGZ1bmN0aW9uLT5qc0V4ZWN1
dGFibGUoKTsKICAgICAgICAgU3RyaW5nIHNvdXJjZVN0cmluZyA9IGV4ZWN1dGFibGUtPnNvdXJj
ZSgpLnRvU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FjdGl2YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3Rp
dmF0aW9uLmNwcAppbmRleCA3MmVkMWM3MTI0MDYxMTY4YjBhZGRkMzExNmY3NTVhMTE3YjhmYjkw
Li5iMzc0OTQzMDk5ZTIxNTVhMzk3NzEzMzEzNDcwMmMyYTI0YWNjODZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKQEAgLTU4LDcgKzU4LDcg
QEAgdm9pZCBKU0FjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKIAogaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZUdl
dChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAg
U3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0
eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9s
VGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGVudHJ5Lmlz
TnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTcyLDcgKzcyLDcgQEAgaW5saW5l
IGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QKIAogaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJs
ZUdldChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IpCiB7Ci0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlu
bGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5
IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS51aWQoKSk7CiAg
ICAgaWYgKGVudHJ5LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTg5LDcg
Kzg5LDcgQEAgaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dChFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU4KICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0g
SGVhcDo6aGVhcCh0aGlzKSk7CiAgICAgCi0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5
bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBT
eW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5
TmFtZS51aWQoKSk7CiAgICAgaWYgKGVudHJ5LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKGVudHJ5LmlzUmVhZE9ubHkoKSkgewpAQCAtMTM2LDcgKzEzNiw3IEBAIGlu
bGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyhWTSYg
dm0sIFByb3BlcnR5TmFtZSBwcm9wCiAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogcmVn
OwogICAgIHsKICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUo
KS0+bV9sb2NrKTsKLSAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5
bWJvbFRhYmxlKCktPmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAg
ICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlKCktPmZp
bmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgICAgICBpZiAoaXRlciA9PSBzeW1i
b2xUYWJsZSgpLT5lbmQobG9ja2VyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgU3ltYm9sVGFibGVFbnRyeSYgZW50cnkgPSBpdGVyLT52YWx1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5jcHAKaW5kZXgg
MmZjZjg4MTVjMDU2ODA1ODEyYTc5OTFhNWZmMDYzZDY4NzM5NzE2NC4uOWE5MjU4M2FhMGVjOTBk
YmIzMjhlY2Q1MGRjMzEzOWFlZjAyNzNiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5jcHAKQEAgLTI3LDYgKzI3LDcgQEAK
ICNpbmNsdWRlICJKU0FyZ3VtZW50c0l0ZXJhdG9yLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudHMu
aCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCA5MDA3YjVmN2Qz
ZjEwM2IxZDIxYjFhMzY1YTI2YzIxNWMzMmI0ZDI4Li5iYTBhMmQzOGU5YzUzZTE1OTM3ZDQ2YTg5
NTFhOGM4YzQ1MDc5MjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKICNpbmNsdWRl
ICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJJbmRleGluZ0hlYWRlcklubGluZXMuaCIKKyNp
bmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5o
IgogI2luY2x1ZGUgIlJlamVjdC5oIgogI2luY2x1ZGUgPHd0Zi9BVkxUcmVlLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcAppbmRleCBk
NTA2YzRlYmQyNjIwZWZkNzA3OTNhODczZDA4NTJmYmQ5NzgyODU5Li5jZjM3MDk3ZWMwYzY5MjVh
ODY3YjhjMDEwYzBlZmM0MDc0NDg1ZjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1
ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5o
IgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZS5jcHAKaW5kZXggY2NhNjg4OGJmOThhMDI4NjQ2Y2EzZGRkZjM3NjI3Y2UwZTdkOTMw
Mi4uMzM5YTdhYjdmNTk1MTVlOTZhZmI3ZWM0Yjg3NDFlN2FhOGUxNjZmOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAgLTMyLDcgKzMyLDkgQEAK
ICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNp
bmNsdWRlICJKU05vdEFuT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiTnVtYmVyT2JqZWN0LmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1
ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKaW5kZXggZjdj
ODQ0NjQ1MDkyYjI1MDgwNWU2ZThkNDgzMmM5OThiZGI4OWI1NC4uZDc5NWRkNTZhOTdkZGI1OTdj
MDkwZmMyZTBiN2YzMDhlMzNlYmNhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbElubGluZXMuaApAQCAtMjcsOCArMjcsMTAgQEAKICNkZWZpbmUgSlNDZWxsSW5s
aW5lc19oCiAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlm
aWVycy5oIgogI2luY2x1ZGUgIkRlZmVyR0MuaCIKICNpbmNsdWRlICJIYW5kbGUuaCIKKyNpbmNs
dWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggMjQxOTY0NjEwYmI0NDI3YjE4NjM3MzM0
NmUyNGY1YTgyZDBjZGNjNC4uYWNlNmMxNDdlNDk3ZmVlMjAyOTJmYjU1Mzk3NjBkNWQ2OTgyOWNl
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAg
LTM0LDcgKzM0LDggQEAKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUg
IkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKLSNpbmNsdWRlICJKU0JvdW5k
RnVuY3Rpb24uaCIgCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNG
dW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUg
IkpTTm90QW5PYmplY3QuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtMTA5LDYgKzEx
MCwxNCBAQCB2b2lkIEpTRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgTmF0aXZlRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSwgaW50IGxlbmd0aAogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBEb250RGVsZXRlIHwgUmVhZE9u
bHkgfCBEb250RW51bSk7CiB9CiAKK0pTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0
aW5GdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNy
ZWF0ZSh2bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBmdW5jdGlvbi0+cHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZygmdm0sIGV4ZWN1dGFibGUt
Pm5hbWUoKS5zdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAg
ICBmdW5jdGlvbi0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVt
YmVyKGV4ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkg
fCBEb250RW51bSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uOworfQorCiBPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZSogSlNGdW5jdGlvbjo6Y3JlYXRlQWxsb2NhdGlvblByb2ZpbGUoRXhlY1N0YXRlKiBl
eGVjLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
QEAgLTE0Miw3ICsxNTEsNyBAQCBjb25zdCBTdHJpbmcgSlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERp
c3BsYXlOYW1lKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIGV4cGxpY2l0TmFtZTsK
ICAgICAKICAgICBjb25zdCBTdHJpbmcgYWN0dWFsTmFtZSA9IG5hbWUoZXhlYyk7Ci0gICAgaWYg
KCFhY3R1YWxOYW1lLmlzRW1wdHkoKSB8fCBpc0hvc3RGdW5jdGlvbigpKQorICAgIGlmICghYWN0
dWFsTmFtZS5pc0VtcHR5KCkgfHwgaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAg
cmV0dXJuIGFjdHVhbE5hbWU7CiAgICAgCiAgICAgcmV0dXJuIGpzRXhlY3V0YWJsZSgpLT5pbmZl
cnJlZE5hbWUoKS5zdHJpbmcoKTsKQEAgLTE1MCwxMCArMTU5LDIwIEBAIGNvbnN0IFN0cmluZyBK
U0Z1bmN0aW9uOjpjYWxjdWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQogCiBjb25z
dCBTb3VyY2VDb2RlKiBKU0Z1bmN0aW9uOjpzb3VyY2VDb2RlKCkgY29uc3QKIHsKLSAgICBpZiAo
aXNIb3N0RnVuY3Rpb24oKSkKKyAgICBpZiAoaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuICZqc0V4ZWN1dGFibGUoKS0+c291cmNlKCk7CiB9
CisgICAgCitib29sIEpTRnVuY3Rpb246OmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gaXNIb3N0RnVuY3Rpb24oKSB8fCBpc0J1aWx0aW5GdW5jdGlvbigpOwor
fQorCitib29sIEpTRnVuY3Rpb246OmlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gIWlzSG9zdEZ1bmN0aW9uKCkgJiYganNFeGVjdXRhYmxlKCktPmlzQnVpbHRpbkZ1bmN0
aW9uKCk7Cit9CiAKIHZvaWQgSlNGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewpAQCAtMjc3LDcgKzI5Niw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTRnVuY3Rpb246OmNhbGxlckdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1Zh
bHVlIHNsb3RCYXNlCiAgICAgaWYgKCFjYWxsZXIuaXNPYmplY3QoKSB8fCAhYXNPYmplY3QoY2Fs
bGVyKS0+aW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShjYWxsZXIpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpT
RnVuY3Rpb24qPihjYWxsZXIpOwotICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSB8
fCAhZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkKKyAgICBpZiAoZnVu
Y3Rpb24tPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgfHwgIWZ1bmN0aW9uLT5qc0V4ZWN1dGFi
bGUoKS0+aXNTdHJpY3RNb2RlKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2Fs
bGVyKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiRnVuY3Rpb24uY2FsbGVyIHVzZWQgdG8gcmV0cmlldmUgc3RyaWN0IGNhbGxl
ciIpKSk7CiB9CkBAIC0yOTksNyArMzE4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNGdW5jdGlvbjo6
bmFtZUdldHRlcihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBzbG90QmFzZSwgRW5jb2QKIGJv
b2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9i
amVjdCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgaWYgKHRo
aXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBCYXNl
OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90
KTsKIAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3Rv
dHlwZSkgewpAQCAtMzYxLDcgKzM4MCw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVy
dHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiB2b2lk
IEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVt
ZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICghdGhpc09iamVjdC0+aXNIb3N0RnVuY3Rp
b24oKSAmJiAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgeworICAgIGlmICgh
dGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSAmJiAobW9kZSA9PSBJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKSkgewogICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90eXBlIGhh
cyBiZWVuIHJlaWZpZWQuCiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QpOwog
ICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhp
c09iamVjdCwgZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgc2xvdCk7CkBA
IC0zNzcsNyArMzk2LDcgQEAgdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLAogdm9pZCBKU0Z1bmN0aW9u
OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1
bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKLSAgICBpZiAo
dGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSkgeworICAgIGlmICh0aGlzT2JqZWN0LT5pc0hv
c3RPckJ1aWx0aW5GdW5jdGlvbigpKSB7CiAgICAgICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTQyNSw3ICs0NDQsNyBAQCBib29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcAogYm9vbCBKU0Z1bmN0
aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICh0aGlzT2JqZWN0LT5p
c0hvc3RGdW5jdGlvbigpKQorICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5j
dGlvbigpKQogICAgICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKTsKIAogICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDdjZDE0YjhjMmQ4
MDBmNjFiZGMxMmVkZDJkZjA0ZDM1ZmEwNjE5YjYuLjk5NWM5ZDExYmQ4OTgzODZmN2EyMGM0MTYz
NGZhN2NjOWI3Njk4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmgKQEAgLTY4LDYgKzY4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1
cm4gZnVuY3Rpb247CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHN0YXRpYyBKU0Z1bmN0
aW9uKiBjcmVhdGVCdWlsdGluRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0ds
b2JhbE9iamVjdCopOworICAgICAgICAKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0Nl
bGwqKTsKICAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBuYW1lKEV4
ZWNTdGF0ZSopOwpAQCAtMTQ1LDYgKzE0Nyw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgcmV0dXJuIG1fYWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OwogICAgICAgICB9CiAKKyAg
ICAgICAgYm9vbCBpc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpIGNvbnN0OworICAgICAgICBib29s
IGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3Q7CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGNv
bnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCB8IEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4g
fCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5s
aW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMu
aAppbmRleCBmZTRlMTE0YWRiYzIzNjc0ZDNiNjBlNjFmNzFjYjdhMDZjOTQ3ODRkLi4yNDk4ZWMz
OGNkODk1NTBmYTJmMzg1NTkzZGFjYmExMjNiMDAxN2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKQEAgLTUzLDEzICs1MywxMyBA
QCBpbmxpbmUgYm9vbCBKU0Z1bmN0aW9uOjppc0hvc3RGdW5jdGlvbigpIGNvbnN0CiAKIGlubGlu
ZSBOYXRpdmVGdW5jdGlvbiBKU0Z1bmN0aW9uOjpuYXRpdmVGdW5jdGlvbigpCiB7Ci0gICAgQVNT
RVJUKGlzSG9zdEZ1bmN0aW9uKCkpOworICAgIEFTU0VSVChpc0hvc3RGdW5jdGlvbk5vbklubGlu
ZSgpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TmF0aXZlRXhlY3V0YWJsZSo+KG1fZXhlY3V0
YWJsZS5nZXQoKSktPmZ1bmN0aW9uKCk7CiB9CiAKIGlubGluZSBOYXRpdmVGdW5jdGlvbiBKU0Z1
bmN0aW9uOjpuYXRpdmVDb25zdHJ1Y3RvcigpCiB7Ci0gICAgQVNTRVJUKGlzSG9zdEZ1bmN0aW9u
KCkpOworICAgIEFTU0VSVChpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpKTsKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8TmF0aXZlRXhlY3V0YWJsZSo+KG1fZXhlY3V0YWJsZS5nZXQoKSktPmNvbnN0
cnVjdG9yKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5s
aW5lcy5oCmluZGV4IDJkZGMyOWY3MTg5N2JiNTFkMzkwYjA2YjI1YTczODMzODc0YmEwYzEuLmVk
ZDM0NDljZTQ3YjE3MzVlOGU1ZGJiMDVmMzE4ZTNkNTVmM2JlNjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaApAQCAtMjYsNiArMjYsNyBAQAogI2lm
bmRlZiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lc19oCiAjZGVmaW5l
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzX2gKIAorI2luY2x1ZGUg
IkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJKU0Fy
cmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rv
ci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCA2ZGI4NjI3NGMzYjg3NGFhYWRl
NTE1MTg5ODI2NzI2ZmIxMzZjMTczLi5mMjRlYTczMDNkZjk2OWRiZDJkY2E1MmM4NmQxMWM3OGMw
MGRiOWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtMjcsNiArMjcsNyBAQAog
I2RlZmluZSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXNfaAogCiAjaW5jbHVkZSAiQXJy
YXlCdWZmZXJWaWV3LmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRl
ICJEZWZlckdDLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxw
ZXJzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oCmluZGV4
IDQ1OTk5N2E0NjRiOTExOTQ3N2IxYmU4NGUzNmM0ZTI5NjZhY2VmODUuLjhlNWZmODI3OTFlNmZm
OGQ0ZWI5YzM3MzY5MWU0MzNlYjdkMTZhZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
UHJvdG90eXBlSW5saW5lcy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lc19oCiAjZGVmaW5lIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJvdG90eXBlSW5saW5lc19oCiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5o
IgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAyYzI3NGMxYTdkNDgxYzA3ZGYwZDJiZWIzYjI5MzFh
MzkwN2E1ZTY2Li4wNmU1NGM4NGU3N2I5MDMyYmFhMWQyZGY0N2ExYzcyZTgwYjdkZWEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBA
IC0zNDYsNyArMzQ2LDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90
b3R5cGUpCiAKICAgICAvLyBDb25zdHJ1Y3RvcnMKIAotICAgIEpTQ2VsbCogb2JqZWN0Q29uc3Ry
dWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBPYmplY3RDb25zdHJ1Y3Rvcjo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9v
YmplY3RQcm90b3R5cGUuZ2V0KCkpOworICAgIE9iamVjdENvbnN0cnVjdG9yKiBvYmplY3RDb25z
dHJ1Y3RvciA9IE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIE9iamVjdENvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBt
X29iamVjdFByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9vYmplY3RDb25zdHJ1Y3Rvci5zZXQodm0s
IHRoaXMsIG9iamVjdENvbnN0cnVjdG9yKTsKICAgICBKU0NlbGwqIGZ1bmN0aW9uQ29uc3RydWN0
b3IgPSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29uc3RydWN0b3I6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1f
ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwogICAgIEpTQ2VsbCogYXJyYXlDb25zdHJ1Y3RvciA9
IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9hcnJheVByb3Rv
dHlwZS5nZXQoKSk7CiAKQEAgLTQzMiw3ICs0MzMsMTAgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6
cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgR2xvYmFsUHJvcGVydHlJbmZvIHN0YXRpY0ds
b2JhbHNbXSA9IHsKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
Pk5hTiwganNOYU4oKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAg
ICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+SW5maW5pdHksIGpzTnVtYmVy
KHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSksIERvbnRFbnVtIHwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQsIGpzVW5kZWZpbmVkKCksIERvbnRFbnVtIHwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KQorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCwganNVbmRlZmluZWQoKSwgRG9udEVudW0gfCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZFByaXZhdGVOYW1lLCBqc1VuZGVmaW5lZCgpLCBEb250
RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5PYmplY3RQcml2YXRlTmFtZSwgb2JqZWN0Q29uc3RydWN0b3Is
IERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPlR5cGVFcnJvclByaXZhdGVOYW1lLCBtX3R5cGVFcnJv
ckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSkKICAg
ICB9OwogICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFscywgV1RGX0FSUkFZX0xFTkdU
SChzdGF0aWNHbG9iYWxzKSk7CiAgICAgCkBAIC02MDgsNiArNjEyLDcgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5bnRheEVycm9yQ29uc3RydWN0
b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3R5cGVFcnJvckNvbnN0cnVj
dG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9VUklFcnJvckNvbnN0cnVj
dG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9vYmplY3RDb25zdHJ1Y3Rv
cik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvbWlzZUNvbnN0cnVjdG9y
KTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2V2YWxGdW5jdGlvbik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBi
MGNhZDNkYzU0NzBmN2M3YTBlNTcwYmRjZDJkZmZhODk1ZTJhYTBjLi4zYTYxNmM2ZjA1ZWRmMWQy
OTVhZjg0NDFhYTY2NTAwZmI5MmE0YTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTY3LDYgKzY3LDcgQEAgY2xhc3MgSlNTdGFjazsK
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIE1pY3JvdGFzazsKIGNsYXNzIE5h
dGl2ZUVycm9yQ29uc3RydWN0b3I7CitjbGFzcyBPYmplY3RDb25zdHJ1Y3RvcjsKIGNsYXNzIFBy
b2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsKIGNsYXNzIFJlZ0V4cENv
bnN0cnVjdG9yOwpAQCAtMTU4LDYgKzE1OSw3IEBAIHByb3RlY3RlZDoKICAgICBXcml0ZUJhcnJp
ZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV90eXBlRXJyb3JDb25zdHJ1Y3RvcjsKICAgICBX
cml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV9VUklFcnJvckNvbnN0cnVjdG9y
OwogICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VDb25zdHJ1Y3Rvcj4gbV9wcm9taXNlQ29uc3Ry
dWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPE9iamVjdENvbnN0cnVjdG9yPiBtX29iamVjdENvbnN0
cnVjdG9yOwogCiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fZXZhbEZ1bmN0aW9uOwog
ICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2NhbGxGdW5jdGlvbjsKQEAgLTMzMCw2ICsz
MzIsNyBAQCBwdWJsaWM6CiAgICAgUmVnRXhwQ29uc3RydWN0b3IqIHJlZ0V4cENvbnN0cnVjdG9y
KCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBDb25zdHJ1Y3Rvci5nZXQoKTsgfQogCiAgICAgRXJy
b3JDb25zdHJ1Y3RvciogZXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JD
b25zdHJ1Y3Rvci5nZXQoKTsgfQorICAgIE9iamVjdENvbnN0cnVjdG9yKiBvYmplY3RDb25zdHJ1
Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0Q29uc3RydWN0b3IuZ2V0KCk7IH0KICAgICBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yKiBldmFsRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0
dXJuIG1fZXZhbEVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KICAgICBOYXRpdmVFcnJvckNvbnN0
cnVjdG9yKiByYW5nZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlRXJy
b3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHJlZmVy
ZW5jZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5jZUVycm9yQ29u
c3RydWN0b3IuZ2V0KCk7IH0KQEAgLTU4MSw3ICs1ODQsNyBAQCBpbmxpbmUgYm9vbCBKU0dsb2Jh
bE9iamVjdDo6aGFzT3duUHJvcGVydHlGb3JXcml0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZQogCiBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6c3ltYm9sVGFibGVIYXNQcm9wZXJ0
eShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50
cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7
CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChw
cm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIHJldHVybiAhZW50cnkuaXNOdWxsKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCAyYjY3YTFkOWVl
ZDg0ZTk5NTZmOGJiOTY4Mzg0Yzg0Y2FlYTUzY2ZmLi4yZWEyYzI0ZTZlYWI0Y2QwZDdmZmVkNjY1
ZWY0YWU0MWFmMDc1MGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBnZXRDbGFzc1Byb3Bl
cnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzCiAgICAgICAg
IGludCBoYXNoU2l6ZU1hc2sgPSB0YWJsZS0+Y29tcGFjdFNpemUgLSAxOwogICAgICAgICBjb25z
dCBIYXNoRW50cnkqIGVudHJ5ID0gdGFibGUtPnRhYmxlOwogICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8PSBoYXNoU2l6ZU1hc2s7ICsraSwgKytlbnRyeSkgewotICAgICAgICAgICAgaWYgKGVu
dHJ5LT5rZXkoKSAmJiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IChtb2Rl
ID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKSAmJiAhKChlbnRyeS0+YXR0cmlidXRlcygp
ICYgRnVuY3Rpb24pICYmIGRpZFJlaWZ5KSkKKyAgICAgICAgICAgIGlmIChlbnRyeS0+a2V5KCkg
JiYgKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCAobW9kZSA9PSBJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKSkgJiYgISgoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5P
ckZ1bmN0aW9uKSAmJiBkaWRSZWlmeSkpCiAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5h
ZGQoZW50cnktPmtleSgpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE2MTgsNyArMTYxOCw3IEBA
IHZvaWQgSlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGVsZXRlKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0
aGlzKTsKICAgICAgICAgZm9yIChIYXNoVGFibGU6OkNvbnN0SXRlcmF0b3IgaXRlciA9IGhhc2hU
YWJsZS0+YmVnaW4odm0pOyBpdGVyICE9IGhhc2hUYWJsZS0+ZW5kKHZtKTsgKytpdGVyKSB7Ci0g
ICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pCisgICAgICAgICAg
ICBpZiAoaXRlci0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pCiAgICAgICAgICAg
ICAgICAgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMo
KSwgKml0ZXIsIHRoaXMsIElkZW50aWZpZXIoJnZtLCBpdGVyLT5rZXkoKSksIHNsb3QpOwogICAg
ICAgICB9CiAgICAgfQpAQCAtMjIzNiw2ICsyMjM2LDE2IEBAIHZvaWQgSlNPYmplY3Q6OnB1dERp
cmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uCiAgICAgcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1dGVz
KTsKIH0KIAordm9pZCBKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0
eU5hbWUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKQoreworICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGlj
TmFtZSgpOworICAgIGlmICghbmFtZSkKKyAgICAgICAgbmFtZSA9IHZtLnByb3BlcnR5TmFtZXMt
PmFub255bW91cy5pbXBsKCk7CisgICAgQVNTRVJUKG5hbWUpOworICAgIEpTRnVuY3Rpb24qIGZ1
bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBzdGF0aWNfY2Fz
dDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBnbG9iYWxPYmplY3Qp
OworICAgIHB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCBmdW5jdGlvbiwgYXR0cmlidXRlcyk7
Cit9CisKIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0
eU5hbWUmIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0
aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzKQogewogICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggMDJiMTM3YjM1
MGMyZmE4MzI1YmQzYjk2NDcxMTJhYmU4NzZmMzgzZi4uZGRlNTk3ZWZmYWVjMGYxYjhkNDRjMjkx
MTk1MDMwMWYwNjAwN2U5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQnV0dGVyZmx5LmgiCiAjaW5jbHVkZSAi
Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ2xhc3NJbmZvLmgiCi0jaW5jbHVkZSAiQ29tbW9uSWRl
bnRpZmllcnMuaCIKICNpbmNsdWRlICJDb3B5V3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSAiRGVm
ZXJHQy5oIgogI2luY2x1ZGUgIkhlYXAuaCIKQEAgLTU4MSw2ICs1ODAsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBwdXREaXJlY3RVbmRlZmluZWQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSB7IGxvY2F0
aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNldFVuZGVmaW5lZCgpOyB9CiAKICAgICB2b2lkIHB1dERp
cmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5h
bWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywg
dW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgdm9pZCBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb24o
Vk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEZ1bmN0aW9uRXhlY3V0
YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIHZvaWQgcHV0RGlyZWN0TmF0aXZlRnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVy
dHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5z
aWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3Iu
Y3BwCmluZGV4IDQwMjYxOTYzM2ZhMDZmZDI1NGIzZjJhN2E4Y2M3MWU4MDdhYWY5MTEuLjE3ZDJh
YjY1YTg4ZmZiMTNmYTlhNmM4ZjU4M2NhODQ0YWY4MzIyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKQEAgLTM1
LDYgKzM1LDcgQEAKICNpbmNsdWRlICJKU1Byb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpT
UHJvbWlzZUZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZVByb3RvdHlwZS5oIgorI2lu
Y2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUg
Ik51bWJlck9iamVjdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5jcHAKaW5kZXggNjhhOGJkODdkMzhhZGJiYjlkZDJhYzllYzRiNDlkNWVmNDU0OWQ1Ni4uMjM3
YzQyYmIwZGEwZjE2Njc2ZWIxMWFkZTgxODBhN2IwNmQ5OGViNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAK
QEAgLTI5LDcgKzI5LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmgiCiAKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKaW5k
ZXggZjQzNjJmZjM1NGVlNmE1MDIyMWJiNzMxZDFhMjYxMWU2ZGQ2MWJjMC4uZDA3MzcxOWRlMTYw
ZDJmMjkyMTEwYTU5NmExMDVlMmZhMjExNWZmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaApAQCAtMzEsNyArMzEs
NiBAQAogCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgotI2lu
Y2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogI2lu
Y2x1ZGUgPG1lbW9yeT4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgK
aW5kZXggMmIxY2RkZGM1ODQxZDYwZDE1N2EyZTYxZjcwMmIwZWU1ZmExZDY3Ni4uZTM5MzQxNjBh
ZWE5MjZlZjE1OTMyZjg3OTBlMjRjNTJhZjAyZDM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0cmluZy5oCkBAIC0yNCw3ICsyNCw2IEBACiAjZGVmaW5lIEpTU3RyaW5nX2gK
IAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgotI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgi
CiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlByb3BlcnR5RGVzY3JpcHRvci5o
IgogI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgpAQCAtNDcyLDMzICs0NzEsNiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKCZl
eGVjLT52bSgpLCBzKTsgfQogICAgIGlubGluZSBKU1N0cmluZyoganNPd25lZFN0cmluZyhFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4ganNPd25lZFN0cmluZygmZXhl
Yy0+dm0oKSwgcyk7IH0KIAotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3Ry
aW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQotICAgIHsKLSAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9
PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7Ci0gICAgICAgICAgICBzbG90LnNldFZh
bHVlKHRoaXMsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBqc051bWJlcihtX2xl
bmd0aCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICB1
bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKLSAgICAgICAgaWYgKGkgPCBtX2xl
bmd0aCkgewotICAgICAgICAgICAgQVNTRVJUKGkgIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4
KTsgLy8gTm8gbmVlZCBmb3IgYW4gZXhwbGljaXQgY2hlY2ssIHRoZSBhYm92ZSB0ZXN0IHdvdWxk
IGFsd2F5cyBmYWlsIQotICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRl
IHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIGkpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAgICAgICAg
IAotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90
KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCi0gICAgewotICAgICAgICBpZiAocHJvcGVydHlOYW1lIDwgbV9sZW5ndGgpIHsKLSAgICAg
ICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBnZXRJbmRl
eChleGVjLCBwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQogICAgIGlubGluZSBib29sIGlz
SlNTdHJpbmcoSlNWYWx1ZSB2KSB7IHJldHVybiB2LmlzQ2VsbCgpICYmIHYuYXNDZWxsKCktPmNs
YXNzSW5mbygpID09IEpTU3RyaW5nOjppbmZvKCk7IH0KIAogICAgIC8vIC0tLSBKU1ZhbHVlIGlu
bGluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTI4LDMyICs1MDAsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIHRvV1RGU3RyaW5nU2xvd0Nhc2UoZXhlYyk7
CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBTdHJpbmcgaW5saW5lSlNWYWx1ZU5vdFN0cmlu
Z3RvU3RyaW5nKGNvbnN0IEpTVmFsdWUmIHZhbHVlLCBFeGVjU3RhdGUqIGV4ZWMpCi0gICAgewot
ICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgICAgICBpZiAodmFsdWUuaXNJbnQzMigp
KQotICAgICAgICAgICAgcmV0dXJuIHZtLm51bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZS5hc0ludDMy
KCkpOwotICAgICAgICBpZiAodmFsdWUuaXNEb3VibGUoKSkKLSAgICAgICAgICAgIHJldHVybiB2
bS5udW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNEb3VibGUoKSk7Ci0gICAgICAgIGlmICh2YWx1
ZS5pc1RydWUoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT50cnVlS2V5
d29yZC5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzRmFsc2UoKSkKLSAgICAgICAgICAg
IHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5mYWxzZUtleXdvcmQuc3RyaW5nKCk7Ci0gICAgICAg
IGlmICh2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVz
LT5udWxsS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkKCkp
Ci0gICAgICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZC5z
dHJpbmcoKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIFN0cmluZyBKU1ZhbHVlOjp0b1dURlN0cmlu
Z0lubGluZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoaXNTdHJp
bmcoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU1N0cmluZyo+KGFzQ2VsbCgp
KS0+dmFsdWUoZXhlYyk7Ci0KLSAgICAgICAgcmV0dXJuIGlubGluZUpTVmFsdWVOb3RTdHJpbmd0
b1N0cmluZygqdGhpcywgZXhlYyk7Ci0gICAgfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2Vu
ZGlmIC8vIEpTU3RyaW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmdJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzc4YzA1ZmM4MGQ4OGU4NTM3YzlkMmE1ZWFiOWZm
MGJhOWI2MGE3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nSW5saW5lcy5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTU3RyaW5nSW5saW5l
c19oCisjZGVmaW5lIEpTU3RyaW5nSW5saW5lc19oCisKKyNpbmNsdWRlICJDb21tb25JZGVudGlm
aWVycy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNTdHJp
bmcuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0FMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6
Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0g
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgeworICAgICAgICBzbG90LnNldFZhbHVlKHRo
aXMsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBqc051bWJlcihtX2xlbmd0aCkp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgaSA9IHBy
b3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGkgPCBtX2xlbmd0aCkgeworICAgICAgICBB
U1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOyAvLyBObyBuZWVkIGZvciBhbiBl
eHBsaWNpdCBjaGVjaywgdGhlIGFib3ZlIHRlc3Qgd291bGQgYWx3YXlzIGZhaWwhCisgICAgICAg
IHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBnZXRJbmRleChleGVj
LCBpKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK0FMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlT
bG90KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCit7CisgICAgaWYgKHByb3BlcnR5TmFtZSA8IG1fbGVuZ3RoKSB7CisgICAgICAgIHNs
b3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBnZXRJbmRleChleGVjLCBw
cm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHJl
dHVybiBmYWxzZTsKK30KKworQUxXQVlTX0lOTElORSBTdHJpbmcgaW5saW5lSlNWYWx1ZU5vdFN0
cmluZ3RvU3RyaW5nKGNvbnN0IEpTVmFsdWUmIHZhbHVlLCBFeGVjU3RhdGUqIGV4ZWMpCit7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBpZiAodmFsdWUuaXNJbnQzMigpKQorICAgICAg
ICByZXR1cm4gdm0ubnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVlLmFzSW50MzIoKSk7CisgICAgaWYg
KHZhbHVlLmlzRG91YmxlKCkpCisgICAgICAgIHJldHVybiB2bS5udW1lcmljU3RyaW5ncy5hZGQo
dmFsdWUuYXNEb3VibGUoKSk7CisgICAgaWYgKHZhbHVlLmlzVHJ1ZSgpKQorICAgICAgICByZXR1
cm4gdm0ucHJvcGVydHlOYW1lcy0+dHJ1ZUtleXdvcmQuc3RyaW5nKCk7CisgICAgaWYgKHZhbHVl
LmlzRmFsc2UoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPmZhbHNlS2V5d29y
ZC5zdHJpbmcoKTsKKyAgICBpZiAodmFsdWUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiB2bS5w
cm9wZXJ0eU5hbWVzLT5udWxsS2V5d29yZC5zdHJpbmcoKTsKKyAgICBpZiAodmFsdWUuaXNVbmRl
ZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdv
cmQuc3RyaW5nKCk7CisgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KTsKK30KKyAgICAKK0FMV0FZU19JTkxJTkUgU3RyaW5nIEpTVmFsdWU6OnRvV1RGU3RyaW5nSW5s
aW5lKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBpZiAoaXNTdHJpbmcoKSkKKyAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTU3RyaW5nKj4oYXNDZWxsKCkpLT52YWx1ZShleGVjKTsK
KyAgICAKKyAgICByZXR1cm4gaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKCp0aGlzLCBl
eGVjKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKaW5kZXggMmFjMjUyNGM1ZGZkYTNkMTIy
NDlkNzc5MGFkYzMxMjllM2MwZTg3MS4uZmJjOGI4OTVlYWU2YWY3ODg4MzliZWI1ZTgzZDdiNmI5
NzkyOGZhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1i
b2xUYWJsZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
eW1ib2xUYWJsZU9iamVjdC5jcHAKQEAgLTY0LDYgKzY0LDggQEAgdm9pZCBKU1N5bWJvbFRhYmxl
T2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXQKICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIodGhpc09iamVjdC0+c3lt
Ym9sVGFibGUoKS0+bV9sb2NrKTsKICAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3Ig
ZW5kID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+ZW5kKGxvY2tlcik7CiAgICAgICAgIGZv
ciAoU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXQgPSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJs
ZSgpLT5iZWdpbihsb2NrZXIpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIGlmIChp
dC0+a2V5LT5pc0VtcHR5VW5pcXVlKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICBpZiAoIShpdC0+dmFsdWUuZ2V0QXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8ICht
b2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKQogICAgICAgICAgICAgICAgIHByb3Bl
cnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgaXQtPmtleS5nZXQoKSkpOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxl
T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2Jq
ZWN0LmgKaW5kZXggYjViMjBhODQ1YjZhYjY0NDI0YjM3ZTMxYjI3NzRlZjkwNTM1M2Y3Zi4uZDAz
YjI0NTExYzJkZTE5NTlmYjVmNTZkNjQ5YzY0ZDBlZmUwNjg1NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaApAQCAtNzIsNyAr
NzIsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKIHsKICAgICBTeW1ib2xUYWJsZSYg
c3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgIENvbmN1cnJlbnRKSVRM
b2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAgU3ltYm9sVGFibGU6Ok1hcDo6
aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVi
bGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9s
VGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGl0ZXIgPT0g
c3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBTeW1i
b2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+dmFsdWU7CkBAIC04Nyw3ICs4Nyw3IEBA
IGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogewogICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xU
YWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgQ29uY3VycmVudEpJVExvY2tlciBs
b2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRv
ciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1l
KCkpOworICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5m
aW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoaXRlciA9PSBzeW1ib2xU
YWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFN5bWJvbFRhYmxl
RW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1ZTsKQEAgLTEwNCw3ICsxMDQsNyBAQCBpbmxp
bmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKIHsKICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUg
PSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2Vy
KHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRl
ciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsK
KyAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChs
b2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUu
ZW5kKGxvY2tlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBTeW1ib2xUYWJsZUVudHJ5
OjpGYXN0IGVudHJ5ID0gaXRlci0+dmFsdWU7CkBAIC0xMjYsNyArMTI2LDcgQEAgaW5saW5lIGJv
b2wgc3ltYm9sVGFibGVQdXQoCiAgICAgewogICAgICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFi
bGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBHQ1NhZmVDb25jdXJyZW50SklU
TG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2ssIGV4ZWMtPnZtKCkuaGVhcCk7Ci0gICAg
ICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxv
Y2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgICAgIFN5bWJvbFRhYmxlOjpN
YXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1l
LnVpZCgpKTsKICAgICAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJvb2wgd2FzRmF0OwpAQCAtMTU5LDcg
KzE1OSw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoCiAgICAg
ewogICAgICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJs
ZSgpOwogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xv
Y2spOwotICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFi
bGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgICAgICBTeW1i
b2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHBy
b3BlcnR5TmFtZS51aWQoKSk7CiAgICAgICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZChs
b2NrZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBTeW1ib2xUYWJsZUVu
dHJ5JiBlbnRyeSA9IGl0ZXItPnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTG9va3VwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xv
b2t1cC5jcHAKaW5kZXggYTgwNmRkMDUyYTBjYmVlNGNhYzJjYWE2ZTA4YzY3MTYwMDVjMjcwYy4u
YTk3NjUyMDFiOWY1MTg2NDE0MjNkZGUwZmUwZTJlNTFhOGNlNzNiYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgSGFzaFRh
YmxlOjpkZWxldGVUYWJsZSgpIGNvbnN0CiBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIHRoaXNPYmos
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBB
U1NFUlQodGhpc09iai0+Z2xvYmFsT2JqZWN0KCkpOwotICAgIEFTU0VSVChlbnRyeS0+YXR0cmli
dXRlcygpICYgRnVuY3Rpb24pOworICAgIEFTU0VSVChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVp
bHRpbk9yRnVuY3Rpb24pOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgdW5zaWduZWQg
YXR0cmlidXRlczsKICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSB0aGlzT2JqLT5nZXREaXJl
Y3RPZmZzZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CkBAIC03OSw5ICs3OSwxMyBA
QCBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFz
aEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqCiAgICAgICAgIGlmICh0aGlzT2JqLT5zdGF0aWNGdW5j
dGlvbnNSZWlmaWVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgICAg
IHRoaXNPYmotPnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKAotICAgICAgICAgICAgdm0sIHRoaXNP
YmotPmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5mdW5jdGlvbkxlbmd0aCgp
LAotICAgICAgICAgICAgZW50cnktPmZ1bmN0aW9uKCksIGVudHJ5LT5pbnRyaW5zaWMoKSwgZW50
cnktPmF0dHJpYnV0ZXMoKSk7CisgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVp
bHRpbikKKyAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbih2bSwg
dGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZW50cnktPmJ1aWx0aW5HZW5l
cmF0b3IoKSh2bSksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIHRoaXNPYmotPnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKAorICAgICAgICAgICAgICAg
IHZtLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBlbnRyeS0+ZnVuY3Rp
b25MZW5ndGgoKSwKKyAgICAgICAgICAgICAgICBlbnRyeS0+ZnVuY3Rpb24oKSwgZW50cnktPmlu
dHJpbnNpYygpLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAgICAgICAgfQogICAgICAgICBvZmZz
ZXQgPSB0aGlzT2JqLT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRl
cyk7CiAgICAgICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKaW5kZXggYmRlODNkNGE2ZmMzNTU3Nzg1MGUz
MWU4OGJjMzlmZDA1ZjdiY2U1Mi4uZGJhMzg5ZTllMjQzZGQwZWNiMmJhOThmMzk0ZDQwNzlmOWRl
YTkzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKQEAgLTQzLDYgKzQz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgLy8gaWUuIHR5cGVkZWYgSlNWYWx1ZSAoKkdldEZ1
bmN0aW9uKShFeGVjU3RhdGUqLCBKU09iamVjdCogYmFzZU9iamVjdCkKICAgICB0eXBlZGVmIFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIEdldEZ1bmN0aW9uOwogICAgIHR5cGVkZWYgUHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmMgUHV0RnVuY3Rpb247CisgICAgdHlwZWRlZiBGdW5jdGlv
bkV4ZWN1dGFibGUqICgqQnVpbHRpbkdlbmVyYXRvcikoVk0mKTsKIAogICAgIGNsYXNzIEhhc2hF
bnRyeSB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjgsMTEgKzY5LDEy
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1faW50cmluc2ljOwogICAg
ICAgICB9CiAKKyAgICAgICAgQnVpbHRpbkdlbmVyYXRvciBidWlsdGluR2VuZXJhdG9yKCkgY29u
c3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgQnVpbHRpbik7IHJldHVybiBtX3UuYnVpbHRpbkdl
bmVyYXRvci5nZW5lcmF0b3JWYWx1ZTsgfQogICAgICAgICBOYXRpdmVGdW5jdGlvbiBmdW5jdGlv
bigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKTsgcmV0dXJuIG1fdS5m
dW5jdGlvbi5mdW5jdGlvblZhbHVlOyB9CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgZnVuY3Rpb25M
ZW5ndGgoKSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBGdW5jdGlvbik7IHJldHVybiBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihtX3UuZnVuY3Rpb24ubGVuZ3RoKTsgfQogCi0gICAg
ICAgIEdldEZ1bmN0aW9uIHByb3BlcnR5R2V0dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0dHJp
YnV0ZXMgJiBGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5LmdldDsgfQotICAgICAgICBQ
dXRGdW5jdGlvbiBwcm9wZXJ0eVB1dHRlcigpIGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1dGVz
ICYgRnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0eS5wdXQ7IH0KKyAgICAgICAgR2V0RnVu
Y3Rpb24gcHJvcGVydHlHZXR0ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEJ1
aWx0aW5PckZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVydHkuZ2V0OyB9CisgICAgICAgIFB1
dEZ1bmN0aW9uIHByb3BlcnR5UHV0dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMg
JiBCdWlsdGluT3JGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5LnB1dDsgfQogCiAgICAg
ICAgIGludHB0cl90IGxleGVyVmFsdWUoKSBjb25zdCB7IEFTU0VSVCghbV9hdHRyaWJ1dGVzKTsg
cmV0dXJuIG1fdS5sZXhlci52YWx1ZTsgfQogCkBAIC05NCw2ICs5NiwxMCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgICAgICBpbnRwdHJfdCBsZW5ndGg7IC8vIG51bWJlciBvZiBhcmd1
bWVudHMgZm9yIGZ1bmN0aW9uCiAgICAgICAgICAgICB9IGZ1bmN0aW9uOwogICAgICAgICAgICAg
c3RydWN0IHsKKyAgICAgICAgICAgICAgICBCdWlsdGluR2VuZXJhdG9yIGdlbmVyYXRvclZhbHVl
OworICAgICAgICAgICAgICAgIGludHB0cl90IHVudXNlZDsKKyAgICAgICAgICAgIH0gYnVpbHRp
bkdlbmVyYXRvcjsKKyAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgR2V0RnVu
Y3Rpb24gZ2V0OwogICAgICAgICAgICAgICAgIFB1dEZ1bmN0aW9uIHB1dDsKICAgICAgICAgICAg
IH0gcHJvcGVydHk7CkBAIC0yMDksNyArMjE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJp
dmF0ZToKICAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBIYXNoRW50cnkqIGVudHJ5KFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cmlu
Z0ltcGwqIGltcGwgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOworICAgICAgICAgICAgU3Ry
aW5nSW1wbCogaW1wbCA9IHByb3BlcnR5TmFtZS51aWQoKTsKICAgICAgICAgICAgIGlmICghaW1w
bCkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgCkBAIC0yNDksNyArMjU1LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGlmICghZW50cnkpIC8vIG5vdCBmb3VuZCwgZm9y
d2FyZCB0byBwYXJlbnQKICAgICAgICAgICAgIHJldHVybiBQYXJlbnRJbXA6OmdldE93blByb3Bl
cnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCi0gICAgICAgIGlm
IChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pCisgICAgICAgIGlmIChlbnRyeS0+YXR0
cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pCiAgICAgICAgICAgICByZXR1cm4gc2V0VXBT
dGF0aWNGdW5jdGlvblNsb3QoZXhlYywgZW50cnksIHRoaXNPYmosIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiAKICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09iaiwgZW50cnktPmF0
dHJpYnV0ZXMoKSwgZW50cnktPnByb3BlcnR5R2V0dGVyKCkpOwpAQCAtMjg2LDcgKzI5Miw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpZiAoIWVudHJ5KSAvLyBub3QgZm91bmQsIGZvcndh
cmQgdG8gcGFyZW50CiAgICAgICAgICAgICByZXR1cm4gUGFyZW50SW1wOjpnZXRPd25Qcm9wZXJ0
eVNsb3QodGhpc09iaiwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIAotICAgICAgICBBU1NF
UlQoIShlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pKTsKKyAgICAgICAgQVNTRVJUKCEo
ZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSk7CiAKICAgICAgICAgc2xv
dC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09iaiwgZW50cnktPmF0dHJpYnV0ZXMoKSwgZW50cnkt
PnByb3BlcnR5R2V0dGVyKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI5NSw3ICszMDEs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgdm9pZCBwdXRFbnRyeShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0KiBiYXNlLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiAg
ICAgewogICAgICAgICAvLyBJZiB0aGlzIGlzIGEgZnVuY3Rpb24gcHV0IGl0IGFzIGFuIG92ZXJy
aWRlIHByb3BlcnR5LgotICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9u
KSB7CisgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24p
IHsKICAgICAgICAgICAgIGlmIChKU09iamVjdCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNPYmplY3QqPihzbG90LnRoaXNWYWx1ZSgpKSkKICAgICAgICAgICAgICAgICB0aGlzT2JqZWN0
LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CiAgICAgICAgIH0g
ZWxzZSBpZiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgUmVhZE9ubHkpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3Iu
Y3BwCmluZGV4IGQ1ZTcyOGMyY2QxMDIwYTQ3ZTRhZGNkNjQ5Y2QxZmZmYTVjZDZhODMuLmRjYTJm
ZDhkMWY2YWMyM2I4ZmY4MTdjYmIxOGZhYWU3YmNkNTk3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCkBA
IC0zOCw2ICszOCwyMCBAQCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpOYXRpdmVFcnJvckNvbnN0
cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiB9CiAKK3ZvaWQgTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgU3RyaW5n
JiBuYW1lKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBuYW1lKTsKKyAgICBBU1NF
UlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAgCisgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHBy
b3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlU3RydWN0dXJlLCBuYW1lLCB0aGlzKTsKKyAgICAKKyAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIERvbnREZWxldGUgfCBSZWFk
T25seSB8IERvbnRFbnVtKTsgLy8gRUNNQSAxNS4xMS43LjUKKyAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RGVsZXRlIHwgUmVhZE9u
bHkgfCBEb250RW51bSk7CisgICAgbV9lcnJvclN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEVycm9y
SW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUpKTsK
KyAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZSk7CisgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1
cmUtPmlzT2JqZWN0KCkpOworfQorCiB2b2lkIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBOYXRp
dmVFcnJvckNvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PE5hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAppbmRleCA3NDBkM2Y5MzMyOTJmZDJhY2NiNGI5OTAz
NDQzMTJiOTMxOWFlMTEwLi40MzhhM2FmYjliYjBmNjQxMmM5NzkzMjIzMGM4ODcxMDk2MWY1NDY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvci5oCkBAIC01MSwxOSArNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fZXJyb3JTdHJ1Y3R1cmUu
Z2V0KCk7IH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogcHJvdG90eXBl
U3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtLCBuYW1lKTsKLSAgICAgICAgICAgIEFTU0VSVChpbmhlcml0
cyhpbmZvKCkpKTsKLQotICAgICAgICAgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlw
ZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlU3RydWN0dXJlLCBuYW1lLCB0aGlzKTsKLQotICAgICAgICAgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBEb250RGVsZXRlIHwgUmVhZE9u
bHkgfCBEb250RW51bSk7IC8vIEVDTUEgMTUuMTEuNy41Ci0gICAgICAgICAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RGVsZXRlIHwg
UmVhZE9ubHkgfCBEb250RW51bSk7Ci0gICAgICAgICAgICBtX2Vycm9yU3RydWN0dXJlLnNldCh2
bSwgdGhpcywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSkpOwotICAgICAgICAgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUpOwotICAg
ICAgICAgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwotICAgICAgICB9
CisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAppbmRleCBkOTM4
ZmEzMTY0NWFmMjZiNzU4NTE0ZGI2YjI0NzhmMTgzZTllZWUxLi5jZmU5YzRkMzJiYTc2OGM3NGU0
ZmZiYjE5MTM1Mjc5ZGViZjExNzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eVNsb3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eVNsb3QuaApAQCAtNDIsNiArNDIsOCBAQCBlbnVtIEF0dHJpYnV0ZSB7CiAgICAg
RnVuY3Rpb24gICAgID0gMSA8PCA0LCAgLy8gcHJvcGVydHkgaXMgYSBmdW5jdGlvbiAtIG9ubHkg
dXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIEFjY2Vzc29yICAgICA9IDEgPDwgNSwgIC8v
IHByb3BlcnR5IGlzIGEgZ2V0dGVyL3NldHRlcgogICAgIEN1c3RvbUFjY2Vzc29yID0gMSA8PCA2
LAorICAgIEJ1aWx0aW4gICAgICAgICA9IDEgPDwgNywgLy8gcHJvcGVydHkgaXMgYSBidWlsdGlu
IGZ1bmN0aW9uIC0gb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCisgICAgQnVpbHRpbk9y
RnVuY3Rpb24gPSBCdWlsdGluIHwgRnVuY3Rpb24sIC8vIGhlbHBlciBvbmx5IHVzZWQgYnkgc3Rh
dGljIGhhc2h0YWJsZXMKIH07CiAKIGNsYXNzIFByb3BlcnR5U2xvdCB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYmM1
MTZiMDZkNjY1MWYwZTY4MmEyMDE3YmRmOGIwM2JhYmVkNmVhMi4uMmMyNDM0Yjg3ZDA0Zjc0OWNi
MTJlNjAyYWI1NDc4NDk0NmE5MWYxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1
ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgiCiAKICNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUg
IkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJS
ZWdFeHBNYXRjaGVzQXJyYXkuaCIKICNpbmNsdWRlICJSZWdFeHBQcm90b3R5cGUuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCmluZGV4
IDg5ZDdhYzFiOGNiZjFkYjBlMTI2ZjFmYzc5NmRmZDVmYzg0YjJlNTkuLjlkZGEwYmE4ZGUxNDEy
ZWFmNGQyOTFkY2YwYzZiMzk2NTdmYjY3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcApAQCAtMjQsNyArMjQsNyBAQAogI2luY2x1
ZGUgIkFycmF5UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJKU0Fy
cmF5LmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAj
aW5jbHVkZSAiSlNTdHJpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NldENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NldENvbnN0cnVjdG9yLmNwcAppbmRleCBiMjAzODg4ZDNjMTZjZGEzYzAwMzUwNjIwOGFlMDg2
OTVkYzVkYWFhLi5kMDI2NmE1OWVmM2Y1NWFhMzY5NGY1Zjc0MThjZjc4ZTBhZTBkOGIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCkBA
IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
R2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTZXQuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lu
bGluZXMuaCIKICNpbmNsdWRlICJNYXBEYXRhLmgiCiAjaW5jbHVkZSAiU2V0UHJvdG90eXBlLmgi
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCmlu
ZGV4IDQ0MGE2MDk0MjE5MzM4MDMxZTU5MjdhZjQ2YjI4OWRiY2ZiNWE3MjguLjgwZTdlYWE4YzQ5
MWNiNmQ1NGE4MzI0Y2U2NDdhNmNkYjdlODg3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAtMjIsNyArMjIsOSBAQAogI2luY2x1ZGUg
IlN0cmluZ09iamVjdC5oIgogCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNT
dHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlByb3Bl
cnR5TmFtZUFycmF5LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwCmluZGV4IDA0MjkxZjdlOGRkMjRlOGFiMzNkNzVhZjFkYTQ1NjhmMmJjOTllNjguLjFl
Y2FiODVjMGJkYjI4Njk4OTQ1NzdhNzQxMjU0ZTM2NDQxNDlkODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMjcsMTIgKzI3LDE4IEBACiAjaW5j
bHVkZSAiU3RydWN0dXJlLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJD
b21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkR1bXBDb250ZXh0LmgiCisjaW5jbHVkZSAi
SlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1
ZGUgIkxvb2t1cC5oIgorI2luY2x1ZGUgIlByb3BlcnR5TWFwSGFzaFRhYmxlLmgiCiAjaW5jbHVk
ZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIK
ICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMu
aCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYv
Q29tbWFQcmludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDUyY2NmNDIzYTEwNDNlMTA3OWYy
ZDhiMTg5NDIxOTg5MGU3MWYyYmMuLjAyMDY5NWZhYzgzZWQ0ZTUxODViNzBlNjk2OTk2M2EyZGU5
YTM2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbmNsdWRlICJBcmdMaXN0LmgiCiAjaW5jbHVkZSAiQXJpdHlDaGVja0ZhaWxSZXR1cm5U
aHVua3MuaCIKICNpbmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaCIKKyNp
bmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWVJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29kZUNhY2hlLmgiCkBAIC01
NSw3ICs1Niw5IEBACiAjaW5jbHVkZSAiSlNBUElWYWx1ZVdyYXBwZXIuaCIKICNpbmNsdWRlICJK
U0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCi0jaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5s
aW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU05h
bWVTY29wZS5oIgpAQCAtNjgsMTMgKzcxLDE2IEBACiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5j
bHVkZSAiTWFwRGF0YS5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCisjaW5jbHVkZSAiUGFyc2VyLmgi
CiAjaW5jbHVkZSAiUGFyc2VyQXJlbmEuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eU1hcEhhc2hUYWJs
ZS5oIgogI2luY2x1ZGUgIlJlZ0V4cENhY2hlLmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTb3Vy
Y2VQcm92aWRlckNhY2hlLmgiCiAjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKICNp
bmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgog
I2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiV2Vha01hcERhdGEuaCIK
ICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CkBAIC0yMjYsNiArMjMyLDcgQEAgVk06OlZNKFZN
VHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9pbkRlZmluZU93blByb3Bl
cnR5KGZhbHNlKQogICAgICwgbV9jb2RlQ2FjaGUoQ29kZUNhY2hlOjpjcmVhdGUoKSkKICAgICAs
IG1fZW5hYmxlZFByb2ZpbGVyKG51bGxwdHIpCisgICAgLCBtX2J1aWx0aW5FeGVjdXRhYmxlcyhC
dWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgaW50ZXJwcmV0ZXIgPSBu
ZXcgSW50ZXJwcmV0ZXIoKnRoaXMpOwogICAgIFN0YWNrQm91bmRzIHN0YWNrID0gd3RmVGhyZWFk
RGF0YSgpLnN0YWNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA1YTg0MTA1
ZWFmYjdhYmJhNWZhNDMxZWVlZGQ1NWQ3YTg5ZjU1Y2UyLi42OTU4YWMzOTNiMWFlZmMwYmVmYmY2
ZTRlYjhiNjgyNWNmN2M5YTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTQ0
LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJQcml2YXRlTmFtZS5oIgogI2luY2x1ZGUgIlByb3RvdHlw
ZU1hcC5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgorI2luY2x1ZGUgIlNvdXJjZUNvZGUu
aCIKICNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKICNp
bmNsdWRlICJUeXBlZEFycmF5Q29udHJvbGxlci5oIgpAQCAtNjksNiArNzAsNyBAQAogbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcml0eUNoZWNrRmFpbFJldHVyblRodW5rczsKKyAgICBj
bGFzcyBCdWlsdGluRXhlY3V0YWJsZXM7CiAgICAgY2xhc3MgQ29kZUJsb2NrOwogICAgIGNsYXNz
IENvZGVDYWNoZTsKICAgICBjbGFzcyBDb21tb25JZGVudGlmaWVyczsKQEAgLTQ5Nyw2ICs0OTks
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCByZWdpc3RlcldhdGNocG9pbnRGb3JJ
bXB1cmVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyJiwgV2F0Y2hwb2ludCopOwogICAgICAgICAv
LyBGSVhNRTogVXNlIEF0b21pY1N0cmluZyBvbmNlIGl0IGdvdCBtZXJnZWQgd2l0aCBJZGVudGlm
aWVyLgogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFkZEltcHVyZVByb3BlcnR5KGNv
bnN0IFN0cmluZyYpOworICAgICAgICAKKyAgICAgICAgQnVpbHRpbkV4ZWN1dGFibGVzKiBidWls
dGluRXhlY3V0YWJsZXMoKSB7IHJldHVybiBtX2J1aWx0aW5FeGVjdXRhYmxlcy5nZXQoKTsgfQog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKQEAgLTUzNywxMCArNTQxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWUg
bV9leGNlcHRpb247CiAgICAgICAgIGJvb2wgbV9pbkRlZmluZU93blByb3BlcnR5OwogICAgICAg
ICBPd25QdHI8Q29kZUNhY2hlPiBtX2NvZGVDYWNoZTsKLSAgICAgICAgUmVmQ291bnRlZEFycmF5
PFN0YWNrRnJhbWU+IG1fZXhjZXB0aW9uU3RhY2s7Ci0KICAgICAgICAgTGVnYWN5UHJvZmlsZXIq
IG1fZW5hYmxlZFByb2ZpbGVyOwotCisgICAgICAgIE93blB0cjxCdWlsdGluRXhlY3V0YWJsZXM+
IG1fYnVpbHRpbkV4ZWN1dGFibGVzOworICAgICAgICBSZWZDb3VudGVkQXJyYXk8U3RhY2tGcmFt
ZT4gbV9leGNlcHRpb25TdGFjazsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxXYXRj
aHBvaW50U2V0Pj4gbV9pbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnRTZXRzOwogICAgIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNTdHJp
bmdJbmxpbmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pT
U3RyaW5nSW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwZmNjMzg0ZThlZGZjMzRiMTQwODNiODY1ZDM3
MzgyMGY0MTY1YzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRl
ZiBXZWJDb3JlX0ZXRF9KU1N0cmluZ0lubGluZXNfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9KU1N0
cmluZ0lubGluZXNfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nSW5saW5lcy5o
PgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVp
Y2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVn
aW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcAppbmRleCAyZWRkY2RiYjlmMDA2Y2E3
NjI2NjUwYjQyMDI3ODYyNmI5MjYxNDE3Li4zYzRlMGQ3YmJiMzFjYWIxMmI1ZTZjOTc1Yzc0ZDNm
NDg0ZTljYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVp
Y2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZUlubGlu
ZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ0lubGluZXMuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNJREJBbnlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJB
bnlDdXN0b20uY3BwCmluZGV4IDU2NDljODVjYTA5NTg3NzQ4YTNkYTA2Y2RkZDBjYTk5OWU1MGI4
ZTcuLjNmNGQ4ZWZhZWI1N2YzMzAwM2U3M2E3ZTc4NDJlNDJjNzNjZTY0OTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFueUN1c3RvbS5jcHAKQEAgLTQ3LDYgKzQ3LDcg
QEAKICNpbmNsdWRlICJKU0lEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSlNJREJUcmFuc2Fj
dGlvbi5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPHJ1
bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKaW5k
ZXggOWVhZTc1NjljNzA2MDNhNGZlZDBhZjE0YzRmODcxOGNkZTY0YTZlMS4uZjQ5ZGZlOTBiNGU4
MmQzOWVkY2JmOWJhMjlmMmFlNzk5YzBkZGYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNp
bmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIkpTSURCT2JqZWN0U3RvcmUuaCIK
ICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5o
PgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2Jq
ZWN0U3RvcmVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmpl
Y3RTdG9yZUN1c3RvbS5jcHAKaW5kZXggNzRmZDM1NGIyODYwN2NmNzgyMmY4MDUzNDc5NzBmNWQ3
YWM4YzgzMi4uNTQzNGIzYjdkNmM1NmVjYjBhMDNhMjc5NGM2NzM2YTlhZGZiNzBlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3Rv
bS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgogI2lu
Y2x1ZGUgIkpTSURCSW5kZXguaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0jaW5jbHVk
ZSA8cnVudGltZS9KU1N0cmluZy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVz
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5MTI2YzdlODJjMDNlNDU3YWMx
NzYzYjVmMDY1M2U0NzM5OWQ0YTQ2Li4yMDAyODA5OWY0MjUyMDhkNzM5NGQ5NGRmZjI5MTE3Y2M1
YzIxN2UxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8
b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVu
dCBKUyBidWlsdGlucyBpbiBKUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI3ODg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlZCB0aGUgdGVzdCByZXN1bHRzIGZvciBuZXcgZXJyb3IgbWVzc2Fn
ZXMgKG5vdyB0aGF0IHRoZXkncmUKKyAgICAgICAgYWN0dWFsbHkgaGVscGZ1bCksIGFuZCBhZGRl
ZCBhIGpzLXJlZ3Jlc3MgdGVzdCB0byB0cmFjayBwZXJmb3JtYW5jZS4KKworICAgICAgICAqIGpz
L2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9kb20vYXJyYXktcHJvdG90
eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL3JlZ3Jlc3MvYXJyYXkt
cHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVz
cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVz
cy9zY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzOiBBZGRlZC4KKyAgICAgICAg
KHRlc3QxKToKKyAgICAgICAgKHRlc3QyKToKKyAgICAgICAgKHRlc3QzKToKKwogMjAxNC0wMS0z
MCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzM3MQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyYXktZXZl
cnktZXhwZWN0ZWQudHh0CmluZGV4IDU0MWI4YzM1OGYwNjhhMGNlYTg4MmMxMDUxNzUzMjUxMTRj
ZDMzZjcuLmNjYTM2M2RjZTU4ZmJhOTVhNThjZTQ2ZmNiNDhjMzhiZjU4YWRmNTkgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9qcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQKQEAgLTMwLDEyICszMCwxMiBAQCBQQVNT
IFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoaXNCaWdFbm91Z2hBbmRFeGNlcHRpb24pIHRocmV3
IGV4Y2VwdGlvbiBleGNlcHRpbwogUEFTUyBbMTIsIDU0LCAxOCwgMTMwLCA0NF0uZXZlcnkoaXNC
aWdFbm91Z2hBbmRFeGNlcHRpb24pIHRocmV3IGV4Y2VwdGlvbiBleGNlcHRpb24gZnJvbSBmdW5j
dGlvbi4KIAogNS4wIFdyb25nIFR5cGUgZm9yIENhbGxiYWNrIFRlc3QKLVBBU1MgWzEyLCA1LCA4
LCAxMzAsIDQ0XS5ldmVyeSg1KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9y
LgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCd3cm9uZycpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnko
bmV3IE9iamVjdCgpKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFT
UyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkodW5kZWZpbmVk
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgs
IDEzMCwgNDRdLmV2ZXJ5KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4K
K1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSg1KSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgor
UEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCd3cm9uZycpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rp
b24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkobmV3IE9iamVjdCgpKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBi
ZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KG51bGwpIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0
IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkodW5kZWZpbmVk
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJh
Y2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCkg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNr
IG11c3QgYmUgYSBmdW5jdGlvbi4KIAogNi4wIEVhcmx5IEV4aXQgKCJTaG9ydCBDaXJjdWl0aW5n
IikKIFBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShpc0JpZ0Vub3VnaFNob3J0Q2lyY3Vp
dCkgaXMgZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9hcnJheS1wcm90b3R5
cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vYXJyYXktcHJv
dG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CmluZGV4IDJjMmE2OGNiMTA2ZGExMGYwODZi
MjJjNWJmMmJmNWM4ZmU3OWUzM2UuLjVkOWVjYjc1YThkYTc5YmE2NTYwNWU3ZWI5Y2Y4ZmMyNWZl
MThhZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJv
cGVydGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2FycmF5LXByb3Rv
dHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApAQCAtMTUsNyArMTUsNyBAQCBQQVNTIEFycmF5
LnByb3RvdHlwZS5zbGljZS5jYWxsKHVuZGVmaW5lZCwgMCwgMSkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogdW5kZQogUEFTUyBBcnJheS5wcm90b3R5cGUuc29ydC5jYWxsKHVuZGVmaW5lZCkg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2
YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5zb3J0LmNhbGwodW5kZWZpbmVkKScpLgogUEFTUyBB
cnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwodW5kZWZpbmVkLCAwLCAxKSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJy
YXkucHJvdG90eXBlLnNwbGljZS5jYWxsKHVuZGVmaW5lZCwgMCwgMSknKS4KIFBBU1MgQXJyYXku
cHJvdG90eXBlLnVuc2hpZnQuY2FsbCh1bmRlZmluZWQsIHt9KSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJv
dG90eXBlLnVuc2hpZnQuY2FsbCh1bmRlZmluZWQsIHt9KScpLgotUEFTUyBBcnJheS5wcm90b3R5
cGUuZXZlcnkuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90
eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZyknKS4KK1BBU1MgQXJyYXkucHJvdG90
eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSB1
bmRlZmluZWQuCiBQQVNTIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwodW5kZWZpbmVkLCB0
b1N0cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBv
YmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwodW5kZWZpbmVk
LCB0b1N0cmluZyknKS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLnNvbWUuY2FsbCh1bmRlZmluZWQs
IHRvU3RyaW5nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFu
IG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnNvbWUuY2FsbCh1bmRlZmluZWQs
IHRvU3RyaW5nKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKHVuZGVmaW5l
ZCwgMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmpl
Y3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwodW5kZWZpbmVkLCAw
KScpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUt
ZXZlcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5
cGUtZXZlcnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyOTBjMGVlZmY4ZGU0MjE4MzNkOTJk
MjdlOTUyNDE5MTc2MDRiOTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAor
SlNSZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jl
c3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU1Y2MxNzFjNDg3NWEz
NTg1YmYxNGU1NDE1ZjVjZDBlNTgxZDU0NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwKQEAgLTAsMCArMSwxMiBAQAor
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlZ3Jlc3MtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBl
LWV2ZXJ5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVncmVzcy1wb3N0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5qcyBiL0xheW91
dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yOTRhYTE2MWMwY2U5OGIyYWIxOGEzYTFhMWYwZGZhYWM5ZDdkMmUyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyYXkt
cHJvdG90eXBlLWV2ZXJ5LmpzCkBAIC0wLDAgKzEsMjkgQEAKK3ZhciByZXN1bHQgPSAwOworZnVu
Y3Rpb24gdGVzdDEoYSkgeworICAgIHJlc3VsdCA8PCAxOworICAgIHJlc3VsdCsrOworICAgIHJl
dHVybiB0cnVlOworfQorZnVuY3Rpb24gdGVzdDIoYSxiKSB7CisgICAgcmVzdWx0IF49IDM7Cisg
ICAgcmVzdWx0ICo9IDM7CisgICAgcmV0dXJuIHRydWU7Cit9CitmdW5jdGlvbiB0ZXN0MyhhLGIs
YykgeworICAgIHJlc3VsdCBePSByZXN1bHQgPj4gMTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
dmFyIHJlc3VsdCA9IDA7Cit2YXIgYXJyYXkgPSBbXQorZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAw
MDA7ICsraSkKKyAgICBhcnJheVtpXSA9IDE7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTA7IGkr
KykgeworICAgIGFycmF5LmV2ZXJ5KHRlc3QxKTsKKyAgICBhcnJheS5ldmVyeSh0ZXN0Mik7Cisg
ICAgYXJyYXkuZXZlcnkodGVzdDMpOworfQorCitpZiAocmVzdWx0ICE9IDE0Mjg4MTA0OTYpCisg
ICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvR05V
bWFrZWZpbGUuYW0gYi9HTlVtYWtlZmlsZS5hbQppbmRleCA3M2ZjNDkyOGM0ZGQ0OWI1NDk4Njli
NTA2NzhjNmJkZTc0ZjQ0NzYwLi4wOGM5MTE1NDI2MDUwMGRlM2ZmMDRiMDIwY2UwZDYwZjk4ZThj
ZmU4IDEwMDY0NAotLS0gYS9HTlVtYWtlZmlsZS5hbQorKysgYi9HTlVtYWtlZmlsZS5hbQpAQCAt
NjgsNiArNjgsNyBAQCBBTExfTU9GSUxFUyA6PQogZG9tX2JpbmRpbmdfaWRscyA6PQogd3RmX3Nv
dXJjZXMgOj0KIGphdmFzY3JpcHRjb3JlX2hfYXBpIDo9CitqYXZhc2NyaXB0Y29yZV9idWlsdGlu
c19qc19ub3NvdXJjZXMgOj0KIGphdmFzY3JpcHRjb3JlX2NwcGZsYWdzOj0KIGphdmFzY3JpcHRj
b3JlX2NmbGFncyA6PQogamF2YXNjcmlwdGNvcmVfc291cmNlcyA6PQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222750</attachid>
            <date>2014-01-30 15:20:38 -0800</date>
            <delta_ts>2014-01-30 16:30:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140130152037.patch</filename>
            <type>text/plain</type>
            <size>212755</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
OTkwYjgxNTkwMTAzNDQyNzUxNzI3NjliZWMzMmNjN2Q0ZTRmMjZjLi42NmIwMTRmMjMyNzMxNDUy
MGIzYjJkM2ZlODQzNWJlOTljMDAxYzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
IFRoaXMgcmVzdWx0IG9mIHRoaXMgcmVmYWN0b3JpbmcKKyAgICAgICAgaXMgdGhhdCBDb21tb25J
ZGVudGlmaWVycywgYW5kIGEgZmV3IG90aGVyIG1pc2NlbGxhbmVvdXMgaGVhZGVycyBub3cKKyAg
ICAgICAgbmVlZCB0byBiZSBpbmNsdWRlZCBkaXJlY3RseSBhcyB0aGV5IHdlcmUgZm9ybWVybHkg
Y2FwdHVyZWQgdGhyb3VnaCBvdGhlcgorICAgICAgICBwYXRocy4KKworICAgICAgICBJbiBhZGRp
dGlvbiB0aGlzIGFkZHMgYSBmbGFnIHRvIHRoZSBMb29rdXAgdGFibGUncyBoYXNoZW50cnkgdG8g
aW5kaWNhdGUKKyAgICAgICAgdGhhdCBhIHN0YXRpYyBmdW5jdGlvbiBpcyBhY3R1YWxseSBiYWNr
ZWQgYnkgSlMuIFRoZXJlIGlzIHRoZW4gYSBsb3Qgb2YKKyAgICAgICAgbG9naWMgdG8gdGhyZWFk
IHRoZSBzcGVjaWFsIG5hdHVyZSBvZiB0aGUgZnVuY3RvbiB0byB3aGVyZSBpdCBtYXR0ZXJzLgor
ICAgICAgICBUaGlzIGFsbG93cyB0b1N0cmluZygpLCAuY2FsbGVyLCBldGMgdG8gbWltaWMgdGhl
IGJlaGF2aW91ciBvZiBhIGhvc3QKKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAgICAgTm90ZXMg
b24gd3JpdGluZyBidWlsdGluczoKKyAgICAgICAgIC0gRWFjaCBmdW5jdGlvbiBpcyBjb21waWxl
ZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBvdGhlcnMsIGFuZCB0aG9zZQorICAgICAgICAgICBpbXBs
ZW1lbnRhdGlvbnMgY2Fubm90IGN1cnJlbnRseSBjYXB0dXJlIGFsbCBnbG9iYWwgcHJvcGVydGll
cyAoYXMKKyAgICAgICAgICAgdGhhdCBjb3VsZCBiZSBwb3RlbnRpYWxseSB1bnNhZmUpLiBJZiBh
IGZ1bmN0aW9uIGRvZXMgY2FwdHVyZSBhCisgICAgICAgICAgIGdsb2JhbCB3ZSB3aWxsIGRlbGli
ZXJhdGVseSBjcmFzaC4KKyAgICAgICAgIC0gRm9yIHRob3NlICJnbG9iYWwiIHByb3BlcnRpZXMg
dGhhdCB3ZSBkbyB3YW50IGFjY2VzcyB0bywgd2UgdXNlCisgICAgICAgICAgIHRoZSBAIHByZWZp
eCwgZS5nLiBPYmplY3QodGhpcykgYmVjb21lcyBAT2JqZWN0KHRoaXMpLiBUaGUgQCBpZGVudGlm
aWVycworICAgICAgICAgICBhcmUgcHJpdmF0ZSBuYW1lcywgYW5kIGJlaGF2ZSBqdXN0IGxpa2Ug
cmVndWxhciBwcm9wZXJ0aWVzLCBvbmx5CisgICAgICAgICAgIHdpdGhvdXQgdGhlIHJpc2sgb2Yg
YWR1bHRlcmF0aW9uLiBBZ2FpbiwgaW4gdGhlIEBPYmplY3QgY2FzZSwgd2UKKyAgICAgICAgICAg
ZXhwbGljaXRseSBkdXBsaWNhdGUgdGhlIE9iamVjdENvbnN0cnVjdG9yIHJlZmVyZW5jZSBvbiB0
aGUgR2xvYmFsT2JqZWN0CisgICAgICAgICAgIHNvIHRoYXQgd2UgaGF2ZSBndWFyYW50ZWVkIGFj
Y2VzcyB0byB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgY29uc3RydWN0
b3IuCisgICAgICAgICAtIGNhbGwsIGFwcGx5LCBldmFsLCBhbmQgRnVuY3Rpb24gYXJlIGFsbCBy
ZWplY3RlZCBpZGVudGlmaWVycywgYWdhaW4KKyAgICAgICAgICAgdG8gcHJldmVudCBhbnl0aGlu
ZyBmcm9tIGFjY2lkZW50YWxseSB1c2luZyBhbiBhZHVsdGVyYXRlZCBvYmplY3QuCisgICAgICAg
ICAgIEluc3RlYWQgQGNhbGwgYW5kIEBhcHBseSBhcmUgYXZhaWxhYmxlLCBhbmQgaGFwcGlseSB0
aGV5IGNvbXBsZXRlbHkKKyAgICAgICAgICAgZHJvcCB0aGUgbmVxX3B0ciBpbnN0cnVjdGlvbiBh
cyB0aGV5J3JlIGRlZmluZWQgYXMgYWx3YXlzIGJlaW5nIHRoZQorICAgICAgICAgICBvcmlnaW5h
bCBjYWxsL2FwcGx5IGZ1bmN0aW9ucy4KKworICAgICAgICBUaGVzZSByZXN0cmljdGlvbnMgYXJl
IGp1c3QgaW50ZW5kZWQgdG8gbWFrZSBpdCBoYXJkZXIgdG8gYWNjaWRlbnRhbGx5CisgICAgICAg
IG1ha2UgY2hhbmdlcyB0aGF0IGFyZSBpbmNvcnJlY3QgKGZvciBpbnN0YW5jZSBjYWxsaW5nIHdo
YXRldmVyIGhhcyBiZWVuCisgICAgICAgIGFzc2lnbmVkIHRvIGdsb2JhbC5PYmplY3QsIGluc3Rl
YWQgb2YgdGhlIG9yaWdpbmFsIGNvbnN0cnVjdG9yIGZ1bmN0aW9uKS4KKyAgICAgICAgSG93ZXZl
ciwgbWFraW5nIGEgbWlzdGFrZSBsaWtlIHRoaXMgc2hvdWxkIHJlc3VsdCBpbiBhIHB1cmVseSBz
ZW1hbnRpYworICAgICAgICBlcnJvciBhcyBmdW5kYW1lbnRhbGx5IHRoZXNlIGZ1bmN0aW9ucyBh
cmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlCisgICAgICAgIHJlZ3VsYXIgSlMgY29kZSBp
biB0aGUgaG9zdCBnbG9iYWwsIGFuZCBoYXZlIG5vIG1vcmUgcHJpdmlsZWdlcyB0aGFuCisgICAg
ICAgIGFueSBvdGhlciBKUy4KKworICAgICAgICBUaGUgaW5pdGlhbCBwcm9vZiBvZiBjb25jZXB0
IGlzIEFycmF5LnByb3RvdHlwZS5ldmVyeSwgdGhpcyBzaG93cyBhIDY1JQorICAgICAgICBwZXJm
b3JtYW5jZSBpbXByb3ZlbWVudCwgYW5kIHRoYXQgaW1wcm92ZW1lbnQgaXMgc2lnbmlmaWNhbnRs
eSBodXJ0IGJ5CisgICAgICAgIG91ciBwb29yIG9wdGltaXNhdGlvbiBvZiBvcF9pbi4KKworICAg
ICAgICBBcyB0aGlzIGlzIHN1Y2ggYSBsaW1pdGVkIGZ1bmN0aW9uLCB3ZSBoYXZlIG5vdCB5ZXQg
ZXhwb3J0ZWQgYWxsIHN5bWJvbHMKKyAgICAgICAgdGhhdCB3ZSBjb3VsZCBwb3NzaWJseSBuZWVk
LCBidXQgYXMgd2UgaW1wbGVtZW50IG1vcmUsIHRoZSBsaWtlbGlob29kCisgICAgICAgIG9mIGVu
Y291bnRlcmluZyBtaXNzaW5nIGZlYXR1cmVzIHdpbGwgcmVkdWNlLgorCisgICAgICAgIFRoaXMg
ZGlkIHJlcXVpcmUgYnJlYWtpbmcgb3V0IGEgSlNTdHJpbmdJbmxpbmVzIGhlYWRlciwgYW5kIHJl
cXVpcmVkCisgICAgICAgIGZpeGluZyBhIGZldyBvYmplY3RzIHRoYXQgd2VyZSB0cnlpbmcgdG8g
dXNpbmcgUHJvcGVydHlOYW1lOjpwdWJsaWNOYW1lCisgICAgICAgIHJhdGhlciB0aGFuIFByb3Bl
cnR5TmFtZTo6dWlkLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0
eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dCk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRpY1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWNGdW5jdGlvbkdl
dHRlcik6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tH
ZXR0ZXIpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBidWlsdGlucy9BcnJheS5wcm90b3R5cGUuanM6CisgICAgICAgIChldmVyeSk6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkJ1aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKToKKyAgICAgICAgKEpTQzo6
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSk6CisgICAgICAgICog
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVj
dXRhYmxlczo6Y3JlYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tG
b3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6dG9TdHJpY3RuZXNzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNCdWlsdGluRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBjcmVhdGVfaGFz
aF90YWJsZToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZ2Vu
ZXJhdGUtanMtYnVpbHRpbnM6IEFkZGVkLgorICAgICAgICAoZ2V0Q29weXJpZ2h0KToKKyAgICAg
ICAgKGdldEZ1bmN0aW9ucyk6CisgICAgICAgIChnZW5lcmF0ZUNvZGUpOgorICAgICAgICAobWFu
Z2xlTmFtZSk6CisgICAgICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSWRlbnRp
Zmllcik6CisgICAgICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChTb3VyY2VDb2RlKToK
KyAgICAgICAgKFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKFZNKToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvUHJvdG9DYWxsRnJhbWUuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUp
OgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpM
ZXhlcik6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpM
ZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFy
Pjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAg
ICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcik6CisgICAgICAgICog
cGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OnNldENsb3NlZFZh
cmlhYmxlcyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
Tm9kZTo6Y2FwdHVyZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OnNldENs
b3NlZFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmluaXNoUGFy
c2luZyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRU
b2tlblRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OmdldFVzZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNsb3NlZFZhcmlh
Ymxlcyk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9k
ZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAgICAgICogcnVudGlt
ZS9BcmdMaXN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAg
ICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJh
dG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpn
ZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpD
b21tb25JZGVudGlmaWVycyk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQ
cml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQdWJsaWNO
YW1lKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzRXhjZXB0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxl
OjpleGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpleGVj
dXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aXNCdWlsdGlu
RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1l
L0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFi
bGVHZXQpOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0KToKKyAg
ICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgICogcnVudGltZS9K
U0NlbGxJbmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6c291cmNlQ29kZSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzSG9zdE9y
QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6aXNCdWlsdGluRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIpOgorICAgICAg
ICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9w
ZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgICogcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6Om9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpnZXRDbGFzc1Byb3BlcnR5TmFtZXMpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZ0lubGlu
ZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjppbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9i
amVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgICAgRG9uJ3QgcmVw
b3J0IHByaXZhdGUgbmFtZXMuCisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6c3ltYm9s
VGFibGVQdXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChKU0M6OnNldFVwU3RhdGlj
RnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlND
OjpIYXNoRW50cnk6OmJ1aWx0aW5HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpIYXNoRW50cnk6
OnByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpwcm9wZXJ0eVB1dHRl
cik6CisgICAgICAgIChKU0M6Okhhc2hUYWJsZTo6ZW50cnkpOgorICAgICAgICAoSlNDOjpnZXRT
dGF0aWNQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpnZXRTdGF0aWNWYWx1ZVNsb3QpOgor
ICAgICAgICAoSlNDOjpwdXRFbnRyeSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6YnVp
bHRpbkV4ZWN1dGFibGVzKToKKwogMjAxNC0wMS0zMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBw
bGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBGVEwgU3RhY2tNYXBzIHBhcnNlciB0byBzdGFja1Np
emUgY2hhbmdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM4NDMzNTUzODg3NWI1YTI0NWY1YTdhMDVhNzhjYzhk
ZmVjZWE1Yi4uMDY3MThhN2QxMmUxZTlkZGZjNmFkOWU3OGFjNzcwYmE0ZmJjMzY0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE0LTAxLTI5ICBPbGl2ZXIgSHVudCAgPG9saXZlckBh
cHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBpbXBsZW1lbnQgSlMgYnVp
bHRpbnMgaW4gSlMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyNzg4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVwZGF0aW5nIGZvciB0aGUgbmV3bHkgcmVxdWlyZWQgaGVhZGVycy4KKworICAgICAgICBU
ZXN0OiBqcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sCisKKyAgICAgICAgKiBG
b3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oOiBBZGRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0lE
Qk9iamVjdFN0b3JlQ3VzdG9tLmNwcDoKKwogMjAxNC0wMS0zMCAgRXJpYyBDYXJsc29uICA8ZXJp
Yy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBkb24ndCB1cGRhdGUgbWVkaWEg
bGF5ZXJzIG9uIG1haW4gdGhyZWFkIHdoZW4gdXNpbmcgQVZGb3VuZGF0aW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCmlu
ZGV4IDViZTA1M2YxZTA4NmI0M2U2ODZjMzY3NGRhZTdjNTE2MDVhMjg2ZTcuLjBlY2VkNTFmM2Uy
ZDViNjIxZGFkZjA1NzQ5ZjVlNzQ2NmEwNmY1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCkBAIC0xMzYsNyArMTM2
LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGUKICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0g
dG9SZWYodGhpc09iamVjdCk7CiAgICAgUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5h
bWVSZWY7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVi
bGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlk
KCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFz
c1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAg
ICAgICAgIC8vIG9wdGlvbmFsIG9wdGltaXphdGlvbiB0byBieXBhc3MgZ2V0UHJvcGVydHkgaW4g
Y2FzZXMgd2hlbiB3ZSBvbmx5IG5lZWQgdG8ga25vdyBpZiB0aGUgcHJvcGVydHkgZXhpc3RzCiAg
ICAgICAgICAgICBpZiAoSlNPYmplY3RIYXNQcm9wZXJ0eUNhbGxiYWNrIGhhc1Byb3BlcnR5ID0g
anNDbGFzcy0+aGFzUHJvcGVydHkpIHsKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIEpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcAogICAgIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwog
ICAgIEpTVmFsdWVSZWYgdmFsdWVSZWYgPSB0b1JlZihleGVjLCB2YWx1ZSk7CiAgICAgCi0gICAg
aWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAg
aWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9y
IChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBq
c0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVj
dFNldFByb3BlcnR5Q2FsbGJhY2sgc2V0UHJvcGVydHkgPSBqc0NsYXNzLT5zZXRQcm9wZXJ0eSkg
ewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lUmVmKQpAQCAtMzQzLDcgKzM0Myw3
IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvCiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRv
UmVmKHRoaXNPYmplY3QpOwogICAgIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1l
UmVmOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1Ymxp
Y05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgp
KSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iamVjdC0+Y2xhc3NS
ZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAg
ICAgICBpZiAoSlNPYmplY3REZWxldGVQcm9wZXJ0eUNhbGxiYWNrIGRlbGV0ZVByb3BlcnR5ID0g
anNDbGFzcy0+ZGVsZXRlUHJvcGVydHkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5
TmFtZVJlZikKQEAgLTU2NCw3ICs1NjQsNyBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6Z2V0U3RhdGljVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcAogewog
ICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzKTsKICAgICAKLSAgICBpZiAoU3Ry
aW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3Ry
aW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xh
c3NSZWYganNDbGFzcyA9IGNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5w
YXJlbnRDbGFzcykgewogICAgICAgICAgICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNU
YWJsZSogc3RhdGljVmFsdWVzID0ganNDbGFzcy0+c3RhdGljVmFsdWVzKGV4ZWMpKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKFN0YXRpY1ZhbHVlRW50cnkqIGVudHJ5ID0gc3RhdGljVmFsdWVzLT5n
ZXQobmFtZSkpIHsKQEAgLTYwMCw3ICs2MDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNr
T2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRQog
ICAgIGlmIChQYXJlbnQ6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHNsb3QyKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90Mi5nZXRW
YWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpKTsKIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0g
cHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0g
cHJvcGVydHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0g
dGhpc09iai0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENs
YXNzKSB7CiAgICAgICAgICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxl
KiBzdGF0aWNGdW5jdGlvbnMgPSBqc0NsYXNzLT5zdGF0aWNGdW5jdGlvbnMoZXhlYykpIHsKICAg
ICAgICAgICAgICAgICBpZiAoU3RhdGljRnVuY3Rpb25FbnRyeSogZW50cnkgPSBzdGF0aWNGdW5j
dGlvbnMtPmdldChuYW1lKSkgewpAQCAtNjI2LDcgKzYyNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBF
bmNvZGVkCiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmopOwogICAgIFJl
ZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwogICAgIAotICAgIGlmIChTdHJp
bmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJp
bmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFz
c1JlZiBqc0NsYXNzID0gdGhpc09iai0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpz
Q2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgICAgICBpZiAoSlNPYmplY3RHZXRQcm9wZXJ0
eUNhbGxiYWNrIGdldFByb3BlcnR5ID0ganNDbGFzcy0+Z2V0UHJvcGVydHkpIHsKICAgICAgICAg
ICAgICAgICBpZiAoIXByb3BlcnR5TmFtZVJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCAyN2JjNGMxN2YzZGZlZWI2MWQyNTIzMjNmZDg3OGM0NDc4MGY3NGM1Li4wYzRk
ZWZiOTlkYjM5OTQzYmE2NTIyNDZlY2RmOTkyN2YxNGU2ZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CkBAIC01Miw2ICs1Miw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VS
Q0VTCiAgICAgYmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcAogICAgIGJpbmRpbmdzL1NjcmlwdFZh
bHVlLmNwcAogCisgICAgYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAorCiAgICAgYnl0
ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9BcnJheVByb2Zp
bGUuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcApAQCAtNzA3LDcgKzcw
OSw3IEBAIHNldChIQVNIX0xVVF9HRU5FUkFUT1IgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9
L2NyZWF0ZV9oYXNoX3RhYmxlKQogbWFjcm8oR0VORVJBVEVfSEFTSF9MVVQgX2lucHV0IF9vdXRw
dXQpCiAgICAgYWRkX2N1c3RvbV9jb21tYW5kKAogICAgICAgICBPVVRQVVQgJHtfb3V0cHV0fQot
ICAgICAgICBERVBFTkRTICR7SEFTSF9MVVRfR0VORVJBVE9SfSAke19pbnB1dH0KKyAgICAgICAg
REVQRU5EUyAke0hBU0hfTFVUX0dFTkVSQVRPUn0gJHtfaW5wdXR9ICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAogICAgICAgICBDT01NQU5EICR7UEVS
TF9FWEVDVVRBQkxFfSAke0hBU0hfTFVUX0dFTkVSQVRPUn0gJHtfaW5wdXR9IC1pID4gJHtfb3V0
cHV0fQogICAgICAgICBWRVJCQVRJTSkKICAgICBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9I
RUFERVJTICR7X291dHB1dH0pCkBAIC04MTUsMTYgKzgxNywyNyBAQCBhZGRfY3VzdG9tX2NvbW1h
bmQoCiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX0lO
U1BFQ1RPUl9TQ1JJUFRTX0RJUn0vQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSAke0RFUklWRURf
U09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTLmpzb24gLS1vdXRwdXRfaF9k
aXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0cHV0X2NwcF9k
aXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0cHV0X2pzX2Rp
ciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIgLS1vdXRwdXRfdHlwZSBK
YXZhU2NyaXB0IC0td3JpdGVfYWx3YXlzICYmIG1rZGlyIC1wICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yICYmIGNwICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFT
Q1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCAke0RFUklWRURf
U09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVy
cy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBl
QnVpbGRlcnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rv
cgogICAgIFZFUkJBVElNKQogCisjIEpTQ0J1aWx0aW5zCitmaWxlKEdMT0IgSlNDQnVpbHRpbnNf
anNfZmlsZXMgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9idWlsdGlucy8qLmpzIikKK2Fk
ZF9jdXN0b21fY29tbWFuZCgKKyAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBU
Q09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09S
RV9ESVJ9L0pTQ0J1aWx0aW5zLmgKKyAgIE1BSU5fREVQRU5ERU5DWSAke0NNQUtFX0NVUlJFTlRf
U09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMKKyAgIERFUEVORFMgJHtKU0NCdWlsdGlu
c19qc19maWxlc30KKyAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9DVVJS
RU5UX1NPVVJDRV9ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zICR7SlNDQnVpbHRpbnNfanNfZmls
ZXN9ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaCAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcAorICAg
VkVSQkFUSU0pCisKIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICAke0RF
UklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTQmFja2VuZERpc3Bh
dGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5z
cGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwCisgICAgJHtERVJJ
VkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5jcHAKICkKIAogbGlz
dChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUwogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaAogICAgICR7
REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNGcm9udGVuZERp
c3BhdGNoZXJzLmgKICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0lu
c3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgKKyAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBU
Q09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKICkKIAogYWRkX2N1c3RvbV9jb21tYW5kKApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAxMTU2ZTk3ZmQ4ODYyNTU3
YzljZjhkM2I2OGJmNGQwM2MzZThiYThmLi43Yzk4MmI2OTEzZTJmODhkNTg4ODRkYmUyMzczZjU5
NWU3YjQ1OTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpA
QCAtMjgsOCArMjgsOSBAQCBWUEFUSCA9IFwKICAgICAkKEphdmFTY3JpcHRDb3JlKSBcCiAgICAg
JChKYXZhU2NyaXB0Q29yZSkvcGFyc2VyIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9ydW50aW1l
IFwKLSAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnRlcnByZXRlciBcCi0gICAgJChKYXZhU2NyaXB0
Q29yZSkvaml0IFwKKwkkKEphdmFTY3JpcHRDb3JlKS9pbnRlcnByZXRlciBcCisJJChKYXZhU2Ny
aXB0Q29yZSkvaml0IFwKKwkkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucyBcCiAjCiAKIC5QSE9O
WSA6IGFsbApAQCAtNTcsMTIgKzU4LDI1IEBAIGFsbCA6IFwKICAgICBSZWdFeHBPYmplY3QubHV0
LmggXAogICAgIFN0cmluZ0NvbnN0cnVjdG9yLmx1dC5oIFwKICAgICB1ZGlzODZfaXRhYi5oIFwK
KyAgICBKU0NCdWlsdGlucyBcCiAjCiAKKyMgYnVpbHRpbiBmdW5jdGlvbnMKKy5QSE9OWTogSlND
QnVpbHRpbnMKKworSlNDQnVpbHRpbnM6ICQoSmF2YVNjcmlwdENvcmUpL2dlbmVyYXRlLWpzLWJ1
aWx0aW5zIEpTQ0J1aWx0aW5zLmggSlNDQnVpbHRpbnMuY3BwCitKU0NCdWlsdGlucy5oOiAkKEph
dmFTY3JpcHRDb3JlKS9nZW5lcmF0ZS1qcy1idWlsdGlucyAkKEphdmFTY3JpcHRDb3JlKS9idWls
dGlucy8qLmpzCisJcHl0aG9uICReICRACisJCQkJCQkJCQkJCQkJCQkJCQkJCSAKK0pTQ0J1aWx0
aW5zLmNwcDogSlNDQnVpbHRpbnMuaAorCiAjIGxvb2t1cCB0YWJsZXMgZm9yIGNsYXNzZXMKIAor
Y3JlYXRlX2hhc2hfdGFibGU6IEpTQ0J1aWx0aW5zCisKICUubHV0Lmg6IGNyZWF0ZV9oYXNoX3Rh
YmxlICUuY3BwCiAJJF4gLWkgPiAkQAorCiBMZXhlci5sdXQuaDogY3JlYXRlX2hhc2hfdGFibGUg
S2V5d29yZHMudGFibGUKIAkkXiA+ICRACiAKQEAgLTc5LDcgKzkzLDYgQEAgS2V5d29yZExvb2t1
cC5oOiBLZXl3b3JkTG9va3VwR2VuZXJhdG9yLnB5IEtleXdvcmRzLnRhYmxlCiB1ZGlzODZfaXRh
Yi5oOiAkKEphdmFTY3JpcHRDb3JlKS9kaXNhc3NlbWJsZXIvdWRpczg2L2l0YWIucHkgJChKYXZh
U2NyaXB0Q29yZSkvZGlzYXNzZW1ibGVyL3VkaXM4Ni9vcHRhYmxlLnhtbAogCShQWVRIT05QQVRI
PSQoSmF2YVNjcmlwdENvcmUpL2Rpc2Fzc2VtYmxlci91ZGlzODYgcHl0aG9uICQoSmF2YVNjcmlw
dENvcmUpL2Rpc2Fzc2VtYmxlci91ZGlzODYvaXRhYi5weSAkKEphdmFTY3JpcHRDb3JlKS9kaXNh
c3NlbWJsZXIvdWRpczg2L29wdGFibGUueG1sIHx8IGV4aXQgMSkKIAotCiAjIEluc3BlY3RvciBp
bnRlcmZhY2VzCiAKIElOU1BFQ1RPUl9ET01BSU5TID0gXApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmFtCmluZGV4IGZlNTQ0OGRkYzFiY2ZhYTRjNzI5YTFjYzAwZGVhNjI0MzE5MzkwYTIu
LmI2MjIxZTUwZTRhYzAwYzAyZmYxYzJkNmM1NTI1OTM4NjBjMjc0NTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTk3LDYgKzk3LDggQEAgJChzaGVsbCBta2RpciAtcCBE
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZSkKIERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlL0xleGVyLmx1dC5oOiAkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9o
YXNoX3RhYmxlICQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0tleXdvcmRz
LnRhYmxlCiAJJChBTV9WX0dFTikkKFBFUkwpICReID4gJEAKIAorJChzcmNkaXIpL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZTogJChzcmNkaXIpL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucworCiBEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0
Q29yZS8lLmx1dC5oOiAkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNo
X3RhYmxlICQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS8lLmNwcAogCSQo
QU1fVl9HRU4pJChQRVJMKSAkXiAtaSA+ICRACiAKQEAgLTExMCwxMiArMTEyLDE2IEBAIERlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaDogJChqYXZhc2Ny
aXB0Y29yZV9zb3VyY2VzKSAkCiAJJChBTV9WX0dFTikkKFJVQlkpICQoc3JjZGlyKS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiICQo
c3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20gJEAKIAkkKEFNX1ZfYXQpdG91Y2ggJEAKIAotJChQcm9ncmFtc19MTEludE9mZnNldHNFeHRy
YWN0b3JfT0JKRUNUUyk6IERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJl
ZE9mZnNldHMuaAorJChQcm9ncmFtc19MTEludE9mZnNldHNFeHRyYWN0b3JfT0JKRUNUUyk6IERl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaCAKIAogRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnRBc3NlbWJseS5oOiBQcm9ncmFtcy9MTElu
dE9mZnNldHNFeHRyYWN0b3IkKEVYRUVYVCkKIAkkKEFNX1ZfR0VOKSQoUlVCWSkgJChzcmNkaXIp
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYiAkKHNyY2RpcikvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIFByb2dyYW1zL0xM
SW50T2Zmc2V0c0V4dHJhY3RvciQoRVhFRVhUKSAkQAogCSQoQU1fVl9hdCl0b3VjaCAkQAogCitE
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5oOiBEZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5jcHAKK0Rlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL0pTQ0J1aWx0aW5zLmNwcDogJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9n
ZW5lcmF0ZS1qcy1idWlsdGlucyAkKGphdmFzY3JpcHRjb3JlX2J1aWx0aW5zX2pzX3NvdXJjZXMp
CisJJChBTV9WX0dFTikkKFBZVEhPTikgJF4gJEAKKwogJChsaWJqYXZhc2NyaXB0Y29yZWd0a19A
V0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9O
QF9sYV9PQkpFQ1RTKTogRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnRBc3NlbWJs
eS5oCiAKIGpzYzogJChqYXZhc2NyaXB0Y29yZV9idWlsdF9ub3NvdXJjZXMpIFByb2dyYW1zL2pz
YyQoRVhFRVhUKQpAQCAtMjE2LDYgKzIyMiw3IEBAIEVYVFJBX0RJU1QgKz0gXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9LZXl3b3JkTG9va3VwR2VuZXJhdG9yLnB5IFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0tleXdvcmRzLnRhYmxlIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
VEhBTktTIFwKKwkkKGphdmFzY3JpcHRjb3JlX2J1aWx0aW5zX2pzX25vc291cmNlcykgXAogCSQo
bGxpbnRfbm9zb3VyY2VzKSBcCiAJJChvZmZsaW5lYXNtX25vc291cmNlcykKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBjZGI1NDI2YjA2YjUyYTk4MjU2
ZWU5MDU4YmJhOGYxMWVlYTY5ZWUwLi45OGZhYWE3ZDE3NWFhNjFmMjA4OTZjZWViMTM4NjNlMjdi
MjY2Y2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAt
MjAsNiArMjAsOCBAQCBqYXZhc2NyaXB0Y29yZV9idWlsdF9ub3NvdXJjZXMgKz0gXAogCURlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0Vycm9yUHJvdG90eXBlLmx1dC5oIFwKIAlEZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0RhdGFWaWV3UHJvdG90eXBlLmx1dC5oIFwKIAlEZXJp
dmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5sdXQuaCBcCisJRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNDQnVpbHRpbnMuY3BwIFwKKwlEZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9KU09OT2JqZWN0Lmx1dC5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29y
ZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvSlNQcm9taXNlUHJvdG90eXBlLmx1dC5oIFwKQEAgLTM1LDYgKzM3LDkgQEAgamF2YXNj
cmlwdGNvcmVfYnVpbHRfbm9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0
Q29yZS9MTEludERlc2lyZWRPZmZzZXRzLmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlL0xMSW50QXNzZW1ibHkuaAogCitqYXZhc2NyaXB0Y29yZV9idWlsdGluc19qc19ub3NvdXJj
ZXMgKz0gXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUu
anMKKwogamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9BUElDYWxsYmFja0Z1bmN0aW9uLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
QVBJQ2FzdC5oIFwKQEAgLTEwMiw2ICsxMDcsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9
IFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0T2JqZWN0LmggXAog
ICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAgXAogICAg
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5oIFwKKyAgICBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBcCisgICAg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxl
LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwIFwK
QEAgLTEyNDEsNyArMTI0OCw5IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCURlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5j
cHAgXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpTRnJvbnRlbmRE
aXNwYXRjaGVycy5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JK
U1R5cGVCdWlsZGVycy5jcHAgXAotCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3Bl
Y3RvckpTVHlwZUJ1aWxkZXJzLmgKKwlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnNw
ZWN0b3JKU1R5cGVCdWlsZGVycy5oIFwKKwlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9K
U0NCdWlsdGlucy5jcHAgXAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0
aW5zLmgKIAogbGxpbnRfbm9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvagppbmRleCA1ZWRlZmRiZTg1NWY5NmE2MjY4ZDg1NzNiZWMxZDBjM2Q4NThh
YTVjLi5hMTJkYjE4MzQ4NmRmYmJjYTgzZjNhNzhlOWNmOTg2MzFiMjY1M2RjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTMwOSw2ICszMDksNyBAQAogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdE9iamVjdC5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRWYWx1ZS5jcHAiIC8+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWlsdGluRXhlY3V0YWJsZXMu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0
aW9uUHJvZmlsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxB
cnJheVByb2ZpbGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVc
Qnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCIgLz4KQEAgLTcyMSw2ICs3MjIsNyBAQAogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTQmFja2Vu
ZERpc3BhdGNoZXJzLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xJbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZv
cm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpT
VHlwZUJ1aWxkZXJzLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xKU0NCdWlsdGlucy5jcHAiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRl
bUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEFycmF5Q29uc3RydWN0b3IubHV0LmgiIC8+CkBAIC03NTAsNiArNzUyLDcgQEAKICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJj
aGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xSZWdFeHBPYmplY3QubHV0
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
UmVnRXhwUHJvdG90eXBlLmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXFN0cmluZ0NvbnN0cnVjdG9yLmx1dC5oIiAvPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmgiIC8+
CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cQVBJXEFQSUNhbGxiYWNrRnVuY3Rpb24uaCIgLz4KQEAgLTc5OCw2ICs4MDEsNyBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0RnVuY3Rpb25DYWxsLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRPYmplY3QuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdFZhbHVlLmgiIC8+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWlsdGluRXhlY3V0YWJsZXMuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlvblBy
b2ZpbGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5UHJv
ZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQnlWYWxJbmZv
LmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRl
cnMKaW5kZXggODdlMTJhNDcxNThiYjYyMjRkNDlmZDYyMjk3OGM0YTljNDQzNWE2NS4uODY5YzFm
NTg5YmNiNjg2ZWI5Y2YyMGMwOTZiZTFiODNhNTUxZTI0YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
ai5maWx0ZXJzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtNyw2ICs3LDkgQEAKICAgICA8
RmlsdGVyIEluY2x1ZGU9ImJpbmRpbmdzIj4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnswYmFj
ZTEyMy00NTgyLWVlYmMtOTMxNC03ODE5YjM3NmMxOTh9PC9VbmlxdWVJZGVudGlmaWVyPgogICAg
IDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iYnVpbHRpbnMiPgorICAgICAgPFVuaXF1
ZUlkZW50aWZpZXI+ezNiOWQ3MmE1LTEzNWItNDNiMy1hNTI0LWM2ZDJiOWQyOWQzNX08L1VuaXF1
ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CiAgICAgPEZpbHRlciBJbmNsdWRlPSJieXRlY29k
ZSI+CiAgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NzY2MDg4YTAtMTIxNi00ODU0LWFhNDMtNTYw
YzVlMjgzNjY4fTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8L0ZpbHRlcj4KQEAgLTEwOCw2ICsx
MTEsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXE1hY3JvQXNzZW1i
bGVyLmNwcCI+CiAgICAgICA8RmlsdGVyPmFzc2VtYmxlcjwvRmlsdGVyPgogICAgIDwvQ2xDb21w
aWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnVpbHRpbnNcQnVpbHRpbkV4ZWN1dGFi
bGVzLmNwcCI+CisgICAgICA8RmlsdGVyPmJ1aWx0aW5zPC9GaWx0ZXI+CisgICAgPC9DbENvbXBp
bGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Q
cm9maWxlLmNwcCI+CiAgICAgICA8RmlsdGVyPmJ5dGVjb2RlPC9GaWx0ZXI+CiAgICAgPC9DbENv
bXBpbGU+CkBAIC0xMzI5LDYgKzEzMzUsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmNwcCI+CiAgICAg
ICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZv
cm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5z
LmNwcCI+CisgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgorICAgIDwvQ2xD
b21waWxlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXEFQSVxBUElDYWxsYmFja0Z1bmN0aW9uLmgiPgpAQCAtMTQ1NCw2ICsxNDYzLDkg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxYODZBc3NlbWJsZXIuaCI+
CiAgICAgICA8RmlsdGVyPmFzc2VtYmxlcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnVpbHRpbnNcQnVpbHRpbkV4ZWN1dGFibGVzLmgiPgor
ICAgICAgPEZpbHRlcj5idWlsdGluczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIj4K
ICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTI1
NTAsNiArMjU2Miw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcQXJyYXlQcm90b3R5cGUubHV0LmgiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkIFNv
dXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NCdWlsdGlucy5oIj4KKyAgICAgIDxGaWx0ZXI+
RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXFZNLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZUNvbW1vbi5wcm9wcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlQ29t
bW9uLnByb3BzCmluZGV4IDM2MjJmZmM1NzdjNDNkZGY3MGRhNTFmZjY4YWQ2NDZmNjMwNGU1Njcu
LmM1ODg4NzBjMmZkMTNkNjA3NmQzOGY1MmNhNjIyNWRiMjg3MmM3ODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
Q29tbW9uLnByb3BzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlQ29tbW9uLnByb3BzCkBAIC01LDcgKzUsNyBAQAogICA8UHJv
cGVydHlHcm91cCAvPgogICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgot
ICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cOy4uXHRvb2xzXDsuLlxydW50
aW1lXDsuLlxsbGludFw7Li5caml0XDsuLlxkaXNhc3NlbWJsZXJcOy4uXGhlYXBcOy4uXGRlYnVn
Z2VyXDsuLlxhc3NlbWJsZXJcOy4uXHByb2ZpbGVyXDsuLlx5YXJyXDsuLlxpbnRlcnByZXRlclw7
Li5cYnl0ZWNvZGVcOy4uXGRmZ1w7Li5cYnl0ZWNvbXBpbGVyXDsuLlxwYXJzZXJcOy4uXEFQSVw7
Li5cZnRsXDsuLlxiaW5kaW5nc1w7Li5caW5zcGVjdG9yXDskKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcSmF2YVNjcmlwdENvcmVcRGVyaXZlZFNvdXJj
ZXNcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXDskKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZVw7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGlu
Y2x1ZGVccHJpdmF0ZVw7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlOyQoV2ViS2l0X0xpYnJh
cmllcylcaW5jbHVkZVxwcml2YXRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0Fk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcz4uLlw7Li5cdG9vbHNcOy4uXHJ1bnRpbWVcOy4uXGxsaW50XDsuLlxqaXRcOy4uXGRp
c2Fzc2VtYmxlclw7Li5caGVhcFw7Li5cZGVidWdnZXJcOy4uXGFzc2VtYmxlclw7Li5ccHJvZmls
ZXJcOy4uXHlhcnJcOy4uXGludGVycHJldGVyXDsuLlxieXRlY29kZVw7Li5cYnVpbHRpbnNcOy4u
XGRmZ1w7Li5cYnl0ZWNvbXBpbGVyXDsuLlxwYXJzZXJcOy4uXEFQSVw7Li5cZnRsXDsuLlxiaW5k
aW5nc1w7Li5caW5zcGVjdG9yXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcSmF2YVNjcmlwdENvcmVcRGVyaXZlZFNvdXJjZXNcOyQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxpbmNsdWRlXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxK
YXZhU2NyaXB0Q29yZVw7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVw7
JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlOyQoV2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZVxw
cml2YXRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM+CiAgICAgICA8Rm9yY2VkSW5jbHVkZUZpbGVzPklDVVZlcnNpb24uaDslKEZv
cmNlZEluY2x1ZGVGaWxlcyk8L0ZvcmNlZEluY2x1ZGVGaWxlcz4KICAgICA8L0NsQ29tcGlsZT4K
ICAgICA8TGluaz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjdlODc2NzQwYTk2
NGIwMjg5ODRlZDY3ODE2MTgyMGE1ZGNmNzdjNC4uOTExNTczYWIxN2QzMzk3NGFhN2M5YTAxMWRi
MjAwYjA5YWY3OGJmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkyMiw3ICs5
MjIsNiBAQAogCQlBNTAzRkExOTE4OEUwRkIwMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFt
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAz
RkExMzE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi87IH07CiAJ
CUE1MDNGQTFBMTg4RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNDE4OEUwRkFG
MDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQlBNTAzRkExQjE4OEUw
RkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE1MTg4RTBGQjAwMDExMEYxNCAv
KiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwICovOyB9OwotCQlBNTAzRkExQzE4OEUwRkIwMDAx
MTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNjE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lLmggKi87IH07CiAJCUE1MDNGQTFEMTg4RTBGQjAwMDExMEYxNCAvKiBK
U0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTcxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2
YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAgKi87IH07CiAJCUE1MDNGQTFFMTg4RTBGQjAw
MDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE4MTg4RTBGQjAwMDExMEYx
NCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaCAqLzsgfTsKIAkJQTUwM0ZBMjEx
ODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTFGMTg4RUZGNjgwMDExMEYxNCAvKiBT
Y3JpcHRCcmVha3BvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTEwMjQsNiArMTAyMyw3IEBACiAJCUE3MEIwODMyMTdBMEI3OUIwMERBRjE0
QiAvKiBERkdCaW5hcnlTd2l0Y2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTcwQjA4MzAxN0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRj
aC5jcHAgKi87IH07CiAJCUE3MEIwODMzMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0
Y2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MEIw
ODMxMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guaCAqLzsgfTsKIAkJQTcxMjM2
RTUxMTk1RjMzQzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzEyMzZFNDExOTVGMzNDMDBCRDIxNzQg
LyogSklUT3Bjb2RlczMyXzY0LmNwcCAqLzsgfTsKKwkJQTcxREE4MEYxODgwREJBQjAwRDFGMjk5
IC8qIEpTU3RyaW5nSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTcxREE4MEUxODgwREJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3MjAy
OEI2MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyMDI4QjQxNzk3NjAxRTAwOTgw
MjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAgKi87IH07CiAJCUE3MjAyOEI4MTc5NzYwMUUw
MDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjAyOEI1MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0
UnVubmVyVXRpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlBNzIwMjhCQTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklubGluZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjAyOEI5MTc5
NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTUwLDYgKzExNTAsMTAgQEAKIAkJQTdD
QTNBRTgxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDQTNBRTIxN0RBNDFBRTAwNjUzOEFGIC8qIEpT
V2Vha01hcC5oICovOyB9OwogCQlBN0NBM0FFQjE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERh
dGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdD
QTNBRTkxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCAqLzsgfTsKIAkJQTdDQTNB
RUMxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0NBM0FFQTE3REE1MTY4MDA2NTM4QUYgLyogV2Vh
a01hcERhdGEuaCAqLzsgfTsKKwkJQTdEODAxQTQxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5F
eGVjdXRhYmxlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBN0Q4MDFBMTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCAq
LzsgfTsKKwkJQTdEODAxQTUxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTIx
ODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3RDgwMUE4MTg4MEQ2QTgwMDI2QzM5
QiAvKiBKU0NCdWlsdGlucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBN0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwICov
OyB9OworCQlBN0Q4MDFBOTE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDgwMUE3MTg4MEQ2QTgw
MDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUE3RDg5Q0YyMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Js
b2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
RDg5Q0UzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNwcCAqLzsgfTsKIAkJQTdE
ODlDRjMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDg5Q0U0MTdBMEI4Q0Mw
MDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5jcHAgKi87IH07CiAJCUE3RDg5Q0Y0MTdB
MEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODlDRTUxN0EwQjhDQzAwNzczQUQ4IC8q
IERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTI0NjIsNiArMjQ2Niw4IEBACiAJCUE3MTIzNkU0MTE5NUYzM0Mw
MEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSklUT3Bjb2RlczMyXzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTcxOEY2MUExMTc1NEEyMTAwMjQ2NUE3IC8qIFJlZ0V4cEppdFRhYmxlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBKaXRUYWJsZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxOEY4MjExMTc4RUI0QjAwMjQ2NUE3IC8qIGNyZWF0ZV9y
ZWdleF90YWJsZXMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlw
ZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IGNyZWF0ZV9y
ZWdleF90YWJsZXM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MURBODBEMTg4MEQ3
MUYwMEQxRjI5OSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0
LnB5dGhvbjsgcGF0aCA9ICJnZW5lcmF0ZS1qcy1idWlsdGlucyI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE3MURBODBFMTg4MERCQUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdJbmxpbmVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI0MTc5NzYwMUUwMDk4MDI4QyAvKiBK
U0NUZXN0UnVubmVyVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNDVGVzdFJ1bm5lclV0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTcyMDI4QjUxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NUZXN0UnVubmVyVXRpbHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyMDI4QjkxNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rp
b25JbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRnVuY3Rpb25J
bmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTkwLDYgKzI1OTYsMTEg
QEAKIAkJQTdDQTNBRTIxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYWtNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTdDQTNBRTkxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYWtNYXBEYXRhLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdDQTNBRUExN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtN
YXBEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtNYXBEYXRhLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUEwMTg4MEQ2NkUwMDI2QzM5QiAv
KiBBcnJheS5wcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBh
dGggPSBBcnJheS5wcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3
RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTIxODgwRDY2RTAwMjZDMzlCIC8qIEJ1
aWx0aW5FeGVjdXRhYmxlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdWls
dGluRXhlY3V0YWJsZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTYx
ODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQ0J1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTdEODAxQTcxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ0J1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE3RDg5Q0UzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Jhc2ljQmxvY2suY3Bw
OyBwYXRoID0gZGZnL0RGR0Jhc2ljQmxvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBN0Q4OUNFNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQmxvY2tJbnNlcnRpb25T
ZXQuY3BwOyBwYXRoID0gZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTdEODlDRTUxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5z
ZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Jsb2NrSW5z
ZXJ0aW9uU2V0Lmg7IHBhdGggPSBkZmcvREZHQmxvY2tJbnNlcnRpb25TZXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5MjYsNiArMjkzNyw3IEBACiAJCQkJODYwNEY0RjIxNDNB
NkM0NDAwQjI5NUY1IC8qIENoYW5nZUxvZyAqLywKIAkJCQlGNjkyQTg1NDAyNTU1OTdEMDFGRjYw
RjcgLyogY3JlYXRlX2hhc2hfdGFibGUgKi8sCiAJCQkJQTcxOEY4MjExMTc4RUI0QjAwMjQ2NUE3
IC8qIGNyZWF0ZV9yZWdleF90YWJsZXMgKi8sCisJCQkJQTcxREE4MEQxODgwRDcxRjAwRDFGMjk5
IC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zICovLAogCQkJCTQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4
NCAvKiBqc2MuY3BwICovLAogCQkJCUY2OEVCQjhDMDI1NUQ0QzYwMUZGNjBGNyAvKiBjb25maWcu
aCAqLywKIAkJCQlGNUMyOTBFNjAyODRGOThFMDE4NjM1Q0EgLyogSmF2YVNjcmlwdENvcmVQcmVm
aXguaCAqLywKQEAgLTI5MzQsNiArMjk0Niw3IEBACiAJCQkJMTQzMkVCRDcwQTM0Q0FENDAwNzE3
QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4Q0IxMjBFRDEyQjRFMDAxRDY0OUYgLyogYXNzZW1ibGVy
ICovLAogCQkJCUE1NENGMkVBMTg0RUE3MzkwMDIzN0YxOSAvKiBiaW5kaW5ncyAqLywKKwkJCQlB
N0Q4MDE5RjE4ODBENjZFMDAyNkMzOUIgLyogYnVpbHRpbnMgKi8sCiAJCQkJOTY5QTA3OEYwRUQx
RDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovLAogCQkJCTdFMzlEODFEMEVDMzhFRkEwMDNBRjEx
QSAvKiBieXRlY29tcGlsZXIgKi8sCiAJCQkJMUM5MDUxM0UwQkE5RTg4MzAwODFFOUQwIC8qIENv
bmZpZ3VyYXRpb25zICovLApAQCAtMzUwOSw2ICszNTIyLDggQEAKIAkJNjUwRkRGOEQwOUQwRkNB
NzAwNzY5RTU0IC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCisJCQkJQTdEODAxQTYxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0
aW5zLmNwcCAqLywKKwkJCQlBN0Q4MDFBNzE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMu
aCAqLywKIAkJCQlCQzE4QzUyMzBFMTZGQzhBMDBCMzQ0NjAgLyogQXJyYXlQcm90b3R5cGUubHV0
LmggKi8sCiAJCQkJQkNEMjAzRTcwRTE3MThGNDAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUubHV0
LmggKi8sCiAJCQkJQTUxM0U1QzYxODVGOTQzNjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291
cmNlLmggKi8sCkBAIC0zODExLDYgKzM4MjYsNyBAQAogCQkJCUE3OTBERDZBMTgyRjQ5OTcwMDU4
ODgwNyAvKiBKU1NldEl0ZXJhdG9yLmggKi8sCiAJCQkJQkMwMkU5QjYwRTE4NDJGQTAwMEY5Mjk3
IC8qIEpTU3RyaW5nLmNwcCAqLywKIAkJCQlGNjkyQTg2MjAyNTU1OTdEMDFGRjYwRjcgLyogSlNT
dHJpbmcuaCAqLywKKwkJCQlBNzFEQTgwRTE4ODBEQkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxp
bmVzLmggKi8sCiAJCQkJODZFODU1MzgxMTFCOTk2ODAwMUFGNTFFIC8qIEpTU3RyaW5nQnVpbGRl
ci5oICovLAogCQkJCTI2MDBCNUE0MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5j
cHAgKi8sCiAJCQkJMjYwMEI1QTUxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVyLmgg
Ki8sCkBAIC00NTYxLDYgKzQ1NzcsMTYgQEAKIAkJCXBhdGggPSByZW1vdGU7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwogCQl9OworCQlBN0Q4MDE5RjE4ODBENjZFMDAyNkMzOUIgLyogYnVp
bHRpbnMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUE3
RDgwMUEwMTg4MEQ2NkUwMDI2QzM5QiAvKiBBcnJheS5wcm90b3R5cGUuanMgKi8sCisJCQkJQTdE
ODAxQTExODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi8sCisJCQkJ
QTdEODAxQTIxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oICovLAorCQkJ
KTsKKwkJCXBhdGggPSBidWlsdGluczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07
CiAvKiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhIZWFkZXJzQnVpbGRQ
aGFzZSBzZWN0aW9uICovCkBAIC00NjA2LDExICs0NjMyLDExIEBACiAJCQkJODZBREQxNDUwRkRE
RUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUNF
RUUxNTE4N0YzQkFEMDBFNTVDOTkgLyogSW5zcGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTY1QzAyODVEMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuaCBpbiBIZWFkZXJz
ICovLAotIAkJCQkyQTY4Mjk1QjE4NzVGODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5o
IGluIEhlYWRlcnMgKi8sCi0gICAgICAgICAgICAgICAgMkE0RUM5MEMxODYwRDZDMjAwOTRGNzgy
IC8qIFdyaXRlQmFycmllckJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkE2ODI5NUIxODc1
RjgwNTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTJB
NEVDOTBDMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZFNTkzMkE4MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1MzI0MzkzMTg1Njk3MDkwMDJFRDY5MiAvKiBDb2RlR2VuZXJhdG9y
SW5zcGVjdG9yU3RyaW5ncy5weSBpbiBIZWFkZXJzICovLAotIAkJCQlBNTMyNDM5MjE4NTY5NzA5
MDAyRUQ2OTIgLyogQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSBpbiBIZWFkZXJzICovLAorCQkJ
CUE1MzI0MzkyMTg1Njk3MDkwMDJFRDY5MiAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NEYxN0VFMjc0OTAwQUJCMjE3IC8qIFRlbXBSZWdpc3Rl
clNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwRTRCNjQxODgwOURENTAwNjhBNDZEIC8qIEpT
R2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUI1OEMxNTE4
N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLywKQEAg
LTQ2MjIsNyArNDY0OCw3IEBACiAJCQkJMEY4MzM1QjgxNjM5QzFFQTAwMTQ0M0I1IC8qIEFycmF5
QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwRTI5MTg3Q0E1RTYw
MDg0M0IxMCAvKiBpbmxpbmUtYW5kLW1pbmlmeS1zdHlsZXNoZWV0cy1hbmQtc2NyaXB0cy5weSBp
biBIZWFkZXJzICovLAogCQkJCUE1ODQwRTJCMTg3Q0E3NUIwMDg0M0IxMCAvKiBqc21pbi5weSBp
biBIZWFkZXJzICovLAotIAkJCQlBNTMyNDM5ODE4NTZBNDg5MDAyRUQ2OTIgLyogSW5zcGVjdG9y
SlMuanNvbiBpbiBIZWFkZXJzICovLAorCQkJCUE1MzI0Mzk4MTg1NkE0ODkwMDJFRDY5MiAvKiBJ
bnNwZWN0b3JKUy5qc29uIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMkExODdDQTc1OTAwODQz
QjEwIC8qIHh4ZC5wbCBpbiBIZWFkZXJzICovLAogCQkJCUZFQTA4NjIwMTgyQjdBMDQwMEY2RDg1
MSAvKiBCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzNTE3QURCNUYzMDA1
QUIxNzQgLyogQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNDczMyw3ICs0NzU5LDcg
QEAKIAkJCQlBMUEwMDlDMDE4MzFBMjJEMDBDRjg3MTEgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQzlEQzUxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVD
b2RlUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyODE4N0RGREVDMDA4M0I2ODcg
LyogRlRMQXZhaWxhYmxlUmVjb3ZlcnkuaCBpbiBIZWFkZXJzICovLAotICAgICAgICAgICAgICAg
IEE1OTNDRjg3MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggaW4g
SGVhZGVycyAqLywKKwkJCQlBNTkzQ0Y4NzE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdl
bnRSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNTZDMzYxNjI3QjBBRDAwN0YyNzgz
IC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0aWVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkZGQzk1ODE0RUY5MEEyMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2Uu
aCBpbiBIZWFkZXJzICovLApAQCAtNDg3Miw2ICs0ODk4LDcgQEAKIAkJCQkwRkVBMEExRDE3MDhC
MDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVB
MEExRjE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTU5NDU1OTMxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0
RGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdEODAxQTkxODgwRDZBODAwMjZDMzlC
IC8qIEpTQ0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEEwQTE3MDUxM0RCMDBC
QjcyMkMgLyogRlRMQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyQTE4
N0RGREVDMDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRUEwQTIzMTcwOTYwNjkwMEJCNzIyQyAvKiBGVExDb21tb25WYWx1ZXMuaCBpbiBIZWFkZXJz
ICovLApAQCAtNDk0Niw2ICs0OTczLDcgQEAKIAkJCQlCQzE4QzQwRjBFMTZGNUNEMDBCMzQ0NjAg
LyogSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzI1RjhCQ0UxNTc1NDRBOTAwMjQ1
QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTkx
NUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nSGVhZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlB
N0Q4MDFBNTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkI3RjM5QTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXJJbmxp
bmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5QjE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5k
ZXhpbmdUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNFRkFCMDE4MDVDQTZEMDA0NzJDRTQg
LyogSW5pdGlhbGl6ZUxMVk0uaCBpbiBIZWFkZXJzICovLApAQCAtNTIxOCw2ICs1MjQ2LDcgQEAK
IAkJCQlBNTMyNDM4ODE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0
Y2hlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDU2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBQ
cm90ZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc0QzMzQjE2QUEyRDk1MDA2MkYwMUQgLyog
UHJvdG90eXBlTWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzFEQTgwRjE4ODBEQkFCMDBEMUYy
OTkgLyogSlNTdHJpbmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMzJBNDE0Q0E3
REQ5MDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQ0Q0
QzIxNUYxQTYwNzAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4TW9kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJN0MwMDhDRTcxODc2MzFCNjAwOTU1QzI0IC8qIE1pY3JvdGFzay5oIGluIEhlYWRlcnMg
Ki8sCkBAIC01ODM2LDYgKzU4NjUsNyBAQAogCQkJCUE3RDg5Q0YyMTdBMEI4Q0MwMDc3M0FEOCAv
KiBERkdCYXNpY0Jsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MEIwODMyMTdBMEI3OUIw
MERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlD
RjMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUE3RDgwMUE0MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZFQzlEQzQxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5
dGVDb2RlUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDgyRTIxMTQxNzJDRTMwMDE3
OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGRkM5NTcx
NEVGOTBBMDAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTg1
Miw2ICs1ODgyLDcgQEAKIAkJCQkwRkZGQzk1OTE0RUY5MEE2MDBDNzI1MzIgLyogREZHQ1NFUGhh
c2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyRkM3NzIxNkUxMkY3MTAwMzhEOTc2IC8qIERG
R0RDRVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEYyQjk5MTcyRjA0RkYwMDdEQkRB
NSAvKiBERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTdEODAx
QTgxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE3M0UxMzMwMTc5NjI0Q0QwMEU0REVBOCAvKiBERkdEZXNpcmVkU3RydWN0dXJlQ2hhaW5zLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUMyQzBGN0NEMTdCQkZDNUIwMDQ2NEZFNCAvKiBERkdEZXNp
cmVkVHJhbnNpdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFODUzNEIxNzIzQ0RBNTAw
QjYxOEY1IC8qIERGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU5
NzYsNyArNjAwNyw3IEBACiAJCQkJMEY2QjFDQzUxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVud2lu
ZEluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5RDMzOUExODAzQURCNzAwNzNDMkJDIC8q
IEZUTFN0YWNrTWFwcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEExNjE3MDZCQjkwMDBC
QjcyMkMgLyogRlRMU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCi0gCQkJCTdDMDA4Q0QyMTg2RjhB
OTMwMDk1NUMyNCAvKiBKU1Byb21pc2VGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
N0MwMDhDRDIxODZGOEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjZCMUNCNTE4NUZDOUU5MDA4NDVEOTcgLyogRlRMSlNDYWxsLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGMjM1QkUxMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExUaHVua3Mu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5M0NGN0MxODQwMzYwMzAwQkZDRTI3IC8qIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKaW5kZXggYWYxNGUzM2VhYzA1OTdm
MmQ3OGM0YjNjZDE2MzU0MTFkYWJhOTY1ZS4uNjc5MjNmMDgyM2MyZmJhYjMxMTI4YWRiNTE5ZGM4
OWVhMDJiNjUwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9M
aW5rQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtC
dWZmZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNp
bmNsdWRlICJKSVRDb2RlLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNs
dWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlIDx3dGYvQ29tcGlsYXRp
b25UaHJlYWQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9B
cnJheS5wcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXku
cHJvdG90eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlYjQyZjVjYzQzM2YxNjM2MzQzYmZjOTgyYWEyYWFm
YjMzNmU5NDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQXJyYXkucHJvdG90eXBlLmpzCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlvbiBldmVyeShjYWxsYmFjayAvKiwg
dGhpc0FyZyAqLykgeworICAgICJ1c2Ugc3RyaWN0IjsKKyAgICBpZiAodGhpcyA9PT0gbnVsbCkK
KyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1
aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCIpOworICAgIAorICAgIGlmICh0aGlzID09PSB1
bmRlZmluZWQpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUu
ZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVmaW5lZCIpOworICAgIAorICAg
IHZhciBhcnJheSA9IEBPYmplY3QodGhpcyk7CisgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0
aCA+Pj4gMDsKKyAgICAKKyAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKQor
ICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxi
YWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOworCisgICAgdmFyIHRoaXNBcmcgPSBhcmd1bWVudHMu
bGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDsKKyAgICAKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmICghKGkgaW4gYXJyYXkpKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghY2FsbGJhY2suQGNhbGwodGhpc0Fy
ZywgYXJyYXlbaV0sIGksIGFycmF5KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQxZGJi
NWY5MjI1ZTI4YTEyZWQzZDE3OThmZjE3NjhlNDM2NzFhNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCkBAIC0w
LDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIK
KworI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisj
aW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKKyNpbmNsdWRlICJQYXJzZXIuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK0J1aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKFZN
JiB2bSkKKyAgICA6IG1fdm0odm0pCisjZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0Vf
TUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgLCBtXyMjbmFtZSMjU291cmNlKG1h
a2VTb3VyY2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoc18jI25hbWUsIGxlbmd0aCks
IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCI8YnVpbHRpbj4iKSkpCisgICAgSlNDX0ZP
UkVBQ0hfQlVJTFRJTihJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYg
RVhQT1NFX0JVSUxUSU5fU1RSSU5HUworeworfQorCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCit7CisgICAgSlNUZXh0UG9z
aXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZTsKKyAgICBQYXJzZXJFcnJvciBlcnJvcjsK
KyAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oJm1f
dm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBKU1BhcnNlQnVpbHRpbiwgSlNQYXJzZVByb2dy
YW1Db2RlLCBlcnJvciwgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOworCisgICAgaWYgKCFw
cm9ncmFtKSB7CisgICAgICAgIGRhdGFMb2coIkZhdGFsIGVycm9yIGNvbXBpbGluZyBidWlsdGlu
IGZ1bmN0aW9uICciLCBuYW1lLnN0cmluZygpLCAiJzogIiwgZXJyb3IubV9tZXNzYWdlKTsKKyAg
ICAgICAgQ1JBU0goKTsKKyAgICB9CisKKyAgICBTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVtZW50
ID0gcHJvZ3JhbS0+c2luZ2xlU3RhdGVtZW50KCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0
YXRlbWVudCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudC0+aXNFeHByU3RhdGVt
ZW50KCkpOworICAgIEV4cHJlc3Npb25Ob2RlKiBmdW5jRXhwciA9IHN0YXRpY19jYXN0PEV4cHJT
dGF0ZW1lbnROb2RlKj4oZXhwclN0YXRlbWVudCktPmV4cHIoKTsKKyAgICBSRUxFQVNFX0FTU0VS
VChmdW5jRXhwcik7CisgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHItPmlzRnVuY0V4cHJOb2Rl
KCkpOworICAgIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkgPSBzdGF0aWNfY2FzdDxGdW5jRXhwck5v
ZGUqPihmdW5jRXhwciktPmJvZHkoKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghcHJvZ3JhbS0+aGFz
Q2FwdHVyZWRWYXJpYWJsZXMoKSk7CisgICAgCisgICAgYm9keS0+c2V0RW5kUG9zaXRpb24ocG9z
aXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keSk7CisgICAg
UkVMRUFTRV9BU1NFUlQoYm9keS0+aWRlbnQoKS5pc051bGwoKSk7CisgICAgCisgICAgLy8gVGhp
cyBmdW5jdGlvbiBhc3N1bWVzIGFuIGlucHV0IHN0cmluZyB0aGF0IHdvdWxkIHJlc3VsdCBpbiBh
IHNpbmdsZSBhbm9ueW1vdXMgZnVuY3Rpb24gZXhwcmVzc2lvbi4KKyAgICBib2R5LT5zZXRFbmRQ
b3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKKyAgICBSRUxFQVNFX0FTU0VSVChi
b2R5KTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNsb3NlZFZhcmlhYmxlIDogcHJvZ3JhbS0+Y2xv
c2VkVmFyaWFibGVzKCkpIHsKKyAgICAgICAgaWYgKGNsb3NlZFZhcmlhYmxlID09IG1fdm0ucHJv
cGVydHlOYW1lcy0+YXJndW1lbnRzLmltcGwoKSkKKyAgICAgICAgY29udGludWU7CisgICAgICAg
IAorICAgICAgICBpZiAoY2xvc2VkVmFyaWFibGUgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT51bmRl
ZmluZWRLZXl3b3JkLmltcGwoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBSRUxF
QVNFX0FTU0VSVChjbG9zZWRWYXJpYWJsZS0+aXNFbXB0eVVuaXF1ZSgpKTsKKyAgICB9CisgICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJm1fdm0sIHNvdXJjZSwgYm9keSwgdHJ1ZSwgVW5s
aW5rZWRCdWlsdGluRnVuY3Rpb24pOworICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+bV9uYW1lVmFs
dWUuc2V0KG1fdm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwganNTdHJpbmcoJm1fdm0sIG5hbWUuc3Ry
aW5nKCkpKTsKKyAgICByZXR1cm4gZnVuY3Rpb25FeGVjdXRhYmxlOworfQorCisjZGVmaW5lIERF
RklORV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpuYW1lIyNFeGVj
dXRhYmxlKCkgXAore1wKKyAgICBpZiAoIW1fIyNuYW1lIyNFeGVjdXRhYmxlKVwKKyAgICAgICAg
bV8jI25hbWUjI0V4ZWN1dGFibGUgPSBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShtXyMjbmFtZSMj
U291cmNlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPmZ1bmN0aW9uTmFtZSk7XAorICAgIHJldHVybiBt
XyMjbmFtZSMjRXhlY3V0YWJsZS5nZXQoKTtcCit9CitKU0NfRk9SRUFDSF9CVUlMVElOKERFRklO
RV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX1NPVVJDRVMKKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRh
Ymxlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQ5YTE5ZTI2MTUwNzk0YTY2OWVjOThlMzk5YmY2N2Y3ZjcxMDY0
MTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbkV4ZWN1dGFibGVzLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQnVpbHRpbkV4ZWN1dGFibGVzX2gKKyNk
ZWZpbmUgQnVpbHRpbkV4ZWN1dGFibGVzX2gKKworI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisj
aW5jbHVkZSAiU291cmNlQ29kZS5oIgorI2luY2x1ZGUgIldlYWsuaCIKKyNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU7CitjbGFzcyBJZGVudGlmaWVyOworY2xhc3MgVk07CisKK2NsYXNzIEJ1aWx0
aW5FeGVjdXRhYmxlcyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8QnVpbHRpbkV4
ZWN1dGFibGVzPiBjcmVhdGUoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBCdWlsdGluRXhlY3V0YWJsZXModm0pKTsKKyAgICB9CisgICAgCisjZGVmaW5lIEVYUE9T
RV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCitjb25zdCBTb3Vy
Y2VDb2RlJiBuYW1lIyNTb3VyY2UoKSB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CisgICAg
CisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTihFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1
bmRlZiBFWFBPU0VfQlVJTFRJTl9TT1VSQ0VTCisgICAgCitwcml2YXRlOgorICAgIEJ1aWx0aW5F
eGVjdXRhYmxlcyhWTSYpOworICAgIFZNJiBtX3ZtOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShjb25zdCBTb3VyY2VDb2RlJiwgY29uc3Qg
SWRlbnRpZmllciYpOworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFt
ZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpXAorICAgIFNvdXJjZUNvZGUgbV8jI25hbWUjI1NvdXJj
ZTsgXAorICAgIFdlYWs8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+IG1fIyNuYW1lIyNFeGVj
dXRhYmxlOworICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4oREVDTEFSRV9CVUlMVElOX1NPVVJDRV9N
RU1CRVJTKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworfTsKKworfQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eVByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmls
ZS5jcHAKaW5kZXggNGMwNTVmZWE1NzM4ZjFjNDYzMjY2ZDRlOWE5MTU0OGExMjkzNDcwOS4uZWFl
ZmU1NGYyZDE1Mjg0YjY0YmY2OTk3MjY1OGNkMWM2M2I0ZWE3NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAK
ICNpbmNsdWRlICJBcnJheVByb2ZpbGUuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2lu
Y2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5o
PgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJp
bnRTdHJlYW0uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUJhc2ljQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlQmFzaWNCbG9jay5jcHAKaW5kZXggZDc0ODlkMzFhYmQ3Yzk5ZjFiYzZmYWZhZTY1ODEx
MTJhYmRhY2ZkYi4uMWEzYjVmNGM3ODA3Yjk0ODhmZjM2NTcyZjc5NGQwYmI5ZjM4ZDI1YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9j
ay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNC
bG9jay5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUJhc2ljQmxvY2su
aCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVz
LmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAKIG5hbWVzcGFjZSBKU0Mgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmNwcAppbmRleCA5MjYzMzRjNDQ0YzljMmYzZGZjYzk1MDEyY2QwYTRh
MDMxMDRkMmQ5Li5hZDRhZTIyOTVlYWM0OGFhNDBhZmJlZTNlYjY5Mjg5NmZjY2FiZDJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2Rl
VXNlRGVmLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRnVsbEJ5dGVjb2Rl
TGl2ZW5lc3MuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIlBy
ZWNpc2VKdW1wVGFyZ2V0cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKaW5kZXggNmE2MDA1NzZhMDAwYWRh
YzhhZjIxNGU5ODgxMzY0NjE5ZjI5YTAxMC4uNGJmODE4ODY2MDI4Yzc5NmE3MmU1NzgzMzJlNDY3
NzU1NmIyMzdhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxM
aW5rSW5mby5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkRGR09wZXJhdGlvbnMu
aCIKICNpbmNsdWRlICJERkdUaHVua3MuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5o
IgogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKIAogI2lmIEVOQUJMRShKSVQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDI2M2VjN2NhZGY0
Zjc5Y2E4MTAyNDQxZTYyYmYyYTA1YjVkZGMzZjIuLjc1MTUwNjU0MjM3NmQ3ZWRjNTk5YWEwMGY5
YjEyNjg1Y2RhMzUyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCkBAIC00MywxMSArNDMsMTMgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRl
ICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgotI2luY2x1ZGUgIkpTQ0pT
VmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkxMSW50RW50cnlw
b2ludC5oIgogI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJOYXRp
dmVFcnJvckNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5o
IgogI2luY2x1ZGUgIlJlZHVjZVdoaXRlc3BhY2UuaCIKQEAgLTE1NjksNyArMTU3MSw3IEBAIENv
ZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5s
aW5rZWRDb2RlQmxvY2sqIHVubGluCiAKICAgICBzZXRDb25zdGFudFJlZ2lzdGVycyh1bmxpbmtl
ZENvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcnMoKSk7CiAgICAgaWYgKHVubGlua2VkQ29kZUJs
b2NrLT51c2VzR2xvYmFsT2JqZWN0KCkpCi0gICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnNbdW5s
aW5rZWRDb2RlQmxvY2stPmdsb2JhbE9iamVjdFJlZ2lzdGVyKCkub2Zmc2V0KCldLnNldCgqbV92
bSwgb3duZXJFeGVjdXRhYmxlLCBtX2dsb2JhbE9iamVjdC5nZXQoKSk7CisgICAgICAgIG1fY29u
c3RhbnRSZWdpc3RlcnNbdW5saW5rZWRDb2RlQmxvY2stPmdsb2JhbE9iamVjdFJlZ2lzdGVyKCku
dG9Db25zdGFudEluZGV4KCldLnNldCgqbV92bSwgb3duZXJFeGVjdXRhYmxlLCBtX2dsb2JhbE9i
amVjdC5nZXQoKSk7CiAgICAgbV9mdW5jdGlvbkRlY2xzLnJlc2l6ZVRvRml0KHVubGlua2VkQ29k
ZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSk7CiAgICAgZm9yIChzaXplX3QgY291bnQg
PSB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCksIGkgPSAwOyBpIDwg
Y291bnQ7ICsraSkgewogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5r
ZWRFeGVjdXRhYmxlID0gdW5saW5rZWRDb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA2OGJjMDM3OWY1NzQ0
YzlhOGY3NDMxZGI2NGY4YWI1NGU2ZTEwNTNmLi40OTk1YzUyY2Y4YjJiMWI0ZDYyODA0NTNlZWQy
N2M3NzRhNDk1NThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCkBAIC01Niw3ICs1Niw2IEBACiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIKICNpbmNsdWRl
ICJPYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKLSNpbmNs
dWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHV0UHJvcGVydHlTbG90LmgiCiAjaW5jbHVk
ZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuY3BwCmluZGV4IGJlNTBjOTc3OGJmMzNlMzM5YWM4MzRiZjU2ZTNiMWU3NTU4
NmZlM2UuLmI3NjQ2ZWQxZWYxNjQxODlmY2ZjN2I1MzY1NmZiNjViZWQwNjRkMjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tKZXR0aXNvbmluZ1dh
dGNocG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRl
ICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdDb21tb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0
aW9uSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCmluZGV4IDY4ZGM2YjA1MzM1NTkwZWM0YzgxYzQy
MzQ2YmI3NGRiYmQ4ZmFjNTYuLjE1Nzg4MDg5MzRkZDNjYzRjZDk3ZDI3MWFlOGFjOGJmZTM5NzQ2
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2lu
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDb2Rl
QmxvY2suaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklu
bGluZXMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuY3Bw
CmluZGV4IDNhNjQ2YTg2YTk0OTE0M2VlMmNmMjMzYjI5YzhmMzgyMWFlOWYzMTEuLmJmYjUwNjEy
MGEyNzA1MTJlYjgxZDg0NGFjZWMyOTFlNzIwNDU0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0aW9uQ291bnRlci5jcHAKQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0
b3IuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9TdHJp
bmdFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5j
cHAKaW5kZXggMWFjNWJiNWEwNGY3NjA1ZDBkZGJjZGVmNjY0ZWQyN2M0ODIwNmU1NC4uZTAwNDJm
OTYyYjQzODE2ZDAwY2E2M2IzMmIyNTM0MzJmMmJjMTQyYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQ
cm9maWxlLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5j
bHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKaW5kZXggZWRlOGEzNjQzN2RkNzhjMmU0NmEyOWQ2YjNl
MDc5ZDNkMmQwZmVlZC4uYzk0MDIyZjk3ZmI4YmQ3OGNkYzVkMTM4ZTZkNWY3MGY0NmQ0ZDMyZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFy
Z2V0cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1w
VGFyZ2V0cy5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKIAorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVz
LmgiCisKIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZSA8c2l6ZV90IHZlY3RvclNpemU+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxv
Y2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcAppbmRleCA5ODZl
MDNkMGNiYTcxODViMzljZWUwMjNmNGFiNmJjOWI4Y2NiNmU0Li4yZjkwZmI2OWY4YzBiNjk5YWQx
MmFjNDYyMTFhMjljNGNhZmJiNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29u
aW5nV2F0Y2hwb2ludC5jcHAKQEAgLTMxLDYgKzMxLDggQEAKICNpbmNsdWRlICJDb2RlQmxvY2su
aCIKICNpbmNsdWRlICJERkdDb21tb24uaCIKICNpbmNsdWRlICJERkdFeGl0UHJvZmlsZS5oIgor
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGlu
ZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAKaW5kZXggZDE4ZGJjMWZmMWUwMTNlNmFkYTdmZjVkNDg3
MWZlYzEwODUxYTQ5Yi4uZjE4NDUzZTU2Njk2NDJlMTZlMTA0ZDJhOGQ0OTM2YWVlM2FkMzY2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAK
QEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIklu
dGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJP
cGNvZGUuaCIKIAogI2lmICFPUyhXSU5ET1dTKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHAKaW5kZXggNzc4OTY1M2YwNTRjYmUxZWRlNjJl
YjBiZWVmN2YxY2FmNjA0ZTAxZC4uMGRiMzU5ZGYzYzI5MDQyN2Q5NTI3MDhkYjE3ZTI1ZTc2YWZj
ZDU3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQ
b2ludGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBv
aW50ZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU3BlY2lhbFBvaW50ZXIuaCIK
IAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5n
V2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAKaW5kZXggNWNmYjNkMWU4ZjUyODVhYmE3MTk0OGY2
ZjNhMzBlZjVlY2VhYjZkZi4uZWM4NmE3MTgwY2Y1NDhkZjY0Njg3NDVmNmEyZjNkMDBkMWJiZmMz
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0
dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcApAQCAtMjksNiArMjksNyBA
QAogI2lmIEVOQUJMRShKSVQpCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJK
U0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAKIG5h
bWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggMWRmYjVhYzZhZDkwOTNmOGY4MTEwMWVmN2YyZTYx
MjMxMWFjMTkzOS4uNDMzOTBkOTY1ZmM1MDM0MDE2ZjdiZmZmMjNlNjhiYjFlMDU0NTUyYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCkBAIC00OSw5ICs0OSw5IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZFByb2dyYW1D
b2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayIsCiBjb25zdCBD
bGFzc0luZm8gVW5saW5rZWRFdmFsQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZEV2YWxD
b2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlu
a2VkRXZhbENvZGVCbG9jaykgfTsKIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrIiwgJkJhc2U6OnNf
aW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KSB9OwogCi1zdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlv
bkNvZGVCbG9jayhWTSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxl
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwg
RGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFy
c2VyRXJyb3ImIGVycm9yKQorc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVy
YXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxl
ck1vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVy
cm9yKQogewotICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBib2R5ID0gcGFyc2U8RnVuY3Rp
b25Cb2R5Tm9kZT4oJnZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0
YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpID8gSlNQYXJzZVN0
cmljdCA6IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VGdW5jdGlvbkNvZGUsIGVycm9yKTsKKyAgICBS
ZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSA9IHBhcnNlPEZ1bmN0aW9uQm9keU5vZGU+KCZ2
bSwgc291cmNlLCBleGVjdXRhYmxlLT5wYXJhbWV0ZXJzKCksIGV4ZWN1dGFibGUtPm5hbWUoKSwg
ZXhlY3V0YWJsZS0+dG9TdHJpY3RuZXNzKCksIEpTUGFyc2VGdW5jdGlvbkNvZGUsIGVycm9yKTsK
IAogICAgIGlmICghYm9keSkgewogICAgICAgICBBU1NFUlQoZXJyb3IubV90eXBlICE9IFBhcnNl
ckVycm9yOjpFcnJvck5vbmUpOwpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhWTSYgdm0sIFVubGlua2Vk
RnVuYwogICAgIGJvZHktPmZpbmlzaFBhcnNpbmcoZXhlY3V0YWJsZS0+cGFyYW1ldGVycygpLCBl
eGVjdXRhYmxlLT5uYW1lKCksIGV4ZWN1dGFibGUtPmZ1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2ds
ZSgpKTsKICAgICBleGVjdXRhYmxlLT5yZWNvcmRQYXJzZShib2R5LT5mZWF0dXJlcygpLCBib2R5
LT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKICAgICAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUoJnZtLCBG
dW5jdGlvbkNvZGUsIEV4ZWN1dGFibGVJbmZvKGJvZHktPm5lZWRzQWN0aXZhdGlvbigpLCBib2R5
LT51c2VzRXZhbCgpLCBib2R5LT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3Ry
dWN0KSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5m
byhib2R5LT5uZWVkc0FjdGl2YXRpb24oKSwgYm9keS0+dXNlc0V2YWwoKSwgYm9keS0+aXNTdHJp
Y3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlu
a2VkQnVpbHRpbkZ1bmN0aW9uKSk7CiAgICAgT3duUHRyPEJ5dGVjb2RlR2VuZXJhdG9yPiBnZW5l
cmF0b3IoYWRvcHRQdHIobmV3IEJ5dGVjb2RlR2VuZXJhdG9yKHZtLCBib2R5LmdldCgpLCByZXN1
bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlKSkpOwogICAgIGVycm9yID0gZ2VuZXJhdG9y
LT5nZW5lcmF0ZSgpOwogICAgIGJvZHktPmRlc3Ryb3lEYXRhKCk7CkBAIC04MiwxMyArODIsMTQg
QEAgdW5zaWduZWQgVW5saW5rZWRDb2RlQmxvY2s6OmFkZE9yRmluZENvbnN0YW50KEpTVmFsdWUg
dikKICAgICByZXR1cm4gYWRkQ29uc3RhbnQodik7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUs
IGJvb2wgaXNGcm9tR2xvYmFsQ29kZSkKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9t
R2xvYmFsQ29kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCkKICAgICA6IEJhc2UoKnZtLCBz
dHJ1Y3R1cmUpCiAgICAgLCBtX251bUNhcHR1cmVkVmFyaWFibGVzKG5vZGUtPmNhcHR1cmVkVmFy
aWFibGVDb3VudCgpKQogICAgICwgbV9mb3JjZVVzZXNBcmd1bWVudHMobm9kZS0+dXNlc0FyZ3Vt
ZW50cygpKQogICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChub2RlLT5pc1N0cmljdE1vZGUoKSkK
ICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMobm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMo
KSkKICAgICAsIG1faXNGcm9tR2xvYmFsQ29kZShpc0Zyb21HbG9iYWxDb2RlKQorICAgICwgbV9p
c0J1aWx0aW5GdW5jdGlvbihraW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uKQogICAgICwg
bV9uYW1lKG5vZGUtPmlkZW50KCkpCiAgICAgLCBtX2luZmVycmVkTmFtZShub2RlLT5pbmZlcnJl
ZE5hbWUoKSkKICAgICAsIG1fcGFyYW1ldGVycyhub2RlLT5wYXJhbWV0ZXJzKCkpCkBAIC0xNjYs
NyArMTY3LDcgQEAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OmNvZGVCbG9ja0ZvcihWTSYgdm0sIGNvbnMKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCi0gICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVGdW5j
dGlvbkNvZGVCbG9jayh2bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVn
Z2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jayogcmVzdWx0ID0gZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayh2bSwgdGhpcywgc291cmNl
LCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBpc0J1aWx0
aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1
bmN0aW9uLCBlcnJvcik7CiAgICAgCiAgICAgaWYgKGVycm9yLm1fdHlwZSAhPSBQYXJzZXJFcnJv
cjo6RXJyb3JOb25lKQogICAgICAgICByZXR1cm4gMDsKQEAgLTIxMCw2ICsyMTEsNyBAQCBVbmxp
bmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgQ29kZVR5cGUgY29kZQogICAgICwgbV9pc1N0cmljdE1vZGUoaW5mby5tX2lzU3RyaWN0
TW9kZSkKICAgICAsIG1faXNDb25zdHJ1Y3RvcihpbmZvLm1faXNDb25zdHJ1Y3RvcikKICAgICAs
IG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9u
KGluZm8ubV9pc0J1aWx0aW5GdW5jdGlvbikKICAgICAsIG1fZmlyc3RMaW5lKDApCiAgICAgLCBt
X2xpbmVDb3VudCgwKQogICAgICwgbV9lbmRDb2x1bW4oVUlOVF9NQVgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IGI5ZGFl
MmQ1YzY5Yzc5Y2VhYWE4MDIzZDJhM2ExZjI2ZDQ2MDk0M2IuLmFiZjZjZjM1YjkzMDZhNGY3YTMw
MWFiMGRmNzY2NmVjNjEyZTM3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC02NiwyNiArNjYsMzUgQEAgdHlwZWRlZiB1
bnNpZ25lZCBVbmxpbmtlZE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOwogdHlwZWRlZiB1bnNpZ25l
ZCBVbmxpbmtlZExMSW50Q2FsbExpbmtJbmZvOwogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewot
ICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBi
b29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yKQorICAgIEV4ZWN1dGFibGVJbmZv
KGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwg
Ym9vbCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKQogICAgICAgICA6IG1f
bmVlZHNBY3RpdmF0aW9uKG5lZWRzQWN0aXZhdGlvbikKICAgICAgICAgLCBtX3VzZXNFdmFsKHVz
ZXNFdmFsKQogICAgICAgICAsIG1faXNTdHJpY3RNb2RlKGlzU3RyaWN0TW9kZSkKICAgICAgICAg
LCBtX2lzQ29uc3RydWN0b3IoaXNDb25zdHJ1Y3RvcikKKyAgICAgICAgLCBtX2lzQnVpbHRpbkZ1
bmN0aW9uKGlzQnVpbHRpbkZ1bmN0aW9uKQogICAgIHsKICAgICB9Ci0gICAgYm9vbCBtX25lZWRz
QWN0aXZhdGlvbjsKLSAgICBib29sIG1fdXNlc0V2YWw7Ci0gICAgYm9vbCBtX2lzU3RyaWN0TW9k
ZTsKLSAgICBib29sIG1faXNDb25zdHJ1Y3RvcjsKKyAgICBib29sIG1fbmVlZHNBY3RpdmF0aW9u
IDogMTsKKyAgICBib29sIG1fdXNlc0V2YWwgOiAxOworICAgIGJvb2wgbV9pc1N0cmljdE1vZGUg
OiAxOworICAgIGJvb2wgbV9pc0NvbnN0cnVjdG9yIDogMTsKKyAgICBib29sIG1faXNCdWlsdGlu
RnVuY3Rpb24gOiAxOworfTsKKworZW51bSBVbmxpbmtlZEZ1bmN0aW9uS2luZCB7CisgICAgVW5s
aW5rZWROb3JtYWxGdW5jdGlvbiwKKyAgICBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwKIH07CiAK
IGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGljIEpTQ2VsbCB7CiBwdWJs
aWM6CisgICAgZnJpZW5kIGNsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlczsKICAgICBmcmllbmQgY2xh
c3MgQ29kZUNhY2hlOworICAgIGZyaWVuZCBjbGFzcyBWTTsKICAgICB0eXBlZGVmIEpTQ2VsbCBC
YXNlOwotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNKiB2
bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlLCBib29s
IGlzRnJvbUdsb2JhbENvZGUgPSBmYWxzZSkKKyAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rp
b25Cb2R5Tm9kZSogbm9kZSwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlLCBVbmxpbmtlZEZ1bmN0aW9u
S2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCkKICAgICB7Ci0gICAgICAgIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVhcCkpIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNv
dXJjZSwgbm9kZSwgaXNGcm9tR2xvYmFsQ29kZSk7CisgICAgICAgIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVhcCkpIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJj
ZSwgbm9kZSwgaXNGcm9tR2xvYmFsQ29kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQpOwogICAgICAg
ICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oKnZtKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNl
OwogICAgIH0KQEAgLTk5LDYgKzEwOCwxNCBAQCBwdWJsaWM6CiAgICAgfQogICAgIHNpemVfdCBw
YXJhbWV0ZXJDb3VudCgpIGNvbnN0OwogICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBjb25z
dCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0OyB9CisgICAgSlNQYXJzZXJTdHJpY3RuZXNz
IHRvU3RyaWN0bmVzcygpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9pc0J1aWx0aW5GdW5j
dGlvbikKKyAgICAgICAgICAgIHJldHVybiBKU1BhcnNlQnVpbHRpbjsKKyAgICAgICAgaWYgKG1f
aXNJblN0cmljdENvbnRleHQpCisgICAgICAgICAgICByZXR1cm4gSlNQYXJzZVN0cmljdDsKKyAg
ICAgICAgcmV0dXJuIEpTUGFyc2VOb3JtYWw7CisgICAgfQogICAgIEZ1bmN0aW9uTmFtZUlzSW5T
Y29wZVRvZ2dsZSBmdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGUoKSBjb25zdCB7IHJldHVybiBt
X2Z1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZTsgfQogCiAgICAgdW5zaWduZWQgZmlyc3RMaW5l
T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdExpbmVPZmZzZXQ7IH0KQEAgLTE0Miw4ICsx
NTksMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0ltbW9ydGFsU3RydWN0
dXJlID0gdHJ1ZTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCisgICAgYm9v
bCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247
IH0KKwogcHJpdmF0ZToKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVj
dHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbkJvZHlOb2RlKiwgYm9vbCBpc0Zyb21H
bG9iYWxDb2RlKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVjdHVy
ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbkJvZHlOb2RlKiwgYm9vbCBpc0Zyb21HbG9i
YWxDb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCk7CiAgICAgV3JpdGVCYXJyaWVyPFVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2s+IG1fY29kZUJsb2NrRm9yQ2FsbDsKICAgICBXcml0ZUJhcnJpZXI8
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3Q7CiAKQEAg
LTE1Miw2ICsxNzEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0luU3RyaWN0Q29udGV4dCA6
IDE7CiAgICAgYm9vbCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIDogMTsKICAgICBib29sIG1faXNG
cm9tR2xvYmFsQ29kZSA6IDE7CisgICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKIAog
ICAgIElkZW50aWZpZXIgbV9uYW1lOwogICAgIElkZW50aWZpZXIgbV9pbmZlcnJlZE5hbWU7CkBA
IC0zMTksNiArMzM5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNOdW1lcmljQ29tcGFyZUZ1
bmN0aW9uKGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKSB7IG1faXNOdW1lcmljQ29tcGFy
ZUZ1bmN0aW9uID0gaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CiAgICAgYm9vbCBpc051bWVy
aWNDb21wYXJlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzTnVtZXJpY0NvbXBhcmVGdW5j
dGlvbjsgfQogCisgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
aXNCdWlsdGluRnVuY3Rpb247IH0KKyAgICAKICAgICB2b2lkIHNocmlua1RvRml0KCkKICAgICB7
CiAgICAgICAgIG1fanVtcFRhcmdldHMuc2hyaW5rVG9GaXQoKTsKQEAgLTUwMCw2ICs1MjIsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1N0cmljdE1vZGUgOiAxOwogICAgIGJvb2wgbV9pc0Nv
bnN0cnVjdG9yIDogMTsKICAgICBib29sIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgOiAxOworICAg
IGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CiAgICAgdW5zaWduZWQgbV9maXJzdExpbmU7
CiAgICAgdW5zaWduZWQgbV9saW5lQ291bnQ7CiAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCmluZGV4IDY4MTBhYjgwMDJjZTZiYjhkNzhlN2ZmMjIyN2Y0YzZlYTdiNzU4
YzIuLmVjNTIxYjUzMDQ2MzkyM2U3NGMwMTBmYTIxOGU1OWVkMmE5YTNjYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCkBAIC0xNzUsNiArMTc1LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2Vu
ZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFAKICNlbmRp
ZgogICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKICAgICAsIG1fZXhwcmVzc2lvblRvb0Rl
ZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGZhbHNlKQogewogICAgIGlmICht
X3Nob3VsZEVtaXREZWJ1Z0hvb2tzKQogICAgICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNGdWxs
U2NvcGVDaGFpbih0cnVlKTsKQEAgLTIyMiw3ICsyMjMsMTMgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb25Cb2R5
LCBVbmwKICNlbmRpZgogICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKICAgICAsIG1fZXhw
cmVzc2lvblRvb0RlZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGNvZGVCbG9j
ay0+aXNCdWlsdGluRnVuY3Rpb24oKSkKIHsKKyAgICBpZiAobV9pc0J1aWx0aW5GdW5jdGlvbikg
eworICAgICAgICBtX3Nob3VsZEVtaXRQcm9maWxlSG9va3MgPSBmYWxzZTsKKyAgICAgICAgbV9z
aG91bGRFbWl0RGVidWdIb29rcyA9IGZhbHNlOworICAgIH0KKwogICAgIGlmIChtX3Nob3VsZEVt
aXREZWJ1Z0hvb2tzKQogICAgICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNGdWxsU2NvcGVDaGFp
bih0cnVlKTsKIApAQCAtNDM4LDYgKzQ0NSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kCiAj
ZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAgICAgLCBtX2V4cHJlc3Npb25U
b29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihmYWxzZSkKIHsKICAgICBt
X2NvZGVCbG9jay0+c2V0TmVlZHNGdWxsU2NvcGVDaGFpbih0cnVlKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmlu
ZGV4IDRlOWYyMTNjOWJmYTZjZjE5NGIxYTE0ZmU5MTllODMzMzdhZTM1ZDkuLjE1ODQyNzRiNzhl
YTZjMGJkMGVmYjBiOTgyNWM4MThiZTBkYmMwNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ2MSw3ICs0
NjEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBzaG91bGRFbWl0RGVidWdIb29r
cygpIHsgcmV0dXJuIG1fc2hvdWxkRW1pdERlYnVnSG9va3M7IH0KICAgICAgICAgCiAgICAgICAg
IGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzU3RyaWN0
TW9kZSgpOyB9Ci0KKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisgICAgICAgIAogICAgIHByaXZh
dGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMYWJlbDsKICAgICAgICAgCkBAIC01NDMsNyArNTQ1
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogbWFrZUZ1bmN0aW9uKEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRl
KG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgYm9keSk7CisgICAgICAgICAgICByZXR1cm4g
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291
cmNlKCksIGJvZHksIGZhbHNlLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGlu
RnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uKTsKICAgICAgICAgfQogCiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRJbml0TGF6eVJlZ2lzdGVyKFJlZ2lzdGVySUQqKTsKQEAgLTY3Nyw2
ICs2NzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIG1fdXNlc0V4Y2VwdGlv
bnM7CiAgICAgICAgIGJvb2wgbV9leHByZXNzaW9uVG9vRGVlcDsKKyAgICAgICAgYm9vbCBtX2lz
QnVpbHRpbkZ1bmN0aW9uOwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAxZmZkNGYzMTE4ODJkMGVl
NWM1NTE0ZjViOGIyNTkzOWQ5NzVlMzc5Li42MmVjYTM2YTEwZDc3MDhhOTI4ZDQzYWMwM2YyZmM4
NjE1Y2VjYTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0yNiwxMCArMjYsMTAgQEAKIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCi0jaW5jbHVkZSAiTm9kZUNvbnN0cnVjdG9ycy5oIgog
CiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIK
KyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAj
aW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtMzgsNiArMzgsNyBA
QAogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJMYWJlbFNjb3BlLmgiCiAjaW5j
bHVkZSAiTGV4ZXIuaCIKKyNpbmNsdWRlICJOb2RlQ29uc3RydWN0b3JzLmgiCiAjaW5jbHVkZSAi
T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFt
ZUFycmF5LmgiCkBAIC01MzUsMzYgKzUzNiwzOSBAQCBSZWdpc3RlcklEKiBDYWxsRnVuY3Rpb25D
YWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAg
ICAgUmVmUHRyPExhYmVsPiBlbmQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwogICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Np
b25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBm
dW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9u
KGRzdCksIGJhc2UuZ2V0KCksIG1faWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5j
dGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRz
dCksIGJhc2UuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuY2FsbCk7CiAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24o
ZHN0LCBmdW5jdGlvbi5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlv
bkNhbGwoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKKyAgICBib29sIGVtaXRDYWxs
Q2hlY2sgPSAhZ2VuZXJhdG9yLmlzQnVpbHRpbkZ1bmN0aW9uKCk7CisgICAgaWYgKGVtaXRDYWxs
Q2hlY2spCisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKGZ1bmN0
aW9uLmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7CisKICAgICB7CiAgICAgICAgIGlmIChtX2FyZ3Mt
Pm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpIHsKICAgICAgICAgICAg
IEFyZ3VtZW50TGlzdE5vZGUqIG9sZExpc3QgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CiAgICAgICAg
ICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKLQor
ICAgICAgICAgICAgCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9u
ID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFz
ZS5nZXQoKSk7CiAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJh
dG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVu
dHMudGhpc1JlZ2lzdGVyKCksIG9sZExpc3QtPm1fZXhwcik7CiAgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7Ci0KICAg
ICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9sZExpc3Q7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9y
LmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAg
ICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3Mp
OwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lz
dGVyKCksIGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJl
dHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwg
Y2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQot
ICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOwotICAgIHsKLSAgICAgICAg
Q2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAgICAgICAg
Z2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0
KCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0
aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRp
dm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0
TGFiZWwocmVhbENhbGwuZ2V0KCkpOworICAgICAgICB7CisgICAgICAgICAgICBDYWxsQXJndW1l
bnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwor
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlv
bi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICB9CisgICAgICAgIGdlbmVyYXRvci5lbWl0
TGFiZWwoZW5kLmdldCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0
KCkpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZS5nZXQoKTsKIH0KIApAQCAtNTg1LDY1ICs1ODks
NjcgQEAgUmVnaXN0ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICBSZWZQdHI8TGFiZWw+IGVuZCA9IGdl
bmVyYXRvci5uZXdMYWJlbCgpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJh
dG9yLmVtaXROb2RlKG1fYmFzZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhz
dWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25F
bmQoKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRH
ZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgbV9pZGVu
dCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uOwogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuY3Rp
b24uZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25BcHBseShmdW5j
dGlvbi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkpOwotICAgIHsKLSAgICAgICAgaWYgKG1heUJlQ2Fs
bCkgewotICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlz
dE5vZGUtPm1fZXhwcikgewotICAgICAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIG9sZExp
c3QgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7Ci0gICAgICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9s
aXN0Tm9kZS0+bV9uZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1f
bGlzdE5vZGUtPm1fbmV4dC0+bV9leHByLT5pc1NpbXBsZUFycmF5KCkpOwotICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoIW1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX25leHQpOwotICAg
ICAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBzdGF0aWNfY2FzdDxBcnJheU5v
ZGUqPihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByKS0+dG9Bcmd1bWVudExpc3Qo
Z2VuZXJhdG9yLnZtKCksIDAsIDApOwotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVz
dGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIENhbGxBcmd1
bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAgICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRM
aXN0LT5tX2V4cHIpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0
dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBj
YWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9k
ZSA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwotICAgICAgICAgICAgICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRv
ci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAg
IENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAgICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rl
cigpLCBvbGRMaXN0LT5tX2V4cHIpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1
bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUg
PSBvbGRMaXN0OworICAgIGJvb2wgZW1pdENhbGxDaGVjayA9ICFnZW5lcmF0b3IuaXNCdWlsdGlu
RnVuY3Rpb24oKTsKKyAgICBpZiAoZW1pdENhbGxDaGVjaykgeworICAgICAgICBmdW5jdGlvbiA9
IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJh
c2UuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYXBwbHkpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHkoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxs
LmdldCgpKTsKKyAgICB9CisgICAgaWYgKG1heUJlQ2FsbCkgeworICAgICAgICBpZiAobV9hcmdz
LT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKSB7CisgICAgICAgICAg
ICBBcmd1bWVudExpc3ROb2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgICAg
ICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KSB7CisgICAgICAgICAgICAgICAg
QVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHItPmlzU2ltcGxlQXJyYXko
KSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+
bV9uZXh0KTsKKyAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBzdGF0aWNfY2Fz
dDxBcnJheU5vZGUqPihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByKS0+dG9Bcmd1
bWVudExpc3QoZ2VuZXJhdG9yLnZtKCksIDAsIDApOworICAgICAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRl
bXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBDYWxsQXJn
dW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgICAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0
LT5tX2V4cHIpOworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1
ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1
bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG1fYXJncy0+bV9s
aXN0Tm9kZS0+bV9uZXh0OwogICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFs
RnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihk
c3QpLCBiYXNlLmdldCgpKTsKICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1
bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIo
KSwgb2xkTGlzdC0+bV9leHByKTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwo
cmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9u
LCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAg
ICAgICAgICAgfQorICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gb2xkTGlzdDsKICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYg
bV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHByb2ZpbGVIb29rUmVnaXN0ZXI7Ci0gICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLnNob3Vs
ZEVtaXRQcm9maWxlSG9va3MoKSkKLSAgICAgICAgICAgICAgICBwcm9maWxlSG9va1JlZ2lzdGVy
ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3Rp
bmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHRoaXNSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2FyZ3MtPm1fbGlzdE5vZGUtPm1f
ZXhwcik7Ci0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXJnc1JlZ2lzdGVyOwotICAg
ICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogYXJncyA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9u
ZXh0OwotICAgICAgICAgICAgaWYgKGFyZ3MtPm1fZXhwci0+aXNSZXNvbHZlTm9kZSgpICYmIGdl
bmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4o
YXJncy0+bV9leHByKS0+aWRlbnRpZmllcigpKSkKLSAgICAgICAgICAgICAgICBhcmdzUmVnaXN0
ZXIgPSBnZW5lcmF0b3IudW5jaGVja2VkUmVnaXN0ZXJGb3JBcmd1bWVudHMoKTsKLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUoYXJncy0+bV9leHByKTsKLQotICAgICAgICAgICAgLy8gRnVuY3Rpb24ucHJvdG90eXBlLmFw
cGx5IGlnbm9yZXMgZXh0cmEgYXJndW1lbnRzLCBidXQgd2Ugc3RpbGwKLSAgICAgICAgICAgIC8v
IG5lZWQgdG8gZXZhbHVhdGUgdGhlbSBmb3Igc2lkZSBlZmZlY3RzLgotICAgICAgICAgICAgd2hp
bGUgKChhcmdzID0gYXJncy0+bV9uZXh0KSkKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dE5vZGUoYXJncy0+bV9leHByKTsKLQotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsVmFy
YXJncyhyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCB0aGlzUmVnaXN0ZXIu
Z2V0KCksIGFyZ3NSZWdpc3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm9m
aWxlSG9va1JlZ2lzdGVyLmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OworICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9h
cmdzKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNS
ZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2Fs
bChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rp
b24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAg
ICAgICAgIH0KLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlz
dE5vZGUtPm1fbmV4dCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9maWxlSG9va1Jl
Z2lzdGVyOworICAgICAgICBpZiAoZ2VuZXJhdG9yLnNob3VsZEVtaXRQcm9maWxlSG9va3MoKSkK
KyAgICAgICAgICAgIHByb2ZpbGVIb29rUmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3Iu
ZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKKyAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9k
ZShtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcik7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBhcmdzUmVnaXN0ZXI7CisgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MgPSBtX2FyZ3Mt
Pm1fbGlzdE5vZGUtPm1fbmV4dDsKKyAgICAgICAgaWYgKGFyZ3MtPm1fZXhwci0+aXNSZXNvbHZl
Tm9kZSgpICYmIGdlbmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHN0YXRpY19jYXN0PFJl
c29sdmVOb2RlKj4oYXJncy0+bV9leHByKS0+aWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIGFy
Z3NSZWdpc3RlciA9IGdlbmVyYXRvci51bmNoZWNrZWRSZWdpc3RlckZvckFyZ3VtZW50cygpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUoYXJncy0+bV9leHByKTsKKworICAgICAgICAvLyBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkg
aWdub3JlcyBleHRyYSBhcmd1bWVudHMsIGJ1dCB3ZSBzdGlsbAorICAgICAgICAvLyBuZWVkIHRv
IGV2YWx1YXRlIHRoZW0gZm9yIHNpZGUgZWZmZWN0cy4KKyAgICAgICAgd2hpbGUgKChhcmdzID0g
YXJncy0+bV9uZXh0KSkKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShhcmdzLT5tX2V4
cHIpOworCisgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbFZhcmFyZ3MocmV0dXJuVmFsdWUuZ2V0
KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBhcmdzUmVnaXN0ZXIu
Z2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQo
KSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICB9Ci0gICAgZ2VuZXJh
dG9yLmVtaXRMYWJlbChyZWFsQ2FsbC5nZXQoKSk7Ci0gICAgeworICAgIGlmIChlbWl0Q2FsbENo
ZWNrKSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOworICAgICAgICBn
ZW5lcmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKICAgICAgICAgQ2FsbEFyZ3VtZW50
cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwogICAgICAg
ICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBO
b0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAg
ICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0KCkpOwogICAgIHJldHVybiByZXR1
cm5WYWx1ZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Ny
ZWF0ZV9oYXNoX3RhYmxlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxl
CmluZGV4IDM5Nzk3NmIwNmM3YTliNTgzNjMzMjkwMGE2ZWJiOTNlYzY4Yjc0ODYuLmNhZDY1YmM0
Y2M4ODhlMzE0Zjg4ZDY2NWRkNGE2ZTY0NWEwOWEzNTUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Y3JlYXRlX2hhc2hfdGFibGUKQEAgLTI4OSw3ICsyODksMTcgQEAgc3ViIG91dHB1dCgpIHsKICAg
ICAgICAgICAgICRpbnRyaW5zaWMgPSAiUmVnRXhwVGVzdEludHJpbnNpYyIgaWYgKCRrZXkgZXEg
InRlc3QiKTsKICAgICAgICAgfQogCisgICAgICAgIGlmICgkdmFsdWVzWyRpXXsidHlwZSJ9IGVx
ICJGdW5jdGlvbiIpICB7CisgICAgICAgICAgICBteSAkdGFibGVIZWFkID0gJG5hbWU7CisgICAg
ICAgICAgICAkdGFibGVIZWFkID1+IHMvVGFibGUkLy87CisgICAgICAgICAgICBwcmludCAiICNp
ZiBKU0NfQlVJTFRJTl9FWElTVFMoIiAuIHVjKCR0YWJsZUhlYWQgLiAka2V5KSAuIilcbiI7Cisg
ICAgICAgICAgICBwcmludCAiICAgeyBcIiRrZXlcIiwgKCgkYXR0cnNbJGldKSAmIH5GdW5jdGlv
bikgfCBCdWlsdGluLCAkaW50cmluc2ljLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8QnVpbHRpbkdl
bmVyYXRvcj4oIiAuICR0YWJsZUhlYWQgLiB1Y2ZpcnN0KCRrZXkpIC4gIkNvZGVHZW5lcmF0b3Ip
LCAoaW50cHRyX3QpJHNlY29uZFZhbHVlIH0sXG4iOworICAgICAgICAgICAgcHJpbnQgIiAjZWxz
ZVxuIgorICAgICAgICB9CiAgICAgICAgIHByaW50ICIgICB7IFwiJGtleVwiLCAkYXR0cnNbJGld
LCAkaW50cmluc2ljLCAoaW50cHRyX3QpIiAuICRmaXJzdENhc3RTdHIgLiAiKCRmaXJzdFZhbHVl
KSwgKGludHB0cl90KSIgLiAkc2Vjb25kQ2FzdFN0ciAuICIoJHNlY29uZFZhbHVlKSB9LFxuIjsK
KyAgICAgICAgaWYgKCR2YWx1ZXNbJGldeyJ0eXBlIn0gZXEgIkZ1bmN0aW9uIikgIHsKKyAgICAg
ICAgICAgIHByaW50ICIgI2VuZGlmXG4iCisgICAgICAgIH0KICAgICAgICAgJGkrKzsKICAgICB9
CiAgICAgcHJpbnQgIiAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIDAsIDAgfVxuIjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCmluZGV4IGFmYTc1NDZjODA2NWI4
ZjNiMTcwZGY4MWEzMzcyYThmMDY5YWRiNDEuLjNhMWFiM2VkNzY3YzFiY2QzZDg0MzUwZTFlMzA5
NmFjZjVhYTc4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2Vy
LmNwcApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgog
I2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
LSNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIK
ICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNp
bmNsdWRlICJQYXJzZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXZhaWxhYmlsaXR5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXZhaWxh
YmlsaXR5LmNwcAppbmRleCA2NjljMmI0MzkyNDZiMDdkZGI1N2QxMTc4ODMwMjlhODhkM2E0YWZm
Li5kMGJjZWQxY2ZiZDIzNzQ2NzkzN2VlMWI2N2Y5MzJhNjYzNzRmOGQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0F2YWlsYWJpbGl0eS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdmFpbGFiaWxpdHkuY3BwCkBAIC0yNiw2ICsyNiw4IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiREZHQXZhaWxhYmlsaXR5LmgiCiAKKyNp
bmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgorCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKICNp
bmNsdWRlICJERkdOb2RlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QmxvY2tJbnNlcnRpb25TZXQuY3BwCmluZGV4IDI1MmQ2MzhlZTEyZDBkMjI0NzNlNzdlNTRkZTc0
ODc1Y2YxYWViZTkuLjI1ZGVhNTQ5MDljNjIwMzM3YWM4MDc0ODRiOWFhYmRhOTc3NWFmM2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmxvY2tJbnNlcnRpb25TZXQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmxvY2tJbnNlcnRpb25TZXQu
Y3BwCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiREZH
QmxvY2tJbnNlcnRpb25TZXQuaCIKIAorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCisK
ICNpZiBFTkFCTEUoREZHX0pJVCkKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRl
eCA1OGYzNjkxNjUwZGZjNjRkNGNlNzU2YjAyNTZiYzlkMTVmZTk2NjZjLi5iYTQyOTdkYjQxMzQ1
OTJmNjhjN2MyMGMxZmZjM2RlNGExOWVmODg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUg
IkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiSlNB
Y3RpdmF0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJP
cGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAjaW5jbHVkZSAi
UHV0QnlJZFN0YXR1cy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDU0VQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNw
cAppbmRleCBkM2JmYzUwYmRlOGQ2ZDc4NDY4ZGZkMDdkZTM2YjllZmFhNWRiMWI3Li5iYWM5NmI3
NjVhYzY4NjE3YzEzMjkzNWZjZWYwYjYyMTc3ZmNmNTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NTRVBoYXNlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRGR0dy
YXBoLmgiCiAjaW5jbHVkZSAiREZHUGhhc2UuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgi
CisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlIDxhcnJheT4KICNpbmNs
dWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggZDFiZWI5MzEyNDU4YjUyOWI4ODhiMWMxOWVmZTVj
Y2JjNmIxNGJmYi4uMmM5NjE5ZTc4NTUzZTdkODAzZjBhYzQyOTEzOWRiZmRlMTgyMGQwZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbi5o
IgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMu
aCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbW1vbi5jcHAKaW5kZXggYWRiMDhiNTk1ZWQ0MWQzNDY4ZjJlYjFkODliODAw
ZjcxMGIwMzRhMy4uODczOGM1Y2RmY2NjZmRjN2M5ZjI2OTIyNjIxYWE1MzdmOTk3YjE2OSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmNwcApAQCAtMjksNiArMjksNyBAQAog
I2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVkZSAiREZHTm9kZS5oIgorI2luY2x1ZGUgIkpT
RnVuY3Rpb25JbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBXVEYgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbXBpbGF0aW9uS2V5LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29tcGlsYXRpb25LZXkuY3BwCmluZGV4IGQzMWFjOWUyZDU4YWQ1
ZmQyNmM5YzI3ZDU2ZDVkMjg0ODRkNWRjZjguLjA5ZjVlMGNhYmE1YTI5YmMyNzYyMjhlOTE2Yjhm
ODUzZDJlOGMwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29t
cGlsYXRpb25LZXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tcGls
YXRpb25LZXkuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiREZHQ29tcGlsYXRpb25L
ZXkuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25Jbmxp
bmVzLmgiCiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwCmluZGV4IGY2NTg3ZjQ3ZjA0OTFk
ZTU4NDY3YzQ3MzY0ZTY1MWU3ZmM2NDc2NDguLmYxMDEzYTNhODE5NTM2YzM3Y2ViOGFiOGQ2NDcz
MDBmNTI4NjQ5MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVz
aXJlZElkZW50aWZpZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rl
c2lyZWRJZGVudGlmaWVycy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoREZHX0pJ
VCkKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVz
LmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkVHJhbnNpdGlvbnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkVHJhbnNpdGlvbnMuY3BwCmluZGV4IDBjZmEw
MGY2ZjlkZGQ4NTU4YjAxOTZmZTcwMjUyMTcxMmNlYTgzMWQuLjY2N2MzYjc2ZmY2MmQ3NDA5N2Rh
YmQyM2I5ZTFmMDYxNTdiMmE1YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRGVzaXJlZFRyYW5zaXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Rlc2lyZWRUcmFuc2l0aW9ucy5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbkRhdGEuaCIKKyNpbmNsdWRlICJK
U0Z1bmN0aW9uSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKaW5kZXggMTM1Y2E4NWZjOTE3NzAx
ZTM1NTI0NWM5YjAxMDBjMjBmZWViOWE3MS4uNjBjNGFlNDJmZTJmNGYxMjRlMjRiNzg1OGEyZGFi
MzQ3Y2JjOTg4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKQEAgLTM2
LDYgKzM2LDcgQEAKICNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmgiCiAjaW5jbHVk
ZSAiSklULmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlv
bklubGluZXMuaCIKICNpbmNsdWRlICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgog
I2luY2x1ZGUgIk9wZXJhbmRzSW5saW5lcy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW52YWxpZGF0aW9uUG9pbnRJ
bmplY3Rpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludmFsaWRh
dGlvblBvaW50SW5qZWN0aW9uUGhhc2UuY3BwCmluZGV4IGQ3MWE3Y2JkYWI3NzYyMDMzM2FkMTdl
YWJkN2JkMDdjZTlmYmU1MjguLmI1NjU4Y2UyNmU0MmRjMTE3ZWEyZjY3ZTMxZjFiMTU2MGE1MmM1
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW52YWxpZGF0aW9u
UG9pbnRJbmplY3Rpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJbnZhbGlkYXRpb25Qb2ludEluamVjdGlvblBoYXNlLmNwcApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHSW5zZXJ0aW9uU2V0LmgiCiAjaW5j
bHVkZSAiREZHUGhhc2UuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1
ZGUgIk9wZXJhdGlvbnMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggMmZmMGMzNDE0
NmUyYzBiYTJmZjc2YzRkM2Y3YzQ2YmEzZTI1NTE0Ny4uOTA0NGNkYzZiOGMzYWQ0YTFlOTQxODhk
ZDFkMGUyMDBlNjlmYjk5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAj
aW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgorI2luY2x1ZGUgIkpTU3Ry
aW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk5hbWVJbnN0YW5jZS5oIgogI2luY2x1ZGUgIk9iamVj
dENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5zIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmNGI2ZDQ5OWYwMjVjMDUz
YjJmOTdiNmYxMDBlODU1MDQ2ZjNlNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMKQEAgLTAsMCArMSwzMDQgQEAKKyMhL3Vzci9i
aW4vcHl0aG9uCisjIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisjIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisjIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyMgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgZmlsZWNtcAoraW1wb3J0IGZubWF0Y2gK
K2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3lzCitpbXBvcnQg
ZGF0ZXRpbWUKK2ltcG9ydCBqc29uCisKK2NvcHlyaWdodFRleHQgPSAiIiIgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqL1xuCisiIiIKKworZ2VuZXJhdG9yU3RyaW5nID0g
Ii8qIEdlbmVyYXRlZCBieSAlcyBkbyBub3QgaGFuZCBlZGl0LiAqL1xuIiAlIG9zLnBhdGguYmFz
ZW5hbWUoX19maWxlX18pCisKK2Z1bmN0aW9uSGVhZFJlZ0V4cCA9IHJlLmNvbXBpbGUociJmdW5j
dGlvblxzK1x3K1xzKlwoLio/XCkiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorZnVuY3Rpb25OYW1l
UmVnRXhwID0gcmUuY29tcGlsZShyImZ1bmN0aW9uXHMrKFx3KylccypcKCIsIHJlLk1VTFRJTElO
RSB8IHJlLlMpCitmdW5jdGlvblBhcmFtZXRlckZpbmRlciA9IHJlLmNvbXBpbGUociJeZnVuY3Rp
b25ccysoPzpcdyspXHMqXCgoKD86XHMqXHcrKT9ccyooPzpccyosXHMqXHcrKSopP1wpIiwgcmUu
TVVMVElMSU5FIHwgcmUuUykKKworbXVsdGlsaW5lQ29tbWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUo
ciJcL1wqLio/XCpcLyIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitzaW5nbGVMaW5lQ29tbWVudFJl
Z0V4cCA9IHJlLmNvbXBpbGUociJcL1wvLio/XG4iLCByZS5NVUxUSUxJTkUgfCByZS5TKQorCitk
ZWYgZ2V0Q29weXJpZ2h0KHNvdXJjZSk6CisgICAgY29weXJpZ2h0QmxvY2sgPSBtdWx0aWxpbmVD
b21tZW50UmVnRXhwLmZpbmRhbGwoc291cmNlKVswXQorICAgIGNvcHlyaWdodEJsb2NrID0gY29w
eXJpZ2h0QmxvY2tbOmNvcHlyaWdodEJsb2NrLmluZGV4KCJSZWRpc3RyaWJ1dGlvbiIpXQorICAg
IGNvcHlSaWdodExpbmVzID0gW10KKworICAgIGZvciBsaW5lIGluIGNvcHlyaWdodEJsb2NrLnNw
bGl0KCJcbiIpOgorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIvKiIsICIiKQorICAgICAg
ICBsaW5lID0gbGluZS5yZXBsYWNlKCIqLyIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBs
YWNlKCIqIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIkNvcHlyaWdodCIsICIi
KQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCJjb3B5cmlnaHQiLCAiIikKKyAgICAgICAg
bGluZSA9IGxpbmUucmVwbGFjZSgiKEMpIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxh
Y2UoIihjKSIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgIGlmIGxl
bihsaW5lKSA9PSAwOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBjb3B5UmlnaHRM
aW5lcy5hcHBlbmQobGluZSkKKyAgICAKKyAgICByZXR1cm4gbGlzdChzZXQoY29weVJpZ2h0TGlu
ZXMpKQorCisKKworZGVmIGdldEZ1bmN0aW9ucyhzb3VyY2UpOgorCisgICAgc291cmNlID0gbXVs
dGlsaW5lQ29tbWVudFJlZ0V4cC5zdWIoIi8qKi8iLCBzaW5nbGVMaW5lQ29tbWVudFJlZ0V4cC5z
dWIoIi8vXG4iLCBzb3VyY2UpKQorCisgICAgbWF0Y2hlcyA9IFsgZiBmb3IgZiBpbiBmdW5jdGlv
bkhlYWRSZWdFeHAuZmluZGl0ZXIoc291cmNlKV0KKyAgICBmdW5jdGlvbkJvdW5kcyA9IFtdCisg
ICAgc3RhcnQgPSAwCisgICAgZW5kID0gMAorICAgIGZvciBtYXRjaCBpbiBtYXRjaGVzOgorICAg
ICAgICBzdGFydCA9IG1hdGNoLnN0YXJ0KCkKKyAgICAgICAgaWYgc3RhcnQgPCBlbmQ6CisgICAg
ICAgICAgICBjb250aW51ZQorICAgICAgICBlbmQgPSBtYXRjaC5lbmQoKQorICAgICAgICB3aGls
ZSBzb3VyY2VbZW5kXSAhPSAneyc6CisgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAg
IGRlcHRoID0gMQorICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgIHdoaWxlIGRlcHRoID4g
MDoKKyAgICAgICAgICAgIGlmIHNvdXJjZVtlbmRdID09ICd7JzoKKyAgICAgICAgICAgICAgICBk
ZXB0aCA9IGRlcHRoICsgMQorICAgICAgICAgICAgZWxpZiBzb3VyY2VbZW5kXSA9PSAnfSc6Cisg
ICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCAtIDEKKyAgICAgICAgICAgIGVuZCA9IGVuZCAr
IDEKKyAgICAgICAgZnVuY3Rpb25Cb3VuZHMuYXBwZW5kKChzdGFydCwgZW5kKSkKKworICAgIGZ1
bmN0aW9ucyA9IFtzb3VyY2Vbc3RhcnQ6ZW5kXS5zdHJpcCgpIGZvciAoc3RhcnQsIGVuZCkgaW4g
ZnVuY3Rpb25Cb3VuZHNdCisgICAgcmVzdWx0ID0gW10KKyAgICBmb3IgZnVuY3Rpb24gaW4gZnVu
Y3Rpb25zOgorICAgICAgICBmdW5jdGlvbiA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAuc3ViKCIi
LCBmdW5jdGlvbikKKyAgICAgICAgZnVuY3Rpb25OYW1lID0gZnVuY3Rpb25OYW1lUmVnRXhwLmZp
bmRhbGwoZnVuY3Rpb24pWzBdCisgICAgICAgIGZ1bmN0aW9uUGFyYW1ldGVycyA9IGZ1bmN0aW9u
UGFyYW1ldGVyRmluZGVyLmZpbmRhbGwoZnVuY3Rpb24pWzBdLnNwbGl0KCcsJykKKyAgICAgICAg
aWYgbGVuKGZ1bmN0aW9uUGFyYW1ldGVyc1swXSkgPT0gMDoKKyAgICAgICAgICAgIGZ1bmN0aW9u
UGFyYW1ldGVycyA9IFtdCisgICAgICAgICAgICAKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgoZnVu
Y3Rpb25OYW1lLCBmdW5jdGlvbiwgZnVuY3Rpb25QYXJhbWV0ZXJzKSkKKyAgICByZXR1cm4gcmVz
dWx0CisgICAgICAgIAorCitkZWYgZ2VuZXJhdGVDb2RlKHNvdXJjZSk6CisgICAgaW5wdXRGaWxl
ID0gb3Blbihzb3VyY2UsICJyIikKKyAgICBiYXNlTmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoc291
cmNlKS5yZXBsYWNlKCIuanMiLCAiIikKKyAgICAKKyAgICBzb3VyY2UgPSAiIgorICAgIGZvciBs
aW5lIGluIGlucHV0RmlsZToKKyAgICAgICAgc291cmNlID0gc291cmNlICsgbGluZQorICAgIAor
ICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAiY3lnd2luIjoKKyAgICAgICAgc291cmNlID0gc291cmNl
LnJlcGxhY2UoIlxyXG4iLCAiXG4iKQorICAgIHJldHVybiAoYmFzZU5hbWUsIGdldEZ1bmN0aW9u
cyhzb3VyY2UpLCBnZXRDb3B5cmlnaHQoc291cmNlKSkKKworZGVmIG1hbmdsZU5hbWUob2JqZWN0
LCBuYW1lKToKKyAgICBxTmFtZSA9IG9iamVjdCArICIuIiArIG5hbWUKKyAgICBtYW5nbGVkTmFt
ZSA9ICIiCisgICAgaSA9IDAKKyAgICB3aGlsZSBpIDwgbGVuKHFOYW1lKToKKyAgICAgICAgaWYg
cU5hbWVbaV0gPT0gJy4nOgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZSAr
IHFOYW1lW2kgKyAxXS51cHBlcigpCisgICAgICAgICAgICBpID0gaSArIDEKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWUgKyBxTmFtZVtpXQorICAg
ICAgICBpID0gaSArIDEKKyAgICByZXR1cm4gbWFuZ2xlZE5hbWUKKworYnVpbHRpbnMgPSBbXQor
CitiYXNlTmFtZSA9IHN5cy5hcmd2Wy0xXQorYnVpbHRpbl9kZWZpbml0aW9ucyA9IHN5cy5hcmd2
WzE6LTFdCisob3V0cHV0X2Jhc2UsIF8pID0gb3MucGF0aC5zcGxpdGV4dChzeXMuYXJndlstMV0p
CisKK2NvcHlyaWdodHMgPSBbXQorZm9yIGZpbGUgaW4gYnVpbHRpbl9kZWZpbml0aW9uczoKKyAg
ICBpZiBmbm1hdGNoLmZubWF0Y2goZmlsZSwgJyouanMnKToKKyAgICAgICAgKGJhc2VOYW1lLCBm
dW5jdGlvbnMsIG9iamVjdENvcHlyaWdodHMpID0gZ2VuZXJhdGVDb2RlKGZpbGUpCisgICAgICAg
IGNvcHlyaWdodHMuZXh0ZW5kKG9iamVjdENvcHlyaWdodHMpCisgICAgICAgIGJ1aWx0aW5zLmFw
cGVuZCgoYmFzZU5hbWUsIGZ1bmN0aW9ucykpCisKK2NvcHlyaWdodHMgPSBsaXN0KHNldChjb3B5
cmlnaHRzKSkKKworY29weXJpZ2h0Qm9keSA9ICIiCitmb3IgY29weXJpZ2h0IGluIGNvcHlyaWdo
dHM6CisgICAgY29weXJpZ2h0Qm9keSA9IGNvcHlyaWdodEJvZHkgKyIgKiBDb3B5cmlnaHQgKEMp
ICIgKyBjb3B5cmlnaHQgKyAiXG4iCisKK2J1aWx0aW5zSGVhZGVyID0gb3BlbihvdXRwdXRfYmFz
ZSArICIuaC50bXAiLCAidyIpCitidWlsdGluc0ltcGxlbWVudGF0aW9uID0gb3BlbihvdXRwdXRf
YmFzZSArICIuY3BwLnRtcCIsICJ3IikKK2NvcHlyaWdodFRleHQgPSAiLypcbiIgKyBjb3B5cmln
aHRCb2R5ICsgY29weXJpZ2h0VGV4dAorYnVpbHRpbnNIZWFkZXIud3JpdGUoIiIiJXMKKyVzCisK
KyNpZm5kZWYgSlNDQnVpbHRpbnNfSAorI2RlZmluZSBKU0NCdWlsdGluc19ICisKK25hbWVzcGFj
ZSBKU0MgeworCitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CitjbGFzcyBJZGVudGlmaWVyOwor
Y2xhc3MgSlNHbG9iYWxPYmplY3Q7CitjbGFzcyBTb3VyY2VDb2RlOworY2xhc3MgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU7CitjbGFzcyBWTTsKKworRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVh
dGVCdWlsdGluRXhlY3V0YWJsZShWTSYsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwgY29u
c3QgU291cmNlQ29kZSYpOworCisiIiIgJSAoZ2VuZXJhdG9yU3RyaW5nLCBjb3B5cmlnaHRUZXh0
KSkKKworY29kZVJlZmVyZW5jZXMgPSBbXQorCitmb3IgKG9iamVjdE5hbWUsIGZ1bmN0aW9ucykg
aW4gYnVpbHRpbnM6CisgICAgcHJpbnQoIkdlbmVyYXRpbmcgYmluZGluZ3MgZm9yIHRoZSAlcyBi
dWlsdGluLiIgJSBvYmplY3ROYW1lKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIvKiAlcyBm
dW5jdGlvbnMgKi9cbiIgJSBvYmplY3ROYW1lKQorICAgIGZvciAobmFtZSwgaW1wbGVtZW50YXRp
b24sIF8pIGluIGZ1bmN0aW9uczoKKyAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVOYW1lKG9i
amVjdE5hbWUsIG5hbWUpCisgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWVbMF0ubG93
ZXIoKSArIG1hbmdsZWROYW1lWzE6XSArICJDb2RlIgorICAgICAgICBjb2RlUmVmZXJlbmNlcy5h
cHBlbmQoKG1hbmdsZWROYW1lLCBuYW1lLCBpbXBsZW1lbnRhdGlvbikpCisgICAgICAgIGJ1aWx0
aW5zSGVhZGVyLndyaXRlKCJleHRlcm4gY29uc3QgY2hhciogc18lcztcbiIgJSBtYW5nbGVkTmFt
ZSkKKyAgICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoImV4dGVybiBjb25zdCBpbnQgc18lc0xl
bmd0aDtcbiIgJSBtYW5nbGVkTmFtZSkKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiXG4iKQor
ICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19GT1JFQUNIXyVzX0JVSUxUSU4o
bWFjcm8pIFxcXG4iICUgb2JqZWN0TmFtZS5yZXBsYWNlKCIuIiwgIl8iKS51cHBlcigpKQorICAg
IGZvciAobmFtZSwgaW1wbGVtZW50YXRpb24sIGFyZ3VtZW50cykgaW4gZnVuY3Rpb25zOgorICAg
ICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZU5hbWUob2JqZWN0TmFtZSwgbmFtZSkKKyAgICAgICAg
YnVpbHRpbnNIZWFkZXIud3JpdGUoIiAgICBtYWNybyglcywgJXMsICVkKSBcXFxuIiAlIChuYW1l
LCBtYW5nbGVkTmFtZSwgbGVuKGFyZ3VtZW50cykpKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRl
KCJcbiIpCisgICAgZm9yIChuYW1lLCBpbXBsZW1lbnRhdGlvbiwgYXJndW1lbnRzKSBpbiBmdW5j
dGlvbnM6CisgICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19CVUlMVElO
XyVzIDFcbiIgJSBtYW5nbGVOYW1lKG9iamVjdE5hbWUsIG5hbWUpLnVwcGVyKCkpCisgICAgYnVp
bHRpbnNIZWFkZXIud3JpdGUoIlxuXG4iKQorbmFtZXMgPSBbXQorYnVpbHRpbnNIZWFkZXIud3Jp
dGUoIiNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTihtYWNybylcXFxuIikKK2ZvciAoY29kZVJl
ZmVyZW5jZSwgZnVuY3Rpb25OYW1lLCBzb3VyY2UpIGluIGNvZGVSZWZlcmVuY2VzOgorICAgIGJ1
aWx0aW5zSGVhZGVyLndyaXRlKCIgICAgbWFjcm8oJXMsICVzLCBzXyVzTGVuZ3RoKSBcXFxuIiAl
IChjb2RlUmVmZXJlbmNlLCBmdW5jdGlvbk5hbWUsIGNvZGVSZWZlcmVuY2UpKQorICAgIG5hbWVz
LmFwcGVuZChmdW5jdGlvbk5hbWUpCisKK2J1aWx0aW5zSGVhZGVyLndyaXRlKCJcblxuIikKK2J1
aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05f
TkFNRShtYWNybykgXFxcbiIpCitmb3IgbmFtZSBpbiBzb3J0ZWQoc2V0KG5hbWVzKSk6CisgICAg
YnVpbHRpbnNIZWFkZXIud3JpdGUoIiAgICBtYWNybyglcykgXFxcbiIgJSBuYW1lKQorYnVpbHRp
bnNIZWFkZXIud3JpdGUoIiIiCisKKyNkZWZpbmUgSlNDX0RFQ0xBUkVfQlVJTFRJTl9HRU5FUkFU
T1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKKyAgICBGdW5jdGlv
bkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoVk0mKTsKKworSlNDX0ZPUkVBQ0hfQlVJ
TFRJTihKU0NfREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBKU0NfREVDTEFSRV9C
VUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5lIEpTQ19CVUlMVElOX0VYSVNUUyhuYW1lKSBkZWZp
bmVkKEpTQ19CVUlMVElOXyMjbmFtZSkKKworfQorCisjZW5kaWYKKworIiIiKQorCitidWlsdGlu
c0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIiVzCislcworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgorCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVz
LmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIK
KyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworIiIiICAlIChnZW5lcmF0b3JT
dHJpbmcsIGNvcHlyaWdodFRleHQpKQorCitmb3IgKGNvZGVSZWZlcmVuY2UsIG5hbWUsIHNvdXJj
ZSkgaW4gY29kZVJlZmVyZW5jZXM6CisgICAgc291cmNlID0gIihmdW5jdGlvbiAiICsgc291cmNl
W3NvdXJjZS5pbmRleCgiKCIpOl0gKyAiKSIKKyAgICBsaW5lcyA9IGpzb24uZHVtcHMoc291cmNl
KVsxOi0xXS5zcGxpdCgiXFxuIikKKyAgICBzb3VyY2VMZW5ndGggPSBsZW4oc291cmNlKQorICAg
IHNvdXJjZSA9ICIiCisgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgIHNvdXJjZSA9IHNv
dXJjZSArICgiICAgIFwiJXNcXG5cIiBcXFxuIiAlIGxpbmUpCisgICAgYnVpbHRpbnNJbXBsZW1l
bnRhdGlvbi53cml0ZSgiY29uc3QgY2hhciogc18lcyA9XG4lcztcblxuIiAlIChjb2RlUmVmZXJl
bmNlLCBzb3VyY2UpKQorICAgIGJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoImNvbnN0IGlu
dCBzXyVzTGVuZ3RoID0gJWQ7XG5cbiIgJSAoY29kZVJlZmVyZW5jZSwgc291cmNlTGVuZ3RoICsg
MSkpICMgKyAxIGZvciBcbgorCitidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIgorRnVu
Y3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShWTSYgdm0sIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSkKK3sKKyAgICB1bnNpZ25lZCBsaW5lQ291bnQgPSB1bmxpbmtlZEV4ZWN1dGFibGUt
PmxpbmVDb3VudCgpOworICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gMTsKKyAgICB1bnNpZ25l
ZCBzb3VyY2VMZW5ndGggPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnNvdXJjZUxlbmd0aCgpOworICAg
IGJvb2wgZW5kQ29sdW1uSXNPblN0YXJ0TGluZSA9ICFsaW5lQ291bnQ7CisgICAgdW5zaWduZWQg
ZW5kQ29sdW1uRXhjbHVkaW5nQnJhY2VzID0gdW5saW5rZWRFeGVjdXRhYmxlLT51bmxpbmtlZEJv
ZHlFbmRDb2x1bW4oKSArIChlbmRDb2x1bW5Jc09uU3RhcnRMaW5lID8gMCA6IDEpOworICAgIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0ID0gdW5saW5rZWRFeGVjdXRhYmxlLT5zdGFydE9mZnNldCgpOwor
ICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0RXhjbHVkaW5nT3BlbkJyYWNlID0gc3RhcnRPZmZzZXQg
KyAxOworICAgIHVuc2lnbmVkIGVuZE9mZnNldEV4Y2x1ZGluZ0Nsb3NlQnJhY2UgPSBzdGFydE9m
ZnNldCArIHNvdXJjZUxlbmd0aCAtIDE7CisgICAgU291cmNlQ29kZSBib2R5U291cmNlKHNvdXJj
ZS5wcm92aWRlcigpLCBzdGFydE9mZnNldEV4Y2x1ZGluZ09wZW5CcmFjZSwgZW5kT2Zmc2V0RXhj
bHVkaW5nQ2xvc2VCcmFjZSwgMCwgc3RhcnRDb2x1bW4pOworICAgIHJldHVybiBGdW5jdGlvbkV4
ZWN1dGFibGU6OmNyZWF0ZSh2bSwgYm9keVNvdXJjZSwgdW5saW5rZWRFeGVjdXRhYmxlLCAwLCBs
aW5lQ291bnQsIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW5FeGNsdWRpbmdCcmFjZXMsIGZhbHNlKTsK
K30KKworI2RlZmluZSBKU0NfREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5j
dGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCitGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1l
IyNHZW5lcmF0b3IoVk0mIHZtKSBcXAoreyBcXAorICAgIHJldHVybiBjcmVhdGVCdWlsdGluRXhl
Y3V0YWJsZSh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxl
KCksIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyBcXAorfQor
CitKU0NfRk9SRUFDSF9CVUlMVElOKEpTQ19ERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5k
ZWYgSlNDX0RFRklORV9CVUlMVElOX0dFTkVSQVRPUgorfQorCisiIiIpCisKK2J1aWx0aW5zSGVh
ZGVyLmNsb3NlKCkKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24uY2xvc2UoKQorCitpZiAobm90IG9z
LnBhdGguZXhpc3RzKG91dHB1dF9iYXNlICsgIi5oIikpIG9yIChub3QgZmlsZWNtcC5jbXAob3V0
cHV0X2Jhc2UgKyAiLmgudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmgiLCBzaGFsbG93PUZhbHNlKSk6
CisgICAgb3MucmVuYW1lKG91dHB1dF9iYXNlICsgIi5oLnRtcCIsIG91dHB1dF9iYXNlICsgIi5o
IikKK2Vsc2U6CisgICAgb3MucmVtb3ZlKG91dHB1dF9iYXNlICsgIi5oLnRtcCIpCisKK2lmIChu
b3Qgb3MucGF0aC5leGlzdHMob3V0cHV0X2Jhc2UgKyAiLmNwcCIpKSBvciAobm90IGZpbGVjbXAu
Y21wKG91dHB1dF9iYXNlICsgIi5jcHAudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmNwcCIsIHNoYWxs
b3c9RmFsc2UpKToKKyAgICBvcy5yZW5hbWUob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCBvdXRw
dXRfYmFzZSArICIuY3BwIikKK2Vsc2U6CisgICAgb3MucmVtb3ZlKG91dHB1dF9iYXNlICsgIi5j
cHAudG1wIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCmluZGV4IGNhODkwYjA2ZWEzM2ZhOWU3ZjFmYTUxYTM1ZWEyZDQ4ZDAwOWEzOGEu
LjZjOWJmOTZjMTVmNjA5ZTI2NWNlMjUwYTQ1YmYwODYxZDA2Y2QxZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNTEsNiAr
NTEsNyBAQAogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJK
U1N0YWNrSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNTdHJp
bmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNsdWRlICJMTEludENM
b29wLmgiCiAjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuY3BwCmluZGV4IGYwZTAyYmE0ZTQ3
NmY5OWNjOTEzYjA0NjJhZDI3OTUwMDYwOWZhM2EuLjFjMjQwZGNkNzFiZTUyOWQ4OGNiZjQ2MWQx
ODY4ZjVlYjJiMDJhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIlBy
b3RvQ2FsbEZyYW1lLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggY2E3
YWQxMWYyZTBiOGEzYjhiMTg1ODkxZDdlNTIyYmFlNDAzYTIzNi4uY2I1NTA3YmVhYzU1YmY4ZWIx
YjM3ZWM5MGZjYWIxOTM0ZmI0OGVhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUg
IkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDk4ZDEwYTNmNGRjYjEyZDg5ZjM3
YTEyZjIyNjA0Yjk0NmUwOGU2MjcuLmRkMDM1Mzc3OWU4YmRmOThmNDY1OGEzMDdlMzJkMDZlNDcy
NDQxNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkpJ
VElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlu
bGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggOTI4ZGQ1MGZiMDE2ZTI3MTY0NGE1NzVlMzBh
YjVmMjUxNmViNTBlYy4uOTA4OGI3ZmIyZmI3YWQwMTM4MDZlZjQ5YjVhZjQyMGZhNjQ4NDA3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC00MSw2
ICs0MSw4IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9uV3JhcHBl
cnMuaCIKICNpbmNsdWRlICJKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIgor
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpT
TmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCAyNmRk
NGQxYWY3NDVhZmExZmJjNTNhOWMwMjNhNmU0NzQxYTY2YTA5Li5kZjFiZDNhOWNmYTQwMmM1MmE1
MjExY2YxYWNjZTY3ZDUxMjFiN2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMjksMTEgKzI5LDEzIEBACiAjaW5jbHVkZSAiSklU
LmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVy
cy5oIgogI2luY2x1ZGUgIkdDQXdhcmVKSVRTdHViUm91dGluZS5oIgogI2luY2x1ZGUgIkdldHRl
clNldHRlci5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklUSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmgiCiAjaW5jbHVkZSAiSlNWYXJpYWJsZU9iamVjdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggZDE4ZmVh
NzE1Y2IwM2IzN2FhOTI2ZDg0OWE4ZTVhYjk1NjNlY2QzZC4uMzI2MWIzYWY2ZWVhYmQ2ZjI2YTQz
YTA4ZDIwNGJjNjJiMDY1ODliNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVk
ZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNB
cnJheS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJK
U1ZhcmlhYmxlT2JqZWN0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDQwNzg0YjQ5NDMxZmUw
MmU4ZTQ1MjJmMTYzMDhjOTAyNDcxNmQyMzYuLjJmNzk1NTU0YjA5MWRlZWJiYzAzYmYyYmU4Yzc0
ZjQxYWU1NDFlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5j
bHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNQcm94eS5oIgogI2luY2x1ZGUgIkpTU3RyaW5n
LmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5o
IgogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgogI2luY2x1ZGUgIlN0YWNrVmlzaXRvci5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJh
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFj
dG9yLmNwcAppbmRleCA2MDRjYzI2M2NmOTdlMDg2ZmVkMDZlYzkwM2IwZWMxOTgzZTc4MTM3Li44
MTY2ZTdmODFmYTg5YTdkNGY1MGM1ZjFhOTRmYTk2OGM1ZDU3ZTFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAt
MzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5o
IgogI2luY2x1ZGUgIkpTQ2VsbC5oIgotI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRl
ICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3QuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNjY0NDRiYWEwOGI1NjJkZDY5N2Uw
Y2NkNzcyMWU1NWMxNWJhNDkxMy4uODNlMDFlYmFmZGEyNzdlMjVkOGNmMGIwY2U2NmJkOTFlNTVj
NDY4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCkBAIC00MCw3ICs0MCw4IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhj
ZXB0aW9ucy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgotI2luY2x1ZGUgIkpTQ0pTVmFs
dWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rp
b25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNs
dWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggOGVjMWZkMzJh
M2FkYTIyZTEyNTIyOTU3MGRjZjdmZjI4ZWFiZjFlZC4uNDZhN2M3NmIyZjkwMWZjM2NjMzZkMWNl
MGMwNzM1M2ViMDZiMmY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWls
ZGVyLmgKQEAgLTg4OCw5ICs4ODgsOSBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFr
ZUZ1bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbgogICAgIEFT
U0VSVChmdW5jLT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRv
dCA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGZ1bmMpOwogICAgIEZ1bmN0aW9uQ2Fs
bERvdE5vZGUqIG5vZGU7Ci0gICAgaWYgKGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmNhbGwpCisgICAgaWYgKGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmNhbGwgfHwgZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1l
cy0+Y2FsbFByaXZhdGVOYW1lKQogICAgICAgICBub2RlID0gbmV3IChtX3ZtKSBDYWxsRnVuY3Rp
b25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBh
cmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwotICAgIGVsc2UgaWYgKGRvdC0+aWRl
bnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmFwcGx5KQorICAgIGVsc2UgaWYgKGRv
dC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmFwcGx5IHx8IGRvdC0+aWRl
bnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmFwcGx5UHJpdmF0ZU5hbWUpCiAgICAg
ICAgIG5vZGUgPSBuZXcgKG1fdm0pIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwg
ZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwg
ZGl2b3RFbmQpOwogICAgIGVsc2UKICAgICAgICAgbm9kZSA9IG5ldyAobV92bSkgRnVuY3Rpb25D
YWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdz
LCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0xleGVyLmNwcAppbmRleCBjYTRiYjRmMGFkZThkNmJjODI2OTFhNmMwMDAxNGNmMTk4YmQ4OGJk
Li5jY2IwNzlkOTc1YTE0MWM1YzRiMmQ3YjYyMzEzMDAwNzA5Nzc3ODI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAtMjUsMTAgKzI1LDEwIEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiTGV4ZXIuaCIKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZp
ZXJzLmgiCisjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb25Jbmxp
bmVzLmgiCi0KICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgotI2luY2x1ZGUg
IklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJOb2RlSW5mby5oIgogI2luY2x1ZGUgIk5vZGVzLmgi
CiAjaW5jbHVkZSA8d3RmL2R0b2EuaD4KQEAgLTkwLDYgKzkwLDcgQEAgZW51bSBDaGFyYWN0ZXJU
eXBlIHsKIAogICAgIC8vIE90aGVyIHR5cGVzIChvbmx5IG9uZSBzbyBmYXIpCiAgICAgQ2hhcmFj
dGVyV2hpdGVTcGFjZSwKKyAgICBDaGFyYWN0ZXJQcml2YXRlSWRlbnRpZmllclN0YXJ0CiB9Owog
CiAvLyAyNTYgTGF0aW4tMSBjb2RlcwpAQCAtMTU4LDcgKzE1OSw3IEBAIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBzaG9ydCB0eXBlc09mTGF0aW4xQ2hhcmFjdGVyc1syNTZdID0gewogLyogIDYxIC0g
PSAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlckVxdWFsLAogLyogIDYyIC0gPiAgICAgICAg
ICAgICAgICAgICovIENoYXJhY3RlckdyZWF0ZXIsCiAvKiAgNjMgLSA/ICAgICAgICAgICAgICAg
ICAgKi8gQ2hhcmFjdGVyUXVlc3Rpb24sCi0vKiAgNjQgLSBAICAgICAgICAgICAgICAgICAgKi8g
Q2hhcmFjdGVySW52YWxpZCwKKy8qICA2NCAtIEAgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0
ZXJQcml2YXRlSWRlbnRpZmllclN0YXJ0LAogLyogIDY1IC0gQSAgICAgICAgICAgICAgICAgICov
IENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKIC8qICA2NiAtIEIgICAgICAgICAgICAgICAgICAq
LyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCiAvKiAgNjcgLSBDICAgICAgICAgICAgICAgICAg
Ki8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LApAQCAtNDg2LDkgKzQ4NywxMCBAQCBzdGF0aWMg
Y29uc3QgTENoYXIgc2luZ2xlQ2hhcmFjdGVyRXNjYXBlVmFsdWVzRm9yQVNDSUlbMTI4XSA9IHsK
IH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotTGV4ZXI8VD46OkxleGVyKFZNKiB2bSkKK0xl
eGVyPFQ+OjpMZXhlcihWTSogdm0sIEpTUGFyc2VyU3RyaWN0bmVzcyBzdHJpY3RuZXNzKQogICAg
IDogbV9pc1JlcGFyc2luZyhmYWxzZSkKICAgICAsIG1fdm0odm0pCisgICAgLCBtX3BhcnNpbmdC
dWlsdGluRnVuY3Rpb24oc3RyaWN0bmVzcyA9PSBKU1BhcnNlQnVpbHRpbikKIHsKIH0KIApAQCAt
NzUzLDcgKzc1NSwyNyBAQCBpbmxpbmUgdm9pZCBMZXhlcjxUPjo6cmVjb3JkMTYoaW50IGMpCiAg
ICAgQVNTRVJUKGMgPD0gc3RhdGljX2Nhc3Q8aW50PihVU0hSVF9NQVgpKTsKICAgICBtX2J1ZmZl
cjE2LmFwcGVuZChzdGF0aWNfY2FzdDxVQ2hhcj4oYykpOwogfQotCisgICAgCisjaWYgIUFTU0VS
VF9ESVNBQkxFRAorYm9vbCBpc1NhZmVJZGVudGlmaWVyKFZNJiB2bSwgY29uc3QgSWRlbnRpZmll
ciogaWRlbnQpCit7CisgICAgaWYgKCFpZGVudCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
LyogSnVzdCBibG9jayBhbnkgdXNlIG9mIHN1c3BpY2lvdXMgaWRlbnRpZmllcnMuICBUaGlzIGlz
IGludGVuZGVkIHRvCisgICAgICogYmUgdXNlZCBhcyBhIHNhZmV0eSBuZXQgd2hpbGUgaW1wbGVt
ZW50aW5nIGJ1aWx0aW5zLgorICAgICAqLworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJvcGVydHlO
YW1lcy0+Y2FsbCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgqaWRlbnQgPT0gdm0u
cHJvcGVydHlOYW1lcy0+YXBwbHkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKmlk
ZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmV2YWwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoKmlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPkZ1bmN0aW9uKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKyAgICAKIHRlbXBsYXRlIDw+
CiB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpT
VG9rZW5UeXBlIExleGVyPExDaGFyPjo6cGFyc2VJZGVudGlmaWVyKEpTVG9rZW5EYXRhKiB0b2tl
bkRhdGEsIHVuc2lnbmVkIGxleGVyRmxhZ3MsIGJvb2wgc3RyaWN0TW9kZSkKIHsKQEAgLTc2NSw3
ICs3ODcsMTEgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlT
X0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKICAgICAgICAgICAgIHJldHVybiBr
ZXl3b3JkID09IFJFU0VSVkVEX0lGX1NUUklDVCAmJiAhc3RyaWN0TW9kZSA/IElERU5UIDoga2V5
d29yZDsKICAgICAgICAgfQogICAgIH0KLQorICAgIAorICAgIGJvb2wgaXNQcml2YXRlTmFtZSA9
IG1fY3VycmVudCA9PSAnQCcgJiYgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uOworICAgIGlmIChp
c1ByaXZhdGVOYW1lKQorICAgICAgICBzaGlmdCgpOworICAgIAogICAgIGNvbnN0IExDaGFyKiBp
ZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50U291cmNlUHRyKCk7CiAgICAgdW5zaWduZWQgaWRlbnRp
ZmllckxpbmVTdGFydCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKICAgICAKQEAgLTc3OSwx
NSArODA1LDI2IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZ
U19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAKICAgICBjb25zdCBJZGVudGlm
aWVyKiBpZGVudCA9IDA7CiAgICAgCi0gICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpIHsK
KyAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllciB8fCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rp
b24pIHsKICAgICAgICAgaW50IGlkZW50aWZpZXJMZW5ndGggPSBjdXJyZW50U291cmNlUHRyKCkg
LSBpZGVudGlmaWVyU3RhcnQ7CiAgICAgICAgIGlkZW50ID0gbWFrZUlkZW50aWZpZXIoaWRlbnRp
ZmllclN0YXJ0LCBpZGVudGlmaWVyTGVuZ3RoKTsKLQorICAgICAgICBpZiAobV9wYXJzaW5nQnVp
bHRpbkZ1bmN0aW9uKSB7CisgICAgICAgICAgICBpZiAoIWlzU2FmZUlkZW50aWZpZXIoKm1fdm0s
IGlkZW50KSAmJiAhaXNQcml2YXRlTmFtZSkgeworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JN
ZXNzYWdlID0gbWFrZVN0cmluZygiVGhlIHVzZSBvZiAnIiwgaWRlbnQtPnN0cmluZygpLCAiJyBp
cyBkaXNhbGxvd2VkIGluIGJ1aWx0aW4gZnVuY3Rpb25zLiIpOworICAgICAgICAgICAgICAgIHJl
dHVybiBFUlJPUlRPSzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpc1ByaXZhdGVO
YW1lKQorICAgICAgICAgICAgICAgIGlkZW50ID0gbV92bS0+cHJvcGVydHlOYW1lcy0+Z2V0UHJp
dmF0ZU5hbWUoKmlkZW50KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCppZGVudCA9PSBtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkKQorICAgICAgICAgICAgICAgIHRva2VuRGF0
YS0+aWRlbnQgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZFByaXZhdGVO
YW1lOworICAgICAgICAgICAgaWYgKCFpZGVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gSU5W
QUxJRF9QUklWQVRFX05BTUVfRVJST1JUT0s7CisgICAgICAgIH0KICAgICAgICAgdG9rZW5EYXRh
LT5pZGVudCA9IGlkZW50OwogICAgIH0gZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0g
MDsKIAotICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICEo
bGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkpIHsKKyAgICBpZiAo
VU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxhZ3MgJiBM
ZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpICYmICFpc1ByaXZhdGVOYW1lKSB7CiAgICAg
ICAgIEFTU0VSVChzaG91bGRDcmVhdGVJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKHJlbWFpbmlu
ZyA8IG1heFRva2VuTGVuZ3RoKSB7CiAgICAgICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5
ID0gbV92bS0+a2V5d29yZHMtPmdldEtleXdvcmQoKmlkZW50KTsKQEAgLTgxNCw2ICs4NTEsMTAg
QEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBK
U1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAKICAgICAgICAgICAgIHJldHVybiBrZXl3b3JkID09
IFJFU0VSVkVEX0lGX1NUUklDVCAmJiAhc3RyaWN0TW9kZSA/IElERU5UIDoga2V5d29yZDsKICAg
ICAgICAgfQogICAgIH0KKyAgICAKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJlbnQg
PT0gJ0AnICYmIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKKyAgICBpZiAoaXNQcml2YXRlTmFt
ZSkKKyAgICAgICAgc2hpZnQoKTsKIAogICAgIGNvbnN0IFVDaGFyKiBpZGVudGlmaWVyU3RhcnQg
PSBjdXJyZW50U291cmNlUHRyKCk7CiAgICAgaW50IGlkZW50aWZpZXJMaW5lU3RhcnQgPSBjdXJy
ZW50TGluZVN0YXJ0T2Zmc2V0KCk7CkBAIC04MjYsNiArODY3LDcgQEAgdGVtcGxhdGUgPGJvb2wg
c2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxV
Q2hhcj46OnAKICAgICB9CiAgICAgCiAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudCA9PSAnXFwn
KSkgeworICAgICAgICBBU1NFUlQoIWlzUHJpdmF0ZU5hbWUpOwogICAgICAgICBzZXRPZmZzZXRG
cm9tU291cmNlUHRyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxpbmVTdGFydCk7CiAgICAg
ICAgIHJldHVybiBwYXJzZUlkZW50aWZpZXJTbG93Q2FzZTxzaG91bGRDcmVhdGVJZGVudGlmaWVy
Pih0b2tlbkRhdGEsIGxleGVyRmxhZ3MsIHN0cmljdE1vZGUpOwogICAgIH0KQEAgLTgzNywxOCAr
ODc5LDI5IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19J
TkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+OjpwCiAKICAgICBjb25zdCBJZGVudGlmaWVy
KiBpZGVudCA9IDA7CiAgICAgCi0gICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpIHsKKyAg
ICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllciB8fCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24p
IHsKICAgICAgICAgaW50IGlkZW50aWZpZXJMZW5ndGggPSBjdXJyZW50U291cmNlUHRyKCkgLSBp
ZGVudGlmaWVyU3RhcnQ7CiAgICAgICAgIGlmIChpc0FsbDhCaXQpCiAgICAgICAgICAgICBpZGVu
dCA9IG1ha2VJZGVudGlmaWVyTENoYXJGcm9tVUNoYXIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlm
aWVyTGVuZ3RoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaWRlbnQgPSBtYWtlSWRlbnRp
ZmllcihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwotICAgICAgICAKKyAgICAg
ICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgeworICAgICAgICAgICAgaWYgKCFpc1Nh
ZmVJZGVudGlmaWVyKCptX3ZtLCBpZGVudCkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsKKyAgICAgICAg
ICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIlRoZSB1c2Ugb2YgJyIsIGlk
ZW50LT5zdHJpbmcoKSwgIicgaXMgZGlzYWxsb3dlZCBpbiBidWlsdGluIGZ1bmN0aW9ucy4iKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgICAgICAgICBpZGVudCA9IG1fdm0tPnBy
b3BlcnR5TmFtZXMtPmdldFByaXZhdGVOYW1lKCppZGVudCk7CisgICAgICAgICAgICBlbHNlIGlm
ICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCkKKyAgICAg
ICAgICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVm
aW5lZEtleXdvcmRQcml2YXRlTmFtZTsKKyAgICAgICAgICAgIGlmICghaWRlbnQpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIElOVkFMSURfUFJJVkFURV9OQU1FX0VSUk9SVE9LOworICAgICAgICB9
CiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBpZGVudDsKICAgICB9IGVsc2UKICAgICAgICAg
dG9rZW5EYXRhLT5pZGVudCA9IDA7CiAgICAgCi0gICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcg
PCBtYXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2Vy
dmVkV29yZHMpKSkgeworICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5n
dGgpICYmICEobGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkgJiYg
IWlzUHJpdmF0ZU5hbWUpIHsKICAgICAgICAgQVNTRVJUKHNob3VsZENyZWF0ZUlkZW50aWZpZXIp
OwogICAgICAgICBpZiAocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHsKICAgICAgICAgICAg
IGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSBtX3ZtLT5rZXl3b3Jkcy0+Z2V0S2V5d29yZCgqaWRl
bnQpOwpAQCAtMTY1OCw2ICsxNzExLDcgQEAgaW5OdW1iZXJBZnRlckRlY2ltYWxQb2ludDoKICAg
ICAgICAgQVNTRVJUKGlzSWRlbnRTdGFydChtX2N1cnJlbnQpKTsKICAgICAgICAgRkFMTFRIUk9V
R0g7CiAgICAgY2FzZSBDaGFyYWN0ZXJCYWNrU2xhc2g6CisgICAgICAgIHBhcnNlSWRlbnQ6CiAg
ICAgICAgIGlmIChsZXhlckZsYWdzICYgTGV4ZXhGbGFnc0RvbnRCdWlsZEtleXdvcmRzKQogICAg
ICAgICAgICAgdG9rZW4gPSBwYXJzZUlkZW50aWZpZXI8ZmFsc2U+KHRva2VuRGF0YSwgbGV4ZXJG
bGFncywgc3RyaWN0TW9kZSk7CiAgICAgICAgIGVsc2UKQEAgLTE2NzAsNiArMTcyNCwxMSBAQCBp
bk51bWJlckFmdGVyRGVjaW1hbFBvaW50OgogICAgICAgICBtX3Rlcm1pbmF0b3IgPSB0cnVlOwog
ICAgICAgICBtX2xpbmVTdGFydCA9IG1fY29kZTsKICAgICAgICAgZ290byBzdGFydDsKKyAgICBj
YXNlIENoYXJhY3RlclByaXZhdGVJZGVudGlmaWVyU3RhcnQ6CisgICAgICAgIGlmIChtX3BhcnNp
bmdCdWlsdGluRnVuY3Rpb24pCisgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnQ7CisKKyAgICAg
ICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBDaGFyYWN0ZXJJbnZhbGlkOgogICAgICAgICBtX2xl
eEVycm9yTWVzc2FnZSA9IGludmFsaWRDaGFyYWN0ZXJNZXNzYWdlKCk7CiAgICAgICAgIHRva2Vu
ID0gRVJST1JUT0s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xl
eGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKaW5kZXggMjhjNjFi
YTE5OGQyYzE1YTQ5YmIxODUyZWQzMGJlZmViODkwNDAwOC4uYjg4NzNlOTk1MDI4NjQ0YmY4Y2Ji
M2Q0YzJkYTU2MmU5M2UwZThlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9MZXhlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaApA
QCAtNzIsNyArNzIsNyBAQCBjbGFzcyBMZXhlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAKIHB1YmxpYzoKLSAgICBMZXhlcihWTSopOworICAgIExleGVyKFZNKiwgSlNQYXJzZXJT
dHJpY3RuZXNzKTsKICAgICB+TGV4ZXIoKTsKIAogICAgIC8vIENoYXJhY3RlciBtYW5pcHVsYXRp
b24gZnVuY3Rpb25zLgpAQCAtMjM4LDYgKzIzOCw3IEBAIHByaXZhdGU6CiAgICAgSWRlbnRpZmll
ckFyZW5hKiBtX2FyZW5hOwogCiAgICAgVk0qIG1fdm07CisgICAgYm9vbCBtX3BhcnNpbmdCdWls
dGluRnVuY3Rpb247CiB9OwogCiB0ZW1wbGF0ZSA8PgpAQCAtMzM1LDYgKzMzNiwxMiBAQCBBTFdB
WVNfSU5MSU5FIGNvbnN0IElkZW50aWZpZXIqIExleGVyPFQ+OjptYWtlTENoYXJJZGVudGlmaWVy
KGNvbnN0IFVDaGFyKiBjaGFyYQogICAgIHJldHVybiAmbV9hcmVuYS0+bWFrZUlkZW50aWZpZXJM
Q2hhckZyb21VQ2hhcihtX3ZtLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOwogfQogCisjaWYgQVNTRVJU
X0RJU0FCTEVECitBTFdBWVNfSU5MSU5FIGJvb2wgaXNTYWZlSWRlbnRpZmllcihWTSYsIGNvbnN0
IElkZW50aWZpZXIqKSB7IHJldHVybiB0cnVlOyB9CisjZWxzZQorYm9vbCBpc1NhZmVJZGVudGlm
aWVyKFZNJiwgY29uc3QgSWRlbnRpZmllciopOworI2VuZGlmCisKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRp
ZmllcihKU1Rva2VuKiB0b2tlblJlY29yZCwgdW5zaWduZWQgbGV4ZXJGbGFncywgYm9vbCBzdHJp
Y3RNb2RlKQogewpAQCAtMzcwLDEwICszNzcsMTUgQEAgQUxXQVlTX0lOTElORSBKU1Rva2VuVHlw
ZSBMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rva2VuKiB0b2tlblJlY29yZCwgdW4K
ICAgICBBU1NFUlQoY3VycmVudE9mZnNldCgpID49IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKSk7
CiAKICAgICAvLyBDcmVhdGUgdGhlIGlkZW50aWZpZXIgaWYgbmVlZGVkCi0gICAgaWYgKGxleGVy
RmxhZ3MgJiBMZXhleEZsYWdzRG9udEJ1aWxkS2V5d29yZHMpCisgICAgaWYgKGxleGVyRmxhZ3Mg
JiBMZXhleEZsYWdzRG9udEJ1aWxkS2V5d29yZHMKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAg
ICAgICYmICFtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24KKyNlbmRpZgorICAgICAgICApCiAgICAg
ICAgIHRva2VuRGF0YS0+aWRlbnQgPSAwOwogICAgIGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5p
ZGVudCA9IG1ha2VMQ2hhcklkZW50aWZpZXIoc3RhcnQsIHB0ciAtIHN0YXJ0KTsKKwogICAgIHRv
a2VuTG9jYXRpb24tPmxpbmUgPSBtX2xpbmVOdW1iZXI7CiAgICAgdG9rZW5Mb2NhdGlvbi0+bGlu
ZVN0YXJ0T2Zmc2V0ID0gY3VycmVudExpbmVTdGFydE9mZnNldCgpOwogICAgIHRva2VuTG9jYXRp
b24tPnN0YXJ0T2Zmc2V0ID0gb2Zmc2V0RnJvbVNvdXJjZVB0cihzdGFydCk7CkBAIC0zODEsNiAr
MzkzLDEzIEBAIEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4cGVjdElk
ZW50aWZpZXIoSlNUb2tlbiogdG9rZW5SZWNvcmQsIHVuCiAgICAgQVNTRVJUKHRva2VuTG9jYXRp
b24tPnN0YXJ0T2Zmc2V0ID49IHRva2VuTG9jYXRpb24tPmxpbmVTdGFydE9mZnNldCk7CiAgICAg
dG9rZW5SZWNvcmQtPm1fc3RhcnRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb247CiAgICAgdG9rZW5S
ZWNvcmQtPm1fZW5kUG9zaXRpb24gPSBjdXJyZW50UG9zaXRpb24oKTsKKyNpZiAhQVNTRVJUX0RJ
U0FCTEVECisgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgeworICAgICAgICBpZiAo
IWlzU2FmZUlkZW50aWZpZXIoKm1fdm0sIHRva2VuRGF0YS0+aWRlbnQpKQorICAgICAgICAgICAg
cmV0dXJuIEVSUk9SVE9LOworICAgIH0KKyNlbmRpZgorCiAgICAgbV9sYXN0VG9rZW4gPSBJREVO
VDsKICAgICByZXR1cm4gSURFTlQ7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuY3BwCmluZGV4IGZjOWNjZDlmNmM1NzZjMWFlZjU0N2YyMTFmZGQ1OTZmNDJlMDU4MDYuLmQ5
NTJiYTZhOTRkMmY2YjQxODIxNTUwMDRkMGE5NzA4NDI5YmQ3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0xMzIsNiArMTMyLDEyIEBAIFBhc3NSZWZQdHI8UHJv
Z3JhbU5vZGU+IFByb2dyYW1Ob2RlOjpjcmVhdGUoVk0qIHZtLCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mIHN0YXJ0CiAgICAgcmV0dXJuIG5vZGUucmVsZWFzZSgpOwogfQogCisKK3ZvaWQgUHJvZ3Jh
bU5vZGU6OnNldENsb3NlZFZhcmlhYmxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+
PiYmIGNsb3NlZFZhcmlhYmxlcykKK3sKKyAgICBtX2Nsb3NlZFZhcmlhYmxlcyA9IHN0ZDo6bW92
ZShjbG9zZWRWYXJpYWJsZXMpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gRXZhbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogaW5saW5lIEV2YWxO
b2RlOjpFdmFsTm9kZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlv
biwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgZW5kQ29sdW1u
LCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25T
dGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFu
dHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggZDc3OWExNzhkOTU2ZmY5
OWZkMGJlZDVkNWY0NTRhYTNlNmI1MDg3OS4uODE2ZmYwMDFhYmYwMzc2YzY0MmYxYTkzOGQwZTBh
OWY1MjljYTZiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTQzMSw2
ICsxNDMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbmVlZHNBY3RpdmF0aW9u
KCkgY29uc3QgeyByZXR1cm4gKGhhc0NhcHR1cmVkVmFyaWFibGVzKCkpIHx8IChtX2ZlYXR1cmVz
ICYgKEV2YWxGZWF0dXJlIHwgV2l0aEZlYXR1cmUgfCBDYXRjaEZlYXR1cmUpKTsgfQogICAgICAg
ICBib29sIGhhc0NhcHR1cmVkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gISFtX2NhcHR1cmVk
VmFyaWFibGVzLnNpemUoKTsgfQogICAgICAgICBzaXplX3QgY2FwdHVyZWRWYXJpYWJsZUNvdW50
KCkgY29uc3QgeyByZXR1cm4gbV9jYXB0dXJlZFZhcmlhYmxlcy5zaXplKCk7IH0KKyAgICAgICAg
Y29uc3QgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBt
X2NhcHR1cmVkVmFyaWFibGVzOyB9CiAgICAgICAgIGJvb2wgY2FwdHVyZXMoY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQpIHsgcmV0dXJuIG1fY2FwdHVyZWRWYXJpYWJsZXMuY29udGFpbnMoaWRlbnQu
aW1wbCgpKTsgfQogCiAgICAgICAgIFZhclN0YWNrJiB2YXJTdGFjaygpIHsgcmV0dXJuIG1fdmFy
U3RhY2s7IH0KQEAgLTE0NDYsNiArMTQ0Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBT
dGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1lbnQoKSBjb25zdDsKIAogICAgICAgICB2b2lkIGVt
aXRTdGF0ZW1lbnRzQnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkZXN0
aW5hdGlvbik7CisgICAgICAgIAorICAgICAgICB2b2lkIHNldENsb3NlZFZhcmlhYmxlcyhjb25z
dCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmKSB7IH0KIAogICAgIHByb3RlY3RlZDoKICAg
ICAgICAgdm9pZCBzZXRTb3VyY2UoY29uc3QgU291cmNlQ29kZSYgc291cmNlKSB7IG1fc291cmNl
ID0gc291cmNlOyB9CkBAIC0xNDc1LDExICsxNDc4LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNjb3BlSXNGdW5jdGlvbiA9IGZhbHNlOwogCisgICAg
ICAgIHZvaWQgc2V0Q2xvc2VkVmFyaWFibGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1w
bD4+JiYpOworICAgICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYgY2xvc2Vk
VmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9jbG9zZWRWYXJpYWJsZXM7IH0KICAgICBwcml2
YXRlOgogICAgICAgICBQcm9ncmFtTm9kZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3Rh
cnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5z
aWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFj
ayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQg
bnVtQ29uc3RhbnRzKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKLQorICAgICAgICBWZWN0
b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiBtX2Nsb3NlZFZhcmlhYmxlczsKICAgICAgICAgdW5zaWdu
ZWQgbV9zdGFydENvbHVtbjsKICAgICAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CiAgICAgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCAyOTc2NjZlNzI2ZTQ1
ZDA4M2VmMTM0OWRkZmZkZjM3ZWY4MDBkZjdhLi41MGJlYzc5ZmUzOGFkZjhmM2EwNGY2YjQ2Y2Jk
MmE1Y2JmY2YyNDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBA
IC0yMDQsOCArMjA0LDkgQEAgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlcihWTSogdm0sIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25QYXJhbWV0ZXJzKgogICAgICwgbV9sYXN0SWRl
bnRpZmllcigwKQogICAgICwgbV9sYXN0RnVuY3Rpb25OYW1lKG51bGxwdHIpCiAgICAgLCBtX3Nv
dXJjZUVsZW1lbnRzKDApCisgICAgLCBtX3BhcnNpbmdCdWlsdGluKHN0cmljdG5lc3MgPT0gSlNQ
YXJzZUJ1aWx0aW4pCiB7Ci0gICAgbV9sZXhlciA9IGFkb3B0UHRyKG5ldyBMZXhlclR5cGUodm0p
KTsKKyAgICBtX2xleGVyID0gYWRvcHRQdHIobmV3IExleGVyVHlwZSh2bSwgc3RyaWN0bmVzcykp
OwogICAgIG1fYXJlbmEgPSBtX3ZtLT5wYXJzZXJBcmVuYS5nZXQoKTsKICAgICBtX2xleGVyLT5z
ZXRDb2RlKHNvdXJjZSwgbV9hcmVuYSk7CiAgICAgbV90b2tlbi5tX2xvY2F0aW9uLmxpbmUgPSBz
b3VyY2UuZmlyc3RMaW5lKCk7CkBAIC0yNTYsNiArMjU3LDcgQEAgU3RyaW5nIFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUlubmVyKCkKICAgICBJZGVudGlmaWVyU2V0IGNhcHR1cmVkVmFyaWFibGVz
OwogICAgIGJvb2wgbW9kaWZpZWRQYXJhbWV0ZXIgPSBmYWxzZTsKICAgICBzY29wZS0+Z2V0Q2Fw
dHVyZWRWYXJpYWJsZXMoY2FwdHVyZWRWYXJpYWJsZXMsIG1vZGlmaWVkUGFyYW1ldGVyKTsKKyAg
ICAKICAgICBDb2RlRmVhdHVyZXMgZmVhdHVyZXMgPSBjb250ZXh0LmZlYXR1cmVzKCk7CiAgICAg
aWYgKHNjb3BlLT5zdHJpY3RNb2RlKCkpCiAgICAgICAgIGZlYXR1cmVzIHw9IFN0cmljdE1vZGVG
ZWF0dXJlOwpAQCAtMjYzLDIxICsyNjUsMzYgQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUlubmVyKCkKICAgICAgICAgZmVhdHVyZXMgfD0gU2hhZG93c0FyZ3VtZW50c0ZlYXR1cmU7
CiAgICAgaWYgKG1vZGlmaWVkUGFyYW1ldGVyKQogICAgICAgICBmZWF0dXJlcyB8PSBNb2RpZmll
ZFBhcmFtZXRlckZlYXR1cmU7Ci0KKyAgICAKKyAgICBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+
PiBjbG9zZWRWYXJpYWJsZXM7CisgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW4pIHsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIWNhcHR1cmVkVmFyaWFibGVzLnNpemUoKSk7CisgICAgICAgIElkZW50
aWZpZXJTZXQgdXNlZFZhcmlhYmxlczsKKyAgICAgICAgc2NvcGUtPmdldFVzZWRWYXJpYWJsZXMo
dXNlZFZhcmlhYmxlcyk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgdmFyaWFibGUgOiB1c2Vk
VmFyaWFibGVzKSB7CisgICAgICAgICAgICBpZiAoc2NvcGUtPmhhc0RlY2xhcmVkVmFyaWFibGUo
SWRlbnRpZmllcihtX3ZtLCB2YXJpYWJsZS5nZXQoKSkpKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoc2NvcGUtPmhhc0RlY2xhcmVkUGFy
YW1ldGVyKElkZW50aWZpZXIobV92bSwgdmFyaWFibGUuZ2V0KCkpKSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIGNsb3NlZFZhcmlhYmxlcy5hcHBlbmQodmFyaWFibGUp
OworICAgICAgICB9CisgICAgfQogICAgIGRpZEZpbmlzaFBhcnNpbmcoc291cmNlRWxlbWVudHMs
IGNvbnRleHQudmFyRGVjbGFyYXRpb25zKCksIGNvbnRleHQuZnVuY0RlY2xhcmF0aW9ucygpLCBm
ZWF0dXJlcywKLSAgICAgICAgY29udGV4dC5udW1Db25zdGFudHMoKSwgY2FwdHVyZWRWYXJpYWJs
ZXMpOworICAgICAgICBjb250ZXh0Lm51bUNvbnN0YW50cygpLCBjYXB0dXJlZFZhcmlhYmxlcywg
c3RkOjptb3ZlKGNsb3NlZFZhcmlhYmxlcykpOwogCiAgICAgcmV0dXJuIHBhcnNlRXJyb3I7CiB9
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB2b2lkIFBhcnNlcjxMZXhlclR5cGU+
OjpkaWRGaW5pc2hQYXJzaW5nKFNvdXJjZUVsZW1lbnRzKiBzb3VyY2VFbGVtZW50cywgUGFyc2Vy
QXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjaz4qIHZhclN0YWNrLCAKLSAgICBQ
YXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KiBmdW5jU3Rh
Y2ssIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cywgSWRlbnRpZmllclNl
dCYgY2FwdHVyZWRWYXJzKQorICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6
RnVuY3Rpb25TdGFjaz4qIGZ1bmNTdGFjaywgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVt
Q29uc3RhbnRzLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcnMsIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8U3RyaW5nSW1wbD4+JiYgY2xvc2VkVmFyaWFibGVzKQogewogICAgIG1fc291cmNlRWxlbWVu
dHMgPSBzb3VyY2VFbGVtZW50czsKICAgICBtX3ZhckRlY2xhcmF0aW9ucyA9IHZhclN0YWNrOwog
ICAgIG1fZnVuY0RlY2xhcmF0aW9ucyA9IGZ1bmNTdGFjazsKICAgICBtX2NhcHR1cmVkVmFyaWFi
bGVzLnN3YXAoY2FwdHVyZWRWYXJzKTsKKyAgICBtX2Nsb3NlZFZhcmlhYmxlcyA9IGNsb3NlZFZh
cmlhYmxlczsKICAgICBtX2ZlYXR1cmVzID0gZmVhdHVyZXM7CiAgICAgbV9udW1Db25zdGFudHMg
PSBudW1Db25zdGFudHM7CiB9CkBAIC0yMzQ2LDYgKzIzNjMsMTAgQEAgdGVtcGxhdGUgPHR5cGVu
YW1lIExleGVyVHlwZT4gdm9pZCBQYXJzZXI8TGV4ZXJUeXBlPjo6cHJpbnRVbmV4cGVjdGVkVG9r
ZW5UZXh0KFcKICAgICBjYXNlIFJFU0VSVkVEOgogICAgICAgICBvdXQucHJpbnQoIlVuZXhwZWN0
ZWQgdXNlIG9mIHJlc2VydmVkIHdvcmQgJyIsIGdldFRva2VuKCksICInIik7CiAgICAgICAgIHJl
dHVybjsKKworICAgIGNhc2UgSU5WQUxJRF9QUklWQVRFX05BTUVfRVJST1JUT0s6CisgICAgICAg
IG91dC5wcmludCgiSW52YWxpZCBwcml2YXRlIG5hbWUgJyIsIGdldFRva2VuKCksICInIik7Cisg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIAogICAgIGNhc2UgSURFTlQ6CiAgICAgICAgIG91
dC5wcmludCgiVW5leHBlY3RlZCBpZGVudGlmaWVyICciLCBnZXRUb2tlbigpLCAiJyIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggYjY5OGVmOTM2OGNiOGM4ZjE5N2Nj
ZDAwMGFjYWE2ZGZiMTFiYTI0NC4uOTAzMzg1MGM4Yzk3ZjU3ZTIxZGE1ZWVkYjAyZDA0NGY0Yzg5
NzhlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0yMyw2ICsyMyw3
IEBACiAjaWZuZGVmIFBhcnNlcl9oCiAjZGVmaW5lIFBhcnNlcl9oCiAKKyNpbmNsdWRlICJDb21t
b25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiRXhjZXB0
aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKQEAgLTI1OSw2ICsyNjAsMTAg
QEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAgcmV0dXJuIGlzVmFsaWRTdHJpY3RNb2RlID8gQmlu
ZGluZ1N1Y2NlZWRlZCA6IFN0cmljdEJpbmRpbmdGYWlsZWQ7CiAgICAgfQogCisgICAgdm9pZCBn
ZXRVc2VkVmFyaWFibGVzKElkZW50aWZpZXJTZXQmIHVzZWRWYXJpYWJsZXMpCisgICAgeworICAg
ICAgICB1c2VkVmFyaWFibGVzLnN3YXAobV91c2VkVmFyaWFibGVzKTsKKyAgICB9CiAKICAgICB2
b2lkIHVzZVZhcmlhYmxlKGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBib29sIGlzRXZhbCkKICAg
ICB7CkBAIC00MTQsNiArNDE5LDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8UGFyc2VkTm9k
ZT4gcGFyc2UoUGFyc2VyRXJyb3ImKTsKIAogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVm
b3JlTGFzdE5ld2xpbmUoKSBjb25zdCB7IHJldHVybiBtX2xleGVyLT5wb3NpdGlvbkJlZm9yZUxh
c3ROZXdsaW5lKCk7IH0KKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmIGNs
b3NlZFZhcmlhYmxlcygpIHsgcmV0dXJuIHN0ZDo6bW92ZShtX2Nsb3NlZFZhcmlhYmxlcyk7IH0K
IAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgQWxsb3dJbk92ZXJyaWRlIHsKQEAgLTU0MCw3ICs1NDYs
NyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBwYXJzZUlubmVyKCk7CiAKICAgICB2b2lkIGRpZEZp
bmlzaFBhcnNpbmcoU291cmNlRWxlbWVudHMqLCBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25T
dGFja3M6OlZhclN0YWNrPiosIAotICAgICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25T
dGFja3M6OkZ1bmN0aW9uU3RhY2s+KiwgQ29kZUZlYXR1cmVzLCBpbnQsIElkZW50aWZpZXJTZXQm
KTsKKyAgICAgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0
YWNrPiosIENvZGVGZWF0dXJlcywgaW50LCBJZGVudGlmaWVyU2V0JiwgY29uc3QgVmVjdG9yPFJl
ZlB0cjxTdHJpbmdJbXBsPj4mJik7CiAKICAgICAvLyBVc2VkIHRvIGRldGVybWluZSB0eXBlIG9m
IGVycm9yIHRvIHJlcG9ydC4KICAgICBib29sIGlzRnVuY3Rpb25Cb2R5Tm9kZShTY29wZU5vZGUq
KSB7IHJldHVybiBmYWxzZTsgfQpAQCAtODQwLDkgKzg0NiwxMSBAQCBwcml2YXRlOgogICAgIGNv
bnN0IElkZW50aWZpZXIqIG1fbGFzdEZ1bmN0aW9uTmFtZTsKICAgICBSZWZQdHI8U291cmNlUHJv
dmlkZXJDYWNoZT4gbV9mdW5jdGlvbkNhY2hlOwogICAgIFNvdXJjZUVsZW1lbnRzKiBtX3NvdXJj
ZUVsZW1lbnRzOworICAgIGJvb2wgbV9wYXJzaW5nQnVpbHRpbjsKICAgICBQYXJzZXJBcmVuYURh
dGE8RGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrPiogbV92YXJEZWNsYXJhdGlvbnM7CiAgICAg
UGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiogbV9mdW5j
RGVjbGFyYXRpb25zOwogICAgIElkZW50aWZpZXJTZXQgbV9jYXB0dXJlZFZhcmlhYmxlczsKKyAg
ICBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiBtX2Nsb3NlZFZhcmlhYmxlczsKICAgICBDb2Rl
RmVhdHVyZXMgbV9mZWF0dXJlczsKICAgICBpbnQgbV9udW1Db25zdGFudHM7CiAgICAgCkBAIC05
NTcsNiArOTY1LDEwIEBAIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gcGFyc2UoVk0qIHZtLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uUGFyYW1ldGVyCiAgICAgICAgIFJlZlB0cjxQ
YXJzZWROb2RlPiByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IpOwogICAg
ICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgICAgICpwb3NpdGlv
bkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsK
KyAgICAgICAgaWYgKHN0cmljdG5lc3MgPT0gSlNQYXJzZUJ1aWx0aW4pIHsKKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgICAgICAgICByZXN1bHQtPnNldENsb3NlZFZh
cmlhYmxlcyhzdGQ6Om1vdmUocGFyc2VyLmNsb3NlZFZhcmlhYmxlcygpKSk7CisgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiAgICAgfQogICAgIFBhcnNlcjxMZXhl
cjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBwYXJhbWV0ZXJzLCBuYW1lLCBzdHJpY3RuZXNz
LCBwYXJzZXJNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyTW9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMu
aAppbmRleCA0ZTlhMTdjZDIxY2EzNDE0NmJiZDQ4MTU2YTM3MmNkNDA0ZGVmNjBjLi5mN2E3NWJm
N2MzNzg1N2U0NGI2ZDVkNzFmNDUyOWJiMWFjMWNmNWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi1lbnVtIEpTUGFyc2VyU3RyaWN0bmVzcyB7IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VT
dHJpY3QgfTsKK2VudW0gSlNQYXJzZXJTdHJpY3RuZXNzIHsgSlNQYXJzZU5vcm1hbCwgSlNQYXJz
ZUJ1aWx0aW4sIEpTUGFyc2VTdHJpY3QgfTsKIGVudW0gSlNQYXJzZXJNb2RlIHsgSlNQYXJzZVBy
b2dyYW1Db2RlLCBKU1BhcnNlRnVuY3Rpb25Db2RlIH07CiAKIGVudW0gUHJvZmlsZXJNb2RlIHsg
UHJvZmlsZXJPZmYsIFByb2ZpbGVyT24gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlclRva2Vucy5oCmluZGV4IDgyYTI2NjM5YTc5MjIwYTA4NDQ1NmI0OGYzMjg1MmQxNDNj
NzM5ZDAuLjhjODdhZDlmYWRiZGM0YWYzOWFjOTlkYjJkODQ0NWUxM2ZmZmQzNWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaApAQCAtMTQ5LDYgKzE0OSw3
IEBAIGVudW0gSlNUb2tlblR5cGUgewogICAgIElOVkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9S
VE9LID0gNyB8IEVycm9yVG9rZW5GbGFnLAogICAgIFVOVEVSTUlOQVRFRF9TVFJJTkdfTElURVJB
TF9FUlJPUlRPSyA9IDggfCBFcnJvclRva2VuRmxhZyB8IFVudGVybWluYXRlZEVycm9yVG9rZW5G
bGFnLAogICAgIElOVkFMSURfU1RSSU5HX0xJVEVSQUxfRVJST1JUT0sgPSA5IHwgRXJyb3JUb2tl
bkZsYWcsCisgICAgSU5WQUxJRF9QUklWQVRFX05BTUVfRVJST1JUT0sgPSAxMCB8IEVycm9yVG9r
ZW5GbGFnCiB9OwogCiBzdHJ1Y3QgSlNUZXh0UG9zaXRpb24gewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0xlZ2FjeVByb2ZpbGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9MZWdhY3lQcm9maWxlci5jcHAKaW5kZXggZGQyYWNkOWYwZThj
N2VlMTY4NDA2MWY1MmM3N2U3OGI4ZmNmYTk1Zi4uMDI2MDcwZjk1OTgyNDk5ZDI3M2I4ZGQ0Y2Nl
NGE4Zjg2MmZiNjZlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L0xlZ2FjeVByb2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
TGVnYWN5UHJvZmlsZXIuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2Nr
LmgiCiAjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJJbnRlcm5hbEZ1
bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25J
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJOb2Rlcy5o
IgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJnTGlzdC5jcHAKaW5kZXggZTEzMTA0ZGY1OTIyZDA3NzYyNTdkMDVjYjVlODcwNTM3ZDIxNDI4
YS4uMjRjMDZiYmIxYzJjMzRiOWRhNWVmODRiMjU1Yzk5MDBkYWY4NTkxMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5jcHAKQEAgLTIyLDcgKzIyLDcgQEAKICNpbmNs
dWRlICJBcmdMaXN0LmgiCiAKICNpbmNsdWRlICJIZWFwUm9vdFZpc2l0b3IuaCIKLSNpbmNsdWRl
ICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRl
ICJKU09iamVjdC5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKaW5kZXggOGZkMTk1Y2I5YjVmN2VmNWJmM2Qy
ZmQ5MzM0MmIwMTAyNzI1ZmFmMS4uNGZiYWM2ODg2MzQ4NjE3MTY0OWEzMzRkNjFiNWRjYzM4MTRk
ZDU1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiQXJndW1lbnRzLmgiCiAKICNpbmNsdWRlICJDYWxs
RnJhbWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRl
ICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0FyZ3VtZW50c0l0ZXJhdG9yLmgiCiAjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVu
dHMuaAppbmRleCAxOGYzODkxNzEzODUyMzYyYzdhNzVhMzA1M2I0NjMxNDE3YmViODFiLi5mMTZm
ZDNkZTQwNTU5NzBiYTlkOWM2ZjBhZTYzMThmMjIwNGI2NTRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bcmd1bWVudHMuaApAQCAtMjUsNiArMjUsNyBAQAogI2RlZmluZSBBcmd1
bWVudHNfaAogCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50
aWZpZXJzLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNEZXN0cnVj
dGlibGVPYmplY3QuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yQ29uc3Ry
dWN0b3IuY3BwCmluZGV4IGFmYjU5NzkwY2IwMDk5ODliYjdiNDI4NjNlOTE4MjMzNTc2YjhhYWMu
LjkxY2FjZGZhODU3ZWI2OTM3NmEzMDgxYThjNzAyYWM5YzIxN2NhN2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9y
Q29uc3RydWN0b3IuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQXJndW1lbnRzSXRl
cmF0b3JDb25zdHJ1Y3Rvci5oIgogCiAjaW5jbHVkZSAiQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5
cGUuaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkpTQXJndW1l
bnRzSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTQ2VsbElubGluZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcAppbmRleCBkZDA4OTRmMTRh
MDIxZDVmMTI2NThhY2IwMWU3MjFmY2Q2ZDM0OGNjLi41YjRhZTg3MTZiMDU1M2JlNDYyMzk1NWU5
OWUxYjQzZWJmMThmZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCkBAIC0yNiw3ICsyNiw5
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRzSXRlcmF0b3JQcm90
b3R5cGUuaCIKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiSlNB
cmd1bWVudHNJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAKIG5h
bWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eVByb3RvdHlwZS5jcHAKaW5kZXggMjdhYzZkNDhhNzFmNzk1NTAyYTEwY2VhNjQ3ODY1NDEzNWE0
NjNhMC4uNmRjN2JlNTY5NjlkZTY3ZjYyMTA3YmIzYTUxYTMwOGZhM2JhNzZiZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTQXJyYXlJdGVyYXRvci5o
IgogI2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nSm9pbmVyLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCiAj
aW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCkBAIC01Niw3ICs1Nyw2IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKik7
CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NvcnQo
RXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVBy
b3RvRnVuY1NwbGljZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5UHJvdG9GdW5jVW5TaGlmdChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRXZlcnkoRXhlY1N0YXRlKik7CiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0ZvckVhY2go
RXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVBy
b3RvRnVuY1NvbWUoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheVByb3RvRnVuY0luZGV4T2YoRXhlY1N0YXRlKik7CkBAIC05NTQsNjkgKzk1NCw2
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNNYXAoRXhlY1N0
YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0QXJyYXkpOwogfQog
Ci0vLyBEb2N1bWVudGF0aW9uIGZvciB0aGVzZSB0aHJlZSBpcyBhdmFpbGFibGUgYXQ6Ci0vLyBo
dHRwOi8vZGV2ZWxvcGVyLXRlc3QubW96aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0phdmFTY3JpcHRf
MS41X1JlZmVyZW5jZTpPYmplY3RzOkFycmF5OmV2ZXJ5Ci0vLyBodHRwOi8vZGV2ZWxvcGVyLXRl
c3QubW96aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0phdmFTY3JpcHRfMS41X1JlZmVyZW5jZTpPYmpl
Y3RzOkFycmF5OmZvckVhY2gKLS8vIGh0dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3ppbGxhLm9yZy9l
bi9kb2NzL0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6QXJyYXk6c29tZQot
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRXZlcnkoRXhlY1N0
YXRlKiBleGVjKQotewotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhlYy0+aG9zdFRoaXNWYWx1
ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKLSAgICB1bnNpZ25l
ZCBsZW5ndGggPSB0aGlzT2JqLT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0
aCkudG9VSW50MzIoZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCi0gICAgSlNWYWx1ZSBm
dW5jdGlvbiA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAg
IENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAg
ICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjKTsKLQotICAgIEpTVmFsdWUgYXBwbHlUaGlzID0gZXhlYy0+YXJndW1lbnQo
MSk7Ci0KLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbih0cnVlKTsKLQotICAgIHVuc2ln
bmVkIGsgPSAwOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUpTICYmIGlzSlNBcnJheSh0
aGlzT2JqKSkgewotICAgICAgICBKU0Z1bmN0aW9uKiBmID0ganNDYXN0PEpTRnVuY3Rpb24qPihm
dW5jdGlvbik7Ci0gICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh0aGlzT2JqKTsKLSAg
ICAgICAgQ2FjaGVkQ2FsbCBjYWNoZWRDYWxsKGV4ZWMsIGYsIDMpOwotICAgICAgICBmb3IgKDsg
ayA8IGxlbmd0aCAmJiAhZXhlYy0+aGFkRXhjZXB0aW9uKCk7ICsraykgewotICAgICAgICAgICAg
aWYgKFVOTElLRUxZKCFhcnJheS0+Y2FuR2V0SW5kZXhRdWlja2x5KGspKSkKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRUaGlz
KGFwcGx5VGhpcyk7Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDAsIGFycmF5
LT5nZXRJbmRleFF1aWNrbHkoaykpOwotICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVu
dCgxLCBqc051bWJlcihrKSk7Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDIs
IHRoaXNPYmopOwotICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWNoZWRDYWxsLmNhbGwo
KTsKLSAgICAgICAgICAgIGlmICghcmVzdWx0LnRvQm9vbGVhbihleGVjKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwotICAgICAgICB9
Ci0gICAgfQotICAgIGZvciAoOyBrIDwgbGVuZ3RoICYmICFleGVjLT5oYWRFeGNlcHRpb24oKTsg
KytrKSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmopOwotICAgICAgICBpZiAo
IXRoaXNPYmotPmdldFByb3BlcnR5U2xvdChleGVjLCBrLCBzbG90KSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGVhY2hBcmd1bWVudHM7Ci0g
ICAgICAgIGVhY2hBcmd1bWVudHMuYXBwZW5kKHNsb3QuZ2V0VmFsdWUoZXhlYywgaykpOwotICAg
ICAgICBlYWNoQXJndW1lbnRzLmFwcGVuZChqc051bWJlcihrKSk7Ci0gICAgICAgIGVhY2hBcmd1
bWVudHMuYXBwZW5kKHRoaXNPYmopOwotCi0gICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0K
LSAgICAgICAgYm9vbCBwcmVkaWNhdGVSZXN1bHQgPSBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxs
VHlwZSwgY2FsbERhdGEsIGFwcGx5VGhpcywgZWFjaEFyZ3VtZW50cykudG9Cb29sZWFuKGV4ZWMp
OwotICAgICAgICBpZiAoIXByZWRpY2F0ZVJlc3VsdCkgewotICAgICAgICAgICAgcmVzdWx0ID0g
anNCb29sZWFuKGZhbHNlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotfQotCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRm9yRWFjaChFeGVjU3RhdGUqIGV4ZWMpCiB7
CiAgICAgSlNPYmplY3QqIHRoaXNPYmogPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCkudG9UaGlzKGV4
ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggNTEwZTM4M2ZhZTU3NWFhZGE4MTc2YzA0NDFlZTcy
NWI0M2E0YzczMi4uZDMwNDg3N2ZlOWNkZTFjMDkxOWZkNDU5NWY4MTFlY2FiY2U3NzI3NiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC0xNDQsMjQg
KzE0NCwyNiBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hlOjpnZXRGdW5j
dGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShWTSYgdgogICAgIEpTVGV4dFBvc2l0aW9uIHBv
c2l0aW9uQmVmb3JlTGFzdE5ld2xpbmU7CiAgICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFt
ID0gcGFyc2U8UHJvZ3JhbU5vZGU+KCZ2bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIEpTUGFy
c2VOb3JtYWwsIEpTUGFyc2VQcm9ncmFtQ29kZSwgZXJyb3IsICZwb3NpdGlvbkJlZm9yZUxhc3RO
ZXdsaW5lKTsKICAgICBpZiAoIXByb2dyYW0pIHsKLSAgICAgICAgQVNTRVJUKGVycm9yLm1fdHlw
ZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXJy
b3IubV90eXBlICE9IFBhcnNlckVycm9yOjpFcnJvck5vbmUpOwogICAgICAgICBtX3NvdXJjZUNv
ZGUucmVtb3ZlKGFkZFJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
IAogICAgIC8vIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBhbiBpbnB1dCBzdHJpbmcgdGhhdCB3b3Vs
ZCByZXN1bHQgaW4gYSBzaW5nbGUgYW5vbnltb3VzIGZ1bmN0aW9uIGV4cHJlc3Npb24uCiAgICAg
U3RhdGVtZW50Tm9kZSogZXhwclN0YXRlbWVudCA9IHByb2dyYW0tPnNpbmdsZVN0YXRlbWVudCgp
OwotICAgIEFTU0VSVChleHByU3RhdGVtZW50KTsKLSAgICBBU1NFUlQoZXhwclN0YXRlbWVudC0+
aXNFeHByU3RhdGVtZW50KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKICAg
ICBFeHByZXNzaW9uTm9kZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVtZW50Tm9k
ZSo+KGV4cHJTdGF0ZW1lbnQpLT5leHByKCk7Ci0gICAgQVNTRVJUKGZ1bmNFeHByKTsKKyAgICBS
RUxFQVNFX0FTU0VSVChmdW5jRXhwcik7CiAgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHItPmlz
RnVuY0V4cHJOb2RlKCkpOwogICAgIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkgPSBzdGF0aWNfY2Fz
dDxGdW5jRXhwck5vZGUqPihmdW5jRXhwciktPmJvZHkoKTsKKyAgICBSRUxFQVNFX0FTU0VSVCgh
cHJvZ3JhbS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CisgICAgCiAgICAgYm9keS0+c2V0RW5k
UG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7Ci0gICAgQVNTRVJUKGJvZHkpOwot
ICAgIEFTU0VSVChib2R5LT5pZGVudCgpLmlzTnVsbCgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChi
b2R5KTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5LT5pZGVudCgpLmlzTnVsbCgpKTsKIAotICAg
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBib2R5LCB0cnVlKTsKKyAg
ICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgYm9keSwgdHJ1ZSwgVW5s
aW5rZWROb3JtYWxGdW5jdGlvbik7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5tX25hbWVWYWx1
ZS5zZXQodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwganNTdHJpbmcoJnZtLCBuYW1lLnN0cmluZygp
KSk7CiAKICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gU291cmNlQ29kZVZhbHVlKHZt
LCBmdW5jdGlvbkV4ZWN1dGFibGUsIG1fc291cmNlQ29kZS5hZ2UoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKaW5kZXggM2Y1
YzY0NWMwOThkNTI3ZmMwYzcyNTllOTQ0N2VmYmU4ODY4YTI5Yy4uMmZjMmI3MjdhZmNlZWUxZWMy
YzYyNWRlNTY3NWIzYmUxY2Y2MGQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcApAQCAtMjcsNyArMjcsMTAgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICNkZWZpbmUgSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKG5hbWUpICwgbmFt
ZSh2bSwgI25hbWUpCiAjZGVmaW5lIElOSVRJQUxJWkVfS0VZV09SRChuYW1lKSAsIG5hbWUjI0tl
eXdvcmQodm0sICNuYW1lKQotI2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFNRShuYW1lKSAs
IG5hbWUjI1ByaXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb20oUHJpdmF0ZU5hbWUoKSkpCisjZGVm
aW5lIElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKG5hbWUpIFwKKyAgICAsIG5hbWUjI1ByaXZhdGVO
YW1lKElkZW50aWZpZXI6OmZyb20oUHJpdmF0ZU5hbWUoKSkpIFwKKyAgICAsIG1fIyNuYW1lIyNQ
dWJsaWNTdHJpbmdQYWlyKG5hbWUsIG5hbWUjI1ByaXZhdGVOYW1lKSBcCisKIAogQ29tbW9uSWRl
bnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZNKiB2bSkKICAgICA6IG51bGxJZGVudGlmaWVy
KCkKQEAgLTM4LDggKzQxLDI2IEBAIENvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVy
cyhWTSogdm0pCiAgICAgLCBoYXNOZXh0SWRlbnRpZmllcih2bSwgImhhc05leHQiKQogICAgIEpT
Q19DT01NT05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKElOSVRJQUxJWkVfS0VZV09SRCkKICAg
ICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpFX1BS
T1BFUlRZX05BTUUpCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJ
QUxJWkVfUFJPUEVSVFlfTkFNRSkKICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNf
RUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKQogewogfQogCitjb25z
dCBJZGVudGlmaWVyKiBDb21tb25JZGVudGlmaWVyczo6Z2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRl
bnRpZmllciYgaWRlbnQpIGNvbnN0Cit7CisjZGVmaW5lIFJFVFVSTl9JRl9QUklWQVRFX05BTUVf
TUFUQ0hFUyhuYW1lKSBpZiAobV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuZmlyc3QgPT0gaWRl
bnQpIHJldHVybiAmbV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuc2Vjb25kOworICAgIEpTQ19D
T01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoUkVUVVJOX0lGX1BS
SVZBVEVfTkFNRV9NQVRDSEVTKQorI3VuZGVmIFJFVFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hF
UworICAgIHJldHVybiAwOworfQorCitJZGVudGlmaWVyIENvbW1vbklkZW50aWZpZXJzOjpnZXRQ
dWJsaWNOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAoreworI2RlZmluZSBSRVRV
Uk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMobmFtZSkgaWYgKG1fIyNuYW1lIyNQdWJsaWNTdHJp
bmdQYWlyLnNlY29uZCA9PSBpZGVudCkgcmV0dXJuIG1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQYWly
LmZpcnN0OworICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZ
X05BTUUoUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKQorI3VuZGVmIFJFVFVSTl9JRl9Q
UklWQVRFX05BTUVfTUFUQ0hFUworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIGVtcHR5SWRlbnRpZmllcjsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRl
eCBlOGY5ZWQ4MmJjNzk0NjIwMzgyNjZiMzAyMDc4MjI0N2IxZmEyN2EzLi45MjRkMzZhYzY5MTM1
MDM1N2NiMzgyYjFlZjNiNDBhMGEwOGMwYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTIyLDYgKzIyLDcgQEAKICNkZWZp
bmUgQ29tbW9uSWRlbnRpZmllcnNfaAogCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgorI2luY2x1
ZGUgIkpTQ0J1aWx0aW5zLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIC8vIE1h
cmtlZEFyZ3VtZW50QnVmZmVyIG9mIHByb3BlcnR5IG5hbWVzLCBwYXNzZWQgdG8gYSBtYWNybyBz
byB3ZSBjYW4gZG8gc2V0IHRoZW0gdXAgdmFyaW91cwpAQCAtMTMzLDggKzEzNCwxMCBAQAogICAg
IG1hY3JvKG9zckV4aXRzKSBcCiAgICAgbWFjcm8ocGFyc2UpIFwKICAgICBtYWNybyhwcm9maWxl
ZEJ5dGVjb2RlcykgXAorICAgIG1hY3JvKHByb21pc2UpIFwKICAgICBtYWNybyhwcm9wZXJ0eUlz
RW51bWVyYWJsZSkgXAogICAgIG1hY3JvKHByb3RvdHlwZSkgXAorICAgIG1hY3JvKHJlc29sdmUp
IFwKICAgICBtYWNybyhzZXQpIFwKICAgICBtYWNybyhzaXplKSBcCiAgICAgbWFjcm8oc2xpY2Up
IFwKQEAgLTE1NSw3ICsxNTgsMTQgQEAKICAgICBtYWNybyh2YWx1ZXMpIFwKICAgICBtYWNybyh2
YWx1ZU9mKSBcCiAgICAgbWFjcm8od2luZG93KSBcCi0gICAgbWFjcm8od3JpdGFibGUpCisgICAg
bWFjcm8od3JpdGFibGUpIFwKKyAgICBtYWNybyhpdGVyYXRvcikgXAorICAgIG1hY3JvKGl0ZXJh
dG9yTmV4dCkgXAorICAgIG1hY3JvKHJlamVjdCkgXAorICAgIG1hY3JvKGZ1bGZpbGxtZW50SGFu
ZGxlcikgXAorICAgIG1hY3JvKHJlamVjdGlvbkhhbmRsZXIpIFwKKyAgICBtYWNybyhkZWZlcnJl
ZCkgXAorICAgIG1hY3JvKGNvdW50ZG93bkhvbGRlcikgXAogCiAjZGVmaW5lIEpTQ19DT01NT05f
SURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKG1hY3JvKSBcCiAgICAgbWFjcm8oYnJlYWspIFwKQEAg
LTIwMyw3ICsyMTMsNyBAQAogICAgIG1hY3JvKHZvaWQpIFwKICAgICBtYWNybyh3aGlsZSkgXAog
ICAgIG1hY3JvKHdpdGgpIFwKLSAgICBtYWNybyh5aWVsZCkKKyAgICBtYWNybyh5aWVsZCkgXAog
CiAjZGVmaW5lIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05B
TUUobWFjcm8pIFwKICAgICBtYWNybyhpdGVyYXRvcikgXApAQCAtMjE2LDcgKzIyNiwxMiBAQAog
ICAgIG1hY3JvKGluZGV4KSBcCiAgICAgbWFjcm8odmFsdWVzKSBcCiAgICAgbWFjcm8oZGVmZXJy
ZWQpIFwKLSAgICBtYWNybyhjb3VudGRvd25Ib2xkZXIpCisgICAgbWFjcm8oY291bnRkb3duSG9s
ZGVyKSBcCisgICAgbWFjcm8oT2JqZWN0KSBcCisgICAgbWFjcm8oVHlwZUVycm9yKSBcCisgICAg
bWFjcm8odW5kZWZpbmVkS2V5d29yZCkgXAorICAgIG1hY3JvKGNhbGwpIFwKKyAgICBtYWNybyhh
cHBseSkKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTI0MCwxMSArMjU1LDE1IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAKICNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJU
WV9OQU1FX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWU7CiAgICAgICAgIEpTQ19D
T01NT05fSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKEpTQ19JREVOVElGSUVSX0RFQ0xB
UkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwpCisgICAgICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVO
Q1RJT05fTkFNRShKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFMKQog
I3VuZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwKIAotI2Rl
ZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwo
bmFtZSkgY29uc3QgSWRlbnRpZmllciBuYW1lIyNQcml2YXRlTmFtZTsKKyNkZWZpbmUgSlNDX0lE
RU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMKG5hbWUpIGNvbnN0
IElkZW50aWZpZXIgbmFtZSMjUHJpdmF0ZU5hbWU7IGNvbnN0IHN0ZDo6cGFpcjxJZGVudGlmaWVy
LCBJZGVudGlmaWVyPiBtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpcjsKICAgICAgICAgSlNDX0NP
TU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShKU0NfSURFTlRJRklF
Ul9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwpCiAjdW5kZWYgSlNDX0lERU5U
SUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMCisgICAgICAgIAorICAg
ICAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJikg
Y29uc3Q7CisgICAgICAgIElkZW50aWZpZXIgZ2V0UHVibGljTmFtZShjb25zdCBJZGVudGlmaWVy
JikgY29uc3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCAwNzU4NzVmYjIz
MTZhNTU1NzA1MGE2NjkwY2QwZjk4ODI0ODRmNWYzLi41YWY5MDg3NTRlNzQ3ZjhjYWUwY2QwNGFm
OGQ0OTE1MDA0NjhjMmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlICJKSVQuaCIK
ICNpbmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgotI2luY2x1
ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIK
ICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IDY4ZjY0MDg0ZmEyODExMmZl
ZTBkOTQ0MmRiZGVlMzhkNTIxMTQ1NzEuLjhkOGM4ZmVkNTRkMjI0NWYwYTdmZjUyNjdiZmZiMWI4
MjE5MGRiNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5j
bHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBl
cnMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTU3RhY2tJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiTmFtZUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGln
bm1lbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAKaW5kZXggNTUzMzRiZTJmOTgwYTk4ZjdmZWE0
MmEwNWJlMGYyMGMwMTlmZjBkZC4uZmE1N2MwMjY4NWU1M2Q1MjUyODgwNTdlMjExZDk4YjEwOTgx
ZDczZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzRXhjZXB0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRl
ICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJKSVRFeGNl
cHRpb25zLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1
bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgQ29tbW9uU2xvd1BhdGhzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggMDVlMTFlMGI4MGEzNDMw
YWVhYjIyYjAyMjJhMjEyZjRhOGUyYzQ5Yi4uMzY0Y2M3MTY2NjA4YjUwMDdkNDc3ZDg3MzkxOGE1
ZDY0YjE2ODY1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5jcHAKQEAgLTgxLDYgKzgxLDExIEBAIEpTT2JqZWN0KiBjcmVhdGVTdGFj
a092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogSlNPYmplY3Qq
IGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCkKIHsKKyAgICAKKyAgICBpZiAoaWRlbnQuaW1wbCgpLT5pc0VtcHR5VW5p
cXVlKCkpIHsKKyAgICAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2FuJ3QgZmluZCBw
cml2YXRlIHZhcmlhYmxlOiBAIiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdldFB1YmxpY05hbWUo
aWRlbnQpLnN0cmluZygpKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJvcihl
eGVjLCBtZXNzYWdlKTsKKyAgICB9CiAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2Fu
J3QgZmluZCB2YXJpYWJsZTogIiwgaWRlbnQuc3RyaW5nKCkpKTsKICAgICByZXR1cm4gY3JlYXRl
UmVmZXJlbmNlRXJyb3IoZXhlYywgbWVzc2FnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggMTk4OTc2YmIzZmU2ZTZlOTExNzk4MTJkMWNhZjli
OGJmOWJmZDBiYi4uY2YwZTc1M2E3YzVmNTQ0NjdiNjRkOGUyYTliM2ZiYTI3MTUwMDAxMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtNDg0LDcgKzQ4
NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAKLSAgICBFeGVjdXRhYmxl
SW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRz
QWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UpOyB9CisgICAg
RXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxl
SW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNl
LCBmYWxzZSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1fdW5s
aW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQogICAgIHVuc2lnbmVkIG51bWJl
ck9mRnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1i
ZXJPZkZ1bmN0aW9uRGVjbHMoKTsgfQpAQCAtNTQwLDcgKzU0MCw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgY2xlYXJDb2RlKCk7CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygp
IGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZh
bCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0
YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24o
KSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSk7IH0KIAogcHJpdmF0
ZToKICAgICBmcmllbmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKQEAgLTYyOCw3ICs2MjgsOCBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2tGb3Ioa2lu
ZCk7CiAgICAgfQotICAgICAgICAKKworICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKTsgfQog
ICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJs
ZS0+bmFtZSgpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgaW5mZXJyZWROYW1lKCkgeyByZXR1
cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmluZmVycmVkTmFtZSgpOyB9CiAgICAgSlNTdHJpbmcq
IG5hbWVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1lVmFs
dWUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Q
cm90b3R5cGUuY3BwCmluZGV4IGMxYjA4YWYyZDgxOGRhZTU3ZTFiMDBmZGExNzNhODE2MTM3NTI5
YjUuLjEyNDkwYzQwZjMzNDE3ZWNhOTIzODUwYTBkYzY2MmRiYmNkNDBmMzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKQEAg
LTIyLDEyICsyMiwxMyBAQAogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAKICNpbmNs
dWRlICJBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpT
QXJyYXkuaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1N0cmluZ0J1aWxkZXIu
aCIKLSNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5o
IgogI2luY2x1ZGUgIkxleGVyLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCkBAIC0xMDgs
NyArMTA5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByb3RvRnVu
Y1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
Pmhvc3RUaGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKEpTRnVuY3Rpb246
OmluZm8oKSkpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5j
dGlvbio+KHRoaXNWYWx1ZSk7Ci0gICAgICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24o
KSkKKyAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQogICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4
ZWMsICJmdW5jdGlvbiAiLCBmdW5jdGlvbi0+bmFtZShleGVjKSwgIigpIHtcbiAgICBbbmF0aXZl
IGNvZGVdXG59IikpOwogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBm
dW5jdGlvbi0+anNFeGVjdXRhYmxlKCk7CiAgICAgICAgIFN0cmluZyBzb3VyY2VTdHJpbmcgPSBl
eGVjdXRhYmxlLT5zb3VyY2UoKS50b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKaW5kZXggNzJlZDFjNzEyNDA2MTE2OGIwYWRkZDMx
MTZmNzU1YTExN2I4ZmI5MC4uYjM3NDk0MzA5OWUyMTU1YTM5NzcxMzMxMzQ3MDJjMmEyNGFjYzg2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3Bw
CkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgSlNBY3RpdmF0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAKIGlubGluZSBib29sIEpTQWN0aXZhdGlv
bjo6c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5p
bmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRy
eSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwog
ICAgIGlmIChlbnRyeS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC03Miw3
ICs3Miw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQoUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90CiAKIGlubGluZSBib29sIEpTQWN0aXZh
dGlvbjo6c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBz
eW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAg
U3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0
eU5hbWUudWlkKCkpOwogICAgIGlmIChlbnRyeS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCkBAIC04OSw3ICs4OSw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9s
VGFibGVQdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOCiAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6
OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwogICAgIAotICAgIFN5bWJvbFRhYmxl
RW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1Ymxp
Y05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlu
bGluZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChlbnRyeS5pc051bGwoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChlbnRyeS5pc1JlYWRPbmx5KCkpIHsKQEAgLTEz
Niw3ICsxMzYsNyBAQCBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0V2l0
aEF0dHJpYnV0ZXMoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcAogICAgIFdyaXRlQmFycmllckJh
c2U8VW5rbm93bj4qIHJlZzsKICAgICB7CiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9j
a2VyKHN5bWJvbFRhYmxlKCktPm1fbG9jayk7Ci0gICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0
ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZSgpLT5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1
YmxpY05hbWUoKSk7CisgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBz
eW1ib2xUYWJsZSgpLT5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICAgICAg
aWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUoKS0+ZW5kKGxvY2tlcikpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5ID0gaXRlci0+dmFsdWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0
ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRl
cmF0b3IuY3BwCmluZGV4IDJmY2Y4ODE1YzA1NjgwNTgxMmE3OTkxYTVmZjA2M2Q2ODczOTcxNjQu
LjlhOTI1ODNhYTBlYzkwZGJiMzI4ZWNkNTBkYzMxMzlhZWYwMjczYjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiSlNBcmd1bWVudHNJdGVyYXRvci5oIgogCiAjaW5j
bHVkZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAK
aW5kZXggOTAwN2I1ZjdkM2YxMDNiMWQyMWIxYTM2NWEyNmMyMTVjMzJiNGQyOC4uYmEwYTJkMzhl
OWM1M2UxNTkzN2Q0NmE4OTUxYThjOGM0NTA3OTI2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJFeGVjdXRh
YmxlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSW5kZXhpbmdIZWFk
ZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJv
cGVydHlOYW1lQXJyYXkuaCIKICNpbmNsdWRlICJSZWplY3QuaCIKICNpbmNsdWRlIDx3dGYvQVZM
VHJlZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVy
YXRvci5jcHAKaW5kZXggZDUwNmM0ZWJkMjYyMGVmZDcwNzkzYTg3M2QwODUyZmJkOTc4Mjg1OS4u
Y2YzNzA5N2VjMGM2OTI1YTg2N2I4YzAxMGMwZWZjNDA3NDQ4NWYxZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3BwCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2Vs
bElubGluZXMuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJTbG90
VmlzaXRvcklubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCmluZGV4IGNjYTY4ODhiZjk4YTAyODY0NmNhM2Rk
ZGYzNzYyN2NlMGU3ZDkzMDIuLjMzOWE3YWI3ZjU5NTE1ZTk2YWZiN2VjNGI4NzQxZTdhYThlMTY2
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCkBA
IC0zMiw3ICszMiw5IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNOb3RBbk9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3Ry
aW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk51bWJlck9iamVjdC5oIgorI2luY2x1ZGUgIk9wZXJh
dGlvbnMuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJp
bmdFeHRyYXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5s
aW5lcy5oCmluZGV4IGY3Yzg0NDY0NTA5MmIyNTA4MDVlNmU4ZDQ4MzJjOTk4YmRiODliNTQuLmQ3
OTVkZDU2YTk3ZGRiNTk3YzA5MGZjMmUwYjdmMzA4ZTMzZWJjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKQEAgLTI3LDggKzI3LDEwIEBACiAj
ZGVmaW5lIEpTQ2VsbElubGluZXNfaAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVk
ZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJEZWZlckdDLmgiCiAjaW5jbHVkZSAi
SGFuZGxlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Nl
bGwuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDI0MTk2NDYx
MGJiNDQyN2IxODYzNzMzNDZlMjRmNWE4MmQwY2RjYzQuLmFjZTZjMTQ3ZTQ5N2ZlZTIwMjkyZmI1
NTM5NzYwZDVkNjk4MjljZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uY3BwCkBAIC0zNCw3ICszNCw4IEBACiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5
cGUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCi0j
aW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiIAorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5o
IgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3QuaCIKICNpbmNsdWRlICJKU05vdEFuT2JqZWN0LmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIu
aCIKQEAgLTEwOSw2ICsxMTAsMTQgQEAgdm9pZCBKU0Z1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGludCBsZW5ndGgKICAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIobGVuZ3RoKSwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogCitKU0Z1bmN0aW9uKiBKU0Z1bmN0
aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgSlNGdW5jdGlv
biogZnVuY3Rpb24gPSBjcmVhdGUodm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCk7CisgICAg
ZnVuY3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmco
JnZtLCBleGVjdXRhYmxlLT5uYW1lKCkuc3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkg
fCBEb250RW51bSk7CisgICAgZnVuY3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bGVuZ3RoLCBqc051bWJlcihleGVjdXRhYmxlLT5wYXJhbWV0ZXJDb3VudCgpKSwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHJldHVybiBmdW5jdGlvbjsKK30KKwog
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGUqIEpTRnVuY3Rpb246OmNyZWF0ZUFsbG9jYXRpb25Qcm9m
aWxlKEV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IGlubGluZUNhcGFjaXR5KQogewogICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CkBAIC0xNDIsNyArMTUxLDcgQEAgY29uc3QgU3RyaW5nIEpTRnVuY3Rp
b246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVy
biBleHBsaWNpdE5hbWU7CiAgICAgCiAgICAgY29uc3QgU3RyaW5nIGFjdHVhbE5hbWUgPSBuYW1l
KGV4ZWMpOwotICAgIGlmICghYWN0dWFsTmFtZS5pc0VtcHR5KCkgfHwgaXNIb3N0RnVuY3Rpb24o
KSkKKyAgICBpZiAoIWFjdHVhbE5hbWUuaXNFbXB0eSgpIHx8IGlzSG9zdE9yQnVpbHRpbkZ1bmN0
aW9uKCkpCiAgICAgICAgIHJldHVybiBhY3R1YWxOYW1lOwogICAgIAogICAgIHJldHVybiBqc0V4
ZWN1dGFibGUoKS0+aW5mZXJyZWROYW1lKCkuc3RyaW5nKCk7CkBAIC0xNTAsMTAgKzE1OSwyMCBA
QCBjb25zdCBTdHJpbmcgSlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKEV4ZWNTdGF0
ZSogZXhlYykKIAogY29uc3QgU291cmNlQ29kZSogSlNGdW5jdGlvbjo6c291cmNlQ29kZSgpIGNv
bnN0CiB7Ci0gICAgaWYgKGlzSG9zdEZ1bmN0aW9uKCkpCisgICAgaWYgKGlzSG9zdE9yQnVpbHRp
bkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiAmanNFeGVjdXRhYmxl
KCktPnNvdXJjZSgpOwogfQorICAgIAorYm9vbCBKU0Z1bmN0aW9uOjppc0hvc3RPckJ1aWx0aW5G
dW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzSG9zdEZ1bmN0aW9uKCkgfHwgaXNCdWls
dGluRnVuY3Rpb24oKTsKK30KKworYm9vbCBKU0Z1bmN0aW9uOjppc0J1aWx0aW5GdW5jdGlvbigp
IGNvbnN0Cit7CisgICAgcmV0dXJuICFpc0hvc3RGdW5jdGlvbigpICYmIGpzRXhlY3V0YWJsZSgp
LT5pc0J1aWx0aW5GdW5jdGlvbigpOworfQogCiB2b2lkIEpTRnVuY3Rpb246OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKQEAgLTI3Nyw3ICsyOTYs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBFbmNvZGVkSlNWYWx1ZSBzbG90QmFzZQogICAgIGlmICghY2FsbGVyLmlzT2JqZWN0KCkg
fHwgIWFzT2JqZWN0KGNhbGxlciktPmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbGVyKTsKICAgICBKU0Z1bmN0aW9uKiBmdW5j
dGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2FsbGVyKTsKLSAgICBpZiAoZnVuY3Rpb24tPmlz
SG9zdEZ1bmN0aW9uKCkgfHwgIWZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2Rl
KCkpCisgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpIHx8ICFmdW5j
dGlvbi0+anNFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGNhbGxlcik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkZ1bmN0aW9uLmNhbGxlciB1c2VkIHRvIHJldHJp
ZXZlIHN0cmljdCBjYWxsZXIiKSkpOwogfQpAQCAtMjk5LDcgKzMxOCw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTRnVuY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgc2xv
dEJhc2UsIEVuY29kCiBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RGdW5jdGlv
bigpKQorICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQogICAg
ICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5wcm90b3R5cGUpIHsKQEAgLTM2MSw3ICszODAsNyBAQCBib29sIEpTRnVuY3Rp
b246OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5Tgogdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJv
cGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsKLSAgICBpZiAoIXRoaXNPYmpl
Y3QtPmlzSG9zdEZ1bmN0aW9uKCkgJiYgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGll
cykpIHsKKyAgICBpZiAoIXRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgJiYg
KG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpIHsKICAgICAgICAgLy8gTWFrZSBz
dXJlIHByb3RvdHlwZSBoYXMgYmVlbiByZWlmaWVkLgogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dCh0aGlzT2JqZWN0KTsKICAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90
b3R5cGUsIHNsb3QpOwpAQCAtMzc3LDcgKzM5Niw3IEBAIHZvaWQgSlNGdW5jdGlvbjo6Z2V0T3du
Tm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywK
IHZvaWQgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4o
Y2VsbCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkpIHsKKyAgICBpZiAo
dGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkgewogICAgICAgICBCYXNlOjpw
dXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC00MjUsNyArNDQ0LDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3AKIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CiAgICAgSlNG
dW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsKLSAgICBp
ZiAodGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICBpZiAodGhpc09iamVjdC0+aXNI
b3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blBy
b3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2Vw
dGlvbik7CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5w
cm90b3R5cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApp
bmRleCA3Y2QxNGI4YzJkODAwZjYxYmRjMTJlZGQyZGYwNGQzNWZhMDYxOWI2Li4xNmZiZDA2ZTZl
MDdiNThlODdmNTc4NjhiZGQwODlkMzRmZGM1MGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC0zMCw2ICszMCwxMCBAQAogI2luY2x1ZGUgIk9iamVj
dEFsbG9jYXRpb25Qcm9maWxlLmgiCiAjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgogCisjaWYgQ09N
UElMRVIoR0NDKQorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2lubGluZSIKKyNl
bmRpZgorCiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwpAQCAt
NjgsNiArNzIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBmdW5jdGlv
bjsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0
ZUJ1aWx0aW5GdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTR2xvYmFsT2JqZWN0
Kik7CisgICAgICAgIAogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAg
ICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG5hbWUoRXhlY1N0YXRlKik7
CkBAIC0xNDUsNiArMTUxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4g
bV9hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ7CiAgICAgICAgIH0KIAorICAgICAgICBib29s
IGlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNCdWlsdGlu
RnVuY3Rpb24oKSBjb25zdDsKKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgY29uc3Qgc3RhdGlj
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
SW1wbGVtZW50c0hhc0luc3RhbmNlIHwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IE92ZXJyaWRl
c0dldFByb3BlcnR5TmFtZXMgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCmluZGV4IGZl
NGUxMTRhZGJjMjM2NzRkM2I2MGU2MWY3MWNiN2EwNmM5NDc4NGQuLjI0OThlYzM4Y2Q4OTU1MGZh
MmYzODU1OTNkYWNiYTEyM2IwMDE3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaApAQCAtNTMsMTMgKzUzLDEzIEBAIGlubGluZSBi
b29sIEpTRnVuY3Rpb246OmlzSG9zdEZ1bmN0aW9uKCkgY29uc3QKIAogaW5saW5lIE5hdGl2ZUZ1
bmN0aW9uIEpTRnVuY3Rpb246Om5hdGl2ZUZ1bmN0aW9uKCkKIHsKLSAgICBBU1NFUlQoaXNIb3N0
RnVuY3Rpb24oKSk7CisgICAgQVNTRVJUKGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkpOwogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxOYXRpdmVFeGVjdXRhYmxlKj4obV9leGVjdXRhYmxlLmdldCgp
KS0+ZnVuY3Rpb24oKTsKIH0KIAogaW5saW5lIE5hdGl2ZUZ1bmN0aW9uIEpTRnVuY3Rpb246Om5h
dGl2ZUNvbnN0cnVjdG9yKCkKIHsKLSAgICBBU1NFUlQoaXNIb3N0RnVuY3Rpb24oKSk7CisgICAg
QVNTRVJUKGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkpOwogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxOYXRpdmVFeGVjdXRhYmxlKj4obV9leGVjdXRhYmxlLmdldCgpKS0+Y29uc3RydWN0b3IoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKaW5k
ZXggMmRkYzI5ZjcxODk3YmI1MWQzOTBiMDZiMjVhNzM4MzM4NzRiYTBjMS4uZWRkMzQ0OWNlNDdi
MTczNWU4ZTVkYmIwNWYzMThlM2Q1NWYzYmU2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzX2gKICNkZWZpbmUgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXNfaAogCisjaW5jbHVkZSAiQ29tbW9uSWRl
bnRpZmllcnMuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIu
aCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IDZkYjg2Mjc0YzNiODc0YWFhZGU1MTUxODk4MjY3
MjZmYjEzNmMxNzMuLmYyNGVhNzMwM2RmOTY5ZGJkMmRjYTUyYzg2ZDExYzc4YzAwZGI5ZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lc19oCiAKICNpbmNsdWRlICJBcnJheUJ1ZmZlclZp
ZXcuaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkRlZmVyR0Mu
aCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJvdG90eXBlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmgKaW5kZXggNDU5OTk3YTQ2
NGI5MTE5NDc3YjFiZTg0ZTM2YzRlMjk2NmFjZWY4NS4uOGU1ZmY4Mjc5MWU2ZmY4ZDRlYjljMzcz
NjkxZTQzM2ViN2QxNmFlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJ
bmxpbmVzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdQcm90b3R5cGVJbmxpbmVzX2gKICNkZWZpbmUgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90
b3R5cGVJbmxpbmVzX2gKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVk
ZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCmluZGV4IDJjMjc0YzFhN2Q0ODFjMDdkZjBkMmJlYjNiMjkzMWEzOTA3YTVlNjYu
LjA2ZTU0Yzg0ZTc3YjkwMzJiYWExZDJkZjQ3YTFjNzJlODBiN2RlYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTM0Niw3ICsz
NDYsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKIAog
ICAgIC8vIENvbnN0cnVjdG9ycwogCi0gICAgSlNDZWxsKiBvYmplY3RDb25zdHJ1Y3RvciA9IE9i
amVjdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX29iamVjdFByb3Rv
dHlwZS5nZXQoKSk7CisgICAgT2JqZWN0Q29uc3RydWN0b3IqIG9iamVjdENvbnN0cnVjdG9yID0g
T2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fb2JqZWN0UHJv
dG90eXBlLmdldCgpKTsKKyAgICBtX29iamVjdENvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgb2Jq
ZWN0Q29uc3RydWN0b3IpOwogICAgIEpTQ2VsbCogZnVuY3Rpb25Db25zdHJ1Y3RvciA9IEZ1bmN0
aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9mdW5jdGlvblBy
b3RvdHlwZS5nZXQoKSk7CiAgICAgSlNDZWxsKiBhcnJheUNvbnN0cnVjdG9yID0gQXJyYXlDb25z
dHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0s
IHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2FycmF5UHJvdG90eXBlLmdldCgp
KTsKIApAQCAtNDMyLDcgKzQzMywxMCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICBHbG9iYWxQcm9wZXJ0eUluZm8gc3RhdGljR2xvYmFsc1tdID0g
ewogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+TmFOLCBqc05h
TigpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFBy
b3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5JbmZpbml0eSwganNOdW1iZXIoc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwg
UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+
dW5kZWZpbmVkS2V5d29yZCwganNVbmRlZmluZWQoKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwg
UmVhZE9ubHkpCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT51
bmRlZmluZWRLZXl3b3JkLCBqc1VuZGVmaW5lZCgpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBS
ZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT51
bmRlZmluZWRLZXl3b3JkUHJpdmF0ZU5hbWUsIGpzVW5kZWZpbmVkKCksIERvbnRFbnVtIHwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPk9iamVjdFByaXZhdGVOYW1lLCBvYmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+VHlwZUVycm9yUHJpdmF0ZU5hbWUsIG1fdHlwZUVycm9yQ29uc3RydWN0
b3IuZ2V0KCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KQogICAgIH07CiAgICAg
YWRkU3RhdGljR2xvYmFscyhzdGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVOR1RIKHN0YXRpY0ds
b2JhbHMpKTsKICAgICAKQEAgLTYwOCw2ICs2MTIsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3ludGF4RXJyb3JDb25zdHJ1Y3Rvcik7CiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdHlwZUVycm9yQ29uc3RydWN0b3IpOwogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX1VSSUVycm9yQ29uc3RydWN0b3IpOworICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX29iamVjdENvbnN0cnVjdG9yKTsKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcm9taXNlQ29uc3RydWN0b3IpOwogCiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZXZhbEZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGIwY2FkM2RjNTQ3
MGY3YzdhMGU1NzBiZGNkMmRmZmE4OTVlMmFhMGMuLjNhNjE2YzZmMDVlZGYxZDI5NWFmODQ0MWFh
NjY1MDBmYjkyYTRhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaApAQCAtNjcsNiArNjcsNyBAQCBjbGFzcyBKU1N0YWNrOwogY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgTWljcm90YXNrOwogY2xhc3MgTmF0aXZlRXJyb3JD
b25zdHJ1Y3RvcjsKK2NsYXNzIE9iamVjdENvbnN0cnVjdG9yOwogY2xhc3MgUHJvZ3JhbUNvZGVC
bG9jazsKIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwogY2xhc3MgUmVnRXhwQ29uc3RydWN0b3I7
CkBAIC0xNTgsNiArMTU5LDcgQEAgcHJvdGVjdGVkOgogICAgIFdyaXRlQmFycmllcjxOYXRpdmVF
cnJvckNvbnN0cnVjdG9yPiBtX3R5cGVFcnJvckNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmll
cjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX1VSSUVycm9yQ29uc3RydWN0b3I7CiAgICAgV3Jp
dGVCYXJyaWVyPEpTUHJvbWlzZUNvbnN0cnVjdG9yPiBtX3Byb21pc2VDb25zdHJ1Y3RvcjsKKyAg
ICBXcml0ZUJhcnJpZXI8T2JqZWN0Q29uc3RydWN0b3I+IG1fb2JqZWN0Q29uc3RydWN0b3I7CiAK
ICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9ldmFsRnVuY3Rpb247CiAgICAgV3JpdGVC
YXJyaWVyPEpTRnVuY3Rpb24+IG1fY2FsbEZ1bmN0aW9uOwpAQCAtMzMwLDYgKzMzMiw3IEBAIHB1
YmxpYzoKICAgICBSZWdFeHBDb25zdHJ1Y3RvciogcmVnRXhwQ29uc3RydWN0b3IoKSBjb25zdCB7
IHJldHVybiBtX3JlZ0V4cENvbnN0cnVjdG9yLmdldCgpOyB9CiAKICAgICBFcnJvckNvbnN0cnVj
dG9yKiBlcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvckNvbnN0cnVjdG9y
LmdldCgpOyB9CisgICAgT2JqZWN0Q29uc3RydWN0b3IqIG9iamVjdENvbnN0cnVjdG9yKCkgY29u
c3QgeyByZXR1cm4gbV9vYmplY3RDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgIE5hdGl2ZUVycm9y
Q29uc3RydWN0b3IqIGV2YWxFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9ldmFs
RXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHJh
bmdlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2VFcnJvckNvbnN0cnVj
dG9yLmdldCgpOyB9CiAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogcmVmZXJlbmNlRXJyb3JD
b25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3Rvci5n
ZXQoKTsgfQpAQCAtNTgxLDcgKzU4NCw3IEBAIGlubGluZSBib29sIEpTR2xvYmFsT2JqZWN0Ojpo
YXNPd25Qcm9wZXJ0eUZvcldyaXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lCiAKIGlu
bGluZSBib29sIEpTR2xvYmFsT2JqZWN0OjpzeW1ib2xUYWJsZUhhc1Byb3BlcnR5KFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJv
bFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1i
b2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFt
ZS51aWQoKSk7CiAgICAgcmV0dXJuICFlbnRyeS5pc051bGwoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IDJiNjdhMWQ5ZWVkODRlOTk1NmY4
YmI5NjgzODRjODRjYWVhNTNjZmYuLjJlYTJjMjRlNmVhYjRjZDBkN2ZmZWQ2NjVlZjRhZTQxYWYw
NzUwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAg
LTg3LDcgKzg3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGdldENsYXNzUHJvcGVydHlOYW1lcyhF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENsYXNzSW5mbyogY2xhc3MKICAgICAgICAgaW50IGhhc2hT
aXplTWFzayA9IHRhYmxlLT5jb21wYWN0U2l6ZSAtIDE7CiAgICAgICAgIGNvbnN0IEhhc2hFbnRy
eSogZW50cnkgPSB0YWJsZS0+dGFibGU7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IGhh
c2hTaXplTWFzazsgKytpLCArK2VudHJ5KSB7Ci0gICAgICAgICAgICBpZiAoZW50cnktPmtleSgp
ICYmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwgKG1vZGUgPT0gSW5jbHVk
ZURvbnRFbnVtUHJvcGVydGllcykpICYmICEoKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlv
bikgJiYgZGlkUmVpZnkpKQorICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkoKSAmJiAoIShlbnRy
eS0+YXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IChtb2RlID09IEluY2x1ZGVEb250RW51bVBy
b3BlcnRpZXMpKSAmJiAhKChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24p
ICYmIGRpZFJlaWZ5KSkKICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChlbnRyeS0+
a2V5KCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTYxOCw3ICsxNjE4LDcgQEAgdm9pZCBKU09i
amVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUoRXhlY1N0YXRlKiBleGVjKQogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXMpOwogICAg
ICAgICBmb3IgKEhhc2hUYWJsZTo6Q29uc3RJdGVyYXRvciBpdGVyID0gaGFzaFRhYmxlLT5iZWdp
bih2bSk7IGl0ZXIgIT0gaGFzaFRhYmxlLT5lbmQodm0pOyArK2l0ZXIpIHsKLSAgICAgICAgICAg
IGlmIChpdGVyLT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikKKyAgICAgICAgICAgIGlmIChpdGVy
LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikKICAgICAgICAgICAgICAgICBzZXRV
cFN0YXRpY0Z1bmN0aW9uU2xvdChnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCAqaXRlciwg
dGhpcywgSWRlbnRpZmllcigmdm0sIGl0ZXItPmtleSgpKSwgc2xvdCk7CiAgICAgICAgIH0KICAg
ICB9CkBAIC0yMjM2LDYgKzIyMzYsMTYgQEAgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb24KICAgICBw
dXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgZnVuY3Rpb24sIGF0dHJpYnV0ZXMpOwogfQogCit2
b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RCdWlsdGluRnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMp
Cit7CisgICAgU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7Cisg
ICAgaWYgKCFuYW1lKQorICAgICAgICBuYW1lID0gdm0ucHJvcGVydHlOYW1lcy0+YW5vbnltb3Vz
LmltcGwoKTsKKyAgICBBU1NFUlQobmFtZSk7CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBK
U0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHN0YXRpY19jYXN0PEZ1bmN0aW9u
RXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIGdsb2JhbE9iamVjdCk7CisgICAgcHV0
RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsKK30KKwogdm9p
ZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJv
cGVydHlOYW1lLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24gbmF0aXZl
RnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAg
ICAgU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCAwMmIxMzdiMzUwYzJmYTgzMjVi
ZDNiOTY0NzExMmFiZTg3NmYzODNmLi5kZGU1OTdlZmZhZWMwZjFiOGQ0NGMyOTExOTUwMzAxZjA2
MDA3ZTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTI5
LDcgKzI5LDYgQEAKICNpbmNsdWRlICJCdXR0ZXJmbHkuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUu
aCIKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKLSNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5o
IgogI2luY2x1ZGUgIkNvcHlXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlICJEZWZlckdDLmgiCiAj
aW5jbHVkZSAiSGVhcC5oIgpAQCAtNTgxLDYgKzU4MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHB1
dERpcmVjdFVuZGVmaW5lZChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpIHsgbG9jYXRpb25Gb3JPZmZz
ZXQob2Zmc2V0KS0+c2V0VW5kZWZpbmVkKCk7IH0KIAogICAgIHZvaWQgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2ln
bmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKTsKKyAgICB2b2lkIHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbihWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgdW5z
aWduZWQgYXR0cmlidXRlcyk7CiAgICAgdm9pZCBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCB1
bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgdW5zaWdu
ZWQgYXR0cmlidXRlcyk7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZp
bmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3Qg
UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
NDAyNjE5NjMzZmEwNmZkMjU0YjNmMmE3YThjYzcxZTgwN2FhZjkxMS4uMTdkMmFiNjVhODhmZmIx
M2ZhOWE2YzhmNTgzY2E4NDRhZjgzMjI0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcApAQCAtMzUsNiArMzUsNyBA
QAogI2luY2x1ZGUgIkpTUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlRnVu
Y3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSlNT
dHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVkZSAiTnVtYmVyT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAppbmRl
eCA2OGE4YmQ4N2QzOGFkYmJiOWRkMmFjOWVjNGI0OWQ1ZWY0NTQ5ZDU2Li4yMzdjNDJiYjBkYTBm
MTY2NzZlYjExYWRlODE4MGE3YjA2ZDk4ZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcApAQCAtMjksNyAr
MjksOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRl
cmF0b3IuaCIKIAorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNH
bG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAppbmRleCBmNDM2MmZm
MzU0ZWU2YTUwMjIxYmI3MzFkMWEyNjExZTZkZDYxYmMwLi5kMDczNzE5ZGUxNjBkMmYyOTIxMTBh
NTk2YTEwNWUyZmEyMTE1ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCkBAIC0zMSw3ICszMSw2IEBACiAKICNp
bmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCi0jaW5jbHVkZSAiT3Bl
cmF0aW9ucy5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSA8bWVt
b3J5PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Zy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCAyYjFj
ZGRkYzU4NDFkNjBkMTU3YTJlNjFmNzAyYjBlZTVmYTFkNjc2Li5lMzkzNDE2MGFlYTkyNmVmMTU5
MzJmODc5MGUyNGM1MmFmMDJkMzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nLmgKQEAgLTI0LDcgKzI0LDYgQEAKICNkZWZpbmUgSlNTdHJpbmdfaAogCiAjaW5jbHVk
ZSAiQ2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRl
ICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlEZXNjcmlwdG9yLmgiCiAjaW5jbHVk
ZSAiUHJvcGVydHlTbG90LmgiCkBAIC00NzIsMzMgKzQ3MSw2IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIGlubGluZSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoJmV4ZWMtPnZtKCks
IHMpOyB9CiAgICAgaW5saW5lIEpTU3RyaW5nKiBqc093bmVkU3RyaW5nKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBqc093bmVkU3RyaW5nKCZleGVjLT52bSgpLCBz
KTsgfQogCi0gICAgQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0
eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCi0gICAgewotICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKLSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywg
RG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGpzTnVtYmVyKG1fbGVuZ3RoKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHVuc2lnbmVkIGkg
PSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOwotICAgICAgICBpZiAoaSA8IG1fbGVuZ3RoKSB7Ci0g
ICAgICAgICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOyAvLyBObyBu
ZWVkIGZvciBhbiBleHBsaWNpdCBjaGVjaywgdGhlIGFib3ZlIHRlc3Qgd291bGQgYWx3YXlzIGZh
aWwhCi0gICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnREZWxldGUgfCBSZWFkT25s
eSwgZ2V0SW5kZXgoZXhlYywgaSkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgICAgICAgICAgCi0gICAgQUxX
QVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKLSAgICB7
Ci0gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPCBtX2xlbmd0aCkgewotICAgICAgICAgICAgc2xv
dC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIHBy
b3BlcnR5TmFtZSkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCiAgICAgaW5saW5lIGJvb2wgaXNKU1N0cmluZyhK
U1ZhbHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxsKCkgJiYgdi5hc0NlbGwoKS0+Y2xhc3NJbmZvKCkg
PT0gSlNTdHJpbmc6OmluZm8oKTsgfQogCiAgICAgLy8gLS0tIEpTVmFsdWUgaW5saW5lcyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC01MjgsMzIgKzUwMCw2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICByZXR1cm4gdG9XVEZTdHJpbmdTbG93Q2FzZShleGVjKTsKICAgICB9CiAK
LSAgICBBTFdBWVNfSU5MSU5FIFN0cmluZyBpbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmco
Y29uc3QgSlNWYWx1ZSYgdmFsdWUsIEV4ZWNTdGF0ZSogZXhlYykKLSAgICB7Ci0gICAgICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpCi0gICAgICAg
ICAgICByZXR1cm4gdm0ubnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVlLmFzSW50MzIoKSk7Ci0gICAg
ICAgIGlmICh2YWx1ZS5pc0RvdWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuIHZtLm51bWVyaWNT
dHJpbmdzLmFkZCh2YWx1ZS5hc0RvdWJsZSgpKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzVHJ1ZSgp
KQotICAgICAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPnRydWVLZXl3b3JkLnN0cmlu
ZygpOwotICAgICAgICBpZiAodmFsdWUuaXNGYWxzZSgpKQotICAgICAgICAgICAgcmV0dXJuIHZt
LnByb3BlcnR5TmFtZXMtPmZhbHNlS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHZhbHVl
LmlzTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPm51bGxLZXl3
b3JkLnN0cmluZygpOwotICAgICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAg
ICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLnN0cmluZygpOwot
ICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwotICAgIH0K
LQotICAgIEFMV0FZU19JTkxJTkUgU3RyaW5nIEpTVmFsdWU6OnRvV1RGU3RyaW5nSW5saW5lKEV4
ZWNTdGF0ZSogZXhlYykgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChpc1N0cmluZygpKQotICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTU3RyaW5nKj4oYXNDZWxsKCkpLT52YWx1ZShl
eGVjKTsKLQotICAgICAgICByZXR1cm4gaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKCp0
aGlzLCBleGVjKTsKLSAgICB9Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gSlNT
dHJpbmdfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0lubGlu
ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zNzhjMDVmYzgwZDg4ZTg1MzdjOWQyYTVlYWI5ZmYwYmE5YjYwYTc1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmdJbmxpbmVzLmgKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNTdHJpbmdJbmxpbmVzX2gKKyNkZWZp
bmUgSlNTdHJpbmdJbmxpbmVzX2gKKworI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCisj
aW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQ
cm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGpzTnVtYmVyKG1fbGVuZ3RoKSk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1l
LmFzSW5kZXgoKTsKKyAgICBpZiAoaSA8IG1fbGVuZ3RoKSB7CisgICAgICAgIEFTU0VSVChpICE9
IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCk7IC8vIE5vIG5lZWQgZm9yIGFuIGV4cGxpY2l0IGNo
ZWNrLCB0aGUgYWJvdmUgdGVzdCB3b3VsZCBhbHdheXMgZmFpbCEKKyAgICAgICAgc2xvdC5zZXRW
YWx1ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIGkpKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKwor
QUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0
YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sK
KyAgICBpZiAocHJvcGVydHlOYW1lIDwgbV9sZW5ndGgpIHsKKyAgICAgICAgc2xvdC5zZXRWYWx1
ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIHByb3BlcnR5TmFt
ZSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGZhbHNl
OworfQorCitBTFdBWVNfSU5MSU5FIFN0cmluZyBpbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJp
bmcoY29uc3QgSlNWYWx1ZSYgdmFsdWUsIEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpCisgICAgICAgIHJldHVybiB2
bS5udW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNJbnQzMigpKTsKKyAgICBpZiAodmFsdWUuaXNE
b3VibGUoKSkKKyAgICAgICAgcmV0dXJuIHZtLm51bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZS5hc0Rv
dWJsZSgpKTsKKyAgICBpZiAodmFsdWUuaXNUcnVlKCkpCisgICAgICAgIHJldHVybiB2bS5wcm9w
ZXJ0eU5hbWVzLT50cnVlS2V5d29yZC5zdHJpbmcoKTsKKyAgICBpZiAodmFsdWUuaXNGYWxzZSgp
KQorICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+ZmFsc2VLZXl3b3JkLnN0cmluZygp
OworICAgIGlmICh2YWx1ZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFt
ZXMtPm51bGxLZXl3b3JkLnN0cmluZygpOworICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZCgpKQor
ICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZC5zdHJpbmco
KTsKKyAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworfQorICAg
IAorQUxXQVlTX0lOTElORSBTdHJpbmcgSlNWYWx1ZTo6dG9XVEZTdHJpbmdJbmxpbmUoRXhlY1N0
YXRlKiBleGVjKSBjb25zdAoreworICAgIGlmIChpc1N0cmluZygpKQorICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8SlNTdHJpbmcqPihhc0NlbGwoKSktPnZhbHVlKGV4ZWMpOworICAgIAorICAg
IHJldHVybiBpbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcoKnRoaXMsIGV4ZWMpOworfQor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N5bWJvbFRhYmxlT2JqZWN0LmNwcAppbmRleCAyYWMyNTI0YzVkZmRhM2QxMjI0OWQ3NzkwYWRj
MzEyOWUzYzBlODcxLi5mYmM4Yjg5NWVhZTZhZjc4ODgzOWJlYjVlODNkN2I2Yjk3OTI4ZmFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxl
T2JqZWN0LmNwcApAQCAtNjQsNiArNjQsOCBAQCB2b2lkIEpTU3ltYm9sVGFibGVPYmplY3Q6Omdl
dE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdAogICAg
ICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcih0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgp
LT5tX2xvY2spOwogICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBlbmQgPSB0aGlz
T2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5lbmQobG9ja2VyKTsKICAgICAgICAgZm9yIChTeW1ib2xU
YWJsZTo6TWFwOjppdGVyYXRvciBpdCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmJlZ2lu
KGxvY2tlcik7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgaWYgKGl0LT5rZXktPmlz
RW1wdHlVbmlxdWUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlm
ICghKGl0LT52YWx1ZS5nZXRBdHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwgKG1vZGUgPT0gSW5j
bHVkZURvbnRFbnVtUHJvcGVydGllcykpCiAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5h
ZGQoSWRlbnRpZmllcihleGVjLCBpdC0+a2V5LmdldCgpKSk7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAppbmRl
eCBiNWIyMGE4NDViNmFiNjQ0MjRiMzdlMzFiMjc3NGVmOTA1MzUzZjdmLi5kMDNiMjQ1MTFjMmRl
MTk1OWZiNWY1NmQ2NDljNjRkMGVmZTA2ODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCkBAIC03Miw3ICs3Miw3IEBAIGlu
bGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogewogICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJs
ZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBp
dGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkp
OworICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5k
KGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJs
ZS5lbmQobG9ja2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFN5bWJvbFRhYmxlRW50
cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1ZTsKQEAgLTg3LDcgKzg3LDcgQEAgaW5saW5lIGJv
b2wgc3ltYm9sVGFibGVHZXQoCiB7CiAgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gKm9i
amVjdC0+c3ltYm9sVGFibGUoKTsKICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1i
b2xUYWJsZS5tX2xvY2spOwotICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBz
eW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAg
U3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2Vy
LCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZChs
b2NrZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgU3ltYm9sVGFibGVFbnRyeTo6RmFz
dCBlbnRyeSA9IGl0ZXItPnZhbHVlOwpAQCAtMTA0LDcgKzEwNCw3IEBAIGlubGluZSBib29sIHN5
bWJvbFRhYmxlR2V0KAogewogICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3Qt
PnN5bWJvbFRhYmxlKCk7CiAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFi
bGUubV9sb2NrKTsKLSAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9s
VGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJv
bFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJv
cGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2Vy
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50
cnkgPSBpdGVyLT52YWx1ZTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xU
YWJsZVB1dCgKICAgICB7CiAgICAgICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmpl
Y3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKSVRMb2NrZXIgbG9j
a2VyKHN5bWJvbFRhYmxlLm1fbG9jaywgZXhlYy0+dm0oKS5oZWFwKTsKLSAgICAgICAgU3ltYm9s
VGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9w
ZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0
b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwog
ICAgICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgYm9vbCB3YXNGYXQ7CkBAIC0xNTksNyArMTU5LDcgQEAg
aW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcygKICAgICB7CiAgICAgICAg
IFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAg
ICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAg
ICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxv
Y2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgICAgIFN5bWJvbFRhYmxlOjpN
YXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1l
LnVpZCgpKTsKICAgICAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5
ID0gaXRlci0+dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Mb29rdXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcApp
bmRleCBhODA2ZGQwNTJhMGNiZWU0Y2FjMmNhYTZlMDhjNjcxNjAwNWMyNzBjLi5hOTc2NTIwMWI5
ZjUxODY0MTQyM2RkZTBmZTBlMmU1MWE4Y2U3M2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0xvb2t1cC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBIYXNoVGFibGU6OmRlbGV0
ZVRhYmxlKCkgY29uc3QKIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCogdGhpc09iaiwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEFTU0VSVCh0aGlz
T2JqLT5nbG9iYWxPYmplY3QoKSk7Ci0gICAgQVNTRVJUKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBG
dW5jdGlvbik7CisgICAgQVNTRVJUKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5j
dGlvbik7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVz
OwogICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHRoaXNPYmotPmdldERpcmVjdE9mZnNldCh2
bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKQEAgLTc5LDkgKzc5LDEzIEBAIGJvb2wgc2V0
VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoRW50cnkqIGVu
dHJ5LCBKU09iamVjdCoKICAgICAgICAgaWYgKHRoaXNPYmotPnN0YXRpY0Z1bmN0aW9uc1JlaWZp
ZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICAgICAgdGhpc09iai0+
cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oCi0gICAgICAgICAgICB2bSwgdGhpc09iai0+Z2xvYmFs
T2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZW50cnktPmZ1bmN0aW9uTGVuZ3RoKCksCi0gICAgICAg
ICAgICBlbnRyeS0+ZnVuY3Rpb24oKSwgZW50cnktPmludHJpbnNpYygpLCBlbnRyeS0+YXR0cmli
dXRlcygpKTsKKyAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluKQorICAg
ICAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKHZtLCB0aGlzT2JqLT5n
bG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBlbnRyeS0+YnVpbHRpbkdlbmVyYXRvcigpKHZt
KSwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhp
c09iai0+cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oCisgICAgICAgICAgICAgICAgdm0sIHRoaXNP
YmotPmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5mdW5jdGlvbkxlbmd0aCgp
LAorICAgICAgICAgICAgICAgIGVudHJ5LT5mdW5jdGlvbigpLCBlbnRyeS0+aW50cmluc2ljKCks
IGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAgICAgICB9CiAgICAgICAgIG9mZnNldCA9IHRoaXNP
YmotPmdldERpcmVjdE9mZnNldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKICAgICAg
ICAgQVNTRVJUKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Mb29rdXAuaAppbmRleCBiZGU4M2Q0YTZmYzM1NTc3ODUwZTMxZTg4YmMzOWZk
MDVmN2JjZTUyLi5kYmEzODllOWUyNDNkZDBlY2IyYmE5OGYzOTRkNDA3OWY5ZGVhOTM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaApAQCAtNDMsNiArNDMsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAvLyBpZS4gdHlwZWRlZiBKU1ZhbHVlICgqR2V0RnVuY3Rpb24pKEV4
ZWNTdGF0ZSosIEpTT2JqZWN0KiBiYXNlT2JqZWN0KQogICAgIHR5cGVkZWYgUHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmMgR2V0RnVuY3Rpb247CiAgICAgdHlwZWRlZiBQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYyBQdXRGdW5jdGlvbjsKKyAgICB0eXBlZGVmIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogKCpCdWlsdGluR2VuZXJhdG9yKShWTSYpOwogCiAgICAgY2xhc3MgSGFzaEVudHJ5IHsKICAg
ICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC02OCwxMSArNjksMTIgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbV9pbnRyaW5zaWM7CiAgICAgICAgIH0KIAor
ICAgICAgICBCdWlsdGluR2VuZXJhdG9yIGJ1aWx0aW5HZW5lcmF0b3IoKSBjb25zdCB7IEFTU0VS
VChtX2F0dHJpYnV0ZXMgJiBCdWlsdGluKTsgcmV0dXJuIG1fdS5idWlsdGluR2VuZXJhdG9yLmdl
bmVyYXRvclZhbHVlOyB9CiAgICAgICAgIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uKCkgY29uc3Qg
eyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pOyByZXR1cm4gbV91LmZ1bmN0aW9uLmZ1
bmN0aW9uVmFsdWU7IH0KICAgICAgICAgdW5zaWduZWQgY2hhciBmdW5jdGlvbkxlbmd0aCgpIGNv
bnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKTsgcmV0dXJuIHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXI+KG1fdS5mdW5jdGlvbi5sZW5ndGgpOyB9CiAKLSAgICAgICAgR2V0RnVu
Y3Rpb24gcHJvcGVydHlHZXR0ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEZ1
bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVydHkuZ2V0OyB9Ci0gICAgICAgIFB1dEZ1bmN0aW9u
IHByb3BlcnR5UHV0dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBGdW5jdGlv
bikpOyByZXR1cm4gbV91LnByb3BlcnR5LnB1dDsgfQorICAgICAgICBHZXRGdW5jdGlvbiBwcm9w
ZXJ0eUdldHRlcigpIGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1dGVzICYgQnVpbHRpbk9yRnVu
Y3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0eS5nZXQ7IH0KKyAgICAgICAgUHV0RnVuY3Rpb24g
cHJvcGVydHlQdXR0ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEJ1aWx0aW5P
ckZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVydHkucHV0OyB9CiAKICAgICAgICAgaW50cHRy
X3QgbGV4ZXJWYWx1ZSgpIGNvbnN0IHsgQVNTRVJUKCFtX2F0dHJpYnV0ZXMpOyByZXR1cm4gbV91
LmxleGVyLnZhbHVlOyB9CiAKQEAgLTk0LDYgKzk2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgICAgIGludHB0cl90IGxlbmd0aDsgLy8gbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3Ig
ZnVuY3Rpb24KICAgICAgICAgICAgIH0gZnVuY3Rpb247CiAgICAgICAgICAgICBzdHJ1Y3Qgewor
ICAgICAgICAgICAgICAgIEJ1aWx0aW5HZW5lcmF0b3IgZ2VuZXJhdG9yVmFsdWU7CisgICAgICAg
ICAgICAgICAgaW50cHRyX3QgdW51c2VkOworICAgICAgICAgICAgfSBidWlsdGluR2VuZXJhdG9y
OworICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICBHZXRGdW5jdGlvbiBnZXQ7
CiAgICAgICAgICAgICAgICAgUHV0RnVuY3Rpb24gcHV0OwogICAgICAgICAgICAgfSBwcm9wZXJ0
eTsKQEAgLTIwOSw3ICsyMTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAg
ICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IEhhc2hFbnRyeSogZW50cnkoUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgU3RyaW5nSW1wbCogaW1w
bCA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CisgICAgICAgICAgICBTdHJpbmdJbXBsKiBp
bXBsID0gcHJvcGVydHlOYW1lLnVpZCgpOwogICAgICAgICAgICAgaWYgKCFpbXBsKQogICAgICAg
ICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAKQEAgLTI0OSw3ICsyNTUsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgaWYgKCFlbnRyeSkgLy8gbm90IGZvdW5kLCBmb3J3YXJkIHRvIHBh
cmVudAogICAgICAgICAgICAgcmV0dXJuIFBhcmVudEltcDo6Z2V0T3duUHJvcGVydHlTbG90KHRo
aXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKLSAgICAgICAgaWYgKGVudHJ5LT5h
dHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikKKyAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkg
JiBCdWlsdGluT3JGdW5jdGlvbikKICAgICAgICAgICAgIHJldHVybiBzZXRVcFN0YXRpY0Z1bmN0
aW9uU2xvdChleGVjLCBlbnRyeSwgdGhpc09iaiwgcHJvcGVydHlOYW1lLCBzbG90KTsKIAogICAg
ICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqLCBlbnRyeS0+YXR0cmlidXRlcygp
LCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSk7CkBAIC0yODYsNyArMjkyLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGlmICghZW50cnkpIC8vIG5vdCBmb3VuZCwgZm9yd2FyZCB0byBwYXJl
bnQKICAgICAgICAgICAgIHJldHVybiBQYXJlbnRJbXA6OmdldE93blByb3BlcnR5U2xvdCh0aGlz
T2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCi0gICAgICAgIEFTU0VSVCghKGVudHJ5
LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikpOworICAgICAgICBBU1NFUlQoIShlbnRyeS0+YXR0
cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pKTsKIAogICAgICAgICBzbG90LnNldENhY2hl
YWJsZUN1c3RvbSh0aGlzT2JqLCBlbnRyeS0+YXR0cmlidXRlcygpLCBlbnRyeS0+cHJvcGVydHlH
ZXR0ZXIoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjk1LDcgKzMwMSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIGlubGluZSB2b2lkIHB1dEVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIGJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKICAgICB7CiAgICAg
ICAgIC8vIElmIHRoaXMgaXMgYSBmdW5jdGlvbiBwdXQgaXQgYXMgYW4gb3ZlcnJpZGUgcHJvcGVy
dHkuCi0gICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pIHsKKyAgICAg
ICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikgewogICAgICAg
ICAgICAgaWYgKEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+
KHNsb3QudGhpc1ZhbHVlKCkpKQogICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVj
dChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKICAgICAgICAgfSBlbHNlIGlmICgh
KGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBSZWFkT25seSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
ZDVlNzI4YzJjZDEwMjBhNDdlNGFkY2Q2NDljZDFmZmZhNWNkNmE4My4uZGNhMmZkOGQxZjZhYzIz
YjhmZjgxN2NiYjE4ZmFhZTdiY2Q1OTcwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTM4LDYgKzM4
LDIwIEBAIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3IoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAordm9pZCBOYXRpdmVFcnJvckNvbnN0
cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7
CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIG5hbWUpOworICAgIEFTU0VSVChpbmhlcml0
cyhpbmZvKCkpKTsKKyAgICAKKyAgICBOYXRpdmVFcnJvclByb3RvdHlwZSogcHJvdG90eXBlID0g
TmF0aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVT
dHJ1Y3R1cmUsIG5hbWUsIHRoaXMpOworICAgIAorICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9u
dEVudW0pOyAvLyBFQ01BIDE1LjExLjcuNQorICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRF
bnVtKTsKKyAgICBtX2Vycm9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgRXJyb3JJbnN0YW5jZTo6
Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSkpOworICAgIEFTU0VS
VChtX2Vycm9yU3RydWN0dXJlKTsKKyAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZS0+aXNPYmpl
Y3QoKSk7Cit9CisKIHZvaWQgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIE5hdGl2ZUVycm9yQ29u
c3RydWN0b3IqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcio+KGNl
bGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvci5oCmluZGV4IDc0MGQzZjkzMzI5MmZkMmFjY2I0Yjk5MDM0NDMxMmI5MzE5
YWUxMTAuLjQzOGEzYWZiOWJiMGY2NDEyYzk3OTMyMjMwYzg4NzEwOTYxZjU0NjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVj
dG9yLmgKQEAgLTUxLDE5ICs1MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdHJ1Y3R1
cmUqIGVycm9yU3RydWN0dXJlKCkgeyByZXR1cm4gbV9lcnJvclN0cnVjdHVyZS5nZXQoKTsgfQog
CiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUs
IGNvbnN0IFN0cmluZyYgbmFtZSkKLSAgICAgICAgewotICAgICAgICAgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0sIG5hbWUpOwotICAgICAgICAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkp
OwotCi0gICAgICAgICAgICBOYXRpdmVFcnJvclByb3RvdHlwZSogcHJvdG90eXBlID0gTmF0aXZl
RXJyb3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVTdHJ1Y3R1
cmUsIG5hbWUsIHRoaXMpOwotCi0gICAgICAgICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRF
bnVtKTsgLy8gRUNNQSAxNS4xMS43LjUKLSAgICAgICAgICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBSZWFkT25seSB8
IERvbnRFbnVtKTsKLSAgICAgICAgICAgIG1fZXJyb3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBF
cnJvckluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
KSk7Ci0gICAgICAgICAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZSk7Ci0gICAgICAgICAgICBB
U1NFUlQobV9lcnJvclN0cnVjdHVyZS0+aXNPYmplY3QoKSk7Ci0gICAgICAgIH0KKyAgICAgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBwcm90
b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCmluZGV4IGQ5MzhmYTMxNjQ1YWYy
NmI3NTg1MTRkYjZiMjQ3OGYxODNlOWVlZTEuLmNmZTljNGQzMmJhNzY4Yzc0ZTRmZmJiMTkxMzUy
NzlkZWJmMTE3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5U2xvdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
U2xvdC5oCkBAIC00Miw2ICs0Miw4IEBAIGVudW0gQXR0cmlidXRlIHsKICAgICBGdW5jdGlvbiAg
ICAgPSAxIDw8IDQsICAvLyBwcm9wZXJ0eSBpcyBhIGZ1bmN0aW9uIC0gb25seSB1c2VkIGJ5IHN0
YXRpYyBoYXNodGFibGVzCiAgICAgQWNjZXNzb3IgICAgID0gMSA8PCA1LCAgLy8gcHJvcGVydHkg
aXMgYSBnZXR0ZXIvc2V0dGVyCiAgICAgQ3VzdG9tQWNjZXNzb3IgPSAxIDw8IDYsCisgICAgQnVp
bHRpbiAgICAgICAgID0gMSA8PCA3LCAvLyBwcm9wZXJ0eSBpcyBhIGJ1aWx0aW4gZnVuY3Rpb24g
LSBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKKyAgICBCdWlsdGluT3JGdW5jdGlvbiA9
IEJ1aWx0aW4gfCBGdW5jdGlvbiwgLy8gaGVscGVyIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRh
YmxlcwogfTsKIAogY2xhc3MgUHJvcGVydHlTbG90IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAppbmRleCBiYzUxNmIwNmQ2NjUx
ZjBlNjgyYTIwMTdiZGY4YjAzYmFiZWQ2ZWEyLi4yYzI0MzRiODdkMDRmNzQ5Y2IxMmU2MDJhYjU0
Nzg0OTQ2YTkxZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwQ29uc3RydWN0b3IuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiUmVnRXhw
Q29uc3RydWN0b3IuaCIKIAogI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlJlZ0V4cE1hdGNo
ZXNBcnJheS5oIgogI2luY2x1ZGUgIlJlZ0V4cFByb3RvdHlwZS5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKaW5kZXggODlkN2FjMWI4
Y2JmMWRiMGUxMjZmMWZjNzk2ZGZkNWZjODRiMmU1OS4uOWRkYTBiYThkZTE0MTJlYWY0ZDI5MWRj
ZjBjNmIzOTY1N2ZiNjc3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBQcm90b3R5cGUuY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAiQXJyYXlQ
cm90b3R5cGUuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKLSNp
bmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNp
bmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJK
U1N0cmluZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3Ry
dWN0b3IuY3BwCmluZGV4IGIyMDM4ODhkM2MxNmNkYTNjMDAzNTA2MjA4YWUwODY5NWRjNWRhYWEu
LmQwMjY2YTU5ZWYzZjU1YWEzNjk0ZjVmNzQxOGNmNzhlMGFlMGQ4YjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAKQEAgLTMxLDYgKzMx
LDcgQEAKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3QuaCIKICNpbmNsdWRlICJKU1NldC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgog
I2luY2x1ZGUgIk1hcERhdGEuaCIKICNpbmNsdWRlICJTZXRQcm90b3R5cGUuaCIKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKaW5kZXggNDQwYTYw
OTQyMTkzMzgwMzFlNTkyN2FmNDZiMjg5ZGJjZmI1YTcyOC4uODBlN2VhYThjNDkxY2I2ZDU0YTgz
MjRjZTY0N2E2Y2RiN2U4ODc4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdPYmplY3QuY3BwCkBAIC0yMiw3ICsyMiw5IEBACiAjaW5jbHVkZSAiU3RyaW5nT2Jq
ZWN0LmgiCiAKICNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGlu
ZXMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJy
YXkuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5k
ZXggMDQyOTFmN2U4ZGQyNGU4YWIzM2Q3NWFmMWRhNDU2OGYyYmM5OWU2OC4uMWVjYWI4NWMwYmRi
Mjg2OTg5NDU3N2E3NDEyNTRlMzY0NDE0OWQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0yNywxMiArMjcsMTggQEAKICNpbmNsdWRlICJTdHJ1
Y3R1cmUuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50
aWZpZXJzLmgiCiAjaW5jbHVkZSAiRHVtcENvbnRleHQuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTG9va3Vw
LmgiCisjaW5jbHVkZSAiUHJvcGVydHlNYXBIYXNoVGFibGUuaCIKICNpbmNsdWRlICJQcm9wZXJ0
eU5hbWVBcnJheS5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUg
IlN0cnVjdHVyZUNoYWluLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50
ZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNTJjY2Y0MjNhMTA0M2UxMDc5ZjJkOGIxODk0MjE5
ODkwZTcxZjJiYy4uMDIwNjk1ZmFjODNlZDRlNTE4NWI3MGU2OTY5OTYzYTJkZTlhMzY3MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1
ZGUgIkFyZ0xpc3QuaCIKICNpbmNsdWRlICJBcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5oIgog
I2luY2x1ZGUgIkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5oIgorI2luY2x1ZGUgIkJ1
aWx0aW5FeGVjdXRhYmxlcy5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZUlubGluZXMuaCIKICNpbmNs
dWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2RlQ2FjaGUuaCIKQEAgLTU1LDcgKzU2LDkg
QEAKICNpbmNsdWRlICJKU0FQSVZhbHVlV3JhcHBlci5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlv
bi5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKLSNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5j
bHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisj
aW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1
bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgi
CkBAIC02OCwxMyArNzEsMTYgQEAKICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJNYXBE
YXRhLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKKyNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRl
ICJQYXJzZXJBcmVuYS5oIgorI2luY2x1ZGUgIlByb3BlcnR5TWFwSGFzaFRhYmxlLmgiCiAjaW5j
bHVkZSAiUmVnRXhwQ2FjaGUuaCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRl
ICJTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNvdXJjZVByb3ZpZGVy
Q2FjaGUuaCIKICNpbmNsdWRlICJTdHJpY3RFdmFsQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIlN0
cm9uZ0lubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
VW5saW5rZWRDb2RlQmxvY2suaCIKICNpbmNsdWRlICJXZWFrTWFwRGF0YS5oIgogI2luY2x1ZGUg
PHd0Zi9Qcm9jZXNzSUQuaD4KQEAgLTIyNiw2ICsyMzIsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlw
ZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2luRGVmaW5lT3duUHJvcGVydHkoZmFsc2Up
CiAgICAgLCBtX2NvZGVDYWNoZShDb2RlQ2FjaGU6OmNyZWF0ZSgpKQogICAgICwgbV9lbmFibGVk
UHJvZmlsZXIobnVsbHB0cikKKyAgICAsIG1fYnVpbHRpbkV4ZWN1dGFibGVzKEJ1aWx0aW5FeGVj
dXRhYmxlczo6Y3JlYXRlKCp0aGlzKSkKIHsKICAgICBpbnRlcnByZXRlciA9IG5ldyBJbnRlcnBy
ZXRlcigqdGhpcyk7CiAgICAgU3RhY2tCb3VuZHMgc3RhY2sgPSB3dGZUaHJlYWREYXRhKCkuc3Rh
Y2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDVhODQxMDVlYWZiN2FiYmE1
ZmE0MzFlZWVkZDU1ZDdhODlmNTVjZTIuLjY5NThhYzM5M2IxYWVmYzBiZWZiZjZlNGViOGI2ODI1
Y2Y3YzlhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNDQsNiArNDQsNyBA
QAogI2luY2x1ZGUgIlByaXZhdGVOYW1lLmgiCiAjaW5jbHVkZSAiUHJvdG90eXBlTWFwLmgiCiAj
aW5jbHVkZSAiU21hbGxTdHJpbmdzLmgiCisjaW5jbHVkZSAiU291cmNlQ29kZS5oIgogI2luY2x1
ZGUgIlN0cm9uZy5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgogI2luY2x1ZGUgIlR5
cGVkQXJyYXlDb250cm9sbGVyLmgiCkBAIC02OSw2ICs3MCw3IEBACiBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzOworICAgIGNsYXNzIEJ1aWx0
aW5FeGVjdXRhYmxlczsKICAgICBjbGFzcyBDb2RlQmxvY2s7CiAgICAgY2xhc3MgQ29kZUNhY2hl
OwogICAgIGNsYXNzIENvbW1vbklkZW50aWZpZXJzOwpAQCAtNDk3LDYgKzQ5OSw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2b2lkIHJlZ2lzdGVyV2F0Y2hwb2ludEZvckltcHVyZVByb3Bl
cnR5KGNvbnN0IElkZW50aWZpZXImLCBXYXRjaHBvaW50Kik7CiAgICAgICAgIC8vIEZJWE1FOiBV
c2UgQXRvbWljU3RyaW5nIG9uY2UgaXQgZ290IG1lcmdlZCB3aXRoIElkZW50aWZpZXIuCiAgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkSW1wdXJlUHJvcGVydHkoY29uc3QgU3RyaW5n
Jik7CisgICAgICAgIAorICAgICAgICBCdWlsdGluRXhlY3V0YWJsZXMqIGJ1aWx0aW5FeGVjdXRh
YmxlcygpIHsgcmV0dXJuIG1fYnVpbHRpbkV4ZWN1dGFibGVzLmdldCgpOyB9CiAKICAgICBwcml2
YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpAQCAtNTM3
LDEwICs1NDEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNWYWx1ZSBtX2V4Y2VwdGlv
bjsKICAgICAgICAgYm9vbCBtX2luRGVmaW5lT3duUHJvcGVydHk7CiAgICAgICAgIE93blB0cjxD
b2RlQ2FjaGU+IG1fY29kZUNhY2hlOwotICAgICAgICBSZWZDb3VudGVkQXJyYXk8U3RhY2tGcmFt
ZT4gbV9leGNlcHRpb25TdGFjazsKLQogICAgICAgICBMZWdhY3lQcm9maWxlciogbV9lbmFibGVk
UHJvZmlsZXI7Ci0KKyAgICAgICAgT3duUHRyPEJ1aWx0aW5FeGVjdXRhYmxlcz4gbV9idWlsdGlu
RXhlY3V0YWJsZXM7CisgICAgICAgIFJlZkNvdW50ZWRBcnJheTxTdGFja0ZyYW1lPiBtX2V4Y2Vw
dGlvblN0YWNrOwogICAgICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdhdGNocG9pbnRTZXQ+
PiBtX2ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludFNldHM7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU1N0cmluZ0lubGluZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNTdHJpbmdJbmxp
bmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzBmY2MzODRlOGVkZmMzNGIxNDA4M2I4NjVkMzczODIwZjQxNjVj
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1
bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVf
RldEX0pTU3RyaW5nSW5saW5lc19oCisjZGVmaW5lIFdlYkNvcmVfRldEX0pTU3RyaW5nSW5saW5l
c19oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdJbmxpbmVzLmg+CisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tU
aW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwCmluZGV4IDJlZGRjZGJiOWYwMDZjYTc2MjY2NTBiNDIw
Mjc4NjI2YjkyNjE0MTcuLjNjNGUwZDdiYmIzMWNhYjEyYjVlNmM5NzVjNzRkM2Y0ODRlOWNiMTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1
aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jh
c2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nSW5saW5lcy5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFu
eUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFueUN1c3RvbS5j
cHAKaW5kZXggNTY0OWM4NWNhMDk1ODc3NDhhM2RhMDZjZGRkMGNhOTk5ZTUwYjhlNy4uM2Y0ZDhl
ZmFlYjU3ZjMzMDAzZTczYTdlNzg0MmU0MmM3M2NlNjQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1
ZGUgIkpTSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJKU0lEQlRyYW5zYWN0aW9uLmgiCiAj
aW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8cnVudGltZS9KU1N0
cmluZ0lubGluZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAppbmRleCA5ZWFlNzU2
OWM3MDYwM2E0ZmVkMGFmMTRjNGY4NzE4Y2RlNjRhNmUxLi5mNDlkZmU5MGI0ZTgyZDM5ZWRjYmY5
YmEyOWYyYWU3OTljMGRkZjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIklE
Qk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSlNJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUg
PHJ1bnRpbWUvRXJyb3IuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nLmg+CisjaW5jbHVk
ZSA8cnVudGltZS9KU1N0cmluZ0lubGluZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3Vz
dG9tLmNwcAppbmRleCA3NGZkMzU0YjI4NjA3Y2Y3ODIyZjgwNTM0Nzk3MGY1ZDdhYzhjODMyLi41
NDM0YjNiN2Q2YzU2ZWNiMGEwM2EyNzk0YzY3MzZhOWFkZmI3MGUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcApAQCAt
MzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSlNJ
REJJbmRleC5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KLSNpbmNsdWRlIDxydW50aW1l
L0pTU3RyaW5nLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZ0lubGluZXMuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDkxMjZjN2U4MmMwM2U0NTdhYzE3NjNiNWYwNjUz
ZTQ3Mzk5ZDRhNDYuLjIwMDI4MDk5ZjQyNTIwOGQ3Mzk0ZDk0ZGZmMjkxMTdjYzVjMjE3ZTEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMiBAQAorMjAxNC0wMS0yOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBw
bGUuY29tPgorCisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gaW1wbGVtZW50IEpTIGJ1aWx0
aW5zIGluIEpTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjc4ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVcGRhdGVkIHRoZSB0ZXN0IHJlc3VsdHMgZm9yIG5ldyBlcnJvciBtZXNzYWdlcyAobm93IHRo
YXQgdGhleSdyZQorICAgICAgICBhY3R1YWxseSBoZWxwZnVsKSwgYW5kIGFkZGVkIGEganMtcmVn
cmVzcyB0ZXN0IHRvIHRyYWNrIHBlcmZvcm1hbmNlLgorCisgICAgICAgICoganMvYXJyYXktZXZl
cnktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVy
dGllcy1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUt
ZXZlcnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL2FycmF5LXBy
b3RvdHlwZS1ldmVyeS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10
ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuanM6IEFkZGVkLgorICAgICAgICAodGVzdDEpOgor
ICAgICAgICAodGVzdDIpOgorICAgICAgICAodGVzdDMpOgorCiAyMDE0LTAxLTMwICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI3MzcxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJh
eS1ldmVyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJheS1ldmVyeS1leHBlY3Rl
ZC50eHQKaW5kZXggNTQxYjhjMzU4ZjA2OGEwY2VhODgyYzEwNTE3NTMyNTExNGNkMzNmNy4uY2Nh
MzYzZGNlNThmYmE5NWE1OGNlNDZmY2I0OGMzOGJmNThhZGY1OSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2Fy
cmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dApAQCAtMzAsMTIgKzMwLDEyIEBAIFBBU1MgWzEyLCA1LCA4
LCAxMzAsIDQ0XS5ldmVyeShpc0JpZ0Vub3VnaEFuZEV4Y2VwdGlvbikgdGhyZXcgZXhjZXB0aW9u
IGV4Y2VwdGlvCiBQQVNTIFsxMiwgNTQsIDE4LCAxMzAsIDQ0XS5ldmVyeShpc0JpZ0Vub3VnaEFu
ZEV4Y2VwdGlvbikgdGhyZXcgZXhjZXB0aW9uIGV4Y2VwdGlvbiBmcm9tIGZ1bmN0aW9uLgogCiA1
LjAgV3JvbmcgVHlwZSBmb3IgQ2FsbGJhY2sgVGVzdAotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRd
LmV2ZXJ5KDUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsx
MiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoJ3dyb25nJykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShuZXcgT2JqZWN0
KCkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwg
OCwgMTMwLCA0NF0uZXZlcnkobnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBl
cnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSh1bmRlZmluZWQpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0u
ZXZlcnkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBbMTIs
IDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KDUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5
LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwg
NSwgOCwgMTMwLCA0NF0uZXZlcnkoJ3dyb25nJykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
QXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1Mg
WzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShuZXcgT2JqZWN0KCkpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rp
b24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkobnVsbCkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5j
dGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSh1bmRlZmluZWQpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJl
IGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBh
IGZ1bmN0aW9uLgogCiA2LjAgRWFybHkgRXhpdCAoIlNob3J0IENpcmN1aXRpbmciKQogUEFTUyBb
MTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KGlzQmlnRW5vdWdoU2hvcnRDaXJjdWl0KSBpcyBmYWxz
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0
aWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJv
cGVydGllcy1leHBlY3RlZC50eHQKaW5kZXggMmMyYTY4Y2IxMDZkYTEwZjA4NmIyMmM1YmYyYmY1
YzhmZTc5ZTMzZS4uNWQ5ZWNiNzVhOGRhNzliYTY1NjA1ZTdlYjljZjhmYzI1ZmUxOGFmYiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3Bl
cnRpZXMtZXhwZWN0ZWQudHh0CkBAIC0xNSw3ICsxNSw3IEBAIFBBU1MgQXJyYXkucHJvdG90eXBl
LnNsaWNlLmNhbGwodW5kZWZpbmVkLCAwLCAxKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1
bmRlCiBQQVNTIEFycmF5LnByb3RvdHlwZS5zb3J0LmNhbGwodW5kZWZpbmVkKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAn
QXJyYXkucHJvdG90eXBlLnNvcnQuY2FsbCh1bmRlZmluZWQpJykuCiBQQVNTIEFycmF5LnByb3Rv
dHlwZS5zcGxpY2UuY2FsbCh1bmRlZmluZWQsIDAsIDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5
cGUuc3BsaWNlLmNhbGwodW5kZWZpbmVkLCAwLCAxKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUu
dW5zaGlmdC5jYWxsKHVuZGVmaW5lZCwge30pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVu
ZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUudW5z
aGlmdC5jYWxsKHVuZGVmaW5lZCwge30pJykuCi1QQVNTIEFycmF5LnByb3RvdHlwZS5ldmVyeS5j
YWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVm
aW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUuZXZlcnku
Y2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKScpLgorUEFTUyBBcnJheS5wcm90b3R5cGUuZXZlcnku
Y2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJh
eS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVmaW5lZC4K
IFBBU1MgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZh
bHVhdGluZyAnQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5n
KScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUuc29tZS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChl
dmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUuc29tZS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcp
JykuCiBQQVNTIEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwodW5kZWZpbmVkLCAwKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVh
dGluZyAnQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbCh1bmRlZmluZWQsIDApJykuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTI5MGMwZWVmZjhkZTQyMTgzM2Q5MmQyN2U5NTI0MTkx
NzYwNGI5NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXkt
cHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mv
YXJyYXktcHJvdG90eXBlLWV2ZXJ5CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fy
cmF5LXByb3RvdHlwZS1ldmVyeS5odG1sIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1w
cm90b3R5cGUtZXZlcnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTVjYzE3MWM0ODc1YTM1ODViZjE0ZTU0
MTVmNWNkMGU1ODFkNTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUg
SFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9zY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzIGIvTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI5NGFhMTYxYzBjZTk4YjJhYjE4YTNhMWExZjBkZmFhYzlkN2QyZTIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJheS1wcm90b3R5cGUt
ZXZlcnkuanMKQEAgLTAsMCArMSwyOSBAQAordmFyIHJlc3VsdCA9IDA7CitmdW5jdGlvbiB0ZXN0
MShhKSB7CisgICAgcmVzdWx0IDw8IDE7CisgICAgcmVzdWx0Kys7CisgICAgcmV0dXJuIHRydWU7
Cit9CitmdW5jdGlvbiB0ZXN0MihhLGIpIHsKKyAgICByZXN1bHQgXj0gMzsKKyAgICByZXN1bHQg
Kj0gMzsKKyAgICByZXR1cm4gdHJ1ZTsKK30KK2Z1bmN0aW9uIHRlc3QzKGEsYixjKSB7CisgICAg
cmVzdWx0IF49IHJlc3VsdCA+PiAxOworICAgIHJldHVybiB0cnVlOworfQorCit2YXIgcmVzdWx0
ID0gMDsKK3ZhciBhcnJheSA9IFtdCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKQor
ICAgIGFycmF5W2ldID0gMTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7CisgICAg
YXJyYXkuZXZlcnkodGVzdDEpOworICAgIGFycmF5LmV2ZXJ5KHRlc3QyKTsKKyAgICBhcnJheS5l
dmVyeSh0ZXN0Myk7Cit9CisKK2lmIChyZXN1bHQgIT0gMTQyODgxMDQ5NikKKyAgICB0aHJvdyAi
RXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CmRpZmYgLS1naXQgYS9HTlVtYWtlZmlsZS5h
bSBiL0dOVW1ha2VmaWxlLmFtCmluZGV4IDczZmM0OTI4YzRkZDQ5YjU0OTg2OWI1MDY3OGM2YmRl
NzRmNDQ3NjAuLjA4YzkxMTU0MjYwNTAwZGUzZmYwNGIwMjBjZTBkNjBmOThlOGNmZTggMTAwNjQ0
Ci0tLSBhL0dOVW1ha2VmaWxlLmFtCisrKyBiL0dOVW1ha2VmaWxlLmFtCkBAIC02OCw2ICs2OCw3
IEBAIEFMTF9NT0ZJTEVTIDo9CiBkb21fYmluZGluZ19pZGxzIDo9CiB3dGZfc291cmNlcyA6PQog
amF2YXNjcmlwdGNvcmVfaF9hcGkgOj0KK2phdmFzY3JpcHRjb3JlX2J1aWx0aW5zX2pzX25vc291
cmNlcyA6PQogamF2YXNjcmlwdGNvcmVfY3BwZmxhZ3M6PQogamF2YXNjcmlwdGNvcmVfY2ZsYWdz
IDo9CiBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzIDo9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222757</attachid>
            <date>2014-01-30 16:30:19 -0800</date>
            <delta_ts>2014-01-30 16:59:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140130163018.patch</filename>
            <type>text/plain</type>
            <size>212825</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
OTkwYjgxNTkwMTAzNDQyNzUxNzI3NjliZWMzMmNjN2Q0ZTRmMjZjLi42NmIwMTRmMjMyNzMxNDUy
MGIzYjJkM2ZlODQzNWJlOTljMDAxYzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
IFRoaXMgcmVzdWx0IG9mIHRoaXMgcmVmYWN0b3JpbmcKKyAgICAgICAgaXMgdGhhdCBDb21tb25J
ZGVudGlmaWVycywgYW5kIGEgZmV3IG90aGVyIG1pc2NlbGxhbmVvdXMgaGVhZGVycyBub3cKKyAg
ICAgICAgbmVlZCB0byBiZSBpbmNsdWRlZCBkaXJlY3RseSBhcyB0aGV5IHdlcmUgZm9ybWVybHkg
Y2FwdHVyZWQgdGhyb3VnaCBvdGhlcgorICAgICAgICBwYXRocy4KKworICAgICAgICBJbiBhZGRp
dGlvbiB0aGlzIGFkZHMgYSBmbGFnIHRvIHRoZSBMb29rdXAgdGFibGUncyBoYXNoZW50cnkgdG8g
aW5kaWNhdGUKKyAgICAgICAgdGhhdCBhIHN0YXRpYyBmdW5jdGlvbiBpcyBhY3R1YWxseSBiYWNr
ZWQgYnkgSlMuIFRoZXJlIGlzIHRoZW4gYSBsb3Qgb2YKKyAgICAgICAgbG9naWMgdG8gdGhyZWFk
IHRoZSBzcGVjaWFsIG5hdHVyZSBvZiB0aGUgZnVuY3RvbiB0byB3aGVyZSBpdCBtYXR0ZXJzLgor
ICAgICAgICBUaGlzIGFsbG93cyB0b1N0cmluZygpLCAuY2FsbGVyLCBldGMgdG8gbWltaWMgdGhl
IGJlaGF2aW91ciBvZiBhIGhvc3QKKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAgICAgTm90ZXMg
b24gd3JpdGluZyBidWlsdGluczoKKyAgICAgICAgIC0gRWFjaCBmdW5jdGlvbiBpcyBjb21waWxl
ZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBvdGhlcnMsIGFuZCB0aG9zZQorICAgICAgICAgICBpbXBs
ZW1lbnRhdGlvbnMgY2Fubm90IGN1cnJlbnRseSBjYXB0dXJlIGFsbCBnbG9iYWwgcHJvcGVydGll
cyAoYXMKKyAgICAgICAgICAgdGhhdCBjb3VsZCBiZSBwb3RlbnRpYWxseSB1bnNhZmUpLiBJZiBh
IGZ1bmN0aW9uIGRvZXMgY2FwdHVyZSBhCisgICAgICAgICAgIGdsb2JhbCB3ZSB3aWxsIGRlbGli
ZXJhdGVseSBjcmFzaC4KKyAgICAgICAgIC0gRm9yIHRob3NlICJnbG9iYWwiIHByb3BlcnRpZXMg
dGhhdCB3ZSBkbyB3YW50IGFjY2VzcyB0bywgd2UgdXNlCisgICAgICAgICAgIHRoZSBAIHByZWZp
eCwgZS5nLiBPYmplY3QodGhpcykgYmVjb21lcyBAT2JqZWN0KHRoaXMpLiBUaGUgQCBpZGVudGlm
aWVycworICAgICAgICAgICBhcmUgcHJpdmF0ZSBuYW1lcywgYW5kIGJlaGF2ZSBqdXN0IGxpa2Ug
cmVndWxhciBwcm9wZXJ0aWVzLCBvbmx5CisgICAgICAgICAgIHdpdGhvdXQgdGhlIHJpc2sgb2Yg
YWR1bHRlcmF0aW9uLiBBZ2FpbiwgaW4gdGhlIEBPYmplY3QgY2FzZSwgd2UKKyAgICAgICAgICAg
ZXhwbGljaXRseSBkdXBsaWNhdGUgdGhlIE9iamVjdENvbnN0cnVjdG9yIHJlZmVyZW5jZSBvbiB0
aGUgR2xvYmFsT2JqZWN0CisgICAgICAgICAgIHNvIHRoYXQgd2UgaGF2ZSBndWFyYW50ZWVkIGFj
Y2VzcyB0byB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgY29uc3RydWN0
b3IuCisgICAgICAgICAtIGNhbGwsIGFwcGx5LCBldmFsLCBhbmQgRnVuY3Rpb24gYXJlIGFsbCBy
ZWplY3RlZCBpZGVudGlmaWVycywgYWdhaW4KKyAgICAgICAgICAgdG8gcHJldmVudCBhbnl0aGlu
ZyBmcm9tIGFjY2lkZW50YWxseSB1c2luZyBhbiBhZHVsdGVyYXRlZCBvYmplY3QuCisgICAgICAg
ICAgIEluc3RlYWQgQGNhbGwgYW5kIEBhcHBseSBhcmUgYXZhaWxhYmxlLCBhbmQgaGFwcGlseSB0
aGV5IGNvbXBsZXRlbHkKKyAgICAgICAgICAgZHJvcCB0aGUgbmVxX3B0ciBpbnN0cnVjdGlvbiBh
cyB0aGV5J3JlIGRlZmluZWQgYXMgYWx3YXlzIGJlaW5nIHRoZQorICAgICAgICAgICBvcmlnaW5h
bCBjYWxsL2FwcGx5IGZ1bmN0aW9ucy4KKworICAgICAgICBUaGVzZSByZXN0cmljdGlvbnMgYXJl
IGp1c3QgaW50ZW5kZWQgdG8gbWFrZSBpdCBoYXJkZXIgdG8gYWNjaWRlbnRhbGx5CisgICAgICAg
IG1ha2UgY2hhbmdlcyB0aGF0IGFyZSBpbmNvcnJlY3QgKGZvciBpbnN0YW5jZSBjYWxsaW5nIHdo
YXRldmVyIGhhcyBiZWVuCisgICAgICAgIGFzc2lnbmVkIHRvIGdsb2JhbC5PYmplY3QsIGluc3Rl
YWQgb2YgdGhlIG9yaWdpbmFsIGNvbnN0cnVjdG9yIGZ1bmN0aW9uKS4KKyAgICAgICAgSG93ZXZl
ciwgbWFraW5nIGEgbWlzdGFrZSBsaWtlIHRoaXMgc2hvdWxkIHJlc3VsdCBpbiBhIHB1cmVseSBz
ZW1hbnRpYworICAgICAgICBlcnJvciBhcyBmdW5kYW1lbnRhbGx5IHRoZXNlIGZ1bmN0aW9ucyBh
cmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlCisgICAgICAgIHJlZ3VsYXIgSlMgY29kZSBp
biB0aGUgaG9zdCBnbG9iYWwsIGFuZCBoYXZlIG5vIG1vcmUgcHJpdmlsZWdlcyB0aGFuCisgICAg
ICAgIGFueSBvdGhlciBKUy4KKworICAgICAgICBUaGUgaW5pdGlhbCBwcm9vZiBvZiBjb25jZXB0
IGlzIEFycmF5LnByb3RvdHlwZS5ldmVyeSwgdGhpcyBzaG93cyBhIDY1JQorICAgICAgICBwZXJm
b3JtYW5jZSBpbXByb3ZlbWVudCwgYW5kIHRoYXQgaW1wcm92ZW1lbnQgaXMgc2lnbmlmaWNhbnRs
eSBodXJ0IGJ5CisgICAgICAgIG91ciBwb29yIG9wdGltaXNhdGlvbiBvZiBvcF9pbi4KKworICAg
ICAgICBBcyB0aGlzIGlzIHN1Y2ggYSBsaW1pdGVkIGZ1bmN0aW9uLCB3ZSBoYXZlIG5vdCB5ZXQg
ZXhwb3J0ZWQgYWxsIHN5bWJvbHMKKyAgICAgICAgdGhhdCB3ZSBjb3VsZCBwb3NzaWJseSBuZWVk
LCBidXQgYXMgd2UgaW1wbGVtZW50IG1vcmUsIHRoZSBsaWtlbGlob29kCisgICAgICAgIG9mIGVu
Y291bnRlcmluZyBtaXNzaW5nIGZlYXR1cmVzIHdpbGwgcmVkdWNlLgorCisgICAgICAgIFRoaXMg
ZGlkIHJlcXVpcmUgYnJlYWtpbmcgb3V0IGEgSlNTdHJpbmdJbmxpbmVzIGhlYWRlciwgYW5kIHJl
cXVpcmVkCisgICAgICAgIGZpeGluZyBhIGZldyBvYmplY3RzIHRoYXQgd2VyZSB0cnlpbmcgdG8g
dXNpbmcgUHJvcGVydHlOYW1lOjpwdWJsaWNOYW1lCisgICAgICAgIHJhdGhlciB0aGFuIFByb3Bl
cnR5TmFtZTo6dWlkLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0
eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dCk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRpY1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWNGdW5jdGlvbkdl
dHRlcik6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tH
ZXR0ZXIpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBidWlsdGlucy9BcnJheS5wcm90b3R5cGUuanM6CisgICAgICAgIChldmVyeSk6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkJ1aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKToKKyAgICAgICAgKEpTQzo6
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSk6CisgICAgICAgICog
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVj
dXRhYmxlczo6Y3JlYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tG
b3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6dG9TdHJpY3RuZXNzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNCdWlsdGluRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBjcmVhdGVfaGFz
aF90YWJsZToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZ2Vu
ZXJhdGUtanMtYnVpbHRpbnM6IEFkZGVkLgorICAgICAgICAoZ2V0Q29weXJpZ2h0KToKKyAgICAg
ICAgKGdldEZ1bmN0aW9ucyk6CisgICAgICAgIChnZW5lcmF0ZUNvZGUpOgorICAgICAgICAobWFu
Z2xlTmFtZSk6CisgICAgICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSWRlbnRp
Zmllcik6CisgICAgICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChTb3VyY2VDb2RlKToK
KyAgICAgICAgKFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKFZNKToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvUHJvdG9DYWxsRnJhbWUuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUp
OgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpM
ZXhlcik6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpM
ZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFy
Pjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAg
ICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcik6CisgICAgICAgICog
cGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OnNldENsb3NlZFZh
cmlhYmxlcyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
Tm9kZTo6Y2FwdHVyZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OnNldENs
b3NlZFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmluaXNoUGFy
c2luZyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRU
b2tlblRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OmdldFVzZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNsb3NlZFZhcmlh
Ymxlcyk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9k
ZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAgICAgICogcnVudGlt
ZS9BcmdMaXN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAg
ICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJh
dG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpn
ZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpD
b21tb25JZGVudGlmaWVycyk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQ
cml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQdWJsaWNO
YW1lKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzRXhjZXB0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxl
OjpleGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpleGVj
dXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aXNCdWlsdGlu
RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1l
L0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFi
bGVHZXQpOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0KToKKyAg
ICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgICogcnVudGltZS9K
U0NlbGxJbmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6c291cmNlQ29kZSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzSG9zdE9y
QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6aXNCdWlsdGluRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIpOgorICAgICAg
ICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9w
ZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgICogcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6Om9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpnZXRDbGFzc1Byb3BlcnR5TmFtZXMpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZ0lubGlu
ZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjppbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9i
amVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgICAgRG9uJ3QgcmVw
b3J0IHByaXZhdGUgbmFtZXMuCisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6c3ltYm9s
VGFibGVQdXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChKU0M6OnNldFVwU3RhdGlj
RnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlND
OjpIYXNoRW50cnk6OmJ1aWx0aW5HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpIYXNoRW50cnk6
OnByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpwcm9wZXJ0eVB1dHRl
cik6CisgICAgICAgIChKU0M6Okhhc2hUYWJsZTo6ZW50cnkpOgorICAgICAgICAoSlNDOjpnZXRT
dGF0aWNQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpnZXRTdGF0aWNWYWx1ZVNsb3QpOgor
ICAgICAgICAoSlNDOjpwdXRFbnRyeSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6YnVp
bHRpbkV4ZWN1dGFibGVzKToKKwogMjAxNC0wMS0zMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBw
bGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBGVEwgU3RhY2tNYXBzIHBhcnNlciB0byBzdGFja1Np
emUgY2hhbmdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM4NDMzNTUzODg3NWI1YTI0NWY1YTdhMDVhNzhjYzhk
ZmVjZWE1Yi4uMDY3MThhN2QxMmUxZTlkZGZjNmFkOWU3OGFjNzcwYmE0ZmJjMzY0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE0LTAxLTI5ICBPbGl2ZXIgSHVudCAgPG9saXZlckBh
cHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBpbXBsZW1lbnQgSlMgYnVp
bHRpbnMgaW4gSlMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyNzg4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVwZGF0aW5nIGZvciB0aGUgbmV3bHkgcmVxdWlyZWQgaGVhZGVycy4KKworICAgICAgICBU
ZXN0OiBqcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sCisKKyAgICAgICAgKiBG
b3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oOiBBZGRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0lE
Qk9iamVjdFN0b3JlQ3VzdG9tLmNwcDoKKwogMjAxNC0wMS0zMCAgRXJpYyBDYXJsc29uICA8ZXJp
Yy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBkb24ndCB1cGRhdGUgbWVkaWEg
bGF5ZXJzIG9uIG1haW4gdGhyZWFkIHdoZW4gdXNpbmcgQVZGb3VuZGF0aW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCmlu
ZGV4IDViZTA1M2YxZTA4NmI0M2U2ODZjMzY3NGRhZTdjNTE2MDVhMjg2ZTcuLjBlY2VkNTFmM2Uy
ZDViNjIxZGFkZjA1NzQ5ZjVlNzQ2NmEwNmY1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCkBAIC0xMzYsNyArMTM2
LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGUKICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0g
dG9SZWYodGhpc09iamVjdCk7CiAgICAgUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5h
bWVSZWY7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVi
bGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlk
KCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFz
c1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAg
ICAgICAgIC8vIG9wdGlvbmFsIG9wdGltaXphdGlvbiB0byBieXBhc3MgZ2V0UHJvcGVydHkgaW4g
Y2FzZXMgd2hlbiB3ZSBvbmx5IG5lZWQgdG8ga25vdyBpZiB0aGUgcHJvcGVydHkgZXhpc3RzCiAg
ICAgICAgICAgICBpZiAoSlNPYmplY3RIYXNQcm9wZXJ0eUNhbGxiYWNrIGhhc1Byb3BlcnR5ID0g
anNDbGFzcy0+aGFzUHJvcGVydHkpIHsKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIEpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcAogICAgIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwog
ICAgIEpTVmFsdWVSZWYgdmFsdWVSZWYgPSB0b1JlZihleGVjLCB2YWx1ZSk7CiAgICAgCi0gICAg
aWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAg
aWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9y
IChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBq
c0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVj
dFNldFByb3BlcnR5Q2FsbGJhY2sgc2V0UHJvcGVydHkgPSBqc0NsYXNzLT5zZXRQcm9wZXJ0eSkg
ewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lUmVmKQpAQCAtMzQzLDcgKzM0Myw3
IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvCiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRv
UmVmKHRoaXNPYmplY3QpOwogICAgIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1l
UmVmOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1Ymxp
Y05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgp
KSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iamVjdC0+Y2xhc3NS
ZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAg
ICAgICBpZiAoSlNPYmplY3REZWxldGVQcm9wZXJ0eUNhbGxiYWNrIGRlbGV0ZVByb3BlcnR5ID0g
anNDbGFzcy0+ZGVsZXRlUHJvcGVydHkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5
TmFtZVJlZikKQEAgLTU2NCw3ICs1NjQsNyBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6Z2V0U3RhdGljVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcAogewog
ICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzKTsKICAgICAKLSAgICBpZiAoU3Ry
aW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3Ry
aW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xh
c3NSZWYganNDbGFzcyA9IGNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5w
YXJlbnRDbGFzcykgewogICAgICAgICAgICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNU
YWJsZSogc3RhdGljVmFsdWVzID0ganNDbGFzcy0+c3RhdGljVmFsdWVzKGV4ZWMpKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKFN0YXRpY1ZhbHVlRW50cnkqIGVudHJ5ID0gc3RhdGljVmFsdWVzLT5n
ZXQobmFtZSkpIHsKQEAgLTYwMCw3ICs2MDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNr
T2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRQog
ICAgIGlmIChQYXJlbnQ6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHNsb3QyKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90Mi5nZXRW
YWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpKTsKIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0g
cHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0g
cHJvcGVydHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0g
dGhpc09iai0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENs
YXNzKSB7CiAgICAgICAgICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxl
KiBzdGF0aWNGdW5jdGlvbnMgPSBqc0NsYXNzLT5zdGF0aWNGdW5jdGlvbnMoZXhlYykpIHsKICAg
ICAgICAgICAgICAgICBpZiAoU3RhdGljRnVuY3Rpb25FbnRyeSogZW50cnkgPSBzdGF0aWNGdW5j
dGlvbnMtPmdldChuYW1lKSkgewpAQCAtNjI2LDcgKzYyNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBF
bmNvZGVkCiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmopOwogICAgIFJl
ZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwogICAgIAotICAgIGlmIChTdHJp
bmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJp
bmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFz
c1JlZiBqc0NsYXNzID0gdGhpc09iai0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpz
Q2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgICAgICBpZiAoSlNPYmplY3RHZXRQcm9wZXJ0
eUNhbGxiYWNrIGdldFByb3BlcnR5ID0ganNDbGFzcy0+Z2V0UHJvcGVydHkpIHsKICAgICAgICAg
ICAgICAgICBpZiAoIXByb3BlcnR5TmFtZVJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCAyN2JjNGMxN2YzZGZlZWI2MWQyNTIzMjNmZDg3OGM0NDc4MGY3NGM1Li4wYzRk
ZWZiOTlkYjM5OTQzYmE2NTIyNDZlY2RmOTkyN2YxNGU2ZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CkBAIC01Miw2ICs1Miw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VS
Q0VTCiAgICAgYmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcAogICAgIGJpbmRpbmdzL1NjcmlwdFZh
bHVlLmNwcAogCisgICAgYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAorCiAgICAgYnl0
ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9BcnJheVByb2Zp
bGUuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcApAQCAtNzA3LDcgKzcw
OSw3IEBAIHNldChIQVNIX0xVVF9HRU5FUkFUT1IgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9
L2NyZWF0ZV9oYXNoX3RhYmxlKQogbWFjcm8oR0VORVJBVEVfSEFTSF9MVVQgX2lucHV0IF9vdXRw
dXQpCiAgICAgYWRkX2N1c3RvbV9jb21tYW5kKAogICAgICAgICBPVVRQVVQgJHtfb3V0cHV0fQot
ICAgICAgICBERVBFTkRTICR7SEFTSF9MVVRfR0VORVJBVE9SfSAke19pbnB1dH0KKyAgICAgICAg
REVQRU5EUyAke0hBU0hfTFVUX0dFTkVSQVRPUn0gJHtfaW5wdXR9ICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAogICAgICAgICBDT01NQU5EICR7UEVS
TF9FWEVDVVRBQkxFfSAke0hBU0hfTFVUX0dFTkVSQVRPUn0gJHtfaW5wdXR9IC1pID4gJHtfb3V0
cHV0fQogICAgICAgICBWRVJCQVRJTSkKICAgICBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9I
RUFERVJTICR7X291dHB1dH0pCkBAIC04MTUsMTYgKzgxNywyNyBAQCBhZGRfY3VzdG9tX2NvbW1h
bmQoCiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX0lO
U1BFQ1RPUl9TQ1JJUFRTX0RJUn0vQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSAke0RFUklWRURf
U09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTLmpzb24gLS1vdXRwdXRfaF9k
aXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0cHV0X2NwcF9k
aXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0cHV0X2pzX2Rp
ciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIgLS1vdXRwdXRfdHlwZSBK
YXZhU2NyaXB0IC0td3JpdGVfYWx3YXlzICYmIG1rZGlyIC1wICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yICYmIGNwICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFT
Q1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCAke0RFUklWRURf
U09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVy
cy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBl
QnVpbGRlcnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rv
cgogICAgIFZFUkJBVElNKQogCisjIEpTQ0J1aWx0aW5zCitmaWxlKEdMT0IgSlNDQnVpbHRpbnNf
anNfZmlsZXMgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9idWlsdGlucy8qLmpzIikKK2Fk
ZF9jdXN0b21fY29tbWFuZCgKKyAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBU
Q09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09S
RV9ESVJ9L0pTQ0J1aWx0aW5zLmgKKyAgIE1BSU5fREVQRU5ERU5DWSAke0NNQUtFX0NVUlJFTlRf
U09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMKKyAgIERFUEVORFMgJHtKU0NCdWlsdGlu
c19qc19maWxlc30KKyAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9DVVJS
RU5UX1NPVVJDRV9ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zICR7SlNDQnVpbHRpbnNfanNfZmls
ZXN9ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaCAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcAorICAg
VkVSQkFUSU0pCisKIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICAke0RF
UklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTQmFja2VuZERpc3Bh
dGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5z
cGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwCisgICAgJHtERVJJ
VkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5jcHAKICkKIAogbGlz
dChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUwogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaAogICAgICR7
REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNGcm9udGVuZERp
c3BhdGNoZXJzLmgKICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0lu
c3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgKKyAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBU
Q09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKICkKIAogYWRkX2N1c3RvbV9jb21tYW5kKApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAxMTU2ZTk3ZmQ4ODYyNTU3
YzljZjhkM2I2OGJmNGQwM2MzZThiYThmLi43Yzk4MmI2OTEzZTJmODhkNTg4ODRkYmUyMzczZjU5
NWU3YjQ1OTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpA
QCAtMjgsOCArMjgsOSBAQCBWUEFUSCA9IFwKICAgICAkKEphdmFTY3JpcHRDb3JlKSBcCiAgICAg
JChKYXZhU2NyaXB0Q29yZSkvcGFyc2VyIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9ydW50aW1l
IFwKLSAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnRlcnByZXRlciBcCi0gICAgJChKYXZhU2NyaXB0
Q29yZSkvaml0IFwKKwkkKEphdmFTY3JpcHRDb3JlKS9pbnRlcnByZXRlciBcCisJJChKYXZhU2Ny
aXB0Q29yZSkvaml0IFwKKwkkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucyBcCiAjCiAKIC5QSE9O
WSA6IGFsbApAQCAtNTcsMTIgKzU4LDI1IEBAIGFsbCA6IFwKICAgICBSZWdFeHBPYmplY3QubHV0
LmggXAogICAgIFN0cmluZ0NvbnN0cnVjdG9yLmx1dC5oIFwKICAgICB1ZGlzODZfaXRhYi5oIFwK
KyAgICBKU0NCdWlsdGlucyBcCiAjCiAKKyMgYnVpbHRpbiBmdW5jdGlvbnMKKy5QSE9OWTogSlND
QnVpbHRpbnMKKworSlNDQnVpbHRpbnM6ICQoSmF2YVNjcmlwdENvcmUpL2dlbmVyYXRlLWpzLWJ1
aWx0aW5zIEpTQ0J1aWx0aW5zLmggSlNDQnVpbHRpbnMuY3BwCitKU0NCdWlsdGlucy5oOiAkKEph
dmFTY3JpcHRDb3JlKS9nZW5lcmF0ZS1qcy1idWlsdGlucyAkKEphdmFTY3JpcHRDb3JlKS9idWls
dGlucy8qLmpzCisJcHl0aG9uICReICRACisJCQkJCQkJCQkJCQkJCQkJCQkJCSAKK0pTQ0J1aWx0
aW5zLmNwcDogSlNDQnVpbHRpbnMuaAorCiAjIGxvb2t1cCB0YWJsZXMgZm9yIGNsYXNzZXMKIAor
Y3JlYXRlX2hhc2hfdGFibGU6IEpTQ0J1aWx0aW5zCisKICUubHV0Lmg6IGNyZWF0ZV9oYXNoX3Rh
YmxlICUuY3BwCiAJJF4gLWkgPiAkQAorCiBMZXhlci5sdXQuaDogY3JlYXRlX2hhc2hfdGFibGUg
S2V5d29yZHMudGFibGUKIAkkXiA+ICRACiAKQEAgLTc5LDcgKzkzLDYgQEAgS2V5d29yZExvb2t1
cC5oOiBLZXl3b3JkTG9va3VwR2VuZXJhdG9yLnB5IEtleXdvcmRzLnRhYmxlCiB1ZGlzODZfaXRh
Yi5oOiAkKEphdmFTY3JpcHRDb3JlKS9kaXNhc3NlbWJsZXIvdWRpczg2L2l0YWIucHkgJChKYXZh
U2NyaXB0Q29yZSkvZGlzYXNzZW1ibGVyL3VkaXM4Ni9vcHRhYmxlLnhtbAogCShQWVRIT05QQVRI
PSQoSmF2YVNjcmlwdENvcmUpL2Rpc2Fzc2VtYmxlci91ZGlzODYgcHl0aG9uICQoSmF2YVNjcmlw
dENvcmUpL2Rpc2Fzc2VtYmxlci91ZGlzODYvaXRhYi5weSAkKEphdmFTY3JpcHRDb3JlKS9kaXNh
c3NlbWJsZXIvdWRpczg2L29wdGFibGUueG1sIHx8IGV4aXQgMSkKIAotCiAjIEluc3BlY3RvciBp
bnRlcmZhY2VzCiAKIElOU1BFQ1RPUl9ET01BSU5TID0gXApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmFtCmluZGV4IGZlNTQ0OGRkYzFiY2ZhYTRjNzI5YTFjYzAwZGVhNjI0MzE5MzkwYTIu
LmI2MjIxZTUwZTRhYzAwYzAyZmYxYzJkNmM1NTI1OTM4NjBjMjc0NTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTk3LDYgKzk3LDggQEAgJChzaGVsbCBta2RpciAtcCBE
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZSkKIERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlL0xleGVyLmx1dC5oOiAkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9o
YXNoX3RhYmxlICQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0tleXdvcmRz
LnRhYmxlCiAJJChBTV9WX0dFTikkKFBFUkwpICReID4gJEAKIAorJChzcmNkaXIpL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZTogJChzcmNkaXIpL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucworCiBEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0
Q29yZS8lLmx1dC5oOiAkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNo
X3RhYmxlICQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS8lLmNwcAogCSQo
QU1fVl9HRU4pJChQRVJMKSAkXiAtaSA+ICRACiAKQEAgLTExMCwxMiArMTEyLDE2IEBAIERlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaDogJChqYXZhc2Ny
aXB0Y29yZV9zb3VyY2VzKSAkCiAJJChBTV9WX0dFTikkKFJVQlkpICQoc3JjZGlyKS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiICQo
c3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20gJEAKIAkkKEFNX1ZfYXQpdG91Y2ggJEAKIAotJChQcm9ncmFtc19MTEludE9mZnNldHNFeHRy
YWN0b3JfT0JKRUNUUyk6IERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJl
ZE9mZnNldHMuaAorJChQcm9ncmFtc19MTEludE9mZnNldHNFeHRyYWN0b3JfT0JKRUNUUyk6IERl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaCAKIAogRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnRBc3NlbWJseS5oOiBQcm9ncmFtcy9MTElu
dE9mZnNldHNFeHRyYWN0b3IkKEVYRUVYVCkKIAkkKEFNX1ZfR0VOKSQoUlVCWSkgJChzcmNkaXIp
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYiAkKHNyY2RpcikvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIFByb2dyYW1zL0xM
SW50T2Zmc2V0c0V4dHJhY3RvciQoRVhFRVhUKSAkQAogCSQoQU1fVl9hdCl0b3VjaCAkQAogCitE
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5oOiBEZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5jcHAKK0Rlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL0pTQ0J1aWx0aW5zLmNwcDogJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9n
ZW5lcmF0ZS1qcy1idWlsdGlucyAkKGphdmFzY3JpcHRjb3JlX2J1aWx0aW5zX2pzX3NvdXJjZXMp
CisJJChBTV9WX0dFTikkKFBZVEhPTikgJF4gJEAKKwogJChsaWJqYXZhc2NyaXB0Y29yZWd0a19A
V0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9O
QF9sYV9PQkpFQ1RTKTogRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnRBc3NlbWJs
eS5oCiAKIGpzYzogJChqYXZhc2NyaXB0Y29yZV9idWlsdF9ub3NvdXJjZXMpIFByb2dyYW1zL2pz
YyQoRVhFRVhUKQpAQCAtMjE2LDYgKzIyMiw3IEBAIEVYVFJBX0RJU1QgKz0gXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9LZXl3b3JkTG9va3VwR2VuZXJhdG9yLnB5IFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0tleXdvcmRzLnRhYmxlIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
VEhBTktTIFwKKwkkKGphdmFzY3JpcHRjb3JlX2J1aWx0aW5zX2pzX25vc291cmNlcykgXAogCSQo
bGxpbnRfbm9zb3VyY2VzKSBcCiAJJChvZmZsaW5lYXNtX25vc291cmNlcykKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBjZGI1NDI2YjA2YjUyYTk4MjU2
ZWU5MDU4YmJhOGYxMWVlYTY5ZWUwLi45OGZhYWE3ZDE3NWFhNjFmMjA4OTZjZWViMTM4NjNlMjdi
MjY2Y2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAt
MjAsNiArMjAsOCBAQCBqYXZhc2NyaXB0Y29yZV9idWlsdF9ub3NvdXJjZXMgKz0gXAogCURlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0Vycm9yUHJvdG90eXBlLmx1dC5oIFwKIAlEZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0RhdGFWaWV3UHJvdG90eXBlLmx1dC5oIFwKIAlEZXJp
dmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5sdXQuaCBcCisJRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNDQnVpbHRpbnMuY3BwIFwKKwlEZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9KU09OT2JqZWN0Lmx1dC5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29y
ZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvSlNQcm9taXNlUHJvdG90eXBlLmx1dC5oIFwKQEAgLTM1LDYgKzM3LDkgQEAgamF2YXNj
cmlwdGNvcmVfYnVpbHRfbm9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0
Q29yZS9MTEludERlc2lyZWRPZmZzZXRzLmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlL0xMSW50QXNzZW1ibHkuaAogCitqYXZhc2NyaXB0Y29yZV9idWlsdGluc19qc19ub3NvdXJj
ZXMgKz0gXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUu
anMKKwogamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9BUElDYWxsYmFja0Z1bmN0aW9uLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
QVBJQ2FzdC5oIFwKQEAgLTEwMiw2ICsxMDcsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9
IFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0T2JqZWN0LmggXAog
ICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAgXAogICAg
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5oIFwKKyAgICBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBcCisgICAg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxl
LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwIFwK
QEAgLTEyNDEsNyArMTI0OCw5IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCURlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5j
cHAgXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpTRnJvbnRlbmRE
aXNwYXRjaGVycy5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JK
U1R5cGVCdWlsZGVycy5jcHAgXAotCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3Bl
Y3RvckpTVHlwZUJ1aWxkZXJzLmgKKwlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnNw
ZWN0b3JKU1R5cGVCdWlsZGVycy5oIFwKKwlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9K
U0NCdWlsdGlucy5jcHAgXAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0
aW5zLmgKIAogbGxpbnRfbm9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvagppbmRleCA1ZWRlZmRiZTg1NWY5NmE2MjY4ZDg1NzNiZWMxZDBjM2Q4NThh
YTVjLi5hMTJkYjE4MzQ4NmRmYmJjYTgzZjNhNzhlOWNmOTg2MzFiMjY1M2RjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTMwOSw2ICszMDksNyBAQAogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdE9iamVjdC5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRWYWx1ZS5jcHAiIC8+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWlsdGluRXhlY3V0YWJsZXMu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0
aW9uUHJvZmlsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxB
cnJheVByb2ZpbGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVc
Qnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCIgLz4KQEAgLTcyMSw2ICs3MjIsNyBAQAogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTQmFja2Vu
ZERpc3BhdGNoZXJzLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xJbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZv
cm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpT
VHlwZUJ1aWxkZXJzLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xKU0NCdWlsdGlucy5jcHAiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRl
bUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEFycmF5Q29uc3RydWN0b3IubHV0LmgiIC8+CkBAIC03NTAsNiArNzUyLDcgQEAKICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJj
aGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xSZWdFeHBPYmplY3QubHV0
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
UmVnRXhwUHJvdG90eXBlLmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXFN0cmluZ0NvbnN0cnVjdG9yLmx1dC5oIiAvPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmgiIC8+
CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cQVBJXEFQSUNhbGxiYWNrRnVuY3Rpb24uaCIgLz4KQEAgLTc5OCw2ICs4MDEsNyBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0RnVuY3Rpb25DYWxsLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRPYmplY3QuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdFZhbHVlLmgiIC8+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWlsdGluRXhlY3V0YWJsZXMuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlvblBy
b2ZpbGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5UHJv
ZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQnlWYWxJbmZv
LmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRl
cnMKaW5kZXggODdlMTJhNDcxNThiYjYyMjRkNDlmZDYyMjk3OGM0YTljNDQzNWE2NS4uODY5YzFm
NTg5YmNiNjg2ZWI5Y2YyMGMwOTZiZTFiODNhNTUxZTI0YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
ai5maWx0ZXJzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtNyw2ICs3LDkgQEAKICAgICA8
RmlsdGVyIEluY2x1ZGU9ImJpbmRpbmdzIj4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnswYmFj
ZTEyMy00NTgyLWVlYmMtOTMxNC03ODE5YjM3NmMxOTh9PC9VbmlxdWVJZGVudGlmaWVyPgogICAg
IDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iYnVpbHRpbnMiPgorICAgICAgPFVuaXF1
ZUlkZW50aWZpZXI+ezNiOWQ3MmE1LTEzNWItNDNiMy1hNTI0LWM2ZDJiOWQyOWQzNX08L1VuaXF1
ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CiAgICAgPEZpbHRlciBJbmNsdWRlPSJieXRlY29k
ZSI+CiAgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NzY2MDg4YTAtMTIxNi00ODU0LWFhNDMtNTYw
YzVlMjgzNjY4fTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8L0ZpbHRlcj4KQEAgLTEwOCw2ICsx
MTEsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXE1hY3JvQXNzZW1i
bGVyLmNwcCI+CiAgICAgICA8RmlsdGVyPmFzc2VtYmxlcjwvRmlsdGVyPgogICAgIDwvQ2xDb21w
aWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnVpbHRpbnNcQnVpbHRpbkV4ZWN1dGFi
bGVzLmNwcCI+CisgICAgICA8RmlsdGVyPmJ1aWx0aW5zPC9GaWx0ZXI+CisgICAgPC9DbENvbXBp
bGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Q
cm9maWxlLmNwcCI+CiAgICAgICA8RmlsdGVyPmJ5dGVjb2RlPC9GaWx0ZXI+CiAgICAgPC9DbENv
bXBpbGU+CkBAIC0xMzI5LDYgKzEzMzUsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmNwcCI+CiAgICAg
ICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZv
cm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5z
LmNwcCI+CisgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgorICAgIDwvQ2xD
b21waWxlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXEFQSVxBUElDYWxsYmFja0Z1bmN0aW9uLmgiPgpAQCAtMTQ1NCw2ICsxNDYzLDkg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxYODZBc3NlbWJsZXIuaCI+
CiAgICAgICA8RmlsdGVyPmFzc2VtYmxlcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnVpbHRpbnNcQnVpbHRpbkV4ZWN1dGFibGVzLmgiPgor
ICAgICAgPEZpbHRlcj5idWlsdGluczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIj4K
ICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTI1
NTAsNiArMjU2Miw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcQXJyYXlQcm90b3R5cGUubHV0LmgiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkIFNv
dXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NCdWlsdGlucy5oIj4KKyAgICAgIDxGaWx0ZXI+
RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXFZNLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZUNvbW1vbi5wcm9wcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlQ29t
bW9uLnByb3BzCmluZGV4IDM2MjJmZmM1NzdjNDNkZGY3MGRhNTFmZjY4YWQ2NDZmNjMwNGU1Njcu
LmM1ODg4NzBjMmZkMTNkNjA3NmQzOGY1MmNhNjIyNWRiMjg3MmM3ODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
Q29tbW9uLnByb3BzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlQ29tbW9uLnByb3BzCkBAIC01LDcgKzUsNyBAQAogICA8UHJv
cGVydHlHcm91cCAvPgogICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgot
ICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cOy4uXHRvb2xzXDsuLlxydW50
aW1lXDsuLlxsbGludFw7Li5caml0XDsuLlxkaXNhc3NlbWJsZXJcOy4uXGhlYXBcOy4uXGRlYnVn
Z2VyXDsuLlxhc3NlbWJsZXJcOy4uXHByb2ZpbGVyXDsuLlx5YXJyXDsuLlxpbnRlcnByZXRlclw7
Li5cYnl0ZWNvZGVcOy4uXGRmZ1w7Li5cYnl0ZWNvbXBpbGVyXDsuLlxwYXJzZXJcOy4uXEFQSVw7
Li5cZnRsXDsuLlxiaW5kaW5nc1w7Li5caW5zcGVjdG9yXDskKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcSmF2YVNjcmlwdENvcmVcRGVyaXZlZFNvdXJj
ZXNcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXDskKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZVw7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGlu
Y2x1ZGVccHJpdmF0ZVw7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlOyQoV2ViS2l0X0xpYnJh
cmllcylcaW5jbHVkZVxwcml2YXRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0Fk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcz4uLlw7Li5cdG9vbHNcOy4uXHJ1bnRpbWVcOy4uXGxsaW50XDsuLlxqaXRcOy4uXGRp
c2Fzc2VtYmxlclw7Li5caGVhcFw7Li5cZGVidWdnZXJcOy4uXGFzc2VtYmxlclw7Li5ccHJvZmls
ZXJcOy4uXHlhcnJcOy4uXGludGVycHJldGVyXDsuLlxieXRlY29kZVw7Li5cYnVpbHRpbnNcOy4u
XGRmZ1w7Li5cYnl0ZWNvbXBpbGVyXDsuLlxwYXJzZXJcOy4uXEFQSVw7Li5cZnRsXDsuLlxiaW5k
aW5nc1w7Li5caW5zcGVjdG9yXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcSmF2YVNjcmlwdENvcmVcRGVyaXZlZFNvdXJjZXNcOyQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxpbmNsdWRlXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxK
YXZhU2NyaXB0Q29yZVw7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVw7
JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlOyQoV2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZVxw
cml2YXRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM+CiAgICAgICA8Rm9yY2VkSW5jbHVkZUZpbGVzPklDVVZlcnNpb24uaDslKEZv
cmNlZEluY2x1ZGVGaWxlcyk8L0ZvcmNlZEluY2x1ZGVGaWxlcz4KICAgICA8L0NsQ29tcGlsZT4K
ICAgICA8TGluaz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjdlODc2NzQwYTk2
NGIwMjg5ODRlZDY3ODE2MTgyMGE1ZGNmNzdjNC4uOTExNTczYWIxN2QzMzk3NGFhN2M5YTAxMWRi
MjAwYjA5YWY3OGJmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkyMiw3ICs5
MjIsNiBAQAogCQlBNTAzRkExOTE4OEUwRkIwMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFt
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAz
RkExMzE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi87IH07CiAJ
CUE1MDNGQTFBMTg4RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNDE4OEUwRkFG
MDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQlBNTAzRkExQjE4OEUw
RkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE1MTg4RTBGQjAwMDExMEYxNCAv
KiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwICovOyB9OwotCQlBNTAzRkExQzE4OEUwRkIwMDAx
MTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNjE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lLmggKi87IH07CiAJCUE1MDNGQTFEMTg4RTBGQjAwMDExMEYxNCAvKiBK
U0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTcxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2
YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAgKi87IH07CiAJCUE1MDNGQTFFMTg4RTBGQjAw
MDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE4MTg4RTBGQjAwMDExMEYx
NCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaCAqLzsgfTsKIAkJQTUwM0ZBMjEx
ODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTFGMTg4RUZGNjgwMDExMEYxNCAvKiBT
Y3JpcHRCcmVha3BvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTEwMjQsNiArMTAyMyw3IEBACiAJCUE3MEIwODMyMTdBMEI3OUIwMERBRjE0
QiAvKiBERkdCaW5hcnlTd2l0Y2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTcwQjA4MzAxN0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRj
aC5jcHAgKi87IH07CiAJCUE3MEIwODMzMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0
Y2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MEIw
ODMxMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guaCAqLzsgfTsKIAkJQTcxMjM2
RTUxMTk1RjMzQzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzEyMzZFNDExOTVGMzNDMDBCRDIxNzQg
LyogSklUT3Bjb2RlczMyXzY0LmNwcCAqLzsgfTsKKwkJQTcxREE4MEYxODgwREJBQjAwRDFGMjk5
IC8qIEpTU3RyaW5nSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTcxREE4MEUxODgwREJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3MjAy
OEI2MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyMDI4QjQxNzk3NjAxRTAwOTgw
MjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAgKi87IH07CiAJCUE3MjAyOEI4MTc5NzYwMUUw
MDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjAyOEI1MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0
UnVubmVyVXRpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlBNzIwMjhCQTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklubGluZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjAyOEI5MTc5
NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTUwLDYgKzExNTAsMTAgQEAKIAkJQTdD
QTNBRTgxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDQTNBRTIxN0RBNDFBRTAwNjUzOEFGIC8qIEpT
V2Vha01hcC5oICovOyB9OwogCQlBN0NBM0FFQjE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERh
dGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdD
QTNBRTkxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCAqLzsgfTsKIAkJQTdDQTNB
RUMxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0NBM0FFQTE3REE1MTY4MDA2NTM4QUYgLyogV2Vh
a01hcERhdGEuaCAqLzsgfTsKKwkJQTdEODAxQTQxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5F
eGVjdXRhYmxlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBN0Q4MDFBMTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCAq
LzsgfTsKKwkJQTdEODAxQTUxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTIx
ODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3RDgwMUE4MTg4MEQ2QTgwMDI2QzM5
QiAvKiBKU0NCdWlsdGlucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBN0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwICov
OyB9OworCQlBN0Q4MDFBOTE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDgwMUE3MTg4MEQ2QTgw
MDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUE3RDg5Q0YyMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Js
b2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
RDg5Q0UzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNwcCAqLzsgfTsKIAkJQTdE
ODlDRjMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDg5Q0U0MTdBMEI4Q0Mw
MDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5jcHAgKi87IH07CiAJCUE3RDg5Q0Y0MTdB
MEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODlDRTUxN0EwQjhDQzAwNzczQUQ4IC8q
IERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTI0NjIsNiArMjQ2Niw4IEBACiAJCUE3MTIzNkU0MTE5NUYzM0Mw
MEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSklUT3Bjb2RlczMyXzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTcxOEY2MUExMTc1NEEyMTAwMjQ2NUE3IC8qIFJlZ0V4cEppdFRhYmxlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBKaXRUYWJsZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxOEY4MjExMTc4RUI0QjAwMjQ2NUE3IC8qIGNyZWF0ZV9y
ZWdleF90YWJsZXMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlw
ZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IGNyZWF0ZV9y
ZWdleF90YWJsZXM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MURBODBEMTg4MEQ3
MUYwMEQxRjI5OSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0
LnB5dGhvbjsgcGF0aCA9ICJnZW5lcmF0ZS1qcy1idWlsdGlucyI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE3MURBODBFMTg4MERCQUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdJbmxpbmVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI0MTc5NzYwMUUwMDk4MDI4QyAvKiBK
U0NUZXN0UnVubmVyVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNDVGVzdFJ1bm5lclV0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTcyMDI4QjUxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NUZXN0UnVubmVyVXRpbHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyMDI4QjkxNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rp
b25JbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRnVuY3Rpb25J
bmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTkwLDYgKzI1OTYsMTEg
QEAKIAkJQTdDQTNBRTIxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYWtNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTdDQTNBRTkxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYWtNYXBEYXRhLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdDQTNBRUExN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtN
YXBEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtNYXBEYXRhLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUEwMTg4MEQ2NkUwMDI2QzM5QiAv
KiBBcnJheS5wcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBh
dGggPSBBcnJheS5wcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3
RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTIxODgwRDY2RTAwMjZDMzlCIC8qIEJ1
aWx0aW5FeGVjdXRhYmxlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdWls
dGluRXhlY3V0YWJsZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTYx
ODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQ0J1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTdEODAxQTcxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ0J1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE3RDg5Q0UzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Jhc2ljQmxvY2suY3Bw
OyBwYXRoID0gZGZnL0RGR0Jhc2ljQmxvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBN0Q4OUNFNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQmxvY2tJbnNlcnRpb25T
ZXQuY3BwOyBwYXRoID0gZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTdEODlDRTUxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5z
ZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Jsb2NrSW5z
ZXJ0aW9uU2V0Lmg7IHBhdGggPSBkZmcvREZHQmxvY2tJbnNlcnRpb25TZXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5MjYsNiArMjkzNyw3IEBACiAJCQkJODYwNEY0RjIxNDNB
NkM0NDAwQjI5NUY1IC8qIENoYW5nZUxvZyAqLywKIAkJCQlGNjkyQTg1NDAyNTU1OTdEMDFGRjYw
RjcgLyogY3JlYXRlX2hhc2hfdGFibGUgKi8sCiAJCQkJQTcxOEY4MjExMTc4RUI0QjAwMjQ2NUE3
IC8qIGNyZWF0ZV9yZWdleF90YWJsZXMgKi8sCisJCQkJQTcxREE4MEQxODgwRDcxRjAwRDFGMjk5
IC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zICovLAogCQkJCTQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4
NCAvKiBqc2MuY3BwICovLAogCQkJCUY2OEVCQjhDMDI1NUQ0QzYwMUZGNjBGNyAvKiBjb25maWcu
aCAqLywKIAkJCQlGNUMyOTBFNjAyODRGOThFMDE4NjM1Q0EgLyogSmF2YVNjcmlwdENvcmVQcmVm
aXguaCAqLywKQEAgLTI5MzQsNiArMjk0Niw3IEBACiAJCQkJMTQzMkVCRDcwQTM0Q0FENDAwNzE3
QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4Q0IxMjBFRDEyQjRFMDAxRDY0OUYgLyogYXNzZW1ibGVy
ICovLAogCQkJCUE1NENGMkVBMTg0RUE3MzkwMDIzN0YxOSAvKiBiaW5kaW5ncyAqLywKKwkJCQlB
N0Q4MDE5RjE4ODBENjZFMDAyNkMzOUIgLyogYnVpbHRpbnMgKi8sCiAJCQkJOTY5QTA3OEYwRUQx
RDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovLAogCQkJCTdFMzlEODFEMEVDMzhFRkEwMDNBRjEx
QSAvKiBieXRlY29tcGlsZXIgKi8sCiAJCQkJMUM5MDUxM0UwQkE5RTg4MzAwODFFOUQwIC8qIENv
bmZpZ3VyYXRpb25zICovLApAQCAtMzUwOSw2ICszNTIyLDggQEAKIAkJNjUwRkRGOEQwOUQwRkNB
NzAwNzY5RTU0IC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCisJCQkJQTdEODAxQTYxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0
aW5zLmNwcCAqLywKKwkJCQlBN0Q4MDFBNzE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMu
aCAqLywKIAkJCQlCQzE4QzUyMzBFMTZGQzhBMDBCMzQ0NjAgLyogQXJyYXlQcm90b3R5cGUubHV0
LmggKi8sCiAJCQkJQkNEMjAzRTcwRTE3MThGNDAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUubHV0
LmggKi8sCiAJCQkJQTUxM0U1QzYxODVGOTQzNjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291
cmNlLmggKi8sCkBAIC0zODExLDYgKzM4MjYsNyBAQAogCQkJCUE3OTBERDZBMTgyRjQ5OTcwMDU4
ODgwNyAvKiBKU1NldEl0ZXJhdG9yLmggKi8sCiAJCQkJQkMwMkU5QjYwRTE4NDJGQTAwMEY5Mjk3
IC8qIEpTU3RyaW5nLmNwcCAqLywKIAkJCQlGNjkyQTg2MjAyNTU1OTdEMDFGRjYwRjcgLyogSlNT
dHJpbmcuaCAqLywKKwkJCQlBNzFEQTgwRTE4ODBEQkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxp
bmVzLmggKi8sCiAJCQkJODZFODU1MzgxMTFCOTk2ODAwMUFGNTFFIC8qIEpTU3RyaW5nQnVpbGRl
ci5oICovLAogCQkJCTI2MDBCNUE0MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5j
cHAgKi8sCiAJCQkJMjYwMEI1QTUxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVyLmgg
Ki8sCkBAIC00NTYxLDYgKzQ1NzcsMTYgQEAKIAkJCXBhdGggPSByZW1vdGU7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwogCQl9OworCQlBN0Q4MDE5RjE4ODBENjZFMDAyNkMzOUIgLyogYnVp
bHRpbnMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUE3
RDgwMUEwMTg4MEQ2NkUwMDI2QzM5QiAvKiBBcnJheS5wcm90b3R5cGUuanMgKi8sCisJCQkJQTdE
ODAxQTExODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi8sCisJCQkJ
QTdEODAxQTIxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oICovLAorCQkJ
KTsKKwkJCXBhdGggPSBidWlsdGluczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07
CiAvKiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhIZWFkZXJzQnVpbGRQ
aGFzZSBzZWN0aW9uICovCkBAIC00NjA2LDExICs0NjMyLDExIEBACiAJCQkJODZBREQxNDUwRkRE
RUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUNF
RUUxNTE4N0YzQkFEMDBFNTVDOTkgLyogSW5zcGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTY1QzAyODVEMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuaCBpbiBIZWFkZXJz
ICovLAotIAkJCQkyQTY4Mjk1QjE4NzVGODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5o
IGluIEhlYWRlcnMgKi8sCi0gICAgICAgICAgICAgICAgMkE0RUM5MEMxODYwRDZDMjAwOTRGNzgy
IC8qIFdyaXRlQmFycmllckJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkE2ODI5NUIxODc1
RjgwNTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTJB
NEVDOTBDMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZFNTkzMkE4MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1MzI0MzkzMTg1Njk3MDkwMDJFRDY5MiAvKiBDb2RlR2VuZXJhdG9y
SW5zcGVjdG9yU3RyaW5ncy5weSBpbiBIZWFkZXJzICovLAotIAkJCQlBNTMyNDM5MjE4NTY5NzA5
MDAyRUQ2OTIgLyogQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSBpbiBIZWFkZXJzICovLAorCQkJ
CUE1MzI0MzkyMTg1Njk3MDkwMDJFRDY5MiAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NEYxN0VFMjc0OTAwQUJCMjE3IC8qIFRlbXBSZWdpc3Rl
clNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwRTRCNjQxODgwOURENTAwNjhBNDZEIC8qIEpT
R2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUI1OEMxNTE4
N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLywKQEAg
LTQ2MjIsNyArNDY0OCw3IEBACiAJCQkJMEY4MzM1QjgxNjM5QzFFQTAwMTQ0M0I1IC8qIEFycmF5
QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwRTI5MTg3Q0E1RTYw
MDg0M0IxMCAvKiBpbmxpbmUtYW5kLW1pbmlmeS1zdHlsZXNoZWV0cy1hbmQtc2NyaXB0cy5weSBp
biBIZWFkZXJzICovLAogCQkJCUE1ODQwRTJCMTg3Q0E3NUIwMDg0M0IxMCAvKiBqc21pbi5weSBp
biBIZWFkZXJzICovLAotIAkJCQlBNTMyNDM5ODE4NTZBNDg5MDAyRUQ2OTIgLyogSW5zcGVjdG9y
SlMuanNvbiBpbiBIZWFkZXJzICovLAorCQkJCUE1MzI0Mzk4MTg1NkE0ODkwMDJFRDY5MiAvKiBJ
bnNwZWN0b3JKUy5qc29uIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMkExODdDQTc1OTAwODQz
QjEwIC8qIHh4ZC5wbCBpbiBIZWFkZXJzICovLAogCQkJCUZFQTA4NjIwMTgyQjdBMDQwMEY2RDg1
MSAvKiBCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzNTE3QURCNUYzMDA1
QUIxNzQgLyogQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNDczMyw3ICs0NzU5LDcg
QEAKIAkJCQlBMUEwMDlDMDE4MzFBMjJEMDBDRjg3MTEgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQzlEQzUxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVD
b2RlUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyODE4N0RGREVDMDA4M0I2ODcg
LyogRlRMQXZhaWxhYmxlUmVjb3ZlcnkuaCBpbiBIZWFkZXJzICovLAotICAgICAgICAgICAgICAg
IEE1OTNDRjg3MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggaW4g
SGVhZGVycyAqLywKKwkJCQlBNTkzQ0Y4NzE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdl
bnRSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNTZDMzYxNjI3QjBBRDAwN0YyNzgz
IC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0aWVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkZGQzk1ODE0RUY5MEEyMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2Uu
aCBpbiBIZWFkZXJzICovLApAQCAtNDg3Miw2ICs0ODk4LDcgQEAKIAkJCQkwRkVBMEExRDE3MDhC
MDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVB
MEExRjE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTU5NDU1OTMxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0
RGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdEODAxQTkxODgwRDZBODAwMjZDMzlC
IC8qIEpTQ0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEEwQTE3MDUxM0RCMDBC
QjcyMkMgLyogRlRMQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyQTE4
N0RGREVDMDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRUEwQTIzMTcwOTYwNjkwMEJCNzIyQyAvKiBGVExDb21tb25WYWx1ZXMuaCBpbiBIZWFkZXJz
ICovLApAQCAtNDk0Niw2ICs0OTczLDcgQEAKIAkJCQlCQzE4QzQwRjBFMTZGNUNEMDBCMzQ0NjAg
LyogSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzI1RjhCQ0UxNTc1NDRBOTAwMjQ1
QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTkx
NUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nSGVhZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlB
N0Q4MDFBNTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkI3RjM5QTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXJJbmxp
bmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5QjE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5k
ZXhpbmdUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNFRkFCMDE4MDVDQTZEMDA0NzJDRTQg
LyogSW5pdGlhbGl6ZUxMVk0uaCBpbiBIZWFkZXJzICovLApAQCAtNTIxOCw2ICs1MjQ2LDcgQEAK
IAkJCQlBNTMyNDM4ODE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0
Y2hlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDU2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBQ
cm90ZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc0QzMzQjE2QUEyRDk1MDA2MkYwMUQgLyog
UHJvdG90eXBlTWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzFEQTgwRjE4ODBEQkFCMDBEMUYy
OTkgLyogSlNTdHJpbmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMzJBNDE0Q0E3
REQ5MDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQ0Q0
QzIxNUYxQTYwNzAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4TW9kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJN0MwMDhDRTcxODc2MzFCNjAwOTU1QzI0IC8qIE1pY3JvdGFzay5oIGluIEhlYWRlcnMg
Ki8sCkBAIC01ODM2LDYgKzU4NjUsNyBAQAogCQkJCUE3RDg5Q0YyMTdBMEI4Q0MwMDc3M0FEOCAv
KiBERkdCYXNpY0Jsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MEIwODMyMTdBMEI3OUIw
MERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlD
RjMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUE3RDgwMUE0MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZFQzlEQzQxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5
dGVDb2RlUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDgyRTIxMTQxNzJDRTMwMDE3
OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGRkM5NTcx
NEVGOTBBMDAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTg1
Miw2ICs1ODgyLDcgQEAKIAkJCQkwRkZGQzk1OTE0RUY5MEE2MDBDNzI1MzIgLyogREZHQ1NFUGhh
c2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyRkM3NzIxNkUxMkY3MTAwMzhEOTc2IC8qIERG
R0RDRVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEYyQjk5MTcyRjA0RkYwMDdEQkRB
NSAvKiBERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTdEODAx
QTgxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE3M0UxMzMwMTc5NjI0Q0QwMEU0REVBOCAvKiBERkdEZXNpcmVkU3RydWN0dXJlQ2hhaW5zLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUMyQzBGN0NEMTdCQkZDNUIwMDQ2NEZFNCAvKiBERkdEZXNp
cmVkVHJhbnNpdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFODUzNEIxNzIzQ0RBNTAw
QjYxOEY1IC8qIERGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU5
NzYsNyArNjAwNyw3IEBACiAJCQkJMEY2QjFDQzUxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVud2lu
ZEluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5RDMzOUExODAzQURCNzAwNzNDMkJDIC8q
IEZUTFN0YWNrTWFwcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEExNjE3MDZCQjkwMDBC
QjcyMkMgLyogRlRMU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCi0gCQkJCTdDMDA4Q0QyMTg2RjhB
OTMwMDk1NUMyNCAvKiBKU1Byb21pc2VGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
N0MwMDhDRDIxODZGOEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjZCMUNCNTE4NUZDOUU5MDA4NDVEOTcgLyogRlRMSlNDYWxsLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGMjM1QkUxMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExUaHVua3Mu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5M0NGN0MxODQwMzYwMzAwQkZDRTI3IC8qIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKaW5kZXggYWYxNGUzM2VhYzA1OTdm
MmQ3OGM0YjNjZDE2MzU0MTFkYWJhOTY1ZS4uNjc5MjNmMDgyM2MyZmJhYjMxMTI4YWRiNTE5ZGM4
OWVhMDJiNjUwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9M
aW5rQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtC
dWZmZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNp
bmNsdWRlICJKSVRDb2RlLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNs
dWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlIDx3dGYvQ29tcGlsYXRp
b25UaHJlYWQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9B
cnJheS5wcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXku
cHJvdG90eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlYjQyZjVjYzQzM2YxNjM2MzQzYmZjOTgyYWEyYWFm
YjMzNmU5NDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQXJyYXkucHJvdG90eXBlLmpzCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlvbiBldmVyeShjYWxsYmFjayAvKiwg
dGhpc0FyZyAqLykgeworICAgICJ1c2Ugc3RyaWN0IjsKKyAgICBpZiAodGhpcyA9PT0gbnVsbCkK
KyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1
aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCIpOworICAgIAorICAgIGlmICh0aGlzID09PSB1
bmRlZmluZWQpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUu
ZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVmaW5lZCIpOworICAgIAorICAg
IHZhciBhcnJheSA9IEBPYmplY3QodGhpcyk7CisgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0
aCA+Pj4gMDsKKyAgICAKKyAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKQor
ICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxi
YWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOworCisgICAgdmFyIHRoaXNBcmcgPSBhcmd1bWVudHMu
bGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDsKKyAgICAKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmICghKGkgaW4gYXJyYXkpKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghY2FsbGJhY2suQGNhbGwodGhpc0Fy
ZywgYXJyYXlbaV0sIGksIGFycmF5KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQxZGJi
NWY5MjI1ZTI4YTEyZWQzZDE3OThmZjE3NjhlNDM2NzFhNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCkBAIC0w
LDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIK
KworI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisj
aW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKKyNpbmNsdWRlICJQYXJzZXIuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK0J1aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKFZN
JiB2bSkKKyAgICA6IG1fdm0odm0pCisjZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0Vf
TUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgLCBtXyMjbmFtZSMjU291cmNlKG1h
a2VTb3VyY2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoc18jI25hbWUsIGxlbmd0aCks
IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCI8YnVpbHRpbj4iKSkpCisgICAgSlNDX0ZP
UkVBQ0hfQlVJTFRJTihJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYg
RVhQT1NFX0JVSUxUSU5fU1RSSU5HUworeworfQorCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCit7CisgICAgSlNUZXh0UG9z
aXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZTsKKyAgICBQYXJzZXJFcnJvciBlcnJvcjsK
KyAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oJm1f
dm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBKU1BhcnNlQnVpbHRpbiwgSlNQYXJzZVByb2dy
YW1Db2RlLCBlcnJvciwgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOworCisgICAgaWYgKCFw
cm9ncmFtKSB7CisgICAgICAgIGRhdGFMb2coIkZhdGFsIGVycm9yIGNvbXBpbGluZyBidWlsdGlu
IGZ1bmN0aW9uICciLCBuYW1lLnN0cmluZygpLCAiJzogIiwgZXJyb3IubV9tZXNzYWdlKTsKKyAg
ICAgICAgQ1JBU0goKTsKKyAgICB9CisKKyAgICBTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVtZW50
ID0gcHJvZ3JhbS0+c2luZ2xlU3RhdGVtZW50KCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0
YXRlbWVudCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudC0+aXNFeHByU3RhdGVt
ZW50KCkpOworICAgIEV4cHJlc3Npb25Ob2RlKiBmdW5jRXhwciA9IHN0YXRpY19jYXN0PEV4cHJT
dGF0ZW1lbnROb2RlKj4oZXhwclN0YXRlbWVudCktPmV4cHIoKTsKKyAgICBSRUxFQVNFX0FTU0VS
VChmdW5jRXhwcik7CisgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHItPmlzRnVuY0V4cHJOb2Rl
KCkpOworICAgIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkgPSBzdGF0aWNfY2FzdDxGdW5jRXhwck5v
ZGUqPihmdW5jRXhwciktPmJvZHkoKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghcHJvZ3JhbS0+aGFz
Q2FwdHVyZWRWYXJpYWJsZXMoKSk7CisgICAgCisgICAgYm9keS0+c2V0RW5kUG9zaXRpb24ocG9z
aXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keSk7CisgICAg
UkVMRUFTRV9BU1NFUlQoYm9keS0+aWRlbnQoKS5pc051bGwoKSk7CisgICAgCisgICAgLy8gVGhp
cyBmdW5jdGlvbiBhc3N1bWVzIGFuIGlucHV0IHN0cmluZyB0aGF0IHdvdWxkIHJlc3VsdCBpbiBh
IHNpbmdsZSBhbm9ueW1vdXMgZnVuY3Rpb24gZXhwcmVzc2lvbi4KKyAgICBib2R5LT5zZXRFbmRQ
b3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKKyAgICBSRUxFQVNFX0FTU0VSVChi
b2R5KTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNsb3NlZFZhcmlhYmxlIDogcHJvZ3JhbS0+Y2xv
c2VkVmFyaWFibGVzKCkpIHsKKyAgICAgICAgaWYgKGNsb3NlZFZhcmlhYmxlID09IG1fdm0ucHJv
cGVydHlOYW1lcy0+YXJndW1lbnRzLmltcGwoKSkKKyAgICAgICAgY29udGludWU7CisgICAgICAg
IAorICAgICAgICBpZiAoY2xvc2VkVmFyaWFibGUgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT51bmRl
ZmluZWRLZXl3b3JkLmltcGwoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBSRUxF
QVNFX0FTU0VSVChjbG9zZWRWYXJpYWJsZS0+aXNFbXB0eVVuaXF1ZSgpKTsKKyAgICB9CisgICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJm1fdm0sIHNvdXJjZSwgYm9keSwgdHJ1ZSwgVW5s
aW5rZWRCdWlsdGluRnVuY3Rpb24pOworICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+bV9uYW1lVmFs
dWUuc2V0KG1fdm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwganNTdHJpbmcoJm1fdm0sIG5hbWUuc3Ry
aW5nKCkpKTsKKyAgICByZXR1cm4gZnVuY3Rpb25FeGVjdXRhYmxlOworfQorCisjZGVmaW5lIERF
RklORV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpuYW1lIyNFeGVj
dXRhYmxlKCkgXAore1wKKyAgICBpZiAoIW1fIyNuYW1lIyNFeGVjdXRhYmxlKVwKKyAgICAgICAg
bV8jI25hbWUjI0V4ZWN1dGFibGUgPSBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShtXyMjbmFtZSMj
U291cmNlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPmZ1bmN0aW9uTmFtZSk7XAorICAgIHJldHVybiBt
XyMjbmFtZSMjRXhlY3V0YWJsZS5nZXQoKTtcCit9CitKU0NfRk9SRUFDSF9CVUlMVElOKERFRklO
RV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX1NPVVJDRVMKKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRh
Ymxlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQ5YTE5ZTI2MTUwNzk0YTY2OWVjOThlMzk5YmY2N2Y3ZjcxMDY0
MTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbkV4ZWN1dGFibGVzLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQnVpbHRpbkV4ZWN1dGFibGVzX2gKKyNk
ZWZpbmUgQnVpbHRpbkV4ZWN1dGFibGVzX2gKKworI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisj
aW5jbHVkZSAiU291cmNlQ29kZS5oIgorI2luY2x1ZGUgIldlYWsuaCIKKyNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU7CitjbGFzcyBJZGVudGlmaWVyOworY2xhc3MgVk07CisKK2NsYXNzIEJ1aWx0
aW5FeGVjdXRhYmxlcyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8QnVpbHRpbkV4
ZWN1dGFibGVzPiBjcmVhdGUoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBCdWlsdGluRXhlY3V0YWJsZXModm0pKTsKKyAgICB9CisgICAgCisjZGVmaW5lIEVYUE9T
RV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCitjb25zdCBTb3Vy
Y2VDb2RlJiBuYW1lIyNTb3VyY2UoKSB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CisgICAg
CisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTihFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1
bmRlZiBFWFBPU0VfQlVJTFRJTl9TT1VSQ0VTCisgICAgCitwcml2YXRlOgorICAgIEJ1aWx0aW5F
eGVjdXRhYmxlcyhWTSYpOworICAgIFZNJiBtX3ZtOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShjb25zdCBTb3VyY2VDb2RlJiwgY29uc3Qg
SWRlbnRpZmllciYpOworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFt
ZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpXAorICAgIFNvdXJjZUNvZGUgbV8jI25hbWUjI1NvdXJj
ZTsgXAorICAgIFdlYWs8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+IG1fIyNuYW1lIyNFeGVj
dXRhYmxlOworICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4oREVDTEFSRV9CVUlMVElOX1NPVVJDRV9N
RU1CRVJTKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworfTsKKworfQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eVByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmls
ZS5jcHAKaW5kZXggNGMwNTVmZWE1NzM4ZjFjNDYzMjY2ZDRlOWE5MTU0OGExMjkzNDcwOS4uZWFl
ZmU1NGYyZDE1Mjg0YjY0YmY2OTk3MjY1OGNkMWM2M2I0ZWE3NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAK
ICNpbmNsdWRlICJBcnJheVByb2ZpbGUuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2lu
Y2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5o
PgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJp
bnRTdHJlYW0uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUJhc2ljQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlQmFzaWNCbG9jay5jcHAKaW5kZXggZDc0ODlkMzFhYmQ3Yzk5ZjFiYzZmYWZhZTY1ODEx
MTJhYmRhY2ZkYi4uMWEzYjVmNGM3ODA3Yjk0ODhmZjM2NTcyZjc5NGQwYmI5ZjM4ZDI1YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9j
ay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNC
bG9jay5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUJhc2ljQmxvY2su
aCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVz
LmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAKIG5hbWVzcGFjZSBKU0Mgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmNwcAppbmRleCA5MjYzMzRjNDQ0YzljMmYzZGZjYzk1MDEyY2QwYTRh
MDMxMDRkMmQ5Li5hZDRhZTIyOTVlYWM0OGFhNDBhZmJlZTNlYjY5Mjg5NmZjY2FiZDJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2Rl
VXNlRGVmLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRnVsbEJ5dGVjb2Rl
TGl2ZW5lc3MuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIlBy
ZWNpc2VKdW1wVGFyZ2V0cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKaW5kZXggNmE2MDA1NzZhMDAwYWRh
YzhhZjIxNGU5ODgxMzY0NjE5ZjI5YTAxMC4uNGJmODE4ODY2MDI4Yzc5NmE3MmU1NzgzMzJlNDY3
NzU1NmIyMzdhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxM
aW5rSW5mby5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkRGR09wZXJhdGlvbnMu
aCIKICNpbmNsdWRlICJERkdUaHVua3MuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5o
IgogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKIAogI2lmIEVOQUJMRShKSVQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDI2M2VjN2NhZGY0
Zjc5Y2E4MTAyNDQxZTYyYmYyYTA1YjVkZGMzZjIuLjc1MTUwNjU0MjM3NmQ3ZWRjNTk5YWEwMGY5
YjEyNjg1Y2RhMzUyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCkBAIC00MywxMSArNDMsMTMgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRl
ICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgotI2luY2x1ZGUgIkpTQ0pT
VmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkxMSW50RW50cnlw
b2ludC5oIgogI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJOYXRp
dmVFcnJvckNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5o
IgogI2luY2x1ZGUgIlJlZHVjZVdoaXRlc3BhY2UuaCIKQEAgLTE1NjksNyArMTU3MSw3IEBAIENv
ZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5s
aW5rZWRDb2RlQmxvY2sqIHVubGluCiAKICAgICBzZXRDb25zdGFudFJlZ2lzdGVycyh1bmxpbmtl
ZENvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcnMoKSk7CiAgICAgaWYgKHVubGlua2VkQ29kZUJs
b2NrLT51c2VzR2xvYmFsT2JqZWN0KCkpCi0gICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnNbdW5s
aW5rZWRDb2RlQmxvY2stPmdsb2JhbE9iamVjdFJlZ2lzdGVyKCkub2Zmc2V0KCldLnNldCgqbV92
bSwgb3duZXJFeGVjdXRhYmxlLCBtX2dsb2JhbE9iamVjdC5nZXQoKSk7CisgICAgICAgIG1fY29u
c3RhbnRSZWdpc3RlcnNbdW5saW5rZWRDb2RlQmxvY2stPmdsb2JhbE9iamVjdFJlZ2lzdGVyKCku
dG9Db25zdGFudEluZGV4KCldLnNldCgqbV92bSwgb3duZXJFeGVjdXRhYmxlLCBtX2dsb2JhbE9i
amVjdC5nZXQoKSk7CiAgICAgbV9mdW5jdGlvbkRlY2xzLnJlc2l6ZVRvRml0KHVubGlua2VkQ29k
ZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSk7CiAgICAgZm9yIChzaXplX3QgY291bnQg
PSB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCksIGkgPSAwOyBpIDwg
Y291bnQ7ICsraSkgewogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5r
ZWRFeGVjdXRhYmxlID0gdW5saW5rZWRDb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA2OGJjMDM3OWY1NzQ0
YzlhOGY3NDMxZGI2NGY4YWI1NGU2ZTEwNTNmLi40OTk1YzUyY2Y4YjJiMWI0ZDYyODA0NTNlZWQy
N2M3NzRhNDk1NThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCkBAIC01Niw3ICs1Niw2IEBACiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIKICNpbmNsdWRl
ICJPYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKLSNpbmNs
dWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHV0UHJvcGVydHlTbG90LmgiCiAjaW5jbHVk
ZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuY3BwCmluZGV4IGJlNTBjOTc3OGJmMzNlMzM5YWM4MzRiZjU2ZTNiMWU3NTU4
NmZlM2UuLmI3NjQ2ZWQxZWYxNjQxODlmY2ZjN2I1MzY1NmZiNjViZWQwNjRkMjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tKZXR0aXNvbmluZ1dh
dGNocG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRl
ICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdDb21tb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0
aW9uSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCmluZGV4IDY4ZGM2YjA1MzM1NTkwZWM0YzgxYzQy
MzQ2YmI3NGRiYmQ4ZmFjNTYuLjE1Nzg4MDg5MzRkZDNjYzRjZDk3ZDI3MWFlOGFjOGJmZTM5NzQ2
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2lu
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDb2Rl
QmxvY2suaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklu
bGluZXMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuY3Bw
CmluZGV4IDNhNjQ2YTg2YTk0OTE0M2VlMmNmMjMzYjI5YzhmMzgyMWFlOWYzMTEuLmJmYjUwNjEy
MGEyNzA1MTJlYjgxZDg0NGFjZWMyOTFlNzIwNDU0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0aW9uQ291bnRlci5jcHAKQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0
b3IuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9TdHJp
bmdFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5j
cHAKaW5kZXggMWFjNWJiNWEwNGY3NjA1ZDBkZGJjZGVmNjY0ZWQyN2M0ODIwNmU1NC4uZTAwNDJm
OTYyYjQzODE2ZDAwY2E2M2IzMmIyNTM0MzJmMmJjMTQyYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQ
cm9maWxlLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5j
bHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKaW5kZXggZWRlOGEzNjQzN2RkNzhjMmU0NmEyOWQ2YjNl
MDc5ZDNkMmQwZmVlZC4uYzk0MDIyZjk3ZmI4YmQ3OGNkYzVkMTM4ZTZkNWY3MGY0NmQ0ZDMyZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFy
Z2V0cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1w
VGFyZ2V0cy5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKIAorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVz
LmgiCisKIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZSA8c2l6ZV90IHZlY3RvclNpemU+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxv
Y2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcAppbmRleCA5ODZl
MDNkMGNiYTcxODViMzljZWUwMjNmNGFiNmJjOWI4Y2NiNmU0Li4yZjkwZmI2OWY4YzBiNjk5YWQx
MmFjNDYyMTFhMjljNGNhZmJiNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29u
aW5nV2F0Y2hwb2ludC5jcHAKQEAgLTMxLDYgKzMxLDggQEAKICNpbmNsdWRlICJDb2RlQmxvY2su
aCIKICNpbmNsdWRlICJERkdDb21tb24uaCIKICNpbmNsdWRlICJERkdFeGl0UHJvZmlsZS5oIgor
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGlu
ZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAKaW5kZXggZDE4ZGJjMWZmMWUwMTNlNmFkYTdmZjVkNDg3
MWZlYzEwODUxYTQ5Yi4uZjE4NDUzZTU2Njk2NDJlMTZlMTA0ZDJhOGQ0OTM2YWVlM2FkMzY2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAK
QEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIklu
dGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJP
cGNvZGUuaCIKIAogI2lmICFPUyhXSU5ET1dTKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHAKaW5kZXggNzc4OTY1M2YwNTRjYmUxZWRlNjJl
YjBiZWVmN2YxY2FmNjA0ZTAxZC4uMGRiMzU5ZGYzYzI5MDQyN2Q5NTI3MDhkYjE3ZTI1ZTc2YWZj
ZDU3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQ
b2ludGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBv
aW50ZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU3BlY2lhbFBvaW50ZXIuaCIK
IAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5n
V2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAKaW5kZXggNWNmYjNkMWU4ZjUyODVhYmE3MTk0OGY2
ZjNhMzBlZjVlY2VhYjZkZi4uZWM4NmE3MTgwY2Y1NDhkZjY0Njg3NDVmNmEyZjNkMDBkMWJiZmMz
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0
dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcApAQCAtMjksNiArMjksNyBA
QAogI2lmIEVOQUJMRShKSVQpCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJK
U0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAKIG5h
bWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggMWRmYjVhYzZhZDkwOTNmOGY4MTEwMWVmN2YyZTYx
MjMxMWFjMTkzOS4uNDMzOTBkOTY1ZmM1MDM0MDE2ZjdiZmZmMjNlNjhiYjFlMDU0NTUyYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCkBAIC00OSw5ICs0OSw5IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZFByb2dyYW1D
b2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayIsCiBjb25zdCBD
bGFzc0luZm8gVW5saW5rZWRFdmFsQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZEV2YWxD
b2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlu
a2VkRXZhbENvZGVCbG9jaykgfTsKIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrIiwgJkJhc2U6OnNf
aW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KSB9OwogCi1zdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlv
bkNvZGVCbG9jayhWTSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxl
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwg
RGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFy
c2VyRXJyb3ImIGVycm9yKQorc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVy
YXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxl
ck1vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVy
cm9yKQogewotICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBib2R5ID0gcGFyc2U8RnVuY3Rp
b25Cb2R5Tm9kZT4oJnZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0
YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpID8gSlNQYXJzZVN0
cmljdCA6IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VGdW5jdGlvbkNvZGUsIGVycm9yKTsKKyAgICBS
ZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSA9IHBhcnNlPEZ1bmN0aW9uQm9keU5vZGU+KCZ2
bSwgc291cmNlLCBleGVjdXRhYmxlLT5wYXJhbWV0ZXJzKCksIGV4ZWN1dGFibGUtPm5hbWUoKSwg
ZXhlY3V0YWJsZS0+dG9TdHJpY3RuZXNzKCksIEpTUGFyc2VGdW5jdGlvbkNvZGUsIGVycm9yKTsK
IAogICAgIGlmICghYm9keSkgewogICAgICAgICBBU1NFUlQoZXJyb3IubV90eXBlICE9IFBhcnNl
ckVycm9yOjpFcnJvck5vbmUpOwpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhWTSYgdm0sIFVubGlua2Vk
RnVuYwogICAgIGJvZHktPmZpbmlzaFBhcnNpbmcoZXhlY3V0YWJsZS0+cGFyYW1ldGVycygpLCBl
eGVjdXRhYmxlLT5uYW1lKCksIGV4ZWN1dGFibGUtPmZ1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2ds
ZSgpKTsKICAgICBleGVjdXRhYmxlLT5yZWNvcmRQYXJzZShib2R5LT5mZWF0dXJlcygpLCBib2R5
LT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKICAgICAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUoJnZtLCBG
dW5jdGlvbkNvZGUsIEV4ZWN1dGFibGVJbmZvKGJvZHktPm5lZWRzQWN0aXZhdGlvbigpLCBib2R5
LT51c2VzRXZhbCgpLCBib2R5LT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3Ry
dWN0KSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5m
byhib2R5LT5uZWVkc0FjdGl2YXRpb24oKSwgYm9keS0+dXNlc0V2YWwoKSwgYm9keS0+aXNTdHJp
Y3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlu
a2VkQnVpbHRpbkZ1bmN0aW9uKSk7CiAgICAgT3duUHRyPEJ5dGVjb2RlR2VuZXJhdG9yPiBnZW5l
cmF0b3IoYWRvcHRQdHIobmV3IEJ5dGVjb2RlR2VuZXJhdG9yKHZtLCBib2R5LmdldCgpLCByZXN1
bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlKSkpOwogICAgIGVycm9yID0gZ2VuZXJhdG9y
LT5nZW5lcmF0ZSgpOwogICAgIGJvZHktPmRlc3Ryb3lEYXRhKCk7CkBAIC04MiwxMyArODIsMTQg
QEAgdW5zaWduZWQgVW5saW5rZWRDb2RlQmxvY2s6OmFkZE9yRmluZENvbnN0YW50KEpTVmFsdWUg
dikKICAgICByZXR1cm4gYWRkQ29uc3RhbnQodik7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUs
IGJvb2wgaXNGcm9tR2xvYmFsQ29kZSkKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9t
R2xvYmFsQ29kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCkKICAgICA6IEJhc2UoKnZtLCBz
dHJ1Y3R1cmUpCiAgICAgLCBtX251bUNhcHR1cmVkVmFyaWFibGVzKG5vZGUtPmNhcHR1cmVkVmFy
aWFibGVDb3VudCgpKQogICAgICwgbV9mb3JjZVVzZXNBcmd1bWVudHMobm9kZS0+dXNlc0FyZ3Vt
ZW50cygpKQogICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChub2RlLT5pc1N0cmljdE1vZGUoKSkK
ICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMobm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMo
KSkKICAgICAsIG1faXNGcm9tR2xvYmFsQ29kZShpc0Zyb21HbG9iYWxDb2RlKQorICAgICwgbV9p
c0J1aWx0aW5GdW5jdGlvbihraW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uKQogICAgICwg
bV9uYW1lKG5vZGUtPmlkZW50KCkpCiAgICAgLCBtX2luZmVycmVkTmFtZShub2RlLT5pbmZlcnJl
ZE5hbWUoKSkKICAgICAsIG1fcGFyYW1ldGVycyhub2RlLT5wYXJhbWV0ZXJzKCkpCkBAIC0xNjYs
NyArMTY3LDcgQEAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OmNvZGVCbG9ja0ZvcihWTSYgdm0sIGNvbnMKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCi0gICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVGdW5j
dGlvbkNvZGVCbG9jayh2bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVn
Z2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jayogcmVzdWx0ID0gZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayh2bSwgdGhpcywgc291cmNl
LCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBpc0J1aWx0
aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1
bmN0aW9uLCBlcnJvcik7CiAgICAgCiAgICAgaWYgKGVycm9yLm1fdHlwZSAhPSBQYXJzZXJFcnJv
cjo6RXJyb3JOb25lKQogICAgICAgICByZXR1cm4gMDsKQEAgLTIxMCw2ICsyMTEsNyBAQCBVbmxp
bmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgQ29kZVR5cGUgY29kZQogICAgICwgbV9pc1N0cmljdE1vZGUoaW5mby5tX2lzU3RyaWN0
TW9kZSkKICAgICAsIG1faXNDb25zdHJ1Y3RvcihpbmZvLm1faXNDb25zdHJ1Y3RvcikKICAgICAs
IG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9u
KGluZm8ubV9pc0J1aWx0aW5GdW5jdGlvbikKICAgICAsIG1fZmlyc3RMaW5lKDApCiAgICAgLCBt
X2xpbmVDb3VudCgwKQogICAgICwgbV9lbmRDb2x1bW4oVUlOVF9NQVgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IGI5ZGFl
MmQ1YzY5Yzc5Y2VhYWE4MDIzZDJhM2ExZjI2ZDQ2MDk0M2IuLmFiZjZjZjM1YjkzMDZhNGY3YTMw
MWFiMGRmNzY2NmVjNjEyZTM3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC02NiwyNiArNjYsMzUgQEAgdHlwZWRlZiB1
bnNpZ25lZCBVbmxpbmtlZE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOwogdHlwZWRlZiB1bnNpZ25l
ZCBVbmxpbmtlZExMSW50Q2FsbExpbmtJbmZvOwogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewot
ICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBi
b29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yKQorICAgIEV4ZWN1dGFibGVJbmZv
KGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwg
Ym9vbCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKQogICAgICAgICA6IG1f
bmVlZHNBY3RpdmF0aW9uKG5lZWRzQWN0aXZhdGlvbikKICAgICAgICAgLCBtX3VzZXNFdmFsKHVz
ZXNFdmFsKQogICAgICAgICAsIG1faXNTdHJpY3RNb2RlKGlzU3RyaWN0TW9kZSkKICAgICAgICAg
LCBtX2lzQ29uc3RydWN0b3IoaXNDb25zdHJ1Y3RvcikKKyAgICAgICAgLCBtX2lzQnVpbHRpbkZ1
bmN0aW9uKGlzQnVpbHRpbkZ1bmN0aW9uKQogICAgIHsKICAgICB9Ci0gICAgYm9vbCBtX25lZWRz
QWN0aXZhdGlvbjsKLSAgICBib29sIG1fdXNlc0V2YWw7Ci0gICAgYm9vbCBtX2lzU3RyaWN0TW9k
ZTsKLSAgICBib29sIG1faXNDb25zdHJ1Y3RvcjsKKyAgICBib29sIG1fbmVlZHNBY3RpdmF0aW9u
IDogMTsKKyAgICBib29sIG1fdXNlc0V2YWwgOiAxOworICAgIGJvb2wgbV9pc1N0cmljdE1vZGUg
OiAxOworICAgIGJvb2wgbV9pc0NvbnN0cnVjdG9yIDogMTsKKyAgICBib29sIG1faXNCdWlsdGlu
RnVuY3Rpb24gOiAxOworfTsKKworZW51bSBVbmxpbmtlZEZ1bmN0aW9uS2luZCB7CisgICAgVW5s
aW5rZWROb3JtYWxGdW5jdGlvbiwKKyAgICBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwKIH07CiAK
IGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGljIEpTQ2VsbCB7CiBwdWJs
aWM6CisgICAgZnJpZW5kIGNsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlczsKICAgICBmcmllbmQgY2xh
c3MgQ29kZUNhY2hlOworICAgIGZyaWVuZCBjbGFzcyBWTTsKICAgICB0eXBlZGVmIEpTQ2VsbCBC
YXNlOwotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNKiB2
bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlLCBib29s
IGlzRnJvbUdsb2JhbENvZGUgPSBmYWxzZSkKKyAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rp
b25Cb2R5Tm9kZSogbm9kZSwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlLCBVbmxpbmtlZEZ1bmN0aW9u
S2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCkKICAgICB7Ci0gICAgICAgIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVhcCkpIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNv
dXJjZSwgbm9kZSwgaXNGcm9tR2xvYmFsQ29kZSk7CisgICAgICAgIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVhcCkpIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJj
ZSwgbm9kZSwgaXNGcm9tR2xvYmFsQ29kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQpOwogICAgICAg
ICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oKnZtKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNl
OwogICAgIH0KQEAgLTk5LDYgKzEwOCwxNCBAQCBwdWJsaWM6CiAgICAgfQogICAgIHNpemVfdCBw
YXJhbWV0ZXJDb3VudCgpIGNvbnN0OwogICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBjb25z
dCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0OyB9CisgICAgSlNQYXJzZXJTdHJpY3RuZXNz
IHRvU3RyaWN0bmVzcygpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9pc0J1aWx0aW5GdW5j
dGlvbikKKyAgICAgICAgICAgIHJldHVybiBKU1BhcnNlQnVpbHRpbjsKKyAgICAgICAgaWYgKG1f
aXNJblN0cmljdENvbnRleHQpCisgICAgICAgICAgICByZXR1cm4gSlNQYXJzZVN0cmljdDsKKyAg
ICAgICAgcmV0dXJuIEpTUGFyc2VOb3JtYWw7CisgICAgfQogICAgIEZ1bmN0aW9uTmFtZUlzSW5T
Y29wZVRvZ2dsZSBmdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGUoKSBjb25zdCB7IHJldHVybiBt
X2Z1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZTsgfQogCiAgICAgdW5zaWduZWQgZmlyc3RMaW5l
T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdExpbmVPZmZzZXQ7IH0KQEAgLTE0Miw4ICsx
NTksMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0ltbW9ydGFsU3RydWN0
dXJlID0gdHJ1ZTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCisgICAgYm9v
bCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247
IH0KKwogcHJpdmF0ZToKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVj
dHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbkJvZHlOb2RlKiwgYm9vbCBpc0Zyb21H
bG9iYWxDb2RlKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVjdHVy
ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbkJvZHlOb2RlKiwgYm9vbCBpc0Zyb21HbG9i
YWxDb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCk7CiAgICAgV3JpdGVCYXJyaWVyPFVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2s+IG1fY29kZUJsb2NrRm9yQ2FsbDsKICAgICBXcml0ZUJhcnJpZXI8
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3Q7CiAKQEAg
LTE1Miw2ICsxNzEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0luU3RyaWN0Q29udGV4dCA6
IDE7CiAgICAgYm9vbCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIDogMTsKICAgICBib29sIG1faXNG
cm9tR2xvYmFsQ29kZSA6IDE7CisgICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKIAog
ICAgIElkZW50aWZpZXIgbV9uYW1lOwogICAgIElkZW50aWZpZXIgbV9pbmZlcnJlZE5hbWU7CkBA
IC0zMTksNiArMzM5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNOdW1lcmljQ29tcGFyZUZ1
bmN0aW9uKGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKSB7IG1faXNOdW1lcmljQ29tcGFy
ZUZ1bmN0aW9uID0gaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CiAgICAgYm9vbCBpc051bWVy
aWNDb21wYXJlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzTnVtZXJpY0NvbXBhcmVGdW5j
dGlvbjsgfQogCisgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
aXNCdWlsdGluRnVuY3Rpb247IH0KKyAgICAKICAgICB2b2lkIHNocmlua1RvRml0KCkKICAgICB7
CiAgICAgICAgIG1fanVtcFRhcmdldHMuc2hyaW5rVG9GaXQoKTsKQEAgLTUwMCw2ICs1MjIsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1N0cmljdE1vZGUgOiAxOwogICAgIGJvb2wgbV9pc0Nv
bnN0cnVjdG9yIDogMTsKICAgICBib29sIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgOiAxOworICAg
IGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CiAgICAgdW5zaWduZWQgbV9maXJzdExpbmU7
CiAgICAgdW5zaWduZWQgbV9saW5lQ291bnQ7CiAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCmluZGV4IDY4MTBhYjgwMDJjZTZiYjhkNzhlN2ZmMjIyN2Y0YzZlYTdiNzU4
YzIuLmVjNTIxYjUzMDQ2MzkyM2U3NGMwMTBmYTIxOGU1OWVkMmE5YTNjYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCkBAIC0xNzUsNiArMTc1LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2Vu
ZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFAKICNlbmRp
ZgogICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKICAgICAsIG1fZXhwcmVzc2lvblRvb0Rl
ZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGZhbHNlKQogewogICAgIGlmICht
X3Nob3VsZEVtaXREZWJ1Z0hvb2tzKQogICAgICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNGdWxs
U2NvcGVDaGFpbih0cnVlKTsKQEAgLTIyMiw3ICsyMjMsMTMgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb25Cb2R5
LCBVbmwKICNlbmRpZgogICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKICAgICAsIG1fZXhw
cmVzc2lvblRvb0RlZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGNvZGVCbG9j
ay0+aXNCdWlsdGluRnVuY3Rpb24oKSkKIHsKKyAgICBpZiAobV9pc0J1aWx0aW5GdW5jdGlvbikg
eworICAgICAgICBtX3Nob3VsZEVtaXRQcm9maWxlSG9va3MgPSBmYWxzZTsKKyAgICAgICAgbV9z
aG91bGRFbWl0RGVidWdIb29rcyA9IGZhbHNlOworICAgIH0KKwogICAgIGlmIChtX3Nob3VsZEVt
aXREZWJ1Z0hvb2tzKQogICAgICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNGdWxsU2NvcGVDaGFp
bih0cnVlKTsKIApAQCAtNDM4LDYgKzQ0NSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kCiAj
ZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAgICAgLCBtX2V4cHJlc3Npb25U
b29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihmYWxzZSkKIHsKICAgICBt
X2NvZGVCbG9jay0+c2V0TmVlZHNGdWxsU2NvcGVDaGFpbih0cnVlKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmlu
ZGV4IDRlOWYyMTNjOWJmYTZjZjE5NGIxYTE0ZmU5MTllODMzMzdhZTM1ZDkuLjE1ODQyNzRiNzhl
YTZjMGJkMGVmYjBiOTgyNWM4MThiZTBkYmMwNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ2MSw3ICs0
NjEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBzaG91bGRFbWl0RGVidWdIb29r
cygpIHsgcmV0dXJuIG1fc2hvdWxkRW1pdERlYnVnSG9va3M7IH0KICAgICAgICAgCiAgICAgICAg
IGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzU3RyaWN0
TW9kZSgpOyB9Ci0KKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisgICAgICAgIAogICAgIHByaXZh
dGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMYWJlbDsKICAgICAgICAgCkBAIC01NDMsNyArNTQ1
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogbWFrZUZ1bmN0aW9uKEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRl
KG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgYm9keSk7CisgICAgICAgICAgICByZXR1cm4g
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291
cmNlKCksIGJvZHksIGZhbHNlLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGlu
RnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uKTsKICAgICAgICAgfQogCiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRJbml0TGF6eVJlZ2lzdGVyKFJlZ2lzdGVySUQqKTsKQEAgLTY3Nyw2
ICs2NzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIG1fdXNlc0V4Y2VwdGlv
bnM7CiAgICAgICAgIGJvb2wgbV9leHByZXNzaW9uVG9vRGVlcDsKKyAgICAgICAgYm9vbCBtX2lz
QnVpbHRpbkZ1bmN0aW9uOwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAxZmZkNGYzMTE4ODJkMGVl
NWM1NTE0ZjViOGIyNTkzOWQ5NzVlMzc5Li42MmVjYTM2YTEwZDc3MDhhOTI4ZDQzYWMwM2YyZmM4
NjE1Y2VjYTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0yNiwxMCArMjYsMTAgQEAKIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCi0jaW5jbHVkZSAiTm9kZUNvbnN0cnVjdG9ycy5oIgog
CiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIK
KyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAj
aW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtMzgsNiArMzgsNyBA
QAogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJMYWJlbFNjb3BlLmgiCiAjaW5j
bHVkZSAiTGV4ZXIuaCIKKyNpbmNsdWRlICJOb2RlQ29uc3RydWN0b3JzLmgiCiAjaW5jbHVkZSAi
T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFt
ZUFycmF5LmgiCkBAIC01MzUsMzYgKzUzNiwzOSBAQCBSZWdpc3RlcklEKiBDYWxsRnVuY3Rpb25D
YWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAg
ICAgUmVmUHRyPExhYmVsPiBlbmQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwogICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Np
b25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBm
dW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9u
KGRzdCksIGJhc2UuZ2V0KCksIG1faWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5j
dGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRz
dCksIGJhc2UuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuY2FsbCk7CiAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24o
ZHN0LCBmdW5jdGlvbi5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlv
bkNhbGwoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKKyAgICBib29sIGVtaXRDYWxs
Q2hlY2sgPSAhZ2VuZXJhdG9yLmlzQnVpbHRpbkZ1bmN0aW9uKCk7CisgICAgaWYgKGVtaXRDYWxs
Q2hlY2spCisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKGZ1bmN0
aW9uLmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7CisKICAgICB7CiAgICAgICAgIGlmIChtX2FyZ3Mt
Pm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpIHsKICAgICAgICAgICAg
IEFyZ3VtZW50TGlzdE5vZGUqIG9sZExpc3QgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CiAgICAgICAg
ICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKLQor
ICAgICAgICAgICAgCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9u
ID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFz
ZS5nZXQoKSk7CiAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJh
dG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVu
dHMudGhpc1JlZ2lzdGVyKCksIG9sZExpc3QtPm1fZXhwcik7CiAgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7Ci0KICAg
ICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9sZExpc3Q7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9y
LmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAg
ICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3Mp
OwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lz
dGVyKCksIGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJl
dHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwg
Y2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQot
ICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOwotICAgIHsKLSAgICAgICAg
Q2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAgICAgICAg
Z2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0
KCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0
aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRp
dm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0
TGFiZWwocmVhbENhbGwuZ2V0KCkpOworICAgICAgICB7CisgICAgICAgICAgICBDYWxsQXJndW1l
bnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwor
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlv
bi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICB9CisgICAgICAgIGdlbmVyYXRvci5lbWl0
TGFiZWwoZW5kLmdldCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0
KCkpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZS5nZXQoKTsKIH0KIApAQCAtNTg1LDY1ICs1ODks
NjcgQEAgUmVnaXN0ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICBSZWZQdHI8TGFiZWw+IGVuZCA9IGdl
bmVyYXRvci5uZXdMYWJlbCgpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJh
dG9yLmVtaXROb2RlKG1fYmFzZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhz
dWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25F
bmQoKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRH
ZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgbV9pZGVu
dCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uOwogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuY3Rp
b24uZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25BcHBseShmdW5j
dGlvbi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkpOwotICAgIHsKLSAgICAgICAgaWYgKG1heUJlQ2Fs
bCkgewotICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlz
dE5vZGUtPm1fZXhwcikgewotICAgICAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIG9sZExp
c3QgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7Ci0gICAgICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9s
aXN0Tm9kZS0+bV9uZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1f
bGlzdE5vZGUtPm1fbmV4dC0+bV9leHByLT5pc1NpbXBsZUFycmF5KCkpOwotICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoIW1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX25leHQpOwotICAg
ICAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBzdGF0aWNfY2FzdDxBcnJheU5v
ZGUqPihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByKS0+dG9Bcmd1bWVudExpc3Qo
Z2VuZXJhdG9yLnZtKCksIDAsIDApOwotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVz
dGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIENhbGxBcmd1
bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAgICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRM
aXN0LT5tX2V4cHIpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0
dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBj
YWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9k
ZSA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwotICAgICAgICAgICAgICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRv
ci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAg
IENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAgICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rl
cigpLCBvbGRMaXN0LT5tX2V4cHIpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1
bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUg
PSBvbGRMaXN0OworICAgIGJvb2wgZW1pdENhbGxDaGVjayA9ICFnZW5lcmF0b3IuaXNCdWlsdGlu
RnVuY3Rpb24oKTsKKyAgICBpZiAoZW1pdENhbGxDaGVjaykgeworICAgICAgICBmdW5jdGlvbiA9
IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJh
c2UuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYXBwbHkpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHkoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxs
LmdldCgpKTsKKyAgICB9CisgICAgaWYgKG1heUJlQ2FsbCkgeworICAgICAgICBpZiAobV9hcmdz
LT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKSB7CisgICAgICAgICAg
ICBBcmd1bWVudExpc3ROb2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgICAg
ICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KSB7CisgICAgICAgICAgICAgICAg
QVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHItPmlzU2ltcGxlQXJyYXko
KSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+
bV9uZXh0KTsKKyAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBzdGF0aWNfY2Fz
dDxBcnJheU5vZGUqPihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByKS0+dG9Bcmd1
bWVudExpc3QoZ2VuZXJhdG9yLnZtKCksIDAsIDApOworICAgICAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRl
bXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBDYWxsQXJn
dW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgICAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0
LT5tX2V4cHIpOworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1
ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1
bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG1fYXJncy0+bV9s
aXN0Tm9kZS0+bV9uZXh0OwogICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFs
RnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihk
c3QpLCBiYXNlLmdldCgpKTsKICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1
bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIo
KSwgb2xkTGlzdC0+bV9leHByKTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwo
cmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9u
LCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAg
ICAgICAgICAgfQorICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gb2xkTGlzdDsKICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYg
bV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHByb2ZpbGVIb29rUmVnaXN0ZXI7Ci0gICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLnNob3Vs
ZEVtaXRQcm9maWxlSG9va3MoKSkKLSAgICAgICAgICAgICAgICBwcm9maWxlSG9va1JlZ2lzdGVy
ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3Rp
bmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHRoaXNSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2FyZ3MtPm1fbGlzdE5vZGUtPm1f
ZXhwcik7Ci0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXJnc1JlZ2lzdGVyOwotICAg
ICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogYXJncyA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9u
ZXh0OwotICAgICAgICAgICAgaWYgKGFyZ3MtPm1fZXhwci0+aXNSZXNvbHZlTm9kZSgpICYmIGdl
bmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4o
YXJncy0+bV9leHByKS0+aWRlbnRpZmllcigpKSkKLSAgICAgICAgICAgICAgICBhcmdzUmVnaXN0
ZXIgPSBnZW5lcmF0b3IudW5jaGVja2VkUmVnaXN0ZXJGb3JBcmd1bWVudHMoKTsKLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUoYXJncy0+bV9leHByKTsKLQotICAgICAgICAgICAgLy8gRnVuY3Rpb24ucHJvdG90eXBlLmFw
cGx5IGlnbm9yZXMgZXh0cmEgYXJndW1lbnRzLCBidXQgd2Ugc3RpbGwKLSAgICAgICAgICAgIC8v
IG5lZWQgdG8gZXZhbHVhdGUgdGhlbSBmb3Igc2lkZSBlZmZlY3RzLgotICAgICAgICAgICAgd2hp
bGUgKChhcmdzID0gYXJncy0+bV9uZXh0KSkKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dE5vZGUoYXJncy0+bV9leHByKTsKLQotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsVmFy
YXJncyhyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCB0aGlzUmVnaXN0ZXIu
Z2V0KCksIGFyZ3NSZWdpc3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm9m
aWxlSG9va1JlZ2lzdGVyLmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OworICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9h
cmdzKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNS
ZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2Fs
bChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rp
b24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAg
ICAgICAgIH0KLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlz
dE5vZGUtPm1fbmV4dCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9maWxlSG9va1Jl
Z2lzdGVyOworICAgICAgICBpZiAoZ2VuZXJhdG9yLnNob3VsZEVtaXRQcm9maWxlSG9va3MoKSkK
KyAgICAgICAgICAgIHByb2ZpbGVIb29rUmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3Iu
ZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKKyAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9k
ZShtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcik7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBhcmdzUmVnaXN0ZXI7CisgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MgPSBtX2FyZ3Mt
Pm1fbGlzdE5vZGUtPm1fbmV4dDsKKyAgICAgICAgaWYgKGFyZ3MtPm1fZXhwci0+aXNSZXNvbHZl
Tm9kZSgpICYmIGdlbmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHN0YXRpY19jYXN0PFJl
c29sdmVOb2RlKj4oYXJncy0+bV9leHByKS0+aWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIGFy
Z3NSZWdpc3RlciA9IGdlbmVyYXRvci51bmNoZWNrZWRSZWdpc3RlckZvckFyZ3VtZW50cygpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUoYXJncy0+bV9leHByKTsKKworICAgICAgICAvLyBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkg
aWdub3JlcyBleHRyYSBhcmd1bWVudHMsIGJ1dCB3ZSBzdGlsbAorICAgICAgICAvLyBuZWVkIHRv
IGV2YWx1YXRlIHRoZW0gZm9yIHNpZGUgZWZmZWN0cy4KKyAgICAgICAgd2hpbGUgKChhcmdzID0g
YXJncy0+bV9uZXh0KSkKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShhcmdzLT5tX2V4
cHIpOworCisgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbFZhcmFyZ3MocmV0dXJuVmFsdWUuZ2V0
KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBhcmdzUmVnaXN0ZXIu
Z2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQo
KSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICB9Ci0gICAgZ2VuZXJh
dG9yLmVtaXRMYWJlbChyZWFsQ2FsbC5nZXQoKSk7Ci0gICAgeworICAgIGlmIChlbWl0Q2FsbENo
ZWNrKSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOworICAgICAgICBn
ZW5lcmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKICAgICAgICAgQ2FsbEFyZ3VtZW50
cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwogICAgICAg
ICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBO
b0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAg
ICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0KCkpOwogICAgIHJldHVybiByZXR1
cm5WYWx1ZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Ny
ZWF0ZV9oYXNoX3RhYmxlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxl
CmluZGV4IDM5Nzk3NmIwNmM3YTliNTgzNjMzMjkwMGE2ZWJiOTNlYzY4Yjc0ODYuLmNhZDY1YmM0
Y2M4ODhlMzE0Zjg4ZDY2NWRkNGE2ZTY0NWEwOWEzNTUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Y3JlYXRlX2hhc2hfdGFibGUKQEAgLTI4OSw3ICsyODksMTcgQEAgc3ViIG91dHB1dCgpIHsKICAg
ICAgICAgICAgICRpbnRyaW5zaWMgPSAiUmVnRXhwVGVzdEludHJpbnNpYyIgaWYgKCRrZXkgZXEg
InRlc3QiKTsKICAgICAgICAgfQogCisgICAgICAgIGlmICgkdmFsdWVzWyRpXXsidHlwZSJ9IGVx
ICJGdW5jdGlvbiIpICB7CisgICAgICAgICAgICBteSAkdGFibGVIZWFkID0gJG5hbWU7CisgICAg
ICAgICAgICAkdGFibGVIZWFkID1+IHMvVGFibGUkLy87CisgICAgICAgICAgICBwcmludCAiICNp
ZiBKU0NfQlVJTFRJTl9FWElTVFMoIiAuIHVjKCR0YWJsZUhlYWQgLiAka2V5KSAuIilcbiI7Cisg
ICAgICAgICAgICBwcmludCAiICAgeyBcIiRrZXlcIiwgKCgkYXR0cnNbJGldKSAmIH5GdW5jdGlv
bikgfCBCdWlsdGluLCAkaW50cmluc2ljLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8QnVpbHRpbkdl
bmVyYXRvcj4oIiAuICR0YWJsZUhlYWQgLiB1Y2ZpcnN0KCRrZXkpIC4gIkNvZGVHZW5lcmF0b3Ip
LCAoaW50cHRyX3QpJHNlY29uZFZhbHVlIH0sXG4iOworICAgICAgICAgICAgcHJpbnQgIiAjZWxz
ZVxuIgorICAgICAgICB9CiAgICAgICAgIHByaW50ICIgICB7IFwiJGtleVwiLCAkYXR0cnNbJGld
LCAkaW50cmluc2ljLCAoaW50cHRyX3QpIiAuICRmaXJzdENhc3RTdHIgLiAiKCRmaXJzdFZhbHVl
KSwgKGludHB0cl90KSIgLiAkc2Vjb25kQ2FzdFN0ciAuICIoJHNlY29uZFZhbHVlKSB9LFxuIjsK
KyAgICAgICAgaWYgKCR2YWx1ZXNbJGldeyJ0eXBlIn0gZXEgIkZ1bmN0aW9uIikgIHsKKyAgICAg
ICAgICAgIHByaW50ICIgI2VuZGlmXG4iCisgICAgICAgIH0KICAgICAgICAgJGkrKzsKICAgICB9
CiAgICAgcHJpbnQgIiAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIDAsIDAgfVxuIjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCmluZGV4IGFmYTc1NDZjODA2NWI4
ZjNiMTcwZGY4MWEzMzcyYThmMDY5YWRiNDEuLjNhMWFiM2VkNzY3YzFiY2QzZDg0MzUwZTFlMzA5
NmFjZjVhYTc4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2Vy
LmNwcApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgog
I2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
LSNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIK
ICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNp
bmNsdWRlICJQYXJzZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXZhaWxhYmlsaXR5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXZhaWxh
YmlsaXR5LmNwcAppbmRleCA2NjljMmI0MzkyNDZiMDdkZGI1N2QxMTc4ODMwMjlhODhkM2E0YWZm
Li5kMGJjZWQxY2ZiZDIzNzQ2NzkzN2VlMWI2N2Y5MzJhNjYzNzRmOGQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0F2YWlsYWJpbGl0eS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdmFpbGFiaWxpdHkuY3BwCkBAIC0yNiw2ICsyNiw4IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiREZHQXZhaWxhYmlsaXR5LmgiCiAKKyNp
bmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgorCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKICNp
bmNsdWRlICJERkdOb2RlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QmxvY2tJbnNlcnRpb25TZXQuY3BwCmluZGV4IDI1MmQ2MzhlZTEyZDBkMjI0NzNlNzdlNTRkZTc0
ODc1Y2YxYWViZTkuLjI1ZGVhNTQ5MDljNjIwMzM3YWM4MDc0ODRiOWFhYmRhOTc3NWFmM2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmxvY2tJbnNlcnRpb25TZXQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmxvY2tJbnNlcnRpb25TZXQu
Y3BwCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiREZH
QmxvY2tJbnNlcnRpb25TZXQuaCIKIAorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCisK
ICNpZiBFTkFCTEUoREZHX0pJVCkKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRl
eCA1OGYzNjkxNjUwZGZjNjRkNGNlNzU2YjAyNTZiYzlkMTVmZTk2NjZjLi5iYTQyOTdkYjQxMzQ1
OTJmNjhjN2MyMGMxZmZjM2RlNGExOWVmODg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUg
IkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiSlNB
Y3RpdmF0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJP
cGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAjaW5jbHVkZSAi
UHV0QnlJZFN0YXR1cy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDU0VQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNw
cAppbmRleCBkM2JmYzUwYmRlOGQ2ZDc4NDY4ZGZkMDdkZTM2YjllZmFhNWRiMWI3Li5iYWM5NmI3
NjVhYzY4NjE3YzEzMjkzNWZjZWYwYjYyMTc3ZmNmNTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NTRVBoYXNlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRGR0dy
YXBoLmgiCiAjaW5jbHVkZSAiREZHUGhhc2UuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgi
CisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlIDxhcnJheT4KICNpbmNs
dWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggZDFiZWI5MzEyNDU4YjUyOWI4ODhiMWMxOWVmZTVj
Y2JjNmIxNGJmYi4uMmM5NjE5ZTc4NTUzZTdkODAzZjBhYzQyOTEzOWRiZmRlMTgyMGQwZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbi5o
IgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMu
aCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbW1vbi5jcHAKaW5kZXggYWRiMDhiNTk1ZWQ0MWQzNDY4ZjJlYjFkODliODAw
ZjcxMGIwMzRhMy4uODczOGM1Y2RmY2NjZmRjN2M5ZjI2OTIyNjIxYWE1MzdmOTk3YjE2OSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmNwcApAQCAtMjksNiArMjksNyBAQAog
I2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVkZSAiREZHTm9kZS5oIgorI2luY2x1ZGUgIkpT
RnVuY3Rpb25JbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBXVEYgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbXBpbGF0aW9uS2V5LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29tcGlsYXRpb25LZXkuY3BwCmluZGV4IGQzMWFjOWUyZDU4YWQ1
ZmQyNmM5YzI3ZDU2ZDVkMjg0ODRkNWRjZjguLjA5ZjVlMGNhYmE1YTI5YmMyNzYyMjhlOTE2Yjhm
ODUzZDJlOGMwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29t
cGlsYXRpb25LZXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tcGls
YXRpb25LZXkuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiREZHQ29tcGlsYXRpb25L
ZXkuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25Jbmxp
bmVzLmgiCiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwCmluZGV4IGY2NTg3ZjQ3ZjA0OTFk
ZTU4NDY3YzQ3MzY0ZTY1MWU3ZmM2NDc2NDguLmYxMDEzYTNhODE5NTM2YzM3Y2ViOGFiOGQ2NDcz
MDBmNTI4NjQ5MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVz
aXJlZElkZW50aWZpZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rl
c2lyZWRJZGVudGlmaWVycy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoREZHX0pJ
VCkKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVz
LmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkVHJhbnNpdGlvbnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkVHJhbnNpdGlvbnMuY3BwCmluZGV4IDBjZmEw
MGY2ZjlkZGQ4NTU4YjAxOTZmZTcwMjUyMTcxMmNlYTgzMWQuLjY2N2MzYjc2ZmY2MmQ3NDA5N2Rh
YmQyM2I5ZTFmMDYxNTdiMmE1YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRGVzaXJlZFRyYW5zaXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Rlc2lyZWRUcmFuc2l0aW9ucy5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbkRhdGEuaCIKKyNpbmNsdWRlICJK
U0Z1bmN0aW9uSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKaW5kZXggMTM1Y2E4NWZjOTE3NzAx
ZTM1NTI0NWM5YjAxMDBjMjBmZWViOWE3MS4uNjBjNGFlNDJmZTJmNGYxMjRlMjRiNzg1OGEyZGFi
MzQ3Y2JjOTg4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKQEAgLTM2
LDYgKzM2LDcgQEAKICNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmgiCiAjaW5jbHVk
ZSAiSklULmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlv
bklubGluZXMuaCIKICNpbmNsdWRlICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgog
I2luY2x1ZGUgIk9wZXJhbmRzSW5saW5lcy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW52YWxpZGF0aW9uUG9pbnRJ
bmplY3Rpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludmFsaWRh
dGlvblBvaW50SW5qZWN0aW9uUGhhc2UuY3BwCmluZGV4IGQ3MWE3Y2JkYWI3NzYyMDMzM2FkMTdl
YWJkN2JkMDdjZTlmYmU1MjguLmI1NjU4Y2UyNmU0MmRjMTE3ZWEyZjY3ZTMxZjFiMTU2MGE1MmM1
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW52YWxpZGF0aW9u
UG9pbnRJbmplY3Rpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJbnZhbGlkYXRpb25Qb2ludEluamVjdGlvblBoYXNlLmNwcApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHSW5zZXJ0aW9uU2V0LmgiCiAjaW5j
bHVkZSAiREZHUGhhc2UuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1
ZGUgIk9wZXJhdGlvbnMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggMmZmMGMzNDE0
NmUyYzBiYTJmZjc2YzRkM2Y3YzQ2YmEzZTI1NTE0Ny4uOTA0NGNkYzZiOGMzYWQ0YTFlOTQxODhk
ZDFkMGUyMDBlNjlmYjk5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAj
aW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgorI2luY2x1ZGUgIkpTU3Ry
aW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk5hbWVJbnN0YW5jZS5oIgogI2luY2x1ZGUgIk9iamVj
dENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5zIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmNGI2ZDQ5OWYwMjVjMDUz
YjJmOTdiNmYxMDBlODU1MDQ2ZjNlNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMKQEAgLTAsMCArMSwzMDQgQEAKKyMhL3Vzci9i
aW4vcHl0aG9uCisjIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisjIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisjIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyMgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgZmlsZWNtcAoraW1wb3J0IGZubWF0Y2gK
K2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3lzCitpbXBvcnQg
ZGF0ZXRpbWUKK2ltcG9ydCBqc29uCisKK2NvcHlyaWdodFRleHQgPSAiIiIgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqL1xuCisiIiIKKworZ2VuZXJhdG9yU3RyaW5nID0g
Ii8qIEdlbmVyYXRlZCBieSAlcyBkbyBub3QgaGFuZCBlZGl0LiAqL1xuIiAlIG9zLnBhdGguYmFz
ZW5hbWUoX19maWxlX18pCisKK2Z1bmN0aW9uSGVhZFJlZ0V4cCA9IHJlLmNvbXBpbGUociJmdW5j
dGlvblxzK1x3K1xzKlwoLio/XCkiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorZnVuY3Rpb25OYW1l
UmVnRXhwID0gcmUuY29tcGlsZShyImZ1bmN0aW9uXHMrKFx3KylccypcKCIsIHJlLk1VTFRJTElO
RSB8IHJlLlMpCitmdW5jdGlvblBhcmFtZXRlckZpbmRlciA9IHJlLmNvbXBpbGUociJeZnVuY3Rp
b25ccysoPzpcdyspXHMqXCgoKD86XHMqXHcrKT9ccyooPzpccyosXHMqXHcrKSopP1wpIiwgcmUu
TVVMVElMSU5FIHwgcmUuUykKKworbXVsdGlsaW5lQ29tbWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUo
ciJcL1wqLio/XCpcLyIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitzaW5nbGVMaW5lQ29tbWVudFJl
Z0V4cCA9IHJlLmNvbXBpbGUociJcL1wvLio/XG4iLCByZS5NVUxUSUxJTkUgfCByZS5TKQorCitk
ZWYgZ2V0Q29weXJpZ2h0KHNvdXJjZSk6CisgICAgY29weXJpZ2h0QmxvY2sgPSBtdWx0aWxpbmVD
b21tZW50UmVnRXhwLmZpbmRhbGwoc291cmNlKVswXQorICAgIGNvcHlyaWdodEJsb2NrID0gY29w
eXJpZ2h0QmxvY2tbOmNvcHlyaWdodEJsb2NrLmluZGV4KCJSZWRpc3RyaWJ1dGlvbiIpXQorICAg
IGNvcHlSaWdodExpbmVzID0gW10KKworICAgIGZvciBsaW5lIGluIGNvcHlyaWdodEJsb2NrLnNw
bGl0KCJcbiIpOgorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIvKiIsICIiKQorICAgICAg
ICBsaW5lID0gbGluZS5yZXBsYWNlKCIqLyIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBs
YWNlKCIqIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIkNvcHlyaWdodCIsICIi
KQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCJjb3B5cmlnaHQiLCAiIikKKyAgICAgICAg
bGluZSA9IGxpbmUucmVwbGFjZSgiKEMpIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxh
Y2UoIihjKSIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgIGlmIGxl
bihsaW5lKSA9PSAwOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBjb3B5UmlnaHRM
aW5lcy5hcHBlbmQobGluZSkKKyAgICAKKyAgICByZXR1cm4gbGlzdChzZXQoY29weVJpZ2h0TGlu
ZXMpKQorCisKKworZGVmIGdldEZ1bmN0aW9ucyhzb3VyY2UpOgorCisgICAgc291cmNlID0gbXVs
dGlsaW5lQ29tbWVudFJlZ0V4cC5zdWIoIi8qKi8iLCBzaW5nbGVMaW5lQ29tbWVudFJlZ0V4cC5z
dWIoIi8vXG4iLCBzb3VyY2UpKQorCisgICAgbWF0Y2hlcyA9IFsgZiBmb3IgZiBpbiBmdW5jdGlv
bkhlYWRSZWdFeHAuZmluZGl0ZXIoc291cmNlKV0KKyAgICBmdW5jdGlvbkJvdW5kcyA9IFtdCisg
ICAgc3RhcnQgPSAwCisgICAgZW5kID0gMAorICAgIGZvciBtYXRjaCBpbiBtYXRjaGVzOgorICAg
ICAgICBzdGFydCA9IG1hdGNoLnN0YXJ0KCkKKyAgICAgICAgaWYgc3RhcnQgPCBlbmQ6CisgICAg
ICAgICAgICBjb250aW51ZQorICAgICAgICBlbmQgPSBtYXRjaC5lbmQoKQorICAgICAgICB3aGls
ZSBzb3VyY2VbZW5kXSAhPSAneyc6CisgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAg
IGRlcHRoID0gMQorICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgIHdoaWxlIGRlcHRoID4g
MDoKKyAgICAgICAgICAgIGlmIHNvdXJjZVtlbmRdID09ICd7JzoKKyAgICAgICAgICAgICAgICBk
ZXB0aCA9IGRlcHRoICsgMQorICAgICAgICAgICAgZWxpZiBzb3VyY2VbZW5kXSA9PSAnfSc6Cisg
ICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCAtIDEKKyAgICAgICAgICAgIGVuZCA9IGVuZCAr
IDEKKyAgICAgICAgZnVuY3Rpb25Cb3VuZHMuYXBwZW5kKChzdGFydCwgZW5kKSkKKworICAgIGZ1
bmN0aW9ucyA9IFtzb3VyY2Vbc3RhcnQ6ZW5kXS5zdHJpcCgpIGZvciAoc3RhcnQsIGVuZCkgaW4g
ZnVuY3Rpb25Cb3VuZHNdCisgICAgcmVzdWx0ID0gW10KKyAgICBmb3IgZnVuY3Rpb24gaW4gZnVu
Y3Rpb25zOgorICAgICAgICBmdW5jdGlvbiA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAuc3ViKCIi
LCBmdW5jdGlvbikKKyAgICAgICAgZnVuY3Rpb25OYW1lID0gZnVuY3Rpb25OYW1lUmVnRXhwLmZp
bmRhbGwoZnVuY3Rpb24pWzBdCisgICAgICAgIGZ1bmN0aW9uUGFyYW1ldGVycyA9IGZ1bmN0aW9u
UGFyYW1ldGVyRmluZGVyLmZpbmRhbGwoZnVuY3Rpb24pWzBdLnNwbGl0KCcsJykKKyAgICAgICAg
aWYgbGVuKGZ1bmN0aW9uUGFyYW1ldGVyc1swXSkgPT0gMDoKKyAgICAgICAgICAgIGZ1bmN0aW9u
UGFyYW1ldGVycyA9IFtdCisgICAgICAgICAgICAKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgoZnVu
Y3Rpb25OYW1lLCBmdW5jdGlvbiwgZnVuY3Rpb25QYXJhbWV0ZXJzKSkKKyAgICByZXR1cm4gcmVz
dWx0CisgICAgICAgIAorCitkZWYgZ2VuZXJhdGVDb2RlKHNvdXJjZSk6CisgICAgaW5wdXRGaWxl
ID0gb3Blbihzb3VyY2UsICJyIikKKyAgICBiYXNlTmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoc291
cmNlKS5yZXBsYWNlKCIuanMiLCAiIikKKyAgICAKKyAgICBzb3VyY2UgPSAiIgorICAgIGZvciBs
aW5lIGluIGlucHV0RmlsZToKKyAgICAgICAgc291cmNlID0gc291cmNlICsgbGluZQorICAgIAor
ICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAiY3lnd2luIjoKKyAgICAgICAgc291cmNlID0gc291cmNl
LnJlcGxhY2UoIlxyXG4iLCAiXG4iKQorICAgIHJldHVybiAoYmFzZU5hbWUsIGdldEZ1bmN0aW9u
cyhzb3VyY2UpLCBnZXRDb3B5cmlnaHQoc291cmNlKSkKKworZGVmIG1hbmdsZU5hbWUob2JqZWN0
LCBuYW1lKToKKyAgICBxTmFtZSA9IG9iamVjdCArICIuIiArIG5hbWUKKyAgICBtYW5nbGVkTmFt
ZSA9ICIiCisgICAgaSA9IDAKKyAgICB3aGlsZSBpIDwgbGVuKHFOYW1lKToKKyAgICAgICAgaWYg
cU5hbWVbaV0gPT0gJy4nOgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZSAr
IHFOYW1lW2kgKyAxXS51cHBlcigpCisgICAgICAgICAgICBpID0gaSArIDEKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWUgKyBxTmFtZVtpXQorICAg
ICAgICBpID0gaSArIDEKKyAgICByZXR1cm4gbWFuZ2xlZE5hbWUKKworYnVpbHRpbnMgPSBbXQor
CitiYXNlTmFtZSA9IHN5cy5hcmd2Wy0xXQorYnVpbHRpbl9kZWZpbml0aW9ucyA9IHN5cy5hcmd2
WzE6LTFdCisob3V0cHV0X2Jhc2UsIF8pID0gb3MucGF0aC5zcGxpdGV4dChzeXMuYXJndlstMV0p
CisKK2NvcHlyaWdodHMgPSBbXQorZm9yIGZpbGUgaW4gYnVpbHRpbl9kZWZpbml0aW9uczoKKyAg
ICBpZiBmbm1hdGNoLmZubWF0Y2goZmlsZSwgJyouanMnKToKKyAgICAgICAgKGJhc2VOYW1lLCBm
dW5jdGlvbnMsIG9iamVjdENvcHlyaWdodHMpID0gZ2VuZXJhdGVDb2RlKGZpbGUpCisgICAgICAg
IGNvcHlyaWdodHMuZXh0ZW5kKG9iamVjdENvcHlyaWdodHMpCisgICAgICAgIGJ1aWx0aW5zLmFw
cGVuZCgoYmFzZU5hbWUsIGZ1bmN0aW9ucykpCisKK2NvcHlyaWdodHMgPSBsaXN0KHNldChjb3B5
cmlnaHRzKSkKKworY29weXJpZ2h0Qm9keSA9ICIiCitmb3IgY29weXJpZ2h0IGluIGNvcHlyaWdo
dHM6CisgICAgY29weXJpZ2h0Qm9keSA9IGNvcHlyaWdodEJvZHkgKyIgKiBDb3B5cmlnaHQgKEMp
ICIgKyBjb3B5cmlnaHQgKyAiXG4iCisKK2J1aWx0aW5zSGVhZGVyID0gb3BlbihvdXRwdXRfYmFz
ZSArICIuaC50bXAiLCAidyIpCitidWlsdGluc0ltcGxlbWVudGF0aW9uID0gb3BlbihvdXRwdXRf
YmFzZSArICIuY3BwLnRtcCIsICJ3IikKK2NvcHlyaWdodFRleHQgPSAiLypcbiIgKyBjb3B5cmln
aHRCb2R5ICsgY29weXJpZ2h0VGV4dAorYnVpbHRpbnNIZWFkZXIud3JpdGUoIiIiJXMKKyVzCisK
KyNpZm5kZWYgSlNDQnVpbHRpbnNfSAorI2RlZmluZSBKU0NCdWlsdGluc19ICisKK25hbWVzcGFj
ZSBKU0MgeworCitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CitjbGFzcyBJZGVudGlmaWVyOwor
Y2xhc3MgSlNHbG9iYWxPYmplY3Q7CitjbGFzcyBTb3VyY2VDb2RlOworY2xhc3MgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU7CitjbGFzcyBWTTsKKworRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVh
dGVCdWlsdGluRXhlY3V0YWJsZShWTSYsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwgY29u
c3QgU291cmNlQ29kZSYpOworCisiIiIgJSAoZ2VuZXJhdG9yU3RyaW5nLCBjb3B5cmlnaHRUZXh0
KSkKKworY29kZVJlZmVyZW5jZXMgPSBbXQorCitmb3IgKG9iamVjdE5hbWUsIGZ1bmN0aW9ucykg
aW4gYnVpbHRpbnM6CisgICAgcHJpbnQoIkdlbmVyYXRpbmcgYmluZGluZ3MgZm9yIHRoZSAlcyBi
dWlsdGluLiIgJSBvYmplY3ROYW1lKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIvKiAlcyBm
dW5jdGlvbnMgKi9cbiIgJSBvYmplY3ROYW1lKQorICAgIGZvciAobmFtZSwgaW1wbGVtZW50YXRp
b24sIF8pIGluIGZ1bmN0aW9uczoKKyAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVOYW1lKG9i
amVjdE5hbWUsIG5hbWUpCisgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWVbMF0ubG93
ZXIoKSArIG1hbmdsZWROYW1lWzE6XSArICJDb2RlIgorICAgICAgICBjb2RlUmVmZXJlbmNlcy5h
cHBlbmQoKG1hbmdsZWROYW1lLCBuYW1lLCBpbXBsZW1lbnRhdGlvbikpCisgICAgICAgIGJ1aWx0
aW5zSGVhZGVyLndyaXRlKCJleHRlcm4gY29uc3QgY2hhciogc18lcztcbiIgJSBtYW5nbGVkTmFt
ZSkKKyAgICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoImV4dGVybiBjb25zdCBpbnQgc18lc0xl
bmd0aDtcbiIgJSBtYW5nbGVkTmFtZSkKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiXG4iKQor
ICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19GT1JFQUNIXyVzX0JVSUxUSU4o
bWFjcm8pIFxcXG4iICUgb2JqZWN0TmFtZS5yZXBsYWNlKCIuIiwgIl8iKS51cHBlcigpKQorICAg
IGZvciAobmFtZSwgaW1wbGVtZW50YXRpb24sIGFyZ3VtZW50cykgaW4gZnVuY3Rpb25zOgorICAg
ICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZU5hbWUob2JqZWN0TmFtZSwgbmFtZSkKKyAgICAgICAg
YnVpbHRpbnNIZWFkZXIud3JpdGUoIiAgICBtYWNybyglcywgJXMsICVkKSBcXFxuIiAlIChuYW1l
LCBtYW5nbGVkTmFtZSwgbGVuKGFyZ3VtZW50cykpKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRl
KCJcbiIpCisgICAgZm9yIChuYW1lLCBpbXBsZW1lbnRhdGlvbiwgYXJndW1lbnRzKSBpbiBmdW5j
dGlvbnM6CisgICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19CVUlMVElO
XyVzIDFcbiIgJSBtYW5nbGVOYW1lKG9iamVjdE5hbWUsIG5hbWUpLnVwcGVyKCkpCisgICAgYnVp
bHRpbnNIZWFkZXIud3JpdGUoIlxuXG4iKQorbmFtZXMgPSBbXQorYnVpbHRpbnNIZWFkZXIud3Jp
dGUoIiNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTihtYWNybylcXFxuIikKK2ZvciAoY29kZVJl
ZmVyZW5jZSwgZnVuY3Rpb25OYW1lLCBzb3VyY2UpIGluIGNvZGVSZWZlcmVuY2VzOgorICAgIGJ1
aWx0aW5zSGVhZGVyLndyaXRlKCIgICAgbWFjcm8oJXMsICVzLCBzXyVzTGVuZ3RoKSBcXFxuIiAl
IChjb2RlUmVmZXJlbmNlLCBmdW5jdGlvbk5hbWUsIGNvZGVSZWZlcmVuY2UpKQorICAgIG5hbWVz
LmFwcGVuZChmdW5jdGlvbk5hbWUpCisKK2J1aWx0aW5zSGVhZGVyLndyaXRlKCJcblxuIikKK2J1
aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05f
TkFNRShtYWNybykgXFxcbiIpCitmb3IgbmFtZSBpbiBzb3J0ZWQoc2V0KG5hbWVzKSk6CisgICAg
YnVpbHRpbnNIZWFkZXIud3JpdGUoIiAgICBtYWNybyglcykgXFxcbiIgJSBuYW1lKQorYnVpbHRp
bnNIZWFkZXIud3JpdGUoIiIiCisKKyNkZWZpbmUgSlNDX0RFQ0xBUkVfQlVJTFRJTl9HRU5FUkFU
T1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKKyAgICBGdW5jdGlv
bkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoVk0mKTsKKworSlNDX0ZPUkVBQ0hfQlVJ
TFRJTihKU0NfREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBKU0NfREVDTEFSRV9C
VUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5lIEpTQ19CVUlMVElOX0VYSVNUUyhuYW1lKSBkZWZp
bmVkKEpTQ19CVUlMVElOXyMjbmFtZSkKKworfQorCisjZW5kaWYKKworIiIiKQorCitidWlsdGlu
c0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIiVzCislcworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgorCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVz
LmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIK
KyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworIiIiICAlIChnZW5lcmF0b3JT
dHJpbmcsIGNvcHlyaWdodFRleHQpKQorCitmb3IgKGNvZGVSZWZlcmVuY2UsIG5hbWUsIHNvdXJj
ZSkgaW4gY29kZVJlZmVyZW5jZXM6CisgICAgc291cmNlID0gIihmdW5jdGlvbiAiICsgc291cmNl
W3NvdXJjZS5pbmRleCgiKCIpOl0gKyAiKSIKKyAgICBsaW5lcyA9IGpzb24uZHVtcHMoc291cmNl
KVsxOi0xXS5zcGxpdCgiXFxuIikKKyAgICBzb3VyY2VMZW5ndGggPSBsZW4oc291cmNlKQorICAg
IHNvdXJjZSA9ICIiCisgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgIHNvdXJjZSA9IHNv
dXJjZSArICgiICAgIFwiJXNcXG5cIiBcXFxuIiAlIGxpbmUpCisgICAgYnVpbHRpbnNJbXBsZW1l
bnRhdGlvbi53cml0ZSgiY29uc3QgY2hhciogc18lcyA9XG4lcztcblxuIiAlIChjb2RlUmVmZXJl
bmNlLCBzb3VyY2UpKQorICAgIGJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoImNvbnN0IGlu
dCBzXyVzTGVuZ3RoID0gJWQ7XG5cbiIgJSAoY29kZVJlZmVyZW5jZSwgc291cmNlTGVuZ3RoICsg
MSkpICMgKyAxIGZvciBcbgorCitidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIgorRnVu
Y3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShWTSYgdm0sIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSkKK3sKKyAgICB1bnNpZ25lZCBsaW5lQ291bnQgPSB1bmxpbmtlZEV4ZWN1dGFibGUt
PmxpbmVDb3VudCgpOworICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gMTsKKyAgICB1bnNpZ25l
ZCBzb3VyY2VMZW5ndGggPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnNvdXJjZUxlbmd0aCgpOworICAg
IGJvb2wgZW5kQ29sdW1uSXNPblN0YXJ0TGluZSA9ICFsaW5lQ291bnQ7CisgICAgdW5zaWduZWQg
ZW5kQ29sdW1uRXhjbHVkaW5nQnJhY2VzID0gdW5saW5rZWRFeGVjdXRhYmxlLT51bmxpbmtlZEJv
ZHlFbmRDb2x1bW4oKSArIChlbmRDb2x1bW5Jc09uU3RhcnRMaW5lID8gMCA6IDEpOworICAgIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0ID0gdW5saW5rZWRFeGVjdXRhYmxlLT5zdGFydE9mZnNldCgpOwor
ICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0RXhjbHVkaW5nT3BlbkJyYWNlID0gc3RhcnRPZmZzZXQg
KyAxOworICAgIHVuc2lnbmVkIGVuZE9mZnNldEV4Y2x1ZGluZ0Nsb3NlQnJhY2UgPSBzdGFydE9m
ZnNldCArIHNvdXJjZUxlbmd0aCAtIDE7CisgICAgU291cmNlQ29kZSBib2R5U291cmNlKHNvdXJj
ZS5wcm92aWRlcigpLCBzdGFydE9mZnNldEV4Y2x1ZGluZ09wZW5CcmFjZSwgZW5kT2Zmc2V0RXhj
bHVkaW5nQ2xvc2VCcmFjZSwgMCwgc3RhcnRDb2x1bW4pOworICAgIHJldHVybiBGdW5jdGlvbkV4
ZWN1dGFibGU6OmNyZWF0ZSh2bSwgYm9keVNvdXJjZSwgdW5saW5rZWRFeGVjdXRhYmxlLCAwLCBs
aW5lQ291bnQsIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW5FeGNsdWRpbmdCcmFjZXMsIGZhbHNlKTsK
K30KKworI2RlZmluZSBKU0NfREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5j
dGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCitGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1l
IyNHZW5lcmF0b3IoVk0mIHZtKSBcXAoreyBcXAorICAgIHJldHVybiBjcmVhdGVCdWlsdGluRXhl
Y3V0YWJsZSh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxl
KCksIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyBcXAorfQor
CitKU0NfRk9SRUFDSF9CVUlMVElOKEpTQ19ERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5k
ZWYgSlNDX0RFRklORV9CVUlMVElOX0dFTkVSQVRPUgorfQorCisiIiIpCisKK2J1aWx0aW5zSGVh
ZGVyLmNsb3NlKCkKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24uY2xvc2UoKQorCitpZiAobm90IG9z
LnBhdGguZXhpc3RzKG91dHB1dF9iYXNlICsgIi5oIikpIG9yIChub3QgZmlsZWNtcC5jbXAob3V0
cHV0X2Jhc2UgKyAiLmgudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmgiLCBzaGFsbG93PUZhbHNlKSk6
CisgICAgb3MucmVuYW1lKG91dHB1dF9iYXNlICsgIi5oLnRtcCIsIG91dHB1dF9iYXNlICsgIi5o
IikKK2Vsc2U6CisgICAgb3MucmVtb3ZlKG91dHB1dF9iYXNlICsgIi5oLnRtcCIpCisKK2lmIChu
b3Qgb3MucGF0aC5leGlzdHMob3V0cHV0X2Jhc2UgKyAiLmNwcCIpKSBvciAobm90IGZpbGVjbXAu
Y21wKG91dHB1dF9iYXNlICsgIi5jcHAudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmNwcCIsIHNoYWxs
b3c9RmFsc2UpKToKKyAgICBvcy5yZW5hbWUob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCBvdXRw
dXRfYmFzZSArICIuY3BwIikKK2Vsc2U6CisgICAgb3MucmVtb3ZlKG91dHB1dF9iYXNlICsgIi5j
cHAudG1wIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCmluZGV4IGNhODkwYjA2ZWEzM2ZhOWU3ZjFmYTUxYTM1ZWEyZDQ4ZDAwOWEzOGEu
LjZjOWJmOTZjMTVmNjA5ZTI2NWNlMjUwYTQ1YmYwODYxZDA2Y2QxZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNTEsNiAr
NTEsNyBAQAogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJK
U1N0YWNrSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNTdHJp
bmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNsdWRlICJMTEludENM
b29wLmgiCiAjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuY3BwCmluZGV4IGYwZTAyYmE0ZTQ3
NmY5OWNjOTEzYjA0NjJhZDI3OTUwMDYwOWZhM2EuLjFjMjQwZGNkNzFiZTUyOWQ4OGNiZjQ2MWQx
ODY4ZjVlYjJiMDJhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIlBy
b3RvQ2FsbEZyYW1lLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggY2E3
YWQxMWYyZTBiOGEzYjhiMTg1ODkxZDdlNTIyYmFlNDAzYTIzNi4uY2I1NTA3YmVhYzU1YmY4ZWIx
YjM3ZWM5MGZjYWIxOTM0ZmI0OGVhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUg
IkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDk4ZDEwYTNmNGRjYjEyZDg5ZjM3
YTEyZjIyNjA0Yjk0NmUwOGU2MjcuLmRkMDM1Mzc3OWU4YmRmOThmNDY1OGEzMDdlMzJkMDZlNDcy
NDQxNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkpJ
VElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlu
bGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggOTI4ZGQ1MGZiMDE2ZTI3MTY0NGE1NzVlMzBh
YjVmMjUxNmViNTBlYy4uOTA4OGI3ZmIyZmI3YWQwMTM4MDZlZjQ5YjVhZjQyMGZhNjQ4NDA3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC00MSw2
ICs0MSw4IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9uV3JhcHBl
cnMuaCIKICNpbmNsdWRlICJKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIgor
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpT
TmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCAyNmRk
NGQxYWY3NDVhZmExZmJjNTNhOWMwMjNhNmU0NzQxYTY2YTA5Li5kZjFiZDNhOWNmYTQwMmM1MmE1
MjExY2YxYWNjZTY3ZDUxMjFiN2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMjksMTEgKzI5LDEzIEBACiAjaW5jbHVkZSAiSklU
LmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVy
cy5oIgogI2luY2x1ZGUgIkdDQXdhcmVKSVRTdHViUm91dGluZS5oIgogI2luY2x1ZGUgIkdldHRl
clNldHRlci5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklUSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmgiCiAjaW5jbHVkZSAiSlNWYXJpYWJsZU9iamVjdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggZDE4ZmVh
NzE1Y2IwM2IzN2FhOTI2ZDg0OWE4ZTVhYjk1NjNlY2QzZC4uMzI2MWIzYWY2ZWVhYmQ2ZjI2YTQz
YTA4ZDIwNGJjNjJiMDY1ODliNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVk
ZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNB
cnJheS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJK
U1ZhcmlhYmxlT2JqZWN0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDQwNzg0YjQ5NDMxZmUw
MmU4ZTQ1MjJmMTYzMDhjOTAyNDcxNmQyMzYuLjJmNzk1NTU0YjA5MWRlZWJiYzAzYmYyYmU4Yzc0
ZjQxYWU1NDFlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5j
bHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNQcm94eS5oIgogI2luY2x1ZGUgIkpTU3RyaW5n
LmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5o
IgogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgogI2luY2x1ZGUgIlN0YWNrVmlzaXRvci5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJh
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFj
dG9yLmNwcAppbmRleCA2MDRjYzI2M2NmOTdlMDg2ZmVkMDZlYzkwM2IwZWMxOTgzZTc4MTM3Li44
MTY2ZTdmODFmYTg5YTdkNGY1MGM1ZjFhOTRmYTk2OGM1ZDU3ZTFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAt
MzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5o
IgogI2luY2x1ZGUgIkpTQ2VsbC5oIgotI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRl
ICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3QuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNjY0NDRiYWEwOGI1NjJkZDY5N2Uw
Y2NkNzcyMWU1NWMxNWJhNDkxMy4uODNlMDFlYmFmZGEyNzdlMjVkOGNmMGIwY2U2NmJkOTFlNTVj
NDY4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCkBAIC00MCw3ICs0MCw4IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhj
ZXB0aW9ucy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgotI2luY2x1ZGUgIkpTQ0pTVmFs
dWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rp
b25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNs
dWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggOGVjMWZkMzJh
M2FkYTIyZTEyNTIyOTU3MGRjZjdmZjI4ZWFiZjFlZC4uNDZhN2M3NmIyZjkwMWZjM2NjMzZkMWNl
MGMwNzM1M2ViMDZiMmY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWls
ZGVyLmgKQEAgLTg4OCw5ICs4ODgsOSBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFr
ZUZ1bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbgogICAgIEFT
U0VSVChmdW5jLT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRv
dCA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGZ1bmMpOwogICAgIEZ1bmN0aW9uQ2Fs
bERvdE5vZGUqIG5vZGU7Ci0gICAgaWYgKGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmNhbGwpCisgICAgaWYgKGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmNhbGwgfHwgZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1l
cy0+Y2FsbFByaXZhdGVOYW1lKQogICAgICAgICBub2RlID0gbmV3IChtX3ZtKSBDYWxsRnVuY3Rp
b25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBh
cmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwotICAgIGVsc2UgaWYgKGRvdC0+aWRl
bnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmFwcGx5KQorICAgIGVsc2UgaWYgKGRv
dC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmFwcGx5IHx8IGRvdC0+aWRl
bnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmFwcGx5UHJpdmF0ZU5hbWUpCiAgICAg
ICAgIG5vZGUgPSBuZXcgKG1fdm0pIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwg
ZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwg
ZGl2b3RFbmQpOwogICAgIGVsc2UKICAgICAgICAgbm9kZSA9IG5ldyAobV92bSkgRnVuY3Rpb25D
YWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdz
LCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0xleGVyLmNwcAppbmRleCBjYTRiYjRmMGFkZThkNmJjODI2OTFhNmMwMDAxNGNmMTk4YmQ4OGJk
Li5jY2IwNzlkOTc1YTE0MWM1YzRiMmQ3YjYyMzEzMDAwNzA5Nzc3ODI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAtMjUsMTAgKzI1LDEwIEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiTGV4ZXIuaCIKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZp
ZXJzLmgiCisjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb25Jbmxp
bmVzLmgiCi0KICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgotI2luY2x1ZGUg
IklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJOb2RlSW5mby5oIgogI2luY2x1ZGUgIk5vZGVzLmgi
CiAjaW5jbHVkZSA8d3RmL2R0b2EuaD4KQEAgLTkwLDYgKzkwLDcgQEAgZW51bSBDaGFyYWN0ZXJU
eXBlIHsKIAogICAgIC8vIE90aGVyIHR5cGVzIChvbmx5IG9uZSBzbyBmYXIpCiAgICAgQ2hhcmFj
dGVyV2hpdGVTcGFjZSwKKyAgICBDaGFyYWN0ZXJQcml2YXRlSWRlbnRpZmllclN0YXJ0CiB9Owog
CiAvLyAyNTYgTGF0aW4tMSBjb2RlcwpAQCAtMTU4LDcgKzE1OSw3IEBAIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBzaG9ydCB0eXBlc09mTGF0aW4xQ2hhcmFjdGVyc1syNTZdID0gewogLyogIDYxIC0g
PSAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlckVxdWFsLAogLyogIDYyIC0gPiAgICAgICAg
ICAgICAgICAgICovIENoYXJhY3RlckdyZWF0ZXIsCiAvKiAgNjMgLSA/ICAgICAgICAgICAgICAg
ICAgKi8gQ2hhcmFjdGVyUXVlc3Rpb24sCi0vKiAgNjQgLSBAICAgICAgICAgICAgICAgICAgKi8g
Q2hhcmFjdGVySW52YWxpZCwKKy8qICA2NCAtIEAgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0
ZXJQcml2YXRlSWRlbnRpZmllclN0YXJ0LAogLyogIDY1IC0gQSAgICAgICAgICAgICAgICAgICov
IENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKIC8qICA2NiAtIEIgICAgICAgICAgICAgICAgICAq
LyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCiAvKiAgNjcgLSBDICAgICAgICAgICAgICAgICAg
Ki8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LApAQCAtNDg2LDkgKzQ4NywxMCBAQCBzdGF0aWMg
Y29uc3QgTENoYXIgc2luZ2xlQ2hhcmFjdGVyRXNjYXBlVmFsdWVzRm9yQVNDSUlbMTI4XSA9IHsK
IH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotTGV4ZXI8VD46OkxleGVyKFZNKiB2bSkKK0xl
eGVyPFQ+OjpMZXhlcihWTSogdm0sIEpTUGFyc2VyU3RyaWN0bmVzcyBzdHJpY3RuZXNzKQogICAg
IDogbV9pc1JlcGFyc2luZyhmYWxzZSkKICAgICAsIG1fdm0odm0pCisgICAgLCBtX3BhcnNpbmdC
dWlsdGluRnVuY3Rpb24oc3RyaWN0bmVzcyA9PSBKU1BhcnNlQnVpbHRpbikKIHsKIH0KIApAQCAt
NzUzLDcgKzc1NSwyNyBAQCBpbmxpbmUgdm9pZCBMZXhlcjxUPjo6cmVjb3JkMTYoaW50IGMpCiAg
ICAgQVNTRVJUKGMgPD0gc3RhdGljX2Nhc3Q8aW50PihVU0hSVF9NQVgpKTsKICAgICBtX2J1ZmZl
cjE2LmFwcGVuZChzdGF0aWNfY2FzdDxVQ2hhcj4oYykpOwogfQotCisgICAgCisjaWYgIUFTU0VS
VF9ESVNBQkxFRAorYm9vbCBpc1NhZmVJZGVudGlmaWVyKFZNJiB2bSwgY29uc3QgSWRlbnRpZmll
ciogaWRlbnQpCit7CisgICAgaWYgKCFpZGVudCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
LyogSnVzdCBibG9jayBhbnkgdXNlIG9mIHN1c3BpY2lvdXMgaWRlbnRpZmllcnMuICBUaGlzIGlz
IGludGVuZGVkIHRvCisgICAgICogYmUgdXNlZCBhcyBhIHNhZmV0eSBuZXQgd2hpbGUgaW1wbGVt
ZW50aW5nIGJ1aWx0aW5zLgorICAgICAqLworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJvcGVydHlO
YW1lcy0+Y2FsbCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgqaWRlbnQgPT0gdm0u
cHJvcGVydHlOYW1lcy0+YXBwbHkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKmlk
ZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmV2YWwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoKmlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPkZ1bmN0aW9uKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKyAgICAKIHRlbXBsYXRlIDw+
CiB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpT
VG9rZW5UeXBlIExleGVyPExDaGFyPjo6cGFyc2VJZGVudGlmaWVyKEpTVG9rZW5EYXRhKiB0b2tl
bkRhdGEsIHVuc2lnbmVkIGxleGVyRmxhZ3MsIGJvb2wgc3RyaWN0TW9kZSkKIHsKQEAgLTc2NSw3
ICs3ODcsMTEgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlT
X0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKICAgICAgICAgICAgIHJldHVybiBr
ZXl3b3JkID09IFJFU0VSVkVEX0lGX1NUUklDVCAmJiAhc3RyaWN0TW9kZSA/IElERU5UIDoga2V5
d29yZDsKICAgICAgICAgfQogICAgIH0KLQorICAgIAorICAgIGJvb2wgaXNQcml2YXRlTmFtZSA9
IG1fY3VycmVudCA9PSAnQCcgJiYgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uOworICAgIGlmIChp
c1ByaXZhdGVOYW1lKQorICAgICAgICBzaGlmdCgpOworICAgIAogICAgIGNvbnN0IExDaGFyKiBp
ZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50U291cmNlUHRyKCk7CiAgICAgdW5zaWduZWQgaWRlbnRp
ZmllckxpbmVTdGFydCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKICAgICAKQEAgLTc3OSwx
NSArODA1LDI2IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZ
U19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAKICAgICBjb25zdCBJZGVudGlm
aWVyKiBpZGVudCA9IDA7CiAgICAgCi0gICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpIHsK
KyAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllciB8fCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rp
b24pIHsKICAgICAgICAgaW50IGlkZW50aWZpZXJMZW5ndGggPSBjdXJyZW50U291cmNlUHRyKCkg
LSBpZGVudGlmaWVyU3RhcnQ7CiAgICAgICAgIGlkZW50ID0gbWFrZUlkZW50aWZpZXIoaWRlbnRp
ZmllclN0YXJ0LCBpZGVudGlmaWVyTGVuZ3RoKTsKLQorICAgICAgICBpZiAobV9wYXJzaW5nQnVp
bHRpbkZ1bmN0aW9uKSB7CisgICAgICAgICAgICBpZiAoIWlzU2FmZUlkZW50aWZpZXIoKm1fdm0s
IGlkZW50KSAmJiAhaXNQcml2YXRlTmFtZSkgeworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JN
ZXNzYWdlID0gbWFrZVN0cmluZygiVGhlIHVzZSBvZiAnIiwgaWRlbnQtPnN0cmluZygpLCAiJyBp
cyBkaXNhbGxvd2VkIGluIGJ1aWx0aW4gZnVuY3Rpb25zLiIpOworICAgICAgICAgICAgICAgIHJl
dHVybiBFUlJPUlRPSzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpc1ByaXZhdGVO
YW1lKQorICAgICAgICAgICAgICAgIGlkZW50ID0gbV92bS0+cHJvcGVydHlOYW1lcy0+Z2V0UHJp
dmF0ZU5hbWUoKmlkZW50KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCppZGVudCA9PSBtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkKQorICAgICAgICAgICAgICAgIHRva2VuRGF0
YS0+aWRlbnQgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZFByaXZhdGVO
YW1lOworICAgICAgICAgICAgaWYgKCFpZGVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gSU5W
QUxJRF9QUklWQVRFX05BTUVfRVJST1JUT0s7CisgICAgICAgIH0KICAgICAgICAgdG9rZW5EYXRh
LT5pZGVudCA9IGlkZW50OwogICAgIH0gZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0g
MDsKIAotICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICEo
bGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkpIHsKKyAgICBpZiAo
VU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxhZ3MgJiBM
ZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpICYmICFpc1ByaXZhdGVOYW1lKSB7CiAgICAg
ICAgIEFTU0VSVChzaG91bGRDcmVhdGVJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKHJlbWFpbmlu
ZyA8IG1heFRva2VuTGVuZ3RoKSB7CiAgICAgICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5
ID0gbV92bS0+a2V5d29yZHMtPmdldEtleXdvcmQoKmlkZW50KTsKQEAgLTgxNCw2ICs4NTEsMTAg
QEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBK
U1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAKICAgICAgICAgICAgIHJldHVybiBrZXl3b3JkID09
IFJFU0VSVkVEX0lGX1NUUklDVCAmJiAhc3RyaWN0TW9kZSA/IElERU5UIDoga2V5d29yZDsKICAg
ICAgICAgfQogICAgIH0KKyAgICAKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJlbnQg
PT0gJ0AnICYmIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKKyAgICBpZiAoaXNQcml2YXRlTmFt
ZSkKKyAgICAgICAgc2hpZnQoKTsKIAogICAgIGNvbnN0IFVDaGFyKiBpZGVudGlmaWVyU3RhcnQg
PSBjdXJyZW50U291cmNlUHRyKCk7CiAgICAgaW50IGlkZW50aWZpZXJMaW5lU3RhcnQgPSBjdXJy
ZW50TGluZVN0YXJ0T2Zmc2V0KCk7CkBAIC04MjYsNiArODY3LDcgQEAgdGVtcGxhdGUgPGJvb2wg
c2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxV
Q2hhcj46OnAKICAgICB9CiAgICAgCiAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudCA9PSAnXFwn
KSkgeworICAgICAgICBBU1NFUlQoIWlzUHJpdmF0ZU5hbWUpOwogICAgICAgICBzZXRPZmZzZXRG
cm9tU291cmNlUHRyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxpbmVTdGFydCk7CiAgICAg
ICAgIHJldHVybiBwYXJzZUlkZW50aWZpZXJTbG93Q2FzZTxzaG91bGRDcmVhdGVJZGVudGlmaWVy
Pih0b2tlbkRhdGEsIGxleGVyRmxhZ3MsIHN0cmljdE1vZGUpOwogICAgIH0KQEAgLTgzNywxOCAr
ODc5LDI5IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19J
TkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+OjpwCiAKICAgICBjb25zdCBJZGVudGlmaWVy
KiBpZGVudCA9IDA7CiAgICAgCi0gICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpIHsKKyAg
ICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllciB8fCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24p
IHsKICAgICAgICAgaW50IGlkZW50aWZpZXJMZW5ndGggPSBjdXJyZW50U291cmNlUHRyKCkgLSBp
ZGVudGlmaWVyU3RhcnQ7CiAgICAgICAgIGlmIChpc0FsbDhCaXQpCiAgICAgICAgICAgICBpZGVu
dCA9IG1ha2VJZGVudGlmaWVyTENoYXJGcm9tVUNoYXIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlm
aWVyTGVuZ3RoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaWRlbnQgPSBtYWtlSWRlbnRp
ZmllcihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwotICAgICAgICAKKyAgICAg
ICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgeworICAgICAgICAgICAgaWYgKCFpc1Nh
ZmVJZGVudGlmaWVyKCptX3ZtLCBpZGVudCkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsKKyAgICAgICAg
ICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIlRoZSB1c2Ugb2YgJyIsIGlk
ZW50LT5zdHJpbmcoKSwgIicgaXMgZGlzYWxsb3dlZCBpbiBidWlsdGluIGZ1bmN0aW9ucy4iKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgICAgICAgICBpZGVudCA9IG1fdm0tPnBy
b3BlcnR5TmFtZXMtPmdldFByaXZhdGVOYW1lKCppZGVudCk7CisgICAgICAgICAgICBlbHNlIGlm
ICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCkKKyAgICAg
ICAgICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVm
aW5lZEtleXdvcmRQcml2YXRlTmFtZTsKKyAgICAgICAgICAgIGlmICghaWRlbnQpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIElOVkFMSURfUFJJVkFURV9OQU1FX0VSUk9SVE9LOworICAgICAgICB9
CiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBpZGVudDsKICAgICB9IGVsc2UKICAgICAgICAg
dG9rZW5EYXRhLT5pZGVudCA9IDA7CiAgICAgCi0gICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcg
PCBtYXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2Vy
dmVkV29yZHMpKSkgeworICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5n
dGgpICYmICEobGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkgJiYg
IWlzUHJpdmF0ZU5hbWUpIHsKICAgICAgICAgQVNTRVJUKHNob3VsZENyZWF0ZUlkZW50aWZpZXIp
OwogICAgICAgICBpZiAocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHsKICAgICAgICAgICAg
IGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSBtX3ZtLT5rZXl3b3Jkcy0+Z2V0S2V5d29yZCgqaWRl
bnQpOwpAQCAtMTY1OCw2ICsxNzExLDcgQEAgaW5OdW1iZXJBZnRlckRlY2ltYWxQb2ludDoKICAg
ICAgICAgQVNTRVJUKGlzSWRlbnRTdGFydChtX2N1cnJlbnQpKTsKICAgICAgICAgRkFMTFRIUk9V
R0g7CiAgICAgY2FzZSBDaGFyYWN0ZXJCYWNrU2xhc2g6CisgICAgICAgIHBhcnNlSWRlbnQ6CiAg
ICAgICAgIGlmIChsZXhlckZsYWdzICYgTGV4ZXhGbGFnc0RvbnRCdWlsZEtleXdvcmRzKQogICAg
ICAgICAgICAgdG9rZW4gPSBwYXJzZUlkZW50aWZpZXI8ZmFsc2U+KHRva2VuRGF0YSwgbGV4ZXJG
bGFncywgc3RyaWN0TW9kZSk7CiAgICAgICAgIGVsc2UKQEAgLTE2NzAsNiArMTcyNCwxMSBAQCBp
bk51bWJlckFmdGVyRGVjaW1hbFBvaW50OgogICAgICAgICBtX3Rlcm1pbmF0b3IgPSB0cnVlOwog
ICAgICAgICBtX2xpbmVTdGFydCA9IG1fY29kZTsKICAgICAgICAgZ290byBzdGFydDsKKyAgICBj
YXNlIENoYXJhY3RlclByaXZhdGVJZGVudGlmaWVyU3RhcnQ6CisgICAgICAgIGlmIChtX3BhcnNp
bmdCdWlsdGluRnVuY3Rpb24pCisgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnQ7CisKKyAgICAg
ICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBDaGFyYWN0ZXJJbnZhbGlkOgogICAgICAgICBtX2xl
eEVycm9yTWVzc2FnZSA9IGludmFsaWRDaGFyYWN0ZXJNZXNzYWdlKCk7CiAgICAgICAgIHRva2Vu
ID0gRVJST1JUT0s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xl
eGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKaW5kZXggMjhjNjFi
YTE5OGQyYzE1YTQ5YmIxODUyZWQzMGJlZmViODkwNDAwOC4uYjg4NzNlOTk1MDI4NjQ0YmY4Y2Ji
M2Q0YzJkYTU2MmU5M2UwZThlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9MZXhlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaApA
QCAtNzIsNyArNzIsNyBAQCBjbGFzcyBMZXhlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAKIHB1YmxpYzoKLSAgICBMZXhlcihWTSopOworICAgIExleGVyKFZNKiwgSlNQYXJzZXJT
dHJpY3RuZXNzKTsKICAgICB+TGV4ZXIoKTsKIAogICAgIC8vIENoYXJhY3RlciBtYW5pcHVsYXRp
b24gZnVuY3Rpb25zLgpAQCAtMjM4LDYgKzIzOCw3IEBAIHByaXZhdGU6CiAgICAgSWRlbnRpZmll
ckFyZW5hKiBtX2FyZW5hOwogCiAgICAgVk0qIG1fdm07CisgICAgYm9vbCBtX3BhcnNpbmdCdWls
dGluRnVuY3Rpb247CiB9OwogCiB0ZW1wbGF0ZSA8PgpAQCAtMzM1LDYgKzMzNiwxMiBAQCBBTFdB
WVNfSU5MSU5FIGNvbnN0IElkZW50aWZpZXIqIExleGVyPFQ+OjptYWtlTENoYXJJZGVudGlmaWVy
KGNvbnN0IFVDaGFyKiBjaGFyYQogICAgIHJldHVybiAmbV9hcmVuYS0+bWFrZUlkZW50aWZpZXJM
Q2hhckZyb21VQ2hhcihtX3ZtLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOwogfQogCisjaWYgQVNTRVJU
X0RJU0FCTEVECitBTFdBWVNfSU5MSU5FIGJvb2wgaXNTYWZlSWRlbnRpZmllcihWTSYsIGNvbnN0
IElkZW50aWZpZXIqKSB7IHJldHVybiB0cnVlOyB9CisjZWxzZQorYm9vbCBpc1NhZmVJZGVudGlm
aWVyKFZNJiwgY29uc3QgSWRlbnRpZmllciopOworI2VuZGlmCisKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRp
ZmllcihKU1Rva2VuKiB0b2tlblJlY29yZCwgdW5zaWduZWQgbGV4ZXJGbGFncywgYm9vbCBzdHJp
Y3RNb2RlKQogewpAQCAtMzcwLDEwICszNzcsMTUgQEAgQUxXQVlTX0lOTElORSBKU1Rva2VuVHlw
ZSBMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rva2VuKiB0b2tlblJlY29yZCwgdW4K
ICAgICBBU1NFUlQoY3VycmVudE9mZnNldCgpID49IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKSk7
CiAKICAgICAvLyBDcmVhdGUgdGhlIGlkZW50aWZpZXIgaWYgbmVlZGVkCi0gICAgaWYgKGxleGVy
RmxhZ3MgJiBMZXhleEZsYWdzRG9udEJ1aWxkS2V5d29yZHMpCisgICAgaWYgKGxleGVyRmxhZ3Mg
JiBMZXhleEZsYWdzRG9udEJ1aWxkS2V5d29yZHMKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAg
ICAgICYmICFtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24KKyNlbmRpZgorICAgICAgICApCiAgICAg
ICAgIHRva2VuRGF0YS0+aWRlbnQgPSAwOwogICAgIGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5p
ZGVudCA9IG1ha2VMQ2hhcklkZW50aWZpZXIoc3RhcnQsIHB0ciAtIHN0YXJ0KTsKKwogICAgIHRv
a2VuTG9jYXRpb24tPmxpbmUgPSBtX2xpbmVOdW1iZXI7CiAgICAgdG9rZW5Mb2NhdGlvbi0+bGlu
ZVN0YXJ0T2Zmc2V0ID0gY3VycmVudExpbmVTdGFydE9mZnNldCgpOwogICAgIHRva2VuTG9jYXRp
b24tPnN0YXJ0T2Zmc2V0ID0gb2Zmc2V0RnJvbVNvdXJjZVB0cihzdGFydCk7CkBAIC0zODEsNiAr
MzkzLDEzIEBAIEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4cGVjdElk
ZW50aWZpZXIoSlNUb2tlbiogdG9rZW5SZWNvcmQsIHVuCiAgICAgQVNTRVJUKHRva2VuTG9jYXRp
b24tPnN0YXJ0T2Zmc2V0ID49IHRva2VuTG9jYXRpb24tPmxpbmVTdGFydE9mZnNldCk7CiAgICAg
dG9rZW5SZWNvcmQtPm1fc3RhcnRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb247CiAgICAgdG9rZW5S
ZWNvcmQtPm1fZW5kUG9zaXRpb24gPSBjdXJyZW50UG9zaXRpb24oKTsKKyNpZiAhQVNTRVJUX0RJ
U0FCTEVECisgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgeworICAgICAgICBpZiAo
IWlzU2FmZUlkZW50aWZpZXIoKm1fdm0sIHRva2VuRGF0YS0+aWRlbnQpKQorICAgICAgICAgICAg
cmV0dXJuIEVSUk9SVE9LOworICAgIH0KKyNlbmRpZgorCiAgICAgbV9sYXN0VG9rZW4gPSBJREVO
VDsKICAgICByZXR1cm4gSURFTlQ7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuY3BwCmluZGV4IGZjOWNjZDlmNmM1NzZjMWFlZjU0N2YyMTFmZGQ1OTZmNDJlMDU4MDYuLmQ5
NTJiYTZhOTRkMmY2YjQxODIxNTUwMDRkMGE5NzA4NDI5YmQ3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0xMzIsNiArMTMyLDEyIEBAIFBhc3NSZWZQdHI8UHJv
Z3JhbU5vZGU+IFByb2dyYW1Ob2RlOjpjcmVhdGUoVk0qIHZtLCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mIHN0YXJ0CiAgICAgcmV0dXJuIG5vZGUucmVsZWFzZSgpOwogfQogCisKK3ZvaWQgUHJvZ3Jh
bU5vZGU6OnNldENsb3NlZFZhcmlhYmxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+
PiYmIGNsb3NlZFZhcmlhYmxlcykKK3sKKyAgICBtX2Nsb3NlZFZhcmlhYmxlcyA9IHN0ZDo6bW92
ZShjbG9zZWRWYXJpYWJsZXMpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gRXZhbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogaW5saW5lIEV2YWxO
b2RlOjpFdmFsTm9kZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlv
biwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgZW5kQ29sdW1u
LCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25T
dGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFu
dHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggZDc3OWExNzhkOTU2ZmY5
OWZkMGJlZDVkNWY0NTRhYTNlNmI1MDg3OS4uODE2ZmYwMDFhYmYwMzc2YzY0MmYxYTkzOGQwZTBh
OWY1MjljYTZiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTQzMSw2
ICsxNDMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbmVlZHNBY3RpdmF0aW9u
KCkgY29uc3QgeyByZXR1cm4gKGhhc0NhcHR1cmVkVmFyaWFibGVzKCkpIHx8IChtX2ZlYXR1cmVz
ICYgKEV2YWxGZWF0dXJlIHwgV2l0aEZlYXR1cmUgfCBDYXRjaEZlYXR1cmUpKTsgfQogICAgICAg
ICBib29sIGhhc0NhcHR1cmVkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gISFtX2NhcHR1cmVk
VmFyaWFibGVzLnNpemUoKTsgfQogICAgICAgICBzaXplX3QgY2FwdHVyZWRWYXJpYWJsZUNvdW50
KCkgY29uc3QgeyByZXR1cm4gbV9jYXB0dXJlZFZhcmlhYmxlcy5zaXplKCk7IH0KKyAgICAgICAg
Y29uc3QgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBt
X2NhcHR1cmVkVmFyaWFibGVzOyB9CiAgICAgICAgIGJvb2wgY2FwdHVyZXMoY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQpIHsgcmV0dXJuIG1fY2FwdHVyZWRWYXJpYWJsZXMuY29udGFpbnMoaWRlbnQu
aW1wbCgpKTsgfQogCiAgICAgICAgIFZhclN0YWNrJiB2YXJTdGFjaygpIHsgcmV0dXJuIG1fdmFy
U3RhY2s7IH0KQEAgLTE0NDYsNiArMTQ0Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBT
dGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1lbnQoKSBjb25zdDsKIAogICAgICAgICB2b2lkIGVt
aXRTdGF0ZW1lbnRzQnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkZXN0
aW5hdGlvbik7CisgICAgICAgIAorICAgICAgICB2b2lkIHNldENsb3NlZFZhcmlhYmxlcyhjb25z
dCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmKSB7IH0KIAogICAgIHByb3RlY3RlZDoKICAg
ICAgICAgdm9pZCBzZXRTb3VyY2UoY29uc3QgU291cmNlQ29kZSYgc291cmNlKSB7IG1fc291cmNl
ID0gc291cmNlOyB9CkBAIC0xNDc1LDExICsxNDc4LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNjb3BlSXNGdW5jdGlvbiA9IGZhbHNlOwogCisgICAg
ICAgIHZvaWQgc2V0Q2xvc2VkVmFyaWFibGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1w
bD4+JiYpOworICAgICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYgY2xvc2Vk
VmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9jbG9zZWRWYXJpYWJsZXM7IH0KICAgICBwcml2
YXRlOgogICAgICAgICBQcm9ncmFtTm9kZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3Rh
cnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5z
aWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFj
ayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQg
bnVtQ29uc3RhbnRzKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKLQorICAgICAgICBWZWN0
b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiBtX2Nsb3NlZFZhcmlhYmxlczsKICAgICAgICAgdW5zaWdu
ZWQgbV9zdGFydENvbHVtbjsKICAgICAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CiAgICAgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCAyOTc2NjZlNzI2ZTQ1
ZDA4M2VmMTM0OWRkZmZkZjM3ZWY4MDBkZjdhLi41MGJlYzc5ZmUzOGFkZjhmM2EwNGY2YjQ2Y2Jk
MmE1Y2JmY2YyNDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBA
IC0yMDQsOCArMjA0LDkgQEAgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlcihWTSogdm0sIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25QYXJhbWV0ZXJzKgogICAgICwgbV9sYXN0SWRl
bnRpZmllcigwKQogICAgICwgbV9sYXN0RnVuY3Rpb25OYW1lKG51bGxwdHIpCiAgICAgLCBtX3Nv
dXJjZUVsZW1lbnRzKDApCisgICAgLCBtX3BhcnNpbmdCdWlsdGluKHN0cmljdG5lc3MgPT0gSlNQ
YXJzZUJ1aWx0aW4pCiB7Ci0gICAgbV9sZXhlciA9IGFkb3B0UHRyKG5ldyBMZXhlclR5cGUodm0p
KTsKKyAgICBtX2xleGVyID0gYWRvcHRQdHIobmV3IExleGVyVHlwZSh2bSwgc3RyaWN0bmVzcykp
OwogICAgIG1fYXJlbmEgPSBtX3ZtLT5wYXJzZXJBcmVuYS5nZXQoKTsKICAgICBtX2xleGVyLT5z
ZXRDb2RlKHNvdXJjZSwgbV9hcmVuYSk7CiAgICAgbV90b2tlbi5tX2xvY2F0aW9uLmxpbmUgPSBz
b3VyY2UuZmlyc3RMaW5lKCk7CkBAIC0yNTYsNiArMjU3LDcgQEAgU3RyaW5nIFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUlubmVyKCkKICAgICBJZGVudGlmaWVyU2V0IGNhcHR1cmVkVmFyaWFibGVz
OwogICAgIGJvb2wgbW9kaWZpZWRQYXJhbWV0ZXIgPSBmYWxzZTsKICAgICBzY29wZS0+Z2V0Q2Fw
dHVyZWRWYXJpYWJsZXMoY2FwdHVyZWRWYXJpYWJsZXMsIG1vZGlmaWVkUGFyYW1ldGVyKTsKKyAg
ICAKICAgICBDb2RlRmVhdHVyZXMgZmVhdHVyZXMgPSBjb250ZXh0LmZlYXR1cmVzKCk7CiAgICAg
aWYgKHNjb3BlLT5zdHJpY3RNb2RlKCkpCiAgICAgICAgIGZlYXR1cmVzIHw9IFN0cmljdE1vZGVG
ZWF0dXJlOwpAQCAtMjYzLDIxICsyNjUsMzYgQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUlubmVyKCkKICAgICAgICAgZmVhdHVyZXMgfD0gU2hhZG93c0FyZ3VtZW50c0ZlYXR1cmU7
CiAgICAgaWYgKG1vZGlmaWVkUGFyYW1ldGVyKQogICAgICAgICBmZWF0dXJlcyB8PSBNb2RpZmll
ZFBhcmFtZXRlckZlYXR1cmU7Ci0KKyAgICAKKyAgICBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+
PiBjbG9zZWRWYXJpYWJsZXM7CisgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW4pIHsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIWNhcHR1cmVkVmFyaWFibGVzLnNpemUoKSk7CisgICAgICAgIElkZW50
aWZpZXJTZXQgdXNlZFZhcmlhYmxlczsKKyAgICAgICAgc2NvcGUtPmdldFVzZWRWYXJpYWJsZXMo
dXNlZFZhcmlhYmxlcyk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgdmFyaWFibGUgOiB1c2Vk
VmFyaWFibGVzKSB7CisgICAgICAgICAgICBpZiAoc2NvcGUtPmhhc0RlY2xhcmVkVmFyaWFibGUo
SWRlbnRpZmllcihtX3ZtLCB2YXJpYWJsZS5nZXQoKSkpKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoc2NvcGUtPmhhc0RlY2xhcmVkUGFy
YW1ldGVyKElkZW50aWZpZXIobV92bSwgdmFyaWFibGUuZ2V0KCkpKSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIGNsb3NlZFZhcmlhYmxlcy5hcHBlbmQodmFyaWFibGUp
OworICAgICAgICB9CisgICAgfQogICAgIGRpZEZpbmlzaFBhcnNpbmcoc291cmNlRWxlbWVudHMs
IGNvbnRleHQudmFyRGVjbGFyYXRpb25zKCksIGNvbnRleHQuZnVuY0RlY2xhcmF0aW9ucygpLCBm
ZWF0dXJlcywKLSAgICAgICAgY29udGV4dC5udW1Db25zdGFudHMoKSwgY2FwdHVyZWRWYXJpYWJs
ZXMpOworICAgICAgICBjb250ZXh0Lm51bUNvbnN0YW50cygpLCBjYXB0dXJlZFZhcmlhYmxlcywg
c3RkOjptb3ZlKGNsb3NlZFZhcmlhYmxlcykpOwogCiAgICAgcmV0dXJuIHBhcnNlRXJyb3I7CiB9
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB2b2lkIFBhcnNlcjxMZXhlclR5cGU+
OjpkaWRGaW5pc2hQYXJzaW5nKFNvdXJjZUVsZW1lbnRzKiBzb3VyY2VFbGVtZW50cywgUGFyc2Vy
QXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjaz4qIHZhclN0YWNrLCAKLSAgICBQ
YXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KiBmdW5jU3Rh
Y2ssIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cywgSWRlbnRpZmllclNl
dCYgY2FwdHVyZWRWYXJzKQorICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6
RnVuY3Rpb25TdGFjaz4qIGZ1bmNTdGFjaywgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVt
Q29uc3RhbnRzLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcnMsIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8U3RyaW5nSW1wbD4+JiYgY2xvc2VkVmFyaWFibGVzKQogewogICAgIG1fc291cmNlRWxlbWVu
dHMgPSBzb3VyY2VFbGVtZW50czsKICAgICBtX3ZhckRlY2xhcmF0aW9ucyA9IHZhclN0YWNrOwog
ICAgIG1fZnVuY0RlY2xhcmF0aW9ucyA9IGZ1bmNTdGFjazsKICAgICBtX2NhcHR1cmVkVmFyaWFi
bGVzLnN3YXAoY2FwdHVyZWRWYXJzKTsKKyAgICBtX2Nsb3NlZFZhcmlhYmxlcyA9IGNsb3NlZFZh
cmlhYmxlczsKICAgICBtX2ZlYXR1cmVzID0gZmVhdHVyZXM7CiAgICAgbV9udW1Db25zdGFudHMg
PSBudW1Db25zdGFudHM7CiB9CkBAIC0yMzQ2LDYgKzIzNjMsMTAgQEAgdGVtcGxhdGUgPHR5cGVu
YW1lIExleGVyVHlwZT4gdm9pZCBQYXJzZXI8TGV4ZXJUeXBlPjo6cHJpbnRVbmV4cGVjdGVkVG9r
ZW5UZXh0KFcKICAgICBjYXNlIFJFU0VSVkVEOgogICAgICAgICBvdXQucHJpbnQoIlVuZXhwZWN0
ZWQgdXNlIG9mIHJlc2VydmVkIHdvcmQgJyIsIGdldFRva2VuKCksICInIik7CiAgICAgICAgIHJl
dHVybjsKKworICAgIGNhc2UgSU5WQUxJRF9QUklWQVRFX05BTUVfRVJST1JUT0s6CisgICAgICAg
IG91dC5wcmludCgiSW52YWxpZCBwcml2YXRlIG5hbWUgJyIsIGdldFRva2VuKCksICInIik7Cisg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIAogICAgIGNhc2UgSURFTlQ6CiAgICAgICAgIG91
dC5wcmludCgiVW5leHBlY3RlZCBpZGVudGlmaWVyICciLCBnZXRUb2tlbigpLCAiJyIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggYjY5OGVmOTM2OGNiOGM4ZjE5N2Nj
ZDAwMGFjYWE2ZGZiMTFiYTI0NC4uOTAzMzg1MGM4Yzk3ZjU3ZTIxZGE1ZWVkYjAyZDA0NGY0Yzg5
NzhlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0yMyw2ICsyMyw3
IEBACiAjaWZuZGVmIFBhcnNlcl9oCiAjZGVmaW5lIFBhcnNlcl9oCiAKKyNpbmNsdWRlICJDb21t
b25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiRXhjZXB0
aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKQEAgLTI1OSw2ICsyNjAsMTAg
QEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAgcmV0dXJuIGlzVmFsaWRTdHJpY3RNb2RlID8gQmlu
ZGluZ1N1Y2NlZWRlZCA6IFN0cmljdEJpbmRpbmdGYWlsZWQ7CiAgICAgfQogCisgICAgdm9pZCBn
ZXRVc2VkVmFyaWFibGVzKElkZW50aWZpZXJTZXQmIHVzZWRWYXJpYWJsZXMpCisgICAgeworICAg
ICAgICB1c2VkVmFyaWFibGVzLnN3YXAobV91c2VkVmFyaWFibGVzKTsKKyAgICB9CiAKICAgICB2
b2lkIHVzZVZhcmlhYmxlKGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBib29sIGlzRXZhbCkKICAg
ICB7CkBAIC00MTQsNiArNDE5LDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8UGFyc2VkTm9k
ZT4gcGFyc2UoUGFyc2VyRXJyb3ImKTsKIAogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVm
b3JlTGFzdE5ld2xpbmUoKSBjb25zdCB7IHJldHVybiBtX2xleGVyLT5wb3NpdGlvbkJlZm9yZUxh
c3ROZXdsaW5lKCk7IH0KKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmIGNs
b3NlZFZhcmlhYmxlcygpIHsgcmV0dXJuIHN0ZDo6bW92ZShtX2Nsb3NlZFZhcmlhYmxlcyk7IH0K
IAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgQWxsb3dJbk92ZXJyaWRlIHsKQEAgLTU0MCw3ICs1NDYs
NyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBwYXJzZUlubmVyKCk7CiAKICAgICB2b2lkIGRpZEZp
bmlzaFBhcnNpbmcoU291cmNlRWxlbWVudHMqLCBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25T
dGFja3M6OlZhclN0YWNrPiosIAotICAgICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25T
dGFja3M6OkZ1bmN0aW9uU3RhY2s+KiwgQ29kZUZlYXR1cmVzLCBpbnQsIElkZW50aWZpZXJTZXQm
KTsKKyAgICAgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0
YWNrPiosIENvZGVGZWF0dXJlcywgaW50LCBJZGVudGlmaWVyU2V0JiwgY29uc3QgVmVjdG9yPFJl
ZlB0cjxTdHJpbmdJbXBsPj4mJik7CiAKICAgICAvLyBVc2VkIHRvIGRldGVybWluZSB0eXBlIG9m
IGVycm9yIHRvIHJlcG9ydC4KICAgICBib29sIGlzRnVuY3Rpb25Cb2R5Tm9kZShTY29wZU5vZGUq
KSB7IHJldHVybiBmYWxzZTsgfQpAQCAtODQwLDkgKzg0NiwxMSBAQCBwcml2YXRlOgogICAgIGNv
bnN0IElkZW50aWZpZXIqIG1fbGFzdEZ1bmN0aW9uTmFtZTsKICAgICBSZWZQdHI8U291cmNlUHJv
dmlkZXJDYWNoZT4gbV9mdW5jdGlvbkNhY2hlOwogICAgIFNvdXJjZUVsZW1lbnRzKiBtX3NvdXJj
ZUVsZW1lbnRzOworICAgIGJvb2wgbV9wYXJzaW5nQnVpbHRpbjsKICAgICBQYXJzZXJBcmVuYURh
dGE8RGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrPiogbV92YXJEZWNsYXJhdGlvbnM7CiAgICAg
UGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiogbV9mdW5j
RGVjbGFyYXRpb25zOwogICAgIElkZW50aWZpZXJTZXQgbV9jYXB0dXJlZFZhcmlhYmxlczsKKyAg
ICBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiBtX2Nsb3NlZFZhcmlhYmxlczsKICAgICBDb2Rl
RmVhdHVyZXMgbV9mZWF0dXJlczsKICAgICBpbnQgbV9udW1Db25zdGFudHM7CiAgICAgCkBAIC05
NTcsNiArOTY1LDEwIEBAIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gcGFyc2UoVk0qIHZtLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uUGFyYW1ldGVyCiAgICAgICAgIFJlZlB0cjxQ
YXJzZWROb2RlPiByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IpOwogICAg
ICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgICAgICpwb3NpdGlv
bkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsK
KyAgICAgICAgaWYgKHN0cmljdG5lc3MgPT0gSlNQYXJzZUJ1aWx0aW4pIHsKKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgICAgICAgICByZXN1bHQtPnNldENsb3NlZFZh
cmlhYmxlcyhzdGQ6Om1vdmUocGFyc2VyLmNsb3NlZFZhcmlhYmxlcygpKSk7CisgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiAgICAgfQogICAgIFBhcnNlcjxMZXhl
cjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBwYXJhbWV0ZXJzLCBuYW1lLCBzdHJpY3RuZXNz
LCBwYXJzZXJNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyTW9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMu
aAppbmRleCA0ZTlhMTdjZDIxY2EzNDE0NmJiZDQ4MTU2YTM3MmNkNDA0ZGVmNjBjLi5mN2E3NWJm
N2MzNzg1N2U0NGI2ZDVkNzFmNDUyOWJiMWFjMWNmNWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi1lbnVtIEpTUGFyc2VyU3RyaWN0bmVzcyB7IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VT
dHJpY3QgfTsKK2VudW0gSlNQYXJzZXJTdHJpY3RuZXNzIHsgSlNQYXJzZU5vcm1hbCwgSlNQYXJz
ZUJ1aWx0aW4sIEpTUGFyc2VTdHJpY3QgfTsKIGVudW0gSlNQYXJzZXJNb2RlIHsgSlNQYXJzZVBy
b2dyYW1Db2RlLCBKU1BhcnNlRnVuY3Rpb25Db2RlIH07CiAKIGVudW0gUHJvZmlsZXJNb2RlIHsg
UHJvZmlsZXJPZmYsIFByb2ZpbGVyT24gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlclRva2Vucy5oCmluZGV4IDgyYTI2NjM5YTc5MjIwYTA4NDQ1NmI0OGYzMjg1MmQxNDNj
NzM5ZDAuLjhjODdhZDlmYWRiZGM0YWYzOWFjOTlkYjJkODQ0NWUxM2ZmZmQzNWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaApAQCAtMTQ5LDYgKzE0OSw3
IEBAIGVudW0gSlNUb2tlblR5cGUgewogICAgIElOVkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9S
VE9LID0gNyB8IEVycm9yVG9rZW5GbGFnLAogICAgIFVOVEVSTUlOQVRFRF9TVFJJTkdfTElURVJB
TF9FUlJPUlRPSyA9IDggfCBFcnJvclRva2VuRmxhZyB8IFVudGVybWluYXRlZEVycm9yVG9rZW5G
bGFnLAogICAgIElOVkFMSURfU1RSSU5HX0xJVEVSQUxfRVJST1JUT0sgPSA5IHwgRXJyb3JUb2tl
bkZsYWcsCisgICAgSU5WQUxJRF9QUklWQVRFX05BTUVfRVJST1JUT0sgPSAxMCB8IEVycm9yVG9r
ZW5GbGFnCiB9OwogCiBzdHJ1Y3QgSlNUZXh0UG9zaXRpb24gewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0xlZ2FjeVByb2ZpbGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9MZWdhY3lQcm9maWxlci5jcHAKaW5kZXggZGQyYWNkOWYwZThj
N2VlMTY4NDA2MWY1MmM3N2U3OGI4ZmNmYTk1Zi4uMDI2MDcwZjk1OTgyNDk5ZDI3M2I4ZGQ0Y2Nl
NGE4Zjg2MmZiNjZlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L0xlZ2FjeVByb2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
TGVnYWN5UHJvZmlsZXIuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2Nr
LmgiCiAjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJJbnRlcm5hbEZ1
bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25J
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJOb2Rlcy5o
IgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJnTGlzdC5jcHAKaW5kZXggZTEzMTA0ZGY1OTIyZDA3NzYyNTdkMDVjYjVlODcwNTM3ZDIxNDI4
YS4uMjRjMDZiYmIxYzJjMzRiOWRhNWVmODRiMjU1Yzk5MDBkYWY4NTkxMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5jcHAKQEAgLTIyLDcgKzIyLDcgQEAKICNpbmNs
dWRlICJBcmdMaXN0LmgiCiAKICNpbmNsdWRlICJIZWFwUm9vdFZpc2l0b3IuaCIKLSNpbmNsdWRl
ICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRl
ICJKU09iamVjdC5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKaW5kZXggOGZkMTk1Y2I5YjVmN2VmNWJmM2Qy
ZmQ5MzM0MmIwMTAyNzI1ZmFmMS4uNGZiYWM2ODg2MzQ4NjE3MTY0OWEzMzRkNjFiNWRjYzM4MTRk
ZDU1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiQXJndW1lbnRzLmgiCiAKICNpbmNsdWRlICJDYWxs
RnJhbWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRl
ICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0FyZ3VtZW50c0l0ZXJhdG9yLmgiCiAjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVu
dHMuaAppbmRleCAxOGYzODkxNzEzODUyMzYyYzdhNzVhMzA1M2I0NjMxNDE3YmViODFiLi5mMTZm
ZDNkZTQwNTU5NzBiYTlkOWM2ZjBhZTYzMThmMjIwNGI2NTRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bcmd1bWVudHMuaApAQCAtMjUsNiArMjUsNyBAQAogI2RlZmluZSBBcmd1
bWVudHNfaAogCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50
aWZpZXJzLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNEZXN0cnVj
dGlibGVPYmplY3QuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yQ29uc3Ry
dWN0b3IuY3BwCmluZGV4IGFmYjU5NzkwY2IwMDk5ODliYjdiNDI4NjNlOTE4MjMzNTc2YjhhYWMu
LjkxY2FjZGZhODU3ZWI2OTM3NmEzMDgxYThjNzAyYWM5YzIxN2NhN2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9y
Q29uc3RydWN0b3IuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQXJndW1lbnRzSXRl
cmF0b3JDb25zdHJ1Y3Rvci5oIgogCiAjaW5jbHVkZSAiQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5
cGUuaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkpTQXJndW1l
bnRzSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTQ2VsbElubGluZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcAppbmRleCBkZDA4OTRmMTRh
MDIxZDVmMTI2NThhY2IwMWU3MjFmY2Q2ZDM0OGNjLi41YjRhZTg3MTZiMDU1M2JlNDYyMzk1NWU5
OWUxYjQzZWJmMThmZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCkBAIC0yNiw3ICsyNiw5
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRzSXRlcmF0b3JQcm90
b3R5cGUuaCIKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiSlNB
cmd1bWVudHNJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAKIG5h
bWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eVByb3RvdHlwZS5jcHAKaW5kZXggMjdhYzZkNDhhNzFmNzk1NTAyYTEwY2VhNjQ3ODY1NDEzNWE0
NjNhMC4uNmRjN2JlNTY5NjlkZTY3ZjYyMTA3YmIzYTUxYTMwOGZhM2JhNzZiZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTQXJyYXlJdGVyYXRvci5o
IgogI2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nSm9pbmVyLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCiAj
aW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCkBAIC01Niw3ICs1Nyw2IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKik7
CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NvcnQo
RXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVBy
b3RvRnVuY1NwbGljZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5UHJvdG9GdW5jVW5TaGlmdChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRXZlcnkoRXhlY1N0YXRlKik7CiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0ZvckVhY2go
RXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVBy
b3RvRnVuY1NvbWUoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheVByb3RvRnVuY0luZGV4T2YoRXhlY1N0YXRlKik7CkBAIC05NTQsNjkgKzk1NCw2
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNNYXAoRXhlY1N0
YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0QXJyYXkpOwogfQog
Ci0vLyBEb2N1bWVudGF0aW9uIGZvciB0aGVzZSB0aHJlZSBpcyBhdmFpbGFibGUgYXQ6Ci0vLyBo
dHRwOi8vZGV2ZWxvcGVyLXRlc3QubW96aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0phdmFTY3JpcHRf
MS41X1JlZmVyZW5jZTpPYmplY3RzOkFycmF5OmV2ZXJ5Ci0vLyBodHRwOi8vZGV2ZWxvcGVyLXRl
c3QubW96aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0phdmFTY3JpcHRfMS41X1JlZmVyZW5jZTpPYmpl
Y3RzOkFycmF5OmZvckVhY2gKLS8vIGh0dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3ppbGxhLm9yZy9l
bi9kb2NzL0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6QXJyYXk6c29tZQot
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRXZlcnkoRXhlY1N0
YXRlKiBleGVjKQotewotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhlYy0+aG9zdFRoaXNWYWx1
ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKLSAgICB1bnNpZ25l
ZCBsZW5ndGggPSB0aGlzT2JqLT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0
aCkudG9VSW50MzIoZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCi0gICAgSlNWYWx1ZSBm
dW5jdGlvbiA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAg
IENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAg
ICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjKTsKLQotICAgIEpTVmFsdWUgYXBwbHlUaGlzID0gZXhlYy0+YXJndW1lbnQo
MSk7Ci0KLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbih0cnVlKTsKLQotICAgIHVuc2ln
bmVkIGsgPSAwOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUpTICYmIGlzSlNBcnJheSh0
aGlzT2JqKSkgewotICAgICAgICBKU0Z1bmN0aW9uKiBmID0ganNDYXN0PEpTRnVuY3Rpb24qPihm
dW5jdGlvbik7Ci0gICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh0aGlzT2JqKTsKLSAg
ICAgICAgQ2FjaGVkQ2FsbCBjYWNoZWRDYWxsKGV4ZWMsIGYsIDMpOwotICAgICAgICBmb3IgKDsg
ayA8IGxlbmd0aCAmJiAhZXhlYy0+aGFkRXhjZXB0aW9uKCk7ICsraykgewotICAgICAgICAgICAg
aWYgKFVOTElLRUxZKCFhcnJheS0+Y2FuR2V0SW5kZXhRdWlja2x5KGspKSkKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRUaGlz
KGFwcGx5VGhpcyk7Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDAsIGFycmF5
LT5nZXRJbmRleFF1aWNrbHkoaykpOwotICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVu
dCgxLCBqc051bWJlcihrKSk7Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDIs
IHRoaXNPYmopOwotICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWNoZWRDYWxsLmNhbGwo
KTsKLSAgICAgICAgICAgIGlmICghcmVzdWx0LnRvQm9vbGVhbihleGVjKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwotICAgICAgICB9
Ci0gICAgfQotICAgIGZvciAoOyBrIDwgbGVuZ3RoICYmICFleGVjLT5oYWRFeGNlcHRpb24oKTsg
KytrKSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmopOwotICAgICAgICBpZiAo
IXRoaXNPYmotPmdldFByb3BlcnR5U2xvdChleGVjLCBrLCBzbG90KSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGVhY2hBcmd1bWVudHM7Ci0g
ICAgICAgIGVhY2hBcmd1bWVudHMuYXBwZW5kKHNsb3QuZ2V0VmFsdWUoZXhlYywgaykpOwotICAg
ICAgICBlYWNoQXJndW1lbnRzLmFwcGVuZChqc051bWJlcihrKSk7Ci0gICAgICAgIGVhY2hBcmd1
bWVudHMuYXBwZW5kKHRoaXNPYmopOwotCi0gICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0K
LSAgICAgICAgYm9vbCBwcmVkaWNhdGVSZXN1bHQgPSBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxs
VHlwZSwgY2FsbERhdGEsIGFwcGx5VGhpcywgZWFjaEFyZ3VtZW50cykudG9Cb29sZWFuKGV4ZWMp
OwotICAgICAgICBpZiAoIXByZWRpY2F0ZVJlc3VsdCkgewotICAgICAgICAgICAgcmVzdWx0ID0g
anNCb29sZWFuKGZhbHNlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotfQotCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRm9yRWFjaChFeGVjU3RhdGUqIGV4ZWMpCiB7
CiAgICAgSlNPYmplY3QqIHRoaXNPYmogPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCkudG9UaGlzKGV4
ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggNTEwZTM4M2ZhZTU3NWFhZGE4MTc2YzA0NDFlZTcy
NWI0M2E0YzczMi4uZDMwNDg3N2ZlOWNkZTFjMDkxOWZkNDU5NWY4MTFlY2FiY2U3NzI3NiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC0xNDQsMjQg
KzE0NCwyNiBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hlOjpnZXRGdW5j
dGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShWTSYgdgogICAgIEpTVGV4dFBvc2l0aW9uIHBv
c2l0aW9uQmVmb3JlTGFzdE5ld2xpbmU7CiAgICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFt
ID0gcGFyc2U8UHJvZ3JhbU5vZGU+KCZ2bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIEpTUGFy
c2VOb3JtYWwsIEpTUGFyc2VQcm9ncmFtQ29kZSwgZXJyb3IsICZwb3NpdGlvbkJlZm9yZUxhc3RO
ZXdsaW5lKTsKICAgICBpZiAoIXByb2dyYW0pIHsKLSAgICAgICAgQVNTRVJUKGVycm9yLm1fdHlw
ZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXJy
b3IubV90eXBlICE9IFBhcnNlckVycm9yOjpFcnJvck5vbmUpOwogICAgICAgICBtX3NvdXJjZUNv
ZGUucmVtb3ZlKGFkZFJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
IAogICAgIC8vIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBhbiBpbnB1dCBzdHJpbmcgdGhhdCB3b3Vs
ZCByZXN1bHQgaW4gYSBzaW5nbGUgYW5vbnltb3VzIGZ1bmN0aW9uIGV4cHJlc3Npb24uCiAgICAg
U3RhdGVtZW50Tm9kZSogZXhwclN0YXRlbWVudCA9IHByb2dyYW0tPnNpbmdsZVN0YXRlbWVudCgp
OwotICAgIEFTU0VSVChleHByU3RhdGVtZW50KTsKLSAgICBBU1NFUlQoZXhwclN0YXRlbWVudC0+
aXNFeHByU3RhdGVtZW50KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKICAg
ICBFeHByZXNzaW9uTm9kZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVtZW50Tm9k
ZSo+KGV4cHJTdGF0ZW1lbnQpLT5leHByKCk7Ci0gICAgQVNTRVJUKGZ1bmNFeHByKTsKKyAgICBS
RUxFQVNFX0FTU0VSVChmdW5jRXhwcik7CiAgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHItPmlz
RnVuY0V4cHJOb2RlKCkpOwogICAgIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkgPSBzdGF0aWNfY2Fz
dDxGdW5jRXhwck5vZGUqPihmdW5jRXhwciktPmJvZHkoKTsKKyAgICBSRUxFQVNFX0FTU0VSVCgh
cHJvZ3JhbS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CisgICAgCiAgICAgYm9keS0+c2V0RW5k
UG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7Ci0gICAgQVNTRVJUKGJvZHkpOwot
ICAgIEFTU0VSVChib2R5LT5pZGVudCgpLmlzTnVsbCgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChi
b2R5KTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5LT5pZGVudCgpLmlzTnVsbCgpKTsKIAotICAg
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBib2R5LCB0cnVlKTsKKyAg
ICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgYm9keSwgdHJ1ZSwgVW5s
aW5rZWROb3JtYWxGdW5jdGlvbik7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5tX25hbWVWYWx1
ZS5zZXQodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwganNTdHJpbmcoJnZtLCBuYW1lLnN0cmluZygp
KSk7CiAKICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gU291cmNlQ29kZVZhbHVlKHZt
LCBmdW5jdGlvbkV4ZWN1dGFibGUsIG1fc291cmNlQ29kZS5hZ2UoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKaW5kZXggM2Y1
YzY0NWMwOThkNTI3ZmMwYzcyNTllOTQ0N2VmYmU4ODY4YTI5Yy4uMmZjMmI3MjdhZmNlZWUxZWMy
YzYyNWRlNTY3NWIzYmUxY2Y2MGQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcApAQCAtMjcsNyArMjcsMTAgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICNkZWZpbmUgSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKG5hbWUpICwgbmFt
ZSh2bSwgI25hbWUpCiAjZGVmaW5lIElOSVRJQUxJWkVfS0VZV09SRChuYW1lKSAsIG5hbWUjI0tl
eXdvcmQodm0sICNuYW1lKQotI2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFNRShuYW1lKSAs
IG5hbWUjI1ByaXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb20oUHJpdmF0ZU5hbWUoKSkpCisjZGVm
aW5lIElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKG5hbWUpIFwKKyAgICAsIG5hbWUjI1ByaXZhdGVO
YW1lKElkZW50aWZpZXI6OmZyb20oUHJpdmF0ZU5hbWUoKSkpIFwKKyAgICAsIG1fIyNuYW1lIyNQ
dWJsaWNTdHJpbmdQYWlyKG5hbWUsIG5hbWUjI1ByaXZhdGVOYW1lKSBcCisKIAogQ29tbW9uSWRl
bnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZNKiB2bSkKICAgICA6IG51bGxJZGVudGlmaWVy
KCkKQEAgLTM4LDggKzQxLDI2IEBAIENvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVy
cyhWTSogdm0pCiAgICAgLCBoYXNOZXh0SWRlbnRpZmllcih2bSwgImhhc05leHQiKQogICAgIEpT
Q19DT01NT05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKElOSVRJQUxJWkVfS0VZV09SRCkKICAg
ICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpFX1BS
T1BFUlRZX05BTUUpCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJ
QUxJWkVfUFJPUEVSVFlfTkFNRSkKICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNf
RUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKQogewogfQogCitjb25z
dCBJZGVudGlmaWVyKiBDb21tb25JZGVudGlmaWVyczo6Z2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRl
bnRpZmllciYgaWRlbnQpIGNvbnN0Cit7CisjZGVmaW5lIFJFVFVSTl9JRl9QUklWQVRFX05BTUVf
TUFUQ0hFUyhuYW1lKSBpZiAobV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuZmlyc3QgPT0gaWRl
bnQpIHJldHVybiAmbV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuc2Vjb25kOworICAgIEpTQ19D
T01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoUkVUVVJOX0lGX1BS
SVZBVEVfTkFNRV9NQVRDSEVTKQorI3VuZGVmIFJFVFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hF
UworICAgIHJldHVybiAwOworfQorCitJZGVudGlmaWVyIENvbW1vbklkZW50aWZpZXJzOjpnZXRQ
dWJsaWNOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAoreworI2RlZmluZSBSRVRV
Uk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMobmFtZSkgaWYgKG1fIyNuYW1lIyNQdWJsaWNTdHJp
bmdQYWlyLnNlY29uZCA9PSBpZGVudCkgcmV0dXJuIG1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQYWly
LmZpcnN0OworICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZ
X05BTUUoUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKQorI3VuZGVmIFJFVFVSTl9JRl9Q
UklWQVRFX05BTUVfTUFUQ0hFUworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIGVtcHR5SWRlbnRpZmllcjsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRl
eCBlOGY5ZWQ4MmJjNzk0NjIwMzgyNjZiMzAyMDc4MjI0N2IxZmEyN2EzLi45MjRkMzZhYzY5MTM1
MDM1N2NiMzgyYjFlZjNiNDBhMGEwOGMwYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTIyLDYgKzIyLDcgQEAKICNkZWZp
bmUgQ29tbW9uSWRlbnRpZmllcnNfaAogCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgorI2luY2x1
ZGUgIkpTQ0J1aWx0aW5zLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIC8vIE1h
cmtlZEFyZ3VtZW50QnVmZmVyIG9mIHByb3BlcnR5IG5hbWVzLCBwYXNzZWQgdG8gYSBtYWNybyBz
byB3ZSBjYW4gZG8gc2V0IHRoZW0gdXAgdmFyaW91cwpAQCAtMTMzLDggKzEzNCwxMCBAQAogICAg
IG1hY3JvKG9zckV4aXRzKSBcCiAgICAgbWFjcm8ocGFyc2UpIFwKICAgICBtYWNybyhwcm9maWxl
ZEJ5dGVjb2RlcykgXAorICAgIG1hY3JvKHByb21pc2UpIFwKICAgICBtYWNybyhwcm9wZXJ0eUlz
RW51bWVyYWJsZSkgXAogICAgIG1hY3JvKHByb3RvdHlwZSkgXAorICAgIG1hY3JvKHJlc29sdmUp
IFwKICAgICBtYWNybyhzZXQpIFwKICAgICBtYWNybyhzaXplKSBcCiAgICAgbWFjcm8oc2xpY2Up
IFwKQEAgLTE1NSw3ICsxNTgsMTQgQEAKICAgICBtYWNybyh2YWx1ZXMpIFwKICAgICBtYWNybyh2
YWx1ZU9mKSBcCiAgICAgbWFjcm8od2luZG93KSBcCi0gICAgbWFjcm8od3JpdGFibGUpCisgICAg
bWFjcm8od3JpdGFibGUpIFwKKyAgICBtYWNybyhpdGVyYXRvcikgXAorICAgIG1hY3JvKGl0ZXJh
dG9yTmV4dCkgXAorICAgIG1hY3JvKHJlamVjdCkgXAorICAgIG1hY3JvKGZ1bGZpbGxtZW50SGFu
ZGxlcikgXAorICAgIG1hY3JvKHJlamVjdGlvbkhhbmRsZXIpIFwKKyAgICBtYWNybyhkZWZlcnJl
ZCkgXAorICAgIG1hY3JvKGNvdW50ZG93bkhvbGRlcikgXAogCiAjZGVmaW5lIEpTQ19DT01NT05f
SURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKG1hY3JvKSBcCiAgICAgbWFjcm8oYnJlYWspIFwKQEAg
LTIwMyw3ICsyMTMsNyBAQAogICAgIG1hY3JvKHZvaWQpIFwKICAgICBtYWNybyh3aGlsZSkgXAog
ICAgIG1hY3JvKHdpdGgpIFwKLSAgICBtYWNybyh5aWVsZCkKKyAgICBtYWNybyh5aWVsZCkgXAog
CiAjZGVmaW5lIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05B
TUUobWFjcm8pIFwKICAgICBtYWNybyhpdGVyYXRvcikgXApAQCAtMjE2LDcgKzIyNiwxMiBAQAog
ICAgIG1hY3JvKGluZGV4KSBcCiAgICAgbWFjcm8odmFsdWVzKSBcCiAgICAgbWFjcm8oZGVmZXJy
ZWQpIFwKLSAgICBtYWNybyhjb3VudGRvd25Ib2xkZXIpCisgICAgbWFjcm8oY291bnRkb3duSG9s
ZGVyKSBcCisgICAgbWFjcm8oT2JqZWN0KSBcCisgICAgbWFjcm8oVHlwZUVycm9yKSBcCisgICAg
bWFjcm8odW5kZWZpbmVkS2V5d29yZCkgXAorICAgIG1hY3JvKGNhbGwpIFwKKyAgICBtYWNybyhh
cHBseSkKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTI0MCwxMSArMjU1LDE1IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAKICNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJU
WV9OQU1FX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWU7CiAgICAgICAgIEpTQ19D
T01NT05fSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKEpTQ19JREVOVElGSUVSX0RFQ0xB
UkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwpCisgICAgICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVO
Q1RJT05fTkFNRShKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFMKQog
I3VuZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwKIAotI2Rl
ZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwo
bmFtZSkgY29uc3QgSWRlbnRpZmllciBuYW1lIyNQcml2YXRlTmFtZTsKKyNkZWZpbmUgSlNDX0lE
RU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMKG5hbWUpIGNvbnN0
IElkZW50aWZpZXIgbmFtZSMjUHJpdmF0ZU5hbWU7IGNvbnN0IHN0ZDo6cGFpcjxJZGVudGlmaWVy
LCBJZGVudGlmaWVyPiBtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpcjsKICAgICAgICAgSlNDX0NP
TU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShKU0NfSURFTlRJRklF
Ul9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwpCiAjdW5kZWYgSlNDX0lERU5U
SUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMCisgICAgICAgIAorICAg
ICAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJikg
Y29uc3Q7CisgICAgICAgIElkZW50aWZpZXIgZ2V0UHVibGljTmFtZShjb25zdCBJZGVudGlmaWVy
JikgY29uc3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCAwNzU4NzVmYjIz
MTZhNTU1NzA1MGE2NjkwY2QwZjk4ODI0ODRmNWYzLi41YWY5MDg3NTRlNzQ3ZjhjYWUwY2QwNGFm
OGQ0OTE1MDA0NjhjMmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlICJKSVQuaCIK
ICNpbmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgotI2luY2x1
ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIK
ICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IDY4ZjY0MDg0ZmEyODExMmZl
ZTBkOTQ0MmRiZGVlMzhkNTIxMTQ1NzEuLjhkOGM4ZmVkNTRkMjI0NWYwYTdmZjUyNjdiZmZiMWI4
MjE5MGRiNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5j
bHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBl
cnMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTU3RhY2tJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiTmFtZUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGln
bm1lbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAKaW5kZXggNTUzMzRiZTJmOTgwYTk4ZjdmZWE0
MmEwNWJlMGYyMGMwMTlmZjBkZC4uZmE1N2MwMjY4NWU1M2Q1MjUyODgwNTdlMjExZDk4YjEwOTgx
ZDczZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzRXhjZXB0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRl
ICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJKSVRFeGNl
cHRpb25zLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1
bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgQ29tbW9uU2xvd1BhdGhzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggMDVlMTFlMGI4MGEzNDMw
YWVhYjIyYjAyMjJhMjEyZjRhOGUyYzQ5Yi4uMzY0Y2M3MTY2NjA4YjUwMDdkNDc3ZDg3MzkxOGE1
ZDY0YjE2ODY1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5jcHAKQEAgLTgxLDYgKzgxLDExIEBAIEpTT2JqZWN0KiBjcmVhdGVTdGFj
a092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogSlNPYmplY3Qq
IGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCkKIHsKKyAgICAKKyAgICBpZiAoaWRlbnQuaW1wbCgpLT5pc0VtcHR5VW5p
cXVlKCkpIHsKKyAgICAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2FuJ3QgZmluZCBw
cml2YXRlIHZhcmlhYmxlOiBAIiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdldFB1YmxpY05hbWUo
aWRlbnQpLnN0cmluZygpKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJvcihl
eGVjLCBtZXNzYWdlKTsKKyAgICB9CiAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2Fu
J3QgZmluZCB2YXJpYWJsZTogIiwgaWRlbnQuc3RyaW5nKCkpKTsKICAgICByZXR1cm4gY3JlYXRl
UmVmZXJlbmNlRXJyb3IoZXhlYywgbWVzc2FnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggMTk4OTc2YmIzZmU2ZTZlOTExNzk4MTJkMWNhZjli
OGJmOWJmZDBiYi4uY2YwZTc1M2E3YzVmNTQ0NjdiNjRkOGUyYTliM2ZiYTI3MTUwMDAxMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtNDg0LDcgKzQ4
NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAKLSAgICBFeGVjdXRhYmxl
SW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRz
QWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UpOyB9CisgICAg
RXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxl
SW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNl
LCBmYWxzZSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1fdW5s
aW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQogICAgIHVuc2lnbmVkIG51bWJl
ck9mRnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1i
ZXJPZkZ1bmN0aW9uRGVjbHMoKTsgfQpAQCAtNTQwLDcgKzU0MCw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgY2xlYXJDb2RlKCk7CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygp
IGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZh
bCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0
YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24o
KSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSk7IH0KIAogcHJpdmF0
ZToKICAgICBmcmllbmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKQEAgLTYyOCw3ICs2MjgsOCBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2tGb3Ioa2lu
ZCk7CiAgICAgfQotICAgICAgICAKKworICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKTsgfQog
ICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJs
ZS0+bmFtZSgpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgaW5mZXJyZWROYW1lKCkgeyByZXR1
cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmluZmVycmVkTmFtZSgpOyB9CiAgICAgSlNTdHJpbmcq
IG5hbWVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1lVmFs
dWUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Q
cm90b3R5cGUuY3BwCmluZGV4IGMxYjA4YWYyZDgxOGRhZTU3ZTFiMDBmZGExNzNhODE2MTM3NTI5
YjUuLjEyNDkwYzQwZjMzNDE3ZWNhOTIzODUwYTBkYzY2MmRiYmNkNDBmMzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKQEAg
LTIyLDEyICsyMiwxMyBAQAogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAKICNpbmNs
dWRlICJBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpT
QXJyYXkuaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1N0cmluZ0J1aWxkZXIu
aCIKLSNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5o
IgogI2luY2x1ZGUgIkxleGVyLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCkBAIC0xMDgs
NyArMTA5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByb3RvRnVu
Y1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
Pmhvc3RUaGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKEpTRnVuY3Rpb246
OmluZm8oKSkpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5j
dGlvbio+KHRoaXNWYWx1ZSk7Ci0gICAgICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24o
KSkKKyAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQogICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4
ZWMsICJmdW5jdGlvbiAiLCBmdW5jdGlvbi0+bmFtZShleGVjKSwgIigpIHtcbiAgICBbbmF0aXZl
IGNvZGVdXG59IikpOwogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBm
dW5jdGlvbi0+anNFeGVjdXRhYmxlKCk7CiAgICAgICAgIFN0cmluZyBzb3VyY2VTdHJpbmcgPSBl
eGVjdXRhYmxlLT5zb3VyY2UoKS50b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKaW5kZXggNzJlZDFjNzEyNDA2MTE2OGIwYWRkZDMx
MTZmNzU1YTExN2I4ZmI5MC4uYjM3NDk0MzA5OWUyMTU1YTM5NzcxMzMxMzQ3MDJjMmEyNGFjYzg2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3Bw
CkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgSlNBY3RpdmF0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAKIGlubGluZSBib29sIEpTQWN0aXZhdGlv
bjo6c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5p
bmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRy
eSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwog
ICAgIGlmIChlbnRyeS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC03Miw3
ICs3Miw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQoUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90CiAKIGlubGluZSBib29sIEpTQWN0aXZh
dGlvbjo6c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBz
eW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAg
U3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0
eU5hbWUudWlkKCkpOwogICAgIGlmIChlbnRyeS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCkBAIC04OSw3ICs4OSw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9s
VGFibGVQdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOCiAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6
OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwogICAgIAotICAgIFN5bWJvbFRhYmxl
RW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1Ymxp
Y05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlu
bGluZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChlbnRyeS5pc051bGwoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChlbnRyeS5pc1JlYWRPbmx5KCkpIHsKQEAgLTEz
Niw3ICsxMzYsNyBAQCBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0V2l0
aEF0dHJpYnV0ZXMoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcAogICAgIFdyaXRlQmFycmllckJh
c2U8VW5rbm93bj4qIHJlZzsKICAgICB7CiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9j
a2VyKHN5bWJvbFRhYmxlKCktPm1fbG9jayk7Ci0gICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0
ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZSgpLT5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1
YmxpY05hbWUoKSk7CisgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBz
eW1ib2xUYWJsZSgpLT5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICAgICAg
aWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUoKS0+ZW5kKGxvY2tlcikpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5ID0gaXRlci0+dmFsdWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0
ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRl
cmF0b3IuY3BwCmluZGV4IDJmY2Y4ODE1YzA1NjgwNTgxMmE3OTkxYTVmZjA2M2Q2ODczOTcxNjQu
LjlhOTI1ODNhYTBlYzkwZGJiMzI4ZWNkNTBkYzMxMzlhZWYwMjczYjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiSlNBcmd1bWVudHNJdGVyYXRvci5oIgogCiAjaW5j
bHVkZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAK
aW5kZXggOTAwN2I1ZjdkM2YxMDNiMWQyMWIxYTM2NWEyNmMyMTVjMzJiNGQyOC4uYmEwYTJkMzhl
OWM1M2UxNTkzN2Q0NmE4OTUxYThjOGM0NTA3OTI2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJFeGVjdXRh
YmxlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSW5kZXhpbmdIZWFk
ZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJv
cGVydHlOYW1lQXJyYXkuaCIKICNpbmNsdWRlICJSZWplY3QuaCIKICNpbmNsdWRlIDx3dGYvQVZM
VHJlZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVy
YXRvci5jcHAKaW5kZXggZDUwNmM0ZWJkMjYyMGVmZDcwNzkzYTg3M2QwODUyZmJkOTc4Mjg1OS4u
Y2YzNzA5N2VjMGM2OTI1YTg2N2I4YzAxMGMwZWZjNDA3NDQ4NWYxZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3BwCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2Vs
bElubGluZXMuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJTbG90
VmlzaXRvcklubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCmluZGV4IGNjYTY4ODhiZjk4YTAyODY0NmNhM2Rk
ZGYzNzYyN2NlMGU3ZDkzMDIuLjMzOWE3YWI3ZjU5NTE1ZTk2YWZiN2VjNGI4NzQxZTdhYThlMTY2
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCkBA
IC0zMiw3ICszMiw5IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNOb3RBbk9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3Ry
aW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk51bWJlck9iamVjdC5oIgorI2luY2x1ZGUgIk9wZXJh
dGlvbnMuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJp
bmdFeHRyYXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5s
aW5lcy5oCmluZGV4IGY3Yzg0NDY0NTA5MmIyNTA4MDVlNmU4ZDQ4MzJjOTk4YmRiODliNTQuLmQ3
OTVkZDU2YTk3ZGRiNTk3YzA5MGZjMmUwYjdmMzA4ZTMzZWJjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKQEAgLTI3LDggKzI3LDEwIEBACiAj
ZGVmaW5lIEpTQ2VsbElubGluZXNfaAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVk
ZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJEZWZlckdDLmgiCiAjaW5jbHVkZSAi
SGFuZGxlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Nl
bGwuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDI0MTk2NDYx
MGJiNDQyN2IxODYzNzMzNDZlMjRmNWE4MmQwY2RjYzQuLmFjZTZjMTQ3ZTQ5N2ZlZTIwMjkyZmI1
NTM5NzYwZDVkNjk4MjljZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uY3BwCkBAIC0zNCw3ICszNCw4IEBACiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5
cGUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCi0j
aW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiIAorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5o
IgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3QuaCIKICNpbmNsdWRlICJKU05vdEFuT2JqZWN0LmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIu
aCIKQEAgLTEwOSw2ICsxMTAsMTQgQEAgdm9pZCBKU0Z1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGludCBsZW5ndGgKICAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIobGVuZ3RoKSwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogCitKU0Z1bmN0aW9uKiBKU0Z1bmN0
aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgSlNGdW5jdGlv
biogZnVuY3Rpb24gPSBjcmVhdGUodm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCk7CisgICAg
ZnVuY3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmco
JnZtLCBleGVjdXRhYmxlLT5uYW1lKCkuc3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkg
fCBEb250RW51bSk7CisgICAgZnVuY3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bGVuZ3RoLCBqc051bWJlcihleGVjdXRhYmxlLT5wYXJhbWV0ZXJDb3VudCgpKSwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHJldHVybiBmdW5jdGlvbjsKK30KKwog
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGUqIEpTRnVuY3Rpb246OmNyZWF0ZUFsbG9jYXRpb25Qcm9m
aWxlKEV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IGlubGluZUNhcGFjaXR5KQogewogICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CkBAIC0xNDIsNyArMTUxLDcgQEAgY29uc3QgU3RyaW5nIEpTRnVuY3Rp
b246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVy
biBleHBsaWNpdE5hbWU7CiAgICAgCiAgICAgY29uc3QgU3RyaW5nIGFjdHVhbE5hbWUgPSBuYW1l
KGV4ZWMpOwotICAgIGlmICghYWN0dWFsTmFtZS5pc0VtcHR5KCkgfHwgaXNIb3N0RnVuY3Rpb24o
KSkKKyAgICBpZiAoIWFjdHVhbE5hbWUuaXNFbXB0eSgpIHx8IGlzSG9zdE9yQnVpbHRpbkZ1bmN0
aW9uKCkpCiAgICAgICAgIHJldHVybiBhY3R1YWxOYW1lOwogICAgIAogICAgIHJldHVybiBqc0V4
ZWN1dGFibGUoKS0+aW5mZXJyZWROYW1lKCkuc3RyaW5nKCk7CkBAIC0xNTAsMTAgKzE1OSwyMCBA
QCBjb25zdCBTdHJpbmcgSlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKEV4ZWNTdGF0
ZSogZXhlYykKIAogY29uc3QgU291cmNlQ29kZSogSlNGdW5jdGlvbjo6c291cmNlQ29kZSgpIGNv
bnN0CiB7Ci0gICAgaWYgKGlzSG9zdEZ1bmN0aW9uKCkpCisgICAgaWYgKGlzSG9zdE9yQnVpbHRp
bkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiAmanNFeGVjdXRhYmxl
KCktPnNvdXJjZSgpOwogfQorICAgIAorYm9vbCBKU0Z1bmN0aW9uOjppc0hvc3RPckJ1aWx0aW5G
dW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzSG9zdEZ1bmN0aW9uKCkgfHwgaXNCdWls
dGluRnVuY3Rpb24oKTsKK30KKworYm9vbCBKU0Z1bmN0aW9uOjppc0J1aWx0aW5GdW5jdGlvbigp
IGNvbnN0Cit7CisgICAgcmV0dXJuICFpc0hvc3RGdW5jdGlvbigpICYmIGpzRXhlY3V0YWJsZSgp
LT5pc0J1aWx0aW5GdW5jdGlvbigpOworfQogCiB2b2lkIEpTRnVuY3Rpb246OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKQEAgLTI3Nyw3ICsyOTYs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBFbmNvZGVkSlNWYWx1ZSBzbG90QmFzZQogICAgIGlmICghY2FsbGVyLmlzT2JqZWN0KCkg
fHwgIWFzT2JqZWN0KGNhbGxlciktPmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbGVyKTsKICAgICBKU0Z1bmN0aW9uKiBmdW5j
dGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2FsbGVyKTsKLSAgICBpZiAoZnVuY3Rpb24tPmlz
SG9zdEZ1bmN0aW9uKCkgfHwgIWZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2Rl
KCkpCisgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpIHx8ICFmdW5j
dGlvbi0+anNFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGNhbGxlcik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkZ1bmN0aW9uLmNhbGxlciB1c2VkIHRvIHJldHJp
ZXZlIHN0cmljdCBjYWxsZXIiKSkpOwogfQpAQCAtMjk5LDcgKzMxOCw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTRnVuY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgc2xv
dEJhc2UsIEVuY29kCiBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RGdW5jdGlv
bigpKQorICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQogICAg
ICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5wcm90b3R5cGUpIHsKQEAgLTM2MSw3ICszODAsNyBAQCBib29sIEpTRnVuY3Rp
b246OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5Tgogdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJv
cGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsKLSAgICBpZiAoIXRoaXNPYmpl
Y3QtPmlzSG9zdEZ1bmN0aW9uKCkgJiYgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGll
cykpIHsKKyAgICBpZiAoIXRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgJiYg
KG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpIHsKICAgICAgICAgLy8gTWFrZSBz
dXJlIHByb3RvdHlwZSBoYXMgYmVlbiByZWlmaWVkLgogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dCh0aGlzT2JqZWN0KTsKICAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90
b3R5cGUsIHNsb3QpOwpAQCAtMzc3LDcgKzM5Niw3IEBAIHZvaWQgSlNGdW5jdGlvbjo6Z2V0T3du
Tm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywK
IHZvaWQgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4o
Y2VsbCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkpIHsKKyAgICBpZiAo
dGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkgewogICAgICAgICBCYXNlOjpw
dXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC00MjUsNyArNDQ0LDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3AKIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CiAgICAgSlNG
dW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsKLSAgICBp
ZiAodGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICBpZiAodGhpc09iamVjdC0+aXNI
b3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blBy
b3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2Vw
dGlvbik7CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5w
cm90b3R5cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApp
bmRleCA3Y2QxNGI4YzJkODAwZjYxYmRjMTJlZGQyZGYwNGQzNWZhMDYxOWI2Li5mMTUxZGZiMDIx
ZWEyNTY1MTE4Y2YwYzRkYzAxYzFkZTY2ZjgyZjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC0yNCw2ICsyNCwxMSBAQAogI2lmbmRlZiBKU0Z1bmN0
aW9uX2gKICNkZWZpbmUgSlNGdW5jdGlvbl9oCiAKKyNpZiAhUExBVEZPUk0oTUFDKSAmJiAoQ09N
UElMRVIoR0NDKSB8fCBDT01QSUxFUihDTEFORykpCitmc2RmZ3MKKyNwcmFnbWEgR0NDIGRpYWdu
b3N0aWMgaWdub3JlZCAiLVdpbmxpbmUiCisjZW5kaWYKKwogI2luY2x1ZGUgIkludGVybmFsRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgogI2luY2x1ZGUgIkpT
U2NvcGUuaCIKQEAgLTY4LDYgKzczLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBy
ZXR1cm4gZnVuY3Rpb247CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHN0YXRpYyBKU0Z1
bmN0aW9uKiBjcmVhdGVCdWlsdGluRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBK
U0dsb2JhbE9iamVjdCopOworICAgICAgICAKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShK
U0NlbGwqKTsKICAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBuYW1l
KEV4ZWNTdGF0ZSopOwpAQCAtMTQ1LDYgKzE1Miw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgcmV0dXJuIG1fYWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OwogICAgICAgICB9CiAK
KyAgICAgICAgYm9vbCBpc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpIGNvbnN0OworICAgICAgICBi
b29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3Q7CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAg
IGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdCB8IEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdz
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGlu
ZXMuaAppbmRleCBmZTRlMTE0YWRiYzIzNjc0ZDNiNjBlNjFmNzFjYjdhMDZjOTQ3ODRkLi4yNDk4
ZWMzOGNkODk1NTBmYTJmMzg1NTkzZGFjYmExMjNiMDAxN2E5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKQEAgLTUzLDEzICs1Mywx
MyBAQCBpbmxpbmUgYm9vbCBKU0Z1bmN0aW9uOjppc0hvc3RGdW5jdGlvbigpIGNvbnN0CiAKIGlu
bGluZSBOYXRpdmVGdW5jdGlvbiBKU0Z1bmN0aW9uOjpuYXRpdmVGdW5jdGlvbigpCiB7Ci0gICAg
QVNTRVJUKGlzSG9zdEZ1bmN0aW9uKCkpOworICAgIEFTU0VSVChpc0hvc3RGdW5jdGlvbk5vbklu
bGluZSgpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TmF0aXZlRXhlY3V0YWJsZSo+KG1fZXhl
Y3V0YWJsZS5nZXQoKSktPmZ1bmN0aW9uKCk7CiB9CiAKIGlubGluZSBOYXRpdmVGdW5jdGlvbiBK
U0Z1bmN0aW9uOjpuYXRpdmVDb25zdHJ1Y3RvcigpCiB7Ci0gICAgQVNTRVJUKGlzSG9zdEZ1bmN0
aW9uKCkpOworICAgIEFTU0VSVChpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpKTsKICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8TmF0aXZlRXhlY3V0YWJsZSo+KG1fZXhlY3V0YWJsZS5nZXQoKSktPmNv
bnN0cnVjdG9yKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9y
SW5saW5lcy5oCmluZGV4IDJkZGMyOWY3MTg5N2JiNTFkMzkwYjA2YjI1YTczODMzODc0YmEwYzEu
LmVkZDM0NDljZTQ3YjE3MzVlOGU1ZGJiMDVmMzE4ZTNkNTVmM2JlNjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3Ry
dWN0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaApAQCAtMjYsNiArMjYsNyBAQAog
I2lmbmRlZiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lc19oCiAjZGVm
aW5lIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzX2gKIAorI2luY2x1
ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJK
U0FycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1
Y3Rvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCA2ZGI4NjI3NGMzYjg3NGFh
YWRlNTE1MTg5ODI2NzI2ZmIxMzZjMTczLi5mMjRlYTczMDNkZjk2OWRiZDJkY2E1MmM4NmQxMWM3
OGMwMGRiOWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtMjcsNiArMjcsNyBA
QAogI2RlZmluZSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXNfaAogCiAjaW5jbHVkZSAi
QXJyYXlCdWZmZXJWaWV3LmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNs
dWRlICJEZWZlckdDLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFeGNlcHRpb25I
ZWxwZXJzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oCmlu
ZGV4IDQ1OTk5N2E0NjRiOTExOTQ3N2IxYmU4NGUzNmM0ZTI5NjZhY2VmODUuLjhlNWZmODI3OTFl
NmZmOGQ0ZWI5YzM3MzY5MWU0MzNlYjdkMTZhZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG90eXBlSW5saW5lcy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lc19oCiAjZGVmaW5lIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG90eXBlSW5saW5lc19oCiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVy
cy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgog
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAyYzI3NGMxYTdkNDgxYzA3ZGYwZDJiZWIzYjI5
MzFhMzkwN2E1ZTY2Li4wNmU1NGM4NGU3N2I5MDMyYmFhMWQyZGY0N2ExYzcyZTgwYjdkZWEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CkBAIC0zNDYsNyArMzQ2LDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBw
cm90b3R5cGUpCiAKICAgICAvLyBDb25zdHJ1Y3RvcnMKIAotICAgIEpTQ2VsbCogb2JqZWN0Q29u
c3RydWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBPYmplY3RDb25zdHJ1Y3Rv
cjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwg
bV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOworICAgIE9iamVjdENvbnN0cnVjdG9yKiBvYmplY3RD
b25zdHJ1Y3RvciA9IE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIE9iamVjdENvbnN0cnVj
dG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkp
LCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9vYmplY3RDb25zdHJ1Y3Rvci5zZXQo
dm0sIHRoaXMsIG9iamVjdENvbnN0cnVjdG9yKTsKICAgICBKU0NlbGwqIGZ1bmN0aW9uQ29uc3Ry
dWN0b3IgPSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29uc3RydWN0
b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSks
IG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwogICAgIEpTQ2VsbCogYXJyYXlDb25zdHJ1Y3Rv
ciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9hcnJheVBy
b3RvdHlwZS5nZXQoKSk7CiAKQEAgLTQzMiw3ICs0MzMsMTAgQEAgdm9pZCBKU0dsb2JhbE9iamVj
dDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgR2xvYmFsUHJvcGVydHlJbmZvIHN0YXRp
Y0dsb2JhbHNbXSA9IHsKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPk5hTiwganNOYU4oKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+SW5maW5pdHksIGpzTnVt
YmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSksIERvbnRFbnVtIHwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQsIGpzVW5kZWZpbmVkKCksIERvbnRFbnVtIHwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5KQorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCwganNVbmRlZmluZWQoKSwgRG9udEVudW0gfCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZFByaXZhdGVOYW1lLCBqc1VuZGVmaW5lZCgpLCBE
b250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5PYmplY3RQcml2YXRlTmFtZSwgb2JqZWN0Q29uc3RydWN0
b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJv
cGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPlR5cGVFcnJvclByaXZhdGVOYW1lLCBtX3R5cGVF
cnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSkK
ICAgICB9OwogICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFscywgV1RGX0FSUkFZX0xF
TkdUSChzdGF0aWNHbG9iYWxzKSk7CiAgICAgCkBAIC02MDgsNiArNjEyLDcgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5bnRheEVycm9yQ29uc3Ry
dWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3R5cGVFcnJvckNvbnN0
cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9VUklFcnJvckNvbnN0
cnVjdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9vYmplY3RDb25zdHJ1
Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvbWlzZUNvbnN0cnVj
dG9yKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2V2YWxGdW5jdGlvbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRl
eCBiMGNhZDNkYzU0NzBmN2M3YTBlNTcwYmRjZDJkZmZhODk1ZTJhYTBjLi4zYTYxNmM2ZjA1ZWRm
MWQyOTVhZjg0NDFhYTY2NTAwZmI5MmE0YTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTY3LDYgKzY3LDcgQEAgY2xhc3MgSlNTdGFj
azsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIE1pY3JvdGFzazsKIGNsYXNz
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3I7CitjbGFzcyBPYmplY3RDb25zdHJ1Y3RvcjsKIGNsYXNz
IFByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsKIGNsYXNzIFJlZ0V4
cENvbnN0cnVjdG9yOwpAQCAtMTU4LDYgKzE1OSw3IEBAIHByb3RlY3RlZDoKICAgICBXcml0ZUJh
cnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV90eXBlRXJyb3JDb25zdHJ1Y3RvcjsKICAg
ICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV9VUklFcnJvckNvbnN0cnVj
dG9yOwogICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VDb25zdHJ1Y3Rvcj4gbV9wcm9taXNlQ29u
c3RydWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPE9iamVjdENvbnN0cnVjdG9yPiBtX29iamVjdENv
bnN0cnVjdG9yOwogCiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fZXZhbEZ1bmN0aW9u
OwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2NhbGxGdW5jdGlvbjsKQEAgLTMzMCw2
ICszMzIsNyBAQCBwdWJsaWM6CiAgICAgUmVnRXhwQ29uc3RydWN0b3IqIHJlZ0V4cENvbnN0cnVj
dG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBDb25zdHJ1Y3Rvci5nZXQoKTsgfQogCiAgICAg
RXJyb3JDb25zdHJ1Y3RvciogZXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJy
b3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQorICAgIE9iamVjdENvbnN0cnVjdG9yKiBvYmplY3RDb25z
dHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0Q29uc3RydWN0b3IuZ2V0KCk7IH0KICAg
ICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBldmFsRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsg
cmV0dXJuIG1fZXZhbEVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KICAgICBOYXRpdmVFcnJvckNv
bnN0cnVjdG9yKiByYW5nZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3Jhbmdl
RXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHJl
ZmVyZW5jZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5jZUVycm9y
Q29uc3RydWN0b3IuZ2V0KCk7IH0KQEAgLTU4MSw3ICs1ODQsNyBAQCBpbmxpbmUgYm9vbCBKU0ds
b2JhbE9iamVjdDo6aGFzT3duUHJvcGVydHlGb3JXcml0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZQogCiBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6c3ltYm9sVGFibGVIYXNQcm9w
ZXJ0eShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIFN5bWJvbFRhYmxlRW50cnkg
ZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUo
KSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdl
dChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIHJldHVybiAhZW50cnkuaXNOdWxsKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCAyYjY3YTFk
OWVlZDg0ZTk5NTZmOGJiOTY4Mzg0Yzg0Y2FlYTUzY2ZmLi4yZWEyYzI0ZTZlYWI0Y2QwZDdmZmVk
NjY1ZWY0YWU0MWFmMDc1MGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBnZXRDbGFzc1By
b3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzCiAgICAg
ICAgIGludCBoYXNoU2l6ZU1hc2sgPSB0YWJsZS0+Y29tcGFjdFNpemUgLSAxOwogICAgICAgICBj
b25zdCBIYXNoRW50cnkqIGVudHJ5ID0gdGFibGUtPnRhYmxlOwogICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8PSBoYXNoU2l6ZU1hc2s7ICsraSwgKytlbnRyeSkgewotICAgICAgICAgICAgaWYg
KGVudHJ5LT5rZXkoKSAmJiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8ICht
b2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKSAmJiAhKChlbnRyeS0+YXR0cmlidXRl
cygpICYgRnVuY3Rpb24pICYmIGRpZFJlaWZ5KSkKKyAgICAgICAgICAgIGlmIChlbnRyeS0+a2V5
KCkgJiYgKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCAobW9kZSA9PSBJbmNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgJiYgISgoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0
aW5PckZ1bmN0aW9uKSAmJiBkaWRSZWlmeSkpCiAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1l
cy5hZGQoZW50cnktPmtleSgpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE2MTgsNyArMTYxOCw3
IEBAIHZvaWQgSlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGVsZXRlKEV4ZWNTdGF0
ZSogZXhlYykKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dCh0aGlzKTsKICAgICAgICAgZm9yIChIYXNoVGFibGU6OkNvbnN0SXRlcmF0b3IgaXRlciA9IGhh
c2hUYWJsZS0+YmVnaW4odm0pOyBpdGVyICE9IGhhc2hUYWJsZS0+ZW5kKHZtKTsgKytpdGVyKSB7
Ci0gICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pCisgICAgICAg
ICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pCiAgICAgICAg
ICAgICAgICAgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4
ZWMoKSwgKml0ZXIsIHRoaXMsIElkZW50aWZpZXIoJnZtLCBpdGVyLT5rZXkoKSksIHNsb3QpOwog
ICAgICAgICB9CiAgICAgfQpAQCAtMjIzNiw2ICsyMjM2LDE2IEBAIHZvaWQgSlNPYmplY3Q6OnB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uCiAgICAgcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1
dGVzKTsKIH0KIAordm9pZCBKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9w
ZXJ0eU5hbWUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKQoreworICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVi
bGljTmFtZSgpOworICAgIGlmICghbmFtZSkKKyAgICAgICAgbmFtZSA9IHZtLnByb3BlcnR5TmFt
ZXMtPmFub255bW91cy5pbXBsKCk7CisgICAgQVNTRVJUKG5hbWUpOworICAgIEpTRnVuY3Rpb24q
IGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBzdGF0aWNf
Y2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBnbG9iYWxPYmpl
Y3QpOworICAgIHB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCBmdW5jdGlvbiwgYXR0cmlidXRl
cyk7Cit9CisKIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9w
ZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1
bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzKQogewogICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggMDJiMTM3
YjM1MGMyZmE4MzI1YmQzYjk2NDcxMTJhYmU4NzZmMzgzZi4uZGRlNTk3ZWZmYWVjMGYxYjhkNDRj
MjkxMTk1MDMwMWYwNjAwN2U5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQnV0dGVyZmx5LmgiCiAjaW5jbHVk
ZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ2xhc3NJbmZvLmgiCi0jaW5jbHVkZSAiQ29tbW9u
SWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJDb3B5V3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSAi
RGVmZXJHQy5oIgogI2luY2x1ZGUgIkhlYXAuaCIKQEAgLTU4MSw2ICs1ODAsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBwdXREaXJlY3RVbmRlZmluZWQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSB7IGxv
Y2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNldFVuZGVmaW5lZCgpOyB9CiAKICAgICB2b2lkIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0
eU5hbWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNp
YywgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgdm9pZCBwdXREaXJlY3RCdWlsdGluRnVuY3Rp
b24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEZ1bmN0aW9uRXhl
Y3V0YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIHZvaWQgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJv
cGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRy
aW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0
b3IuY3BwCmluZGV4IDQwMjYxOTYzM2ZhMDZmZDI1NGIzZjJhN2E4Y2M3MWU4MDdhYWY5MTEuLjE3
ZDJhYjY1YTg4ZmZiMTNmYTlhNmM4ZjU4M2NhODQ0YWY4MzIyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJKU1Byb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUg
IkpTUHJvbWlzZUZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZVByb3RvdHlwZS5oIgor
I2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1
ZGUgIk51bWJlck9iamVjdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5jcHAKaW5kZXggNjhhOGJkODdkMzhhZGJiYjlkZDJhYzllYzRiNDlkNWVmNDU0OWQ1Ni4u
MjM3YzQyYmIwZGEwZjE2Njc2ZWIxMWFkZTgxODBhN2IwNmQ5OGViNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5j
cHAKQEAgLTI5LDcgKzI5LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgK
aW5kZXggZjQzNjJmZjM1NGVlNmE1MDIyMWJiNzMxZDFhMjYxMWU2ZGQ2MWJjMC4uZDA3MzcxOWRl
MTYwZDJmMjkyMTEwYTU5NmExMDVlMmZhMjExNWZmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaApAQCAtMzEsNyAr
MzEsNiBAQAogCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgot
I2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgog
I2luY2x1ZGUgPG1lbW9yeT4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmgKaW5kZXggMmIxY2RkZGM1ODQxZDYwZDE1N2EyZTYxZjcwMmIwZWU1ZmExZDY3Ni4uZTM5MzQx
NjBhZWE5MjZlZjE1OTMyZjg3OTBlMjRjNTJhZjAyZDM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC0yNCw3ICsyNCw2IEBACiAjZGVmaW5lIEpTU3RyaW5n
X2gKIAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgotI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJz
LmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlByb3BlcnR5RGVzY3JpcHRv
ci5oIgogI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgpAQCAtNDcyLDMzICs0NzEsNiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4ganNOb250cml2aWFsU3RyaW5n
KCZleGVjLT52bSgpLCBzKTsgfQogICAgIGlubGluZSBKU1N0cmluZyoganNPd25lZFN0cmluZyhF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4ganNPd25lZFN0cmluZygm
ZXhlYy0+dm0oKSwgcyk7IH0KIAotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0
U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQotICAgIHsKLSAgICAgICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7Ci0gICAgICAgICAgICBzbG90LnNl
dFZhbHVlKHRoaXMsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBqc051bWJlciht
X2xlbmd0aCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAg
ICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKLSAgICAgICAgaWYgKGkgPCBt
X2xlbmd0aCkgewotICAgICAgICAgICAgQVNTRVJUKGkgIT0gUHJvcGVydHlOYW1lOjpOb3RBbklu
ZGV4KTsgLy8gTm8gbmVlZCBmb3IgYW4gZXhwbGljaXQgY2hlY2ssIHRoZSBhYm92ZSB0ZXN0IHdv
dWxkIGFsd2F5cyBmYWlsIQotICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVs
ZXRlIHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIGkpKTsKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAgICAg
ICAgIAotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlT
bG90KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCi0gICAgewotICAgICAgICBpZiAocHJvcGVydHlOYW1lIDwgbV9sZW5ndGgpIHsKLSAg
ICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBnZXRJ
bmRleChleGVjLCBwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQogICAgIGlubGluZSBib29s
IGlzSlNTdHJpbmcoSlNWYWx1ZSB2KSB7IHJldHVybiB2LmlzQ2VsbCgpICYmIHYuYXNDZWxsKCkt
PmNsYXNzSW5mbygpID09IEpTU3RyaW5nOjppbmZvKCk7IH0KIAogICAgIC8vIC0tLSBKU1ZhbHVl
IGlubGluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTI4LDMyICs1MDAsNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIHRvV1RGU3RyaW5nU2xvd0Nhc2UoZXhl
Yyk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBTdHJpbmcgaW5saW5lSlNWYWx1ZU5vdFN0
cmluZ3RvU3RyaW5nKGNvbnN0IEpTVmFsdWUmIHZhbHVlLCBFeGVjU3RhdGUqIGV4ZWMpCi0gICAg
ewotICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgICAgICBpZiAodmFsdWUuaXNJbnQz
MigpKQotICAgICAgICAgICAgcmV0dXJuIHZtLm51bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZS5hc0lu
dDMyKCkpOwotICAgICAgICBpZiAodmFsdWUuaXNEb3VibGUoKSkKLSAgICAgICAgICAgIHJldHVy
biB2bS5udW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNEb3VibGUoKSk7Ci0gICAgICAgIGlmICh2
YWx1ZS5pc1RydWUoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT50cnVl
S2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzRmFsc2UoKSkKLSAgICAgICAg
ICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5mYWxzZUtleXdvcmQuc3RyaW5nKCk7Ci0gICAg
ICAgIGlmICh2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5h
bWVzLT5udWxsS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVk
KCkpCi0gICAgICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29y
ZC5zdHJpbmcoKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIFN0cmluZyBKU1ZhbHVlOjp0b1dURlN0
cmluZ0lubGluZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoaXNT
dHJpbmcoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU1N0cmluZyo+KGFzQ2Vs
bCgpKS0+dmFsdWUoZXhlYyk7Ci0KLSAgICAgICAgcmV0dXJuIGlubGluZUpTVmFsdWVOb3RTdHJp
bmd0b1N0cmluZygqdGhpcywgZXhlYyk7Ci0gICAgfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAog
I2VuZGlmIC8vIEpTU3RyaW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTdHJpbmdJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzc4YzA1ZmM4MGQ4OGU4NTM3YzlkMmE1ZWFi
OWZmMGJhOWI2MGE3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTU3RyaW5nSW5s
aW5lc19oCisjZGVmaW5lIEpTU3RyaW5nSW5saW5lc19oCisKKyNpbmNsdWRlICJDb21tb25JZGVu
dGlmaWVycy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNT
dHJpbmcuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0FMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmlu
Zzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGlmIChwcm9wZXJ0eU5hbWUg
PT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgeworICAgICAgICBzbG90LnNldFZhbHVl
KHRoaXMsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBqc051bWJlcihtX2xlbmd0
aCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgaSA9
IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGkgPCBtX2xlbmd0aCkgeworICAgICAg
ICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOyAvLyBObyBuZWVkIGZvciBh
biBleHBsaWNpdCBjaGVjaywgdGhlIGFib3ZlIHRlc3Qgd291bGQgYWx3YXlzIGZhaWwhCisgICAg
ICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBnZXRJbmRleChl
eGVjLCBpKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK0FMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCit7CisgICAgaWYgKHByb3BlcnR5TmFtZSA8IG1fbGVuZ3RoKSB7CisgICAgICAg
IHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBnZXRJbmRleChleGVj
LCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAg
IHJldHVybiBmYWxzZTsKK30KKworQUxXQVlTX0lOTElORSBTdHJpbmcgaW5saW5lSlNWYWx1ZU5v
dFN0cmluZ3RvU3RyaW5nKGNvbnN0IEpTVmFsdWUmIHZhbHVlLCBFeGVjU3RhdGUqIGV4ZWMpCit7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBpZiAodmFsdWUuaXNJbnQzMigpKQorICAg
ICAgICByZXR1cm4gdm0ubnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVlLmFzSW50MzIoKSk7CisgICAg
aWYgKHZhbHVlLmlzRG91YmxlKCkpCisgICAgICAgIHJldHVybiB2bS5udW1lcmljU3RyaW5ncy5h
ZGQodmFsdWUuYXNEb3VibGUoKSk7CisgICAgaWYgKHZhbHVlLmlzVHJ1ZSgpKQorICAgICAgICBy
ZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+dHJ1ZUtleXdvcmQuc3RyaW5nKCk7CisgICAgaWYgKHZh
bHVlLmlzRmFsc2UoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPmZhbHNlS2V5
d29yZC5zdHJpbmcoKTsKKyAgICBpZiAodmFsdWUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiB2
bS5wcm9wZXJ0eU5hbWVzLT5udWxsS2V5d29yZC5zdHJpbmcoKTsKKyAgICBpZiAodmFsdWUuaXNV
bmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtl
eXdvcmQuc3RyaW5nKCk7CisgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKTsKK30KKyAgICAKK0FMV0FZU19JTkxJTkUgU3RyaW5nIEpTVmFsdWU6OnRvV1RGU3RyaW5n
SW5saW5lKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBpZiAoaXNTdHJpbmcoKSkKKyAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTU3RyaW5nKj4oYXNDZWxsKCkpLT52YWx1ZShleGVj
KTsKKyAgICAKKyAgICByZXR1cm4gaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKCp0aGlz
LCBleGVjKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKaW5kZXggMmFjMjUyNGM1ZGZkYTNk
MTIyNDlkNzc5MGFkYzMxMjllM2MwZTg3MS4uZmJjOGI4OTVlYWU2YWY3ODg4MzliZWI1ZTgzZDdi
NmI5NzkyOGZhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
eW1ib2xUYWJsZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKQEAgLTY0LDYgKzY0LDggQEAgdm9pZCBKU1N5bWJvbFRh
YmxlT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXQKICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIodGhpc09iamVjdC0+
c3ltYm9sVGFibGUoKS0+bV9sb2NrKTsKICAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0
b3IgZW5kID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+ZW5kKGxvY2tlcik7CiAgICAgICAg
IGZvciAoU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXQgPSB0aGlzT2JqZWN0LT5zeW1ib2xU
YWJsZSgpLT5iZWdpbihsb2NrZXIpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIGlm
IChpdC0+a2V5LT5pc0VtcHR5VW5pcXVlKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICBpZiAoIShpdC0+dmFsdWUuZ2V0QXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8
IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKQogICAgICAgICAgICAgICAgIHBy
b3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgaXQtPmtleS5nZXQoKSkpOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRh
YmxlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxl
T2JqZWN0LmgKaW5kZXggYjViMjBhODQ1YjZhYjY0NDI0YjM3ZTMxYjI3NzRlZjkwNTM1M2Y3Zi4u
ZDAzYjI0NTExYzJkZTE5NTlmYjVmNTZkNjQ5YzY0ZDBlZmUwNjg1NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaApAQCAtNzIs
NyArNzIsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKIHsKICAgICBTeW1ib2xUYWJs
ZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgIENvbmN1cnJlbnRK
SVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAgU3ltYm9sVGFibGU6Ok1h
cDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUu
cHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3lt
Ym9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGl0ZXIg
PT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBT
eW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+dmFsdWU7CkBAIC04Nyw3ICs4Nyw3
IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogewogICAgIFN5bWJvbFRhYmxlJiBzeW1i
b2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgQ29uY3VycmVudEpJVExvY2tl
ciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVy
YXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNO
YW1lKCkpOworICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJs
ZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoaXRlciA9PSBzeW1i
b2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFN5bWJvbFRh
YmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1ZTsKQEAgLTEwNCw3ICsxMDQsNyBAQCBp
bmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKIHsKICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFi
bGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9j
a2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3Ig
aXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgp
KTsKKyAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmlu
ZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFi
bGUuZW5kKGxvY2tlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBTeW1ib2xUYWJsZUVu
dHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+dmFsdWU7CkBAIC0xMjYsNyArMTI2LDcgQEAgaW5saW5l
IGJvb2wgc3ltYm9sVGFibGVQdXQoCiAgICAgewogICAgICAgICBTeW1ib2xUYWJsZSYgc3ltYm9s
VGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBHQ1NhZmVDb25jdXJyZW50
SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2ssIGV4ZWMtPnZtKCkuaGVhcCk7Ci0g
ICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5k
KGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgICAgIFN5bWJvbFRhYmxl
OjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlO
YW1lLnVpZCgpKTsKICAgICAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJvb2wgd2FzRmF0OwpAQCAtMTU5
LDcgKzE1OSw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoCiAg
ICAgewogICAgICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xU
YWJsZSgpOwogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5t
X2xvY2spOwotICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9s
VGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgICAgICBT
eW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIs
IHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVu
ZChsb2NrZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBTeW1ib2xUYWJs
ZUVudHJ5JiBlbnRyeSA9IGl0ZXItPnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0xvb2t1cC5jcHAKaW5kZXggYTgwNmRkMDUyYTBjYmVlNGNhYzJjYWE2ZTA4YzY3MTYwMDVjMjcw
Yy4uYTk3NjUyMDFiOWY1MTg2NDE0MjNkZGUwZmUwZTJlNTFhOGNlNzNiYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgSGFz
aFRhYmxlOjpkZWxldGVUYWJsZSgpIGNvbnN0CiBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIHRoaXNP
YmosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
ICBBU1NFUlQodGhpc09iai0+Z2xvYmFsT2JqZWN0KCkpOwotICAgIEFTU0VSVChlbnRyeS0+YXR0
cmlidXRlcygpICYgRnVuY3Rpb24pOworICAgIEFTU0VSVChlbnRyeS0+YXR0cmlidXRlcygpICYg
QnVpbHRpbk9yRnVuY3Rpb24pOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgdW5zaWdu
ZWQgYXR0cmlidXRlczsKICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSB0aGlzT2JqLT5nZXRE
aXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CkBAIC03OSw5ICs3OSwx
MyBAQCBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqCiAgICAgICAgIGlmICh0aGlzT2JqLT5zdGF0aWNG
dW5jdGlvbnNSZWlmaWVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAg
ICAgIHRoaXNPYmotPnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKAotICAgICAgICAgICAgdm0sIHRo
aXNPYmotPmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5mdW5jdGlvbkxlbmd0
aCgpLAotICAgICAgICAgICAgZW50cnktPmZ1bmN0aW9uKCksIGVudHJ5LT5pbnRyaW5zaWMoKSwg
ZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYg
QnVpbHRpbikKKyAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbih2
bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZW50cnktPmJ1aWx0aW5H
ZW5lcmF0b3IoKSh2bSksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKAorICAgICAgICAgICAg
ICAgIHZtLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBlbnRyeS0+ZnVu
Y3Rpb25MZW5ndGgoKSwKKyAgICAgICAgICAgICAgICBlbnRyeS0+ZnVuY3Rpb24oKSwgZW50cnkt
PmludHJpbnNpYygpLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAgICAgICAgfQogICAgICAgICBv
ZmZzZXQgPSB0aGlzT2JqLT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmli
dXRlcyk7CiAgICAgICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKaW5kZXggYmRlODNkNGE2ZmMzNTU3Nzg1
MGUzMWU4OGJjMzlmZDA1ZjdiY2U1Mi4uZGJhMzg5ZTllMjQzZGQwZWNiMmJhOThmMzk0ZDQwNzlm
OWRlYTkzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3Vw
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKQEAgLTQzLDYg
KzQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgLy8gaWUuIHR5cGVkZWYgSlNWYWx1ZSAoKkdl
dEZ1bmN0aW9uKShFeGVjU3RhdGUqLCBKU09iamVjdCogYmFzZU9iamVjdCkKICAgICB0eXBlZGVm
IFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIEdldEZ1bmN0aW9uOwogICAgIHR5cGVkZWYgUHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmMgUHV0RnVuY3Rpb247CisgICAgdHlwZWRlZiBGdW5j
dGlvbkV4ZWN1dGFibGUqICgqQnVpbHRpbkdlbmVyYXRvcikoVk0mKTsKIAogICAgIGNsYXNzIEhh
c2hFbnRyeSB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjgsMTEgKzY5
LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1faW50cmluc2ljOwog
ICAgICAgICB9CiAKKyAgICAgICAgQnVpbHRpbkdlbmVyYXRvciBidWlsdGluR2VuZXJhdG9yKCkg
Y29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgQnVpbHRpbik7IHJldHVybiBtX3UuYnVpbHRp
bkdlbmVyYXRvci5nZW5lcmF0b3JWYWx1ZTsgfQogICAgICAgICBOYXRpdmVGdW5jdGlvbiBmdW5j
dGlvbigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKTsgcmV0dXJuIG1f
dS5mdW5jdGlvbi5mdW5jdGlvblZhbHVlOyB9CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgZnVuY3Rp
b25MZW5ndGgoKSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBGdW5jdGlvbik7IHJldHVy
biBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihtX3UuZnVuY3Rpb24ubGVuZ3RoKTsgfQogCi0g
ICAgICAgIEdldEZ1bmN0aW9uIHByb3BlcnR5R2V0dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0
dHJpYnV0ZXMgJiBGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5LmdldDsgfQotICAgICAg
ICBQdXRGdW5jdGlvbiBwcm9wZXJ0eVB1dHRlcigpIGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1
dGVzICYgRnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0eS5wdXQ7IH0KKyAgICAgICAgR2V0
RnVuY3Rpb24gcHJvcGVydHlHZXR0ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAm
IEJ1aWx0aW5PckZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVydHkuZ2V0OyB9CisgICAgICAg
IFB1dEZ1bmN0aW9uIHByb3BlcnR5UHV0dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0
ZXMgJiBCdWlsdGluT3JGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5LnB1dDsgfQogCiAg
ICAgICAgIGludHB0cl90IGxleGVyVmFsdWUoKSBjb25zdCB7IEFTU0VSVCghbV9hdHRyaWJ1dGVz
KTsgcmV0dXJuIG1fdS5sZXhlci52YWx1ZTsgfQogCkBAIC05NCw2ICs5NiwxMCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgICAgICBpbnRwdHJfdCBsZW5ndGg7IC8vIG51bWJlciBvZiBh
cmd1bWVudHMgZm9yIGZ1bmN0aW9uCiAgICAgICAgICAgICB9IGZ1bmN0aW9uOwogICAgICAgICAg
ICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICBCdWlsdGluR2VuZXJhdG9yIGdlbmVyYXRvclZh
bHVlOworICAgICAgICAgICAgICAgIGludHB0cl90IHVudXNlZDsKKyAgICAgICAgICAgIH0gYnVp
bHRpbkdlbmVyYXRvcjsKKyAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgR2V0
RnVuY3Rpb24gZ2V0OwogICAgICAgICAgICAgICAgIFB1dEZ1bmN0aW9uIHB1dDsKICAgICAgICAg
ICAgIH0gcHJvcGVydHk7CkBAIC0yMDksNyArMjE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
cHJpdmF0ZToKICAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBIYXNoRW50cnkqIGVudHJ5KFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIFN0
cmluZ0ltcGwqIGltcGwgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOworICAgICAgICAgICAg
U3RyaW5nSW1wbCogaW1wbCA9IHByb3BlcnR5TmFtZS51aWQoKTsKICAgICAgICAgICAgIGlmICgh
aW1wbCkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgCkBAIC0yNDksNyArMjU1
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGlmICghZW50cnkpIC8vIG5vdCBmb3VuZCwg
Zm9yd2FyZCB0byBwYXJlbnQKICAgICAgICAgICAgIHJldHVybiBQYXJlbnRJbXA6OmdldE93blBy
b3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCi0gICAgICAg
IGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pCisgICAgICAgIGlmIChlbnRyeS0+
YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pCiAgICAgICAgICAgICByZXR1cm4gc2V0
VXBTdGF0aWNGdW5jdGlvblNsb3QoZXhlYywgZW50cnksIHRoaXNPYmosIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiAKICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09iaiwgZW50cnkt
PmF0dHJpYnV0ZXMoKSwgZW50cnktPnByb3BlcnR5R2V0dGVyKCkpOwpAQCAtMjg2LDcgKzI5Miw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpZiAoIWVudHJ5KSAvLyBub3QgZm91bmQsIGZv
cndhcmQgdG8gcGFyZW50CiAgICAgICAgICAgICByZXR1cm4gUGFyZW50SW1wOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QodGhpc09iaiwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIAotICAgICAgICBB
U1NFUlQoIShlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pKTsKKyAgICAgICAgQVNTRVJU
KCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSk7CiAKICAgICAgICAg
c2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09iaiwgZW50cnktPmF0dHJpYnV0ZXMoKSwgZW50
cnktPnByb3BlcnR5R2V0dGVyKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI5NSw3ICsz
MDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgdm9pZCBwdXRFbnRyeShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0KiBiYXNlLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiAgICAgewogICAgICAgICAvLyBJZiB0aGlzIGlzIGEgZnVuY3Rpb24gcHV0IGl0IGFzIGFuIG92
ZXJyaWRlIHByb3BlcnR5LgotICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0
aW9uKSB7CisgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rp
b24pIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNPYmplY3QqPihzbG90LnRoaXNWYWx1ZSgpKSkKICAgICAgICAgICAgICAgICB0aGlzT2Jq
ZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CiAgICAgICAg
IH0gZWxzZSBpZiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgUmVhZE9ubHkpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0
b3IuY3BwCmluZGV4IGQ1ZTcyOGMyY2QxMDIwYTQ3ZTRhZGNkNjQ5Y2QxZmZmYTVjZDZhODMuLmRj
YTJmZDhkMWY2YWMyM2I4ZmY4MTdjYmIxOGZhYWU3YmNkNTk3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3Bw
CkBAIC0zOCw2ICszOCwyMCBAQCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpOYXRpdmVFcnJvckNv
bnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiB9CiAKK3ZvaWQgTmF0
aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgU3Ry
aW5nJiBuYW1lKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBuYW1lKTsKKyAgICBB
U1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAgCisgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUq
IHByb3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1lLCB0aGlzKTsKKyAgICAKKyAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIERvbnREZWxldGUgfCBS
ZWFkT25seSB8IERvbnRFbnVtKTsgLy8gRUNNQSAxNS4xMS43LjUKKyAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkgfCBEb250RW51bSk7CisgICAgbV9lcnJvclN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEVy
cm9ySW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUp
KTsKKyAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZSk7CisgICAgQVNTRVJUKG1fZXJyb3JTdHJ1
Y3R1cmUtPmlzT2JqZWN0KCkpOworfQorCiB2b2lkIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PE5hdGl2ZUVycm9yQ29u
c3RydWN0b3IqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAppbmRleCA3NDBkM2Y5MzMyOTJmZDJhY2NiNGI5
OTAzNDQzMTJiOTMxOWFlMTEwLi40MzhhM2FmYjliYjBmNjQxMmM5NzkzMjIzMGM4ODcxMDk2MWY1
NDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJv
ckNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvci5oCkBAIC01MSwxOSArNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fZXJyb3JTdHJ1Y3R1
cmUuZ2V0KCk7IH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogcHJvdG90
eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBuYW1lKTsKLSAgICAgICAgICAgIEFTU0VSVChpbmhl
cml0cyhpbmZvKCkpKTsKLQotICAgICAgICAgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHByb3Rv
dHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlU3RydWN0dXJlLCBuYW1lLCB0aGlzKTsKLQotICAgICAgICAgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkgfCBEb250RW51bSk7IC8vIEVDTUEgMTUuMTEuNy41Ci0gICAgICAgICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RGVsZXRl
IHwgUmVhZE9ubHkgfCBEb250RW51bSk7Ci0gICAgICAgICAgICBtX2Vycm9yU3RydWN0dXJlLnNl
dCh2bSwgdGhpcywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSkpOwotICAgICAgICAgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUpOwot
ICAgICAgICAgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwotICAgICAg
ICB9CisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAppbmRleCBk
OTM4ZmEzMTY0NWFmMjZiNzU4NTE0ZGI2YjI0NzhmMTgzZTllZWUxLi5jZmU5YzRkMzJiYTc2OGM3
NGU0ZmZiYjE5MTM1Mjc5ZGViZjExNzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eVNsb3QuaApAQCAtNDIsNiArNDIsOCBAQCBlbnVtIEF0dHJpYnV0ZSB7CiAg
ICAgRnVuY3Rpb24gICAgID0gMSA8PCA0LCAgLy8gcHJvcGVydHkgaXMgYSBmdW5jdGlvbiAtIG9u
bHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIEFjY2Vzc29yICAgICA9IDEgPDwgNSwg
IC8vIHByb3BlcnR5IGlzIGEgZ2V0dGVyL3NldHRlcgogICAgIEN1c3RvbUFjY2Vzc29yID0gMSA8
PCA2LAorICAgIEJ1aWx0aW4gICAgICAgICA9IDEgPDwgNywgLy8gcHJvcGVydHkgaXMgYSBidWls
dGluIGZ1bmN0aW9uIC0gb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCisgICAgQnVpbHRp
bk9yRnVuY3Rpb24gPSBCdWlsdGluIHwgRnVuY3Rpb24sIC8vIGhlbHBlciBvbmx5IHVzZWQgYnkg
c3RhdGljIGhhc2h0YWJsZXMKIH07CiAKIGNsYXNzIFByb3BlcnR5U2xvdCB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
YmM1MTZiMDZkNjY1MWYwZTY4MmEyMDE3YmRmOGIwM2JhYmVkNmVhMi4uMmMyNDM0Yjg3ZDA0Zjc0
OWNiMTJlNjAyYWI1NDc4NDk0NmE5MWYxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2lu
Y2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgiCiAKICNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1
ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRl
ICJSZWdFeHBNYXRjaGVzQXJyYXkuaCIKICNpbmNsdWRlICJSZWdFeHBQcm90b3R5cGUuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCmlu
ZGV4IDg5ZDdhYzFiOGNiZjFkYjBlMTI2ZjFmYzc5NmRmZDVmYzg0YjJlNTkuLjlkZGEwYmE4ZGUx
NDEyZWFmNGQyOTFkY2YwYzZiMzk2NTdmYjY3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcApAQCAtMjQsNyArMjQsNyBAQAogI2lu
Y2x1ZGUgIkFycmF5UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJK
U0FycmF5LmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NldENvbnN0cnVjdG9yLmNwcAppbmRleCBiMjAzODg4ZDNjMTZjZGEzYzAwMzUwNjIwOGFl
MDg2OTVkYzVkYWFhLi5kMDI2NmE1OWVmM2Y1NWFhMzY5NGY1Zjc0MThjZjc4ZTBhZTBkOGIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTZXQuaCIKKyNpbmNsdWRlICJKU1N0cmlu
Z0lubGluZXMuaCIKICNpbmNsdWRlICJNYXBEYXRhLmgiCiAjaW5jbHVkZSAiU2V0UHJvdG90eXBl
LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3Bw
CmluZGV4IDQ0MGE2MDk0MjE5MzM4MDMxZTU5MjdhZjQ2YjI4OWRiY2ZiNWE3MjguLjgwZTdlYWE4
YzQ5MWNiNmQ1NGE4MzI0Y2U2NDdhNmNkYjdlODg3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAtMjIsNyArMjIsOSBAQAogI2luY2x1
ZGUgIlN0cmluZ09iamVjdC5oIgogCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAi
SlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBy
b3BlcnR5TmFtZUFycmF5LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCmluZGV4IDA0MjkxZjdlOGRkMjRlOGFiMzNkNzVhZjFkYTQ1NjhmMmJjOTllNjgu
LjFlY2FiODVjMGJkYjI4Njk4OTQ1NzdhNzQxMjU0ZTM2NDQxNDlkODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMjcsMTIgKzI3LDE4IEBACiAj
aW5jbHVkZSAiU3RydWN0dXJlLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRl
ICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkR1bXBDb250ZXh0LmgiCisjaW5jbHVk
ZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkxvb2t1cC5oIgorI2luY2x1ZGUgIlByb3BlcnR5TWFwSGFzaFRhYmxlLmgiCiAjaW5j
bHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMu
aCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGlu
ZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCIKICNpbmNsdWRlIDx3
dGYvQ29tbWFQcmludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDUyY2NmNDIzYTEwNDNlMTA3
OWYyZDhiMTg5NDIxOTg5MGU3MWYyYmMuLjAyMDY5NWZhYzgzZWQ0ZTUxODViNzBlNjk2OTk2M2Ey
ZGU5YTM2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlICJBcmdMaXN0LmgiCiAjaW5jbHVkZSAiQXJpdHlDaGVja0ZhaWxSZXR1
cm5UaHVua3MuaCIKICNpbmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaCIK
KyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWVJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29kZUNhY2hlLmgiCkBA
IC01NSw3ICs1Niw5IEBACiAjaW5jbHVkZSAiSlNBUElWYWx1ZVdyYXBwZXIuaCIKICNpbmNsdWRl
ICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCi0jaW5jbHVkZSAiSlNGdW5j
dGlvbi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxs
SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNH
bG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJK
U05hbWVTY29wZS5oIgpAQCAtNjgsMTMgKzcxLDE2IEBACiAjaW5jbHVkZSAiTG9va3VwLmgiCiAj
aW5jbHVkZSAiTWFwRGF0YS5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCisjaW5jbHVkZSAiUGFyc2Vy
LmgiCiAjaW5jbHVkZSAiUGFyc2VyQXJlbmEuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eU1hcEhhc2hU
YWJsZS5oIgogI2luY2x1ZGUgIlJlZ0V4cENhY2hlLmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0
LmgiCiAjaW5jbHVkZSAiU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJT
b3VyY2VQcm92aWRlckNhY2hlLmgiCiAjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIK
ICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5o
IgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiV2Vha01hcERhdGEu
aCIKICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CkBAIC0yMjYsNiArMjMyLDcgQEAgVk06OlZN
KFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9pbkRlZmluZU93blBy
b3BlcnR5KGZhbHNlKQogICAgICwgbV9jb2RlQ2FjaGUoQ29kZUNhY2hlOjpjcmVhdGUoKSkKICAg
ICAsIG1fZW5hYmxlZFByb2ZpbGVyKG51bGxwdHIpCisgICAgLCBtX2J1aWx0aW5FeGVjdXRhYmxl
cyhCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgaW50ZXJwcmV0ZXIg
PSBuZXcgSW50ZXJwcmV0ZXIoKnRoaXMpOwogICAgIFN0YWNrQm91bmRzIHN0YWNrID0gd3RmVGhy
ZWFkRGF0YSgpLnN0YWNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA1YTg0
MTA1ZWFmYjdhYmJhNWZhNDMxZWVlZGQ1NWQ3YTg5ZjU1Y2UyLi42OTU4YWMzOTNiMWFlZmMwYmVm
YmY2ZTRlYjhiNjgyNWNmN2M5YTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAg
LTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJQcml2YXRlTmFtZS5oIgogI2luY2x1ZGUgIlByb3Rv
dHlwZU1hcC5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgorI2luY2x1ZGUgIlNvdXJjZUNv
ZGUuaCIKICNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIK
ICNpbmNsdWRlICJUeXBlZEFycmF5Q29udHJvbGxlci5oIgpAQCAtNjksNiArNzAsNyBAQAogbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcml0eUNoZWNrRmFpbFJldHVyblRodW5rczsKKyAg
ICBjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXM7CiAgICAgY2xhc3MgQ29kZUJsb2NrOwogICAgIGNs
YXNzIENvZGVDYWNoZTsKICAgICBjbGFzcyBDb21tb25JZGVudGlmaWVyczsKQEAgLTQ5Nyw2ICs0
OTksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCByZWdpc3RlcldhdGNocG9pbnRG
b3JJbXB1cmVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyJiwgV2F0Y2hwb2ludCopOwogICAgICAg
ICAvLyBGSVhNRTogVXNlIEF0b21pY1N0cmluZyBvbmNlIGl0IGdvdCBtZXJnZWQgd2l0aCBJZGVu
dGlmaWVyLgogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFkZEltcHVyZVByb3BlcnR5
KGNvbnN0IFN0cmluZyYpOworICAgICAgICAKKyAgICAgICAgQnVpbHRpbkV4ZWN1dGFibGVzKiBi
dWlsdGluRXhlY3V0YWJsZXMoKSB7IHJldHVybiBtX2J1aWx0aW5FeGVjdXRhYmxlcy5nZXQoKTsg
fQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKQEAgLTUzNywxMCArNTQxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFs
dWUgbV9leGNlcHRpb247CiAgICAgICAgIGJvb2wgbV9pbkRlZmluZU93blByb3BlcnR5OwogICAg
ICAgICBPd25QdHI8Q29kZUNhY2hlPiBtX2NvZGVDYWNoZTsKLSAgICAgICAgUmVmQ291bnRlZEFy
cmF5PFN0YWNrRnJhbWU+IG1fZXhjZXB0aW9uU3RhY2s7Ci0KICAgICAgICAgTGVnYWN5UHJvZmls
ZXIqIG1fZW5hYmxlZFByb2ZpbGVyOwotCisgICAgICAgIE93blB0cjxCdWlsdGluRXhlY3V0YWJs
ZXM+IG1fYnVpbHRpbkV4ZWN1dGFibGVzOworICAgICAgICBSZWZDb3VudGVkQXJyYXk8U3RhY2tG
cmFtZT4gbV9leGNlcHRpb25TdGFjazsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxX
YXRjaHBvaW50U2V0Pj4gbV9pbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnRTZXRzOwogICAgIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNT
dHJpbmdJbmxpbmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1l
L0pTU3RyaW5nSW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwZmNjMzg0ZThlZGZjMzRiMTQwODNiODY1
ZDM3MzgyMGY0MTY1YzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCkBAIC0wLDAgKzEsNCBAQAorI2lm
bmRlZiBXZWJDb3JlX0ZXRF9KU1N0cmluZ0lubGluZXNfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9K
U1N0cmluZ0lubGluZXNfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nSW5saW5l
cy5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMv
UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
bHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcAppbmRleCAyZWRkY2RiYjlmMDA2
Y2E3NjI2NjUwYjQyMDI3ODYyNmI5MjYxNDE3Li4zYzRlMGQ3YmJiMzFjYWIxMmI1ZTZjOTc1Yzc0
ZDNmNDg0ZTljYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMv
UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAKQEAgLTQ2LDYgKzQ2LDcg
QEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZUlu
bGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ0lubGluZXMuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNJREJBbnlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJ
REJBbnlDdXN0b20uY3BwCmluZGV4IDU2NDljODVjYTA5NTg3NzQ4YTNkYTA2Y2RkZDBjYTk5OWU1
MGI4ZTcuLjNmNGQ4ZWZhZWI1N2YzMzAwM2U3M2E3ZTc4NDJlNDJjNzNjZTY0OTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFueUN1c3RvbS5jcHAKQEAgLTQ3LDYgKzQ3
LDcgQEAKICNpbmNsdWRlICJKU0lEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSlNJREJUcmFu
c2FjdGlvbi5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUg
PHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAK
aW5kZXggOWVhZTc1NjljNzA2MDNhNGZlZDBhZjE0YzRmODcxOGNkZTY0YTZlMS4uZjQ5ZGZlOTBi
NGU4MmQzOWVkY2JmOWJhMjlmMmFlNzk5YzBkZGYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAK
ICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIkpTSURCT2JqZWN0U3RvcmUu
aCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1N0cmlu
Zy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURC
T2JqZWN0U3RvcmVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJP
YmplY3RTdG9yZUN1c3RvbS5jcHAKaW5kZXggNzRmZDM1NGIyODYwN2NmNzgyMmY4MDUzNDc5NzBm
NWQ3YWM4YzgzMi4uNTQzNGIzYjdkNmM1NmVjYjBhMDNhMjc5NGM2NzM2YTlhZGZiNzBlMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1
c3RvbS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgog
I2luY2x1ZGUgIkpTSURCSW5kZXguaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0jaW5j
bHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxp
bmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5MTI2YzdlODJjMDNlNDU3
YWMxNzYzYjVmMDY1M2U0NzM5OWQ0YTQ2Li4yMDAyODA5OWY0MjUyMDhkNzM5NGQ5NGRmZjI5MTE3
Y2M1YzIxN2UxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50
ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxl
bWVudCBKUyBidWlsdGlucyBpbiBKUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTI3ODg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVXBkYXRlZCB0aGUgdGVzdCByZXN1bHRzIGZvciBuZXcgZXJyb3IgbWVz
c2FnZXMgKG5vdyB0aGF0IHRoZXkncmUKKyAgICAgICAgYWN0dWFsbHkgaGVscGZ1bCksIGFuZCBh
ZGRlZCBhIGpzLXJlZ3Jlc3MgdGVzdCB0byB0cmFjayBwZXJmb3JtYW5jZS4KKworICAgICAgICAq
IGpzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9kb20vYXJyYXktcHJv
dG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL3JlZ3Jlc3MvYXJy
YXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVn
cmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVn
cmVzcy9zY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzOiBBZGRlZC4KKyAgICAg
ICAgKHRlc3QxKToKKyAgICAgICAgKHRlc3QyKToKKyAgICAgICAgKHRlc3QzKToKKwogMjAxNC0w
MS0zMCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzM3MQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyYXkt
ZXZlcnktZXhwZWN0ZWQudHh0CmluZGV4IDU0MWI4YzM1OGYwNjhhMGNlYTg4MmMxMDUxNzUzMjUx
MTRjZDMzZjcuLmNjYTM2M2RjZTU4ZmJhOTVhNThjZTQ2ZmNiNDhjMzhiZjU4YWRmNTkgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9qcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQKQEAgLTMwLDEyICszMCwxMiBAQCBQ
QVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoaXNCaWdFbm91Z2hBbmRFeGNlcHRpb24pIHRo
cmV3IGV4Y2VwdGlvbiBleGNlcHRpbwogUEFTUyBbMTIsIDU0LCAxOCwgMTMwLCA0NF0uZXZlcnko
aXNCaWdFbm91Z2hBbmRFeGNlcHRpb24pIHRocmV3IGV4Y2VwdGlvbiBleGNlcHRpb24gZnJvbSBm
dW5jdGlvbi4KIAogNS4wIFdyb25nIFR5cGUgZm9yIENhbGxiYWNrIFRlc3QKLVBBU1MgWzEyLCA1
LCA4LCAxMzAsIDQ0XS5ldmVyeSg1KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVy
cm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCd3cm9uZycpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZl
cnkobmV3IE9iamVjdCgpKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgot
UEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkodW5kZWZp
bmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUs
IDgsIDEzMCwgNDRdLmV2ZXJ5KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJv
ci4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSg1KSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9u
LgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCd3cm9uZycpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVu
Y3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkobmV3IE9iamVjdCgpKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVz
dCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KG51bGwpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBt
dXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkodW5kZWZp
bmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2Fs
bGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5
KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxi
YWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KIAogNi4wIEVhcmx5IEV4aXQgKCJTaG9ydCBDaXJjdWl0
aW5nIikKIFBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShpc0JpZ0Vub3VnaFNob3J0Q2ly
Y3VpdCkgaXMgZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9hcnJheS1wcm90
b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vYXJyYXkt
cHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CmluZGV4IDJjMmE2OGNiMTA2ZGExMGYw
ODZiMjJjNWJmMmJmNWM4ZmU3OWUzM2UuLjVkOWVjYjc1YThkYTc5YmE2NTYwNWU3ZWI5Y2Y4ZmMy
NWZlMThhZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2RvbS9hcnJheS1wcm90b3R5cGUt
cHJvcGVydGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2FycmF5LXBy
b3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApAQCAtMTUsNyArMTUsNyBAQCBQQVNTIEFy
cmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHVuZGVmaW5lZCwgMCwgMSkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogdW5kZQogUEFTUyBBcnJheS5wcm90b3R5cGUuc29ydC5jYWxsKHVuZGVmaW5l
ZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3Qg
KGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5zb3J0LmNhbGwodW5kZWZpbmVkKScpLgogUEFT
UyBBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwodW5kZWZpbmVkLCAwLCAxKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAn
QXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKHVuZGVmaW5lZCwgMCwgMSknKS4KIFBBU1MgQXJy
YXkucHJvdG90eXBlLnVuc2hpZnQuY2FsbCh1bmRlZmluZWQsIHt9KSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXku
cHJvdG90eXBlLnVuc2hpZnQuY2FsbCh1bmRlZmluZWQsIHt9KScpLgotUEFTUyBBcnJheS5wcm90
b3R5cGUuZXZlcnkuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJv
dG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZyknKS4KK1BBU1MgQXJyYXkucHJv
dG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBi
ZSB1bmRlZmluZWQuCiBQQVNTIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwodW5kZWZpbmVk
LCB0b1N0cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBh
biBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwodW5kZWZp
bmVkLCB0b1N0cmluZyknKS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLnNvbWUuY2FsbCh1bmRlZmlu
ZWQsIHRvU3RyaW5nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90
IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnNvbWUuY2FsbCh1bmRlZmlu
ZWQsIHRvU3RyaW5nKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKHVuZGVm
aW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBv
YmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwodW5kZWZpbmVk
LCAwKScpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5
cGUtZXZlcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90
b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyOTBjMGVlZmY4ZGU0MjE4MzNk
OTJkMjdlOTUyNDE5MTc2MDRiOTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBA
QAorSlNSZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeQorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbCBiL0xheW91dFRlc3RzL2pzL3Jl
Z3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU1Y2MxNzFjNDg3
NWEzNTg1YmYxNGU1NDE1ZjVjZDBlNTgxZDU0NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwKQEAgLTAsMCArMSwxMiBA
QAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlZ3Jlc3Mt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90
eXBlLWV2ZXJ5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVncmVzcy1w
b3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5qcyBiL0xh
eW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yOTRhYTE2MWMwY2U5OGIyYWIxOGEzYTFhMWYwZGZhYWM5ZDdkMmUyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJy
YXktcHJvdG90eXBlLWV2ZXJ5LmpzCkBAIC0wLDAgKzEsMjkgQEAKK3ZhciByZXN1bHQgPSAwOwor
ZnVuY3Rpb24gdGVzdDEoYSkgeworICAgIHJlc3VsdCA8PCAxOworICAgIHJlc3VsdCsrOworICAg
IHJldHVybiB0cnVlOworfQorZnVuY3Rpb24gdGVzdDIoYSxiKSB7CisgICAgcmVzdWx0IF49IDM7
CisgICAgcmVzdWx0ICo9IDM7CisgICAgcmV0dXJuIHRydWU7Cit9CitmdW5jdGlvbiB0ZXN0Myhh
LGIsYykgeworICAgIHJlc3VsdCBePSByZXN1bHQgPj4gMTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwordmFyIHJlc3VsdCA9IDA7Cit2YXIgYXJyYXkgPSBbXQorZm9yICh2YXIgaSA9IDA7IGkgPCAx
MDAwMDA7ICsraSkKKyAgICBhcnJheVtpXSA9IDE7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTA7
IGkrKykgeworICAgIGFycmF5LmV2ZXJ5KHRlc3QxKTsKKyAgICBhcnJheS5ldmVyeSh0ZXN0Mik7
CisgICAgYXJyYXkuZXZlcnkodGVzdDMpOworfQorCitpZiAocmVzdWx0ICE9IDE0Mjg4MTA0OTYp
CisgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OwpkaWZmIC0tZ2l0IGEv
R05VbWFrZWZpbGUuYW0gYi9HTlVtYWtlZmlsZS5hbQppbmRleCA3M2ZjNDkyOGM0ZGQ0OWI1NDk4
NjliNTA2NzhjNmJkZTc0ZjQ0NzYwLi4wOGM5MTE1NDI2MDUwMGRlM2ZmMDRiMDIwY2UwZDYwZjk4
ZThjZmU4IDEwMDY0NAotLS0gYS9HTlVtYWtlZmlsZS5hbQorKysgYi9HTlVtYWtlZmlsZS5hbQpA
QCAtNjgsNiArNjgsNyBAQCBBTExfTU9GSUxFUyA6PQogZG9tX2JpbmRpbmdfaWRscyA6PQogd3Rm
X3NvdXJjZXMgOj0KIGphdmFzY3JpcHRjb3JlX2hfYXBpIDo9CitqYXZhc2NyaXB0Y29yZV9idWls
dGluc19qc19ub3NvdXJjZXMgOj0KIGphdmFzY3JpcHRjb3JlX2NwcGZsYWdzOj0KIGphdmFzY3Jp
cHRjb3JlX2NmbGFncyA6PQogamF2YXNjcmlwdGNvcmVfc291cmNlcyA6PQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222762</attachid>
            <date>2014-01-30 16:59:22 -0800</date>
            <delta_ts>2014-01-30 17:52:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140130165921.patch</filename>
            <type>text/plain</type>
            <size>212839</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NjgxMzcxYWU2ZDBjYWZlNDJmNWNmN2E1NWI3MjRjMTc5ODExYjBhLi43NTA0MGJiMjVhNTg0MTY0
Mzg5ODQzNDFjNmEwMjMzMzdhOTk1ZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
IFRoaXMgcmVzdWx0IG9mIHRoaXMgcmVmYWN0b3JpbmcKKyAgICAgICAgaXMgdGhhdCBDb21tb25J
ZGVudGlmaWVycywgYW5kIGEgZmV3IG90aGVyIG1pc2NlbGxhbmVvdXMgaGVhZGVycyBub3cKKyAg
ICAgICAgbmVlZCB0byBiZSBpbmNsdWRlZCBkaXJlY3RseSBhcyB0aGV5IHdlcmUgZm9ybWVybHkg
Y2FwdHVyZWQgdGhyb3VnaCBvdGhlcgorICAgICAgICBwYXRocy4KKworICAgICAgICBJbiBhZGRp
dGlvbiB0aGlzIGFkZHMgYSBmbGFnIHRvIHRoZSBMb29rdXAgdGFibGUncyBoYXNoZW50cnkgdG8g
aW5kaWNhdGUKKyAgICAgICAgdGhhdCBhIHN0YXRpYyBmdW5jdGlvbiBpcyBhY3R1YWxseSBiYWNr
ZWQgYnkgSlMuIFRoZXJlIGlzIHRoZW4gYSBsb3Qgb2YKKyAgICAgICAgbG9naWMgdG8gdGhyZWFk
IHRoZSBzcGVjaWFsIG5hdHVyZSBvZiB0aGUgZnVuY3RvbiB0byB3aGVyZSBpdCBtYXR0ZXJzLgor
ICAgICAgICBUaGlzIGFsbG93cyB0b1N0cmluZygpLCAuY2FsbGVyLCBldGMgdG8gbWltaWMgdGhl
IGJlaGF2aW91ciBvZiBhIGhvc3QKKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAgICAgTm90ZXMg
b24gd3JpdGluZyBidWlsdGluczoKKyAgICAgICAgIC0gRWFjaCBmdW5jdGlvbiBpcyBjb21waWxl
ZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBvdGhlcnMsIGFuZCB0aG9zZQorICAgICAgICAgICBpbXBs
ZW1lbnRhdGlvbnMgY2Fubm90IGN1cnJlbnRseSBjYXB0dXJlIGFsbCBnbG9iYWwgcHJvcGVydGll
cyAoYXMKKyAgICAgICAgICAgdGhhdCBjb3VsZCBiZSBwb3RlbnRpYWxseSB1bnNhZmUpLiBJZiBh
IGZ1bmN0aW9uIGRvZXMgY2FwdHVyZSBhCisgICAgICAgICAgIGdsb2JhbCB3ZSB3aWxsIGRlbGli
ZXJhdGVseSBjcmFzaC4KKyAgICAgICAgIC0gRm9yIHRob3NlICJnbG9iYWwiIHByb3BlcnRpZXMg
dGhhdCB3ZSBkbyB3YW50IGFjY2VzcyB0bywgd2UgdXNlCisgICAgICAgICAgIHRoZSBAIHByZWZp
eCwgZS5nLiBPYmplY3QodGhpcykgYmVjb21lcyBAT2JqZWN0KHRoaXMpLiBUaGUgQCBpZGVudGlm
aWVycworICAgICAgICAgICBhcmUgcHJpdmF0ZSBuYW1lcywgYW5kIGJlaGF2ZSBqdXN0IGxpa2Ug
cmVndWxhciBwcm9wZXJ0aWVzLCBvbmx5CisgICAgICAgICAgIHdpdGhvdXQgdGhlIHJpc2sgb2Yg
YWR1bHRlcmF0aW9uLiBBZ2FpbiwgaW4gdGhlIEBPYmplY3QgY2FzZSwgd2UKKyAgICAgICAgICAg
ZXhwbGljaXRseSBkdXBsaWNhdGUgdGhlIE9iamVjdENvbnN0cnVjdG9yIHJlZmVyZW5jZSBvbiB0
aGUgR2xvYmFsT2JqZWN0CisgICAgICAgICAgIHNvIHRoYXQgd2UgaGF2ZSBndWFyYW50ZWVkIGFj
Y2VzcyB0byB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgY29uc3RydWN0
b3IuCisgICAgICAgICAtIGNhbGwsIGFwcGx5LCBldmFsLCBhbmQgRnVuY3Rpb24gYXJlIGFsbCBy
ZWplY3RlZCBpZGVudGlmaWVycywgYWdhaW4KKyAgICAgICAgICAgdG8gcHJldmVudCBhbnl0aGlu
ZyBmcm9tIGFjY2lkZW50YWxseSB1c2luZyBhbiBhZHVsdGVyYXRlZCBvYmplY3QuCisgICAgICAg
ICAgIEluc3RlYWQgQGNhbGwgYW5kIEBhcHBseSBhcmUgYXZhaWxhYmxlLCBhbmQgaGFwcGlseSB0
aGV5IGNvbXBsZXRlbHkKKyAgICAgICAgICAgZHJvcCB0aGUgbmVxX3B0ciBpbnN0cnVjdGlvbiBh
cyB0aGV5J3JlIGRlZmluZWQgYXMgYWx3YXlzIGJlaW5nIHRoZQorICAgICAgICAgICBvcmlnaW5h
bCBjYWxsL2FwcGx5IGZ1bmN0aW9ucy4KKworICAgICAgICBUaGVzZSByZXN0cmljdGlvbnMgYXJl
IGp1c3QgaW50ZW5kZWQgdG8gbWFrZSBpdCBoYXJkZXIgdG8gYWNjaWRlbnRhbGx5CisgICAgICAg
IG1ha2UgY2hhbmdlcyB0aGF0IGFyZSBpbmNvcnJlY3QgKGZvciBpbnN0YW5jZSBjYWxsaW5nIHdo
YXRldmVyIGhhcyBiZWVuCisgICAgICAgIGFzc2lnbmVkIHRvIGdsb2JhbC5PYmplY3QsIGluc3Rl
YWQgb2YgdGhlIG9yaWdpbmFsIGNvbnN0cnVjdG9yIGZ1bmN0aW9uKS4KKyAgICAgICAgSG93ZXZl
ciwgbWFraW5nIGEgbWlzdGFrZSBsaWtlIHRoaXMgc2hvdWxkIHJlc3VsdCBpbiBhIHB1cmVseSBz
ZW1hbnRpYworICAgICAgICBlcnJvciBhcyBmdW5kYW1lbnRhbGx5IHRoZXNlIGZ1bmN0aW9ucyBh
cmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlCisgICAgICAgIHJlZ3VsYXIgSlMgY29kZSBp
biB0aGUgaG9zdCBnbG9iYWwsIGFuZCBoYXZlIG5vIG1vcmUgcHJpdmlsZWdlcyB0aGFuCisgICAg
ICAgIGFueSBvdGhlciBKUy4KKworICAgICAgICBUaGUgaW5pdGlhbCBwcm9vZiBvZiBjb25jZXB0
IGlzIEFycmF5LnByb3RvdHlwZS5ldmVyeSwgdGhpcyBzaG93cyBhIDY1JQorICAgICAgICBwZXJm
b3JtYW5jZSBpbXByb3ZlbWVudCwgYW5kIHRoYXQgaW1wcm92ZW1lbnQgaXMgc2lnbmlmaWNhbnRs
eSBodXJ0IGJ5CisgICAgICAgIG91ciBwb29yIG9wdGltaXNhdGlvbiBvZiBvcF9pbi4KKworICAg
ICAgICBBcyB0aGlzIGlzIHN1Y2ggYSBsaW1pdGVkIGZ1bmN0aW9uLCB3ZSBoYXZlIG5vdCB5ZXQg
ZXhwb3J0ZWQgYWxsIHN5bWJvbHMKKyAgICAgICAgdGhhdCB3ZSBjb3VsZCBwb3NzaWJseSBuZWVk
LCBidXQgYXMgd2UgaW1wbGVtZW50IG1vcmUsIHRoZSBsaWtlbGlob29kCisgICAgICAgIG9mIGVu
Y291bnRlcmluZyBtaXNzaW5nIGZlYXR1cmVzIHdpbGwgcmVkdWNlLgorCisgICAgICAgIFRoaXMg
ZGlkIHJlcXVpcmUgYnJlYWtpbmcgb3V0IGEgSlNTdHJpbmdJbmxpbmVzIGhlYWRlciwgYW5kIHJl
cXVpcmVkCisgICAgICAgIGZpeGluZyBhIGZldyBvYmplY3RzIHRoYXQgd2VyZSB0cnlpbmcgdG8g
dXNpbmcgUHJvcGVydHlOYW1lOjpwdWJsaWNOYW1lCisgICAgICAgIHJhdGhlciB0aGFuIFByb3Bl
cnR5TmFtZTo6dWlkLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0
eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dCk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRpY1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWNGdW5jdGlvbkdl
dHRlcik6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tH
ZXR0ZXIpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBidWlsdGlucy9BcnJheS5wcm90b3R5cGUuanM6CisgICAgICAgIChldmVyeSk6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkJ1aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKToKKyAgICAgICAgKEpTQzo6
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSk6CisgICAgICAgICog
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVj
dXRhYmxlczo6Y3JlYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tG
b3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6dG9TdHJpY3RuZXNzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNCdWlsdGluRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBjcmVhdGVfaGFz
aF90YWJsZToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZ2Vu
ZXJhdGUtanMtYnVpbHRpbnM6IEFkZGVkLgorICAgICAgICAoZ2V0Q29weXJpZ2h0KToKKyAgICAg
ICAgKGdldEZ1bmN0aW9ucyk6CisgICAgICAgIChnZW5lcmF0ZUNvZGUpOgorICAgICAgICAobWFu
Z2xlTmFtZSk6CisgICAgICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSWRlbnRp
Zmllcik6CisgICAgICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChTb3VyY2VDb2RlKToK
KyAgICAgICAgKFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKFZNKToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvUHJvdG9DYWxsRnJhbWUuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUp
OgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpM
ZXhlcik6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpM
ZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFy
Pjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAg
ICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcik6CisgICAgICAgICog
cGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OnNldENsb3NlZFZh
cmlhYmxlcyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
Tm9kZTo6Y2FwdHVyZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OnNldENs
b3NlZFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmluaXNoUGFy
c2luZyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRU
b2tlblRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OmdldFVzZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNsb3NlZFZhcmlh
Ymxlcyk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9k
ZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAgICAgICogcnVudGlt
ZS9BcmdMaXN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAg
ICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJh
dG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpn
ZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpD
b21tb25JZGVudGlmaWVycyk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQ
cml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQdWJsaWNO
YW1lKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzRXhjZXB0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxl
OjpleGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpleGVj
dXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aXNCdWlsdGlu
RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1l
L0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFi
bGVHZXQpOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0KToKKyAg
ICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgICogcnVudGltZS9K
U0NlbGxJbmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6c291cmNlQ29kZSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzSG9zdE9y
QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6aXNCdWlsdGluRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIpOgorICAgICAg
ICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9w
ZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgICogcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6Om9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpnZXRDbGFzc1Byb3BlcnR5TmFtZXMpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZ0lubGlu
ZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjppbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9i
amVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgICAgRG9uJ3QgcmVw
b3J0IHByaXZhdGUgbmFtZXMuCisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6c3ltYm9s
VGFibGVQdXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChKU0M6OnNldFVwU3RhdGlj
RnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlND
OjpIYXNoRW50cnk6OmJ1aWx0aW5HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpIYXNoRW50cnk6
OnByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpwcm9wZXJ0eVB1dHRl
cik6CisgICAgICAgIChKU0M6Okhhc2hUYWJsZTo6ZW50cnkpOgorICAgICAgICAoSlNDOjpnZXRT
dGF0aWNQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpnZXRTdGF0aWNWYWx1ZVNsb3QpOgor
ICAgICAgICAoSlNDOjpwdXRFbnRyeSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6YnVp
bHRpbkV4ZWN1dGFibGVzKToKKwogMjAxNC0wMS0yOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBw
bGUuY29tPgogCiAgICAgICAgIEZUTCBzaG91bGQgc3VwcG9ydCBHZXRCeUlkKFVudHlwZWQ6KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDFhZDY5NzQ4OGIwYzRiOGI0Y2ZhZTI5MTM1NDI1OWI2ZGFjZmRjNDUuLmYz
YzNkNzE3MWQwNTQ0ODBlYzYwNTQwYzBkNTI1OTk2ZWVjZGI5YTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxNC0wMS0yOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gaW1wbGVtZW50IEpTIGJ1aWx0aW5zIGluIEpT
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc4ODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGlu
ZyBmb3IgdGhlIG5ld2x5IHJlcXVpcmVkIGhlYWRlcnMuCisKKyAgICAgICAgVGVzdDoganMvcmVn
cmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbAorCisgICAgICAgICogRm9yd2FyZGluZ0hl
YWRlcnMvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0lEQkFueUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJREJE
YXRhYmFzZUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9y
ZUN1c3RvbS5jcHA6CisKIDIwMTQtMDEtMzAgIFJvZ2VyIEZvbmcgIDxyb2dlcl9mb25nQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWJHTCBsb2FkIHBvbGljeSBzaG91bGQgYmUgcXVlcmllZCBmb3Ig
dGhlIHRvcCBsZXZlbCBkb2N1bWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggNWJlMDUzZjFlMDg2YjQzZTY4
NmMzNjc0ZGFlN2M1MTYwNWEyODZlNy4uMGVjZWQ1MWYzZTJkNWI2MjFkYWRmMDU3NDlmNWU3NDY2
YTA2ZjUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBib29sIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZQogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKICAg
ICBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHByb3BlcnR5TmFtZVJlZjsKICAgICAKLSAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpT
Q2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xh
c3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgLy8gb3B0aW9uYWwgb3B0
aW1pemF0aW9uIHRvIGJ5cGFzcyBnZXRQcm9wZXJ0eSBpbiBjYXNlcyB3aGVuIHdlIG9ubHkgbmVl
ZCB0byBrbm93IGlmIHRoZSBwcm9wZXJ0eSBleGlzdHMKICAgICAgICAgICAgIGlmIChKU09iamVj
dEhhc1Byb3BlcnR5Q2FsbGJhY2sgaGFzUHJvcGVydHkgPSBqc0NsYXNzLT5oYXNQcm9wZXJ0eSkg
ewpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiAgICAgUmVmUHRy
PE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgSlNWYWx1ZVJlZiB2YWx1ZVJl
ZiA9IHRvUmVmKGV4ZWMsIHZhbHVlKTsKICAgICAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9
IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJl
bnRDbGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBz
ZXRQcm9wZXJ0eSA9IGpzQ2xhc3MtPnNldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFwcm9wZXJ0eU5hbWVSZWYpCkBAIC0zNDMsNyArMzQzLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm8KICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CiAgICAg
UmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0Ns
YXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNz
ID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdERlbGV0
ZVByb3BlcnR5Q2FsbGJhY2sgZGVsZXRlUHJvcGVydHkgPSBqc0NsYXNzLT5kZWxldGVQcm9wZXJ0
eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lUmVmKQpAQCAtNTY0LDcgKzU2
NCw3IEBAIEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiB7CiAgICAgSlNPYmplY3RSZWYgdGhpc1Jl
ZiA9IHRvUmVmKHRoaXMpOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gY2xhc3NS
ZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAg
ICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXMgPSBq
c0NsYXNzLT5zdGF0aWNWYWx1ZXMoZXhlYykpIHsKICAgICAgICAgICAgICAgICBpZiAoU3RhdGlj
VmFsdWVFbnRyeSogZW50cnkgPSBzdGF0aWNWYWx1ZXMtPmdldChuYW1lKSkgewpAQCAtNjAwLDcg
KzYwMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGlj
RnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFCiAgICAgaWYgKFBhcmVudDo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdDIpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QyLmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFt
ZSkpOwogCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsK
ICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqLT5jbGFzc1JlZigpOyBq
c0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlm
IChPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGUqIHN0YXRpY0Z1bmN0aW9ucyA9IGpz
Q2xhc3MtPnN0YXRpY0Z1bmN0aW9ucyhleGVjKSkgewogICAgICAgICAgICAgICAgIGlmIChTdGF0
aWNGdW5jdGlvbkVudHJ5KiBlbnRyeSA9IHN0YXRpY0Z1bmN0aW9ucy0+Z2V0KG5hbWUpKSB7CkBA
IC02MjYsNyArNjI2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpjYWxsYmFja0dldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWQKICAgICBKU09iamVjdFJl
ZiB0aGlzUmVmID0gdG9SZWYodGhpc09iaik7CiAgICAgUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBw
cm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2Jq
LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsK
ICAgICAgICAgICAgIGlmIChKU09iamVjdEdldFByb3BlcnR5Q2FsbGJhY2sgZ2V0UHJvcGVydHkg
PSBqc0NsYXNzLT5nZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlO
YW1lUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDI3YmM0YzE3ZjNk
ZmVlYjYxZDI1MjMyM2ZkODc4YzQ0NzgwZjc0YzUuLjBjNGRlZmI5OWRiMzk5NDNiYTY1MjI0NmVj
ZGY5OTI3ZjE0ZTZmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUy
LDYgKzUyLDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9TY3Jp
cHRPYmplY3QuY3BwCiAgICAgYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCiAKKyAgICBidWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCisKICAgICBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Q
cm9maWxlLmNwcAogICAgIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9C
eXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC03MDcsNyArNzA5LDcgQEAgc2V0KEhBU0hfTFVUX0dF
TkVSQVRPUiAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vY3JlYXRlX2hhc2hfdGFibGUpCiBt
YWNybyhHRU5FUkFURV9IQVNIX0xVVCBfaW5wdXQgX291dHB1dCkKICAgICBhZGRfY3VzdG9tX2Nv
bW1hbmQoCiAgICAgICAgIE9VVFBVVCAke19vdXRwdXR9Ci0gICAgICAgIERFUEVORFMgJHtIQVNI
X0xVVF9HRU5FUkFUT1J9ICR7X2lucHV0fQorICAgICAgICBERVBFTkRTICR7SEFTSF9MVVRfR0VO
RVJBVE9SfSAke19pbnB1dH0gJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9K
U0NCdWlsdGlucy5oCiAgICAgICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7SEFTSF9M
VVRfR0VORVJBVE9SfSAke19pbnB1dH0gLWkgPiAke19vdXRwdXR9CiAgICAgICAgIFZFUkJBVElN
KQogICAgIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMgJHtfb3V0cHV0fSkKQEAg
LTgxNSwxNiArODE3LDI3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBDT01NQU5EICR7UFlU
SE9OX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENvcmVfSU5TUEVDVE9SX1NDUklQVFNfRElSfS9D
b2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0vSW5zcGVjdG9ySlMuanNvbiAtLW91dHB1dF9oX2RpciAiJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfSIgLS1vdXRwdXRfY3BwX2RpciAiJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfSIgLS1vdXRwdXRfanNfZGlyICIke0RFUklWRURfU09VUkNFU19K
QVZBU0NSSVBUQ09SRV9ESVJ9IiAtLW91dHB1dF90eXBlIEphdmFTY3JpcHQgLS13cml0ZV9hbHdh
eXMgJiYgbWtkaXIgLXAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9pbnNw
ZWN0b3IgJiYgY3AgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0
b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0vSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmggJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oICR7REVSSVZFRF9T
T1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yCiAgICAgVkVSQkFUSU0pCiAKKyMg
SlNDQnVpbHRpbnMKK2ZpbGUoR0xPQiBKU0NCdWlsdGluc19qc19maWxlcyAiJHtDTUFLRV9DVVJS
RU5UX1NPVVJDRV9ESVJ9L2J1aWx0aW5zLyouanMiKQorYWRkX2N1c3RvbV9jb21tYW5kKAorICAg
T1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMu
Y3BwICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAor
ICAgTUFJTl9ERVBFTkRFTkNZICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9nZW5lcmF0ZS1q
cy1idWlsdGlucworICAgREVQRU5EUyAke0pTQ0J1aWx0aW5zX2pzX2ZpbGVzfQorICAgQ09NTUFO
RCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZ2VuZXJh
dGUtanMtYnVpbHRpbnMgJHtKU0NCdWlsdGluc19qc19maWxlc30gJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFT
Q1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuY3BwCisgICBWRVJCQVRJTSkKKwogbGlzdChBUFBF
TkQgSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwCiAgICAgJHtERVJJ
VkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0
Y2hlcnMuY3BwCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNw
ZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAKKyAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBU
Q09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcAogKQogCiBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29y
ZV9IRUFERVJTCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNw
ZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVND
UklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuaAogICAgICR7REVS
SVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMu
aAorICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMu
aAogKQogCiBhZGRfY3VzdG9tX2NvbW1hbmQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCmluZGV4IDExNTZlOTdmZDg4NjI1NTdjOWNmOGQzYjY4YmY0ZDAzYzNlOGJh
OGYuLjdjOTgyYjY5MTNlMmY4OGQ1ODg4NGRiZTIzNzNmNTk1ZTdiNDU5MmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yOCw4ICsyOCw5IEBAIFZQQVRI
ID0gXAogICAgICQoSmF2YVNjcmlwdENvcmUpIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9wYXJz
ZXIgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL3J1bnRpbWUgXAotICAgICQoSmF2YVNjcmlwdENv
cmUpL2ludGVycHJldGVyIFwKLSAgICAkKEphdmFTY3JpcHRDb3JlKS9qaXQgXAorCSQoSmF2YVNj
cmlwdENvcmUpL2ludGVycHJldGVyIFwKKwkkKEphdmFTY3JpcHRDb3JlKS9qaXQgXAorCSQoSmF2
YVNjcmlwdENvcmUpL2J1aWx0aW5zIFwKICMKIAogLlBIT05ZIDogYWxsCkBAIC01NywxMiArNTgs
MjUgQEAgYWxsIDogXAogICAgIFJlZ0V4cE9iamVjdC5sdXQuaCBcCiAgICAgU3RyaW5nQ29uc3Ry
dWN0b3IubHV0LmggXAogICAgIHVkaXM4Nl9pdGFiLmggXAorICAgIEpTQ0J1aWx0aW5zIFwKICMK
IAorIyBidWlsdGluIGZ1bmN0aW9ucworLlBIT05ZOiBKU0NCdWlsdGlucworCitKU0NCdWlsdGlu
czogJChKYXZhU2NyaXB0Q29yZSkvZ2VuZXJhdGUtanMtYnVpbHRpbnMgSlNDQnVpbHRpbnMuaCBK
U0NCdWlsdGlucy5jcHAKK0pTQ0J1aWx0aW5zLmg6ICQoSmF2YVNjcmlwdENvcmUpL2dlbmVyYXRl
LWpzLWJ1aWx0aW5zICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zLyouanMKKwlweXRob24gJF4g
JEAKKwkJCQkJCQkJCQkJCQkJCQkJCQkJIAorSlNDQnVpbHRpbnMuY3BwOiBKU0NCdWlsdGlucy5o
CisKICMgbG9va3VwIHRhYmxlcyBmb3IgY2xhc3NlcwogCitjcmVhdGVfaGFzaF90YWJsZTogSlND
QnVpbHRpbnMKKwogJS5sdXQuaDogY3JlYXRlX2hhc2hfdGFibGUgJS5jcHAKIAkkXiAtaSA+ICRA
CisKIExleGVyLmx1dC5oOiBjcmVhdGVfaGFzaF90YWJsZSBLZXl3b3Jkcy50YWJsZQogCSReID4g
JEAKIApAQCAtNzksNyArOTMsNiBAQCBLZXl3b3JkTG9va3VwLmg6IEtleXdvcmRMb29rdXBHZW5l
cmF0b3IucHkgS2V5d29yZHMudGFibGUKIHVkaXM4Nl9pdGFiLmg6ICQoSmF2YVNjcmlwdENvcmUp
L2Rpc2Fzc2VtYmxlci91ZGlzODYvaXRhYi5weSAkKEphdmFTY3JpcHRDb3JlKS9kaXNhc3NlbWJs
ZXIvdWRpczg2L29wdGFibGUueG1sCiAJKFBZVEhPTlBBVEg9JChKYXZhU2NyaXB0Q29yZSkvZGlz
YXNzZW1ibGVyL3VkaXM4NiBweXRob24gJChKYXZhU2NyaXB0Q29yZSkvZGlzYXNzZW1ibGVyL3Vk
aXM4Ni9pdGFiLnB5ICQoSmF2YVNjcmlwdENvcmUpL2Rpc2Fzc2VtYmxlci91ZGlzODYvb3B0YWJs
ZS54bWwgfHwgZXhpdCAxKQogCi0KICMgSW5zcGVjdG9yIGludGVyZmFjZXMKIAogSU5TUEVDVE9S
X0RPTUFJTlMgPSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZp
bGUuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggZmU1NDQ4
ZGRjMWJjZmFhNGM3MjlhMWNjMDBkZWE2MjQzMTkzOTBhMi4uYjYyMjFlNTBlNGFjMDBjMDJmZjFj
MmQ2YzU1MjU5Mzg2MGMyNzQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQpA
QCAtOTcsNiArOTcsOCBAQCAkKHNoZWxsIG1rZGlyIC1wIERlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlKQogRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTGV4ZXIubHV0Lmg6ICQoc3Jj
ZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUgJChzcmNkaXIpL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvS2V5d29yZHMudGFibGUKIAkkKEFNX1ZfR0VOKSQo
UEVSTCkgJF4gPiAkQAogCiskKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9o
YXNoX3RhYmxlOiAkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWpzLWJ1
aWx0aW5zCisKIERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlLyUubHV0Lmg6ICQoc3JjZGly
KS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUgJChzcmNkaXIpL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lLyUuY3BwCiAJJChBTV9WX0dFTikkKFBFUkwpICReIC1p
ID4gJEAKIApAQCAtMTEwLDEyICsxMTIsMTYgQEAgRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvTExJbnREZXNpcmVkT2Zmc2V0cy5oOiAkKGphdmFzY3JpcHRjb3JlX3NvdXJjZXMpICQKIAkk
KEFNX1ZfR0VOKSQoUlVCWSkgJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIgJChzcmNkaXIpL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSAkQAogCSQoQU1fVl9hdCl0b3Vj
aCAkQAogCi0kKFByb2dyYW1zX0xMSW50T2Zmc2V0c0V4dHJhY3Rvcl9PQkpFQ1RTKTogRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnREZXNpcmVkT2Zmc2V0cy5oCiskKFByb2dyYW1z
X0xMSW50T2Zmc2V0c0V4dHJhY3Rvcl9PQkpFQ1RTKTogRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvTExJbnREZXNpcmVkT2Zmc2V0cy5oIAogCiBEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0
Q29yZS9MTEludEFzc2VtYmx5Lmg6IFByb2dyYW1zL0xMSW50T2Zmc2V0c0V4dHJhY3RvciQoRVhF
RVhUKQogCSQoQU1fVl9HRU4pJChSVUJZKSAkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vYXNtLnJiICQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20gUHJvZ3JhbXMvTExJbnRPZmZzZXRzRXh0cmFjdG9yJChF
WEVFWFQpICRACiAJJChBTV9WX2F0KXRvdWNoICRACiAKK0Rlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL0pTQ0J1aWx0aW5zLmg6IERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1
aWx0aW5zLmNwcAorRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNDQnVpbHRpbnMuY3Bw
OiAkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5zICQo
amF2YXNjcmlwdGNvcmVfYnVpbHRpbnNfanNfc291cmNlcykKKwkkKEFNX1ZfR0VOKSQoUFlUSE9O
KSAkXiAkQAorCiAkKGxpYmphdmFzY3JpcHRjb3JlZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZF
UlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX09CSkVDVFMpOiBEZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS9MTEludEFzc2VtYmx5LmgKIAoganNjOiAkKGphdmFzY3Jp
cHRjb3JlX2J1aWx0X25vc291cmNlcykgUHJvZ3JhbXMvanNjJChFWEVFWFQpCkBAIC0yMTYsNiAr
MjIyLDcgQEAgRVhUUkFfRElTVCArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL0tleXdvcmRM
b29rdXBHZW5lcmF0b3IucHkgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvS2V5d29y
ZHMudGFibGUgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9USEFOS1MgXAorCSQoamF2YXNjcmlw
dGNvcmVfYnVpbHRpbnNfanNfbm9zb3VyY2VzKSBcCiAJJChsbGludF9ub3NvdXJjZXMpIFwKIAkk
KG9mZmxpbmVhc21fbm9zb3VyY2VzKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCmluZGV4IGNkYjU0MjZiMDZiNTJhOTgyNTZlZTkwNThiYmE4ZjExZWVhNjllZTAu
Ljk4ZmFhYTdkMTc1YWE2MWYyMDg5NmNlZWIxMzg2M2UyN2IyNjZjZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yMCw2ICsyMCw4IEBAIGphdmFzY3Jp
cHRjb3JlX2J1aWx0X25vc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvRXJyb3JQcm90b3R5cGUubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3Jl
L0pTRGF0YVZpZXdQcm90b3R5cGUubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlL0pTR2xvYmFsT2JqZWN0Lmx1dC5oIFwKKwlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29y
ZS9KU0NCdWlsdGlucy5jcHAgXAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1
aWx0aW5zLmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTT05PYmplY3QubHV0
LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTUHJvbWlzZUNvbnN0cnVjdG9y
Lmx1dC5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU1Byb21pc2VQcm90b3R5
cGUubHV0LmggXApAQCAtMzUsNiArMzcsOSBAQCBqYXZhc2NyaXB0Y29yZV9idWlsdF9ub3NvdXJj
ZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9mZnNl
dHMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnRBc3NlbWJseS5oCiAK
K2phdmFzY3JpcHRjb3JlX2J1aWx0aW5zX2pzX25vc291cmNlcyArPSBcCisJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcworCiBqYXZhc2NyaXB0Y29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rp
b24uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmggXApAQCAtMTAyLDYg
KzEwNyw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRPYmplY3QuaCBcCiAgICAgU291cmNlL0phdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcCBcCiAgICAgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL1NjcmlwdFZhbHVlLmggXAorICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAgXApAQCAtMTI0MSw3ICsxMjQ4LDkgQEAg
amF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmggXAogCURlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmNwcCBcCi0J
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaAor
CURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgg
XAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmNwcCBcCisJRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNDQnVpbHRpbnMuaAogCiBsbGludF9ub3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
MzJfNjQuYXNtIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDVl
ZGVmZGJlODU1Zjk2YTYyNjhkODU3M2JlYzFkMGMzZDg1OGFhNWMuLmExMmRiMTgzNDg2ZGZiYmNh
ODNmM2E3OGU5Y2Y5ODYzMWIyNjUzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvagpAQCAtMzA5LDYgKzMwOSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxi
aW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cYmluZGluZ3NcU2NyaXB0T2JqZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdFZhbHVlLmNwcCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5UHJvZmlsZS5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeXRlY29kZUJhc2ljQmxvY2suY3Bw
IiAvPgpAQCAtNzIxLDYgKzcyMiw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3Rv
ckpTRnJvbnRlbmREaXNwYXRjaGVycy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwIiAvPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0
aW5zLmNwcCIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcQXJyYXlDb25zdHJ1Y3Rvci5sdXQu
aCIgLz4KQEAgLTc1MCw2ICs3NTIsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXFJlZ0V4cE9iamVjdC5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xSZWdFeHBQcm90b3R5cGUubHV0Lmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2Jq
JChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcU3Ry
aW5nQ29uc3RydWN0b3IubHV0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuaCIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJ
dGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcQVBJQ2FsbGJhY2tGdW5j
dGlvbi5oIiAvPgpAQCAtNzk4LDYgKzgwMSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdE9iamVjdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cYmluZGluZ3NcU2NyaXB0VmFsdWUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxlcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlQcm9maWxlLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeVZhbEluZm8uaCIgLz4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA4N2UxMmE0NzE1OGJi
NjIyNGQ0OWZkNjIyOTc4YzRhOWM0NDM1YTY1Li44NjljMWY1ODliY2I2ODZlYjljZjIwYzA5NmJl
MWI4M2E1NTFlMjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvai5maWx0ZXJzCkBAIC03LDYgKzcsOSBAQAogICAgIDxGaWx0ZXIgSW5jbHVkZT0iYmluZGlu
Z3MiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezBiYWNlMTIzLTQ1ODItZWViYy05MzE0LTc4
MTliMzc2YzE5OH08L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRl
ciBJbmNsdWRlPSJidWlsdGlucyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57M2I5ZDcyYTUt
MTM1Yi00M2IzLWE1MjQtYzZkMmI5ZDI5ZDM1fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0Zp
bHRlcj4KICAgICA8RmlsdGVyIEluY2x1ZGU9ImJ5dGVjb2RlIj4KICAgICAgIDxVbmlxdWVJZGVu
dGlmaWVyPns3NjYwODhhMC0xMjE2LTQ4NTQtYWE0My01NjBjNWUyODM2Njh9PC9VbmlxdWVJZGVu
dGlmaWVyPgogICAgIDwvRmlsdGVyPgpAQCAtMTA4LDYgKzExMSw5IEBACiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcTWFjcm9Bc3NlbWJsZXIuY3BwIj4KICAgICAgIDxGaWx0
ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxidWlsdGluc1xCdWlsdGluRXhlY3V0YWJsZXMuY3BwIj4KKyAgICAgIDxGaWx0
ZXI+YnVpbHRpbnM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIj4KICAgICAgIDxG
aWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTEzMjksNiArMTMz
NSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
SW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3Vy
Y2VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuY3BwIj4KKyAgICAgIDxGaWx0ZXI+
RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgIDwvSXRlbUdyb3Vw
PgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEFQSUNhbGxi
YWNrRnVuY3Rpb24uaCI+CkBAIC0xNDU0LDYgKzE0NjMsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cYXNzZW1ibGVyXFg4NkFzc2VtYmxlci5oIj4KICAgICAgIDxGaWx0ZXI+YXNzZW1i
bGVyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxidWlsdGluc1xCdWlsdGluRXhlY3V0YWJsZXMuaCI+CisgICAgICA8RmlsdGVyPmJ1aWx0aW5z
PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxi
eXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmgiPgogICAgICAgPEZpbHRlcj5ieXRlY29k
ZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMjU1MCw2ICsyNTYyLDkgQEAKICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3Jt
QXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xBcnJheVByb3RvdHlw
ZS5sdXQuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgogICAgIDwv
Q2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEpTQ0J1aWx0aW5zLmgiPgorICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
Vk0uaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlQ29tbW9uLnByb3BzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmVDb21tb24ucHJvcHMKaW5kZXggMzYyMmZm
YzU3N2M0M2RkZjcwZGE1MWZmNjhhZDY0NmY2MzA0ZTU2Ny4uYzU4ODg3MGMyZmQxM2Q2MDc2ZDM4
ZjUyY2E2MjI1ZGIyODcyYzc4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmVDb21tb24ucHJvcHMKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmVD
b21tb24ucHJvcHMKQEAgLTUsNyArNSw3IEBACiAgIDxQcm9wZXJ0eUdyb3VwIC8+CiAgIDxJdGVt
RGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz4uLlw7Li5cdG9vbHNcOy4uXHJ1bnRpbWVcOy4uXGxsaW50XDsuLlxqaXRc
Oy4uXGRpc2Fzc2VtYmxlclw7Li5caGVhcFw7Li5cZGVidWdnZXJcOy4uXGFzc2VtYmxlclw7Li5c
cHJvZmlsZXJcOy4uXHlhcnJcOy4uXGludGVycHJldGVyXDsuLlxieXRlY29kZVw7Li5cZGZnXDsu
LlxieXRlY29tcGlsZXJcOy4uXHBhcnNlclw7Li5cQVBJXDsuLlxmdGxcOy4uXGJpbmRpbmdzXDsu
LlxpbnNwZWN0b3JcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0
ZWN0dXJlKVxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1w7JChDb25maWd1cmF0aW9uQnVp
bGREaXIpXGluY2x1ZGVcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEphdmFTY3Jp
cHRDb3JlXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXDskKFdlYktp
dF9MaWJyYXJpZXMpXGluY2x1ZGU7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlXHByaXZhdGU7
JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXDsuLlx0b29sc1w7
Li5ccnVudGltZVw7Li5cbGxpbnRcOy4uXGppdFw7Li5cZGlzYXNzZW1ibGVyXDsuLlxoZWFwXDsu
LlxkZWJ1Z2dlclw7Li5cYXNzZW1ibGVyXDsuLlxwcm9maWxlclw7Li5ceWFyclw7Li5caW50ZXJw
cmV0ZXJcOy4uXGJ5dGVjb2RlXDsuLlxidWlsdGluc1w7Li5cZGZnXDsuLlxieXRlY29tcGlsZXJc
Oy4uXHBhcnNlclw7Li5cQVBJXDsuLlxmdGxcOy4uXGJpbmRpbmdzXDsuLlxpbnNwZWN0b3JcOyQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVxKYXZhU2Ny
aXB0Q29yZVxEZXJpdmVkU291cmNlc1w7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVc
OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlXDskKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXDskKFdlYktpdF9MaWJyYXJpZXMpXGlu
Y2x1ZGU7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlXHByaXZhdGU7JShBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICAgIDxG
b3JjZWRJbmNsdWRlRmlsZXM+SUNVVmVyc2lvbi5oOyUoRm9yY2VkSW5jbHVkZUZpbGVzKTwvRm9y
Y2VkSW5jbHVkZUZpbGVzPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAyN2U4NzY3NDBhOTY0YjAyODk4NGVkNjc4MTYxODIwYTVk
Y2Y3N2M0Li45MTE1NzNhYjE3ZDMzOTc0YWE3YzlhMDExZGIyMDBiMDlhZjc4YmZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTIyLDcgKzkyMiw2IEBACiAJCUE1MDNGQTE5MTg4
RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTEzMTg4RTBGQUYwMDExMEYxNCAv
KiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLzsgfTsKIAkJQTUwM0ZBMUExODhFMEZCMDAwMTEw
RjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE0MTg4RTBGQUYwMDExMEYxNCAvKiBKYXZhU2NyaXB0
Q2FsbEZyYW1lLmggKi87IH07CiAJCUE1MDNGQTFCMTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFT
Y3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTUwM0ZBMTUxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFt
ZS5jcHAgKi87IH07Ci0JCUE1MDNGQTFDMTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRD
YWxsRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1MDNGQTE2MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCAqLzsg
fTsKIAkJQTUwM0ZBMUQxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVBy
b3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNTAzRkExNzE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90
eXBlLmNwcCAqLzsgfTsKIAkJQTUwM0ZBMUUxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlw
dENhbGxGcmFtZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTUwM0ZBMTgxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxG
cmFtZVByb3RvdHlwZS5oICovOyB9OwogCQlBNTAzRkEyMTE4OEVGRjY4MDAxMTBGMTQgLyogU2Ny
aXB0QnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTUwM0ZBMUYxODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlwdEJyZWFrcG9pbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTAyNCw2ICsx
MDIzLDcgQEAKIAkJQTcwQjA4MzIxN0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzBCMDgz
MDE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmNwcCAqLzsgfTsKIAkJQTcwQjA4
MzMxN0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwQjA4MzExN0EwQjc5QjAwREFGMTRCIC8q
IERGR0JpbmFyeVN3aXRjaC5oICovOyB9OwogCQlBNzEyMzZFNTExOTVGMzNDMDBCRDIxNzQgLyog
SklUT3Bjb2RlczMyXzY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3MTIzNkU0MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3Bw
ICovOyB9OworCQlBNzFEQTgwRjE4ODBEQkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzFEQTgwRTE4
ODBEQkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcyMDI4QjYxNzk3NjAxRTAwOTgwMjhDIC8q
IEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNzIwMjhCNDE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0
aWxzLmNwcCAqLzsgfTsKIAkJQTcyMDI4QjgxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5u
ZXJVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTcyMDI4QjUxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3MjAyOEJBMTc5NzYw
M0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyMDI4QjkxNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVu
Y3Rpb25JbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTExNTAsNiArMTE1MCwxMCBAQAogCQlBN0NBM0FFODE3REE0MUFFMDA2NTM4QUYg
LyogSlNXZWFrTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBN0NBM0FFMjE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmggKi87IH07CiAJCUE3
Q0EzQUVCMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0NBM0FFOTE3REE1MTY4MDA2NTM4QUYg
LyogV2Vha01hcERhdGEuY3BwICovOyB9OwogCQlBN0NBM0FFQzE3REE1MTY4MDA2NTM4QUYgLyog
V2Vha01hcERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3Q0EzQUVBMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5oICovOyB9OworCQlB
N0Q4MDFBNDE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDgwMUExMTg4MEQ2NkUw
MDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwICovOyB9OworCQlBN0Q4MDFBNTE4ODBE
NjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4MDFBMjE4ODBENjZFMDAyNkMzOUIgLyogQnVp
bHRpbkV4ZWN1dGFibGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQTdEODAxQTgxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDgwMUE2MTg4
MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgKi87IH07CisJCUE3RDgwMUE5MTg4MEQ2
QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTcxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5z
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTdE
ODlDRjIxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jhc2ljQmxvY2suY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODlDRTMxN0EwQjhDQzAwNzczQUQ4
IC8qIERGR0Jhc2ljQmxvY2suY3BwICovOyB9OwogCQlBN0Q4OUNGMzE3QTBCOENDMDA3NzNBRDgg
LyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTdEODlDRTQxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5z
ZXJ0aW9uU2V0LmNwcCAqLzsgfTsKIAkJQTdEODlDRjQxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Js
b2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBN0Q4OUNFNTE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjQ2
Miw2ICsyNDY2LDggQEAKIAkJQTcxMjM2RTQxMTk1RjMzQzAwQkQyMTc0IC8qIEpJVE9wY29kZXMz
Ml82NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRPcGNvZGVz
MzJfNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzE4RjYxQTExNzU0QTIx
MDAyNDY1QTcgLyogUmVnRXhwSml0VGFibGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlZ0V4cEppdFRhYmxlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NzE4RjgyMTExNzhFQjRCMDAyNDY1QTcgLyogY3JlYXRlX3JlZ2V4X3RhYmxlcyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9u
OyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gY3JlYXRlX3JlZ2V4X3RhYmxlczsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcxREE4MEQxODgwRDcxRjAwRDFGMjk5IC8qIGdlbmVyYXRl
LWpzLWJ1aWx0aW5zICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gImdlbmVy
YXRlLWpzLWJ1aWx0aW5zIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcxREE4MEUx
ODgwREJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1N0cmluZ0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTcyMDI4QjQxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NUZXN0UnVubmVyVXRpbHMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzIwMjhCNTE3OTc2MDFFMDA5ODAy
OEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTQ1Rlc3RSdW5uZXJVdGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NzIwMjhCOTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklubGluZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGdW5jdGlvbklubGluZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTI1OTAsNiArMjU5NiwxMSBAQAogCQlBN0NBM0FFMjE3REE0MUFF
MDA2NTM4QUYgLyogSlNXZWFrTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTV2Vha01hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0NBM0FFOTE3REE1
MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2Vha01hcERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBN0NBM0FFQTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha01hcERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTdEODAxQTAxODgwRDY2RTAwMjZDMzlCIC8qIEFycmF5LnByb3RvdHlwZS5qcyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEFycmF5LnByb3RvdHlwZS5q
czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTExODgwRDY2RTAwMjZDMzlC
IC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBCdWlsdGluRXhlY3V0YWJsZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBN0Q4MDFBMjE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1aWx0aW5FeGVjdXRhYmxlcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIgLyogSlND
QnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDQnVp
bHRpbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFBNzE4ODBENkE4
MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNDQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdEODlDRTMx
N0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jhc2ljQmxvY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gREZHQmFzaWNCbG9jay5jcHA7IHBhdGggPSBkZmcvREZHQmFzaWNC
bG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RDg5Q0U0MTdBMEI4Q0Mw
MDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBERkdCbG9ja0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZH
QmxvY2tJbnNlcnRpb25TZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0Q4
OUNFNTE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQmxvY2tJbnNlcnRpb25TZXQuaDsgcGF0aCA9IGRm
Zy9ERkdCbG9ja0luc2VydGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjkyNiw2ICsyOTM3LDcgQEAKIAkJCQk4NjA0RjRGMjE0M0E2QzQ0MDBCMjk1RjUgLyogQ2hhbmdl
TG9nICovLAogCQkJCUY2OTJBODU0MDI1NTU5N0QwMUZGNjBGNyAvKiBjcmVhdGVfaGFzaF90YWJs
ZSAqLywKIAkJCQlBNzE4RjgyMTExNzhFQjRCMDAyNDY1QTcgLyogY3JlYXRlX3JlZ2V4X3RhYmxl
cyAqLywKKwkJCQlBNzFEQTgwRDE4ODBENzFGMDBEMUYyOTkgLyogZ2VuZXJhdGUtanMtYnVpbHRp
bnMgKi8sCiAJCQkJNDVFMTJEODgwNkE0OUIwRjAwRTlERjg0IC8qIGpzYy5jcHAgKi8sCiAJCQkJ
RjY4RUJCOEMwMjU1RDRDNjAxRkY2MEY3IC8qIGNvbmZpZy5oICovLAogCQkJCUY1QzI5MEU2MDI4
NEY5OEUwMTg2MzVDQSAvKiBKYXZhU2NyaXB0Q29yZVByZWZpeC5oICovLApAQCAtMjkzNCw2ICsy
OTQ2LDcgQEAKIAkJCQkxNDMyRUJENzBBMzRDQUQ0MDA3MTdCOUYgLyogQVBJICovLAogCQkJCTk2
ODhDQjEyMEVEMTJCNEUwMDFENjQ5RiAvKiBhc3NlbWJsZXIgKi8sCiAJCQkJQTU0Q0YyRUExODRF
QTczOTAwMjM3RjE5IC8qIGJpbmRpbmdzICovLAorCQkJCUE3RDgwMTlGMTg4MEQ2NkUwMDI2QzM5
QiAvKiBidWlsdGlucyAqLywKIAkJCQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNv
ZGUgKi8sCiAJCQkJN0UzOUQ4MUQwRUMzOEVGQTAwM0FGMTFBIC8qIGJ5dGVjb21waWxlciAqLywK
IAkJCQkxQzkwNTEzRTBCQTlFODgzMDA4MUU5RDAgLyogQ29uZmlndXJhdGlvbnMgKi8sCkBAIC0z
NTA5LDYgKzM1MjIsOCBAQAogCQk2NTBGREY4RDA5RDBGQ0E3MDA3NjlFNTQgLyogRGVyaXZlZCBT
b3VyY2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlB
N0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwICovLAorCQkJCUE3RDgw
MUE3MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oICovLAogCQkJCUJDMThDNTIzMEUx
NkZDOEEwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQlCQ0QyMDNFNzBF
MTcxOEY0MDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQlBNTEzRTVDNjE4
NUY5NDM2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCAqLywKQEAgLTM4MTEsNiAr
MzgyNiw3IEBACiAJCQkJQTc5MERENkExODJGNDk5NzAwNTg4ODA3IC8qIEpTU2V0SXRlcmF0b3Iu
aCAqLywKIAkJCQlCQzAyRTlCNjBFMTg0MkZBMDAwRjkyOTcgLyogSlNTdHJpbmcuY3BwICovLAog
CQkJCUY2OTJBODYyMDI1NTU5N0QwMUZGNjBGNyAvKiBKU1N0cmluZy5oICovLAorCQkJCUE3MURB
ODBFMTg4MERCQUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCAqLywKIAkJCQk4NkU4NTUz
ODExMUI5OTY4MDAxQUY1MUUgLyogSlNTdHJpbmdCdWlsZGVyLmggKi8sCiAJCQkJMjYwMEI1QTQx
NTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVyLmNwcCAqLywKIAkJCQkyNjAwQjVBNTE1
MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuaCAqLywKQEAgLTQ1NjEsNiArNDU3Nywx
NiBAQAogCQkJcGF0aCA9IHJlbW90ZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07
CisJCUE3RDgwMTlGMTg4MEQ2NkUwMDI2QzM5QiAvKiBidWlsdGlucyAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQTdEODAxQTAxODgwRDY2RTAwMjZDMzlC
IC8qIEFycmF5LnByb3RvdHlwZS5qcyAqLywKKwkJCQlBN0Q4MDFBMTE4ODBENjZFMDAyNkMzOUIg
LyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCAqLywKKwkJCQlBN0Q4MDFBMjE4ODBENjZFMDAyNkMz
OUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggKi8sCisJCQkpOworCQkJcGF0aCA9IGJ1aWx0aW5z
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIC8qIEVuZCBQQlhHcm91cCBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTQ2
MDYsMTEgKzQ2MzIsMTEgQEAKIAkJCQk4NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdB
c3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1Q0VFRTE1MTg3RjNCQUQwMEU1NUM5OSAv
KiBJbnNwZWN0b3JBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVDMDI4NUQxNzE3OTY2ODAw
MzUxRTM1IC8qIEFSTXY3RE9wY29kZS5oIGluIEhlYWRlcnMgKi8sCi0gCQkJCTJBNjgyOTVCMTg3
NUY4MDUwMEI2QzNFMiAvKiBDb3B5V3JpdGVCYXJyaWVyLmggaW4gSGVhZGVycyAqLywKLSAgICAg
ICAgICAgICAgICAyQTRFQzkwQzE4NjBENkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQkyQTY4Mjk1QjE4NzVGODA1MDBCNkMzRTIgLyogQ29weVdy
aXRlQmFycmllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkE0RUM5MEMxODYwRDZDMjAwOTRGNzgy
IC8qIFdyaXRlQmFycmllckJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU1OTMyQTgxODND
NUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzMjQz
OTMxODU2OTcwOTAwMkVENjkyIC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5IGlu
IEhlYWRlcnMgKi8sCi0gCQkJCUE1MzI0MzkyMTg1Njk3MDkwMDJFRDY5MiAvKiBDb2RlR2VuZXJh
dG9ySW5zcGVjdG9yLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJQTUzMjQzOTIxODU2OTcwOTAwMkVE
NjkyIC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkgaW4gSGVhZGVycyAqLywKIAkJCQkwRjI0
RTU0RjE3RUUyNzQ5MDBBQkIyMTcgLyogVGVtcFJlZ2lzdGVyU2V0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNTBFNEI2NDE4ODA5REQ1MDA2OEE0NkQgLyogSlNHbG9iYWxPYmplY3RSdW50aW1lQWdl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFQjU4QzE1MTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJv
ckhhbmRsaW5nU2NvcGUuaCBpbiBIZWFkZXJzICovLApAQCAtNDYyMiw3ICs0NjQ4LDcgQEAKIAkJ
CQkwRjgzMzVCODE2MzlDMUVBMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMjkxODdDQTVFNjAwODQzQjEwIC8qIGlubGluZS1hbmQt
bWluaWZ5LXN0eWxlc2hlZXRzLWFuZC1zY3JpcHRzLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4
NDBFMkIxODdDQTc1QjAwODQzQjEwIC8qIGpzbWluLnB5IGluIEhlYWRlcnMgKi8sCi0gCQkJCUE1
MzI0Mzk4MTg1NkE0ODkwMDJFRDY5MiAvKiBJbnNwZWN0b3JKUy5qc29uIGluIEhlYWRlcnMgKi8s
CisJCQkJQTUzMjQzOTgxODU2QTQ4OTAwMkVENjkyIC8qIEluc3BlY3RvckpTLmpzb24gaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTg0MEUyQTE4N0NBNzU5MDA4NDNCMTAgLyogeHhkLnBsIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkVBMDg2MjAxODJCN0EwNDAwRjZEODUxIC8qIEJyZWFrcG9pbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3QThBRjM1MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5o
IGluIEhlYWRlcnMgKi8sCkBAIC00NzMzLDcgKzQ3NTksNyBAQAogCQkJCUExQTAwOUMwMTgzMUEy
MkQwMENGODcxMSAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NkVDOURDNTEzMjhERjgyMDAyQjJBRDcgLyogREZHQnl0ZUNvZGVQYXJzZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNDg1MzI4MTg3REZERUMwMDgzQjY4NyAvKiBGVExBdmFpbGFibGVSZWNvdmVy
eS5oIGluIEhlYWRlcnMgKi8sCi0gICAgICAgICAgICAgICAgQTU5M0NGODcxODQwMzhDQTAwQkZD
RTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1OTND
Rjg3MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjI1NkMzNjE2MjdCMEFEMDA3RjI3ODMgLyogREZHQ2FsbEFycmF5QWxsb2Nh
dG9yU2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRCMTRDM0NE
MkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZD
OTU4MTRFRjkwQTIwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC00
ODcyLDYgKzQ4OTgsNyBAQAogCQkJCTBGRUEwQTFEMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0
cmFjdEhlYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTFGMTcwOEIwMDcwMEJCNzIyQyAv
KiBGVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTk0NTU5
MzE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlBN0Q4MDFBOTE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRUEwQTBBMTcwNTEzREIwMEJCNzIyQyAvKiBGVExDYXBhYmlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDg1MzJBMTg3REZERUMwMDgzQjY4NyAvKiBGVExS
ZWNvdmVyeU9wY29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMjMxNzA5NjA2OTAwQkI3
MjJDIC8qIEZUTENvbW1vblZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC00OTQ2LDYgKzQ5NzMs
NyBAQAogCQkJCUJDMThDNDBGMEUxNkY1Q0QwMEIzNDQ2MCAvKiBJZGVudGlmaWVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDMjVGOEJDRTE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2Vl
cGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5OTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5k
ZXhpbmdIZWFkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3RDgwMUE1MTg4MEQ2NkUwMDI2QzM5
QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzlBMTVF
RDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ0hlYWRlcklubGluZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGQjdGMzlCMTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ1R5cGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGQ0VGQUIwMTgwNUNBNkQwMDQ3MkNFNCAvKiBJbml0aWFsaXplTExWTS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC01MjE4LDYgKzUyNDYsNyBAQAogCQkJCUE1MzI0Mzg4MTg1NjgzMzUw
MDJFRDY5MiAvKiBJbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxOEM0NTYwRTE2RjVDRDAwQjM0NDYwIC8qIFByb3RlY3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0NzRDMzNCMTZBQTJEOTUwMDYyRjAxRCAvKiBQcm90b3R5cGVNYXAuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUE3MURBODBGMTg4MERCQUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMzMkE0MTRDQTdERDkwMDg1RjNDNiAvKiBQdXRCeUlk
U3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBDRDRDMjE1RjFBNjA3MDAzMkYxQzAgLyog
UHV0RGlyZWN0SW5kZXhNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzAwOENFNzE4NzYzMUI2
MDA5NTVDMjQgLyogTWljcm90YXNrLmggaW4gSGVhZGVycyAqLywKQEAgLTU4MzYsNiArNTg2NSw3
IEBACiAJCQkJQTdEODlDRjIxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jhc2ljQmxvY2suY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTcwQjA4MzIxN0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3
aXRjaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q4OUNGMzE3QTBCOENDMDA3NzNBRDggLyog
REZHQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTdEODAxQTQxODgw
RDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk4NkVDOURDNDEzMjhERjgyMDAyQjJBRDcgLyogREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZEODJFMjExNDE3MkNFMzAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGll
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkZGQzk1NzE0RUY5MEEwMDBDNzI1MzIgLyogREZH
Q0ZBUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01ODUyLDYgKzU4ODIsNyBAQAogCQkJCTBG
RkZDOTU5MTRFRjkwQTYwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjJGQzc3MjE2RTEyRjcxMDAzOEQ5NzYgLyogREZHRENFUGhhc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEY4RjJCOTkxNzJGMDRGRjAwN0RCREE1IC8qIERGR0Rlc2lyZWRJZGVudGlm
aWVycy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBN0Q4MDFBODE4ODBENkE4MDAyNkMzOUIgLyog
SlNDQnVpbHRpbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTczRTEzMzAxNzk2MjRDRDAwRTRE
RUE4IC8qIERGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QzJDMEY3Q0QxN0JCRkM1QjAwNDY0RkU0IC8qIERGR0Rlc2lyZWRUcmFuc2l0aW9ucy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkU4NTM0QjE3MjNDREE1MDBCNjE4RjUgLyogREZHRGVzaXJlZFdh
dGNocG9pbnRzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTk3Niw3ICs2MDA3LDcgQEAKIAkJCQkw
RjZCMUNDNTE4NjJDNDc4MDA4NDVEOTcgLyogRlRMVW53aW5kSW5mby5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjlEMzM5QTE4MDNBREI3MDA3M0MyQkMgLyogRlRMU3RhY2tNYXBzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGRUEwQTE2MTcwNkJCOTAwMEJCNzIyQyAvKiBGVExTdGF0ZS5jcHAg
aW4gU291cmNlcyAqLywKLSAJCQkJN0MwMDhDRDIxODZGOEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlz
ZUZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QzAwOENEMjE4NkY4QTkzMDA5NTVD
MjQgLyogSlNQcm9taXNlRnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNkIxQ0I1
MTg1RkM5RTkwMDg0NUQ5NyAvKiBGVExKU0NhbGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYy
MzVCRTExNzE3OEUxQzAwNjkwQzdGIC8qIEZUTFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBNTkzQ0Y3QzE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0xpbmtCdWZmZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9M
aW5rQnVmZmVyLmNwcAppbmRleCBhZjE0ZTMzZWFjMDU5N2YyZDc4YzRiM2NkMTYzNTQxMWRhYmE5
NjVlLi42NzkyM2YwODIzYzJmYmFiMzExMjhhZGI1MTlkYzg5ZWEwMmI2NTBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKQEAgLTMwLDYgKzMw
LDcgQEAKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKKyNp
bmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNs
dWRlICJWTS5oIgogI2luY2x1ZGUgPHd0Zi9Db21waWxhdGlvblRocmVhZC5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uM2ViNDJmNWNjNDMzZjE2MzYzNDNiZmM5ODJhYTJhYWZiMzM2ZTk0OQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMK
QEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKK2Z1bmN0aW9uIGV2ZXJ5KGNhbGxiYWNrIC8qLCB0aGlzQXJnICovKSB7CisgICAgInVz
ZSBzdHJpY3QiOworICAgIGlmICh0aGlzID09PSBudWxsKQorICAgICAgICB0aHJvdyBuZXcgQFR5
cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBi
ZSBudWxsIik7CisgICAgCisgICAgaWYgKHRoaXMgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgdGhy
b3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0
aGlzfCBub3QgYmUgdW5kZWZpbmVkIik7CisgICAgCisgICAgdmFyIGFycmF5ID0gQE9iamVjdCh0
aGlzKTsKKyAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoID4+PiAwOworICAgIAorICAgIGlm
ICh0eXBlb2YgY2FsbGJhY2sgIT09ICJmdW5jdGlvbiIpCisgICAgICAgIHRocm93IG5ldyBAVHlw
ZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9u
Iik7CisKKyAgICB2YXIgdGhpc0FyZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRz
WzFdIDogdW5kZWZpbmVkOworICAgIAorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBp
KyspIHsKKyAgICAgICAgaWYgKCEoaSBpbiBhcnJheSkpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgaWYgKCFjYWxsYmFjay5AY2FsbCh0aGlzQXJnLCBhcnJheVtpXSwgaSwgYXJyYXkp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5FeGVjdXRhYmxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDFkYmI1ZjkyMjVlMjhhMTJlZDNkMTc5OGZm
MTc2OGU0MzY3MWE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorCisjaW5jbHVkZSAiRXhlY3V0YWJs
ZS5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5s
aW5lcy5oIgorI2luY2x1ZGUgIlBhcnNlci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworQnVpbHRp
bkV4ZWN1dGFibGVzOjpCdWlsdGluRXhlY3V0YWJsZXMoVk0mIHZtKQorICAgIDogbV92bSh2bSkK
KyNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9u
TmFtZSwgbGVuZ3RoKSAsIG1fIyNuYW1lIyNTb3VyY2UobWFrZVNvdXJjZShTdHJpbmdJbXBsOjpj
cmVhdGVGcm9tTGl0ZXJhbChzXyMjbmFtZSwgbGVuZ3RoKSwgU3RyaW5nSW1wbDo6Y3JlYXRlRnJv
bUxpdGVyYWwoIjxidWlsdGluPiIpKSkKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOKElOSVRJQUxJ
WkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJTl9TVFJJTkdT
Cit7Cit9CisKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6
OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3Qg
SWRlbnRpZmllciYgbmFtZSkKK3sKKyAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxh
c3ROZXdsaW5lOworICAgIFBhcnNlckVycm9yIGVycm9yOworICAgIFJlZlB0cjxQcm9ncmFtTm9k
ZT4gcHJvZ3JhbSA9IHBhcnNlPFByb2dyYW1Ob2RlPigmbV92bSwgc291cmNlLCAwLCBJZGVudGlm
aWVyKCksIEpTUGFyc2VCdWlsdGluLCBKU1BhcnNlUHJvZ3JhbUNvZGUsIGVycm9yLCAmcG9zaXRp
b25CZWZvcmVMYXN0TmV3bGluZSk7CisKKyAgICBpZiAoIXByb2dyYW0pIHsKKyAgICAgICAgZGF0
YUxvZygiRmF0YWwgZXJyb3IgY29tcGlsaW5nIGJ1aWx0aW4gZnVuY3Rpb24gJyIsIG5hbWUuc3Ry
aW5nKCksICInOiAiLCBlcnJvci5tX21lc3NhZ2UpOworICAgICAgICBDUkFTSCgpOworICAgIH0K
KworICAgIFN0YXRlbWVudE5vZGUqIGV4cHJTdGF0ZW1lbnQgPSBwcm9ncmFtLT5zaW5nbGVTdGF0
ZW1lbnQoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChleHByU3RhdGVtZW50KTsKKyAgICBSRUxFQVNF
X0FTU0VSVChleHByU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CisgICAgRXhwcmVzc2lv
bk5vZGUqIGZ1bmNFeHByID0gc3RhdGljX2Nhc3Q8RXhwclN0YXRlbWVudE5vZGUqPihleHByU3Rh
dGVtZW50KS0+ZXhwcigpOworICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmNFeHByKTsKKyAgICBSRUxF
QVNFX0FTU0VSVChmdW5jRXhwci0+aXNGdW5jRXhwck5vZGUoKSk7CisgICAgRnVuY3Rpb25Cb2R5
Tm9kZSogYm9keSA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGZ1bmNFeHByKS0+Ym9keSgp
OworICAgIFJFTEVBU0VfQVNTRVJUKCFwcm9ncmFtLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsK
KyAgICAKKyAgICBib2R5LT5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5l
KTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5KTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5LT5p
ZGVudCgpLmlzTnVsbCgpKTsKKyAgICAKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgYW4g
aW5wdXQgc3RyaW5nIHRoYXQgd291bGQgcmVzdWx0IGluIGEgc2luZ2xlIGFub255bW91cyBmdW5j
dGlvbiBleHByZXNzaW9uLgorICAgIGJvZHktPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3Jl
TGFzdE5ld2xpbmUpOworICAgIFJFTEVBU0VfQVNTRVJUKGJvZHkpOworICAgIGZvciAoY29uc3Qg
YXV0byYgY2xvc2VkVmFyaWFibGUgOiBwcm9ncmFtLT5jbG9zZWRWYXJpYWJsZXMoKSkgeworICAg
ICAgICBpZiAoY2xvc2VkVmFyaWFibGUgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMu
aW1wbCgpKQorICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAgIGlmIChjbG9zZWRW
YXJpYWJsZSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQuaW1wbCgpKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNsb3NlZFZhcmlh
YmxlLT5pc0VtcHR5VW5pcXVlKCkpOworICAgIH0KKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNy
ZWF0ZSgmbV92bSwgc291cmNlLCBib2R5LCB0cnVlLCBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbik7
CisgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5tX25hbWVWYWx1ZS5zZXQobV92bSwgZnVuY3Rpb25F
eGVjdXRhYmxlLCBqc1N0cmluZygmbV92bSwgbmFtZS5zdHJpbmcoKSkpOworICAgIHJldHVybiBm
dW5jdGlvbkV4ZWN1dGFibGU7Cit9CisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJM
RVMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6Om5hbWUjI0V4ZWN1dGFibGUoKSBcCit7XAorICAgIGlm
ICghbV8jI25hbWUjI0V4ZWN1dGFibGUpXAorICAgICAgICBtXyMjbmFtZSMjRXhlY3V0YWJsZSA9
IGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKG1fIyNuYW1lIyNTb3VyY2UsIG1fdm0ucHJvcGVydHlO
YW1lcy0+ZnVuY3Rpb25OYW1lKTtcCisgICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdl
dCgpO1wKK30KK0pTQ19GT1JFQUNIX0JVSUxUSU4oREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMp
CisjdW5kZWYgRVhQT1NFX0JVSUxUSU5fU09VUkNFUworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDlh
MTllMjYxNTA3OTRhNjY5ZWM5OGUzOTliZjY3ZjdmNzEwNjQxOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaApAQCAt
MCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBCdWlsdGluRXhlY3V0YWJsZXNfaAorI2RlZmluZSBCdWlsdGluRXhlY3V0YWJs
ZXNfaAorCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKKyNpbmNsdWRlICJTb3VyY2VDb2RlLmgi
CisjaW5jbHVkZSAiV2Vhay5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIElk
ZW50aWZpZXI7CitjbGFzcyBWTTsKKworY2xhc3MgQnVpbHRpbkV4ZWN1dGFibGVzIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxCdWlsdGluRXhlY3V0YWJsZXM+IGNyZWF0ZShWTSYg
dm0pCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEJ1aWx0aW5FeGVjdXRhYmxl
cyh2bSkpOworICAgIH0KKyAgICAKKyNkZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMo
bmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBuYW1lIyNFeGVjdXRhYmxlKCk7IFwKK2NvbnN0IFNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgp
IHsgcmV0dXJuIG1fIyNuYW1lIyNTb3VyY2U7IH0KKyAgICAKKyAgICBKU0NfRk9SRUFDSF9CVUlM
VElOKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX1NP
VVJDRVMKKyAgICAKK3ByaXZhdGU6CisgICAgQnVpbHRpbkV4ZWN1dGFibGVzKFZNJik7CisgICAg
Vk0mIG1fdm07CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0aW5F
eGVjdXRhYmxlKGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJik7CisjZGVmaW5l
IERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0
aClcCisgICAgU291cmNlQ29kZSBtXyMjbmFtZSMjU291cmNlOyBcCisgICAgV2VhazxVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZT4gbV8jI25hbWUjI0V4ZWN1dGFibGU7CisgICAgSlNDX0ZPUkVB
Q0hfQlVJTFRJTihERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgREVDTEFS
RV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAppbmRleCA0YzA1NWZlYTU3
MzhmMWM0NjMyNjZkNGU5YTkxNTQ4YTEyOTM0NzA5Li5lYWVmZTU0ZjJkMTUyODRiNjRiZjY5OTcy
NjU4Y2QxYzYzYjRlYTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQXJyYXlQcm9maWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QXJyYXlQcm9maWxlLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkFycmF5UHJvZmls
ZS5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGlu
ZXMuaCIKICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmlu
Z0V4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcApp
bmRleCBkNzQ4OWQzMWFiZDdjOTlmMWJjNmZhZmFlNjU4MTExMmFiZGFjZmRiLi4xYTNiNWY0Yzc4
MDdiOTQ4OGZmMzY1NzJmNzk0ZDBiYjlmMzhkMjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcApAQCAtMjcsNiArMjcs
NyBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgogCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJQcmVjaXNl
SnVtcFRhcmdldHMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCmlu
ZGV4IDkyNjMzNGM0NDRjOWMyZjNkZmNjOTUwMTJjZDBhNGEwMzEwNGQyZDkuLmFkNGFlMjI5NWVh
YzQ4YWE0MGFmYmVlM2ViNjkyODk2ZmNjYWJkMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCkBA
IC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKICNpbmNsdWRlICJGdWxsQnl0ZWNvZGVMaXZlbmVzcy5oIgorI2luY2x1ZGUg
IkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxMaW5rSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bExpbmtJbmZvLmNwcAppbmRleCA2YTYwMDU3NmEwMDBhZGFjOGFmMjE0ZTk4ODEzNjQ2MTlmMjlh
MDEwLi40YmY4MTg4NjYwMjhjNzk2YTcyZTU3ODMzMmU0Njc3NTU2YjIzN2E1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaW5jbHVkZSAiREZHT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkRGR1RodW5r
cy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiUmVwYXRjaEJ1
ZmZlci5oIgogCiAjaWYgRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMjYzZWM3Y2FkZjRmNzljYTgxMDI0NDFlNjJiZjJhMDVi
NWRkYzNmMi4uNzUxNTA2NTQyMzc2ZDdlZGM1OTlhYTAwZjliMTI2ODVjZGEzNTJjZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTQzLDExICs0
MywxMyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVk
ZSAiSlNBY3RpdmF0aW9uLmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpT
Q0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
TmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50LmgiCiAjaW5jbHVkZSAiTG93
TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCIK
KyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIK
ICNpbmNsdWRlICJQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmgiCiAjaW5jbHVkZSAiUmVkdWNlV2hp
dGVzcGFjZS5oIgpAQCAtMTU2OSw3ICsxNTcxLDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2Ny
aXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW4K
IAogICAgIHNldENvbnN0YW50UmVnaXN0ZXJzKHVubGlua2VkQ29kZUJsb2NrLT5jb25zdGFudFJl
Z2lzdGVycygpKTsKICAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPnVzZXNHbG9iYWxPYmplY3Qo
KSkKLSAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1t1bmxpbmtlZENvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0UmVnaXN0ZXIoKS5vZmZzZXQoKV0uc2V0KCptX3ZtLCBvd25lckV4ZWN1dGFibGUsIG1f
Z2xvYmFsT2JqZWN0LmdldCgpKTsKKyAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1t1bmxpbmtl
ZENvZGVCbG9jay0+Z2xvYmFsT2JqZWN0UmVnaXN0ZXIoKS50b0NvbnN0YW50SW5kZXgoKV0uc2V0
KCptX3ZtLCBvd25lckV4ZWN1dGFibGUsIG1fZ2xvYmFsT2JqZWN0LmdldCgpKTsKICAgICBtX2Z1
bmN0aW9uRGVjbHMucmVzaXplVG9GaXQodW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rp
b25EZWNscygpKTsKICAgICBmb3IgKHNpemVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJsb2NrLT5u
dW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSwgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAg
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUgPSB1bmxpbmtl
ZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCmluZGV4IDY4YmMwMzc5ZjU3NDRjOWE4Zjc0MzFkYjY0ZjhhYjU0ZTZl
MTA1M2YuLjQ5OTVjNTJjZjhiMmIxYjRkNjI4MDQ1M2VlZDI3Yzc3NGE0OTU1OGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTU2LDcgKzU2LDYgQEAK
ICNpbmNsdWRlICJIYW5kbGVySW5mby5oIgogI2luY2x1ZGUgIk9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNp
bmNsdWRlICJQdXRQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2lu
Y2x1ZGUgIkpJVENvZGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAKaW5kZXgg
YmU1MGM5Nzc4YmYzM2UzMzlhYzgzNGJmNTZlM2IxZTc1NTg2ZmUzZS4uYjc2NDZlZDFlZjE2NDE4
OWZjZmM3YjUzNjU2ZmI2NWJlZDA2NGQyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2lu
dC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1
ZGUgIkRGR0NvbW1vbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAKIG5hbWVz
cGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZU9yaWdpbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdp
bi5jcHAKaW5kZXggNjhkYzZiMDUzMzU1OTBlYzRjODFjNDIzNDZiYjc0ZGJiZDhmYWM1Ni4uMTU3
ODgwODkzNGRkM2NjNGNkOTdkMjcxYWU4YWM4YmZlMzk3NDZjMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkV4
ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIk9w
ZXJhdGlvbnMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0aW9uQ291bnRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRXhlY3V0aW9uQ291bnRlci5jcHAKaW5kZXggM2E2NDZhODZhOTQ5MTQz
ZWUyY2YyMzNiMjljOGYzODIxYWU5ZjMxMS4uYmZiNTA2MTIwYTI3MDUxMmViODFkODQ0YWNlYzI5
MWU3MjA0NTRkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4
ZWN1dGlvbkNvdW50ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
eGVjdXRpb25Db3VudGVyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgorI2luY2x1ZGUgIkpTRnVu
Y3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcAppbmRleCAxYWM1YmI1YTA0Zjc2
MDVkMGRkYmNkZWY2NjRlZDI3YzQ4MjA2ZTU0Li5lMDA0MmY5NjJiNDM4MTZkMDBjYTYzYjMyYjI1
MzQzMmYyYmMxNDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCkBAIC0yOSw2ICsy
OSw3IEBACiAjaWYgRU5BQkxFKERGR19KSVQpCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNp
bmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNw
cAppbmRleCBlZGU4YTM2NDM3ZGQ3OGMyZTQ2YTI5ZDZiM2UwNzlkM2QyZDBmZWVkLi5jOTQwMjJm
OTdmYjhiZDc4Y2RjNWQxMzhlNmQ1ZjcwZjQ2ZDRkMzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcApAQCAtMjYsNiAr
MjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0
cy5oIgogCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKKwogbmFtZXNwYWNlIEpTQyB7
CiAKIHRlbXBsYXRlIDxzaXplX3QgdmVjdG9yU2l6ZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2lu
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tK
ZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCmluZGV4IDk4NmUwM2QwY2JhNzE4NWIzOWNlZTAyM2Y0
YWI2YmM5YjhjY2I2ZTQuLjJmOTBmYjY5ZjhjMGI2OTlhZDEyYWM0NjIxMWEyOWM0Y2FmYmI1ZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVC
bG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcApAQCAt
MzEsNiArMzEsOCBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0NvbW1v
bi5oIgogI2luY2x1ZGUgIkRGR0V4aXRQcm9maWxlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlu
bGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlND
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5n
VG9vbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNw
cAppbmRleCBkMThkYmMxZmYxZTAxM2U2YWRhN2ZmNWQ0ODcxZmVjMTA4NTFhNDliLi5mMTg0NTNl
NTY2OTY0MmUxNmUxMDRkMmE4ZDQ5MzZhZWUzYWQzNjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcApAQCAtMzEsNiArMzEsNyBAQAogCiAj
aW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRl
ICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogCiAjaWYgIU9TKFdJ
TkRPV1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lh
bFBvaW50ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2lu
dGVyLmNwcAppbmRleCA3Nzg5NjUzZjA1NGNiZTFlZGU2MmViMGJlZWY3ZjFjYWY2MDRlMDFkLi4w
ZGIzNTlkZjNjMjkwNDI3ZDk1MjcwOGRiMTdlMjVlNzZhZmNkNTcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHAKQEAgLTI3LDYgKzI3
LDcgQEAKICNpbmNsdWRlICJTcGVjaWFsUG9pbnRlci5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2Nr
LmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50
LmNwcAppbmRleCA1Y2ZiM2QxZThmNTI4NWFiYTcxOTQ4ZjZmM2EzMGVmNWVjZWFiNmRmLi5lYzg2
YTcxODBjZjU0OGRmNjQ2ODc0NWY2YTJmM2QwMGQxYmJmYzM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVh
cmluZ1dhdGNocG9pbnQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEpJVCkKIAog
I2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAj
aW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApp
bmRleCAxZGZiNWFjNmFkOTA5M2Y4ZjgxMTAxZWY3ZjJlNjEyMzExYWMxOTM5Li40MzM5MGQ5NjVm
YzUwMzQwMTZmN2JmZmYyM2U2OGJiMWUwNTQ1NTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTQ5LDkgKzQ5LDkg
QEAgY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jazo6c19pbmZvID0geyAi
VW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrIiwKIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEV2YWxD
b2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkRXZhbENvZGVCbG9jayIsICZCYXNlOjpzX2lu
Zm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRFdmFsQ29kZUJsb2NrKSB9Owog
Y29uc3QgQ2xhc3NJbmZvIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2spIH07CiAKLXN0YXRpYyBVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKFZNJiB2bSwgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJN
b2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IpCitzdGF0
aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhW
TSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgRGVidWdnZXJNb2Rl
IGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgVW5saW5rZWRGdW5jdGlv
bktpbmQgZnVuY3Rpb25LaW5kLCBQYXJzZXJFcnJvciYgZXJyb3IpCiB7Ci0gICAgUmVmUHRyPEZ1
bmN0aW9uQm9keU5vZGU+IGJvZHkgPSBwYXJzZTxGdW5jdGlvbkJvZHlOb2RlPigmdm0sIHNvdXJj
ZSwgZXhlY3V0YWJsZS0+cGFyYW1ldGVycygpLCBleGVjdXRhYmxlLT5uYW1lKCksIGV4ZWN1dGFi
bGUtPmlzSW5TdHJpY3RDb250ZXh0KCkgPyBKU1BhcnNlU3RyaWN0IDogSlNQYXJzZU5vcm1hbCwg
SlNQYXJzZUZ1bmN0aW9uQ29kZSwgZXJyb3IpOworICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2Rl
PiBib2R5ID0gcGFyc2U8RnVuY3Rpb25Cb2R5Tm9kZT4oJnZtLCBzb3VyY2UsIGV4ZWN1dGFibGUt
PnBhcmFtZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT50b1N0cmljdG5l
c3MoKSwgSlNQYXJzZUZ1bmN0aW9uQ29kZSwgZXJyb3IpOwogCiAgICAgaWYgKCFib2R5KSB7CiAg
ICAgICAgIEFTU0VSVChlcnJvci5tX3R5cGUgIT0gUGFyc2VyRXJyb3I6OkVycm9yTm9uZSk7CkBA
IC02Myw3ICs2Myw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0
ZUZ1bmN0aW9uQ29kZUJsb2NrKFZNJiB2bSwgVW5saW5rZWRGdW5jCiAgICAgYm9keS0+ZmluaXNo
UGFyc2luZyhleGVjdXRhYmxlLT5wYXJhbWV0ZXJzKCksIGV4ZWN1dGFibGUtPm5hbWUoKSwgZXhl
Y3V0YWJsZS0+ZnVuY3Rpb25OYW1lSXNJblNjb3BlVG9nZ2xlKCkpOwogICAgIGV4ZWN1dGFibGUt
PnJlY29yZFBhcnNlKGJvZHktPmZlYXR1cmVzKCksIGJvZHktPmhhc0NhcHR1cmVkVmFyaWFibGVz
KCkpOwogICAgIAotICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmdm0sIEZ1bmN0aW9uQ29kZSwgRXhlY3V0YWJs
ZUluZm8oYm9keS0+bmVlZHNBY3RpdmF0aW9uKCksIGJvZHktPnVzZXNFdmFsKCksIGJvZHktPmlz
U3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpKTsKKyAgICBVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVh
dGUoJnZtLCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFibGVJbmZvKGJvZHktPm5lZWRzQWN0aXZhdGlv
bigpLCBib2R5LT51c2VzRXZhbCgpLCBib2R5LT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2Rl
Rm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24pKTsK
ICAgICBPd25QdHI8Qnl0ZWNvZGVHZW5lcmF0b3I+IGdlbmVyYXRvcihhZG9wdFB0cihuZXcgQnl0
ZWNvZGVHZW5lcmF0b3Iodm0sIGJvZHkuZ2V0KCksIHJlc3VsdCwgZGVidWdnZXJNb2RlLCBwcm9m
aWxlck1vZGUpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3ItPmdlbmVyYXRlKCk7CiAgICAgYm9k
eS0+ZGVzdHJveURhdGEoKTsKQEAgLTgyLDEzICs4MiwxNCBAQCB1bnNpZ25lZCBVbmxpbmtlZENv
ZGVCbG9jazo6YWRkT3JGaW5kQ29uc3RhbnQoSlNWYWx1ZSB2KQogICAgIHJldHVybiBhZGRDb25z
dGFudCh2KTsKIH0KIAotVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSogbm9kZSwgYm9vbCBpc0Zyb21HbG9iYWxDb2Rl
KQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
RnVuY3Rpb25Cb2R5Tm9kZSogbm9kZSwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlLCBVbmxpbmtlZEZ1
bmN0aW9uS2luZCBraW5kKQogICAgIDogQmFzZSgqdm0sIHN0cnVjdHVyZSkKICAgICAsIG1fbnVt
Q2FwdHVyZWRWYXJpYWJsZXMobm9kZS0+Y2FwdHVyZWRWYXJpYWJsZUNvdW50KCkpCiAgICAgLCBt
X2ZvcmNlVXNlc0FyZ3VtZW50cyhub2RlLT51c2VzQXJndW1lbnRzKCkpCiAgICAgLCBtX2lzSW5T
dHJpY3RDb250ZXh0KG5vZGUtPmlzU3RyaWN0TW9kZSgpKQogICAgICwgbV9oYXNDYXB0dXJlZFZh
cmlhYmxlcyhub2RlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKQogICAgICwgbV9pc0Zyb21HbG9i
YWxDb2RlKGlzRnJvbUdsb2JhbENvZGUpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGtpbmQg
PT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24pCiAgICAgLCBtX25hbWUobm9kZS0+aWRlbnQoKSkK
ICAgICAsIG1faW5mZXJyZWROYW1lKG5vZGUtPmluZmVycmVkTmFtZSgpKQogICAgICwgbV9wYXJh
bWV0ZXJzKG5vZGUtPnBhcmFtZXRlcnMoKSkKQEAgLTE2Niw3ICsxNjcsNyBAQCBVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9y
KFZNJiB2bSwgY29ucwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKHZtLCB0aGlz
LCBzb3VyY2UsIHNwZWNpYWxpemF0aW9uS2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUs
IGVycm9yKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBnZW5lcmF0
ZUZ1bmN0aW9uQ29kZUJsb2NrKHZtLCB0aGlzLCBzb3VyY2UsIHNwZWNpYWxpemF0aW9uS2luZCwg
ZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtl
ZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGVycm9yKTsKICAgICAK
ICAgICBpZiAoZXJyb3IubV90eXBlICE9IFBhcnNlckVycm9yOjpFcnJvck5vbmUpCiAgICAgICAg
IHJldHVybiAwOwpAQCAtMjEwLDYgKzIxMSw3IEBAIFVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtl
ZENvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb2RlVHlwZSBjb2RlCiAg
ICAgLCBtX2lzU3RyaWN0TW9kZShpbmZvLm1faXNTdHJpY3RNb2RlKQogICAgICwgbV9pc0NvbnN0
cnVjdG9yKGluZm8ubV9pc0NvbnN0cnVjdG9yKQogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxl
cyhmYWxzZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaW5mby5tX2lzQnVpbHRpbkZ1bmN0
aW9uKQogICAgICwgbV9maXJzdExpbmUoMCkKICAgICAsIG1fbGluZUNvdW50KDApCiAgICAgLCBt
X2VuZENvbHVtbihVSU5UX01BWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggYjlkYWUyZDVjNjljNzljZWFhYTgwMjNkMmEz
YTFmMjZkNDYwOTQzYi4uYWJmNmNmMzViOTMwNmE0ZjdhMzAxYWIwZGY3NjY2ZWM2MTJlMzc5YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmgKQEAgLTY2LDI2ICs2NiwzNSBAQCB0eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkT2JqZWN0
QWxsb2NhdGlvblByb2ZpbGU7CiB0eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkTExJbnRDYWxsTGlu
a0luZm87CiAKIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7Ci0gICAgRXhlY3V0YWJsZUluZm8oYm9v
bCBuZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJpY3RNb2RlLCBib29s
IGlzQ29uc3RydWN0b3IpCisgICAgRXhlY3V0YWJsZUluZm8oYm9vbCBuZWVkc0FjdGl2YXRpb24s
IGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJpY3RNb2RlLCBib29sIGlzQ29uc3RydWN0b3IsIGJv
b2wgaXNCdWlsdGluRnVuY3Rpb24pCiAgICAgICAgIDogbV9uZWVkc0FjdGl2YXRpb24obmVlZHNB
Y3RpdmF0aW9uKQogICAgICAgICAsIG1fdXNlc0V2YWwodXNlc0V2YWwpCiAgICAgICAgICwgbV9p
c1N0cmljdE1vZGUoaXNTdHJpY3RNb2RlKQogICAgICAgICAsIG1faXNDb25zdHJ1Y3Rvcihpc0Nv
bnN0cnVjdG9yKQorICAgICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaXNCdWlsdGluRnVuY3Rp
b24pCiAgICAgewogICAgIH0KLSAgICBib29sIG1fbmVlZHNBY3RpdmF0aW9uOwotICAgIGJvb2wg
bV91c2VzRXZhbDsKLSAgICBib29sIG1faXNTdHJpY3RNb2RlOwotICAgIGJvb2wgbV9pc0NvbnN0
cnVjdG9yOworICAgIGJvb2wgbV9uZWVkc0FjdGl2YXRpb24gOiAxOworICAgIGJvb2wgbV91c2Vz
RXZhbCA6IDE7CisgICAgYm9vbCBtX2lzU3RyaWN0TW9kZSA6IDE7CisgICAgYm9vbCBtX2lzQ29u
c3RydWN0b3IgOiAxOworICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7Cit9OworCitl
bnVtIFVubGlua2VkRnVuY3Rpb25LaW5kIHsKKyAgICBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLAor
ICAgIFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLAogfTsKIAogY2xhc3MgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUgOiBwdWJsaWMgSlNDZWxsIHsKIHB1YmxpYzoKKyAgICBmcmllbmQgY2xhc3Mg
QnVpbHRpbkV4ZWN1dGFibGVzOwogICAgIGZyaWVuZCBjbGFzcyBDb2RlQ2FjaGU7CisgICAgZnJp
ZW5kIGNsYXNzIFZNOwogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7Ci0gICAgc3RhdGljIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSA9IGZh
bHNlKQorICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNKiB2
bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlLCBib29s
IGlzRnJvbUdsb2JhbENvZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25L
aW5kKQogICAgIHsKLSAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGluc3RhbmNl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+
KHZtLT5oZWFwKSkgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZtLT51bmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgc291cmNlLCBub2RlLCBpc0Zyb21HbG9i
YWxDb2RlKTsKKyAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGluc3RhbmNlID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHZt
LT5oZWFwKSkgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZtLT51bmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgc291cmNlLCBub2RlLCBpc0Zyb21HbG9iYWxD
b2RlLCB1bmxpbmtlZEZ1bmN0aW9uS2luZCk7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVh
dGlvbigqdm0pOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpAQCAtOTksNiArMTA4
LDE0IEBAIHB1YmxpYzoKICAgICB9CiAgICAgc2l6ZV90IHBhcmFtZXRlckNvdW50KCkgY29uc3Q7
CiAgICAgYm9vbCBpc0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblN0cmlj
dENvbnRleHQ7IH0KKyAgICBKU1BhcnNlclN0cmljdG5lc3MgdG9TdHJpY3RuZXNzKCkgY29uc3QK
KyAgICB7CisgICAgICAgIGlmIChtX2lzQnVpbHRpbkZ1bmN0aW9uKQorICAgICAgICAgICAgcmV0
dXJuIEpTUGFyc2VCdWlsdGluOworICAgICAgICBpZiAobV9pc0luU3RyaWN0Q29udGV4dCkKKyAg
ICAgICAgICAgIHJldHVybiBKU1BhcnNlU3RyaWN0OworICAgICAgICByZXR1cm4gSlNQYXJzZU5v
cm1hbDsKKyAgICB9CiAgICAgRnVuY3Rpb25OYW1lSXNJblNjb3BlVG9nZ2xlIGZ1bmN0aW9uTmFt
ZUlzSW5TY29wZVRvZ2dsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25OYW1lSXNJblNjb3Bl
VG9nZ2xlOyB9CiAKICAgICB1bnNpZ25lZCBmaXJzdExpbmVPZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX2ZpcnN0TGluZU9mZnNldDsgfQpAQCAtMTQyLDggKzE1OSwxMCBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIGNvbnN0IGJvb2wgaGFzSW1tb3J0YWxTdHJ1Y3R1cmUgPSB0cnVlOwogICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKKyAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQorCiBwcml2YXRlOgotICAgIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29k
ZSYsIEZ1bmN0aW9uQm9keU5vZGUqLCBib29sIGlzRnJvbUdsb2JhbENvZGUpOworICAgIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYs
IEZ1bmN0aW9uQm9keU5vZGUqLCBib29sIGlzRnJvbUdsb2JhbENvZGUsIFVubGlua2VkRnVuY3Rp
b25LaW5kKTsKICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV9j
b2RlQmxvY2tGb3JDYWxsOwogICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrPiBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdDsKIApAQCAtMTUyLDYgKzE3MSw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2lzSW5TdHJpY3RDb250ZXh0IDogMTsKICAgICBib29sIG1faGFzQ2Fw
dHVyZWRWYXJpYWJsZXMgOiAxOwogICAgIGJvb2wgbV9pc0Zyb21HbG9iYWxDb2RlIDogMTsKKyAg
ICBib29sIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogCiAgICAgSWRlbnRpZmllciBtX25hbWU7
CiAgICAgSWRlbnRpZmllciBtX2luZmVycmVkTmFtZTsKQEAgLTMxOSw2ICszMzksOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRJc051bWVyaWNDb21wYXJlRnVuY3Rpb24oYm9vbCBpc051bWVyaWND
b21wYXJlRnVuY3Rpb24pIHsgbV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb24gPSBpc051bWVyaWND
b21wYXJlRnVuY3Rpb247IH0KICAgICBib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CiAKKyAgICBib29sIGlz
QnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQor
ICAgIAogICAgIHZvaWQgc2hyaW5rVG9GaXQoKQogICAgIHsKICAgICAgICAgbV9qdW1wVGFyZ2V0
cy5zaHJpbmtUb0ZpdCgpOwpAQCAtNTAwLDYgKzUyMiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2lzU3RyaWN0TW9kZSA6IDE7CiAgICAgYm9vbCBtX2lzQ29uc3RydWN0b3IgOiAxOwogICAgIGJv
b2wgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CisgICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0
aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2ZpcnN0TGluZTsKICAgICB1bnNpZ25lZCBtX2xpbmVD
b3VudDsKICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNjgx
MGFiODAwMmNlNmJiOGQ3OGU3ZmYyMjI3ZjRjNmVhN2I3NThjMi4uZWM1MjFiNTMwNDYzOTIzZTc0
YzAxMGZhMjE4ZTU5ZWQyYTlhM2NhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTE3NSw2ICsxNzUs
NyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9ncmFt
Tm9kZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUAogI2VuZGlmCiAgICAgLCBtX3VzZXNFeGNlcHRp
b25zKGZhbHNlKQogICAgICwgbV9leHByZXNzaW9uVG9vRGVlcChmYWxzZSkKKyAgICAsIG1faXNC
dWlsdGluRnVuY3Rpb24oZmFsc2UpCiB7CiAgICAgaWYgKG1fc2hvdWxkRW1pdERlYnVnSG9va3Mp
CiAgICAgICAgIG1fY29kZUJsb2NrLT5zZXROZWVkc0Z1bGxTY29wZUNoYWluKHRydWUpOwpAQCAt
MjIyLDcgKzIyMywxMyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0m
IHZtLCBGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbkJvZHksIFVubAogI2VuZGlmCiAgICAgLCBt
X3VzZXNFeGNlcHRpb25zKGZhbHNlKQogICAgICwgbV9leHByZXNzaW9uVG9vRGVlcChmYWxzZSkK
KyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oY29kZUJsb2NrLT5pc0J1aWx0aW5GdW5jdGlvbigp
KQogeworICAgIGlmIChtX2lzQnVpbHRpbkZ1bmN0aW9uKSB7CisgICAgICAgIG1fc2hvdWxkRW1p
dFByb2ZpbGVIb29rcyA9IGZhbHNlOworICAgICAgICBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzID0g
ZmFsc2U7CisgICAgfQorCiAgICAgaWYgKG1fc2hvdWxkRW1pdERlYnVnSG9va3MpCiAgICAgICAg
IG1fY29kZUJsb2NrLT5zZXROZWVkc0Z1bGxTY29wZUNoYWluKHRydWUpOwogCkBAIC00MzgsNiAr
NDQ1LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZh
bE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2QKICNlbmRpZgogICAgICwgbV91c2VzRXhj
ZXB0aW9ucyhmYWxzZSkKICAgICAsIG1fZXhwcmVzc2lvblRvb0RlZXAoZmFsc2UpCisgICAgLCBt
X2lzQnVpbHRpbkZ1bmN0aW9uKGZhbHNlKQogewogICAgIG1fY29kZUJsb2NrLT5zZXROZWVkc0Z1
bGxTY29wZUNoYWluKHRydWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggNGU5ZjIxM2M5YmZhNmNmMTk0
YjFhMTRmZTkxOWU4MzMzN2FlMzVkOS4uMTU4NDI3NGI3OGVhNmMwYmQwZWZiMGI5ODI1YzgxOGJl
MGRiYzA2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNDYxLDcgKzQ2MSw5IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBib29sIHNob3VsZEVtaXREZWJ1Z0hvb2tzKCkgeyByZXR1cm4gbV9zaG91bGRF
bWl0RGVidWdIb29rczsgfQogICAgICAgICAKICAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBj
b25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7IH0KLQorICAgICAgICAK
KyAgICAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWls
dGluRnVuY3Rpb247IH0KKyAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNs
YXNzIExhYmVsOwogICAgICAgICAKQEAgLTU0Myw3ICs1NDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgCiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBtYWtlRnVuY3Rp
b24oRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNv
dXJjZSgpLCBib2R5KTsKKyAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgYm9keSwgZmFsc2UsIGlz
QnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9y
bWFsRnVuY3Rpb24pOwogICAgICAgICB9CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEluaXRM
YXp5UmVnaXN0ZXIoUmVnaXN0ZXJJRCopOwpAQCAtNjc3LDYgKzY3OSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIGJvb2wgbV91c2VzRXhjZXB0aW9uczsKICAgICAgICAgYm9vbCBtX2V4
cHJlc3Npb25Ub29EZWVwOworICAgICAgICBib29sIG1faXNCdWlsdGluRnVuY3Rpb247CiAgICAg
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCmluZGV4IDFmZmQ0ZjMxMTg4MmQwZWU1YzU1MTRmNWI4YjI1OTM5ZDk3NWUz
NzkuLjYyZWNhMzZhMTBkNzcwOGE5MjhkNDNhYzAzZjJmYzg2MTVjZWNhNzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAg
LTI2LDEwICsyNiwxMCBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTm9kZXMu
aCIKLSNpbmNsdWRlICJOb2RlQ29uc3RydWN0b3JzLmgiCiAKICNpbmNsdWRlICJCeXRlY29kZUdl
bmVyYXRvci5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50
aWZpZXJzLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSlNPTk9iamVj
dC5oIgogI2luY2x1ZGUgIkxhYmVsU2NvcGUuaCIKICNpbmNsdWRlICJMZXhlci5oIgorI2luY2x1
ZGUgIk5vZGVDb25zdHJ1Y3RvcnMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVk
ZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKQEAgLTUzNSwzNiAr
NTM2LDM5IEBAIFJlZ2lzdGVySUQqIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICBSZWZQdHI8TGFiZWw+IGVuZCA9
IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2Vu
ZXJhdG9yLmVtaXROb2RlKG1fYmFzZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5m
byhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Np
b25FbmQoKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVt
aXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgbV9p
ZGVudCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRH
ZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgZ2VuZXJh
dG9yLnByb3BlcnR5TmFtZXMoKS5jYWxsKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJu
VmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGZ1bmN0aW9uLmdldCgpKTsK
LSAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQ2FsbChmdW5jdGlvbi5nZXQoKSwg
cmVhbENhbGwuZ2V0KCkpOworICAgIGJvb2wgZW1pdENhbGxDaGVjayA9ICFnZW5lcmF0b3IuaXNC
dWlsdGluRnVuY3Rpb24oKTsKKyAgICBpZiAoZW1pdENhbGxDaGVjaykKKyAgICAgICAgZ2VuZXJh
dG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkNhbGwoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdl
dCgpKTsKKwogICAgIHsKICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3Mt
Pm1fbGlzdE5vZGUtPm1fZXhwcikgewogICAgICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogb2xk
TGlzdCA9IG1fYXJncy0+bV9saXN0Tm9kZTsKICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9k
ZSA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwotCisgICAgICAgICAgICAKICAgICAgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUo
Z2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKICAgICAgICAgICAg
IENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgb2xk
TGlzdC0+bV9leHByKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1
ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1
bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKLQogICAgICAgICAgICAgbV9hcmdzLT5tX2xp
c3ROb2RlID0gb2xkTGlzdDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRl
bXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKICAgICAgICAgICAgIENhbGxBcmd1bWVu
dHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7
CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxG
dW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgp
LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRK
dW1wKGVuZC5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJl
bChyZWFsQ2FsbC5nZXQoKSk7Ci0gICAgewotICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1
bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUoY2Fs
bEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgIGdlbmVyYXRv
ci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRG
dW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKKyAgICBpZiAoZW1pdENhbGxDaGVjaykgeworICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAo
ZW5kLmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChyZWFsQ2FsbC5nZXQoKSk7
CisgICAgICAgIHsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5l
cmF0b3IsIG1fYXJncyk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUoY2FsbEFyZ3Vt
ZW50cy50aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVu
Y3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
CisgICAgICAgIH0KKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0KCkpOwogICAg
IH0KLSAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAgcmV0dXJuIHJldHVy
blZhbHVlLmdldCgpOwogfQogCkBAIC01ODUsNjUgKzU4OSw2NyBAQCBSZWdpc3RlcklEKiBBcHBs
eUZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLAogICAgIFJlZlB0cjxMYWJlbD4gZW5kID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9iYXNlKTsK
ICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBz
dWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBE
ZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBtX2lkZW50KTsKKyAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gZnVuY3Rpb247CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2Vu
ZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBmdW5jdGlvbi5nZXQoKSk7Ci0gICAgZ2VuZXJh
dG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KGZ1bmN0aW9uLmdldCgpLCByZWFsQ2FsbC5n
ZXQoKSk7Ci0gICAgewotICAgICAgICBpZiAobWF5QmVDYWxsKSB7Ci0gICAgICAgICAgICBpZiAo
bV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKSB7Ci0gICAg
ICAgICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogb2xkTGlzdCA9IG1fYXJncy0+bV9saXN0Tm9k
ZTsKLSAgICAgICAgICAgICAgICBpZiAobV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQpIHsKLSAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4
cHItPmlzU2ltcGxlQXJyYXkoKSk7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCghbV9hcmdz
LT5tX2xpc3ROb2RlLT5tX25leHQtPm1fbmV4dCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fYXJn
cy0+bV9saXN0Tm9kZSA9IHN0YXRpY19jYXN0PEFycmF5Tm9kZSo+KG1fYXJncy0+bV9saXN0Tm9k
ZS0+bV9uZXh0LT5tX2V4cHIpLT50b0FyZ3VtZW50TGlzdChnZW5lcmF0b3Iudm0oKSwgMCwgMCk7
Ci0gICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBn
ZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdl
dCgpKTsKLSAgICAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdl
bmVyYXRvciwgbV9hcmdzKTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2Rl
KGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG9sZExpc3QtPm1fZXhwcik7Ci0gICAgICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1
bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCks
IGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gbV9hcmdzLT5tX2xpc3ROb2Rl
LT5tX25leHQ7Ci0gICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVu
Y3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3Qp
LCBiYXNlLmdldCgpKTsKLSAgICAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJn
dW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG9sZExpc3QtPm1fZXhwcik7
Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQo
KSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMs
IGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9sZExpc3Q7CisgICAgYm9vbCBl
bWl0Q2FsbENoZWNrID0gIWdlbmVyYXRvci5pc0J1aWx0aW5GdW5jdGlvbigpOworICAgIGlmIChl
bWl0Q2FsbENoZWNrKSB7CisgICAgICAgIGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlk
KGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgZ2VuZXJhdG9yLnBy
b3BlcnR5TmFtZXMoKS5hcHBseSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVu
Y3Rpb25BcHBseShmdW5jdGlvbi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkpOworICAgIH0KKyAgICBp
ZiAobWF5QmVDYWxsKSB7CisgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdz
LT5tX2xpc3ROb2RlLT5tX2V4cHIpIHsKKyAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIG9s
ZExpc3QgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CisgICAgICAgICAgICBpZiAobV9hcmdzLT5tX2xp
c3ROb2RlLT5tX25leHQpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQobV9hcmdzLT5tX2xpc3RO
b2RlLT5tX25leHQtPm1fZXhwci0+aXNTaW1wbGVBcnJheSgpKTsKKyAgICAgICAgICAgICAgICBB
U1NFUlQoIW1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX25leHQpOworICAgICAgICAgICAg
ICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IHN0YXRpY19jYXN0PEFycmF5Tm9kZSo+KG1fYXJncy0+
bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHIpLT50b0FyZ3VtZW50TGlzdChnZW5lcmF0b3Iudm0o
KSwgMCwgMCk7CisgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlv
biA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJh
c2UuZ2V0KCkpOworICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhn
ZW5lcmF0b3IsIG1fYXJncyk7CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNh
bGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG9sZExpc3QtPm1fZXhwcik7CisgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24u
Z2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQ7CiAgICAg
ICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5l
bWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwogICAg
ICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJn
cyk7Ci0gICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhp
c1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwog
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVh
bEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90
KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICB9CisgICAgICAgICAg
ICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBvbGRMaXN0OwogICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1f
bmV4dCk7Ci0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvZmlsZUhvb2tSZWdpc3Rl
cjsKLSAgICAgICAgICAgIGlmIChnZW5lcmF0b3Iuc2hvdWxkRW1pdFByb2ZpbGVIb29rcygpKQot
ICAgICAgICAgICAgICAgIHByb2ZpbGVIb29rUmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCk7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2Vu
ZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQo
KSk7Ci0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1JlZ2lzdGVyID0gZ2VuZXJh
dG9yLmVtaXROb2RlKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKTsKLSAgICAgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBhcmdzUmVnaXN0ZXI7Ci0gICAgICAgICAgICBBcmd1bWVudExpc3RO
b2RlKiBhcmdzID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQ7Ci0gICAgICAgICAgICBpZiAo
YXJncy0+bV9leHByLT5pc1Jlc29sdmVOb2RlKCkgJiYgZ2VuZXJhdG9yLndpbGxSZXNvbHZlVG9B
cmd1bWVudHMoc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihhcmdzLT5tX2V4cHIpLT5pZGVudGlm
aWVyKCkpKQotICAgICAgICAgICAgICAgIGFyZ3NSZWdpc3RlciA9IGdlbmVyYXRvci51bmNoZWNr
ZWRSZWdpc3RlckZvckFyZ3VtZW50cygpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIGFyZ3NSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShhcmdzLT5tX2V4cHIpOwotCi0g
ICAgICAgICAgICAvLyBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkgaWdub3JlcyBleHRyYSBhcmd1
bWVudHMsIGJ1dCB3ZSBzdGlsbAotICAgICAgICAgICAgLy8gbmVlZCB0byBldmFsdWF0ZSB0aGVt
IGZvciBzaWRlIGVmZmVjdHMuCi0gICAgICAgICAgICB3aGlsZSAoKGFyZ3MgPSBhcmdzLT5tX25l
eHQpKQotICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShhcmdzLT5tX2V4cHIpOwot
Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxWYXJhcmdzKHJldHVyblZhbHVlLmdldCgp
LCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJnc1JlZ2lzdGVyLmdl
dCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb2ZpbGVIb29rUmVnaXN0ZXIuZ2V0KCks
IGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgICAgICBDYWxsQXJn
dW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVk
KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBy
ZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgfQotICAgICAgICBnZW5l
cmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQo
bV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KTsKKyAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb2ZpbGVIb29rUmVnaXN0ZXI7CisgICAgICAgIGlmIChn
ZW5lcmF0b3Iuc2hvdWxkRW1pdFByb2ZpbGVIb29rcygpKQorICAgICAgICAgICAgcHJvZmlsZUhv
b2tSZWdpc3RlciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVt
cERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gdGhpc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYXJncy0+bV9saXN0Tm9kZS0+
bV9leHByKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFyZ3NSZWdpc3RlcjsKKyAgICAg
ICAgQXJndW1lbnRMaXN0Tm9kZSogYXJncyA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0Owor
ICAgICAgICBpZiAoYXJncy0+bV9leHByLT5pc1Jlc29sdmVOb2RlKCkgJiYgZ2VuZXJhdG9yLndp
bGxSZXNvbHZlVG9Bcmd1bWVudHMoc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihhcmdzLT5tX2V4
cHIpLT5pZGVudGlmaWVyKCkpKQorICAgICAgICAgICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJhdG9y
LnVuY2hlY2tlZFJlZ2lzdGVyRm9yQXJndW1lbnRzKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGFyZ3NSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShhcmdzLT5tX2V4cHIpOworCisg
ICAgICAgIC8vIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseSBpZ25vcmVzIGV4dHJhIGFyZ3VtZW50
cywgYnV0IHdlIHN0aWxsCisgICAgICAgIC8vIG5lZWQgdG8gZXZhbHVhdGUgdGhlbSBmb3Igc2lk
ZSBlZmZlY3RzLgorICAgICAgICB3aGlsZSAoKGFyZ3MgPSBhcmdzLT5tX25leHQpKQorICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7CisKKyAgICAgICAgZ2VuZXJh
dG9yLmVtaXRDYWxsVmFyYXJncyhyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgp
LCB0aGlzUmVnaXN0ZXIuZ2V0KCksIGFyZ3NSZWdpc3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpLCBwcm9maWxlSG9va1JlZ2lzdGVyLmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwogICAgIH0KLSAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHJlYWxDYWxs
LmdldCgpKTsKLSAgICB7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKKyAgICAgICAgZ2VuZXJh
dG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVh
bENhbGwuZ2V0KCkpOwogICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJh
dG9yLCBtX2FyZ3MpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUoY2FsbEFyZ3VtZW50cy50
aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChy
ZXR1cm5WYWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2Fs
bEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0KCkpOwogICAgIH0KLSAgICBnZW5lcmF0b3IuZW1p
dExhYmVsKGVuZC5nZXQoKSk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlLmdldCgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUKaW5kZXggMzk3OTc2YjA2YzdhOWI1
ODM2MzMyOTAwYTZlYmI5M2VjNjhiNzQ4Ni4uY2FkNjViYzRjYzg4OGUzMTRmODhkNjY1ZGQ0YTZl
NjQ1YTA5YTM1NSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNo
X3RhYmxlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZQpAQCAt
Mjg5LDcgKzI4OSwxNyBAQCBzdWIgb3V0cHV0KCkgewogICAgICAgICAgICAgJGludHJpbnNpYyA9
ICJSZWdFeHBUZXN0SW50cmluc2ljIiBpZiAoJGtleSBlcSAidGVzdCIpOwogICAgICAgICB9CiAK
KyAgICAgICAgaWYgKCR2YWx1ZXNbJGldeyJ0eXBlIn0gZXEgIkZ1bmN0aW9uIikgIHsKKyAgICAg
ICAgICAgIG15ICR0YWJsZUhlYWQgPSAkbmFtZTsKKyAgICAgICAgICAgICR0YWJsZUhlYWQgPX4g
cy9UYWJsZSQvLzsKKyAgICAgICAgICAgIHByaW50ICIgI2lmIEpTQ19CVUlMVElOX0VYSVNUUygi
IC4gdWMoJHRhYmxlSGVhZCAuICRrZXkpIC4iKVxuIjsKKyAgICAgICAgICAgIHByaW50ICIgICB7
IFwiJGtleVwiLCAoKCRhdHRyc1skaV0pICYgfkZ1bmN0aW9uKSB8IEJ1aWx0aW4sICRpbnRyaW5z
aWMsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxCdWlsdGluR2VuZXJhdG9yPigiIC4gJHRhYmxlSGVh
ZCAuIHVjZmlyc3QoJGtleSkgLiAiQ29kZUdlbmVyYXRvciksIChpbnRwdHJfdCkkc2Vjb25kVmFs
dWUgfSxcbiI7CisgICAgICAgICAgICBwcmludCAiICNlbHNlXG4iCisgICAgICAgIH0KICAgICAg
ICAgcHJpbnQgIiAgIHsgXCIka2V5XCIsICRhdHRyc1skaV0sICRpbnRyaW5zaWMsIChpbnRwdHJf
dCkiIC4gJGZpcnN0Q2FzdFN0ciAuICIoJGZpcnN0VmFsdWUpLCAoaW50cHRyX3QpIiAuICRzZWNv
bmRDYXN0U3RyIC4gIigkc2Vjb25kVmFsdWUpIH0sXG4iOworICAgICAgICBpZiAoJHZhbHVlc1sk
aV17InR5cGUifSBlcSAiRnVuY3Rpb24iKSAgeworICAgICAgICAgICAgcHJpbnQgIiAjZW5kaWZc
biIKKyAgICAgICAgfQogICAgICAgICAkaSsrOwogICAgIH0KICAgICBwcmludCAiICAgeyAwLCAw
LCBOb0ludHJpbnNpYywgMCwgMCB9XG4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlci5jcHAKaW5kZXggYWZhNzU0NmM4MDY1YjhmM2IxNzBkZjgxYTMzNzJhOGYwNjlh
ZGI0MS4uM2ExYWIzZWQ3NjdjMWJjZDNkODQzNTBlMWUzMDk2YWNmNWFhNzgzZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCkBAIC0yOSw3ICsyOSw3IEBA
CiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIu
aCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgotI2luY2x1ZGUgIkpTRnVuY3Rpb24u
aCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdmFpbGFiaWxpdHkuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdmFpbGFiaWxpdHkuY3BwCmluZGV4IDY2OWMy
YjQzOTI0NmIwN2RkYjU3ZDExNzg4MzAyOWE4OGQzYTRhZmYuLmQwYmNlZDFjZmJkMjM3NDY3OTM3
ZWUxYjY3ZjkzMmE2NjM3NGY4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXZhaWxhYmlsaXR5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0F2YWlsYWJpbGl0eS5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJERkdBdmFpbGFiaWxpdHkuaCIKIAorI2luY2x1ZGUgIkpTRnVuY3Rpb25Jbmxp
bmVzLmgiCisKICNpZiBFTkFCTEUoREZHX0pJVCkKIAogI2luY2x1ZGUgIkRGR05vZGUuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmxvY2tJbnNlcnRpb25TZXQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCbG9ja0luc2VydGlvblNldC5jcHAK
aW5kZXggMjUyZDYzOGVlMTJkMGQyMjQ3M2U3N2U1NGRlNzQ4NzVjZjFhZWJlOS4uMjVkZWE1NDkw
OWM2MjAzMzdhYzgwNzQ4NGI5YWFiZGE5Nzc1YWYzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCbG9ja0luc2VydGlvblNldC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCbG9ja0luc2VydGlvblNldC5jcHAKQEAgLTI2LDYgKzI2LDggQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJERkdCbG9ja0luc2VydGlvblNldC5oIgog
CisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKKwogI2lmIEVOQUJMRShERkdfSklUKQog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDU4ZjM2OTE2NTBkZmM2NGQ0Y2U3
NTZiMDI1NmJjOWQxNWZlOTY2NmMuLmJhNDI5N2RiNDEzNDU5MmY2OGM3YzIwYzFmZmMzZGU0YTE5
ZWY4ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiREZHSklUQ29kZS5oIgogI2luY2x1
ZGUgIkdldEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKKyNpbmNsdWRl
ICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRl
ICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCmluZGV4IGQzYmZjNTBiZGU4ZDZk
Nzg0NjhkZmQwN2RlMzZiOWVmYWE1ZGIxYjcuLmJhYzk2Yjc2NWFjNjg2MTdjMTMyOTM1ZmNlZjBi
NjIxNzdmY2Y1MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NF
UGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3Bw
CkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdQ
aGFzZS5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9u
SW5saW5lcy5oIgogI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9y
Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApp
bmRleCBkMWJlYjkzMTI0NThiNTI5Yjg4OGIxYzE5ZWZlNWNjYmM2YjE0YmZiLi4yYzk2MTllNzg1
NTNlN2Q4MDNmMGFjNDI5MTM5ZGJmZGUxODIwZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAi
Q29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0
ZXIuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ29tbW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmNwcApp
bmRleCBhZGIwOGI1OTVlZDQxZDM0NjhmMmViMWQ4OWI4MDBmNzEwYjAzNGEzLi44NzM4YzVjZGZj
Y2NmZGM3YzlmMjY5MjI2MjFhYTUzN2Y5OTdiMTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbW1vbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb21tb24uY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKERGR19KSVQpCiAK
ICNpbmNsdWRlICJERkdOb2RlLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKIAog
bmFtZXNwYWNlIFdURiB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ29tcGlsYXRpb25LZXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21w
aWxhdGlvbktleS5jcHAKaW5kZXggZDMxYWM5ZTJkNThhZDVmZDI2YzljMjdkNTZkNWQyODQ4NGQ1
ZGNmOC4uMDlmNWUwY2FiYTVhMjliYzI3NjIyOGU5MTZiOGY4NTNkMmU4YzA2MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21waWxhdGlvbktleS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21waWxhdGlvbktleS5jcHAKQEAgLTI3LDYg
KzI3LDcgQEAKICNpbmNsdWRlICJERkdDb21waWxhdGlvbktleS5oIgogCiAjaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKIAogI2lmIEVOQUJMRShE
RkdfSklUKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2ly
ZWRJZGVudGlmaWVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRJ
ZGVudGlmaWVycy5jcHAKaW5kZXggZjY1ODdmNDdmMDQ5MWRlNTg0NjdjNDczNjRlNjUxZTdmYzY0
NzY0OC4uZjEwMTNhM2E4MTk1MzZjMzdjZWI4YWI4ZDY0NzMwMGY1Mjg2NDkxZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZElkZW50aWZpZXJzLmNwcApA
QCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Rlc2lyZWRUcmFuc2l0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Rlc2lyZWRUcmFuc2l0aW9ucy5jcHAKaW5kZXggMGNmYTAwZjZmOWRkZDg1NThiMDE5NmZlNzAy
NTIxNzEyY2VhODMxZC4uNjY3YzNiNzZmZjYyZDc0MDk3ZGFiZDIzYjllMWYwNjE1N2IyYTViMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkVHJhbnNpdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZFRyYW5zaXRp
b25zLmNwcApAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5j
bHVkZSAiREZHQ29tbW9uRGF0YS5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmNwcAppbmRleCA5YzE1ODY5OGU5NTNhMjYwYzc4NzAzN2EyNmE1MzIzYWIwYjNh
MTg4Li5iMmVlYWYzNjgzYmFhYzE5MzVkYTcxZjI2ZDkyNTQ1Y2RhZTBmMDk2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUg
IkZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJK
U0FjdGl2YXRpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUg
Ik1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiT3BlcmFuZHNJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdJbnZhbGlkYXRpb25Qb2ludEluamVjdGlvblBoYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW52YWxpZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFz
ZS5jcHAKaW5kZXggZDcxYTdjYmRhYjc3NjIwMzMzYWQxN2VhYmQ3YmQwN2NlOWZiZTUyOC4uYjU2
NThjZTI2ZTQyZGMxMTdlYTJmNjdlMzFmMWIxNTYwYTUyYzVlYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnZhbGlkYXRpb25Qb2ludEluamVjdGlvblBoYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludmFsaWRhdGlvblBvaW50SW5q
ZWN0aW9uUGhhc2UuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiREZHR3JhcGguaCIK
ICNpbmNsdWRlICJERkdJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJERkdQaGFzZS5oIgorI2lu
Y2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCiBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAyZmYwYzM0MTQ2ZTJjMGJhMmZmNzZjNGQzZjdjNDZi
YTNlMjU1MTQ3Li45MDQ0Y2RjNmI4YzNhZDRhMWU5NDE4OGRkMWQwZTIwMGU2OWZiOTlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTQ4LDYgKzQ4
LDcgQEAKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJWTS5oIgogI2luY2x1
ZGUgIkpTTmFtZVNjb3BlLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiTmFtZUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNs
dWRlICJPcGVyYXRpb25zLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2Vu
ZXJhdGUtanMtYnVpbHRpbnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtanMtYnVp
bHRpbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMmY0YjZkNDk5ZjAyNWMwNTNiMmY5N2I2ZjEwMGU4NTUwNDZmM2U1
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1qcy1i
dWlsdGlucwpAQCAtMCwwICsxLDMwNCBAQAorIyEvdXNyL2Jpbi9weXRob24KKyMgQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorIyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyMgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorIyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK2ltcG9ydCBmaWxlY21wCitpbXBvcnQgZm5tYXRjaAoraW1wb3J0IG9zCitpbXBvcnQgcmUK
K2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzeXMKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IGpzb24K
KworY29weXJpZ2h0VGV4dCA9ICIiIiAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovXG4KKyIiIgorCitnZW5lcmF0b3JTdHJpbmcgPSAiLyogR2VuZXJhdGVkIGJ5ICVzIGRv
IG5vdCBoYW5kIGVkaXQuICovXG4iICUgb3MucGF0aC5iYXNlbmFtZShfX2ZpbGVfXykKKworZnVu
Y3Rpb25IZWFkUmVnRXhwID0gcmUuY29tcGlsZShyImZ1bmN0aW9uXHMrXHcrXHMqXCguKj9cKSIs
IHJlLk1VTFRJTElORSB8IHJlLlMpCitmdW5jdGlvbk5hbWVSZWdFeHAgPSByZS5jb21waWxlKHIi
ZnVuY3Rpb25ccysoXHcrKVxzKlwoIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK2Z1bmN0aW9uUGFy
YW1ldGVyRmluZGVyID0gcmUuY29tcGlsZShyIl5mdW5jdGlvblxzKyg/Olx3KylccypcKCgoPzpc
cypcdyspP1xzKig/OlxzKixccypcdyspKik/XCkiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorCitt
dWx0aWxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwvXCouKj9cKlwvIiwgcmUuTVVM
VElMSU5FIHwgcmUuUykKK3NpbmdsZUxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwv
XC8uKj9cbiIsIHJlLk1VTFRJTElORSB8IHJlLlMpCisKK2RlZiBnZXRDb3B5cmlnaHQoc291cmNl
KToKKyAgICBjb3B5cmlnaHRCbG9jayA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAuZmluZGFsbChz
b3VyY2UpWzBdCisgICAgY29weXJpZ2h0QmxvY2sgPSBjb3B5cmlnaHRCbG9ja1s6Y29weXJpZ2h0
QmxvY2suaW5kZXgoIlJlZGlzdHJpYnV0aW9uIildCisgICAgY29weVJpZ2h0TGluZXMgPSBbXQor
CisgICAgZm9yIGxpbmUgaW4gY29weXJpZ2h0QmxvY2suc3BsaXQoIlxuIik6CisgICAgICAgIGxp
bmUgPSBsaW5lLnJlcGxhY2UoIi8qIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2Uo
IiovIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIioiLCAiIikKKyAgICAgICAg
bGluZSA9IGxpbmUucmVwbGFjZSgiQ29weXJpZ2h0IiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5l
LnJlcGxhY2UoImNvcHlyaWdodCIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIo
QykiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKGMpIiwgIiIpCisgICAgICAg
IGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgaWYgbGVuKGxpbmUpID09IDA6CisgICAgICAg
ICAgICBjb250aW51ZQorCisgICAgICAgIGNvcHlSaWdodExpbmVzLmFwcGVuZChsaW5lKQorICAg
IAorICAgIHJldHVybiBsaXN0KHNldChjb3B5UmlnaHRMaW5lcykpCisKKworCitkZWYgZ2V0RnVu
Y3Rpb25zKHNvdXJjZSk6CisKKyAgICBzb3VyY2UgPSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLnN1
YigiLyoqLyIsIHNpbmdsZUxpbmVDb21tZW50UmVnRXhwLnN1YigiLy9cbiIsIHNvdXJjZSkpCisK
KyAgICBtYXRjaGVzID0gWyBmIGZvciBmIGluIGZ1bmN0aW9uSGVhZFJlZ0V4cC5maW5kaXRlcihz
b3VyY2UpXQorICAgIGZ1bmN0aW9uQm91bmRzID0gW10KKyAgICBzdGFydCA9IDAKKyAgICBlbmQg
PSAwCisgICAgZm9yIG1hdGNoIGluIG1hdGNoZXM6CisgICAgICAgIHN0YXJ0ID0gbWF0Y2guc3Rh
cnQoKQorICAgICAgICBpZiBzdGFydCA8IGVuZDoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAg
ICAgIGVuZCA9IG1hdGNoLmVuZCgpCisgICAgICAgIHdoaWxlIHNvdXJjZVtlbmRdICE9ICd7JzoK
KyAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgZGVwdGggPSAxCisgICAgICAgIGVu
ZCA9IGVuZCArIDEKKyAgICAgICAgd2hpbGUgZGVwdGggPiAwOgorICAgICAgICAgICAgaWYgc291
cmNlW2VuZF0gPT0gJ3snOgorICAgICAgICAgICAgICAgIGRlcHRoID0gZGVwdGggKyAxCisgICAg
ICAgICAgICBlbGlmIHNvdXJjZVtlbmRdID09ICd9JzoKKyAgICAgICAgICAgICAgICBkZXB0aCA9
IGRlcHRoIC0gMQorICAgICAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICBmdW5jdGlvbkJv
dW5kcy5hcHBlbmQoKHN0YXJ0LCBlbmQpKQorCisgICAgZnVuY3Rpb25zID0gW3NvdXJjZVtzdGFy
dDplbmRdLnN0cmlwKCkgZm9yIChzdGFydCwgZW5kKSBpbiBmdW5jdGlvbkJvdW5kc10KKyAgICBy
ZXN1bHQgPSBbXQorICAgIGZvciBmdW5jdGlvbiBpbiBmdW5jdGlvbnM6CisgICAgICAgIGZ1bmN0
aW9uID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5zdWIoIiIsIGZ1bmN0aW9uKQorICAgICAgICBm
dW5jdGlvbk5hbWUgPSBmdW5jdGlvbk5hbWVSZWdFeHAuZmluZGFsbChmdW5jdGlvbilbMF0KKyAg
ICAgICAgZnVuY3Rpb25QYXJhbWV0ZXJzID0gZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIuZmluZGFs
bChmdW5jdGlvbilbMF0uc3BsaXQoJywnKQorICAgICAgICBpZiBsZW4oZnVuY3Rpb25QYXJhbWV0
ZXJzWzBdKSA9PSAwOgorICAgICAgICAgICAgZnVuY3Rpb25QYXJhbWV0ZXJzID0gW10KKyAgICAg
ICAgICAgIAorICAgICAgICByZXN1bHQuYXBwZW5kKChmdW5jdGlvbk5hbWUsIGZ1bmN0aW9uLCBm
dW5jdGlvblBhcmFtZXRlcnMpKQorICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgCisKK2RlZiBn
ZW5lcmF0ZUNvZGUoc291cmNlKToKKyAgICBpbnB1dEZpbGUgPSBvcGVuKHNvdXJjZSwgInIiKQor
ICAgIGJhc2VOYW1lID0gb3MucGF0aC5iYXNlbmFtZShzb3VyY2UpLnJlcGxhY2UoIi5qcyIsICIi
KQorICAgIAorICAgIHNvdXJjZSA9ICIiCisgICAgZm9yIGxpbmUgaW4gaW5wdXRGaWxlOgorICAg
ICAgICBzb3VyY2UgPSBzb3VyY2UgKyBsaW5lCisgICAgCisgICAgaWYgc3lzLnBsYXRmb3JtID09
ICJjeWd3aW4iOgorICAgICAgICBzb3VyY2UgPSBzb3VyY2UucmVwbGFjZSgiXHJcbiIsICJcbiIp
CisgICAgcmV0dXJuIChiYXNlTmFtZSwgZ2V0RnVuY3Rpb25zKHNvdXJjZSksIGdldENvcHlyaWdo
dChzb3VyY2UpKQorCitkZWYgbWFuZ2xlTmFtZShvYmplY3QsIG5hbWUpOgorICAgIHFOYW1lID0g
b2JqZWN0ICsgIi4iICsgbmFtZQorICAgIG1hbmdsZWROYW1lID0gIiIKKyAgICBpID0gMAorICAg
IHdoaWxlIGkgPCBsZW4ocU5hbWUpOgorICAgICAgICBpZiBxTmFtZVtpXSA9PSAnLic6CisgICAg
ICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lICsgcU5hbWVbaSArIDFdLnVwcGVyKCkK
KyAgICAgICAgICAgIGkgPSBpICsgMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbWFuZ2xl
ZE5hbWUgPSBtYW5nbGVkTmFtZSArIHFOYW1lW2ldCisgICAgICAgIGkgPSBpICsgMQorICAgIHJl
dHVybiBtYW5nbGVkTmFtZQorCitidWlsdGlucyA9IFtdCisKK2Jhc2VOYW1lID0gc3lzLmFyZ3Zb
LTFdCitidWlsdGluX2RlZmluaXRpb25zID0gc3lzLmFyZ3ZbMTotMV0KKyhvdXRwdXRfYmFzZSwg
XykgPSBvcy5wYXRoLnNwbGl0ZXh0KHN5cy5hcmd2Wy0xXSkKKworY29weXJpZ2h0cyA9IFtdCitm
b3IgZmlsZSBpbiBidWlsdGluX2RlZmluaXRpb25zOgorICAgIGlmIGZubWF0Y2guZm5tYXRjaChm
aWxlLCAnKi5qcycpOgorICAgICAgICAoYmFzZU5hbWUsIGZ1bmN0aW9ucywgb2JqZWN0Q29weXJp
Z2h0cykgPSBnZW5lcmF0ZUNvZGUoZmlsZSkKKyAgICAgICAgY29weXJpZ2h0cy5leHRlbmQob2Jq
ZWN0Q29weXJpZ2h0cykKKyAgICAgICAgYnVpbHRpbnMuYXBwZW5kKChiYXNlTmFtZSwgZnVuY3Rp
b25zKSkKKworY29weXJpZ2h0cyA9IGxpc3Qoc2V0KGNvcHlyaWdodHMpKQorCitjb3B5cmlnaHRC
b2R5ID0gIiIKK2ZvciBjb3B5cmlnaHQgaW4gY29weXJpZ2h0czoKKyAgICBjb3B5cmlnaHRCb2R5
ID0gY29weXJpZ2h0Qm9keSArIiAqIENvcHlyaWdodCAoQykgIiArIGNvcHlyaWdodCArICJcbiIK
KworYnVpbHRpbnNIZWFkZXIgPSBvcGVuKG91dHB1dF9iYXNlICsgIi5oLnRtcCIsICJ3IikKK2J1
aWx0aW5zSW1wbGVtZW50YXRpb24gPSBvcGVuKG91dHB1dF9iYXNlICsgIi5jcHAudG1wIiwgInci
KQorY29weXJpZ2h0VGV4dCA9ICIvKlxuIiArIGNvcHlyaWdodEJvZHkgKyBjb3B5cmlnaHRUZXh0
CitidWlsdGluc0hlYWRlci53cml0ZSgiIiIlcworJXMKKworI2lmbmRlZiBKU0NCdWlsdGluc19I
CisjZGVmaW5lIEpTQ0J1aWx0aW5zX0gKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEZ1bmN0
aW9uRXhlY3V0YWJsZTsKK2NsYXNzIElkZW50aWZpZXI7CitjbGFzcyBKU0dsb2JhbE9iamVjdDsK
K2NsYXNzIFNvdXJjZUNvZGU7CitjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2Ns
YXNzIFZNOworCitGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKFZN
JiwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CisKKyIi
IiAlIChnZW5lcmF0b3JTdHJpbmcsIGNvcHlyaWdodFRleHQpKQorCitjb2RlUmVmZXJlbmNlcyA9
IFtdCisKK2ZvciAob2JqZWN0TmFtZSwgZnVuY3Rpb25zKSBpbiBidWlsdGluczoKKyAgICBwcmlu
dCgiR2VuZXJhdGluZyBiaW5kaW5ncyBmb3IgdGhlICVzIGJ1aWx0aW4uIiAlIG9iamVjdE5hbWUp
CisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIi8qICVzIGZ1bmN0aW9ucyAqL1xuIiAlIG9iamVj
dE5hbWUpCisgICAgZm9yIChuYW1lLCBpbXBsZW1lbnRhdGlvbiwgXykgaW4gZnVuY3Rpb25zOgor
ICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZU5hbWUob2JqZWN0TmFtZSwgbmFtZSkKKyAgICAg
ICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZVswXS5sb3dlcigpICsgbWFuZ2xlZE5hbWVbMTpd
ICsgIkNvZGUiCisgICAgICAgIGNvZGVSZWZlcmVuY2VzLmFwcGVuZCgobWFuZ2xlZE5hbWUsIG5h
bWUsIGltcGxlbWVudGF0aW9uKSkKKyAgICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoImV4dGVy
biBjb25zdCBjaGFyKiBzXyVzO1xuIiAlIG1hbmdsZWROYW1lKQorICAgICAgICBidWlsdGluc0hl
YWRlci53cml0ZSgiZXh0ZXJuIGNvbnN0IGludCBzXyVzTGVuZ3RoO1xuIiAlIG1hbmdsZWROYW1l
KQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJcbiIpCisgICAgYnVpbHRpbnNIZWFkZXIud3Jp
dGUoIiNkZWZpbmUgSlNDX0ZPUkVBQ0hfJXNfQlVJTFRJTihtYWNybykgXFxcbiIgJSBvYmplY3RO
YW1lLnJlcGxhY2UoIi4iLCAiXyIpLnVwcGVyKCkpCisgICAgZm9yIChuYW1lLCBpbXBsZW1lbnRh
dGlvbiwgYXJndW1lbnRzKSBpbiBmdW5jdGlvbnM6CisgICAgICAgIG1hbmdsZWROYW1lID0gbWFu
Z2xlTmFtZShvYmplY3ROYW1lLCBuYW1lKQorICAgICAgICBidWlsdGluc0hlYWRlci53cml0ZSgi
ICAgIG1hY3JvKCVzLCAlcywgJWQpIFxcXG4iICUgKG5hbWUsIG1hbmdsZWROYW1lLCBsZW4oYXJn
dW1lbnRzKSkpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuIikKKyAgICBmb3IgKG5hbWUs
IGltcGxlbWVudGF0aW9uLCBhcmd1bWVudHMpIGluIGZ1bmN0aW9uczoKKyAgICAgICAgYnVpbHRp
bnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0JVSUxUSU5fJXMgMVxuIiAlIG1hbmdsZU5hbWUo
b2JqZWN0TmFtZSwgbmFtZSkudXBwZXIoKSkKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiXG5c
biIpCituYW1lcyA9IFtdCitidWlsdGluc0hlYWRlci53cml0ZSgiI2RlZmluZSBKU0NfRk9SRUFD
SF9CVUlMVElOKG1hY3JvKVxcXG4iKQorZm9yIChjb2RlUmVmZXJlbmNlLCBmdW5jdGlvbk5hbWUs
IHNvdXJjZSkgaW4gY29kZVJlZmVyZW5jZXM6CisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiAg
ICBtYWNybyglcywgJXMsIHNfJXNMZW5ndGgpIFxcXG4iICUgKGNvZGVSZWZlcmVuY2UsIGZ1bmN0
aW9uTmFtZSwgY29kZVJlZmVyZW5jZSkpCisgICAgbmFtZXMuYXBwZW5kKGZ1bmN0aW9uTmFtZSkK
KworYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuXG4iKQorYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNk
ZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKG1hY3JvKSBcXFxuIikKK2Zv
ciBuYW1lIGluIHNvcnRlZChzZXQobmFtZXMpKToKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgi
ICAgIG1hY3JvKCVzKSBcXFxuIiAlIG5hbWUpCitidWlsdGluc0hlYWRlci53cml0ZSgiIiIKKwor
I2RlZmluZSBKU0NfREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25O
YW1lLCBhcmd1bWVudENvdW50KSBcXAorICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUj
I0dlbmVyYXRvcihWTSYpOworCitKU0NfRk9SRUFDSF9CVUlMVElOKEpTQ19ERUNMQVJFX0JVSUxU
SU5fR0VORVJBVE9SKQorI3VuZGVmIEpTQ19ERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCisKKyNk
ZWZpbmUgSlNDX0JVSUxUSU5fRVhJU1RTKG5hbWUpIGRlZmluZWQoSlNDX0JVSUxUSU5fIyNuYW1l
KQorCit9CisKKyNlbmRpZgorCisiIiIpCisKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUo
IiIiJXMKKyVzCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkpTQ0J1aWx0aW5z
LmgiCisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJFeGVjdXRh
YmxlLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCisiIiIgICUgKGdlbmVyYXRvclN0cmluZywgY29weXJpZ2h0VGV4dCkp
CisKK2ZvciAoY29kZVJlZmVyZW5jZSwgbmFtZSwgc291cmNlKSBpbiBjb2RlUmVmZXJlbmNlczoK
KyAgICBzb3VyY2UgPSAiKGZ1bmN0aW9uICIgKyBzb3VyY2Vbc291cmNlLmluZGV4KCIoIik6XSAr
ICIpIgorICAgIGxpbmVzID0ganNvbi5kdW1wcyhzb3VyY2UpWzE6LTFdLnNwbGl0KCJcXG4iKQor
ICAgIHNvdXJjZUxlbmd0aCA9IGxlbihzb3VyY2UpCisgICAgc291cmNlID0gIiIKKyAgICBmb3Ig
bGluZSBpbiBsaW5lczoKKyAgICAgICAgc291cmNlID0gc291cmNlICsgKCIgICAgXCIlc1xcblwi
IFxcXG4iICUgbGluZSkKKyAgICBidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCJjb25zdCBj
aGFyKiBzXyVzID1cbiVzO1xuXG4iICUgKGNvZGVSZWZlcmVuY2UsIHNvdXJjZSkpCisgICAgYnVp
bHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiY29uc3QgaW50IHNfJXNMZW5ndGggPSAlZDtcblxu
IiAlIChjb2RlUmVmZXJlbmNlLCBzb3VyY2VMZW5ndGggKyAxKSkgIyArIDEgZm9yIFxuCisKK2J1
aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoIiIiCitGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0
ZUJ1aWx0aW5FeGVjdXRhYmxlKFZNJiB2bSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVu
bGlua2VkRXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQoreworICAgIHVuc2ln
bmVkIGxpbmVDb3VudCA9IHVubGlua2VkRXhlY3V0YWJsZS0+bGluZUNvdW50KCk7CisgICAgdW5z
aWduZWQgc3RhcnRDb2x1bW4gPSAxOworICAgIHVuc2lnbmVkIHNvdXJjZUxlbmd0aCA9IHVubGlu
a2VkRXhlY3V0YWJsZS0+c291cmNlTGVuZ3RoKCk7CisgICAgYm9vbCBlbmRDb2x1bW5Jc09uU3Rh
cnRMaW5lID0gIWxpbmVDb3VudDsKKyAgICB1bnNpZ25lZCBlbmRDb2x1bW5FeGNsdWRpbmdCcmFj
ZXMgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnVubGlua2VkQm9keUVuZENvbHVtbigpICsgKGVuZENv
bHVtbklzT25TdGFydExpbmUgPyAwIDogMSk7CisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSB1
bmxpbmtlZEV4ZWN1dGFibGUtPnN0YXJ0T2Zmc2V0KCk7CisgICAgdW5zaWduZWQgc3RhcnRPZmZz
ZXRFeGNsdWRpbmdPcGVuQnJhY2UgPSBzdGFydE9mZnNldCArIDE7CisgICAgdW5zaWduZWQgZW5k
T2Zmc2V0RXhjbHVkaW5nQ2xvc2VCcmFjZSA9IHN0YXJ0T2Zmc2V0ICsgc291cmNlTGVuZ3RoIC0g
MTsKKyAgICBTb3VyY2VDb2RlIGJvZHlTb3VyY2Uoc291cmNlLnByb3ZpZGVyKCksIHN0YXJ0T2Zm
c2V0RXhjbHVkaW5nT3BlbkJyYWNlLCBlbmRPZmZzZXRFeGNsdWRpbmdDbG9zZUJyYWNlLCAwLCBz
dGFydENvbHVtbik7CisgICAgcmV0dXJuIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBi
b2R5U291cmNlLCB1bmxpbmtlZEV4ZWN1dGFibGUsIDAsIGxpbmVDb3VudCwgc3RhcnRDb2x1bW4s
IGVuZENvbHVtbkV4Y2x1ZGluZ0JyYWNlcywgZmFsc2UpOworfQorCisjZGVmaW5lIEpTQ19ERUZJ
TkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3Vu
dCkgXFwKK0Z1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihWTSYgdm0pIFxc
Cit7IFxcCisgICAgcmV0dXJuIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKHZtLCB2bS5idWlsdGlu
RXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKSwgdm0uYnVpbHRpbkV4ZWN1dGFi
bGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IFxcCit9CisKK0pTQ19GT1JFQUNIX0JVSUxUSU4o
SlNDX0RFRklORV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBKU0NfREVGSU5FX0JVSUxUSU5f
R0VORVJBVE9SCit9CisKKyIiIikKKworYnVpbHRpbnNIZWFkZXIuY2xvc2UoKQorYnVpbHRpbnNJ
bXBsZW1lbnRhdGlvbi5jbG9zZSgpCisKK2lmIChub3Qgb3MucGF0aC5leGlzdHMob3V0cHV0X2Jh
c2UgKyAiLmgiKSkgb3IgKG5vdCBmaWxlY21wLmNtcChvdXRwdXRfYmFzZSArICIuaC50bXAiLCBv
dXRwdXRfYmFzZSArICIuaCIsIHNoYWxsb3c9RmFsc2UpKToKKyAgICBvcy5yZW5hbWUob3V0cHV0
X2Jhc2UgKyAiLmgudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmgiKQorZWxzZToKKyAgICBvcy5yZW1v
dmUob3V0cHV0X2Jhc2UgKyAiLmgudG1wIikKKworaWYgKG5vdCBvcy5wYXRoLmV4aXN0cyhvdXRw
dXRfYmFzZSArICIuY3BwIikpIG9yIChub3QgZmlsZWNtcC5jbXAob3V0cHV0X2Jhc2UgKyAiLmNw
cC50bXAiLCBvdXRwdXRfYmFzZSArICIuY3BwIiwgc2hhbGxvdz1GYWxzZSkpOgorICAgIG9zLnJl
bmFtZShvdXRwdXRfYmFzZSArICIuY3BwLnRtcCIsIG91dHB1dF9iYXNlICsgIi5jcHAiKQorZWxz
ZToKKyAgICBvcy5yZW1vdmUob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggY2E4OTBi
MDZlYTMzZmE5ZTdmMWZhNTFhMzVlYTJkNDhkMDA5YTM4YS4uNmM5YmY5NmMxNWY2MDllMjY1Y2Uy
NTBhNDViZjA4NjFkMDZjZDFmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTU3RhY2tJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRl
ICJKU1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIkxMSW50Q0xvb3AuaCIKICNpbmNsdWRlICJMTElu
dFRodW5rcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L1Byb3RvQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Q
cm90b0NhbGxGcmFtZS5jcHAKaW5kZXggZjBlMDJiYTRlNDc2Zjk5Y2M5MTNiMDQ2MmFkMjc5NTAw
NjA5ZmEzYS4uMWMyNDBkY2Q3MWJlNTI5ZDg4Y2JmNDYxZDE4NjhmNWViMmIwMmFkNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUu
Y3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKIAogI2lu
Y2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCBjYTdhZDExZjJlMGI4YTNiOGIxODU4OTFk
N2U1MjJiYWU0MDNhMjM2Li5jYjU1MDdiZWFjNTViZjhlYjFiMzdlYzkwZmNhYjE5MzRmYjQ4ZWEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMz
Ml82NC5jcHAKaW5kZXggOThkMTBhM2Y0ZGNiMTJkODlmMzdhMTJmMjI2MDRiOTQ2ZTA4ZTYyNy4u
ZGQwMzUzNzc5ZThiZGY5OGY0NjU4YTMwN2UzMmQwNmU0NzI0NDE1OCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtMzQsNiArMzQsNyBAQAog
I2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
Q2VsbC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAppbmRleCA5MjhkZDUwZmIwMTZlMjcxNjQ0YTU3NWUzMGFiNWYyNTE2ZWI1MGVjLi45MDg4Yjdm
YjJmYjdhZDAxMzgwNmVmNDliNWFmNDIwZmE2NDg0MDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTQxLDYgKzQxLDggQEAKICNpbmNsdWRlICJK
SVQuaCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25XcmFwcGVycy5oIgogI2luY2x1ZGUgIkpJVFRv
REZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlu
bGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNsdWRl
ICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDI2ZGQ0ZDFhZjc0NWFmYTFmYmM1M2E5YzAy
M2E2ZTQ3NDFhNjZhMDkuLmRmMWJkM2E5Y2ZhNDAyYzUyYTUyMTFjZjFhY2NlNjdkNTEyMWI3ZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3Bw
CkBAIC0yOSwxMSArMjksMTMgQEAKICNpbmNsdWRlICJKSVQuaCIKIAogI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAi
SW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJh
eS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1Zh
cmlhYmxlT2JqZWN0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCBkMThmZWE3MTVjYjAzYjM3YWE5MjZkODQ5YThl
NWFiOTU2M2VjZDNkLi4zMjYxYjNhZjZlZWFiZDZmMjZhNDNhMDhkMjA0YmM2MmIwNjU4OWI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mz
Ml82NC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2lu
Y2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlND
SlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTVmFyaWFibGVPYmplY3QuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKaW5kZXggNDA3ODRiNDk0MzFmZTAyZThlNDUyMmYxNjMwOGM5MDI0NzE2
ZDIzNi4uMmY3OTU1NTRiMDkxZGVlYmJjMDNiZjJiZThjNzRmNDFhZTU0MWVkNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNs
dWRlICJKU1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1N0cmlu
Z0lubGluZXMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdU
b29sLmgiCiAjaW5jbHVkZSAiU3RhY2tWaXNpdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCmluZGV4IDYwNGNjMjYz
Y2Y5N2UwODZmZWQwNmVjOTAzYjBlYzE5ODNlNzgxMzcuLjgxNjZlN2Y4MWZhODlhN2Q0ZjUwYzVm
MWE5NGZhOTY4YzVkNTdlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVk
ZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgi
Ci0jaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgi
CiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcAppbmRleCA2NjQ0NGJhYTA4YjU2MmRkNjk3ZTBjY2Q3NzIxZTU1YzE1YmE0OTEzLi44
M2UwMWViYWZkYTI3N2UyNWQ4Y2YwYjBjZTY2YmQ5MWU1NWM0NjhiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTQwLDcgKzQwLDggQEAK
ICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCiAjaW5jbHVkZSAi
SlNBY3RpdmF0aW9uLmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pT
VmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRl
ICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAj
aW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCA4ZWMxZmQzMmEzYWRhMjJlMTI1MjI5NTcwZGNmN2Zm
MjhlYWJmMWVkLi40NmE3Yzc2YjJmOTAxZmMzY2MzNmQxY2UwYzA3MzUzZWIwNmIyZjVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtODg4LDkgKzg4OCw5
IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uCiAgICAgQVNTRVJUKGZ1bmMtPmlzRG90QWNjZXNz
b3JOb2RlKCkpOwogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNj
ZXNzb3JOb2RlKj4oZnVuYyk7CiAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZSogbm9kZTsKLSAgICBp
ZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y2FsbCkKKyAgICBp
ZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y2FsbCB8fCBkb3Qt
PmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5jYWxsUHJpdmF0ZU5hbWUpCiAg
ICAgICAgIG5vZGUgPSBuZXcgKG1fdm0pIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9u
LCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0
LCBkaXZvdEVuZCk7Ci0gICAgZWxzZSBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJv
cGVydHlOYW1lcy0+YXBwbHkpCisgICAgZWxzZSBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92
bS0+cHJvcGVydHlOYW1lcy0+YXBwbHkgfHwgZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJv
cGVydHlOYW1lcy0+YXBwbHlQcml2YXRlTmFtZSkKICAgICAgICAgbm9kZSA9IG5ldyAobV92bSkg
QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVu
dGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiAgICAgZWxzZQog
ICAgICAgICBub2RlID0gbmV3IChtX3ZtKSBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBk
b3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBk
aXZvdEVuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IGNhNGJi
NGYwYWRlOGQ2YmM4MjY5MWE2YzAwMDE0Y2YxOThiZDg4YmQuLmNjYjA3OWQ5NzVhMTQxYzVjNGIy
ZDdiNjIzMTMwMDA3MDk3Nzc4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
Y3BwCkBAIC0yNSwxMCArMjUsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJM
ZXhlci5oIgogCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKKyNpbmNsdWRlICJJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKLQogI2luY2x1ZGUgIkpT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCi0jaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIk5vZGVJbmZvLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlIDx3dGYvZHRvYS5o
PgpAQCAtOTAsNiArOTAsNyBAQCBlbnVtIENoYXJhY3RlclR5cGUgewogCiAgICAgLy8gT3RoZXIg
dHlwZXMgKG9ubHkgb25lIHNvIGZhcikKICAgICBDaGFyYWN0ZXJXaGl0ZVNwYWNlLAorICAgIENo
YXJhY3RlclByaXZhdGVJZGVudGlmaWVyU3RhcnQKIH07CiAKIC8vIDI1NiBMYXRpbi0xIGNvZGVz
CkBAIC0xNTgsNyArMTU5LDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IHR5cGVzT2ZM
YXRpbjFDaGFyYWN0ZXJzWzI1Nl0gPSB7CiAvKiAgNjEgLSA9ICAgICAgICAgICAgICAgICAgKi8g
Q2hhcmFjdGVyRXF1YWwsCiAvKiAgNjIgLSA+ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVy
R3JlYXRlciwKIC8qICA2MyAtID8gICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJRdWVzdGlv
biwKLS8qICA2NCAtIEAgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyog
IDY0IC0gQCAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlclByaXZhdGVJZGVudGlmaWVyU3Rh
cnQsCiAvKiAgNjUgLSBBICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0
YXJ0LAogLyogIDY2IC0gQiAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJT
dGFydCwKIC8qICA2NyAtIEMgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVy
U3RhcnQsCkBAIC00ODYsOSArNDg3LDEwIEBAIHN0YXRpYyBjb25zdCBMQ2hhciBzaW5nbGVDaGFy
YWN0ZXJFc2NhcGVWYWx1ZXNGb3JBU0NJSVsxMjhdID0gewogfTsKIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci1MZXhlcjxUPjo6TGV4ZXIoVk0qIHZtKQorTGV4ZXI8VD46OkxleGVyKFZNKiB2bSwg
SlNQYXJzZXJTdHJpY3RuZXNzIHN0cmljdG5lc3MpCiAgICAgOiBtX2lzUmVwYXJzaW5nKGZhbHNl
KQogICAgICwgbV92bSh2bSkKKyAgICAsIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbihzdHJpY3Ru
ZXNzID09IEpTUGFyc2VCdWlsdGluKQogewogfQogCkBAIC03NTMsNyArNzU1LDI3IEBAIGlubGlu
ZSB2b2lkIExleGVyPFQ+OjpyZWNvcmQxNihpbnQgYykKICAgICBBU1NFUlQoYyA8PSBzdGF0aWNf
Y2FzdDxpbnQ+KFVTSFJUX01BWCkpOwogICAgIG1fYnVmZmVyMTYuYXBwZW5kKHN0YXRpY19jYXN0
PFVDaGFyPihjKSk7CiB9Ci0KKyAgICAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECitib29sIGlzU2Fm
ZUlkZW50aWZpZXIoVk0mIHZtLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCkKK3sKKyAgICBpZiAo
IWlkZW50KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAvKiBKdXN0IGJsb2NrIGFueSB1c2Ug
b2Ygc3VzcGljaW91cyBpZGVudGlmaWVycy4gIFRoaXMgaXMgaW50ZW5kZWQgdG8KKyAgICAgKiBi
ZSB1c2VkIGFzIGEgc2FmZXR5IG5ldCB3aGlsZSBpbXBsZW1lbnRpbmcgYnVpbHRpbnMuCisgICAg
ICovCisgICAgaWYgKCppZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKCppZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5hcHBseSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1l
cy0+ZXZhbCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJv
cGVydHlOYW1lcy0+RnVuY3Rpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKyNlbmRpZgorICAgIAogdGVtcGxhdGUgPD4KIHRlbXBsYXRlIDxib29sIHNob3Vs
ZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+
OjpwYXJzZUlkZW50aWZpZXIoSlNUb2tlbkRhdGEqIHRva2VuRGF0YSwgdW5zaWduZWQgbGV4ZXJG
bGFncywgYm9vbCBzdHJpY3RNb2RlKQogewpAQCAtNzY1LDcgKzc4NywxMSBAQCB0ZW1wbGF0ZSA8
Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExl
eGVyPExDaGFyPjo6cAogICAgICAgICAgICAgcmV0dXJuIGtleXdvcmQgPT0gUkVTRVJWRURfSUZf
U1RSSUNUICYmICFzdHJpY3RNb2RlID8gSURFTlQgOiBrZXl3b3JkOwogICAgICAgICB9CiAgICAg
fQotCisgICAgCisgICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gbV9jdXJyZW50ID09ICdAJyAmJiBt
X3BhcnNpbmdCdWlsdGluRnVuY3Rpb247CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAg
IHNoaWZ0KCk7CisgICAgCiAgICAgY29uc3QgTENoYXIqIGlkZW50aWZpZXJTdGFydCA9IGN1cnJl
bnRTb3VyY2VQdHIoKTsKICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTGluZVN0YXJ0ID0gY3VycmVu
dExpbmVTdGFydE9mZnNldCgpOwogICAgIApAQCAtNzc5LDE1ICs4MDUsMjYgQEAgdGVtcGxhdGUg
PGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBM
ZXhlcjxMQ2hhcj46OnAKIAogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gMDsKICAgICAK
LSAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcikgeworICAgIGlmIChzaG91bGRDcmVhdGVJ
ZGVudGlmaWVyIHx8IG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgewogICAgICAgICBpbnQgaWRl
bnRpZmllckxlbmd0aCA9IGN1cnJlbnRTb3VyY2VQdHIoKSAtIGlkZW50aWZpZXJTdGFydDsKICAg
ICAgICAgaWRlbnQgPSBtYWtlSWRlbnRpZmllcihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJM
ZW5ndGgpOwotCisgICAgICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKKyAgICAg
ICAgICAgIGlmICghaXNTYWZlSWRlbnRpZmllcigqbV92bSwgaWRlbnQpICYmICFpc1ByaXZhdGVO
YW1lKSB7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJU
aGUgdXNlIG9mICciLCBpZGVudC0+c3RyaW5nKCksICInIGlzIGRpc2FsbG93ZWQgaW4gYnVpbHRp
biBmdW5jdGlvbnMuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgICAgICAgICAg
aWRlbnQgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZXRQcml2YXRlTmFtZSgqaWRlbnQpOworICAg
ICAgICAgICAgZWxzZSBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5l
ZEtleXdvcmQpCisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9ICZtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkUHJpdmF0ZU5hbWU7CisgICAgICAgICAgICBpZiAo
IWlkZW50KQorICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJP
UlRPSzsKKyAgICAgICAgfQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gaWRlbnQ7CiAgICAg
fSBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAwOwogCi0gICAgaWYgKFVOTElLRUxZ
KChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFn
c0lnbm9yZVJlc2VydmVkV29yZHMpKSkgeworICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwg
bWF4VG9rZW5MZW5ndGgpICYmICEobGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25vcmVSZXNlcnZl
ZFdvcmRzKSkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsKICAgICAgICAgQVNTRVJUKHNob3VsZENyZWF0
ZUlkZW50aWZpZXIpOwogICAgICAgICBpZiAocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHsK
ICAgICAgICAgICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSBtX3ZtLT5rZXl3b3Jkcy0+Z2V0
S2V5d29yZCgqaWRlbnQpOwpAQCAtODE0LDYgKzg1MSwxMCBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91
bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFy
Pjo6cAogICAgICAgICAgICAgcmV0dXJuIGtleXdvcmQgPT0gUkVTRVJWRURfSUZfU1RSSUNUICYm
ICFzdHJpY3RNb2RlID8gSURFTlQgOiBrZXl3b3JkOwogICAgICAgICB9CiAgICAgfQorICAgIAor
ICAgIGJvb2wgaXNQcml2YXRlTmFtZSA9IG1fY3VycmVudCA9PSAnQCcgJiYgbV9wYXJzaW5nQnVp
bHRpbkZ1bmN0aW9uOworICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICBzaGlmdCgpOwog
CiAgICAgY29uc3QgVUNoYXIqIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsK
ICAgICBpbnQgaWRlbnRpZmllckxpbmVTdGFydCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsK
QEAgLTgyNiw2ICs4NjcsNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVy
PiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAgIH0KICAgICAK
ICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50ID09ICdcXCcpKSB7CisgICAgICAgIEFTU0VSVCgh
aXNQcml2YXRlTmFtZSk7CiAgICAgICAgIHNldE9mZnNldEZyb21Tb3VyY2VQdHIoaWRlbnRpZmll
clN0YXJ0LCBpZGVudGlmaWVyTGluZVN0YXJ0KTsKICAgICAgICAgcmV0dXJuIHBhcnNlSWRlbnRp
ZmllclNsb3dDYXNlPHNob3VsZENyZWF0ZUlkZW50aWZpZXI+KHRva2VuRGF0YSwgbGV4ZXJGbGFn
cywgc3RyaWN0TW9kZSk7CiAgICAgfQpAQCAtODM3LDE4ICs4NzksMjkgQEAgdGVtcGxhdGUgPGJv
b2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhl
cjxVQ2hhcj46OnAKIAogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gMDsKICAgICAKLSAg
ICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcikgeworICAgIGlmIChzaG91bGRDcmVhdGVJZGVu
dGlmaWVyIHx8IG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgewogICAgICAgICBpbnQgaWRlbnRp
Zmllckxlbmd0aCA9IGN1cnJlbnRTb3VyY2VQdHIoKSAtIGlkZW50aWZpZXJTdGFydDsKICAgICAg
ICAgaWYgKGlzQWxsOEJpdCkKICAgICAgICAgICAgIGlkZW50ID0gbWFrZUlkZW50aWZpZXJMQ2hh
ckZyb21VQ2hhcihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBpZGVudCA9IG1ha2VJZGVudGlmaWVyKGlkZW50aWZpZXJTdGFydCwg
aWRlbnRpZmllckxlbmd0aCk7Ci0gICAgICAgIAorICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRp
bkZ1bmN0aW9uKSB7CisgICAgICAgICAgICBpZiAoIWlzU2FmZUlkZW50aWZpZXIoKm1fdm0sIGlk
ZW50KSAmJiAhaXNQcml2YXRlTmFtZSkgeworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNz
YWdlID0gbWFrZVN0cmluZygiVGhlIHVzZSBvZiAnIiwgaWRlbnQtPnN0cmluZygpLCAiJyBpcyBk
aXNhbGxvd2VkIGluIGJ1aWx0aW4gZnVuY3Rpb25zLiIpOworICAgICAgICAgICAgICAgIHJldHVy
biBFUlJPUlRPSzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpc1ByaXZhdGVOYW1l
KQorICAgICAgICAgICAgICAgIGlkZW50ID0gbV92bS0+cHJvcGVydHlOYW1lcy0+Z2V0UHJpdmF0
ZU5hbWUoKmlkZW50KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkKQorICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+
aWRlbnQgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZFByaXZhdGVOYW1l
OworICAgICAgICAgICAgaWYgKCFpZGVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJ
RF9QUklWQVRFX05BTUVfRVJST1JUT0s7CisgICAgICAgIH0KICAgICAgICAgdG9rZW5EYXRhLT5p
ZGVudCA9IGlkZW50OwogICAgIH0gZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gMDsK
ICAgICAKLSAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAh
KGxleGVyRmxhZ3MgJiBMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpKSB7CisgICAgaWYg
KFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYg
TGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMpKSAmJiAhaXNQcml2YXRlTmFtZSkgewogICAg
ICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChyZW1haW5p
bmcgPCBtYXhUb2tlbkxlbmd0aCkgewogICAgICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRy
eSA9IG1fdm0tPmtleXdvcmRzLT5nZXRLZXl3b3JkKCppZGVudCk7CkBAIC0xNjU4LDYgKzE3MTEs
NyBAQCBpbk51bWJlckFmdGVyRGVjaW1hbFBvaW50OgogICAgICAgICBBU1NFUlQoaXNJZGVudFN0
YXJ0KG1fY3VycmVudCkpOwogICAgICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNlIENoYXJhY3Rl
ckJhY2tTbGFzaDoKKyAgICAgICAgcGFyc2VJZGVudDoKICAgICAgICAgaWYgKGxleGVyRmxhZ3Mg
JiBMZXhleEZsYWdzRG9udEJ1aWxkS2V5d29yZHMpCiAgICAgICAgICAgICB0b2tlbiA9IHBhcnNl
SWRlbnRpZmllcjxmYWxzZT4odG9rZW5EYXRhLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKTsKICAg
ICAgICAgZWxzZQpAQCAtMTY3MCw2ICsxNzI0LDExIEBAIGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9p
bnQ6CiAgICAgICAgIG1fdGVybWluYXRvciA9IHRydWU7CiAgICAgICAgIG1fbGluZVN0YXJ0ID0g
bV9jb2RlOwogICAgICAgICBnb3RvIHN0YXJ0OworICAgIGNhc2UgQ2hhcmFjdGVyUHJpdmF0ZUlk
ZW50aWZpZXJTdGFydDoKKyAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikKKyAg
ICAgICAgICAgIGdvdG8gcGFyc2VJZGVudDsKKworICAgICAgICBGQUxMVEhST1VHSDsKICAgICBj
YXNlIENoYXJhY3RlckludmFsaWQ6CiAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gaW52YWxp
ZENoYXJhY3Rlck1lc3NhZ2UoKTsKICAgICAgICAgdG9rZW4gPSBFUlJPUlRPSzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAppbmRleCAyOGM2MWJhMTk4ZDJjMTVhNDliYjE4NTJlZDMw
YmVmZWI4OTA0MDA4Li5iODg3M2U5OTUwMjg2NDRiZjhjYmIzZDRjMmRhNTYyZTkzZTBlOGU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCkBAIC03Miw3ICs3Miw3IEBAIGNsYXNz
IExleGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAogcHVibGljOgotICAgIExl
eGVyKFZNKik7CisgICAgTGV4ZXIoVk0qLCBKU1BhcnNlclN0cmljdG5lc3MpOwogICAgIH5MZXhl
cigpOwogCiAgICAgLy8gQ2hhcmFjdGVyIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMuCkBAIC0yMzgs
NiArMjM4LDcgQEAgcHJpdmF0ZToKICAgICBJZGVudGlmaWVyQXJlbmEqIG1fYXJlbmE7CiAKICAg
ICBWTSogbV92bTsKKyAgICBib29sIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKIH07CiAKIHRl
bXBsYXRlIDw+CkBAIC0zMzUsNiArMzM2LDEyIEBAIEFMV0FZU19JTkxJTkUgY29uc3QgSWRlbnRp
ZmllciogTGV4ZXI8VD46Om1ha2VMQ2hhcklkZW50aWZpZXIoY29uc3QgVUNoYXIqIGNoYXJhCiAg
ICAgcmV0dXJuICZtX2FyZW5hLT5tYWtlSWRlbnRpZmllckxDaGFyRnJvbVVDaGFyKG1fdm0sIGNo
YXJhY3RlcnMsIGxlbmd0aCk7CiB9CiAKKyNpZiBBU1NFUlRfRElTQUJMRUQKK0FMV0FZU19JTkxJ
TkUgYm9vbCBpc1NhZmVJZGVudGlmaWVyKFZNJiwgY29uc3QgSWRlbnRpZmllciopIHsgcmV0dXJu
IHRydWU7IH0KKyNlbHNlCitib29sIGlzU2FmZUlkZW50aWZpZXIoVk0mLCBjb25zdCBJZGVudGlm
aWVyKik7CisjZW5kaWYKKwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBBTFdBWVNfSU5MSU5FIEpT
VG9rZW5UeXBlIExleGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW4qIHRva2VuUmVj
b3JkLCB1bnNpZ25lZCBsZXhlckZsYWdzLCBib29sIHN0cmljdE1vZGUpCiB7CkBAIC0zNzAsMTAg
KzM3NywxNSBAQCBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhFeHBlY3RJ
ZGVudGlmaWVyKEpTVG9rZW4qIHRva2VuUmVjb3JkLCB1bgogICAgIEFTU0VSVChjdXJyZW50T2Zm
c2V0KCkgPj0gY3VycmVudExpbmVTdGFydE9mZnNldCgpKTsKIAogICAgIC8vIENyZWF0ZSB0aGUg
aWRlbnRpZmllciBpZiBuZWVkZWQKLSAgICBpZiAobGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250
QnVpbGRLZXl3b3JkcykKKyAgICBpZiAobGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250QnVpbGRL
ZXl3b3JkcworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgJiYgIW1fcGFyc2luZ0J1aWx0
aW5GdW5jdGlvbgorI2VuZGlmCisgICAgICAgICkKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9
IDA7CiAgICAgZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gbWFrZUxDaGFySWRlbnRp
ZmllcihzdGFydCwgcHRyIC0gc3RhcnQpOworCiAgICAgdG9rZW5Mb2NhdGlvbi0+bGluZSA9IG1f
bGluZU51bWJlcjsKICAgICB0b2tlbkxvY2F0aW9uLT5saW5lU3RhcnRPZmZzZXQgPSBjdXJyZW50
TGluZVN0YXJ0T2Zmc2V0KCk7CiAgICAgdG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZzZXQgPSBvZmZz
ZXRGcm9tU291cmNlUHRyKHN0YXJ0KTsKQEAgLTM4MSw2ICszOTMsMTMgQEAgQUxXQVlTX0lOTElO
RSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rva2VuKiB0b2tl
blJlY29yZCwgdW4KICAgICBBU1NFUlQodG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZzZXQgPj0gdG9r
ZW5Mb2NhdGlvbi0+bGluZVN0YXJ0T2Zmc2V0KTsKICAgICB0b2tlblJlY29yZC0+bV9zdGFydFBv
c2l0aW9uID0gc3RhcnRQb3NpdGlvbjsKICAgICB0b2tlblJlY29yZC0+bV9lbmRQb3NpdGlvbiA9
IGN1cnJlbnRQb3NpdGlvbigpOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBpZiAobV9wYXJz
aW5nQnVpbHRpbkZ1bmN0aW9uKSB7CisgICAgICAgIGlmICghaXNTYWZlSWRlbnRpZmllcigqbV92
bSwgdG9rZW5EYXRhLT5pZGVudCkpCisgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7CisgICAg
fQorI2VuZGlmCisKICAgICBtX2xhc3RUb2tlbiA9IElERU5UOwogICAgIHJldHVybiBJREVOVDsK
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggZmM5Y2NkOWY2
YzU3NmMxYWVmNTQ3ZjIxMWZkZDU5NmY0MmUwNTgwNi4uZDk1MmJhNmE5NGQyZjZiNDE4MjE1NTAw
NGQwYTk3MDg0MjliZDc4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAK
QEAgLTEzMiw2ICsxMzIsMTIgQEAgUGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4gUHJvZ3JhbU5vZGU6
OmNyZWF0ZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQKICAgICByZXR1cm4g
bm9kZS5yZWxlYXNlKCk7CiB9CiAKKwordm9pZCBQcm9ncmFtTm9kZTo6c2V0Q2xvc2VkVmFyaWFi
bGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYgY2xvc2VkVmFyaWFibGVzKQor
eworICAgIG1fY2xvc2VkVmFyaWFibGVzID0gc3RkOjptb3ZlKGNsb3NlZFZhcmlhYmxlcyk7Cit9
CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFdmFsTm9kZSAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCiBpbmxpbmUgRXZhbE5vZGU6OkV2YWxOb2RlKFZNKiB2bSwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGls
ZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50
aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENv
ZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuaAppbmRleCBkNzc5YTE3OGQ5NTZmZjk5ZmQwYmVkNWQ1ZjQ1NGFhM2U2YjUw
ODc5Li44MTZmZjAwMWFiZjAzNzZjNjQyZjFhOTM4ZDBlMGE5ZjUyOWNhNmJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xNDMxLDYgKzE0MzEsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgYm9vbCBuZWVkc0FjdGl2YXRpb24oKSBjb25zdCB7IHJldHVybiAoaGFz
Q2FwdHVyZWRWYXJpYWJsZXMoKSkgfHwgKG1fZmVhdHVyZXMgJiAoRXZhbEZlYXR1cmUgfCBXaXRo
RmVhdHVyZSB8IENhdGNoRmVhdHVyZSkpOyB9CiAgICAgICAgIGJvb2wgaGFzQ2FwdHVyZWRWYXJp
YWJsZXMoKSBjb25zdCB7IHJldHVybiAhIW1fY2FwdHVyZWRWYXJpYWJsZXMuc2l6ZSgpOyB9CiAg
ICAgICAgIHNpemVfdCBjYXB0dXJlZFZhcmlhYmxlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2Nh
cHR1cmVkVmFyaWFibGVzLnNpemUoKTsgfQorICAgICAgICBjb25zdCBJZGVudGlmaWVyU2V0JiBj
YXB0dXJlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2FwdHVyZWRWYXJpYWJsZXM7IH0K
ICAgICAgICAgYm9vbCBjYXB0dXJlcyhjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgeyByZXR1cm4g
bV9jYXB0dXJlZFZhcmlhYmxlcy5jb250YWlucyhpZGVudC5pbXBsKCkpOyB9CiAKICAgICAgICAg
VmFyU3RhY2smIHZhclN0YWNrKCkgeyByZXR1cm4gbV92YXJTdGFjazsgfQpAQCAtMTQ0Niw2ICsx
NDQ3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0
YXRlbWVudCgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgZW1pdFN0YXRlbWVudHNCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9uKTsKKyAgICAgICAgCisg
ICAgICAgIHZvaWQgc2V0Q2xvc2VkVmFyaWFibGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5n
SW1wbD4+JiYpIHsgfQogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2b2lkIHNldFNvdXJjZShj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpIHsgbV9zb3VyY2UgPSBzb3VyY2U7IH0KQEAgLTE0NzUs
MTEgKzE0NzgsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IGJv
b2wgc2NvcGVJc0Z1bmN0aW9uID0gZmFsc2U7CiAKKyAgICAgICAgdm9pZCBzZXRDbG9zZWRWYXJp
YWJsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJik7CisgICAgICAgIGNvbnN0
IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiBjbG9zZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJl
dHVybiBtX2Nsb3NlZFZhcmlhYmxlczsgfQogICAgIHByaXZhdGU6CiAgICAgICAgIFByb2dyYW1O
b2RlKFZNKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJj
ZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNv
bnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApIG92ZXJyaWRlOwotCisgICAgICAgIFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+
IG1fY2xvc2VkVmFyaWFibGVzOwogICAgICAgICB1bnNpZ25lZCBtX3N0YXJ0Q29sdW1uOwogICAg
ICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuY3BwCmluZGV4IDI5NzY2NmU3MjZlNDVkMDgzZWYxMzQ5ZGRmZmRmMzdlZjgw
MGRmN2EuLjUwYmVjNzlmZTM4YWRmOGYzYTA0ZjZiNDZjYmQyYTVjYmZjZjI0NmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTIwNCw4ICsyMDQsOSBAQCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBG
dW5jdGlvblBhcmFtZXRlcnMqCiAgICAgLCBtX2xhc3RJZGVudGlmaWVyKDApCiAgICAgLCBtX2xh
c3RGdW5jdGlvbk5hbWUobnVsbHB0cikKICAgICAsIG1fc291cmNlRWxlbWVudHMoMCkKKyAgICAs
IG1fcGFyc2luZ0J1aWx0aW4oc3RyaWN0bmVzcyA9PSBKU1BhcnNlQnVpbHRpbikKIHsKLSAgICBt
X2xleGVyID0gYWRvcHRQdHIobmV3IExleGVyVHlwZSh2bSkpOworICAgIG1fbGV4ZXIgPSBhZG9w
dFB0cihuZXcgTGV4ZXJUeXBlKHZtLCBzdHJpY3RuZXNzKSk7CiAgICAgbV9hcmVuYSA9IG1fdm0t
PnBhcnNlckFyZW5hLmdldCgpOwogICAgIG1fbGV4ZXItPnNldENvZGUoc291cmNlLCBtX2FyZW5h
KTsKICAgICBtX3Rva2VuLm1fbG9jYXRpb24ubGluZSA9IHNvdXJjZS5maXJzdExpbmUoKTsKQEAg
LTI1Niw2ICsyNTcsNyBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoKQog
ICAgIElkZW50aWZpZXJTZXQgY2FwdHVyZWRWYXJpYWJsZXM7CiAgICAgYm9vbCBtb2RpZmllZFBh
cmFtZXRlciA9IGZhbHNlOwogICAgIHNjb3BlLT5nZXRDYXB0dXJlZFZhcmlhYmxlcyhjYXB0dXJl
ZFZhcmlhYmxlcywgbW9kaWZpZWRQYXJhbWV0ZXIpOworICAgIAogICAgIENvZGVGZWF0dXJlcyBm
ZWF0dXJlcyA9IGNvbnRleHQuZmVhdHVyZXMoKTsKICAgICBpZiAoc2NvcGUtPnN0cmljdE1vZGUo
KSkKICAgICAgICAgZmVhdHVyZXMgfD0gU3RyaWN0TW9kZUZlYXR1cmU7CkBAIC0yNjMsMjEgKzI2
NSwzNiBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoKQogICAgICAgICBm
ZWF0dXJlcyB8PSBTaGFkb3dzQXJndW1lbnRzRmVhdHVyZTsKICAgICBpZiAobW9kaWZpZWRQYXJh
bWV0ZXIpCiAgICAgICAgIGZlYXR1cmVzIHw9IE1vZGlmaWVkUGFyYW1ldGVyRmVhdHVyZTsKLQor
ICAgIAorICAgIFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+IGNsb3NlZFZhcmlhYmxlczsKKyAg
ICBpZiAobV9wYXJzaW5nQnVpbHRpbikgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghY2FwdHVy
ZWRWYXJpYWJsZXMuc2l6ZSgpKTsKKyAgICAgICAgSWRlbnRpZmllclNldCB1c2VkVmFyaWFibGVz
OworICAgICAgICBzY29wZS0+Z2V0VXNlZFZhcmlhYmxlcyh1c2VkVmFyaWFibGVzKTsKKyAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiB2YXJpYWJsZSA6IHVzZWRWYXJpYWJsZXMpIHsKKyAgICAgICAg
ICAgIGlmIChzY29wZS0+aGFzRGVjbGFyZWRWYXJpYWJsZShJZGVudGlmaWVyKG1fdm0sIHZhcmlh
YmxlLmdldCgpKSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGlmIChzY29wZS0+aGFzRGVjbGFyZWRQYXJhbWV0ZXIoSWRlbnRpZmllcihtX3Zt
LCB2YXJpYWJsZS5nZXQoKSkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgY2xvc2VkVmFyaWFibGVzLmFwcGVuZCh2YXJpYWJsZSk7CisgICAgICAgIH0KKyAgICB9CiAg
ICAgZGlkRmluaXNoUGFyc2luZyhzb3VyY2VFbGVtZW50cywgY29udGV4dC52YXJEZWNsYXJhdGlv
bnMoKSwgY29udGV4dC5mdW5jRGVjbGFyYXRpb25zKCksIGZlYXR1cmVzLAotICAgICAgICBjb250
ZXh0Lm51bUNvbnN0YW50cygpLCBjYXB0dXJlZFZhcmlhYmxlcyk7CisgICAgICAgIGNvbnRleHQu
bnVtQ29uc3RhbnRzKCksIGNhcHR1cmVkVmFyaWFibGVzLCBzdGQ6Om1vdmUoY2xvc2VkVmFyaWFi
bGVzKSk7CiAKICAgICByZXR1cm4gcGFyc2VFcnJvcjsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IExleGVyVHlwZT4KIHZvaWQgUGFyc2VyPExleGVyVHlwZT46OmRpZEZpbmlzaFBhcnNpbmcoU291
cmNlRWxlbWVudHMqIHNvdXJjZUVsZW1lbnRzLCBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25T
dGFja3M6OlZhclN0YWNrPiogdmFyU3RhY2ssIAotICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJh
dGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qIGZ1bmNTdGFjaywgQ29kZUZlYXR1cmVzIGZlYXR1
cmVzLCBpbnQgbnVtQ29uc3RhbnRzLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcnMpCisgICAg
UGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiogZnVuY1N0
YWNrLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMsIElkZW50aWZpZXJT
ZXQmIGNhcHR1cmVkVmFycywgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJiBjbG9z
ZWRWYXJpYWJsZXMpCiB7CiAgICAgbV9zb3VyY2VFbGVtZW50cyA9IHNvdXJjZUVsZW1lbnRzOwog
ICAgIG1fdmFyRGVjbGFyYXRpb25zID0gdmFyU3RhY2s7CiAgICAgbV9mdW5jRGVjbGFyYXRpb25z
ID0gZnVuY1N0YWNrOwogICAgIG1fY2FwdHVyZWRWYXJpYWJsZXMuc3dhcChjYXB0dXJlZFZhcnMp
OworICAgIG1fY2xvc2VkVmFyaWFibGVzID0gY2xvc2VkVmFyaWFibGVzOwogICAgIG1fZmVhdHVy
ZXMgPSBmZWF0dXJlczsKICAgICBtX251bUNvbnN0YW50cyA9IG51bUNvbnN0YW50czsKIH0KQEAg
LTIzNDYsNiArMjM2MywxMCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPiB2b2lkIFBh
cnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRUb2tlblRleHQoVwogICAgIGNhc2UgUkVT
RVJWRUQ6CiAgICAgICAgIG91dC5wcmludCgiVW5leHBlY3RlZCB1c2Ugb2YgcmVzZXJ2ZWQgd29y
ZCAnIiwgZ2V0VG9rZW4oKSwgIiciKTsKICAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBJTlZB
TElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzoKKyAgICAgICAgb3V0LnByaW50KCJJbnZhbGlkIHBy
aXZhdGUgbmFtZSAnIiwgZ2V0VG9rZW4oKSwgIiciKTsKKyAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgCiAgICAgY2FzZSBJREVOVDoKICAgICAgICAgb3V0LnByaW50KCJVbmV4cGVjdGVkIGlk
ZW50aWZpZXIgJyIsIGdldFRva2VuKCksICInIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaAppbmRleCBiNjk4ZWY5MzY4Y2I4YzhmMTk3Y2NkMDAwYWNhYTZkZmIxMWJhMjQ0Li45
MDMzODUwYzhjOTdmNTdlMjFkYTVlZWRiMDJkMDQ0ZjRjODk3OGViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTIzLDYgKzIzLDcgQEAKICNpZm5kZWYgUGFyc2VyX2gK
ICNkZWZpbmUgUGFyc2VyX2gKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5j
bHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVk
ZSAiRXhlY3V0YWJsZS5oIgpAQCAtMjU5LDYgKzI2MCwxMCBAQCBzdHJ1Y3QgU2NvcGUgewogICAg
ICAgICByZXR1cm4gaXNWYWxpZFN0cmljdE1vZGUgPyBCaW5kaW5nU3VjY2VlZGVkIDogU3RyaWN0
QmluZGluZ0ZhaWxlZDsKICAgICB9CiAKKyAgICB2b2lkIGdldFVzZWRWYXJpYWJsZXMoSWRlbnRp
ZmllclNldCYgdXNlZFZhcmlhYmxlcykKKyAgICB7CisgICAgICAgIHVzZWRWYXJpYWJsZXMuc3dh
cChtX3VzZWRWYXJpYWJsZXMpOworICAgIH0KIAogICAgIHZvaWQgdXNlVmFyaWFibGUoY29uc3Qg
SWRlbnRpZmllciogaWRlbnQsIGJvb2wgaXNFdmFsKQogICAgIHsKQEAgLTQxNCw2ICs0MTksNyBA
QCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYp
OwogCiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbGV4ZXItPnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsgfQorICAgIGNv
bnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYgY2xvc2VkVmFyaWFibGVzKCkgeyByZXR1
cm4gc3RkOjptb3ZlKG1fY2xvc2VkVmFyaWFibGVzKTsgfQogCiBwcml2YXRlOgogICAgIHN0cnVj
dCBBbGxvd0luT3ZlcnJpZGUgewpAQCAtNTQwLDcgKzU0Niw3IEBAIHByaXZhdGU6CiAgICAgU3Ry
aW5nIHBhcnNlSW5uZXIoKTsKIAogICAgIHZvaWQgZGlkRmluaXNoUGFyc2luZyhTb3VyY2VFbGVt
ZW50cyosIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+KiwgCi0g
ICAgICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4q
LCBDb2RlRmVhdHVyZXMsIGludCwgSWRlbnRpZmllclNldCYpOworICAgICAgICBQYXJzZXJBcmVu
YURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KiwgQ29kZUZlYXR1cmVzLCBp
bnQsIElkZW50aWZpZXJTZXQmLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmKTsK
IAogICAgIC8vIFVzZWQgdG8gZGV0ZXJtaW5lIHR5cGUgb2YgZXJyb3IgdG8gcmVwb3J0LgogICAg
IGJvb2wgaXNGdW5jdGlvbkJvZHlOb2RlKFNjb3BlTm9kZSopIHsgcmV0dXJuIGZhbHNlOyB9CkBA
IC04NDAsOSArODQ2LDExIEBAIHByaXZhdGU6CiAgICAgY29uc3QgSWRlbnRpZmllciogbV9sYXN0
RnVuY3Rpb25OYW1lOwogICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlckNhY2hlPiBtX2Z1bmN0aW9u
Q2FjaGU7CiAgICAgU291cmNlRWxlbWVudHMqIG1fc291cmNlRWxlbWVudHM7CisgICAgYm9vbCBt
X3BhcnNpbmdCdWlsdGluOwogICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6
VmFyU3RhY2s+KiBtX3ZhckRlY2xhcmF0aW9uczsKICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFy
YXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KiBtX2Z1bmNEZWNsYXJhdGlvbnM7CiAgICAgSWRl
bnRpZmllclNldCBtX2NhcHR1cmVkVmFyaWFibGVzOworICAgIFZlY3RvcjxSZWZQdHI8U3RyaW5n
SW1wbD4+IG1fY2xvc2VkVmFyaWFibGVzOwogICAgIENvZGVGZWF0dXJlcyBtX2ZlYXR1cmVzOwog
ICAgIGludCBtX251bUNvbnN0YW50czsKICAgICAKQEAgLTk1Nyw2ICs5NjUsMTAgQEAgUGFzc1Jl
ZlB0cjxQYXJzZWROb2RlPiBwYXJzZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
RnVuY3Rpb25QYXJhbWV0ZXIKICAgICAgICAgUmVmUHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBh
cnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvcik7CiAgICAgICAgIGlmIChwb3NpdGlvbkJlZm9y
ZUxhc3ROZXdsaW5lKQogICAgICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBw
YXJzZXIucG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOworICAgICAgICBpZiAoc3RyaWN0bmVz
cyA9PSBKU1BhcnNlQnVpbHRpbikgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0
KTsKKyAgICAgICAgICAgIHJlc3VsdC0+c2V0Q2xvc2VkVmFyaWFibGVzKHN0ZDo6bW92ZShwYXJz
ZXIuY2xvc2VkVmFyaWFibGVzKCkpKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0
LnJlbGVhc2UoKTsKICAgICB9CiAgICAgUGFyc2VyPExleGVyPFVDaGFyPj4gcGFyc2VyKHZtLCBz
b3VyY2UsIHBhcmFtZXRlcnMsIG5hbWUsIHN0cmljdG5lc3MsIHBhcnNlck1vZGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCmluZGV4IDRlOWExN2NkMjFjYTM0
MTQ2YmJkNDgxNTZhMzcyY2Q0MDRkZWY2MGMuLmY3YTc1YmY3YzM3ODU3ZTQ0YjZkNWQ3MWY0NTI5
YmIxYWMxY2Y1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyTW9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVz
LmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gSlNQYXJzZXJT
dHJpY3RuZXNzIHsgSlNQYXJzZU5vcm1hbCwgSlNQYXJzZVN0cmljdCB9OworZW51bSBKU1BhcnNl
clN0cmljdG5lc3MgeyBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlQnVpbHRpbiwgSlNQYXJzZVN0cmlj
dCB9OwogZW51bSBKU1BhcnNlck1vZGUgeyBKU1BhcnNlUHJvZ3JhbUNvZGUsIEpTUGFyc2VGdW5j
dGlvbkNvZGUgfTsKIAogZW51bSBQcm9maWxlck1vZGUgeyBQcm9maWxlck9mZiwgUHJvZmlsZXJP
biB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tl
bnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXgg
ODJhMjY2MzlhNzkyMjBhMDg0NDU2YjQ4ZjMyODUyZDE0M2M3MzlkMC4uOGM4N2FkOWZhZGJkYzRh
ZjM5YWM5OWRiMmQ4NDQ1ZTEzZmZmZDM1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlclRva2Vucy5oCkBAIC0xNDksNiArMTQ5LDcgQEAgZW51bSBKU1Rva2VuVHlwZSB7
CiAgICAgSU5WQUxJRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0sgPSA3IHwgRXJyb3JUb2tlbkZs
YWcsCiAgICAgVU5URVJNSU5BVEVEX1NUUklOR19MSVRFUkFMX0VSUk9SVE9LID0gOCB8IEVycm9y
VG9rZW5GbGFnIHwgVW50ZXJtaW5hdGVkRXJyb3JUb2tlbkZsYWcsCiAgICAgSU5WQUxJRF9TVFJJ
TkdfTElURVJBTF9FUlJPUlRPSyA9IDkgfCBFcnJvclRva2VuRmxhZywKKyAgICBJTlZBTElEX1BS
SVZBVEVfTkFNRV9FUlJPUlRPSyA9IDEwIHwgRXJyb3JUb2tlbkZsYWcKIH07CiAKIHN0cnVjdCBK
U1RleHRQb3NpdGlvbiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvTGVnYWN5UHJvZmlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0xl
Z2FjeVByb2ZpbGVyLmNwcAppbmRleCBkZDJhY2Q5ZjBlOGM3ZWUxNjg0MDYxZjUyYzc3ZTc4Yjhm
Y2ZhOTVmLi4wMjYwNzBmOTU5ODI0OTlkMjczYjhkZDRjY2U0YThmODYyZmI2NmVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvTGVnYWN5UHJvZmlsZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9MZWdhY3lQcm9maWxlci5jcHAKQEAg
LTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb21tb25J
ZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9u
cy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmNwcAppbmRleCBlMTMx
MDRkZjU5MjJkMDc3NjI1N2QwNWNiNWU4NzA1MzdkMjE0MjhhLi4yNGMwNmJiYjFjMmMzNGI5ZGE1
ZWY4NGIyNTVjOTkwMGRhZjg1OTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcmdMaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cmdMaXN0LmNwcApAQCAtMjIsNyArMjIsNyBAQAogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKIAogI2lu
Y2x1ZGUgIkhlYXBSb290VmlzaXRvci5oIgotI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNs
dWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiT3BlcmF0aW9ucy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Bcmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1l
bnRzLmNwcAppbmRleCA4ZmQxOTVjYjliNWY3ZWY1YmYzZDJmZDkzMzQyYjAxMDI3MjVmYWYxLi40
ZmJhYzY4ODYzNDg2MTcxNjQ5YTMzNGQ2MWI1ZGNjMzgxNGRkNTU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNs
dWRlICJBcmd1bWVudHMuaCIKIAogI2luY2x1ZGUgIkNhbGxGcmFtZUlubGluZXMuaCIKKyNpbmNs
dWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTQXJndW1lbnRzSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCmluZGV4IDE4ZjM4OTE3MTM4
NTIzNjJjN2E3NWEzMDUzYjQ2MzE0MTdiZWI4MWIuLmYxNmZkM2RlNDA1NTk3MGJhOWQ5YzZmMGFl
NjMxOGYyMjA0YjY1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50
cy5oCkBAIC0yNSw2ICsyNSw3IEBACiAjZGVmaW5lIEFyZ3VtZW50c19oCiAKICNpbmNsdWRlICJD
b2RlT3JpZ2luLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJK
U0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgogI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYWZiNTk3
OTBjYjAwOTk4OWJiN2I0Mjg2M2U5MTgyMzM1NzZiOGFhYy4uOTFjYWNkZmE4NTdlYjY5Mzc2YTMw
ODFhOGM3MDJhYzljMjE3Y2E3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTI3
LDYgKzI3LDcgQEAKICNpbmNsdWRlICJBcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmgiCiAK
ICNpbmNsdWRlICJBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkNvbW1v
bklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiSlNBcmd1bWVudHNJdGVyYXRvci5oIgogI2luY2x1
ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRl
cmF0b3JQcm90b3R5cGUuY3BwCmluZGV4IGRkMDg5NGYxNGEwMjFkNWYxMjY1OGFjYjAxZTcyMWZj
ZDZkMzQ4Y2MuLjViNGFlODcxNmIwNTUzYmU0NjIzOTU1ZTk5ZTFiNDNlYmYxOGZlMmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJv
dG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJ
dGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTI2LDcgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5oIgogCisjaW5jbHVkZSAi
Q29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJKU0FyZ3VtZW50c0l0ZXJhdG9yLmgiCisj
aW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCAy
N2FjNmQ0OGE3MWY3OTU1MDJhMTBjZWE2NDc4NjU0MTM1YTQ2M2EwLi42ZGM3YmU1Njk2OWRlNjdm
NjIxMDdiYjNhNTFhMzA4ZmEzYmE3NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAi
SklULmgiCiAjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdC
dWlsZGVyLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTdHJp
bmdKb2luZXIuaCIKICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5
cGUuaCIKQEAgLTU2LDcgKzU3LDYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU29ydChFeGVjU3RhdGUqKTsKIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU3BsaWNlKEV4ZWNTdGF0
ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNV
blNoaWZ0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlQcm90b0Z1bmNFdmVyeShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRm9yRWFjaChFeGVjU3RhdGUqKTsKIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU29tZShFeGVjU3RhdGUq
KTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jSW5k
ZXhPZihFeGVjU3RhdGUqKTsKQEAgLTk1NCw2OSArOTU0LDYgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY01hcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHRBcnJheSk7CiB9CiAKLS8vIERvY3VtZW50YXRpb24gZm9y
IHRoZXNlIHRocmVlIGlzIGF2YWlsYWJsZSBhdDoKLS8vIGh0dHA6Ly9kZXZlbG9wZXItdGVzdC5t
b3ppbGxhLm9yZy9lbi9kb2NzL0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6
QXJyYXk6ZXZlcnkKLS8vIGh0dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3ppbGxhLm9yZy9lbi9kb2Nz
L0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6QXJyYXk6Zm9yRWFjaAotLy8g
aHR0cDovL2RldmVsb3Blci10ZXN0Lm1vemlsbGEub3JnL2VuL2RvY3MvQ29yZV9KYXZhU2NyaXB0
XzEuNV9SZWZlcmVuY2U6T2JqZWN0czpBcnJheTpzb21lCi0KLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNFdmVyeShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNP
YmplY3QqIHRoaXNPYmogPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmlj
dE1vZGUpLnRvT2JqZWN0KGV4ZWMpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmotPmdl
dChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKS50b1VJbnQzMihleGVjKTsKLSAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Ci0KLSAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gZXhlYy0+YXJndW1l
bnQoMCk7Ci0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBn
ZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxs
VHlwZU5vbmUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwotCi0gICAg
SlNWYWx1ZSBhcHBseVRoaXMgPSBleGVjLT5hcmd1bWVudCgxKTsKLQotICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNCb29sZWFuKHRydWUpOwotCi0gICAgdW5zaWduZWQgayA9IDA7Ci0gICAgaWYgKGNh
bGxUeXBlID09IENhbGxUeXBlSlMgJiYgaXNKU0FycmF5KHRoaXNPYmopKSB7Ci0gICAgICAgIEpT
RnVuY3Rpb24qIGYgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGZ1bmN0aW9uKTsKLSAgICAgICAgSlNB
cnJheSogYXJyYXkgPSBhc0FycmF5KHRoaXNPYmopOwotICAgICAgICBDYWNoZWRDYWxsIGNhY2hl
ZENhbGwoZXhlYywgZiwgMyk7Ci0gICAgICAgIGZvciAoOyBrIDwgbGVuZ3RoICYmICFleGVjLT5o
YWRFeGNlcHRpb24oKTsgKytrKSB7Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWFycmF5LT5j
YW5HZXRJbmRleFF1aWNrbHkoaykpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldFRoaXMoYXBwbHlUaGlzKTsKLSAgICAgICAg
ICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoMCwgYXJyYXktPmdldEluZGV4UXVpY2tseShrKSk7
Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDEsIGpzTnVtYmVyKGspKTsKLSAg
ICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoMiwgdGhpc09iaik7Ci0gICAgICAgICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGNhY2hlZENhbGwuY2FsbCgpOwotICAgICAgICAgICAgaWYgKCFy
ZXN1bHQudG9Cb29sZWFuKGV4ZWMpKQotICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNCb29sZWFuKGZhbHNlKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZm9yICg7IGsg
PCBsZW5ndGggJiYgIWV4ZWMtPmhhZEV4Y2VwdGlvbigpOyArK2spIHsKLSAgICAgICAgUHJvcGVy
dHlTbG90IHNsb3QodGhpc09iaik7Ci0gICAgICAgIGlmICghdGhpc09iai0+Z2V0UHJvcGVydHlT
bG90KGV4ZWMsIGssIHNsb3QpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgTWFy
a2VkQXJndW1lbnRCdWZmZXIgZWFjaEFyZ3VtZW50czsKLSAgICAgICAgZWFjaEFyZ3VtZW50cy5h
cHBlbmQoc2xvdC5nZXRWYWx1ZShleGVjLCBrKSk7Ci0gICAgICAgIGVhY2hBcmd1bWVudHMuYXBw
ZW5kKGpzTnVtYmVyKGspKTsKLSAgICAgICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQodGhpc09iaik7
Ci0KLSAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQotICAgICAgICBib29sIHByZWRpY2F0
ZVJlc3VsdCA9IGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgYXBwbHlU
aGlzLCBlYWNoQXJndW1lbnRzKS50b0Jvb2xlYW4oZXhlYyk7Ci0gICAgICAgIGlmICghcHJlZGlj
YXRlUmVzdWx0KSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBqc0Jvb2xlYW4oZmFsc2UpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7Ci19Ci0KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQ
cm90b0Z1bmNGb3JFYWNoKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU09iamVjdCogdGhpc09i
aiA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmpl
Y3QoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2Rl
Q2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApp
bmRleCA1MTBlMzgzZmFlNTc1YWFkYTgxNzZjMDQ0MWVlNzI1YjQzYTRjNzMyLi5kMzA0ODc3ZmU5
Y2RlMWMwOTE5ZmQ0NTk1ZjgxMWVjYWJjZTc3Mjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTE0NCwyNCArMTQ0LDI2IEBAIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9i
YWxDb2RlKFZNJiB2CiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGlu
ZTsKICAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4o
JnZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIoKSwgSlNQYXJzZU5vcm1hbCwgSlNQYXJzZVByb2dy
YW1Db2RlLCBlcnJvciwgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwogICAgIGlmICghcHJv
Z3JhbSkgewotICAgICAgICBBU1NFUlQoZXJyb3IubV90eXBlICE9IFBhcnNlckVycm9yOjpFcnJv
ck5vbmUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChlcnJvci5tX3R5cGUgIT0gUGFyc2VyRXJy
b3I6OkVycm9yTm9uZSk7CiAgICAgICAgIG1fc291cmNlQ29kZS5yZW1vdmUoYWRkUmVzdWx0Lml0
ZXJhdG9yKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgICAgLy8gVGhpcyBmdW5jdGlv
biBhc3N1bWVzIGFuIGlucHV0IHN0cmluZyB0aGF0IHdvdWxkIHJlc3VsdCBpbiBhIHNpbmdsZSBh
bm9ueW1vdXMgZnVuY3Rpb24gZXhwcmVzc2lvbi4KICAgICBTdGF0ZW1lbnROb2RlKiBleHByU3Rh
dGVtZW50ID0gcHJvZ3JhbS0+c2luZ2xlU3RhdGVtZW50KCk7Ci0gICAgQVNTRVJUKGV4cHJTdGF0
ZW1lbnQpOwotICAgIEFTU0VSVChleHByU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhw
clN0YXRlbWVudC0+aXNFeHByU3RhdGVtZW50KCkpOwogICAgIEV4cHJlc3Npb25Ob2RlKiBmdW5j
RXhwciA9IHN0YXRpY19jYXN0PEV4cHJTdGF0ZW1lbnROb2RlKj4oZXhwclN0YXRlbWVudCktPmV4
cHIoKTsKLSAgICBBU1NFUlQoZnVuY0V4cHIpOworICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmNFeHBy
KTsKICAgICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwci0+aXNGdW5jRXhwck5vZGUoKSk7CiAgICAg
RnVuY3Rpb25Cb2R5Tm9kZSogYm9keSA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGZ1bmNF
eHByKS0+Ym9keSgpOworICAgIFJFTEVBU0VfQVNTRVJUKCFwcm9ncmFtLT5oYXNDYXB0dXJlZFZh
cmlhYmxlcygpKTsKKyAgICAKICAgICBib2R5LT5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9y
ZUxhc3ROZXdsaW5lKTsKLSAgICBBU1NFUlQoYm9keSk7Ci0gICAgQVNTRVJUKGJvZHktPmlkZW50
KCkuaXNOdWxsKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGJvZHkpOworICAgIFJFTEVBU0VfQVNT
RVJUKGJvZHktPmlkZW50KCkuaXNOdWxsKCkpOwogCi0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
cmVhdGUoJnZtLCBzb3VyY2UsIGJvZHksIHRydWUpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y3JlYXRlKCZ2bSwgc291cmNlLCBib2R5LCB0cnVlLCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uKTsK
ICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPm1fbmFtZVZhbHVlLnNldCh2bSwgZnVuY3Rpb25FeGVj
dXRhYmxlLCBqc1N0cmluZygmdm0sIG5hbWUuc3RyaW5nKCkpKTsKIAogICAgIGFkZFJlc3VsdC5p
dGVyYXRvci0+dmFsdWUgPSBTb3VyY2VDb2RlVmFsdWUodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwg
bV9zb3VyY2VDb2RlLmFnZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcAppbmRleCAzZjVjNjQ1YzA5OGQ1MjdmYzBjNzI1OWU5
NDQ3ZWZiZTg4NjhhMjljLi4yZmMyYjcyN2FmY2VlZTFlYzJjNjI1ZGU1Njc1YjNiZTFjZjYwZDc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuY3BwCkBAIC0yNyw3ICsyNywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2RlZmluZSBJ
TklUSUFMSVpFX1BST1BFUlRZX05BTUUobmFtZSkgLCBuYW1lKHZtLCAjbmFtZSkKICNkZWZpbmUg
SU5JVElBTElaRV9LRVlXT1JEKG5hbWUpICwgbmFtZSMjS2V5d29yZCh2bSwgI25hbWUpCi0jZGVm
aW5lIElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKG5hbWUpICwgbmFtZSMjUHJpdmF0ZU5hbWUoSWRl
bnRpZmllcjo6ZnJvbShQcml2YXRlTmFtZSgpKSkKKyNkZWZpbmUgSU5JVElBTElaRV9QUklWQVRF
X05BTUUobmFtZSkgXAorICAgICwgbmFtZSMjUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbShQ
cml2YXRlTmFtZSgpKSkgXAorICAgICwgbV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIobmFtZSwg
bmFtZSMjUHJpdmF0ZU5hbWUpIFwKKwogCiBDb21tb25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRp
ZmllcnMoVk0qIHZtKQogICAgIDogbnVsbElkZW50aWZpZXIoKQpAQCAtMzgsOCArNDEsMjYgQEAg
Q29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZNKiB2bSkKICAgICAsIGhhc05l
eHRJZGVudGlmaWVyKHZtLCAiaGFzTmV4dCIpCiAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19F
QUNIX0tFWVdPUkQoSU5JVElBTElaRV9LRVlXT1JEKQogICAgIEpTQ19DT01NT05fSURFTlRJRklF
UlNfRUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRSkKKyAgICBKU0Nf
Rk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKQog
ICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5J
VElBTElaRV9QUklWQVRFX05BTUUpCiB7CiB9CiAKK2NvbnN0IElkZW50aWZpZXIqIENvbW1vbklk
ZW50aWZpZXJzOjpnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QK
K3sKKyNkZWZpbmUgUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKG5hbWUpIGlmIChtXyMj
bmFtZSMjUHVibGljU3RyaW5nUGFpci5maXJzdCA9PSBpZGVudCkgcmV0dXJuICZtXyMjbmFtZSMj
UHVibGljU3RyaW5nUGFpci5zZWNvbmQ7CisgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJ
RVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShSRVRVUk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMpCisj
dW5kZWYgUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTCisgICAgcmV0dXJuIDA7Cit9CisK
K0lkZW50aWZpZXIgQ29tbW9uSWRlbnRpZmllcnM6OmdldFB1YmxpY05hbWUoY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQpIGNvbnN0Cit7CisjZGVmaW5lIFJFVFVSTl9JRl9QUklWQVRFX05BTUVfTUFU
Q0hFUyhuYW1lKSBpZiAobV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuc2Vjb25kID09IGlkZW50
KSByZXR1cm4gbV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuZmlyc3Q7CisgICAgSlNDX0NPTU1P
Tl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShSRVRVUk5fSUZfUFJJVkFU
RV9OQU1FX01BVENIRVMpCisjdW5kZWYgUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTCisg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZW1wdHlJZGVudGlm
aWVyOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IGU4ZjllZDgyYmM3OTQ2MjAzODI2
NmIzMDIwNzgyMjQ3YjFmYTI3YTMuLjkyNGQzNmFjNjkxMzUwMzU3Y2IzODJiMWVmM2I0MGEwYTA4
YzBhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaApAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBDb21tb25JZGVudGlmaWVyc19o
CiAKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogLy8gTWFya2VkQXJndW1lbnRCdWZmZXIgb2Yg
cHJvcGVydHkgbmFtZXMsIHBhc3NlZCB0byBhIG1hY3JvIHNvIHdlIGNhbiBkbyBzZXQgdGhlbSB1
cCB2YXJpb3VzCkBAIC0xMzMsOCArMTM0LDEwIEBACiAgICAgbWFjcm8ob3NyRXhpdHMpIFwKICAg
ICBtYWNybyhwYXJzZSkgXAogICAgIG1hY3JvKHByb2ZpbGVkQnl0ZWNvZGVzKSBcCisgICAgbWFj
cm8ocHJvbWlzZSkgXAogICAgIG1hY3JvKHByb3BlcnR5SXNFbnVtZXJhYmxlKSBcCiAgICAgbWFj
cm8ocHJvdG90eXBlKSBcCisgICAgbWFjcm8ocmVzb2x2ZSkgXAogICAgIG1hY3JvKHNldCkgXAog
ICAgIG1hY3JvKHNpemUpIFwKICAgICBtYWNybyhzbGljZSkgXApAQCAtMTU1LDcgKzE1OCwxNCBA
QAogICAgIG1hY3JvKHZhbHVlcykgXAogICAgIG1hY3JvKHZhbHVlT2YpIFwKICAgICBtYWNybyh3
aW5kb3cpIFwKLSAgICBtYWNybyh3cml0YWJsZSkKKyAgICBtYWNybyh3cml0YWJsZSkgXAorICAg
IG1hY3JvKGl0ZXJhdG9yKSBcCisgICAgbWFjcm8oaXRlcmF0b3JOZXh0KSBcCisgICAgbWFjcm8o
cmVqZWN0KSBcCisgICAgbWFjcm8oZnVsZmlsbG1lbnRIYW5kbGVyKSBcCisgICAgbWFjcm8ocmVq
ZWN0aW9uSGFuZGxlcikgXAorICAgIG1hY3JvKGRlZmVycmVkKSBcCisgICAgbWFjcm8oY291bnRk
b3duSG9sZGVyKSBcCiAKICNkZWZpbmUgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX0tFWVdP
UkQobWFjcm8pIFwKICAgICBtYWNybyhicmVhaykgXApAQCAtMjAzLDcgKzIxMyw3IEBACiAgICAg
bWFjcm8odm9pZCkgXAogICAgIG1hY3JvKHdoaWxlKSBcCiAgICAgbWFjcm8od2l0aCkgXAotICAg
IG1hY3JvKHlpZWxkKQorICAgIG1hY3JvKHlpZWxkKSBcCiAKICNkZWZpbmUgSlNDX0NPTU1PTl9Q
UklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShtYWNybykgXAogICAgIG1hY3Jv
KGl0ZXJhdG9yKSBcCkBAIC0yMTYsNyArMjI2LDEyIEBACiAgICAgbWFjcm8oaW5kZXgpIFwKICAg
ICBtYWNybyh2YWx1ZXMpIFwKICAgICBtYWNybyhkZWZlcnJlZCkgXAotICAgIG1hY3JvKGNvdW50
ZG93bkhvbGRlcikKKyAgICBtYWNybyhjb3VudGRvd25Ib2xkZXIpIFwKKyAgICBtYWNybyhPYmpl
Y3QpIFwKKyAgICBtYWNybyhUeXBlRXJyb3IpIFwKKyAgICBtYWNybyh1bmRlZmluZWRLZXl3b3Jk
KSBcCisgICAgbWFjcm8oY2FsbCkgXAorICAgIG1hY3JvKGFwcGx5KQogCiBuYW1lc3BhY2UgSlND
IHsKIApAQCAtMjQwLDExICsyNTUsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2Rl
ZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFMKG5hbWUpIGNv
bnN0IElkZW50aWZpZXIgbmFtZTsKICAgICAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNI
X1BST1BFUlRZX05BTUUoSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJUWV9OQU1FX0dMT0JB
TCkKKyAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKEpTQ19JREVOVElG
SUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwpCiAjdW5kZWYgSlNDX0lERU5USUZJRVJf
REVDTEFSRV9QUk9QRVJUWV9OQU1FX0dMT0JBTAogCi0jZGVmaW5lIEpTQ19JREVOVElGSUVSX0RF
Q0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVy
IG5hbWUjI1ByaXZhdGVOYW1lOworI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZB
VEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwobmFtZSkgY29uc3QgSWRlbnRpZmllciBuYW1lIyNQcml2
YXRlTmFtZTsgY29uc3Qgc3RkOjpwYWlyPElkZW50aWZpZXIsIElkZW50aWZpZXI+IG1fIyNuYW1l
IyNQdWJsaWNTdHJpbmdQYWlyOwogICAgICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklF
UlNfRUFDSF9QUk9QRVJUWV9OQU1FKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9Q
RVJUWV9OQU1FX0dMT0JBTCkKICN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVf
UFJPUEVSVFlfTkFNRV9HTE9CQUwKKyAgICAgICAgCisgICAgICAgIGNvbnN0IElkZW50aWZpZXIq
IGdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKKyAgICAgICAgSWRlbnRp
ZmllciBnZXRQdWJsaWNOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKICAgICB9OwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCmluZGV4IDA3NTg3NWZiMjMxNmE1NTU3MDUwYTY2OTBjZDBmOTg4
MjQ4NGY1ZjMuLjVhZjkwODc1NGU3NDdmOGNhZTBjZDA0YWY4ZDQ5MTUwMDQ2OGMyYTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApA
QCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgi
CiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlO
YW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmgKaW5kZXggNjhmNjQwODRmYTI4MTEyZmVlMGQ5NDQyZGJkZWUzOGQ1MjExNDU3
MS4uOGQ4YzhmZWQ1NGQyMjQ1ZjBhN2ZmNTI2N2JmZmIxYjgyMTkwZGI1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRp
b25LaW5kLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgorI2luY2x1ZGUgIkpTRnVu
Y3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTdGFja0lubGluZXMuaCIKICNpbmNsdWRlICJO
YW1lSW5zdGFuY2UuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRp
b25zLmNwcAppbmRleCA1NTMzNGJlMmY5ODBhOThmN2ZlYTQyYTA1YmUwZjIwYzAxOWZmMGRkLi5m
YTU3YzAyNjg1ZTUzZDUyNTI4ODA1N2UyMTFkOThiMTA5ODFkNzNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRp
b25zLmNwcApAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJK
U0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5j
bHVkZSAiTExJbnRDb21tb24uaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBDb21tb25T
bG93UGF0aHMgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRp
b25IZWxwZXJzLmNwcAppbmRleCAwNWUxMWUwYjgwYTM0MzBhZWFiMjJiMDIyMmEyMTJmNGE4ZTJj
NDliLi4zNjRjYzcxNjY2MDhiNTAwN2Q0NzdkODczOTE4YTVkNjRiMTY4NjU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAt
ODEsNiArODEsMTEgQEAgSlNPYmplY3QqIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiBKU09iamVjdCogY3JlYXRlVW5kZWZpbmVkVmFyaWFi
bGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogeworICAg
IAorICAgIGlmIChpZGVudC5pbXBsKCktPmlzRW1wdHlVbmlxdWUoKSkgeworICAgICAgICBTdHJp
bmcgbWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBmaW5kIHByaXZhdGUgdmFyaWFibGU6IEAiLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2V0UHVibGljTmFtZShpZGVudCkuc3RyaW5nKCkpKTsKKyAg
ICAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIG1lc3NhZ2UpOworICAgIH0K
ICAgICBTdHJpbmcgbWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBmaW5kIHZhcmlhYmxlOiAiLCBp
ZGVudC5zdHJpbmcoKSkpOwogICAgIHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBt
ZXNzYWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApp
bmRleCAxOTg5NzZiYjNmZTZlNmU5MTE3OTgxMmQxY2FmOWI4YmY5YmZkMGJiLi5jZjBlNzUzYTdj
NWY1NDQ2N2I2NGQ4ZTJhOWIzZmJhMjcxNTAwMDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC00ODQsNyArNDg0LDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBjbGVhckNvZGUoKTsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkg
Y29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFs
KCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRh
YmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigp
LCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlKTsgfQogCiAgICAgdW5z
aWduZWQgbnVtVmFyaWFibGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51
bVZhcmlhYmxlcygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCkgeyBy
ZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpOyB9
CkBAIC01NDAsNyArNTQwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckNvZGUoKTsKIAot
ICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0
YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBm
YWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0
dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmlj
dE1vZGUoKSwgZmFsc2UsIGZhbHNlKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBT
Y3JpcHRFeGVjdXRhYmxlOwpAQCAtNjI4LDcgKzYyOCw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIHJldHVybiBiYXNlbGluZUNvZGVCbG9ja0ZvcihraW5kKTsKICAgICB9Ci0gICAgICAgIAor
CisgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRF
eGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYg
bmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1lKCk7IH0KICAgICBjb25z
dCBJZGVudGlmaWVyJiBpbmZlcnJlZE5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJs
ZS0+aW5mZXJyZWROYW1lKCk7IH0KICAgICBKU1N0cmluZyogbmFtZVZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWVWYWx1ZSgpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKaW5kZXggYzFi
MDhhZjJkODE4ZGFlNTdlMWIwMGZkYTE3M2E4MTYxMzc1MjliNS4uMTI0OTBjNDBmMzM0MTdlY2E5
MjM4NTBhMGRjNjYyZGJiY2Q0MGYzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcApAQCAtMjIsMTIgKzIyLDEzIEBACiAjaW5j
bHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2lu
Y2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpT
Qm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1N0
cmluZy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5oIgotI2luY2x1ZGUgIkludGVycHJl
dGVyLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTGV4ZXIuaCIK
ICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKQEAgLTEwOCw3ICsxMDksNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBl
eGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAg
IGlmICh0aGlzVmFsdWUuaW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkgewogICAgICAgICBK
U0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4odGhpc1ZhbHVlKTsKLSAg
ICAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpKQorICAgICAgICBpZiAoZnVuY3Rp
b24tPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgImZ1bmN0aW9uICIsIGZ1bmN0
aW9uLT5uYW1lKGV4ZWMpLCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iKSk7CiAgICAgICAg
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUo
KTsKICAgICAgICAgU3RyaW5nIHNvdXJjZVN0cmluZyA9IGV4ZWN1dGFibGUtPnNvdXJjZSgpLnRv
U3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fj
dGl2YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9u
LmNwcAppbmRleCA3MmVkMWM3MTI0MDYxMTY4YjBhZGRkMzExNmY3NTVhMTE3YjhmYjkwLi5iMzc0
OTQzMDk5ZTIxNTVhMzk3NzEzMzEzNDcwMmMyYTI0YWNjODZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdm9p
ZCBKU0FjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKIAogaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZUdldChQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgU3ltYm9s
VGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUu
cHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUo
KS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGVudHJ5LmlzTnVsbCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTcyLDcgKzcyLDcgQEAgaW5saW5lIGJvb2wg
SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QKIAogaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZUdldChQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Ip
CiB7Ci0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdl
dChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5
ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYg
KGVudHJ5LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTg5LDcgKzg5LDcg
QEAgaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dChFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU4KICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
IEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6
aGVhcCh0aGlzKSk7CiAgICAgCi0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRh
YmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xU
YWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS51
aWQoKSk7CiAgICAgaWYgKGVudHJ5LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgaWYgKGVudHJ5LmlzUmVhZE9ubHkoKSkgewpAQCAtMTM2LDcgKzEzNiw3IEBAIGlubGluZSBi
b29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyhWTSYgdm0sIFBy
b3BlcnR5TmFtZSBwcm9wCiAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogcmVnOwogICAg
IHsKICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUoKS0+bV9s
b2NrKTsKLSAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRh
YmxlKCktPmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICAgICAg
U3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlKCktPmZpbmQobG9j
a2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJs
ZSgpLT5lbmQobG9ja2VyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgU3lt
Ym9sVGFibGVFbnRyeSYgZW50cnkgPSBpdGVyLT52YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5jcHAKaW5kZXggMmZjZjg4
MTVjMDU2ODA1ODEyYTc5OTFhNWZmMDYzZDY4NzM5NzE2NC4uOWE5MjU4M2FhMGVjOTBkYmIzMjhl
Y2Q1MGRjMzEzOWFlZjAyNzNiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs
dWRlICJKU0FyZ3VtZW50c0l0ZXJhdG9yLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNp
bmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCA5MDA3YjVmN2QzZjEwM2Ix
ZDIxYjFhMzY1YTI2YzIxNWMzMmI0ZDI4Li5iYTBhMmQzOGU5YzUzZTE1OTM3ZDQ2YTg5NTFhOGM4
YzQ1MDc5MjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJHZXR0
ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJJbmRleGluZ0hlYWRlcklubGluZXMuaCIKKyNpbmNsdWRl
ICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogI2lu
Y2x1ZGUgIlJlamVjdC5oIgogI2luY2x1ZGUgPHd0Zi9BVkxUcmVlLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcAppbmRleCBkNTA2YzRl
YmQyNjIwZWZkNzA3OTNhODczZDA4NTJmYmQ5NzgyODU5Li5jZjM3MDk3ZWMwYzY5MjVhODY3Yjhj
MDEwYzBlZmM0MDc0NDg1ZjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkpT
Q0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUg
IkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5jcHAKaW5kZXggY2NhNjg4OGJmOThhMDI4NjQ2Y2EzZGRkZjM3NjI3Y2UwZTdkOTMwMi4uMzM5
YTdhYjdmNTk1MTVlOTZhZmI3ZWM0Yjg3NDFlN2FhOGUxNjZmOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAgLTMyLDcgKzMyLDkgQEAKICNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRl
ICJKU05vdEFuT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiTnVtYmVyT2JqZWN0LmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgPHd0
Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKaW5kZXggZjdjODQ0NjQ1
MDkyYjI1MDgwNWU2ZThkNDgzMmM5OThiZGI4OWI1NC4uZDc5NWRkNTZhOTdkZGI1OTdjMDkwZmMy
ZTBiN2YzMDhlMzNlYmNhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbElubGluZXMuaApAQCAtMjcsOCArMjcsMTAgQEAKICNkZWZpbmUgSlNDZWxsSW5saW5lc19o
CiAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5o
IgogI2luY2x1ZGUgIkRlZmVyR0MuaCIKICNpbmNsdWRlICJIYW5kbGUuaCIKKyNpbmNsdWRlICJK
U0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggMjQxOTY0NjEwYmI0NDI3YjE4NjM3MzM0NmUyNGY1
YTgyZDBjZGNjNC4uYWNlNmMxNDdlNDk3ZmVlMjAyOTJmYjU1Mzk3NjBkNWQ2OTgyOWNlOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTM0LDcg
KzM0LDggQEAKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdldHRl
clNldHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKLSNpbmNsdWRlICJKU0JvdW5kRnVuY3Rp
b24uaCIgCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlv
bklubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTm90
QW5PYmplY3QuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtMTA5LDYgKzExMCwxNCBA
QCB2b2lkIEpTRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgTmF0aXZlRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSwgaW50IGxlbmd0aAogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBE
b250RW51bSk7CiB9CiAKK0pTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5j
dGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNyZWF0ZSh2
bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBmdW5jdGlvbi0+cHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZygmdm0sIGV4ZWN1dGFibGUtPm5hbWUo
KS5zdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBmdW5j
dGlvbi0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKGV4
ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250
RW51bSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uOworfQorCiBPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZSogSlNGdW5jdGlvbjo6Y3JlYXRlQWxsb2NhdGlvblByb2ZpbGUoRXhlY1N0YXRlKiBleGVjLCBz
aXplX3QgaW5saW5lQ2FwYWNpdHkpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTE0
Miw3ICsxNTEsNyBAQCBjb25zdCBTdHJpbmcgSlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlO
YW1lKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIGV4cGxpY2l0TmFtZTsKICAgICAK
ICAgICBjb25zdCBTdHJpbmcgYWN0dWFsTmFtZSA9IG5hbWUoZXhlYyk7Ci0gICAgaWYgKCFhY3R1
YWxOYW1lLmlzRW1wdHkoKSB8fCBpc0hvc3RGdW5jdGlvbigpKQorICAgIGlmICghYWN0dWFsTmFt
ZS5pc0VtcHR5KCkgfHwgaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJu
IGFjdHVhbE5hbWU7CiAgICAgCiAgICAgcmV0dXJuIGpzRXhlY3V0YWJsZSgpLT5pbmZlcnJlZE5h
bWUoKS5zdHJpbmcoKTsKQEAgLTE1MCwxMCArMTU5LDIwIEBAIGNvbnN0IFN0cmluZyBKU0Z1bmN0
aW9uOjpjYWxjdWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQogCiBjb25zdCBTb3Vy
Y2VDb2RlKiBKU0Z1bmN0aW9uOjpzb3VyY2VDb2RlKCkgY29uc3QKIHsKLSAgICBpZiAoaXNIb3N0
RnVuY3Rpb24oKSkKKyAgICBpZiAoaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgcmV0dXJuICZqc0V4ZWN1dGFibGUoKS0+c291cmNlKCk7CiB9CisgICAg
Citib29sIEpTRnVuY3Rpb246OmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gaXNIb3N0RnVuY3Rpb24oKSB8fCBpc0J1aWx0aW5GdW5jdGlvbigpOworfQorCiti
b29sIEpTRnVuY3Rpb246OmlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
IWlzSG9zdEZ1bmN0aW9uKCkgJiYganNFeGVjdXRhYmxlKCktPmlzQnVpbHRpbkZ1bmN0aW9uKCk7
Cit9CiAKIHZvaWQgSlNGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogewpAQCAtMjc3LDcgKzI5Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
RnVuY3Rpb246OmNhbGxlckdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHNs
b3RCYXNlCiAgICAgaWYgKCFjYWxsZXIuaXNPYmplY3QoKSB8fCAhYXNPYmplY3QoY2FsbGVyKS0+
aW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjYWxsZXIpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rp
b24qPihjYWxsZXIpOwotICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSB8fCAhZnVu
Y3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkKKyAgICBpZiAoZnVuY3Rpb24t
PmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgfHwgIWZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKS0+
aXNTdHJpY3RNb2RlKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbGVyKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiRnVuY3Rpb24uY2FsbGVyIHVzZWQgdG8gcmV0cmlldmUgc3RyaWN0IGNhbGxlciIpKSk7
CiB9CkBAIC0yOTksNyArMzE4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNGdW5jdGlvbjo6bmFtZUdl
dHRlcihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBzbG90QmFzZSwgRW5jb2QKIGJvb2wgSlNG
dW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewog
ICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdCk7
Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgaWYgKHRoaXNPYmpl
Y3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBCYXNlOjpnZXRP
d25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIAog
ICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSkg
ewpAQCAtMzYxLDcgKzM4MCw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiB2b2lkIEpTRnVu
Y3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlv
bk1vZGUgbW9kZSkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVu
Y3Rpb24qPihvYmplY3QpOwotICAgIGlmICghdGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSAm
JiAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgeworICAgIGlmICghdGhpc09i
amVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSAmJiAobW9kZSA9PSBJbmNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKSkgewogICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90eXBlIGhhcyBiZWVu
IHJlaWZpZWQuCiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QpOwogICAgICAg
ICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVj
dCwgZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgc2xvdCk7CkBAIC0zNzcs
NyArMzk2LDcgQEAgdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLAogdm9pZCBKU0Z1bmN0aW9uOjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1bmN0aW9u
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKLSAgICBpZiAodGhpc09i
amVjdC0+aXNIb3N0RnVuY3Rpb24oKSkgeworICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1
aWx0aW5GdW5jdGlvbigpKSB7CiAgICAgICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQy
NSw3ICs0NDQsNyBAQCBib29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcAogYm9vbCBKU0Z1bmN0aW9uOjpk
ZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRv
ciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RG
dW5jdGlvbigpKQorICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigp
KQogICAgICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKTsKIAogICAgIGlmIChwcm9w
ZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDdjZDE0YjhjMmQ4MDBmNjFi
ZGMxMmVkZDJkZjA0ZDM1ZmEwNjE5YjYuLjFmYzY0ZTQ2MDZkNTI4Y2UwODkyMjcyMDdiMDFmNTBi
MDViMGMxZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgK
QEAgLTI0LDYgKzI0LDEwIEBACiAjaWZuZGVmIEpTRnVuY3Rpb25faAogI2RlZmluZSBKU0Z1bmN0
aW9uX2gKIAorI2lmICFQTEFURk9STShNQUMpICYmIChDT01QSUxFUihHQ0MpIHx8IENPTVBJTEVS
KENMQU5HKSkKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdpbmxpbmUiCisjZW5k
aWYKKwogI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0Rlc3RydWN0
aWJsZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTU2NvcGUuaCIKQEAgLTY4LDYgKzcyLDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb247CiAgICAgICAgIH0KICAg
ICAgICAgCisgICAgICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGVCdWlsdGluRnVuY3Rpb24o
Vk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0dsb2JhbE9iamVjdCopOworICAgICAgICAKICAg
ICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAgICAgCiAgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIFN0cmluZyBuYW1lKEV4ZWNTdGF0ZSopOwpAQCAtMTQ1LDYgKzE1MSw5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1fYWxsb2NhdGlvblByb2Zp
bGVXYXRjaHBvaW50OwogICAgICAgICB9CiAKKyAgICAgICAgYm9vbCBpc0hvc3RPckJ1aWx0aW5G
dW5jdGlvbigpIGNvbnN0OworICAgICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3Q7
CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEltcGxlbWVudHNIYXNJbnN0
YW5jZSB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVz
IHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAppbmRleCBmZTRlMTE0YWRiYzIzNjc0ZDNi
NjBlNjFmNzFjYjdhMDZjOTQ3ODRkLi4yNDk4ZWMzOGNkODk1NTBmYTJmMzg1NTkzZGFjYmExMjNi
MDAxN2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b25JbmxpbmVzLmgKQEAgLTUzLDEzICs1MywxMyBAQCBpbmxpbmUgYm9vbCBKU0Z1bmN0aW9uOjpp
c0hvc3RGdW5jdGlvbigpIGNvbnN0CiAKIGlubGluZSBOYXRpdmVGdW5jdGlvbiBKU0Z1bmN0aW9u
OjpuYXRpdmVGdW5jdGlvbigpCiB7Ci0gICAgQVNTRVJUKGlzSG9zdEZ1bmN0aW9uKCkpOworICAg
IEFTU0VSVChpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpKTsKICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8TmF0aXZlRXhlY3V0YWJsZSo+KG1fZXhlY3V0YWJsZS5nZXQoKSktPmZ1bmN0aW9uKCk7CiB9
CiAKIGlubGluZSBOYXRpdmVGdW5jdGlvbiBKU0Z1bmN0aW9uOjpuYXRpdmVDb25zdHJ1Y3Rvcigp
CiB7Ci0gICAgQVNTRVJUKGlzSG9zdEZ1bmN0aW9uKCkpOworICAgIEFTU0VSVChpc0hvc3RGdW5j
dGlvbk5vbklubGluZSgpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TmF0aXZlRXhlY3V0YWJs
ZSo+KG1fZXhlY3V0YWJsZS5nZXQoKSktPmNvbnN0cnVjdG9yKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29u
c3RydWN0b3JJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCmluZGV4IDJkZGMyOWY3MTg5N2Ji
NTFkMzkwYjA2YjI1YTczODMzODc0YmEwYzEuLmVkZDM0NDljZTQ3YjE3MzVlOGU1ZGJiMDVmMzE4
ZTNkNTVmM2JlNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvcklu
bGluZXMuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0NvbnN0cnVjdG9ySW5saW5lc19oCiAjZGVmaW5lIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29u
c3RydWN0b3JJbmxpbmVzX2gKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5j
bHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGlu
ZXMuaAppbmRleCA2ZGI4NjI3NGMzYjg3NGFhYWRlNTE1MTg5ODI2NzI2ZmIxMzZjMTczLi5mMjRl
YTczMDNkZjk2OWRiZDJkY2E1MmM4NmQxMWM3OGMwMGRiOWVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0lubGluZXMuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBKU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0lubGluZXNfaAogCiAjaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCisjaW5jbHVkZSAi
Q29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJEZWZlckdDLmgiCiAjaW5jbHVkZSAiRXJy
b3IuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJvdG90eXBlSW5saW5lcy5oCmluZGV4IDQ1OTk5N2E0NjRiOTExOTQ3N2IxYmU4NGUz
NmM0ZTI5NjZhY2VmODUuLjhlNWZmODI3OTFlNmZmOGQ0ZWI5YzM3MzY5MWU0MzNlYjdkMTZhZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oCkBAIC0yNiw2
ICsyNiw3IEBACiAjaWZuZGVmIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5l
c19oCiAjZGVmaW5lIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lc19oCiAK
KyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5j
bHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAy
YzI3NGMxYTdkNDgxYzA3ZGYwZDJiZWIzYjI5MzFhMzkwN2E1ZTY2Li4wNmU1NGM4NGU3N2I5MDMy
YmFhMWQyZGY0N2ExYzcyZTgwYjdkZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0zNDYsNyArMzQ2LDggQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAKICAgICAvLyBDb25zdHJ1Y3Rv
cnMKIAotICAgIEpTQ2VsbCogb2JqZWN0Q29uc3RydWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6
Y3JlYXRlKHZtLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBt
X2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOworICAg
IE9iamVjdENvbnN0cnVjdG9yKiBvYmplY3RDb25zdHJ1Y3RvciA9IE9iamVjdENvbnN0cnVjdG9y
OjpjcmVhdGUodm0sIE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMs
IG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7Cisg
ICAgbV9vYmplY3RDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIG9iamVjdENvbnN0cnVjdG9yKTsK
ICAgICBKU0NlbGwqIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpj
cmVhdGUodm0sIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywg
bV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwog
ICAgIEpTQ2VsbCogYXJyYXlDb25zdHJ1Y3RvciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2
bSwgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9u
UHJvdG90eXBlLmdldCgpKSwgbV9hcnJheVByb3RvdHlwZS5nZXQoKSk7CiAKQEAgLTQzMiw3ICs0
MzMsMTAgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvIHN0YXRpY0dsb2JhbHNbXSA9IHsKICAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPk5hTiwganNOYU4oKSwgRG9udEVudW0gfCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+SW5maW5pdHksIGpzTnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91Ymxl
Pjo6aW5maW5pdHkoKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKLSAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQs
IGpzVW5kZWZpbmVkKCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KQorICAgICAg
ICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCwg
anNVbmRlZmluZWQoKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAg
ICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZFBy
aXZhdGVOYW1lLCBqc1VuZGVmaW5lZCgpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25s
eSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5PYmplY3RQ
cml2YXRlTmFtZSwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPlR5
cGVFcnJvclByaXZhdGVOYW1lLCBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51
bSB8IERvbnREZWxldGUgfCBSZWFkT25seSkKICAgICB9OwogICAgIGFkZFN0YXRpY0dsb2JhbHMo
c3RhdGljR2xvYmFscywgV1RGX0FSUkFZX0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CiAgICAgCkBA
IC02MDgsNiArNjEyLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX3N5bnRheEVycm9yQ29uc3RydWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX3R5cGVFcnJvckNvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9VUklFcnJvckNvbnN0cnVjdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9vYmplY3RDb25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fcHJvbWlzZUNvbnN0cnVjdG9yKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX2V2YWxGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBiMGNhZDNkYzU0NzBmN2M3YTBlNTcwYmRjZDJk
ZmZhODk1ZTJhYTBjLi4zYTYxNmM2ZjA1ZWRmMWQyOTVhZjg0NDFhYTY2NTAwZmI5MmE0YTQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAg
LTY3LDYgKzY3LDcgQEAgY2xhc3MgSlNTdGFjazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKIGNsYXNzIE1pY3JvdGFzazsKIGNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I7CitjbGFz
cyBPYmplY3RDb25zdHJ1Y3RvcjsKIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBQcm9n
cmFtRXhlY3V0YWJsZTsKIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yOwpAQCAtMTU4LDYgKzE1OSw3
IEBAIHByb3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4g
bV90eXBlRXJyb3JDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvcj4gbV9VUklFcnJvckNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxKU1Byb21p
c2VDb25zdHJ1Y3Rvcj4gbV9wcm9taXNlQ29uc3RydWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPE9i
amVjdENvbnN0cnVjdG9yPiBtX29iamVjdENvbnN0cnVjdG9yOwogCiAgICAgV3JpdGVCYXJyaWVy
PEpTRnVuY3Rpb24+IG1fZXZhbEZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9u
PiBtX2NhbGxGdW5jdGlvbjsKQEAgLTMzMCw2ICszMzIsNyBAQCBwdWJsaWM6CiAgICAgUmVnRXhw
Q29uc3RydWN0b3IqIHJlZ0V4cENvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBD
b25zdHJ1Y3Rvci5nZXQoKTsgfQogCiAgICAgRXJyb3JDb25zdHJ1Y3RvciogZXJyb3JDb25zdHJ1
Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQorICAgIE9i
amVjdENvbnN0cnVjdG9yKiBvYmplY3RDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fb2Jq
ZWN0Q29uc3RydWN0b3IuZ2V0KCk7IH0KICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBldmFs
RXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXZhbEVycm9yQ29uc3RydWN0b3Iu
Z2V0KCk7IH0KICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiByYW5nZUVycm9yQ29uc3RydWN0
b3IoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAg
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHJlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IoKSBjb25z
dCB7IHJldHVybiBtX3JlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KQEAgLTU4MSw3
ICs1ODQsNyBAQCBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6aGFzT3duUHJvcGVydHlGb3JX
cml0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZQogCiBpbmxpbmUgYm9vbCBKU0dsb2Jh
bE9iamVjdDo6c3ltYm9sVGFibGVIYXNQcm9wZXJ0eShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVH
ZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRy
eSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIHJl
dHVybiAhZW50cnkuaXNOdWxsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcAppbmRleCAyYjY3YTFkOWVlZDg0ZTk5NTZmOGJiOTY4Mzg0Yzg0Y2FlYTUz
Y2ZmLi4yZWEyYzI0ZTZlYWI0Y2QwZDdmZmVkNjY1ZWY0YWU0MWFmMDc1MGYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0
YXRpYyBpbmxpbmUgdm9pZCBnZXRDbGFzc1Byb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBDbGFzc0luZm8qIGNsYXNzCiAgICAgICAgIGludCBoYXNoU2l6ZU1hc2sgPSB0YWJsZS0+
Y29tcGFjdFNpemUgLSAxOwogICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gdGFibGUt
PnRhYmxlOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8PSBoYXNoU2l6ZU1hc2s7ICsraSwg
KytlbnRyeSkgewotICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkoKSAmJiAoIShlbnRyeS0+YXR0
cmlidXRlcygpICYgRG9udEVudW0pIHx8IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXMpKSAmJiAhKChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pICYmIGRpZFJlaWZ5KSkK
KyAgICAgICAgICAgIGlmIChlbnRyeS0+a2V5KCkgJiYgKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAm
IERvbnRFbnVtKSB8fCAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgJiYgISgo
ZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSAmJiBkaWRSZWlmeSkpCiAg
ICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZW50cnktPmtleSgpKTsKICAgICAgICAg
fQogICAgIH0KQEAgLTE2MTgsNyArMTYxOCw3IEBAIHZvaWQgSlNPYmplY3Q6OnJlaWZ5U3RhdGlj
RnVuY3Rpb25zRm9yRGVsZXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzKTsKICAgICAgICAgZm9yIChIYXNoVGFi
bGU6OkNvbnN0SXRlcmF0b3IgaXRlciA9IGhhc2hUYWJsZS0+YmVnaW4odm0pOyBpdGVyICE9IGhh
c2hUYWJsZS0+ZW5kKHZtKTsgKytpdGVyKSB7Ci0gICAgICAgICAgICBpZiAoaXRlci0+YXR0cmli
dXRlcygpICYgRnVuY3Rpb24pCisgICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygpICYg
QnVpbHRpbk9yRnVuY3Rpb24pCiAgICAgICAgICAgICAgICAgc2V0VXBTdGF0aWNGdW5jdGlvblNs
b3QoZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgKml0ZXIsIHRoaXMsIElkZW50aWZpZXIo
JnZtLCBpdGVyLT5rZXkoKSksIHNsb3QpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjIzNiw2ICsy
MjM2LDE2IEBAIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uCiAgICAgcHV0RGlyZWN0KHZtLCBwcm9w
ZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsKIH0KIAordm9pZCBKU09iamVjdDo6cHV0
RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZnVuY3Rpb25FeGVjdXRhYmxlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQoreworICAgIFN0cmluZ0lt
cGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOworICAgIGlmICghbmFtZSkKKyAg
ICAgICAgbmFtZSA9IHZtLnByb3BlcnR5TmFtZXMtPmFub255bW91cy5pbXBsKCk7CisgICAgQVNT
RVJUKG5hbWUpOworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRl
QnVpbHRpbkZ1bmN0aW9uKHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5j
dGlvbkV4ZWN1dGFibGUpLCBnbG9iYWxPYmplY3QpOworICAgIHB1dERpcmVjdCh2bSwgcHJvcGVy
dHlOYW1lLCBmdW5jdGlvbiwgYXR0cmlidXRlcyk7Cit9CisKIHZvaWQgSlNPYmplY3Q6OnB1dERp
cmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgdW5zaWdu
ZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5z
aWMgaW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIFN0cmluZ0ltcGwqIG5h
bWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmgKaW5kZXggMDJiMTM3YjM1MGMyZmE4MzI1YmQzYjk2NDcxMTJhYmU4NzZm
MzgzZi4uZGRlNTk3ZWZmYWVjMGYxYjhkNDRjMjkxMTk1MDMwMWYwNjAwN2U5OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5j
bHVkZSAiQnV0dGVyZmx5LmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ2xh
c3NJbmZvLmgiCi0jaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJDb3B5
V3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSAiRGVmZXJHQy5oIgogI2luY2x1ZGUgIkhlYXAuaCIK
QEAgLTU4MSw2ICs1ODAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXREaXJlY3RVbmRlZmluZWQo
UHJvcGVydHlPZmZzZXQgb2Zmc2V0KSB7IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNldFVu
ZGVmaW5lZCgpOyB9CiAKICAgICB2b2lkIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0
aCwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAg
dm9pZCBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFByb3BlcnR5TmFtZSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMp
OwogICAgIHZvaWQgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25M
ZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwog
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRv
ciYsIGJvb2wgc2hvdWxkVGhyb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCmluZGV4IDQwMjYxOTYzM2ZhMDZmZDI1
NGIzZjJhN2E4Y2M3MWU4MDdhYWY5MTEuLjE3ZDJhYjY1YTg4ZmZiMTNmYTlhNmM4ZjU4M2NhODQ0
YWY4MzIyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
bWlzZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJKU1By
b21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZUZ1bmN0aW9ucy5oIgogI2luY2x1
ZGUgIkpTUHJvbWlzZVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgog
I2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk51bWJlck9iamVjdC5oIgogI2luY2x1ZGUg
IlN0cnVjdHVyZUlubGluZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKaW5kZXggNjhhOGJkODdkMzhhZGJi
YjlkZDJhYzllYzRiNDlkNWVmNDU0OWQ1Ni4uMjM3YzQyYmIwZGEwZjE2Njc2ZWIxMWFkZTgxODBh
N2IwNmQ5OGViNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKQEAgLTI5LDcgKzI5LDkgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAKKyNpbmNs
dWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisj
aW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKaW5kZXggZjQzNjJmZjM1NGVlNmE1MDIyMWJiNzMx
ZDFhMjYxMWU2ZGQ2MWJjMC4uZDA3MzcxOWRlMTYwZDJmMjkyMTEwYTU5NmExMDVlMmZhMjExNWZm
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaApAQCAtMzEsNyArMzEsNiBAQAogCiAjaW5jbHVkZSAiSlNPYmplY3Qu
aCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNs
dWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1ZGUgPG1lbW9yeT4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXggMmIxY2RkZGM1ODQxZDYwZDE1N2Ey
ZTYxZjcwMmIwZWU1ZmExZDY3Ni4uZTM5MzQxNjBhZWE5MjZlZjE1OTMyZjg3OTBlMjRjNTJhZjAy
ZDM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC0yNCw3
ICsyNCw2IEBACiAjZGVmaW5lIEpTU3RyaW5nX2gKIAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgot
I2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIlByb3BlcnR5RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5o
IgpAQCAtNDcyLDMzICs0NzEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgSlNTdHJp
bmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykg
eyByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKCZleGVjLT52bSgpLCBzKTsgfQogICAgIGlubGlu
ZSBKU1N0cmluZyoganNPd25lZFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYg
cykgeyByZXR1cm4ganNPd25lZFN0cmluZygmZXhlYy0+dm0oKSwgcyk7IH0KIAotICAgIEFMV0FZ
U19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQotICAg
IHsKLSAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVu
Z3RoKSB7Ci0gICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5LCBqc051bWJlcihtX2xlbmd0aCkpOwotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFz
SW5kZXgoKTsKLSAgICAgICAgaWYgKGkgPCBtX2xlbmd0aCkgewotICAgICAgICAgICAgQVNTRVJU
KGkgIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTsgLy8gTm8gbmVlZCBmb3IgYW4gZXhwbGlj
aXQgY2hlY2ssIHRoZSBhYm92ZSB0ZXN0IHdvdWxkIGFsd2F5cyBmYWlsIQotICAgICAgICAgICAg
c2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMs
IGkpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLSAgICAgICAgICAgIAotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBK
U1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi0gICAgewotICAgICAgICBpZiAocHJv
cGVydHlOYW1lIDwgbV9sZW5ndGgpIHsKLSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywg
RG9udERlbGV0ZSB8IFJlYWRPbmx5LCBnZXRJbmRleChleGVjLCBwcm9wZXJ0eU5hbWUpKTsKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLQogICAgIGlubGluZSBib29sIGlzSlNTdHJpbmcoSlNWYWx1ZSB2KSB7IHJldHVy
biB2LmlzQ2VsbCgpICYmIHYuYXNDZWxsKCktPmNsYXNzSW5mbygpID09IEpTU3RyaW5nOjppbmZv
KCk7IH0KIAogICAgIC8vIC0tLSBKU1ZhbHVlIGlubGluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQpAQCAtNTI4LDMyICs1MDAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0
dXJuIHRvV1RGU3RyaW5nU2xvd0Nhc2UoZXhlYyk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElO
RSBTdHJpbmcgaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKGNvbnN0IEpTVmFsdWUmIHZh
bHVlLCBFeGVjU3RhdGUqIGV4ZWMpCi0gICAgewotICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwotICAgICAgICBpZiAodmFsdWUuaXNJbnQzMigpKQotICAgICAgICAgICAgcmV0dXJuIHZtLm51
bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZS5hc0ludDMyKCkpOwotICAgICAgICBpZiAodmFsdWUuaXNE
b3VibGUoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5udW1lcmljU3RyaW5ncy5hZGQodmFsdWUu
YXNEb3VibGUoKSk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc1RydWUoKSkKLSAgICAgICAgICAgIHJl
dHVybiB2bS5wcm9wZXJ0eU5hbWVzLT50cnVlS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgaWYg
KHZhbHVlLmlzRmFsc2UoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5m
YWxzZUtleXdvcmQuc3RyaW5nKCk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc051bGwoKSkKLSAgICAg
ICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5udWxsS2V5d29yZC5zdHJpbmcoKTsKLSAg
ICAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0ucHJv
cGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgcmV0dXJuIHZh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5M
SU5FIFN0cmluZyBKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZShFeGVjU3RhdGUqIGV4ZWMpIGNv
bnN0Ci0gICAgewotICAgICAgICBpZiAoaXNTdHJpbmcoKSkKLSAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxKU1N0cmluZyo+KGFzQ2VsbCgpKS0+dmFsdWUoZXhlYyk7Ci0KLSAgICAgICAg
cmV0dXJuIGlubGluZUpTVmFsdWVOb3RTdHJpbmd0b1N0cmluZygqdGhpcywgZXhlYyk7Ci0gICAg
fQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTU3RyaW5nX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Mzc4YzA1ZmM4MGQ4OGU4NTM3YzlkMmE1ZWFiOWZmMGJhOWI2MGE3NQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCkBAIC0w
LDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIEpTU3RyaW5nSW5saW5lc19oCisjZGVmaW5lIEpTU3RyaW5nSW5saW5l
c19oCisKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFs
dWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K0FMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQoreworICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0
aCkgeworICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5LCBqc051bWJlcihtX2xlbmd0aCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgICAgCisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAg
aWYgKGkgPCBtX2xlbmd0aCkgeworICAgICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5v
dEFuSW5kZXgpOyAvLyBObyBuZWVkIGZvciBhbiBleHBsaWNpdCBjaGVjaywgdGhlIGFib3ZlIHRl
c3Qgd291bGQgYWx3YXlzIGZhaWwhCisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERl
bGV0ZSB8IFJlYWRPbmx5LCBnZXRJbmRleChleGVjLCBpKSk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0FMV0FZU19JTkxJTkUgYm9v
bCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgaWYgKHByb3BlcnR5
TmFtZSA8IG1fbGVuZ3RoKSB7CisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0
ZSB8IFJlYWRPbmx5LCBnZXRJbmRleChleGVjLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKworQUxXQVlTX0lO
TElORSBTdHJpbmcgaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKGNvbnN0IEpTVmFsdWUm
IHZhbHVlLCBFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBpZiAodmFsdWUuaXNJbnQzMigpKQorICAgICAgICByZXR1cm4gdm0ubnVtZXJpY1N0cmluZ3Mu
YWRkKHZhbHVlLmFzSW50MzIoKSk7CisgICAgaWYgKHZhbHVlLmlzRG91YmxlKCkpCisgICAgICAg
IHJldHVybiB2bS5udW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNEb3VibGUoKSk7CisgICAgaWYg
KHZhbHVlLmlzVHJ1ZSgpKQorICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+dHJ1ZUtl
eXdvcmQuc3RyaW5nKCk7CisgICAgaWYgKHZhbHVlLmlzRmFsc2UoKSkKKyAgICAgICAgcmV0dXJu
IHZtLnByb3BlcnR5TmFtZXMtPmZhbHNlS2V5d29yZC5zdHJpbmcoKTsKKyAgICBpZiAodmFsdWUu
aXNOdWxsKCkpCisgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5udWxsS2V5d29yZC5z
dHJpbmcoKTsKKyAgICBpZiAodmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIHZt
LnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQuc3RyaW5nKCk7CisgICAgcmV0dXJuIHZh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKK30KKyAgICAKK0FMV0FZU19JTkxJTkUg
U3RyaW5nIEpTVmFsdWU6OnRvV1RGU3RyaW5nSW5saW5lKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QK
K3sKKyAgICBpZiAoaXNTdHJpbmcoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTU3Ry
aW5nKj4oYXNDZWxsKCkpLT52YWx1ZShleGVjKTsKKyAgICAKKyAgICByZXR1cm4gaW5saW5lSlNW
YWx1ZU5vdFN0cmluZ3RvU3RyaW5nKCp0aGlzLCBleGVjKTsKK30KKworfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVj
dC5jcHAKaW5kZXggMmFjMjUyNGM1ZGZkYTNkMTIyNDlkNzc5MGFkYzMxMjllM2MwZTg3MS4uZmJj
OGI4OTVlYWU2YWY3ODg4MzliZWI1ZTgzZDdiNmI5NzkyOGZhZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKQEAgLTY0
LDYgKzY0LDggQEAgdm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXQKICAgICAgICAgQ29uY3VycmVudEpJ
VExvY2tlciBsb2NrZXIodGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+bV9sb2NrKTsKICAgICAg
ICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgZW5kID0gdGhpc09iamVjdC0+c3ltYm9sVGFi
bGUoKS0+ZW5kKGxvY2tlcik7CiAgICAgICAgIGZvciAoU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0
b3IgaXQgPSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5iZWdpbihsb2NrZXIpOyBpdCAhPSBl
bmQ7ICsraXQpIHsKKyAgICAgICAgICAgIGlmIChpdC0+a2V5LT5pc0VtcHR5VW5pcXVlKCkpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoIShpdC0+dmFsdWUuZ2V0
QXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3Bl
cnRpZXMpKQogICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhl
YywgaXQtPmtleS5nZXQoKSkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKaW5kZXggYjViMjBhODQ1YjZhYjY0
NDI0YjM3ZTMxYjI3NzRlZjkwNTM1M2Y3Zi4uZDAzYjI0NTExYzJkZTE5NTlmYjVmNTZkNjQ5YzY0
ZDBlZmUwNjg1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
eW1ib2xUYWJsZU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3ltYm9sVGFibGVPYmplY3QuaApAQCAtNzIsNyArNzIsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xU
YWJsZUdldCgKIHsKICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1i
b2xUYWJsZSgpOwogICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1f
bG9jayk7Ci0gICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxl
LmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJs
ZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5
TmFtZS51aWQoKSk7CiAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0g
aXRlci0+dmFsdWU7CkBAIC04Nyw3ICs4Nyw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0
KAogewogICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxl
KCk7CiAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsK
LSAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChs
b2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlOjpNYXA6
Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVp
ZCgpKTsKICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52
YWx1ZTsKQEAgLTEwNCw3ICsxMDQsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKIHsK
ICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwog
ICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAg
U3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2Vy
LCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVy
YXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7
CiAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+dmFsdWU7
CkBAIC0xMjYsNyArMTI2LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoCiAgICAgewog
ICAgICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgp
OwogICAgICAgICBHQ1NhZmVDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5t
X2xvY2ssIGV4ZWMtPnZtKCkuaGVhcCk7Ci0gICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJh
dG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05h
bWUoKSk7CisgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xU
YWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICAgICAgaWYgKGl0ZXIg
PT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIGJvb2wgd2FzRmF0OwpAQCAtMTU5LDcgKzE1OSw3IEBAIGlubGluZSBib29sIHN5bWJv
bFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoCiAgICAgewogICAgICAgICBTeW1ib2xUYWJsZSYgc3lt
Ym9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBDb25jdXJyZW50SklU
TG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2spOwotICAgICAgICBTeW1ib2xUYWJsZTo6
TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFt
ZS5wdWJsaWNOYW1lKCkpOworICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVy
ID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgICAg
IGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5JiBlbnRyeSA9IGl0ZXItPnZhbHVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKaW5kZXggYTgwNmRkMDUyYTBj
YmVlNGNhYzJjYWE2ZTA4YzY3MTYwMDVjMjcwYy4uYTk3NjUyMDFiOWY1MTg2NDE0MjNkZGUwZmUw
ZTJlNTFhOGNlNzNiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TG9va3VwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3Bw
CkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgSGFzaFRhYmxlOjpkZWxldGVUYWJsZSgpIGNvbnN0CiBi
b29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVu
dHJ5KiBlbnRyeSwgSlNPYmplY3QqIHRoaXNPYmosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBBU1NFUlQodGhpc09iai0+Z2xvYmFsT2JqZWN0
KCkpOwotICAgIEFTU0VSVChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pOworICAgIEFT
U0VSVChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pOwogICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQgPSB0aGlzT2JqLT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFtZSwg
YXR0cmlidXRlcyk7CkBAIC03OSw5ICs3OSwxMyBAQCBib29sIHNldFVwU3RhdGljRnVuY3Rpb25T
bG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqCiAg
ICAgICAgIGlmICh0aGlzT2JqLT5zdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgICAgIHRoaXNPYmotPnB1dERpcmVjdE5hdGl2ZUZ1
bmN0aW9uKAotICAgICAgICAgICAgdm0sIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0
eU5hbWUsIGVudHJ5LT5mdW5jdGlvbkxlbmd0aCgpLAotICAgICAgICAgICAgZW50cnktPmZ1bmN0
aW9uKCksIGVudHJ5LT5pbnRyaW5zaWMoKSwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAgICAg
IGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbikKKyAgICAgICAgICAgIHRoaXNPYmot
PnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbih2bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHBy
b3BlcnR5TmFtZSwgZW50cnktPmJ1aWx0aW5HZW5lcmF0b3IoKSh2bSksIGVudHJ5LT5hdHRyaWJ1
dGVzKCkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdE5h
dGl2ZUZ1bmN0aW9uKAorICAgICAgICAgICAgICAgIHZtLCB0aGlzT2JqLT5nbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSwKKyAgICAgICAgICAgICAg
ICBlbnRyeS0+ZnVuY3Rpb24oKSwgZW50cnktPmludHJpbnNpYygpLCBlbnRyeS0+YXR0cmlidXRl
cygpKTsKKyAgICAgICAgfQogICAgICAgICBvZmZzZXQgPSB0aGlzT2JqLT5nZXREaXJlY3RPZmZz
ZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CiAgICAgICAgIEFTU0VSVChpc1ZhbGlk
T2Zmc2V0KG9mZnNldCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0xvb2t1cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3Vw
LmgKaW5kZXggYmRlODNkNGE2ZmMzNTU3Nzg1MGUzMWU4OGJjMzlmZDA1ZjdiY2U1Mi4uZGJhMzg5
ZTllMjQzZGQwZWNiMmJhOThmMzk0ZDQwNzlmOWRlYTkzNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTG9va3VwLmgKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
Ly8gaWUuIHR5cGVkZWYgSlNWYWx1ZSAoKkdldEZ1bmN0aW9uKShFeGVjU3RhdGUqLCBKU09iamVj
dCogYmFzZU9iamVjdCkKICAgICB0eXBlZGVmIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIEdl
dEZ1bmN0aW9uOwogICAgIHR5cGVkZWYgUHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmMgUHV0
RnVuY3Rpb247CisgICAgdHlwZWRlZiBGdW5jdGlvbkV4ZWN1dGFibGUqICgqQnVpbHRpbkdlbmVy
YXRvcikoVk0mKTsKIAogICAgIGNsYXNzIEhhc2hFbnRyeSB7CiAgICAgICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwpAQCAtNjgsMTEgKzY5LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgcmV0dXJuIG1faW50cmluc2ljOwogICAgICAgICB9CiAKKyAgICAgICAgQnVpbHRpbkdl
bmVyYXRvciBidWlsdGluR2VuZXJhdG9yKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYg
QnVpbHRpbik7IHJldHVybiBtX3UuYnVpbHRpbkdlbmVyYXRvci5nZW5lcmF0b3JWYWx1ZTsgfQog
ICAgICAgICBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmli
dXRlcyAmIEZ1bmN0aW9uKTsgcmV0dXJuIG1fdS5mdW5jdGlvbi5mdW5jdGlvblZhbHVlOyB9CiAg
ICAgICAgIHVuc2lnbmVkIGNoYXIgZnVuY3Rpb25MZW5ndGgoKSBjb25zdCB7IEFTU0VSVChtX2F0
dHJpYnV0ZXMgJiBGdW5jdGlvbik7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPiht
X3UuZnVuY3Rpb24ubGVuZ3RoKTsgfQogCi0gICAgICAgIEdldEZ1bmN0aW9uIHByb3BlcnR5R2V0
dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBGdW5jdGlvbikpOyByZXR1cm4g
bV91LnByb3BlcnR5LmdldDsgfQotICAgICAgICBQdXRGdW5jdGlvbiBwcm9wZXJ0eVB1dHRlcigp
IGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5w
cm9wZXJ0eS5wdXQ7IH0KKyAgICAgICAgR2V0RnVuY3Rpb24gcHJvcGVydHlHZXR0ZXIoKSBjb25z
dCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEJ1aWx0aW5PckZ1bmN0aW9uKSk7IHJldHVybiBt
X3UucHJvcGVydHkuZ2V0OyB9CisgICAgICAgIFB1dEZ1bmN0aW9uIHByb3BlcnR5UHV0dGVyKCkg
Y29uc3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBCdWlsdGluT3JGdW5jdGlvbikpOyByZXR1
cm4gbV91LnByb3BlcnR5LnB1dDsgfQogCiAgICAgICAgIGludHB0cl90IGxleGVyVmFsdWUoKSBj
b25zdCB7IEFTU0VSVCghbV9hdHRyaWJ1dGVzKTsgcmV0dXJuIG1fdS5sZXhlci52YWx1ZTsgfQog
CkBAIC05NCw2ICs5NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBpbnRw
dHJfdCBsZW5ndGg7IC8vIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGZ1bmN0aW9uCiAgICAgICAg
ICAgICB9IGZ1bmN0aW9uOwogICAgICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICBC
dWlsdGluR2VuZXJhdG9yIGdlbmVyYXRvclZhbHVlOworICAgICAgICAgICAgICAgIGludHB0cl90
IHVudXNlZDsKKyAgICAgICAgICAgIH0gYnVpbHRpbkdlbmVyYXRvcjsKKyAgICAgICAgICAgIHN0
cnVjdCB7CiAgICAgICAgICAgICAgICAgR2V0RnVuY3Rpb24gZ2V0OwogICAgICAgICAgICAgICAg
IFB1dEZ1bmN0aW9uIHB1dDsKICAgICAgICAgICAgIH0gcHJvcGVydHk7CkBAIC0yMDksNyArMjE1
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgQUxXQVlTX0lOTElO
RSBjb25zdCBIYXNoRW50cnkqIGVudHJ5KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0
CiAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cmluZ0ltcGwqIGltcGwgPSBwcm9wZXJ0eU5hbWUu
cHVibGljTmFtZSgpOworICAgICAgICAgICAgU3RyaW5nSW1wbCogaW1wbCA9IHByb3BlcnR5TmFt
ZS51aWQoKTsKICAgICAgICAgICAgIGlmICghaW1wbCkKICAgICAgICAgICAgICAgICByZXR1cm4g
MDsKICAgICAgICAgCkBAIC0yNDksNyArMjU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IGlmICghZW50cnkpIC8vIG5vdCBmb3VuZCwgZm9yd2FyZCB0byBwYXJlbnQKICAgICAgICAgICAg
IHJldHVybiBQYXJlbnRJbXA6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogCi0gICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVu
Y3Rpb24pCisgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rp
b24pCiAgICAgICAgICAgICByZXR1cm4gc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoZXhlYywgZW50
cnksIHRoaXNPYmosIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICAgICAgc2xvdC5zZXRDYWNo
ZWFibGVDdXN0b20odGhpc09iaiwgZW50cnktPmF0dHJpYnV0ZXMoKSwgZW50cnktPnByb3BlcnR5
R2V0dGVyKCkpOwpAQCAtMjg2LDcgKzI5Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBp
ZiAoIWVudHJ5KSAvLyBub3QgZm91bmQsIGZvcndhcmQgdG8gcGFyZW50CiAgICAgICAgICAgICBy
ZXR1cm4gUGFyZW50SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iaiwgZXhlYywgcHJvcGVy
dHlOYW1lLCBzbG90KTsKIAotICAgICAgICBBU1NFUlQoIShlbnRyeS0+YXR0cmlidXRlcygpICYg
RnVuY3Rpb24pKTsKKyAgICAgICAgQVNTRVJUKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0
aW5PckZ1bmN0aW9uKSk7CiAKICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09i
aiwgZW50cnktPmF0dHJpYnV0ZXMoKSwgZW50cnktPnByb3BlcnR5R2V0dGVyKCkpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTI5NSw3ICszMDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBp
bmxpbmUgdm9pZCBwdXRFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50
cnksIEpTT2JqZWN0KiBiYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiAgICAgewogICAgICAgICAvLyBJZiB0aGlzIGlz
IGEgZnVuY3Rpb24gcHV0IGl0IGFzIGFuIG92ZXJyaWRlIHByb3BlcnR5LgotICAgICAgICBpZiAo
ZW50cnktPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKSB7CisgICAgICAgIGlmIChlbnRyeS0+YXR0
cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pIHsKICAgICAgICAgICAgIGlmIChKU09iamVj
dCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPihzbG90LnRoaXNWYWx1ZSgp
KSkKICAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgcHJv
cGVydHlOYW1lLCB2YWx1ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIShlbnRyeS0+YXR0cmlidXRl
cygpICYgUmVhZE9ubHkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IGQ1ZTcyOGMyY2QxMDIwYTQ3
ZTRhZGNkNjQ5Y2QxZmZmYTVjZDZhODMuLmRjYTJmZDhkMWY2YWMyM2I4ZmY4MTdjYmIxOGZhYWU3
YmNkNTk3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUVycm9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCkBAIC0zOCw2ICszOCwyMCBAQCBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCiB7CiB9CiAKK3ZvaWQgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHBy
b3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtLCBuYW1lKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAg
CisgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90
eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1lLCB0
aGlzKTsKKyAgICAKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwg
anNOdW1iZXIoMSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsgLy8gRUNNQSAx
NS4xMS43LjUKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
cHJvdG90eXBlLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgbV9lcnJv
clN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEVycm9ySW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUpKTsKKyAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVy
ZSk7CisgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOworfQorCiB2b2lk
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqPihjZWxsKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaApp
bmRleCA3NDBkM2Y5MzMyOTJmZDJhY2NiNGI5OTAzNDQzMTJiOTMxOWFlMTEwLi40MzhhM2FmYjli
YjBmNjQxMmM5NzkzMjIzMGM4ODcxMDk2MWY1NDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCkBAIC01MSwxOSAr
NTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVy
ZSgpIHsgcmV0dXJuIG1fZXJyb3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KIAogICAgIHByb3RlY3RlZDoK
LSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5h
bWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBuYW1l
KTsKLSAgICAgICAgICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKLQotICAgICAgICAgICAg
TmF0aXZlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1lLCB0aGlzKTsK
LQotICAgICAgICAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpz
TnVtYmVyKDEpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7IC8vIEVDTUEgMTUu
MTEuNy41Ci0gICAgICAgICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgcHJvdG90eXBlLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Ci0gICAg
ICAgICAgICBtX2Vycm9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgRXJyb3JJbnN0YW5jZTo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSkpOwotICAgICAgICAgICAg
QVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUpOwotICAgICAgICAgICAgQVNTRVJUKG1fZXJyb3JTdHJ1
Y3R1cmUtPmlzT2JqZWN0KCkpOwotICAgICAgICB9CisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBj
b25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgTmF0aXZlRXJyb3JD
b25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eVNsb3QuaAppbmRleCBkOTM4ZmEzMTY0NWFmMjZiNzU4NTE0ZGI2YjI0Nzhm
MTgzZTllZWUxLi5jZmU5YzRkMzJiYTc2OGM3NGU0ZmZiYjE5MTM1Mjc5ZGViZjExNzY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaApAQCAtNDIsNiAr
NDIsOCBAQCBlbnVtIEF0dHJpYnV0ZSB7CiAgICAgRnVuY3Rpb24gICAgID0gMSA8PCA0LCAgLy8g
cHJvcGVydHkgaXMgYSBmdW5jdGlvbiAtIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwog
ICAgIEFjY2Vzc29yICAgICA9IDEgPDwgNSwgIC8vIHByb3BlcnR5IGlzIGEgZ2V0dGVyL3NldHRl
cgogICAgIEN1c3RvbUFjY2Vzc29yID0gMSA8PCA2LAorICAgIEJ1aWx0aW4gICAgICAgICA9IDEg
PDwgNywgLy8gcHJvcGVydHkgaXMgYSBidWlsdGluIGZ1bmN0aW9uIC0gb25seSB1c2VkIGJ5IHN0
YXRpYyBoYXNodGFibGVzCisgICAgQnVpbHRpbk9yRnVuY3Rpb24gPSBCdWlsdGluIHwgRnVuY3Rp
b24sIC8vIGhlbHBlciBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKIH07CiAKIGNsYXNz
IFByb3BlcnR5U2xvdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYmM1MTZiMDZkNjY1MWYwZTY4MmEyMDE3YmRmOGIw
M2JhYmVkNmVhMi4uMmMyNDM0Yjg3ZDA0Zjc0OWNiMTJlNjAyYWI1NDc4NDk0NmE5MWYxZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9y
LmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgiCiAK
ICNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1
ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJSZWdFeHBNYXRjaGVzQXJyYXkuaCIKICNpbmNs
dWRlICJSZWdFeHBQcm90b3R5cGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCmluZGV4IDg5ZDdhYzFiOGNiZjFkYjBlMTI2ZjFmYzc5
NmRmZDVmYzg0YjJlNTkuLjlkZGEwYmE4ZGUxNDEyZWFmNGQyOTFkY2YwYzZiMzk2NTdmYjY3N2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBl
LmNwcApAQCAtMjQsNyArMjQsNyBAQAogI2luY2x1ZGUgIkFycmF5UHJvdG90eXBlLmgiCiAjaW5j
bHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1
ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAppbmRleCBi
MjAzODg4ZDNjMTZjZGEzYzAwMzUwNjIwOGFlMDg2OTVkYzVkYWFhLi5kMDI2NmE1OWVmM2Y1NWFh
MzY5NGY1Zjc0MThjZjc4ZTBhZTBkOGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAi
SlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAi
SlNTZXQuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJNYXBEYXRh
LmgiCiAjaW5jbHVkZSAiU2V0UHJvdG90eXBlLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCmluZGV4IDQ0MGE2MDk0MjE5MzM4MDMxZTU5Mjdh
ZjQ2YjI4OWRiY2ZiNWE3MjguLjgwZTdlYWE4YzQ5MWNiNmQ1NGE4MzI0Y2U2NDdhNmNkYjdlODg3
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNw
cApAQCAtMjIsNyArMjIsOSBAQAogI2luY2x1ZGUgIlN0cmluZ09iamVjdC5oIgogCiAjaW5jbHVk
ZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
R2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDA0MjkxZjdlOGRkMjRl
OGFiMzNkNzVhZjFkYTQ1NjhmMmJjOTllNjguLjFlY2FiODVjMGJkYjI4Njk4OTQ1NzdhNzQxMjU0
ZTM2NDQxNDlkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmNwcApAQCAtMjcsMTIgKzI3LDE4IEBACiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAKICNpbmNs
dWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1
ZGUgIkR1bXBDb250ZXh0LmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1
ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgorI2luY2x1ZGUgIlBy
b3BlcnR5TWFwSGFzaFRhYmxlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKKyNp
bmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5o
IgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJl
RGF0YUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCmluZGV4IDUyY2NmNDIzYTEwNDNlMTA3OWYyZDhiMTg5NDIxOTg5MGU3MWYyYmMuLjAyMDY5
NWZhYzgzZWQ0ZTUxODViNzBlNjk2OTk2M2EyZGU5YTM2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJBcmdMaXN0LmgiCiAj
aW5jbHVkZSAiQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuaCIKICNpbmNsdWRlICJBcnJheUJ1
ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMu
aCIKICNpbmNsdWRlICJDYWxsRnJhbWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CiAjaW5jbHVkZSAiQ29kZUNhY2hlLmgiCkBAIC01NSw3ICs1Niw5IEBACiAjaW5jbHVkZSAiSlNB
UElWYWx1ZVdyYXBwZXIuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJK
U0FycmF5LmgiCi0jaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rp
b25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNs
dWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgpAQCAtNjgsMTMgKzcxLDE2
IEBACiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVkZSAiTWFwRGF0YS5oIgogI2luY2x1ZGUg
Ik5vZGVzLmgiCisjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiUGFyc2VyQXJlbmEuaCIK
KyNpbmNsdWRlICJQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgogI2luY2x1ZGUgIlJlZ0V4cENhY2hl
LmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2ltcGxlVHlwZWRBcnJh
eUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTb3VyY2VQcm92aWRlckNhY2hlLmgiCiAjaW5jbHVk
ZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCisj
aW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2Nr
LmgiCiAjaW5jbHVkZSAiV2Vha01hcERhdGEuaCIKICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+
CkBAIC0yMjYsNiArMjMyLDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBU
eXBlKQogICAgICwgbV9pbkRlZmluZU93blByb3BlcnR5KGZhbHNlKQogICAgICwgbV9jb2RlQ2Fj
aGUoQ29kZUNhY2hlOjpjcmVhdGUoKSkKICAgICAsIG1fZW5hYmxlZFByb2ZpbGVyKG51bGxwdHIp
CisgICAgLCBtX2J1aWx0aW5FeGVjdXRhYmxlcyhCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZSgq
dGhpcykpCiB7CiAgICAgaW50ZXJwcmV0ZXIgPSBuZXcgSW50ZXJwcmV0ZXIoKnRoaXMpOwogICAg
IFN0YWNrQm91bmRzIHN0YWNrID0gd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaAppbmRleCA1YTg0MTA1ZWFmYjdhYmJhNWZhNDMxZWVlZGQ1NWQ3YTg5
ZjU1Y2UyLi42OTU4YWMzOTNiMWFlZmMwYmVmYmY2ZTRlYjhiNjgyNWNmN2M5YTBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJQcml2
YXRlTmFtZS5oIgogI2luY2x1ZGUgIlByb3RvdHlwZU1hcC5oIgogI2luY2x1ZGUgIlNtYWxsU3Ry
aW5ncy5oIgorI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTdHJvbmcuaCIKICNp
bmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKICNpbmNsdWRlICJUeXBlZEFycmF5Q29udHJvbGxl
ci5oIgpAQCAtNjksNiArNzAsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcml0
eUNoZWNrRmFpbFJldHVyblRodW5rczsKKyAgICBjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXM7CiAg
ICAgY2xhc3MgQ29kZUJsb2NrOwogICAgIGNsYXNzIENvZGVDYWNoZTsKICAgICBjbGFzcyBDb21t
b25JZGVudGlmaWVyczsKQEAgLTQ5Nyw2ICs0OTksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCByZWdpc3RlcldhdGNocG9pbnRGb3JJbXB1cmVQcm9wZXJ0eShjb25zdCBJZGVudGlm
aWVyJiwgV2F0Y2hwb2ludCopOwogICAgICAgICAvLyBGSVhNRTogVXNlIEF0b21pY1N0cmluZyBv
bmNlIGl0IGdvdCBtZXJnZWQgd2l0aCBJZGVudGlmaWVyLgogICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGFkZEltcHVyZVByb3BlcnR5KGNvbnN0IFN0cmluZyYpOworICAgICAgICAKKyAg
ICAgICAgQnVpbHRpbkV4ZWN1dGFibGVzKiBidWlsdGluRXhlY3V0YWJsZXMoKSB7IHJldHVybiBt
X2J1aWx0aW5FeGVjdXRhYmxlcy5nZXQoKTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJp
ZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKQEAgLTUzNywxMCArNTQxLDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWUgbV9leGNlcHRpb247CiAgICAgICAgIGJvb2wg
bV9pbkRlZmluZU93blByb3BlcnR5OwogICAgICAgICBPd25QdHI8Q29kZUNhY2hlPiBtX2NvZGVD
YWNoZTsKLSAgICAgICAgUmVmQ291bnRlZEFycmF5PFN0YWNrRnJhbWU+IG1fZXhjZXB0aW9uU3Rh
Y2s7Ci0KICAgICAgICAgTGVnYWN5UHJvZmlsZXIqIG1fZW5hYmxlZFByb2ZpbGVyOwotCisgICAg
ICAgIE93blB0cjxCdWlsdGluRXhlY3V0YWJsZXM+IG1fYnVpbHRpbkV4ZWN1dGFibGVzOworICAg
ICAgICBSZWZDb3VudGVkQXJyYXk8U3RhY2tGcmFtZT4gbV9leGNlcHRpb25TdGFjazsKICAgICAg
ICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxXYXRjaHBvaW50U2V0Pj4gbV9pbXB1cmVQcm9wZXJ0
eVdhdGNocG9pbnRTZXRzOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjcwZmNjMzg0ZThlZGZjMzRiMTQwODNiODY1ZDM3MzgyMGY0MTY1YzQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5s
aW5lcy5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9KU1N0cmluZ0lubGlu
ZXNfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9KU1N0cmluZ0lubGluZXNfaAorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTU3RyaW5nSW5saW5lcy5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2Vt
ZW50LmNwcAppbmRleCAyZWRkY2RiYjlmMDA2Y2E3NjI2NjUwYjQyMDI3ODYyNmI5MjYxNDE3Li4z
YzRlMGQ3YmJiMzFjYWIxMmI1ZTZjOTc1Yzc0ZDNmNDg0ZTljYjE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBs
YWNlbWVudC5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9B
UElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZUlubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU1N0cmluZ0lubGluZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwCmluZGV4IDU2NDljODVj
YTA5NTg3NzQ4YTNkYTA2Y2RkZDBjYTk5OWU1MGI4ZTcuLjNmNGQ4ZWZhZWI1N2YzMzAwM2U3M2E3
ZTc4NDJlNDJjNzNjZTY0OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSURCQW55Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lE
QkFueUN1c3RvbS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJKU0lEQk9iamVjdFN0
b3JlLmgiCiAjaW5jbHVkZSAiSlNJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKaW5kZXggOWVhZTc1NjljNzA2MDNhNGZlZDBhZjE0
YzRmODcxOGNkZTY0YTZlMS4uZjQ5ZGZlOTBiNGU4MmQzOWVkY2JmOWJhMjlmMmFlNzk5YzBkZGYy
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1
c3RvbS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgog
I2luY2x1ZGUgIkpTSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+
Ci0jaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJp
bmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAKaW5kZXggNzRm
ZDM1NGIyODYwN2NmNzgyMmY4MDUzNDc5NzBmNWQ3YWM4YzgzMi4uNTQzNGIzYjdkNmM1NmVjYjBh
MDNhMjc5NGM2NzM2YTlhZGZiNzBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNp
bmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIkpTSURCSW5kZXguaCIKICNpbmNs
dWRlIDxydW50aW1lL0Vycm9yLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgorI2lu
Y2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA5ZDA2NmY1ZTFhMDA0ZmJkNGQ1NzQwZTQ5N2M4MjhjOWJlOGY5MGRhLi45MDky
ZTE3MDlkNmZmMjZkYWU2ZjI5MjNjNzUxY2I2OGFlMzM2MDVlIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBKUworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlZCB0aGUgdGVz
dCByZXN1bHRzIGZvciBuZXcgZXJyb3IgbWVzc2FnZXMgKG5vdyB0aGF0IHRoZXkncmUKKyAgICAg
ICAgYWN0dWFsbHkgaGVscGZ1bCksIGFuZCBhZGRlZCBhIGpzLXJlZ3Jlc3MgdGVzdCB0byB0cmFj
ayBwZXJmb3JtYW5jZS4KKworICAgICAgICAqIGpzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBqcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGpzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRt
bDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90
eXBlLWV2ZXJ5LmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QxKToKKyAgICAgICAgKHRlc3QyKToK
KyAgICAgICAgKHRlc3QzKToKKwogMjAxNC0wMS0zMCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFw
QGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1w
bHVnaW4tcHJpdmF0ZS1icm93c2luZy10b2dnbGVkLmh0bWwgaXMgZmxha3kgb24gV0syCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9qcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQKaW5kZXggNTQxYjhjMzU4ZjA2OGEwY2Vh
ODgyYzEwNTE3NTMyNTExNGNkMzNmNy4uY2NhMzYzZGNlNThmYmE5NWE1OGNlNDZmY2I0OGMzOGJm
NThhZGY1OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dApAQCAtMzAs
MTIgKzMwLDEyIEBAIFBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShpc0JpZ0Vub3VnaEFu
ZEV4Y2VwdGlvbikgdGhyZXcgZXhjZXB0aW9uIGV4Y2VwdGlvCiBQQVNTIFsxMiwgNTQsIDE4LCAx
MzAsIDQ0XS5ldmVyeShpc0JpZ0Vub3VnaEFuZEV4Y2VwdGlvbikgdGhyZXcgZXhjZXB0aW9uIGV4
Y2VwdGlvbiBmcm9tIGZ1bmN0aW9uLgogCiA1LjAgV3JvbmcgVHlwZSBmb3IgQ2FsbGJhY2sgVGVz
dAotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KDUpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoJ3dyb25n
JykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4
LCAxMzAsIDQ0XS5ldmVyeShuZXcgT2JqZWN0KCkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkobnVsbCkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0
XS5ldmVyeSh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3Iu
Ci1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBUeXBlIGVycm9yLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KDUpIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0
IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoJ3dyb25nJykg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNr
IG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShuZXcg
T2JqZWN0KCkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVy
eSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0u
ZXZlcnkobnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2
ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0
XS5ldmVyeSh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3Rv
dHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwg
MTMwLCA0NF0uZXZlcnkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5
cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgogCiA2LjAgRWFybHkgRXhpdCAo
IlNob3J0IENpcmN1aXRpbmciKQogUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KGlzQmln
RW5vdWdoU2hvcnRDaXJjdWl0KSBpcyBmYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
ZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2pzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQKaW5kZXggMmMy
YTY4Y2IxMDZkYTEwZjA4NmIyMmM1YmYyYmY1YzhmZTc5ZTMzZS4uNWQ5ZWNiNzVhOGRhNzliYTY1
NjA1ZTdlYjljZjhmYzI1ZmUxOGFmYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvZG9tL2Fy
cmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9q
cy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CkBAIC0xNSw3ICsx
NSw3IEBAIFBBU1MgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodW5kZWZpbmVkLCAwLCAxKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlCiBQQVNTIEFycmF5LnByb3RvdHlwZS5zb3J0
LmNhbGwodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMg
bm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnNvcnQuY2FsbCh1bmRl
ZmluZWQpJykuCiBQQVNTIEFycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbCh1bmRlZmluZWQsIDAs
IDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0
IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwodW5kZWZpbmVkLCAwLCAx
KScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUudW5zaGlmdC5jYWxsKHVuZGVmaW5lZCwge30pIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFs
dWF0aW5nICdBcnJheS5wcm90b3R5cGUudW5zaGlmdC5jYWxsKHVuZGVmaW5lZCwge30pJykuCi1Q
QVNTIEFycmF5LnByb3RvdHlwZS5ldmVyeS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0
aW5nICdBcnJheS5wcm90b3R5cGUuZXZlcnkuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKScpLgor
UEFTUyBBcnJheS5wcm90b3R5cGUuZXZlcnkuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhh
dCB8dGhpc3wgbm90IGJlIHVuZGVmaW5lZC4KIFBBU1MgQXJyYXkucHJvdG90eXBlLmZvckVhY2gu
Y2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRl
ZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLmZvckVh
Y2guY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUuc29t
ZS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVu
ZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUuc29t
ZS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpJykuCiBQQVNTIEFycmF5LnByb3RvdHlwZS5pbmRl
eE9mLmNhbGwodW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmlu
ZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLmluZGV4T2Yu
Y2FsbCh1bmRlZmluZWQsIDApJykuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L2FycmF5LXByb3RvdHlwZS1ldmVyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTI5MGMw
ZWVmZjhkZTQyMTgzM2Q5MmQyN2U5NTI0MTkxNzYwNGI5NgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5CisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sIGIvTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZTVjYzE3MWM0ODc1YTM1ODViZjE0ZTU0MTVmNWNkMGU1ODFkNTQ0Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbApA
QCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0
cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBl
LWV2ZXJ5LmpzIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyYXktcHJv
dG90eXBlLWV2ZXJ5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5NGFhMTYxYzBjZTk4YjJhYjE4YTNhMWExZjBk
ZmFhYzlkN2QyZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuanMKQEAgLTAsMCArMSwyOSBAQAordmFy
IHJlc3VsdCA9IDA7CitmdW5jdGlvbiB0ZXN0MShhKSB7CisgICAgcmVzdWx0IDw8IDE7CisgICAg
cmVzdWx0Kys7CisgICAgcmV0dXJuIHRydWU7Cit9CitmdW5jdGlvbiB0ZXN0MihhLGIpIHsKKyAg
ICByZXN1bHQgXj0gMzsKKyAgICByZXN1bHQgKj0gMzsKKyAgICByZXR1cm4gdHJ1ZTsKK30KK2Z1
bmN0aW9uIHRlc3QzKGEsYixjKSB7CisgICAgcmVzdWx0IF49IHJlc3VsdCA+PiAxOworICAgIHJl
dHVybiB0cnVlOworfQorCit2YXIgcmVzdWx0ID0gMDsKK3ZhciBhcnJheSA9IFtdCitmb3IgKHZh
ciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKQorICAgIGFycmF5W2ldID0gMTsKKworZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDsgaSsrKSB7CisgICAgYXJyYXkuZXZlcnkodGVzdDEpOworICAgIGFycmF5
LmV2ZXJ5KHRlc3QyKTsKKyAgICBhcnJheS5ldmVyeSh0ZXN0Myk7Cit9CisKK2lmIChyZXN1bHQg
IT0gMTQyODgxMDQ5NikKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7
CmRpZmYgLS1naXQgYS9HTlVtYWtlZmlsZS5hbSBiL0dOVW1ha2VmaWxlLmFtCmluZGV4IDczZmM0
OTI4YzRkZDQ5YjU0OTg2OWI1MDY3OGM2YmRlNzRmNDQ3NjAuLjA4YzkxMTU0MjYwNTAwZGUzZmYw
NGIwMjBjZTBkNjBmOThlOGNmZTggMTAwNjQ0Ci0tLSBhL0dOVW1ha2VmaWxlLmFtCisrKyBiL0dO
VW1ha2VmaWxlLmFtCkBAIC02OCw2ICs2OCw3IEBAIEFMTF9NT0ZJTEVTIDo9CiBkb21fYmluZGlu
Z19pZGxzIDo9CiB3dGZfc291cmNlcyA6PQogamF2YXNjcmlwdGNvcmVfaF9hcGkgOj0KK2phdmFz
Y3JpcHRjb3JlX2J1aWx0aW5zX2pzX25vc291cmNlcyA6PQogamF2YXNjcmlwdGNvcmVfY3BwZmxh
Z3M6PQogamF2YXNjcmlwdGNvcmVfY2ZsYWdzIDo9CiBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzIDo9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222771</attachid>
            <date>2014-01-30 17:53:11 -0800</date>
            <delta_ts>2014-01-30 18:08:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140130175305.patch</filename>
            <type>text/plain</type>
            <size>197680</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NjgxMzcxYWU2ZDBjYWZlNDJmNWNmN2E1NWI3MjRjMTc5ODExYjBhLi43NTA0MGJiMjVhNTg0MTY0
Mzg5ODQzNDFjNmEwMjMzMzdhOTk1ZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
IFRoaXMgcmVzdWx0IG9mIHRoaXMgcmVmYWN0b3JpbmcKKyAgICAgICAgaXMgdGhhdCBDb21tb25J
ZGVudGlmaWVycywgYW5kIGEgZmV3IG90aGVyIG1pc2NlbGxhbmVvdXMgaGVhZGVycyBub3cKKyAg
ICAgICAgbmVlZCB0byBiZSBpbmNsdWRlZCBkaXJlY3RseSBhcyB0aGV5IHdlcmUgZm9ybWVybHkg
Y2FwdHVyZWQgdGhyb3VnaCBvdGhlcgorICAgICAgICBwYXRocy4KKworICAgICAgICBJbiBhZGRp
dGlvbiB0aGlzIGFkZHMgYSBmbGFnIHRvIHRoZSBMb29rdXAgdGFibGUncyBoYXNoZW50cnkgdG8g
aW5kaWNhdGUKKyAgICAgICAgdGhhdCBhIHN0YXRpYyBmdW5jdGlvbiBpcyBhY3R1YWxseSBiYWNr
ZWQgYnkgSlMuIFRoZXJlIGlzIHRoZW4gYSBsb3Qgb2YKKyAgICAgICAgbG9naWMgdG8gdGhyZWFk
IHRoZSBzcGVjaWFsIG5hdHVyZSBvZiB0aGUgZnVuY3RvbiB0byB3aGVyZSBpdCBtYXR0ZXJzLgor
ICAgICAgICBUaGlzIGFsbG93cyB0b1N0cmluZygpLCAuY2FsbGVyLCBldGMgdG8gbWltaWMgdGhl
IGJlaGF2aW91ciBvZiBhIGhvc3QKKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAgICAgTm90ZXMg
b24gd3JpdGluZyBidWlsdGluczoKKyAgICAgICAgIC0gRWFjaCBmdW5jdGlvbiBpcyBjb21waWxl
ZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBvdGhlcnMsIGFuZCB0aG9zZQorICAgICAgICAgICBpbXBs
ZW1lbnRhdGlvbnMgY2Fubm90IGN1cnJlbnRseSBjYXB0dXJlIGFsbCBnbG9iYWwgcHJvcGVydGll
cyAoYXMKKyAgICAgICAgICAgdGhhdCBjb3VsZCBiZSBwb3RlbnRpYWxseSB1bnNhZmUpLiBJZiBh
IGZ1bmN0aW9uIGRvZXMgY2FwdHVyZSBhCisgICAgICAgICAgIGdsb2JhbCB3ZSB3aWxsIGRlbGli
ZXJhdGVseSBjcmFzaC4KKyAgICAgICAgIC0gRm9yIHRob3NlICJnbG9iYWwiIHByb3BlcnRpZXMg
dGhhdCB3ZSBkbyB3YW50IGFjY2VzcyB0bywgd2UgdXNlCisgICAgICAgICAgIHRoZSBAIHByZWZp
eCwgZS5nLiBPYmplY3QodGhpcykgYmVjb21lcyBAT2JqZWN0KHRoaXMpLiBUaGUgQCBpZGVudGlm
aWVycworICAgICAgICAgICBhcmUgcHJpdmF0ZSBuYW1lcywgYW5kIGJlaGF2ZSBqdXN0IGxpa2Ug
cmVndWxhciBwcm9wZXJ0aWVzLCBvbmx5CisgICAgICAgICAgIHdpdGhvdXQgdGhlIHJpc2sgb2Yg
YWR1bHRlcmF0aW9uLiBBZ2FpbiwgaW4gdGhlIEBPYmplY3QgY2FzZSwgd2UKKyAgICAgICAgICAg
ZXhwbGljaXRseSBkdXBsaWNhdGUgdGhlIE9iamVjdENvbnN0cnVjdG9yIHJlZmVyZW5jZSBvbiB0
aGUgR2xvYmFsT2JqZWN0CisgICAgICAgICAgIHNvIHRoYXQgd2UgaGF2ZSBndWFyYW50ZWVkIGFj
Y2VzcyB0byB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgY29uc3RydWN0
b3IuCisgICAgICAgICAtIGNhbGwsIGFwcGx5LCBldmFsLCBhbmQgRnVuY3Rpb24gYXJlIGFsbCBy
ZWplY3RlZCBpZGVudGlmaWVycywgYWdhaW4KKyAgICAgICAgICAgdG8gcHJldmVudCBhbnl0aGlu
ZyBmcm9tIGFjY2lkZW50YWxseSB1c2luZyBhbiBhZHVsdGVyYXRlZCBvYmplY3QuCisgICAgICAg
ICAgIEluc3RlYWQgQGNhbGwgYW5kIEBhcHBseSBhcmUgYXZhaWxhYmxlLCBhbmQgaGFwcGlseSB0
aGV5IGNvbXBsZXRlbHkKKyAgICAgICAgICAgZHJvcCB0aGUgbmVxX3B0ciBpbnN0cnVjdGlvbiBh
cyB0aGV5J3JlIGRlZmluZWQgYXMgYWx3YXlzIGJlaW5nIHRoZQorICAgICAgICAgICBvcmlnaW5h
bCBjYWxsL2FwcGx5IGZ1bmN0aW9ucy4KKworICAgICAgICBUaGVzZSByZXN0cmljdGlvbnMgYXJl
IGp1c3QgaW50ZW5kZWQgdG8gbWFrZSBpdCBoYXJkZXIgdG8gYWNjaWRlbnRhbGx5CisgICAgICAg
IG1ha2UgY2hhbmdlcyB0aGF0IGFyZSBpbmNvcnJlY3QgKGZvciBpbnN0YW5jZSBjYWxsaW5nIHdo
YXRldmVyIGhhcyBiZWVuCisgICAgICAgIGFzc2lnbmVkIHRvIGdsb2JhbC5PYmplY3QsIGluc3Rl
YWQgb2YgdGhlIG9yaWdpbmFsIGNvbnN0cnVjdG9yIGZ1bmN0aW9uKS4KKyAgICAgICAgSG93ZXZl
ciwgbWFraW5nIGEgbWlzdGFrZSBsaWtlIHRoaXMgc2hvdWxkIHJlc3VsdCBpbiBhIHB1cmVseSBz
ZW1hbnRpYworICAgICAgICBlcnJvciBhcyBmdW5kYW1lbnRhbGx5IHRoZXNlIGZ1bmN0aW9ucyBh
cmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlCisgICAgICAgIHJlZ3VsYXIgSlMgY29kZSBp
biB0aGUgaG9zdCBnbG9iYWwsIGFuZCBoYXZlIG5vIG1vcmUgcHJpdmlsZWdlcyB0aGFuCisgICAg
ICAgIGFueSBvdGhlciBKUy4KKworICAgICAgICBUaGUgaW5pdGlhbCBwcm9vZiBvZiBjb25jZXB0
IGlzIEFycmF5LnByb3RvdHlwZS5ldmVyeSwgdGhpcyBzaG93cyBhIDY1JQorICAgICAgICBwZXJm
b3JtYW5jZSBpbXByb3ZlbWVudCwgYW5kIHRoYXQgaW1wcm92ZW1lbnQgaXMgc2lnbmlmaWNhbnRs
eSBodXJ0IGJ5CisgICAgICAgIG91ciBwb29yIG9wdGltaXNhdGlvbiBvZiBvcF9pbi4KKworICAg
ICAgICBBcyB0aGlzIGlzIHN1Y2ggYSBsaW1pdGVkIGZ1bmN0aW9uLCB3ZSBoYXZlIG5vdCB5ZXQg
ZXhwb3J0ZWQgYWxsIHN5bWJvbHMKKyAgICAgICAgdGhhdCB3ZSBjb3VsZCBwb3NzaWJseSBuZWVk
LCBidXQgYXMgd2UgaW1wbGVtZW50IG1vcmUsIHRoZSBsaWtlbGlob29kCisgICAgICAgIG9mIGVu
Y291bnRlcmluZyBtaXNzaW5nIGZlYXR1cmVzIHdpbGwgcmVkdWNlLgorCisgICAgICAgIFRoaXMg
ZGlkIHJlcXVpcmUgYnJlYWtpbmcgb3V0IGEgSlNTdHJpbmdJbmxpbmVzIGhlYWRlciwgYW5kIHJl
cXVpcmVkCisgICAgICAgIGZpeGluZyBhIGZldyBvYmplY3RzIHRoYXQgd2VyZSB0cnlpbmcgdG8g
dXNpbmcgUHJvcGVydHlOYW1lOjpwdWJsaWNOYW1lCisgICAgICAgIHJhdGhlciB0aGFuIFByb3Bl
cnR5TmFtZTo6dWlkLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0
eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dCk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRpY1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWNGdW5jdGlvbkdl
dHRlcik6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tH
ZXR0ZXIpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBidWlsdGlucy9BcnJheS5wcm90b3R5cGUuanM6CisgICAgICAgIChldmVyeSk6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkJ1aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKToKKyAgICAgICAgKEpTQzo6
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSk6CisgICAgICAgICog
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVj
dXRhYmxlczo6Y3JlYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tG
b3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6dG9TdHJpY3RuZXNzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNCdWlsdGluRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBjcmVhdGVfaGFz
aF90YWJsZToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZ2Vu
ZXJhdGUtanMtYnVpbHRpbnM6IEFkZGVkLgorICAgICAgICAoZ2V0Q29weXJpZ2h0KToKKyAgICAg
ICAgKGdldEZ1bmN0aW9ucyk6CisgICAgICAgIChnZW5lcmF0ZUNvZGUpOgorICAgICAgICAobWFu
Z2xlTmFtZSk6CisgICAgICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSWRlbnRp
Zmllcik6CisgICAgICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChTb3VyY2VDb2RlKToK
KyAgICAgICAgKFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKFZNKToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvUHJvdG9DYWxsRnJhbWUuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUp
OgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpM
ZXhlcik6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpM
ZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFy
Pjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAg
ICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcik6CisgICAgICAgICog
cGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OnNldENsb3NlZFZh
cmlhYmxlcyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
Tm9kZTo6Y2FwdHVyZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OnNldENs
b3NlZFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmluaXNoUGFy
c2luZyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRU
b2tlblRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OmdldFVzZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNsb3NlZFZhcmlh
Ymxlcyk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9k
ZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAgICAgICogcnVudGlt
ZS9BcmdMaXN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAg
ICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJh
dG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpn
ZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpD
b21tb25JZGVudGlmaWVycyk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQ
cml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQdWJsaWNO
YW1lKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzRXhjZXB0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxl
OjpleGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpleGVj
dXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aXNCdWlsdGlu
RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1l
L0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFi
bGVHZXQpOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0KToKKyAg
ICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgICogcnVudGltZS9K
U0NlbGxJbmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6c291cmNlQ29kZSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzSG9zdE9y
QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6aXNCdWlsdGluRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIpOgorICAgICAg
ICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9w
ZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgICogcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6Om9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpnZXRDbGFzc1Byb3BlcnR5TmFtZXMpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZ0lubGlu
ZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjppbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9i
amVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgICAgRG9uJ3QgcmVw
b3J0IHByaXZhdGUgbmFtZXMuCisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6c3ltYm9s
VGFibGVQdXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChKU0M6OnNldFVwU3RhdGlj
RnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlND
OjpIYXNoRW50cnk6OmJ1aWx0aW5HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpIYXNoRW50cnk6
OnByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpwcm9wZXJ0eVB1dHRl
cik6CisgICAgICAgIChKU0M6Okhhc2hUYWJsZTo6ZW50cnkpOgorICAgICAgICAoSlNDOjpnZXRT
dGF0aWNQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpnZXRTdGF0aWNWYWx1ZVNsb3QpOgor
ICAgICAgICAoSlNDOjpwdXRFbnRyeSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6YnVp
bHRpbkV4ZWN1dGFibGVzKToKKwogMjAxNC0wMS0yOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBw
bGUuY29tPgogCiAgICAgICAgIEZUTCBzaG91bGQgc3VwcG9ydCBHZXRCeUlkKFVudHlwZWQ6KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDFhZDY5NzQ4OGIwYzRiOGI0Y2ZhZTI5MTM1NDI1OWI2ZGFjZmRjNDUuLmYz
YzNkNzE3MWQwNTQ0ODBlYzYwNTQwYzBkNTI1OTk2ZWVjZGI5YTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxNC0wMS0yOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gaW1wbGVtZW50IEpTIGJ1aWx0aW5zIGluIEpT
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc4ODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGlu
ZyBmb3IgdGhlIG5ld2x5IHJlcXVpcmVkIGhlYWRlcnMuCisKKyAgICAgICAgVGVzdDoganMvcmVn
cmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbAorCisgICAgICAgICogRm9yd2FyZGluZ0hl
YWRlcnMvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0lEQkFueUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJREJE
YXRhYmFzZUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9y
ZUN1c3RvbS5jcHA6CisKIDIwMTQtMDEtMzAgIFJvZ2VyIEZvbmcgIDxyb2dlcl9mb25nQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWJHTCBsb2FkIHBvbGljeSBzaG91bGQgYmUgcXVlcmllZCBmb3Ig
dGhlIHRvcCBsZXZlbCBkb2N1bWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggNWJlMDUzZjFlMDg2YjQzZTY4
NmMzNjc0ZGFlN2M1MTYwNWEyODZlNy4uMGVjZWQ1MWYzZTJkNWI2MjFkYWRmMDU3NDlmNWU3NDY2
YTA2ZjUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBib29sIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZQogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKICAg
ICBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHByb3BlcnR5TmFtZVJlZjsKICAgICAKLSAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpT
Q2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xh
c3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgLy8gb3B0aW9uYWwgb3B0
aW1pemF0aW9uIHRvIGJ5cGFzcyBnZXRQcm9wZXJ0eSBpbiBjYXNlcyB3aGVuIHdlIG9ubHkgbmVl
ZCB0byBrbm93IGlmIHRoZSBwcm9wZXJ0eSBleGlzdHMKICAgICAgICAgICAgIGlmIChKU09iamVj
dEhhc1Byb3BlcnR5Q2FsbGJhY2sgaGFzUHJvcGVydHkgPSBqc0NsYXNzLT5oYXNQcm9wZXJ0eSkg
ewpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiAgICAgUmVmUHRy
PE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgSlNWYWx1ZVJlZiB2YWx1ZVJl
ZiA9IHRvUmVmKGV4ZWMsIHZhbHVlKTsKICAgICAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9
IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJl
bnRDbGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBz
ZXRQcm9wZXJ0eSA9IGpzQ2xhc3MtPnNldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFwcm9wZXJ0eU5hbWVSZWYpCkBAIC0zNDMsNyArMzQzLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm8KICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CiAgICAg
UmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0Ns
YXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNz
ID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdERlbGV0
ZVByb3BlcnR5Q2FsbGJhY2sgZGVsZXRlUHJvcGVydHkgPSBqc0NsYXNzLT5kZWxldGVQcm9wZXJ0
eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lUmVmKQpAQCAtNTY0LDcgKzU2
NCw3IEBAIEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiB7CiAgICAgSlNPYmplY3RSZWYgdGhpc1Jl
ZiA9IHRvUmVmKHRoaXMpOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gY2xhc3NS
ZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAg
ICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXMgPSBq
c0NsYXNzLT5zdGF0aWNWYWx1ZXMoZXhlYykpIHsKICAgICAgICAgICAgICAgICBpZiAoU3RhdGlj
VmFsdWVFbnRyeSogZW50cnkgPSBzdGF0aWNWYWx1ZXMtPmdldChuYW1lKSkgewpAQCAtNjAwLDcg
KzYwMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGlj
RnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFCiAgICAgaWYgKFBhcmVudDo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdDIpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QyLmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFt
ZSkpOwogCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsK
ICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqLT5jbGFzc1JlZigpOyBq
c0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlm
IChPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGUqIHN0YXRpY0Z1bmN0aW9ucyA9IGpz
Q2xhc3MtPnN0YXRpY0Z1bmN0aW9ucyhleGVjKSkgewogICAgICAgICAgICAgICAgIGlmIChTdGF0
aWNGdW5jdGlvbkVudHJ5KiBlbnRyeSA9IHN0YXRpY0Z1bmN0aW9ucy0+Z2V0KG5hbWUpKSB7CkBA
IC02MjYsNyArNjI2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpjYWxsYmFja0dldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWQKICAgICBKU09iamVjdFJl
ZiB0aGlzUmVmID0gdG9SZWYodGhpc09iaik7CiAgICAgUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBw
cm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2Jq
LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsK
ICAgICAgICAgICAgIGlmIChKU09iamVjdEdldFByb3BlcnR5Q2FsbGJhY2sgZ2V0UHJvcGVydHkg
PSBqc0NsYXNzLT5nZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlO
YW1lUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDI3YmM0YzE3ZjNk
ZmVlYjYxZDI1MjMyM2ZkODc4YzQ0NzgwZjc0YzUuLjBjNGRlZmI5OWRiMzk5NDNiYTY1MjI0NmVj
ZGY5OTI3ZjE0ZTZmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUy
LDYgKzUyLDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9TY3Jp
cHRPYmplY3QuY3BwCiAgICAgYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCiAKKyAgICBidWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCisKICAgICBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Q
cm9maWxlLmNwcAogICAgIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9C
eXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC03MDcsNyArNzA5LDcgQEAgc2V0KEhBU0hfTFVUX0dF
TkVSQVRPUiAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vY3JlYXRlX2hhc2hfdGFibGUpCiBt
YWNybyhHRU5FUkFURV9IQVNIX0xVVCBfaW5wdXQgX291dHB1dCkKICAgICBhZGRfY3VzdG9tX2Nv
bW1hbmQoCiAgICAgICAgIE9VVFBVVCAke19vdXRwdXR9Ci0gICAgICAgIERFUEVORFMgJHtIQVNI
X0xVVF9HRU5FUkFUT1J9ICR7X2lucHV0fQorICAgICAgICBERVBFTkRTICR7SEFTSF9MVVRfR0VO
RVJBVE9SfSAke19pbnB1dH0gJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9K
U0NCdWlsdGlucy5oCiAgICAgICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7SEFTSF9M
VVRfR0VORVJBVE9SfSAke19pbnB1dH0gLWkgPiAke19vdXRwdXR9CiAgICAgICAgIFZFUkJBVElN
KQogICAgIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMgJHtfb3V0cHV0fSkKQEAg
LTgxNSwxNiArODE3LDI3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBDT01NQU5EICR7UFlU
SE9OX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENvcmVfSU5TUEVDVE9SX1NDUklQVFNfRElSfS9D
b2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0vSW5zcGVjdG9ySlMuanNvbiAtLW91dHB1dF9oX2RpciAiJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfSIgLS1vdXRwdXRfY3BwX2RpciAiJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfSIgLS1vdXRwdXRfanNfZGlyICIke0RFUklWRURfU09VUkNFU19K
QVZBU0NSSVBUQ09SRV9ESVJ9IiAtLW91dHB1dF90eXBlIEphdmFTY3JpcHQgLS13cml0ZV9hbHdh
eXMgJiYgbWtkaXIgLXAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9pbnNw
ZWN0b3IgJiYgY3AgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0
b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0vSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmggJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oICR7REVSSVZFRF9T
T1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yCiAgICAgVkVSQkFUSU0pCiAKKyMg
SlNDQnVpbHRpbnMKK2ZpbGUoR0xPQiBKU0NCdWlsdGluc19qc19maWxlcyAiJHtDTUFLRV9DVVJS
RU5UX1NPVVJDRV9ESVJ9L2J1aWx0aW5zLyouanMiKQorYWRkX2N1c3RvbV9jb21tYW5kKAorICAg
T1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMu
Y3BwICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAor
ICAgTUFJTl9ERVBFTkRFTkNZICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9nZW5lcmF0ZS1q
cy1idWlsdGlucworICAgREVQRU5EUyAke0pTQ0J1aWx0aW5zX2pzX2ZpbGVzfQorICAgQ09NTUFO
RCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZ2VuZXJh
dGUtanMtYnVpbHRpbnMgJHtKU0NCdWlsdGluc19qc19maWxlc30gJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFT
Q1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuY3BwCisgICBWRVJCQVRJTSkKKwogbGlzdChBUFBF
TkQgSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwCiAgICAgJHtERVJJ
VkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0
Y2hlcnMuY3BwCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNw
ZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAKKyAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBU
Q09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcAogKQogCiBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29y
ZV9IRUFERVJTCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNw
ZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVND
UklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuaAogICAgICR7REVS
SVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMu
aAorICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMu
aAogKQogCiBhZGRfY3VzdG9tX2NvbW1hbmQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCmluZGV4IDExNTZlOTdmZDg4NjI1NTdjOWNmOGQzYjY4YmY0ZDAzYzNlOGJh
OGYuLjdjOTgyYjY5MTNlMmY4OGQ1ODg4NGRiZTIzNzNmNTk1ZTdiNDU5MmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yOCw4ICsyOCw5IEBAIFZQQVRI
ID0gXAogICAgICQoSmF2YVNjcmlwdENvcmUpIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9wYXJz
ZXIgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL3J1bnRpbWUgXAotICAgICQoSmF2YVNjcmlwdENv
cmUpL2ludGVycHJldGVyIFwKLSAgICAkKEphdmFTY3JpcHRDb3JlKS9qaXQgXAorCSQoSmF2YVNj
cmlwdENvcmUpL2ludGVycHJldGVyIFwKKwkkKEphdmFTY3JpcHRDb3JlKS9qaXQgXAorCSQoSmF2
YVNjcmlwdENvcmUpL2J1aWx0aW5zIFwKICMKIAogLlBIT05ZIDogYWxsCkBAIC01NywxMiArNTgs
MjUgQEAgYWxsIDogXAogICAgIFJlZ0V4cE9iamVjdC5sdXQuaCBcCiAgICAgU3RyaW5nQ29uc3Ry
dWN0b3IubHV0LmggXAogICAgIHVkaXM4Nl9pdGFiLmggXAorICAgIEpTQ0J1aWx0aW5zIFwKICMK
IAorIyBidWlsdGluIGZ1bmN0aW9ucworLlBIT05ZOiBKU0NCdWlsdGlucworCitKU0NCdWlsdGlu
czogJChKYXZhU2NyaXB0Q29yZSkvZ2VuZXJhdGUtanMtYnVpbHRpbnMgSlNDQnVpbHRpbnMuaCBK
U0NCdWlsdGlucy5jcHAKK0pTQ0J1aWx0aW5zLmg6ICQoSmF2YVNjcmlwdENvcmUpL2dlbmVyYXRl
LWpzLWJ1aWx0aW5zICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zLyouanMKKwlweXRob24gJF4g
JEAKKwkJCQkJCQkJCQkJCQkJCQkJCQkJIAorSlNDQnVpbHRpbnMuY3BwOiBKU0NCdWlsdGlucy5o
CisKICMgbG9va3VwIHRhYmxlcyBmb3IgY2xhc3NlcwogCitjcmVhdGVfaGFzaF90YWJsZTogSlND
QnVpbHRpbnMKKwogJS5sdXQuaDogY3JlYXRlX2hhc2hfdGFibGUgJS5jcHAKIAkkXiAtaSA+ICRA
CisKIExleGVyLmx1dC5oOiBjcmVhdGVfaGFzaF90YWJsZSBLZXl3b3Jkcy50YWJsZQogCSReID4g
JEAKIApAQCAtNzksNyArOTMsNiBAQCBLZXl3b3JkTG9va3VwLmg6IEtleXdvcmRMb29rdXBHZW5l
cmF0b3IucHkgS2V5d29yZHMudGFibGUKIHVkaXM4Nl9pdGFiLmg6ICQoSmF2YVNjcmlwdENvcmUp
L2Rpc2Fzc2VtYmxlci91ZGlzODYvaXRhYi5weSAkKEphdmFTY3JpcHRDb3JlKS9kaXNhc3NlbWJs
ZXIvdWRpczg2L29wdGFibGUueG1sCiAJKFBZVEhPTlBBVEg9JChKYXZhU2NyaXB0Q29yZSkvZGlz
YXNzZW1ibGVyL3VkaXM4NiBweXRob24gJChKYXZhU2NyaXB0Q29yZSkvZGlzYXNzZW1ibGVyL3Vk
aXM4Ni9pdGFiLnB5ICQoSmF2YVNjcmlwdENvcmUpL2Rpc2Fzc2VtYmxlci91ZGlzODYvb3B0YWJs
ZS54bWwgfHwgZXhpdCAxKQogCi0KICMgSW5zcGVjdG9yIGludGVyZmFjZXMKIAogSU5TUEVDVE9S
X0RPTUFJTlMgPSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZp
bGUuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggZmU1NDQ4
ZGRjMWJjZmFhNGM3MjlhMWNjMDBkZWE2MjQzMTkzOTBhMi4uYjYyMjFlNTBlNGFjMDBjMDJmZjFj
MmQ2YzU1MjU5Mzg2MGMyNzQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQpA
QCAtOTcsNiArOTcsOCBAQCAkKHNoZWxsIG1rZGlyIC1wIERlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlKQogRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTGV4ZXIubHV0Lmg6ICQoc3Jj
ZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUgJChzcmNkaXIpL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvS2V5d29yZHMudGFibGUKIAkkKEFNX1ZfR0VOKSQo
UEVSTCkgJF4gPiAkQAogCiskKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9o
YXNoX3RhYmxlOiAkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWpzLWJ1
aWx0aW5zCisKIERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlLyUubHV0Lmg6ICQoc3JjZGly
KS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUgJChzcmNkaXIpL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lLyUuY3BwCiAJJChBTV9WX0dFTikkKFBFUkwpICReIC1p
ID4gJEAKIApAQCAtMTEwLDEyICsxMTIsMTYgQEAgRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvTExJbnREZXNpcmVkT2Zmc2V0cy5oOiAkKGphdmFzY3JpcHRjb3JlX3NvdXJjZXMpICQKIAkk
KEFNX1ZfR0VOKSQoUlVCWSkgJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIgJChzcmNkaXIpL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSAkQAogCSQoQU1fVl9hdCl0b3Vj
aCAkQAogCi0kKFByb2dyYW1zX0xMSW50T2Zmc2V0c0V4dHJhY3Rvcl9PQkpFQ1RTKTogRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnREZXNpcmVkT2Zmc2V0cy5oCiskKFByb2dyYW1z
X0xMSW50T2Zmc2V0c0V4dHJhY3Rvcl9PQkpFQ1RTKTogRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvTExJbnREZXNpcmVkT2Zmc2V0cy5oIAogCiBEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0
Q29yZS9MTEludEFzc2VtYmx5Lmg6IFByb2dyYW1zL0xMSW50T2Zmc2V0c0V4dHJhY3RvciQoRVhF
RVhUKQogCSQoQU1fVl9HRU4pJChSVUJZKSAkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vYXNtLnJiICQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20gUHJvZ3JhbXMvTExJbnRPZmZzZXRzRXh0cmFjdG9yJChF
WEVFWFQpICRACiAJJChBTV9WX2F0KXRvdWNoICRACiAKK0Rlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL0pTQ0J1aWx0aW5zLmg6IERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1
aWx0aW5zLmNwcAorRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNDQnVpbHRpbnMuY3Bw
OiAkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5zICQo
amF2YXNjcmlwdGNvcmVfYnVpbHRpbnNfanNfc291cmNlcykKKwkkKEFNX1ZfR0VOKSQoUFlUSE9O
KSAkXiAkQAorCiAkKGxpYmphdmFzY3JpcHRjb3JlZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZF
UlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX09CSkVDVFMpOiBEZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS9MTEludEFzc2VtYmx5LmgKIAoganNjOiAkKGphdmFzY3Jp
cHRjb3JlX2J1aWx0X25vc291cmNlcykgUHJvZ3JhbXMvanNjJChFWEVFWFQpCkBAIC0yMTYsNiAr
MjIyLDcgQEAgRVhUUkFfRElTVCArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL0tleXdvcmRM
b29rdXBHZW5lcmF0b3IucHkgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvS2V5d29y
ZHMudGFibGUgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9USEFOS1MgXAorCSQoamF2YXNjcmlw
dGNvcmVfYnVpbHRpbnNfanNfbm9zb3VyY2VzKSBcCiAJJChsbGludF9ub3NvdXJjZXMpIFwKIAkk
KG9mZmxpbmVhc21fbm9zb3VyY2VzKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCmluZGV4IGNkYjU0MjZiMDZiNTJhOTgyNTZlZTkwNThiYmE4ZjExZWVhNjllZTAu
Ljk4ZmFhYTdkMTc1YWE2MWYyMDg5NmNlZWIxMzg2M2UyN2IyNjZjZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yMCw2ICsyMCw4IEBAIGphdmFzY3Jp
cHRjb3JlX2J1aWx0X25vc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvRXJyb3JQcm90b3R5cGUubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3Jl
L0pTRGF0YVZpZXdQcm90b3R5cGUubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlL0pTR2xvYmFsT2JqZWN0Lmx1dC5oIFwKKwlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29y
ZS9KU0NCdWlsdGlucy5jcHAgXAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1
aWx0aW5zLmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTT05PYmplY3QubHV0
LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTUHJvbWlzZUNvbnN0cnVjdG9y
Lmx1dC5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU1Byb21pc2VQcm90b3R5
cGUubHV0LmggXApAQCAtMzUsNiArMzcsOSBAQCBqYXZhc2NyaXB0Y29yZV9idWlsdF9ub3NvdXJj
ZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9mZnNl
dHMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnRBc3NlbWJseS5oCiAK
K2phdmFzY3JpcHRjb3JlX2J1aWx0aW5zX2pzX25vc291cmNlcyArPSBcCisJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcworCiBqYXZhc2NyaXB0Y29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rp
b24uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmggXApAQCAtMTAyLDYg
KzEwNyw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRPYmplY3QuaCBcCiAgICAgU291cmNlL0phdmFTY3JpcHRD
b3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcCBcCiAgICAgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL1NjcmlwdFZhbHVlLmggXAorICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAgXApAQCAtMTI0MSw3ICsxMjQ4LDkgQEAg
amF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmggXAogCURlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmNwcCBcCi0J
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaAor
CURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgg
XAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmNwcCBcCisJRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNDQnVpbHRpbnMuaAogCiBsbGludF9ub3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
MzJfNjQuYXNtIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDVl
ZGVmZGJlODU1Zjk2YTYyNjhkODU3M2JlYzFkMGMzZDg1OGFhNWMuLmExMmRiMTgzNDg2ZGZiYmNh
ODNmM2E3OGU5Y2Y5ODYzMWIyNjUzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvagpAQCAtMzA5LDYgKzMwOSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxi
aW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cYmluZGluZ3NcU2NyaXB0T2JqZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdFZhbHVlLmNwcCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5UHJvZmlsZS5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeXRlY29kZUJhc2ljQmxvY2suY3Bw
IiAvPgpAQCAtNzIxLDYgKzcyMiw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3Rv
ckpTRnJvbnRlbmREaXNwYXRjaGVycy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwIiAvPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0
aW5zLmNwcCIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcQXJyYXlDb25zdHJ1Y3Rvci5sdXQu
aCIgLz4KQEAgLTc1MCw2ICs3NTIsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXFJlZ0V4cE9iamVjdC5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xSZWdFeHBQcm90b3R5cGUubHV0Lmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2Jq
JChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcU3Ry
aW5nQ29uc3RydWN0b3IubHV0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuaCIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJ
dGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcQVBJQ2FsbGJhY2tGdW5j
dGlvbi5oIiAvPgpAQCAtNzk4LDYgKzgwMSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdE9iamVjdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cYmluZGluZ3NcU2NyaXB0VmFsdWUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxlcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlQcm9maWxlLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeVZhbEluZm8uaCIgLz4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA4N2UxMmE0NzE1OGJi
NjIyNGQ0OWZkNjIyOTc4YzRhOWM0NDM1YTY1Li44NjljMWY1ODliY2I2ODZlYjljZjIwYzA5NmJl
MWI4M2E1NTFlMjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvai5maWx0ZXJzCkBAIC03LDYgKzcsOSBAQAogICAgIDxGaWx0ZXIgSW5jbHVkZT0iYmluZGlu
Z3MiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezBiYWNlMTIzLTQ1ODItZWViYy05MzE0LTc4
MTliMzc2YzE5OH08L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRl
ciBJbmNsdWRlPSJidWlsdGlucyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57M2I5ZDcyYTUt
MTM1Yi00M2IzLWE1MjQtYzZkMmI5ZDI5ZDM1fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0Zp
bHRlcj4KICAgICA8RmlsdGVyIEluY2x1ZGU9ImJ5dGVjb2RlIj4KICAgICAgIDxVbmlxdWVJZGVu
dGlmaWVyPns3NjYwODhhMC0xMjE2LTQ4NTQtYWE0My01NjBjNWUyODM2Njh9PC9VbmlxdWVJZGVu
dGlmaWVyPgogICAgIDwvRmlsdGVyPgpAQCAtMTA4LDYgKzExMSw5IEBACiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcTWFjcm9Bc3NlbWJsZXIuY3BwIj4KICAgICAgIDxGaWx0
ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxidWlsdGluc1xCdWlsdGluRXhlY3V0YWJsZXMuY3BwIj4KKyAgICAgIDxGaWx0
ZXI+YnVpbHRpbnM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIj4KICAgICAgIDxG
aWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTEzMjksNiArMTMz
NSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
SW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3Vy
Y2VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuY3BwIj4KKyAgICAgIDxGaWx0ZXI+
RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgIDwvSXRlbUdyb3Vw
PgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEFQSUNhbGxi
YWNrRnVuY3Rpb24uaCI+CkBAIC0xNDU0LDYgKzE0NjMsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cYXNzZW1ibGVyXFg4NkFzc2VtYmxlci5oIj4KICAgICAgIDxGaWx0ZXI+YXNzZW1i
bGVyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxidWlsdGluc1xCdWlsdGluRXhlY3V0YWJsZXMuaCI+CisgICAgICA8RmlsdGVyPmJ1aWx0aW5z
PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxi
eXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmgiPgogICAgICAgPEZpbHRlcj5ieXRlY29k
ZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMjU1MCw2ICsyNTYyLDkgQEAKICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3Jt
QXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xBcnJheVByb3RvdHlw
ZS5sdXQuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgogICAgIDwv
Q2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEpTQ0J1aWx0aW5zLmgiPgorICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
Vk0uaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlQ29tbW9uLnByb3BzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmVDb21tb24ucHJvcHMKaW5kZXggMzYyMmZm
YzU3N2M0M2RkZjcwZGE1MWZmNjhhZDY0NmY2MzA0ZTU2Ny4uYzU4ODg3MGMyZmQxM2Q2MDc2ZDM4
ZjUyY2E2MjI1ZGIyODcyYzc4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmVDb21tb24ucHJvcHMKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmVD
b21tb24ucHJvcHMKQEAgLTUsNyArNSw3IEBACiAgIDxQcm9wZXJ0eUdyb3VwIC8+CiAgIDxJdGVt
RGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz4uLlw7Li5cdG9vbHNcOy4uXHJ1bnRpbWVcOy4uXGxsaW50XDsuLlxqaXRc
Oy4uXGRpc2Fzc2VtYmxlclw7Li5caGVhcFw7Li5cZGVidWdnZXJcOy4uXGFzc2VtYmxlclw7Li5c
cHJvZmlsZXJcOy4uXHlhcnJcOy4uXGludGVycHJldGVyXDsuLlxieXRlY29kZVw7Li5cZGZnXDsu
LlxieXRlY29tcGlsZXJcOy4uXHBhcnNlclw7Li5cQVBJXDsuLlxmdGxcOy4uXGJpbmRpbmdzXDsu
LlxpbnNwZWN0b3JcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0
ZWN0dXJlKVxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1w7JChDb25maWd1cmF0aW9uQnVp
bGREaXIpXGluY2x1ZGVcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEphdmFTY3Jp
cHRDb3JlXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXDskKFdlYktp
dF9MaWJyYXJpZXMpXGluY2x1ZGU7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlXHByaXZhdGU7
JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXDsuLlx0b29sc1w7
Li5ccnVudGltZVw7Li5cbGxpbnRcOy4uXGppdFw7Li5cZGlzYXNzZW1ibGVyXDsuLlxoZWFwXDsu
LlxkZWJ1Z2dlclw7Li5cYXNzZW1ibGVyXDsuLlxwcm9maWxlclw7Li5ceWFyclw7Li5caW50ZXJw
cmV0ZXJcOy4uXGJ5dGVjb2RlXDsuLlxidWlsdGluc1w7Li5cZGZnXDsuLlxieXRlY29tcGlsZXJc
Oy4uXHBhcnNlclw7Li5cQVBJXDsuLlxmdGxcOy4uXGJpbmRpbmdzXDsuLlxpbnNwZWN0b3JcOyQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVxKYXZhU2Ny
aXB0Q29yZVxEZXJpdmVkU291cmNlc1w7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVc
OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlXDskKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXDskKFdlYktpdF9MaWJyYXJpZXMpXGlu
Y2x1ZGU7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlXHByaXZhdGU7JShBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICAgIDxG
b3JjZWRJbmNsdWRlRmlsZXM+SUNVVmVyc2lvbi5oOyUoRm9yY2VkSW5jbHVkZUZpbGVzKTwvRm9y
Y2VkSW5jbHVkZUZpbGVzPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAyN2U4NzY3NDBhOTY0YjAyODk4NGVkNjc4MTYxODIwYTVk
Y2Y3N2M0Li45MTE1NzNhYjE3ZDMzOTc0YWE3YzlhMDExZGIyMDBiMDlhZjc4YmZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTIyLDcgKzkyMiw2IEBACiAJCUE1MDNGQTE5MTg4
RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTEzMTg4RTBGQUYwMDExMEYxNCAv
KiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLzsgfTsKIAkJQTUwM0ZBMUExODhFMEZCMDAwMTEw
RjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE0MTg4RTBGQUYwMDExMEYxNCAvKiBKYXZhU2NyaXB0
Q2FsbEZyYW1lLmggKi87IH07CiAJCUE1MDNGQTFCMTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFT
Y3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTUwM0ZBMTUxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFt
ZS5jcHAgKi87IH07Ci0JCUE1MDNGQTFDMTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRD
YWxsRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1MDNGQTE2MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCAqLzsg
fTsKIAkJQTUwM0ZBMUQxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVBy
b3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNTAzRkExNzE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90
eXBlLmNwcCAqLzsgfTsKIAkJQTUwM0ZBMUUxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlw
dENhbGxGcmFtZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTUwM0ZBMTgxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxG
cmFtZVByb3RvdHlwZS5oICovOyB9OwogCQlBNTAzRkEyMTE4OEVGRjY4MDAxMTBGMTQgLyogU2Ny
aXB0QnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTUwM0ZBMUYxODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlwdEJyZWFrcG9pbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTAyNCw2ICsx
MDIzLDcgQEAKIAkJQTcwQjA4MzIxN0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzBCMDgz
MDE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmNwcCAqLzsgfTsKIAkJQTcwQjA4
MzMxN0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwQjA4MzExN0EwQjc5QjAwREFGMTRCIC8q
IERGR0JpbmFyeVN3aXRjaC5oICovOyB9OwogCQlBNzEyMzZFNTExOTVGMzNDMDBCRDIxNzQgLyog
SklUT3Bjb2RlczMyXzY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3MTIzNkU0MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3Bw
ICovOyB9OworCQlBNzFEQTgwRjE4ODBEQkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzFEQTgwRTE4
ODBEQkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcyMDI4QjYxNzk3NjAxRTAwOTgwMjhDIC8q
IEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNzIwMjhCNDE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0
aWxzLmNwcCAqLzsgfTsKIAkJQTcyMDI4QjgxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5u
ZXJVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTcyMDI4QjUxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3MjAyOEJBMTc5NzYw
M0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyMDI4QjkxNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVu
Y3Rpb25JbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTExNTAsNiArMTE1MCwxMCBAQAogCQlBN0NBM0FFODE3REE0MUFFMDA2NTM4QUYg
LyogSlNXZWFrTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBN0NBM0FFMjE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmggKi87IH07CiAJCUE3
Q0EzQUVCMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0NBM0FFOTE3REE1MTY4MDA2NTM4QUYg
LyogV2Vha01hcERhdGEuY3BwICovOyB9OwogCQlBN0NBM0FFQzE3REE1MTY4MDA2NTM4QUYgLyog
V2Vha01hcERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3Q0EzQUVBMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5oICovOyB9OworCQlB
N0Q4MDFBNDE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDgwMUExMTg4MEQ2NkUw
MDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwICovOyB9OworCQlBN0Q4MDFBNTE4ODBE
NjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4MDFBMjE4ODBENjZFMDAyNkMzOUIgLyogQnVp
bHRpbkV4ZWN1dGFibGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQTdEODAxQTgxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDgwMUE2MTg4
MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgKi87IH07CisJCUE3RDgwMUE5MTg4MEQ2
QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTcxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5z
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTdE
ODlDRjIxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jhc2ljQmxvY2suY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODlDRTMxN0EwQjhDQzAwNzczQUQ4
IC8qIERGR0Jhc2ljQmxvY2suY3BwICovOyB9OwogCQlBN0Q4OUNGMzE3QTBCOENDMDA3NzNBRDgg
LyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTdEODlDRTQxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5z
ZXJ0aW9uU2V0LmNwcCAqLzsgfTsKIAkJQTdEODlDRjQxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Js
b2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBN0Q4OUNFNTE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjQ2
Miw2ICsyNDY2LDggQEAKIAkJQTcxMjM2RTQxMTk1RjMzQzAwQkQyMTc0IC8qIEpJVE9wY29kZXMz
Ml82NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRPcGNvZGVz
MzJfNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzE4RjYxQTExNzU0QTIx
MDAyNDY1QTcgLyogUmVnRXhwSml0VGFibGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlZ0V4cEppdFRhYmxlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NzE4RjgyMTExNzhFQjRCMDAyNDY1QTcgLyogY3JlYXRlX3JlZ2V4X3RhYmxlcyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9u
OyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gY3JlYXRlX3JlZ2V4X3RhYmxlczsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcxREE4MEQxODgwRDcxRjAwRDFGMjk5IC8qIGdlbmVyYXRl
LWpzLWJ1aWx0aW5zICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gImdlbmVy
YXRlLWpzLWJ1aWx0aW5zIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcxREE4MEUx
ODgwREJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1N0cmluZ0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTcyMDI4QjQxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NUZXN0UnVubmVyVXRpbHMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzIwMjhCNTE3OTc2MDFFMDA5ODAy
OEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTQ1Rlc3RSdW5uZXJVdGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NzIwMjhCOTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklubGluZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGdW5jdGlvbklubGluZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTI1OTAsNiArMjU5NiwxMSBAQAogCQlBN0NBM0FFMjE3REE0MUFF
MDA2NTM4QUYgLyogSlNXZWFrTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTV2Vha01hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0NBM0FFOTE3REE1
MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2Vha01hcERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBN0NBM0FFQTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha01hcERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTdEODAxQTAxODgwRDY2RTAwMjZDMzlCIC8qIEFycmF5LnByb3RvdHlwZS5qcyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEFycmF5LnByb3RvdHlwZS5q
czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTExODgwRDY2RTAwMjZDMzlC
IC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBCdWlsdGluRXhlY3V0YWJsZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBN0Q4MDFBMjE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1aWx0aW5FeGVjdXRhYmxlcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIgLyogSlND
QnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDQnVp
bHRpbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFBNzE4ODBENkE4
MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNDQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdEODlDRTMx
N0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jhc2ljQmxvY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gREZHQmFzaWNCbG9jay5jcHA7IHBhdGggPSBkZmcvREZHQmFzaWNC
bG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RDg5Q0U0MTdBMEI4Q0Mw
MDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBERkdCbG9ja0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZH
QmxvY2tJbnNlcnRpb25TZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0Q4
OUNFNTE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQmxvY2tJbnNlcnRpb25TZXQuaDsgcGF0aCA9IGRm
Zy9ERkdCbG9ja0luc2VydGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjkyNiw2ICsyOTM3LDcgQEAKIAkJCQk4NjA0RjRGMjE0M0E2QzQ0MDBCMjk1RjUgLyogQ2hhbmdl
TG9nICovLAogCQkJCUY2OTJBODU0MDI1NTU5N0QwMUZGNjBGNyAvKiBjcmVhdGVfaGFzaF90YWJs
ZSAqLywKIAkJCQlBNzE4RjgyMTExNzhFQjRCMDAyNDY1QTcgLyogY3JlYXRlX3JlZ2V4X3RhYmxl
cyAqLywKKwkJCQlBNzFEQTgwRDE4ODBENzFGMDBEMUYyOTkgLyogZ2VuZXJhdGUtanMtYnVpbHRp
bnMgKi8sCiAJCQkJNDVFMTJEODgwNkE0OUIwRjAwRTlERjg0IC8qIGpzYy5jcHAgKi8sCiAJCQkJ
RjY4RUJCOEMwMjU1RDRDNjAxRkY2MEY3IC8qIGNvbmZpZy5oICovLAogCQkJCUY1QzI5MEU2MDI4
NEY5OEUwMTg2MzVDQSAvKiBKYXZhU2NyaXB0Q29yZVByZWZpeC5oICovLApAQCAtMjkzNCw2ICsy
OTQ2LDcgQEAKIAkJCQkxNDMyRUJENzBBMzRDQUQ0MDA3MTdCOUYgLyogQVBJICovLAogCQkJCTk2
ODhDQjEyMEVEMTJCNEUwMDFENjQ5RiAvKiBhc3NlbWJsZXIgKi8sCiAJCQkJQTU0Q0YyRUExODRF
QTczOTAwMjM3RjE5IC8qIGJpbmRpbmdzICovLAorCQkJCUE3RDgwMTlGMTg4MEQ2NkUwMDI2QzM5
QiAvKiBidWlsdGlucyAqLywKIAkJCQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNv
ZGUgKi8sCiAJCQkJN0UzOUQ4MUQwRUMzOEVGQTAwM0FGMTFBIC8qIGJ5dGVjb21waWxlciAqLywK
IAkJCQkxQzkwNTEzRTBCQTlFODgzMDA4MUU5RDAgLyogQ29uZmlndXJhdGlvbnMgKi8sCkBAIC0z
NTA5LDYgKzM1MjIsOCBAQAogCQk2NTBGREY4RDA5RDBGQ0E3MDA3NjlFNTQgLyogRGVyaXZlZCBT
b3VyY2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlB
N0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwICovLAorCQkJCUE3RDgw
MUE3MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oICovLAogCQkJCUJDMThDNTIzMEUx
NkZDOEEwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQlCQ0QyMDNFNzBF
MTcxOEY0MDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQlBNTEzRTVDNjE4
NUY5NDM2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCAqLywKQEAgLTM4MTEsNiAr
MzgyNiw3IEBACiAJCQkJQTc5MERENkExODJGNDk5NzAwNTg4ODA3IC8qIEpTU2V0SXRlcmF0b3Iu
aCAqLywKIAkJCQlCQzAyRTlCNjBFMTg0MkZBMDAwRjkyOTcgLyogSlNTdHJpbmcuY3BwICovLAog
CQkJCUY2OTJBODYyMDI1NTU5N0QwMUZGNjBGNyAvKiBKU1N0cmluZy5oICovLAorCQkJCUE3MURB
ODBFMTg4MERCQUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCAqLywKIAkJCQk4NkU4NTUz
ODExMUI5OTY4MDAxQUY1MUUgLyogSlNTdHJpbmdCdWlsZGVyLmggKi8sCiAJCQkJMjYwMEI1QTQx
NTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVyLmNwcCAqLywKIAkJCQkyNjAwQjVBNTE1
MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuaCAqLywKQEAgLTQ1NjEsNiArNDU3Nywx
NiBAQAogCQkJcGF0aCA9IHJlbW90ZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07
CisJCUE3RDgwMTlGMTg4MEQ2NkUwMDI2QzM5QiAvKiBidWlsdGlucyAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQTdEODAxQTAxODgwRDY2RTAwMjZDMzlC
IC8qIEFycmF5LnByb3RvdHlwZS5qcyAqLywKKwkJCQlBN0Q4MDFBMTE4ODBENjZFMDAyNkMzOUIg
LyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCAqLywKKwkJCQlBN0Q4MDFBMjE4ODBENjZFMDAyNkMz
OUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggKi8sCisJCQkpOworCQkJcGF0aCA9IGJ1aWx0aW5z
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIC8qIEVuZCBQQlhHcm91cCBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTQ2
MDYsMTEgKzQ2MzIsMTEgQEAKIAkJCQk4NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdB
c3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1Q0VFRTE1MTg3RjNCQUQwMEU1NUM5OSAv
KiBJbnNwZWN0b3JBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVDMDI4NUQxNzE3OTY2ODAw
MzUxRTM1IC8qIEFSTXY3RE9wY29kZS5oIGluIEhlYWRlcnMgKi8sCi0gCQkJCTJBNjgyOTVCMTg3
NUY4MDUwMEI2QzNFMiAvKiBDb3B5V3JpdGVCYXJyaWVyLmggaW4gSGVhZGVycyAqLywKLSAgICAg
ICAgICAgICAgICAyQTRFQzkwQzE4NjBENkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQkyQTY4Mjk1QjE4NzVGODA1MDBCNkMzRTIgLyogQ29weVdy
aXRlQmFycmllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkE0RUM5MEMxODYwRDZDMjAwOTRGNzgy
IC8qIFdyaXRlQmFycmllckJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU1OTMyQTgxODND
NUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzMjQz
OTMxODU2OTcwOTAwMkVENjkyIC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5IGlu
IEhlYWRlcnMgKi8sCi0gCQkJCUE1MzI0MzkyMTg1Njk3MDkwMDJFRDY5MiAvKiBDb2RlR2VuZXJh
dG9ySW5zcGVjdG9yLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJQTUzMjQzOTIxODU2OTcwOTAwMkVE
NjkyIC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkgaW4gSGVhZGVycyAqLywKIAkJCQkwRjI0
RTU0RjE3RUUyNzQ5MDBBQkIyMTcgLyogVGVtcFJlZ2lzdGVyU2V0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNTBFNEI2NDE4ODA5REQ1MDA2OEE0NkQgLyogSlNHbG9iYWxPYmplY3RSdW50aW1lQWdl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFQjU4QzE1MTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJv
ckhhbmRsaW5nU2NvcGUuaCBpbiBIZWFkZXJzICovLApAQCAtNDYyMiw3ICs0NjQ4LDcgQEAKIAkJ
CQkwRjgzMzVCODE2MzlDMUVBMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMjkxODdDQTVFNjAwODQzQjEwIC8qIGlubGluZS1hbmQt
bWluaWZ5LXN0eWxlc2hlZXRzLWFuZC1zY3JpcHRzLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4
NDBFMkIxODdDQTc1QjAwODQzQjEwIC8qIGpzbWluLnB5IGluIEhlYWRlcnMgKi8sCi0gCQkJCUE1
MzI0Mzk4MTg1NkE0ODkwMDJFRDY5MiAvKiBJbnNwZWN0b3JKUy5qc29uIGluIEhlYWRlcnMgKi8s
CisJCQkJQTUzMjQzOTgxODU2QTQ4OTAwMkVENjkyIC8qIEluc3BlY3RvckpTLmpzb24gaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTg0MEUyQTE4N0NBNzU5MDA4NDNCMTAgLyogeHhkLnBsIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkVBMDg2MjAxODJCN0EwNDAwRjZEODUxIC8qIEJyZWFrcG9pbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3QThBRjM1MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5o
IGluIEhlYWRlcnMgKi8sCkBAIC00NzMzLDcgKzQ3NTksNyBAQAogCQkJCUExQTAwOUMwMTgzMUEy
MkQwMENGODcxMSAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NkVDOURDNTEzMjhERjgyMDAyQjJBRDcgLyogREZHQnl0ZUNvZGVQYXJzZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNDg1MzI4MTg3REZERUMwMDgzQjY4NyAvKiBGVExBdmFpbGFibGVSZWNvdmVy
eS5oIGluIEhlYWRlcnMgKi8sCi0gICAgICAgICAgICAgICAgQTU5M0NGODcxODQwMzhDQTAwQkZD
RTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1OTND
Rjg3MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjI1NkMzNjE2MjdCMEFEMDA3RjI3ODMgLyogREZHQ2FsbEFycmF5QWxsb2Nh
dG9yU2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRCMTRDM0NE
MkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZD
OTU4MTRFRjkwQTIwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC00
ODcyLDYgKzQ4OTgsNyBAQAogCQkJCTBGRUEwQTFEMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0
cmFjdEhlYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTFGMTcwOEIwMDcwMEJCNzIyQyAv
KiBGVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTk0NTU5
MzE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlBN0Q4MDFBOTE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRUEwQTBBMTcwNTEzREIwMEJCNzIyQyAvKiBGVExDYXBhYmlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDg1MzJBMTg3REZERUMwMDgzQjY4NyAvKiBGVExS
ZWNvdmVyeU9wY29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMjMxNzA5NjA2OTAwQkI3
MjJDIC8qIEZUTENvbW1vblZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC00OTQ2LDYgKzQ5NzMs
NyBAQAogCQkJCUJDMThDNDBGMEUxNkY1Q0QwMEIzNDQ2MCAvKiBJZGVudGlmaWVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDMjVGOEJDRTE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2Vl
cGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5OTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5k
ZXhpbmdIZWFkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3RDgwMUE1MTg4MEQ2NkUwMDI2QzM5
QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzlBMTVF
RDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ0hlYWRlcklubGluZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGQjdGMzlCMTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ1R5cGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGQ0VGQUIwMTgwNUNBNkQwMDQ3MkNFNCAvKiBJbml0aWFsaXplTExWTS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC01MjE4LDYgKzUyNDYsNyBAQAogCQkJCUE1MzI0Mzg4MTg1NjgzMzUw
MDJFRDY5MiAvKiBJbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxOEM0NTYwRTE2RjVDRDAwQjM0NDYwIC8qIFByb3RlY3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0NzRDMzNCMTZBQTJEOTUwMDYyRjAxRCAvKiBQcm90b3R5cGVNYXAuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUE3MURBODBGMTg4MERCQUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMzMkE0MTRDQTdERDkwMDg1RjNDNiAvKiBQdXRCeUlk
U3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBDRDRDMjE1RjFBNjA3MDAzMkYxQzAgLyog
UHV0RGlyZWN0SW5kZXhNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzAwOENFNzE4NzYzMUI2
MDA5NTVDMjQgLyogTWljcm90YXNrLmggaW4gSGVhZGVycyAqLywKQEAgLTU4MzYsNiArNTg2NSw3
IEBACiAJCQkJQTdEODlDRjIxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jhc2ljQmxvY2suY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTcwQjA4MzIxN0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3
aXRjaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q4OUNGMzE3QTBCOENDMDA3NzNBRDggLyog
REZHQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTdEODAxQTQxODgw
RDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk4NkVDOURDNDEzMjhERjgyMDAyQjJBRDcgLyogREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZEODJFMjExNDE3MkNFMzAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGll
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkZGQzk1NzE0RUY5MEEwMDBDNzI1MzIgLyogREZH
Q0ZBUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01ODUyLDYgKzU4ODIsNyBAQAogCQkJCTBG
RkZDOTU5MTRFRjkwQTYwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjJGQzc3MjE2RTEyRjcxMDAzOEQ5NzYgLyogREZHRENFUGhhc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEY4RjJCOTkxNzJGMDRGRjAwN0RCREE1IC8qIERGR0Rlc2lyZWRJZGVudGlm
aWVycy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBN0Q4MDFBODE4ODBENkE4MDAyNkMzOUIgLyog
SlNDQnVpbHRpbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTczRTEzMzAxNzk2MjRDRDAwRTRE
RUE4IC8qIERGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QzJDMEY3Q0QxN0JCRkM1QjAwNDY0RkU0IC8qIERGR0Rlc2lyZWRUcmFuc2l0aW9ucy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkU4NTM0QjE3MjNDREE1MDBCNjE4RjUgLyogREZHRGVzaXJlZFdh
dGNocG9pbnRzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTk3Niw3ICs2MDA3LDcgQEAKIAkJCQkw
RjZCMUNDNTE4NjJDNDc4MDA4NDVEOTcgLyogRlRMVW53aW5kSW5mby5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjlEMzM5QTE4MDNBREI3MDA3M0MyQkMgLyogRlRMU3RhY2tNYXBzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGRUEwQTE2MTcwNkJCOTAwMEJCNzIyQyAvKiBGVExTdGF0ZS5jcHAg
aW4gU291cmNlcyAqLywKLSAJCQkJN0MwMDhDRDIxODZGOEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlz
ZUZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QzAwOENEMjE4NkY4QTkzMDA5NTVD
MjQgLyogSlNQcm9taXNlRnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNkIxQ0I1
MTg1RkM5RTkwMDg0NUQ5NyAvKiBGVExKU0NhbGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYy
MzVCRTExNzE3OEUxQzAwNjkwQzdGIC8qIEZUTFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBNTkzQ0Y3QzE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQXJyYXkucHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0FycmF5LnByb3RvdHlwZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZWI0MmY1Y2M0MzNmMTYzNjM0M2JmYzk4
MmFhMmFhZmIzMzZlOTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcwpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVuY3Rpb24gZXZlcnkoY2FsbGJh
Y2sgLyosIHRoaXNBcmcgKi8pIHsKKyAgICAidXNlIHN0cmljdCI7CisgICAgaWYgKHRoaXMgPT09
IG51bGwpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZXZl
cnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwiKTsKKyAgICAKKyAgICBpZiAodGhp
cyA9PT0gdW5kZWZpbmVkKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJv
dG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSB1bmRlZmluZWQiKTsKKyAg
ICAKKyAgICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMpOworICAgIHZhciBsZW5ndGggPSBhcnJh
eS5sZW5ndGggPj4+IDA7CisgICAgCisgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0
aW9uIikKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5ldmVy
eSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKKworICAgIHZhciB0aGlzQXJnID0gYXJn
dW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7CisgICAgCisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoIShpIGluIGFy
cmF5KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoIWNhbGxiYWNrLkBjYWxs
KHRoaXNBcmcsIGFycmF5W2ldLCBpLCBhcnJheSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIAorICAgIHJldHVybiB0cnVlOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM0MWRiYjVmOTIyNWUyOGExMmVkM2QxNzk4ZmYxNzY4ZTQzNjcxYTYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNw
cApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFi
bGVzLmgiCisKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5l
cy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCisjaW5jbHVkZSAiUGFyc2VyLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitCdWlsdGluRXhlY3V0YWJsZXM6OkJ1aWx0aW5FeGVjdXRh
YmxlcyhWTSYgdm0pCisgICAgOiBtX3ZtKHZtKQorI2RlZmluZSBJTklUSUFMSVpFX0JVSUxUSU5f
U09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpICwgbV8jI25hbWUjI1Nv
dXJjZShtYWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBs
ZW5ndGgpLCBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiPGJ1aWx0aW4+IikpKQorICAg
IEpTQ19GT1JFQUNIX0JVSUxUSU4oSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQor
I3VuZGVmIEVYUE9TRV9CVUlMVElOX1NUUklOR1MKK3sKK30KKworVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUoY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKQoreworICAgIEpT
VGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmU7CisgICAgUGFyc2VyRXJyb3Ig
ZXJyb3I7CisgICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5v
ZGU+KCZtX3ZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIoKSwgSlNQYXJzZUJ1aWx0aW4sIEpTUGFy
c2VQcm9ncmFtQ29kZSwgZXJyb3IsICZwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKKworICAg
IGlmICghcHJvZ3JhbSkgeworICAgICAgICBkYXRhTG9nKCJGYXRhbCBlcnJvciBjb21waWxpbmcg
YnVpbHRpbiBmdW5jdGlvbiAnIiwgbmFtZS5zdHJpbmcoKSwgIic6ICIsIGVycm9yLm1fbWVzc2Fn
ZSk7CisgICAgICAgIENSQVNIKCk7CisgICAgfQorCisgICAgU3RhdGVtZW50Tm9kZSogZXhwclN0
YXRlbWVudCA9IHByb2dyYW0tPnNpbmdsZVN0YXRlbWVudCgpOworICAgIFJFTEVBU0VfQVNTRVJU
KGV4cHJTdGF0ZW1lbnQpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQtPmlzRXhw
clN0YXRlbWVudCgpKTsKKyAgICBFeHByZXNzaW9uTm9kZSogZnVuY0V4cHIgPSBzdGF0aWNfY2Fz
dDxFeHByU3RhdGVtZW50Tm9kZSo+KGV4cHJTdGF0ZW1lbnQpLT5leHByKCk7CisgICAgUkVMRUFT
RV9BU1NFUlQoZnVuY0V4cHIpOworICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmNFeHByLT5pc0Z1bmNF
eHByTm9kZSgpKTsKKyAgICBGdW5jdGlvbkJvZHlOb2RlKiBib2R5ID0gc3RhdGljX2Nhc3Q8RnVu
Y0V4cHJOb2RlKj4oZnVuY0V4cHIpLT5ib2R5KCk7CisgICAgUkVMRUFTRV9BU1NFUlQoIXByb2dy
YW0tPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpOworICAgIAorICAgIGJvZHktPnNldEVuZFBvc2l0
aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOworICAgIFJFTEVBU0VfQVNTRVJUKGJvZHkp
OworICAgIFJFTEVBU0VfQVNTRVJUKGJvZHktPmlkZW50KCkuaXNOdWxsKCkpOworICAgIAorICAg
IC8vIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBhbiBpbnB1dCBzdHJpbmcgdGhhdCB3b3VsZCByZXN1
bHQgaW4gYSBzaW5nbGUgYW5vbnltb3VzIGZ1bmN0aW9uIGV4cHJlc3Npb24uCisgICAgYm9keS0+
c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CisgICAgUkVMRUFTRV9B
U1NFUlQoYm9keSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBjbG9zZWRWYXJpYWJsZSA6IHByb2dy
YW0tPmNsb3NlZFZhcmlhYmxlcygpKSB7CisgICAgICAgIGlmIChjbG9zZWRWYXJpYWJsZSA9PSBt
X3ZtLnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cy5pbXBsKCkpCisgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAKKyAgICAgICAgaWYgKGNsb3NlZFZhcmlhYmxlID09IG1fdm0ucHJvcGVydHlOYW1l
cy0+dW5kZWZpbmVkS2V5d29yZC5pbXBsKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoY2xvc2VkVmFyaWFibGUtPmlzRW1wdHlVbmlxdWUoKSk7CisgICAg
fQorICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZtX3ZtLCBzb3VyY2UsIGJvZHksIHRy
dWUsIFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uKTsKKyAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPm1f
bmFtZVZhbHVlLnNldChtX3ZtLCBmdW5jdGlvbkV4ZWN1dGFibGUsIGpzU3RyaW5nKCZtX3ZtLCBu
YW1lLnN0cmluZygpKSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uRXhlY3V0YWJsZTsKK30KKworI2Rl
ZmluZSBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0
aCkgXAorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6bmFt
ZSMjRXhlY3V0YWJsZSgpIFwKK3tcCisgICAgaWYgKCFtXyMjbmFtZSMjRXhlY3V0YWJsZSlcCisg
ICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUobV8j
I25hbWUjI1NvdXJjZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5mdW5jdGlvbk5hbWUpO1wKKyAgICBy
ZXR1cm4gbV8jI25hbWUjI0V4ZWN1dGFibGUuZ2V0KCk7XAorfQorSlNDX0ZPUkVBQ0hfQlVJTFRJ
TihERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJTl9TT1VS
Q0VTCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluRXhlY3V0YWJsZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
RXhlY3V0YWJsZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOWExOWUyNjE1MDc5NGE2NjllYzk4ZTM5OWJmNjdm
N2Y3MTA2NDE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEJ1aWx0aW5FeGVjdXRhYmxl
c19oCisjZGVmaW5lIEJ1aWx0aW5FeGVjdXRhYmxlc19oCisKKyNpbmNsdWRlICJKU0NCdWlsdGlu
cy5oIgorI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKKyNpbmNsdWRlICJXZWFrLmgiCisjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgSWRlbnRpZmllcjsKK2NsYXNzIFZNOworCitjbGFz
cyBCdWlsdGluRXhlY3V0YWJsZXMgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEJ1
aWx0aW5FeGVjdXRhYmxlcz4gY3JlYXRlKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgQnVpbHRpbkV4ZWN1dGFibGVzKHZtKSk7CisgICAgfQorICAgIAorI2RlZmlu
ZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkg
XAorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5hbWUjI0V4ZWN1dGFibGUoKTsgXAorY29u
c3QgU291cmNlQ29kZSYgbmFtZSMjU291cmNlKCkgeyByZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsg
fQorICAgIAorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4oRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJM
RVMpCisjdW5kZWYgRVhQT1NFX0JVSUxUSU5fU09VUkNFUworICAgIAorcHJpdmF0ZToKKyAgICBC
dWlsdGluRXhlY3V0YWJsZXMoVk0mKTsKKyAgICBWTSYgbV92bTsKKyAgICBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUoY29uc3QgU291cmNlQ29kZSYs
IGNvbnN0IElkZW50aWZpZXImKTsKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1C
RVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKVwKKyAgICBTb3VyY2VDb2RlIG1fIyNuYW1l
IyNTb3VyY2U7IFwKKyAgICBXZWFrPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPiBtXyMjbmFt
ZSMjRXhlY3V0YWJsZTsKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOKERFQ0xBUkVfQlVJTFRJTl9T
T1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKK307
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCmluZGV4IDI2M2VjN2NhZGY0Zjc5Y2E4MTAyNDQxZTYyYmYyYTA1YjVkZGMzZjIuLjc1
MTUwNjU0MjM3NmQ3ZWRjNTk5YWEwMGY5YjEyNjg1Y2RhMzUyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC00MywxMSArNDMsMTMgQEAKICNp
bmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTQWN0aXZh
dGlvbi5oIgotI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5o
IgogI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludC5oIgogI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJw
cmV0ZXIuaCIKKyNpbmNsdWRlICJOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAi
T2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAi
UG9seW1vcnBoaWNQdXRCeUlkTGlzdC5oIgogI2luY2x1ZGUgIlJlZHVjZVdoaXRlc3BhY2UuaCIK
QEAgLTE1NjksNyArMTU3MSw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFi
bGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGluCiAKICAgICBzZXRD
b25zdGFudFJlZ2lzdGVycyh1bmxpbmtlZENvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcnMoKSk7
CiAgICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT51c2VzR2xvYmFsT2JqZWN0KCkpCi0gICAgICAg
IG1fY29uc3RhbnRSZWdpc3RlcnNbdW5saW5rZWRDb2RlQmxvY2stPmdsb2JhbE9iamVjdFJlZ2lz
dGVyKCkub2Zmc2V0KCldLnNldCgqbV92bSwgb3duZXJFeGVjdXRhYmxlLCBtX2dsb2JhbE9iamVj
dC5nZXQoKSk7CisgICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnNbdW5saW5rZWRDb2RlQmxvY2st
Pmdsb2JhbE9iamVjdFJlZ2lzdGVyKCkudG9Db25zdGFudEluZGV4KCldLnNldCgqbV92bSwgb3du
ZXJFeGVjdXRhYmxlLCBtX2dsb2JhbE9iamVjdC5nZXQoKSk7CiAgICAgbV9mdW5jdGlvbkRlY2xz
LnJlc2l6ZVRvRml0KHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSk7
CiAgICAgZm9yIChzaXplX3QgY291bnQgPSB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5j
dGlvbkRlY2xzKCksIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlID0gdW5saW5rZWRDb2RlQmxvY2st
PmZ1bmN0aW9uRGVjbChpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAppbmRleCA2OGJjMDM3OWY1NzQ0YzlhOGY3NDMxZGI2NGY4YWI1NGU2ZTEwNTNmLi40OTk1
YzUyY2Y4YjJiMWI0ZDYyODA0NTNlZWQyN2M3NzRhNDk1NThlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC01Niw3ICs1Niw2IEBACiAjaW5jbHVkZSAi
SGFuZGxlckluZm8uaCIKICNpbmNsdWRlICJPYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oIgogI2lu
Y2x1ZGUgIk9wdGlvbnMuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHV0
UHJvcGVydHlTbG90LmgiCiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJKSVRD
b2RlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcAppbmRleCAxZGZiNWFjNmFkOTA5M2Y4ZjgxMTAxZWY3ZjJlNjEyMzExYWMx
OTM5Li40MzM5MGQ5NjVmYzUwMzQwMTZmN2JmZmYyM2U2OGJiMWUwNTQ1NTJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAK
QEAgLTQ5LDkgKzQ5LDkgQEAgY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9j
azo6c19pbmZvID0geyAiVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrIiwKIGNvbnN0IENsYXNzSW5m
byBVbmxpbmtlZEV2YWxDb2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkRXZhbENvZGVCbG9j
ayIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRFdmFs
Q29kZUJsb2NrKSB9OwogY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6
OnNfaW5mbyA9IHsgIlVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCAw
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2spIH07CiAK
LXN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJs
b2NrKFZNJiB2bSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dl
ck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJv
ciYgZXJyb3IpCitzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5j
dGlvbkNvZGVCbG9jayhWTSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRh
YmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2lu
ZCwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwg
VW5saW5rZWRGdW5jdGlvbktpbmQgZnVuY3Rpb25LaW5kLCBQYXJzZXJFcnJvciYgZXJyb3IpCiB7
Ci0gICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGJvZHkgPSBwYXJzZTxGdW5jdGlvbkJvZHlO
b2RlPigmdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+cGFyYW1ldGVycygpLCBleGVjdXRhYmxlLT5u
YW1lKCksIGV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCkgPyBKU1BhcnNlU3RyaWN0IDog
SlNQYXJzZU5vcm1hbCwgSlNQYXJzZUZ1bmN0aW9uQ29kZSwgZXJyb3IpOworICAgIFJlZlB0cjxG
dW5jdGlvbkJvZHlOb2RlPiBib2R5ID0gcGFyc2U8RnVuY3Rpb25Cb2R5Tm9kZT4oJnZtLCBzb3Vy
Y2UsIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVjdXRh
YmxlLT50b1N0cmljdG5lc3MoKSwgSlNQYXJzZUZ1bmN0aW9uQ29kZSwgZXJyb3IpOwogCiAgICAg
aWYgKCFib2R5KSB7CiAgICAgICAgIEFTU0VSVChlcnJvci5tX3R5cGUgIT0gUGFyc2VyRXJyb3I6
OkVycm9yTm9uZSk7CkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKiBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKFZNJiB2bSwgVW5saW5rZWRGdW5jCiAg
ICAgYm9keS0+ZmluaXNoUGFyc2luZyhleGVjdXRhYmxlLT5wYXJhbWV0ZXJzKCksIGV4ZWN1dGFi
bGUtPm5hbWUoKSwgZXhlY3V0YWJsZS0+ZnVuY3Rpb25OYW1lSXNJblNjb3BlVG9nZ2xlKCkpOwog
ICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGJvZHktPmZlYXR1cmVzKCksIGJvZHktPmhhc0Nh
cHR1cmVkVmFyaWFibGVzKCkpOwogICAgIAotICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sq
IHJlc3VsdCA9IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmdm0sIEZ1bmN0aW9u
Q29kZSwgRXhlY3V0YWJsZUluZm8oYm9keS0+bmVlZHNBY3RpdmF0aW9uKCksIGJvZHktPnVzZXNF
dmFsKCksIGJvZHktPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpKTsK
KyAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrOjpjcmVhdGUoJnZtLCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFibGVJbmZvKGJvZHkt
Pm5lZWRzQWN0aXZhdGlvbigpLCBib2R5LT51c2VzRXZhbCgpLCBib2R5LT5pc1N0cmljdE1vZGUo
KSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWls
dGluRnVuY3Rpb24pKTsKICAgICBPd25QdHI8Qnl0ZWNvZGVHZW5lcmF0b3I+IGdlbmVyYXRvcihh
ZG9wdFB0cihuZXcgQnl0ZWNvZGVHZW5lcmF0b3Iodm0sIGJvZHkuZ2V0KCksIHJlc3VsdCwgZGVi
dWdnZXJNb2RlLCBwcm9maWxlck1vZGUpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3ItPmdlbmVy
YXRlKCk7CiAgICAgYm9keS0+ZGVzdHJveURhdGEoKTsKQEAgLTgyLDEzICs4MiwxNCBAQCB1bnNp
Z25lZCBVbmxpbmtlZENvZGVCbG9jazo6YWRkT3JGaW5kQ29uc3RhbnQoSlNWYWx1ZSB2KQogICAg
IHJldHVybiBhZGRDb25zdGFudCh2KTsKIH0KIAotVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSogbm9kZSwgYm9vbCBp
c0Zyb21HbG9iYWxDb2RlKQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSogbm9kZSwgYm9vbCBpc0Zyb21HbG9iYWxD
b2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kKQogICAgIDogQmFzZSgqdm0sIHN0cnVjdHVy
ZSkKICAgICAsIG1fbnVtQ2FwdHVyZWRWYXJpYWJsZXMobm9kZS0+Y2FwdHVyZWRWYXJpYWJsZUNv
dW50KCkpCiAgICAgLCBtX2ZvcmNlVXNlc0FyZ3VtZW50cyhub2RlLT51c2VzQXJndW1lbnRzKCkp
CiAgICAgLCBtX2lzSW5TdHJpY3RDb250ZXh0KG5vZGUtPmlzU3RyaWN0TW9kZSgpKQogICAgICwg
bV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhub2RlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKQogICAg
ICwgbV9pc0Zyb21HbG9iYWxDb2RlKGlzRnJvbUdsb2JhbENvZGUpCisgICAgLCBtX2lzQnVpbHRp
bkZ1bmN0aW9uKGtpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24pCiAgICAgLCBtX25hbWUo
bm9kZS0+aWRlbnQoKSkKICAgICAsIG1faW5mZXJyZWROYW1lKG5vZGUtPmluZmVycmVkTmFtZSgp
KQogICAgICwgbV9wYXJhbWV0ZXJzKG5vZGUtPnBhcmFtZXRlcnMoKSkKQEAgLTE2Niw3ICsxNjcs
NyBAQCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6Y29kZUJsb2NrRm9yKFZNJiB2bSwgY29ucwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAg
ICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBnZW5lcmF0ZUZ1bmN0aW9uQ29k
ZUJsb2NrKHZtLCB0aGlzLCBzb3VyY2UsIHNwZWNpYWxpemF0aW9uS2luZCwgZGVidWdnZXJNb2Rl
LCBwcm9maWxlck1vZGUsIGVycm9yKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBy
ZXN1bHQgPSBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKHZtLCB0aGlzLCBzb3VyY2UsIHNwZWNp
YWxpemF0aW9uS2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGlzQnVpbHRpbkZ1bmN0
aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24s
IGVycm9yKTsKICAgICAKICAgICBpZiAoZXJyb3IubV90eXBlICE9IFBhcnNlckVycm9yOjpFcnJv
ck5vbmUpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjEwLDYgKzIxMSw3IEBAIFVubGlua2VkQ29k
ZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBD
b2RlVHlwZSBjb2RlCiAgICAgLCBtX2lzU3RyaWN0TW9kZShpbmZvLm1faXNTdHJpY3RNb2RlKQog
ICAgICwgbV9pc0NvbnN0cnVjdG9yKGluZm8ubV9pc0NvbnN0cnVjdG9yKQogICAgICwgbV9oYXND
YXB0dXJlZFZhcmlhYmxlcyhmYWxzZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaW5mby5t
X2lzQnVpbHRpbkZ1bmN0aW9uKQogICAgICwgbV9maXJzdExpbmUoMCkKICAgICAsIG1fbGluZUNv
dW50KDApCiAgICAgLCBtX2VuZENvbHVtbihVSU5UX01BWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggYjlkYWUyZDVjNjlj
NzljZWFhYTgwMjNkMmEzYTFmMjZkNDYwOTQzYi4uYWJmNmNmMzViOTMwNmE0ZjdhMzAxYWIwZGY3
NjY2ZWM2MTJlMzc5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTY2LDI2ICs2NiwzNSBAQCB0eXBlZGVmIHVuc2lnbmVk
IFVubGlua2VkT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7CiB0eXBlZGVmIHVuc2lnbmVkIFVubGlu
a2VkTExJbnRDYWxsTGlua0luZm87CiAKIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7Ci0gICAgRXhl
Y3V0YWJsZUluZm8oYm9vbCBuZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNT
dHJpY3RNb2RlLCBib29sIGlzQ29uc3RydWN0b3IpCisgICAgRXhlY3V0YWJsZUluZm8oYm9vbCBu
ZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJpY3RNb2RlLCBib29sIGlz
Q29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24pCiAgICAgICAgIDogbV9uZWVkc0Fj
dGl2YXRpb24obmVlZHNBY3RpdmF0aW9uKQogICAgICAgICAsIG1fdXNlc0V2YWwodXNlc0V2YWwp
CiAgICAgICAgICwgbV9pc1N0cmljdE1vZGUoaXNTdHJpY3RNb2RlKQogICAgICAgICAsIG1faXND
b25zdHJ1Y3Rvcihpc0NvbnN0cnVjdG9yKQorICAgICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24o
aXNCdWlsdGluRnVuY3Rpb24pCiAgICAgewogICAgIH0KLSAgICBib29sIG1fbmVlZHNBY3RpdmF0
aW9uOwotICAgIGJvb2wgbV91c2VzRXZhbDsKLSAgICBib29sIG1faXNTdHJpY3RNb2RlOwotICAg
IGJvb2wgbV9pc0NvbnN0cnVjdG9yOworICAgIGJvb2wgbV9uZWVkc0FjdGl2YXRpb24gOiAxOwor
ICAgIGJvb2wgbV91c2VzRXZhbCA6IDE7CisgICAgYm9vbCBtX2lzU3RyaWN0TW9kZSA6IDE7Cisg
ICAgYm9vbCBtX2lzQ29uc3RydWN0b3IgOiAxOworICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlv
biA6IDE7Cit9OworCitlbnVtIFVubGlua2VkRnVuY3Rpb25LaW5kIHsKKyAgICBVbmxpbmtlZE5v
cm1hbEZ1bmN0aW9uLAorICAgIFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLAogfTsKIAogY2xhc3Mg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgOiBwdWJsaWMgSlNDZWxsIHsKIHB1YmxpYzoKKyAg
ICBmcmllbmQgY2xhc3MgQnVpbHRpbkV4ZWN1dGFibGVzOwogICAgIGZyaWVuZCBjbGFzcyBDb2Rl
Q2FjaGU7CisgICAgZnJpZW5kIGNsYXNzIFZNOwogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7Ci0g
ICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9t
R2xvYmFsQ29kZSA9IGZhbHNlKQorICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogY3JlYXRlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlO
b2RlKiBub2RlLCBib29sIGlzRnJvbUdsb2JhbENvZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVu
bGlua2VkRnVuY3Rpb25LaW5kKQogICAgIHsKLSAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU+KHZtLT5oZWFwKSkgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0s
IHZtLT51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgc291cmNlLCBu
b2RlLCBpc0Zyb21HbG9iYWxDb2RlKTsKKyAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU+KHZtLT5oZWFwKSkgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZt
LT51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgc291cmNlLCBub2Rl
LCBpc0Zyb21HbG9iYWxDb2RlLCB1bmxpbmtlZEZ1bmN0aW9uS2luZCk7CiAgICAgICAgIGluc3Rh
bmNlLT5maW5pc2hDcmVhdGlvbigqdm0pOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAg
fQpAQCAtOTksNiArMTA4LDE0IEBAIHB1YmxpYzoKICAgICB9CiAgICAgc2l6ZV90IHBhcmFtZXRl
ckNvdW50KCkgY29uc3Q7CiAgICAgYm9vbCBpc0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNJblN0cmljdENvbnRleHQ7IH0KKyAgICBKU1BhcnNlclN0cmljdG5lc3MgdG9TdHJp
Y3RuZXNzKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2lzQnVpbHRpbkZ1bmN0aW9uKQor
ICAgICAgICAgICAgcmV0dXJuIEpTUGFyc2VCdWlsdGluOworICAgICAgICBpZiAobV9pc0luU3Ry
aWN0Q29udGV4dCkKKyAgICAgICAgICAgIHJldHVybiBKU1BhcnNlU3RyaWN0OworICAgICAgICBy
ZXR1cm4gSlNQYXJzZU5vcm1hbDsKKyAgICB9CiAgICAgRnVuY3Rpb25OYW1lSXNJblNjb3BlVG9n
Z2xlIGZ1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rp
b25OYW1lSXNJblNjb3BlVG9nZ2xlOyB9CiAKICAgICB1bnNpZ25lZCBmaXJzdExpbmVPZmZzZXQo
KSBjb25zdCB7IHJldHVybiBtX2ZpcnN0TGluZU9mZnNldDsgfQpAQCAtMTQyLDggKzE1OSwxMCBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSW1tb3J0YWxTdHJ1Y3R1cmUgPSB0
cnVlOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKKyAgICBib29sIGlzQnVp
bHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQorCiBw
cml2YXRlOgotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwg
Y29uc3QgU291cmNlQ29kZSYsIEZ1bmN0aW9uQm9keU5vZGUqLCBib29sIGlzRnJvbUdsb2JhbENv
ZGUpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwgY29u
c3QgU291cmNlQ29kZSYsIEZ1bmN0aW9uQm9keU5vZGUqLCBib29sIGlzRnJvbUdsb2JhbENvZGUs
IFVubGlua2VkRnVuY3Rpb25LaW5kKTsKICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jaz4gbV9jb2RlQmxvY2tGb3JDYWxsOwogICAgIFdyaXRlQmFycmllcjxVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdDsKIApAQCAtMTUyLDYg
KzE3MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzSW5TdHJpY3RDb250ZXh0IDogMTsKICAg
ICBib29sIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgOiAxOwogICAgIGJvb2wgbV9pc0Zyb21HbG9i
YWxDb2RlIDogMTsKKyAgICBib29sIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogCiAgICAgSWRl
bnRpZmllciBtX25hbWU7CiAgICAgSWRlbnRpZmllciBtX2luZmVycmVkTmFtZTsKQEAgLTMxOSw2
ICszMzksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc051bWVyaWNDb21wYXJlRnVuY3Rpb24o
Ym9vbCBpc051bWVyaWNDb21wYXJlRnVuY3Rpb24pIHsgbV9pc051bWVyaWNDb21wYXJlRnVuY3Rp
b24gPSBpc051bWVyaWNDb21wYXJlRnVuY3Rpb247IH0KICAgICBib29sIGlzTnVtZXJpY0NvbXBh
cmVGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9
CiAKKyAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0
aW5GdW5jdGlvbjsgfQorICAgIAogICAgIHZvaWQgc2hyaW5rVG9GaXQoKQogICAgIHsKICAgICAg
ICAgbV9qdW1wVGFyZ2V0cy5zaHJpbmtUb0ZpdCgpOwpAQCAtNTAwLDYgKzUyMiw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2lzU3RyaWN0TW9kZSA6IDE7CiAgICAgYm9vbCBtX2lzQ29uc3RydWN0
b3IgOiAxOwogICAgIGJvb2wgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CisgICAgYm9vbCBt
X2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2ZpcnN0TGluZTsKICAgICB1
bnNpZ25lZCBtX2xpbmVDb3VudDsKICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKaW5kZXggNjgxMGFiODAwMmNlNmJiOGQ3OGU3ZmYyMjI3ZjRjNmVhN2I3NThjMi4uZWM1
MjFiNTMwNDYzOTIzZTc0YzAxMGZhMjE4ZTU5ZWQyYTlhM2NhZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
QEAgLTE3NSw2ICsxNzUsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mIHZtLCBQcm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUAogI2VuZGlmCiAgICAg
LCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQogICAgICwgbV9leHByZXNzaW9uVG9vRGVlcChmYWxz
ZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oZmFsc2UpCiB7CiAgICAgaWYgKG1fc2hvdWxk
RW1pdERlYnVnSG9va3MpCiAgICAgICAgIG1fY29kZUJsb2NrLT5zZXROZWVkc0Z1bGxTY29wZUNo
YWluKHRydWUpOwpAQCAtMjIyLDcgKzIyMywxMyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbkJvZHksIFVubAog
I2VuZGlmCiAgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQogICAgICwgbV9leHByZXNzaW9u
VG9vRGVlcChmYWxzZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oY29kZUJsb2NrLT5pc0J1
aWx0aW5GdW5jdGlvbigpKQogeworICAgIGlmIChtX2lzQnVpbHRpbkZ1bmN0aW9uKSB7CisgICAg
ICAgIG1fc2hvdWxkRW1pdFByb2ZpbGVIb29rcyA9IGZhbHNlOworICAgICAgICBtX3Nob3VsZEVt
aXREZWJ1Z0hvb2tzID0gZmFsc2U7CisgICAgfQorCiAgICAgaWYgKG1fc2hvdWxkRW1pdERlYnVn
SG9va3MpCiAgICAgICAgIG1fY29kZUJsb2NrLT5zZXROZWVkc0Z1bGxTY29wZUNoYWluKHRydWUp
OwogCkBAIC00MzgsNiArNDQ1LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2QKICNlbmRpZgog
ICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKICAgICAsIG1fZXhwcmVzc2lvblRvb0RlZXAo
ZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGZhbHNlKQogewogICAgIG1fY29kZUJs
b2NrLT5zZXROZWVkc0Z1bGxTY29wZUNoYWluKHRydWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggNGU5
ZjIxM2M5YmZhNmNmMTk0YjFhMTRmZTkxOWU4MzMzN2FlMzVkOS4uMTU4NDI3NGI3OGVhNmMwYmQw
ZWZiMGI5ODI1YzgxOGJlMGRiYzA2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNDYxLDcgKzQ2MSw5IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIHNob3VsZEVtaXREZWJ1Z0hvb2tzKCkgeyBy
ZXR1cm4gbV9zaG91bGRFbWl0RGVidWdIb29rczsgfQogICAgICAgICAKICAgICAgICAgYm9vbCBp
c1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7
IH0KLQorICAgICAgICAKKyAgICAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KKyAgICAgICAgCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgZnJpZW5kIGNsYXNzIExhYmVsOwogICAgICAgICAKQEAgLTU0Myw3ICs1NDUsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBtYWtlRnVuY3Rpb24oRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSkKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwg
bV9zY29wZU5vZGUtPnNvdXJjZSgpLCBib2R5KTsKKyAgICAgICAgICAgIHJldHVybiBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwg
Ym9keSwgZmFsc2UsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlv
biA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24pOwogICAgICAgICB9CiAKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdEluaXRMYXp5UmVnaXN0ZXIoUmVnaXN0ZXJJRCopOwpAQCAtNjc3LDYgKzY3OSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wgbV91c2VzRXhjZXB0aW9uczsKICAg
ICAgICAgYm9vbCBtX2V4cHJlc3Npb25Ub29EZWVwOworICAgICAgICBib29sIG1faXNCdWlsdGlu
RnVuY3Rpb247CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDFmZmQ0ZjMxMTg4MmQwZWU1YzU1MTRm
NWI4YjI1OTM5ZDk3NWUzNzkuLjYyZWNhMzZhMTBkNzcwOGE5MjhkNDNhYzAzZjJmYzg2MTVjZWNh
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAKQEAgLTI2LDEwICsyNiwxMCBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiTm9kZXMuaCIKLSNpbmNsdWRlICJOb2RlQ29uc3RydWN0b3JzLmgiCiAKICNpbmNs
dWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1
ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRl
ICJKSVQuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC0zOCw2ICszOCw3IEBACiAjaW5j
bHVkZSAiSlNPTk9iamVjdC5oIgogI2luY2x1ZGUgIkxhYmVsU2NvcGUuaCIKICNpbmNsdWRlICJM
ZXhlci5oIgorI2luY2x1ZGUgIk5vZGVDb25zdHJ1Y3RvcnMuaCIKICNpbmNsdWRlICJPcGVyYXRp
b25zLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXku
aCIKQEAgLTUzNSwzNiArNTM2LDM5IEBAIFJlZ2lzdGVySUQqIENhbGxGdW5jdGlvbkNhbGxEb3RO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICBSZWZQ
dHI8TGFiZWw+IGVuZCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYmFzZSk7CiAgICAgZ2VuZXJhdG9yLmVt
aXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0
KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9u
ID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwg
YmFzZS5nZXQoKSwgbV9pZGVudCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uID0g
Z2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFz
ZS5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5jYWxsKTsKICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGZ1
bmN0aW9uLmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQ2FsbChm
dW5jdGlvbi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkpOworICAgIGJvb2wgZW1pdENhbGxDaGVjayA9
ICFnZW5lcmF0b3IuaXNCdWlsdGluRnVuY3Rpb24oKTsKKyAgICBpZiAoZW1pdENhbGxDaGVjaykK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkNhbGwoZnVuY3Rpb24uZ2V0
KCksIHJlYWxDYWxsLmdldCgpKTsKKwogICAgIHsKICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0
Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcikgewogICAgICAgICAgICAgQXJndW1l
bnRMaXN0Tm9kZSogb2xkTGlzdCA9IG1fYXJncy0+bV9saXN0Tm9kZTsKICAgICAgICAgICAgIG1f
YXJncy0+bV9saXN0Tm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwotCisgICAgICAg
ICAgICAKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5l
cmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgp
KTsKICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1f
YXJncyk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlz
UmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVu
Y3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKLQogICAgICAgICAg
ICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gb2xkTGlzdDsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1v
dmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKICAgICAgICAg
ICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwg
anNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFs
dWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJn
dW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgZ2Vu
ZXJhdG9yLmVtaXRMYWJlbChyZWFsQ2FsbC5nZXQoKSk7Ci0gICAgewotICAgICAgICBDYWxsQXJn
dW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgICAgICBnZW5lcmF0
b3IuZW1pdE1vdmUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7Ci0g
ICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0
KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKKyAgICBpZiAoZW1pdENhbGxDaGVjaykgeworICAgICAgICBnZW5l
cmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChy
ZWFsQ2FsbC5nZXQoKSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2Fs
bEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dE1vdmUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7CisgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgp
LCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQo
KSwgZGl2b3RFbmQoKSk7CisgICAgICAgIH0KKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChl
bmQuZ2V0KCkpOwogICAgIH0KLSAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAg
ICAgcmV0dXJuIHJldHVyblZhbHVlLmdldCgpOwogfQogCkBAIC01ODUsNjUgKzU4OSw2NyBAQCBS
ZWdpc3RlcklEKiBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLAogICAgIFJlZlB0cjxMYWJlbD4gZW5kID0gZ2VuZXJhdG9y
Lm5ld0xhYmVsKCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1p
dE5vZGUobV9iYXNlKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJl
c3Npb25EaXZvdCgpLCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsK
LSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQo
Z2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBtX2lkZW50KTsKKyAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuY3Rpb247CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJl
dHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBmdW5jdGlvbi5nZXQo
KSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KGZ1bmN0aW9uLmdl
dCgpLCByZWFsQ2FsbC5nZXQoKSk7Ci0gICAgewotICAgICAgICBpZiAobWF5QmVDYWxsKSB7Ci0g
ICAgICAgICAgICBpZiAobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+
bV9leHByKSB7Ci0gICAgICAgICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogb2xkTGlzdCA9IG1f
YXJncy0+bV9saXN0Tm9kZTsKLSAgICAgICAgICAgICAgICBpZiAobV9hcmdzLT5tX2xpc3ROb2Rl
LT5tX25leHQpIHsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9k
ZS0+bV9uZXh0LT5tX2V4cHItPmlzU2ltcGxlQXJyYXkoKSk7Ci0gICAgICAgICAgICAgICAgICAg
IEFTU0VSVCghbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fbmV4dCk7Ci0gICAgICAgICAg
ICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IHN0YXRpY19jYXN0PEFycmF5Tm9kZSo+KG1f
YXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHIpLT50b0FyZ3VtZW50TGlzdChnZW5lcmF0
b3Iudm0oKSwgMCwgMCk7Ci0gICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBy
ZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlv
bihkc3QpLCBiYXNlLmdldCgpKTsKLSAgICAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBj
YWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAgICAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG9sZExpc3QtPm1f
ZXhwcik7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1
ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1
bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gbV9h
cmdzLT5tX2xpc3ROb2RlLT5tX25leHQ7Ci0gICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBE
ZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKLSAgICAgICAgICAgICAgICAgICAgQ2FsbEFy
Z3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAgICAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG9s
ZExpc3QtPm1fZXhwcik7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChy
ZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24s
IGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9sZExp
c3Q7CisgICAgYm9vbCBlbWl0Q2FsbENoZWNrID0gIWdlbmVyYXRvci5pc0J1aWx0aW5GdW5jdGlv
bigpOworICAgIGlmIChlbWl0Q2FsbENoZWNrKSB7CisgICAgICAgIGZ1bmN0aW9uID0gZ2VuZXJh
dG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQo
KSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5hcHBseSk7CisgICAgICAgIGdlbmVyYXRvci5l
bWl0SnVtcElmTm90RnVuY3Rpb25BcHBseShmdW5jdGlvbi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkp
OworICAgIH0KKyAgICBpZiAobWF5QmVDYWxsKSB7CisgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlz
dE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpIHsKKyAgICAgICAgICAgIEFyZ3Vt
ZW50TGlzdE5vZGUqIG9sZExpc3QgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CisgICAgICAgICAgICBp
ZiAobV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQo
bV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwci0+aXNTaW1wbGVBcnJheSgpKTsKKyAg
ICAgICAgICAgICAgICBBU1NFUlQoIW1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX25leHQp
OworICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IHN0YXRpY19jYXN0PEFycmF5
Tm9kZSo+KG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHIpLT50b0FyZ3VtZW50TGlz
dChnZW5lcmF0b3Iudm0oKSwgMCwgMCk7CisgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3Rp
bmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOworICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMg
Y2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CisgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG9sZExpc3QtPm1fZXhw
cik7CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgp
LCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywg
ZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gbV9hcmdzLT5tX2xpc3ROb2Rl
LT5tX25leHQ7CiAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlv
biA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJh
c2UuZ2V0KCkpOwogICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhn
ZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNh
bGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRM
aXN0LT5tX2V4cHIpOwogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5W
YWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxB
cmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAg
ICB9CisgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBvbGRMaXN0OwogICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3Mt
Pm1fbGlzdE5vZGUtPm1fbmV4dCk7Ci0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJv
ZmlsZUhvb2tSZWdpc3RlcjsKLSAgICAgICAgICAgIGlmIChnZW5lcmF0b3Iuc2hvdWxkRW1pdFBy
b2ZpbGVIb29rcygpKQotICAgICAgICAgICAgICAgIHByb2ZpbGVIb29rUmVnaXN0ZXIgPSBnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVh
bEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24o
ZHN0KSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1Jl
Z2lzdGVyID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKTsK
LSAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhcmdzUmVnaXN0ZXI7Ci0gICAgICAgICAg
ICBBcmd1bWVudExpc3ROb2RlKiBhcmdzID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQ7Ci0g
ICAgICAgICAgICBpZiAoYXJncy0+bV9leHByLT5pc1Jlc29sdmVOb2RlKCkgJiYgZ2VuZXJhdG9y
LndpbGxSZXNvbHZlVG9Bcmd1bWVudHMoc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihhcmdzLT5t
X2V4cHIpLT5pZGVudGlmaWVyKCkpKQotICAgICAgICAgICAgICAgIGFyZ3NSZWdpc3RlciA9IGdl
bmVyYXRvci51bmNoZWNrZWRSZWdpc3RlckZvckFyZ3VtZW50cygpOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIGFyZ3NSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShhcmdz
LT5tX2V4cHIpOwotCi0gICAgICAgICAgICAvLyBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkgaWdu
b3JlcyBleHRyYSBhcmd1bWVudHMsIGJ1dCB3ZSBzdGlsbAotICAgICAgICAgICAgLy8gbmVlZCB0
byBldmFsdWF0ZSB0aGVtIGZvciBzaWRlIGVmZmVjdHMuCi0gICAgICAgICAgICB3aGlsZSAoKGFy
Z3MgPSBhcmdzLT5tX25leHQpKQotICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShh
cmdzLT5tX2V4cHIpOwotCi0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxWYXJhcmdzKHJl
dHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwg
YXJnc1JlZ2lzdGVyLmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb2ZpbGVIb29r
UmVnaXN0ZXIuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAg
ICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwor
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVy
KCksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVy
blZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2Fs
bEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAg
fQotICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBBU1NFUlQobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+
bV9uZXh0KTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb2ZpbGVIb29rUmVnaXN0ZXI7
CisgICAgICAgIGlmIChnZW5lcmF0b3Iuc2hvdWxkRW1pdFByb2ZpbGVIb29rcygpKQorICAgICAg
ICAgICAgcHJvZmlsZUhvb2tSZWdpc3RlciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92
ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOworICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYXJn
cy0+bV9saXN0Tm9kZS0+bV9leHByKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFyZ3NS
ZWdpc3RlcjsKKyAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogYXJncyA9IG1fYXJncy0+bV9saXN0
Tm9kZS0+bV9uZXh0OworICAgICAgICBpZiAoYXJncy0+bV9leHByLT5pc1Jlc29sdmVOb2RlKCkg
JiYgZ2VuZXJhdG9yLndpbGxSZXNvbHZlVG9Bcmd1bWVudHMoc3RhdGljX2Nhc3Q8UmVzb2x2ZU5v
ZGUqPihhcmdzLT5tX2V4cHIpLT5pZGVudGlmaWVyKCkpKQorICAgICAgICAgICAgYXJnc1JlZ2lz
dGVyID0gZ2VuZXJhdG9yLnVuY2hlY2tlZFJlZ2lzdGVyRm9yQXJndW1lbnRzKCk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGFyZ3NSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShhcmdz
LT5tX2V4cHIpOworCisgICAgICAgIC8vIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseSBpZ25vcmVz
IGV4dHJhIGFyZ3VtZW50cywgYnV0IHdlIHN0aWxsCisgICAgICAgIC8vIG5lZWQgdG8gZXZhbHVh
dGUgdGhlbSBmb3Igc2lkZSBlZmZlY3RzLgorICAgICAgICB3aGlsZSAoKGFyZ3MgPSBhcmdzLT5t
X25leHQpKQorICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7CisK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsVmFyYXJncyhyZXR1cm5WYWx1ZS5nZXQoKSwgcmVh
bEZ1bmN0aW9uLmdldCgpLCB0aGlzUmVnaXN0ZXIuZ2V0KCksIGFyZ3NSZWdpc3Rlci5nZXQoKSwg
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm9maWxlSG9va1JlZ2lzdGVyLmdldCgpLCBkaXZv
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIH0KLSAgICBnZW5lcmF0b3IuZW1p
dExhYmVsKHJlYWxDYWxsLmdldCgpKTsKLSAgICB7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOwogICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxB
cmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUo
Y2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7CiAgICAgICAgIGdlbmVy
YXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0
ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0KCkpOwogICAgIH0KLSAg
ICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVl
LmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hh
c2hfdGFibGUgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUKaW5kZXgg
Mzk3OTc2YjA2YzdhOWI1ODM2MzMyOTAwYTZlYmI5M2VjNjhiNzQ4Ni4uY2FkNjViYzRjYzg4OGUz
MTRmODhkNjY1ZGQ0YTZlNjQ1YTA5YTM1NSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2NyZWF0ZV9oYXNoX3RhYmxlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVf
aGFzaF90YWJsZQpAQCAtMjg5LDcgKzI4OSwxNyBAQCBzdWIgb3V0cHV0KCkgewogICAgICAgICAg
ICAgJGludHJpbnNpYyA9ICJSZWdFeHBUZXN0SW50cmluc2ljIiBpZiAoJGtleSBlcSAidGVzdCIp
OwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKCR2YWx1ZXNbJGldeyJ0eXBlIn0gZXEgIkZ1bmN0
aW9uIikgIHsKKyAgICAgICAgICAgIG15ICR0YWJsZUhlYWQgPSAkbmFtZTsKKyAgICAgICAgICAg
ICR0YWJsZUhlYWQgPX4gcy9UYWJsZSQvLzsKKyAgICAgICAgICAgIHByaW50ICIgI2lmIEpTQ19C
VUlMVElOX0VYSVNUUygiIC4gdWMoJHRhYmxlSGVhZCAuICRrZXkpIC4iKVxuIjsKKyAgICAgICAg
ICAgIHByaW50ICIgICB7IFwiJGtleVwiLCAoKCRhdHRyc1skaV0pICYgfkZ1bmN0aW9uKSB8IEJ1
aWx0aW4sICRpbnRyaW5zaWMsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxCdWlsdGluR2VuZXJhdG9y
PigiIC4gJHRhYmxlSGVhZCAuIHVjZmlyc3QoJGtleSkgLiAiQ29kZUdlbmVyYXRvciksIChpbnRw
dHJfdCkkc2Vjb25kVmFsdWUgfSxcbiI7CisgICAgICAgICAgICBwcmludCAiICNlbHNlXG4iCisg
ICAgICAgIH0KICAgICAgICAgcHJpbnQgIiAgIHsgXCIka2V5XCIsICRhdHRyc1skaV0sICRpbnRy
aW5zaWMsIChpbnRwdHJfdCkiIC4gJGZpcnN0Q2FzdFN0ciAuICIoJGZpcnN0VmFsdWUpLCAoaW50
cHRyX3QpIiAuICRzZWNvbmRDYXN0U3RyIC4gIigkc2Vjb25kVmFsdWUpIH0sXG4iOworICAgICAg
ICBpZiAoJHZhbHVlc1skaV17InR5cGUifSBlcSAiRnVuY3Rpb24iKSAgeworICAgICAgICAgICAg
cHJpbnQgIiAjZW5kaWZcbiIKKyAgICAgICAgfQogICAgICAgICAkaSsrOwogICAgIH0KICAgICBw
cmludCAiICAgeyAwLCAwLCBOb0ludHJpbnNpYywgMCwgMCB9XG4iOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggMmZmMGMzNDE0NmUyYzBiYTJmZjc2
YzRkM2Y3YzQ2YmEzZTI1NTE0Ny4uOTA0NGNkYzZiOGMzYWQ0YTFlOTQxODhkZDFkMGUyMDBlNjlm
Yjk5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBA
IC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiVk0u
aCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5o
IgogI2luY2x1ZGUgIk5hbWVJbnN0YW5jZS5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9y
LmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5zIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVy
YXRlLWpzLWJ1aWx0aW5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmNGI2ZDQ5OWYwMjVjMDUzYjJmOTdiNmYxMDBl
ODU1MDQ2ZjNlNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2Vu
ZXJhdGUtanMtYnVpbHRpbnMKQEAgLTAsMCArMSwzMDQgQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisj
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisjIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisjIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyMgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCitpbXBvcnQgZmlsZWNtcAoraW1wb3J0IGZubWF0Y2gKK2ltcG9ydCBvcwor
aW1wb3J0IHJlCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3lzCitpbXBvcnQgZGF0ZXRpbWUKK2lt
cG9ydCBqc29uCisKK2NvcHlyaWdodFRleHQgPSAiIiIgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqL1xuCisiIiIKKworZ2VuZXJhdG9yU3RyaW5nID0gIi8qIEdlbmVyYXRl
ZCBieSAlcyBkbyBub3QgaGFuZCBlZGl0LiAqL1xuIiAlIG9zLnBhdGguYmFzZW5hbWUoX19maWxl
X18pCisKK2Z1bmN0aW9uSGVhZFJlZ0V4cCA9IHJlLmNvbXBpbGUociJmdW5jdGlvblxzK1x3K1xz
KlwoLio/XCkiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorZnVuY3Rpb25OYW1lUmVnRXhwID0gcmUu
Y29tcGlsZShyImZ1bmN0aW9uXHMrKFx3KylccypcKCIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitm
dW5jdGlvblBhcmFtZXRlckZpbmRlciA9IHJlLmNvbXBpbGUociJeZnVuY3Rpb25ccysoPzpcdysp
XHMqXCgoKD86XHMqXHcrKT9ccyooPzpccyosXHMqXHcrKSopP1wpIiwgcmUuTVVMVElMSU5FIHwg
cmUuUykKKworbXVsdGlsaW5lQ29tbWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJcL1wqLio/XCpc
LyIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitzaW5nbGVMaW5lQ29tbWVudFJlZ0V4cCA9IHJlLmNv
bXBpbGUociJcL1wvLio/XG4iLCByZS5NVUxUSUxJTkUgfCByZS5TKQorCitkZWYgZ2V0Q29weXJp
Z2h0KHNvdXJjZSk6CisgICAgY29weXJpZ2h0QmxvY2sgPSBtdWx0aWxpbmVDb21tZW50UmVnRXhw
LmZpbmRhbGwoc291cmNlKVswXQorICAgIGNvcHlyaWdodEJsb2NrID0gY29weXJpZ2h0QmxvY2tb
OmNvcHlyaWdodEJsb2NrLmluZGV4KCJSZWRpc3RyaWJ1dGlvbiIpXQorICAgIGNvcHlSaWdodExp
bmVzID0gW10KKworICAgIGZvciBsaW5lIGluIGNvcHlyaWdodEJsb2NrLnNwbGl0KCJcbiIpOgor
ICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIvKiIsICIiKQorICAgICAgICBsaW5lID0gbGlu
ZS5yZXBsYWNlKCIqLyIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIqIiwgIiIp
CisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIkNvcHlyaWdodCIsICIiKQorICAgICAgICBs
aW5lID0gbGluZS5yZXBsYWNlKCJjb3B5cmlnaHQiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUu
cmVwbGFjZSgiKEMpIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIihjKSIsICIi
KQorICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgIGlmIGxlbihsaW5lKSA9PSAw
OgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBjb3B5UmlnaHRMaW5lcy5hcHBlbmQo
bGluZSkKKyAgICAKKyAgICByZXR1cm4gbGlzdChzZXQoY29weVJpZ2h0TGluZXMpKQorCisKKwor
ZGVmIGdldEZ1bmN0aW9ucyhzb3VyY2UpOgorCisgICAgc291cmNlID0gbXVsdGlsaW5lQ29tbWVu
dFJlZ0V4cC5zdWIoIi8qKi8iLCBzaW5nbGVMaW5lQ29tbWVudFJlZ0V4cC5zdWIoIi8vXG4iLCBz
b3VyY2UpKQorCisgICAgbWF0Y2hlcyA9IFsgZiBmb3IgZiBpbiBmdW5jdGlvbkhlYWRSZWdFeHAu
ZmluZGl0ZXIoc291cmNlKV0KKyAgICBmdW5jdGlvbkJvdW5kcyA9IFtdCisgICAgc3RhcnQgPSAw
CisgICAgZW5kID0gMAorICAgIGZvciBtYXRjaCBpbiBtYXRjaGVzOgorICAgICAgICBzdGFydCA9
IG1hdGNoLnN0YXJ0KCkKKyAgICAgICAgaWYgc3RhcnQgPCBlbmQ6CisgICAgICAgICAgICBjb250
aW51ZQorICAgICAgICBlbmQgPSBtYXRjaC5lbmQoKQorICAgICAgICB3aGlsZSBzb3VyY2VbZW5k
XSAhPSAneyc6CisgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgIGRlcHRoID0gMQor
ICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgIHdoaWxlIGRlcHRoID4gMDoKKyAgICAgICAg
ICAgIGlmIHNvdXJjZVtlbmRdID09ICd7JzoKKyAgICAgICAgICAgICAgICBkZXB0aCA9IGRlcHRo
ICsgMQorICAgICAgICAgICAgZWxpZiBzb3VyY2VbZW5kXSA9PSAnfSc6CisgICAgICAgICAgICAg
ICAgZGVwdGggPSBkZXB0aCAtIDEKKyAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAg
ZnVuY3Rpb25Cb3VuZHMuYXBwZW5kKChzdGFydCwgZW5kKSkKKworICAgIGZ1bmN0aW9ucyA9IFtz
b3VyY2Vbc3RhcnQ6ZW5kXS5zdHJpcCgpIGZvciAoc3RhcnQsIGVuZCkgaW4gZnVuY3Rpb25Cb3Vu
ZHNdCisgICAgcmVzdWx0ID0gW10KKyAgICBmb3IgZnVuY3Rpb24gaW4gZnVuY3Rpb25zOgorICAg
ICAgICBmdW5jdGlvbiA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAuc3ViKCIiLCBmdW5jdGlvbikK
KyAgICAgICAgZnVuY3Rpb25OYW1lID0gZnVuY3Rpb25OYW1lUmVnRXhwLmZpbmRhbGwoZnVuY3Rp
b24pWzBdCisgICAgICAgIGZ1bmN0aW9uUGFyYW1ldGVycyA9IGZ1bmN0aW9uUGFyYW1ldGVyRmlu
ZGVyLmZpbmRhbGwoZnVuY3Rpb24pWzBdLnNwbGl0KCcsJykKKyAgICAgICAgaWYgbGVuKGZ1bmN0
aW9uUGFyYW1ldGVyc1swXSkgPT0gMDoKKyAgICAgICAgICAgIGZ1bmN0aW9uUGFyYW1ldGVycyA9
IFtdCisgICAgICAgICAgICAKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgoZnVuY3Rpb25OYW1lLCBm
dW5jdGlvbiwgZnVuY3Rpb25QYXJhbWV0ZXJzKSkKKyAgICByZXR1cm4gcmVzdWx0CisgICAgICAg
IAorCitkZWYgZ2VuZXJhdGVDb2RlKHNvdXJjZSk6CisgICAgaW5wdXRGaWxlID0gb3Blbihzb3Vy
Y2UsICJyIikKKyAgICBiYXNlTmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoc291cmNlKS5yZXBsYWNl
KCIuanMiLCAiIikKKyAgICAKKyAgICBzb3VyY2UgPSAiIgorICAgIGZvciBsaW5lIGluIGlucHV0
RmlsZToKKyAgICAgICAgc291cmNlID0gc291cmNlICsgbGluZQorICAgIAorICAgIGlmIHN5cy5w
bGF0Zm9ybSA9PSAiY3lnd2luIjoKKyAgICAgICAgc291cmNlID0gc291cmNlLnJlcGxhY2UoIlxy
XG4iLCAiXG4iKQorICAgIHJldHVybiAoYmFzZU5hbWUsIGdldEZ1bmN0aW9ucyhzb3VyY2UpLCBn
ZXRDb3B5cmlnaHQoc291cmNlKSkKKworZGVmIG1hbmdsZU5hbWUob2JqZWN0LCBuYW1lKToKKyAg
ICBxTmFtZSA9IG9iamVjdCArICIuIiArIG5hbWUKKyAgICBtYW5nbGVkTmFtZSA9ICIiCisgICAg
aSA9IDAKKyAgICB3aGlsZSBpIDwgbGVuKHFOYW1lKToKKyAgICAgICAgaWYgcU5hbWVbaV0gPT0g
Jy4nOgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZSArIHFOYW1lW2kgKyAx
XS51cHBlcigpCisgICAgICAgICAgICBpID0gaSArIDEKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWUgKyBxTmFtZVtpXQorICAgICAgICBpID0gaSAr
IDEKKyAgICByZXR1cm4gbWFuZ2xlZE5hbWUKKworYnVpbHRpbnMgPSBbXQorCitiYXNlTmFtZSA9
IHN5cy5hcmd2Wy0xXQorYnVpbHRpbl9kZWZpbml0aW9ucyA9IHN5cy5hcmd2WzE6LTFdCisob3V0
cHV0X2Jhc2UsIF8pID0gb3MucGF0aC5zcGxpdGV4dChzeXMuYXJndlstMV0pCisKK2NvcHlyaWdo
dHMgPSBbXQorZm9yIGZpbGUgaW4gYnVpbHRpbl9kZWZpbml0aW9uczoKKyAgICBpZiBmbm1hdGNo
LmZubWF0Y2goZmlsZSwgJyouanMnKToKKyAgICAgICAgKGJhc2VOYW1lLCBmdW5jdGlvbnMsIG9i
amVjdENvcHlyaWdodHMpID0gZ2VuZXJhdGVDb2RlKGZpbGUpCisgICAgICAgIGNvcHlyaWdodHMu
ZXh0ZW5kKG9iamVjdENvcHlyaWdodHMpCisgICAgICAgIGJ1aWx0aW5zLmFwcGVuZCgoYmFzZU5h
bWUsIGZ1bmN0aW9ucykpCisKK2NvcHlyaWdodHMgPSBsaXN0KHNldChjb3B5cmlnaHRzKSkKKwor
Y29weXJpZ2h0Qm9keSA9ICIiCitmb3IgY29weXJpZ2h0IGluIGNvcHlyaWdodHM6CisgICAgY29w
eXJpZ2h0Qm9keSA9IGNvcHlyaWdodEJvZHkgKyIgKiBDb3B5cmlnaHQgKEMpICIgKyBjb3B5cmln
aHQgKyAiXG4iCisKK2J1aWx0aW5zSGVhZGVyID0gb3BlbihvdXRwdXRfYmFzZSArICIuaC50bXAi
LCAidyIpCitidWlsdGluc0ltcGxlbWVudGF0aW9uID0gb3BlbihvdXRwdXRfYmFzZSArICIuY3Bw
LnRtcCIsICJ3IikKK2NvcHlyaWdodFRleHQgPSAiLypcbiIgKyBjb3B5cmlnaHRCb2R5ICsgY29w
eXJpZ2h0VGV4dAorYnVpbHRpbnNIZWFkZXIud3JpdGUoIiIiJXMKKyVzCisKKyNpZm5kZWYgSlND
QnVpbHRpbnNfSAorI2RlZmluZSBKU0NCdWlsdGluc19ICisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CitjbGFzcyBJZGVudGlmaWVyOworY2xhc3MgSlNHbG9i
YWxPYmplY3Q7CitjbGFzcyBTb3VyY2VDb2RlOworY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU7CitjbGFzcyBWTTsKKworRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVCdWlsdGluRXhl
Y3V0YWJsZShWTSYsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29k
ZSYpOworCisiIiIgJSAoZ2VuZXJhdG9yU3RyaW5nLCBjb3B5cmlnaHRUZXh0KSkKKworY29kZVJl
ZmVyZW5jZXMgPSBbXQorCitmb3IgKG9iamVjdE5hbWUsIGZ1bmN0aW9ucykgaW4gYnVpbHRpbnM6
CisgICAgcHJpbnQoIkdlbmVyYXRpbmcgYmluZGluZ3MgZm9yIHRoZSAlcyBidWlsdGluLiIgJSBv
YmplY3ROYW1lKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIvKiAlcyBmdW5jdGlvbnMgKi9c
biIgJSBvYmplY3ROYW1lKQorICAgIGZvciAobmFtZSwgaW1wbGVtZW50YXRpb24sIF8pIGluIGZ1
bmN0aW9uczoKKyAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVOYW1lKG9iamVjdE5hbWUsIG5h
bWUpCisgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWVbMF0ubG93ZXIoKSArIG1hbmds
ZWROYW1lWzE6XSArICJDb2RlIgorICAgICAgICBjb2RlUmVmZXJlbmNlcy5hcHBlbmQoKG1hbmds
ZWROYW1lLCBuYW1lLCBpbXBsZW1lbnRhdGlvbikpCisgICAgICAgIGJ1aWx0aW5zSGVhZGVyLndy
aXRlKCJleHRlcm4gY29uc3QgY2hhciogc18lcztcbiIgJSBtYW5nbGVkTmFtZSkKKyAgICAgICAg
YnVpbHRpbnNIZWFkZXIud3JpdGUoImV4dGVybiBjb25zdCBpbnQgc18lc0xlbmd0aDtcbiIgJSBt
YW5nbGVkTmFtZSkKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiXG4iKQorICAgIGJ1aWx0aW5z
SGVhZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19GT1JFQUNIXyVzX0JVSUxUSU4obWFjcm8pIFxcXG4i
ICUgb2JqZWN0TmFtZS5yZXBsYWNlKCIuIiwgIl8iKS51cHBlcigpKQorICAgIGZvciAobmFtZSwg
aW1wbGVtZW50YXRpb24sIGFyZ3VtZW50cykgaW4gZnVuY3Rpb25zOgorICAgICAgICBtYW5nbGVk
TmFtZSA9IG1hbmdsZU5hbWUob2JqZWN0TmFtZSwgbmFtZSkKKyAgICAgICAgYnVpbHRpbnNIZWFk
ZXIud3JpdGUoIiAgICBtYWNybyglcywgJXMsICVkKSBcXFxuIiAlIChuYW1lLCBtYW5nbGVkTmFt
ZSwgbGVuKGFyZ3VtZW50cykpKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJcbiIpCisgICAg
Zm9yIChuYW1lLCBpbXBsZW1lbnRhdGlvbiwgYXJndW1lbnRzKSBpbiBmdW5jdGlvbnM6CisgICAg
ICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19CVUlMVElOXyVzIDFcbiIgJSBt
YW5nbGVOYW1lKG9iamVjdE5hbWUsIG5hbWUpLnVwcGVyKCkpCisgICAgYnVpbHRpbnNIZWFkZXIu
d3JpdGUoIlxuXG4iKQorbmFtZXMgPSBbXQorYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUg
SlNDX0ZPUkVBQ0hfQlVJTFRJTihtYWNybylcXFxuIikKK2ZvciAoY29kZVJlZmVyZW5jZSwgZnVu
Y3Rpb25OYW1lLCBzb3VyY2UpIGluIGNvZGVSZWZlcmVuY2VzOgorICAgIGJ1aWx0aW5zSGVhZGVy
LndyaXRlKCIgICAgbWFjcm8oJXMsICVzLCBzXyVzTGVuZ3RoKSBcXFxuIiAlIChjb2RlUmVmZXJl
bmNlLCBmdW5jdGlvbk5hbWUsIGNvZGVSZWZlcmVuY2UpKQorICAgIG5hbWVzLmFwcGVuZChmdW5j
dGlvbk5hbWUpCisKK2J1aWx0aW5zSGVhZGVyLndyaXRlKCJcblxuIikKK2J1aWx0aW5zSGVhZGVy
LndyaXRlKCIjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykg
XFxcbiIpCitmb3IgbmFtZSBpbiBzb3J0ZWQoc2V0KG5hbWVzKSk6CisgICAgYnVpbHRpbnNIZWFk
ZXIud3JpdGUoIiAgICBtYWNybyglcykgXFxcbiIgJSBuYW1lKQorYnVpbHRpbnNIZWFkZXIud3Jp
dGUoIiIiCisKKyNkZWZpbmUgSlNDX0RFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUs
IGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUq
IGNvZGVOYW1lIyNHZW5lcmF0b3IoVk0mKTsKKworSlNDX0ZPUkVBQ0hfQlVJTFRJTihKU0NfREVD
TEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBKU0NfREVDTEFSRV9CVUlMVElOX0dFTkVS
QVRPUgorCisjZGVmaW5lIEpTQ19CVUlMVElOX0VYSVNUUyhuYW1lKSBkZWZpbmVkKEpTQ19CVUlM
VElOXyMjbmFtZSkKKworfQorCisjZW5kaWYKKworIiIiKQorCitidWlsdGluc0ltcGxlbWVudGF0
aW9uLndyaXRlKCIiIiVzCislcworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJK
U0NCdWlsdGlucy5oIgorCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVk
ZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJW
TS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworIiIiICAlIChnZW5lcmF0b3JTdHJpbmcsIGNvcHly
aWdodFRleHQpKQorCitmb3IgKGNvZGVSZWZlcmVuY2UsIG5hbWUsIHNvdXJjZSkgaW4gY29kZVJl
ZmVyZW5jZXM6CisgICAgc291cmNlID0gIihmdW5jdGlvbiAiICsgc291cmNlW3NvdXJjZS5pbmRl
eCgiKCIpOl0gKyAiKSIKKyAgICBsaW5lcyA9IGpzb24uZHVtcHMoc291cmNlKVsxOi0xXS5zcGxp
dCgiXFxuIikKKyAgICBzb3VyY2VMZW5ndGggPSBsZW4oc291cmNlKQorICAgIHNvdXJjZSA9ICIi
CisgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgIHNvdXJjZSA9IHNvdXJjZSArICgiICAg
IFwiJXNcXG5cIiBcXFxuIiAlIGxpbmUpCisgICAgYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0
ZSgiY29uc3QgY2hhciogc18lcyA9XG4lcztcblxuIiAlIChjb2RlUmVmZXJlbmNlLCBzb3VyY2Up
KQorICAgIGJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoImNvbnN0IGludCBzXyVzTGVuZ3Ro
ID0gJWQ7XG5cbiIgJSAoY29kZVJlZmVyZW5jZSwgc291cmNlTGVuZ3RoICsgMSkpICMgKyAxIGZv
ciBcbgorCitidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIgorRnVuY3Rpb25FeGVjdXRh
YmxlKiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShWTSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKK3sK
KyAgICB1bnNpZ25lZCBsaW5lQ291bnQgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPmxpbmVDb3VudCgp
OworICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gMTsKKyAgICB1bnNpZ25lZCBzb3VyY2VMZW5n
dGggPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnNvdXJjZUxlbmd0aCgpOworICAgIGJvb2wgZW5kQ29s
dW1uSXNPblN0YXJ0TGluZSA9ICFsaW5lQ291bnQ7CisgICAgdW5zaWduZWQgZW5kQ29sdW1uRXhj
bHVkaW5nQnJhY2VzID0gdW5saW5rZWRFeGVjdXRhYmxlLT51bmxpbmtlZEJvZHlFbmRDb2x1bW4o
KSArIChlbmRDb2x1bW5Jc09uU3RhcnRMaW5lID8gMCA6IDEpOworICAgIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0ID0gdW5saW5rZWRFeGVjdXRhYmxlLT5zdGFydE9mZnNldCgpOworICAgIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0RXhjbHVkaW5nT3BlbkJyYWNlID0gc3RhcnRPZmZzZXQgKyAxOworICAgIHVu
c2lnbmVkIGVuZE9mZnNldEV4Y2x1ZGluZ0Nsb3NlQnJhY2UgPSBzdGFydE9mZnNldCArIHNvdXJj
ZUxlbmd0aCAtIDE7CisgICAgU291cmNlQ29kZSBib2R5U291cmNlKHNvdXJjZS5wcm92aWRlcigp
LCBzdGFydE9mZnNldEV4Y2x1ZGluZ09wZW5CcmFjZSwgZW5kT2Zmc2V0RXhjbHVkaW5nQ2xvc2VC
cmFjZSwgMCwgc3RhcnRDb2x1bW4pOworICAgIHJldHVybiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNy
ZWF0ZSh2bSwgYm9keVNvdXJjZSwgdW5saW5rZWRFeGVjdXRhYmxlLCAwLCBsaW5lQ291bnQsIHN0
YXJ0Q29sdW1uLCBlbmRDb2x1bW5FeGNsdWRpbmdCcmFjZXMsIGZhbHNlKTsKK30KKworI2RlZmlu
ZSBKU0NfREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFy
Z3VtZW50Q291bnQpIFxcCitGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3Io
Vk0mIHZtKSBcXAoreyBcXAorICAgIHJldHVybiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSh2bSwg
dm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCksIHZtLmJ1aWx0
aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyBcXAorfQorCitKU0NfRk9SRUFD
SF9CVUlMVElOKEpTQ19ERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgSlNDX0RFRklO
RV9CVUlMVElOX0dFTkVSQVRPUgorfQorCisiIiIpCisKK2J1aWx0aW5zSGVhZGVyLmNsb3NlKCkK
K2J1aWx0aW5zSW1wbGVtZW50YXRpb24uY2xvc2UoKQorCitpZiAobm90IG9zLnBhdGguZXhpc3Rz
KG91dHB1dF9iYXNlICsgIi5oIikpIG9yIChub3QgZmlsZWNtcC5jbXAob3V0cHV0X2Jhc2UgKyAi
LmgudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmgiLCBzaGFsbG93PUZhbHNlKSk6CisgICAgb3MucmVu
YW1lKG91dHB1dF9iYXNlICsgIi5oLnRtcCIsIG91dHB1dF9iYXNlICsgIi5oIikKK2Vsc2U6Cisg
ICAgb3MucmVtb3ZlKG91dHB1dF9iYXNlICsgIi5oLnRtcCIpCisKK2lmIChub3Qgb3MucGF0aC5l
eGlzdHMob3V0cHV0X2Jhc2UgKyAiLmNwcCIpKSBvciAobm90IGZpbGVjbXAuY21wKG91dHB1dF9i
YXNlICsgIi5jcHAudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmNwcCIsIHNoYWxsb3c9RmFsc2UpKToK
KyAgICBvcy5yZW5hbWUob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCBvdXRwdXRfYmFzZSArICIu
Y3BwIikKK2Vsc2U6CisgICAgb3MucmVtb3ZlKG91dHB1dF9iYXNlICsgIi5jcHAudG1wIikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oCmluZGV4IDJj
YTNlOTc5NDBjN2MxMTA2YzFiYWJhMWYzNTRmZTg0N2I0Mzg1YjMuLjMwY2FkMmExNGZmZGJmYjRk
NTdjZjVhMTJmY2I5MDBlMjY0Zjg3NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0NhY2hlZENhbGwuaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgICwgbV9pbnRlcnByZXRlcihjYWxsRnJhbWUtPmludGVycHJldGVyKCkpCiAg
ICAgICAgICAgICAsIG1fZW50cnlTY29wZShjYWxsRnJhbWUtPnZtKCksIGZ1bmN0aW9uLT5zY29w
ZSgpLT5nbG9iYWxPYmplY3QoKSkKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKCFmdW5j
dGlvbi0+aXNIb3N0RnVuY3Rpb24oKSk7CisgICAgICAgICAgICBBU1NFUlQoIWZ1bmN0aW9uLT5p
c0hvc3RGdW5jdGlvbk5vbklubGluZSgpKTsKICAgICAgICAgICAgIGlmIChjYWxsRnJhbWUtPnZt
KCkuaXNTYWZlVG9SZWN1cnNlKCkpIHsKICAgICAgICAgICAgICAgICBtX2FyZ3VtZW50cy5yZXNp
emUoYXJndW1lbnRDb3VudCk7CiAgICAgICAgICAgICAgICAgbV9jbG9zdXJlID0gbV9pbnRlcnBy
ZXRlci0+cHJlcGFyZUZvclJlcGVhdENhbGwoZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLCBjYWxs
RnJhbWUsICZtX3Byb3RvQ2FsbEZyYW1lLCBmdW5jdGlvbiwgYXJndW1lbnRDb3VudCArIDEsIGZ1
bmN0aW9uLT5zY29wZSgpLCBtX2FyZ3VtZW50cy5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggY2E4OTBiMDZlYTMz
ZmE5ZTdmMWZhNTFhMzVlYTJkNDhkMDA5YTM4YS4uNmM5YmY5NmMxNWY2MDllMjY1Y2UyNTBhNDVi
ZjA4NjFkMDZjZDFmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTU3RhY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJKU1dp
dGhTY29wZS5oIgogI2luY2x1ZGUgIkxMSW50Q0xvb3AuaCIKICNpbmNsdWRlICJMTEludFRodW5r
cy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3Rv
Q2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0Nh
bGxGcmFtZS5jcHAKaW5kZXggZjBlMDJiYTRlNDc2Zjk5Y2M5MTNiMDQ2MmFkMjc5NTAwNjA5ZmEz
YS4uMWMyNDBkY2Q3MWJlNTI5ZDg4Y2JmNDYxZDE4NjhmNWViMmIwMmFkNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuY3BwCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKIAogI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
U3RhY2tBbGlnbm1lbnQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCBjYTdhZDExZjJlMGI4YTNiOGIxODU4OTFkN2U1MjJi
YWU0MDNhMjM2Li5jYjU1MDdiZWFjNTViZjhlYjFiMzdlYzkwZmNhYjE5MzRmYjQ4ZWEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
QXJyYXkuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2Vs
bC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAKaW5kZXggOThkMTBhM2Y0ZGNiMTJkODlmMzdhMTJmMjI2MDRiOTQ2ZTA4ZTYyNy4uZGQwMzUz
Nzc5ZThiZGY5OGY0NjU4YTMwN2UzMmQwNmU0NzI0NDE1OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJy
YXkuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbC5o
IgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRl
eCA5MjhkZDUwZmIwMTZlMjcxNjQ0YTU3NWUzMGFiNWYyNTE2ZWI1MGVjLi45MDg4YjdmYjJmYjdh
ZDAxMzgwNmVmNDliNWFmNDIwZmE2NDg0MDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTQxLDYgKzQxLDggQEAKICNpbmNsdWRlICJKSVQuaCIK
ICNpbmNsdWRlICJKSVRPcGVyYXRpb25XcmFwcGVycy5oIgogI2luY2x1ZGUgIkpJVFRvREZHRGVm
ZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNsdWRlICJKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDI2ZGQ0ZDFhZjc0NWFmYTFmYmM1M2E5YzAyM2E2ZTQ3
NDFhNjZhMDkuLmRmMWJkM2E5Y2ZhNDAyYzUyYTUyMTFjZjFhY2NlNjdkNTEyMWI3ZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0y
OSwxMSArMjksMTMgQEAKICNpbmNsdWRlICJKSVQuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiR0NBd2FyZUpJVFN0
dWJSb3V0aW5lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSW50ZXJw
cmV0ZXIuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgor
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1ZhcmlhYmxl
T2JqZWN0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDQwNzg0YjQ5NDMxZmUwMmU4ZTQ1MjJm
MTYzMDhjOTAyNDcxNmQyMzYuLjJmNzk1NTU0YjA5MWRlZWJiYzAzYmYyYmU4Yzc0ZjQxYWU1NDFl
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSlNM
b2NrLmgiCiAjaW5jbHVkZSAiSlNQcm94eS5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5j
bHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1
ZGUgIlNhbXBsaW5nVG9vbC5oIgogI2luY2x1ZGUgIlN0YWNrVmlzaXRvci5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcApp
bmRleCA2MDRjYzI2M2NmOTdlMDg2ZmVkMDZlYzkwM2IwZWMxOTgzZTc4MTM3Li44MTY2ZTdmODFm
YTg5YTdkNGY1MGM1ZjFhOTRmYTk2OGM1ZDU3ZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAtMzUsNyArMzUs
NyBAQAogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1
ZGUgIkpTQ2VsbC5oIgotI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0
aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3Qu
aCIKICNpbmNsdWRlICJKU09iamVjdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FT
VEJ1aWxkZXIuaAppbmRleCA4ZWMxZmQzMmEzYWRhMjJlMTI1MjI5NTcwZGNmN2ZmMjhlYWJmMWVk
Li40NmE3Yzc2YjJmOTAxZmMzY2MzNmQxY2UwYzA3MzUzZWIwNmIyZjVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtODg4LDkgKzg4OCw5IEBAIEV4cHJl
c3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uCiAgICAgQVNTRVJUKGZ1bmMtPmlzRG90QWNjZXNzb3JOb2RlKCkp
OwogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2Rl
Kj4oZnVuYyk7CiAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZSogbm9kZTsKLSAgICBpZiAoZG90LT5p
ZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y2FsbCkKKyAgICBpZiAoZG90LT5p
ZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y2FsbCB8fCBkb3QtPmlkZW50aWZp
ZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5jYWxsUHJpdmF0ZU5hbWUpCiAgICAgICAgIG5v
ZGUgPSBuZXcgKG1fdm0pIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJh
c2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVu
ZCk7Ci0gICAgZWxzZSBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1l
cy0+YXBwbHkpCisgICAgZWxzZSBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVy
dHlOYW1lcy0+YXBwbHkgfHwgZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1l
cy0+YXBwbHlQcml2YXRlTmFtZSkKICAgICAgICAgbm9kZSA9IG5ldyAobV92bSkgQXBwbHlGdW5j
dGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCks
IGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiAgICAgZWxzZQogICAgICAgICBu
b2RlID0gbmV3IChtX3ZtKSBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2Uo
KSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IGNhNGJiNGYwYWRlOGQ2
YmM4MjY5MWE2YzAwMDE0Y2YxOThiZDg4YmQuLmNjYjA3OWQ5NzVhMTQxYzVjNGIyZDdiNjIzMTMw
MDA3MDk3Nzc4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC0y
NSwxMCArMjUsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMZXhlci5oIgog
CisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKKyNpbmNsdWRlICJJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKLQogI2luY2x1ZGUgIkpTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmgiCi0jaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk5vZGVJ
bmZvLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlIDx3dGYvZHRvYS5oPgpAQCAtOTAs
NiArOTAsNyBAQCBlbnVtIENoYXJhY3RlclR5cGUgewogCiAgICAgLy8gT3RoZXIgdHlwZXMgKG9u
bHkgb25lIHNvIGZhcikKICAgICBDaGFyYWN0ZXJXaGl0ZVNwYWNlLAorICAgIENoYXJhY3RlclBy
aXZhdGVJZGVudGlmaWVyU3RhcnQKIH07CiAKIC8vIDI1NiBMYXRpbi0xIGNvZGVzCkBAIC0xNTgs
NyArMTU5LDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IHR5cGVzT2ZMYXRpbjFDaGFy
YWN0ZXJzWzI1Nl0gPSB7CiAvKiAgNjEgLSA9ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVy
RXF1YWwsCiAvKiAgNjIgLSA+ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyR3JlYXRlciwK
IC8qICA2MyAtID8gICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJRdWVzdGlvbiwKLS8qICA2
NCAtIEAgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyogIDY0IC0gQCAg
ICAgICAgICAgICAgICAgICovIENoYXJhY3RlclByaXZhdGVJZGVudGlmaWVyU3RhcnQsCiAvKiAg
NjUgLSBBICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAogLyog
IDY2IC0gQiAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKIC8q
ICA2NyAtIEMgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCkBA
IC00ODYsOSArNDg3LDEwIEBAIHN0YXRpYyBjb25zdCBMQ2hhciBzaW5nbGVDaGFyYWN0ZXJFc2Nh
cGVWYWx1ZXNGb3JBU0NJSVsxMjhdID0gewogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1M
ZXhlcjxUPjo6TGV4ZXIoVk0qIHZtKQorTGV4ZXI8VD46OkxleGVyKFZNKiB2bSwgSlNQYXJzZXJT
dHJpY3RuZXNzIHN0cmljdG5lc3MpCiAgICAgOiBtX2lzUmVwYXJzaW5nKGZhbHNlKQogICAgICwg
bV92bSh2bSkKKyAgICAsIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbihzdHJpY3RuZXNzID09IEpT
UGFyc2VCdWlsdGluKQogewogfQogCkBAIC03NTMsNyArNzU1LDI3IEBAIGlubGluZSB2b2lkIExl
eGVyPFQ+OjpyZWNvcmQxNihpbnQgYykKICAgICBBU1NFUlQoYyA8PSBzdGF0aWNfY2FzdDxpbnQ+
KFVTSFJUX01BWCkpOwogICAgIG1fYnVmZmVyMTYuYXBwZW5kKHN0YXRpY19jYXN0PFVDaGFyPihj
KSk7CiB9Ci0KKyAgICAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECitib29sIGlzU2FmZUlkZW50aWZp
ZXIoVk0mIHZtLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCkKK3sKKyAgICBpZiAoIWlkZW50KQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAvKiBKdXN0IGJsb2NrIGFueSB1c2Ugb2Ygc3VzcGlj
aW91cyBpZGVudGlmaWVycy4gIFRoaXMgaXMgaW50ZW5kZWQgdG8KKyAgICAgKiBiZSB1c2VkIGFz
IGEgc2FmZXR5IG5ldCB3aGlsZSBpbXBsZW1lbnRpbmcgYnVpbHRpbnMuCisgICAgICovCisgICAg
aWYgKCppZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCppZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5hcHBseSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+ZXZhbCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1l
cy0+RnVuY3Rpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KyNlbmRpZgorICAgIAogdGVtcGxhdGUgPD4KIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlk
ZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwYXJzZUlk
ZW50aWZpZXIoSlNUb2tlbkRhdGEqIHRva2VuRGF0YSwgdW5zaWduZWQgbGV4ZXJGbGFncywgYm9v
bCBzdHJpY3RNb2RlKQogewpAQCAtNzY1LDcgKzc4NywxMSBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91
bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFy
Pjo6cAogICAgICAgICAgICAgcmV0dXJuIGtleXdvcmQgPT0gUkVTRVJWRURfSUZfU1RSSUNUICYm
ICFzdHJpY3RNb2RlID8gSURFTlQgOiBrZXl3b3JkOwogICAgICAgICB9CiAgICAgfQotCisgICAg
CisgICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gbV9jdXJyZW50ID09ICdAJyAmJiBtX3BhcnNpbmdC
dWlsdGluRnVuY3Rpb247CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgIHNoaWZ0KCk7
CisgICAgCiAgICAgY29uc3QgTENoYXIqIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQ
dHIoKTsKICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTGluZVN0YXJ0ID0gY3VycmVudExpbmVTdGFy
dE9mZnNldCgpOwogICAgIApAQCAtNzc5LDE1ICs4MDUsMjYgQEAgdGVtcGxhdGUgPGJvb2wgc2hv
dWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hh
cj46OnAKIAogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gMDsKICAgICAKLSAgICBpZiAo
c2hvdWxkQ3JlYXRlSWRlbnRpZmllcikgeworICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVy
IHx8IG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgewogICAgICAgICBpbnQgaWRlbnRpZmllckxl
bmd0aCA9IGN1cnJlbnRTb3VyY2VQdHIoKSAtIGlkZW50aWZpZXJTdGFydDsKICAgICAgICAgaWRl
bnQgPSBtYWtlSWRlbnRpZmllcihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwot
CisgICAgICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKKyAgICAgICAgICAgIGlm
ICghaXNTYWZlSWRlbnRpZmllcigqbV92bSwgaWRlbnQpICYmICFpc1ByaXZhdGVOYW1lKSB7Cisg
ICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJUaGUgdXNlIG9m
ICciLCBpZGVudC0+c3RyaW5nKCksICInIGlzIGRpc2FsbG93ZWQgaW4gYnVpbHRpbiBmdW5jdGlv
bnMuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgICAgICAgICAgaWRlbnQgPSBt
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZXRQcml2YXRlTmFtZSgqaWRlbnQpOworICAgICAgICAgICAg
ZWxzZSBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQp
CisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT51bmRlZmluZWRLZXl3b3JkUHJpdmF0ZU5hbWU7CisgICAgICAgICAgICBpZiAoIWlkZW50KQor
ICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzsKKyAg
ICAgICAgfQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gaWRlbnQ7CiAgICAgfSBlbHNlCiAg
ICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAwOwogCi0gICAgaWYgKFVOTElLRUxZKChyZW1haW5p
bmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJl
c2VydmVkV29yZHMpKSkgeworICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5M
ZW5ndGgpICYmICEobGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkg
JiYgIWlzUHJpdmF0ZU5hbWUpIHsKICAgICAgICAgQVNTRVJUKHNob3VsZENyZWF0ZUlkZW50aWZp
ZXIpOwogICAgICAgICBpZiAocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHsKICAgICAgICAg
ICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSBtX3ZtLT5rZXl3b3Jkcy0+Z2V0S2V5d29yZCgq
aWRlbnQpOwpAQCAtODE0LDYgKzg1MSwxMCBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJ
ZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAg
ICAgICAgICAgcmV0dXJuIGtleXdvcmQgPT0gUkVTRVJWRURfSUZfU1RSSUNUICYmICFzdHJpY3RN
b2RlID8gSURFTlQgOiBrZXl3b3JkOwogICAgICAgICB9CiAgICAgfQorICAgIAorICAgIGJvb2wg
aXNQcml2YXRlTmFtZSA9IG1fY3VycmVudCA9PSAnQCcgJiYgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0
aW9uOworICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICBzaGlmdCgpOwogCiAgICAgY29u
c3QgVUNoYXIqIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKICAgICBpbnQg
aWRlbnRpZmllckxpbmVTdGFydCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKQEAgLTgyNiw2
ICs4NjcsNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNf
SU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAgIH0KICAgICAKICAgICBpZiAo
VU5MSUtFTFkobV9jdXJyZW50ID09ICdcXCcpKSB7CisgICAgICAgIEFTU0VSVCghaXNQcml2YXRl
TmFtZSk7CiAgICAgICAgIHNldE9mZnNldEZyb21Tb3VyY2VQdHIoaWRlbnRpZmllclN0YXJ0LCBp
ZGVudGlmaWVyTGluZVN0YXJ0KTsKICAgICAgICAgcmV0dXJuIHBhcnNlSWRlbnRpZmllclNsb3dD
YXNlPHNob3VsZENyZWF0ZUlkZW50aWZpZXI+KHRva2VuRGF0YSwgbGV4ZXJGbGFncywgc3RyaWN0
TW9kZSk7CiAgICAgfQpAQCAtODM3LDE4ICs4NzksMjkgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxk
Q3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46
OnAKIAogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gMDsKICAgICAKLSAgICBpZiAoc2hv
dWxkQ3JlYXRlSWRlbnRpZmllcikgeworICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyIHx8
IG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgewogICAgICAgICBpbnQgaWRlbnRpZmllckxlbmd0
aCA9IGN1cnJlbnRTb3VyY2VQdHIoKSAtIGlkZW50aWZpZXJTdGFydDsKICAgICAgICAgaWYgKGlz
QWxsOEJpdCkKICAgICAgICAgICAgIGlkZW50ID0gbWFrZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hh
cihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBpZGVudCA9IG1ha2VJZGVudGlmaWVyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmll
ckxlbmd0aCk7Ci0gICAgICAgIAorICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9u
KSB7CisgICAgICAgICAgICBpZiAoIWlzU2FmZUlkZW50aWZpZXIoKm1fdm0sIGlkZW50KSAmJiAh
aXNQcml2YXRlTmFtZSkgeworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gbWFr
ZVN0cmluZygiVGhlIHVzZSBvZiAnIiwgaWRlbnQtPnN0cmluZygpLCAiJyBpcyBkaXNhbGxvd2Vk
IGluIGJ1aWx0aW4gZnVuY3Rpb25zLiIpOworICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRP
SzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAg
ICAgICAgICAgIGlkZW50ID0gbV92bS0+cHJvcGVydHlOYW1lcy0+Z2V0UHJpdmF0ZU5hbWUoKmlk
ZW50KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT51bmRlZmluZWRLZXl3b3JkKQorICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAm
bV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZFByaXZhdGVOYW1lOworICAgICAg
ICAgICAgaWYgKCFpZGVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9QUklWQVRF
X05BTUVfRVJST1JUT0s7CisgICAgICAgIH0KICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IGlk
ZW50OwogICAgIH0gZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gMDsKICAgICAKLSAg
ICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxh
Z3MgJiBMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpKSB7CisgICAgaWYgKFVOTElLRUxZ
KChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFn
c0lnbm9yZVJlc2VydmVkV29yZHMpKSAmJiAhaXNQcml2YXRlTmFtZSkgewogICAgICAgICBBU1NF
UlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChyZW1haW5pbmcgPCBtYXhU
b2tlbkxlbmd0aCkgewogICAgICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IG1fdm0t
PmtleXdvcmRzLT5nZXRLZXl3b3JkKCppZGVudCk7CkBAIC0xNjU4LDYgKzE3MTEsNyBAQCBpbk51
bWJlckFmdGVyRGVjaW1hbFBvaW50OgogICAgICAgICBBU1NFUlQoaXNJZGVudFN0YXJ0KG1fY3Vy
cmVudCkpOwogICAgICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNlIENoYXJhY3RlckJhY2tTbGFz
aDoKKyAgICAgICAgcGFyc2VJZGVudDoKICAgICAgICAgaWYgKGxleGVyRmxhZ3MgJiBMZXhleEZs
YWdzRG9udEJ1aWxkS2V5d29yZHMpCiAgICAgICAgICAgICB0b2tlbiA9IHBhcnNlSWRlbnRpZmll
cjxmYWxzZT4odG9rZW5EYXRhLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKTsKICAgICAgICAgZWxz
ZQpAQCAtMTY3MCw2ICsxNzI0LDExIEBAIGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ6CiAgICAg
ICAgIG1fdGVybWluYXRvciA9IHRydWU7CiAgICAgICAgIG1fbGluZVN0YXJ0ID0gbV9jb2RlOwog
ICAgICAgICBnb3RvIHN0YXJ0OworICAgIGNhc2UgQ2hhcmFjdGVyUHJpdmF0ZUlkZW50aWZpZXJT
dGFydDoKKyAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikKKyAgICAgICAgICAg
IGdvdG8gcGFyc2VJZGVudDsKKworICAgICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNlIENoYXJh
Y3RlckludmFsaWQ6CiAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gaW52YWxpZENoYXJhY3Rl
ck1lc3NhZ2UoKTsKICAgICAgICAgdG9rZW4gPSBFUlJPUlRPSzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTGV4ZXIuaAppbmRleCAyOGM2MWJhMTk4ZDJjMTVhNDliYjE4NTJlZDMwYmVmZWI4OTA0
MDA4Li5iODg3M2U5OTUwMjg2NDRiZjhjYmIzZDRjMmRhNTYyZTkzZTBlOGU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCkBAIC03Miw3ICs3Miw3IEBAIGNsYXNzIExleGVyIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAogcHVibGljOgotICAgIExleGVyKFZNKik7
CisgICAgTGV4ZXIoVk0qLCBKU1BhcnNlclN0cmljdG5lc3MpOwogICAgIH5MZXhlcigpOwogCiAg
ICAgLy8gQ2hhcmFjdGVyIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMuCkBAIC0yMzgsNiArMjM4LDcg
QEAgcHJpdmF0ZToKICAgICBJZGVudGlmaWVyQXJlbmEqIG1fYXJlbmE7CiAKICAgICBWTSogbV92
bTsKKyAgICBib29sIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKIH07CiAKIHRlbXBsYXRlIDw+
CkBAIC0zMzUsNiArMzM2LDEyIEBAIEFMV0FZU19JTkxJTkUgY29uc3QgSWRlbnRpZmllciogTGV4
ZXI8VD46Om1ha2VMQ2hhcklkZW50aWZpZXIoY29uc3QgVUNoYXIqIGNoYXJhCiAgICAgcmV0dXJu
ICZtX2FyZW5hLT5tYWtlSWRlbnRpZmllckxDaGFyRnJvbVVDaGFyKG1fdm0sIGNoYXJhY3RlcnMs
IGxlbmd0aCk7CiB9CiAKKyNpZiBBU1NFUlRfRElTQUJMRUQKK0FMV0FZU19JTkxJTkUgYm9vbCBp
c1NhZmVJZGVudGlmaWVyKFZNJiwgY29uc3QgSWRlbnRpZmllciopIHsgcmV0dXJuIHRydWU7IH0K
KyNlbHNlCitib29sIGlzU2FmZUlkZW50aWZpZXIoVk0mLCBjb25zdCBJZGVudGlmaWVyKik7Cisj
ZW5kaWYKKwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBl
IExleGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW4qIHRva2VuUmVjb3JkLCB1bnNp
Z25lZCBsZXhlckZsYWdzLCBib29sIHN0cmljdE1vZGUpCiB7CkBAIC0zNzAsMTAgKzM3NywxNSBA
QCBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVy
KEpTVG9rZW4qIHRva2VuUmVjb3JkLCB1bgogICAgIEFTU0VSVChjdXJyZW50T2Zmc2V0KCkgPj0g
Y3VycmVudExpbmVTdGFydE9mZnNldCgpKTsKIAogICAgIC8vIENyZWF0ZSB0aGUgaWRlbnRpZmll
ciBpZiBuZWVkZWQKLSAgICBpZiAobGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250QnVpbGRLZXl3
b3JkcykKKyAgICBpZiAobGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250QnVpbGRLZXl3b3Jkcwor
I2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgJiYgIW1fcGFyc2luZ0J1aWx0aW5GdW5jdGlv
bgorI2VuZGlmCisgICAgICAgICkKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IDA7CiAgICAg
ZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gbWFrZUxDaGFySWRlbnRpZmllcihzdGFy
dCwgcHRyIC0gc3RhcnQpOworCiAgICAgdG9rZW5Mb2NhdGlvbi0+bGluZSA9IG1fbGluZU51bWJl
cjsKICAgICB0b2tlbkxvY2F0aW9uLT5saW5lU3RhcnRPZmZzZXQgPSBjdXJyZW50TGluZVN0YXJ0
T2Zmc2V0KCk7CiAgICAgdG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZzZXQgPSBvZmZzZXRGcm9tU291
cmNlUHRyKHN0YXJ0KTsKQEAgLTM4MSw2ICszOTMsMTMgQEAgQUxXQVlTX0lOTElORSBKU1Rva2Vu
VHlwZSBMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rva2VuKiB0b2tlblJlY29yZCwg
dW4KICAgICBBU1NFUlQodG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZzZXQgPj0gdG9rZW5Mb2NhdGlv
bi0+bGluZVN0YXJ0T2Zmc2V0KTsKICAgICB0b2tlblJlY29yZC0+bV9zdGFydFBvc2l0aW9uID0g
c3RhcnRQb3NpdGlvbjsKICAgICB0b2tlblJlY29yZC0+bV9lbmRQb3NpdGlvbiA9IGN1cnJlbnRQ
b3NpdGlvbigpOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBpZiAobV9wYXJzaW5nQnVpbHRp
bkZ1bmN0aW9uKSB7CisgICAgICAgIGlmICghaXNTYWZlSWRlbnRpZmllcigqbV92bSwgdG9rZW5E
YXRhLT5pZGVudCkpCisgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7CisgICAgfQorI2VuZGlm
CisKICAgICBtX2xhc3RUb2tlbiA9IElERU5UOwogICAgIHJldHVybiBJREVOVDsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggZmM5Y2NkOWY2YzU3NmMxYWVm
NTQ3ZjIxMWZkZDU5NmY0MmUwNTgwNi4uZDk1MmJhNmE5NGQyZjZiNDE4MjE1NTAwNGQwYTk3MDg0
MjliZDc4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTEzMiw2
ICsxMzIsMTIgQEAgUGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4gUHJvZ3JhbU5vZGU6OmNyZWF0ZShW
TSogdm0sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQKICAgICByZXR1cm4gbm9kZS5yZWxl
YXNlKCk7CiB9CiAKKwordm9pZCBQcm9ncmFtTm9kZTo6c2V0Q2xvc2VkVmFyaWFibGVzKGNvbnN0
IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYgY2xvc2VkVmFyaWFibGVzKQoreworICAgIG1f
Y2xvc2VkVmFyaWFibGVzID0gc3RkOjptb3ZlKGNsb3NlZFZhcmlhYmxlcyk7Cit9CisKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFdmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCiBpbmxpbmUgRXZhbE5vZGU6OkV2YWxOb2RlKFZNKiB2bSwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExv
Y2F0aW9uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFy
U3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQm
IGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJl
cyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuaAppbmRleCBkNzc5YTE3OGQ5NTZmZjk5ZmQwYmVkNWQ1ZjQ1NGFhM2U2YjUwODc5Li44MTZm
ZjAwMWFiZjAzNzZjNjQyZjFhOTM4ZDBlMGE5ZjUyOWNhNmJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5oCkBAIC0xNDMxLDYgKzE0MzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgYm9vbCBuZWVkc0FjdGl2YXRpb24oKSBjb25zdCB7IHJldHVybiAoaGFzQ2FwdHVyZWRW
YXJpYWJsZXMoKSkgfHwgKG1fZmVhdHVyZXMgJiAoRXZhbEZlYXR1cmUgfCBXaXRoRmVhdHVyZSB8
IENhdGNoRmVhdHVyZSkpOyB9CiAgICAgICAgIGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSBj
b25zdCB7IHJldHVybiAhIW1fY2FwdHVyZWRWYXJpYWJsZXMuc2l6ZSgpOyB9CiAgICAgICAgIHNp
emVfdCBjYXB0dXJlZFZhcmlhYmxlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2NhcHR1cmVkVmFy
aWFibGVzLnNpemUoKTsgfQorICAgICAgICBjb25zdCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZh
cmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2FwdHVyZWRWYXJpYWJsZXM7IH0KICAgICAgICAg
Ym9vbCBjYXB0dXJlcyhjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgeyByZXR1cm4gbV9jYXB0dXJl
ZFZhcmlhYmxlcy5jb250YWlucyhpZGVudC5pbXBsKCkpOyB9CiAKICAgICAgICAgVmFyU3RhY2sm
IHZhclN0YWNrKCkgeyByZXR1cm4gbV92YXJTdGFjazsgfQpAQCAtMTQ0Niw2ICsxNDQ3LDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCgp
IGNvbnN0OwogCiAgICAgICAgIHZvaWQgZW1pdFN0YXRlbWVudHNCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9uKTsKKyAgICAgICAgCisgICAgICAgIHZv
aWQgc2V0Q2xvc2VkVmFyaWFibGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYp
IHsgfQogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2b2lkIHNldFNvdXJjZShjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UpIHsgbV9zb3VyY2UgPSBzb3VyY2U7IH0KQEAgLTE0NzUsMTEgKzE0Nzgs
MTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJ
c0Z1bmN0aW9uID0gZmFsc2U7CiAKKyAgICAgICAgdm9pZCBzZXRDbG9zZWRWYXJpYWJsZXMoY29u
c3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJik7CisgICAgICAgIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8U3RyaW5nSW1wbD4+JiBjbG9zZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2Ns
b3NlZFZhcmlhYmxlczsgfQogICAgIHByaXZhdGU6CiAgICAgICAgIFByb2dyYW1Ob2RlKFZNKiwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQs
IHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRz
KiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJj
ZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
IG92ZXJyaWRlOwotCisgICAgICAgIFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+IG1fY2xvc2Vk
VmFyaWFibGVzOwogICAgICAgICB1bnNpZ25lZCBtX3N0YXJ0Q29sdW1uOwogICAgICAgICB1bnNp
Z25lZCBtX2VuZENvbHVtbjsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCmluZGV4IDI5NzY2NmU3MjZlNDVkMDgzZWYxMzQ5ZGRmZmRmMzdlZjgwMGRmN2EuLjUw
YmVjNzlmZTM4YWRmOGYzYTA0ZjZiNDZjYmQyYTVjYmZjZjI0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTIwNCw4ICsyMDQsOSBAQCBQYXJzZXI8TGV4ZXJU
eXBlPjo6UGFyc2VyKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvblBh
cmFtZXRlcnMqCiAgICAgLCBtX2xhc3RJZGVudGlmaWVyKDApCiAgICAgLCBtX2xhc3RGdW5jdGlv
bk5hbWUobnVsbHB0cikKICAgICAsIG1fc291cmNlRWxlbWVudHMoMCkKKyAgICAsIG1fcGFyc2lu
Z0J1aWx0aW4oc3RyaWN0bmVzcyA9PSBKU1BhcnNlQnVpbHRpbikKIHsKLSAgICBtX2xleGVyID0g
YWRvcHRQdHIobmV3IExleGVyVHlwZSh2bSkpOworICAgIG1fbGV4ZXIgPSBhZG9wdFB0cihuZXcg
TGV4ZXJUeXBlKHZtLCBzdHJpY3RuZXNzKSk7CiAgICAgbV9hcmVuYSA9IG1fdm0tPnBhcnNlckFy
ZW5hLmdldCgpOwogICAgIG1fbGV4ZXItPnNldENvZGUoc291cmNlLCBtX2FyZW5hKTsKICAgICBt
X3Rva2VuLm1fbG9jYXRpb24ubGluZSA9IHNvdXJjZS5maXJzdExpbmUoKTsKQEAgLTI1Niw2ICsy
NTcsNyBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoKQogICAgIElkZW50
aWZpZXJTZXQgY2FwdHVyZWRWYXJpYWJsZXM7CiAgICAgYm9vbCBtb2RpZmllZFBhcmFtZXRlciA9
IGZhbHNlOwogICAgIHNjb3BlLT5nZXRDYXB0dXJlZFZhcmlhYmxlcyhjYXB0dXJlZFZhcmlhYmxl
cywgbW9kaWZpZWRQYXJhbWV0ZXIpOworICAgIAogICAgIENvZGVGZWF0dXJlcyBmZWF0dXJlcyA9
IGNvbnRleHQuZmVhdHVyZXMoKTsKICAgICBpZiAoc2NvcGUtPnN0cmljdE1vZGUoKSkKICAgICAg
ICAgZmVhdHVyZXMgfD0gU3RyaWN0TW9kZUZlYXR1cmU7CkBAIC0yNjMsMjEgKzI2NSwzNiBAQCBT
dHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoKQogICAgICAgICBmZWF0dXJlcyB8
PSBTaGFkb3dzQXJndW1lbnRzRmVhdHVyZTsKICAgICBpZiAobW9kaWZpZWRQYXJhbWV0ZXIpCiAg
ICAgICAgIGZlYXR1cmVzIHw9IE1vZGlmaWVkUGFyYW1ldGVyRmVhdHVyZTsKLQorICAgIAorICAg
IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+IGNsb3NlZFZhcmlhYmxlczsKKyAgICBpZiAobV9w
YXJzaW5nQnVpbHRpbikgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghY2FwdHVyZWRWYXJpYWJs
ZXMuc2l6ZSgpKTsKKyAgICAgICAgSWRlbnRpZmllclNldCB1c2VkVmFyaWFibGVzOworICAgICAg
ICBzY29wZS0+Z2V0VXNlZFZhcmlhYmxlcyh1c2VkVmFyaWFibGVzKTsKKyAgICAgICAgZm9yIChj
b25zdCBhdXRvJiB2YXJpYWJsZSA6IHVzZWRWYXJpYWJsZXMpIHsKKyAgICAgICAgICAgIGlmIChz
Y29wZS0+aGFzRGVjbGFyZWRWYXJpYWJsZShJZGVudGlmaWVyKG1fdm0sIHZhcmlhYmxlLmdldCgp
KSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGlmIChzY29wZS0+aGFzRGVjbGFyZWRQYXJhbWV0ZXIoSWRlbnRpZmllcihtX3ZtLCB2YXJpYWJs
ZS5nZXQoKSkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgY2xvc2Vk
VmFyaWFibGVzLmFwcGVuZCh2YXJpYWJsZSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgZGlkRmlu
aXNoUGFyc2luZyhzb3VyY2VFbGVtZW50cywgY29udGV4dC52YXJEZWNsYXJhdGlvbnMoKSwgY29u
dGV4dC5mdW5jRGVjbGFyYXRpb25zKCksIGZlYXR1cmVzLAotICAgICAgICBjb250ZXh0Lm51bUNv
bnN0YW50cygpLCBjYXB0dXJlZFZhcmlhYmxlcyk7CisgICAgICAgIGNvbnRleHQubnVtQ29uc3Rh
bnRzKCksIGNhcHR1cmVkVmFyaWFibGVzLCBzdGQ6Om1vdmUoY2xvc2VkVmFyaWFibGVzKSk7CiAK
ICAgICByZXR1cm4gcGFyc2VFcnJvcjsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlw
ZT4KIHZvaWQgUGFyc2VyPExleGVyVHlwZT46OmRpZEZpbmlzaFBhcnNpbmcoU291cmNlRWxlbWVu
dHMqIHNvdXJjZUVsZW1lbnRzLCBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OlZh
clN0YWNrPiogdmFyU3RhY2ssIAotICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNr
czo6RnVuY3Rpb25TdGFjaz4qIGZ1bmNTdGFjaywgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQg
bnVtQ29uc3RhbnRzLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcnMpCisgICAgUGFyc2VyQXJl
bmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiogZnVuY1N0YWNrLCBDb2Rl
RmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMsIElkZW50aWZpZXJTZXQmIGNhcHR1
cmVkVmFycywgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJiBjbG9zZWRWYXJpYWJs
ZXMpCiB7CiAgICAgbV9zb3VyY2VFbGVtZW50cyA9IHNvdXJjZUVsZW1lbnRzOwogICAgIG1fdmFy
RGVjbGFyYXRpb25zID0gdmFyU3RhY2s7CiAgICAgbV9mdW5jRGVjbGFyYXRpb25zID0gZnVuY1N0
YWNrOwogICAgIG1fY2FwdHVyZWRWYXJpYWJsZXMuc3dhcChjYXB0dXJlZFZhcnMpOworICAgIG1f
Y2xvc2VkVmFyaWFibGVzID0gY2xvc2VkVmFyaWFibGVzOwogICAgIG1fZmVhdHVyZXMgPSBmZWF0
dXJlczsKICAgICBtX251bUNvbnN0YW50cyA9IG51bUNvbnN0YW50czsKIH0KQEAgLTIzNDYsNiAr
MjM2MywxMCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPiB2b2lkIFBhcnNlcjxMZXhl
clR5cGU+OjpwcmludFVuZXhwZWN0ZWRUb2tlblRleHQoVwogICAgIGNhc2UgUkVTRVJWRUQ6CiAg
ICAgICAgIG91dC5wcmludCgiVW5leHBlY3RlZCB1c2Ugb2YgcmVzZXJ2ZWQgd29yZCAnIiwgZ2V0
VG9rZW4oKSwgIiciKTsKICAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBJTlZBTElEX1BSSVZB
VEVfTkFNRV9FUlJPUlRPSzoKKyAgICAgICAgb3V0LnByaW50KCJJbnZhbGlkIHByaXZhdGUgbmFt
ZSAnIiwgZ2V0VG9rZW4oKSwgIiciKTsKKyAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAg
ICAgY2FzZSBJREVOVDoKICAgICAgICAgb3V0LnByaW50KCJVbmV4cGVjdGVkIGlkZW50aWZpZXIg
JyIsIGdldFRva2VuKCksICInIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApp
bmRleCBiNjk4ZWY5MzY4Y2I4YzhmMTk3Y2NkMDAwYWNhYTZkZmIxMWJhMjQ0Li45MDMzODUwYzhj
OTdmNTdlMjFkYTVlZWRiMDJkMDQ0ZjRjODk3OGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmgKQEAgLTIzLDYgKzIzLDcgQEAKICNpZm5kZWYgUGFyc2VyX2gKICNkZWZpbmUg
UGFyc2VyX2gKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRGVi
dWdnZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiRXhlY3V0
YWJsZS5oIgpAQCAtMjU5LDYgKzI2MCwxMCBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICByZXR1
cm4gaXNWYWxpZFN0cmljdE1vZGUgPyBCaW5kaW5nU3VjY2VlZGVkIDogU3RyaWN0QmluZGluZ0Zh
aWxlZDsKICAgICB9CiAKKyAgICB2b2lkIGdldFVzZWRWYXJpYWJsZXMoSWRlbnRpZmllclNldCYg
dXNlZFZhcmlhYmxlcykKKyAgICB7CisgICAgICAgIHVzZWRWYXJpYWJsZXMuc3dhcChtX3VzZWRW
YXJpYWJsZXMpOworICAgIH0KIAogICAgIHZvaWQgdXNlVmFyaWFibGUoY29uc3QgSWRlbnRpZmll
ciogaWRlbnQsIGJvb2wgaXNFdmFsKQogICAgIHsKQEAgLTQxNCw2ICs0MTksNyBAQCBwdWJsaWM6
CiAgICAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYpOwogCiAgICAg
SlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbGV4ZXItPnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsgfQorICAgIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYgY2xvc2VkVmFyaWFibGVzKCkgeyByZXR1cm4gc3RkOjpt
b3ZlKG1fY2xvc2VkVmFyaWFibGVzKTsgfQogCiBwcml2YXRlOgogICAgIHN0cnVjdCBBbGxvd0lu
T3ZlcnJpZGUgewpAQCAtNTQwLDcgKzU0Niw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIHBhcnNl
SW5uZXIoKTsKIAogICAgIHZvaWQgZGlkRmluaXNoUGFyc2luZyhTb3VyY2VFbGVtZW50cyosIFBh
cnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+KiwgCi0gICAgICAgIFBh
cnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qLCBDb2RlRmVh
dHVyZXMsIGludCwgSWRlbnRpZmllclNldCYpOworICAgICAgICBQYXJzZXJBcmVuYURhdGE8RGVj
bGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KiwgQ29kZUZlYXR1cmVzLCBpbnQsIElkZW50
aWZpZXJTZXQmLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmKTsKIAogICAgIC8v
IFVzZWQgdG8gZGV0ZXJtaW5lIHR5cGUgb2YgZXJyb3IgdG8gcmVwb3J0LgogICAgIGJvb2wgaXNG
dW5jdGlvbkJvZHlOb2RlKFNjb3BlTm9kZSopIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC04NDAsOSAr
ODQ2LDExIEBAIHByaXZhdGU6CiAgICAgY29uc3QgSWRlbnRpZmllciogbV9sYXN0RnVuY3Rpb25O
YW1lOwogICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlckNhY2hlPiBtX2Z1bmN0aW9uQ2FjaGU7CiAg
ICAgU291cmNlRWxlbWVudHMqIG1fc291cmNlRWxlbWVudHM7CisgICAgYm9vbCBtX3BhcnNpbmdC
dWlsdGluOwogICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+
KiBtX3ZhckRlY2xhcmF0aW9uczsKICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFj
a3M6OkZ1bmN0aW9uU3RhY2s+KiBtX2Z1bmNEZWNsYXJhdGlvbnM7CiAgICAgSWRlbnRpZmllclNl
dCBtX2NhcHR1cmVkVmFyaWFibGVzOworICAgIFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+IG1f
Y2xvc2VkVmFyaWFibGVzOwogICAgIENvZGVGZWF0dXJlcyBtX2ZlYXR1cmVzOwogICAgIGludCBt
X251bUNvbnN0YW50czsKICAgICAKQEAgLTk1Nyw2ICs5NjUsMTAgQEAgUGFzc1JlZlB0cjxQYXJz
ZWROb2RlPiBwYXJzZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Q
YXJhbWV0ZXIKICAgICAgICAgUmVmUHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJz
ZTxQYXJzZWROb2RlPihlcnJvcik7CiAgICAgICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXds
aW5lKQogICAgICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9z
aXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOworICAgICAgICBpZiAoc3RyaWN0bmVzcyA9PSBKU1Bh
cnNlQnVpbHRpbikgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKKyAgICAg
ICAgICAgIHJlc3VsdC0+c2V0Q2xvc2VkVmFyaWFibGVzKHN0ZDo6bW92ZShwYXJzZXIuY2xvc2Vk
VmFyaWFibGVzKCkpKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2Uo
KTsKICAgICB9CiAgICAgUGFyc2VyPExleGVyPFVDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIHBh
cmFtZXRlcnMsIG5hbWUsIHN0cmljdG5lc3MsIHBhcnNlck1vZGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCmluZGV4IDRlOWExN2NkMjFjYTM0MTQ2YmJkNDgx
NTZhMzcyY2Q0MDRkZWY2MGMuLmY3YTc1YmY3YzM3ODU3ZTQ0YjZkNWQ3MWY0NTI5YmIxYWMxY2Y1
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKQEAgLTI5
LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gSlNQYXJzZXJTdHJpY3RuZXNz
IHsgSlNQYXJzZU5vcm1hbCwgSlNQYXJzZVN0cmljdCB9OworZW51bSBKU1BhcnNlclN0cmljdG5l
c3MgeyBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlQnVpbHRpbiwgSlNQYXJzZVN0cmljdCB9OwogZW51
bSBKU1BhcnNlck1vZGUgeyBKU1BhcnNlUHJvZ3JhbUNvZGUsIEpTUGFyc2VGdW5jdGlvbkNvZGUg
fTsKIAogZW51bSBQcm9maWxlck1vZGUgeyBQcm9maWxlck9mZiwgUHJvZmlsZXJPbiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXggODJhMjY2Mzlh
NzkyMjBhMDg0NDU2YjQ4ZjMyODUyZDE0M2M3MzlkMC4uOGM4N2FkOWZhZGJkYzRhZjM5YWM5OWRi
MmQ4NDQ1ZTEzZmZmZDM1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXJUb2tlbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
clRva2Vucy5oCkBAIC0xNDksNiArMTQ5LDcgQEAgZW51bSBKU1Rva2VuVHlwZSB7CiAgICAgSU5W
QUxJRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0sgPSA3IHwgRXJyb3JUb2tlbkZsYWcsCiAgICAg
VU5URVJNSU5BVEVEX1NUUklOR19MSVRFUkFMX0VSUk9SVE9LID0gOCB8IEVycm9yVG9rZW5GbGFn
IHwgVW50ZXJtaW5hdGVkRXJyb3JUb2tlbkZsYWcsCiAgICAgSU5WQUxJRF9TVFJJTkdfTElURVJB
TF9FUlJPUlRPSyA9IDkgfCBFcnJvclRva2VuRmxhZywKKyAgICBJTlZBTElEX1BSSVZBVEVfTkFN
RV9FUlJPUlRPSyA9IDEwIHwgRXJyb3JUb2tlbkZsYWcKIH07CiAKIHN0cnVjdCBKU1RleHRQb3Np
dGlvbiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVu
dHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCmluZGV4IDE4
ZjM4OTE3MTM4NTIzNjJjN2E3NWEzMDUzYjQ2MzE0MTdiZWI4MWIuLmYxNmZkM2RlNDA1NTk3MGJh
OWQ5YzZmMGFlNjMxOGYyMjA0YjY1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ3VtZW50cy5oCkBAIC0yNSw2ICsyNSw3IEBACiAjZGVmaW5lIEFyZ3VtZW50c19oCiAKICNp
bmNsdWRlICJDb2RlT3JpZ2luLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNp
bmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5o
IgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcAppbmRleCBk
ZDA4OTRmMTRhMDIxZDVmMTI2NThhY2IwMWU3MjFmY2Q2ZDM0OGNjLi41YjRhZTg3MTZiMDU1M2Jl
NDYyMzk1NWU5OWUxYjQzZWJmMThmZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCkBAIC0y
Niw3ICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRzSXRl
cmF0b3JQcm90b3R5cGUuaCIKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5j
bHVkZSAiSlNBcmd1bWVudHNJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVz
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggMjdhYzZkNDhhNzFmNzk1NTAyYTEwY2VhNjQ3
ODY1NDEzNWE0NjNhMC4uNmRjN2JlNTY5NjlkZTY3ZjYyMTA3YmIzYTUxYTMwOGZhM2JhNzZiZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTQXJyYXlJ
dGVyYXRvci5oIgogI2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5oIgorI2luY2x1ZGUgIkpTU3Ry
aW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nSm9pbmVyLmgiCiAjaW5jbHVkZSAiTG9v
a3VwLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCkBAIC01Niw3ICs1Nyw2IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU2xpY2UoRXhl
Y1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3Rv
RnVuY1NvcnQoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvRnVuY1NwbGljZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVW5TaGlmdChFeGVjU3RhdGUqKTsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRXZlcnkoRXhlY1N0
YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y0ZvckVhY2goRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvRnVuY1NvbWUoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0luZGV4T2YoRXhlY1N0YXRlKik7CkBAIC05NTQs
NjkgKzk1NCw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNN
YXAoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0QXJy
YXkpOwogfQogCi0vLyBEb2N1bWVudGF0aW9uIGZvciB0aGVzZSB0aHJlZSBpcyBhdmFpbGFibGUg
YXQ6Ci0vLyBodHRwOi8vZGV2ZWxvcGVyLXRlc3QubW96aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0ph
dmFTY3JpcHRfMS41X1JlZmVyZW5jZTpPYmplY3RzOkFycmF5OmV2ZXJ5Ci0vLyBodHRwOi8vZGV2
ZWxvcGVyLXRlc3QubW96aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0phdmFTY3JpcHRfMS41X1JlZmVy
ZW5jZTpPYmplY3RzOkFycmF5OmZvckVhY2gKLS8vIGh0dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3pp
bGxhLm9yZy9lbi9kb2NzL0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6QXJy
YXk6c29tZQotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRXZl
cnkoRXhlY1N0YXRlKiBleGVjKQotewotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhlYy0+aG9z
dFRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKLSAg
ICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzT2JqLT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1l
cygpLmxlbmd0aCkudG9VSW50MzIoZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCi0gICAg
SlNWYWx1ZSBmdW5jdGlvbiA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIENhbGxEYXRhIGNhbGxE
YXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxE
YXRhKTsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLQotICAgIEpTVmFsdWUgYXBwbHlUaGlzID0gZXhlYy0+
YXJndW1lbnQoMSk7Ci0KLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbih0cnVlKTsKLQot
ICAgIHVuc2lnbmVkIGsgPSAwOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUpTICYmIGlz
SlNBcnJheSh0aGlzT2JqKSkgewotICAgICAgICBKU0Z1bmN0aW9uKiBmID0ganNDYXN0PEpTRnVu
Y3Rpb24qPihmdW5jdGlvbik7Ci0gICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh0aGlz
T2JqKTsKLSAgICAgICAgQ2FjaGVkQ2FsbCBjYWNoZWRDYWxsKGV4ZWMsIGYsIDMpOwotICAgICAg
ICBmb3IgKDsgayA8IGxlbmd0aCAmJiAhZXhlYy0+aGFkRXhjZXB0aW9uKCk7ICsraykgewotICAg
ICAgICAgICAgaWYgKFVOTElLRUxZKCFhcnJheS0+Y2FuR2V0SW5kZXhRdWlja2x5KGspKSkKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkQ2Fs
bC5zZXRUaGlzKGFwcGx5VGhpcyk7Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50
KDAsIGFycmF5LT5nZXRJbmRleFF1aWNrbHkoaykpOwotICAgICAgICAgICAgY2FjaGVkQ2FsbC5z
ZXRBcmd1bWVudCgxLCBqc051bWJlcihrKSk7Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFy
Z3VtZW50KDIsIHRoaXNPYmopOwotICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWNoZWRD
YWxsLmNhbGwoKTsKLSAgICAgICAgICAgIGlmICghcmVzdWx0LnRvQm9vbGVhbihleGVjKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwot
ICAgICAgICB9Ci0gICAgfQotICAgIGZvciAoOyBrIDwgbGVuZ3RoICYmICFleGVjLT5oYWRFeGNl
cHRpb24oKTsgKytrKSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmopOwotICAg
ICAgICBpZiAoIXRoaXNPYmotPmdldFByb3BlcnR5U2xvdChleGVjLCBrLCBzbG90KSkKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGVhY2hBcmd1
bWVudHM7Ci0gICAgICAgIGVhY2hBcmd1bWVudHMuYXBwZW5kKHNsb3QuZ2V0VmFsdWUoZXhlYywg
aykpOwotICAgICAgICBlYWNoQXJndW1lbnRzLmFwcGVuZChqc051bWJlcihrKSk7Ci0gICAgICAg
IGVhY2hBcmd1bWVudHMuYXBwZW5kKHRoaXNPYmopOwotCi0gICAgICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7Ci0KLSAgICAgICAgYm9vbCBwcmVkaWNhdGVSZXN1bHQgPSBjYWxsKGV4ZWMsIGZ1bmN0
aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGFwcGx5VGhpcywgZWFjaEFyZ3VtZW50cykudG9Cb29s
ZWFuKGV4ZWMpOwotICAgICAgICBpZiAoIXByZWRpY2F0ZVJlc3VsdCkgewotICAgICAgICAgICAg
cmVzdWx0ID0ganNCb29sZWFuKGZhbHNlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotfQotCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRm9yRWFjaChFeGVjU3RhdGUq
IGV4ZWMpCiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmogPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCku
dG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggNTEwZTM4M2ZhZTU3NWFhZGE4MTc2
YzA0NDFlZTcyNWI0M2E0YzczMi4uZDMwNDg3N2ZlOWNkZTFjMDkxOWZkNDU5NWY4MTFlY2FiY2U3
NzI3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBA
IC0xNDQsMjQgKzE0NCwyNiBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hl
OjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShWTSYgdgogICAgIEpTVGV4dFBv
c2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmU7CiAgICAgUmVmUHRyPFByb2dyYW1Ob2Rl
PiBwcm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KCZ2bSwgc291cmNlLCAwLCBJZGVudGlmaWVy
KCksIEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VQcm9ncmFtQ29kZSwgZXJyb3IsICZwb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lKTsKICAgICBpZiAoIXByb2dyYW0pIHsKLSAgICAgICAgQVNTRVJUKGVy
cm9yLm1fdHlwZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoZXJyb3IubV90eXBlICE9IFBhcnNlckVycm9yOjpFcnJvck5vbmUpOwogICAgICAgICBt
X3NvdXJjZUNvZGUucmVtb3ZlKGFkZFJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBhbiBpbnB1dCBzdHJpbmcg
dGhhdCB3b3VsZCByZXN1bHQgaW4gYSBzaW5nbGUgYW5vbnltb3VzIGZ1bmN0aW9uIGV4cHJlc3Np
b24uCiAgICAgU3RhdGVtZW50Tm9kZSogZXhwclN0YXRlbWVudCA9IHByb2dyYW0tPnNpbmdsZVN0
YXRlbWVudCgpOwotICAgIEFTU0VSVChleHByU3RhdGVtZW50KTsKLSAgICBBU1NFUlQoZXhwclN0
YXRlbWVudC0+aXNFeHByU3RhdGVtZW50KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0
ZW1lbnQpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVu
dCgpKTsKICAgICBFeHByZXNzaW9uTm9kZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxFeHByU3Rh
dGVtZW50Tm9kZSo+KGV4cHJTdGF0ZW1lbnQpLT5leHByKCk7Ci0gICAgQVNTRVJUKGZ1bmNFeHBy
KTsKKyAgICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwcik7CiAgICAgUkVMRUFTRV9BU1NFUlQoZnVu
Y0V4cHItPmlzRnVuY0V4cHJOb2RlKCkpOwogICAgIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkgPSBz
dGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihmdW5jRXhwciktPmJvZHkoKTsKKyAgICBSRUxFQVNF
X0FTU0VSVCghcHJvZ3JhbS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CisgICAgCiAgICAgYm9k
eS0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7Ci0gICAgQVNTRVJU
KGJvZHkpOwotICAgIEFTU0VSVChib2R5LT5pZGVudCgpLmlzTnVsbCgpKTsKKyAgICBSRUxFQVNF
X0FTU0VSVChib2R5KTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5LT5pZGVudCgpLmlzTnVsbCgp
KTsKIAotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUg
PSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBib2R5LCB0
cnVlKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxl
ID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgYm9keSwg
dHJ1ZSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbik7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5t
X25hbWVWYWx1ZS5zZXQodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwganNTdHJpbmcoJnZtLCBuYW1l
LnN0cmluZygpKSk7CiAKICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gU291cmNlQ29k
ZVZhbHVlKHZtLCBmdW5jdGlvbkV4ZWN1dGFibGUsIG1fc291cmNlQ29kZS5hZ2UoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAK
aW5kZXggM2Y1YzY0NWMwOThkNTI3ZmMwYzcyNTllOTQ0N2VmYmU4ODY4YTI5Yy4uMmZjMmI3Mjdh
ZmNlZWUxZWMyYzYyNWRlNTY3NWIzYmUxY2Y2MGQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcApAQCAtMjcsNyArMjcsMTAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICNkZWZpbmUgSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKG5h
bWUpICwgbmFtZSh2bSwgI25hbWUpCiAjZGVmaW5lIElOSVRJQUxJWkVfS0VZV09SRChuYW1lKSAs
IG5hbWUjI0tleXdvcmQodm0sICNuYW1lKQotI2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFN
RShuYW1lKSAsIG5hbWUjI1ByaXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb20oUHJpdmF0ZU5hbWUo
KSkpCisjZGVmaW5lIElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKG5hbWUpIFwKKyAgICAsIG5hbWUj
I1ByaXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb20oUHJpdmF0ZU5hbWUoKSkpIFwKKyAgICAsIG1f
IyNuYW1lIyNQdWJsaWNTdHJpbmdQYWlyKG5hbWUsIG5hbWUjI1ByaXZhdGVOYW1lKSBcCisKIAog
Q29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZNKiB2bSkKICAgICA6IG51bGxJ
ZGVudGlmaWVyKCkKQEAgLTM4LDggKzQxLDI2IEBAIENvbW1vbklkZW50aWZpZXJzOjpDb21tb25J
ZGVudGlmaWVycyhWTSogdm0pCiAgICAgLCBoYXNOZXh0SWRlbnRpZmllcih2bSwgImhhc05leHQi
KQogICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKElOSVRJQUxJWkVfS0VZ
V09SRCkKICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklU
SUFMSVpFX1BST1BFUlRZX05BTUUpCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9O
QU1FKElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRSkKICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURF
TlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKQogewog
fQogCitjb25zdCBJZGVudGlmaWVyKiBDb21tb25JZGVudGlmaWVyczo6Z2V0UHJpdmF0ZU5hbWUo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0Cit7CisjZGVmaW5lIFJFVFVSTl9JRl9QUklW
QVRFX05BTUVfTUFUQ0hFUyhuYW1lKSBpZiAobV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuZmly
c3QgPT0gaWRlbnQpIHJldHVybiAmbV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuc2Vjb25kOwor
ICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoUkVU
VVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKQorI3VuZGVmIFJFVFVSTl9JRl9QUklWQVRFX05B
TUVfTUFUQ0hFUworICAgIHJldHVybiAwOworfQorCitJZGVudGlmaWVyIENvbW1vbklkZW50aWZp
ZXJzOjpnZXRQdWJsaWNOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAoreworI2Rl
ZmluZSBSRVRVUk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMobmFtZSkgaWYgKG1fIyNuYW1lIyNQ
dWJsaWNTdHJpbmdQYWlyLnNlY29uZCA9PSBpZGVudCkgcmV0dXJuIG1fIyNuYW1lIyNQdWJsaWNT
dHJpbmdQYWlyLmZpcnN0OworICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNI
X1BST1BFUlRZX05BTUUoUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKQorI3VuZGVmIFJF
VFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hFUworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIGVtcHR5SWRlbnRpZmllcjsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaAppbmRleCBlOGY5ZWQ4MmJjNzk0NjIwMzgyNjZiMzAyMDc4MjI0N2IxZmEyN2EzLi45MjRk
MzZhYzY5MTM1MDM1N2NiMzgyYjFlZjNiNDBhMGEwOGMwYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTIyLDYgKzIyLDcg
QEAKICNkZWZpbmUgQ29tbW9uSWRlbnRpZmllcnNfaAogCiAjaW5jbHVkZSAiSWRlbnRpZmllci5o
IgorI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CiAKIC8vIE1hcmtlZEFyZ3VtZW50QnVmZmVyIG9mIHByb3BlcnR5IG5hbWVzLCBwYXNzZWQgdG8g
YSBtYWNybyBzbyB3ZSBjYW4gZG8gc2V0IHRoZW0gdXAgdmFyaW91cwpAQCAtMTMzLDggKzEzNCwx
MCBAQAogICAgIG1hY3JvKG9zckV4aXRzKSBcCiAgICAgbWFjcm8ocGFyc2UpIFwKICAgICBtYWNy
byhwcm9maWxlZEJ5dGVjb2RlcykgXAorICAgIG1hY3JvKHByb21pc2UpIFwKICAgICBtYWNybyhw
cm9wZXJ0eUlzRW51bWVyYWJsZSkgXAogICAgIG1hY3JvKHByb3RvdHlwZSkgXAorICAgIG1hY3Jv
KHJlc29sdmUpIFwKICAgICBtYWNybyhzZXQpIFwKICAgICBtYWNybyhzaXplKSBcCiAgICAgbWFj
cm8oc2xpY2UpIFwKQEAgLTE1NSw3ICsxNTgsMTQgQEAKICAgICBtYWNybyh2YWx1ZXMpIFwKICAg
ICBtYWNybyh2YWx1ZU9mKSBcCiAgICAgbWFjcm8od2luZG93KSBcCi0gICAgbWFjcm8od3JpdGFi
bGUpCisgICAgbWFjcm8od3JpdGFibGUpIFwKKyAgICBtYWNybyhpdGVyYXRvcikgXAorICAgIG1h
Y3JvKGl0ZXJhdG9yTmV4dCkgXAorICAgIG1hY3JvKHJlamVjdCkgXAorICAgIG1hY3JvKGZ1bGZp
bGxtZW50SGFuZGxlcikgXAorICAgIG1hY3JvKHJlamVjdGlvbkhhbmRsZXIpIFwKKyAgICBtYWNy
byhkZWZlcnJlZCkgXAorICAgIG1hY3JvKGNvdW50ZG93bkhvbGRlcikgXAogCiAjZGVmaW5lIEpT
Q19DT01NT05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKG1hY3JvKSBcCiAgICAgbWFjcm8oYnJl
YWspIFwKQEAgLTIwMyw3ICsyMTMsNyBAQAogICAgIG1hY3JvKHZvaWQpIFwKICAgICBtYWNybyh3
aGlsZSkgXAogICAgIG1hY3JvKHdpdGgpIFwKLSAgICBtYWNybyh5aWVsZCkKKyAgICBtYWNybyh5
aWVsZCkgXAogCiAjZGVmaW5lIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BS
T1BFUlRZX05BTUUobWFjcm8pIFwKICAgICBtYWNybyhpdGVyYXRvcikgXApAQCAtMjE2LDcgKzIy
NiwxMiBAQAogICAgIG1hY3JvKGluZGV4KSBcCiAgICAgbWFjcm8odmFsdWVzKSBcCiAgICAgbWFj
cm8oZGVmZXJyZWQpIFwKLSAgICBtYWNybyhjb3VudGRvd25Ib2xkZXIpCisgICAgbWFjcm8oY291
bnRkb3duSG9sZGVyKSBcCisgICAgbWFjcm8oT2JqZWN0KSBcCisgICAgbWFjcm8oVHlwZUVycm9y
KSBcCisgICAgbWFjcm8odW5kZWZpbmVkS2V5d29yZCkgXAorICAgIG1hY3JvKGNhbGwpIFwKKyAg
ICBtYWNybyhhcHBseSkKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTI0MCwxMSArMjU1LDE1IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFS
RV9QUk9QRVJUWV9OQU1FX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWU7CiAgICAg
ICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKEpTQ19JREVOVElG
SUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwpCisgICAgICAgIEpTQ19GT1JFQUNIX0JV
SUxUSU5fRlVOQ1RJT05fTkFNRShKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVf
R0xPQkFMKQogI3VuZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9C
QUwKIAotI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFN
RV9HTE9CQUwobmFtZSkgY29uc3QgSWRlbnRpZmllciBuYW1lIyNQcml2YXRlTmFtZTsKKyNkZWZp
bmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMKG5h
bWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSMjUHJpdmF0ZU5hbWU7IGNvbnN0IHN0ZDo6cGFpcjxJ
ZGVudGlmaWVyLCBJZGVudGlmaWVyPiBtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpcjsKICAgICAg
ICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShKU0Nf
SURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwpCiAjdW5kZWYg
SlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMCisgICAg
ICAgIAorICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFtZShjb25zdCBJZGVu
dGlmaWVyJikgY29uc3Q7CisgICAgICAgIElkZW50aWZpZXIgZ2V0UHVibGljTmFtZShjb25zdCBJ
ZGVudGlmaWVyJikgY29uc3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCAw
NzU4NzVmYjIzMTZhNTU1NzA1MGE2NjkwY2QwZjk4ODI0ODRmNWYzLi41YWY5MDg3NTRlNzQ3Zjhj
YWUwY2QwNGFmOGQ0OTE1MDA0NjhjMmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRl
ICJKSVQuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5o
IgotI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNOYW1l
U2NvcGUuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRpb25z
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2Vw
dGlvbnMuY3BwCmluZGV4IDU1MzM0YmUyZjk4MGE5OGY3ZmVhNDJhMDViZTBmMjBjMDE5ZmYwZGQu
LmZhNTdjMDI2ODVlNTNkNTI1Mjg4MDU3ZTIxMWQ5OGIxMDk4MWQ3M2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2Vw
dGlvbnMuY3BwCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5j
bHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgorI2luY2x1ZGUg
IkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNp
bmNsdWRlICJMTEludENvbW1vbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIENvbW1v
blNsb3dQYXRocyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGNlcHRpb25IZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2Vw
dGlvbkhlbHBlcnMuY3BwCmluZGV4IDA1ZTExZTBiODBhMzQzMGFlYWIyMmIwMjIyYTIxMmY0YThl
MmM0OWIuLjM2NGNjNzE2NjYwOGI1MDA3ZDQ3N2Q4NzM5MThhNWQ2NGIxNjg2NTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBA
IC04MSw2ICs4MSwxMSBAQCBKU09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKIEpTT2JqZWN0KiBjcmVhdGVVbmRlZmluZWRWYXJp
YWJsZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7Cisg
ICAgCisgICAgaWYgKGlkZW50LmltcGwoKS0+aXNFbXB0eVVuaXF1ZSgpKSB7CisgICAgICAgIFN0
cmluZyBtZXNzYWdlKG1ha2VTdHJpbmcoIkNhbid0IGZpbmQgcHJpdmF0ZSB2YXJpYWJsZTogQCIs
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZXRQdWJsaWNOYW1lKGlkZW50KS5zdHJpbmcoKSkpOwor
ICAgICAgICByZXR1cm4gY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgbWVzc2FnZSk7CisgICAg
fQogICAgIFN0cmluZyBtZXNzYWdlKG1ha2VTdHJpbmcoIkNhbid0IGZpbmQgdmFyaWFibGU6ICIs
IGlkZW50LnN0cmluZygpKSk7CiAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMs
IG1lc3NhZ2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5o
CmluZGV4IDE5ODk3NmJiM2ZlNmU2ZTkxMTc5ODEyZDFjYWY5YjhiZjliZmQwYmIuLjhkNTkwZWYw
ZmZjMGViOTBhYzhmOWE4MWQ5YmMyNTcyMWNkMzVjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTQ4NCw3ICs0ODQsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGNsZWFyQ29kZSgpOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8o
KSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2
YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1
dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9u
KCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UpOyB9CiAKICAgICB1
bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+
bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSB7
IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7
IH0KQEAgLTU0MCw3ICs1NDAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyQ29kZSgpOwog
Ci0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVj
dXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCks
IGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyBy
ZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3Ry
aWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IFNjcmlwdEV4ZWN1dGFibGU7CkBAIC02MjgsNyArNjI4LDggQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2NrRm9yKGtpbmQpOwogICAgIH0KLSAgICAgICAg
CisKKyAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtl
ZEV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVy
JiBuYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWUoKTsgfQogICAgIGNv
bnN0IElkZW50aWZpZXImIGluZmVycmVkTmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRh
YmxlLT5pbmZlcnJlZE5hbWUoKTsgfQogICAgIEpTU3RyaW5nKiBuYW1lVmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZVZhbHVlKCk7IH0KQEAgLTY3NSwxNCAr
Njc2LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fYm9keUluY2x1ZGVzQnJhY2VzOwogfTsKIAot
aW5saW5lIGJvb2wgaXNIb3N0RnVuY3Rpb24oSlNWYWx1ZSB2YWx1ZSwgTmF0aXZlRnVuY3Rpb24g
bmF0aXZlRnVuY3Rpb24pCi17Ci0gICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNG
dW5jdGlvbio+KGdldEpTRnVuY3Rpb24odmFsdWUpKTsKLSAgICBpZiAoIWZ1bmN0aW9uIHx8ICFm
dW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJl
dHVybiBmdW5jdGlvbi0+bmF0aXZlRnVuY3Rpb24oKSA9PSBuYXRpdmVGdW5jdGlvbjsKLX0KLQog
aW5saW5lIHZvaWQgRXhlY3V0YWJsZUJhc2U6OmNsZWFyQ29kZVZpcnR1YWwoRXhlY3V0YWJsZUJh
c2UqIGV4ZWN1dGFibGUpCiB7CiAgICAgc3dpdGNoIChleGVjdXRhYmxlLT5zdHJ1Y3R1cmUoKS0+
dHlwZUluZm8oKS50eXBlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAppbmRleCBjMWIwOGFmMmQ4MThkYWU1N2UxYjAwZmRh
MTczYTgxNjEzNzUyOWI1Li4xMjQ5MGM0MGYzMzQxN2VjYTkyMzg1MGEwZGM2NjJkYmJjZDQwZjMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90
b3R5cGUuY3BwCkBAIC0yMiwxMiArMjIsMTMgQEAKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlw
ZS5oIgogCiAjaW5jbHVkZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIK
ICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNT
dHJpbmdCdWlsZGVyLmgiCi0jaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKU1N0
cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJMZXhlci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMu
aCIKIApAQCAtMTA4LDcgKzEwOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0
cyhKU0Z1bmN0aW9uOjppbmZvKCkpKSB7CiAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0g
anNDYXN0PEpTRnVuY3Rpb24qPih0aGlzVmFsdWUpOwotICAgICAgICBpZiAoZnVuY3Rpb24tPmlz
SG9zdEZ1bmN0aW9uKCkpCisgICAgICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0T3JCdWlsdGluRnVu
Y3Rpb24oKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJp
dmlhbFN0cmluZyhleGVjLCAiZnVuY3Rpb24gIiwgZnVuY3Rpb24tPm5hbWUoZXhlYyksICIoKSB7
XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKTsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlID0gZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpOwogICAgICAgICBTdHJpbmcgc291
cmNlU3RyaW5nID0gZXhlY3V0YWJsZS0+c291cmNlKCkudG9TdHJpbmcoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCmluZGV4IDcyZWQxYzcxMjQw
NjExNjhiMGFkZGQzMTE2Zjc1NWExMTdiOGZiOTAuLmIzNzQ5NDMwOTllMjE1NWEzOTc3MTMzMTM0
NzAyYzJhMjRhY2M4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQWN0aXZhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
Y3RpdmF0aW9uLmNwcApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIEpTQWN0aXZhdGlvbjo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogCiBpbmxpbmUgYm9v
bCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3lt
Ym9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5
bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlO
YW1lLnVpZCgpKTsKICAgICBpZiAoZW50cnkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApAQCAtNzIsNyArNzIsNyBAQCBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRh
YmxlR2V0KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdAogCiBpbmxpbmUg
Ym9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKLSAgICBTeW1ib2xUYWJsZUVu
dHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNO
YW1lKCkpOworICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxp
bmVHZXQocHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoZW50cnkuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApAQCAtODksNyArODksNyBAQCBpbmxpbmUgYm9vbCBKU0FjdGl2
YXRpb246OnN5bWJvbFRhYmxlUHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TgogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZh
bHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMpKTsKICAgICAKLSAg
ICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3Bl
cnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1i
b2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoZW50cnku
aXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoZW50cnkuaXNSZWFkT25s
eSgpKSB7CkBAIC0xMzYsNyArMTM2LDcgQEAgaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1i
b2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3AKICAgICBX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiByZWc7CiAgICAgewogICAgICAgICBDb25jdXJyZW50
SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZSgpLT5tX2xvY2spOwotICAgICAgICBTeW1ib2xU
YWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUoKS0+ZmluZChsb2NrZXIsIHBy
b3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVy
YXRvciBpdGVyID0gc3ltYm9sVGFibGUoKS0+ZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQo
KSk7CiAgICAgICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlKCktPmVuZChsb2NrZXIpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5JiBlbnRyeSA9
IGl0ZXItPnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcmd1bWVudHNJdGVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FyZ3VtZW50c0l0ZXJhdG9yLmNwcAppbmRleCAyZmNmODgxNWMwNTY4MDU4MTJhNzk5MWE1ZmYw
NjNkNjg3Mzk3MTY0Li45YTkyNTgzYWEwZWM5MGRiYjMyOGVjZDUwZGMzMTM5YWVmMDI3M2I1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0
ZXJhdG9yLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkpTQXJndW1lbnRzSXRlcmF0
b3IuaCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxp
bmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuY3BwCmluZGV4IDkwMDdiNWY3ZDNmMTAzYjFkMjFiMWEzNjVhMjZjMjE1YzMyYjRk
MjguLmJhMGEyZDM4ZTljNTNlMTU5MzdkNDZhODk1MWE4YzhjNDUwNzkyNjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUg
IkluZGV4aW5nSGVhZGVySW5saW5lcy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgog
I2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSAiUmVqZWN0LmgiCiAjaW5j
bHVkZSA8d3RmL0FWTFRyZWUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZS5jcHAKaW5kZXggY2NhNjg4OGJmOThhMDI4NjQ2Y2EzZGRkZjM3NjI3Y2UwZTdkOTMw
Mi4uMzM5YTdhYjdmNTk1MTVlOTZhZmI3ZWM0Yjg3NDFlN2FhOGUxNjZmOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAgLTMyLDcgKzMyLDkgQEAK
ICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNp
bmNsdWRlICJKU05vdEFuT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiTnVtYmVyT2JqZWN0LmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1
ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKaW5kZXggZjdj
ODQ0NjQ1MDkyYjI1MDgwNWU2ZThkNDgzMmM5OThiZGI4OWI1NC4uZDc5NWRkNTZhOTdkZGI1OTdj
MDkwZmMyZTBiN2YzMDhlMzNlYmNhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbElubGluZXMuaApAQCAtMjcsOCArMjcsMTAgQEAKICNkZWZpbmUgSlNDZWxsSW5s
aW5lc19oCiAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlm
aWVycy5oIgogI2luY2x1ZGUgIkRlZmVyR0MuaCIKICNpbmNsdWRlICJIYW5kbGUuaCIKKyNpbmNs
dWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggMjQxOTY0NjEwYmI0NDI3YjE4NjM3MzM0
NmUyNGY1YTgyZDBjZGNjNC4uYWNlNmMxNDdlNDk3ZmVlMjAyOTJmYjU1Mzk3NjBkNWQ2OTgyOWNl
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAg
LTM0LDcgKzM0LDggQEAKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUg
IkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKLSNpbmNsdWRlICJKU0JvdW5k
RnVuY3Rpb24uaCIgCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNG
dW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUg
IkpTTm90QW5PYmplY3QuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtMTA5LDYgKzEx
MCwxNCBAQCB2b2lkIEpTRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgTmF0aXZlRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSwgaW50IGxlbmd0aAogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBEb250RGVsZXRlIHwgUmVhZE9u
bHkgfCBEb250RW51bSk7CiB9CiAKK0pTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0
aW5GdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNy
ZWF0ZSh2bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBmdW5jdGlvbi0+cHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZygmdm0sIGV4ZWN1dGFibGUt
Pm5hbWUoKS5zdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAg
ICBmdW5jdGlvbi0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVt
YmVyKGV4ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkg
fCBEb250RW51bSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uOworfQorCiBPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZSogSlNGdW5jdGlvbjo6Y3JlYXRlQWxsb2NhdGlvblByb2ZpbGUoRXhlY1N0YXRlKiBl
eGVjLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
QEAgLTE0Miw3ICsxNTEsNyBAQCBjb25zdCBTdHJpbmcgSlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERp
c3BsYXlOYW1lKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIGV4cGxpY2l0TmFtZTsK
ICAgICAKICAgICBjb25zdCBTdHJpbmcgYWN0dWFsTmFtZSA9IG5hbWUoZXhlYyk7Ci0gICAgaWYg
KCFhY3R1YWxOYW1lLmlzRW1wdHkoKSB8fCBpc0hvc3RGdW5jdGlvbigpKQorICAgIGlmICghYWN0
dWFsTmFtZS5pc0VtcHR5KCkgfHwgaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAg
cmV0dXJuIGFjdHVhbE5hbWU7CiAgICAgCiAgICAgcmV0dXJuIGpzRXhlY3V0YWJsZSgpLT5pbmZl
cnJlZE5hbWUoKS5zdHJpbmcoKTsKQEAgLTE1MCwxMCArMTU5LDIwIEBAIGNvbnN0IFN0cmluZyBK
U0Z1bmN0aW9uOjpjYWxjdWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQogCiBjb25z
dCBTb3VyY2VDb2RlKiBKU0Z1bmN0aW9uOjpzb3VyY2VDb2RlKCkgY29uc3QKIHsKLSAgICBpZiAo
aXNIb3N0RnVuY3Rpb24oKSkKKyAgICBpZiAoaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuICZqc0V4ZWN1dGFibGUoKS0+c291cmNlKCk7CiB9
CisgICAgCitib29sIEpTRnVuY3Rpb246OmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gaXNIb3N0RnVuY3Rpb24oKSB8fCBpc0J1aWx0aW5GdW5jdGlvbigpOwor
fQorCitib29sIEpTRnVuY3Rpb246OmlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gIWlzSG9zdEZ1bmN0aW9uKCkgJiYganNFeGVjdXRhYmxlKCktPmlzQnVpbHRpbkZ1bmN0
aW9uKCk7Cit9CiAKIHZvaWQgSlNGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewpAQCAtMjc3LDcgKzI5Niw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTRnVuY3Rpb246OmNhbGxlckdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1Zh
bHVlIHNsb3RCYXNlCiAgICAgaWYgKCFjYWxsZXIuaXNPYmplY3QoKSB8fCAhYXNPYmplY3QoY2Fs
bGVyKS0+aW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShjYWxsZXIpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpT
RnVuY3Rpb24qPihjYWxsZXIpOwotICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSB8
fCAhZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkKKyAgICBpZiAoZnVu
Y3Rpb24tPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgfHwgIWZ1bmN0aW9uLT5qc0V4ZWN1dGFi
bGUoKS0+aXNTdHJpY3RNb2RlKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2Fs
bGVyKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiRnVuY3Rpb24uY2FsbGVyIHVzZWQgdG8gcmV0cmlldmUgc3RyaWN0IGNhbGxl
ciIpKSk7CiB9CkBAIC0yOTksNyArMzE4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNGdW5jdGlvbjo6
bmFtZUdldHRlcihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBzbG90QmFzZSwgRW5jb2QKIGJv
b2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9i
amVjdCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgaWYgKHRo
aXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBCYXNl
OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90
KTsKIAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3Rv
dHlwZSkgewpAQCAtMzYxLDcgKzM4MCw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVy
dHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiB2b2lk
IEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVt
ZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICghdGhpc09iamVjdC0+aXNIb3N0RnVuY3Rp
b24oKSAmJiAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgeworICAgIGlmICgh
dGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSAmJiAobW9kZSA9PSBJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKSkgewogICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90eXBlIGhh
cyBiZWVuIHJlaWZpZWQuCiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QpOwog
ICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhp
c09iamVjdCwgZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgc2xvdCk7CkBA
IC0zNzcsNyArMzk2LDcgQEAgdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLAogdm9pZCBKU0Z1bmN0aW9u
OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1
bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKLSAgICBpZiAo
dGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSkgeworICAgIGlmICh0aGlzT2JqZWN0LT5pc0hv
c3RPckJ1aWx0aW5GdW5jdGlvbigpKSB7CiAgICAgICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTQyNSw3ICs0NDQsNyBAQCBib29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcAogYm9vbCBKU0Z1bmN0
aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICh0aGlzT2JqZWN0LT5p
c0hvc3RGdW5jdGlvbigpKQorICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5j
dGlvbigpKQogICAgICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKTsKIAogICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDdjZDE0YjhjMmQ4
MDBmNjFiZGMxMmVkZDJkZjA0ZDM1ZmEwNjE5YjYuLjhjZDk1MGM0YWI0MmU5MzUzYmQ3OGQ5NDI3
YmFlZDhjNjljZDIyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmgKQEAgLTY4LDYgKzY4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1
cm4gZnVuY3Rpb247CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHN0YXRpYyBKU0Z1bmN0
aW9uKiBjcmVhdGVCdWlsdGluRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0ds
b2JhbE9iamVjdCopOworICAgICAgICAKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0Nl
bGwqKTsKICAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBuYW1lKEV4
ZWNTdGF0ZSopOwpAQCAtMTQ1LDYgKzE0NywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIHJldHVybiBtX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDsKICAgICAgICAgfQogCisg
ICAgICAgIGJvb2wgaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSBjb25zdDsKKyAgICAgICAgYm9v
bCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBi
b29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CisKICAgICBwcm90ZWN0ZWQ6CiAg
ICAgICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dl
dE93blByb3BlcnR5U2xvdCB8IEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IE92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVy
ZUZsYWdzOwogCkBAIC0xNjksOCArMTc1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0
ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAg
Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUo
KSBjb25zdDsKLQogICAgICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgYXJndW1lbnRzR2V0dGVy
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1l
KTsKICAgICAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGNhbGxlckdldHRlcihFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CiAgICAgICAg
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKaW5kZXggZmU0ZTExNGFkYmMy
MzY3NGQzYjYwZTYxZjcxY2I3YTA2Yzk0Nzg0ZC4uNjlmMGQ0ZjM5NmVmOWMyZGE5ZTBiZjYwOGMy
NjQ0MTcxNzk5YmE1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uSW5saW5lcy5oCkBAIC01MywxNiArNTMsMjQgQEAgaW5saW5lIGJvb2wgSlNGdW5j
dGlvbjo6aXNIb3N0RnVuY3Rpb24oKSBjb25zdAogCiBpbmxpbmUgTmF0aXZlRnVuY3Rpb24gSlNG
dW5jdGlvbjo6bmF0aXZlRnVuY3Rpb24oKQogewotICAgIEFTU0VSVChpc0hvc3RGdW5jdGlvbigp
KTsKKyAgICBBU1NFUlQoaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSk7CiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PE5hdGl2ZUV4ZWN1dGFibGUqPihtX2V4ZWN1dGFibGUuZ2V0KCkpLT5mdW5jdGlv
bigpOwogfQogCiBpbmxpbmUgTmF0aXZlRnVuY3Rpb24gSlNGdW5jdGlvbjo6bmF0aXZlQ29uc3Ry
dWN0b3IoKQogewotICAgIEFTU0VSVChpc0hvc3RGdW5jdGlvbigpKTsKKyAgICBBU1NFUlQoaXNI
b3N0RnVuY3Rpb25Ob25JbmxpbmUoKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5hdGl2ZUV4
ZWN1dGFibGUqPihtX2V4ZWN1dGFibGUuZ2V0KCkpLT5jb25zdHJ1Y3RvcigpOwogfQogCitpbmxp
bmUgYm9vbCBpc0hvc3RGdW5jdGlvbihKU1ZhbHVlIHZhbHVlLCBOYXRpdmVGdW5jdGlvbiBuYXRp
dmVGdW5jdGlvbikKK3sKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0
aW9uKj4oZ2V0SlNGdW5jdGlvbih2YWx1ZSkpOworICAgIGlmICghZnVuY3Rpb24gfHwgIWZ1bmN0
aW9uLT5pc0hvc3RGdW5jdGlvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJu
IGZ1bmN0aW9uLT5uYXRpdmVGdW5jdGlvbigpID09IG5hdGl2ZUZ1bmN0aW9uOworfQorCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTRnVuY3Rpb25JbmxpbmVzX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3JJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCmluZGV4IDJkZGMyOWY3MTg5
N2JiNTFkMzkwYjA2YjI1YTczODMzODc0YmEwYzEuLmVkZDM0NDljZTQ3YjE3MzVlOGU1ZGJiMDVm
MzE4ZTNkNTVmM2JlNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rv
cklubGluZXMuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBKU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0NvbnN0cnVjdG9ySW5saW5lc19oCiAjZGVmaW5lIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3JJbmxpbmVzX2gKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAj
aW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAi
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lu
bGluZXMuaAppbmRleCA2ZGI4NjI3NGMzYjg3NGFhYWRlNTE1MTg5ODI2NzI2ZmIxMzZjMTczLi5m
MjRlYTczMDNkZjk2OWRiZDJkY2E1MmM4NmQxMWM3OGMwMGRiOWVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0lubGluZXMuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBKU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0lubGluZXNfaAogCiAjaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCisjaW5jbHVk
ZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJEZWZlckdDLmgiCiAjaW5jbHVkZSAi
RXJyb3IuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlw
ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oCmluZGV4IDQ1OTk5N2E0NjRiOTExOTQ3N2IxYmU4
NGUzNmM0ZTI5NjZhY2VmODUuLjhlNWZmODI3OTFlNmZmOGQ0ZWI5YzM3MzY5MWU0MzNlYjdkMTZh
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oCkBAIC0y
Niw2ICsyNiw3IEBACiAjaWZuZGVmIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5s
aW5lc19oCiAjZGVmaW5lIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lc19o
CiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRl
eCAyYzI3NGMxYTdkNDgxYzA3ZGYwZDJiZWIzYjI5MzFhMzkwN2E1ZTY2Li4wNmU1NGM4NGU3N2I5
MDMyYmFhMWQyZGY0N2ExYzcyZTgwYjdkZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0zNDYsNyArMzQ2LDggQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAKICAgICAvLyBDb25zdHJ1
Y3RvcnMKIAotICAgIEpTQ2VsbCogb2JqZWN0Q29uc3RydWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rv
cjo6Y3JlYXRlKHZtLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwor
ICAgIE9iamVjdENvbnN0cnVjdG9yKiBvYmplY3RDb25zdHJ1Y3RvciA9IE9iamVjdENvbnN0cnVj
dG9yOjpjcmVhdGUodm0sIE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7
CisgICAgbV9vYmplY3RDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIG9iamVjdENvbnN0cnVjdG9y
KTsKICAgICBKU0NlbGwqIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBGdW5jdGlvbkNvbnN0cnVjdG9y
OjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkp
OwogICAgIEpTQ2VsbCogYXJyYXlDb25zdHJ1Y3RvciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0
ZSh2bSwgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0
aW9uUHJvdG90eXBlLmdldCgpKSwgbV9hcnJheVByb3RvdHlwZS5nZXQoKSk7CiAKQEAgLTQzMiw3
ICs0MzMsMTAgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgR2xvYmFsUHJvcGVydHlJbmZvIHN0YXRpY0dsb2JhbHNbXSA9IHsKICAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPk5hTiwganNOYU4oKSwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+SW5maW5pdHksIGpzTnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91
YmxlPjo6aW5maW5pdHkoKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKLSAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdv
cmQsIGpzVW5kZWZpbmVkKCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KQorICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29y
ZCwganNVbmRlZmluZWQoKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29y
ZFByaXZhdGVOYW1lLCBqc1VuZGVmaW5lZCgpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFk
T25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5PYmpl
Y3RQcml2YXRlTmFtZSwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PlR5cGVFcnJvclByaXZhdGVOYW1lLCBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250
RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSkKICAgICB9OwogICAgIGFkZFN0YXRpY0dsb2Jh
bHMoc3RhdGljR2xvYmFscywgV1RGX0FSUkFZX0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CiAgICAg
CkBAIC02MDgsNiArNjEyLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX3N5bnRheEVycm9yQ29uc3RydWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX3R5cGVFcnJvckNvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9VUklFcnJvckNvbnN0cnVjdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9vYmplY3RDb25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fcHJvbWlzZUNvbnN0cnVjdG9yKTsKIAogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX2V2YWxGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBiMGNhZDNkYzU0NzBmN2M3YTBlNTcwYmRj
ZDJkZmZhODk1ZTJhYTBjLi4zYTYxNmM2ZjA1ZWRmMWQyOTVhZjg0NDFhYTY2NTAwZmI5MmE0YTQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
QEAgLTY3LDYgKzY3LDcgQEAgY2xhc3MgSlNTdGFjazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKIGNsYXNzIE1pY3JvdGFzazsKIGNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I7Citj
bGFzcyBPYmplY3RDb25zdHJ1Y3RvcjsKIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBQ
cm9ncmFtRXhlY3V0YWJsZTsKIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yOwpAQCAtMTU4LDYgKzE1
OSw3IEBAIHByb3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
cj4gbV90eXBlRXJyb3JDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvcj4gbV9VUklFcnJvckNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxKU1By
b21pc2VDb25zdHJ1Y3Rvcj4gbV9wcm9taXNlQ29uc3RydWN0b3I7CisgICAgV3JpdGVCYXJyaWVy
PE9iamVjdENvbnN0cnVjdG9yPiBtX29iamVjdENvbnN0cnVjdG9yOwogCiAgICAgV3JpdGVCYXJy
aWVyPEpTRnVuY3Rpb24+IG1fZXZhbEZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0
aW9uPiBtX2NhbGxGdW5jdGlvbjsKQEAgLTMzMCw2ICszMzIsNyBAQCBwdWJsaWM6CiAgICAgUmVn
RXhwQ29uc3RydWN0b3IqIHJlZ0V4cENvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWdF
eHBDb25zdHJ1Y3Rvci5nZXQoKTsgfQogCiAgICAgRXJyb3JDb25zdHJ1Y3RvciogZXJyb3JDb25z
dHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQorICAg
IE9iamVjdENvbnN0cnVjdG9yKiBvYmplY3RDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1f
b2JqZWN0Q29uc3RydWN0b3IuZ2V0KCk7IH0KICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBl
dmFsRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXZhbEVycm9yQ29uc3RydWN0
b3IuZ2V0KCk7IH0KICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiByYW5nZUVycm9yQ29uc3Ry
dWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQog
ICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHJlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IoKSBj
b25zdCB7IHJldHVybiBtX3JlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KQEAgLTU4
MSw3ICs1ODQsNyBAQCBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6aGFzT3duUHJvcGVydHlG
b3JXcml0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZQogCiBpbmxpbmUgYm9vbCBKU0ds
b2JhbE9iamVjdDo6c3ltYm9sVGFibGVIYXNQcm9wZXJ0eShQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxp
bmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBl
bnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAg
IHJldHVybiAhZW50cnkuaXNOdWxsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmNwcAppbmRleCAyYjY3YTFkOWVlZDg0ZTk5NTZmOGJiOTY4Mzg0Yzg0Y2Fl
YTUzY2ZmLi4yZWEyYzI0ZTZlYWI0Y2QwZDdmZmVkNjY1ZWY0YWU0MWFmMDc1MGYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC04Nyw3ICs4Nyw3IEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCBnZXRDbGFzc1Byb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBDbGFzc0luZm8qIGNsYXNzCiAgICAgICAgIGludCBoYXNoU2l6ZU1hc2sgPSB0YWJs
ZS0+Y29tcGFjdFNpemUgLSAxOwogICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gdGFi
bGUtPnRhYmxlOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8PSBoYXNoU2l6ZU1hc2s7ICsr
aSwgKytlbnRyeSkgewotICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkoKSAmJiAoIShlbnRyeS0+
YXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3Bl
cnRpZXMpKSAmJiAhKChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pICYmIGRpZFJlaWZ5
KSkKKyAgICAgICAgICAgIGlmIChlbnRyeS0+a2V5KCkgJiYgKCEoZW50cnktPmF0dHJpYnV0ZXMo
KSAmIERvbnRFbnVtKSB8fCAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgJiYg
ISgoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSAmJiBkaWRSZWlmeSkp
CiAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZW50cnktPmtleSgpKTsKICAgICAg
ICAgfQogICAgIH0KQEAgLTE2MTgsNyArMTYxOCw3IEBAIHZvaWQgSlNPYmplY3Q6OnJlaWZ5U3Rh
dGljRnVuY3Rpb25zRm9yRGVsZXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzKTsKICAgICAgICAgZm9yIChIYXNo
VGFibGU6OkNvbnN0SXRlcmF0b3IgaXRlciA9IGhhc2hUYWJsZS0+YmVnaW4odm0pOyBpdGVyICE9
IGhhc2hUYWJsZS0+ZW5kKHZtKTsgKytpdGVyKSB7Ci0gICAgICAgICAgICBpZiAoaXRlci0+YXR0
cmlidXRlcygpICYgRnVuY3Rpb24pCisgICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygp
ICYgQnVpbHRpbk9yRnVuY3Rpb24pCiAgICAgICAgICAgICAgICAgc2V0VXBTdGF0aWNGdW5jdGlv
blNsb3QoZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgKml0ZXIsIHRoaXMsIElkZW50aWZp
ZXIoJnZtLCBpdGVyLT5rZXkoKSksIHNsb3QpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjIzNiw2
ICsyMjM2LDE2IEBAIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uCiAgICAgcHV0RGlyZWN0KHZtLCBw
cm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsKIH0KIAordm9pZCBKU09iamVjdDo6
cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZnVuY3Rpb25FeGVjdXRhYmxlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQoreworICAgIFN0cmlu
Z0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOworICAgIGlmICghbmFtZSkK
KyAgICAgICAgbmFtZSA9IHZtLnByb3BlcnR5TmFtZXMtPmFub255bW91cy5pbXBsKCk7CisgICAg
QVNTRVJUKG5hbWUpOworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3Jl
YXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihm
dW5jdGlvbkV4ZWN1dGFibGUpLCBnbG9iYWxPYmplY3QpOworICAgIHB1dERpcmVjdCh2bSwgcHJv
cGVydHlOYW1lLCBmdW5jdGlvbiwgYXR0cmlidXRlcyk7Cit9CisKIHZvaWQgSlNPYmplY3Q6OnB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgdW5z
aWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRy
aW5zaWMgaW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIFN0cmluZ0ltcGwq
IG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmgKaW5kZXggMDJiMTM3YjM1MGMyZmE4MzI1YmQzYjk2NDcxMTJhYmU4
NzZmMzgzZi4uZGRlNTk3ZWZmYWVjMGYxYjhkNDRjMjkxMTk1MDMwMWYwNjAwN2U5OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC0yOSw3ICsyOSw2IEBACiAj
aW5jbHVkZSAiQnV0dGVyZmx5LmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAi
Q2xhc3NJbmZvLmgiCi0jaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJD
b3B5V3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSAiRGVmZXJHQy5oIgogI2luY2x1ZGUgIkhlYXAu
aCIKQEAgLTU4MSw2ICs1ODAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXREaXJlY3RVbmRlZmlu
ZWQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSB7IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNl
dFVuZGVmaW5lZCgpOyB9CiAKICAgICB2b2lkIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxl
bmd0aCwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7Cisg
ICAgdm9pZCBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNv
bnN0IFByb3BlcnR5TmFtZSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpOwogICAgIHZvaWQgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rp
b25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMp
OwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3Jp
cHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCmluZGV4IDQwMjYxOTYzM2ZhMDZm
ZDI1NGIzZjJhN2E4Y2M3MWU4MDdhYWY5MTEuLjE3ZDJhYjY1YTg4ZmZiMTNmYTlhNmM4ZjU4M2Nh
ODQ0YWY4MzIyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvbWlzZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJK
U1Byb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZUZ1bmN0aW9ucy5oIgogI2lu
Y2x1ZGUgIkpTUHJvbWlzZVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5o
IgogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk51bWJlck9iamVjdC5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKaW5kZXggNjhhOGJkODdkMzhh
ZGJiYjlkZDJhYzllYzRiNDlkNWVmNDU0OWQ1Ni4uMjM3YzQyYmIwZGEwZjE2Njc2ZWIxMWFkZTgx
ODBhN2IwNmQ5OGViNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKQEAgLTI5LDcgKzI5LDkgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAKKyNp
bmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0Lmgi
CisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
IAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKaW5kZXggZjQzNjJmZjM1NGVlNmE1MDIyMWJi
NzMxZDFhMjYxMWU2ZGQ2MWJjMC4uZDA3MzcxOWRlMTYwZDJmMjkyMTEwYTU5NmExMDVlMmZhMjEx
NWZmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaApAQCAtMzEsNyArMzEsNiBAQAogCiAjaW5jbHVkZSAiSlNPYmpl
Y3QuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNp
bmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1ZGUgPG1lbW9yeT4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXggMmIxY2RkZGM1ODQxZDYwZDE1
N2EyZTYxZjcwMmIwZWU1ZmExZDY3Ni4uZTM5MzQxNjBhZWE5MjZlZjE1OTMyZjg3OTBlMjRjNTJh
ZjAyZDM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC0y
NCw3ICsyNCw2IEBACiAjZGVmaW5lIEpTU3RyaW5nX2gKIAogI2luY2x1ZGUgIkNhbGxGcmFtZS5o
IgotI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIlByb3BlcnR5RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIlByb3BlcnR5U2xv
dC5oIgpAQCAtNDcyLDMzICs0NzEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgSlNT
dHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYg
cykgeyByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKCZleGVjLT52bSgpLCBzKTsgfQogICAgIGlu
bGluZSBKU1N0cmluZyoganNPd25lZFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmlu
ZyYgcykgeyByZXR1cm4ganNPd25lZFN0cmluZygmZXhlYy0+dm0oKSwgcyk7IH0KIAotICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQot
ICAgIHsKLSAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
bGVuZ3RoKSB7Ci0gICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnRFbnVtIHwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5LCBqc051bWJlcihtX2xlbmd0aCkpOwotICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1l
LmFzSW5kZXgoKTsKLSAgICAgICAgaWYgKGkgPCBtX2xlbmd0aCkgewotICAgICAgICAgICAgQVNT
RVJUKGkgIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTsgLy8gTm8gbmVlZCBmb3IgYW4gZXhw
bGljaXQgY2hlY2ssIHRoZSBhYm92ZSB0ZXN0IHdvdWxkIGFsd2F5cyBmYWlsIQotICAgICAgICAg
ICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4KGV4
ZWMsIGkpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAgICAgICAgIAotICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi0gICAgewotICAgICAgICBpZiAo
cHJvcGVydHlOYW1lIDwgbV9sZW5ndGgpIHsKLSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhp
cywgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBnZXRJbmRleChleGVjLCBwcm9wZXJ0eU5hbWUpKTsK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLQogICAgIGlubGluZSBib29sIGlzSlNTdHJpbmcoSlNWYWx1ZSB2KSB7IHJl
dHVybiB2LmlzQ2VsbCgpICYmIHYuYXNDZWxsKCktPmNsYXNzSW5mbygpID09IEpTU3RyaW5nOjpp
bmZvKCk7IH0KIAogICAgIC8vIC0tLSBKU1ZhbHVlIGlubGluZXMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQpAQCAtNTI4LDMyICs1MDAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
cmV0dXJuIHRvV1RGU3RyaW5nU2xvd0Nhc2UoZXhlYyk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lO
TElORSBTdHJpbmcgaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKGNvbnN0IEpTVmFsdWUm
IHZhbHVlLCBFeGVjU3RhdGUqIGV4ZWMpCi0gICAgewotICAgICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwotICAgICAgICBpZiAodmFsdWUuaXNJbnQzMigpKQotICAgICAgICAgICAgcmV0dXJuIHZt
Lm51bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZS5hc0ludDMyKCkpOwotICAgICAgICBpZiAodmFsdWUu
aXNEb3VibGUoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5udW1lcmljU3RyaW5ncy5hZGQodmFs
dWUuYXNEb3VibGUoKSk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc1RydWUoKSkKLSAgICAgICAgICAg
IHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT50cnVlS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAg
aWYgKHZhbHVlLmlzRmFsc2UoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVz
LT5mYWxzZUtleXdvcmQuc3RyaW5nKCk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc051bGwoKSkKLSAg
ICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5udWxsS2V5d29yZC5zdHJpbmcoKTsK
LSAgICAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0u
cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgcmV0dXJu
IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNf
SU5MSU5FIFN0cmluZyBKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZShFeGVjU3RhdGUqIGV4ZWMp
IGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoaXNTdHJpbmcoKSkKLSAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxKU1N0cmluZyo+KGFzQ2VsbCgpKS0+dmFsdWUoZXhlYyk7Ci0KLSAgICAg
ICAgcmV0dXJuIGlubGluZUpTVmFsdWVOb3RTdHJpbmd0b1N0cmluZygqdGhpcywgZXhlYyk7Ci0g
ICAgfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTU3RyaW5nX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzc4YzA1ZmM4MGQ4OGU4NTM3YzlkMmE1ZWFiOWZmMGJhOWI2MGE3NQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCkBA
IC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEpTU3RyaW5nSW5saW5lc19oCisjZGVmaW5lIEpTU3RyaW5nSW5s
aW5lc19oCisKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgorI2luY2x1ZGUgIkpTQ0pT
VmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK0FMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBz
bG90KQoreworICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxl
bmd0aCkgeworICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnRFbnVtIHwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5LCBqc051bWJlcihtX2xlbmd0aCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgCisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7Cisg
ICAgaWYgKGkgPCBtX2xlbmd0aCkgeworICAgICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6
Ok5vdEFuSW5kZXgpOyAvLyBObyBuZWVkIGZvciBhbiBleHBsaWNpdCBjaGVjaywgdGhlIGFib3Zl
IHRlc3Qgd291bGQgYWx3YXlzIGZhaWwhCisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5LCBnZXRJbmRleChleGVjLCBpKSk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0FMV0FZU19JTkxJTkUg
Ym9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgaWYgKHByb3Bl
cnR5TmFtZSA8IG1fbGVuZ3RoKSB7CisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERl
bGV0ZSB8IFJlYWRPbmx5LCBnZXRJbmRleChleGVjLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKworQUxXQVlT
X0lOTElORSBTdHJpbmcgaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKGNvbnN0IEpTVmFs
dWUmIHZhbHVlLCBFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBpZiAodmFsdWUuaXNJbnQzMigpKQorICAgICAgICByZXR1cm4gdm0ubnVtZXJpY1N0cmlu
Z3MuYWRkKHZhbHVlLmFzSW50MzIoKSk7CisgICAgaWYgKHZhbHVlLmlzRG91YmxlKCkpCisgICAg
ICAgIHJldHVybiB2bS5udW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNEb3VibGUoKSk7CisgICAg
aWYgKHZhbHVlLmlzVHJ1ZSgpKQorICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+dHJ1
ZUtleXdvcmQuc3RyaW5nKCk7CisgICAgaWYgKHZhbHVlLmlzRmFsc2UoKSkKKyAgICAgICAgcmV0
dXJuIHZtLnByb3BlcnR5TmFtZXMtPmZhbHNlS2V5d29yZC5zdHJpbmcoKTsKKyAgICBpZiAodmFs
dWUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5udWxsS2V5d29y
ZC5zdHJpbmcoKTsKKyAgICBpZiAodmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJu
IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQuc3RyaW5nKCk7CisgICAgcmV0dXJu
IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKK30KKyAgICAKK0FMV0FZU19JTkxJ
TkUgU3RyaW5nIEpTVmFsdWU6OnRvV1RGU3RyaW5nSW5saW5lKEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QKK3sKKyAgICBpZiAoaXNTdHJpbmcoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpT
U3RyaW5nKj4oYXNDZWxsKCkpLT52YWx1ZShleGVjKTsKKyAgICAKKyAgICByZXR1cm4gaW5saW5l
SlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKCp0aGlzLCBleGVjKTsKK30KKworfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9i
amVjdC5jcHAKaW5kZXggMmFjMjUyNGM1ZGZkYTNkMTIyNDlkNzc5MGFkYzMxMjllM2MwZTg3MS4u
ZmJjOGI4OTVlYWU2YWY3ODg4MzliZWI1ZTgzZDdiNmI5NzkyOGZhZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKQEAg
LTY0LDYgKzY0LDggQEAgdm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpnZXRPd25Ob25JbmRleFBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXQKICAgICAgICAgQ29uY3VycmVu
dEpJVExvY2tlciBsb2NrZXIodGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+bV9sb2NrKTsKICAg
ICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgZW5kID0gdGhpc09iamVjdC0+c3ltYm9s
VGFibGUoKS0+ZW5kKGxvY2tlcik7CiAgICAgICAgIGZvciAoU3ltYm9sVGFibGU6Ok1hcDo6aXRl
cmF0b3IgaXQgPSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5iZWdpbihsb2NrZXIpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIGlmIChpdC0+a2V5LT5pc0VtcHR5VW5pcXVlKCkp
CisgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoIShpdC0+dmFsdWUu
Z2V0QXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IChtb2RlID09IEluY2x1ZGVEb250RW51bVBy
b3BlcnRpZXMpKQogICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIo
ZXhlYywgaXQtPmtleS5nZXQoKSkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKaW5kZXggYjViMjBhODQ1YjZh
YjY0NDI0YjM3ZTMxYjI3NzRlZjkwNTM1M2Y3Zi4uZDAzYjI0NTExYzJkZTE5NTlmYjVmNTZkNjQ5
YzY0ZDBlZmUwNjg1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTeW1ib2xUYWJsZU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3ltYm9sVGFibGVPYmplY3QuaApAQCAtNzIsNyArNzIsNyBAQCBpbmxpbmUgYm9vbCBzeW1i
b2xUYWJsZUdldCgKIHsKICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5z
eW1ib2xUYWJsZSgpOwogICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxl
Lm1fbG9jayk7Ci0gICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRh
YmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xU
YWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3Bl
cnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5
ID0gaXRlci0+dmFsdWU7CkBAIC04Nyw3ICs4Nyw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxl
R2V0KAogewogICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRh
YmxlKCk7CiAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2Nr
KTsKLSAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmlu
ZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlOjpN
YXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1l
LnVpZCgpKTsKICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVy
LT52YWx1ZTsKQEAgLTEwNCw3ICsxMDQsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgK
IHsKICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgp
OwogICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0g
ICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9j
a2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZTo6TWFwOjpp
dGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQo
KSk7CiAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+dmFs
dWU7CkBAIC0xMjYsNyArMTI2LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoCiAgICAg
ewogICAgICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJs
ZSgpOwogICAgICAgICBHQ1NhZmVDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJs
ZS5tX2xvY2ssIGV4ZWMtPnZtKCkuaGVhcCk7Ci0gICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0
ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1Ymxp
Y05hbWUoKSk7CisgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1i
b2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICAgICAgaWYgKGl0
ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIGJvb2wgd2FzRmF0OwpAQCAtMTU5LDcgKzE1OSw3IEBAIGlubGluZSBib29sIHN5
bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoCiAgICAgewogICAgICAgICBTeW1ib2xUYWJsZSYg
c3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBDb25jdXJyZW50
SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2spOwotICAgICAgICBTeW1ib2xUYWJs
ZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5
TmFtZS5wdWJsaWNOYW1lKCkpOworICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBp
dGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAg
ICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5JiBlbnRyeSA9IGl0ZXItPnZhbHVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKaW5kZXggYTgwNmRkMDUy
YTBjYmVlNGNhYzJjYWE2ZTA4YzY3MTYwMDVjMjcwYy4uYTk3NjUyMDFiOWY1MTg2NDE0MjNkZGUw
ZmUwZTJlNTFhOGNlNzNiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTG9va3VwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAu
Y3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgSGFzaFRhYmxlOjpkZWxldGVUYWJsZSgpIGNvbnN0
CiBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFz
aEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIHRoaXNPYmosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBBU1NFUlQodGhpc09iai0+Z2xvYmFsT2Jq
ZWN0KCkpOwotICAgIEFTU0VSVChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pOworICAg
IEFTU0VSVChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pOwogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICBQcm9wZXJ0
eU9mZnNldCBvZmZzZXQgPSB0aGlzT2JqLT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFt
ZSwgYXR0cmlidXRlcyk7CkBAIC03OSw5ICs3OSwxMyBAQCBib29sIHNldFVwU3RhdGljRnVuY3Rp
b25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3Qq
CiAgICAgICAgIGlmICh0aGlzT2JqLT5zdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgICAgIHRoaXNPYmotPnB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uKAotICAgICAgICAgICAgdm0sIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBwcm9w
ZXJ0eU5hbWUsIGVudHJ5LT5mdW5jdGlvbkxlbmd0aCgpLAotICAgICAgICAgICAgZW50cnktPmZ1
bmN0aW9uKCksIGVudHJ5LT5pbnRyaW5zaWMoKSwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAg
ICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbikKKyAgICAgICAgICAgIHRoaXNP
YmotPnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbih2bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCks
IHByb3BlcnR5TmFtZSwgZW50cnktPmJ1aWx0aW5HZW5lcmF0b3IoKSh2bSksIGVudHJ5LT5hdHRy
aWJ1dGVzKCkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uKAorICAgICAgICAgICAgICAgIHZtLCB0aGlzT2JqLT5nbG9iYWxPYmpl
Y3QoKSwgcHJvcGVydHlOYW1lLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSwKKyAgICAgICAgICAg
ICAgICBlbnRyeS0+ZnVuY3Rpb24oKSwgZW50cnktPmludHJpbnNpYygpLCBlbnRyeS0+YXR0cmli
dXRlcygpKTsKKyAgICAgICAgfQogICAgICAgICBvZmZzZXQgPSB0aGlzT2JqLT5nZXREaXJlY3RP
ZmZzZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CiAgICAgICAgIEFTU0VSVChpc1Zh
bGlkT2Zmc2V0KG9mZnNldCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0xvb2t1cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9v
a3VwLmgKaW5kZXggYmRlODNkNGE2ZmMzNTU3Nzg1MGUzMWU4OGJjMzlmZDA1ZjdiY2U1Mi4uZGJh
Mzg5ZTllMjQzZGQwZWNiMmJhOThmMzk0ZDQwNzlmOWRlYTkzNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTG9va3VwLmgKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgLy8gaWUuIHR5cGVkZWYgSlNWYWx1ZSAoKkdldEZ1bmN0aW9uKShFeGVjU3RhdGUqLCBKU09i
amVjdCogYmFzZU9iamVjdCkKICAgICB0eXBlZGVmIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
IEdldEZ1bmN0aW9uOwogICAgIHR5cGVkZWYgUHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmMg
UHV0RnVuY3Rpb247CisgICAgdHlwZWRlZiBGdW5jdGlvbkV4ZWN1dGFibGUqICgqQnVpbHRpbkdl
bmVyYXRvcikoVk0mKTsKIAogICAgIGNsYXNzIEhhc2hFbnRyeSB7CiAgICAgICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjgsMTEgKzY5LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgcmV0dXJuIG1faW50cmluc2ljOwogICAgICAgICB9CiAKKyAgICAgICAgQnVpbHRp
bkdlbmVyYXRvciBidWlsdGluR2VuZXJhdG9yKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVz
ICYgQnVpbHRpbik7IHJldHVybiBtX3UuYnVpbHRpbkdlbmVyYXRvci5nZW5lcmF0b3JWYWx1ZTsg
fQogICAgICAgICBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0
cmlidXRlcyAmIEZ1bmN0aW9uKTsgcmV0dXJuIG1fdS5mdW5jdGlvbi5mdW5jdGlvblZhbHVlOyB9
CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgZnVuY3Rpb25MZW5ndGgoKSBjb25zdCB7IEFTU0VSVCht
X2F0dHJpYnV0ZXMgJiBGdW5jdGlvbik7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
PihtX3UuZnVuY3Rpb24ubGVuZ3RoKTsgfQogCi0gICAgICAgIEdldEZ1bmN0aW9uIHByb3BlcnR5
R2V0dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBGdW5jdGlvbikpOyByZXR1
cm4gbV91LnByb3BlcnR5LmdldDsgfQotICAgICAgICBQdXRGdW5jdGlvbiBwcm9wZXJ0eVB1dHRl
cigpIGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pKTsgcmV0dXJuIG1f
dS5wcm9wZXJ0eS5wdXQ7IH0KKyAgICAgICAgR2V0RnVuY3Rpb24gcHJvcGVydHlHZXR0ZXIoKSBj
b25zdCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEJ1aWx0aW5PckZ1bmN0aW9uKSk7IHJldHVy
biBtX3UucHJvcGVydHkuZ2V0OyB9CisgICAgICAgIFB1dEZ1bmN0aW9uIHByb3BlcnR5UHV0dGVy
KCkgY29uc3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBCdWlsdGluT3JGdW5jdGlvbikpOyBy
ZXR1cm4gbV91LnByb3BlcnR5LnB1dDsgfQogCiAgICAgICAgIGludHB0cl90IGxleGVyVmFsdWUo
KSBjb25zdCB7IEFTU0VSVCghbV9hdHRyaWJ1dGVzKTsgcmV0dXJuIG1fdS5sZXhlci52YWx1ZTsg
fQogCkBAIC05NCw2ICs5NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBp
bnRwdHJfdCBsZW5ndGg7IC8vIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGZ1bmN0aW9uCiAgICAg
ICAgICAgICB9IGZ1bmN0aW9uOwogICAgICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAg
ICBCdWlsdGluR2VuZXJhdG9yIGdlbmVyYXRvclZhbHVlOworICAgICAgICAgICAgICAgIGludHB0
cl90IHVudXNlZDsKKyAgICAgICAgICAgIH0gYnVpbHRpbkdlbmVyYXRvcjsKKyAgICAgICAgICAg
IHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgR2V0RnVuY3Rpb24gZ2V0OwogICAgICAgICAgICAg
ICAgIFB1dEZ1bmN0aW9uIHB1dDsKICAgICAgICAgICAgIH0gcHJvcGVydHk7CkBAIC0yMDksNyAr
MjE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgQUxXQVlTX0lO
TElORSBjb25zdCBIYXNoRW50cnkqIGVudHJ5KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNv
bnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cmluZ0ltcGwqIGltcGwgPSBwcm9wZXJ0eU5h
bWUucHVibGljTmFtZSgpOworICAgICAgICAgICAgU3RyaW5nSW1wbCogaW1wbCA9IHByb3BlcnR5
TmFtZS51aWQoKTsKICAgICAgICAgICAgIGlmICghaW1wbCkKICAgICAgICAgICAgICAgICByZXR1
cm4gMDsKICAgICAgICAgCkBAIC0yNDksNyArMjU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGlmICghZW50cnkpIC8vIG5vdCBmb3VuZCwgZm9yd2FyZCB0byBwYXJlbnQKICAgICAgICAg
ICAgIHJldHVybiBQYXJlbnRJbXA6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogCi0gICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYg
RnVuY3Rpb24pCisgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVu
Y3Rpb24pCiAgICAgICAgICAgICByZXR1cm4gc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoZXhlYywg
ZW50cnksIHRoaXNPYmosIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICAgICAgc2xvdC5zZXRD
YWNoZWFibGVDdXN0b20odGhpc09iaiwgZW50cnktPmF0dHJpYnV0ZXMoKSwgZW50cnktPnByb3Bl
cnR5R2V0dGVyKCkpOwpAQCAtMjg2LDcgKzI5Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBpZiAoIWVudHJ5KSAvLyBub3QgZm91bmQsIGZvcndhcmQgdG8gcGFyZW50CiAgICAgICAgICAg
ICByZXR1cm4gUGFyZW50SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iaiwgZXhlYywgcHJv
cGVydHlOYW1lLCBzbG90KTsKIAotICAgICAgICBBU1NFUlQoIShlbnRyeS0+YXR0cmlidXRlcygp
ICYgRnVuY3Rpb24pKTsKKyAgICAgICAgQVNTRVJUKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1
aWx0aW5PckZ1bmN0aW9uKSk7CiAKICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhp
c09iaiwgZW50cnktPmF0dHJpYnV0ZXMoKSwgZW50cnktPnByb3BlcnR5R2V0dGVyKCkpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI5NSw3ICszMDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBpbmxpbmUgdm9pZCBwdXRFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSog
ZW50cnksIEpTT2JqZWN0KiBiYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiAgICAgewogICAgICAgICAvLyBJZiB0aGlz
IGlzIGEgZnVuY3Rpb24gcHV0IGl0IGFzIGFuIG92ZXJyaWRlIHByb3BlcnR5LgotICAgICAgICBp
ZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKSB7CisgICAgICAgIGlmIChlbnRyeS0+
YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pIHsKICAgICAgICAgICAgIGlmIChKU09i
amVjdCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPihzbG90LnRoaXNWYWx1
ZSgpKSkKICAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwg
cHJvcGVydHlOYW1lLCB2YWx1ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIShlbnRyeS0+YXR0cmli
dXRlcygpICYgUmVhZE9ubHkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IGQ1ZTcyOGMyY2QxMDIw
YTQ3ZTRhZGNkNjQ5Y2QxZmZmYTVjZDZhODMuLmRjYTJmZDhkMWY2YWMyM2I4ZmY4MTdjYmIxOGZh
YWU3YmNkNTk3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05h
dGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCkBAIC0zOCw2ICszOCwyMCBAQCBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiB7CiB9CiAKK3ZvaWQgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtLCBuYW1lKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7Cisg
ICAgCisgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJv
dG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1l
LCB0aGlzKTsKKyAgICAKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0
aCwganNOdW1iZXIoMSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsgLy8gRUNN
QSAxNS4xMS43LjUKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgcHJvdG90eXBlLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgbV9l
cnJvclN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEVycm9ySW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUpKTsKKyAgICBBU1NFUlQobV9lcnJvclN0cnVj
dHVyZSk7CisgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOworfQorCiB2
b2lkIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiB0aGlz
T2JqZWN0ID0ganNDYXN0PE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqPihjZWxsKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3Iu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3Iu
aAppbmRleCA3NDBkM2Y5MzMyOTJmZDJhY2NiNGI5OTAzNDQzMTJiOTMxOWFlMTEwLi40MzhhM2Fm
YjliYjBmNjQxMmM5NzkzMjIzMGM4ODcxMDk2MWY1NDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCkBAIC01MSwx
OSArNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RydWN0dXJlKiBlcnJvclN0cnVj
dHVyZSgpIHsgcmV0dXJuIG1fZXJyb3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KIAogICAgIHByb3RlY3Rl
ZDoKLSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcm
IG5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBu
YW1lKTsKLSAgICAgICAgICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKLQotICAgICAgICAg
ICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1lLCB0aGlz
KTsKLQotICAgICAgICAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgs
IGpzTnVtYmVyKDEpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7IC8vIEVDTUEg
MTUuMTEuNy41Ci0gICAgICAgICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSwgcHJvdG90eXBlLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Ci0g
ICAgICAgICAgICBtX2Vycm9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgRXJyb3JJbnN0YW5jZTo6
Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSkpOwotICAgICAgICAg
ICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUpOwotICAgICAgICAgICAgQVNTRVJUKG1fZXJyb3JT
dHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwotICAgICAgICB9CisgICAgICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJl
LCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgTmF0aXZlRXJy
b3JDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eVNsb3QuaAppbmRleCBkOTM4ZmEzMTY0NWFmMjZiNzU4NTE0ZGI2YjI0
NzhmMTgzZTllZWUxLi5jZmU5YzRkMzJiYTc2OGM3NGU0ZmZiYjE5MTM1Mjc5ZGViZjExNzY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaApAQCAtNDIs
NiArNDIsOCBAQCBlbnVtIEF0dHJpYnV0ZSB7CiAgICAgRnVuY3Rpb24gICAgID0gMSA8PCA0LCAg
Ly8gcHJvcGVydHkgaXMgYSBmdW5jdGlvbiAtIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxl
cwogICAgIEFjY2Vzc29yICAgICA9IDEgPDwgNSwgIC8vIHByb3BlcnR5IGlzIGEgZ2V0dGVyL3Nl
dHRlcgogICAgIEN1c3RvbUFjY2Vzc29yID0gMSA8PCA2LAorICAgIEJ1aWx0aW4gICAgICAgICA9
IDEgPDwgNywgLy8gcHJvcGVydHkgaXMgYSBidWlsdGluIGZ1bmN0aW9uIC0gb25seSB1c2VkIGJ5
IHN0YXRpYyBoYXNodGFibGVzCisgICAgQnVpbHRpbk9yRnVuY3Rpb24gPSBCdWlsdGluIHwgRnVu
Y3Rpb24sIC8vIGhlbHBlciBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKIH07CiAKIGNs
YXNzIFByb3BlcnR5U2xvdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYmM1MTZiMDZkNjY1MWYwZTY4MmEyMDE3YmRm
OGIwM2JhYmVkNmVhMi4uMmMyNDM0Yjg3ZDA0Zjc0OWNiMTJlNjAyYWI1NDc4NDk0NmE5MWYxZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVj
dG9yLmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgi
CiAKICNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJSZWdFeHBNYXRjaGVzQXJyYXkuaCIKICNp
bmNsdWRlICJSZWdFeHBQcm90b3R5cGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCmluZGV4IDg5ZDdhYzFiOGNiZjFkYjBlMTI2ZjFm
Yzc5NmRmZDVmYzg0YjJlNTkuLjlkZGEwYmE4ZGUxNDEyZWFmNGQyOTFkY2YwYzZiMzk2NTdmYjY3
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90
eXBlLmNwcApAQCAtMjQsNyArMjQsNyBAQAogI2luY2x1ZGUgIkFycmF5UHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCi0jaW5jbHVkZSAiSlNDSlNW
YWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAppbmRl
eCBiMjAzODg4ZDNjMTZjZGEzYzAwMzUwNjIwOGFlMDg2OTVkYzVkYWFhLi5kMDI2NmE1OWVmM2Y1
NWFhMzY5NGY1Zjc0MThjZjc4ZTBhZTBkOGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVk
ZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiSlNTZXQuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJNYXBE
YXRhLmgiCiAjaW5jbHVkZSAiU2V0UHJvdG90eXBlLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCmluZGV4IDQ0MGE2MDk0MjE5MzM4MDMxZTU5
MjdhZjQ2YjI4OWRiY2ZiNWE3MjguLjgwZTdlYWE4YzQ5MWNiNmQ1NGE4MzI0Y2U2NDdhNmNkYjdl
ODg3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0
LmNwcApAQCAtMjIsNyArMjIsOSBAQAogI2luY2x1ZGUgIlN0cmluZ09iamVjdC5oIgogCiAjaW5j
bHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDA0MjkxZjdlOGRk
MjRlOGFiMzNkNzVhZjFkYTQ1NjhmMmJjOTllNjguLjFlY2FiODVjMGJkYjI4Njk4OTQ1NzdhNzQx
MjU0ZTM2NDQxNDlkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmNwcApAQCAtMjcsMTIgKzI3LDE4IEBACiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAKICNp
bmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2lu
Y2x1ZGUgIkR1bXBDb250ZXh0LmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2lu
Y2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgorI2luY2x1ZGUg
IlByb3BlcnR5TWFwSGFzaFRhYmxlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIK
KyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFp
bi5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVS
YXJlRGF0YUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCmluZGV4IDUyY2NmNDIzYTEwNDNlMTA3OWYyZDhiMTg5NDIxOTg5MGU3MWYyYmMuLjAy
MDY5NWZhYzgzZWQ0ZTUxODViNzBlNjk2OTk2M2EyZGU5YTM2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJBcmdMaXN0Lmgi
CiAjaW5jbHVkZSAiQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuaCIKICNpbmNsdWRlICJBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJs
ZXMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2Nr
LmgiCiAjaW5jbHVkZSAiQ29kZUNhY2hlLmgiCkBAIC01NSw3ICs1Niw5IEBACiAjaW5jbHVkZSAi
SlNBUElWYWx1ZVdyYXBwZXIuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRl
ICJKU0FycmF5LmgiCi0jaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFs
dWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVu
Y3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNp
bmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgpAQCAtNjgsMTMgKzcx
LDE2IEBACiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVkZSAiTWFwRGF0YS5oIgogI2luY2x1
ZGUgIk5vZGVzLmgiCisjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiUGFyc2VyQXJlbmEu
aCIKKyNpbmNsdWRlICJQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgogI2luY2x1ZGUgIlJlZ0V4cENh
Y2hlLmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2ltcGxlVHlwZWRB
cnJheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTb3VyY2VQcm92aWRlckNhY2hlLmgiCiAjaW5j
bHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgi
CisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSAiV2Vha01hcERhdGEuaCIKICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lE
Lmg+CkBAIC0yMjYsNiArMjMyLDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhl
YXBUeXBlKQogICAgICwgbV9pbkRlZmluZU93blByb3BlcnR5KGZhbHNlKQogICAgICwgbV9jb2Rl
Q2FjaGUoQ29kZUNhY2hlOjpjcmVhdGUoKSkKICAgICAsIG1fZW5hYmxlZFByb2ZpbGVyKG51bGxw
dHIpCisgICAgLCBtX2J1aWx0aW5FeGVjdXRhYmxlcyhCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0
ZSgqdGhpcykpCiB7CiAgICAgaW50ZXJwcmV0ZXIgPSBuZXcgSW50ZXJwcmV0ZXIoKnRoaXMpOwog
ICAgIFN0YWNrQm91bmRzIHN0YWNrID0gd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA1YTg0MTA1ZWFmYjdhYmJhNWZhNDMxZWVlZGQ1NWQ3
YTg5ZjU1Y2UyLi42OTU4YWMzOTNiMWFlZmMwYmVmYmY2ZTRlYjhiNjgyNWNmN2M5YTBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJQ
cml2YXRlTmFtZS5oIgogI2luY2x1ZGUgIlByb3RvdHlwZU1hcC5oIgogI2luY2x1ZGUgIlNtYWxs
U3RyaW5ncy5oIgorI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTdHJvbmcuaCIK
ICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKICNpbmNsdWRlICJUeXBlZEFycmF5Q29udHJv
bGxlci5oIgpAQCAtNjksNiArNzAsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBB
cml0eUNoZWNrRmFpbFJldHVyblRodW5rczsKKyAgICBjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXM7
CiAgICAgY2xhc3MgQ29kZUJsb2NrOwogICAgIGNsYXNzIENvZGVDYWNoZTsKICAgICBjbGFzcyBD
b21tb25JZGVudGlmaWVyczsKQEAgLTQ5Nyw2ICs0OTksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdm9pZCByZWdpc3RlcldhdGNocG9pbnRGb3JJbXB1cmVQcm9wZXJ0eShjb25zdCBJZGVu
dGlmaWVyJiwgV2F0Y2hwb2ludCopOwogICAgICAgICAvLyBGSVhNRTogVXNlIEF0b21pY1N0cmlu
ZyBvbmNlIGl0IGdvdCBtZXJnZWQgd2l0aCBJZGVudGlmaWVyLgogICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGFkZEltcHVyZVByb3BlcnR5KGNvbnN0IFN0cmluZyYpOworICAgICAgICAK
KyAgICAgICAgQnVpbHRpbkV4ZWN1dGFibGVzKiBidWlsdGluRXhlY3V0YWJsZXMoKSB7IHJldHVy
biBtX2J1aWx0aW5FeGVjdXRhYmxlcy5nZXQoKTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKQEAgLTUzNywxMCArNTQxLDkgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWUgbV9leGNlcHRpb247CiAgICAgICAgIGJv
b2wgbV9pbkRlZmluZU93blByb3BlcnR5OwogICAgICAgICBPd25QdHI8Q29kZUNhY2hlPiBtX2Nv
ZGVDYWNoZTsKLSAgICAgICAgUmVmQ291bnRlZEFycmF5PFN0YWNrRnJhbWU+IG1fZXhjZXB0aW9u
U3RhY2s7Ci0KICAgICAgICAgTGVnYWN5UHJvZmlsZXIqIG1fZW5hYmxlZFByb2ZpbGVyOwotCisg
ICAgICAgIE93blB0cjxCdWlsdGluRXhlY3V0YWJsZXM+IG1fYnVpbHRpbkV4ZWN1dGFibGVzOwor
ICAgICAgICBSZWZDb3VudGVkQXJyYXk8U3RhY2tGcmFtZT4gbV9leGNlcHRpb25TdGFjazsKICAg
ICAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxXYXRjaHBvaW50U2V0Pj4gbV9pbXB1cmVQcm9w
ZXJ0eVdhdGNocG9pbnRTZXRzOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjcwZmNjMzg0ZThlZGZjMzRiMTQwODNiODY1ZDM3MzgyMGY0MTY1YzQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5n
SW5saW5lcy5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9KU1N0cmluZ0lu
bGluZXNfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9KU1N0cmluZ0lubGluZXNfaAorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nSW5saW5lcy5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxh
Y2VtZW50LmNwcAppbmRleCAyZWRkY2RiYjlmMDA2Y2E3NjI2NjUwYjQyMDI3ODYyNmI5MjYxNDE3
Li4zYzRlMGQ3YmJiMzFjYWIxMmI1ZTZjOTc1Yzc0ZDNmNDg0ZTljYjE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5S
ZXBsYWNlbWVudC5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZUlubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU1N0cmluZ0lubGluZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwCmluZGV4IDU2NDlj
ODVjYTA5NTg3NzQ4YTNkYTA2Y2RkZDBjYTk5OWU1MGI4ZTcuLjNmNGQ4ZWZhZWI1N2YzMzAwM2U3
M2E3ZTc4NDJlNDJjNzNjZTY0OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSURCQW55Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0lEQkFueUN1c3RvbS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJKU0lEQk9iamVj
dFN0b3JlLmgiCiAjaW5jbHVkZSAiSlNJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKaW5kZXggOWVhZTc1NjljNzA2MDNhNGZlZDBh
ZjE0YzRmODcxOGNkZTY0YTZlMS4uZjQ5ZGZlOTBiNGU4MmQzOWVkY2JmOWJhMjlmMmFlNzk5YzBk
ZGYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFz
ZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFz
ZUN1c3RvbS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5o
IgogI2luY2x1ZGUgIkpTSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9y
Lmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNT
dHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAKaW5kZXgg
NzRmZDM1NGIyODYwN2NmNzgyMmY4MDUzNDc5NzBmNWQ3YWM4YzgzMi4uNTQzNGIzYjdkNmM1NmVj
YjBhMDNhMjc5NGM2NzM2YTlhZGZiNzBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAK
ICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIkpTSURCSW5kZXguaCIKICNp
bmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgor
I2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA5ZDA2NmY1ZTFhMDA0ZmJkNGQ1NzQwZTQ5N2M4MjhjOWJlOGY5MGRhLi45
MDkyZTE3MDlkNmZmMjZkYWU2ZjI5MjNjNzUxY2I2OGFlMzM2MDVlIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjIgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAg
ICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBKUworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlZCB0aGUg
dGVzdCByZXN1bHRzIGZvciBuZXcgZXJyb3IgbWVzc2FnZXMgKG5vdyB0aGF0IHRoZXkncmUKKyAg
ICAgICAgYWN0dWFsbHkgaGVscGZ1bCksIGFuZCBhZGRlZCBhIGpzLXJlZ3Jlc3MgdGVzdCB0byB0
cmFjayBwZXJmb3JtYW5jZS4KKworICAgICAgICAqIGpzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBqcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGpzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnku
aHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyYXktcHJv
dG90eXBlLWV2ZXJ5LmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QxKToKKyAgICAgICAgKHRlc3Qy
KToKKyAgICAgICAgKHRlc3QzKToKKwogMjAxNC0wMS0zMCAgQWxleGV5IFByb3NrdXJ5YWtvdiAg
PGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdp
bi1wbHVnaW4tcHJpdmF0ZS1icm93c2luZy10b2dnbGVkLmh0bWwgaXMgZmxha3kgb24gV0syCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9qcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQKaW5kZXggNTQxYjhjMzU4ZjA2OGEw
Y2VhODgyYzEwNTE3NTMyNTExNGNkMzNmNy4uY2NhMzYzZGNlNThmYmE5NWE1OGNlNDZmY2I0OGMz
OGJmNThhZGY1OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dApAQCAt
MzAsMTIgKzMwLDEyIEBAIFBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShpc0JpZ0Vub3Vn
aEFuZEV4Y2VwdGlvbikgdGhyZXcgZXhjZXB0aW9uIGV4Y2VwdGlvCiBQQVNTIFsxMiwgNTQsIDE4
LCAxMzAsIDQ0XS5ldmVyeShpc0JpZ0Vub3VnaEFuZEV4Y2VwdGlvbikgdGhyZXcgZXhjZXB0aW9u
IGV4Y2VwdGlvbiBmcm9tIGZ1bmN0aW9uLgogCiA1LjAgV3JvbmcgVHlwZSBmb3IgQ2FsbGJhY2sg
VGVzdAotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KDUpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoJ3dy
b25nJykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1
LCA4LCAxMzAsIDQ0XS5ldmVyeShuZXcgT2JqZWN0KCkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkobnVsbCkgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAs
IDQ0XS5ldmVyeSh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJy
b3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KDUpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBt
dXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoJ3dyb25n
JykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxi
YWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShu
ZXcgT2JqZWN0KCkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5l
dmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0
NF0uZXZlcnkobnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBl
LmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAs
IDQ0XS5ldmVyeSh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnBy
b3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwg
OCwgMTMwLCA0NF0uZXZlcnkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90
b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgogCiA2LjAgRWFybHkgRXhp
dCAoIlNob3J0IENpcmN1aXRpbmciKQogUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KGlz
QmlnRW5vdWdoU2hvcnRDaXJjdWl0KSBpcyBmYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2pzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQKaW5kZXgg
MmMyYTY4Y2IxMDZkYTEwZjA4NmIyMmM1YmYyYmY1YzhmZTc5ZTMzZS4uNWQ5ZWNiNzVhOGRhNzli
YTY1NjA1ZTdlYjljZjhmYzI1ZmUxOGFmYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvZG9t
L2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9qcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CkBAIC0xNSw3
ICsxNSw3IEBAIFBBU1MgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodW5kZWZpbmVkLCAwLCAx
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlCiBQQVNTIEFycmF5LnByb3RvdHlwZS5z
b3J0LmNhbGwodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQg
aXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnNvcnQuY2FsbCh1
bmRlZmluZWQpJykuCiBQQVNTIEFycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbCh1bmRlZmluZWQs
IDAsIDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2Jq
ZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwodW5kZWZpbmVkLCAw
LCAxKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUudW5zaGlmdC5jYWxsKHVuZGVmaW5lZCwge30p
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChl
dmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUudW5zaGlmdC5jYWxsKHVuZGVmaW5lZCwge30pJyku
Ci1QQVNTIEFycmF5LnByb3RvdHlwZS5ldmVyeS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFs
dWF0aW5nICdBcnJheS5wcm90b3R5cGUuZXZlcnkuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKScp
LgorUEFTUyBBcnJheS5wcm90b3R5cGUuZXZlcnkuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMg
dGhhdCB8dGhpc3wgbm90IGJlIHVuZGVmaW5lZC4KIFBBU1MgQXJyYXkucHJvdG90eXBlLmZvckVh
Y2guY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1
bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLmZv
ckVhY2guY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUu
c29tZS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUu
c29tZS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpJykuCiBQQVNTIEFycmF5LnByb3RvdHlwZS5p
bmRleE9mLmNhbGwodW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRl
ZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLmluZGV4
T2YuY2FsbCh1bmRlZmluZWQsIDApJykuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTI5
MGMwZWVmZjhkZTQyMTgzM2Q5MmQyN2U5NTI0MTkxNzYwNGI5NgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5CisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sIGIv
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTVjYzE3MWM0ODc1YTM1ODViZjE0ZTU0MTVmNWNkMGU1ODFkNTQ0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRt
bApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10
ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90
eXBlLWV2ZXJ5LmpzIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyYXkt
cHJvdG90eXBlLWV2ZXJ5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5NGFhMTYxYzBjZTk4YjJhYjE4YTNhMWEx
ZjBkZmFhYzlkN2QyZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3NjcmlwdC10ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuanMKQEAgLTAsMCArMSwyOSBAQAor
dmFyIHJlc3VsdCA9IDA7CitmdW5jdGlvbiB0ZXN0MShhKSB7CisgICAgcmVzdWx0IDw8IDE7Cisg
ICAgcmVzdWx0Kys7CisgICAgcmV0dXJuIHRydWU7Cit9CitmdW5jdGlvbiB0ZXN0MihhLGIpIHsK
KyAgICByZXN1bHQgXj0gMzsKKyAgICByZXN1bHQgKj0gMzsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
K2Z1bmN0aW9uIHRlc3QzKGEsYixjKSB7CisgICAgcmVzdWx0IF49IHJlc3VsdCA+PiAxOworICAg
IHJldHVybiB0cnVlOworfQorCit2YXIgcmVzdWx0ID0gMDsKK3ZhciBhcnJheSA9IFtdCitmb3Ig
KHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKQorICAgIGFycmF5W2ldID0gMTsKKworZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7CisgICAgYXJyYXkuZXZlcnkodGVzdDEpOworICAgIGFy
cmF5LmV2ZXJ5KHRlc3QyKTsKKyAgICBhcnJheS5ldmVyeSh0ZXN0Myk7Cit9CisKK2lmIChyZXN1
bHQgIT0gMTQyODgxMDQ5NikKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1
bHQ7CmRpZmYgLS1naXQgYS9HTlVtYWtlZmlsZS5hbSBiL0dOVW1ha2VmaWxlLmFtCmluZGV4IDcz
ZmM0OTI4YzRkZDQ5YjU0OTg2OWI1MDY3OGM2YmRlNzRmNDQ3NjAuLjA4YzkxMTU0MjYwNTAwZGUz
ZmYwNGIwMjBjZTBkNjBmOThlOGNmZTggMTAwNjQ0Ci0tLSBhL0dOVW1ha2VmaWxlLmFtCisrKyBi
L0dOVW1ha2VmaWxlLmFtCkBAIC02OCw2ICs2OCw3IEBAIEFMTF9NT0ZJTEVTIDo9CiBkb21fYmlu
ZGluZ19pZGxzIDo9CiB3dGZfc291cmNlcyA6PQogamF2YXNjcmlwdGNvcmVfaF9hcGkgOj0KK2ph
dmFzY3JpcHRjb3JlX2J1aWx0aW5zX2pzX25vc291cmNlcyA6PQogamF2YXNjcmlwdGNvcmVfY3Bw
ZmxhZ3M6PQogamF2YXNjcmlwdGNvcmVfY2ZsYWdzIDo9CiBqYXZhc2NyaXB0Y29yZV9zb3VyY2Vz
IDo9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222774</attachid>
            <date>2014-01-30 18:09:07 -0800</date>
            <delta_ts>2014-01-30 18:24:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140130180903.patch</filename>
            <type>text/plain</type>
            <size>197160</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NjgxMzcxYWU2ZDBjYWZlNDJmNWNmN2E1NWI3MjRjMTc5ODExYjBhLi43NTA0MGJiMjVhNTg0MTY0
Mzg5ODQzNDFjNmEwMjMzMzdhOTk1ZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
IFRoaXMgcmVzdWx0IG9mIHRoaXMgcmVmYWN0b3JpbmcKKyAgICAgICAgaXMgdGhhdCBDb21tb25J
ZGVudGlmaWVycywgYW5kIGEgZmV3IG90aGVyIG1pc2NlbGxhbmVvdXMgaGVhZGVycyBub3cKKyAg
ICAgICAgbmVlZCB0byBiZSBpbmNsdWRlZCBkaXJlY3RseSBhcyB0aGV5IHdlcmUgZm9ybWVybHkg
Y2FwdHVyZWQgdGhyb3VnaCBvdGhlcgorICAgICAgICBwYXRocy4KKworICAgICAgICBJbiBhZGRp
dGlvbiB0aGlzIGFkZHMgYSBmbGFnIHRvIHRoZSBMb29rdXAgdGFibGUncyBoYXNoZW50cnkgdG8g
aW5kaWNhdGUKKyAgICAgICAgdGhhdCBhIHN0YXRpYyBmdW5jdGlvbiBpcyBhY3R1YWxseSBiYWNr
ZWQgYnkgSlMuIFRoZXJlIGlzIHRoZW4gYSBsb3Qgb2YKKyAgICAgICAgbG9naWMgdG8gdGhyZWFk
IHRoZSBzcGVjaWFsIG5hdHVyZSBvZiB0aGUgZnVuY3RvbiB0byB3aGVyZSBpdCBtYXR0ZXJzLgor
ICAgICAgICBUaGlzIGFsbG93cyB0b1N0cmluZygpLCAuY2FsbGVyLCBldGMgdG8gbWltaWMgdGhl
IGJlaGF2aW91ciBvZiBhIGhvc3QKKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAgICAgTm90ZXMg
b24gd3JpdGluZyBidWlsdGluczoKKyAgICAgICAgIC0gRWFjaCBmdW5jdGlvbiBpcyBjb21waWxl
ZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBvdGhlcnMsIGFuZCB0aG9zZQorICAgICAgICAgICBpbXBs
ZW1lbnRhdGlvbnMgY2Fubm90IGN1cnJlbnRseSBjYXB0dXJlIGFsbCBnbG9iYWwgcHJvcGVydGll
cyAoYXMKKyAgICAgICAgICAgdGhhdCBjb3VsZCBiZSBwb3RlbnRpYWxseSB1bnNhZmUpLiBJZiBh
IGZ1bmN0aW9uIGRvZXMgY2FwdHVyZSBhCisgICAgICAgICAgIGdsb2JhbCB3ZSB3aWxsIGRlbGli
ZXJhdGVseSBjcmFzaC4KKyAgICAgICAgIC0gRm9yIHRob3NlICJnbG9iYWwiIHByb3BlcnRpZXMg
dGhhdCB3ZSBkbyB3YW50IGFjY2VzcyB0bywgd2UgdXNlCisgICAgICAgICAgIHRoZSBAIHByZWZp
eCwgZS5nLiBPYmplY3QodGhpcykgYmVjb21lcyBAT2JqZWN0KHRoaXMpLiBUaGUgQCBpZGVudGlm
aWVycworICAgICAgICAgICBhcmUgcHJpdmF0ZSBuYW1lcywgYW5kIGJlaGF2ZSBqdXN0IGxpa2Ug
cmVndWxhciBwcm9wZXJ0aWVzLCBvbmx5CisgICAgICAgICAgIHdpdGhvdXQgdGhlIHJpc2sgb2Yg
YWR1bHRlcmF0aW9uLiBBZ2FpbiwgaW4gdGhlIEBPYmplY3QgY2FzZSwgd2UKKyAgICAgICAgICAg
ZXhwbGljaXRseSBkdXBsaWNhdGUgdGhlIE9iamVjdENvbnN0cnVjdG9yIHJlZmVyZW5jZSBvbiB0
aGUgR2xvYmFsT2JqZWN0CisgICAgICAgICAgIHNvIHRoYXQgd2UgaGF2ZSBndWFyYW50ZWVkIGFj
Y2VzcyB0byB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgY29uc3RydWN0
b3IuCisgICAgICAgICAtIGNhbGwsIGFwcGx5LCBldmFsLCBhbmQgRnVuY3Rpb24gYXJlIGFsbCBy
ZWplY3RlZCBpZGVudGlmaWVycywgYWdhaW4KKyAgICAgICAgICAgdG8gcHJldmVudCBhbnl0aGlu
ZyBmcm9tIGFjY2lkZW50YWxseSB1c2luZyBhbiBhZHVsdGVyYXRlZCBvYmplY3QuCisgICAgICAg
ICAgIEluc3RlYWQgQGNhbGwgYW5kIEBhcHBseSBhcmUgYXZhaWxhYmxlLCBhbmQgaGFwcGlseSB0
aGV5IGNvbXBsZXRlbHkKKyAgICAgICAgICAgZHJvcCB0aGUgbmVxX3B0ciBpbnN0cnVjdGlvbiBh
cyB0aGV5J3JlIGRlZmluZWQgYXMgYWx3YXlzIGJlaW5nIHRoZQorICAgICAgICAgICBvcmlnaW5h
bCBjYWxsL2FwcGx5IGZ1bmN0aW9ucy4KKworICAgICAgICBUaGVzZSByZXN0cmljdGlvbnMgYXJl
IGp1c3QgaW50ZW5kZWQgdG8gbWFrZSBpdCBoYXJkZXIgdG8gYWNjaWRlbnRhbGx5CisgICAgICAg
IG1ha2UgY2hhbmdlcyB0aGF0IGFyZSBpbmNvcnJlY3QgKGZvciBpbnN0YW5jZSBjYWxsaW5nIHdo
YXRldmVyIGhhcyBiZWVuCisgICAgICAgIGFzc2lnbmVkIHRvIGdsb2JhbC5PYmplY3QsIGluc3Rl
YWQgb2YgdGhlIG9yaWdpbmFsIGNvbnN0cnVjdG9yIGZ1bmN0aW9uKS4KKyAgICAgICAgSG93ZXZl
ciwgbWFraW5nIGEgbWlzdGFrZSBsaWtlIHRoaXMgc2hvdWxkIHJlc3VsdCBpbiBhIHB1cmVseSBz
ZW1hbnRpYworICAgICAgICBlcnJvciBhcyBmdW5kYW1lbnRhbGx5IHRoZXNlIGZ1bmN0aW9ucyBh
cmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlCisgICAgICAgIHJlZ3VsYXIgSlMgY29kZSBp
biB0aGUgaG9zdCBnbG9iYWwsIGFuZCBoYXZlIG5vIG1vcmUgcHJpdmlsZWdlcyB0aGFuCisgICAg
ICAgIGFueSBvdGhlciBKUy4KKworICAgICAgICBUaGUgaW5pdGlhbCBwcm9vZiBvZiBjb25jZXB0
IGlzIEFycmF5LnByb3RvdHlwZS5ldmVyeSwgdGhpcyBzaG93cyBhIDY1JQorICAgICAgICBwZXJm
b3JtYW5jZSBpbXByb3ZlbWVudCwgYW5kIHRoYXQgaW1wcm92ZW1lbnQgaXMgc2lnbmlmaWNhbnRs
eSBodXJ0IGJ5CisgICAgICAgIG91ciBwb29yIG9wdGltaXNhdGlvbiBvZiBvcF9pbi4KKworICAg
ICAgICBBcyB0aGlzIGlzIHN1Y2ggYSBsaW1pdGVkIGZ1bmN0aW9uLCB3ZSBoYXZlIG5vdCB5ZXQg
ZXhwb3J0ZWQgYWxsIHN5bWJvbHMKKyAgICAgICAgdGhhdCB3ZSBjb3VsZCBwb3NzaWJseSBuZWVk
LCBidXQgYXMgd2UgaW1wbGVtZW50IG1vcmUsIHRoZSBsaWtlbGlob29kCisgICAgICAgIG9mIGVu
Y291bnRlcmluZyBtaXNzaW5nIGZlYXR1cmVzIHdpbGwgcmVkdWNlLgorCisgICAgICAgIFRoaXMg
ZGlkIHJlcXVpcmUgYnJlYWtpbmcgb3V0IGEgSlNTdHJpbmdJbmxpbmVzIGhlYWRlciwgYW5kIHJl
cXVpcmVkCisgICAgICAgIGZpeGluZyBhIGZldyBvYmplY3RzIHRoYXQgd2VyZSB0cnlpbmcgdG8g
dXNpbmcgUHJvcGVydHlOYW1lOjpwdWJsaWNOYW1lCisgICAgICAgIHJhdGhlciB0aGFuIFByb3Bl
cnR5TmFtZTo6dWlkLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0
eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dCk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRpY1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWNGdW5jdGlvbkdl
dHRlcik6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tH
ZXR0ZXIpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBidWlsdGlucy9BcnJheS5wcm90b3R5cGUuanM6CisgICAgICAgIChldmVyeSk6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkJ1aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKToKKyAgICAgICAgKEpTQzo6
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSk6CisgICAgICAgICog
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVj
dXRhYmxlczo6Y3JlYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tG
b3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6dG9TdHJpY3RuZXNzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNCdWlsdGluRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBjcmVhdGVfaGFz
aF90YWJsZToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZ2Vu
ZXJhdGUtanMtYnVpbHRpbnM6IEFkZGVkLgorICAgICAgICAoZ2V0Q29weXJpZ2h0KToKKyAgICAg
ICAgKGdldEZ1bmN0aW9ucyk6CisgICAgICAgIChnZW5lcmF0ZUNvZGUpOgorICAgICAgICAobWFu
Z2xlTmFtZSk6CisgICAgICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSWRlbnRp
Zmllcik6CisgICAgICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChTb3VyY2VDb2RlKToK
KyAgICAgICAgKFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKFZNKToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvUHJvdG9DYWxsRnJhbWUuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUp
OgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpM
ZXhlcik6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpM
ZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFy
Pjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAg
ICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcik6CisgICAgICAgICog
cGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OnNldENsb3NlZFZh
cmlhYmxlcyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
Tm9kZTo6Y2FwdHVyZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OnNldENs
b3NlZFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmluaXNoUGFy
c2luZyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRU
b2tlblRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OmdldFVzZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNsb3NlZFZhcmlh
Ymxlcyk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9k
ZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAgICAgICogcnVudGlt
ZS9BcmdMaXN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAg
ICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJh
dG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpn
ZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpD
b21tb25JZGVudGlmaWVycyk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQ
cml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQdWJsaWNO
YW1lKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzRXhjZXB0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxl
OjpleGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpleGVj
dXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aXNCdWlsdGlu
RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1l
L0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFi
bGVHZXQpOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0KToKKyAg
ICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgICogcnVudGltZS9K
U0NlbGxJbmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6c291cmNlQ29kZSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzSG9zdE9y
QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6aXNCdWlsdGluRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIpOgorICAgICAg
ICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9w
ZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgICogcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6Om9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpnZXRDbGFzc1Byb3BlcnR5TmFtZXMpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZ0lubGlu
ZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjppbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9i
amVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgICAgRG9uJ3QgcmVw
b3J0IHByaXZhdGUgbmFtZXMuCisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6c3ltYm9s
VGFibGVQdXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChKU0M6OnNldFVwU3RhdGlj
RnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlND
OjpIYXNoRW50cnk6OmJ1aWx0aW5HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpIYXNoRW50cnk6
OnByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpwcm9wZXJ0eVB1dHRl
cik6CisgICAgICAgIChKU0M6Okhhc2hUYWJsZTo6ZW50cnkpOgorICAgICAgICAoSlNDOjpnZXRT
dGF0aWNQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpnZXRTdGF0aWNWYWx1ZVNsb3QpOgor
ICAgICAgICAoSlNDOjpwdXRFbnRyeSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6YnVp
bHRpbkV4ZWN1dGFibGVzKToKKwogMjAxNC0wMS0yOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBw
bGUuY29tPgogCiAgICAgICAgIEZUTCBzaG91bGQgc3VwcG9ydCBHZXRCeUlkKFVudHlwZWQ6KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDFhZDY5NzQ4OGIwYzRiOGI0Y2ZhZTI5MTM1NDI1OWI2ZGFjZmRjNDUuLmYz
YzNkNzE3MWQwNTQ0ODBlYzYwNTQwYzBkNTI1OTk2ZWVjZGI5YTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxNC0wMS0yOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gaW1wbGVtZW50IEpTIGJ1aWx0aW5zIGluIEpT
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc4ODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGlu
ZyBmb3IgdGhlIG5ld2x5IHJlcXVpcmVkIGhlYWRlcnMuCisKKyAgICAgICAgVGVzdDoganMvcmVn
cmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbAorCisgICAgICAgICogRm9yd2FyZGluZ0hl
YWRlcnMvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0lEQkFueUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJREJE
YXRhYmFzZUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9y
ZUN1c3RvbS5jcHA6CisKIDIwMTQtMDEtMzAgIFJvZ2VyIEZvbmcgIDxyb2dlcl9mb25nQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWJHTCBsb2FkIHBvbGljeSBzaG91bGQgYmUgcXVlcmllZCBmb3Ig
dGhlIHRvcCBsZXZlbCBkb2N1bWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggNWJlMDUzZjFlMDg2YjQzZTY4
NmMzNjc0ZGFlN2M1MTYwNWEyODZlNy4uMGVjZWQ1MWYzZTJkNWI2MjFkYWRmMDU3NDlmNWU3NDY2
YTA2ZjUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBib29sIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZQogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKICAg
ICBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHByb3BlcnR5TmFtZVJlZjsKICAgICAKLSAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpT
Q2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xh
c3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgLy8gb3B0aW9uYWwgb3B0
aW1pemF0aW9uIHRvIGJ5cGFzcyBnZXRQcm9wZXJ0eSBpbiBjYXNlcyB3aGVuIHdlIG9ubHkgbmVl
ZCB0byBrbm93IGlmIHRoZSBwcm9wZXJ0eSBleGlzdHMKICAgICAgICAgICAgIGlmIChKU09iamVj
dEhhc1Byb3BlcnR5Q2FsbGJhY2sgaGFzUHJvcGVydHkgPSBqc0NsYXNzLT5oYXNQcm9wZXJ0eSkg
ewpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiAgICAgUmVmUHRy
PE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgSlNWYWx1ZVJlZiB2YWx1ZVJl
ZiA9IHRvUmVmKGV4ZWMsIHZhbHVlKTsKICAgICAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9
IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJl
bnRDbGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBz
ZXRQcm9wZXJ0eSA9IGpzQ2xhc3MtPnNldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFwcm9wZXJ0eU5hbWVSZWYpCkBAIC0zNDMsNyArMzQzLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm8KICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CiAgICAg
UmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0Ns
YXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNz
ID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdERlbGV0
ZVByb3BlcnR5Q2FsbGJhY2sgZGVsZXRlUHJvcGVydHkgPSBqc0NsYXNzLT5kZWxldGVQcm9wZXJ0
eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lUmVmKQpAQCAtNTY0LDcgKzU2
NCw3IEBAIEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiB7CiAgICAgSlNPYmplY3RSZWYgdGhpc1Jl
ZiA9IHRvUmVmKHRoaXMpOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gY2xhc3NS
ZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAg
ICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXMgPSBq
c0NsYXNzLT5zdGF0aWNWYWx1ZXMoZXhlYykpIHsKICAgICAgICAgICAgICAgICBpZiAoU3RhdGlj
VmFsdWVFbnRyeSogZW50cnkgPSBzdGF0aWNWYWx1ZXMtPmdldChuYW1lKSkgewpAQCAtNjAwLDcg
KzYwMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGlj
RnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFCiAgICAgaWYgKFBhcmVudDo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdDIpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QyLmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFt
ZSkpOwogCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsK
ICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqLT5jbGFzc1JlZigpOyBq
c0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlm
IChPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGUqIHN0YXRpY0Z1bmN0aW9ucyA9IGpz
Q2xhc3MtPnN0YXRpY0Z1bmN0aW9ucyhleGVjKSkgewogICAgICAgICAgICAgICAgIGlmIChTdGF0
aWNGdW5jdGlvbkVudHJ5KiBlbnRyeSA9IHN0YXRpY0Z1bmN0aW9ucy0+Z2V0KG5hbWUpKSB7CkBA
IC02MjYsNyArNjI2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpjYWxsYmFja0dldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWQKICAgICBKU09iamVjdFJl
ZiB0aGlzUmVmID0gdG9SZWYodGhpc09iaik7CiAgICAgUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBw
cm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2Jq
LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsK
ICAgICAgICAgICAgIGlmIChKU09iamVjdEdldFByb3BlcnR5Q2FsbGJhY2sgZ2V0UHJvcGVydHkg
PSBqc0NsYXNzLT5nZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlO
YW1lUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDI3YmM0YzE3ZjNk
ZmVlYjYxZDI1MjMyM2ZkODc4YzQ0NzgwZjc0YzUuLjBjNGRlZmI5OWRiMzk5NDNiYTY1MjI0NmVj
ZGY5OTI3ZjE0ZTZmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUy
LDYgKzUyLDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9TY3Jp
cHRPYmplY3QuY3BwCiAgICAgYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCiAKKyAgICBidWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCisKICAgICBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Q
cm9maWxlLmNwcAogICAgIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9C
eXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC03MDcsNyArNzA5LDcgQEAgc2V0KEhBU0hfTFVUX0dF
TkVSQVRPUiAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vY3JlYXRlX2hhc2hfdGFibGUpCiBt
YWNybyhHRU5FUkFURV9IQVNIX0xVVCBfaW5wdXQgX291dHB1dCkKICAgICBhZGRfY3VzdG9tX2Nv
bW1hbmQoCiAgICAgICAgIE9VVFBVVCAke19vdXRwdXR9Ci0gICAgICAgIERFUEVORFMgJHtIQVNI
X0xVVF9HRU5FUkFUT1J9ICR7X2lucHV0fQorICAgICAgICBERVBFTkRTICR7SEFTSF9MVVRfR0VO
RVJBVE9SfSAke19pbnB1dH0gJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9K
U0NCdWlsdGlucy5oCiAgICAgICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7SEFTSF9M
VVRfR0VORVJBVE9SfSAke19pbnB1dH0gLWkgPiAke19vdXRwdXR9CiAgICAgICAgIFZFUkJBVElN
KQogICAgIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMgJHtfb3V0cHV0fSkKQEAg
LTgxNSwxNiArODE3LDI3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBDT01NQU5EICR7UFlU
SE9OX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENvcmVfSU5TUEVDVE9SX1NDUklQVFNfRElSfS9D
b2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0vSW5zcGVjdG9ySlMuanNvbiAtLW91dHB1dF9oX2RpciAiJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfSIgLS1vdXRwdXRfY3BwX2RpciAiJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfSIgLS1vdXRwdXRfanNfZGlyICIke0RFUklWRURfU09VUkNFU19K
QVZBU0NSSVBUQ09SRV9ESVJ9IiAtLW91dHB1dF90eXBlIEphdmFTY3JpcHQgLS13cml0ZV9hbHdh
eXMgJiYgbWtkaXIgLXAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9pbnNw
ZWN0b3IgJiYgY3AgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0
b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0vSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmggJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oICR7REVSSVZFRF9T
T1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yCiAgICAgVkVSQkFUSU0pCiAKKyMg
SlNDQnVpbHRpbnMKK2ZpbGUoR0xPQiBKU0NCdWlsdGluc19qc19maWxlcyAiJHtDTUFLRV9DVVJS
RU5UX1NPVVJDRV9ESVJ9L2J1aWx0aW5zLyouanMiKQorYWRkX2N1c3RvbV9jb21tYW5kKAorICAg
T1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMu
Y3BwICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAor
ICAgTUFJTl9ERVBFTkRFTkNZICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9nZW5lcmF0ZS1q
cy1idWlsdGlucworICAgREVQRU5EUyAke0pTQ0J1aWx0aW5zX2pzX2ZpbGVzfQorICAgQ09NTUFO
RCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZ2VuZXJh
dGUtanMtYnVpbHRpbnMgJHtKU0NCdWlsdGluc19qc19maWxlc30gJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFT
Q1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuY3BwCisgICBWRVJCQVRJTSkKKwogbGlzdChBUFBF
TkQgSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwCiAgICAgJHtERVJJ
VkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0
Y2hlcnMuY3BwCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNw
ZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAKKyAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBU
Q09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcAogKQogCiBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29y
ZV9IRUFERVJTCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNw
ZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVND
UklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuaAogICAgICR7REVS
SVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMu
aAorICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMu
aAogKQogCiBhZGRfY3VzdG9tX2NvbW1hbmQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCmluZGV4IDExNTZlOTdmZDg4NjI1NTdjOWNmOGQzYjY4YmY0ZDAzYzNlOGJh
OGYuLjdjOTgyYjY5MTNlMmY4OGQ1ODg4NGRiZTIzNzNmNTk1ZTdiNDU5MmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yOCw4ICsyOCw5IEBAIFZQQVRI
ID0gXAogICAgICQoSmF2YVNjcmlwdENvcmUpIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9wYXJz
ZXIgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL3J1bnRpbWUgXAotICAgICQoSmF2YVNjcmlwdENv
cmUpL2ludGVycHJldGVyIFwKLSAgICAkKEphdmFTY3JpcHRDb3JlKS9qaXQgXAorCSQoSmF2YVNj
cmlwdENvcmUpL2ludGVycHJldGVyIFwKKwkkKEphdmFTY3JpcHRDb3JlKS9qaXQgXAorCSQoSmF2
YVNjcmlwdENvcmUpL2J1aWx0aW5zIFwKICMKIAogLlBIT05ZIDogYWxsCkBAIC01NywxMiArNTgs
MjUgQEAgYWxsIDogXAogICAgIFJlZ0V4cE9iamVjdC5sdXQuaCBcCiAgICAgU3RyaW5nQ29uc3Ry
dWN0b3IubHV0LmggXAogICAgIHVkaXM4Nl9pdGFiLmggXAorICAgIEpTQ0J1aWx0aW5zIFwKICMK
IAorIyBidWlsdGluIGZ1bmN0aW9ucworLlBIT05ZOiBKU0NCdWlsdGlucworCitKU0NCdWlsdGlu
czogJChKYXZhU2NyaXB0Q29yZSkvZ2VuZXJhdGUtanMtYnVpbHRpbnMgSlNDQnVpbHRpbnMuaCBK
U0NCdWlsdGlucy5jcHAKK0pTQ0J1aWx0aW5zLmg6ICQoSmF2YVNjcmlwdENvcmUpL2dlbmVyYXRl
LWpzLWJ1aWx0aW5zICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zLyouanMKKwlweXRob24gJF4g
JEAKKwkJCQkJCQkJCQkJCQkJCQkJCQkJIAorSlNDQnVpbHRpbnMuY3BwOiBKU0NCdWlsdGlucy5o
CisKICMgbG9va3VwIHRhYmxlcyBmb3IgY2xhc3NlcwogCitjcmVhdGVfaGFzaF90YWJsZTogSlND
QnVpbHRpbnMKKwogJS5sdXQuaDogY3JlYXRlX2hhc2hfdGFibGUgJS5jcHAKIAkkXiAtaSA+ICRA
CisKIExleGVyLmx1dC5oOiBjcmVhdGVfaGFzaF90YWJsZSBLZXl3b3Jkcy50YWJsZQogCSReID4g
JEAKIApAQCAtNzksNyArOTMsNiBAQCBLZXl3b3JkTG9va3VwLmg6IEtleXdvcmRMb29rdXBHZW5l
cmF0b3IucHkgS2V5d29yZHMudGFibGUKIHVkaXM4Nl9pdGFiLmg6ICQoSmF2YVNjcmlwdENvcmUp
L2Rpc2Fzc2VtYmxlci91ZGlzODYvaXRhYi5weSAkKEphdmFTY3JpcHRDb3JlKS9kaXNhc3NlbWJs
ZXIvdWRpczg2L29wdGFibGUueG1sCiAJKFBZVEhPTlBBVEg9JChKYXZhU2NyaXB0Q29yZSkvZGlz
YXNzZW1ibGVyL3VkaXM4NiBweXRob24gJChKYXZhU2NyaXB0Q29yZSkvZGlzYXNzZW1ibGVyL3Vk
aXM4Ni9pdGFiLnB5ICQoSmF2YVNjcmlwdENvcmUpL2Rpc2Fzc2VtYmxlci91ZGlzODYvb3B0YWJs
ZS54bWwgfHwgZXhpdCAxKQogCi0KICMgSW5zcGVjdG9yIGludGVyZmFjZXMKIAogSU5TUEVDVE9S
X0RPTUFJTlMgPSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZp
bGUuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggZmU1NDQ4
ZGRjMWJjZmFhNGM3MjlhMWNjMDBkZWE2MjQzMTkzOTBhMi4uYTM5ZDI1YWUzZmI5MmE4MjU3NDY3
NTU3YzBkNzY4ZDUwZGU4ZDQwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQpA
QCAtMTEwLDEyICsxMTAsMTYgQEAgRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnRE
ZXNpcmVkT2Zmc2V0cy5oOiAkKGphdmFzY3JpcHRjb3JlX3NvdXJjZXMpICQKIAkkKEFNX1ZfR0VO
KSQoUlVCWSkgJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVy
YXRlX29mZnNldF9leHRyYWN0b3IucmIgJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSAkQAogCSQoQU1fVl9hdCl0b3VjaCAkQAogCi0k
KFByb2dyYW1zX0xMSW50T2Zmc2V0c0V4dHJhY3Rvcl9PQkpFQ1RTKTogRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvTExJbnREZXNpcmVkT2Zmc2V0cy5oCiskKFByb2dyYW1zX0xMSW50T2Zm
c2V0c0V4dHJhY3Rvcl9PQkpFQ1RTKTogRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJ
bnREZXNpcmVkT2Zmc2V0cy5oIAogCiBEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9MTElu
dEFzc2VtYmx5Lmg6IFByb2dyYW1zL0xMSW50T2Zmc2V0c0V4dHJhY3RvciQoRVhFRVhUKQogCSQo
QU1fVl9HRU4pJChSVUJZKSAkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vYXNtLnJiICQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20gUHJvZ3JhbXMvTExJbnRPZmZzZXRzRXh0cmFjdG9yJChFWEVFWFQpICRA
CiAJJChBTV9WX2F0KXRvdWNoICRACiAKK0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pT
Q0J1aWx0aW5zLmg6IERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmNw
cAorRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNDQnVpbHRpbnMuY3BwOiAkKHNyY2Rp
cikvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5zICQoamF2YXNjcmlw
dGNvcmVfYnVpbHRpbnNfanNfbm9zb3VyY2VzKQorCSQoQU1fVl9HRU4pJChQWVRIT04pICReICRA
CisKICQobGliamF2YXNjcmlwdGNvcmVndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBf
QFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfT0JKRUNUUyk6IERlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlL0xMSW50QXNzZW1ibHkuaAogCiBqc2M6ICQoamF2YXNjcmlwdGNvcmVf
YnVpbHRfbm9zb3VyY2VzKSBQcm9ncmFtcy9qc2MkKEVYRUVYVCkKQEAgLTIxNiw2ICsyMjAsNyBA
QCBFWFRSQV9ESVNUICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvS2V5d29yZExvb2t1cEdl
bmVyYXRvci5weSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9LZXl3b3Jkcy50YWJs
ZSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL1RIQU5LUyBcCisJJChqYXZhc2NyaXB0Y29yZV9i
dWlsdGluc19qc19ub3NvdXJjZXMpIFwKIAkkKGxsaW50X25vc291cmNlcykgXAogCSQob2ZmbGlu
ZWFzbV9ub3NvdXJjZXMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KaW5kZXggY2RiNTQyNmIwNmI1MmE5ODI1NmVlOTA1OGJiYThmMTFlZWE2OWVlMC4uOThmYWFh
N2QxNzVhYTYxZjIwODk2Y2VlYjEzODYzZTI3YjI2NmNlOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTIwLDYgKzIwLDggQEAgamF2YXNjcmlwdGNvcmVf
YnVpbHRfbm9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9FcnJv
clByb3RvdHlwZS5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNEYXRh
Vmlld1Byb3RvdHlwZS5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNH
bG9iYWxPYmplY3QubHV0LmggXAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1
aWx0aW5zLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNDQnVpbHRpbnMu
aCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNPTk9iamVjdC5sdXQuaCBcCiAJ
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNQcm9taXNlQ29uc3RydWN0b3IubHV0Lmgg
XAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTUHJvbWlzZVByb3RvdHlwZS5sdXQu
aCBcCkBAIC0zNSw2ICszNyw5IEBAIGphdmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcyArPSBc
CiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnREZXNpcmVkT2Zmc2V0cy5oIFwK
IAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9MTEludEFzc2VtYmx5LmgKIAoramF2YXNj
cmlwdGNvcmVfYnVpbHRpbnNfanNfbm9zb3VyY2VzICs9IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzCisKIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhc3QuaCBcCkBAIC0xMDIsNiArMTA3LDgg
QEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAgICAgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2JpbmRpbmdzL1NjcmlwdE9iamVjdC5oIFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmlu
ZGluZ3MvU2NyaXB0VmFsdWUuY3BwIFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGlu
Z3MvU2NyaXB0VmFsdWUuaCBcCisgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1
aWx0aW5FeGVjdXRhYmxlcy5jcHAgXAorICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcCBcCkBAIC0xMjQxLDcgKzEyNDgsOSBAQCBqYXZhc2Ny
aXB0Y29yZV9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnNw
ZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuaCBcCiAJRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwIFwKLQlEZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oCisJRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaCBcCisJRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNDQnVpbHRpbnMuY3BwIFwKKwlEZXJpdmVkU291
cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5oCiAKIGxsaW50X25vc291cmNlcyArPSBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c20gXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggNWVkZWZkYmU4
NTVmOTZhNjI2OGQ4NTczYmVjMWQwYzNkODU4YWE1Yy4uYTEyZGIxODM0ODZkZmJiY2E4M2YzYTc4
ZTljZjk4NjMxYjI2NTNkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
CkBAIC0zMDksNiArMzA5LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdz
XFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxi
aW5kaW5nc1xTY3JpcHRPYmplY3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
YmluZGluZ3NcU2NyaXB0VmFsdWUuY3BwIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
YnVpbHRpbnNcQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlQcm9maWxlLmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEJ5dGVjb2RlQmFzaWNCbG9jay5jcHAiIC8+CkBA
IC03MjEsNiArNzIyLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xJbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5jcHAiIC8+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNGcm9u
dGVuZERpc3BhdGNoZXJzLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAiIC8+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuY3Bw
IiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xBcnJheUNvbnN0cnVjdG9yLmx1dC5oIiAvPgpA
QCAtNzUwLDYgKzc1Miw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcUmVnRXhwT2JqZWN0Lmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFJlZ0V4cFByb3RvdHlwZS5sdXQuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xTdHJpbmdDb25z
dHJ1Y3Rvci5sdXQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xKU0NCdWlsdGlucy5oIiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91
cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxBUElDYWxsYmFja0Z1bmN0aW9uLmgi
IC8+CkBAIC03OTgsNiArODAxLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRp
bmdzXFNjcmlwdEZ1bmN0aW9uQ2FsbC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
YmluZGluZ3NcU2NyaXB0T2JqZWN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxi
aW5kaW5nc1xTY3JpcHRWYWx1ZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnVp
bHRpbnNcQnVpbHRpbkV4ZWN1dGFibGVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxieXRlY29kZVxBcnJheVByb2ZpbGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGJ5dGVjb2RlXEJ5VmFsSW5mby5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
ai5maWx0ZXJzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDg3ZTEyYTQ3MTU4YmI2MjI0ZDQ5
ZmQ2MjI5NzhjNGE5YzQ0MzVhNjUuLjg2OWMxZjU4OWJjYjY4NmViOWNmMjBjMDk2YmUxYjgzYTU1
MWUyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZp
bHRlcnMKQEAgLTcsNiArNyw5IEBACiAgICAgPEZpbHRlciBJbmNsdWRlPSJiaW5kaW5ncyI+CiAg
ICAgICA8VW5pcXVlSWRlbnRpZmllcj57MGJhY2UxMjMtNDU4Mi1lZWJjLTkzMTQtNzgxOWIzNzZj
MTk4fTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1
ZGU9ImJ1aWx0aW5zIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnszYjlkNzJhNS0xMzViLTQz
YjMtYTUyNC1jNmQyYjlkMjlkMzV9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgog
ICAgIDxGaWx0ZXIgSW5jbHVkZT0iYnl0ZWNvZGUiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+
ezc2NjA4OGEwLTEyMTYtNDg1NC1hYTQzLTU2MGM1ZTI4MzY2OH08L1VuaXF1ZUlkZW50aWZpZXI+
CiAgICAgPC9GaWx0ZXI+CkBAIC0xMDgsNiArMTExLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGFzc2VtYmxlclxNYWNyb0Fzc2VtYmxlci5jcHAiPgogICAgICAgPEZpbHRlcj5hc3Nl
bWJsZXI8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAiPgorICAgICAgPEZpbHRlcj5idWls
dGluczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAiPgogICAgICAgPEZpbHRlcj5i
eXRlY29kZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMTMyOSw2ICsxMzM1LDkgQEAK
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBs
YXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0
b3JKU1R5cGVCdWlsZGVycy5jcHAiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0Zp
bHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xKU0NCdWlsdGlucy5jcHAiPgorICAgICAgPEZpbHRlcj5EZXJpdmVk
IFNvdXJjZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJ
dGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcQVBJQ2FsbGJhY2tGdW5j
dGlvbi5oIj4KQEAgLTE0NTQsNiArMTQ2Myw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
Llxhc3NlbWJsZXJcWDg2QXNzZW1ibGVyLmgiPgogICAgICAgPEZpbHRlcj5hc3NlbWJsZXI8L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ1aWx0
aW5zXEJ1aWx0aW5FeGVjdXRhYmxlcy5oIj4KKyAgICAgIDxGaWx0ZXI+YnVpbHRpbnM8L0ZpbHRl
cj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2Rl
XEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCI+CiAgICAgICA8RmlsdGVyPmJ5dGVjb2RlPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0yNTUwLDYgKzI1NjIsOSBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRl
Y3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEFycmF5UHJvdG90eXBlLmx1dC5o
Ij4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1
ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2Jq
JChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlND
QnVpbHRpbnMuaCI+CisgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgorICAg
IDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxWTS5oIj4K
ICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmVDb21tb24ucHJvcHMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZUNvbW1vbi5wcm9wcwppbmRleCAzNjIyZmZjNTc3YzQz
ZGRmNzBkYTUxZmY2OGFkNjQ2ZjYzMDRlNTY3Li5jNTg4ODcwYzJmZDEzZDYwNzZkMzhmNTJjYTYy
MjVkYjI4NzJjNzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZUNvbW1vbi5wcm9wcworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZUNvbW1vbi5w
cm9wcwpAQCAtNSw3ICs1LDcgQEAKICAgPFByb3BlcnR5R3JvdXAgLz4KICAgPEl0ZW1EZWZpbml0
aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPi4uXDsuLlx0b29sc1w7Li5ccnVudGltZVw7Li5cbGxpbnRcOy4uXGppdFw7Li5cZGlz
YXNzZW1ibGVyXDsuLlxoZWFwXDsuLlxkZWJ1Z2dlclw7Li5cYXNzZW1ibGVyXDsuLlxwcm9maWxl
clw7Li5ceWFyclw7Li5caW50ZXJwcmV0ZXJcOy4uXGJ5dGVjb2RlXDsuLlxkZmdcOy4uXGJ5dGVj
b21waWxlclw7Li5ccGFyc2VyXDsuLlxBUElcOy4uXGZ0bFw7Li5cYmluZGluZ3NcOy4uXGluc3Bl
Y3Rvclw7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XEphdmFTY3JpcHRDb3JlXERlcml2ZWRTb3VyY2VzXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
aW5jbHVkZVw7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmVc
OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcOyQoV2ViS2l0X0xpYnJh
cmllcylcaW5jbHVkZTskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGVccHJpdmF0ZTslKEFkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgor
ICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cOy4uXHRvb2xzXDsuLlxydW50
aW1lXDsuLlxsbGludFw7Li5caml0XDsuLlxkaXNhc3NlbWJsZXJcOy4uXGhlYXBcOy4uXGRlYnVn
Z2VyXDsuLlxhc3NlbWJsZXJcOy4uXHByb2ZpbGVyXDsuLlx5YXJyXDsuLlxpbnRlcnByZXRlclw7
Li5cYnl0ZWNvZGVcOy4uXGJ1aWx0aW5zXDsuLlxkZmdcOy4uXGJ5dGVjb21waWxlclw7Li5ccGFy
c2VyXDsuLlxBUElcOy4uXGZ0bFw7Li5cYmluZGluZ3NcOy4uXGluc3BlY3Rvclw7JChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXEphdmFTY3JpcHRDb3Jl
XERlcml2ZWRTb3VyY2VzXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVw7JChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmVcOyQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcOyQoV2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZTsk
KFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGVccHJpdmF0ZTslKEFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgICAgPEZvcmNlZElu
Y2x1ZGVGaWxlcz5JQ1VWZXJzaW9uLmg7JShGb3JjZWRJbmNsdWRlRmlsZXMpPC9Gb3JjZWRJbmNs
dWRlRmlsZXM+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPExpbms+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDI3ZTg3Njc0MGE5NjRiMDI4OTg0ZWQ2NzgxNjE4MjBhNWRjZjc3YzQu
LjkxMTU3M2FiMTdkMzM5NzRhYTdjOWEwMTFkYjIwMGIwOWFmNzhiZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC05MjIsNyArOTIyLDYgQEAKIAkJQTUwM0ZBMTkxODhFMEZCMDAw
MTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTMxODhFMEZBRjAwMTEwRjE0IC8qIEphdmFT
Y3JpcHRDYWxsRnJhbWUuY3BwICovOyB9OwogCQlBNTAzRkExQTE4OEUwRkIwMDAxMTBGMTQgLyog
SmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTUwM0ZBMTQxODhFMEZBRjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJh
bWUuaCAqLzsgfTsKIAkJQTUwM0ZBMUIxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENh
bGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNTAzRkExNTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAq
LzsgfTsKLQkJQTUwM0ZBMUMxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFt
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZB
MTYxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQlB
NTAzRkExRDE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNG
QTE3MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3Bw
ICovOyB9OwogCQlBNTAzRkExRTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZy
YW1lUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTAzRkExODE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJv
dG90eXBlLmggKi87IH07CiAJCUE1MDNGQTIxMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRCcmVh
a3BvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NTAzRkExRjE4OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0QnJlYWtwb2ludC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDI0LDYgKzEwMjMsNyBA
QAogCQlBNzBCMDgzMjE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MEIwODMwMTdBMEI3
OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guY3BwICovOyB9OwogCQlBNzBCMDgzMzE3QTBC
NzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzBCMDgzMTE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmlu
YXJ5U3dpdGNoLmggKi87IH07CiAJCUE3MTIzNkU1MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNv
ZGVzMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTcxMjM2RTQxMTk1RjMzQzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgKi87IH07
CisJCUE3MURBODBGMTg4MERCQUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MURBODBFMTg4MERCQUIw
MEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzIwMjhCNjE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVz
dFJ1bm5lclV0aWxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3MjAyOEI0MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3Bw
ICovOyB9OwogCQlBNzIwMjhCODE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIwMjhC
NTE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcyMDI4QkExNzk3NjAzRDAwOTgw
MjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNzIwMjhCOTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklu
bGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMTE1MCw2ICsxMTUwLDEwIEBACiAJCUE3Q0EzQUU4MTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dl
YWtNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
Q0EzQUUyMTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuaCAqLzsgfTsKIAkJQTdDQTNBRUIx
N0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0EzQUU5MTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFr
TWFwRGF0YS5jcHAgKi87IH07CiAJCUE3Q0EzQUVDMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFw
RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdD
QTNBRUExN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmggKi87IH07CisJCUE3RDgwMUE0
MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTExODgwRDY2RTAwMjZDMzlC
IC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi87IH07CisJCUE3RDgwMUE1MTg4MEQ2NkUwMDI2
QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhl
Y3V0YWJsZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlBN0Q4MDFBODE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTYxODgwRDZBODAw
MjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCAqLzsgfTsKKwkJQTdEODAxQTkxODgwRDZBODAwMjZD
MzlCIC8qIEpTQ0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBN0Q4MDFBNzE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBN0Q4OUNGMjE3
QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4OUNFMzE3QTBCOENDMDA3NzNBRDggLyogREZH
QmFzaWNCbG9jay5jcHAgKi87IH07CiAJCUE3RDg5Q0YzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdC
bG9ja0luc2VydGlvblNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBN0Q4OUNFNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25T
ZXQuY3BwICovOyB9OwogCQlBN0Q4OUNGNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNl
cnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3RDg5Q0U1MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNDYyLDYgKzI0
NjYsOCBAQAogCQlBNzEyMzZFNDExOTVGMzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVE9wY29kZXMzMl82NC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MThGNjFBMTE3NTRBMjEwMDI0NjVB
NyAvKiBSZWdFeHBKaXRUYWJsZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVnRXhwSml0VGFibGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MThGODIx
MTE3OEVCNEIwMDI0NjVBNyAvKiBjcmVhdGVfcmVnZXhfdGFibGVzICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IGZpbGVF
bmNvZGluZyA9IDQ7IHBhdGggPSBjcmVhdGVfcmVnZXhfdGFibGVzOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBNzFEQTgwRDE4ODBENzFGMDBEMUYyOTkgLyogZ2VuZXJhdGUtanMtYnVp
bHRpbnMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSAiZ2VuZXJhdGUtanMt
YnVpbHRpbnMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzFEQTgwRTE4ODBEQkFC
MDBEMUYyOTkgLyogSlNTdHJpbmdJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTU3RyaW5nSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NzIwMjhCNDE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI1MTc5NzYwMUUwMDk4MDI4QyAvKiBK
U0NUZXN0UnVubmVyVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlND
VGVzdFJ1bm5lclV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI5
MTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0Z1bmN0aW9uSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjU5MCw2ICsyNTk2LDExIEBACiAJCUE3Q0EzQUUyMTdEQTQxQUUwMDY1MzhB
RiAvKiBKU1dlYWtNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWFr
TWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Q0EzQUU5MTdEQTUxNjgwMDY1
MzhBRiAvKiBXZWFrTWFwRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWFrTWFwRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Q0Ez
QUVBMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWFrTWFwRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBN0Q4MDFBMDE4ODBENjZFMDAyNkMzOUIgLyogQXJyYXkucHJvdG90eXBlLmpzICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gQXJyYXkucHJvdG90eXBlLmpzOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFBMTE4ODBENjZFMDAyNkMzOUIgLyogQnVp
bHRpbkV4ZWN1dGFibGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3
RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVpbHRpbkV4ZWN1dGFibGVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlu
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NCdWlsdGlucy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUE3MTg4MEQ2QTgwMDI2QzM5
QiAvKiBKU0NCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NC
dWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0Q4OUNFMzE3QTBCOEND
MDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBERkdCYXNpY0Jsb2NrLmNwcDsgcGF0aCA9IGRmZy9ERkdCYXNpY0Jsb2NrLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdEODlDRTQxN0EwQjhDQzAwNzczQUQ4
IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcDsgcGF0aCA9IGRmZy9ERkdCbG9ja0lu
c2VydGlvblNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RDg5Q0U1MTdB
MEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBERkdCbG9ja0luc2VydGlvblNldC5oOyBwYXRoID0gZGZnL0RGR0Js
b2NrSW5zZXJ0aW9uU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTI2LDYg
KzI5MzcsNyBAQAogCQkJCTg2MDRGNEYyMTQzQTZDNDQwMEIyOTVGNSAvKiBDaGFuZ2VMb2cgKi8s
CiAJCQkJRjY5MkE4NTQwMjU1NTk3RDAxRkY2MEY3IC8qIGNyZWF0ZV9oYXNoX3RhYmxlICovLAog
CQkJCUE3MThGODIxMTE3OEVCNEIwMDI0NjVBNyAvKiBjcmVhdGVfcmVnZXhfdGFibGVzICovLAor
CQkJCUE3MURBODBEMTg4MEQ3MUYwMEQxRjI5OSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAqLywK
IAkJCQk0NUUxMkQ4ODA2QTQ5QjBGMDBFOURGODQgLyoganNjLmNwcCAqLywKIAkJCQlGNjhFQkI4
QzAyNTVENEM2MDFGRjYwRjcgLyogY29uZmlnLmggKi8sCiAJCQkJRjVDMjkwRTYwMjg0Rjk4RTAx
ODYzNUNBIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggKi8sCkBAIC0yOTM0LDYgKzI5NDYsNyBA
QAogCQkJCTE0MzJFQkQ3MEEzNENBRDQwMDcxN0I5RiAvKiBBUEkgKi8sCiAJCQkJOTY4OENCMTIw
RUQxMkI0RTAwMUQ2NDlGIC8qIGFzc2VtYmxlciAqLywKIAkJCQlBNTRDRjJFQTE4NEVBNzM5MDAy
MzdGMTkgLyogYmluZGluZ3MgKi8sCisJCQkJQTdEODAxOUYxODgwRDY2RTAwMjZDMzlCIC8qIGJ1
aWx0aW5zICovLAogCQkJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLywK
IAkJCQk3RTM5RDgxRDBFQzM4RUZBMDAzQUYxMUEgLyogYnl0ZWNvbXBpbGVyICovLAogCQkJCTFD
OTA1MTNFMEJBOUU4ODMwMDgxRTlEMCAvKiBDb25maWd1cmF0aW9ucyAqLywKQEAgLTM1MDksNiAr
MzUyMiw4IEBACiAJCTY1MEZERjhEMDlEMEZDQTcwMDc2OUU1NCAvKiBEZXJpdmVkIFNvdXJjZXMg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUE3RDgwMUE2
MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgKi8sCisJCQkJQTdEODAxQTcxODgw
RDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggKi8sCiAJCQkJQkMxOEM1MjMwRTE2RkM4QTAw
QjM0NDYwIC8qIEFycmF5UHJvdG90eXBlLmx1dC5oICovLAogCQkJCUJDRDIwM0U3MEUxNzE4RjQw
MDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmx1dC5oICovLAogCQkJCUE1MTNFNUM2MTg1Rjk0MzYw
MDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICovLApAQCAtMzgxMSw2ICszODI2LDcg
QEAKIAkJCQlBNzkwREQ2QTE4MkY0OTk3MDA1ODg4MDcgLyogSlNTZXRJdGVyYXRvci5oICovLAog
CQkJCUJDMDJFOUI2MEUxODQyRkEwMDBGOTI5NyAvKiBKU1N0cmluZy5jcHAgKi8sCiAJCQkJRjY5
MkE4NjIwMjU1NTk3RDAxRkY2MEY3IC8qIEpTU3RyaW5nLmggKi8sCisJCQkJQTcxREE4MEUxODgw
REJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oICovLAogCQkJCTg2RTg1NTM4MTExQjk5
NjgwMDFBRjUxRSAvKiBKU1N0cmluZ0J1aWxkZXIuaCAqLywKIAkJCQkyNjAwQjVBNDE1MkJBQUE3
MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuY3BwICovLAogCQkJCTI2MDBCNUE1MTUyQkFBQTcw
MDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5oICovLApAQCAtNDU2MSw2ICs0NTc3LDE2IEBACiAJ
CQlwYXRoID0gcmVtb3RlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQTdE
ODAxOUYxODgwRDY2RTAwMjZDMzlCIC8qIGJ1aWx0aW5zICovID0geworCQkJaXNhID0gUEJYR3Jv
dXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlBN0Q4MDFBMDE4ODBENjZFMDAyNkMzOUIgLyogQXJy
YXkucHJvdG90eXBlLmpzICovLAorCQkJCUE3RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWls
dGluRXhlY3V0YWJsZXMuY3BwICovLAorCQkJCUE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBC
dWlsdGluRXhlY3V0YWJsZXMuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gYnVpbHRpbnM7CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8K
IAogLyogQmVnaW4gUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtNDYwNiwxMSAr
NDYzMiwxMSBAQAogCQkJCTg2QUREMTQ1MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVDRUVFMTUxODdGM0JBRDAwRTU1Qzk5IC8qIEluc3Bl
Y3RvckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUMwMjg1RDE3MTc5NjY4MDAzNTFFMzUg
LyogQVJNdjdET3Bjb2RlLmggaW4gSGVhZGVycyAqLywKLSAJCQkJMkE2ODI5NUIxODc1RjgwNTAw
QjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovLAotICAgICAgICAgICAg
ICAgIDJBNEVDOTBDMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTJBNjgyOTVCMTg3NUY4MDUwMEI2QzNFMiAvKiBDb3B5V3JpdGVCYXJy
aWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkyQTRFQzkwQzE4NjBENkMyMDA5NEY3ODIgLyogV3Jp
dGVCYXJyaWVyQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTU5MzJBODE4M0M1QTI2MDBB
MUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTMyNDM5MzE4NTY5
NzA5MDAyRUQ2OTIgLyogQ29kZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3MucHkgaW4gSGVhZGVy
cyAqLywKLSAJCQkJQTUzMjQzOTIxODU2OTcwOTAwMkVENjkyIC8qIENvZGVHZW5lcmF0b3JJbnNw
ZWN0b3IucHkgaW4gSGVhZGVycyAqLywKKwkJCQlBNTMyNDM5MjE4NTY5NzA5MDAyRUQ2OTIgLyog
Q29kZUdlbmVyYXRvckluc3BlY3Rvci5weSBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTRGMTdF
RTI3NDkwMEFCQjIxNyAvKiBUZW1wUmVnaXN0ZXJTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1
MEU0QjY0MTg4MDlERDUwMDY4QTQ2RCAvKiBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkVCNThDMTUxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxp
bmdTY29wZS5oIGluIEhlYWRlcnMgKi8sCkBAIC00NjIyLDcgKzQ2NDgsNyBAQAogCQkJCTBGODMz
NUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNTg0MEUyOTE4N0NBNUU2MDA4NDNCMTAgLyogaW5saW5lLWFuZC1taW5pZnkt
c3R5bGVzaGVldHMtYW5kLXNjcmlwdHMucHkgaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUyQjE4
N0NBNzVCMDA4NDNCMTAgLyoganNtaW4ucHkgaW4gSGVhZGVycyAqLywKLSAJCQkJQTUzMjQzOTgx
ODU2QTQ4OTAwMkVENjkyIC8qIEluc3BlY3RvckpTLmpzb24gaW4gSGVhZGVycyAqLywKKwkJCQlB
NTMyNDM5ODE4NTZBNDg5MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlMuanNvbiBpbiBIZWFkZXJzICov
LAogCQkJCUE1ODQwRTJBMTg3Q0E3NTkwMDg0M0IxMCAvKiB4eGQucGwgaW4gSGVhZGVycyAqLywK
IAkJCQlGRUEwODYyMDE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTdBOEFGMzUxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmggaW4gSGVh
ZGVycyAqLywKQEAgLTQ3MzMsNyArNDc1OSw3IEBACiAJCQkJQTFBMDA5QzAxODMxQTIyRDAwQ0Y4
NzExIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUM5REM1
MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY0ODUzMjgxODdERkRFQzAwODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5LmggaW4g
SGVhZGVycyAqLywKLSAgICAgICAgICAgICAgICBBNTkzQ0Y4NzE4NDAzOENBMDBCRkNFMjcgLyog
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU5M0NGODcxODQw
MzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMjU2QzM2MTYyN0IwQUQwMDdGMjc4MyAvKiBERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93
UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5NEIxNEMzQ0QyRjAwN0Mz
REIxIC8qIERGR0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NTgxNEVG
OTBBMjAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTQ4NzIsNiAr
NDg5OCw3IEBACiAJCQkJMEZFQTBBMUQxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVh
cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMUYxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1OTQ1NTkzMTgyNDc0
NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCUE3RDgwMUE5MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZFQTBBMEExNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY0ODUzMkExODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292ZXJ5
T3Bjb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEEyMzE3MDk2MDY5MDBCQjcyMkMgLyog
RlRMQ29tbW9uVmFsdWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTQ5NDYsNiArNDk3Myw3IEBACiAJ
CQkJQkMxOEM0MEYwRTE2RjVDRDAwQjM0NDYwIC8qIElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUMyNUY4QkNFMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk5MTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ0hl
YWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdEODAxQTUxODgwRDY2RTAwMjZDMzlCIC8qIEJ1
aWx0aW5FeGVjdXRhYmxlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOUExNUVEOEU0NjAw
RjE2N0IyIC8qIEluZGV4aW5nSGVhZGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZC
N0YzOUIxNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZDRUZBQjAxODA1Q0E2RDAwNDcyQ0U0IC8qIEluaXRpYWxpemVMTFZNLmggaW4gSGVhZGVy
cyAqLywKQEAgLTUyMTgsNiArNTI0Niw3IEBACiAJCQkJQTUzMjQzODgxODU2ODMzNTAwMkVENjky
IC8qIEluc3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzE4QzQ1NjBFMTZGNUNEMDBCMzQ0NjAgLyogUHJvdGVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTQ3NEMzM0IxNkFBMkQ5NTAwNjJGMDFEIC8qIFByb3RvdHlwZU1hcC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTcxREE4MEYxODgwREJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQxNENBN0REOTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXREaXJl
Y3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDMDA4Q0U3MTg3NjMxQjYwMDk1NUMy
NCAvKiBNaWNyb3Rhc2suaCBpbiBIZWFkZXJzICovLApAQCAtNTgzNiw2ICs1ODY1LDcgQEAKIAkJ
CQlBN0Q4OUNGMjE3QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNzBCMDgzMjE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDg5Q0YzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9j
a0luc2VydGlvblNldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBN0Q4MDFBNDE4ODBENjZFMDAy
NkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUM5
REM0MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkQ4MkUyMTE0MTcyQ0UzMDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0aWVzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRkZDOTU3MTRFRjkwQTAwMEM3MjUzMiAvKiBERkdDRkFQaGFz
ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU4NTIsNiArNTg4Miw3IEBACiAJCQkJMEZGRkM5NTkx
NEVGOTBBNjAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MkZDNzcyMTZFMTJGNzEwMDM4RDk3NiAvKiBERkdEQ0VQaGFzZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjhGMkI5OTE3MkYwNEZGMDA3REJEQTUgLyogREZHRGVzaXJlZElkZW50aWZpZXJzLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUE3RDgwMUE4MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWls
dGlucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzNFMTMzMDE3OTYyNENEMDBFNERFQTggLyog
REZHRGVzaXJlZFN0cnVjdHVyZUNoYWlucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkMwRjdD
RDE3QkJGQzVCMDA0NjRGRTQgLyogREZHRGVzaXJlZFRyYW5zaXRpb25zLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGRTg1MzRCMTcyM0NEQTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2lu
dHMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01OTc2LDcgKzYwMDcsNyBAQAogCQkJCTBGNkIxQ0M1
MTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExVbndpbmRJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGOUQzMzlBMTgwM0FEQjcwMDczQzJCQyAvKiBGVExTdGFja01hcHMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEZFQTBBMTYxNzA2QkI5MDAwQkI3MjJDIC8qIEZUTFN0YXRlLmNwcCBpbiBTb3Vy
Y2VzICovLAotIAkJCQk3QzAwOENEMjE4NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9taXNlRnVuY3Rp
b25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDMDA4Q0QyMTg2RjhBOTMwMDk1NUMyNCAvKiBK
U1Byb21pc2VGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2QjFDQjUxODVGQzlF
OTAwODQ1RDk3IC8qIEZUTEpTQ2FsbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJFMTE3
MTc4RTFDMDA2OTBDN0YgLyogRlRMVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1OTND
RjdDMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9B
cnJheS5wcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXku
cHJvdG90eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlYjQyZjVjYzQzM2YxNjM2MzQzYmZjOTgyYWEyYWFm
YjMzNmU5NDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQXJyYXkucHJvdG90eXBlLmpzCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlvbiBldmVyeShjYWxsYmFjayAvKiwg
dGhpc0FyZyAqLykgeworICAgICJ1c2Ugc3RyaWN0IjsKKyAgICBpZiAodGhpcyA9PT0gbnVsbCkK
KyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1
aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCIpOworICAgIAorICAgIGlmICh0aGlzID09PSB1
bmRlZmluZWQpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUu
ZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVmaW5lZCIpOworICAgIAorICAg
IHZhciBhcnJheSA9IEBPYmplY3QodGhpcyk7CisgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0
aCA+Pj4gMDsKKyAgICAKKyAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKQor
ICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxi
YWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOworCisgICAgdmFyIHRoaXNBcmcgPSBhcmd1bWVudHMu
bGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDsKKyAgICAKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmICghKGkgaW4gYXJyYXkpKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghY2FsbGJhY2suQGNhbGwodGhpc0Fy
ZywgYXJyYXlbaV0sIGksIGFycmF5KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQxZGJi
NWY5MjI1ZTI4YTEyZWQzZDE3OThmZjE3NjhlNDM2NzFhNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCkBAIC0w
LDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIK
KworI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisj
aW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKKyNpbmNsdWRlICJQYXJzZXIuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK0J1aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKFZN
JiB2bSkKKyAgICA6IG1fdm0odm0pCisjZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0Vf
TUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgLCBtXyMjbmFtZSMjU291cmNlKG1h
a2VTb3VyY2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoc18jI25hbWUsIGxlbmd0aCks
IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCI8YnVpbHRpbj4iKSkpCisgICAgSlNDX0ZP
UkVBQ0hfQlVJTFRJTihJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYg
RVhQT1NFX0JVSUxUSU5fU1RSSU5HUworeworfQorCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCit7CisgICAgSlNUZXh0UG9z
aXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZTsKKyAgICBQYXJzZXJFcnJvciBlcnJvcjsK
KyAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oJm1f
dm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBKU1BhcnNlQnVpbHRpbiwgSlNQYXJzZVByb2dy
YW1Db2RlLCBlcnJvciwgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOworCisgICAgaWYgKCFw
cm9ncmFtKSB7CisgICAgICAgIGRhdGFMb2coIkZhdGFsIGVycm9yIGNvbXBpbGluZyBidWlsdGlu
IGZ1bmN0aW9uICciLCBuYW1lLnN0cmluZygpLCAiJzogIiwgZXJyb3IubV9tZXNzYWdlKTsKKyAg
ICAgICAgQ1JBU0goKTsKKyAgICB9CisKKyAgICBTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVtZW50
ID0gcHJvZ3JhbS0+c2luZ2xlU3RhdGVtZW50KCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0
YXRlbWVudCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudC0+aXNFeHByU3RhdGVt
ZW50KCkpOworICAgIEV4cHJlc3Npb25Ob2RlKiBmdW5jRXhwciA9IHN0YXRpY19jYXN0PEV4cHJT
dGF0ZW1lbnROb2RlKj4oZXhwclN0YXRlbWVudCktPmV4cHIoKTsKKyAgICBSRUxFQVNFX0FTU0VS
VChmdW5jRXhwcik7CisgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHItPmlzRnVuY0V4cHJOb2Rl
KCkpOworICAgIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkgPSBzdGF0aWNfY2FzdDxGdW5jRXhwck5v
ZGUqPihmdW5jRXhwciktPmJvZHkoKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghcHJvZ3JhbS0+aGFz
Q2FwdHVyZWRWYXJpYWJsZXMoKSk7CisgICAgCisgICAgYm9keS0+c2V0RW5kUG9zaXRpb24ocG9z
aXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keSk7CisgICAg
UkVMRUFTRV9BU1NFUlQoYm9keS0+aWRlbnQoKS5pc051bGwoKSk7CisgICAgCisgICAgLy8gVGhp
cyBmdW5jdGlvbiBhc3N1bWVzIGFuIGlucHV0IHN0cmluZyB0aGF0IHdvdWxkIHJlc3VsdCBpbiBh
IHNpbmdsZSBhbm9ueW1vdXMgZnVuY3Rpb24gZXhwcmVzc2lvbi4KKyAgICBib2R5LT5zZXRFbmRQ
b3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKKyAgICBSRUxFQVNFX0FTU0VSVChi
b2R5KTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNsb3NlZFZhcmlhYmxlIDogcHJvZ3JhbS0+Y2xv
c2VkVmFyaWFibGVzKCkpIHsKKyAgICAgICAgaWYgKGNsb3NlZFZhcmlhYmxlID09IG1fdm0ucHJv
cGVydHlOYW1lcy0+YXJndW1lbnRzLmltcGwoKSkKKyAgICAgICAgY29udGludWU7CisgICAgICAg
IAorICAgICAgICBpZiAoY2xvc2VkVmFyaWFibGUgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT51bmRl
ZmluZWRLZXl3b3JkLmltcGwoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBSRUxF
QVNFX0FTU0VSVChjbG9zZWRWYXJpYWJsZS0+aXNFbXB0eVVuaXF1ZSgpKTsKKyAgICB9CisgICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJm1fdm0sIHNvdXJjZSwgYm9keSwgdHJ1ZSwgVW5s
aW5rZWRCdWlsdGluRnVuY3Rpb24pOworICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+bV9uYW1lVmFs
dWUuc2V0KG1fdm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwganNTdHJpbmcoJm1fdm0sIG5hbWUuc3Ry
aW5nKCkpKTsKKyAgICByZXR1cm4gZnVuY3Rpb25FeGVjdXRhYmxlOworfQorCisjZGVmaW5lIERF
RklORV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpuYW1lIyNFeGVj
dXRhYmxlKCkgXAore1wKKyAgICBpZiAoIW1fIyNuYW1lIyNFeGVjdXRhYmxlKVwKKyAgICAgICAg
bV8jI25hbWUjI0V4ZWN1dGFibGUgPSBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShtXyMjbmFtZSMj
U291cmNlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPmZ1bmN0aW9uTmFtZSk7XAorICAgIHJldHVybiBt
XyMjbmFtZSMjRXhlY3V0YWJsZS5nZXQoKTtcCit9CitKU0NfRk9SRUFDSF9CVUlMVElOKERFRklO
RV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX1NPVVJDRVMKKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRh
Ymxlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQ5YTE5ZTI2MTUwNzk0YTY2OWVjOThlMzk5YmY2N2Y3ZjcxMDY0
MTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbkV4ZWN1dGFibGVzLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQnVpbHRpbkV4ZWN1dGFibGVzX2gKKyNk
ZWZpbmUgQnVpbHRpbkV4ZWN1dGFibGVzX2gKKworI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisj
aW5jbHVkZSAiU291cmNlQ29kZS5oIgorI2luY2x1ZGUgIldlYWsuaCIKKyNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU7CitjbGFzcyBJZGVudGlmaWVyOworY2xhc3MgVk07CisKK2NsYXNzIEJ1aWx0
aW5FeGVjdXRhYmxlcyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8QnVpbHRpbkV4
ZWN1dGFibGVzPiBjcmVhdGUoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBCdWlsdGluRXhlY3V0YWJsZXModm0pKTsKKyAgICB9CisgICAgCisjZGVmaW5lIEVYUE9T
RV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCitjb25zdCBTb3Vy
Y2VDb2RlJiBuYW1lIyNTb3VyY2UoKSB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CisgICAg
CisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTihFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1
bmRlZiBFWFBPU0VfQlVJTFRJTl9TT1VSQ0VTCisgICAgCitwcml2YXRlOgorICAgIEJ1aWx0aW5F
eGVjdXRhYmxlcyhWTSYpOworICAgIFZNJiBtX3ZtOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShjb25zdCBTb3VyY2VDb2RlJiwgY29uc3Qg
SWRlbnRpZmllciYpOworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFt
ZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpXAorICAgIFNvdXJjZUNvZGUgbV8jI25hbWUjI1NvdXJj
ZTsgXAorICAgIFdlYWs8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+IG1fIyNuYW1lIyNFeGVj
dXRhYmxlOworICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4oREVDTEFSRV9CVUlMVElOX1NPVVJDRV9N
RU1CRVJTKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworfTsKKworfQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
aW5kZXggMjYzZWM3Y2FkZjRmNzljYTgxMDI0NDFlNjJiZjJhMDViNWRkYzNmMi4uNzUxNTA2NTQy
Mzc2ZDdlZGM1OTlhYTAwZjliMTI2ODVjZGEzNTJjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTQzLDExICs0MywxMyBAQAogI2luY2x1ZGUg
IkpJVC5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgi
Ci0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5j
bHVkZSAiTExJbnRFbnRyeXBvaW50LmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5o
IgorI2luY2x1ZGUgIk5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJPYmplY3RD
b25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQb2x5bW9y
cGhpY1B1dEJ5SWRMaXN0LmgiCiAjaW5jbHVkZSAiUmVkdWNlV2hpdGVzcGFjZS5oIgpAQCAtMTU2
OSw3ICsxNTcxLDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3du
ZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW4KIAogICAgIHNldENvbnN0YW50
UmVnaXN0ZXJzKHVubGlua2VkQ29kZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVycygpKTsKICAgICBp
ZiAodW5saW5rZWRDb2RlQmxvY2stPnVzZXNHbG9iYWxPYmplY3QoKSkKLSAgICAgICAgbV9jb25z
dGFudFJlZ2lzdGVyc1t1bmxpbmtlZENvZGVCbG9jay0+Z2xvYmFsT2JqZWN0UmVnaXN0ZXIoKS5v
ZmZzZXQoKV0uc2V0KCptX3ZtLCBvd25lckV4ZWN1dGFibGUsIG1fZ2xvYmFsT2JqZWN0LmdldCgp
KTsKKyAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1t1bmxpbmtlZENvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0UmVnaXN0ZXIoKS50b0NvbnN0YW50SW5kZXgoKV0uc2V0KCptX3ZtLCBvd25lckV4ZWN1
dGFibGUsIG1fZ2xvYmFsT2JqZWN0LmdldCgpKTsKICAgICBtX2Z1bmN0aW9uRGVjbHMucmVzaXpl
VG9GaXQodW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpKTsKICAgICBm
b3IgKHNpemVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVj
bHMoKSwgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rp
b25EZWNsKGkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmlu
ZGV4IDY4YmMwMzc5ZjU3NDRjOWE4Zjc0MzFkYjY0ZjhhYjU0ZTZlMTA1M2YuLjQ5OTVjNTJjZjhi
MmIxYjRkNjI4MDQ1M2VlZDI3Yzc3NGE0OTU1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTU2LDcgKzU2LDYgQEAKICNpbmNsdWRlICJIYW5kbGVy
SW5mby5oIgogI2luY2x1ZGUgIk9iamVjdEFsbG9jYXRpb25Qcm9maWxlLmgiCiAjaW5jbHVkZSAi
T3B0aW9ucy5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQdXRQcm9wZXJ0
eVNsb3QuaCIKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCmluZGV4IDFkZmI1YWM2YWQ5MDkzZjhmODExMDFlZjdmMmU2MTIzMTFhYzE5MzkuLjQz
MzkwZDk2NWZjNTAzNDAxNmY3YmZmZjIzZTY4YmIxZTA1NDU1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNDks
OSArNDksOSBAQCBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOjpzX2lu
Zm8gPSB7ICJVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2siLAogY29uc3QgQ2xhc3NJbmZvIFVubGlu
a2VkRXZhbENvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRFdmFsQ29kZUJsb2NrIiwgJkJh
c2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZEV2YWxDb2RlQmxv
Y2spIH07CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6c19pbmZv
ID0geyAiVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaykgfTsKIAotc3RhdGlj
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2soVk0m
IHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIERlYnVnZ2VyTW9kZSBk
ZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJv
cikKK3N0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1bmN0aW9uQ29k
ZUJsb2NrKFZNJiB2bSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1
Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBVbmxpbmtl
ZEZ1bmN0aW9uS2luZCBmdW5jdGlvbktpbmQsIFBhcnNlckVycm9yJiBlcnJvcikKIHsKLSAgICBS
ZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSA9IHBhcnNlPEZ1bmN0aW9uQm9keU5vZGU+KCZ2
bSwgc291cmNlLCBleGVjdXRhYmxlLT5wYXJhbWV0ZXJzKCksIGV4ZWN1dGFibGUtPm5hbWUoKSwg
ZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2VTdHJpY3QgOiBKU1BhcnNl
Tm9ybWFsLCBKU1BhcnNlRnVuY3Rpb25Db2RlLCBlcnJvcik7CisgICAgUmVmUHRyPEZ1bmN0aW9u
Qm9keU5vZGU+IGJvZHkgPSBwYXJzZTxGdW5jdGlvbkJvZHlOb2RlPigmdm0sIHNvdXJjZSwgZXhl
Y3V0YWJsZS0+cGFyYW1ldGVycygpLCBleGVjdXRhYmxlLT5uYW1lKCksIGV4ZWN1dGFibGUtPnRv
U3RyaWN0bmVzcygpLCBKU1BhcnNlRnVuY3Rpb25Db2RlLCBlcnJvcik7CiAKICAgICBpZiAoIWJv
ZHkpIHsKICAgICAgICAgQVNTRVJUKGVycm9yLm1fdHlwZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JO
b25lKTsKQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sq
IGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZtLCBVbmxpbmtlZEZ1bmMKICAgICBib2R5
LT5maW5pc2hQYXJzaW5nKGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFt
ZSgpLCBleGVjdXRhYmxlLT5mdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGUoKSk7CiAgICAgZXhl
Y3V0YWJsZS0+cmVjb3JkUGFyc2UoYm9keS0+ZmVhdHVyZXMoKSwgYm9keS0+aGFzQ2FwdHVyZWRW
YXJpYWJsZXMoKSk7CiAgICAgCi0gICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0
ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLCBF
eGVjdXRhYmxlSW5mbyhib2R5LT5uZWVkc0FjdGl2YXRpb24oKSwgYm9keS0+dXNlc0V2YWwoKSwg
Ym9keS0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCkpOworICAgIFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2s6OmNyZWF0ZSgmdm0sIEZ1bmN0aW9uQ29kZSwgRXhlY3V0YWJsZUluZm8oYm9keS0+bmVlZHNB
Y3RpdmF0aW9uKCksIGJvZHktPnVzZXNFdmFsKCksIGJvZHktPmlzU3RyaWN0TW9kZSgpLCBraW5k
ID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5j
dGlvbikpOwogICAgIE93blB0cjxCeXRlY29kZUdlbmVyYXRvcj4gZ2VuZXJhdG9yKGFkb3B0UHRy
KG5ldyBCeXRlY29kZUdlbmVyYXRvcih2bSwgYm9keS5nZXQoKSwgcmVzdWx0LCBkZWJ1Z2dlck1v
ZGUsIHByb2ZpbGVyTW9kZSkpKTsKICAgICBlcnJvciA9IGdlbmVyYXRvci0+Z2VuZXJhdGUoKTsK
ICAgICBib2R5LT5kZXN0cm95RGF0YSgpOwpAQCAtODIsMTMgKzgyLDE0IEBAIHVuc2lnbmVkIFVu
bGlua2VkQ29kZUJsb2NrOjphZGRPckZpbmRDb25zdGFudChKU1ZhbHVlIHYpCiAgICAgcmV0dXJu
IGFkZENvbnN0YW50KHYpOwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlLCBib29sIGlzRnJvbUds
b2JhbENvZGUpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlLCBib29sIGlzRnJvbUdsb2JhbENvZGUsIFVu
bGlua2VkRnVuY3Rpb25LaW5kIGtpbmQpCiAgICAgOiBCYXNlKCp2bSwgc3RydWN0dXJlKQogICAg
ICwgbV9udW1DYXB0dXJlZFZhcmlhYmxlcyhub2RlLT5jYXB0dXJlZFZhcmlhYmxlQ291bnQoKSkK
ICAgICAsIG1fZm9yY2VVc2VzQXJndW1lbnRzKG5vZGUtPnVzZXNBcmd1bWVudHMoKSkKICAgICAs
IG1faXNJblN0cmljdENvbnRleHQobm9kZS0+aXNTdHJpY3RNb2RlKCkpCiAgICAgLCBtX2hhc0Nh
cHR1cmVkVmFyaWFibGVzKG5vZGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpCiAgICAgLCBtX2lz
RnJvbUdsb2JhbENvZGUoaXNGcm9tR2xvYmFsQ29kZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rp
b24oa2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbikKICAgICAsIG1fbmFtZShub2RlLT5p
ZGVudCgpKQogICAgICwgbV9pbmZlcnJlZE5hbWUobm9kZS0+aW5mZXJyZWROYW1lKCkpCiAgICAg
LCBtX3BhcmFtZXRlcnMobm9kZS0+cGFyYW1ldGVycygpKQpAQCAtMTY2LDcgKzE2Nyw3IEBAIFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2Rl
QmxvY2tGb3IoVk0mIHZtLCBjb25zCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2so
dm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lhbGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2Zp
bGVyTW9kZSwgZXJyb3IpOworICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9
IGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2sodm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lhbGl6YXRp
b25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/
IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgZXJyb3Ip
OwogICAgIAogICAgIGlmIChlcnJvci5tX3R5cGUgIT0gUGFyc2VyRXJyb3I6OkVycm9yTm9uZSkK
ICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMTAsNiArMjExLDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6
OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBl
IGNvZGUKICAgICAsIG1faXNTdHJpY3RNb2RlKGluZm8ubV9pc1N0cmljdE1vZGUpCiAgICAgLCBt
X2lzQ29uc3RydWN0b3IoaW5mby5tX2lzQ29uc3RydWN0b3IpCiAgICAgLCBtX2hhc0NhcHR1cmVk
VmFyaWFibGVzKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpbmZvLm1faXNCdWls
dGluRnVuY3Rpb24pCiAgICAgLCBtX2ZpcnN0TGluZSgwKQogICAgICwgbV9saW5lQ291bnQoMCkK
ICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCBiOWRhZTJkNWM2OWM3OWNlYWFh
ODAyM2QyYTNhMWYyNmQ0NjA5NDNiLi5hYmY2Y2YzNWI5MzA2YTRmN2EzMDFhYjBkZjc2NjZlYzYx
MmUzNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaApAQCAtNjYsMjYgKzY2LDM1IEBAIHR5cGVkZWYgdW5zaWduZWQgVW5saW5r
ZWRPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTsKIHR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRMTElu
dENhbGxMaW5rSW5mbzsKIAogc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKLSAgICBFeGVjdXRhYmxl
SW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1v
ZGUsIGJvb2wgaXNDb25zdHJ1Y3RvcikKKyAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0
aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1
Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbikKICAgICAgICAgOiBtX25lZWRzQWN0aXZhdGlv
bihuZWVkc0FjdGl2YXRpb24pCiAgICAgICAgICwgbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAg
ICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVj
dG9yKGlzQ29uc3RydWN0b3IpCisgICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0
aW5GdW5jdGlvbikKICAgICB7CiAgICAgfQotICAgIGJvb2wgbV9uZWVkc0FjdGl2YXRpb247Ci0g
ICAgYm9vbCBtX3VzZXNFdmFsOwotICAgIGJvb2wgbV9pc1N0cmljdE1vZGU7Ci0gICAgYm9vbCBt
X2lzQ29uc3RydWN0b3I7CisgICAgYm9vbCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CisgICAgYm9v
bCBtX3VzZXNFdmFsIDogMTsKKyAgICBib29sIG1faXNTdHJpY3RNb2RlIDogMTsKKyAgICBib29s
IG1faXNDb25zdHJ1Y3RvciA6IDE7CisgICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsK
K307CisKK2VudW0gVW5saW5rZWRGdW5jdGlvbktpbmQgeworICAgIFVubGlua2VkTm9ybWFsRnVu
Y3Rpb24sCisgICAgVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sCiB9OwogCiBjbGFzcyBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgorICAgIGZyaWVu
ZCBjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXM7CiAgICAgZnJpZW5kIGNsYXNzIENvZGVDYWNoZTsK
KyAgICBmcmllbmQgY2xhc3MgVk07CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKLSAgICBzdGF0
aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSogbm9kZSwgYm9vbCBpc0Zyb21HbG9iYWxD
b2RlID0gZmFsc2UpCisgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVh
dGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5v
ZGUsIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgdW5saW5rZWRG
dW5jdGlvbktpbmQpCiAgICAgewotICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
aW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZT4odm0tPmhlYXApKSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIG5vZGUsIGlz
RnJvbUdsb2JhbENvZGUpOworICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5z
dGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZT4odm0tPmhlYXApKSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIG5vZGUsIGlzRnJv
bUdsb2JhbENvZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kKTsKICAgICAgICAgaW5zdGFuY2UtPmZp
bmlzaENyZWF0aW9uKCp2bSk7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CkBAIC05
OSw2ICsxMDgsMTQgQEAgcHVibGljOgogICAgIH0KICAgICBzaXplX3QgcGFyYW1ldGVyQ291bnQo
KSBjb25zdDsKICAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9p
c0luU3RyaWN0Q29udGV4dDsgfQorICAgIEpTUGFyc2VyU3RyaWN0bmVzcyB0b1N0cmljdG5lc3Mo
KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1faXNCdWlsdGluRnVuY3Rpb24pCisgICAgICAg
ICAgICByZXR1cm4gSlNQYXJzZUJ1aWx0aW47CisgICAgICAgIGlmIChtX2lzSW5TdHJpY3RDb250
ZXh0KQorICAgICAgICAgICAgcmV0dXJuIEpTUGFyc2VTdHJpY3Q7CisgICAgICAgIHJldHVybiBK
U1BhcnNlTm9ybWFsOworICAgIH0KICAgICBGdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGUgZnVu
Y3Rpb25OYW1lSXNJblNjb3BlVG9nZ2xlKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbk5hbWVJ
c0luU2NvcGVUb2dnbGU7IH0KIAogICAgIHVuc2lnbmVkIGZpcnN0TGluZU9mZnNldCgpIGNvbnN0
IHsgcmV0dXJuIG1fZmlyc3RMaW5lT2Zmc2V0OyB9CkBAIC0xNDIsOCArMTU5LDEwIEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJbW1vcnRhbFN0cnVjdHVyZSA9IHRydWU7CiAg
ICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAorICAgIGJvb2wgaXNCdWlsdGluRnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisKIHByaXZhdGU6
Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBT
b3VyY2VDb2RlJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSk7Cisg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSwgVW5saW5r
ZWRGdW5jdGlvbktpbmQpOwogICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrPiBtX2NvZGVCbG9ja0ZvckNhbGw7CiAgICAgV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2s+IG1fY29kZUJsb2NrRm9yQ29uc3RydWN0OwogCkBAIC0xNTIsNiArMTcxLDcg
QEAgcHJpdmF0ZToKICAgICBib29sIG1faXNJblN0cmljdENvbnRleHQgOiAxOwogICAgIGJvb2wg
bV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgYm9vbCBtX2lzRnJvbUdsb2JhbENvZGUg
OiAxOworICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CiAKICAgICBJZGVudGlmaWVy
IG1fbmFtZTsKICAgICBJZGVudGlmaWVyIG1faW5mZXJyZWROYW1lOwpAQCAtMzE5LDYgKzMzOSw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbihib29sIGlz
TnVtZXJpY0NvbXBhcmVGdW5jdGlvbikgeyBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbiA9IGlz
TnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQogICAgIGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb247IH0KIAorICAg
IGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0
aW9uOyB9CisgICAgCiAgICAgdm9pZCBzaHJpbmtUb0ZpdCgpCiAgICAgewogICAgICAgICBtX2p1
bXBUYXJnZXRzLnNocmlua1RvRml0KCk7CkBAIC01MDAsNiArNTIyLDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1faXNTdHJpY3RNb2RlIDogMTsKICAgICBib29sIG1faXNDb25zdHJ1Y3RvciA6IDE7
CiAgICAgYm9vbCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIDogMTsKKyAgICBib29sIG1faXNCdWls
dGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAgIHVuc2lnbmVk
IG1fbGluZUNvdW50OwogICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApp
bmRleCA2ODEwYWI4MDAyY2U2YmI4ZDc4ZTdmZjIyMjdmNGM2ZWE3Yjc1OGMyLi5lYzUyMWI1MzA0
NjM5MjNlNzRjMDEwZmEyMThlNTllZDJhOWEzY2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTc1
LDYgKzE3NSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0s
IFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQCiAjZW5kaWYKICAgICAsIG1fdXNl
c0V4Y2VwdGlvbnMoZmFsc2UpCiAgICAgLCBtX2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQorICAg
ICwgbV9pc0J1aWx0aW5GdW5jdGlvbihmYWxzZSkKIHsKICAgICBpZiAobV9zaG91bGRFbWl0RGVi
dWdIb29rcykKICAgICAgICAgbV9jb2RlQmxvY2stPnNldE5lZWRzRnVsbFNjb3BlQ2hhaW4odHJ1
ZSk7CkBAIC0yMjIsNyArMjIzLDEzIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVy
YXRvcihWTSYgdm0sIEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9uQm9keSwgVW5sCiAjZW5kaWYK
ICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAgICAgLCBtX2V4cHJlc3Npb25Ub29EZWVw
KGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihjb2RlQmxvY2stPmlzQnVpbHRpbkZ1
bmN0aW9uKCkpCiB7CisgICAgaWYgKG1faXNCdWlsdGluRnVuY3Rpb24pIHsKKyAgICAgICAgbV9z
aG91bGRFbWl0UHJvZmlsZUhvb2tzID0gZmFsc2U7CisgICAgICAgIG1fc2hvdWxkRW1pdERlYnVn
SG9va3MgPSBmYWxzZTsKKyAgICB9CisKICAgICBpZiAobV9zaG91bGRFbWl0RGVidWdIb29rcykK
ICAgICAgICAgbV9jb2RlQmxvY2stPnNldE5lZWRzRnVsbFNjb3BlQ2hhaW4odHJ1ZSk7CiAKQEAg
LTQzOCw2ICs0NDUsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0m
IHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZAogI2VuZGlmCiAgICAgLCBt
X3VzZXNFeGNlcHRpb25zKGZhbHNlKQogICAgICwgbV9leHByZXNzaW9uVG9vRGVlcChmYWxzZSkK
KyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oZmFsc2UpCiB7CiAgICAgbV9jb2RlQmxvY2stPnNl
dE5lZWRzRnVsbFNjb3BlQ2hhaW4odHJ1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA0ZTlmMjEzYzli
ZmE2Y2YxOTRiMWExNGZlOTE5ZTgzMzM3YWUzNWQ5Li4xNTg0Mjc0Yjc4ZWE2YzBiZDBlZmIwYjk4
MjVjODE4YmUwZGJjMDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC00NjEsNyArNDYxLDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIGJvb2wgc2hvdWxkRW1pdERlYnVnSG9va3MoKSB7IHJldHVybiBt
X3Nob3VsZEVtaXREZWJ1Z0hvb2tzOyB9CiAgICAgICAgIAogICAgICAgICBib29sIGlzU3RyaWN0
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKTsgfQotCisg
ICAgICAgIAorICAgICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9pc0J1aWx0aW5GdW5jdGlvbjsgfQorICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICBm
cmllbmQgY2xhc3MgTGFiZWw7CiAgICAgICAgIApAQCAtNTQzLDcgKzU0NSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAKICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG1h
a2VGdW5jdGlvbihGdW5jdGlvbkJvZHlOb2RlKiBib2R5KQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3Bl
Tm9kZS0+c291cmNlKCksIGJvZHkpOworICAgICAgICAgICAgcmV0dXJuIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCBib2R5LCBm
YWxzZSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5s
aW5rZWROb3JtYWxGdW5jdGlvbik7CiAgICAgICAgIH0KIAogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0SW5pdExhenlSZWdpc3RlcihSZWdpc3RlcklEKik7CkBAIC02NzcsNiArNjc5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBtX3VzZXNFeGNlcHRpb25zOwogICAgICAgICBi
b29sIG1fZXhwcmVzc2lvblRvb0RlZXA7CisgICAgICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlv
bjsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMWZmZDRmMzExODgyZDBlZTVjNTUxNGY1YjhiMjU5
MzlkOTc1ZTM3OS4uNjJlY2EzNmExMGQ3NzA4YTkyOGQ0M2FjMDNmMmZjODYxNWNlY2E3OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcApAQCAtMjYsMTAgKzI2LDEwIEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJOb2Rlcy5oIgotI2luY2x1ZGUgIk5vZGVDb25zdHJ1Y3RvcnMuaCIKIAogI2luY2x1ZGUgIkJ5
dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29t
bW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkpJVC5o
IgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJK
U09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiTGFiZWxTY29wZS5oIgogI2luY2x1ZGUgIkxleGVyLmgi
CisjaW5jbHVkZSAiTm9kZUNvbnN0cnVjdG9ycy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIK
ICNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgpAQCAt
NTM1LDM2ICs1MzYsMzkgQEAgUmVnaXN0ZXJJRCogQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLAogICAgIFJlZlB0cjxMYWJl
bD4gZW5kID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJh
c2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9iYXNlKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJl
c3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3Vi
ZXhwcmVzc2lvbkVuZCgpKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuY3Rpb24gPSBnZW5l
cmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdl
dCgpLCBtX2lkZW50KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0
b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgp
LCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmNhbGwpOwogICAgIFJlZlB0cjxSZWdpc3RlcklE
PiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuY3Rpb24u
Z2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKGZ1bmN0aW9u
LmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7CisgICAgYm9vbCBlbWl0Q2FsbENoZWNrID0gIWdlbmVy
YXRvci5pc0J1aWx0aW5GdW5jdGlvbigpOworICAgIGlmIChlbWl0Q2FsbENoZWNrKQorICAgICAg
ICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQ2FsbChmdW5jdGlvbi5nZXQoKSwgcmVh
bENhbGwuZ2V0KCkpOworCiAgICAgewogICAgICAgICBpZiAobV9hcmdzLT5tX2xpc3ROb2RlICYm
IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKSB7CiAgICAgICAgICAgICBBcmd1bWVudExpc3RO
b2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2RlOwogICAgICAgICAgICAgbV9hcmdzLT5t
X2xpc3ROb2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQ7Ci0KKyAgICAgICAgICAgIAog
ICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5l
bWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwogICAg
ICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsK
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rl
cigpLCBvbGRMaXN0LT5tX2V4cHIpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJl
dHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwg
Y2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOwotCiAgICAgICAgICAgICBtX2Fy
Z3MtPm1fbGlzdE5vZGUgPSBvbGRMaXN0OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5l
cmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgQ2Fs
bEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVm
aW5lZCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQo
KSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMs
IGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKICAgICAgICAgfQogICAgIH0KLSAgICBnZW5lcmF0b3Iu
ZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKLSAgICB7Ci0gICAgICAgIENhbGxBcmd1bWVudHMg
Y2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0
TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgpKTsKLSAgICAgICAg
Z2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9F
eHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOworICAgIGlmIChlbWl0Q2FsbENoZWNrKSB7CisgICAgICAgIGdlbmVyYXRvci5l
bWl0SnVtcChlbmQuZ2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHJlYWxDYWxs
LmdldCgpKTsKKyAgICAgICAgeworICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1l
bnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShj
YWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgpKTsKKyAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhw
ZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZv
dEVuZCgpKTsKKyAgICAgICAgfQorICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5nZXQo
KSk7CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICByZXR1
cm4gcmV0dXJuVmFsdWUuZ2V0KCk7CiB9CiAKQEAgLTU4NSw2NSArNTg5LDY3IEBAIFJlZ2lzdGVy
SUQqIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsCiAgICAgUmVmUHRyPExhYmVsPiBlbmQgPSBnZW5lcmF0b3IubmV3TGFi
ZWwoKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZSht
X2Jhc2UpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRp
dm90KCksIHN1YmV4cHJlc3Npb25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwotICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0
b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIG1faWRlbnQpOworICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBmdW5jdGlvbjsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFs
dWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGZ1bmN0aW9uLmdldCgpKTsKLSAg
ICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHkoZnVuY3Rpb24uZ2V0KCksIHJl
YWxDYWxsLmdldCgpKTsKLSAgICB7Ci0gICAgICAgIGlmIChtYXlCZUNhbGwpIHsKLSAgICAgICAg
ICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIp
IHsKLSAgICAgICAgICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5t
X2xpc3ROb2RlOwotICAgICAgICAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4
dCkgewotICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9hcmdzLT5tX2xpc3ROb2RlLT5tX25l
eHQtPm1fZXhwci0+aXNTaW1wbGVBcnJheSgpKTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KCFtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9uZXh0KTsKLSAgICAgICAgICAgICAgICAg
ICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gc3RhdGljX2Nhc3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5t
X2xpc3ROb2RlLT5tX25leHQtPm1fZXhwciktPnRvQXJndW1lbnRMaXN0KGdlbmVyYXRvci52bSgp
LCAwLCAwKTsKLSAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5j
dGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCks
IGJhc2UuZ2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1
bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsK
LSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgp
LCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywg
ZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBtX2FyZ3MtPm1f
bGlzdE5vZGUtPm1fbmV4dDsKLSAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0
aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRz
IGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+
bV9leHByKTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZh
bHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFy
Z3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gb2xkTGlzdDsKKyAg
ICBib29sIGVtaXRDYWxsQ2hlY2sgPSAhZ2VuZXJhdG9yLmlzQnVpbHRpbkZ1bmN0aW9uKCk7Cisg
ICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKKyAgICAgICAgZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1p
dEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBnZW5l
cmF0b3IucHJvcGVydHlOYW1lcygpLmFwcGx5KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1w
SWZOb3RGdW5jdGlvbkFwcGx5KGZ1bmN0aW9uLmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7CisgICAg
fQorICAgIGlmIChtYXlCZUNhbGwpIHsKKyAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZSAm
JiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcikgeworICAgICAgICAgICAgQXJndW1lbnRMaXN0
Tm9kZSogb2xkTGlzdCA9IG1fYXJncy0+bV9saXN0Tm9kZTsKKyAgICAgICAgICAgIGlmIChtX2Fy
Z3MtPm1fbGlzdE5vZGUtPm1fbmV4dCkgeworICAgICAgICAgICAgICAgIEFTU0VSVChtX2FyZ3Mt
Pm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByLT5pc1NpbXBsZUFycmF5KCkpOworICAgICAgICAg
ICAgICAgIEFTU0VSVCghbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fbmV4dCk7CisgICAg
ICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gc3RhdGljX2Nhc3Q8QXJyYXlOb2RlKj4o
bV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwciktPnRvQXJndW1lbnRMaXN0KGdlbmVy
YXRvci52bSgpLCAwLCAwKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVh
bEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24o
ZHN0KSwgYmFzZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJn
dW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKKyAg
ICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxG
dW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgp
LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4
dDsKICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2Vu
ZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQo
KSk7CiAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRv
ciwgbV9hcmdzKTsKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3Vt
ZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG9sZExpc3QtPm1f
ZXhwcik7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdl
dCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50
cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9sZExpc3Q7CiAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBBU1NFUlQobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0
Tm9kZS0+bV9uZXh0KTsKLSAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9maWxlSG9v
a1JlZ2lzdGVyOwotICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5zaG91bGRFbWl0UHJvZmlsZUhv
b2tzKCkpCi0gICAgICAgICAgICAgICAgcHJvZmlsZUhvb2tSZWdpc3RlciA9IGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKTsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rp
b24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBi
YXNlLmdldCgpKTsKLSAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzUmVnaXN0ZXIg
PSBnZW5lcmF0b3IuZW1pdE5vZGUobV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpOwotICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFyZ3NSZWdpc3RlcjsKLSAgICAgICAgICAgIEFyZ3Vt
ZW50TGlzdE5vZGUqIGFyZ3MgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKLSAgICAgICAg
ICAgIGlmIChhcmdzLT5tX2V4cHItPmlzUmVzb2x2ZU5vZGUoKSAmJiBnZW5lcmF0b3Iud2lsbFJl
c29sdmVUb0FyZ3VtZW50cyhzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGFyZ3MtPm1fZXhwcikt
PmlkZW50aWZpZXIoKSkpCi0gICAgICAgICAgICAgICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJhdG9y
LnVuY2hlY2tlZFJlZ2lzdGVyRm9yQXJndW1lbnRzKCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhw
cik7Ci0KLSAgICAgICAgICAgIC8vIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseSBpZ25vcmVzIGV4
dHJhIGFyZ3VtZW50cywgYnV0IHdlIHN0aWxsCi0gICAgICAgICAgICAvLyBuZWVkIHRvIGV2YWx1
YXRlIHRoZW0gZm9yIHNpZGUgZWZmZWN0cy4KLSAgICAgICAgICAgIHdoaWxlICgoYXJncyA9IGFy
Z3MtPm1fbmV4dCkpCi0gICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGFyZ3MtPm1f
ZXhwcik7Ci0KLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbFZhcmFyZ3MocmV0dXJuVmFs
dWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBhcmdzUmVn
aXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcHJvZmlsZUhvb2tSZWdpc3Rl
ci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAg
IENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CisgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNV
bmRlZmluZWQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUu
Z2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1l
bnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICB9Ci0gICAg
ICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOworICAgIH0gZWxzZSB7CisgICAgICAg
IEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQp
OworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvZmlsZUhvb2tSZWdpc3RlcjsKKyAgICAg
ICAgaWYgKGdlbmVyYXRvci5zaG91bGRFbWl0UHJvZmlsZUhvb2tzKCkpCisgICAgICAgICAgICBw
cm9maWxlSG9va1JlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVy
YXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CisgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiB0aGlzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9hcmdzLT5tX2xp
c3ROb2RlLT5tX2V4cHIpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXJnc1JlZ2lzdGVy
OworICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBhcmdzID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5t
X25leHQ7CisgICAgICAgIGlmIChhcmdzLT5tX2V4cHItPmlzUmVzb2x2ZU5vZGUoKSAmJiBnZW5l
cmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50cyhzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGFy
Z3MtPm1fZXhwciktPmlkZW50aWZpZXIoKSkpCisgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBn
ZW5lcmF0b3IudW5jaGVja2VkUmVnaXN0ZXJGb3JBcmd1bWVudHMoKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhw
cik7CisKKyAgICAgICAgLy8gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5IGlnbm9yZXMgZXh0cmEg
YXJndW1lbnRzLCBidXQgd2Ugc3RpbGwKKyAgICAgICAgLy8gbmVlZCB0byBldmFsdWF0ZSB0aGVt
IGZvciBzaWRlIGVmZmVjdHMuCisgICAgICAgIHdoaWxlICgoYXJncyA9IGFyZ3MtPm1fbmV4dCkp
CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKKworICAgICAg
ICBnZW5lcmF0b3IuZW1pdENhbGxWYXJhcmdzKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rp
b24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJnc1JlZ2lzdGVyLmdldCgpLCBnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCksIHByb2ZpbGVIb29rUmVnaXN0ZXIuZ2V0KCksIGRpdm90KCksIGRp
dm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFiZWwo
cmVhbENhbGwuZ2V0KCkpOwotICAgIHsKKyAgICBpZiAoZW1pdENhbGxDaGVjaykgeworICAgICAg
ICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRM
YWJlbChyZWFsQ2FsbC5nZXQoKSk7CiAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50
cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJn
dW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0
aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwor
ICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAgfQotICAgIGdlbmVy
YXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWUuZ2V0KCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJs
ZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZQppbmRleCAzOTc5NzZi
MDZjN2E5YjU4MzYzMzI5MDBhNmViYjkzZWM2OGI3NDg2Li5jYWQ2NWJjNGNjODg4ZTMxNGY4OGQ2
NjVkZDRhNmU2NDVhMDlhMzU1IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3Jl
YXRlX2hhc2hfdGFibGUKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3Rh
YmxlCkBAIC0yODksNyArMjg5LDE3IEBAIHN1YiBvdXRwdXQoKSB7CiAgICAgICAgICAgICAkaW50
cmluc2ljID0gIlJlZ0V4cFRlc3RJbnRyaW5zaWMiIGlmICgka2V5IGVxICJ0ZXN0Iik7CiAgICAg
ICAgIH0KIAorICAgICAgICBpZiAoJHZhbHVlc1skaV17InR5cGUifSBlcSAiRnVuY3Rpb24iKSAg
eworICAgICAgICAgICAgbXkgJHRhYmxlSGVhZCA9ICRuYW1lOworICAgICAgICAgICAgJHRhYmxl
SGVhZCA9fiBzL1RhYmxlJC8vOworICAgICAgICAgICAgcHJpbnQgIiAjaWYgSlNDX0JVSUxUSU5f
RVhJU1RTKCIgLiB1YygkdGFibGVIZWFkIC4gJGtleSkgLiIpXG4iOworICAgICAgICAgICAgcHJp
bnQgIiAgIHsgXCIka2V5XCIsICgoJGF0dHJzWyRpXSkgJiB+RnVuY3Rpb24pIHwgQnVpbHRpbiwg
JGludHJpbnNpYywgKGludHB0cl90KXN0YXRpY19jYXN0PEJ1aWx0aW5HZW5lcmF0b3I+KCIgLiAk
dGFibGVIZWFkIC4gdWNmaXJzdCgka2V5KSAuICJDb2RlR2VuZXJhdG9yKSwgKGludHB0cl90KSRz
ZWNvbmRWYWx1ZSB9LFxuIjsKKyAgICAgICAgICAgIHByaW50ICIgI2Vsc2VcbiIKKyAgICAgICAg
fQogICAgICAgICBwcmludCAiICAgeyBcIiRrZXlcIiwgJGF0dHJzWyRpXSwgJGludHJpbnNpYywg
KGludHB0cl90KSIgLiAkZmlyc3RDYXN0U3RyIC4gIigkZmlyc3RWYWx1ZSksIChpbnRwdHJfdCki
IC4gJHNlY29uZENhc3RTdHIgLiAiKCRzZWNvbmRWYWx1ZSkgfSxcbiI7CisgICAgICAgIGlmICgk
dmFsdWVzWyRpXXsidHlwZSJ9IGVxICJGdW5jdGlvbiIpICB7CisgICAgICAgICAgICBwcmludCAi
ICNlbmRpZlxuIgorICAgICAgICB9CiAgICAgICAgICRpKys7CiAgICAgfQogICAgIHByaW50ICIg
ICB7IDAsIDAsIE5vSW50cmluc2ljLCAwLCAwIH1cbiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAyZmYwYzM0MTQ2ZTJjMGJhMmZmNzZjNGQzZjdj
NDZiYTNlMjU1MTQ3Li45MDQ0Y2RjNmI4YzNhZDRhMWU5NDE4OGRkMWQwZTIwMGU2OWZiOTlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTQ4LDYg
KzQ4LDcgQEAKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJWTS5oIgogI2lu
Y2x1ZGUgIkpTTmFtZVNjb3BlLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiTmFtZUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJPcGVyYXRpb25zLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Z2VuZXJhdGUtanMtYnVpbHRpbnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtanMt
YnVpbHRpbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZWVlMWM3YTdjY2RkOTM3NjkyMGU3NmQ3ZmU4ZDMwYWY5NTVm
MzFhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1q
cy1idWlsdGlucwpAQCAtMCwwICsxLDMwNCBAQAorIyEvdXNyL2Jpbi9weXRob24KKyMgQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorIyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyMgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorIyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKK2ltcG9ydCBmaWxlY21wCitpbXBvcnQgZm5tYXRjaAoraW1wb3J0IG9zCitpbXBvcnQg
cmUKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzeXMKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IGpz
b24KKworY29weXJpZ2h0VGV4dCA9ICIiIiAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovXG4KKyIiIgorCitnZW5lcmF0b3JTdHJpbmcgPSAiLyogR2VuZXJhdGVkIGJ5ICVz
IGRvIG5vdCBoYW5kIGVkaXQuICovXG4iICUgb3MucGF0aC5iYXNlbmFtZShfX2ZpbGVfXykKKwor
ZnVuY3Rpb25IZWFkUmVnRXhwID0gcmUuY29tcGlsZShyImZ1bmN0aW9uXHMrXHcrXHMqXCguKj9c
KSIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitmdW5jdGlvbk5hbWVSZWdFeHAgPSByZS5jb21waWxl
KHIiZnVuY3Rpb25ccysoXHcrKVxzKlwoIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK2Z1bmN0aW9u
UGFyYW1ldGVyRmluZGVyID0gcmUuY29tcGlsZShyIl5mdW5jdGlvblxzKyg/Olx3KylccypcKCgo
PzpccypcdyspP1xzKig/OlxzKixccypcdyspKik/XCkiLCByZS5NVUxUSUxJTkUgfCByZS5TKQor
CittdWx0aWxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwvXCouKj9cKlwvIiwgcmUu
TVVMVElMSU5FIHwgcmUuUykKK3NpbmdsZUxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShy
IlwvXC8uKj9cbiIsIHJlLk1VTFRJTElORSB8IHJlLlMpCisKK2RlZiBnZXRDb3B5cmlnaHQoc291
cmNlKToKKyAgICBjb3B5cmlnaHRCbG9jayA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAuZmluZGFs
bChzb3VyY2UpWzBdCisgICAgY29weXJpZ2h0QmxvY2sgPSBjb3B5cmlnaHRCbG9ja1s6Y29weXJp
Z2h0QmxvY2suaW5kZXgoIlJlZGlzdHJpYnV0aW9uIildCisgICAgY29weVJpZ2h0TGluZXMgPSBb
XQorCisgICAgZm9yIGxpbmUgaW4gY29weXJpZ2h0QmxvY2suc3BsaXQoIlxuIik6CisgICAgICAg
IGxpbmUgPSBsaW5lLnJlcGxhY2UoIi8qIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxh
Y2UoIiovIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIioiLCAiIikKKyAgICAg
ICAgbGluZSA9IGxpbmUucmVwbGFjZSgiQ29weXJpZ2h0IiwgIiIpCisgICAgICAgIGxpbmUgPSBs
aW5lLnJlcGxhY2UoImNvcHlyaWdodCIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNl
KCIoQykiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKGMpIiwgIiIpCisgICAg
ICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgaWYgbGVuKGxpbmUpID09IDA6CisgICAg
ICAgICAgICBjb250aW51ZQorCisgICAgICAgIGNvcHlSaWdodExpbmVzLmFwcGVuZChsaW5lKQor
ICAgIAorICAgIHJldHVybiBsaXN0KHNldChjb3B5UmlnaHRMaW5lcykpCisKKworCitkZWYgZ2V0
RnVuY3Rpb25zKHNvdXJjZSk6CisKKyAgICBzb3VyY2UgPSBtdWx0aWxpbmVDb21tZW50UmVnRXhw
LnN1YigiLyoqLyIsIHNpbmdsZUxpbmVDb21tZW50UmVnRXhwLnN1YigiLy9cbiIsIHNvdXJjZSkp
CisKKyAgICBtYXRjaGVzID0gWyBmIGZvciBmIGluIGZ1bmN0aW9uSGVhZFJlZ0V4cC5maW5kaXRl
cihzb3VyY2UpXQorICAgIGZ1bmN0aW9uQm91bmRzID0gW10KKyAgICBzdGFydCA9IDAKKyAgICBl
bmQgPSAwCisgICAgZm9yIG1hdGNoIGluIG1hdGNoZXM6CisgICAgICAgIHN0YXJ0ID0gbWF0Y2gu
c3RhcnQoKQorICAgICAgICBpZiBzdGFydCA8IGVuZDoKKyAgICAgICAgICAgIGNvbnRpbnVlCisg
ICAgICAgIGVuZCA9IG1hdGNoLmVuZCgpCisgICAgICAgIHdoaWxlIHNvdXJjZVtlbmRdICE9ICd7
JzoKKyAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgZGVwdGggPSAxCisgICAgICAg
IGVuZCA9IGVuZCArIDEKKyAgICAgICAgd2hpbGUgZGVwdGggPiAwOgorICAgICAgICAgICAgaWYg
c291cmNlW2VuZF0gPT0gJ3snOgorICAgICAgICAgICAgICAgIGRlcHRoID0gZGVwdGggKyAxCisg
ICAgICAgICAgICBlbGlmIHNvdXJjZVtlbmRdID09ICd9JzoKKyAgICAgICAgICAgICAgICBkZXB0
aCA9IGRlcHRoIC0gMQorICAgICAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICBmdW5jdGlv
bkJvdW5kcy5hcHBlbmQoKHN0YXJ0LCBlbmQpKQorCisgICAgZnVuY3Rpb25zID0gW3NvdXJjZVtz
dGFydDplbmRdLnN0cmlwKCkgZm9yIChzdGFydCwgZW5kKSBpbiBmdW5jdGlvbkJvdW5kc10KKyAg
ICByZXN1bHQgPSBbXQorICAgIGZvciBmdW5jdGlvbiBpbiBmdW5jdGlvbnM6CisgICAgICAgIGZ1
bmN0aW9uID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5zdWIoIiIsIGZ1bmN0aW9uKQorICAgICAg
ICBmdW5jdGlvbk5hbWUgPSBmdW5jdGlvbk5hbWVSZWdFeHAuZmluZGFsbChmdW5jdGlvbilbMF0K
KyAgICAgICAgZnVuY3Rpb25QYXJhbWV0ZXJzID0gZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIuZmlu
ZGFsbChmdW5jdGlvbilbMF0uc3BsaXQoJywnKQorICAgICAgICBpZiBsZW4oZnVuY3Rpb25QYXJh
bWV0ZXJzWzBdKSA9PSAwOgorICAgICAgICAgICAgZnVuY3Rpb25QYXJhbWV0ZXJzID0gW10KKyAg
ICAgICAgICAgIAorICAgICAgICByZXN1bHQuYXBwZW5kKChmdW5jdGlvbk5hbWUsIGZ1bmN0aW9u
LCBmdW5jdGlvblBhcmFtZXRlcnMpKQorICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgCisKK2Rl
ZiBnZW5lcmF0ZUNvZGUoc291cmNlKToKKyAgICBpbnB1dEZpbGUgPSBvcGVuKHNvdXJjZSwgInIi
KQorICAgIGJhc2VOYW1lID0gb3MucGF0aC5iYXNlbmFtZShzb3VyY2UpLnJlcGxhY2UoIi5qcyIs
ICIiKQorICAgIAorICAgIHNvdXJjZSA9ICIiCisgICAgZm9yIGxpbmUgaW4gaW5wdXRGaWxlOgor
ICAgICAgICBzb3VyY2UgPSBzb3VyY2UgKyBsaW5lCisgICAgCisgICAgaWYgc3lzLnBsYXRmb3Jt
ID09ICJjeWd3aW4iOgorICAgICAgICBzb3VyY2UgPSBzb3VyY2UucmVwbGFjZSgiXHJcbiIsICJc
biIpCisgICAgcmV0dXJuIChiYXNlTmFtZSwgZ2V0RnVuY3Rpb25zKHNvdXJjZSksIGdldENvcHly
aWdodChzb3VyY2UpKQorCitkZWYgbWFuZ2xlTmFtZShvYmplY3QsIG5hbWUpOgorICAgIHFOYW1l
ID0gb2JqZWN0ICsgIi4iICsgbmFtZQorICAgIG1hbmdsZWROYW1lID0gIiIKKyAgICBpID0gMAor
ICAgIHdoaWxlIGkgPCBsZW4ocU5hbWUpOgorICAgICAgICBpZiBxTmFtZVtpXSA9PSAnLic6Cisg
ICAgICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lICsgcU5hbWVbaSArIDFdLnVwcGVy
KCkKKyAgICAgICAgICAgIGkgPSBpICsgMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbWFu
Z2xlZE5hbWUgPSBtYW5nbGVkTmFtZSArIHFOYW1lW2ldCisgICAgICAgIGkgPSBpICsgMQorICAg
IHJldHVybiBtYW5nbGVkTmFtZQorCitidWlsdGlucyA9IFtdCisKK2Jhc2VOYW1lID0gc3lzLmFy
Z3ZbLTFdCitidWlsdGluX2RlZmluaXRpb25zID0gc3lzLmFyZ3ZbMTotMV0KKyhvdXRwdXRfYmFz
ZSwgXykgPSBvcy5wYXRoLnNwbGl0ZXh0KHN5cy5hcmd2Wy0xXSkKKworY29weXJpZ2h0cyA9IFtd
Citmb3IgZmlsZSBpbiBidWlsdGluX2RlZmluaXRpb25zOgorICAgIGlmIGZubWF0Y2guZm5tYXRj
aChmaWxlLCAnKi5qcycpOgorICAgICAgICAoYmFzZU5hbWUsIGZ1bmN0aW9ucywgb2JqZWN0Q29w
eXJpZ2h0cykgPSBnZW5lcmF0ZUNvZGUoZmlsZSkKKyAgICAgICAgY29weXJpZ2h0cy5leHRlbmQo
b2JqZWN0Q29weXJpZ2h0cykKKyAgICAgICAgYnVpbHRpbnMuYXBwZW5kKChiYXNlTmFtZSwgZnVu
Y3Rpb25zKSkKKworY29weXJpZ2h0cyA9IGxpc3Qoc2V0KGNvcHlyaWdodHMpKQorCitjb3B5cmln
aHRCb2R5ID0gIiIKK2ZvciBjb3B5cmlnaHQgaW4gY29weXJpZ2h0czoKKyAgICBjb3B5cmlnaHRC
b2R5ID0gY29weXJpZ2h0Qm9keSArIiAqIENvcHlyaWdodCAoQykgIiArIGNvcHlyaWdodCArICJc
biIKKworYnVpbHRpbnNIZWFkZXIgPSBvcGVuKG91dHB1dF9iYXNlICsgIi5oLnRtcCIsICJ3IikK
K2J1aWx0aW5zSW1wbGVtZW50YXRpb24gPSBvcGVuKG91dHB1dF9iYXNlICsgIi5jcHAudG1wIiwg
InciKQorY29weXJpZ2h0VGV4dCA9ICIvKlxuIiArIGNvcHlyaWdodEJvZHkgKyBjb3B5cmlnaHRU
ZXh0CitidWlsdGluc0hlYWRlci53cml0ZSgiIiIlcworJXMKKworI2lmbmRlZiBKU0NCdWlsdGlu
c19ICisjZGVmaW5lIEpTQ0J1aWx0aW5zX0gKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEZ1
bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIElkZW50aWZpZXI7CitjbGFzcyBKU0dsb2JhbE9iamVj
dDsKK2NsYXNzIFNvdXJjZUNvZGU7CitjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTsK
K2NsYXNzIFZNOworCitGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxl
KFZNJiwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CisK
KyIiIiAlIChnZW5lcmF0b3JTdHJpbmcsIGNvcHlyaWdodFRleHQpKQorCitjb2RlUmVmZXJlbmNl
cyA9IFtdCisKK2ZvciAob2JqZWN0TmFtZSwgZnVuY3Rpb25zKSBpbiBidWlsdGluczoKKyAgICBw
cmludCgiR2VuZXJhdGluZyBiaW5kaW5ncyBmb3IgdGhlICVzIGJ1aWx0aW4uIiAlIG9iamVjdE5h
bWUpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIi8qICVzIGZ1bmN0aW9ucyAqL1xuIiAlIG9i
amVjdE5hbWUpCisgICAgZm9yIChuYW1lLCBpbXBsZW1lbnRhdGlvbiwgXykgaW4gZnVuY3Rpb25z
OgorICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZU5hbWUob2JqZWN0TmFtZSwgbmFtZSkKKyAg
ICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZVswXS5sb3dlcigpICsgbWFuZ2xlZE5hbWVb
MTpdICsgIkNvZGUiCisgICAgICAgIGNvZGVSZWZlcmVuY2VzLmFwcGVuZCgobWFuZ2xlZE5hbWUs
IG5hbWUsIGltcGxlbWVudGF0aW9uKSkKKyAgICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoImV4
dGVybiBjb25zdCBjaGFyKiBzXyVzO1xuIiAlIG1hbmdsZWROYW1lKQorICAgICAgICBidWlsdGlu
c0hlYWRlci53cml0ZSgiZXh0ZXJuIGNvbnN0IGludCBzXyVzTGVuZ3RoO1xuIiAlIG1hbmdsZWRO
YW1lKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJcbiIpCisgICAgYnVpbHRpbnNIZWFkZXIu
d3JpdGUoIiNkZWZpbmUgSlNDX0ZPUkVBQ0hfJXNfQlVJTFRJTihtYWNybykgXFxcbiIgJSBvYmpl
Y3ROYW1lLnJlcGxhY2UoIi4iLCAiXyIpLnVwcGVyKCkpCisgICAgZm9yIChuYW1lLCBpbXBsZW1l
bnRhdGlvbiwgYXJndW1lbnRzKSBpbiBmdW5jdGlvbnM6CisgICAgICAgIG1hbmdsZWROYW1lID0g
bWFuZ2xlTmFtZShvYmplY3ROYW1lLCBuYW1lKQorICAgICAgICBidWlsdGluc0hlYWRlci53cml0
ZSgiICAgIG1hY3JvKCVzLCAlcywgJWQpIFxcXG4iICUgKG5hbWUsIG1hbmdsZWROYW1lLCBsZW4o
YXJndW1lbnRzKSkpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuIikKKyAgICBmb3IgKG5h
bWUsIGltcGxlbWVudGF0aW9uLCBhcmd1bWVudHMpIGluIGZ1bmN0aW9uczoKKyAgICAgICAgYnVp
bHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0JVSUxUSU5fJXMgMVxuIiAlIG1hbmdsZU5h
bWUob2JqZWN0TmFtZSwgbmFtZSkudXBwZXIoKSkKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgi
XG5cbiIpCituYW1lcyA9IFtdCitidWlsdGluc0hlYWRlci53cml0ZSgiI2RlZmluZSBKU0NfRk9S
RUFDSF9CVUlMVElOKG1hY3JvKVxcXG4iKQorZm9yIChjb2RlUmVmZXJlbmNlLCBmdW5jdGlvbk5h
bWUsIHNvdXJjZSkgaW4gY29kZVJlZmVyZW5jZXM6CisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUo
IiAgICBtYWNybyglcywgJXMsIHNfJXNMZW5ndGgpIFxcXG4iICUgKGNvZGVSZWZlcmVuY2UsIGZ1
bmN0aW9uTmFtZSwgY29kZVJlZmVyZW5jZSkpCisgICAgbmFtZXMuYXBwZW5kKGZ1bmN0aW9uTmFt
ZSkKKworYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuXG4iKQorYnVpbHRpbnNIZWFkZXIud3JpdGUo
IiNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKG1hY3JvKSBcXFxuIikK
K2ZvciBuYW1lIGluIHNvcnRlZChzZXQobmFtZXMpKToKKyAgICBidWlsdGluc0hlYWRlci53cml0
ZSgiICAgIG1hY3JvKCVzKSBcXFxuIiAlIG5hbWUpCitidWlsdGluc0hlYWRlci53cml0ZSgiIiIK
KworI2RlZmluZSBKU0NfREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rp
b25OYW1lLCBhcmd1bWVudENvdW50KSBcXAorICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5h
bWUjI0dlbmVyYXRvcihWTSYpOworCitKU0NfRk9SRUFDSF9CVUlMVElOKEpTQ19ERUNMQVJFX0JV
SUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIEpTQ19ERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCisK
KyNkZWZpbmUgSlNDX0JVSUxUSU5fRVhJU1RTKG5hbWUpIGRlZmluZWQoSlNDX0JVSUxUSU5fIyNu
YW1lKQorCit9CisKKyNlbmRpZgorCisiIiIpCisKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24ud3Jp
dGUoIiIiJXMKKyVzCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkpTQ0J1aWx0
aW5zLmgiCisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJFeGVj
dXRhYmxlLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlZNLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCisiIiIgICUgKGdlbmVyYXRvclN0cmluZywgY29weXJpZ2h0VGV4
dCkpCisKK2ZvciAoY29kZVJlZmVyZW5jZSwgbmFtZSwgc291cmNlKSBpbiBjb2RlUmVmZXJlbmNl
czoKKyAgICBzb3VyY2UgPSAiKGZ1bmN0aW9uICIgKyBzb3VyY2Vbc291cmNlLmluZGV4KCIoIik6
XSArICIpIgorICAgIGxpbmVzID0ganNvbi5kdW1wcyhzb3VyY2UpWzE6LTFdLnNwbGl0KCJcXG4i
KQorICAgIHNvdXJjZUxlbmd0aCA9IGxlbihzb3VyY2UpCisgICAgc291cmNlID0gIiIKKyAgICBm
b3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgc291cmNlID0gc291cmNlICsgKCIgICAgXCIlc1xc
blwiIFxcXG4iICUgbGluZSkKKyAgICBidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCJjb25z
dCBjaGFyKiBzXyVzID1cbiVzO1xuXG4iICUgKGNvZGVSZWZlcmVuY2UsIHNvdXJjZSkpCisgICAg
YnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiY29uc3QgaW50IHNfJXNMZW5ndGggPSAlZDtc
blxuIiAlIChjb2RlUmVmZXJlbmNlLCBzb3VyY2VMZW5ndGggKyAxKSkgIyArIDEgZm9yIFxuCisK
K2J1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoIiIiCitGdW5jdGlvbkV4ZWN1dGFibGUqIGNy
ZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKFZNJiB2bSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IHVubGlua2VkRXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQoreworICAgIHVu
c2lnbmVkIGxpbmVDb3VudCA9IHVubGlua2VkRXhlY3V0YWJsZS0+bGluZUNvdW50KCk7CisgICAg
dW5zaWduZWQgc3RhcnRDb2x1bW4gPSAxOworICAgIHVuc2lnbmVkIHNvdXJjZUxlbmd0aCA9IHVu
bGlua2VkRXhlY3V0YWJsZS0+c291cmNlTGVuZ3RoKCk7CisgICAgYm9vbCBlbmRDb2x1bW5Jc09u
U3RhcnRMaW5lID0gIWxpbmVDb3VudDsKKyAgICB1bnNpZ25lZCBlbmRDb2x1bW5FeGNsdWRpbmdC
cmFjZXMgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnVubGlua2VkQm9keUVuZENvbHVtbigpICsgKGVu
ZENvbHVtbklzT25TdGFydExpbmUgPyAwIDogMSk7CisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQg
PSB1bmxpbmtlZEV4ZWN1dGFibGUtPnN0YXJ0T2Zmc2V0KCk7CisgICAgdW5zaWduZWQgc3RhcnRP
ZmZzZXRFeGNsdWRpbmdPcGVuQnJhY2UgPSBzdGFydE9mZnNldCArIDE7CisgICAgdW5zaWduZWQg
ZW5kT2Zmc2V0RXhjbHVkaW5nQ2xvc2VCcmFjZSA9IHN0YXJ0T2Zmc2V0ICsgc291cmNlTGVuZ3Ro
IC0gMTsKKyAgICBTb3VyY2VDb2RlIGJvZHlTb3VyY2Uoc291cmNlLnByb3ZpZGVyKCksIHN0YXJ0
T2Zmc2V0RXhjbHVkaW5nT3BlbkJyYWNlLCBlbmRPZmZzZXRFeGNsdWRpbmdDbG9zZUJyYWNlLCAw
LCBzdGFydENvbHVtbik7CisgICAgcmV0dXJuIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZt
LCBib2R5U291cmNlLCB1bmxpbmtlZEV4ZWN1dGFibGUsIDAsIGxpbmVDb3VudCwgc3RhcnRDb2x1
bW4sIGVuZENvbHVtbkV4Y2x1ZGluZ0JyYWNlcywgZmFsc2UpOworfQorCisjZGVmaW5lIEpTQ19E
RUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRD
b3VudCkgXFwKK0Z1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihWTSYgdm0p
IFxcCit7IFxcCisgICAgcmV0dXJuIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKHZtLCB2bS5idWls
dGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKSwgdm0uYnVpbHRpbkV4ZWN1
dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IFxcCit9CisKK0pTQ19GT1JFQUNIX0JVSUxU
SU4oSlNDX0RFRklORV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBKU0NfREVGSU5FX0JVSUxU
SU5fR0VORVJBVE9SCit9CisKKyIiIikKKworYnVpbHRpbnNIZWFkZXIuY2xvc2UoKQorYnVpbHRp
bnNJbXBsZW1lbnRhdGlvbi5jbG9zZSgpCisKK2lmIChub3Qgb3MucGF0aC5leGlzdHMob3V0cHV0
X2Jhc2UgKyAiLmgiKSkgb3IgKG5vdCBmaWxlY21wLmNtcChvdXRwdXRfYmFzZSArICIuaC50bXAi
LCBvdXRwdXRfYmFzZSArICIuaCIsIHNoYWxsb3c9RmFsc2UpKToKKyAgICBvcy5yZW5hbWUob3V0
cHV0X2Jhc2UgKyAiLmgudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmgiKQorZWxzZToKKyAgICBvcy5y
ZW1vdmUob3V0cHV0X2Jhc2UgKyAiLmgudG1wIikKKworaWYgKG5vdCBvcy5wYXRoLmV4aXN0cyhv
dXRwdXRfYmFzZSArICIuY3BwIikpIG9yIChub3QgZmlsZWNtcC5jbXAob3V0cHV0X2Jhc2UgKyAi
LmNwcC50bXAiLCBvdXRwdXRfYmFzZSArICIuY3BwIiwgc2hhbGxvdz1GYWxzZSkpOgorICAgIG9z
LnJlbmFtZShvdXRwdXRfYmFzZSArICIuY3BwLnRtcCIsIG91dHB1dF9iYXNlICsgIi5jcHAiKQor
ZWxzZToKKyAgICBvcy5yZW1vdmUob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgKaW5kZXggMmNhM2U5Nzk0
MGM3YzExMDZjMWJhYmExZjM1NGZlODQ3YjQzODViMy4uMzBjYWQyYTE0ZmZkYmZiNGQ1N2NmNWEx
MmZjYjkwMGUyNjRmODc2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0NhY2hlZENhbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvQ2FjaGVkQ2FsbC5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgLCBtX2ludGVycHJldGVyKGNhbGxGcmFtZS0+aW50ZXJwcmV0ZXIoKSkKICAgICAgICAg
ICAgICwgbV9lbnRyeVNjb3BlKGNhbGxGcmFtZS0+dm0oKSwgZnVuY3Rpb24tPnNjb3BlKCktPmds
b2JhbE9iamVjdCgpKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoIWZ1bmN0aW9uLT5p
c0hvc3RGdW5jdGlvbigpKTsKKyAgICAgICAgICAgIEFTU0VSVCghZnVuY3Rpb24tPmlzSG9zdEZ1
bmN0aW9uTm9uSW5saW5lKCkpOwogICAgICAgICAgICAgaWYgKGNhbGxGcmFtZS0+dm0oKS5pc1Nh
ZmVUb1JlY3Vyc2UoKSkgewogICAgICAgICAgICAgICAgIG1fYXJndW1lbnRzLnJlc2l6ZShhcmd1
bWVudENvdW50KTsKICAgICAgICAgICAgICAgICBtX2Nsb3N1cmUgPSBtX2ludGVycHJldGVyLT5w
cmVwYXJlRm9yUmVwZWF0Q2FsbChmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCksIGNhbGxGcmFtZSwg
Jm1fcHJvdG9DYWxsRnJhbWUsIGZ1bmN0aW9uLCBhcmd1bWVudENvdW50ICsgMSwgZnVuY3Rpb24t
PnNjb3BlKCksIG1fYXJndW1lbnRzLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCBjYTg5MGIwNmVhMzNmYTllN2Yx
ZmE1MWEzNWVhMmQ0OGQwMDlhMzhhLi42YzliZjk2YzE1ZjYwOWUyNjVjZTI1MGE0NWJmMDg2MWQw
NmNkMWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdGFja0lubGluZXMuaCIKICNpbmNsdWRlICJKU1N0cmlu
Zy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTV2l0aFNjb3Bl
LmgiCiAjaW5jbHVkZSAiTExJbnRDTG9vcC5oIgogI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJh
bWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1l
LmNwcAppbmRleCBmMGUwMmJhNGU0NzZmOTljYzkxM2IwNDYyYWQyNzk1MDA2MDlmYTNhLi4xYzI0
MGRjZDcxYmU1MjlkODhjYmY0NjFkMTg2OGY1ZWIyYjAyYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAKQEAgLTI3LDYg
KzI3LDcgQEAKICNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5oIgogCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJTdGFja0Fs
aWdubWVudC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCmluZGV4IGNhN2FkMTFmMmUwYjhhM2I4YjE4NTg5MWQ3ZTUyMmJhZTQwM2Ey
MzYuLmNiNTUwN2JlYWM1NWJmOGViMWIzN2VjOTBmY2FiMTkzNGZiNDhlYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5o
IgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRl
eCA5OGQxMGEzZjRkY2IxMmQ4OWYzN2ExMmYyMjYwNGI5NDZlMDhlNjI3Li5kZDAzNTM3NzllOGJk
Zjk4ZjQ2NThhMzA3ZTMyZDA2ZTQ3MjQ0MTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRGVi
dWdnZXIuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgor
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDkyOGRk
NTBmYjAxNmUyNzE2NDRhNTc1ZTMwYWI1ZjI1MTZlYjUwZWMuLjkwODhiN2ZiMmZiN2FkMDEzODA2
ZWY0OWI1YWY0MjBmYTY0ODQwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcApAQCAtNDEsNiArNDEsOCBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1
ZGUgIkpJVE9wZXJhdGlvbldyYXBwZXJzLmgiCiAjaW5jbHVkZSAiSklUVG9ERkdEZWZlcnJlZENv
bXBpbGF0aW9uQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlO
YW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAKaW5kZXggMjZkZDRkMWFmNzQ1YWZhMWZiYzUzYTljMDIzYTZlNDc0MWE2NmEw
OS4uZGYxYmQzYTljZmE0MDJjNTJhNTIxMWNmMWFjY2U2N2Q1MTIxYjdlZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTI5LDExICsy
OSwxMyBAQAogI2luY2x1ZGUgIkpJVC5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5j
bHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJHQ0F3YXJlSklUU3R1YlJvdXRp
bmUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5o
IgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVk
ZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTVmFyaWFibGVPYmplY3Qu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggNDA3ODRiNDk0MzFmZTAyZThlNDUyMmYxNjMwOGM5
MDI0NzE2ZDIzNi4uMmY3OTU1NTRiMDkxZGVlYmJjMDNiZjJiZThjNzRmNDFhZTU0MWVkNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJKU0xvY2suaCIK
ICNpbmNsdWRlICJKU1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJK
U1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiU2Ft
cGxpbmdUb29sLmgiCiAjaW5jbHVkZSAiU3RhY2tWaXNpdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCmluZGV4IDYw
NGNjMjYzY2Y5N2UwODZmZWQwNmVjOTAzYjBlYzE5ODNlNzgxMzcuLjgxNjZlN2Y4MWZhODlhN2Q0
ZjUwYzVmMWE5NGZhOTY4YzVkNTdlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAj
aW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlND
ZWxsLmgiCi0jaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25Jbmxp
bmVzLmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRl
ci5oCmluZGV4IDhlYzFmZDMyYTNhZGEyMmUxMjUyMjk1NzBkY2Y3ZmYyOGVhYmYxZWQuLjQ2YTdj
NzZiMmY5MDFmYzNjYzM2ZDFjZTBjMDczNTNlYjA2YjJmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC04ODgsOSArODg4LDkgQEAgRXhwcmVzc2lvbk5v
ZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24KICAgICBBU1NFUlQoZnVuYy0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CiAgICAg
RG90QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihmdW5j
KTsKICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKiBub2RlOwotICAgIGlmIChkb3QtPmlkZW50aWZp
ZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5jYWxsKQorICAgIGlmIChkb3QtPmlkZW50aWZp
ZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5jYWxsIHx8IGRvdC0+aWRlbnRpZmllcigpID09
IG1fdm0tPnByb3BlcnR5TmFtZXMtPmNhbGxQcml2YXRlTmFtZSkKICAgICAgICAgbm9kZSA9IG5l
dyAobV92bSkgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBk
b3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKLSAg
ICBlbHNlIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcHBs
eSkKKyAgICBlbHNlIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5hcHBseSB8fCBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcHBs
eVByaXZhdGVOYW1lKQogICAgICAgICBub2RlID0gbmV3IChtX3ZtKSBBcHBseUZ1bmN0aW9uQ2Fs
bERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywg
ZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKICAgICBlbHNlCiAgICAgICAgIG5vZGUgPSBu
ZXcgKG1fdm0pIEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3Qt
PmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKaW5kZXggY2E0YmI0ZjBhZGU4ZDZiYzgyNjkx
YTZjMDAwMTRjZjE5OGJkODhiZC4uY2NiMDc5ZDk3NWExNDFjNWM0YjJkN2I2MjMxMzAwMDcwOTc3
NzgyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKQEAgLTI1LDEwICsy
NSwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxleGVyLmgiCiAKKyNpbmNs
dWRlICJDb21tb25JZGVudGlmaWVycy5oIgorI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgotCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuaCIKLSNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTm9kZUluZm8uaCIK
ICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUgPHd0Zi9kdG9hLmg+CkBAIC05MCw2ICs5MCw3
IEBAIGVudW0gQ2hhcmFjdGVyVHlwZSB7CiAKICAgICAvLyBPdGhlciB0eXBlcyAob25seSBvbmUg
c28gZmFyKQogICAgIENoYXJhY3RlcldoaXRlU3BhY2UsCisgICAgQ2hhcmFjdGVyUHJpdmF0ZUlk
ZW50aWZpZXJTdGFydAogfTsKIAogLy8gMjU2IExhdGluLTEgY29kZXMKQEAgLTE1OCw3ICsxNTks
NyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgdHlwZXNPZkxhdGluMUNoYXJhY3RlcnNb
MjU2XSA9IHsKIC8qICA2MSAtID0gICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJFcXVhbCwK
IC8qICA2MiAtID4gICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJHcmVhdGVyLAogLyogIDYz
IC0gPyAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlclF1ZXN0aW9uLAotLyogIDY0IC0gQCAg
ICAgICAgICAgICAgICAgICovIENoYXJhY3RlckludmFsaWQsCisvKiAgNjQgLSBAICAgICAgICAg
ICAgICAgICAgKi8gQ2hhcmFjdGVyUHJpdmF0ZUlkZW50aWZpZXJTdGFydCwKIC8qICA2NSAtIEEg
ICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCiAvKiAgNjYgLSBC
ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAogLyogIDY3IC0g
QyAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKQEAgLTQ4Niw5
ICs0ODcsMTAgQEAgc3RhdGljIGNvbnN0IExDaGFyIHNpbmdsZUNoYXJhY3RlckVzY2FwZVZhbHVl
c0ZvckFTQ0lJWzEyOF0gPSB7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUxleGVyPFQ+
OjpMZXhlcihWTSogdm0pCitMZXhlcjxUPjo6TGV4ZXIoVk0qIHZtLCBKU1BhcnNlclN0cmljdG5l
c3Mgc3RyaWN0bmVzcykKICAgICA6IG1faXNSZXBhcnNpbmcoZmFsc2UpCiAgICAgLCBtX3ZtKHZt
KQorICAgICwgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKHN0cmljdG5lc3MgPT0gSlNQYXJzZUJ1
aWx0aW4pCiB7CiB9CiAKQEAgLTc1Myw3ICs3NTUsMjcgQEAgaW5saW5lIHZvaWQgTGV4ZXI8VD46
OnJlY29yZDE2KGludCBjKQogICAgIEFTU0VSVChjIDw9IHN0YXRpY19jYXN0PGludD4oVVNIUlRf
TUFYKSk7CiAgICAgbV9idWZmZXIxNi5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KGMpKTsKIH0K
LQorICAgIAorI2lmICFBU1NFUlRfRElTQUJMRUQKK2Jvb2wgaXNTYWZlSWRlbnRpZmllcihWTSYg
dm0sIGNvbnN0IElkZW50aWZpZXIqIGlkZW50KQoreworICAgIGlmICghaWRlbnQpCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIC8qIEp1c3QgYmxvY2sgYW55IHVzZSBvZiBzdXNwaWNpb3VzIGlk
ZW50aWZpZXJzLiAgVGhpcyBpcyBpbnRlbmRlZCB0bworICAgICAqIGJlIHVzZWQgYXMgYSBzYWZl
dHkgbmV0IHdoaWxlIGltcGxlbWVudGluZyBidWlsdGlucy4KKyAgICAgKi8KKyAgICBpZiAoKmlk
ZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmNhbGwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoKmlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmFwcGx5KQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKCppZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5ldmFsKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCppZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5GdW5j
dGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlm
CisgICAgCiB0ZW1wbGF0ZSA8PgogdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmll
cj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmll
cihKU1Rva2VuRGF0YSogdG9rZW5EYXRhLCB1bnNpZ25lZCBsZXhlckZsYWdzLCBib29sIHN0cmlj
dE1vZGUpCiB7CkBAIC03NjUsNyArNzg3LDExIEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0
ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAg
ICAgICAgICAgICByZXR1cm4ga2V5d29yZCA9PSBSRVNFUlZFRF9JRl9TVFJJQ1QgJiYgIXN0cmlj
dE1vZGUgPyBJREVOVCA6IGtleXdvcmQ7CiAgICAgICAgIH0KICAgICB9Ci0KKyAgICAKKyAgICBi
b29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJlbnQgPT0gJ0AnICYmIG1fcGFyc2luZ0J1aWx0aW5G
dW5jdGlvbjsKKyAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgc2hpZnQoKTsKKyAgICAK
ICAgICBjb25zdCBMQ2hhciogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudFNvdXJjZVB0cigpOwog
ICAgIHVuc2lnbmVkIGlkZW50aWZpZXJMaW5lU3RhcnQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0
KCk7CiAgICAgCkBAIC03NzksMTUgKzgwNSwyNiBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVh
dGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAog
CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAwOwogICAgIAotICAgIGlmIChzaG91bGRD
cmVhdGVJZGVudGlmaWVyKSB7CisgICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIgfHwgbV9w
YXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CiAgICAgICAgIGludCBpZGVudGlmaWVyTGVuZ3RoID0g
Y3VycmVudFNvdXJjZVB0cigpIC0gaWRlbnRpZmllclN0YXJ0OwogICAgICAgICBpZGVudCA9IG1h
a2VJZGVudGlmaWVyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCk7Ci0KKyAgICAg
ICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgeworICAgICAgICAgICAgaWYgKCFpc1Nh
ZmVJZGVudGlmaWVyKCptX3ZtLCBpZGVudCkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsKKyAgICAgICAg
ICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIlRoZSB1c2Ugb2YgJyIsIGlk
ZW50LT5zdHJpbmcoKSwgIicgaXMgZGlzYWxsb3dlZCBpbiBidWlsdGluIGZ1bmN0aW9ucy4iKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgICAgICAgICBpZGVudCA9IG1fdm0tPnBy
b3BlcnR5TmFtZXMtPmdldFByaXZhdGVOYW1lKCppZGVudCk7CisgICAgICAgICAgICBlbHNlIGlm
ICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCkKKyAgICAg
ICAgICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVm
aW5lZEtleXdvcmRQcml2YXRlTmFtZTsKKyAgICAgICAgICAgIGlmICghaWRlbnQpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIElOVkFMSURfUFJJVkFURV9OQU1FX0VSUk9SVE9LOworICAgICAgICB9
CiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBpZGVudDsKICAgICB9IGVsc2UKICAgICAgICAg
dG9rZW5EYXRhLT5pZGVudCA9IDA7CiAKLSAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1h
eFRva2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxhZ3MgJiBMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRX
b3JkcykpKSB7CisgICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkg
JiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMpKSAmJiAhaXNQ
cml2YXRlTmFtZSkgewogICAgICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAg
ICAgICAgIGlmIChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgewogICAgICAgICAgICAgY29u
c3QgSGFzaEVudHJ5KiBlbnRyeSA9IG1fdm0tPmtleXdvcmRzLT5nZXRLZXl3b3JkKCppZGVudCk7
CkBAIC04MTQsNiArODUxLDEwIEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZp
ZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+OjpwCiAgICAgICAgICAg
ICByZXR1cm4ga2V5d29yZCA9PSBSRVNFUlZFRF9JRl9TVFJJQ1QgJiYgIXN0cmljdE1vZGUgPyBJ
REVOVCA6IGtleXdvcmQ7CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgYm9vbCBpc1ByaXZh
dGVOYW1lID0gbV9jdXJyZW50ID09ICdAJyAmJiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247Cisg
ICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgIHNoaWZ0KCk7CiAKICAgICBjb25zdCBVQ2hh
ciogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudFNvdXJjZVB0cigpOwogICAgIGludCBpZGVudGlm
aWVyTGluZVN0YXJ0ID0gY3VycmVudExpbmVTdGFydE9mZnNldCgpOwpAQCAtODI2LDYgKzg2Nyw3
IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUg
SlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+OjpwCiAgICAgfQogICAgIAogICAgIGlmIChVTkxJS0VM
WShtX2N1cnJlbnQgPT0gJ1xcJykpIHsKKyAgICAgICAgQVNTRVJUKCFpc1ByaXZhdGVOYW1lKTsK
ICAgICAgICAgc2V0T2Zmc2V0RnJvbVNvdXJjZVB0cihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZp
ZXJMaW5lU3RhcnQpOwogICAgICAgICByZXR1cm4gcGFyc2VJZGVudGlmaWVyU2xvd0Nhc2U8c2hv
dWxkQ3JlYXRlSWRlbnRpZmllcj4odG9rZW5EYXRhLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKTsK
ICAgICB9CkBAIC04MzcsMTggKzg3OSwyOSBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJ
ZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogCiAg
ICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAwOwogICAgIAotICAgIGlmIChzaG91bGRDcmVh
dGVJZGVudGlmaWVyKSB7CisgICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIgfHwgbV9wYXJz
aW5nQnVpbHRpbkZ1bmN0aW9uKSB7CiAgICAgICAgIGludCBpZGVudGlmaWVyTGVuZ3RoID0gY3Vy
cmVudFNvdXJjZVB0cigpIC0gaWRlbnRpZmllclN0YXJ0OwogICAgICAgICBpZiAoaXNBbGw4Qml0
KQogICAgICAgICAgICAgaWRlbnQgPSBtYWtlSWRlbnRpZmllckxDaGFyRnJvbVVDaGFyKGlkZW50
aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGlkZW50ID0gbWFrZUlkZW50aWZpZXIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVuZ3Ro
KTsKLSAgICAgICAgCisgICAgICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKKyAg
ICAgICAgICAgIGlmICghaXNTYWZlSWRlbnRpZmllcigqbV92bSwgaWRlbnQpICYmICFpc1ByaXZh
dGVOYW1lKSB7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5n
KCJUaGUgdXNlIG9mICciLCBpZGVudC0+c3RyaW5nKCksICInIGlzIGRpc2FsbG93ZWQgaW4gYnVp
bHRpbiBmdW5jdGlvbnMuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgICAgICAg
ICAgaWRlbnQgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZXRQcml2YXRlTmFtZSgqaWRlbnQpOwor
ICAgICAgICAgICAgZWxzZSBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVm
aW5lZEtleXdvcmQpCisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9ICZtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkUHJpdmF0ZU5hbWU7CisgICAgICAgICAgICBp
ZiAoIWlkZW50KQorICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEX1BSSVZBVEVfTkFNRV9F
UlJPUlRPSzsKKyAgICAgICAgfQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gaWRlbnQ7CiAg
ICAgfSBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAwOwogICAgIAotICAgIGlmIChV
TkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICEobGV4ZXJGbGFncyAmIExl
eGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkpIHsKKyAgICBpZiAoVU5MSUtFTFkoKHJlbWFp
bmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxhZ3MgJiBMZXhlckZsYWdzSWdub3Jl
UmVzZXJ2ZWRXb3JkcykpICYmICFpc1ByaXZhdGVOYW1lKSB7CiAgICAgICAgIEFTU0VSVChzaG91
bGRDcmVhdGVJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKHJlbWFpbmluZyA8IG1heFRva2VuTGVu
Z3RoKSB7CiAgICAgICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gbV92bS0+a2V5d29y
ZHMtPmdldEtleXdvcmQoKmlkZW50KTsKQEAgLTE2NTgsNiArMTcxMSw3IEBAIGluTnVtYmVyQWZ0
ZXJEZWNpbWFsUG9pbnQ6CiAgICAgICAgIEFTU0VSVChpc0lkZW50U3RhcnQobV9jdXJyZW50KSk7
CiAgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2UgQ2hhcmFjdGVyQmFja1NsYXNoOgorICAg
ICAgICBwYXJzZUlkZW50OgogICAgICAgICBpZiAobGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250
QnVpbGRLZXl3b3JkcykKICAgICAgICAgICAgIHRva2VuID0gcGFyc2VJZGVudGlmaWVyPGZhbHNl
Pih0b2tlbkRhdGEsIGxleGVyRmxhZ3MsIHN0cmljdE1vZGUpOwogICAgICAgICBlbHNlCkBAIC0x
NjcwLDYgKzE3MjQsMTEgQEAgaW5OdW1iZXJBZnRlckRlY2ltYWxQb2ludDoKICAgICAgICAgbV90
ZXJtaW5hdG9yID0gdHJ1ZTsKICAgICAgICAgbV9saW5lU3RhcnQgPSBtX2NvZGU7CiAgICAgICAg
IGdvdG8gc3RhcnQ7CisgICAgY2FzZSBDaGFyYWN0ZXJQcml2YXRlSWRlbnRpZmllclN0YXJ0Ogor
ICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKQorICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50OworCisgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2UgQ2hhcmFjdGVySW52
YWxpZDoKICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBpbnZhbGlkQ2hhcmFjdGVyTWVzc2Fn
ZSgpOwogICAgICAgICB0b2tlbiA9IEVSUk9SVE9LOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9MZXhlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9M
ZXhlci5oCmluZGV4IDI4YzYxYmExOThkMmMxNWE0OWJiMTg1MmVkMzBiZWZlYjg5MDQwMDguLmI4
ODczZTk5NTAyODY0NGJmOGNiYjNkNGMyZGE1NjJlOTNlMGU4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0xleGVyLmgKQEAgLTcyLDcgKzcyLDcgQEAgY2xhc3MgTGV4ZXIgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCiBwdWJsaWM6Ci0gICAgTGV4ZXIoVk0qKTsKKyAgICBM
ZXhlcihWTSosIEpTUGFyc2VyU3RyaWN0bmVzcyk7CiAgICAgfkxleGVyKCk7CiAKICAgICAvLyBD
aGFyYWN0ZXIgbWFuaXB1bGF0aW9uIGZ1bmN0aW9ucy4KQEAgLTIzOCw2ICsyMzgsNyBAQCBwcml2
YXRlOgogICAgIElkZW50aWZpZXJBcmVuYSogbV9hcmVuYTsKIAogICAgIFZNKiBtX3ZtOworICAg
IGJvb2wgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uOwogfTsKIAogdGVtcGxhdGUgPD4KQEAgLTMz
NSw2ICszMzYsMTIgQEAgQUxXQVlTX0lOTElORSBjb25zdCBJZGVudGlmaWVyKiBMZXhlcjxUPjo6
bWFrZUxDaGFySWRlbnRpZmllcihjb25zdCBVQ2hhciogY2hhcmEKICAgICByZXR1cm4gJm1fYXJl
bmEtPm1ha2VJZGVudGlmaWVyTENoYXJGcm9tVUNoYXIobV92bSwgY2hhcmFjdGVycywgbGVuZ3Ro
KTsKIH0KIAorI2lmIEFTU0VSVF9ESVNBQkxFRAorQUxXQVlTX0lOTElORSBib29sIGlzU2FmZUlk
ZW50aWZpZXIoVk0mLCBjb25zdCBJZGVudGlmaWVyKikgeyByZXR1cm4gdHJ1ZTsgfQorI2Vsc2UK
K2Jvb2wgaXNTYWZlSWRlbnRpZmllcihWTSYsIGNvbnN0IElkZW50aWZpZXIqKTsKKyNlbmRpZgor
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8
VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tlbiogdG9rZW5SZWNvcmQsIHVuc2lnbmVkIGxl
eGVyRmxhZ3MsIGJvb2wgc3RyaWN0TW9kZSkKIHsKQEAgLTM3MCwxMCArMzc3LDE1IEBAIEFMV0FZ
U19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tl
biogdG9rZW5SZWNvcmQsIHVuCiAgICAgQVNTRVJUKGN1cnJlbnRPZmZzZXQoKSA+PSBjdXJyZW50
TGluZVN0YXJ0T2Zmc2V0KCkpOwogCiAgICAgLy8gQ3JlYXRlIHRoZSBpZGVudGlmaWVyIGlmIG5l
ZWRlZAotICAgIGlmIChsZXhlckZsYWdzICYgTGV4ZXhGbGFnc0RvbnRCdWlsZEtleXdvcmRzKQor
ICAgIGlmIChsZXhlckZsYWdzICYgTGV4ZXhGbGFnc0RvbnRCdWlsZEtleXdvcmRzCisjaWYgIUFT
U0VSVF9ESVNBQkxFRAorICAgICAgICAmJiAhbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uCisjZW5k
aWYKKyAgICAgICAgKQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gMDsKICAgICBlbHNlCiAg
ICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBtYWtlTENoYXJJZGVudGlmaWVyKHN0YXJ0LCBwdHIg
LSBzdGFydCk7CisKICAgICB0b2tlbkxvY2F0aW9uLT5saW5lID0gbV9saW5lTnVtYmVyOwogICAg
IHRva2VuTG9jYXRpb24tPmxpbmVTdGFydE9mZnNldCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQo
KTsKICAgICB0b2tlbkxvY2F0aW9uLT5zdGFydE9mZnNldCA9IG9mZnNldEZyb21Tb3VyY2VQdHIo
c3RhcnQpOwpAQCAtMzgxLDYgKzM5MywxMyBAQCBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExl
eGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW4qIHRva2VuUmVjb3JkLCB1bgogICAg
IEFTU0VSVCh0b2tlbkxvY2F0aW9uLT5zdGFydE9mZnNldCA+PSB0b2tlbkxvY2F0aW9uLT5saW5l
U3RhcnRPZmZzZXQpOwogICAgIHRva2VuUmVjb3JkLT5tX3N0YXJ0UG9zaXRpb24gPSBzdGFydFBv
c2l0aW9uOwogICAgIHRva2VuUmVjb3JkLT5tX2VuZFBvc2l0aW9uID0gY3VycmVudFBvc2l0aW9u
KCk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rp
b24pIHsKKyAgICAgICAgaWYgKCFpc1NhZmVJZGVudGlmaWVyKCptX3ZtLCB0b2tlbkRhdGEtPmlk
ZW50KSkKKyAgICAgICAgICAgIHJldHVybiBFUlJPUlRPSzsKKyAgICB9CisjZW5kaWYKKwogICAg
IG1fbGFzdFRva2VuID0gSURFTlQ7CiAgICAgcmV0dXJuIElERU5UOwogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCBmYzljY2Q5ZjZjNTc2YzFhZWY1NDdmMjEx
ZmRkNTk2ZjQyZTA1ODA2Li5kOTUyYmE2YTk0ZDJmNmI0MTgyMTU1MDA0ZDBhOTcwODQyOWJkNzhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMTMyLDYgKzEzMiwx
MiBAQCBQYXNzUmVmUHRyPFByb2dyYW1Ob2RlPiBQcm9ncmFtTm9kZTo6Y3JlYXRlKFZNKiB2bSwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydAogICAgIHJldHVybiBub2RlLnJlbGVhc2UoKTsK
IH0KIAorCit2b2lkIFByb2dyYW1Ob2RlOjpzZXRDbG9zZWRWYXJpYWJsZXMoY29uc3QgVmVjdG9y
PFJlZlB0cjxTdHJpbmdJbXBsPj4mJiBjbG9zZWRWYXJpYWJsZXMpCit7CisgICAgbV9jbG9zZWRW
YXJpYWJsZXMgPSBzdGQ6Om1vdmUoY2xvc2VkVmFyaWFibGVzKTsKK30KKwogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV2YWxOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKIGlubGluZSBFdmFsTm9kZTo6RXZhbE5vZGUoVk0qIHZtLCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24s
IHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayog
dmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVy
ZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1
cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmlu
ZGV4IGQ3NzlhMTc4ZDk1NmZmOTlmZDBiZWQ1ZDVmNDU0YWEzZTZiNTA4NzkuLjgxNmZmMDAxYWJm
MDM3NmM2NDJmMWE5MzhkMGUwYTlmNTI5Y2E2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmgKQEAgLTE0MzEsNiArMTQzMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBi
b29sIG5lZWRzQWN0aXZhdGlvbigpIGNvbnN0IHsgcmV0dXJuIChoYXNDYXB0dXJlZFZhcmlhYmxl
cygpKSB8fCAobV9mZWF0dXJlcyAmIChFdmFsRmVhdHVyZSB8IFdpdGhGZWF0dXJlIHwgQ2F0Y2hG
ZWF0dXJlKSk7IH0KICAgICAgICAgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcygpIGNvbnN0IHsg
cmV0dXJuICEhbV9jYXB0dXJlZFZhcmlhYmxlcy5zaXplKCk7IH0KICAgICAgICAgc2l6ZV90IGNh
cHR1cmVkVmFyaWFibGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FwdHVyZWRWYXJpYWJsZXMu
c2l6ZSgpOyB9CisgICAgICAgIGNvbnN0IElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVz
KCkgY29uc3QgeyByZXR1cm4gbV9jYXB0dXJlZFZhcmlhYmxlczsgfQogICAgICAgICBib29sIGNh
cHR1cmVzKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSB7IHJldHVybiBtX2NhcHR1cmVkVmFyaWFi
bGVzLmNvbnRhaW5zKGlkZW50LmltcGwoKSk7IH0KIAogICAgICAgICBWYXJTdGFjayYgdmFyU3Rh
Y2soKSB7IHJldHVybiBtX3ZhclN0YWNrOyB9CkBAIC0xNDQ2LDYgKzE0NDcsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50KCkgY29uc3Q7
CiAKICAgICAgICAgdm9pZCBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogZGVzdGluYXRpb24pOworICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRD
bG9zZWRWYXJpYWJsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJikgeyB9CiAK
ICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZvaWQgc2V0U291cmNlKGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSkgeyBtX3NvdXJjZSA9IHNvdXJjZTsgfQpAQCAtMTQ3NSwxMSArMTQ3OCwxMyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzY29wZUlzRnVuY3Rp
b24gPSBmYWxzZTsKIAorICAgICAgICB2b2lkIHNldENsb3NlZFZhcmlhYmxlcyhjb25zdCBWZWN0
b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmKTsKKyAgICAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxT
dHJpbmdJbXBsPj4mIGNsb3NlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2xvc2VkVmFy
aWFibGVzOyB9CiAgICAgcHJpdmF0ZToKICAgICAgICAgUHJvZ3JhbU5vZGUoVk0qLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWdu
ZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqLCBWYXJT
dGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYs
IENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAgdmlydHVhbCB2b2lk
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJp
ZGU7Ci0KKyAgICAgICAgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4gbV9jbG9zZWRWYXJpYWJs
ZXM7CiAgICAgICAgIHVuc2lnbmVkIG1fc3RhcnRDb2x1bW47CiAgICAgICAgIHVuc2lnbmVkIG1f
ZW5kQ29sdW1uOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAK
aW5kZXggMjk3NjY2ZTcyNmU0NWQwODNlZjEzNDlkZGZmZGYzN2VmODAwZGY3YS4uNTBiZWM3OWZl
MzhhZGY4ZjNhMDRmNmI0NmNiZDJhNWNiZmNmMjQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcApAQCAtMjA0LDggKzIwNCw5IEBAIFBhcnNlcjxMZXhlclR5cGU+OjpQ
YXJzZXIoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uUGFyYW1ldGVy
cyoKICAgICAsIG1fbGFzdElkZW50aWZpZXIoMCkKICAgICAsIG1fbGFzdEZ1bmN0aW9uTmFtZShu
dWxscHRyKQogICAgICwgbV9zb3VyY2VFbGVtZW50cygwKQorICAgICwgbV9wYXJzaW5nQnVpbHRp
bihzdHJpY3RuZXNzID09IEpTUGFyc2VCdWlsdGluKQogewotICAgIG1fbGV4ZXIgPSBhZG9wdFB0
cihuZXcgTGV4ZXJUeXBlKHZtKSk7CisgICAgbV9sZXhlciA9IGFkb3B0UHRyKG5ldyBMZXhlclR5
cGUodm0sIHN0cmljdG5lc3MpKTsKICAgICBtX2FyZW5hID0gbV92bS0+cGFyc2VyQXJlbmEuZ2V0
KCk7CiAgICAgbV9sZXhlci0+c2V0Q29kZShzb3VyY2UsIG1fYXJlbmEpOwogICAgIG1fdG9rZW4u
bV9sb2NhdGlvbi5saW5lID0gc291cmNlLmZpcnN0TGluZSgpOwpAQCAtMjU2LDYgKzI1Nyw3IEBA
IFN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcigpCiAgICAgSWRlbnRpZmllclNl
dCBjYXB0dXJlZFZhcmlhYmxlczsKICAgICBib29sIG1vZGlmaWVkUGFyYW1ldGVyID0gZmFsc2U7
CiAgICAgc2NvcGUtPmdldENhcHR1cmVkVmFyaWFibGVzKGNhcHR1cmVkVmFyaWFibGVzLCBtb2Rp
ZmllZFBhcmFtZXRlcik7CisgICAgCiAgICAgQ29kZUZlYXR1cmVzIGZlYXR1cmVzID0gY29udGV4
dC5mZWF0dXJlcygpOwogICAgIGlmIChzY29wZS0+c3RyaWN0TW9kZSgpKQogICAgICAgICBmZWF0
dXJlcyB8PSBTdHJpY3RNb2RlRmVhdHVyZTsKQEAgLTI2MywyMSArMjY1LDM2IEBAIFN0cmluZyBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcigpCiAgICAgICAgIGZlYXR1cmVzIHw9IFNoYWRv
d3NBcmd1bWVudHNGZWF0dXJlOwogICAgIGlmIChtb2RpZmllZFBhcmFtZXRlcikKICAgICAgICAg
ZmVhdHVyZXMgfD0gTW9kaWZpZWRQYXJhbWV0ZXJGZWF0dXJlOwotCisgICAgCisgICAgVmVjdG9y
PFJlZlB0cjxTdHJpbmdJbXBsPj4gY2xvc2VkVmFyaWFibGVzOworICAgIGlmIChtX3BhcnNpbmdC
dWlsdGluKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFjYXB0dXJlZFZhcmlhYmxlcy5zaXpl
KCkpOworICAgICAgICBJZGVudGlmaWVyU2V0IHVzZWRWYXJpYWJsZXM7CisgICAgICAgIHNjb3Bl
LT5nZXRVc2VkVmFyaWFibGVzKHVzZWRWYXJpYWJsZXMpOworICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIHZhcmlhYmxlIDogdXNlZFZhcmlhYmxlcykgeworICAgICAgICAgICAgaWYgKHNjb3BlLT5o
YXNEZWNsYXJlZFZhcmlhYmxlKElkZW50aWZpZXIobV92bSwgdmFyaWFibGUuZ2V0KCkpKSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHNj
b3BlLT5oYXNEZWNsYXJlZFBhcmFtZXRlcihJZGVudGlmaWVyKG1fdm0sIHZhcmlhYmxlLmdldCgp
KSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBjbG9zZWRWYXJpYWJs
ZXMuYXBwZW5kKHZhcmlhYmxlKTsKKyAgICAgICAgfQorICAgIH0KICAgICBkaWRGaW5pc2hQYXJz
aW5nKHNvdXJjZUVsZW1lbnRzLCBjb250ZXh0LnZhckRlY2xhcmF0aW9ucygpLCBjb250ZXh0LmZ1
bmNEZWNsYXJhdGlvbnMoKSwgZmVhdHVyZXMsCi0gICAgICAgIGNvbnRleHQubnVtQ29uc3RhbnRz
KCksIGNhcHR1cmVkVmFyaWFibGVzKTsKKyAgICAgICAgY29udGV4dC5udW1Db25zdGFudHMoKSwg
Y2FwdHVyZWRWYXJpYWJsZXMsIHN0ZDo6bW92ZShjbG9zZWRWYXJpYWJsZXMpKTsKIAogICAgIHJl
dHVybiBwYXJzZUVycm9yOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdm9p
ZCBQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmluaXNoUGFyc2luZyhTb3VyY2VFbGVtZW50cyogc291
cmNlRWxlbWVudHMsIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+
KiB2YXJTdGFjaywgCi0gICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5j
dGlvblN0YWNrPiogZnVuY1N0YWNrLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25z
dGFudHMsIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFycykKKyAgICBQYXJzZXJBcmVuYURhdGE8
RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KiBmdW5jU3RhY2ssIENvZGVGZWF0dXJl
cyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJz
LCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmIGNsb3NlZFZhcmlhYmxlcykKIHsK
ICAgICBtX3NvdXJjZUVsZW1lbnRzID0gc291cmNlRWxlbWVudHM7CiAgICAgbV92YXJEZWNsYXJh
dGlvbnMgPSB2YXJTdGFjazsKICAgICBtX2Z1bmNEZWNsYXJhdGlvbnMgPSBmdW5jU3RhY2s7CiAg
ICAgbV9jYXB0dXJlZFZhcmlhYmxlcy5zd2FwKGNhcHR1cmVkVmFycyk7CisgICAgbV9jbG9zZWRW
YXJpYWJsZXMgPSBjbG9zZWRWYXJpYWJsZXM7CiAgICAgbV9mZWF0dXJlcyA9IGZlYXR1cmVzOwog
ICAgIG1fbnVtQ29uc3RhbnRzID0gbnVtQ29uc3RhbnRzOwogfQpAQCAtMjM0Niw2ICsyMzYzLDEw
IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+IHZvaWQgUGFyc2VyPExleGVyVHlwZT46
OnByaW50VW5leHBlY3RlZFRva2VuVGV4dChXCiAgICAgY2FzZSBSRVNFUlZFRDoKICAgICAgICAg
b3V0LnByaW50KCJVbmV4cGVjdGVkIHVzZSBvZiByZXNlcnZlZCB3b3JkICciLCBnZXRUb2tlbigp
LCAiJyIpOwogICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIElOVkFMSURfUFJJVkFURV9OQU1F
X0VSUk9SVE9LOgorICAgICAgICBvdXQucHJpbnQoIkludmFsaWQgcHJpdmF0ZSBuYW1lICciLCBn
ZXRUb2tlbigpLCAiJyIpOworICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAKICAgICBjYXNl
IElERU5UOgogICAgICAgICBvdXQucHJpbnQoIlVuZXhwZWN0ZWQgaWRlbnRpZmllciAnIiwgZ2V0
VG9rZW4oKSwgIiciKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGI2
OThlZjkzNjhjYjhjOGYxOTdjY2QwMDBhY2FhNmRmYjExYmEyNDQuLjkwMzM4NTBjOGM5N2Y1N2Uy
MWRhNWVlZGIwMmQwNDRmNGM4OTc4ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaApAQCAtMjMsNiArMjMsNyBAQAogI2lmbmRlZiBQYXJzZXJfaAogI2RlZmluZSBQYXJzZXJf
aAogCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgi
CkBAIC0yNTksNiArMjYwLDEwIEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgIHJldHVybiBpc1Zh
bGlkU3RyaWN0TW9kZSA/IEJpbmRpbmdTdWNjZWVkZWQgOiBTdHJpY3RCaW5kaW5nRmFpbGVkOwog
ICAgIH0KIAorICAgIHZvaWQgZ2V0VXNlZFZhcmlhYmxlcyhJZGVudGlmaWVyU2V0JiB1c2VkVmFy
aWFibGVzKQorICAgIHsKKyAgICAgICAgdXNlZFZhcmlhYmxlcy5zd2FwKG1fdXNlZFZhcmlhYmxl
cyk7CisgICAgfQogCiAgICAgdm9pZCB1c2VWYXJpYWJsZShjb25zdCBJZGVudGlmaWVyKiBpZGVu
dCwgYm9vbCBpc0V2YWwpCiAgICAgewpAQCAtNDE0LDYgKzQxOSw3IEBAIHB1YmxpYzoKICAgICBQ
YXNzUmVmUHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNlckVycm9yJik7CiAKICAgICBKU1RleHRQ
b3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sZXhl
ci0+cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOyB9CisgICAgY29uc3QgVmVjdG9yPFJlZlB0
cjxTdHJpbmdJbXBsPj4mJiBjbG9zZWRWYXJpYWJsZXMoKSB7IHJldHVybiBzdGQ6Om1vdmUobV9j
bG9zZWRWYXJpYWJsZXMpOyB9CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IEFsbG93SW5PdmVycmlk
ZSB7CkBAIC01NDAsNyArNTQ2LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgcGFyc2VJbm5lcigp
OwogCiAgICAgdm9pZCBkaWRGaW5pc2hQYXJzaW5nKFNvdXJjZUVsZW1lbnRzKiwgUGFyc2VyQXJl
bmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjaz4qLCAKLSAgICAgICAgUGFyc2VyQXJl
bmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiosIENvZGVGZWF0dXJlcywg
aW50LCBJZGVudGlmaWVyU2V0Jik7CisgICAgICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlv
blN0YWNrczo6RnVuY3Rpb25TdGFjaz4qLCBDb2RlRmVhdHVyZXMsIGludCwgSWRlbnRpZmllclNl
dCYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYpOwogCiAgICAgLy8gVXNlZCB0
byBkZXRlcm1pbmUgdHlwZSBvZiBlcnJvciB0byByZXBvcnQuCiAgICAgYm9vbCBpc0Z1bmN0aW9u
Qm9keU5vZGUoU2NvcGVOb2RlKikgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTg0MCw5ICs4NDYsMTEg
QEAgcHJpdmF0ZToKICAgICBjb25zdCBJZGVudGlmaWVyKiBtX2xhc3RGdW5jdGlvbk5hbWU7CiAg
ICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyQ2FjaGU+IG1fZnVuY3Rpb25DYWNoZTsKICAgICBTb3Vy
Y2VFbGVtZW50cyogbV9zb3VyY2VFbGVtZW50czsKKyAgICBib29sIG1fcGFyc2luZ0J1aWx0aW47
CiAgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjaz4qIG1fdmFy
RGVjbGFyYXRpb25zOwogICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVu
Y3Rpb25TdGFjaz4qIG1fZnVuY0RlY2xhcmF0aW9uczsKICAgICBJZGVudGlmaWVyU2V0IG1fY2Fw
dHVyZWRWYXJpYWJsZXM7CisgICAgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4gbV9jbG9zZWRW
YXJpYWJsZXM7CiAgICAgQ29kZUZlYXR1cmVzIG1fZmVhdHVyZXM7CiAgICAgaW50IG1fbnVtQ29u
c3RhbnRzOwogICAgIApAQCAtOTU3LDYgKzk2NSwxMCBAQCBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+
IHBhcnNlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRl
cgogICAgICAgICBSZWZQdHI8UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNl
ZE5vZGU+KGVycm9yKTsKICAgICAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAg
ICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lKCk7CisgICAgICAgIGlmIChzdHJpY3RuZXNzID09IEpTUGFyc2VCdWls
dGluKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOworICAgICAgICAgICAg
cmVzdWx0LT5zZXRDbG9zZWRWYXJpYWJsZXMoc3RkOjptb3ZlKHBhcnNlci5jbG9zZWRWYXJpYWJs
ZXMoKSkpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogICAg
IH0KICAgICBQYXJzZXI8TGV4ZXI8VUNoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgcGFyYW1ldGVy
cywgbmFtZSwgc3RyaWN0bmVzcywgcGFyc2VyTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlck1vZGVzLmgKaW5kZXggNGU5YTE3Y2QyMWNhMzQxNDZiYmQ0ODE1NmEzNzJj
ZDQwNGRlZjYwYy4uZjdhNzViZjdjMzc4NTdlNDRiNmQ1ZDcxZjQ1MjliYjFhYzFjZjVmMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaApAQCAtMjksNyArMjks
NyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51bSBKU1BhcnNlclN0cmljdG5lc3MgeyBKU1Bh
cnNlTm9ybWFsLCBKU1BhcnNlU3RyaWN0IH07CitlbnVtIEpTUGFyc2VyU3RyaWN0bmVzcyB7IEpT
UGFyc2VOb3JtYWwsIEpTUGFyc2VCdWlsdGluLCBKU1BhcnNlU3RyaWN0IH07CiBlbnVtIEpTUGFy
c2VyTW9kZSB7IEpTUGFyc2VQcm9ncmFtQ29kZSwgSlNQYXJzZUZ1bmN0aW9uQ29kZSB9OwogCiBl
bnVtIFByb2ZpbGVyTW9kZSB7IFByb2ZpbGVyT2ZmLCBQcm9maWxlck9uIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAppbmRleCA4MmEyNjYzOWE3OTIyMGEw
ODQ0NTZiNDhmMzI4NTJkMTQzYzczOWQwLi44Yzg3YWQ5ZmFkYmRjNGFmMzlhYzk5ZGIyZDg0NDVl
MTNmZmZkMzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
clRva2Vucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5z
LmgKQEAgLTE0OSw2ICsxNDksNyBAQCBlbnVtIEpTVG9rZW5UeXBlIHsKICAgICBJTlZBTElEX05V
TUVSSUNfTElURVJBTF9FUlJPUlRPSyA9IDcgfCBFcnJvclRva2VuRmxhZywKICAgICBVTlRFUk1J
TkFURURfU1RSSU5HX0xJVEVSQUxfRVJST1JUT0sgPSA4IHwgRXJyb3JUb2tlbkZsYWcgfCBVbnRl
cm1pbmF0ZWRFcnJvclRva2VuRmxhZywKICAgICBJTlZBTElEX1NUUklOR19MSVRFUkFMX0VSUk9S
VE9LID0gOSB8IEVycm9yVG9rZW5GbGFnLAorICAgIElOVkFMSURfUFJJVkFURV9OQU1FX0VSUk9S
VE9LID0gMTAgfCBFcnJvclRva2VuRmxhZwogfTsKIAogc3RydWN0IEpTVGV4dFBvc2l0aW9uIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKaW5kZXggMThmMzg5MTcx
Mzg1MjM2MmM3YTc1YTMwNTNiNDYzMTQxN2JlYjgxYi4uZjE2ZmQzZGU0MDU1OTcwYmE5ZDljNmYw
YWU2MzE4ZjIyMDRiNjU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJndW1lbnRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1l
bnRzLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNkZWZpbmUgQXJndW1lbnRzX2gKIAogI2luY2x1ZGUg
IkNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUg
IkpTQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCmluZGV4IGRkMDg5NGYx
NGEwMjFkNWYxMjY1OGFjYjAxZTcyMWZjZDZkMzQ4Y2MuLjViNGFlODcxNmIwNTUzYmU0NjIzOTU1
ZTk5ZTFiNDNlYmYxOGZlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTI2LDcgKzI2
LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBcmd1bWVudHNJdGVyYXRvclBy
b3RvdHlwZS5oIgogCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJK
U0FyZ3VtZW50c0l0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmNwcAppbmRleCAyN2FjNmQ0OGE3MWY3OTU1MDJhMTBjZWE2NDc4NjU0MTM1
YTQ2M2EwLi42ZGM3YmU1Njk2OWRlNjdmNjIxMDdiYjNhNTFhMzA4ZmEzYmE3NmJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdCdWlsZGVyLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdKb2luZXIuaCIKICNpbmNsdWRlICJMb29rdXAuaCIK
ICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKQEAgLTU2LDcgKzU3LDYgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUq
KTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU29y
dChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5
UHJvdG9GdW5jU3BsaWNlKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNVblNoaWZ0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNFdmVyeShFeGVjU3RhdGUqKTsK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRm9yRWFj
aChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5
UHJvdG9GdW5jU29tZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5UHJvdG9GdW5jSW5kZXhPZihFeGVjU3RhdGUqKTsKQEAgLTk1NCw2OSArOTU0
LDYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY01hcChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHRBcnJheSk7CiB9
CiAKLS8vIERvY3VtZW50YXRpb24gZm9yIHRoZXNlIHRocmVlIGlzIGF2YWlsYWJsZSBhdDoKLS8v
IGh0dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3ppbGxhLm9yZy9lbi9kb2NzL0NvcmVfSmF2YVNjcmlw
dF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6QXJyYXk6ZXZlcnkKLS8vIGh0dHA6Ly9kZXZlbG9wZXIt
dGVzdC5tb3ppbGxhLm9yZy9lbi9kb2NzL0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9i
amVjdHM6QXJyYXk6Zm9yRWFjaAotLy8gaHR0cDovL2RldmVsb3Blci10ZXN0Lm1vemlsbGEub3Jn
L2VuL2RvY3MvQ29yZV9KYXZhU2NyaXB0XzEuNV9SZWZlcmVuY2U6T2JqZWN0czpBcnJheTpzb21l
Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNFdmVyeShFeGVj
U3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNPYmplY3QqIHRoaXNPYmogPSBleGVjLT5ob3N0VGhpc1Zh
bHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOwotICAgIHVuc2ln
bmVkIGxlbmd0aCA9IHRoaXNPYmotPmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVu
Z3RoKS50b1VJbnQzMihleGVjKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KLSAgICBKU1ZhbHVl
IGZ1bmN0aW9uID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0g
ICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwot
ICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMpOwotCi0gICAgSlNWYWx1ZSBhcHBseVRoaXMgPSBleGVjLT5hcmd1bWVu
dCgxKTsKLQotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKHRydWUpOwotCi0gICAgdW5z
aWduZWQgayA9IDA7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlSlMgJiYgaXNKU0FycmF5
KHRoaXNPYmopKSB7Ci0gICAgICAgIEpTRnVuY3Rpb24qIGYgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+
KGZ1bmN0aW9uKTsKLSAgICAgICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KHRoaXNPYmopOwot
ICAgICAgICBDYWNoZWRDYWxsIGNhY2hlZENhbGwoZXhlYywgZiwgMyk7Ci0gICAgICAgIGZvciAo
OyBrIDwgbGVuZ3RoICYmICFleGVjLT5oYWRFeGNlcHRpb24oKTsgKytrKSB7Ci0gICAgICAgICAg
ICBpZiAoVU5MSUtFTFkoIWFycmF5LT5jYW5HZXRJbmRleFF1aWNrbHkoaykpKQotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldFRo
aXMoYXBwbHlUaGlzKTsKLSAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoMCwgYXJy
YXktPmdldEluZGV4UXVpY2tseShrKSk7Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3Vt
ZW50KDEsIGpzTnVtYmVyKGspKTsKLSAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQo
MiwgdGhpc09iaik7Ci0gICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhY2hlZENhbGwuY2Fs
bCgpOwotICAgICAgICAgICAgaWYgKCFyZXN1bHQudG9Cb29sZWFuKGV4ZWMpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgZm9yICg7IGsgPCBsZW5ndGggJiYgIWV4ZWMtPmhhZEV4Y2VwdGlvbigp
OyArK2spIHsKLSAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iaik7Ci0gICAgICAgIGlm
ICghdGhpc09iai0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGssIHNsb3QpKQotICAgICAgICAgICAg
Y29udGludWU7Ci0KLSAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgZWFjaEFyZ3VtZW50czsK
LSAgICAgICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQoc2xvdC5nZXRWYWx1ZShleGVjLCBrKSk7Ci0g
ICAgICAgIGVhY2hBcmd1bWVudHMuYXBwZW5kKGpzTnVtYmVyKGspKTsKLSAgICAgICAgZWFjaEFy
Z3VtZW50cy5hcHBlbmQodGhpc09iaik7Ci0KLSAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
LQotICAgICAgICBib29sIHByZWRpY2F0ZVJlc3VsdCA9IGNhbGwoZXhlYywgZnVuY3Rpb24sIGNh
bGxUeXBlLCBjYWxsRGF0YSwgYXBwbHlUaGlzLCBlYWNoQXJndW1lbnRzKS50b0Jvb2xlYW4oZXhl
Yyk7Ci0gICAgICAgIGlmICghcHJlZGljYXRlUmVzdWx0KSB7Ci0gICAgICAgICAgICByZXN1bHQg
PSBqc0Jvb2xlYW4oZmFsc2UpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci19Ci0KIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNGb3JFYWNoKEV4ZWNTdGF0ZSogZXhlYykK
IHsKICAgICBKU09iamVjdCogdGhpc09iaiA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKS50b1RoaXMo
ZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCA1MTBlMzgzZmFlNTc1YWFkYTgxNzZjMDQ0MWVl
NzI1YjQzYTRjNzMyLi5kMzA0ODc3ZmU5Y2RlMWMwOTE5ZmQ0NTk1ZjgxMWVjYWJjZTc3Mjc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTE0NCwy
NCArMTQ0LDI2IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6OmdldEZ1
bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZNJiB2CiAgICAgSlNUZXh0UG9zaXRpb24g
cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZTsKICAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHByb2dy
YW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oJnZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIoKSwgSlNQ
YXJzZU5vcm1hbCwgSlNQYXJzZVByb2dyYW1Db2RlLCBlcnJvciwgJnBvc2l0aW9uQmVmb3JlTGFz
dE5ld2xpbmUpOwogICAgIGlmICghcHJvZ3JhbSkgewotICAgICAgICBBU1NFUlQoZXJyb3IubV90
eXBlICE9IFBhcnNlckVycm9yOjpFcnJvck5vbmUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChl
cnJvci5tX3R5cGUgIT0gUGFyc2VyRXJyb3I6OkVycm9yTm9uZSk7CiAgICAgICAgIG1fc291cmNl
Q29kZS5yZW1vdmUoYWRkUmVzdWx0Lml0ZXJhdG9yKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBhc3N1bWVzIGFuIGlucHV0IHN0cmluZyB0aGF0IHdv
dWxkIHJlc3VsdCBpbiBhIHNpbmdsZSBhbm9ueW1vdXMgZnVuY3Rpb24gZXhwcmVzc2lvbi4KICAg
ICBTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVtZW50ID0gcHJvZ3JhbS0+c2luZ2xlU3RhdGVtZW50
KCk7Ci0gICAgQVNTRVJUKGV4cHJTdGF0ZW1lbnQpOwotICAgIEFTU0VSVChleHByU3RhdGVtZW50
LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudCk7
CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudC0+aXNFeHByU3RhdGVtZW50KCkpOwog
ICAgIEV4cHJlc3Npb25Ob2RlKiBmdW5jRXhwciA9IHN0YXRpY19jYXN0PEV4cHJTdGF0ZW1lbnRO
b2RlKj4oZXhwclN0YXRlbWVudCktPmV4cHIoKTsKLSAgICBBU1NFUlQoZnVuY0V4cHIpOworICAg
IFJFTEVBU0VfQVNTRVJUKGZ1bmNFeHByKTsKICAgICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwci0+
aXNGdW5jRXhwck5vZGUoKSk7CiAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSA9IHN0YXRpY19j
YXN0PEZ1bmNFeHByTm9kZSo+KGZ1bmNFeHByKS0+Ym9keSgpOworICAgIFJFTEVBU0VfQVNTRVJU
KCFwcm9ncmFtLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKKyAgICAKICAgICBib2R5LT5zZXRF
bmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKLSAgICBBU1NFUlQoYm9keSk7
Ci0gICAgQVNTRVJUKGJvZHktPmlkZW50KCkuaXNOdWxsKCkpOworICAgIFJFTEVBU0VfQVNTRVJU
KGJvZHkpOworICAgIFJFTEVBU0VfQVNTRVJUKGJvZHktPmlkZW50KCkuaXNOdWxsKCkpOwogCi0g
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIGJvZHksIHRydWUpOwor
ICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBib2R5LCB0cnVlLCBV
bmxpbmtlZE5vcm1hbEZ1bmN0aW9uKTsKICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPm1fbmFtZVZh
bHVlLnNldCh2bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBqc1N0cmluZygmdm0sIG5hbWUuc3RyaW5n
KCkpKTsKIAogICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBTb3VyY2VDb2RlVmFsdWUo
dm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwgbV9zb3VyY2VDb2RlLmFnZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcAppbmRleCAz
ZjVjNjQ1YzA5OGQ1MjdmYzBjNzI1OWU5NDQ3ZWZiZTg4NjhhMjljLi4yZmMyYjcyN2FmY2VlZTFl
YzJjNjI1ZGU1Njc1YjNiZTFjZjYwZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCkBAIC0yNyw3ICsyNywxMCBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogI2RlZmluZSBJTklUSUFMSVpFX1BST1BFUlRZX05BTUUobmFtZSkgLCBu
YW1lKHZtLCAjbmFtZSkKICNkZWZpbmUgSU5JVElBTElaRV9LRVlXT1JEKG5hbWUpICwgbmFtZSMj
S2V5d29yZCh2bSwgI25hbWUpCi0jZGVmaW5lIElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKG5hbWUp
ICwgbmFtZSMjUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbShQcml2YXRlTmFtZSgpKSkKKyNk
ZWZpbmUgSU5JVElBTElaRV9QUklWQVRFX05BTUUobmFtZSkgXAorICAgICwgbmFtZSMjUHJpdmF0
ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbShQcml2YXRlTmFtZSgpKSkgXAorICAgICwgbV8jI25hbWUj
I1B1YmxpY1N0cmluZ1BhaXIobmFtZSwgbmFtZSMjUHJpdmF0ZU5hbWUpIFwKKwogCiBDb21tb25J
ZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMoVk0qIHZtKQogICAgIDogbnVsbElkZW50aWZp
ZXIoKQpAQCAtMzgsOCArNDEsMjYgQEAgQ29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZp
ZXJzKFZNKiB2bSkKICAgICAsIGhhc05leHRJZGVudGlmaWVyKHZtLCAiaGFzTmV4dCIpCiAgICAg
SlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQoSU5JVElBTElaRV9LRVlXT1JEKQog
ICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJWkVf
UFJPUEVSVFlfTkFNRSkKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoSU5J
VElBTElaRV9QUk9QRVJUWV9OQU1FKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVS
U19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElaRV9QUklWQVRFX05BTUUpCiB7CiB9CiAKK2Nv
bnN0IElkZW50aWZpZXIqIENvbW1vbklkZW50aWZpZXJzOjpnZXRQcml2YXRlTmFtZShjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK3sKKyNkZWZpbmUgUkVUVVJOX0lGX1BSSVZBVEVfTkFN
RV9NQVRDSEVTKG5hbWUpIGlmIChtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpci5maXJzdCA9PSBp
ZGVudCkgcmV0dXJuICZtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpci5zZWNvbmQ7CisgICAgSlND
X0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShSRVRVUk5fSUZf
UFJJVkFURV9OQU1FX01BVENIRVMpCisjdW5kZWYgUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRD
SEVTCisgICAgcmV0dXJuIDA7Cit9CisKK0lkZW50aWZpZXIgQ29tbW9uSWRlbnRpZmllcnM6Omdl
dFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0Cit7CisjZGVmaW5lIFJF
VFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hFUyhuYW1lKSBpZiAobV8jI25hbWUjI1B1YmxpY1N0
cmluZ1BhaXIuc2Vjb25kID09IGlkZW50KSByZXR1cm4gbV8jI25hbWUjI1B1YmxpY1N0cmluZ1Bh
aXIuZmlyc3Q7CisgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVS
VFlfTkFNRShSRVRVUk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMpCisjdW5kZWYgUkVUVVJOX0lG
X1BSSVZBVEVfTkFNRV9NQVRDSEVTCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gZW1wdHlJZGVudGlmaWVyOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmlu
ZGV4IGU4ZjllZDgyYmM3OTQ2MjAzODI2NmIzMDIwNzgyMjQ3YjFmYTI3YTMuLjkyNGQzNmFjNjkx
MzUwMzU3Y2IzODJiMWVmM2I0MGEwYTA4YzBhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMjIsNiArMjIsNyBAQAogI2Rl
ZmluZSBDb21tb25JZGVudGlmaWVyc19oCiAKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCisjaW5j
bHVkZSAiSlNDQnVpbHRpbnMuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogLy8g
TWFya2VkQXJndW1lbnRCdWZmZXIgb2YgcHJvcGVydHkgbmFtZXMsIHBhc3NlZCB0byBhIG1hY3Jv
IHNvIHdlIGNhbiBkbyBzZXQgdGhlbSB1cCB2YXJpb3VzCkBAIC0xMzMsOCArMTM0LDEwIEBACiAg
ICAgbWFjcm8ob3NyRXhpdHMpIFwKICAgICBtYWNybyhwYXJzZSkgXAogICAgIG1hY3JvKHByb2Zp
bGVkQnl0ZWNvZGVzKSBcCisgICAgbWFjcm8ocHJvbWlzZSkgXAogICAgIG1hY3JvKHByb3BlcnR5
SXNFbnVtZXJhYmxlKSBcCiAgICAgbWFjcm8ocHJvdG90eXBlKSBcCisgICAgbWFjcm8ocmVzb2x2
ZSkgXAogICAgIG1hY3JvKHNldCkgXAogICAgIG1hY3JvKHNpemUpIFwKICAgICBtYWNybyhzbGlj
ZSkgXApAQCAtMTU1LDcgKzE1OCwxNCBAQAogICAgIG1hY3JvKHZhbHVlcykgXAogICAgIG1hY3Jv
KHZhbHVlT2YpIFwKICAgICBtYWNybyh3aW5kb3cpIFwKLSAgICBtYWNybyh3cml0YWJsZSkKKyAg
ICBtYWNybyh3cml0YWJsZSkgXAorICAgIG1hY3JvKGl0ZXJhdG9yKSBcCisgICAgbWFjcm8oaXRl
cmF0b3JOZXh0KSBcCisgICAgbWFjcm8ocmVqZWN0KSBcCisgICAgbWFjcm8oZnVsZmlsbG1lbnRI
YW5kbGVyKSBcCisgICAgbWFjcm8ocmVqZWN0aW9uSGFuZGxlcikgXAorICAgIG1hY3JvKGRlZmVy
cmVkKSBcCisgICAgbWFjcm8oY291bnRkb3duSG9sZGVyKSBcCiAKICNkZWZpbmUgSlNDX0NPTU1P
Tl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQobWFjcm8pIFwKICAgICBtYWNybyhicmVhaykgXApA
QCAtMjAzLDcgKzIxMyw3IEBACiAgICAgbWFjcm8odm9pZCkgXAogICAgIG1hY3JvKHdoaWxlKSBc
CiAgICAgbWFjcm8od2l0aCkgXAotICAgIG1hY3JvKHlpZWxkKQorICAgIG1hY3JvKHlpZWxkKSBc
CiAKICNkZWZpbmUgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlf
TkFNRShtYWNybykgXAogICAgIG1hY3JvKGl0ZXJhdG9yKSBcCkBAIC0yMTYsNyArMjI2LDEyIEBA
CiAgICAgbWFjcm8oaW5kZXgpIFwKICAgICBtYWNybyh2YWx1ZXMpIFwKICAgICBtYWNybyhkZWZl
cnJlZCkgXAotICAgIG1hY3JvKGNvdW50ZG93bkhvbGRlcikKKyAgICBtYWNybyhjb3VudGRvd25I
b2xkZXIpIFwKKyAgICBtYWNybyhPYmplY3QpIFwKKyAgICBtYWNybyhUeXBlRXJyb3IpIFwKKyAg
ICBtYWNybyh1bmRlZmluZWRLZXl3b3JkKSBcCisgICAgbWFjcm8oY2FsbCkgXAorICAgIG1hY3Jv
KGFwcGx5KQogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMjQwLDExICsyNTUsMTUgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIAogI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BST1BF
UlRZX05BTUVfR0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZTsKICAgICAgICAgSlND
X0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSlNDX0lERU5USUZJRVJfREVD
TEFSRV9QUk9QRVJUWV9OQU1FX0dMT0JBTCkKKyAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9G
VU5DVElPTl9OQU1FKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwp
CiAjdW5kZWYgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJUWV9OQU1FX0dMT0JBTAogCi0j
ZGVmaW5lIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JB
TChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWUjI1ByaXZhdGVOYW1lOworI2RlZmluZSBKU0Nf
SURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwobmFtZSkgY29u
c3QgSWRlbnRpZmllciBuYW1lIyNQcml2YXRlTmFtZTsgY29uc3Qgc3RkOjpwYWlyPElkZW50aWZp
ZXIsIElkZW50aWZpZXI+IG1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQYWlyOwogICAgICAgICBKU0Nf
Q09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKEpTQ19JREVOVElG
SUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTCkKICN1bmRlZiBKU0NfSURF
TlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwKKyAgICAgICAgCisg
ICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXIm
KSBjb25zdDsKKyAgICAgICAgSWRlbnRpZmllciBnZXRQdWJsaWNOYW1lKGNvbnN0IElkZW50aWZp
ZXImKSBjb25zdDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDA3NTg3NWZi
MjMxNmE1NTU3MDUwYTY2OTBjZDBmOTg4MjQ4NGY1ZjMuLjVhZjkwODc1NGU3NDdmOGNhZTBjZDA0
YWY4ZDQ5MTUwMDQ2OGMyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgIkpJVC5o
IgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCi0jaW5j
bHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5o
IgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5j
cHAKaW5kZXggNTUzMzRiZTJmOTgwYTk4ZjdmZWE0MmEwNWJlMGYyMGMwMTlmZjBkZC4uZmE1N2Mw
MjY4NWU1M2Q1MjUyODgwNTdlMjExZDk4YjEwOTgxZDczZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5j
cHAKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUg
IkxMSW50Q29tbW9uLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQ29tbW9uU2xvd1Bh
dGhzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlv
bkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5jcHAKaW5kZXggMDVlMTFlMGI4MGEzNDMwYWVhYjIyYjAyMjJhMjEyZjRhOGUyYzQ5Yi4u
MzY0Y2M3MTY2NjA4YjUwMDdkNDc3ZDg3MzkxOGE1ZDY0YjE2ODY1NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKQEAgLTgxLDYg
KzgxLDExIEBAIEpTT2JqZWN0KiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKIAogSlNPYmplY3QqIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJy
b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKIHsKKyAgICAKKyAg
ICBpZiAoaWRlbnQuaW1wbCgpLT5pc0VtcHR5VW5pcXVlKCkpIHsKKyAgICAgICAgU3RyaW5nIG1l
c3NhZ2UobWFrZVN0cmluZygiQ2FuJ3QgZmluZCBwcml2YXRlIHZhcmlhYmxlOiBAIiwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmdldFB1YmxpY05hbWUoaWRlbnQpLnN0cmluZygpKSk7CisgICAgICAg
IHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBtZXNzYWdlKTsKKyAgICB9CiAgICAg
U3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2FuJ3QgZmluZCB2YXJpYWJsZTogIiwgaWRlbnQu
c3RyaW5nKCkpKTsKICAgICByZXR1cm4gY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgbWVzc2Fn
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXgg
MTk4OTc2YmIzZmU2ZTZlOTExNzk4MTJkMWNhZjliOGJmOWJmZDBiYi4uOGQ1OTBlZjBmZmMwZWI5
MGFjOGY5YTgxZDliYzI1NzIxY2QzNWM5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGUuaApAQCAtNDg0LDcgKzQ4NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
Y2xlYXJDb2RlKCk7CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0
IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBp
c1N0cmljdE1vZGUoKSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUlu
Zm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNl
c0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSk7IH0KIAogICAgIHVuc2lnbmVk
IG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJp
YWJsZXMoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mRnVuY3Rpb25EZWNscygpIHsgcmV0dXJu
IG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsgfQpAQCAt
NTQwLDcgKzU0MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAKLSAgICBF
eGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJ
bmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2Up
OyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBF
eGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2Rl
KCksIGZhbHNlLCBmYWxzZSk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU2NyaXB0
RXhlY3V0YWJsZTsKQEAgLTYyOCw3ICs2MjgsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBy
ZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2tGb3Ioa2luZCk7CiAgICAgfQotICAgICAgICAKKworICAg
IGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0
YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUo
KSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZSgpOyB9CiAgICAgY29uc3QgSWRl
bnRpZmllciYgaW5mZXJyZWROYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlu
ZmVycmVkTmFtZSgpOyB9CiAgICAgSlNTdHJpbmcqIG5hbWVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1lVmFsdWUoKTsgfQpAQCAtNjc1LDE0ICs2NzYsNiBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9ib2R5SW5jbHVkZXNCcmFjZXM7CiB9OwogCi1pbmxpbmUg
Ym9vbCBpc0hvc3RGdW5jdGlvbihKU1ZhbHVlIHZhbHVlLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVG
dW5jdGlvbikKLXsKLSAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9u
Kj4oZ2V0SlNGdW5jdGlvbih2YWx1ZSkpOwotICAgIGlmICghZnVuY3Rpb24gfHwgIWZ1bmN0aW9u
LT5pc0hvc3RGdW5jdGlvbigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGZ1
bmN0aW9uLT5uYXRpdmVGdW5jdGlvbigpID09IG5hdGl2ZUZ1bmN0aW9uOwotfQotCiBpbmxpbmUg
dm9pZCBFeGVjdXRhYmxlQmFzZTo6Y2xlYXJDb2RlVmlydHVhbChFeGVjdXRhYmxlQmFzZSogZXhl
Y3V0YWJsZSkKIHsKICAgICBzd2l0Y2ggKGV4ZWN1dGFibGUtPnN0cnVjdHVyZSgpLT50eXBlSW5m
bygpLnR5cGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25Qcm90b3R5cGUuY3BwCmluZGV4IGMxYjA4YWYyZDgxOGRhZTU3ZTFiMDBmZGExNzNhODE2
MTM3NTI5YjUuLjEyNDkwYzQwZjMzNDE3ZWNhOTIzODUwYTBkYzY2MmRiYmNkNDBmMzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5j
cHAKQEAgLTIyLDEyICsyMiwxMyBAQAogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAK
ICNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1
ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1N0cmluZ0J1
aWxkZXIuaCIKLSNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkxleGVyLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCkBA
IC0xMDgsNyArMTA5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBy
b3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKEpTRnVu
Y3Rpb246OmluZm8oKSkpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8
SlNGdW5jdGlvbio+KHRoaXNWYWx1ZSk7Ci0gICAgICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0RnVu
Y3Rpb24oKSkKKyAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigp
KQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3Ry
aW5nKGV4ZWMsICJmdW5jdGlvbiAiLCBmdW5jdGlvbi0+bmFtZShleGVjKSwgIigpIHtcbiAgICBb
bmF0aXZlIGNvZGVdXG59IikpOwogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUgPSBmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCk7CiAgICAgICAgIFN0cmluZyBzb3VyY2VTdHJp
bmcgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS50b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKaW5kZXggNzJlZDFjNzEyNDA2MTE2OGIw
YWRkZDMxMTZmNzU1YTExN2I4ZmI5MC4uYjM3NDk0MzA5OWUyMTU1YTM5NzcxMzMxMzQ3MDJjMmEy
NGFjYzg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3Rp
dmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRp
b24uY3BwCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgSlNBY3RpdmF0aW9uOjp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAKIGlubGluZSBib29sIEpTQWN0
aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJs
ZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFi
bGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlk
KCkpOwogICAgIGlmIChlbnRyeS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC03Miw3ICs3Miw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQo
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90CiAKIGlubGluZSBib29sIEpT
QWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50
cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7
CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChw
cm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChlbnRyeS5pc051bGwoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkBAIC04OSw3ICs4OSw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6
c3ltYm9sVGFibGVQdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOCiAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8
IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwogICAgIAotICAgIFN5bWJv
bFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1l
LnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxl
KCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChlbnRyeS5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChlbnRyeS5pc1JlYWRPbmx5KCkpIHsK
QEAgLTEzNiw3ICsxMzYsNyBAQCBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxl
UHV0V2l0aEF0dHJpYnV0ZXMoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcAogICAgIFdyaXRlQmFy
cmllckJhc2U8VW5rbm93bj4qIHJlZzsKICAgICB7CiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2Nr
ZXIgbG9ja2VyKHN5bWJvbFRhYmxlKCktPm1fbG9jayk7Ci0gICAgICAgIFN5bWJvbFRhYmxlOjpN
YXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZSgpLT5maW5kKGxvY2tlciwgcHJvcGVydHlO
YW1lLnB1YmxpY05hbWUoKSk7CisgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0
ZXIgPSBzeW1ib2xUYWJsZSgpLT5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAg
ICAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUoKS0+ZW5kKGxvY2tlcikpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5ID0gaXRlci0+
dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3Vt
ZW50c0l0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1l
bnRzSXRlcmF0b3IuY3BwCmluZGV4IDJmY2Y4ODE1YzA1NjgwNTgxMmE3OTkxYTVmZjA2M2Q2ODcz
OTcxNjQuLjlhOTI1ODNhYTBlYzkwZGJiMzI4ZWNkNTBkYzMxMzlhZWYwMjczYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3Iu
Y3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiSlNBcmd1bWVudHNJdGVyYXRvci5oIgog
CiAjaW5jbHVkZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
IAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5jcHAKaW5kZXggOTAwN2I1ZjdkM2YxMDNiMWQyMWIxYTM2NWEyNmMyMTVjMzJiNGQyOC4uYmEw
YTJkMzhlOWM1M2UxNTkzN2Q0NmE4OTUxYThjOGM0NTA3OTI2NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJF
eGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSW5kZXhp
bmdIZWFkZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKICNpbmNsdWRlICJSZWplY3QuaCIKICNpbmNsdWRlIDx3
dGYvQVZMVHJlZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmNwcAppbmRleCBjY2E2ODg4YmY5OGEwMjg2NDZjYTNkZGRmMzc2MjdjZTBlN2Q5MzAyLi4zMzlh
N2FiN2Y1OTUxNWU5NmFmYjdlYzRiODc0MWU3YWE4ZTE2NmY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApAQCAtMzIsNyArMzIsOSBAQAogI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUg
IkpTTm90QW5PYmplY3QuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRl
ICJOdW1iZXJPYmplY3QuaCIKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAppbmRleCBmN2M4NDQ2NDUw
OTJiMjUwODA1ZTZlOGQ0ODMyYzk5OGJkYjg5YjU0Li5kNzk1ZGQ1NmE5N2RkYjU5N2MwOTBmYzJl
MGI3ZjMwOGUzM2ViY2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGxJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsSW5saW5lcy5oCkBAIC0yNyw4ICsyNywxMCBAQAogI2RlZmluZSBKU0NlbGxJbmxpbmVzX2gK
IAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgi
CiAjaW5jbHVkZSAiRGVmZXJHQy5oIgogI2luY2x1ZGUgIkhhbmRsZS5oIgorI2luY2x1ZGUgIkpT
Q0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNPYmpl
Y3QuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCAyNDE5NjQ2MTBiYjQ0MjdiMTg2MzczMzQ2ZTI0ZjVh
ODJkMGNkY2M0Li5hY2U2YzE0N2U0OTdmZWUyMDI5MmZiNTUzOTc2MGQ1ZDY5ODI5Y2U4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtMzQsNyAr
MzQsOCBAQAogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2V0dGVy
U2V0dGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgotI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlv
bi5oIiAKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9u
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNOb3RB
bk9iamVjdC5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCkBAIC0xMDksNiArMTEwLDE0IEBA
IHZvaWQgSlNGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBOYXRpdmVFeGVjdXRhYmxl
KiBleGVjdXRhYmxlLCBpbnQgbGVuZ3RoCiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERv
bnRFbnVtKTsKIH0KIAorSlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0
aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQoreworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY3JlYXRlKHZt
LCBleGVjdXRhYmxlLCBnbG9iYWxPYmplY3QpOworICAgIGZ1bmN0aW9uLT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKCZ2bSwgZXhlY3V0YWJsZS0+bmFtZSgp
LnN0cmluZygpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIGZ1bmN0
aW9uLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoZXhl
Y3V0YWJsZS0+cGFyYW1ldGVyQ291bnQoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRF
bnVtKTsKKyAgICByZXR1cm4gZnVuY3Rpb247Cit9CisKIE9iamVjdEFsbG9jYXRpb25Qcm9maWxl
KiBKU0Z1bmN0aW9uOjpjcmVhdGVBbGxvY2F0aW9uUHJvZmlsZShFeGVjU3RhdGUqIGV4ZWMsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpAQCAtMTQy
LDcgKzE1MSw3IEBAIGNvbnN0IFN0cmluZyBKU0Z1bmN0aW9uOjpjYWxjdWxhdGVkRGlzcGxheU5h
bWUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gZXhwbGljaXROYW1lOwogICAgIAog
ICAgIGNvbnN0IFN0cmluZyBhY3R1YWxOYW1lID0gbmFtZShleGVjKTsKLSAgICBpZiAoIWFjdHVh
bE5hbWUuaXNFbXB0eSgpIHx8IGlzSG9zdEZ1bmN0aW9uKCkpCisgICAgaWYgKCFhY3R1YWxOYW1l
LmlzRW1wdHkoKSB8fCBpc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQogICAgICAgICByZXR1cm4g
YWN0dWFsTmFtZTsKICAgICAKICAgICByZXR1cm4ganNFeGVjdXRhYmxlKCktPmluZmVycmVkTmFt
ZSgpLnN0cmluZygpOwpAQCAtMTUwLDEwICsxNTksMjAgQEAgY29uc3QgU3RyaW5nIEpTRnVuY3Rp
b246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMpCiAKIGNvbnN0IFNvdXJj
ZUNvZGUqIEpTRnVuY3Rpb246OnNvdXJjZUNvZGUoKSBjb25zdAogewotICAgIGlmIChpc0hvc3RG
dW5jdGlvbigpKQorICAgIGlmIChpc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQogICAgICAgICBy
ZXR1cm4gMDsKICAgICByZXR1cm4gJmpzRXhlY3V0YWJsZSgpLT5zb3VyY2UoKTsKIH0KKyAgICAK
K2Jvb2wgSlNGdW5jdGlvbjo6aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSBjb25zdAoreworICAg
IHJldHVybiBpc0hvc3RGdW5jdGlvbigpIHx8IGlzQnVpbHRpbkZ1bmN0aW9uKCk7Cit9CisKK2Jv
b2wgSlNGdW5jdGlvbjo6aXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiAh
aXNIb3N0RnVuY3Rpb24oKSAmJiBqc0V4ZWN1dGFibGUoKS0+aXNCdWlsdGluRnVuY3Rpb24oKTsK
K30KIAogdm9pZCBKU0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiB7CkBAIC0yNzcsNyArMjk2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNG
dW5jdGlvbjo6Y2FsbGVyR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgc2xv
dEJhc2UKICAgICBpZiAoIWNhbGxlci5pc09iamVjdCgpIHx8ICFhc09iamVjdChjYWxsZXIpLT5p
bmhlcml0cyhKU0Z1bmN0aW9uOjppbmZvKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNhbGxlcik7CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlv
bio+KGNhbGxlcik7Ci0gICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpIHx8ICFmdW5j
dGlvbi0+anNFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpKQorICAgIGlmIChmdW5jdGlvbi0+
aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSB8fCAhZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5p
c1N0cmljdE1vZGUoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsZXIpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJGdW5jdGlvbi5jYWxsZXIgdXNlZCB0byByZXRyaWV2ZSBzdHJpY3QgY2FsbGVyIikpKTsK
IH0KQEAgLTI5OSw3ICszMTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Z1bmN0aW9uOjpuYW1lR2V0
dGVyKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIHNsb3RCYXNlLCBFbmNvZAogYm9vbCBKU0Z1
bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsK
LSAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICBpZiAodGhpc09iamVj
dC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIEJhc2U6OmdldE93
blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCiAg
ICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlKSB7
CkBAIC0zNjEsNyArMzgwLDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KIHZvaWQgSlNGdW5j
dGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9u
TW9kZSBtb2RlKQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5j
dGlvbio+KG9iamVjdCk7Ci0gICAgaWYgKCF0aGlzT2JqZWN0LT5pc0hvc3RGdW5jdGlvbigpICYm
IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKSB7CisgICAgaWYgKCF0aGlzT2Jq
ZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpICYmIChtb2RlID09IEluY2x1ZGVEb250RW51
bVByb3BlcnRpZXMpKSB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFzIGJlZW4g
cmVpZmllZC4KICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCk7CiAgICAgICAg
IHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0
LCBleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBzbG90KTsKQEAgLTM3Nyw3
ICszOTYsNyBAQCB2b2lkIEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsCiB2b2lkIEpTRnVuY3Rpb246OnB1dChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTRnVuY3Rpb24q
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNlbGwpOwotICAgIGlmICh0aGlzT2Jq
ZWN0LT5pc0hvc3RGdW5jdGlvbigpKSB7CisgICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdE9yQnVp
bHRpbkZ1bmN0aW9uKCkpIHsKICAgICAgICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDI1
LDcgKzQ0NCw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wCiBib29sIEpTRnVuY3Rpb246OmRl
ZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
LCBib29sIHRocm93RXhjZXB0aW9uKQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdEZ1
bmN0aW9uKCkpCisgICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkp
CiAgICAgICAgIHJldHVybiBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pOwogCiAgICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggN2NkMTRiOGMyZDgwMGY2MWJk
YzEyZWRkMmRmMDRkMzVmYTA2MTliNi4uOGNkOTUwYzRhYjQyZTkzNTNiZDc4ZDk0MjdiYWVkOGM2
OWNkMjIyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApA
QCAtNjgsNiArNjgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBmdW5j
dGlvbjsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNy
ZWF0ZUJ1aWx0aW5GdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTR2xvYmFsT2Jq
ZWN0Kik7CisgICAgICAgIAogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwog
ICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG5hbWUoRXhlY1N0YXRl
Kik7CkBAIC0xNDUsNiArMTQ3LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0
dXJuIG1fYWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OwogICAgICAgICB9CiAKKyAgICAgICAg
Ym9vbCBpc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpIGNvbnN0OworICAgICAgICBib29sIGlzQnVp
bHRpbkZ1bmN0aW9uKCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNI
b3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsKKwogICAgIHByb3RlY3RlZDoKICAgICAgICAg
Y29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90IHwgSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJl
biB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7
CiAKQEAgLTE2OSw4ICsxNzUsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAg
ICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICAKLSAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpIGNvbnN0
OwotCiAgICAgICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBhcmd1bWVudHNHZXR0ZXIoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogICAg
ICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgY2FsbGVyR2V0dGVyKEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKICAgICAgICAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIGxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAppbmRleCBmZTRlMTE0YWRiYzIzNjc0ZDNi
NjBlNjFmNzFjYjdhMDZjOTQ3ODRkLi42OWYwZDRmMzk2ZWY5YzJkYTllMGJmNjA4YzI2NDQxNzE3
OTliYTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b25JbmxpbmVzLmgKQEAgLTUzLDE2ICs1MywyNCBAQCBpbmxpbmUgYm9vbCBKU0Z1bmN0aW9uOjpp
c0hvc3RGdW5jdGlvbigpIGNvbnN0CiAKIGlubGluZSBOYXRpdmVGdW5jdGlvbiBKU0Z1bmN0aW9u
OjpuYXRpdmVGdW5jdGlvbigpCiB7Ci0gICAgQVNTRVJUKGlzSG9zdEZ1bmN0aW9uKCkpOworICAg
IEFTU0VSVChpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpKTsKICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8TmF0aXZlRXhlY3V0YWJsZSo+KG1fZXhlY3V0YWJsZS5nZXQoKSktPmZ1bmN0aW9uKCk7CiB9
CiAKIGlubGluZSBOYXRpdmVGdW5jdGlvbiBKU0Z1bmN0aW9uOjpuYXRpdmVDb25zdHJ1Y3Rvcigp
CiB7Ci0gICAgQVNTRVJUKGlzSG9zdEZ1bmN0aW9uKCkpOworICAgIEFTU0VSVChpc0hvc3RGdW5j
dGlvbk5vbklubGluZSgpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TmF0aXZlRXhlY3V0YWJs
ZSo+KG1fZXhlY3V0YWJsZS5nZXQoKSktPmNvbnN0cnVjdG9yKCk7CiB9CiAKK2lubGluZSBib29s
IGlzSG9zdEZ1bmN0aW9uKEpTVmFsdWUgdmFsdWUsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0
aW9uKQoreworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihn
ZXRKU0Z1bmN0aW9uKHZhbHVlKSk7CisgICAgaWYgKCFmdW5jdGlvbiB8fCAhZnVuY3Rpb24tPmlz
SG9zdEZ1bmN0aW9uKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gZnVuY3Rp
b24tPm5hdGl2ZUZ1bmN0aW9uKCkgPT0gbmF0aXZlRnVuY3Rpb247Cit9CisKIH0gLy8gbmFtZXNw
YWNlIEpTQwogCiAjZW5kaWYgLy8gSlNGdW5jdGlvbklubGluZXNfaApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1
Y3RvcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKaW5kZXggMmRkYzI5ZjcxODk3YmI1MWQz
OTBiMDZiMjVhNzM4MzM4NzRiYTBjMS4uZWRkMzQ0OWNlNDdiMTczNWU4ZTVkYmIwNWYzMThlM2Q1
NWYzYmU2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5l
cy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29u
c3RydWN0b3JJbmxpbmVzX2gKICNkZWZpbmUgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1
Y3RvcklubGluZXNfaAogCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRl
ICJFcnJvci5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJKU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
CmluZGV4IDZkYjg2Mjc0YzNiODc0YWFhZGU1MTUxODk4MjY3MjZmYjEzNmMxNzMuLmYyNGVhNzMw
M2RmOTY5ZGJkMmRjYTUyYzg2ZDExYzc4YzAwZGI5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5s
aW5lcy5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW5saW5lc19oCiAKICNpbmNsdWRlICJBcnJheUJ1ZmZlclZpZXcuaCIKKyNpbmNsdWRlICJDb21t
b25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkRlZmVyR0MuaCIKICNpbmNsdWRlICJFcnJvci5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdQcm90b3R5cGVJbmxpbmVzLmgKaW5kZXggNDU5OTk3YTQ2NGI5MTE5NDc3YjFiZTg0ZTM2YzRl
Mjk2NmFjZWY4NS4uOGU1ZmY4Mjc5MWU2ZmY4ZDRlYjljMzczNjkxZTQzM2ViN2QxNmFlZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdQcm90b3R5cGVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmgKQEAgLTI2LDYgKzI2
LDcgQEAKICNpZm5kZWYgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzX2gK
ICNkZWZpbmUgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzX2gKIAorI2lu
Y2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRl
ICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDJjMjc0
YzFhN2Q0ODFjMDdkZjBkMmJlYjNiMjkzMWEzOTA3YTVlNjYuLjA2ZTU0Yzg0ZTc3YjkwMzJiYWEx
ZDJkZjQ3YTFjNzJlODBiN2RlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTM0Niw3ICszNDYsOCBAQCB2b2lkIEpTR2xvYmFs
T2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKIAogICAgIC8vIENvbnN0cnVjdG9ycwog
Ci0gICAgSlNDZWxsKiBvYmplY3RDb25zdHJ1Y3RvciA9IE9iamVjdENvbnN0cnVjdG9yOjpjcmVh
dGUodm0sIE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVu
Y3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CisgICAgT2Jq
ZWN0Q29uc3RydWN0b3IqIG9iamVjdENvbnN0cnVjdG9yID0gT2JqZWN0Q29uc3RydWN0b3I6OmNy
ZWF0ZSh2bSwgT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9m
dW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKKyAgICBt
X29iamVjdENvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgb2JqZWN0Q29uc3RydWN0b3IpOwogICAg
IEpTQ2VsbCogZnVuY3Rpb25Db25zdHJ1Y3RvciA9IEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0
ZSh2bSwgRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1
bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CiAgICAg
SlNDZWxsKiBhcnJheUNvbnN0cnVjdG9yID0gQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBB
cnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90
b3R5cGUuZ2V0KCkpLCBtX2FycmF5UHJvdG90eXBlLmdldCgpKTsKIApAQCAtNDMyLDcgKzQzMywx
MCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8gc3RhdGljR2xvYmFsc1tdID0gewogICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+TmFOLCBqc05hTigpLCBEb250RW51bSB8IERvbnRE
ZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5JbmZpbml0eSwganNOdW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpp
bmZpbml0eSgpKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAotICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCwganNV
bmRlZmluZWQoKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpCisgICAgICAgIEds
b2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLCBqc1Vu
ZGVmaW5lZCgpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEds
b2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkUHJpdmF0
ZU5hbWUsIGpzVW5kZWZpbmVkKCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwK
KyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPk9iamVjdFByaXZh
dGVOYW1lLCBvYmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9u
bHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+VHlwZUVy
cm9yUHJpdmF0ZU5hbWUsIG1fdHlwZUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtIHwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5KQogICAgIH07CiAgICAgYWRkU3RhdGljR2xvYmFscyhzdGF0
aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVOR1RIKHN0YXRpY0dsb2JhbHMpKTsKICAgICAKQEAgLTYw
OCw2ICs2MTIsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fc3ludGF4RXJyb3JDb25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fdHlwZUVycm9yQ29uc3RydWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX1VSSUVycm9yQ29uc3RydWN0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX29iamVjdENvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9wcm9taXNlQ29uc3RydWN0b3IpOwogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fZXZhbEZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGIwY2FkM2RjNTQ3MGY3YzdhMGU1NzBiZGNkMmRmZmE4
OTVlMmFhMGMuLjNhNjE2YzZmMDVlZGYxZDI5NWFmODQ0MWFhNjY1MDBmYjkyYTRhNDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNjcs
NiArNjcsNyBAQCBjbGFzcyBKU1N0YWNrOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
Y2xhc3MgTWljcm90YXNrOwogY2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjsKK2NsYXNzIE9i
amVjdENvbnN0cnVjdG9yOwogY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFByb2dyYW1F
eGVjdXRhYmxlOwogY2xhc3MgUmVnRXhwQ29uc3RydWN0b3I7CkBAIC0xNTgsNiArMTU5LDcgQEAg
cHJvdGVjdGVkOgogICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX3R5
cGVFcnJvckNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVj
dG9yPiBtX1VSSUVycm9yQ29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlzZUNv
bnN0cnVjdG9yPiBtX3Byb21pc2VDb25zdHJ1Y3RvcjsKKyAgICBXcml0ZUJhcnJpZXI8T2JqZWN0
Q29uc3RydWN0b3I+IG1fb2JqZWN0Q29uc3RydWN0b3I7CiAKICAgICBXcml0ZUJhcnJpZXI8SlNG
dW5jdGlvbj4gbV9ldmFsRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1f
Y2FsbEZ1bmN0aW9uOwpAQCAtMzMwLDYgKzMzMiw3IEBAIHB1YmxpYzoKICAgICBSZWdFeHBDb25z
dHJ1Y3RvciogcmVnRXhwQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cENvbnN0
cnVjdG9yLmdldCgpOyB9CiAKICAgICBFcnJvckNvbnN0cnVjdG9yKiBlcnJvckNvbnN0cnVjdG9y
KCkgY29uc3QgeyByZXR1cm4gbV9lcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CisgICAgT2JqZWN0
Q29uc3RydWN0b3IqIG9iamVjdENvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RD
b25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGV2YWxFcnJv
ckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9ldmFsRXJyb3JDb25zdHJ1Y3Rvci5nZXQo
KTsgfQogICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHJhbmdlRXJyb3JDb25zdHJ1Y3Rvcigp
IGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2VFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CiAgICAgTmF0
aXZlRXJyb3JDb25zdHJ1Y3RvciogcmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsg
cmV0dXJuIG1fcmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQpAQCAtNTgxLDcgKzU4
NCw3IEBAIGlubGluZSBib29sIEpTR2xvYmFsT2JqZWN0OjpoYXNPd25Qcm9wZXJ0eUZvcldyaXRl
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lCiAKIGlubGluZSBib29sIEpTR2xvYmFsT2Jq
ZWN0OjpzeW1ib2xUYWJsZUhhc1Byb3BlcnR5KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7
Ci0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChw
cm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0g
c3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgcmV0dXJu
ICFlbnRyeS5pc051bGwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuY3BwCmluZGV4IDJiNjdhMWQ5ZWVkODRlOTk1NmY4YmI5NjgzODRjODRjYWVhNTNjZmYu
LjJlYTJjMjRlNmVhYjRjZDBkN2ZmZWQ2NjVlZjRhZTQxYWYwNzUwZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGlj
IGlubGluZSB2b2lkIGdldENsYXNzUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IENsYXNzSW5mbyogY2xhc3MKICAgICAgICAgaW50IGhhc2hTaXplTWFzayA9IHRhYmxlLT5jb21w
YWN0U2l6ZSAtIDE7CiAgICAgICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSB0YWJsZS0+dGFi
bGU7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IGhhc2hTaXplTWFzazsgKytpLCArK2Vu
dHJ5KSB7Ci0gICAgICAgICAgICBpZiAoZW50cnktPmtleSgpICYmICghKGVudHJ5LT5hdHRyaWJ1
dGVzKCkgJiBEb250RW51bSkgfHwgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykp
ICYmICEoKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikgJiYgZGlkUmVpZnkpKQorICAg
ICAgICAgICAgaWYgKGVudHJ5LT5rZXkoKSAmJiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgRG9u
dEVudW0pIHx8IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKSAmJiAhKChlbnRy
eS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pICYmIGRpZFJlaWZ5KSkKICAgICAg
ICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChlbnRyeS0+a2V5KCkpOwogICAgICAgICB9CiAg
ICAgfQpAQCAtMTYxOCw3ICsxNjE4LDcgQEAgdm9pZCBKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5j
dGlvbnNGb3JEZWxldGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXMpOwogICAgICAgICBmb3IgKEhhc2hUYWJsZTo6
Q29uc3RJdGVyYXRvciBpdGVyID0gaGFzaFRhYmxlLT5iZWdpbih2bSk7IGl0ZXIgIT0gaGFzaFRh
YmxlLT5lbmQodm0pOyArK2l0ZXIpIHsKLSAgICAgICAgICAgIGlmIChpdGVyLT5hdHRyaWJ1dGVz
KCkgJiBGdW5jdGlvbikKKyAgICAgICAgICAgIGlmIChpdGVyLT5hdHRyaWJ1dGVzKCkgJiBCdWls
dGluT3JGdW5jdGlvbikKICAgICAgICAgICAgICAgICBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChn
bG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCAqaXRlciwgdGhpcywgSWRlbnRpZmllcigmdm0s
IGl0ZXItPmtleSgpKSwgc2xvdCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yMjM2LDYgKzIyMzYs
MTYgQEAgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb24KICAgICBwdXREaXJlY3Qodm0sIHByb3BlcnR5
TmFtZSwgZnVuY3Rpb24sIGF0dHJpYnV0ZXMpOwogfQogCit2b2lkIEpTT2JqZWN0OjpwdXREaXJl
Y3RCdWlsdGluRnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5j
dGlvbkV4ZWN1dGFibGUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCit7CisgICAgU3RyaW5nSW1wbCog
bmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CisgICAgaWYgKCFuYW1lKQorICAgICAg
ICBuYW1lID0gdm0ucHJvcGVydHlOYW1lcy0+YW5vbnltb3VzLmltcGwoKTsKKyAgICBBU1NFUlQo
bmFtZSk7CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGVCdWls
dGluRnVuY3Rpb24odm0sIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9u
RXhlY3V0YWJsZSksIGdsb2JhbE9iamVjdCk7CisgICAgcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5h
bWUsIGZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsKK30KKwogdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBm
dW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBp
bnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAppbmRleCAwMmIxMzdiMzUwYzJmYTgzMjViZDNiOTY0NzExMmFiZTg3NmYzODNm
Li5kZGU1OTdlZmZhZWMwZjFiOGQ0NGMyOTExOTUwMzAxZjA2MDA3ZTk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRl
ICJCdXR0ZXJmbHkuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDbGFzc0lu
Zm8uaCIKLSNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkNvcHlXcml0
ZUJhcnJpZXIuaCIKICNpbmNsdWRlICJEZWZlckdDLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgpAQCAt
NTgxLDYgKzU4MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHB1dERpcmVjdFVuZGVmaW5lZChQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQpIHsgbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KS0+c2V0VW5kZWZp
bmVkKCk7IH0KIAogICAgIHZvaWQgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mLCBKU0dsb2Jh
bE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBO
YXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICB2b2lk
IHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJv
cGVydHlOYW1lJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAg
ICAgdm9pZCBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0
aCwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwg
Ym9vbCBzaG91bGRUaHJvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNDAyNjE5NjMzZmEwNmZkMjU0YjNm
MmE3YThjYzcxZTgwN2FhZjkxMS4uMTdkMmFiNjVhODhmZmIxM2ZhOWE2YzhmNTgzY2E4NDRhZjgz
MjI0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNl
Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
bWlzZUNvbnN0cnVjdG9yLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkpTUHJvbWlz
ZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAi
SlNQcm9taXNlUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiTG9va3VwLmgiCiAjaW5jbHVkZSAiTnVtYmVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3Ry
dWN0dXJlSW5saW5lcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAppbmRleCA2OGE4YmQ4N2QzOGFkYmJiOWRk
MmFjOWVjNGI0OWQ1ZWY0NTQ5ZDU2Li4yMzdjNDJiYjBkYTBmMTY2NzZlYjExYWRlODE4MGE3YjA2
ZDk4ZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcApAQCAtMjksNyArMjksOSBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKIAorI2luY2x1ZGUg
IkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNs
dWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvcGVydHlOYW1lSXRlcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvcGVydHlOYW1lSXRlcmF0b3IuaAppbmRleCBmNDM2MmZmMzU0ZWU2YTUwMjIxYmI3MzFkMWEy
NjExZTZkZDYxYmMwLi5kMDczNzE5ZGUxNjBkMmYyOTIxMTBhNTk2YTEwNWUyZmEyMTE1ZmZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5oCkBAIC0zMSw3ICszMSw2IEBACiAKICNpbmNsdWRlICJKU09iamVjdC5oIgog
I2luY2x1ZGUgIkpTU3RyaW5nLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUg
IlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCAyYjFjZGRkYzU4NDFkNjBkMTU3YTJlNjFm
NzAyYjBlZTVmYTFkNjc2Li5lMzkzNDE2MGFlYTkyNmVmMTU5MzJmODc5MGUyNGM1MmFmMDJkMzVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKQEAgLTI0LDcgKzI0
LDYgQEAKICNkZWZpbmUgSlNTdHJpbmdfaAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCi0jaW5j
bHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiUHJvcGVydHlEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCkBA
IC00NzIsMzMgKzQ3MSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGlubGluZSBKU1N0cmluZyog
anNOb250cml2aWFsU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKSB7IHJl
dHVybiBqc05vbnRyaXZpYWxTdHJpbmcoJmV4ZWMtPnZtKCksIHMpOyB9CiAgICAgaW5saW5lIEpT
U3RyaW5nKiBqc093bmVkU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKSB7
IHJldHVybiBqc093bmVkU3RyaW5nKCZleGVjLT52bSgpLCBzKTsgfQogCi0gICAgQUxXQVlTX0lO
TElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi0gICAgewot
ICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgp
IHsKLSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udEVudW0gfCBEb250RGVsZXRl
IHwgUmVhZE9ubHksIGpzTnVtYmVyKG1fbGVuZ3RoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRl
eCgpOwotICAgICAgICBpZiAoaSA8IG1fbGVuZ3RoKSB7Ci0gICAgICAgICAgICBBU1NFUlQoaSAh
PSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOyAvLyBObyBuZWVkIGZvciBhbiBleHBsaWNpdCBj
aGVjaywgdGhlIGFib3ZlIHRlc3Qgd291bGQgYWx3YXlzIGZhaWwhCi0gICAgICAgICAgICBzbG90
LnNldFZhbHVlKHRoaXMsIERvbnREZWxldGUgfCBSZWFkT25seSwgZ2V0SW5kZXgoZXhlYywgaSkp
OwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotICAgICAgICAgICAgCi0gICAgQUxXQVlTX0lOTElORSBib29sIEpTU3Ry
aW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKLSAgICB7Ci0gICAgICAgIGlmIChwcm9wZXJ0
eU5hbWUgPCBtX2xlbmd0aCkgewotICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250
RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIHByb3BlcnR5TmFtZSkpOwotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCiAgICAgaW5saW5lIGJvb2wgaXNKU1N0cmluZyhKU1ZhbHVlIHYpIHsgcmV0dXJuIHYu
aXNDZWxsKCkgJiYgdi5hc0NlbGwoKS0+Y2xhc3NJbmZvKCkgPT0gSlNTdHJpbmc6OmluZm8oKTsg
fQogCiAgICAgLy8gLS0tIEpTVmFsdWUgaW5saW5lcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCkBAIC01MjgsMzIgKzUwMCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4g
dG9XVEZTdHJpbmdTbG93Q2FzZShleGVjKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIFN0
cmluZyBpbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcoY29uc3QgSlNWYWx1ZSYgdmFsdWUs
IEV4ZWNTdGF0ZSogZXhlYykKLSAgICB7Ci0gICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0g
ICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0ubnVtZXJp
Y1N0cmluZ3MuYWRkKHZhbHVlLmFzSW50MzIoKSk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc0RvdWJs
ZSgpKQotICAgICAgICAgICAgcmV0dXJuIHZtLm51bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZS5hc0Rv
dWJsZSgpKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzVHJ1ZSgpKQotICAgICAgICAgICAgcmV0dXJu
IHZtLnByb3BlcnR5TmFtZXMtPnRydWVLZXl3b3JkLnN0cmluZygpOwotICAgICAgICBpZiAodmFs
dWUuaXNGYWxzZSgpKQotICAgICAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPmZhbHNl
S2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQotICAgICAgICAg
ICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPm51bGxLZXl3b3JkLnN0cmluZygpOwotICAgICAg
ICBpZiAodmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0
eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLnN0cmluZygpOwotICAgICAgICByZXR1cm4gdmFsdWUu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUg
U3RyaW5nIEpTVmFsdWU6OnRvV1RGU3RyaW5nSW5saW5lKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QK
LSAgICB7Ci0gICAgICAgIGlmIChpc1N0cmluZygpKQotICAgICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEpTU3RyaW5nKj4oYXNDZWxsKCkpLT52YWx1ZShleGVjKTsKLQotICAgICAgICByZXR1
cm4gaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKCp0aGlzLCBleGVjKTsKLSAgICB9Ci0K
IH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gSlNTdHJpbmdfaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzhj
MDVmYzgwZDg4ZTg1MzdjOWQyYTVlYWI5ZmYwYmE5YjYwYTc1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgKQEAgLTAsMCAr
MSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgSlNTdHJpbmdJbmxpbmVzX2gKKyNkZWZpbmUgSlNTdHJpbmdJbmxpbmVzX2gK
KworI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlu
bGluZXMuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworQUxX
QVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7
CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7
CisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVh
ZE9ubHksIGpzTnVtYmVyKG1fbGVuZ3RoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyAgICAKKyAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAo
aSA8IG1fbGVuZ3RoKSB7CisgICAgICAgIEFTU0VSVChpICE9IFByb3BlcnR5TmFtZTo6Tm90QW5J
bmRleCk7IC8vIE5vIG5lZWQgZm9yIGFuIGV4cGxpY2l0IGNoZWNrLCB0aGUgYWJvdmUgdGVzdCB3
b3VsZCBhbHdheXMgZmFpbCEKKyAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRl
IHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIGkpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKworQUxXQVlTX0lOTElORSBib29sIEpT
U3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBpZiAocHJvcGVydHlOYW1l
IDwgbV9sZW5ndGgpIHsKKyAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlIHwg
UmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIHByb3BlcnR5TmFtZSkpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCitBTFdBWVNfSU5MSU5F
IFN0cmluZyBpbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcoY29uc3QgSlNWYWx1ZSYgdmFs
dWUsIEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGlm
ICh2YWx1ZS5pc0ludDMyKCkpCisgICAgICAgIHJldHVybiB2bS5udW1lcmljU3RyaW5ncy5hZGQo
dmFsdWUuYXNJbnQzMigpKTsKKyAgICBpZiAodmFsdWUuaXNEb3VibGUoKSkKKyAgICAgICAgcmV0
dXJuIHZtLm51bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZS5hc0RvdWJsZSgpKTsKKyAgICBpZiAodmFs
dWUuaXNUcnVlKCkpCisgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT50cnVlS2V5d29y
ZC5zdHJpbmcoKTsKKyAgICBpZiAodmFsdWUuaXNGYWxzZSgpKQorICAgICAgICByZXR1cm4gdm0u
cHJvcGVydHlOYW1lcy0+ZmFsc2VLZXl3b3JkLnN0cmluZygpOworICAgIGlmICh2YWx1ZS5pc051
bGwoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPm51bGxLZXl3b3JkLnN0cmlu
ZygpOworICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1cm4gdm0ucHJv
cGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZC5zdHJpbmcoKTsKKyAgICByZXR1cm4gdmFsdWUu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworfQorICAgIAorQUxXQVlTX0lOTElORSBTdHJp
bmcgSlNWYWx1ZTo6dG9XVEZTdHJpbmdJbmxpbmUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAorewor
ICAgIGlmIChpc1N0cmluZygpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNTdHJpbmcq
Pihhc0NlbGwoKSktPnZhbHVlKGV4ZWMpOworICAgIAorICAgIHJldHVybiBpbmxpbmVKU1ZhbHVl
Tm90U3RyaW5ndG9TdHJpbmcoKnRoaXMsIGV4ZWMpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNw
cAppbmRleCAyYWMyNTI0YzVkZmRhM2QxMjI0OWQ3NzkwYWRjMzEyOWUzYzBlODcxLi5mYmM4Yjg5
NWVhZTZhZjc4ODgzOWJlYjVlODNkN2I2Yjk3OTI4ZmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcApAQCAtNjQsNiAr
NjQsOCBAQCB2b2lkIEpTU3ltYm9sVGFibGVPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdAogICAgICAgICBDb25jdXJyZW50SklUTG9j
a2VyIGxvY2tlcih0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5tX2xvY2spOwogICAgICAgICBT
eW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBlbmQgPSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgp
LT5lbmQobG9ja2VyKTsKICAgICAgICAgZm9yIChTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBp
dCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmJlZ2luKGxvY2tlcik7IGl0ICE9IGVuZDsg
KytpdCkgeworICAgICAgICAgICAgaWYgKGl0LT5rZXktPmlzRW1wdHlVbmlxdWUoKSkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmICghKGl0LT52YWx1ZS5nZXRBdHRy
aWJ1dGVzKCkgJiBEb250RW51bSkgfHwgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGll
cykpCiAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcihleGVjLCBp
dC0+a2V5LmdldCgpKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAppbmRleCBiNWIyMGE4NDViNmFiNjQ0MjRi
MzdlMzFiMjc3NGVmOTA1MzUzZjdmLi5kMDNiMjQ1MTFjMmRlMTk1OWZiNWY1NmQ2NDljNjRkMGVm
ZTA2ODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJv
bFRhYmxlT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1i
b2xUYWJsZU9iamVjdC5oCkBAIC03Miw3ICs3Miw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxl
R2V0KAogewogICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRh
YmxlKCk7CiAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2Nr
KTsKLSAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmlu
ZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlOjpN
YXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1l
LnVpZCgpKTsKICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVy
LT52YWx1ZTsKQEAgLTg3LDcgKzg3LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiB7
CiAgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9sVGFibGUoKTsK
ICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2spOwotICAg
IFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tl
ciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRl
cmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkp
OwogICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBlbnRyeSA9IGl0ZXItPnZhbHVl
OwpAQCAtMTA0LDcgKzEwNCw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogewogICAg
IFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAg
Q29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICBTeW1i
b2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHBy
b3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9y
IGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAg
ICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1ZTsKQEAg
LTEyNiw3ICsxMjYsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dCgKICAgICB7CiAgICAg
ICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAg
ICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9j
aywgZXhlYy0+dm0oKS5oZWFwKTsKLSAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3Ig
aXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgp
KTsKKyAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxl
LmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgICAgICBpZiAoaXRlciA9PSBz
eW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgYm9vbCB3YXNGYXQ7CkBAIC0xNTksNyArMTU5LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFi
bGVQdXRXaXRoQXR0cmlidXRlcygKICAgICB7CiAgICAgICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xU
YWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2Nr
ZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6
Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1
YmxpY05hbWUoKSk7CisgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBz
eW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICAgICAgaWYg
KGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5ID0gaXRlci0+dmFsdWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAppbmRleCBhODA2ZGQwNTJhMGNiZWU0
Y2FjMmNhYTZlMDhjNjcxNjAwNWMyNzBjLi5hOTc2NTIwMWI5ZjUxODY0MTQyM2RkZTBmZTBlMmU1
MWE4Y2U3M2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29r
dXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKQEAg
LTY4LDcgKzY4LDcgQEAgdm9pZCBIYXNoVGFibGU6OmRlbGV0ZVRhYmxlKCkgY29uc3QKIGJvb2wg
c2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoRW50cnkq
IGVudHJ5LCBKU09iamVjdCogdGhpc09iaiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIEFTU0VSVCh0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSk7
Ci0gICAgQVNTRVJUKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbik7CisgICAgQVNTRVJU
KGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbik7CiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCA9IHRoaXNPYmotPmdldERpcmVjdE9mZnNldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRy
aWJ1dGVzKTsKQEAgLTc5LDkgKzc5LDEzIEBAIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3Qo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCoKICAgICAg
ICAgaWYgKHRoaXNPYmotPnN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAKLSAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b24oCi0gICAgICAgICAgICB2bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFt
ZSwgZW50cnktPmZ1bmN0aW9uTGVuZ3RoKCksCi0gICAgICAgICAgICBlbnRyeS0+ZnVuY3Rpb24o
KSwgZW50cnktPmludHJpbnNpYygpLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAgICAgICAgaWYg
KGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluKQorICAgICAgICAgICAgdGhpc09iai0+cHV0
RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKHZtLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgcHJvcGVy
dHlOYW1lLCBlbnRyeS0+YnVpbHRpbkdlbmVyYXRvcigpKHZtKSwgZW50cnktPmF0dHJpYnV0ZXMo
KSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb24oCisgICAgICAgICAgICAgICAgdm0sIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBw
cm9wZXJ0eU5hbWUsIGVudHJ5LT5mdW5jdGlvbkxlbmd0aCgpLAorICAgICAgICAgICAgICAgIGVu
dHJ5LT5mdW5jdGlvbigpLCBlbnRyeS0+aW50cmluc2ljKCksIGVudHJ5LT5hdHRyaWJ1dGVzKCkp
OworICAgICAgICB9CiAgICAgICAgIG9mZnNldCA9IHRoaXNPYmotPmdldERpcmVjdE9mZnNldCh2
bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKICAgICAgICAgQVNTRVJUKGlzVmFsaWRPZmZz
ZXQob2Zmc2V0KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaApp
bmRleCBiZGU4M2Q0YTZmYzM1NTc3ODUwZTMxZTg4YmMzOWZkMDVmN2JjZTUyLi5kYmEzODllOWUy
NDNkZDBlY2IyYmE5OGYzOTRkNDA3OWY5ZGVhOTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Mb29rdXAuaApAQCAtNDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAvLyBp
ZS4gdHlwZWRlZiBKU1ZhbHVlICgqR2V0RnVuY3Rpb24pKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBi
YXNlT2JqZWN0KQogICAgIHR5cGVkZWYgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgR2V0RnVu
Y3Rpb247CiAgICAgdHlwZWRlZiBQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYyBQdXRGdW5j
dGlvbjsKKyAgICB0eXBlZGVmIEZ1bmN0aW9uRXhlY3V0YWJsZSogKCpCdWlsdGluR2VuZXJhdG9y
KShWTSYpOwogCiAgICAgY2xhc3MgSGFzaEVudHJ5IHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CkBAIC02OCwxMSArNjksMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICByZXR1cm4gbV9pbnRyaW5zaWM7CiAgICAgICAgIH0KIAorICAgICAgICBCdWlsdGluR2VuZXJh
dG9yIGJ1aWx0aW5HZW5lcmF0b3IoKSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBCdWls
dGluKTsgcmV0dXJuIG1fdS5idWlsdGluR2VuZXJhdG9yLmdlbmVyYXRvclZhbHVlOyB9CiAgICAg
ICAgIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVz
ICYgRnVuY3Rpb24pOyByZXR1cm4gbV91LmZ1bmN0aW9uLmZ1bmN0aW9uVmFsdWU7IH0KICAgICAg
ICAgdW5zaWduZWQgY2hhciBmdW5jdGlvbkxlbmd0aCgpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmli
dXRlcyAmIEZ1bmN0aW9uKTsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KG1fdS5m
dW5jdGlvbi5sZW5ndGgpOyB9CiAKLSAgICAgICAgR2V0RnVuY3Rpb24gcHJvcGVydHlHZXR0ZXIo
KSBjb25zdCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKSk7IHJldHVybiBtX3Uu
cHJvcGVydHkuZ2V0OyB9Ci0gICAgICAgIFB1dEZ1bmN0aW9uIHByb3BlcnR5UHV0dGVyKCkgY29u
c3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3Bl
cnR5LnB1dDsgfQorICAgICAgICBHZXRGdW5jdGlvbiBwcm9wZXJ0eUdldHRlcigpIGNvbnN0IHsg
QVNTRVJUKCEobV9hdHRyaWJ1dGVzICYgQnVpbHRpbk9yRnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5w
cm9wZXJ0eS5nZXQ7IH0KKyAgICAgICAgUHV0RnVuY3Rpb24gcHJvcGVydHlQdXR0ZXIoKSBjb25z
dCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEJ1aWx0aW5PckZ1bmN0aW9uKSk7IHJldHVybiBt
X3UucHJvcGVydHkucHV0OyB9CiAKICAgICAgICAgaW50cHRyX3QgbGV4ZXJWYWx1ZSgpIGNvbnN0
IHsgQVNTRVJUKCFtX2F0dHJpYnV0ZXMpOyByZXR1cm4gbV91LmxleGVyLnZhbHVlOyB9CiAKQEAg
LTk0LDYgKzk2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIGludHB0cl90
IGxlbmd0aDsgLy8gbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgZnVuY3Rpb24KICAgICAgICAgICAg
IH0gZnVuY3Rpb247CiAgICAgICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgICAgIEJ1aWx0
aW5HZW5lcmF0b3IgZ2VuZXJhdG9yVmFsdWU7CisgICAgICAgICAgICAgICAgaW50cHRyX3QgdW51
c2VkOworICAgICAgICAgICAgfSBidWlsdGluR2VuZXJhdG9yOworICAgICAgICAgICAgc3RydWN0
IHsKICAgICAgICAgICAgICAgICBHZXRGdW5jdGlvbiBnZXQ7CiAgICAgICAgICAgICAgICAgUHV0
RnVuY3Rpb24gcHV0OwogICAgICAgICAgICAgfSBwcm9wZXJ0eTsKQEAgLTIwOSw3ICsyMTUsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBBTFdBWVNfSU5MSU5FIGNv
bnN0IEhhc2hFbnRyeSogZW50cnkoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKICAg
ICAgICAgewotICAgICAgICAgICAgU3RyaW5nSW1wbCogaW1wbCA9IHByb3BlcnR5TmFtZS5wdWJs
aWNOYW1lKCk7CisgICAgICAgICAgICBTdHJpbmdJbXBsKiBpbXBsID0gcHJvcGVydHlOYW1lLnVp
ZCgpOwogICAgICAgICAgICAgaWYgKCFpbXBsKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwog
ICAgICAgICAKQEAgLTI0OSw3ICsyNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaWYg
KCFlbnRyeSkgLy8gbm90IGZvdW5kLCBmb3J3YXJkIHRvIHBhcmVudAogICAgICAgICAgICAgcmV0
dXJuIFBhcmVudEltcDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5
TmFtZSwgc2xvdCk7CiAKLSAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlv
bikKKyAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikK
ICAgICAgICAgICAgIHJldHVybiBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChleGVjLCBlbnRyeSwg
dGhpc09iaiwgcHJvcGVydHlOYW1lLCBzbG90KTsKIAogICAgICAgICBzbG90LnNldENhY2hlYWJs
ZUN1c3RvbSh0aGlzT2JqLCBlbnRyeS0+YXR0cmlidXRlcygpLCBlbnRyeS0+cHJvcGVydHlHZXR0
ZXIoKSk7CkBAIC0yODYsNyArMjkyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGlmICgh
ZW50cnkpIC8vIG5vdCBmb3VuZCwgZm9yd2FyZCB0byBwYXJlbnQKICAgICAgICAgICAgIHJldHVy
biBQYXJlbnRJbXA6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogCi0gICAgICAgIEFTU0VSVCghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5j
dGlvbikpOworICAgICAgICBBU1NFUlQoIShlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9y
RnVuY3Rpb24pKTsKIAogICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqLCBl
bnRyeS0+YXR0cmlidXRlcygpLCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwpAQCAtMjk1LDcgKzMwMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGlubGlu
ZSB2b2lkIHB1dEVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwg
SlNPYmplY3QqIGJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKICAgICB7CiAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBm
dW5jdGlvbiBwdXQgaXQgYXMgYW4gb3ZlcnJpZGUgcHJvcGVydHkuCi0gICAgICAgIGlmIChlbnRy
eS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pIHsKKyAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1
dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0KiB0
aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHNsb3QudGhpc1ZhbHVlKCkpKQog
ICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlKTsKICAgICAgICAgfSBlbHNlIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkg
JiBSZWFkT25seSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZDVlNzI4YzJjZDEwMjBhNDdlNGFk
Y2Q2NDljZDFmZmZhNWNkNmE4My4uZGNhMmZkOGQxZjZhYzIzYjhmZjgxN2NiYjE4ZmFhZTdiY2Q1
OTcwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0
aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTM4LDYgKzM4LDIwIEBAIE5hdGl2ZUVycm9yQ29u
c3RydWN0b3I6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKIHsKIH0KIAordm9pZCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogcHJvdG90
eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0sIG5hbWUpOworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICAKKyAg
ICBOYXRpdmVFcnJvclByb3RvdHlwZSogcHJvdG90eXBlID0gTmF0aXZlRXJyb3JQcm90b3R5cGU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5hbWUsIHRoaXMp
OworICAgIAorICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051
bWJlcigxKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOyAvLyBFQ01BIDE1LjEx
LjcuNQorICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90
b3R5cGUsIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBtX2Vycm9yU3Ry
dWN0dXJlLnNldCh2bSwgdGhpcywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSkpOworICAgIEFTU0VSVChtX2Vycm9yU3RydWN0dXJlKTsK
KyAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZS0+aXNPYmplY3QoKSk7Cit9CisKIHZvaWQgTmF0
aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogewogICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCmluZGV4
IDc0MGQzZjkzMzI5MmZkMmFjY2I0Yjk5MDM0NDMxMmI5MzE5YWUxMTAuLjQzOGEzYWZiOWJiMGY2
NDEyYzk3OTMyMjMwYzg4NzEwOTYxZjU0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKQEAgLTUxLDE5ICs1MSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlKCkg
eyByZXR1cm4gbV9lcnJvclN0cnVjdHVyZS5nZXQoKTsgfQogCiAgICAgcHJvdGVjdGVkOgotICAg
ICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkK
LSAgICAgICAgewotICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIG5hbWUpOwot
ICAgICAgICAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwotCi0gICAgICAgICAgICBOYXRp
dmVFcnJvclByb3RvdHlwZSogcHJvdG90eXBlID0gTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5hbWUsIHRoaXMpOwotCi0g
ICAgICAgICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1i
ZXIoMSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsgLy8gRUNNQSAxNS4xMS43
LjUKLSAgICAgICAgICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
LCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKLSAgICAgICAg
ICAgIG1fZXJyb3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBFcnJvckluc3RhbmNlOjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlKSk7Ci0gICAgICAgICAgICBBU1NF
UlQobV9lcnJvclN0cnVjdHVyZSk7Ci0gICAgICAgICAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVy
ZS0+aXNPYmplY3QoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0
IFN0cmluZyYgbmFtZSk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBOYXRpdmVFcnJvckNvbnN0
cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5U2xvdC5oCmluZGV4IGQ5MzhmYTMxNjQ1YWYyNmI3NTg1MTRkYjZiMjQ3OGYxODNl
OWVlZTEuLmNmZTljNGQzMmJhNzY4Yzc0ZTRmZmJiMTkxMzUyNzlkZWJmMTE3NjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCkBAIC00Miw2ICs0Miw4
IEBAIGVudW0gQXR0cmlidXRlIHsKICAgICBGdW5jdGlvbiAgICAgPSAxIDw8IDQsICAvLyBwcm9w
ZXJ0eSBpcyBhIGZ1bmN0aW9uIC0gb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCiAgICAg
QWNjZXNzb3IgICAgID0gMSA8PCA1LCAgLy8gcHJvcGVydHkgaXMgYSBnZXR0ZXIvc2V0dGVyCiAg
ICAgQ3VzdG9tQWNjZXNzb3IgPSAxIDw8IDYsCisgICAgQnVpbHRpbiAgICAgICAgID0gMSA8PCA3
LCAvLyBwcm9wZXJ0eSBpcyBhIGJ1aWx0aW4gZnVuY3Rpb24gLSBvbmx5IHVzZWQgYnkgc3RhdGlj
IGhhc2h0YWJsZXMKKyAgICBCdWlsdGluT3JGdW5jdGlvbiA9IEJ1aWx0aW4gfCBGdW5jdGlvbiwg
Ly8gaGVscGVyIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogfTsKIAogY2xhc3MgUHJv
cGVydHlTbG90IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cENvbnN0cnVjdG9yLmNwcAppbmRleCBiYzUxNmIwNmQ2NjUxZjBlNjgyYTIwMTdiZGY4YjAzYmFi
ZWQ2ZWEyLi4yYzI0MzRiODdkMDRmNzQ5Y2IxMmU2MDJhYjU0Nzg0OTQ2YTkxZjFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3Bw
CkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiUmVnRXhwQ29uc3RydWN0b3IuaCIKIAogI2lu
Y2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlJlZ0V4cE1hdGNoZXNBcnJheS5oIgogI2luY2x1ZGUg
IlJlZ0V4cFByb3RvdHlwZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cFByb3RvdHlwZS5jcHAKaW5kZXggODlkN2FjMWI4Y2JmMWRiMGUxMjZmMWZjNzk2ZGZk
NWZjODRiMmU1OS4uOWRkYTBiYThkZTE0MTJlYWY0ZDI5MWRjZjBjNmIzOTY1N2ZiNjc3YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3Bw
CkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAiQXJyYXlQcm90b3R5cGUuaCIKICNpbmNsdWRl
ICJFcnJvci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgi
CisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCmluZGV4IGIyMDM4
ODhkM2MxNmNkYTNjMDAzNTA2MjA4YWUwODY5NWRjNWRhYWEuLmQwMjY2YTU5ZWYzZjU1YWEzNjk0
ZjVmNzQxOGNmNzhlMGFlMGQ4YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJKU0Nl
bGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU1Nl
dC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk1hcERhdGEuaCIK
ICNpbmNsdWRlICJTZXRQcm90b3R5cGUuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ09iamVjdC5jcHAKaW5kZXggNDQwYTYwOTQyMTkzMzgwMzFlNTkyN2FmNDZi
Mjg5ZGJjZmI1YTcyOC4uODBlN2VhYThjNDkxY2I2ZDU0YTgzMjRjZTY0N2E2Y2RiN2U4ODc4MSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCkBA
IC0yMiw3ICsyMiw5IEBACiAjaW5jbHVkZSAiU3RyaW5nT2JqZWN0LmgiCiAKICNpbmNsdWRlICJF
cnJvci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJPcGVy
YXRpb25zLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggMDQyOTFmN2U4ZGQyNGU4YWIz
M2Q3NWFmMWRhNDU2OGYyYmM5OWU2OC4uMWVjYWI4NWMwYmRiMjg2OTg5NDU3N2E3NDEyNTRlMzY0
NDE0OWQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
CkBAIC0yNywxMiArMjcsMTggQEAKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKIAogI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAi
RHVtcENvbnRleHQuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNP
YmplY3QuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAi
SlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCisjaW5jbHVkZSAiUHJvcGVy
dHlNYXBIYXNoVGFibGUuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgorI2luY2x1
ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCisj
aW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVJhcmVEYXRh
SW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZExlYWtDb3VudGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
aW5kZXggNTJjY2Y0MjNhMTA0M2UxMDc5ZjJkOGIxODk0MjE5ODkwZTcxZjJiYy4uMDIwNjk1ZmFj
ODNlZDRlNTE4NWI3MGU2OTY5OTYzYTJkZTlhMzY3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKICNpbmNs
dWRlICJBcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5oIgogI2luY2x1ZGUgIkFycmF5QnVmZmVy
TmV1dGVyaW5nV2F0Y2hwb2ludC5oIgorI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgog
I2luY2x1ZGUgIkNhbGxGcmFtZUlubGluZXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNp
bmNsdWRlICJDb2RlQ2FjaGUuaCIKQEAgLTU1LDcgKzU2LDkgQEAKICNpbmNsdWRlICJKU0FQSVZh
bHVlV3JhcHBlci5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIkpTQXJy
YXkuaCIKLSNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklu
bGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUg
IkpTTG9jay5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCkBAIC02OCwxMyArNzEsMTYgQEAK
ICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJNYXBEYXRhLmgiCiAjaW5jbHVkZSAiTm9k
ZXMuaCIKKyNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRlICJQYXJzZXJBcmVuYS5oIgorI2lu
Y2x1ZGUgIlByb3BlcnR5TWFwSGFzaFRhYmxlLmgiCiAjaW5jbHVkZSAiUmVnRXhwQ2FjaGUuaCIK
ICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRlICJTaW1wbGVUeXBlZEFycmF5Q29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIlNvdXJjZVByb3ZpZGVyQ2FjaGUuaCIKICNpbmNsdWRlICJT
dHJpY3RFdmFsQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKKyNpbmNs
dWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIK
ICNpbmNsdWRlICJXZWFrTWFwRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KQEAg
LTIyNiw2ICsyMzIsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUp
CiAgICAgLCBtX2luRGVmaW5lT3duUHJvcGVydHkoZmFsc2UpCiAgICAgLCBtX2NvZGVDYWNoZShD
b2RlQ2FjaGU6OmNyZWF0ZSgpKQogICAgICwgbV9lbmFibGVkUHJvZmlsZXIobnVsbHB0cikKKyAg
ICAsIG1fYnVpbHRpbkV4ZWN1dGFibGVzKEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlKCp0aGlz
KSkKIHsKICAgICBpbnRlcnByZXRlciA9IG5ldyBJbnRlcnByZXRlcigqdGhpcyk7CiAgICAgU3Rh
Y2tCb3VuZHMgc3RhY2sgPSB3dGZUaHJlYWREYXRhKCkuc3RhY2soKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCmluZGV4IDVhODQxMDVlYWZiN2FiYmE1ZmE0MzFlZWVkZDU1ZDdhODlmNTVj
ZTIuLjY5NThhYzM5M2IxYWVmYzBiZWZiZjZlNGViOGI2ODI1Y2Y3YzlhMGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlByaXZhdGVO
YW1lLmgiCiAjaW5jbHVkZSAiUHJvdG90eXBlTWFwLmgiCiAjaW5jbHVkZSAiU21hbGxTdHJpbmdz
LmgiCisjaW5jbHVkZSAiU291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlN0cm9uZy5oIgogI2luY2x1
ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgogI2luY2x1ZGUgIlR5cGVkQXJyYXlDb250cm9sbGVyLmgi
CkBAIC02OSw2ICs3MCw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFyaXR5Q2hl
Y2tGYWlsUmV0dXJuVGh1bmtzOworICAgIGNsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlczsKICAgICBj
bGFzcyBDb2RlQmxvY2s7CiAgICAgY2xhc3MgQ29kZUNhY2hlOwogICAgIGNsYXNzIENvbW1vbklk
ZW50aWZpZXJzOwpAQCAtNDk3LDYgKzQ5OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2
b2lkIHJlZ2lzdGVyV2F0Y2hwb2ludEZvckltcHVyZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXIm
LCBXYXRjaHBvaW50Kik7CiAgICAgICAgIC8vIEZJWE1FOiBVc2UgQXRvbWljU3RyaW5nIG9uY2Ug
aXQgZ290IG1lcmdlZCB3aXRoIElkZW50aWZpZXIuCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgYWRkSW1wdXJlUHJvcGVydHkoY29uc3QgU3RyaW5nJik7CisgICAgICAgIAorICAgICAg
ICBCdWlsdGluRXhlY3V0YWJsZXMqIGJ1aWx0aW5FeGVjdXRhYmxlcygpIHsgcmV0dXJuIG1fYnVp
bHRpbkV4ZWN1dGFibGVzLmdldCgpOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpAQCAtNTM3LDEwICs1NDEsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgSlNWYWx1ZSBtX2V4Y2VwdGlvbjsKICAgICAgICAgYm9vbCBtX2lu
RGVmaW5lT3duUHJvcGVydHk7CiAgICAgICAgIE93blB0cjxDb2RlQ2FjaGU+IG1fY29kZUNhY2hl
OwotICAgICAgICBSZWZDb3VudGVkQXJyYXk8U3RhY2tGcmFtZT4gbV9leGNlcHRpb25TdGFjazsK
LQogICAgICAgICBMZWdhY3lQcm9maWxlciogbV9lbmFibGVkUHJvZmlsZXI7Ci0KKyAgICAgICAg
T3duUHRyPEJ1aWx0aW5FeGVjdXRhYmxlcz4gbV9idWlsdGluRXhlY3V0YWJsZXM7CisgICAgICAg
IFJlZkNvdW50ZWRBcnJheTxTdGFja0ZyYW1lPiBtX2V4Y2VwdGlvblN0YWNrOwogICAgICAgICBI
YXNoTWFwPFN0cmluZywgUmVmUHRyPFdhdGNocG9pbnRTZXQ+PiBtX2ltcHVyZVByb3BlcnR5V2F0
Y2hwb2ludFNldHM7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2Fy
ZGluZ0hlYWRlcnMvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaCBiL1NvdXJjZS9XZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBm
Y2MzODRlOGVkZmMzNGIxNDA4M2I4NjVkMzczODIwZjQxNjVjNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVz
LmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0pTU3RyaW5nSW5saW5lc19o
CisjZGVmaW5lIFdlYkNvcmVfRldEX0pTU3RyaW5nSW5saW5lc19oCisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNTdHJpbmdJbmxpbmVzLmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQu
Y3BwCmluZGV4IDJlZGRjZGJiOWYwMDZjYTc2MjY2NTBiNDIwMjc4NjI2YjkyNjE0MTcuLjNjNGUw
ZDdiYmIzMWNhYjEyYjVlNmM5NzVjNzRkM2Y0ODRlOWNiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2Vt
ZW50LmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNh
c3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTU3RyaW5nSW5saW5lcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFueUN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFueUN1c3RvbS5jcHAKaW5kZXggNTY0OWM4NWNhMDk1
ODc3NDhhM2RhMDZjZGRkMGNhOTk5ZTUwYjhlNy4uM2Y0ZDhlZmFlYjU3ZjMzMDAzZTczYTdlNzg0
MmU0MmM3M2NlNjQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJ
REJBbnlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCQW55
Q3VzdG9tLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIkpTSURCT2JqZWN0U3RvcmUu
aCIKICNpbmNsdWRlICJKU0lEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZ0lubGluZXMuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAppbmRleCA5ZWFlNzU2OWM3MDYwM2E0ZmVkMGFmMTRjNGY4
NzE4Y2RlNjRhNmUxLi5mNDlkZmU5MGI0ZTgyZDM5ZWRjYmY5YmEyOWYyYWU3OTljMGRkZjI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9t
LmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCiAjaW5j
bHVkZSAiSlNJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KLSNp
bmNsdWRlIDxydW50aW1lL0pTU3RyaW5nLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZ0lu
bGluZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcAppbmRleCA3NGZkMzU0
YjI4NjA3Y2Y3ODIyZjgwNTM0Nzk3MGY1ZDdhYzhjODMyLi41NDM0YjNiN2Q2YzU2ZWNiMGEwM2Ey
Nzk0YzY3MzZhOWFkZmI3MGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1
ZGUgIklEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSlNJREJJbmRleC5oIgogI2luY2x1ZGUg
PHJ1bnRpbWUvRXJyb3IuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nLmg+CisjaW5jbHVk
ZSA8cnVudGltZS9KU1N0cmluZ0lubGluZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDlkMDY2ZjVlMWEwMDRmYmQ0ZDU3NDBlNDk3YzgyOGM5YmU4ZjkwZGEuLjkwOTJlMTcw
OWQ2ZmYyNmRhZTZmMjkyM2M3NTFjYjY4YWUzMzYwNWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAor
MjAxNC0wMS0yOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1h
a2UgaXQgcG9zc2libGUgdG8gaW1wbGVtZW50IEpTIGJ1aWx0aW5zIGluIEpTCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc4ODcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIHRoZSB0ZXN0IHJl
c3VsdHMgZm9yIG5ldyBlcnJvciBtZXNzYWdlcyAobm93IHRoYXQgdGhleSdyZQorICAgICAgICBh
Y3R1YWxseSBoZWxwZnVsKSwgYW5kIGFkZGVkIGEganMtcmVncmVzcyB0ZXN0IHRvIHRyYWNrIHBl
cmZvcm1hbmNlLgorCisgICAgICAgICoganMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGpzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICoganMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJheS1wcm90b3R5cGUt
ZXZlcnkuanM6IEFkZGVkLgorICAgICAgICAodGVzdDEpOgorICAgICAgICAodGVzdDIpOgorICAg
ICAgICAodGVzdDMpOgorCiAyMDE0LTAxLTMwICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBw
bGUuY29tPgogCiAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXBsdWdp
bi1wcml2YXRlLWJyb3dzaW5nLXRvZ2dsZWQuaHRtbCBpcyBmbGFreSBvbiBXSzIKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dAppbmRleCA1NDFiOGMzNThmMDY4YTBjZWE4ODJj
MTA1MTc1MzI1MTE0Y2QzM2Y3Li5jY2EzNjNkY2U1OGZiYTk1YTU4Y2U0NmZjYjQ4YzM4YmY1OGFk
ZjU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0CkBAIC0zMCwxMiAr
MzAsMTIgQEAgUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KGlzQmlnRW5vdWdoQW5kRXhj
ZXB0aW9uKSB0aHJldyBleGNlcHRpb24gZXhjZXB0aW8KIFBBU1MgWzEyLCA1NCwgMTgsIDEzMCwg
NDRdLmV2ZXJ5KGlzQmlnRW5vdWdoQW5kRXhjZXB0aW9uKSB0aHJldyBleGNlcHRpb24gZXhjZXB0
aW9uIGZyb20gZnVuY3Rpb24uCiAKIDUuMCBXcm9uZyBUeXBlIGZvciBDYWxsYmFjayBUZXN0Ci1Q
QVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoNSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSgnd3JvbmcnKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEz
MCwgNDRdLmV2ZXJ5KG5ldyBPYmplY3QoKSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlw
ZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShudWxsKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2
ZXJ5KHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBB
U1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IFR5cGUgZXJyb3IuCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoNSkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUg
YSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSgnd3JvbmcnKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVz
dCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KG5ldyBPYmpl
Y3QoKSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNh
bGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVy
eShudWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkg
Y2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2
ZXJ5KHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBl
LmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAs
IDQ0XS5ldmVyeSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5l
dmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCiAKIDYuMCBFYXJseSBFeGl0ICgiU2hv
cnQgQ2lyY3VpdGluZyIpCiBQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoaXNCaWdFbm91
Z2hTaG9ydENpcmN1aXQpIGlzIGZhbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20v
YXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMv
ZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAppbmRleCAyYzJhNjhj
YjEwNmRhMTBmMDg2YjIyYzViZjJiZjVjOGZlNzllMzNlLi41ZDllY2I3NWE4ZGE3OWJhNjU2MDVl
N2ViOWNmOGZjMjVmZTE4YWZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9kb20vYXJyYXkt
cHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2Rv
bS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQKQEAgLTE1LDcgKzE1LDcg
QEAgUEFTUyBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh1bmRlZmluZWQsIDAsIDEpIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGUKIFBBU1MgQXJyYXkucHJvdG90eXBlLnNvcnQuY2Fs
bCh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3Qg
YW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUuc29ydC5jYWxsKHVuZGVmaW5l
ZCknKS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKHVuZGVmaW5lZCwgMCwgMSkg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2
YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbCh1bmRlZmluZWQsIDAsIDEpJyku
CiBQQVNTIEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmNhbGwodW5kZWZpbmVkLCB7fSkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRp
bmcgJ0FycmF5LnByb3RvdHlwZS51bnNoaWZ0LmNhbGwodW5kZWZpbmVkLCB7fSknKS4KLVBBU1Mg
QXJyYXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZykgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcg
J0FycmF5LnByb3RvdHlwZS5ldmVyeS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpJykuCitQQVNT
IEFycmF5LnByb3RvdHlwZS5ldmVyeS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0
aGlzfCBub3QgYmUgdW5kZWZpbmVkLgogUEFTUyBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxs
KHVuZGVmaW5lZCwgdG9TdHJpbmcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5l
ZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5j
YWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpJykuCiBQQVNTIEFycmF5LnByb3RvdHlwZS5zb21lLmNh
bGwodW5kZWZpbmVkLCB0b1N0cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZp
bmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5zb21lLmNh
bGwodW5kZWZpbmVkLCB0b1N0cmluZyknKS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLmluZGV4T2Yu
Y2FsbCh1bmRlZmluZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBp
cyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxs
KHVuZGVmaW5lZCwgMCknKS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJy
YXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
YXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMjkwYzBlZWZm
OGRlNDIxODMzZDkyZDI3ZTk1MjQxOTE3NjA0Yjk2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTAgQEAKK0pTUmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkKKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
NWNjMTcxYzQ4NzVhMzU4NWJmMTRlNTQxNWY1Y2QwZTU4MWQ1NDQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sCkBAIC0w
LDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Fy
cmF5LXByb3RvdHlwZS1ldmVyeS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZl
cnkuanMgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJheS1wcm90b3R5
cGUtZXZlcnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjk0YWExNjFjMGNlOThiMmFiMThhM2ExYTFmMGRmYWFj
OWQ3ZDJlMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0
LXRlc3RzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5qcwpAQCAtMCwwICsxLDI5IEBACit2YXIgcmVz
dWx0ID0gMDsKK2Z1bmN0aW9uIHRlc3QxKGEpIHsKKyAgICByZXN1bHQgPDwgMTsKKyAgICByZXN1
bHQrKzsKKyAgICByZXR1cm4gdHJ1ZTsKK30KK2Z1bmN0aW9uIHRlc3QyKGEsYikgeworICAgIHJl
c3VsdCBePSAzOworICAgIHJlc3VsdCAqPSAzOworICAgIHJldHVybiB0cnVlOworfQorZnVuY3Rp
b24gdGVzdDMoYSxiLGMpIHsKKyAgICByZXN1bHQgXj0gcmVzdWx0ID4+IDE7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3ZhciByZXN1bHQgPSAwOwordmFyIGFycmF5ID0gW10KK2ZvciAodmFyIGkg
PSAwOyBpIDwgMTAwMDAwOyArK2kpCisgICAgYXJyYXlbaV0gPSAxOworCitmb3IgKHZhciBpID0g
MDsgaSA8IDEwOyBpKyspIHsKKyAgICBhcnJheS5ldmVyeSh0ZXN0MSk7CisgICAgYXJyYXkuZXZl
cnkodGVzdDIpOworICAgIGFycmF5LmV2ZXJ5KHRlc3QzKTsKK30KKworaWYgKHJlc3VsdCAhPSAx
NDI4ODEwNDk2KQorICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKZGlm
ZiAtLWdpdCBhL0dOVW1ha2VmaWxlLmFtIGIvR05VbWFrZWZpbGUuYW0KaW5kZXggNzNmYzQ5Mjhj
NGRkNDliNTQ5ODY5YjUwNjc4YzZiZGU3NGY0NDc2MC4uMDhjOTExNTQyNjA1MDBkZTNmZjA0YjAy
MGNlMGQ2MGY5OGU4Y2ZlOCAxMDA2NDQKLS0tIGEvR05VbWFrZWZpbGUuYW0KKysrIGIvR05VbWFr
ZWZpbGUuYW0KQEAgLTY4LDYgKzY4LDcgQEAgQUxMX01PRklMRVMgOj0KIGRvbV9iaW5kaW5nX2lk
bHMgOj0KIHd0Zl9zb3VyY2VzIDo9CiBqYXZhc2NyaXB0Y29yZV9oX2FwaSA6PQoramF2YXNjcmlw
dGNvcmVfYnVpbHRpbnNfanNfbm9zb3VyY2VzIDo9CiBqYXZhc2NyaXB0Y29yZV9jcHBmbGFnczo9
CiBqYXZhc2NyaXB0Y29yZV9jZmxhZ3MgOj0KIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgOj0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222777</attachid>
            <date>2014-01-30 18:25:08 -0800</date>
            <delta_ts>2014-01-30 19:43:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140130182505.patch</filename>
            <type>text/plain</type>
            <size>198305</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NjgxMzcxYWU2ZDBjYWZlNDJmNWNmN2E1NWI3MjRjMTc5ODExYjBhLi43NTA0MGJiMjVhNTg0MTY0
Mzg5ODQzNDFjNmEwMjMzMzdhOTk1ZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
IFRoaXMgcmVzdWx0IG9mIHRoaXMgcmVmYWN0b3JpbmcKKyAgICAgICAgaXMgdGhhdCBDb21tb25J
ZGVudGlmaWVycywgYW5kIGEgZmV3IG90aGVyIG1pc2NlbGxhbmVvdXMgaGVhZGVycyBub3cKKyAg
ICAgICAgbmVlZCB0byBiZSBpbmNsdWRlZCBkaXJlY3RseSBhcyB0aGV5IHdlcmUgZm9ybWVybHkg
Y2FwdHVyZWQgdGhyb3VnaCBvdGhlcgorICAgICAgICBwYXRocy4KKworICAgICAgICBJbiBhZGRp
dGlvbiB0aGlzIGFkZHMgYSBmbGFnIHRvIHRoZSBMb29rdXAgdGFibGUncyBoYXNoZW50cnkgdG8g
aW5kaWNhdGUKKyAgICAgICAgdGhhdCBhIHN0YXRpYyBmdW5jdGlvbiBpcyBhY3R1YWxseSBiYWNr
ZWQgYnkgSlMuIFRoZXJlIGlzIHRoZW4gYSBsb3Qgb2YKKyAgICAgICAgbG9naWMgdG8gdGhyZWFk
IHRoZSBzcGVjaWFsIG5hdHVyZSBvZiB0aGUgZnVuY3RvbiB0byB3aGVyZSBpdCBtYXR0ZXJzLgor
ICAgICAgICBUaGlzIGFsbG93cyB0b1N0cmluZygpLCAuY2FsbGVyLCBldGMgdG8gbWltaWMgdGhl
IGJlaGF2aW91ciBvZiBhIGhvc3QKKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAgICAgTm90ZXMg
b24gd3JpdGluZyBidWlsdGluczoKKyAgICAgICAgIC0gRWFjaCBmdW5jdGlvbiBpcyBjb21waWxl
ZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBvdGhlcnMsIGFuZCB0aG9zZQorICAgICAgICAgICBpbXBs
ZW1lbnRhdGlvbnMgY2Fubm90IGN1cnJlbnRseSBjYXB0dXJlIGFsbCBnbG9iYWwgcHJvcGVydGll
cyAoYXMKKyAgICAgICAgICAgdGhhdCBjb3VsZCBiZSBwb3RlbnRpYWxseSB1bnNhZmUpLiBJZiBh
IGZ1bmN0aW9uIGRvZXMgY2FwdHVyZSBhCisgICAgICAgICAgIGdsb2JhbCB3ZSB3aWxsIGRlbGli
ZXJhdGVseSBjcmFzaC4KKyAgICAgICAgIC0gRm9yIHRob3NlICJnbG9iYWwiIHByb3BlcnRpZXMg
dGhhdCB3ZSBkbyB3YW50IGFjY2VzcyB0bywgd2UgdXNlCisgICAgICAgICAgIHRoZSBAIHByZWZp
eCwgZS5nLiBPYmplY3QodGhpcykgYmVjb21lcyBAT2JqZWN0KHRoaXMpLiBUaGUgQCBpZGVudGlm
aWVycworICAgICAgICAgICBhcmUgcHJpdmF0ZSBuYW1lcywgYW5kIGJlaGF2ZSBqdXN0IGxpa2Ug
cmVndWxhciBwcm9wZXJ0aWVzLCBvbmx5CisgICAgICAgICAgIHdpdGhvdXQgdGhlIHJpc2sgb2Yg
YWR1bHRlcmF0aW9uLiBBZ2FpbiwgaW4gdGhlIEBPYmplY3QgY2FzZSwgd2UKKyAgICAgICAgICAg
ZXhwbGljaXRseSBkdXBsaWNhdGUgdGhlIE9iamVjdENvbnN0cnVjdG9yIHJlZmVyZW5jZSBvbiB0
aGUgR2xvYmFsT2JqZWN0CisgICAgICAgICAgIHNvIHRoYXQgd2UgaGF2ZSBndWFyYW50ZWVkIGFj
Y2VzcyB0byB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgY29uc3RydWN0
b3IuCisgICAgICAgICAtIGNhbGwsIGFwcGx5LCBldmFsLCBhbmQgRnVuY3Rpb24gYXJlIGFsbCBy
ZWplY3RlZCBpZGVudGlmaWVycywgYWdhaW4KKyAgICAgICAgICAgdG8gcHJldmVudCBhbnl0aGlu
ZyBmcm9tIGFjY2lkZW50YWxseSB1c2luZyBhbiBhZHVsdGVyYXRlZCBvYmplY3QuCisgICAgICAg
ICAgIEluc3RlYWQgQGNhbGwgYW5kIEBhcHBseSBhcmUgYXZhaWxhYmxlLCBhbmQgaGFwcGlseSB0
aGV5IGNvbXBsZXRlbHkKKyAgICAgICAgICAgZHJvcCB0aGUgbmVxX3B0ciBpbnN0cnVjdGlvbiBh
cyB0aGV5J3JlIGRlZmluZWQgYXMgYWx3YXlzIGJlaW5nIHRoZQorICAgICAgICAgICBvcmlnaW5h
bCBjYWxsL2FwcGx5IGZ1bmN0aW9ucy4KKworICAgICAgICBUaGVzZSByZXN0cmljdGlvbnMgYXJl
IGp1c3QgaW50ZW5kZWQgdG8gbWFrZSBpdCBoYXJkZXIgdG8gYWNjaWRlbnRhbGx5CisgICAgICAg
IG1ha2UgY2hhbmdlcyB0aGF0IGFyZSBpbmNvcnJlY3QgKGZvciBpbnN0YW5jZSBjYWxsaW5nIHdo
YXRldmVyIGhhcyBiZWVuCisgICAgICAgIGFzc2lnbmVkIHRvIGdsb2JhbC5PYmplY3QsIGluc3Rl
YWQgb2YgdGhlIG9yaWdpbmFsIGNvbnN0cnVjdG9yIGZ1bmN0aW9uKS4KKyAgICAgICAgSG93ZXZl
ciwgbWFraW5nIGEgbWlzdGFrZSBsaWtlIHRoaXMgc2hvdWxkIHJlc3VsdCBpbiBhIHB1cmVseSBz
ZW1hbnRpYworICAgICAgICBlcnJvciBhcyBmdW5kYW1lbnRhbGx5IHRoZXNlIGZ1bmN0aW9ucyBh
cmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlCisgICAgICAgIHJlZ3VsYXIgSlMgY29kZSBp
biB0aGUgaG9zdCBnbG9iYWwsIGFuZCBoYXZlIG5vIG1vcmUgcHJpdmlsZWdlcyB0aGFuCisgICAg
ICAgIGFueSBvdGhlciBKUy4KKworICAgICAgICBUaGUgaW5pdGlhbCBwcm9vZiBvZiBjb25jZXB0
IGlzIEFycmF5LnByb3RvdHlwZS5ldmVyeSwgdGhpcyBzaG93cyBhIDY1JQorICAgICAgICBwZXJm
b3JtYW5jZSBpbXByb3ZlbWVudCwgYW5kIHRoYXQgaW1wcm92ZW1lbnQgaXMgc2lnbmlmaWNhbnRs
eSBodXJ0IGJ5CisgICAgICAgIG91ciBwb29yIG9wdGltaXNhdGlvbiBvZiBvcF9pbi4KKworICAg
ICAgICBBcyB0aGlzIGlzIHN1Y2ggYSBsaW1pdGVkIGZ1bmN0aW9uLCB3ZSBoYXZlIG5vdCB5ZXQg
ZXhwb3J0ZWQgYWxsIHN5bWJvbHMKKyAgICAgICAgdGhhdCB3ZSBjb3VsZCBwb3NzaWJseSBuZWVk
LCBidXQgYXMgd2UgaW1wbGVtZW50IG1vcmUsIHRoZSBsaWtlbGlob29kCisgICAgICAgIG9mIGVu
Y291bnRlcmluZyBtaXNzaW5nIGZlYXR1cmVzIHdpbGwgcmVkdWNlLgorCisgICAgICAgIFRoaXMg
ZGlkIHJlcXVpcmUgYnJlYWtpbmcgb3V0IGEgSlNTdHJpbmdJbmxpbmVzIGhlYWRlciwgYW5kIHJl
cXVpcmVkCisgICAgICAgIGZpeGluZyBhIGZldyBvYmplY3RzIHRoYXQgd2VyZSB0cnlpbmcgdG8g
dXNpbmcgUHJvcGVydHlOYW1lOjpwdWJsaWNOYW1lCisgICAgICAgIHJhdGhlciB0aGFuIFByb3Bl
cnR5TmFtZTo6dWlkLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0
eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dCk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRpY1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWNGdW5jdGlvbkdl
dHRlcik6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tH
ZXR0ZXIpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBidWlsdGlucy9BcnJheS5wcm90b3R5cGUuanM6CisgICAgICAgIChldmVyeSk6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkJ1aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKToKKyAgICAgICAgKEpTQzo6
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSk6CisgICAgICAgICog
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVj
dXRhYmxlczo6Y3JlYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tG
b3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6dG9TdHJpY3RuZXNzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNCdWlsdGluRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBjcmVhdGVfaGFz
aF90YWJsZToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZ2Vu
ZXJhdGUtanMtYnVpbHRpbnM6IEFkZGVkLgorICAgICAgICAoZ2V0Q29weXJpZ2h0KToKKyAgICAg
ICAgKGdldEZ1bmN0aW9ucyk6CisgICAgICAgIChnZW5lcmF0ZUNvZGUpOgorICAgICAgICAobWFu
Z2xlTmFtZSk6CisgICAgICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSWRlbnRp
Zmllcik6CisgICAgICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChTb3VyY2VDb2RlKToK
KyAgICAgICAgKFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKFZNKToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvUHJvdG9DYWxsRnJhbWUuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUp
OgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpM
ZXhlcik6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpM
ZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFy
Pjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAg
ICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcik6CisgICAgICAgICog
cGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OnNldENsb3NlZFZh
cmlhYmxlcyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
Tm9kZTo6Y2FwdHVyZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OnNldENs
b3NlZFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmluaXNoUGFy
c2luZyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRU
b2tlblRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OmdldFVzZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNsb3NlZFZhcmlh
Ymxlcyk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9k
ZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAgICAgICogcnVudGlt
ZS9BcmdMaXN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAg
ICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJh
dG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpn
ZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpD
b21tb25JZGVudGlmaWVycyk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQ
cml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQdWJsaWNO
YW1lKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzRXhjZXB0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxl
OjpleGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpleGVj
dXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aXNCdWlsdGlu
RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1l
L0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFi
bGVHZXQpOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0KToKKyAg
ICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgICogcnVudGltZS9K
U0NlbGxJbmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6c291cmNlQ29kZSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzSG9zdE9y
QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6aXNCdWlsdGluRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIpOgorICAgICAg
ICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9w
ZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgICogcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6Om9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpnZXRDbGFzc1Byb3BlcnR5TmFtZXMpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZ0lubGlu
ZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjppbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9i
amVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgICAgRG9uJ3QgcmVw
b3J0IHByaXZhdGUgbmFtZXMuCisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6c3ltYm9s
VGFibGVQdXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChKU0M6OnNldFVwU3RhdGlj
RnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlND
OjpIYXNoRW50cnk6OmJ1aWx0aW5HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpIYXNoRW50cnk6
OnByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpwcm9wZXJ0eVB1dHRl
cik6CisgICAgICAgIChKU0M6Okhhc2hUYWJsZTo6ZW50cnkpOgorICAgICAgICAoSlNDOjpnZXRT
dGF0aWNQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpnZXRTdGF0aWNWYWx1ZVNsb3QpOgor
ICAgICAgICAoSlNDOjpwdXRFbnRyeSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6YnVp
bHRpbkV4ZWN1dGFibGVzKToKKwogMjAxNC0wMS0yOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBw
bGUuY29tPgogCiAgICAgICAgIEZUTCBzaG91bGQgc3VwcG9ydCBHZXRCeUlkKFVudHlwZWQ6KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDFhZDY5NzQ4OGIwYzRiOGI0Y2ZhZTI5MTM1NDI1OWI2ZGFjZmRjNDUuLmYz
YzNkNzE3MWQwNTQ0ODBlYzYwNTQwYzBkNTI1OTk2ZWVjZGI5YTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxNC0wMS0yOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gaW1wbGVtZW50IEpTIGJ1aWx0aW5zIGluIEpT
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc4ODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGlu
ZyBmb3IgdGhlIG5ld2x5IHJlcXVpcmVkIGhlYWRlcnMuCisKKyAgICAgICAgVGVzdDoganMvcmVn
cmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbAorCisgICAgICAgICogRm9yd2FyZGluZ0hl
YWRlcnMvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0lEQkFueUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJREJE
YXRhYmFzZUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9y
ZUN1c3RvbS5jcHA6CisKIDIwMTQtMDEtMzAgIFJvZ2VyIEZvbmcgIDxyb2dlcl9mb25nQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWJHTCBsb2FkIHBvbGljeSBzaG91bGQgYmUgcXVlcmllZCBmb3Ig
dGhlIHRvcCBsZXZlbCBkb2N1bWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggNWJlMDUzZjFlMDg2YjQzZTY4
NmMzNjc0ZGFlN2M1MTYwNWEyODZlNy4uMGVjZWQ1MWYzZTJkNWI2MjFkYWRmMDU3NDlmNWU3NDY2
YTA2ZjUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBib29sIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZQogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKICAg
ICBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHByb3BlcnR5TmFtZVJlZjsKICAgICAKLSAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpT
Q2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xh
c3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgLy8gb3B0aW9uYWwgb3B0
aW1pemF0aW9uIHRvIGJ5cGFzcyBnZXRQcm9wZXJ0eSBpbiBjYXNlcyB3aGVuIHdlIG9ubHkgbmVl
ZCB0byBrbm93IGlmIHRoZSBwcm9wZXJ0eSBleGlzdHMKICAgICAgICAgICAgIGlmIChKU09iamVj
dEhhc1Byb3BlcnR5Q2FsbGJhY2sgaGFzUHJvcGVydHkgPSBqc0NsYXNzLT5oYXNQcm9wZXJ0eSkg
ewpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiAgICAgUmVmUHRy
PE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgSlNWYWx1ZVJlZiB2YWx1ZVJl
ZiA9IHRvUmVmKGV4ZWMsIHZhbHVlKTsKICAgICAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9
IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJl
bnRDbGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBz
ZXRQcm9wZXJ0eSA9IGpzQ2xhc3MtPnNldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFwcm9wZXJ0eU5hbWVSZWYpCkBAIC0zNDMsNyArMzQzLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm8KICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CiAgICAg
UmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0Ns
YXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNz
ID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdERlbGV0
ZVByb3BlcnR5Q2FsbGJhY2sgZGVsZXRlUHJvcGVydHkgPSBqc0NsYXNzLT5kZWxldGVQcm9wZXJ0
eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lUmVmKQpAQCAtNTY0LDcgKzU2
NCw3IEBAIEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiB7CiAgICAgSlNPYmplY3RSZWYgdGhpc1Jl
ZiA9IHRvUmVmKHRoaXMpOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gY2xhc3NS
ZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAg
ICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXMgPSBq
c0NsYXNzLT5zdGF0aWNWYWx1ZXMoZXhlYykpIHsKICAgICAgICAgICAgICAgICBpZiAoU3RhdGlj
VmFsdWVFbnRyeSogZW50cnkgPSBzdGF0aWNWYWx1ZXMtPmdldChuYW1lKSkgewpAQCAtNjAwLDcg
KzYwMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGlj
RnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFCiAgICAgaWYgKFBhcmVudDo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdDIpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QyLmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFt
ZSkpOwogCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsK
ICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqLT5jbGFzc1JlZigpOyBq
c0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlm
IChPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGUqIHN0YXRpY0Z1bmN0aW9ucyA9IGpz
Q2xhc3MtPnN0YXRpY0Z1bmN0aW9ucyhleGVjKSkgewogICAgICAgICAgICAgICAgIGlmIChTdGF0
aWNGdW5jdGlvbkVudHJ5KiBlbnRyeSA9IHN0YXRpY0Z1bmN0aW9ucy0+Z2V0KG5hbWUpKSB7CkBA
IC02MjYsNyArNjI2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpjYWxsYmFja0dldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWQKICAgICBKU09iamVjdFJl
ZiB0aGlzUmVmID0gdG9SZWYodGhpc09iaik7CiAgICAgUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBw
cm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2Jq
LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsK
ICAgICAgICAgICAgIGlmIChKU09iamVjdEdldFByb3BlcnR5Q2FsbGJhY2sgZ2V0UHJvcGVydHkg
PSBqc0NsYXNzLT5nZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlO
YW1lUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDI3YmM0YzE3ZjNk
ZmVlYjYxZDI1MjMyM2ZkODc4YzQ0NzgwZjc0YzUuLjNjYTgzODY0OWM5MTQwNzM5ZDk0OTIyYWVj
MWVkOTk1ZjBmYTc3ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUs
NiArNSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7
SkFWQVNDUklQVENPUkVfRElSfS9Gb3J3YXJkaW5nSGVhZGVycyIKICAgICAiJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2Fzc2VtYmxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2JpbmRpbmdz
IgorICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMiCiAgICAgIiR7SkFWQVNDUklQ
VENPUkVfRElSfS9ieXRlY29kZSIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J5dGVjb21w
aWxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2RmZyIKQEAgLTUyLDYgKzUzLDggQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9TY3JpcHRPYmplY3QuY3Bw
CiAgICAgYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCiAKKyAgICBidWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwCisKICAgICBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcAog
ICAgIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUJhc2lj
QmxvY2suY3BwCkBAIC03MDcsNyArNzEwLDcgQEAgc2V0KEhBU0hfTFVUX0dFTkVSQVRPUiAke0NN
QUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vY3JlYXRlX2hhc2hfdGFibGUpCiBtYWNybyhHRU5FUkFU
RV9IQVNIX0xVVCBfaW5wdXQgX291dHB1dCkKICAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAg
ICAgIE9VVFBVVCAke19vdXRwdXR9Ci0gICAgICAgIERFUEVORFMgJHtIQVNIX0xVVF9HRU5FUkFU
T1J9ICR7X2lucHV0fQorICAgICAgICBERVBFTkRTICR7SEFTSF9MVVRfR0VORVJBVE9SfSAke19p
bnB1dH0gJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5o
CiAgICAgICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7SEFTSF9MVVRfR0VORVJBVE9S
fSAke19pbnB1dH0gLWkgPiAke19vdXRwdXR9CiAgICAgICAgIFZFUkJBVElNKQogICAgIGxpc3Qo
QVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMgJHtfb3V0cHV0fSkKQEAgLTgxNSwxNiArODE4
LDI3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFC
TEV9ICR7SmF2YVNjcmlwdENvcmVfSU5TUEVDVE9SX1NDUklQVFNfRElSfS9Db2RlR2VuZXJhdG9y
SW5zcGVjdG9yLnB5ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVj
dG9ySlMuanNvbiAtLW91dHB1dF9oX2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENP
UkVfRElSfSIgLS1vdXRwdXRfY3BwX2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENP
UkVfRElSfSIgLS1vdXRwdXRfanNfZGlyICIke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09S
RV9ESVJ9IiAtLW91dHB1dF90eXBlIEphdmFTY3JpcHQgLS13cml0ZV9hbHdheXMgJiYgbWtkaXIg
LXAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IgJiYgY3Ag
JHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0JhY2tlbmRE
aXNwYXRjaGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVj
dG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmggJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENP
UkVfRElSfS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFT
Q1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yCiAgICAgVkVSQkFUSU0pCiAKKyMgSlNDQnVpbHRpbnMK
K2ZpbGUoR0xPQiBKU0NCdWlsdGluc19qc19maWxlcyAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9E
SVJ9L2J1aWx0aW5zLyouanMiKQorYWRkX2N1c3RvbV9jb21tYW5kKAorICAgT1VUUFVUICR7REVS
SVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuY3BwICR7REVSSVZF
RF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAorICAgTUFJTl9ERVBF
TkRFTkNZICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucwor
ICAgREVQRU5EUyAke0pTQ0J1aWx0aW5zX2pzX2ZpbGVzfQorICAgQ09NTUFORCAke1BZVEhPTl9F
WEVDVVRBQkxFfSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRp
bnMgJHtKU0NCdWlsdGluc19qc19maWxlc30gJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENP
UkVfRElSfS9KU0NCdWlsdGlucy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vSlNDQnVpbHRpbnMuY3BwCisgICBWRVJCQVRJTSkKKwogbGlzdChBUFBFTkQgSmF2YVNjcmlw
dENvcmVfU09VUkNFUwogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0v
SW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwCiAgICAgJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuY3BwCiAg
ICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU1R5cGVC
dWlsZGVycy5jcHAKKyAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pT
Q0J1aWx0aW5zLmNwcAogKQogCiBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTCiAg
ICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0JhY2tl
bmREaXNwYXRjaGVycy5oCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElS
fS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuaAogICAgICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaAorICAgICR7REVS
SVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAogKQogCiBhZGRf
Y3VzdG9tX2NvbW1hbmQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CmluZGV4IDExNTZlOTdmZDg4NjI1NTdjOWNmOGQzYjY4YmY0ZDAzYzNlOGJhOGYuLjdjOTgyYjY5
MTNlMmY4OGQ1ODg4NGRiZTIzNzNmNTk1ZTdiNDU5MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yOCw4ICsyOCw5IEBAIFZQQVRIID0gXAogICAgICQo
SmF2YVNjcmlwdENvcmUpIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9wYXJzZXIgXAogICAgICQo
SmF2YVNjcmlwdENvcmUpL3J1bnRpbWUgXAotICAgICQoSmF2YVNjcmlwdENvcmUpL2ludGVycHJl
dGVyIFwKLSAgICAkKEphdmFTY3JpcHRDb3JlKS9qaXQgXAorCSQoSmF2YVNjcmlwdENvcmUpL2lu
dGVycHJldGVyIFwKKwkkKEphdmFTY3JpcHRDb3JlKS9qaXQgXAorCSQoSmF2YVNjcmlwdENvcmUp
L2J1aWx0aW5zIFwKICMKIAogLlBIT05ZIDogYWxsCkBAIC01NywxMiArNTgsMjUgQEAgYWxsIDog
XAogICAgIFJlZ0V4cE9iamVjdC5sdXQuaCBcCiAgICAgU3RyaW5nQ29uc3RydWN0b3IubHV0Lmgg
XAogICAgIHVkaXM4Nl9pdGFiLmggXAorICAgIEpTQ0J1aWx0aW5zIFwKICMKIAorIyBidWlsdGlu
IGZ1bmN0aW9ucworLlBIT05ZOiBKU0NCdWlsdGlucworCitKU0NCdWlsdGluczogJChKYXZhU2Ny
aXB0Q29yZSkvZ2VuZXJhdGUtanMtYnVpbHRpbnMgSlNDQnVpbHRpbnMuaCBKU0NCdWlsdGlucy5j
cHAKK0pTQ0J1aWx0aW5zLmg6ICQoSmF2YVNjcmlwdENvcmUpL2dlbmVyYXRlLWpzLWJ1aWx0aW5z
ICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zLyouanMKKwlweXRob24gJF4gJEAKKwkJCQkJCQkJ
CQkJCQkJCQkJCQkJIAorSlNDQnVpbHRpbnMuY3BwOiBKU0NCdWlsdGlucy5oCisKICMgbG9va3Vw
IHRhYmxlcyBmb3IgY2xhc3NlcwogCitjcmVhdGVfaGFzaF90YWJsZTogSlNDQnVpbHRpbnMKKwog
JS5sdXQuaDogY3JlYXRlX2hhc2hfdGFibGUgJS5jcHAKIAkkXiAtaSA+ICRACisKIExleGVyLmx1
dC5oOiBjcmVhdGVfaGFzaF90YWJsZSBLZXl3b3Jkcy50YWJsZQogCSReID4gJEAKIApAQCAtNzks
NyArOTMsNiBAQCBLZXl3b3JkTG9va3VwLmg6IEtleXdvcmRMb29rdXBHZW5lcmF0b3IucHkgS2V5
d29yZHMudGFibGUKIHVkaXM4Nl9pdGFiLmg6ICQoSmF2YVNjcmlwdENvcmUpL2Rpc2Fzc2VtYmxl
ci91ZGlzODYvaXRhYi5weSAkKEphdmFTY3JpcHRDb3JlKS9kaXNhc3NlbWJsZXIvdWRpczg2L29w
dGFibGUueG1sCiAJKFBZVEhPTlBBVEg9JChKYXZhU2NyaXB0Q29yZSkvZGlzYXNzZW1ibGVyL3Vk
aXM4NiBweXRob24gJChKYXZhU2NyaXB0Q29yZSkvZGlzYXNzZW1ibGVyL3VkaXM4Ni9pdGFiLnB5
ICQoSmF2YVNjcmlwdENvcmUpL2Rpc2Fzc2VtYmxlci91ZGlzODYvb3B0YWJsZS54bWwgfHwgZXhp
dCAxKQogCi0KICMgSW5zcGVjdG9yIGludGVyZmFjZXMKIAogSU5TUEVDVE9SX0RPTUFJTlMgPSBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggZmU1NDQ4ZGRjMWJjZmFhNGM3
MjlhMWNjMDBkZWE2MjQzMTkzOTBhMi4uNTU2OWY1MDI4ZDhjM2NkZDVhMDRkYzkzNjZhODRiMDRl
ZWM0ODE1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFt
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtNTEsNiArNTEs
NyBAQCBqYXZhc2NyaXB0Y29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0ZvcndhcmRpbmdIZWFkZXJzIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYmluZGluZ3MgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cyBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlIFwKIAktSSQo
c3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyIFwKIAktSSQoc3JjZGly
KS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIgXApAQCAtMTEwLDEyICsxMTEsMTYgQEAg
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnREZXNpcmVkT2Zmc2V0cy5oOiAkKGph
dmFzY3JpcHRjb3JlX3NvdXJjZXMpICQKIAkkKEFNX1ZfR0VOKSQoUlVCWSkgJChzcmNkaXIpL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3Iu
cmIgJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbSAkQAogCSQoQU1fVl9hdCl0b3VjaCAkQAogCi0kKFByb2dyYW1zX0xMSW50T2Zmc2V0
c0V4dHJhY3Rvcl9PQkpFQ1RTKTogRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnRE
ZXNpcmVkT2Zmc2V0cy5oCiskKFByb2dyYW1zX0xMSW50T2Zmc2V0c0V4dHJhY3Rvcl9PQkpFQ1RT
KTogRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnREZXNpcmVkT2Zmc2V0cy5oIAog
CiBEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9MTEludEFzc2VtYmx5Lmg6IFByb2dyYW1z
L0xMSW50T2Zmc2V0c0V4dHJhY3RvciQoRVhFRVhUKQogCSQoQU1fVl9HRU4pJChSVUJZKSAkKHNy
Y2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiICQoc3JjZGlyKS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gUHJvZ3Jh
bXMvTExJbnRPZmZzZXRzRXh0cmFjdG9yJChFWEVFWFQpICRACiAJJChBTV9WX2F0KXRvdWNoICRA
CiAKK0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmg6IERlcml2ZWRT
b3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmNwcAorRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvSlNDQnVpbHRpbnMuY3BwOiAkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRD
b3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5zICQoamF2YXNjcmlwdGNvcmVfYnVpbHRpbnNfanNfbm9z
b3VyY2VzKQorCSQoQU1fVl9HRU4pJChQWVRIT04pICReICRACisKICQobGliamF2YXNjcmlwdGNv
cmVndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1Jf
VkVSU0lPTkBfbGFfT0JKRUNUUyk6IERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50
QXNzZW1ibHkuaAogCiBqc2M6ICQoamF2YXNjcmlwdGNvcmVfYnVpbHRfbm9zb3VyY2VzKSBQcm9n
cmFtcy9qc2MkKEVYRUVYVCkKQEAgLTIxNiw2ICsyMjEsNyBAQCBFWFRSQV9ESVNUICs9IFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvS2V5d29yZExvb2t1cEdlbmVyYXRvci5weSBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9LZXl3b3Jkcy50YWJsZSBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL1RIQU5LUyBcCisJJChqYXZhc2NyaXB0Y29yZV9idWlsdGluc19qc19ub3NvdXJjZXMp
IFwKIAkkKGxsaW50X25vc291cmNlcykgXAogCSQob2ZmbGluZWFzbV9ub3NvdXJjZXMpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggY2RiNTQyNmIwNmI1
MmE5ODI1NmVlOTA1OGJiYThmMTFlZWE2OWVlMC4uOThmYWFhN2QxNzVhYTYxZjIwODk2Y2VlYjEz
ODYzZTI3YjI2NmNlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KQEAgLTIwLDYgKzIwLDggQEAgamF2YXNjcmlwdGNvcmVfYnVpbHRfbm9zb3VyY2VzICs9IFwK
IAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9FcnJvclByb3RvdHlwZS5sdXQuaCBcCiAJ
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNEYXRhVmlld1Byb3RvdHlwZS5sdXQuaCBc
CiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3QubHV0LmggXAor
CURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmNwcCBcCisJRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNDQnVpbHRpbnMuaCBcCiAJRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvSlNPTk9iamVjdC5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvSlNQcm9taXNlQ29uc3RydWN0b3IubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL0pTUHJvbWlzZVByb3RvdHlwZS5sdXQuaCBcCkBAIC0zNSw2ICszNyw5IEBA
IGphdmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvTExJbnREZXNpcmVkT2Zmc2V0cy5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9MTEludEFzc2VtYmx5LmgKIAoramF2YXNjcmlwdGNvcmVfYnVpbHRpbnNfanNf
bm9zb3VyY2VzICs9IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXkucHJv
dG90eXBlLmpzCisKIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0FQSUNhc3QuaCBcCkBAIC0xMDIsNiArMTA3LDggQEAgamF2YXNjcmlwdGNvcmVfc291
cmNlcyArPSBcCiAgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9iamVj
dC5oIFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3Bw
IFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuaCBcCisg
ICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAg
XAorICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMu
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2Zp
bGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9u
UHJvZmlsZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxl
LmNwcCBcCkBAIC0xMjQxLDcgKzEyNDgsOSBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwK
IAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0
Y2hlcnMuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JKU0Zy
b250ZW5kRGlzcGF0Y2hlcnMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5z
cGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwIFwKLQlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29y
ZS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaCBcCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvSlNDQnVpbHRpbnMuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9K
U0NCdWlsdGlucy5oCiAKIGxsaW50X25vc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gXApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggNWVkZWZkYmU4NTVmOTZhNjI2OGQ4NTczYmVjMWQw
YzNkODU4YWE1Yy4uYTEyZGIxODM0ODZkZmJiY2E4M2YzYTc4ZTljZjk4NjMxYjI2NTNkYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBAIC0zMDksNiArMzA5LDcgQEAK
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdEZ1bmN0aW9uQ2FsbC5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRPYmplY3Qu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0VmFsdWUu
Y3BwIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnVpbHRpbnNcQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5
QWxsb2NhdGlvblByb2ZpbGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0
ZWNvZGVcQXJyYXlQcm9maWxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5
dGVjb2RlXEJ5dGVjb2RlQmFzaWNCbG9jay5jcHAiIC8+CkBAIC03MjEsNiArNzIyLDcgQEAKICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JK
U0JhY2tlbmREaXNwYXRjaGVycy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmok
KFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNw
ZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuY3BwIiAvPgogICA8L0l0ZW1Hcm91cD4K
ICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xBcnJheUNvbnN0cnVjdG9yLmx1dC5oIiAvPgpAQCAtNzUwLDYgKzc1Miw3IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcUmVnRXhwT2Jq
ZWN0Lmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVp
bGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXFJlZ0V4cFByb3RvdHlwZS5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCIgLz4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NCdWlsdGlu
cy5oIiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXEFQSVxBUElDYWxsYmFja0Z1bmN0aW9uLmgiIC8+CkBAIC03OTgsNiArODAxLDcg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdEZ1bmN0aW9uQ2Fs
bC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0T2JqZWN0
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRWYWx1ZS5o
IiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnVpbHRpbnNcQnVpbHRpbkV4ZWN1dGFi
bGVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9j
YXRpb25Qcm9maWxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxB
cnJheVByb2ZpbGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEJ5
VmFsSW5mby5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
ai5maWx0ZXJzCmluZGV4IDg3ZTEyYTQ3MTU4YmI2MjI0ZDQ5ZmQ2MjI5NzhjNGE5YzQ0MzVhNjUu
Ljg2OWMxZjU4OWJjYjY4NmViOWNmMjBjMDk2YmUxYjgzYTU1MWUyNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTcsNiArNyw5IEBA
CiAgICAgPEZpbHRlciBJbmNsdWRlPSJiaW5kaW5ncyI+CiAgICAgICA8VW5pcXVlSWRlbnRpZmll
cj57MGJhY2UxMjMtNDU4Mi1lZWJjLTkzMTQtNzgxOWIzNzZjMTk4fTwvVW5pcXVlSWRlbnRpZmll
cj4KICAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9ImJ1aWx0aW5zIj4KKyAgICAg
IDxVbmlxdWVJZGVudGlmaWVyPnszYjlkNzJhNS0xMzViLTQzYjMtYTUyNC1jNmQyYjlkMjlkMzV9
PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgogICAgIDxGaWx0ZXIgSW5jbHVkZT0i
Ynl0ZWNvZGUiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezc2NjA4OGEwLTEyMTYtNDg1NC1h
YTQzLTU2MGM1ZTI4MzY2OH08L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CkBAIC0x
MDgsNiArMTExLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxNYWNy
b0Fzc2VtYmxlci5jcHAiPgogICAgICAgPEZpbHRlcj5hc3NlbWJsZXI8L0ZpbHRlcj4KICAgICA8
L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5F
eGVjdXRhYmxlcy5jcHAiPgorICAgICAgPEZpbHRlcj5idWlsdGluczwvRmlsdGVyPgorICAgIDwv
Q2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZS5jcHAiPgogICAgICAgPEZpbHRlcj5ieXRlY29kZTwvRmlsdGVyPgogICAg
IDwvQ2xDb21waWxlPgpAQCAtMTMyOSw2ICsxMzM1LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAi
PgogICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGls
ZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmok
KFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NC
dWlsdGlucy5jcHAiPgorICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KKyAg
ICA8L0NsQ29tcGlsZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxBUElcQVBJQ2FsbGJhY2tGdW5jdGlvbi5oIj4KQEAgLTE0NTQsNiAr
MTQ2Myw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcWDg2QXNzZW1i
bGVyLmgiPgogICAgICAgPEZpbHRlcj5hc3NlbWJsZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVk
ZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxl
cy5oIj4KKyAgICAgIDxGaWx0ZXI+YnVpbHRpbnM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlvblByb2Zp
bGUuaCI+CiAgICAgICA8RmlsdGVyPmJ5dGVjb2RlPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+
CkBAIC0yNTUwLDYgKzI1NjIsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEFycmF5UHJvdG90eXBlLmx1dC5oIj4KICAgICAgIDxGaWx0ZXI+RGVy
aXZlZCBTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVy
ZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuaCI+CisgICAgICA8
RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxWTS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmVDb21tb24ucHJvcHMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZUNvbW1vbi5wcm9wcwppbmRleCAzNjIyZmZjNTc3YzQzZGRmNzBkYTUxZmY2OGFkNjQ2ZjYz
MDRlNTY3Li5jNTg4ODcwYzJmZDEzZDYwNzZkMzhmNTJjYTYyMjVkYjI4NzJjNzgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZUNvbW1vbi5wcm9wcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZUNvbW1vbi5wcm9wcwpAQCAtNSw3ICs1LDcgQEAK
ICAgPFByb3BlcnR5R3JvdXAgLz4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29t
cGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXDsuLlx0b29sc1w7
Li5ccnVudGltZVw7Li5cbGxpbnRcOy4uXGppdFw7Li5cZGlzYXNzZW1ibGVyXDsuLlxoZWFwXDsu
LlxkZWJ1Z2dlclw7Li5cYXNzZW1ibGVyXDsuLlxwcm9maWxlclw7Li5ceWFyclw7Li5caW50ZXJw
cmV0ZXJcOy4uXGJ5dGVjb2RlXDsuLlxkZmdcOy4uXGJ5dGVjb21waWxlclw7Li5ccGFyc2VyXDsu
LlxBUElcOy4uXGZ0bFw7Li5cYmluZGluZ3NcOy4uXGluc3BlY3Rvclw7JChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXEphdmFTY3JpcHRDb3JlXERlcml2
ZWRTb3VyY2VzXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVw7JChDb25maWd1cmF0
aW9uQnVpbGREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmVcOyQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxpbmNsdWRlXHByaXZhdGVcOyQoV2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZTskKFdlYktp
dF9MaWJyYXJpZXMpXGluY2x1ZGVccHJpdmF0ZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM+Li5cOy4uXHRvb2xzXDsuLlxydW50aW1lXDsuLlxsbGludFw7Li5caml0
XDsuLlxkaXNhc3NlbWJsZXJcOy4uXGhlYXBcOy4uXGRlYnVnZ2VyXDsuLlxhc3NlbWJsZXJcOy4u
XHByb2ZpbGVyXDsuLlx5YXJyXDsuLlxpbnRlcnByZXRlclw7Li5cYnl0ZWNvZGVcOy4uXGJ1aWx0
aW5zXDsuLlxkZmdcOy4uXGJ5dGVjb21waWxlclw7Li5ccGFyc2VyXDsuLlxBUElcOy4uXGZ0bFw7
Li5cYmluZGluZ3NcOy4uXGluc3BlY3Rvclw7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXEphdmFTY3JpcHRDb3JlXERlcml2ZWRTb3VyY2VzXDskKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVw7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGlu
Y2x1ZGVcSmF2YVNjcmlwdENvcmVcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHBy
aXZhdGVcOyQoV2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZTskKFdlYktpdF9MaWJyYXJpZXMpXGlu
Y2x1ZGVccHJpdmF0ZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPgogICAgICAgPEZvcmNlZEluY2x1ZGVGaWxlcz5JQ1VWZXJzaW9u
Lmg7JShGb3JjZWRJbmNsdWRlRmlsZXMpPC9Gb3JjZWRJbmNsdWRlRmlsZXM+CiAgICAgPC9DbENv
bXBpbGU+CiAgICAgPExpbms+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI3ZTg3
Njc0MGE5NjRiMDI4OTg0ZWQ2NzgxNjE4MjBhNWRjZjc3YzQuLjkxMTU3M2FiMTdkMzM5NzRhYTdj
OWEwMTFkYjIwMGIwOWFmNzhiZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05
MjIsNyArOTIyLDYgQEAKIAkJQTUwM0ZBMTkxODhFMEZCMDAwMTEwRjE0IC8qIEphdmFTY3JpcHRD
YWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTUwM0ZBMTMxODhFMEZBRjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwICov
OyB9OwogCQlBNTAzRkExQTE4OEUwRkIwMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTQx
ODhFMEZBRjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCAqLzsgfTsKIAkJQTUwM0ZB
MUIxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNTE4OEUwRkIwMDAx
MTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLzsgfTsKLQkJQTUwM0ZBMUMxODhF
MEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTYxODhFMEZCMDAwMTEwRjE0IC8q
IEpTSmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQlBNTAzRkExRDE4OEUwRkIwMDAxMTBG
MTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE3MTg4RTBGQjAwMDExMEYxNCAv
KiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwICovOyB9OwogCQlBNTAzRkExRTE4
OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExODE4OEUwRkIw
MDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggKi87IH07CiAJCUE1
MDNGQTIxMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRCcmVha3BvaW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExRjE4OEVGRjY4MDAxMTBG
MTQgLyogU2NyaXB0QnJlYWtwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0xMDI0LDYgKzEwMjMsNyBAQAogCQlBNzBCMDgzMjE3QTBCNzlC
MDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MEIwODMwMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5h
cnlTd2l0Y2guY3BwICovOyB9OwogCQlBNzBCMDgzMzE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmlu
YXJ5U3dpdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNzBCMDgzMTE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmggKi87IH07CiAJ
CUE3MTIzNkU1MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxMjM2RTQxMTk1RjMzQzAw
QkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgKi87IH07CisJCUE3MURBODBGMTg4MERCQUIw
MEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3MURBODBFMTg4MERCQUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lu
bGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlBNzIwMjhCNjE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjAyOEI0MTc5NzYw
MUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwICovOyB9OwogCQlBNzIwMjhCODE3
OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIwMjhCNTE3OTc2MDFFMDA5ODAyOEMgLyog
SlNDVGVzdFJ1bm5lclV0aWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQTcyMDI4QkExNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25Jbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIw
MjhCOTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklubGluZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTE1MCw2ICsxMTUwLDEwIEBA
CiAJCUE3Q0EzQUU4MTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0EzQUUyMTdEQTQxQUUwMDY1MzhB
RiAvKiBKU1dlYWtNYXAuaCAqLzsgfTsKIAkJQTdDQTNBRUIxN0RBNTE2ODAwNjUzOEFGIC8qIFdl
YWtNYXBEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3Q0EzQUU5MTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5jcHAgKi87IH07CiAJ
CUE3Q0EzQUVDMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDQTNBRUExN0RBNTE2ODAwNjUzOEFG
IC8qIFdlYWtNYXBEYXRhLmggKi87IH07CisJCUE3RDgwMUE0MTg4MEQ2NkUwMDI2QzM5QiAvKiBC
dWlsdGluRXhlY3V0YWJsZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTdEODAxQTExODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxl
cy5jcHAgKi87IH07CisJCUE3RDgwMUE1MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0
YWJsZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBN0Q4MDFBODE4ODBENkE4
MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTYxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5z
LmNwcCAqLzsgfTsKKwkJQTdEODAxQTkxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4MDFBNzE4
ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBN0Q4OUNGMjE3QTBCOENDMDA3NzNBRDggLyogREZH
QmFzaWNCbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBN0Q4OUNFMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgKi87IH07
CiAJCUE3RDg5Q0YzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4OUNFNDE3
QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwICovOyB9OwogCQlBN0Q4
OUNGNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDg5Q0U1MTdBMEI4Q0MwMDc3
M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNDYyLDYgKzI0NjYsOCBAQAogCQlBNzEyMzZFNDEx
OTVGMzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpJVE9wY29kZXMzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE3MThGNjFBMTE3NTRBMjEwMDI0NjVBNyAvKiBSZWdFeHBKaXRUYWJsZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwSml0VGFibGVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MThGODIxMTE3OEVCNEIwMDI0NjVBNyAvKiBj
cmVhdGVfcmVnZXhfdGFibGVzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0
RmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBj
cmVhdGVfcmVnZXhfdGFibGVzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzFEQTgw
RDE4ODBENzFGMDBEMUYyOTkgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnNjcmlwdC5weXRob247IHBhdGggPSAiZ2VuZXJhdGUtanMtYnVpbHRpbnMiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBNzFEQTgwRTE4ODBEQkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJ
bmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nSW5saW5l
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzIwMjhCNDE3OTc2MDFFMDA5ODAy
OEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE3MjAyOEI1MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDVGVzdFJ1bm5lclV0aWxzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI5MTc5NzYwM0QwMDk4MDI4QyAvKiBK
U0Z1bmN0aW9uSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Z1
bmN0aW9uSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU5MCw2ICsy
NTk2LDExIEBACiAJCUE3Q0EzQUUyMTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWFrTWFwLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE3Q0EzQUU5MTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrTWFwRGF0YS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Q0EzQUVBMTdEQTUxNjgwMDY1MzhBRiAv
KiBXZWFrTWFwRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrTWFw
RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFBMDE4ODBENjZFMDAy
NkMzOUIgLyogQXJyYXkucHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2Ny
aXB0OyBwYXRoID0gQXJyYXkucHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBN0Q4MDFBMTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ1aWx0aW5FeGVjdXRhYmxlcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5
QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQnVpbHRpbkV4ZWN1dGFibGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3
RDgwMUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NCdWlsdGlucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE3RDgwMUE3MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NCdWlsdGlucy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBN0Q4OUNFMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNC
bG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdCYXNpY0Js
b2NrLmNwcDsgcGF0aCA9IGRmZy9ERkdCYXNpY0Jsb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTdEODlDRTQxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9u
U2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Jsb2NrSW5z
ZXJ0aW9uU2V0LmNwcDsgcGF0aCA9IGRmZy9ERkdCbG9ja0luc2VydGlvblNldC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RDg5Q0U1MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdC
bG9ja0luc2VydGlvblNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdC
bG9ja0luc2VydGlvblNldC5oOyBwYXRoID0gZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTI2LDYgKzI5MzcsNyBAQAogCQkJCTg2MDRG
NEYyMTQzQTZDNDQwMEIyOTVGNSAvKiBDaGFuZ2VMb2cgKi8sCiAJCQkJRjY5MkE4NTQwMjU1NTk3
RDAxRkY2MEY3IC8qIGNyZWF0ZV9oYXNoX3RhYmxlICovLAogCQkJCUE3MThGODIxMTE3OEVCNEIw
MDI0NjVBNyAvKiBjcmVhdGVfcmVnZXhfdGFibGVzICovLAorCQkJCUE3MURBODBEMTg4MEQ3MUYw
MEQxRjI5OSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAqLywKIAkJCQk0NUUxMkQ4ODA2QTQ5QjBG
MDBFOURGODQgLyoganNjLmNwcCAqLywKIAkJCQlGNjhFQkI4QzAyNTVENEM2MDFGRjYwRjcgLyog
Y29uZmlnLmggKi8sCiAJCQkJRjVDMjkwRTYwMjg0Rjk4RTAxODYzNUNBIC8qIEphdmFTY3JpcHRD
b3JlUHJlZml4LmggKi8sCkBAIC0yOTM0LDYgKzI5NDYsNyBAQAogCQkJCTE0MzJFQkQ3MEEzNENB
RDQwMDcxN0I5RiAvKiBBUEkgKi8sCiAJCQkJOTY4OENCMTIwRUQxMkI0RTAwMUQ2NDlGIC8qIGFz
c2VtYmxlciAqLywKIAkJCQlBNTRDRjJFQTE4NEVBNzM5MDAyMzdGMTkgLyogYmluZGluZ3MgKi8s
CisJCQkJQTdEODAxOUYxODgwRDY2RTAwMjZDMzlCIC8qIGJ1aWx0aW5zICovLAogCQkJCTk2OUEw
NzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLywKIAkJCQk3RTM5RDgxRDBFQzM4RUZB
MDAzQUYxMUEgLyogYnl0ZWNvbXBpbGVyICovLAogCQkJCTFDOTA1MTNFMEJBOUU4ODMwMDgxRTlE
MCAvKiBDb25maWd1cmF0aW9ucyAqLywKQEAgLTM1MDksNiArMzUyMiw4IEBACiAJCTY1MEZERjhE
MDlEMEZDQTcwMDc2OUU1NCAvKiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUE3RDgwMUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBK
U0NCdWlsdGlucy5jcHAgKi8sCisJCQkJQTdEODAxQTcxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1
aWx0aW5zLmggKi8sCiAJCQkJQkMxOEM1MjMwRTE2RkM4QTAwQjM0NDYwIC8qIEFycmF5UHJvdG90
eXBlLmx1dC5oICovLAogCQkJCUJDRDIwM0U3MEUxNzE4RjQwMDJDN0U4MiAvKiBEYXRlUHJvdG90
eXBlLmx1dC5oICovLAogCQkJCUE1MTNFNUM2MTg1Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNj
cmlwdFNvdXJjZS5oICovLApAQCAtMzgxMSw2ICszODI2LDcgQEAKIAkJCQlBNzkwREQ2QTE4MkY0
OTk3MDA1ODg4MDcgLyogSlNTZXRJdGVyYXRvci5oICovLAogCQkJCUJDMDJFOUI2MEUxODQyRkEw
MDBGOTI5NyAvKiBKU1N0cmluZy5jcHAgKi8sCiAJCQkJRjY5MkE4NjIwMjU1NTk3RDAxRkY2MEY3
IC8qIEpTU3RyaW5nLmggKi8sCisJCQkJQTcxREE4MEUxODgwREJBQjAwRDFGMjk5IC8qIEpTU3Ry
aW5nSW5saW5lcy5oICovLAogCQkJCTg2RTg1NTM4MTExQjk5NjgwMDFBRjUxRSAvKiBKU1N0cmlu
Z0J1aWxkZXIuaCAqLywKIAkJCQkyNjAwQjVBNDE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdK
b2luZXIuY3BwICovLAogCQkJCTI2MDBCNUE1MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pv
aW5lci5oICovLApAQCAtNDU2MSw2ICs0NTc3LDE2IEBACiAJCQlwYXRoID0gcmVtb3RlOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQTdEODAxOUYxODgwRDY2RTAwMjZDMzlC
IC8qIGJ1aWx0aW5zICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQlBN0Q4MDFBMDE4ODBENjZFMDAyNkMzOUIgLyogQXJyYXkucHJvdG90eXBlLmpzICovLAor
CQkJCUE3RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwICov
LAorCQkJCUE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCAq
LywKKwkJCSk7CisJCQlwYXRoID0gYnVpbHRpbnM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OworCQl9OwogLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYSGVhZGVy
c0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtNDYwNiwxMSArNDYzMiwxMSBAQAogCQkJCTg2QURE
MTQ1MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTVDRUVFMTUxODdGM0JBRDAwRTU1Qzk5IC8qIEluc3BlY3RvckFnZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2NUMwMjg1RDE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmggaW4g
SGVhZGVycyAqLywKLSAJCQkJMkE2ODI5NUIxODc1RjgwNTAwQjZDM0UyIC8qIENvcHlXcml0ZUJh
cnJpZXIuaCBpbiBIZWFkZXJzICovLAotICAgICAgICAgICAgICAgIDJBNEVDOTBDMTg2MEQ2QzIw
MDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTJBNjgy
OTVCMTg3NUY4MDUwMEI2QzNFMiAvKiBDb3B5V3JpdGVCYXJyaWVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQkyQTRFQzkwQzE4NjBENkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRTU5MzJBODE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3Bl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTMyNDM5MzE4NTY5NzA5MDAyRUQ2OTIgLyogQ29kZUdl
bmVyYXRvckluc3BlY3RvclN0cmluZ3MucHkgaW4gSGVhZGVycyAqLywKLSAJCQkJQTUzMjQzOTIx
ODU2OTcwOTAwMkVENjkyIC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkgaW4gSGVhZGVycyAq
LywKKwkJCQlBNTMyNDM5MjE4NTY5NzA5MDAyRUQ2OTIgLyogQ29kZUdlbmVyYXRvckluc3BlY3Rv
ci5weSBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTRGMTdFRTI3NDkwMEFCQjIxNyAvKiBUZW1w
UmVnaXN0ZXJTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MEU0QjY0MTg4MDlERDUwMDY4QTQ2
RCAvKiBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVC
NThDMTUxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC00NjIyLDcgKzQ2NDgsNyBAQAogCQkJCTBGODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAv
KiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUyOTE4
N0NBNUU2MDA4NDNCMTAgLyogaW5saW5lLWFuZC1taW5pZnktc3R5bGVzaGVldHMtYW5kLXNjcmlw
dHMucHkgaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUyQjE4N0NBNzVCMDA4NDNCMTAgLyoganNt
aW4ucHkgaW4gSGVhZGVycyAqLywKLSAJCQkJQTUzMjQzOTgxODU2QTQ4OTAwMkVENjkyIC8qIElu
c3BlY3RvckpTLmpzb24gaW4gSGVhZGVycyAqLywKKwkJCQlBNTMyNDM5ODE4NTZBNDg5MDAyRUQ2
OTIgLyogSW5zcGVjdG9ySlMuanNvbiBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwRTJBMTg3Q0E3
NTkwMDg0M0IxMCAvKiB4eGQucGwgaW4gSGVhZGVycyAqLywKIAkJCQlGRUEwODYyMDE4MkI3QTA0
MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzUxN0FE
QjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTQ3MzMsNyAr
NDc1OSw3IEBACiAJCQkJQTFBMDA5QzAxODMxQTIyRDAwQ0Y4NzExIC8qIE1hY3JvQXNzZW1ibGVy
QVJNNjQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUM5REM1MTMyOERGODIwMDJCMkFENyAvKiBE
RkdCeXRlQ29kZVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0ODUzMjgxODdERkRFQzAw
ODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5LmggaW4gSGVhZGVycyAqLywKLSAgICAgICAg
ICAgICAgICBBNTkzQ0Y4NzE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3Ry
eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU5M0NGODcxODQwMzhDQTAwQkZDRTI3IC8qIEluc3Bl
Y3RvckFnZW50UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjU2QzM2MTYyN0IwQUQw
MDdGMjc4MyAvKiBERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY3QjI5NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERGR0NhcGFiaWxpdGll
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NTgxNEVGOTBBMjAwQzcyNTMyIC8qIERGR0NG
QVBoYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTQ4NzIsNiArNDg5OCw3IEBACiAJCQkJMEZFQTBB
MUQxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZFQTBBMUYxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnku
aCBpbiBIZWFkZXJzICovLAogCQkJCUE1OTQ1NTkzMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2Jh
bE9iamVjdERlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3RDgwMUE5MTg4MEQ2QTgw
MDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMEExNzA1
MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0
ODUzMkExODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292ZXJ5T3Bjb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkVBMEEyMzE3MDk2MDY5MDBCQjcyMkMgLyogRlRMQ29tbW9uVmFsdWVzLmggaW4g
SGVhZGVycyAqLywKQEAgLTQ5NDYsNiArNDk3Myw3IEBACiAJCQkJQkMxOEM0MEYwRTE2RjVDRDAw
QjM0NDYwIC8qIElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyNUY4QkNFMTU3NTQ0
QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
QjdGMzk5MTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ0hlYWRlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTdEODAxQTUxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOUExNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nSGVh
ZGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOUIxNUVEOEU0NjAwRjE2N0Iy
IC8qIEluZGV4aW5nVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDRUZBQjAxODA1Q0E2RDAw
NDcyQ0U0IC8qIEluaXRpYWxpemVMTFZNLmggaW4gSGVhZGVycyAqLywKQEAgLTUyMTgsNiArNTI0
Niw3IEBACiAJCQkJQTUzMjQzODgxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckpTQmFja2Vu
ZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1NjBFMTZGNUNEMDBCMzQ0
NjAgLyogUHJvdGVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3NEMzM0IxNkFBMkQ5NTAwNjJG
MDFEIC8qIFByb3RvdHlwZU1hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTcxREE4MEYxODgwREJB
QjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMy
QTQxNENBN0REOTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTdDMDA4Q0U3MTg3NjMxQjYwMDk1NUMyNCAvKiBNaWNyb3Rhc2suaCBpbiBI
ZWFkZXJzICovLApAQCAtNTgzNiw2ICs1ODY1LDcgQEAKIAkJCQlBN0Q4OUNGMjE3QTBCOENDMDA3
NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzBCMDgzMjE3
QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE3RDg5Q0YzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlBN0Q4MDFBNDE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUM5REM0MTMyOERGODIwMDJCMkFENyAv
KiBERkdCeXRlQ29kZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4MkUyMTE0MTcy
Q0UzMDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RkZDOTU3MTRFRjkwQTAwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTU4NTIsNiArNTg4Miw3IEBACiAJCQkJMEZGRkM5NTkxNEVGOTBBNjAwQzcyNTMyIC8qIERG
R0NTRVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkZDNzcyMTZFMTJGNzEwMDM4RDk3
NiAvKiBERkdEQ0VQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhGMkI5OTE3MkYwNEZG
MDA3REJEQTUgLyogREZHRGVzaXJlZElkZW50aWZpZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUE3RDgwMUE4MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBNzNFMTMzMDE3OTYyNENEMDBFNERFQTggLyogREZHRGVzaXJlZFN0cnVjdHVyZUNo
YWlucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkMwRjdDRDE3QkJGQzVCMDA0NjRGRTQgLyog
REZHRGVzaXJlZFRyYW5zaXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRTg1MzRCMTcy
M0NEQTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC01OTc2LDcgKzYwMDcsNyBAQAogCQkJCTBGNkIxQ0M1MTg2MkM0NzgwMDg0NUQ5NyAvKiBG
VExVbndpbmRJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOUQzMzlBMTgwM0FEQjcwMDcz
QzJCQyAvKiBGVExTdGFja01hcHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMTYxNzA2
QkI5MDAwQkI3MjJDIC8qIEZUTFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAotIAkJCQk3QzAwOENE
MjE4NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9taXNlRnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTdDMDA4Q0QyMTg2RjhBOTMwMDk1NUMyNCAvKiBKU1Byb21pc2VGdW5jdGlvbnMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2QjFDQjUxODVGQzlFOTAwODQ1RDk3IC8qIEZUTEpTQ2Fs
bC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJFMTE3MTc4RTFDMDA2OTBDN0YgLyogRlRM
VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1OTNDRjdDMTg0MDM2MDMwMEJGQ0UyNyAv
KiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNlYjQyZjVjYzQzM2YxNjM2MzQzYmZjOTgyYWEyYWFmYjMzNmU5NDkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpz
CkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitmdW5jdGlvbiBldmVyeShjYWxsYmFjayAvKiwgdGhpc0FyZyAqLykgeworICAgICJ1
c2Ugc3RyaWN0IjsKKyAgICBpZiAodGhpcyA9PT0gbnVsbCkKKyAgICAgICAgdGhyb3cgbmV3IEBU
eXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3Qg
YmUgbnVsbCIpOworICAgIAorICAgIGlmICh0aGlzID09PSB1bmRlZmluZWQpCisgICAgICAgIHRo
cm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8
dGhpc3wgbm90IGJlIHVuZGVmaW5lZCIpOworICAgIAorICAgIHZhciBhcnJheSA9IEBPYmplY3Qo
dGhpcyk7CisgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCA+Pj4gMDsKKyAgICAKKyAgICBp
ZiAodHlwZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKQorICAgICAgICB0aHJvdyBuZXcgQFR5
cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlv
biIpOworCisgICAgdmFyIHRoaXNBcmcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50
c1sxXSA6IHVuZGVmaW5lZDsKKyAgICAKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsg
aSsrKSB7CisgICAgICAgIGlmICghKGkgaW4gYXJyYXkpKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIGlmICghY2FsbGJhY2suQGNhbGwodGhpc0FyZywgYXJyYXlbaV0sIGksIGFycmF5
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5FeGVjdXRhYmxlcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQxZGJiNWY5MjI1ZTI4YTEyZWQzZDE3OThm
ZjE3NjhlNDM2NzFhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKworI2luY2x1ZGUgIkV4ZWN1dGFi
bGUuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklu
bGluZXMuaCIKKyNpbmNsdWRlICJQYXJzZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0J1aWx0
aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKFZNJiB2bSkKKyAgICA6IG1fdm0odm0p
CisjZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlv
bk5hbWUsIGxlbmd0aCkgLCBtXyMjbmFtZSMjU291cmNlKG1ha2VTb3VyY2UoU3RyaW5nSW1wbDo6
Y3JlYXRlRnJvbUxpdGVyYWwoc18jI25hbWUsIGxlbmd0aCksIFN0cmluZ0ltcGw6OmNyZWF0ZUZy
b21MaXRlcmFsKCI8YnVpbHRpbj4iKSkpCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTihJTklUSUFM
SVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgRVhQT1NFX0JVSUxUSU5fU1RSSU5H
UworeworfQorCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVz
OjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGNvbnN0
IElkZW50aWZpZXImIG5hbWUpCit7CisgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVM
YXN0TmV3bGluZTsKKyAgICBQYXJzZXJFcnJvciBlcnJvcjsKKyAgICBSZWZQdHI8UHJvZ3JhbU5v
ZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oJm1fdm0sIHNvdXJjZSwgMCwgSWRlbnRp
ZmllcigpLCBKU1BhcnNlQnVpbHRpbiwgSlNQYXJzZVByb2dyYW1Db2RlLCBlcnJvciwgJnBvc2l0
aW9uQmVmb3JlTGFzdE5ld2xpbmUpOworCisgICAgaWYgKCFwcm9ncmFtKSB7CisgICAgICAgIGRh
dGFMb2coIkZhdGFsIGVycm9yIGNvbXBpbGluZyBidWlsdGluIGZ1bmN0aW9uICciLCBuYW1lLnN0
cmluZygpLCAiJzogIiwgZXJyb3IubV9tZXNzYWdlKTsKKyAgICAgICAgQ1JBU0goKTsKKyAgICB9
CisKKyAgICBTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVtZW50ID0gcHJvZ3JhbS0+c2luZ2xlU3Rh
dGVtZW50KCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudCk7CisgICAgUkVMRUFT
RV9BU1NFUlQoZXhwclN0YXRlbWVudC0+aXNFeHByU3RhdGVtZW50KCkpOworICAgIEV4cHJlc3Np
b25Ob2RlKiBmdW5jRXhwciA9IHN0YXRpY19jYXN0PEV4cHJTdGF0ZW1lbnROb2RlKj4oZXhwclN0
YXRlbWVudCktPmV4cHIoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwcik7CisgICAgUkVM
RUFTRV9BU1NFUlQoZnVuY0V4cHItPmlzRnVuY0V4cHJOb2RlKCkpOworICAgIEZ1bmN0aW9uQm9k
eU5vZGUqIGJvZHkgPSBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihmdW5jRXhwciktPmJvZHko
KTsKKyAgICBSRUxFQVNFX0FTU0VSVCghcHJvZ3JhbS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7
CisgICAgCisgICAgYm9keS0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGlu
ZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keS0+
aWRlbnQoKS5pc051bGwoKSk7CisgICAgCisgICAgLy8gVGhpcyBmdW5jdGlvbiBhc3N1bWVzIGFu
IGlucHV0IHN0cmluZyB0aGF0IHdvdWxkIHJlc3VsdCBpbiBhIHNpbmdsZSBhbm9ueW1vdXMgZnVu
Y3Rpb24gZXhwcmVzc2lvbi4KKyAgICBib2R5LT5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9y
ZUxhc3ROZXdsaW5lKTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5KTsKKyAgICBmb3IgKGNvbnN0
IGF1dG8mIGNsb3NlZFZhcmlhYmxlIDogcHJvZ3JhbS0+Y2xvc2VkVmFyaWFibGVzKCkpIHsKKyAg
ICAgICAgaWYgKGNsb3NlZFZhcmlhYmxlID09IG1fdm0ucHJvcGVydHlOYW1lcy0+YXJndW1lbnRz
LmltcGwoKSkKKyAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBpZiAoY2xvc2Vk
VmFyaWFibGUgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLmltcGwoKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBSRUxFQVNFX0FTU0VSVChjbG9zZWRWYXJp
YWJsZS0+aXNFbXB0eVVuaXF1ZSgpKTsKKyAgICB9CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
cmVhdGUoJm1fdm0sIHNvdXJjZSwgYm9keSwgdHJ1ZSwgVW5saW5rZWRCdWlsdGluRnVuY3Rpb24p
OworICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+bV9uYW1lVmFsdWUuc2V0KG1fdm0sIGZ1bmN0aW9u
RXhlY3V0YWJsZSwganNTdHJpbmcoJm1fdm0sIG5hbWUuc3RyaW5nKCkpKTsKKyAgICByZXR1cm4g
ZnVuY3Rpb25FeGVjdXRhYmxlOworfQorCisjZGVmaW5lIERFRklORV9CVUlMVElOX0VYRUNVVEFC
TEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpuYW1lIyNFeGVjdXRhYmxlKCkgXAore1wKKyAgICBp
ZiAoIW1fIyNuYW1lIyNFeGVjdXRhYmxlKVwKKyAgICAgICAgbV8jI25hbWUjI0V4ZWN1dGFibGUg
PSBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShtXyMjbmFtZSMjU291cmNlLCBtX3ZtLnByb3BlcnR5
TmFtZXMtPmZ1bmN0aW9uTmFtZSk7XAorICAgIHJldHVybiBtXyMjbmFtZSMjRXhlY3V0YWJsZS5n
ZXQoKTtcCit9CitKU0NfRk9SRUFDSF9CVUlMVElOKERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVT
KQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX1NPVVJDRVMKKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5
YTE5ZTI2MTUwNzk0YTY2OWVjOThlMzk5YmY2N2Y3ZjcxMDY0MTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKQEAg
LTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgQnVpbHRpbkV4ZWN1dGFibGVzX2gKKyNkZWZpbmUgQnVpbHRpbkV4ZWN1dGFi
bGVzX2gKKworI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisjaW5jbHVkZSAiU291cmNlQ29kZS5o
IgorI2luY2x1ZGUgIldlYWsuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7CitjbGFzcyBJ
ZGVudGlmaWVyOworY2xhc3MgVk07CisKK2NsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlcyB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8QnVpbHRpbkV4ZWN1dGFibGVzPiBjcmVhdGUoVk0m
IHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBCdWlsdGluRXhlY3V0YWJs
ZXModm0pKTsKKyAgICB9CisgICAgCisjZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVT
KG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCitjb25zdCBTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2Uo
KSB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CisgICAgCisgICAgSlNDX0ZPUkVBQ0hfQlVJ
TFRJTihFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJTl9T
T1VSQ0VTCisgICAgCitwcml2YXRlOgorICAgIEJ1aWx0aW5FeGVjdXRhYmxlcyhWTSYpOworICAg
IFZNJiBtX3ZtOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVCdWlsdGlu
RXhlY3V0YWJsZShjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYpOworI2RlZmlu
ZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5n
dGgpXAorICAgIFNvdXJjZUNvZGUgbV8jI25hbWUjI1NvdXJjZTsgXAorICAgIFdlYWs8VW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU+IG1fIyNuYW1lIyNFeGVjdXRhYmxlOworICAgIEpTQ19GT1JF
QUNIX0JVSUxUSU4oREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIERFQ0xB
UkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMjYzZWM3Y2FkZjRmNzlj
YTgxMDI0NDFlNjJiZjJhMDViNWRkYzNmMi4uNzUxNTA2NTQyMzc2ZDdlZGM1OTlhYTAwZjliMTI2
ODVjZGEzNTJjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKQEAgLTQzLDExICs0MywxMyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJ
VFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1
ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50
LmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk5hdGl2ZUVy
cm9yQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmgiCiAj
aW5jbHVkZSAiUmVkdWNlV2hpdGVzcGFjZS5oIgpAQCAtMTU2OSw3ICsxNTcxLDcgQEAgQ29kZUJs
b2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtl
ZENvZGVCbG9jayogdW5saW4KIAogICAgIHNldENvbnN0YW50UmVnaXN0ZXJzKHVubGlua2VkQ29k
ZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVycygpKTsKICAgICBpZiAodW5saW5rZWRDb2RlQmxvY2st
PnVzZXNHbG9iYWxPYmplY3QoKSkKLSAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1t1bmxpbmtl
ZENvZGVCbG9jay0+Z2xvYmFsT2JqZWN0UmVnaXN0ZXIoKS5vZmZzZXQoKV0uc2V0KCptX3ZtLCBv
d25lckV4ZWN1dGFibGUsIG1fZ2xvYmFsT2JqZWN0LmdldCgpKTsKKyAgICAgICAgbV9jb25zdGFu
dFJlZ2lzdGVyc1t1bmxpbmtlZENvZGVCbG9jay0+Z2xvYmFsT2JqZWN0UmVnaXN0ZXIoKS50b0Nv
bnN0YW50SW5kZXgoKV0uc2V0KCptX3ZtLCBvd25lckV4ZWN1dGFibGUsIG1fZ2xvYmFsT2JqZWN0
LmdldCgpKTsKICAgICBtX2Z1bmN0aW9uRGVjbHMucmVzaXplVG9GaXQodW5saW5rZWRDb2RlQmxv
Y2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpKTsKICAgICBmb3IgKHNpemVfdCBjb3VudCA9IHVu
bGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSwgaSA9IDA7IGkgPCBjb3Vu
dDsgKytpKSB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4
ZWN1dGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDY4YmMwMzc5ZjU3NDRjOWE4
Zjc0MzFkYjY0ZjhhYjU0ZTZlMTA1M2YuLjQ5OTVjNTJjZjhiMmIxYjRkNjI4MDQ1M2VlZDI3Yzc3
NGE0OTU1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
QEAgLTU2LDcgKzU2LDYgQEAKICNpbmNsdWRlICJIYW5kbGVySW5mby5oIgogI2luY2x1ZGUgIk9i
amVjdEFsbG9jYXRpb25Qcm9maWxlLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgotI2luY2x1ZGUg
Ik9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQdXRQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJJ
bnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDFkZmI1YWM2
YWQ5MDkzZjhmODExMDFlZjdmMmU2MTIzMTFhYzE5MzkuLjQzMzkwZDk2NWZjNTAzNDAxNmY3YmZm
ZjIzZTY4YmIxZTA1NDU1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNDksOSArNDksOSBAQCBjb25zdCBDbGFz
c0luZm8gVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZFByb2dy
YW1Db2RlQmxvY2siLAogY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkRXZhbENvZGVCbG9jazo6c19p
bmZvID0geyAiVW5saW5rZWRFdmFsQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JF
QVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZEV2YWxDb2RlQmxvY2spIH07CiBjb25zdCBDbGFzc0lu
Zm8gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jayIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jaykgfTsKIAotc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2sqIGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIGtpbmQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVy
TW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikKK3N0YXRpYyBVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKFZNJiB2bSwgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2Rl
LCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBmdW5jdGlv
bktpbmQsIFBhcnNlckVycm9yJiBlcnJvcikKIHsKLSAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9k
ZT4gYm9keSA9IHBhcnNlPEZ1bmN0aW9uQm9keU5vZGU+KCZ2bSwgc291cmNlLCBleGVjdXRhYmxl
LT5wYXJhbWV0ZXJzKCksIGV4ZWN1dGFibGUtPm5hbWUoKSwgZXhlY3V0YWJsZS0+aXNJblN0cmlj
dENvbnRleHQoKSA/IEpTUGFyc2VTdHJpY3QgOiBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlRnVuY3Rp
b25Db2RlLCBlcnJvcik7CisgICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGJvZHkgPSBwYXJz
ZTxGdW5jdGlvbkJvZHlOb2RlPigmdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+cGFyYW1ldGVycygp
LCBleGVjdXRhYmxlLT5uYW1lKCksIGV4ZWN1dGFibGUtPnRvU3RyaWN0bmVzcygpLCBKU1BhcnNl
RnVuY3Rpb25Db2RlLCBlcnJvcik7CiAKICAgICBpZiAoIWJvZHkpIHsKICAgICAgICAgQVNTRVJU
KGVycm9yLm1fdHlwZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKQEAgLTYzLDcgKzYzLDcg
QEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlRnVuY3Rpb25Db2Rl
QmxvY2soVk0mIHZtLCBVbmxpbmtlZEZ1bmMKICAgICBib2R5LT5maW5pc2hQYXJzaW5nKGV4ZWN1
dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT5mdW5j
dGlvbk5hbWVJc0luU2NvcGVUb2dnbGUoKSk7CiAgICAgZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2Uo
Ym9keS0+ZmVhdHVyZXMoKSwgYm9keS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCi0g
ICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5mbyhib2R5LT5u
ZWVkc0FjdGl2YXRpb24oKSwgYm9keS0+dXNlc0V2YWwoKSwgYm9keS0+aXNTdHJpY3RNb2RlKCks
IGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCkpOworICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2sqIHJlc3VsdCA9IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmdm0sIEZ1bmN0
aW9uQ29kZSwgRXhlY3V0YWJsZUluZm8oYm9keS0+bmVlZHNBY3RpdmF0aW9uKCksIGJvZHktPnVz
ZXNFdmFsKCksIGJvZHktPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3Qs
IGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbikpOwogICAgIE93blB0cjxC
eXRlY29kZUdlbmVyYXRvcj4gZ2VuZXJhdG9yKGFkb3B0UHRyKG5ldyBCeXRlY29kZUdlbmVyYXRv
cih2bSwgYm9keS5nZXQoKSwgcmVzdWx0LCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSkpKTsK
ICAgICBlcnJvciA9IGdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKICAgICBib2R5LT5kZXN0cm95RGF0
YSgpOwpAQCAtODIsMTMgKzgyLDE0IEBAIHVuc2lnbmVkIFVubGlua2VkQ29kZUJsb2NrOjphZGRP
ckZpbmRDb25zdGFudChKU1ZhbHVlIHYpCiAgICAgcmV0dXJuIGFkZENvbnN0YW50KHYpOwogfQog
Ci1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUo
Vk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBG
dW5jdGlvbkJvZHlOb2RlKiBub2RlLCBib29sIGlzRnJvbUdsb2JhbENvZGUpCitVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlO
b2RlKiBub2RlLCBib29sIGlzRnJvbUdsb2JhbENvZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtp
bmQpCiAgICAgOiBCYXNlKCp2bSwgc3RydWN0dXJlKQogICAgICwgbV9udW1DYXB0dXJlZFZhcmlh
Ymxlcyhub2RlLT5jYXB0dXJlZFZhcmlhYmxlQ291bnQoKSkKICAgICAsIG1fZm9yY2VVc2VzQXJn
dW1lbnRzKG5vZGUtPnVzZXNBcmd1bWVudHMoKSkKICAgICAsIG1faXNJblN0cmljdENvbnRleHQo
bm9kZS0+aXNTdHJpY3RNb2RlKCkpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKG5vZGUt
Pmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpCiAgICAgLCBtX2lzRnJvbUdsb2JhbENvZGUoaXNGcm9t
R2xvYmFsQ29kZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oa2luZCA9PSBVbmxpbmtlZEJ1
aWx0aW5GdW5jdGlvbikKICAgICAsIG1fbmFtZShub2RlLT5pZGVudCgpKQogICAgICwgbV9pbmZl
cnJlZE5hbWUobm9kZS0+aW5mZXJyZWROYW1lKCkpCiAgICAgLCBtX3BhcmFtZXRlcnMobm9kZS0+
cGFyYW1ldGVycygpKQpAQCAtMTY2LDcgKzE2Nyw3IEBAIFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tGb3IoVk0mIHZtLCBjb25z
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sq
IHJlc3VsdCA9IGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2sodm0sIHRoaXMsIHNvdXJjZSwgc3Bl
Y2lhbGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IpOworICAg
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IGdlbmVyYXRlRnVuY3Rpb25Db2Rl
QmxvY2sodm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lhbGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUs
IHByb2ZpbGVyTW9kZSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0
aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgZXJyb3IpOwogICAgIAogICAgIGlmIChlcnJv
ci5tX3R5cGUgIT0gUGFyc2VyRXJyb3I6OkVycm9yTm9uZSkKICAgICAgICAgcmV0dXJuIDA7CkBA
IC0yMTAsNiArMjExLDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZN
KiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1faXNTdHJp
Y3RNb2RlKGluZm8ubV9pc1N0cmljdE1vZGUpCiAgICAgLCBtX2lzQ29uc3RydWN0b3IoaW5mby5t
X2lzQ29uc3RydWN0b3IpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGZhbHNlKQorICAg
ICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpbmZvLm1faXNCdWlsdGluRnVuY3Rpb24pCiAgICAgLCBt
X2ZpcnN0TGluZSgwKQogICAgICwgbV9saW5lQ291bnQoMCkKICAgICAsIG1fZW5kQ29sdW1uKFVJ
TlRfTUFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suaAppbmRleCBiOWRhZTJkNWM2OWM3OWNlYWFhODAyM2QyYTNhMWYyNmQ0NjA5NDNi
Li5hYmY2Y2YzNWI5MzA2YTRmN2EzMDFhYjBkZjc2NjZlYzYxMmUzNzljIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtNjYs
MjYgKzY2LDM1IEBAIHR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZTsKIHR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRMTEludENhbGxMaW5rSW5mbzsKIAogc3Ry
dWN0IEV4ZWN1dGFibGVJbmZvIHsKLSAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZh
dGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3Rv
cikKKyAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZh
bCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5G
dW5jdGlvbikKICAgICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2YXRpb24pCiAg
ICAgICAgICwgbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3RyaWN0TW9kZShp
c1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3RydWN0b3IpCisg
ICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikKICAgICB7CiAg
ICAgfQotICAgIGJvb2wgbV9uZWVkc0FjdGl2YXRpb247Ci0gICAgYm9vbCBtX3VzZXNFdmFsOwot
ICAgIGJvb2wgbV9pc1N0cmljdE1vZGU7Ci0gICAgYm9vbCBtX2lzQ29uc3RydWN0b3I7CisgICAg
Ym9vbCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CisgICAgYm9vbCBtX3VzZXNFdmFsIDogMTsKKyAg
ICBib29sIG1faXNTdHJpY3RNb2RlIDogMTsKKyAgICBib29sIG1faXNDb25zdHJ1Y3RvciA6IDE7
CisgICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKK307CisKK2VudW0gVW5saW5rZWRG
dW5jdGlvbktpbmQgeworICAgIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sCisgICAgVW5saW5rZWRC
dWlsdGluRnVuY3Rpb24sCiB9OwogCiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSA6
IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgorICAgIGZyaWVuZCBjbGFzcyBCdWlsdGluRXhlY3V0
YWJsZXM7CiAgICAgZnJpZW5kIGNsYXNzIENvZGVDYWNoZTsKKyAgICBmcmllbmQgY2xhc3MgVk07
CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKLSAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rp
b25Cb2R5Tm9kZSogbm9kZSwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlID0gZmFsc2UpCisgICAgc3Rh
dGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9tR2xvYmFs
Q29kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQpCiAgICAgewot
ICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhlYXApKSBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIG5vZGUsIGlzRnJvbUdsb2JhbENvZGUpOworICAg
ICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhlYXApKSBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
U3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIG5vZGUsIGlzRnJvbUdsb2JhbENvZGUsIHVubGlua2Vk
RnVuY3Rpb25LaW5kKTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2bSk7CiAg
ICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CkBAIC05OSw2ICsxMDgsMTQgQEAgcHVibGlj
OgogICAgIH0KICAgICBzaXplX3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdDsKICAgICBib29sIGlz
SW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQor
ICAgIEpTUGFyc2VyU3RyaWN0bmVzcyB0b1N0cmljdG5lc3MoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgaWYgKG1faXNCdWlsdGluRnVuY3Rpb24pCisgICAgICAgICAgICByZXR1cm4gSlNQYXJzZUJ1
aWx0aW47CisgICAgICAgIGlmIChtX2lzSW5TdHJpY3RDb250ZXh0KQorICAgICAgICAgICAgcmV0
dXJuIEpTUGFyc2VTdHJpY3Q7CisgICAgICAgIHJldHVybiBKU1BhcnNlTm9ybWFsOworICAgIH0K
ICAgICBGdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGUgZnVuY3Rpb25OYW1lSXNJblNjb3BlVG9n
Z2xlKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGU7IH0KIAog
ICAgIHVuc2lnbmVkIGZpcnN0TGluZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RMaW5l
T2Zmc2V0OyB9CkBAIC0xNDIsOCArMTU5LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBoYXNJbW1vcnRhbFN0cnVjdHVyZSA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJv
eShKU0NlbGwqKTsKIAorICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisKIHByaXZhdGU6Ci0gICAgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25C
b2R5Tm9kZSosIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25Cb2R5
Tm9kZSosIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQpOwogICAg
IFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX2NvZGVCbG9ja0ZvckNh
bGw7CiAgICAgV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fY29kZUJs
b2NrRm9yQ29uc3RydWN0OwogCkBAIC0xNTIsNiArMTcxLDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG1faXNJblN0cmljdENvbnRleHQgOiAxOwogICAgIGJvb2wgbV9oYXNDYXB0dXJlZFZhcmlhYmxl
cyA6IDE7CiAgICAgYm9vbCBtX2lzRnJvbUdsb2JhbENvZGUgOiAxOworICAgIGJvb2wgbV9pc0J1
aWx0aW5GdW5jdGlvbiA6IDE7CiAKICAgICBJZGVudGlmaWVyIG1fbmFtZTsKICAgICBJZGVudGlm
aWVyIG1faW5mZXJyZWROYW1lOwpAQCAtMzE5LDYgKzMzOSw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldElzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbihib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlv
bikgeyBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbiA9IGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlv
bjsgfQogICAgIGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb247IH0KIAorICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisgICAgCiAgICAgdm9p
ZCBzaHJpbmtUb0ZpdCgpCiAgICAgewogICAgICAgICBtX2p1bXBUYXJnZXRzLnNocmlua1RvRml0
KCk7CkBAIC01MDAsNiArNTIyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNTdHJpY3RNb2Rl
IDogMTsKICAgICBib29sIG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAgYm9vbCBtX2hhc0NhcHR1
cmVkVmFyaWFibGVzIDogMTsKKyAgICBib29sIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogICAg
IHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50OwogICAgIHVu
c2lnbmVkIG1fZW5kQ29sdW1uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2ODEwYWI4MDAyY2U2YmI4
ZDc4ZTdmZjIyMjdmNGM2ZWE3Yjc1OGMyLi5lYzUyMWI1MzA0NjM5MjNlNzRjMDEwZmEyMThlNTll
ZDJhOWEzY2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTc1LDYgKzE3NSw3IEBAIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFt
Tm9kZSwgVW5saW5rZWRQCiAjZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAg
ICAgLCBtX2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlv
bihmYWxzZSkKIHsKICAgICBpZiAobV9zaG91bGRFbWl0RGVidWdIb29rcykKICAgICAgICAgbV9j
b2RlQmxvY2stPnNldE5lZWRzRnVsbFNjb3BlQ2hhaW4odHJ1ZSk7CkBAIC0yMjIsNyArMjIzLDEz
IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9u
Qm9keU5vZGUqIGZ1bmN0aW9uQm9keSwgVW5sCiAjZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlv
bnMoZmFsc2UpCiAgICAgLCBtX2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1
aWx0aW5GdW5jdGlvbihjb2RlQmxvY2stPmlzQnVpbHRpbkZ1bmN0aW9uKCkpCiB7CisgICAgaWYg
KG1faXNCdWlsdGluRnVuY3Rpb24pIHsKKyAgICAgICAgbV9zaG91bGRFbWl0UHJvZmlsZUhvb2tz
ID0gZmFsc2U7CisgICAgICAgIG1fc2hvdWxkRW1pdERlYnVnSG9va3MgPSBmYWxzZTsKKyAgICB9
CisKICAgICBpZiAobV9zaG91bGRFbWl0RGVidWdIb29rcykKICAgICAgICAgbV9jb2RlQmxvY2st
PnNldE5lZWRzRnVsbFNjb3BlQ2hhaW4odHJ1ZSk7CiAKQEAgLTQzOCw2ICs0NDUsNyBAQCBCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5v
ZGUsIFVubGlua2VkRXZhbENvZAogI2VuZGlmCiAgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNl
KQogICAgICwgbV9leHByZXNzaW9uVG9vRGVlcChmYWxzZSkKKyAgICAsIG1faXNCdWlsdGluRnVu
Y3Rpb24oZmFsc2UpCiB7CiAgICAgbV9jb2RlQmxvY2stPnNldE5lZWRzRnVsbFNjb3BlQ2hhaW4o
dHJ1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA0ZTlmMjEzYzliZmE2Y2YxOTRiMWExNGZlOTE5ZTgz
MzM3YWUzNWQ5Li4xNTg0Mjc0Yjc4ZWE2YzBiZDBlZmIwYjk4MjVjODE4YmUwZGJjMDY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCkBAIC00NjEsNyArNDYxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJv
b2wgc2hvdWxkRW1pdERlYnVnSG9va3MoKSB7IHJldHVybiBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tz
OyB9CiAgICAgICAgIAogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKTsgfQotCisgICAgICAgIAorICAgICAgICBib29s
IGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsg
fQorICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTGFiZWw7CiAg
ICAgICAgIApAQCAtNTQzLDcgKzU0NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAg
ICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG1ha2VGdW5jdGlvbihGdW5jdGlvbkJv
ZHlOb2RlKiBib2R5KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIGJvZHkp
OworICAgICAgICAgICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUo
bV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCBib2R5LCBmYWxzZSwgaXNCdWlsdGluRnVuY3Rp
b24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbik7
CiAgICAgICAgIH0KIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SW5pdExhenlSZWdpc3RlcihS
ZWdpc3RlcklEKik7CkBAIC02NzcsNiArNjc5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgYm9vbCBtX3VzZXNFeGNlcHRpb25zOwogICAgICAgICBib29sIG1fZXhwcmVzc2lvblRvb0Rl
ZXA7CisgICAgICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlvbjsKICAgICB9OwogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAK
aW5kZXggMWZmZDRmMzExODgyZDBlZTVjNTUxNGY1YjhiMjU5MzlkOTc1ZTM3OS4uNjJlY2EzNmEx
MGQ3NzA4YTkyOGQ0M2FjMDNmMmZjODYxNWNlY2E3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjYsMTAgKzI2LDEw
IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgotI2luY2x1ZGUg
Ik5vZGVDb25zdHJ1Y3RvcnMuaCIKIAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAj
aW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNp
bmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rp
b24uaCIKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiTGFiZWxTY29wZS5oIgogI2luY2x1ZGUgIkxleGVyLmgiCisjaW5jbHVkZSAiTm9kZUNvbnN0
cnVjdG9ycy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIK
ICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgpAQCAtNTM1LDM2ICs1MzYsMzkgQEAgUmVn
aXN0ZXJJRCogQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLAogICAgIFJlZlB0cjxMYWJlbD4gZW5kID0gZ2VuZXJhdG9yLm5l
d0xhYmVsKCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUobV9iYXNlKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Np
b25EaXZvdCgpLCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2Vu
ZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBtX2lkZW50KTsKKyAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJh
dG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlO
YW1lcygpLmNhbGwpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVy
YXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuY3Rpb24uZ2V0KCkpOwotICAgIGdlbmVyYXRv
ci5lbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKGZ1bmN0aW9uLmdldCgpLCByZWFsQ2FsbC5nZXQo
KSk7CisgICAgYm9vbCBlbWl0Q2FsbENoZWNrID0gIWdlbmVyYXRvci5pc0J1aWx0aW5GdW5jdGlv
bigpOworICAgIGlmIChlbWl0Q2FsbENoZWNrKQorICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJ
Zk5vdEZ1bmN0aW9uQ2FsbChmdW5jdGlvbi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkpOworCiAgICAg
ewogICAgICAgICBpZiAobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+
bV9leHByKSB7CiAgICAgICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBvbGRMaXN0ID0gbV9hcmdz
LT5tX2xpc3ROb2RlOwogICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gbV9hcmdzLT5t
X2xpc3ROb2RlLT5tX25leHQ7Ci0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVt
cERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50
cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIp
OwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFs
RnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3Qo
KSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
SnVtcChlbmQuZ2V0KCkpOwotCiAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBvbGRM
aXN0OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJl
YWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9u
KGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1l
bnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChj
YWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgp
LCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQo
KSwgZGl2b3RFbmQoKSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgp
KTsKICAgICAgICAgfQogICAgIH0KLSAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdl
dCgpKTsKLSAgICB7Ci0gICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0
b3IsIG1fYXJncyk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRo
aXNSZWdpc3RlcigpLCBiYXNlLmdldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJl
dHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxs
QXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIGlmIChl
bWl0Q2FsbENoZWNrKSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOwor
ICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKKyAgICAgICAgewor
ICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdz
KTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdp
c3RlcigpLCBiYXNlLmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1
cm5WYWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFy
Z3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgfQor
ICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAgfQotICAgIGdlbmVy
YXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWUuZ2V0KCk7
CiB9CiAKQEAgLTU4NSw2NSArNTg5LDY3IEBAIFJlZ2lzdGVySUQqIEFwcGx5RnVuY3Rpb25DYWxs
RG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAg
UmVmUHRyPExhYmVsPiBlbmQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwogICAgIGdlbmVyYXRv
ci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Npb25T
dGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5j
dGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRz
dCksIGJhc2UuZ2V0KCksIG1faWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlv
bjsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxE
ZXN0aW5hdGlvbihkc3QsIGZ1bmN0aW9uLmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdEp1bXBJ
Zk5vdEZ1bmN0aW9uQXBwbHkoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKLSAgICB7
Ci0gICAgICAgIGlmIChtYXlCZUNhbGwpIHsKLSAgICAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlz
dE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpIHsKLSAgICAgICAgICAgICAgICBB
cmd1bWVudExpc3ROb2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2RlOwotICAgICAgICAg
ICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCkgewotICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQobV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwci0+aXNTaW1wbGVB
cnJheSgpKTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5vZGUt
Pm1fbmV4dC0+bV9uZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2Rl
ID0gc3RhdGljX2Nhc3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1f
ZXhwciktPnRvQXJndW1lbnRMaXN0KGdlbmVyYXRvci52bSgpLCAwLCAwKTsKLSAgICAgICAgICAg
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0
TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAg
ICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2Fy
Z3MpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50
cy50aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCks
IE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKLSAg
ICAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVy
YXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkp
OwotICAgICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJh
dG9yLCBtX2FyZ3MpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2Fs
bEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rp
b24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gb2xkTGlzdDsKKyAgICBib29sIGVtaXRDYWxsQ2hlY2sg
PSAhZ2VuZXJhdG9yLmlzQnVpbHRpbkZ1bmN0aW9uKCk7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2sp
IHsKKyAgICAgICAgZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRl
bXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygp
LmFwcGx5KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KGZ1
bmN0aW9uLmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7CisgICAgfQorICAgIGlmIChtYXlCZUNhbGwp
IHsKKyAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUt
Pm1fZXhwcikgeworICAgICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogb2xkTGlzdCA9IG1fYXJn
cy0+bV9saXN0Tm9kZTsKKyAgICAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4
dCkgeworICAgICAgICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+
bV9leHByLT5pc1NpbXBsZUFycmF5KCkpOworICAgICAgICAgICAgICAgIEFTU0VSVCghbV9hcmdz
LT5tX2xpc3ROb2RlLT5tX25leHQtPm1fbmV4dCk7CisgICAgICAgICAgICAgICAgbV9hcmdzLT5t
X2xpc3ROb2RlID0gc3RhdGljX2Nhc3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5t
X25leHQtPm1fZXhwciktPnRvQXJndW1lbnRMaXN0KGdlbmVyYXRvci52bSgpLCAwLCAwKTsKKyAg
ICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9y
LmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7Cisg
ICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9h
cmdzKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50
aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtX2FyZ3MtPm1f
bGlzdE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKICAgICAgICAgICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVy
YXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAg
Q2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAgICAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwg
anNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxB
cmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG9sZExpc3QtPm1fZXhwcik7CiAgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0
KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fYXJncy0+bV9s
aXN0Tm9kZSA9IG9sZExpc3Q7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlQo
bV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KTsKLSAgICAg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9maWxlSG9va1JlZ2lzdGVyOwotICAgICAgICAg
ICAgaWYgKGdlbmVyYXRvci5zaG91bGRFbWl0UHJvZmlsZUhvb2tzKCkpCi0gICAgICAgICAgICAg
ICAgcHJvZmlsZUhvb2tSZWdpc3RlciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1v
dmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKLSAgICAgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUo
bV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGFyZ3NSZWdpc3RlcjsKLSAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MgPSBt
X2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKLSAgICAgICAgICAgIGlmIChhcmdzLT5tX2V4cHIt
PmlzUmVzb2x2ZU5vZGUoKSAmJiBnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50cyhzdGF0
aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGFyZ3MtPm1fZXhwciktPmlkZW50aWZpZXIoKSkpCi0gICAg
ICAgICAgICAgICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLnVuY2hlY2tlZFJlZ2lzdGVyRm9y
QXJndW1lbnRzKCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXJnc1JlZ2lz
dGVyID0gZ2VuZXJhdG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7Ci0KLSAgICAgICAgICAgIC8v
IEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseSBpZ25vcmVzIGV4dHJhIGFyZ3VtZW50cywgYnV0IHdl
IHN0aWxsCi0gICAgICAgICAgICAvLyBuZWVkIHRvIGV2YWx1YXRlIHRoZW0gZm9yIHNpZGUgZWZm
ZWN0cy4KLSAgICAgICAgICAgIHdoaWxlICgoYXJncyA9IGFyZ3MtPm1fbmV4dCkpCi0gICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7Ci0KLSAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0Q2FsbFZhcmFyZ3MocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlv
bi5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBhcmdzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKSwgcHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFy
Z3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExv
YWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CisgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5n
ZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICB9Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SnVt
cChlbmQuZ2V0KCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlz
dE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQpOworICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcHJvZmlsZUhvb2tSZWdpc3RlcjsKKyAgICAgICAgaWYgKGdlbmVyYXRvci5zaG91
bGRFbWl0UHJvZmlsZUhvb2tzKCkpCisgICAgICAgICAgICBwcm9maWxlSG9va1JlZ2lzdGVyID0g
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVh
bEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24o
ZHN0KSwgYmFzZS5nZXQoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzUmVnaXN0
ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpOworICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXJnc1JlZ2lzdGVyOworICAgICAgICBBcmd1bWVudExp
c3ROb2RlKiBhcmdzID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQ7CisgICAgICAgIGlmIChh
cmdzLT5tX2V4cHItPmlzUmVzb2x2ZU5vZGUoKSAmJiBnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0Fy
Z3VtZW50cyhzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGFyZ3MtPm1fZXhwciktPmlkZW50aWZp
ZXIoKSkpCisgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IudW5jaGVja2VkUmVn
aXN0ZXJGb3JBcmd1bWVudHMoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXJnc1JlZ2lz
dGVyID0gZ2VuZXJhdG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7CisKKyAgICAgICAgLy8gRnVu
Y3Rpb24ucHJvdG90eXBlLmFwcGx5IGlnbm9yZXMgZXh0cmEgYXJndW1lbnRzLCBidXQgd2Ugc3Rp
bGwKKyAgICAgICAgLy8gbmVlZCB0byBldmFsdWF0ZSB0aGVtIGZvciBzaWRlIGVmZmVjdHMuCisg
ICAgICAgIHdoaWxlICgoYXJncyA9IGFyZ3MtPm1fbmV4dCkpCisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKKworICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxW
YXJhcmdzKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rl
ci5nZXQoKSwgYXJnc1JlZ2lzdGVyLmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHBy
b2ZpbGVIb29rUmVnaXN0ZXIuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOwotICAg
IHsKKyAgICBpZiAoZW1pdENhbGxDaGVjaykgeworICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAo
ZW5kLmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChyZWFsQ2FsbC5nZXQoKSk7
CiAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7
CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBiYXNlLmdldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdl
dCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBk
aXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1p
dExhYmVsKGVuZC5nZXQoKSk7CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdl
dCgpKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9jcmVhdGVfaGFzaF90YWJsZQppbmRleCAzOTc5NzZiMDZjN2E5YjU4MzYzMzI5MDBhNmVi
YjkzZWM2OGI3NDg2Li5jYWQ2NWJjNGNjODg4ZTMxNGY4OGQ2NjVkZDRhNmU2NDVhMDlhMzU1IDEw
MDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlCkBAIC0yODksNyArMjg5LDE3
IEBAIHN1YiBvdXRwdXQoKSB7CiAgICAgICAgICAgICAkaW50cmluc2ljID0gIlJlZ0V4cFRlc3RJ
bnRyaW5zaWMiIGlmICgka2V5IGVxICJ0ZXN0Iik7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAo
JHZhbHVlc1skaV17InR5cGUifSBlcSAiRnVuY3Rpb24iKSAgeworICAgICAgICAgICAgbXkgJHRh
YmxlSGVhZCA9ICRuYW1lOworICAgICAgICAgICAgJHRhYmxlSGVhZCA9fiBzL1RhYmxlJC8vOwor
ICAgICAgICAgICAgcHJpbnQgIiAjaWYgSlNDX0JVSUxUSU5fRVhJU1RTKCIgLiB1YygkdGFibGVI
ZWFkIC4gJGtleSkgLiIpXG4iOworICAgICAgICAgICAgcHJpbnQgIiAgIHsgXCIka2V5XCIsICgo
JGF0dHJzWyRpXSkgJiB+RnVuY3Rpb24pIHwgQnVpbHRpbiwgJGludHJpbnNpYywgKGludHB0cl90
KXN0YXRpY19jYXN0PEJ1aWx0aW5HZW5lcmF0b3I+KCIgLiAkdGFibGVIZWFkIC4gdWNmaXJzdCgk
a2V5KSAuICJDb2RlR2VuZXJhdG9yKSwgKGludHB0cl90KSRzZWNvbmRWYWx1ZSB9LFxuIjsKKyAg
ICAgICAgICAgIHByaW50ICIgI2Vsc2VcbiIKKyAgICAgICAgfQogICAgICAgICBwcmludCAiICAg
eyBcIiRrZXlcIiwgJGF0dHJzWyRpXSwgJGludHJpbnNpYywgKGludHB0cl90KSIgLiAkZmlyc3RD
YXN0U3RyIC4gIigkZmlyc3RWYWx1ZSksIChpbnRwdHJfdCkiIC4gJHNlY29uZENhc3RTdHIgLiAi
KCRzZWNvbmRWYWx1ZSkgfSxcbiI7CisgICAgICAgIGlmICgkdmFsdWVzWyRpXXsidHlwZSJ9IGVx
ICJGdW5jdGlvbiIpICB7CisgICAgICAgICAgICBwcmludCAiICNlbmRpZlxuIgorICAgICAgICB9
CiAgICAgICAgICRpKys7CiAgICAgfQogICAgIHByaW50ICIgICB7IDAsIDAsIE5vSW50cmluc2lj
LCAwLCAwIH1cbiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
bWluYXRvcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb21pbmF0b3JzLmNw
cAppbmRleCBhNWFlNjE0YjkxOWIwZmQ0MzQ4MmQwMTVjYzI5NTA4NDBlNTRiMjYxLi4yMDA5NmU3
M2IzNTE1OWM3NDM0YmQyN2FiNmY2MzMzN2ZlOWRmNGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvbWluYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9taW5hdG9ycy5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkRGR0RvbWluYXRvcnMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0
aW9uSW5saW5lcy5oIgogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDJmZjBjMzQxNDZlMmMwYmEyZmY3NmM0
ZDNmN2M0NmJhM2UyNTUxNDcuLjkwNDRjZGM2YjhjM2FkNGExZTk0MTg4ZGQxZDBlMjAwZTY5ZmI5
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAt
NDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIlZNLmgi
CiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIK
ICNpbmNsdWRlICJOYW1lSW5zdGFuY2UuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5o
IgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0
ZS1qcy1idWlsdGlucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZWUxYzdhN2NjZGQ5Mzc2OTIwZTc2ZDdmZThkMzBh
Zjk1NWYzMWE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVy
YXRlLWpzLWJ1aWx0aW5zCkBAIC0wLDAgKzEsMzA0IEBACisjIS91c3IvYmluL3B5dGhvbgorIyBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisjIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorIyBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisjIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorIyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisjIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworaW1wb3J0IGZpbGVjbXAKK2ltcG9ydCBmbm1hdGNoCitpbXBvcnQgb3MKK2lt
cG9ydCByZQoraW1wb3J0IHNodXRpbAoraW1wb3J0IHN5cworaW1wb3J0IGRhdGV0aW1lCitpbXBv
cnQganNvbgorCitjb3B5cmlnaHRUZXh0ID0gIiIiICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi9cbgorIiIiCisKK2dlbmVyYXRvclN0cmluZyA9ICIvKiBHZW5lcmF0ZWQg
YnkgJXMgZG8gbm90IGhhbmQgZWRpdC4gKi9cbiIgJSBvcy5wYXRoLmJhc2VuYW1lKF9fZmlsZV9f
KQorCitmdW5jdGlvbkhlYWRSZWdFeHAgPSByZS5jb21waWxlKHIiZnVuY3Rpb25ccytcdytccypc
KC4qP1wpIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK2Z1bmN0aW9uTmFtZVJlZ0V4cCA9IHJlLmNv
bXBpbGUociJmdW5jdGlvblxzKyhcdyspXHMqXCgiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorZnVu
Y3Rpb25QYXJhbWV0ZXJGaW5kZXIgPSByZS5jb21waWxlKHIiXmZ1bmN0aW9uXHMrKD86XHcrKVxz
KlwoKCg/OlxzKlx3Kyk/XHMqKD86XHMqLFxzKlx3KykqKT9cKSIsIHJlLk1VTFRJTElORSB8IHJl
LlMpCisKK211bHRpbGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cKi4qP1wqXC8i
LCByZS5NVUxUSUxJTkUgfCByZS5TKQorc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21w
aWxlKHIiXC9cLy4qP1xuIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKKworZGVmIGdldENvcHlyaWdo
dChzb3VyY2UpOgorICAgIGNvcHlyaWdodEJsb2NrID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5m
aW5kYWxsKHNvdXJjZSlbMF0KKyAgICBjb3B5cmlnaHRCbG9jayA9IGNvcHlyaWdodEJsb2NrWzpj
b3B5cmlnaHRCbG9jay5pbmRleCgiUmVkaXN0cmlidXRpb24iKV0KKyAgICBjb3B5UmlnaHRMaW5l
cyA9IFtdCisKKyAgICBmb3IgbGluZSBpbiBjb3B5cmlnaHRCbG9jay5zcGxpdCgiXG4iKToKKyAg
ICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiLyoiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUu
cmVwbGFjZSgiKi8iLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKiIsICIiKQor
ICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCJDb3B5cmlnaHQiLCAiIikKKyAgICAgICAgbGlu
ZSA9IGxpbmUucmVwbGFjZSgiY29weXJpZ2h0IiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJl
cGxhY2UoIihDKSIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIoYykiLCAiIikK
KyAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgICAgICBpZiBsZW4obGluZSkgPT0gMDoK
KyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgY29weVJpZ2h0TGluZXMuYXBwZW5kKGxp
bmUpCisgICAgCisgICAgcmV0dXJuIGxpc3Qoc2V0KGNvcHlSaWdodExpbmVzKSkKKworCisKK2Rl
ZiBnZXRGdW5jdGlvbnMoc291cmNlKToKKworICAgIHNvdXJjZSA9IG11bHRpbGluZUNvbW1lbnRS
ZWdFeHAuc3ViKCIvKiovIiwgc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAuc3ViKCIvL1xuIiwgc291
cmNlKSkKKworICAgIG1hdGNoZXMgPSBbIGYgZm9yIGYgaW4gZnVuY3Rpb25IZWFkUmVnRXhwLmZp
bmRpdGVyKHNvdXJjZSldCisgICAgZnVuY3Rpb25Cb3VuZHMgPSBbXQorICAgIHN0YXJ0ID0gMAor
ICAgIGVuZCA9IDAKKyAgICBmb3IgbWF0Y2ggaW4gbWF0Y2hlczoKKyAgICAgICAgc3RhcnQgPSBt
YXRjaC5zdGFydCgpCisgICAgICAgIGlmIHN0YXJ0IDwgZW5kOgorICAgICAgICAgICAgY29udGlu
dWUKKyAgICAgICAgZW5kID0gbWF0Y2guZW5kKCkKKyAgICAgICAgd2hpbGUgc291cmNlW2VuZF0g
IT0gJ3snOgorICAgICAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICBkZXB0aCA9IDEKKyAg
ICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICB3aGlsZSBkZXB0aCA+IDA6CisgICAgICAgICAg
ICBpZiBzb3VyY2VbZW5kXSA9PSAneyc6CisgICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCAr
IDEKKyAgICAgICAgICAgIGVsaWYgc291cmNlW2VuZF0gPT0gJ30nOgorICAgICAgICAgICAgICAg
IGRlcHRoID0gZGVwdGggLSAxCisgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgIGZ1
bmN0aW9uQm91bmRzLmFwcGVuZCgoc3RhcnQsIGVuZCkpCisKKyAgICBmdW5jdGlvbnMgPSBbc291
cmNlW3N0YXJ0OmVuZF0uc3RyaXAoKSBmb3IgKHN0YXJ0LCBlbmQpIGluIGZ1bmN0aW9uQm91bmRz
XQorICAgIHJlc3VsdCA9IFtdCisgICAgZm9yIGZ1bmN0aW9uIGluIGZ1bmN0aW9uczoKKyAgICAg
ICAgZnVuY3Rpb24gPSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLnN1YigiIiwgZnVuY3Rpb24pCisg
ICAgICAgIGZ1bmN0aW9uTmFtZSA9IGZ1bmN0aW9uTmFtZVJlZ0V4cC5maW5kYWxsKGZ1bmN0aW9u
KVswXQorICAgICAgICBmdW5jdGlvblBhcmFtZXRlcnMgPSBmdW5jdGlvblBhcmFtZXRlckZpbmRl
ci5maW5kYWxsKGZ1bmN0aW9uKVswXS5zcGxpdCgnLCcpCisgICAgICAgIGlmIGxlbihmdW5jdGlv
blBhcmFtZXRlcnNbMF0pID09IDA6CisgICAgICAgICAgICBmdW5jdGlvblBhcmFtZXRlcnMgPSBb
XQorICAgICAgICAgICAgCisgICAgICAgIHJlc3VsdC5hcHBlbmQoKGZ1bmN0aW9uTmFtZSwgZnVu
Y3Rpb24sIGZ1bmN0aW9uUGFyYW1ldGVycykpCisgICAgcmV0dXJuIHJlc3VsdAorICAgICAgICAK
KworZGVmIGdlbmVyYXRlQ29kZShzb3VyY2UpOgorICAgIGlucHV0RmlsZSA9IG9wZW4oc291cmNl
LCAiciIpCisgICAgYmFzZU5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHNvdXJjZSkucmVwbGFjZSgi
LmpzIiwgIiIpCisgICAgCisgICAgc291cmNlID0gIiIKKyAgICBmb3IgbGluZSBpbiBpbnB1dEZp
bGU6CisgICAgICAgIHNvdXJjZSA9IHNvdXJjZSArIGxpbmUKKyAgICAKKyAgICBpZiBzeXMucGxh
dGZvcm0gPT0gImN5Z3dpbiI6CisgICAgICAgIHNvdXJjZSA9IHNvdXJjZS5yZXBsYWNlKCJcclxu
IiwgIlxuIikKKyAgICByZXR1cm4gKGJhc2VOYW1lLCBnZXRGdW5jdGlvbnMoc291cmNlKSwgZ2V0
Q29weXJpZ2h0KHNvdXJjZSkpCisKK2RlZiBtYW5nbGVOYW1lKG9iamVjdCwgbmFtZSk6CisgICAg
cU5hbWUgPSBvYmplY3QgKyAiLiIgKyBuYW1lCisgICAgbWFuZ2xlZE5hbWUgPSAiIgorICAgIGkg
PSAwCisgICAgd2hpbGUgaSA8IGxlbihxTmFtZSk6CisgICAgICAgIGlmIHFOYW1lW2ldID09ICcu
JzoKKyAgICAgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWUgKyBxTmFtZVtpICsgMV0u
dXBwZXIoKQorICAgICAgICAgICAgaSA9IGkgKyAxCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lICsgcU5hbWVbaV0KKyAgICAgICAgaSA9IGkgKyAx
CisgICAgcmV0dXJuIG1hbmdsZWROYW1lCisKK2J1aWx0aW5zID0gW10KKworYmFzZU5hbWUgPSBz
eXMuYXJndlstMV0KK2J1aWx0aW5fZGVmaW5pdGlvbnMgPSBzeXMuYXJndlsxOi0xXQorKG91dHB1
dF9iYXNlLCBfKSA9IG9zLnBhdGguc3BsaXRleHQoc3lzLmFyZ3ZbLTFdKQorCitjb3B5cmlnaHRz
ID0gW10KK2ZvciBmaWxlIGluIGJ1aWx0aW5fZGVmaW5pdGlvbnM6CisgICAgaWYgZm5tYXRjaC5m
bm1hdGNoKGZpbGUsICcqLmpzJyk6CisgICAgICAgIChiYXNlTmFtZSwgZnVuY3Rpb25zLCBvYmpl
Y3RDb3B5cmlnaHRzKSA9IGdlbmVyYXRlQ29kZShmaWxlKQorICAgICAgICBjb3B5cmlnaHRzLmV4
dGVuZChvYmplY3RDb3B5cmlnaHRzKQorICAgICAgICBidWlsdGlucy5hcHBlbmQoKGJhc2VOYW1l
LCBmdW5jdGlvbnMpKQorCitjb3B5cmlnaHRzID0gbGlzdChzZXQoY29weXJpZ2h0cykpCisKK2Nv
cHlyaWdodEJvZHkgPSAiIgorZm9yIGNvcHlyaWdodCBpbiBjb3B5cmlnaHRzOgorICAgIGNvcHly
aWdodEJvZHkgPSBjb3B5cmlnaHRCb2R5ICsiICogQ29weXJpZ2h0IChDKSAiICsgY29weXJpZ2h0
ICsgIlxuIgorCitidWlsdGluc0hlYWRlciA9IG9wZW4ob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwg
InciKQorYnVpbHRpbnNJbXBsZW1lbnRhdGlvbiA9IG9wZW4ob3V0cHV0X2Jhc2UgKyAiLmNwcC50
bXAiLCAidyIpCitjb3B5cmlnaHRUZXh0ID0gIi8qXG4iICsgY29weXJpZ2h0Qm9keSArIGNvcHly
aWdodFRleHQKK2J1aWx0aW5zSGVhZGVyLndyaXRlKCIiIiVzCislcworCisjaWZuZGVmIEpTQ0J1
aWx0aW5zX0gKKyNkZWZpbmUgSlNDQnVpbHRpbnNfSAorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgRnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgSWRlbnRpZmllcjsKK2NsYXNzIEpTR2xvYmFs
T2JqZWN0OworY2xhc3MgU291cmNlQ29kZTsKK2NsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOworY2xhc3MgVk07CisKK0Z1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1
dGFibGUoVk0mLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUm
KTsKKworIiIiICUgKGdlbmVyYXRvclN0cmluZywgY29weXJpZ2h0VGV4dCkpCisKK2NvZGVSZWZl
cmVuY2VzID0gW10KKworZm9yIChvYmplY3ROYW1lLCBmdW5jdGlvbnMpIGluIGJ1aWx0aW5zOgor
ICAgIHByaW50KCJHZW5lcmF0aW5nIGJpbmRpbmdzIGZvciB0aGUgJXMgYnVpbHRpbi4iICUgb2Jq
ZWN0TmFtZSkKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiLyogJXMgZnVuY3Rpb25zICovXG4i
ICUgb2JqZWN0TmFtZSkKKyAgICBmb3IgKG5hbWUsIGltcGxlbWVudGF0aW9uLCBfKSBpbiBmdW5j
dGlvbnM6CisgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlTmFtZShvYmplY3ROYW1lLCBuYW1l
KQorICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lWzBdLmxvd2VyKCkgKyBtYW5nbGVk
TmFtZVsxOl0gKyAiQ29kZSIKKyAgICAgICAgY29kZVJlZmVyZW5jZXMuYXBwZW5kKChtYW5nbGVk
TmFtZSwgbmFtZSwgaW1wbGVtZW50YXRpb24pKQorICAgICAgICBidWlsdGluc0hlYWRlci53cml0
ZSgiZXh0ZXJuIGNvbnN0IGNoYXIqIHNfJXM7XG4iICUgbWFuZ2xlZE5hbWUpCisgICAgICAgIGJ1
aWx0aW5zSGVhZGVyLndyaXRlKCJleHRlcm4gY29uc3QgaW50IHNfJXNMZW5ndGg7XG4iICUgbWFu
Z2xlZE5hbWUpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuIikKKyAgICBidWlsdGluc0hl
YWRlci53cml0ZSgiI2RlZmluZSBKU0NfRk9SRUFDSF8lc19CVUlMVElOKG1hY3JvKSBcXFxuIiAl
IG9iamVjdE5hbWUucmVwbGFjZSgiLiIsICJfIikudXBwZXIoKSkKKyAgICBmb3IgKG5hbWUsIGlt
cGxlbWVudGF0aW9uLCBhcmd1bWVudHMpIGluIGZ1bmN0aW9uczoKKyAgICAgICAgbWFuZ2xlZE5h
bWUgPSBtYW5nbGVOYW1lKG9iamVjdE5hbWUsIG5hbWUpCisgICAgICAgIGJ1aWx0aW5zSGVhZGVy
LndyaXRlKCIgICAgbWFjcm8oJXMsICVzLCAlZCkgXFxcbiIgJSAobmFtZSwgbWFuZ2xlZE5hbWUs
IGxlbihhcmd1bWVudHMpKSkKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiXG4iKQorICAgIGZv
ciAobmFtZSwgaW1wbGVtZW50YXRpb24sIGFyZ3VtZW50cykgaW4gZnVuY3Rpb25zOgorICAgICAg
ICBidWlsdGluc0hlYWRlci53cml0ZSgiI2RlZmluZSBKU0NfQlVJTFRJTl8lcyAxXG4iICUgbWFu
Z2xlTmFtZShvYmplY3ROYW1lLCBuYW1lKS51cHBlcigpKQorICAgIGJ1aWx0aW5zSGVhZGVyLndy
aXRlKCJcblxuIikKK25hbWVzID0gW10KK2J1aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lIEpT
Q19GT1JFQUNIX0JVSUxUSU4obWFjcm8pXFxcbiIpCitmb3IgKGNvZGVSZWZlcmVuY2UsIGZ1bmN0
aW9uTmFtZSwgc291cmNlKSBpbiBjb2RlUmVmZXJlbmNlczoKKyAgICBidWlsdGluc0hlYWRlci53
cml0ZSgiICAgIG1hY3JvKCVzLCAlcywgc18lc0xlbmd0aCkgXFxcbiIgJSAoY29kZVJlZmVyZW5j
ZSwgZnVuY3Rpb25OYW1lLCBjb2RlUmVmZXJlbmNlKSkKKyAgICBuYW1lcy5hcHBlbmQoZnVuY3Rp
b25OYW1lKQorCitidWlsdGluc0hlYWRlci53cml0ZSgiXG5cbiIpCitidWlsdGluc0hlYWRlci53
cml0ZSgiI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFxc
XG4iKQorZm9yIG5hbWUgaW4gc29ydGVkKHNldChuYW1lcykpOgorICAgIGJ1aWx0aW5zSGVhZGVy
LndyaXRlKCIgICAgbWFjcm8oJXMpIFxcXG4iICUgbmFtZSkKK2J1aWx0aW5zSGVhZGVyLndyaXRl
KCIiIgorCisjZGVmaW5lIEpTQ19ERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBm
dW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBj
b2RlTmFtZSMjR2VuZXJhdG9yKFZNJik7CisKK0pTQ19GT1JFQUNIX0JVSUxUSU4oSlNDX0RFQ0xB
UkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgSlNDX0RFQ0xBUkVfQlVJTFRJTl9HRU5FUkFU
T1IKKworI2RlZmluZSBKU0NfQlVJTFRJTl9FWElTVFMobmFtZSkgZGVmaW5lZChKU0NfQlVJTFRJ
Tl8jI25hbWUpCisKK30KKworI2VuZGlmCisKKyIiIikKKworYnVpbHRpbnNJbXBsZW1lbnRhdGlv
bi53cml0ZSgiIiIlcworJXMKKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiSlND
QnVpbHRpbnMuaCIKKworI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUg
IkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiVk0u
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKKyIiIiAgJSAoZ2VuZXJhdG9yU3RyaW5nLCBjb3B5cmln
aHRUZXh0KSkKKworZm9yIChjb2RlUmVmZXJlbmNlLCBuYW1lLCBzb3VyY2UpIGluIGNvZGVSZWZl
cmVuY2VzOgorICAgIHNvdXJjZSA9ICIoZnVuY3Rpb24gIiArIHNvdXJjZVtzb3VyY2UuaW5kZXgo
IigiKTpdICsgIikiCisgICAgbGluZXMgPSBqc29uLmR1bXBzKHNvdXJjZSlbMTotMV0uc3BsaXQo
IlxcbiIpCisgICAgc291cmNlTGVuZ3RoID0gbGVuKHNvdXJjZSkKKyAgICBzb3VyY2UgPSAiIgor
ICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICBzb3VyY2UgPSBzb3VyY2UgKyAoIiAgICBc
IiVzXFxuXCIgXFxcbiIgJSBsaW5lKQorICAgIGJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUo
ImNvbnN0IGNoYXIqIHNfJXMgPVxuJXM7XG5cbiIgJSAoY29kZVJlZmVyZW5jZSwgc291cmNlKSkK
KyAgICBidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCJjb25zdCBpbnQgc18lc0xlbmd0aCA9
ICVkO1xuXG4iICUgKGNvZGVSZWZlcmVuY2UsIHNvdXJjZUxlbmd0aCArIDEpKSAjICsgMSBmb3Ig
XG4KKworYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiIiIKK0Z1bmN0aW9uRXhlY3V0YWJs
ZSogY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUoVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCit7Cisg
ICAgdW5zaWduZWQgbGluZUNvdW50ID0gdW5saW5rZWRFeGVjdXRhYmxlLT5saW5lQ291bnQoKTsK
KyAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IDE7CisgICAgdW5zaWduZWQgc291cmNlTGVuZ3Ro
ID0gdW5saW5rZWRFeGVjdXRhYmxlLT5zb3VyY2VMZW5ndGgoKTsKKyAgICBib29sIGVuZENvbHVt
bklzT25TdGFydExpbmUgPSAhbGluZUNvdW50OworICAgIHVuc2lnbmVkIGVuZENvbHVtbkV4Y2x1
ZGluZ0JyYWNlcyA9IHVubGlua2VkRXhlY3V0YWJsZS0+dW5saW5rZWRCb2R5RW5kQ29sdW1uKCkg
KyAoZW5kQ29sdW1uSXNPblN0YXJ0TGluZSA/IDAgOiAxKTsKKyAgICB1bnNpZ25lZCBzdGFydE9m
ZnNldCA9IHVubGlua2VkRXhlY3V0YWJsZS0+c3RhcnRPZmZzZXQoKTsKKyAgICB1bnNpZ25lZCBz
dGFydE9mZnNldEV4Y2x1ZGluZ09wZW5CcmFjZSA9IHN0YXJ0T2Zmc2V0ICsgMTsKKyAgICB1bnNp
Z25lZCBlbmRPZmZzZXRFeGNsdWRpbmdDbG9zZUJyYWNlID0gc3RhcnRPZmZzZXQgKyBzb3VyY2VM
ZW5ndGggLSAxOworICAgIFNvdXJjZUNvZGUgYm9keVNvdXJjZShzb3VyY2UucHJvdmlkZXIoKSwg
c3RhcnRPZmZzZXRFeGNsdWRpbmdPcGVuQnJhY2UsIGVuZE9mZnNldEV4Y2x1ZGluZ0Nsb3NlQnJh
Y2UsIDAsIHN0YXJ0Q29sdW1uKTsKKyAgICByZXR1cm4gRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVh
dGUodm0sIGJvZHlTb3VyY2UsIHVubGlua2VkRXhlY3V0YWJsZSwgMCwgbGluZUNvdW50LCBzdGFy
dENvbHVtbiwgZW5kQ29sdW1uRXhjbHVkaW5nQnJhY2VzLCBmYWxzZSk7Cit9CisKKyNkZWZpbmUg
SlNDX0RFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1
bWVudENvdW50KSBcXAorRnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKFZN
JiB2bSkgXFwKK3sgXFwKKyAgICByZXR1cm4gY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUodm0sIHZt
LmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLCB2bS5idWlsdGlu
RXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpKTsgXFwKK30KKworSlNDX0ZPUkVBQ0hf
QlVJTFRJTihKU0NfREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIEpTQ19ERUZJTkVf
QlVJTFRJTl9HRU5FUkFUT1IKK30KKworIiIiKQorCitidWlsdGluc0hlYWRlci5jbG9zZSgpCiti
dWlsdGluc0ltcGxlbWVudGF0aW9uLmNsb3NlKCkKKworaWYgKG5vdCBvcy5wYXRoLmV4aXN0cyhv
dXRwdXRfYmFzZSArICIuaCIpKSBvciAobm90IGZpbGVjbXAuY21wKG91dHB1dF9iYXNlICsgIi5o
LnRtcCIsIG91dHB1dF9iYXNlICsgIi5oIiwgc2hhbGxvdz1GYWxzZSkpOgorICAgIG9zLnJlbmFt
ZShvdXRwdXRfYmFzZSArICIuaC50bXAiLCBvdXRwdXRfYmFzZSArICIuaCIpCitlbHNlOgorICAg
IG9zLnJlbW92ZShvdXRwdXRfYmFzZSArICIuaC50bXAiKQorCitpZiAobm90IG9zLnBhdGguZXhp
c3RzKG91dHB1dF9iYXNlICsgIi5jcHAiKSkgb3IgKG5vdCBmaWxlY21wLmNtcChvdXRwdXRfYmFz
ZSArICIuY3BwLnRtcCIsIG91dHB1dF9iYXNlICsgIi5jcHAiLCBzaGFsbG93PUZhbHNlKSk6Cisg
ICAgb3MucmVuYW1lKG91dHB1dF9iYXNlICsgIi5jcHAudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmNw
cCIpCitlbHNlOgorICAgIG9zLnJlbW92ZShvdXRwdXRfYmFzZSArICIuY3BwLnRtcCIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaAppbmRleCAyY2Ez
ZTk3OTQwYzdjMTEwNmMxYmFiYTFmMzU0ZmU4NDdiNDM4NWIzLi4zMGNhZDJhMTRmZmRiZmI0ZDU3
Y2Y1YTEyZmNiOTAwZTI2NGY4NzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9DYWNoZWRDYWxsLmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICAsIG1faW50ZXJwcmV0ZXIoY2FsbEZyYW1lLT5pbnRlcnByZXRlcigpKQogICAg
ICAgICAgICAgLCBtX2VudHJ5U2NvcGUoY2FsbEZyYW1lLT52bSgpLCBmdW5jdGlvbi0+c2NvcGUo
KS0+Z2xvYmFsT2JqZWN0KCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCghZnVuY3Rp
b24tPmlzSG9zdEZ1bmN0aW9uKCkpOworICAgICAgICAgICAgQVNTRVJUKCFmdW5jdGlvbi0+aXNI
b3N0RnVuY3Rpb25Ob25JbmxpbmUoKSk7CiAgICAgICAgICAgICBpZiAoY2FsbEZyYW1lLT52bSgp
LmlzU2FmZVRvUmVjdXJzZSgpKSB7CiAgICAgICAgICAgICAgICAgbV9hcmd1bWVudHMucmVzaXpl
KGFyZ3VtZW50Q291bnQpOwogICAgICAgICAgICAgICAgIG1fY2xvc3VyZSA9IG1faW50ZXJwcmV0
ZXItPnByZXBhcmVGb3JSZXBlYXRDYWxsKGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKSwgY2FsbEZy
YW1lLCAmbV9wcm90b0NhbGxGcmFtZSwgZnVuY3Rpb24sIGFyZ3VtZW50Q291bnQgKyAxLCBmdW5j
dGlvbi0+c2NvcGUoKSwgbV9hcmd1bWVudHMuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGNhODkwYjA2ZWEzM2Zh
OWU3ZjFmYTUxYTM1ZWEyZDQ4ZDAwOWEzOGEuLjZjOWJmOTZjMTVmNjA5ZTI2NWNlMjUwYTQ1YmYw
ODYxZDA2Y2QxZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIkpTUHJvcGVydHlO
YW1lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1N0YWNrSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
U3RyaW5nLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNXaXRo
U2NvcGUuaCIKICNpbmNsdWRlICJMTEludENMb29wLmgiCiAjaW5jbHVkZSAiTExJbnRUaHVua3Mu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0Nh
bGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxs
RnJhbWUuY3BwCmluZGV4IGYwZTAyYmE0ZTQ3NmY5OWNjOTEzYjA0NjJhZDI3OTUwMDYwOWZhM2Eu
LjFjMjQwZGNkNzFiZTUyOWQ4OGNiZjQ2MWQxODY4ZjVlYjJiMDJhZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcApAQCAt
MjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCiAKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0
YWNrQWxpZ25tZW50LmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggY2E3YWQxMWYyZTBiOGEzYjhiMTg1ODkxZDdlNTIyYmFl
NDAzYTIzNi4uY2I1NTA3YmVhYzU1YmY4ZWIxYjM3ZWM5MGZjYWIxOTM0ZmI0OGVhMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0Fy
cmF5LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGwu
aCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
MzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3Bw
CmluZGV4IDk4ZDEwYTNmNGRjYjEyZDg5ZjM3YTEyZjIyNjA0Yjk0NmUwOGU2MjcuLmRkMDM1Mzc3
OWU4YmRmOThmNDY1OGEzMDdlMzJkMDZlNDcyNDQxNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
ICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5
LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIK
ICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXgg
OTI4ZGQ1MGZiMDE2ZTI3MTY0NGE1NzVlMzBhYjVmMjUxNmViNTBlYy4uOTA4OGI3ZmIyZmI3YWQw
MTM4MDZlZjQ5YjVhZjQyMGZhNjQ4NDA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC00MSw2ICs0MSw4IEBACiAjaW5jbHVkZSAiSklULmgiCiAj
aW5jbHVkZSAiSklUT3BlcmF0aW9uV3JhcHBlcnMuaCIKICNpbmNsdWRlICJKSVRUb0RGR0RlZmVy
cmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
CisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcAppbmRleCAyNmRkNGQxYWY3NDVhZmExZmJjNTNhOWMwMjNhNmU0NzQx
YTY2YTA5Li5kZjFiZDNhOWNmYTQwMmM1MmE1MjExY2YxYWNjZTY3ZDUxMjFiN2VlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMjks
MTEgKzI5LDEzIEBACiAjaW5jbHVkZSAiSklULmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIK
KyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkdDQXdhcmVKSVRTdHVi
Um91dGluZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkludGVycHJl
dGVyLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNp
bmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNp
bmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNWYXJpYWJsZU9i
amVjdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCA0MDc4NGI0OTQzMWZlMDJlOGU0NTIyZjE2
MzA4YzkwMjQ3MTZkMjM2Li4yZjc5NTU1NGIwOTFkZWViYmMwM2JmMmJlOGM3NGY0MWFlNTQxZWQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkpTTG9j
ay5oIgogI2luY2x1ZGUgIkpTUHJveHkuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1
ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRl
ICJTYW1wbGluZ1Rvb2wuaCIKICNpbmNsdWRlICJTdGFja1Zpc2l0b3IuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5k
ZXggNjA0Y2MyNjNjZjk3ZTA4NmZlZDA2ZWM5MDNiMGVjMTk4M2U3ODEzNy4uODE2NmU3ZjgxZmE4
OWE3ZDRmNTBjNWYxYTk0ZmE5NjhjNWQ1N2UxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTM1LDcgKzM1LDcg
QEAKICNpbmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRl
ICJKU0NlbGwuaCIKLSNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlv
bklubGluZXMuaCIKICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RC
dWlsZGVyLmgKaW5kZXggOGVjMWZkMzJhM2FkYTIyZTEyNTIyOTU3MGRjZjdmZjI4ZWFiZjFlZC4u
NDZhN2M3NmIyZjkwMWZjM2NjMzZkMWNlMGMwNzM1M2ViMDZiMmY1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTg4OCw5ICs4ODgsOSBAQCBFeHByZXNz
aW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbgogICAgIEFTU0VSVChmdW5jLT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsK
ICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+
KGZ1bmMpOwogICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUqIG5vZGU7Ci0gICAgaWYgKGRvdC0+aWRl
bnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmNhbGwpCisgICAgaWYgKGRvdC0+aWRl
bnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmNhbGwgfHwgZG90LT5pZGVudGlmaWVy
KCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y2FsbFByaXZhdGVOYW1lKQogICAgICAgICBub2Rl
ID0gbmV3IChtX3ZtKSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNl
KCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQp
OwotICAgIGVsc2UgaWYgKGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMt
PmFwcGx5KQorICAgIGVsc2UgaWYgKGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5
TmFtZXMtPmFwcGx5IHx8IGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMt
PmFwcGx5UHJpdmF0ZU5hbWUpCiAgICAgICAgIG5vZGUgPSBuZXcgKG1fdm0pIEFwcGx5RnVuY3Rp
b25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBh
cmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwogICAgIGVsc2UKICAgICAgICAgbm9k
ZSA9IG5ldyAobV92bSkgRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCks
IGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCBjYTRiYjRmMGFkZThkNmJj
ODI2OTFhNmMwMDAxNGNmMTk4YmQ4OGJkLi5jY2IwNzlkOTc1YTE0MWM1YzRiMmQ3YjYyMzEzMDAw
NzA5Nzc3ODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAtMjUs
MTAgKzI1LDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGV4ZXIuaCIKIAor
I2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCisjaW5jbHVkZSAiSWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCi0KICNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5oIgotI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJOb2RlSW5m
by5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSA8d3RmL2R0b2EuaD4KQEAgLTkwLDYg
KzkwLDcgQEAgZW51bSBDaGFyYWN0ZXJUeXBlIHsKIAogICAgIC8vIE90aGVyIHR5cGVzIChvbmx5
IG9uZSBzbyBmYXIpCiAgICAgQ2hhcmFjdGVyV2hpdGVTcGFjZSwKKyAgICBDaGFyYWN0ZXJQcml2
YXRlSWRlbnRpZmllclN0YXJ0CiB9OwogCiAvLyAyNTYgTGF0aW4tMSBjb2RlcwpAQCAtMTU4LDcg
KzE1OSw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCB0eXBlc09mTGF0aW4xQ2hhcmFj
dGVyc1syNTZdID0gewogLyogIDYxIC0gPSAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlckVx
dWFsLAogLyogIDYyIC0gPiAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlckdyZWF0ZXIsCiAv
KiAgNjMgLSA/ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyUXVlc3Rpb24sCi0vKiAgNjQg
LSBAICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKKy8qICA2NCAtIEAgICAg
ICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJQcml2YXRlSWRlbnRpZmllclN0YXJ0LAogLyogIDY1
IC0gQSAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKIC8qICA2
NiAtIEIgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCiAvKiAg
NjcgLSBDICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LApAQCAt
NDg2LDkgKzQ4NywxMCBAQCBzdGF0aWMgY29uc3QgTENoYXIgc2luZ2xlQ2hhcmFjdGVyRXNjYXBl
VmFsdWVzRm9yQVNDSUlbMTI4XSA9IHsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotTGV4
ZXI8VD46OkxleGVyKFZNKiB2bSkKK0xleGVyPFQ+OjpMZXhlcihWTSogdm0sIEpTUGFyc2VyU3Ry
aWN0bmVzcyBzdHJpY3RuZXNzKQogICAgIDogbV9pc1JlcGFyc2luZyhmYWxzZSkKICAgICAsIG1f
dm0odm0pCisgICAgLCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24oc3RyaWN0bmVzcyA9PSBKU1Bh
cnNlQnVpbHRpbikKIHsKIH0KIApAQCAtNzUzLDcgKzc1NSwyNyBAQCBpbmxpbmUgdm9pZCBMZXhl
cjxUPjo6cmVjb3JkMTYoaW50IGMpCiAgICAgQVNTRVJUKGMgPD0gc3RhdGljX2Nhc3Q8aW50PihV
U0hSVF9NQVgpKTsKICAgICBtX2J1ZmZlcjE2LmFwcGVuZChzdGF0aWNfY2FzdDxVQ2hhcj4oYykp
OwogfQotCisgICAgCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorYm9vbCBpc1NhZmVJZGVudGlmaWVy
KFZNJiB2bSwgY29uc3QgSWRlbnRpZmllciogaWRlbnQpCit7CisgICAgaWYgKCFpZGVudCkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgLyogSnVzdCBibG9jayBhbnkgdXNlIG9mIHN1c3BpY2lv
dXMgaWRlbnRpZmllcnMuICBUaGlzIGlzIGludGVuZGVkIHRvCisgICAgICogYmUgdXNlZCBhcyBh
IHNhZmV0eSBuZXQgd2hpbGUgaW1wbGVtZW50aW5nIGJ1aWx0aW5zLgorICAgICAqLworICAgIGlm
ICgqaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+Y2FsbCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+YXBwbHkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoKmlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmV2YWwpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKmlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMt
PkZ1bmN0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9Cisj
ZW5kaWYKKyAgICAKIHRlbXBsYXRlIDw+CiB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVu
dGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cGFyc2VJZGVu
dGlmaWVyKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEsIHVuc2lnbmVkIGxleGVyRmxhZ3MsIGJvb2wg
c3RyaWN0TW9kZSkKIHsKQEAgLTc2NSw3ICs3ODcsMTEgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxk
Q3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46
OnAKICAgICAgICAgICAgIHJldHVybiBrZXl3b3JkID09IFJFU0VSVkVEX0lGX1NUUklDVCAmJiAh
c3RyaWN0TW9kZSA/IElERU5UIDoga2V5d29yZDsKICAgICAgICAgfQogICAgIH0KLQorICAgIAor
ICAgIGJvb2wgaXNQcml2YXRlTmFtZSA9IG1fY3VycmVudCA9PSAnQCcgJiYgbV9wYXJzaW5nQnVp
bHRpbkZ1bmN0aW9uOworICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICBzaGlmdCgpOwor
ICAgIAogICAgIGNvbnN0IExDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50U291cmNlUHRy
KCk7CiAgICAgdW5zaWduZWQgaWRlbnRpZmllckxpbmVTdGFydCA9IGN1cnJlbnRMaW5lU3RhcnRP
ZmZzZXQoKTsKICAgICAKQEAgLTc3OSwxNSArODA1LDI2IEBAIHRlbXBsYXRlIDxib29sIHNob3Vs
ZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+
OjpwCiAKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IDA7CiAgICAgCi0gICAgaWYgKHNo
b3VsZENyZWF0ZUlkZW50aWZpZXIpIHsKKyAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllciB8
fCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKICAgICAgICAgaW50IGlkZW50aWZpZXJMZW5n
dGggPSBjdXJyZW50U291cmNlUHRyKCkgLSBpZGVudGlmaWVyU3RhcnQ7CiAgICAgICAgIGlkZW50
ID0gbWFrZUlkZW50aWZpZXIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVuZ3RoKTsKLQor
ICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CisgICAgICAgICAgICBpZiAo
IWlzU2FmZUlkZW50aWZpZXIoKm1fdm0sIGlkZW50KSAmJiAhaXNQcml2YXRlTmFtZSkgeworICAg
ICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZygiVGhlIHVzZSBvZiAn
IiwgaWRlbnQtPnN0cmluZygpLCAiJyBpcyBkaXNhbGxvd2VkIGluIGJ1aWx0aW4gZnVuY3Rpb25z
LiIpOworICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPSzsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICAgICAgICAgIGlkZW50ID0gbV92
bS0+cHJvcGVydHlOYW1lcy0+Z2V0UHJpdmF0ZU5hbWUoKmlkZW50KTsKKyAgICAgICAgICAgIGVs
c2UgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkKQor
ICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+
dW5kZWZpbmVkS2V5d29yZFByaXZhdGVOYW1lOworICAgICAgICAgICAgaWYgKCFpZGVudCkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9QUklWQVRFX05BTUVfRVJST1JUT0s7CisgICAg
ICAgIH0KICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IGlkZW50OwogICAgIH0gZWxzZQogICAg
ICAgICB0b2tlbkRhdGEtPmlkZW50ID0gMDsKIAotICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5n
IDwgbWF4VG9rZW5MZW5ndGgpICYmICEobGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25vcmVSZXNl
cnZlZFdvcmRzKSkpIHsKKyAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVu
Z3RoKSAmJiAhKGxleGVyRmxhZ3MgJiBMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpICYm
ICFpc1ByaXZhdGVOYW1lKSB7CiAgICAgICAgIEFTU0VSVChzaG91bGRDcmVhdGVJZGVudGlmaWVy
KTsKICAgICAgICAgaWYgKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSB7CiAgICAgICAgICAg
ICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gbV92bS0+a2V5d29yZHMtPmdldEtleXdvcmQoKmlk
ZW50KTsKQEAgLTgxNCw2ICs4NTEsMTAgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRl
bnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAKICAgICAg
ICAgICAgIHJldHVybiBrZXl3b3JkID09IFJFU0VSVkVEX0lGX1NUUklDVCAmJiAhc3RyaWN0TW9k
ZSA/IElERU5UIDoga2V5d29yZDsKICAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICBib29sIGlz
UHJpdmF0ZU5hbWUgPSBtX2N1cnJlbnQgPT0gJ0AnICYmIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlv
bjsKKyAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgc2hpZnQoKTsKIAogICAgIGNvbnN0
IFVDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50U291cmNlUHRyKCk7CiAgICAgaW50IGlk
ZW50aWZpZXJMaW5lU3RhcnQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CkBAIC04MjYsNiAr
ODY3LDcgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lO
TElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAKICAgICB9CiAgICAgCiAgICAgaWYgKFVO
TElLRUxZKG1fY3VycmVudCA9PSAnXFwnKSkgeworICAgICAgICBBU1NFUlQoIWlzUHJpdmF0ZU5h
bWUpOwogICAgICAgICBzZXRPZmZzZXRGcm9tU291cmNlUHRyKGlkZW50aWZpZXJTdGFydCwgaWRl
bnRpZmllckxpbmVTdGFydCk7CiAgICAgICAgIHJldHVybiBwYXJzZUlkZW50aWZpZXJTbG93Q2Fz
ZTxzaG91bGRDcmVhdGVJZGVudGlmaWVyPih0b2tlbkRhdGEsIGxleGVyRmxhZ3MsIHN0cmljdE1v
ZGUpOwogICAgIH0KQEAgLTgzNywxOCArODc5LDI5IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENy
ZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+Ojpw
CiAKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IDA7CiAgICAgCi0gICAgaWYgKHNob3Vs
ZENyZWF0ZUlkZW50aWZpZXIpIHsKKyAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllciB8fCBt
X3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKICAgICAgICAgaW50IGlkZW50aWZpZXJMZW5ndGgg
PSBjdXJyZW50U291cmNlUHRyKCkgLSBpZGVudGlmaWVyU3RhcnQ7CiAgICAgICAgIGlmIChpc0Fs
bDhCaXQpCiAgICAgICAgICAgICBpZGVudCA9IG1ha2VJZGVudGlmaWVyTENoYXJGcm9tVUNoYXIo
aWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVuZ3RoKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgaWRlbnQgPSBtYWtlSWRlbnRpZmllcihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJM
ZW5ndGgpOwotICAgICAgICAKKyAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikg
eworICAgICAgICAgICAgaWYgKCFpc1NhZmVJZGVudGlmaWVyKCptX3ZtLCBpZGVudCkgJiYgIWlz
UHJpdmF0ZU5hbWUpIHsKKyAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IG1ha2VT
dHJpbmcoIlRoZSB1c2Ugb2YgJyIsIGlkZW50LT5zdHJpbmcoKSwgIicgaXMgZGlzYWxsb3dlZCBp
biBidWlsdGluIGZ1bmN0aW9ucy4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAg
ICAgICAgICBpZGVudCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPmdldFByaXZhdGVOYW1lKCppZGVu
dCk7CisgICAgICAgICAgICBlbHNlIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+
dW5kZWZpbmVkS2V5d29yZCkKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gJm1f
dm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmRQcml2YXRlTmFtZTsKKyAgICAgICAg
ICAgIGlmICghaWRlbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSURfUFJJVkFURV9O
QU1FX0VSUk9SVE9LOworICAgICAgICB9CiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBpZGVu
dDsKICAgICB9IGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IDA7CiAgICAgCi0gICAg
aWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZsYWdz
ICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMpKSkgeworICAgIGlmIChVTkxJS0VMWSgo
cmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICEobGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJ
Z25vcmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsKICAgICAgICAgQVNTRVJU
KHNob3VsZENyZWF0ZUlkZW50aWZpZXIpOwogICAgICAgICBpZiAocmVtYWluaW5nIDwgbWF4VG9r
ZW5MZW5ndGgpIHsKICAgICAgICAgICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSBtX3ZtLT5r
ZXl3b3Jkcy0+Z2V0S2V5d29yZCgqaWRlbnQpOwpAQCAtMTY1OCw2ICsxNzExLDcgQEAgaW5OdW1i
ZXJBZnRlckRlY2ltYWxQb2ludDoKICAgICAgICAgQVNTRVJUKGlzSWRlbnRTdGFydChtX2N1cnJl
bnQpKTsKICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBDaGFyYWN0ZXJCYWNrU2xhc2g6
CisgICAgICAgIHBhcnNlSWRlbnQ6CiAgICAgICAgIGlmIChsZXhlckZsYWdzICYgTGV4ZXhGbGFn
c0RvbnRCdWlsZEtleXdvcmRzKQogICAgICAgICAgICAgdG9rZW4gPSBwYXJzZUlkZW50aWZpZXI8
ZmFsc2U+KHRva2VuRGF0YSwgbGV4ZXJGbGFncywgc3RyaWN0TW9kZSk7CiAgICAgICAgIGVsc2UK
QEAgLTE2NzAsNiArMTcyNCwxMSBAQCBpbk51bWJlckFmdGVyRGVjaW1hbFBvaW50OgogICAgICAg
ICBtX3Rlcm1pbmF0b3IgPSB0cnVlOwogICAgICAgICBtX2xpbmVTdGFydCA9IG1fY29kZTsKICAg
ICAgICAgZ290byBzdGFydDsKKyAgICBjYXNlIENoYXJhY3RlclByaXZhdGVJZGVudGlmaWVyU3Rh
cnQ6CisgICAgICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pCisgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnQ7CisKKyAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBDaGFyYWN0
ZXJJbnZhbGlkOgogICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IGludmFsaWRDaGFyYWN0ZXJN
ZXNzYWdlKCk7CiAgICAgICAgIHRva2VuID0gRVJST1JUT0s7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0xleGVyLmgKaW5kZXggMjhjNjFiYTE5OGQyYzE1YTQ5YmIxODUyZWQzMGJlZmViODkwNDAw
OC4uYjg4NzNlOTk1MDI4NjQ0YmY4Y2JiM2Q0YzJkYTU2MmU5M2UwZThlNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTGV4ZXIuaApAQCAtNzIsNyArNzIsNyBAQCBjbGFzcyBMZXhlciB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKIHB1YmxpYzoKLSAgICBMZXhlcihWTSopOwor
ICAgIExleGVyKFZNKiwgSlNQYXJzZXJTdHJpY3RuZXNzKTsKICAgICB+TGV4ZXIoKTsKIAogICAg
IC8vIENoYXJhY3RlciBtYW5pcHVsYXRpb24gZnVuY3Rpb25zLgpAQCAtMjM4LDYgKzIzOCw3IEBA
IHByaXZhdGU6CiAgICAgSWRlbnRpZmllckFyZW5hKiBtX2FyZW5hOwogCiAgICAgVk0qIG1fdm07
CisgICAgYm9vbCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247CiB9OwogCiB0ZW1wbGF0ZSA8PgpA
QCAtMzM1LDYgKzMzNiwxMiBAQCBBTFdBWVNfSU5MSU5FIGNvbnN0IElkZW50aWZpZXIqIExleGVy
PFQ+OjptYWtlTENoYXJJZGVudGlmaWVyKGNvbnN0IFVDaGFyKiBjaGFyYQogICAgIHJldHVybiAm
bV9hcmVuYS0+bWFrZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hhcihtX3ZtLCBjaGFyYWN0ZXJzLCBs
ZW5ndGgpOwogfQogCisjaWYgQVNTRVJUX0RJU0FCTEVECitBTFdBWVNfSU5MSU5FIGJvb2wgaXNT
YWZlSWRlbnRpZmllcihWTSYsIGNvbnN0IElkZW50aWZpZXIqKSB7IHJldHVybiB0cnVlOyB9Cisj
ZWxzZQorYm9vbCBpc1NhZmVJZGVudGlmaWVyKFZNJiwgY29uc3QgSWRlbnRpZmllciopOworI2Vu
ZGlmCisKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBM
ZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rva2VuKiB0b2tlblJlY29yZCwgdW5zaWdu
ZWQgbGV4ZXJGbGFncywgYm9vbCBzdHJpY3RNb2RlKQogewpAQCAtMzcwLDEwICszNzcsMTUgQEAg
QUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcihK
U1Rva2VuKiB0b2tlblJlY29yZCwgdW4KICAgICBBU1NFUlQoY3VycmVudE9mZnNldCgpID49IGN1
cnJlbnRMaW5lU3RhcnRPZmZzZXQoKSk7CiAKICAgICAvLyBDcmVhdGUgdGhlIGlkZW50aWZpZXIg
aWYgbmVlZGVkCi0gICAgaWYgKGxleGVyRmxhZ3MgJiBMZXhleEZsYWdzRG9udEJ1aWxkS2V5d29y
ZHMpCisgICAgaWYgKGxleGVyRmxhZ3MgJiBMZXhleEZsYWdzRG9udEJ1aWxkS2V5d29yZHMKKyNp
ZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgICYmICFtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24K
KyNlbmRpZgorICAgICAgICApCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAwOwogICAgIGVs
c2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG1ha2VMQ2hhcklkZW50aWZpZXIoc3RhcnQs
IHB0ciAtIHN0YXJ0KTsKKwogICAgIHRva2VuTG9jYXRpb24tPmxpbmUgPSBtX2xpbmVOdW1iZXI7
CiAgICAgdG9rZW5Mb2NhdGlvbi0+bGluZVN0YXJ0T2Zmc2V0ID0gY3VycmVudExpbmVTdGFydE9m
ZnNldCgpOwogICAgIHRva2VuTG9jYXRpb24tPnN0YXJ0T2Zmc2V0ID0gb2Zmc2V0RnJvbVNvdXJj
ZVB0cihzdGFydCk7CkBAIC0zODEsNiArMzkzLDEzIEBAIEFMV0FZU19JTkxJTkUgSlNUb2tlblR5
cGUgTGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tlbiogdG9rZW5SZWNvcmQsIHVu
CiAgICAgQVNTRVJUKHRva2VuTG9jYXRpb24tPnN0YXJ0T2Zmc2V0ID49IHRva2VuTG9jYXRpb24t
PmxpbmVTdGFydE9mZnNldCk7CiAgICAgdG9rZW5SZWNvcmQtPm1fc3RhcnRQb3NpdGlvbiA9IHN0
YXJ0UG9zaXRpb247CiAgICAgdG9rZW5SZWNvcmQtPm1fZW5kUG9zaXRpb24gPSBjdXJyZW50UG9z
aXRpb24oKTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5G
dW5jdGlvbikgeworICAgICAgICBpZiAoIWlzU2FmZUlkZW50aWZpZXIoKm1fdm0sIHRva2VuRGF0
YS0+aWRlbnQpKQorICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LOworICAgIH0KKyNlbmRpZgor
CiAgICAgbV9sYXN0VG9rZW4gPSBJREVOVDsKICAgICByZXR1cm4gSURFTlQ7CiAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IGZjOWNjZDlmNmM1NzZjMWFlZjU0
N2YyMTFmZGQ1OTZmNDJlMDU4MDYuLmQ5NTJiYTZhOTRkMmY2YjQxODIxNTUwMDRkMGE5NzA4NDI5
YmQ3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0xMzIsNiAr
MTMyLDEyIEBAIFBhc3NSZWZQdHI8UHJvZ3JhbU5vZGU+IFByb2dyYW1Ob2RlOjpjcmVhdGUoVk0q
IHZtLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0CiAgICAgcmV0dXJuIG5vZGUucmVsZWFz
ZSgpOwogfQogCisKK3ZvaWQgUHJvZ3JhbU5vZGU6OnNldENsb3NlZFZhcmlhYmxlcyhjb25zdCBW
ZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmIGNsb3NlZFZhcmlhYmxlcykKK3sKKyAgICBtX2Ns
b3NlZFZhcmlhYmxlcyA9IHN0ZDo6bW92ZShjbG9zZWRWYXJpYWJsZXMpOworfQorCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXZhbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAogaW5saW5lIEV2YWxOb2RlOjpFdmFsTm9kZShWTSogdm0sIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2Nh
dGlvbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0
YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBj
YXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMg
ZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmgKaW5kZXggZDc3OWExNzhkOTU2ZmY5OWZkMGJlZDVkNWY0NTRhYTNlNmI1MDg3OS4uODE2ZmYw
MDFhYmYwMzc2YzY0MmYxYTkzOGQwZTBhOWY1MjljYTZiYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuaApAQCAtMTQzMSw2ICsxNDMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGJvb2wgbmVlZHNBY3RpdmF0aW9uKCkgY29uc3QgeyByZXR1cm4gKGhhc0NhcHR1cmVkVmFy
aWFibGVzKCkpIHx8IChtX2ZlYXR1cmVzICYgKEV2YWxGZWF0dXJlIHwgV2l0aEZlYXR1cmUgfCBD
YXRjaEZlYXR1cmUpKTsgfQogICAgICAgICBib29sIGhhc0NhcHR1cmVkVmFyaWFibGVzKCkgY29u
c3QgeyByZXR1cm4gISFtX2NhcHR1cmVkVmFyaWFibGVzLnNpemUoKTsgfQogICAgICAgICBzaXpl
X3QgY2FwdHVyZWRWYXJpYWJsZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jYXB0dXJlZFZhcmlh
Ymxlcy5zaXplKCk7IH0KKyAgICAgICAgY29uc3QgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJp
YWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2NhcHR1cmVkVmFyaWFibGVzOyB9CiAgICAgICAgIGJv
b2wgY2FwdHVyZXMoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIHsgcmV0dXJuIG1fY2FwdHVyZWRW
YXJpYWJsZXMuY29udGFpbnMoaWRlbnQuaW1wbCgpKTsgfQogCiAgICAgICAgIFZhclN0YWNrJiB2
YXJTdGFjaygpIHsgcmV0dXJuIG1fdmFyU3RhY2s7IH0KQEAgLTE0NDYsNiArMTQ0Nyw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1lbnQoKSBj
b25zdDsKIAogICAgICAgICB2b2lkIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiBkZXN0aW5hdGlvbik7CisgICAgICAgIAorICAgICAgICB2b2lk
IHNldENsb3NlZFZhcmlhYmxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmKSB7
IH0KIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgdm9pZCBzZXRTb3VyY2UoY29uc3QgU291cmNl
Q29kZSYgc291cmNlKSB7IG1fc291cmNlID0gc291cmNlOyB9CkBAIC0xNDc1LDExICsxNDc4LDEz
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNjb3BlSXNG
dW5jdGlvbiA9IGZhbHNlOwogCisgICAgICAgIHZvaWQgc2V0Q2xvc2VkVmFyaWFibGVzKGNvbnN0
IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYpOworICAgICAgICBjb25zdCBWZWN0b3I8UmVm
UHRyPFN0cmluZ0ltcGw+PiYgY2xvc2VkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9jbG9z
ZWRWYXJpYWJsZXM7IH0KICAgICBwcml2YXRlOgogICAgICAgICBQcm9ncmFtTm9kZShWTSosIGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1
bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyos
IFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VD
b2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICB2aXJ0dWFs
IHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBv
dmVycmlkZTsKLQorICAgICAgICBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiBtX2Nsb3NlZFZh
cmlhYmxlczsKICAgICAgICAgdW5zaWduZWQgbV9zdGFydENvbHVtbjsKICAgICAgICAgdW5zaWdu
ZWQgbV9lbmRDb2x1bW47CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcAppbmRleCAyOTc2NjZlNzI2ZTQ1ZDA4M2VmMTM0OWRkZmZkZjM3ZWY4MDBkZjdhLi41MGJl
Yzc5ZmUzOGFkZjhmM2EwNGY2YjQ2Y2JkMmE1Y2JmY2YyNDZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yMDQsOCArMjA0LDkgQEAgUGFyc2VyPExleGVyVHlw
ZT46OlBhcnNlcihWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25QYXJh
bWV0ZXJzKgogICAgICwgbV9sYXN0SWRlbnRpZmllcigwKQogICAgICwgbV9sYXN0RnVuY3Rpb25O
YW1lKG51bGxwdHIpCiAgICAgLCBtX3NvdXJjZUVsZW1lbnRzKDApCisgICAgLCBtX3BhcnNpbmdC
dWlsdGluKHN0cmljdG5lc3MgPT0gSlNQYXJzZUJ1aWx0aW4pCiB7Ci0gICAgbV9sZXhlciA9IGFk
b3B0UHRyKG5ldyBMZXhlclR5cGUodm0pKTsKKyAgICBtX2xleGVyID0gYWRvcHRQdHIobmV3IExl
eGVyVHlwZSh2bSwgc3RyaWN0bmVzcykpOwogICAgIG1fYXJlbmEgPSBtX3ZtLT5wYXJzZXJBcmVu
YS5nZXQoKTsKICAgICBtX2xleGVyLT5zZXRDb2RlKHNvdXJjZSwgbV9hcmVuYSk7CiAgICAgbV90
b2tlbi5tX2xvY2F0aW9uLmxpbmUgPSBzb3VyY2UuZmlyc3RMaW5lKCk7CkBAIC0yNTYsNiArMjU3
LDcgQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKCkKICAgICBJZGVudGlm
aWVyU2V0IGNhcHR1cmVkVmFyaWFibGVzOwogICAgIGJvb2wgbW9kaWZpZWRQYXJhbWV0ZXIgPSBm
YWxzZTsKICAgICBzY29wZS0+Z2V0Q2FwdHVyZWRWYXJpYWJsZXMoY2FwdHVyZWRWYXJpYWJsZXMs
IG1vZGlmaWVkUGFyYW1ldGVyKTsKKyAgICAKICAgICBDb2RlRmVhdHVyZXMgZmVhdHVyZXMgPSBj
b250ZXh0LmZlYXR1cmVzKCk7CiAgICAgaWYgKHNjb3BlLT5zdHJpY3RNb2RlKCkpCiAgICAgICAg
IGZlYXR1cmVzIHw9IFN0cmljdE1vZGVGZWF0dXJlOwpAQCAtMjYzLDIxICsyNjUsMzYgQEAgU3Ry
aW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKCkKICAgICAgICAgZmVhdHVyZXMgfD0g
U2hhZG93c0FyZ3VtZW50c0ZlYXR1cmU7CiAgICAgaWYgKG1vZGlmaWVkUGFyYW1ldGVyKQogICAg
ICAgICBmZWF0dXJlcyB8PSBNb2RpZmllZFBhcmFtZXRlckZlYXR1cmU7Ci0KKyAgICAKKyAgICBW
ZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiBjbG9zZWRWYXJpYWJsZXM7CisgICAgaWYgKG1fcGFy
c2luZ0J1aWx0aW4pIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWNhcHR1cmVkVmFyaWFibGVz
LnNpemUoKSk7CisgICAgICAgIElkZW50aWZpZXJTZXQgdXNlZFZhcmlhYmxlczsKKyAgICAgICAg
c2NvcGUtPmdldFVzZWRWYXJpYWJsZXModXNlZFZhcmlhYmxlcyk7CisgICAgICAgIGZvciAoY29u
c3QgYXV0byYgdmFyaWFibGUgOiB1c2VkVmFyaWFibGVzKSB7CisgICAgICAgICAgICBpZiAoc2Nv
cGUtPmhhc0RlY2xhcmVkVmFyaWFibGUoSWRlbnRpZmllcihtX3ZtLCB2YXJpYWJsZS5nZXQoKSkp
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBp
ZiAoc2NvcGUtPmhhc0RlY2xhcmVkUGFyYW1ldGVyKElkZW50aWZpZXIobV92bSwgdmFyaWFibGUu
Z2V0KCkpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGNsb3NlZFZh
cmlhYmxlcy5hcHBlbmQodmFyaWFibGUpOworICAgICAgICB9CisgICAgfQogICAgIGRpZEZpbmlz
aFBhcnNpbmcoc291cmNlRWxlbWVudHMsIGNvbnRleHQudmFyRGVjbGFyYXRpb25zKCksIGNvbnRl
eHQuZnVuY0RlY2xhcmF0aW9ucygpLCBmZWF0dXJlcywKLSAgICAgICAgY29udGV4dC5udW1Db25z
dGFudHMoKSwgY2FwdHVyZWRWYXJpYWJsZXMpOworICAgICAgICBjb250ZXh0Lm51bUNvbnN0YW50
cygpLCBjYXB0dXJlZFZhcmlhYmxlcywgc3RkOjptb3ZlKGNsb3NlZFZhcmlhYmxlcykpOwogCiAg
ICAgcmV0dXJuIHBhcnNlRXJyb3I7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+
CiB2b2lkIFBhcnNlcjxMZXhlclR5cGU+OjpkaWRGaW5pc2hQYXJzaW5nKFNvdXJjZUVsZW1lbnRz
KiBzb3VyY2VFbGVtZW50cywgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpWYXJT
dGFjaz4qIHZhclN0YWNrLCAKLSAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6
OkZ1bmN0aW9uU3RhY2s+KiBmdW5jU3RhY2ssIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51
bUNvbnN0YW50cywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJzKQorICAgIFBhcnNlckFyZW5h
RGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qIGZ1bmNTdGFjaywgQ29kZUZl
YXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJl
ZFZhcnMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYgY2xvc2VkVmFyaWFibGVz
KQogewogICAgIG1fc291cmNlRWxlbWVudHMgPSBzb3VyY2VFbGVtZW50czsKICAgICBtX3ZhckRl
Y2xhcmF0aW9ucyA9IHZhclN0YWNrOwogICAgIG1fZnVuY0RlY2xhcmF0aW9ucyA9IGZ1bmNTdGFj
azsKICAgICBtX2NhcHR1cmVkVmFyaWFibGVzLnN3YXAoY2FwdHVyZWRWYXJzKTsKKyAgICBtX2Ns
b3NlZFZhcmlhYmxlcyA9IGNsb3NlZFZhcmlhYmxlczsKICAgICBtX2ZlYXR1cmVzID0gZmVhdHVy
ZXM7CiAgICAgbV9udW1Db25zdGFudHMgPSBudW1Db25zdGFudHM7CiB9CkBAIC0yMzQ2LDYgKzIz
NjMsMTAgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4gdm9pZCBQYXJzZXI8TGV4ZXJU
eXBlPjo6cHJpbnRVbmV4cGVjdGVkVG9rZW5UZXh0KFcKICAgICBjYXNlIFJFU0VSVkVEOgogICAg
ICAgICBvdXQucHJpbnQoIlVuZXhwZWN0ZWQgdXNlIG9mIHJlc2VydmVkIHdvcmQgJyIsIGdldFRv
a2VuKCksICInIik7CiAgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgSU5WQUxJRF9QUklWQVRF
X05BTUVfRVJST1JUT0s6CisgICAgICAgIG91dC5wcmludCgiSW52YWxpZCBwcml2YXRlIG5hbWUg
JyIsIGdldFRva2VuKCksICInIik7CisgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIAogICAg
IGNhc2UgSURFTlQ6CiAgICAgICAgIG91dC5wcmludCgiVW5leHBlY3RlZCBpZGVudGlmaWVyICci
LCBnZXRUb2tlbigpLCAiJyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5k
ZXggYjY5OGVmOTM2OGNiOGM4ZjE5N2NjZDAwMGFjYWE2ZGZiMTFiYTI0NC4uOTAzMzg1MGM4Yzk3
ZjU3ZTIxZGE1ZWVkYjAyZDA0NGY0Yzg5NzhlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCkBAIC0yMyw2ICsyMyw3IEBACiAjaWZuZGVmIFBhcnNlcl9oCiAjZGVmaW5lIFBh
cnNlcl9oCiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkRlYnVn
Z2VyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkV4ZWN1dGFi
bGUuaCIKQEAgLTI1OSw2ICsyNjAsMTAgQEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAgcmV0dXJu
IGlzVmFsaWRTdHJpY3RNb2RlID8gQmluZGluZ1N1Y2NlZWRlZCA6IFN0cmljdEJpbmRpbmdGYWls
ZWQ7CiAgICAgfQogCisgICAgdm9pZCBnZXRVc2VkVmFyaWFibGVzKElkZW50aWZpZXJTZXQmIHVz
ZWRWYXJpYWJsZXMpCisgICAgeworICAgICAgICB1c2VkVmFyaWFibGVzLnN3YXAobV91c2VkVmFy
aWFibGVzKTsKKyAgICB9CiAKICAgICB2b2lkIHVzZVZhcmlhYmxlKGNvbnN0IElkZW50aWZpZXIq
IGlkZW50LCBib29sIGlzRXZhbCkKICAgICB7CkBAIC00MTQsNiArNDE5LDcgQEAgcHVibGljOgog
ICAgIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImKTsKIAogICAgIEpT
VGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKSBjb25zdCB7IHJldHVybiBt
X2xleGVyLT5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7IH0KKyAgICBjb25zdCBWZWN0b3I8
UmVmUHRyPFN0cmluZ0ltcGw+PiYmIGNsb3NlZFZhcmlhYmxlcygpIHsgcmV0dXJuIHN0ZDo6bW92
ZShtX2Nsb3NlZFZhcmlhYmxlcyk7IH0KIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgQWxsb3dJbk92
ZXJyaWRlIHsKQEAgLTU0MCw3ICs1NDYsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBwYXJzZUlu
bmVyKCk7CiAKICAgICB2b2lkIGRpZEZpbmlzaFBhcnNpbmcoU291cmNlRWxlbWVudHMqLCBQYXJz
ZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrPiosIAotICAgICAgICBQYXJz
ZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KiwgQ29kZUZlYXR1
cmVzLCBpbnQsIElkZW50aWZpZXJTZXQmKTsKKyAgICAgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xh
cmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiosIENvZGVGZWF0dXJlcywgaW50LCBJZGVudGlm
aWVyU2V0JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJik7CiAKICAgICAvLyBV
c2VkIHRvIGRldGVybWluZSB0eXBlIG9mIGVycm9yIHRvIHJlcG9ydC4KICAgICBib29sIGlzRnVu
Y3Rpb25Cb2R5Tm9kZShTY29wZU5vZGUqKSB7IHJldHVybiBmYWxzZTsgfQpAQCAtODQwLDkgKzg0
NiwxMSBAQCBwcml2YXRlOgogICAgIGNvbnN0IElkZW50aWZpZXIqIG1fbGFzdEZ1bmN0aW9uTmFt
ZTsKICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXJDYWNoZT4gbV9mdW5jdGlvbkNhY2hlOwogICAg
IFNvdXJjZUVsZW1lbnRzKiBtX3NvdXJjZUVsZW1lbnRzOworICAgIGJvb2wgbV9wYXJzaW5nQnVp
bHRpbjsKICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrPiog
bV92YXJEZWNsYXJhdGlvbnM7CiAgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tz
OjpGdW5jdGlvblN0YWNrPiogbV9mdW5jRGVjbGFyYXRpb25zOwogICAgIElkZW50aWZpZXJTZXQg
bV9jYXB0dXJlZFZhcmlhYmxlczsKKyAgICBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiBtX2Ns
b3NlZFZhcmlhYmxlczsKICAgICBDb2RlRmVhdHVyZXMgbV9mZWF0dXJlczsKICAgICBpbnQgbV9u
dW1Db25zdGFudHM7CiAgICAgCkBAIC05NTcsNiArOTY1LDEwIEBAIFBhc3NSZWZQdHI8UGFyc2Vk
Tm9kZT4gcGFyc2UoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uUGFy
YW1ldGVyCiAgICAgICAgIFJlZlB0cjxQYXJzZWROb2RlPiByZXN1bHQgPSBwYXJzZXIucGFyc2U8
UGFyc2VkTm9kZT4oZXJyb3IpOwogICAgICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGlu
ZSkKICAgICAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0
aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKKyAgICAgICAgaWYgKHN0cmljdG5lc3MgPT0gSlNQYXJz
ZUJ1aWx0aW4pIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgICAg
ICAgICByZXN1bHQtPnNldENsb3NlZFZhcmlhYmxlcyhzdGQ6Om1vdmUocGFyc2VyLmNsb3NlZFZh
cmlhYmxlcygpKSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7
CiAgICAgfQogICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBwYXJh
bWV0ZXJzLCBuYW1lLCBzdHJpY3RuZXNzLCBwYXJzZXJNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAppbmRleCA0ZTlhMTdjZDIxY2EzNDE0NmJiZDQ4MTU2
YTM3MmNkNDA0ZGVmNjBjLi5mN2E3NWJmN2MzNzg1N2U0NGI2ZDVkNzFmNDUyOWJiMWFjMWNmNWYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCkBAIC0yOSw3
ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1lbnVtIEpTUGFyc2VyU3RyaWN0bmVzcyB7
IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VTdHJpY3QgfTsKK2VudW0gSlNQYXJzZXJTdHJpY3RuZXNz
IHsgSlNQYXJzZU5vcm1hbCwgSlNQYXJzZUJ1aWx0aW4sIEpTUGFyc2VTdHJpY3QgfTsKIGVudW0g
SlNQYXJzZXJNb2RlIHsgSlNQYXJzZVByb2dyYW1Db2RlLCBKU1BhcnNlRnVuY3Rpb25Db2RlIH07
CiAKIGVudW0gUHJvZmlsZXJNb2RlIHsgUHJvZmlsZXJPZmYsIFByb2ZpbGVyT24gfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCmluZGV4IDgyYTI2NjM5YTc5
MjIwYTA4NDQ1NmI0OGYzMjg1MmQxNDNjNzM5ZDAuLjhjODdhZDlmYWRiZGM0YWYzOWFjOTlkYjJk
ODQ0NWUxM2ZmZmQzNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyVG9rZW5zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJU
b2tlbnMuaApAQCAtMTQ5LDYgKzE0OSw3IEBAIGVudW0gSlNUb2tlblR5cGUgewogICAgIElOVkFM
SURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LID0gNyB8IEVycm9yVG9rZW5GbGFnLAogICAgIFVO
VEVSTUlOQVRFRF9TVFJJTkdfTElURVJBTF9FUlJPUlRPSyA9IDggfCBFcnJvclRva2VuRmxhZyB8
IFVudGVybWluYXRlZEVycm9yVG9rZW5GbGFnLAogICAgIElOVkFMSURfU1RSSU5HX0xJVEVSQUxf
RVJST1JUT0sgPSA5IHwgRXJyb3JUb2tlbkZsYWcsCisgICAgSU5WQUxJRF9QUklWQVRFX05BTUVf
RVJST1JUT0sgPSAxMCB8IEVycm9yVG9rZW5GbGFnCiB9OwogCiBzdHJ1Y3QgSlNUZXh0UG9zaXRp
b24gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAppbmRleCAxOGYz
ODkxNzEzODUyMzYyYzdhNzVhMzA1M2I0NjMxNDE3YmViODFiLi5mMTZmZDNkZTQwNTU5NzBiYTlk
OWM2ZjBhZTYzMThmMjIwNGI2NTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Bcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cmd1bWVudHMuaApAQCAtMjUsNiArMjUsNyBAQAogI2RlZmluZSBBcmd1bWVudHNfaAogCiAjaW5j
bHVkZSAiQ29kZU9yaWdpbi5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5j
bHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIK
ICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKaW5kZXggZGQw
ODk0ZjE0YTAyMWQ1ZjEyNjU4YWNiMDFlNzIxZmNkNmQzNDhjYy4uNWI0YWU4NzE2YjA1NTNiZTQ2
MjM5NTVlOTllMWI0M2ViZjE4ZmUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtMjYs
NyArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFyZ3VtZW50c0l0ZXJh
dG9yUHJvdG90eXBlLmgiCiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1
ZGUgIkpTQXJndW1lbnRzSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5o
IgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IDI3YWM2ZDQ4YTcxZjc5NTUwMmExMGNlYTY0Nzg2
NTQxMzVhNDYzYTAuLjZkYzdiZTU2OTY5ZGU2N2Y2MjEwN2JiM2E1MWEzMDhmYTNiYTc2YmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAK
QEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0FycmF5SXRl
cmF0b3IuaCIKICNpbmNsdWRlICJKU1N0cmluZ0J1aWxkZXIuaCIKKyNpbmNsdWRlICJKU1N0cmlu
Z0lubGluZXMuaCIKICNpbmNsdWRlICJKU1N0cmluZ0pvaW5lci5oIgogI2luY2x1ZGUgIkxvb2t1
cC5oIgogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgpAQCAtNTYsNyArNTcsNiBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NsaWNlKEV4ZWNT
dGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1
bmNTb3J0KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlQcm90b0Z1bmNTcGxpY2UoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1VuU2hpZnQoRXhlY1N0YXRlKik7Ci1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0V2ZXJ5KEV4ZWNTdGF0
ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNG
b3JFYWNoKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlQcm90b0Z1bmNTb21lKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0ZSopOwpAQCAtOTU0LDY5
ICs5NTQsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jTWFw
KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdEFycmF5
KTsKIH0KIAotLy8gRG9jdW1lbnRhdGlvbiBmb3IgdGhlc2UgdGhyZWUgaXMgYXZhaWxhYmxlIGF0
OgotLy8gaHR0cDovL2RldmVsb3Blci10ZXN0Lm1vemlsbGEub3JnL2VuL2RvY3MvQ29yZV9KYXZh
U2NyaXB0XzEuNV9SZWZlcmVuY2U6T2JqZWN0czpBcnJheTpldmVyeQotLy8gaHR0cDovL2RldmVs
b3Blci10ZXN0Lm1vemlsbGEub3JnL2VuL2RvY3MvQ29yZV9KYXZhU2NyaXB0XzEuNV9SZWZlcmVu
Y2U6T2JqZWN0czpBcnJheTpmb3JFYWNoCi0vLyBodHRwOi8vZGV2ZWxvcGVyLXRlc3QubW96aWxs
YS5vcmcvZW4vZG9jcy9Db3JlX0phdmFTY3JpcHRfMS41X1JlZmVyZW5jZTpPYmplY3RzOkFycmF5
OnNvbWUKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0V2ZXJ5
KEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBKU09iamVjdCogdGhpc09iaiA9IGV4ZWMtPmhvc3RU
aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7Ci0gICAg
dW5zaWduZWQgbGVuZ3RoID0gdGhpc09iai0+Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5sZW5ndGgpLnRvVUludDMyKGV4ZWMpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQotICAgIEpT
VmFsdWUgZnVuY3Rpb24gPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBDYWxsRGF0YSBjYWxsRGF0
YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0
YSk7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0KLSAgICBKU1ZhbHVlIGFwcGx5VGhpcyA9IGV4ZWMtPmFy
Z3VtZW50KDEpOwotCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4odHJ1ZSk7Ci0KLSAg
ICB1bnNpZ25lZCBrID0gMDsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVKUyAmJiBpc0pT
QXJyYXkodGhpc09iaikpIHsKLSAgICAgICAgSlNGdW5jdGlvbiogZiA9IGpzQ2FzdDxKU0Z1bmN0
aW9uKj4oZnVuY3Rpb24pOwotICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodGhpc09i
aik7Ci0gICAgICAgIENhY2hlZENhbGwgY2FjaGVkQ2FsbChleGVjLCBmLCAzKTsKLSAgICAgICAg
Zm9yICg7IGsgPCBsZW5ndGggJiYgIWV4ZWMtPmhhZEV4Y2VwdGlvbigpOyArK2spIHsKLSAgICAg
ICAgICAgIGlmIChVTkxJS0VMWSghYXJyYXktPmNhbkdldEluZGV4UXVpY2tseShrKSkpCi0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGNhY2hlZENhbGwu
c2V0VGhpcyhhcHBseVRoaXMpOwotICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudCgw
LCBhcnJheS0+Z2V0SW5kZXhRdWlja2x5KGspKTsKLSAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0
QXJndW1lbnQoMSwganNOdW1iZXIoaykpOwotICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1
bWVudCgyLCB0aGlzT2JqKTsKLSAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FjaGVkQ2Fs
bC5jYWxsKCk7Ci0gICAgICAgICAgICBpZiAoIXJlc3VsdC50b0Jvb2xlYW4oZXhlYykpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKLSAg
ICAgICAgfQotICAgIH0KLSAgICBmb3IgKDsgayA8IGxlbmd0aCAmJiAhZXhlYy0+aGFkRXhjZXB0
aW9uKCk7ICsraykgewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqKTsKLSAgICAg
ICAgaWYgKCF0aGlzT2JqLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaywgc2xvdCkpCi0gICAgICAg
ICAgICBjb250aW51ZTsKLQotICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBlYWNoQXJndW1l
bnRzOwotICAgICAgICBlYWNoQXJndW1lbnRzLmFwcGVuZChzbG90LmdldFZhbHVlKGV4ZWMsIGsp
KTsKLSAgICAgICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQoanNOdW1iZXIoaykpOwotICAgICAgICBl
YWNoQXJndW1lbnRzLmFwcGVuZCh0aGlzT2JqKTsKLQotICAgICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwotCi0gICAgICAgIGJvb2wgcHJlZGljYXRlUmVzdWx0ID0gY2FsbChleGVjLCBmdW5jdGlv
biwgY2FsbFR5cGUsIGNhbGxEYXRhLCBhcHBseVRoaXMsIGVhY2hBcmd1bWVudHMpLnRvQm9vbGVh
bihleGVjKTsKLSAgICAgICAgaWYgKCFwcmVkaWNhdGVSZXN1bHQpIHsKLSAgICAgICAgICAgIHJl
c3VsdCA9IGpzQm9vbGVhbihmYWxzZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKLX0KLQogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0ZvckVhY2goRXhlY1N0YXRlKiBl
eGVjKQogewogICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpLnRv
VGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IDUxMGUzODNmYWU1NzVhYWRhODE3NmMw
NDQxZWU3MjViNDNhNGM3MzIuLmQzMDQ4NzdmZTljZGUxYzA5MTlmZDQ1OTVmODExZWNhYmNlNzcy
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAt
MTQ0LDI0ICsxNDQsMjYgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNoZTo6
Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUoVk0mIHYKICAgICBKU1RleHRQb3Np
dGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lOwogICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4g
cHJvZ3JhbSA9IHBhcnNlPFByb2dyYW1Ob2RlPigmdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigp
LCBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlUHJvZ3JhbUNvZGUsIGVycm9yLCAmcG9zaXRpb25CZWZv
cmVMYXN0TmV3bGluZSk7CiAgICAgaWYgKCFwcm9ncmFtKSB7Ci0gICAgICAgIEFTU0VSVChlcnJv
ci5tX3R5cGUgIT0gUGFyc2VyRXJyb3I6OkVycm9yTm9uZSk7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGVycm9yLm1fdHlwZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKICAgICAgICAgbV9z
b3VyY2VDb2RlLnJlbW92ZShhZGRSZXN1bHQuaXRlcmF0b3IpOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgYW4gaW5wdXQgc3RyaW5nIHRo
YXQgd291bGQgcmVzdWx0IGluIGEgc2luZ2xlIGFub255bW91cyBmdW5jdGlvbiBleHByZXNzaW9u
LgogICAgIFN0YXRlbWVudE5vZGUqIGV4cHJTdGF0ZW1lbnQgPSBwcm9ncmFtLT5zaW5nbGVTdGF0
ZW1lbnQoKTsKLSAgICBBU1NFUlQoZXhwclN0YXRlbWVudCk7Ci0gICAgQVNTRVJUKGV4cHJTdGF0
ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChleHByU3RhdGVt
ZW50KTsKKyAgICBSRUxFQVNFX0FTU0VSVChleHByU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQo
KSk7CiAgICAgRXhwcmVzc2lvbk5vZGUqIGZ1bmNFeHByID0gc3RhdGljX2Nhc3Q8RXhwclN0YXRl
bWVudE5vZGUqPihleHByU3RhdGVtZW50KS0+ZXhwcigpOwotICAgIEFTU0VSVChmdW5jRXhwcik7
CisgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHIpOwogICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmNF
eHByLT5pc0Z1bmNFeHByTm9kZSgpKTsKICAgICBGdW5jdGlvbkJvZHlOb2RlKiBib2R5ID0gc3Rh
dGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZnVuY0V4cHIpLT5ib2R5KCk7CisgICAgUkVMRUFTRV9B
U1NFUlQoIXByb2dyYW0tPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpOworICAgIAogICAgIGJvZHkt
PnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwotICAgIEFTU0VSVChi
b2R5KTsKLSAgICBBU1NFUlQoYm9keS0+aWRlbnQoKS5pc051bGwoKSk7CisgICAgUkVMRUFTRV9B
U1NFUlQoYm9keSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keS0+aWRlbnQoKS5pc051bGwoKSk7
CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0g
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgYm9keSwgdHJ1
ZSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIGJvZHksIHRy
dWUsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24pOwogICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+bV9u
YW1lVmFsdWUuc2V0KHZtLCBmdW5jdGlvbkV4ZWN1dGFibGUsIGpzU3RyaW5nKCZ2bSwgbmFtZS5z
dHJpbmcoKSkpOwogCiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IFNvdXJjZUNvZGVW
YWx1ZSh2bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBtX3NvdXJjZUNvZGUuYWdlKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCmlu
ZGV4IDNmNWM2NDVjMDk4ZDUyN2ZjMGM3MjU5ZTk0NDdlZmJlODg2OGEyOWMuLjJmYzJiNzI3YWZj
ZWVlMWVjMmM2MjVkZTU2NzViM2JlMWNmNjBkNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKQEAgLTI3LDcgKzI3LDEwIEBA
IG5hbWVzcGFjZSBKU0MgewogCiAjZGVmaW5lIElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRShuYW1l
KSAsIG5hbWUodm0sICNuYW1lKQogI2RlZmluZSBJTklUSUFMSVpFX0tFWVdPUkQobmFtZSkgLCBu
YW1lIyNLZXl3b3JkKHZtLCAjbmFtZSkKLSNkZWZpbmUgSU5JVElBTElaRV9QUklWQVRFX05BTUUo
bmFtZSkgLCBuYW1lIyNQcml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tKFByaXZhdGVOYW1lKCkp
KQorI2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFNRShuYW1lKSBcCisgICAgLCBuYW1lIyNQ
cml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tKFByaXZhdGVOYW1lKCkpKSBcCisgICAgLCBtXyMj
bmFtZSMjUHVibGljU3RyaW5nUGFpcihuYW1lLCBuYW1lIyNQcml2YXRlTmFtZSkgXAorCiAKIENv
bW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyhWTSogdm0pCiAgICAgOiBudWxsSWRl
bnRpZmllcigpCkBAIC0zOCw4ICs0MSwyNiBAQCBDb21tb25JZGVudGlmaWVyczo6Q29tbW9uSWRl
bnRpZmllcnMoVk0qIHZtKQogICAgICwgaGFzTmV4dElkZW50aWZpZXIodm0sICJoYXNOZXh0IikK
ICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZV09SRChJTklUSUFMSVpFX0tFWVdP
UkQpCiAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElB
TElaRV9QUk9QRVJUWV9OQU1FKQorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFN
RShJTklUSUFMSVpFX1BST1BFUlRZX05BTUUpCiAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5U
SUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpFX1BSSVZBVEVfTkFNRSkKIHsKIH0K
IAorY29uc3QgSWRlbnRpZmllciogQ29tbW9uSWRlbnRpZmllcnM6OmdldFByaXZhdGVOYW1lKGNv
bnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAoreworI2RlZmluZSBSRVRVUk5fSUZfUFJJVkFU
RV9OQU1FX01BVENIRVMobmFtZSkgaWYgKG1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQYWlyLmZpcnN0
ID09IGlkZW50KSByZXR1cm4gJm1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQYWlyLnNlY29uZDsKKyAg
ICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKFJFVFVS
Tl9JRl9QUklWQVRFX05BTUVfTUFUQ0hFUykKKyN1bmRlZiBSRVRVUk5fSUZfUFJJVkFURV9OQU1F
X01BVENIRVMKKyAgICByZXR1cm4gMDsKK30KKworSWRlbnRpZmllciBDb21tb25JZGVudGlmaWVy
czo6Z2V0UHVibGljTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK3sKKyNkZWZp
bmUgUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKG5hbWUpIGlmIChtXyMjbmFtZSMjUHVi
bGljU3RyaW5nUGFpci5zZWNvbmQgPT0gaWRlbnQpIHJldHVybiBtXyMjbmFtZSMjUHVibGljU3Ry
aW5nUGFpci5maXJzdDsKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9Q
Uk9QRVJUWV9OQU1FKFJFVFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hFUykKKyN1bmRlZiBSRVRV
Uk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBlbXB0eUlkZW50aWZpZXI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmgKaW5kZXggZThmOWVkODJiYzc5NDYyMDM4MjY2YjMwMjA3ODIyNDdiMWZhMjdhMy4uOTI0ZDM2
YWM2OTEzNTAzNTdjYjM4MmIxZWYzYjQwYTBhMDhjMGFiYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0yMiw2ICsyMiw3IEBA
CiAjZGVmaW5lIENvbW1vbklkZW50aWZpZXJzX2gKIAogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIK
KyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
CiAvLyBNYXJrZWRBcmd1bWVudEJ1ZmZlciBvZiBwcm9wZXJ0eSBuYW1lcywgcGFzc2VkIHRvIGEg
bWFjcm8gc28gd2UgY2FuIGRvIHNldCB0aGVtIHVwIHZhcmlvdXMKQEAgLTEzMyw4ICsxMzQsMTAg
QEAKICAgICBtYWNybyhvc3JFeGl0cykgXAogICAgIG1hY3JvKHBhcnNlKSBcCiAgICAgbWFjcm8o
cHJvZmlsZWRCeXRlY29kZXMpIFwKKyAgICBtYWNybyhwcm9taXNlKSBcCiAgICAgbWFjcm8ocHJv
cGVydHlJc0VudW1lcmFibGUpIFwKICAgICBtYWNybyhwcm90b3R5cGUpIFwKKyAgICBtYWNybyhy
ZXNvbHZlKSBcCiAgICAgbWFjcm8oc2V0KSBcCiAgICAgbWFjcm8oc2l6ZSkgXAogICAgIG1hY3Jv
KHNsaWNlKSBcCkBAIC0xNTUsNyArMTU4LDE0IEBACiAgICAgbWFjcm8odmFsdWVzKSBcCiAgICAg
bWFjcm8odmFsdWVPZikgXAogICAgIG1hY3JvKHdpbmRvdykgXAotICAgIG1hY3JvKHdyaXRhYmxl
KQorICAgIG1hY3JvKHdyaXRhYmxlKSBcCisgICAgbWFjcm8oaXRlcmF0b3IpIFwKKyAgICBtYWNy
byhpdGVyYXRvck5leHQpIFwKKyAgICBtYWNybyhyZWplY3QpIFwKKyAgICBtYWNybyhmdWxmaWxs
bWVudEhhbmRsZXIpIFwKKyAgICBtYWNybyhyZWplY3Rpb25IYW5kbGVyKSBcCisgICAgbWFjcm8o
ZGVmZXJyZWQpIFwKKyAgICBtYWNybyhjb3VudGRvd25Ib2xkZXIpIFwKIAogI2RlZmluZSBKU0Nf
Q09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZV09SRChtYWNybykgXAogICAgIG1hY3JvKGJyZWFr
KSBcCkBAIC0yMDMsNyArMjEzLDcgQEAKICAgICBtYWNybyh2b2lkKSBcCiAgICAgbWFjcm8od2hp
bGUpIFwKICAgICBtYWNybyh3aXRoKSBcCi0gICAgbWFjcm8oeWllbGQpCisgICAgbWFjcm8oeWll
bGQpIFwKIAogI2RlZmluZSBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9Q
RVJUWV9OQU1FKG1hY3JvKSBcCiAgICAgbWFjcm8oaXRlcmF0b3IpIFwKQEAgLTIxNiw3ICsyMjYs
MTIgQEAKICAgICBtYWNybyhpbmRleCkgXAogICAgIG1hY3JvKHZhbHVlcykgXAogICAgIG1hY3Jv
KGRlZmVycmVkKSBcCi0gICAgbWFjcm8oY291bnRkb3duSG9sZGVyKQorICAgIG1hY3JvKGNvdW50
ZG93bkhvbGRlcikgXAorICAgIG1hY3JvKE9iamVjdCkgXAorICAgIG1hY3JvKFR5cGVFcnJvcikg
XAorICAgIG1hY3JvKHVuZGVmaW5lZEtleXdvcmQpIFwKKyAgICBtYWNybyhjYWxsKSBcCisgICAg
bWFjcm8oYXBwbHkpCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0yNDAsMTEgKzI1NSwxNSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjZGVmaW5lIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVf
UFJPUEVSVFlfTkFNRV9HTE9CQUwobmFtZSkgY29uc3QgSWRlbnRpZmllciBuYW1lOwogICAgICAg
ICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShKU0NfSURFTlRJRklF
Ul9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFMKQorICAgICAgICBKU0NfRk9SRUFDSF9CVUlM
VElOX0ZVTkNUSU9OX05BTUUoSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJUWV9OQU1FX0dM
T0JBTCkKICN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFM
CiAKLSNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVf
R0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSMjUHJpdmF0ZU5hbWU7CisjZGVmaW5l
IEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTChuYW1l
KSBjb25zdCBJZGVudGlmaWVyIG5hbWUjI1ByaXZhdGVOYW1lOyBjb25zdCBzdGQ6OnBhaXI8SWRl
bnRpZmllciwgSWRlbnRpZmllcj4gbV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXI7CiAgICAgICAg
IEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSlNDX0lE
RU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMKQogI3VuZGVmIEpT
Q19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTAorICAgICAg
ICAKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciogZ2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRp
ZmllciYpIGNvbnN0OworICAgICAgICBJZGVudGlmaWVyIGdldFB1YmxpY05hbWUoY29uc3QgSWRl
bnRpZmllciYpIGNvbnN0OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggMDc1
ODc1ZmIyMzE2YTU1NTcwNTBhNjY5MGNkMGY5ODgyNDg0ZjVmMy4uNWFmOTA4NzU0ZTc0N2Y4Y2Fl
MGNkMDRhZjhkNDkxNTAwNDY4YzJhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC00MSw3ICs0MSw3IEBACiAjaW5jbHVkZSAi
SklULmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIK
LSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
ICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTmFtZVNj
b3BlLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRp
b25zLmNwcAppbmRleCA1NTMzNGJlMmY5ODBhOThmN2ZlYTQyYTA1YmUwZjIwYzAxOWZmMGRkLi5m
YTU3YzAyNjg1ZTUzZDUyNTI4ODA1N2UyMTFkOThiMTA5ODFkNzNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRp
b25zLmNwcApAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJK
U0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5j
bHVkZSAiTExJbnRDb21tb24uaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBDb21tb25T
bG93UGF0aHMgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRp
b25IZWxwZXJzLmNwcAppbmRleCAwNWUxMWUwYjgwYTM0MzBhZWFiMjJiMDIyMmEyMTJmNGE4ZTJj
NDliLi4zNjRjYzcxNjY2MDhiNTAwN2Q0NzdkODczOTE4YTVkNjRiMTY4NjU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAt
ODEsNiArODEsMTEgQEAgSlNPYmplY3QqIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiBKU09iamVjdCogY3JlYXRlVW5kZWZpbmVkVmFyaWFi
bGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogeworICAg
IAorICAgIGlmIChpZGVudC5pbXBsKCktPmlzRW1wdHlVbmlxdWUoKSkgeworICAgICAgICBTdHJp
bmcgbWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBmaW5kIHByaXZhdGUgdmFyaWFibGU6IEAiLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2V0UHVibGljTmFtZShpZGVudCkuc3RyaW5nKCkpKTsKKyAg
ICAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIG1lc3NhZ2UpOworICAgIH0K
ICAgICBTdHJpbmcgbWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBmaW5kIHZhcmlhYmxlOiAiLCBp
ZGVudC5zdHJpbmcoKSkpOwogICAgIHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBt
ZXNzYWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApp
bmRleCAxOTg5NzZiYjNmZTZlNmU5MTE3OTgxMmQxY2FmOWI4YmY5YmZkMGJiLi44ZDU5MGVmMGZm
YzBlYjkwYWM4ZjlhODFkOWJjMjU3MjFjZDM1YzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC00ODQsNyArNDg0LDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBjbGVhckNvZGUoKTsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkg
Y29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFs
KCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRh
YmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigp
LCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlKTsgfQogCiAgICAgdW5z
aWduZWQgbnVtVmFyaWFibGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51
bVZhcmlhYmxlcygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCkgeyBy
ZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpOyB9
CkBAIC01NDAsNyArNTQwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckNvZGUoKTsKIAot
ICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0
YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBm
YWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0
dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmlj
dE1vZGUoKSwgZmFsc2UsIGZhbHNlKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBT
Y3JpcHRFeGVjdXRhYmxlOwpAQCAtNjI4LDcgKzYyOCw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIHJldHVybiBiYXNlbGluZUNvZGVCbG9ja0ZvcihraW5kKTsKICAgICB9Ci0gICAgICAgIAor
CisgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRF
eGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYg
bmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1lKCk7IH0KICAgICBjb25z
dCBJZGVudGlmaWVyJiBpbmZlcnJlZE5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJs
ZS0+aW5mZXJyZWROYW1lKCk7IH0KICAgICBKU1N0cmluZyogbmFtZVZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWVWYWx1ZSgpOyB9CkBAIC02NzUsMTQgKzY3
Niw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2JvZHlJbmNsdWRlc0JyYWNlczsKIH07CiAKLWlu
bGluZSBib29sIGlzSG9zdEZ1bmN0aW9uKEpTVmFsdWUgdmFsdWUsIE5hdGl2ZUZ1bmN0aW9uIG5h
dGl2ZUZ1bmN0aW9uKQotewotICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVu
Y3Rpb24qPihnZXRKU0Z1bmN0aW9uKHZhbHVlKSk7Ci0gICAgaWYgKCFmdW5jdGlvbiB8fCAhZnVu
Y3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1
cm4gZnVuY3Rpb24tPm5hdGl2ZUZ1bmN0aW9uKCkgPT0gbmF0aXZlRnVuY3Rpb247Ci19Ci0KIGlu
bGluZSB2b2lkIEV4ZWN1dGFibGVCYXNlOjpjbGVhckNvZGVWaXJ0dWFsKEV4ZWN1dGFibGVCYXNl
KiBleGVjdXRhYmxlKQogewogICAgIHN3aXRjaCAoZXhlY3V0YWJsZS0+c3RydWN0dXJlKCktPnR5
cGVJbmZvKCkudHlwZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKaW5kZXggYzFiMDhhZjJkODE4ZGFlNTdlMWIwMGZkYTE3
M2E4MTYxMzc1MjliNS4uMTI0OTBjNDBmMzM0MTdlY2E5MjM4NTBhMGRjNjYyZGJiY2Q0MGYzMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5
cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90
eXBlLmNwcApAQCAtMjIsMTIgKzIyLDEzIEBACiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUu
aCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAj
aW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkpTU3Ry
aW5nQnVpbGRlci5oIgotI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlNTdHJp
bmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTGV4ZXIuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgi
CiAKQEAgLTEwOCw3ICsxMDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHMo
SlNGdW5jdGlvbjo6aW5mbygpKSkgewogICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpz
Q2FzdDxKU0Z1bmN0aW9uKj4odGhpc1ZhbHVlKTsKLSAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc0hv
c3RGdW5jdGlvbigpKQorICAgICAgICBpZiAoZnVuY3Rpb24tPmlzSG9zdE9yQnVpbHRpbkZ1bmN0
aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZp
YWxTdHJpbmcoZXhlYywgImZ1bmN0aW9uICIsIGZ1bmN0aW9uLT5uYW1lKGV4ZWMpLCAiKCkge1xu
ICAgIFtuYXRpdmUgY29kZV1cbn0iKSk7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKTsKICAgICAgICAgU3RyaW5nIHNvdXJj
ZVN0cmluZyA9IGV4ZWN1dGFibGUtPnNvdXJjZSgpLnRvU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAppbmRleCA3MmVkMWM3MTI0MDYx
MTY4YjBhZGRkMzExNmY3NTVhMTE3YjhmYjkwLi5iMzc0OTQzMDk5ZTIxNTVhMzk3NzEzMzEzNDcw
MmMyYTI0YWNjODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FjdGl2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0
aXZhdGlvbi5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBKU0FjdGl2YXRpb246OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIAogaW5saW5lIGJvb2wg
SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJv
bFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1i
b2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFt
ZS51aWQoKSk7CiAgICAgaWYgKGVudHJ5LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKQEAgLTcyLDcgKzcyLDcgQEAgaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJs
ZUdldChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QKIAogaW5saW5lIGJv
b2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAgU3ltYm9sVGFibGVFbnRy
eSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5l
R2V0KHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGVudHJ5LmlzTnVsbCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKQEAgLTg5LDcgKzg5LDcgQEAgaW5saW5lIGJvb2wgSlNBY3RpdmF0
aW9uOjpzeW1ib2xUYWJsZVB1dChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU4KICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1
ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CiAgICAgCi0gICAg
U3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0
eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9s
VGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGVudHJ5Lmlz
TnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGVudHJ5LmlzUmVhZE9ubHko
KSkgewpAQCAtMTM2LDcgKzEzNiw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9s
VGFibGVQdXRXaXRoQXR0cmlidXRlcyhWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wCiAgICAgV3Jp
dGVCYXJyaWVyQmFzZTxVbmtub3duPiogcmVnOwogICAgIHsKICAgICAgICAgQ29uY3VycmVudEpJ
VExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUoKS0+bV9sb2NrKTsKLSAgICAgICAgU3ltYm9sVGFi
bGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlKCktPmZpbmQobG9ja2VyLCBwcm9w
ZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0
b3IgaXRlciA9IHN5bWJvbFRhYmxlKCktPmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkp
OwogICAgICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZSgpLT5lbmQobG9ja2VyKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSYgZW50cnkgPSBp
dGVyLT52YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJndW1lbnRzSXRlcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cmd1bWVudHNJdGVyYXRvci5jcHAKaW5kZXggMmZjZjg4MTVjMDU2ODA1ODEyYTc5OTFhNWZmMDYz
ZDY4NzM5NzE2NC4uOWE5MjU4M2FhMGVjOTBkYmIzMjhlY2Q1MGRjMzEzOWFlZjAyNzNiNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVy
YXRvci5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJKU0FyZ3VtZW50c0l0ZXJhdG9y
LmgiCiAKICNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5l
cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmNwcAppbmRleCA5MDA3YjVmN2QzZjEwM2IxZDIxYjFhMzY1YTI2YzIxNWMzMmI0ZDI4
Li5iYTBhMmQzOGU5YzUzZTE1OTM3ZDQ2YTg5NTFhOGM4YzQ1MDc5MjY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1
ZGUgIkV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJJ
bmRleGluZ0hlYWRlcklubGluZXMuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNp
bmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1ZGUgIlJlamVjdC5oIgogI2luY2x1
ZGUgPHd0Zi9BVkxUcmVlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuY3BwCmluZGV4IGNjYTY4ODhiZjk4YTAyODY0NmNhM2RkZGYzNzYyN2NlMGU3ZDkzMDIu
LjMzOWE3YWI3ZjU5NTE1ZTk2YWZiN2VjNGI4NzQxZTdhYThlMTY2ZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCkBAIC0zMiw3ICszMiw5IEBACiAj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSlNOb3RBbk9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIk51bWJlck9iamVjdC5oIgorI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRl
IDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCmluZGV4IGY3Yzg0
NDY0NTA5MmIyNTA4MDVlNmU4ZDQ4MzJjOTk4YmRiODliNTQuLmQ3OTVkZDU2YTk3ZGRiNTk3YzA5
MGZjMmUwYjdmMzA4ZTMzZWJjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGxJbmxpbmVzLmgKQEAgLTI3LDggKzI3LDEwIEBACiAjZGVmaW5lIEpTQ2VsbElubGlu
ZXNfaAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmll
cnMuaCIKICNpbmNsdWRlICJEZWZlckdDLmgiCiAjaW5jbHVkZSAiSGFuZGxlLmgiCisjaW5jbHVk
ZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJK
U09iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDI0MTk2NDYxMGJiNDQyN2IxODYzNzMzNDZl
MjRmNWE4MmQwY2RjYzQuLmFjZTZjMTQ3ZTQ5N2ZlZTIwMjkyZmI1NTM5NzYwZDVkNjk4MjljZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0z
NCw3ICszNCw4IEBACiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJH
ZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCi0jaW5jbHVkZSAiSlNCb3VuZEZ1
bmN0aW9uLmgiIAorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVu
Y3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJK
U05vdEFuT2JqZWN0LmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTEwOSw2ICsxMTAs
MTQgQEAgdm9pZCBKU0Z1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIE5hdGl2ZUV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUsIGludCBsZW5ndGgKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIobGVuZ3RoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
IHwgRG9udEVudW0pOwogfQogCitKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGlu
RnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjcmVh
dGUodm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCk7CisgICAgZnVuY3Rpb24tPnB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoJnZtLCBleGVjdXRhYmxlLT5u
YW1lKCkuc3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAg
ZnVuY3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJl
cihleGVjdXRhYmxlLT5wYXJhbWV0ZXJDb3VudCgpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwg
RG9udEVudW0pOworICAgIHJldHVybiBmdW5jdGlvbjsKK30KKwogT2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGUqIEpTRnVuY3Rpb246OmNyZWF0ZUFsbG9jYXRpb25Qcm9maWxlKEV4ZWNTdGF0ZSogZXhl
Yywgc2l6ZV90IGlubGluZUNhcGFjaXR5KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBA
IC0xNDIsNyArMTUxLDcgQEAgY29uc3QgU3RyaW5nIEpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNw
bGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBleHBsaWNpdE5hbWU7CiAg
ICAgCiAgICAgY29uc3QgU3RyaW5nIGFjdHVhbE5hbWUgPSBuYW1lKGV4ZWMpOwotICAgIGlmICgh
YWN0dWFsTmFtZS5pc0VtcHR5KCkgfHwgaXNIb3N0RnVuY3Rpb24oKSkKKyAgICBpZiAoIWFjdHVh
bE5hbWUuaXNFbXB0eSgpIHx8IGlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBhY3R1YWxOYW1lOwogICAgIAogICAgIHJldHVybiBqc0V4ZWN1dGFibGUoKS0+aW5mZXJy
ZWROYW1lKCkuc3RyaW5nKCk7CkBAIC0xNTAsMTAgKzE1OSwyMCBAQCBjb25zdCBTdHJpbmcgSlNG
dW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKEV4ZWNTdGF0ZSogZXhlYykKIAogY29uc3Qg
U291cmNlQ29kZSogSlNGdW5jdGlvbjo6c291cmNlQ29kZSgpIGNvbnN0CiB7Ci0gICAgaWYgKGlz
SG9zdEZ1bmN0aW9uKCkpCisgICAgaWYgKGlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAg
ICAgIHJldHVybiAwOwogICAgIHJldHVybiAmanNFeGVjdXRhYmxlKCktPnNvdXJjZSgpOwogfQor
ICAgIAorYm9vbCBKU0Z1bmN0aW9uOjppc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGlzSG9zdEZ1bmN0aW9uKCkgfHwgaXNCdWlsdGluRnVuY3Rpb24oKTsKK30K
KworYm9vbCBKU0Z1bmN0aW9uOjppc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0
dXJuICFpc0hvc3RGdW5jdGlvbigpICYmIGpzRXhlY3V0YWJsZSgpLT5pc0J1aWx0aW5GdW5jdGlv
bigpOworfQogCiB2b2lkIEpTRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKIHsKQEAgLTI3Nyw3ICsyOTYsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1
ZSBzbG90QmFzZQogICAgIGlmICghY2FsbGVyLmlzT2JqZWN0KCkgfHwgIWFzT2JqZWN0KGNhbGxl
ciktPmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY2FsbGVyKTsKICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1
bmN0aW9uKj4oY2FsbGVyKTsKLSAgICBpZiAoZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkgfHwg
IWZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgaWYgKGZ1bmN0
aW9uLT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpIHx8ICFmdW5jdGlvbi0+anNFeGVjdXRhYmxl
KCktPmlzU3RyaWN0TW9kZSgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxl
cik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIkZ1bmN0aW9uLmNhbGxlciB1c2VkIHRvIHJldHJpZXZlIHN0cmljdCBjYWxsZXIi
KSkpOwogfQpAQCAtMjk5LDcgKzMxOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTRnVuY3Rpb246Om5h
bWVHZXR0ZXIoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgc2xvdEJhc2UsIEVuY29kCiBib29s
IEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmpl
Y3QpOwotICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RGdW5jdGlvbigpKQorICAgIGlmICh0aGlz
T2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gQmFzZTo6
Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5
cGUpIHsKQEAgLTM2MSw3ICszODAsNyBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5
U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5Tgogdm9pZCBK
U0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVy
YXRpb25Nb2RlIG1vZGUpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U0Z1bmN0aW9uKj4ob2JqZWN0KTsKLSAgICBpZiAoIXRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9u
KCkgJiYgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpIHsKKyAgICBpZiAoIXRo
aXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgJiYgKG1vZGUgPT0gSW5jbHVkZURv
bnRFbnVtUHJvcGVydGllcykpIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHByb3RvdHlwZSBoYXMg
YmVlbiByZWlmaWVkLgogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0KTsKICAg
ICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNP
YmplY3QsIGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHNsb3QpOwpAQCAt
Mzc3LDcgKzM5Niw3IEBAIHZvaWQgSlNGdW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywKIHZvaWQgSlNGdW5jdGlvbjo6
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNGdW5j
dGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2VsbCk7Ci0gICAgaWYgKHRo
aXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkpIHsKKyAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0
T3JCdWlsdGluRnVuY3Rpb24oKSkgewogICAgICAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC00MjUsNyArNDQ0LDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3AKIGJvb2wgSlNGdW5jdGlv
bjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsKLSAgICBpZiAodGhpc09iamVjdC0+aXNI
b3N0RnVuY3Rpb24oKSkKKyAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rp
b24oKSkKICAgICAgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbik7CiAKICAgICBpZiAo
cHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAppbmRleCA3Y2QxNGI4YzJkODAw
ZjYxYmRjMTJlZGQyZGYwNGQzNWZhMDYxOWI2Li44Y2Q5NTBjNGFiNDJlOTM1M2JkNzhkOTQyN2Jh
ZWQ4YzY5Y2QyMjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5oCkBAIC02OCw2ICs2OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBzdGF0aWMgSlNGdW5jdGlv
biogY3JlYXRlQnVpbHRpbkZ1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNHbG9i
YWxPYmplY3QqKTsKKyAgICAgICAgCiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxs
Kik7CiAgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgbmFtZShFeGVj
U3RhdGUqKTsKQEAgLTE0NSw2ICsxNDcsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICByZXR1cm4gbV9hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ7CiAgICAgICAgIH0KIAorICAg
ICAgICBib29sIGlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3Q7CisgICAgICAgIGJvb2wg
aXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9v
bCBpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpIGNvbnN0OworCiAgICAgcHJvdGVjdGVkOgogICAg
ICAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3QgfCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBPdmVycmlkZXNWaXNpdENo
aWxkcmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVG
bGFnczsKIApAQCAtMTY5LDggKzE3NSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6
CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIAot
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkg
Y29uc3Q7Ci0KICAgICAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGFyZ3VtZW50c0dldHRlcihF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7
CiAgICAgICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjYWxsZXJHZXR0ZXIoRXhlY1N0YXRlKiwg
RW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgbGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCmluZGV4IGZlNGUxMTRhZGJjMjM2
NzRkM2I2MGU2MWY3MWNiN2EwNmM5NDc4NGQuLjY5ZjBkNGYzOTZlZjljMmRhOWUwYmY2MDhjMjY0
NDE3MTc5OWJhNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb25JbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbklubGluZXMuaApAQCAtNTMsMTYgKzUzLDI0IEBAIGlubGluZSBib29sIEpTRnVuY3Rp
b246OmlzSG9zdEZ1bmN0aW9uKCkgY29uc3QKIAogaW5saW5lIE5hdGl2ZUZ1bmN0aW9uIEpTRnVu
Y3Rpb246Om5hdGl2ZUZ1bmN0aW9uKCkKIHsKLSAgICBBU1NFUlQoaXNIb3N0RnVuY3Rpb24oKSk7
CisgICAgQVNTRVJUKGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkpOwogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxOYXRpdmVFeGVjdXRhYmxlKj4obV9leGVjdXRhYmxlLmdldCgpKS0+ZnVuY3Rpb24o
KTsKIH0KIAogaW5saW5lIE5hdGl2ZUZ1bmN0aW9uIEpTRnVuY3Rpb246Om5hdGl2ZUNvbnN0cnVj
dG9yKCkKIHsKLSAgICBBU1NFUlQoaXNIb3N0RnVuY3Rpb24oKSk7CisgICAgQVNTRVJUKGlzSG9z
dEZ1bmN0aW9uTm9uSW5saW5lKCkpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxOYXRpdmVFeGVj
dXRhYmxlKj4obV9leGVjdXRhYmxlLmdldCgpKS0+Y29uc3RydWN0b3IoKTsKIH0KIAoraW5saW5l
IGJvb2wgaXNIb3N0RnVuY3Rpb24oSlNWYWx1ZSB2YWx1ZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZl
RnVuY3Rpb24pCit7CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlv
bio+KGdldEpTRnVuY3Rpb24odmFsdWUpKTsKKyAgICBpZiAoIWZ1bmN0aW9uIHx8ICFmdW5jdGlv
bi0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBm
dW5jdGlvbi0+bmF0aXZlRnVuY3Rpb24oKSA9PSBuYXRpdmVGdW5jdGlvbjsKK30KKwogfSAvLyBu
YW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBKU0Z1bmN0aW9uSW5saW5lc19oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0Nv
bnN0cnVjdG9ySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAppbmRleCAyZGRjMjlmNzE4OTdi
YjUxZDM5MGIwNmIyNWE3MzgzMzg3NGJhMGMxLi5lZGQzNDQ5Y2U0N2IxNzM1ZThlNWRiYjA1ZjMx
OGUzZDU1ZjNiZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJ
bmxpbmVzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdDb25zdHJ1Y3RvcklubGluZXNfaAogI2RlZmluZSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0Nv
bnN0cnVjdG9ySW5saW5lc19oCiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2lu
Y2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxp
bmVzLmgKaW5kZXggNmRiODYyNzRjM2I4NzRhYWFkZTUxNTE4OTgyNjcyNmZiMTM2YzE3My4uZjI0
ZWE3MzAzZGY5NjlkYmQyZGNhNTJjODZkMTFjNzhjMDBkYjllYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdJbmxpbmVzLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdJbmxpbmVzX2gKIAogI2luY2x1ZGUgIkFycmF5QnVmZmVyVmlldy5oIgorI2luY2x1ZGUg
IkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRGVmZXJHQy5oIgogI2luY2x1ZGUgIkVy
cm9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaAppbmRleCA0NTk5OTdhNDY0YjkxMTk0NzdiMWJlODRl
MzZjNGUyOTY2YWNlZjg1Li44ZTVmZjgyNzkxZTZmZjhkNGViOWMzNzM2OTFlNDMzZWI3ZDE2YWVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaApAQCAtMjYs
NiArMjYsNyBAQAogI2lmbmRlZiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGlu
ZXNfaAogI2RlZmluZSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXNfaAog
CisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXgg
MmMyNzRjMWE3ZDQ4MWMwN2RmMGQyYmViM2IyOTMxYTM5MDdhNWU2Ni4uMDZlNTRjODRlNzdiOTAz
MmJhYTFkMmRmNDdhMWM3MmU4MGI3ZGVhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMzQ2LDcgKzM0Niw4IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQogCiAgICAgLy8gQ29uc3RydWN0
b3JzCiAKLSAgICBKU0NlbGwqIG9iamVjdENvbnN0cnVjdG9yID0gT2JqZWN0Q29uc3RydWN0b3I6
OmNyZWF0ZSh2bSwgT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywg
bV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKKyAg
ICBPYmplY3RDb25zdHJ1Y3Rvciogb2JqZWN0Q29uc3RydWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rv
cjo6Y3JlYXRlKHZtLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwor
ICAgIG1fb2JqZWN0Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBvYmplY3RDb25zdHJ1Y3Rvcik7
CiAgICAgSlNDZWxsKiBmdW5jdGlvbkNvbnN0cnVjdG9yID0gRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6
Y3JlYXRlKHZtLCBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMs
IG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsK
ICAgICBKU0NlbGwqIGFycmF5Q29uc3RydWN0b3IgPSBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUo
dm0sIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlv
blByb3RvdHlwZS5nZXQoKSksIG1fYXJyYXlQcm90b3R5cGUuZ2V0KCkpOwogCkBAIC00MzIsNyAr
NDMzLDEwIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQog
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyBzdGF0aWNHbG9iYWxzW10gPSB7CiAgICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5OYU4sIGpzTmFOKCksIERvbnRFbnVtIHwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPkluZmluaXR5LCBqc051bWJlcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJs
ZT46OmluZmluaXR5KCkpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCi0gICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3Jk
LCBqc1VuZGVmaW5lZCgpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSkKKyAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQs
IGpzVW5kZWZpbmVkKCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmRQ
cml2YXRlTmFtZSwganNVbmRlZmluZWQoKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9u
bHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+T2JqZWN0
UHJpdmF0ZU5hbWUsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSB8IERvbnREZWxldGUgfCBS
ZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5U
eXBlRXJyb3JQcml2YXRlTmFtZSwgbV90eXBlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpCiAgICAgfTsKICAgICBhZGRTdGF0aWNHbG9iYWxz
KHN0YXRpY0dsb2JhbHMsIFdURl9BUlJBWV9MRU5HVEgoc3RhdGljR2xvYmFscykpOwogICAgIApA
QCAtNjA4LDYgKzYxMiw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9zeW50YXhFcnJvckNvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV90eXBlRXJyb3JDb25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fVVJJRXJyb3JDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fb2JqZWN0Q29uc3RydWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX3Byb21pc2VDb25zdHJ1Y3Rvcik7CiAKICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9ldmFsRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggYjBjYWQzZGM1NDcwZjdjN2EwZTU3MGJkY2Qy
ZGZmYTg5NWUyYWEwYy4uM2E2MTZjNmYwNWVkZjFkMjk1YWY4NDQxYWE2NjUwMGZiOTJhNGE0MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBA
IC02Nyw2ICs2Nyw3IEBAIGNsYXNzIEpTU3RhY2s7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiBjbGFzcyBNaWNyb3Rhc2s7CiBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOworY2xh
c3MgT2JqZWN0Q29uc3RydWN0b3I7CiBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgUHJv
Z3JhbUV4ZWN1dGFibGU7CiBjbGFzcyBSZWdFeHBDb25zdHJ1Y3RvcjsKQEAgLTE1OCw2ICsxNTks
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgV3JpdGVCYXJyaWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+
IG1fdHlwZUVycm9yQ29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPE5hdGl2ZUVycm9yQ29u
c3RydWN0b3I+IG1fVVJJRXJyb3JDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8SlNQcm9t
aXNlQ29uc3RydWN0b3I+IG1fcHJvbWlzZUNvbnN0cnVjdG9yOworICAgIFdyaXRlQmFycmllcjxP
YmplY3RDb25zdHJ1Y3Rvcj4gbV9vYmplY3RDb25zdHJ1Y3RvcjsKIAogICAgIFdyaXRlQmFycmll
cjxKU0Z1bmN0aW9uPiBtX2V2YWxGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlv
bj4gbV9jYWxsRnVuY3Rpb247CkBAIC0zMzAsNiArMzMyLDcgQEAgcHVibGljOgogICAgIFJlZ0V4
cENvbnN0cnVjdG9yKiByZWdFeHBDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhw
Q29uc3RydWN0b3IuZ2V0KCk7IH0KIAogICAgIEVycm9yQ29uc3RydWN0b3IqIGVycm9yQ29uc3Ry
dWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KKyAgICBP
YmplY3RDb25zdHJ1Y3Rvciogb2JqZWN0Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX29i
amVjdENvbnN0cnVjdG9yLmdldCgpOyB9CiAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogZXZh
bEVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2V2YWxFcnJvckNvbnN0cnVjdG9y
LmdldCgpOyB9CiAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogcmFuZ2VFcnJvckNvbnN0cnVj
dG9yKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZUVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KICAg
ICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiByZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yKCkgY29u
c3QgeyByZXR1cm4gbV9yZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CkBAIC01ODEs
NyArNTg0LDcgQEAgaW5saW5lIGJvb2wgSlNHbG9iYWxPYmplY3Q6Omhhc093blByb3BlcnR5Rm9y
V3JpdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUKIAogaW5saW5lIGJvb2wgSlNHbG9i
YWxPYmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVydHkoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKIHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5l
R2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlRW50cnkgZW50
cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBy
ZXR1cm4gIWVudHJ5LmlzTnVsbCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAKaW5kZXggMmI2N2ExZDllZWQ4NGU5OTU2ZjhiYjk2ODM4NGM4NGNhZWE1
M2NmZi4uMmVhMmMyNGU2ZWFiNGNkMGQ3ZmZlZDY2NWVmNGFlNDFhZjA3NTBmMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtODcsNyArODcsNyBAQCBz
dGF0aWMgaW5saW5lIHZvaWQgZ2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgQ2xhc3NJbmZvKiBjbGFzcwogICAgICAgICBpbnQgaGFzaFNpemVNYXNrID0gdGFibGUt
PmNvbXBhY3RTaXplIC0gMTsKICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IHRhYmxl
LT50YWJsZTsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gaGFzaFNpemVNYXNrOyArK2ks
ICsrZW50cnkpIHsKLSAgICAgICAgICAgIGlmIChlbnRyeS0+a2V5KCkgJiYgKCEoZW50cnktPmF0
dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKSkgJiYgISgoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKSAmJiBkaWRSZWlmeSkp
CisgICAgICAgICAgICBpZiAoZW50cnktPmtleSgpICYmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkg
JiBEb250RW51bSkgfHwgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpICYmICEo
KGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikgJiYgZGlkUmVpZnkpKQog
ICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGVudHJ5LT5rZXkoKSk7CiAgICAgICAg
IH0KICAgICB9CkBAIC0xNjE4LDcgKzE2MTgsNyBAQCB2b2lkIEpTT2JqZWN0OjpyZWlmeVN0YXRp
Y0Z1bmN0aW9uc0ZvckRlbGV0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpcyk7CiAgICAgICAgIGZvciAoSGFzaFRh
YmxlOjpDb25zdEl0ZXJhdG9yIGl0ZXIgPSBoYXNoVGFibGUtPmJlZ2luKHZtKTsgaXRlciAhPSBo
YXNoVGFibGUtPmVuZCh2bSk7ICsraXRlcikgewotICAgICAgICAgICAgaWYgKGl0ZXItPmF0dHJp
YnV0ZXMoKSAmIEZ1bmN0aW9uKQorICAgICAgICAgICAgaWYgKGl0ZXItPmF0dHJpYnV0ZXMoKSAm
IEJ1aWx0aW5PckZ1bmN0aW9uKQogICAgICAgICAgICAgICAgIHNldFVwU3RhdGljRnVuY3Rpb25T
bG90KGdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksICppdGVyLCB0aGlzLCBJZGVudGlmaWVy
KCZ2bSwgaXRlci0+a2V5KCkpLCBzbG90KTsKICAgICAgICAgfQogICAgIH0KQEAgLTIyMzYsNiAr
MjIzNiwxNiBAQCB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbgogICAgIHB1dERpcmVjdCh2bSwgcHJv
cGVydHlOYW1lLCBmdW5jdGlvbiwgYXR0cmlidXRlcyk7CiB9CiAKK3ZvaWQgSlNPYmplY3Q6OnB1
dERpcmVjdEJ1aWx0aW5GdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCBGdW5jdGlvbkV4ZWN1dGFibGUq
IGZ1bmN0aW9uRXhlY3V0YWJsZSwgdW5zaWduZWQgYXR0cmlidXRlcykKK3sKKyAgICBTdHJpbmdJ
bXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsKKyAgICBpZiAoIW5hbWUpCisg
ICAgICAgIG5hbWUgPSB2bS5wcm9wZXJ0eU5hbWVzLT5hbm9ueW1vdXMuaW1wbCgpOworICAgIEFT
U0VSVChuYW1lKTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0
ZUJ1aWx0aW5GdW5jdGlvbih2bSwgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVu
Y3Rpb25FeGVjdXRhYmxlKSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBwdXREaXJlY3Qodm0sIHByb3Bl
cnR5TmFtZSwgZnVuY3Rpb24sIGF0dHJpYnV0ZXMpOworfQorCiB2b2lkIEpTT2JqZWN0OjpwdXRE
aXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIHVuc2ln
bmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmlu
c2ljIGludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBTdHJpbmdJbXBsKiBu
YW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oCmluZGV4IDAyYjEzN2IzNTBjMmZhODMyNWJkM2I5NjQ3MTEyYWJlODc2
ZjM4M2YuLmRkZTU5N2VmZmFlYzBmMWI4ZDQ0YzI5MTE5NTAzMDFmMDYwMDdlOTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtMjksNyArMjksNiBAQAogI2lu
Y2x1ZGUgIkJ1dHRlcmZseS5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNs
YXNzSW5mby5oIgotI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiQ29w
eVdyaXRlQmFycmllci5oIgogI2luY2x1ZGUgIkRlZmVyR0MuaCIKICNpbmNsdWRlICJIZWFwLmgi
CkBAIC01ODEsNiArNTgwLDcgQEAgcHVibGljOgogICAgIHZvaWQgcHV0RGlyZWN0VW5kZWZpbmVk
KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgeyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5zZXRV
bmRlZmluZWQoKTsgfQogCiAgICAgdm9pZCBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5n
dGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAg
IHZvaWQgcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25z
dCBQcm9wZXJ0eU5hbWUmLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KTsKICAgICB2b2lkIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oVk0m
LCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9u
TGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsK
IAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0
b3ImLCBib29sIHNob3VsZFRocm93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAppbmRleCA0MDI2MTk2MzNmYTA2ZmQy
NTRiM2YyYTdhOGNjNzFlODA3YWFmOTExLi4xN2QyYWI2NWE4OGZmYjEzZmE5YTZjOGY1ODNjYTg0
NGFmODMyMjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2VDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSlNQ
cm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU1Byb21pc2VGdW5jdGlvbnMuaCIKICNpbmNs
dWRlICJKU1Byb21pc2VQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIK
ICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJOdW1iZXJPYmplY3QuaCIKICNpbmNsdWRl
ICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCmluZGV4IDY4YThiZDg3ZDM4YWRi
YmI5ZGQyYWM5ZWM0YjQ5ZDVlZjQ1NDlkNTYuLjIzN2M0MmJiMGRhMGYxNjY3NmViMTFhZGU4MTgw
YTdiMDZkOThlYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCkBAIC0yOSw3ICsyOSw5IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogCisjaW5j
bHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgor
I2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAK
IG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCmluZGV4IGY0MzYyZmYzNTRlZTZhNTAyMjFiYjcz
MWQxYTI2MTFlNmRkNjFiYzAuLmQwNzM3MTlkZTE2MGQyZjI5MjExMGE1OTZhMTA1ZTJmYTIxMTVm
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlO
YW1lSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmgKQEAgLTMxLDcgKzMxLDYgQEAKIAogI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5j
bHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCmluZGV4IDJiMWNkZGRjNTg0MWQ2MGQxNTdh
MmU2MWY3MDJiMGVlNWZhMWQ2NzYuLmUzOTM0MTYwYWVhOTI2ZWYxNTkzMmY4NzkwZTI0YzUyYWYw
MmQzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaApAQCAtMjQs
NyArMjQsNiBAQAogI2RlZmluZSBKU1N0cmluZ19oCiAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIK
LSNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJQcm9wZXJ0eURlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJQcm9wZXJ0eVNsb3Qu
aCIKQEAgLTQ3MiwzMyArNDcxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5saW5lIEpTU3Ry
aW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMp
IHsgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZygmZXhlYy0+dm0oKSwgcyk7IH0KICAgICBpbmxp
bmUgSlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcm
IHMpIHsgcmV0dXJuIGpzT3duZWRTdHJpbmcoJmV4ZWMtPnZtKCksIHMpOyB9CiAKLSAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgSlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKLSAg
ICB7Ci0gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxl
bmd0aCkgewotICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RW51bSB8IERvbnRE
ZWxldGUgfCBSZWFkT25seSwganNOdW1iZXIobV9sZW5ndGgpKTsKLSAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5h
c0luZGV4KCk7Ci0gICAgICAgIGlmIChpIDwgbV9sZW5ndGgpIHsKLSAgICAgICAgICAgIEFTU0VS
VChpICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCk7IC8vIE5vIG5lZWQgZm9yIGFuIGV4cGxp
Y2l0IGNoZWNrLCB0aGUgYWJvdmUgdGVzdCB3b3VsZCBhbHdheXMgZmFpbCEKLSAgICAgICAgICAg
IHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBnZXRJbmRleChleGVj
LCBpKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0gICAgICAgICAgICAKLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wg
SlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQotICAgIHsKLSAgICAgICAgaWYgKHBy
b3BlcnR5TmFtZSA8IG1fbGVuZ3RoKSB7Ci0gICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMs
IERvbnREZWxldGUgfCBSZWFkT25seSwgZ2V0SW5kZXgoZXhlYywgcHJvcGVydHlOYW1lKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0KICAgICBpbmxpbmUgYm9vbCBpc0pTU3RyaW5nKEpTVmFsdWUgdikgeyByZXR1
cm4gdi5pc0NlbGwoKSAmJiB2LmFzQ2VsbCgpLT5jbGFzc0luZm8oKSA9PSBKU1N0cmluZzo6aW5m
bygpOyB9CiAKICAgICAvLyAtLS0gSlNWYWx1ZSBpbmxpbmVzIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KQEAgLTUyOCwzMiArNTAwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJl
dHVybiB0b1dURlN0cmluZ1Nsb3dDYXNlKGV4ZWMpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJ
TkUgU3RyaW5nIGlubGluZUpTVmFsdWVOb3RTdHJpbmd0b1N0cmluZyhjb25zdCBKU1ZhbHVlJiB2
YWx1ZSwgRXhlY1N0YXRlKiBleGVjKQotICAgIHsKLSAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKLSAgICAgICAgaWYgKHZhbHVlLmlzSW50MzIoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5u
dW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNJbnQzMigpKTsKLSAgICAgICAgaWYgKHZhbHVlLmlz
RG91YmxlKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0ubnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVl
LmFzRG91YmxlKCkpOwotICAgICAgICBpZiAodmFsdWUuaXNUcnVlKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+dHJ1ZUtleXdvcmQuc3RyaW5nKCk7Ci0gICAgICAgIGlm
ICh2YWx1ZS5pc0ZhbHNlKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+
ZmFsc2VLZXl3b3JkLnN0cmluZygpOwotICAgICAgICBpZiAodmFsdWUuaXNOdWxsKCkpCi0gICAg
ICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+bnVsbEtleXdvcmQuc3RyaW5nKCk7Ci0g
ICAgICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICAgICAgcmV0dXJuIHZtLnBy
b3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQuc3RyaW5nKCk7Ci0gICAgICAgIHJldHVybiB2
YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lO
TElORSBTdHJpbmcgSlNWYWx1ZTo6dG9XVEZTdHJpbmdJbmxpbmUoRXhlY1N0YXRlKiBleGVjKSBj
b25zdAotICAgIHsKLSAgICAgICAgaWYgKGlzU3RyaW5nKCkpCi0gICAgICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8SlNTdHJpbmcqPihhc0NlbGwoKSktPnZhbHVlKGV4ZWMpOwotCi0gICAgICAg
IHJldHVybiBpbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcoKnRoaXMsIGV4ZWMpOwotICAg
IH0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBKU1N0cmluZ19oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM3OGMwNWZjODBkODhlODUzN2M5ZDJhNWVhYjlmZjBiYTliNjBhNzUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaApAQCAt
MCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBKU1N0cmluZ0lubGluZXNfaAorI2RlZmluZSBKU1N0cmluZ0lubGlu
ZXNfaAorCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitBTFdBWVNfSU5MSU5FIGJvb2wgSlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKK3sKKyAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5n
dGgpIHsKKyAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RW51bSB8IERvbnREZWxldGUg
fCBSZWFkT25seSwganNOdW1iZXIobV9sZW5ndGgpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIAorICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOworICAg
IGlmIChpIDwgbV9sZW5ndGgpIHsKKyAgICAgICAgQVNTRVJUKGkgIT0gUHJvcGVydHlOYW1lOjpO
b3RBbkluZGV4KTsgLy8gTm8gbmVlZCBmb3IgYW4gZXhwbGljaXQgY2hlY2ssIHRoZSBhYm92ZSB0
ZXN0IHdvdWxkIGFsd2F5cyBmYWlsIQorICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnRE
ZWxldGUgfCBSZWFkT25seSwgZ2V0SW5kZXgoZXhlYywgaSkpOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCitBTFdBWVNfSU5MSU5FIGJv
b2wgSlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGlmIChwcm9wZXJ0
eU5hbWUgPCBtX2xlbmd0aCkgeworICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnREZWxl
dGUgfCBSZWFkT25seSwgZ2V0SW5kZXgoZXhlYywgcHJvcGVydHlOYW1lKSk7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0FMV0FZU19J
TkxJTkUgU3RyaW5nIGlubGluZUpTVmFsdWVOb3RTdHJpbmd0b1N0cmluZyhjb25zdCBKU1ZhbHVl
JiB2YWx1ZSwgRXhlY1N0YXRlKiBleGVjKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgaWYgKHZhbHVlLmlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIHZtLm51bWVyaWNTdHJpbmdz
LmFkZCh2YWx1ZS5hc0ludDMyKCkpOworICAgIGlmICh2YWx1ZS5pc0RvdWJsZSgpKQorICAgICAg
ICByZXR1cm4gdm0ubnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVlLmFzRG91YmxlKCkpOworICAgIGlm
ICh2YWx1ZS5pc1RydWUoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPnRydWVL
ZXl3b3JkLnN0cmluZygpOworICAgIGlmICh2YWx1ZS5pc0ZhbHNlKCkpCisgICAgICAgIHJldHVy
biB2bS5wcm9wZXJ0eU5hbWVzLT5mYWxzZUtleXdvcmQuc3RyaW5nKCk7CisgICAgaWYgKHZhbHVl
LmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+bnVsbEtleXdvcmQu
c3RyaW5nKCk7CisgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiB2
bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLnN0cmluZygpOworICAgIHJldHVybiB2
YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7Cit9CisgICAgCitBTFdBWVNfSU5MSU5F
IFN0cmluZyBKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
Cit7CisgICAgaWYgKGlzU3RyaW5nKCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU1N0
cmluZyo+KGFzQ2VsbCgpKS0+dmFsdWUoZXhlYyk7CisgICAgCisgICAgcmV0dXJuIGlubGluZUpT
VmFsdWVOb3RTdHJpbmd0b1N0cmluZygqdGhpcywgZXhlYyk7Cit9CisKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmpl
Y3QuY3BwCmluZGV4IDJhYzI1MjRjNWRmZGEzZDEyMjQ5ZDc3OTBhZGMzMTI5ZTNjMGU4NzEuLmZi
YzhiODk1ZWFlNmFmNzg4ODM5YmViNWU4M2Q3YjZiOTc5MjhmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwCkBAIC02
NCw2ICs2NCw4IEBAIHZvaWQgSlNTeW1ib2xUYWJsZU9iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0CiAgICAgICAgIENvbmN1cnJlbnRK
SVRMb2NrZXIgbG9ja2VyKHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPm1fbG9jayk7CiAgICAg
ICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGVuZCA9IHRoaXNPYmplY3QtPnN5bWJvbFRh
YmxlKCktPmVuZChsb2NrZXIpOwogICAgICAgICBmb3IgKFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJh
dG9yIGl0ID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+YmVnaW4obG9ja2VyKTsgaXQgIT0g
ZW5kOyArK2l0KSB7CisgICAgICAgICAgICBpZiAoaXQtPmtleS0+aXNFbXB0eVVuaXF1ZSgpKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKCEoaXQtPnZhbHVlLmdl
dEF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKSkKICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4
ZWMsIGl0LT5rZXkuZ2V0KCkpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCmluZGV4IGI1YjIwYTg0NWI2YWI2
NDQyNGIzN2UzMWIyNzc0ZWY5MDUzNTNmN2YuLmQwM2IyNDUxMWMyZGUxOTU5ZmI1ZjU2ZDY0OWM2
NGQwZWZlMDY4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3ltYm9sVGFibGVPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N5bWJvbFRhYmxlT2JqZWN0LmgKQEAgLTcyLDcgKzcyLDcgQEAgaW5saW5lIGJvb2wgc3ltYm9s
VGFibGVHZXQoCiB7CiAgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3lt
Ym9sVGFibGUoKTsKICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5t
X2xvY2spOwotICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJs
ZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFi
bGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0
eU5hbWUudWlkKCkpOwogICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBlbnRyeSA9
IGl0ZXItPnZhbHVlOwpAQCAtODcsNyArODcsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdl
dCgKIHsKICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJs
ZSgpOwogICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7
Ci0gICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQo
bG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZTo6TWFw
OjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51
aWQoKSk7CiAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+
dmFsdWU7CkBAIC0xMDQsNyArMTA0LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiB7
CiAgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9sVGFibGUoKTsK
ICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2spOwotICAg
IFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tl
ciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRl
cmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkp
OwogICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBlbnRyeSA9IGl0ZXItPnZhbHVl
OwpAQCAtMTI2LDcgKzEyNiw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0KAogICAgIHsK
ICAgICAgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9sVGFibGUo
KTsKICAgICAgICAgR0NTYWZlQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUu
bV9sb2NrLCBleGVjLT52bSgpLmhlYXApOwotICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVy
YXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNO
YW1lKCkpOworICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9s
VGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgICAgIGlmIChpdGVy
ID09IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICBib29sIHdhc0ZhdDsKQEAgLTE1OSw3ICsxNTksNyBAQCBpbmxpbmUgYm9vbCBzeW1i
b2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKAogICAgIHsKICAgICAgICAgU3ltYm9sVGFibGUmIHN5
bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9sVGFibGUoKTsKICAgICAgICAgQ29uY3VycmVudEpJ
VExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICAgICAgU3ltYm9sVGFibGU6
Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5h
bWUucHVibGljTmFtZSgpKTsKKyAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRl
ciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgICAg
ICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSYgZW50cnkgPSBpdGVyLT52YWx1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCmluZGV4IGE4MDZkZDA1MmEw
Y2JlZTRjYWMyY2FhNmUwOGM2NzE2MDA1YzI3MGMuLmE5NzY1MjAxYjlmNTE4NjQxNDIzZGRlMGZl
MGUyZTUxYThjZTczYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0xvb2t1cC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNw
cApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIEhhc2hUYWJsZTo6ZGVsZXRlVGFibGUoKSBjb25zdAog
Ym9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hF
bnRyeSogZW50cnksIEpTT2JqZWN0KiB0aGlzT2JqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgQVNTRVJUKHRoaXNPYmotPmdsb2JhbE9iamVj
dCgpKTsKLSAgICBBU1NFUlQoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKTsKKyAgICBB
U1NFUlQoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKTsKICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0ID0gdGhpc09iai0+Z2V0RGlyZWN0T2Zmc2V0KHZtLCBwcm9wZXJ0eU5hbWUs
IGF0dHJpYnV0ZXMpOwpAQCAtNzksOSArNzksMTMgQEAgYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9u
U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0Kgog
ICAgICAgICBpZiAodGhpc09iai0+c3RhdGljRnVuY3Rpb25zUmVpZmllZCgpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3ROYXRpdmVG
dW5jdGlvbigKLSAgICAgICAgICAgIHZtLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgcHJvcGVy
dHlOYW1lLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSwKLSAgICAgICAgICAgIGVudHJ5LT5mdW5j
dGlvbigpLCBlbnRyeS0+aW50cmluc2ljKCksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAgICAg
ICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW4pCisgICAgICAgICAgICB0aGlzT2Jq
LT5wdXREaXJlY3RCdWlsdGluRnVuY3Rpb24odm0sIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBw
cm9wZXJ0eU5hbWUsIGVudHJ5LT5idWlsdGluR2VuZXJhdG9yKCkodm0pLCBlbnRyeS0+YXR0cmli
dXRlcygpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3RO
YXRpdmVGdW5jdGlvbigKKyAgICAgICAgICAgICAgICB2bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0
KCksIHByb3BlcnR5TmFtZSwgZW50cnktPmZ1bmN0aW9uTGVuZ3RoKCksCisgICAgICAgICAgICAg
ICAgZW50cnktPmZ1bmN0aW9uKCksIGVudHJ5LT5pbnRyaW5zaWMoKSwgZW50cnktPmF0dHJpYnV0
ZXMoKSk7CisgICAgICAgIH0KICAgICAgICAgb2Zmc2V0ID0gdGhpc09iai0+Z2V0RGlyZWN0T2Zm
c2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwogICAgICAgICBBU1NFUlQoaXNWYWxp
ZE9mZnNldChvZmZzZXQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Mb29rdXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1
cC5oCmluZGV4IGJkZTgzZDRhNmZjMzU1Nzc4NTBlMzFlODhiYzM5ZmQwNWY3YmNlNTIuLmRiYTM4
OWU5ZTI0M2RkMGVjYjJiYTk4ZjM5NGQ0MDc5ZjlkZWE5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0xvb2t1cC5oCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IC8vIGllLiB0eXBlZGVmIEpTVmFsdWUgKCpHZXRGdW5jdGlvbikoRXhlY1N0YXRlKiwgSlNPYmpl
Y3QqIGJhc2VPYmplY3QpCiAgICAgdHlwZWRlZiBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBH
ZXRGdW5jdGlvbjsKICAgICB0eXBlZGVmIFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jIFB1
dEZ1bmN0aW9uOworICAgIHR5cGVkZWYgRnVuY3Rpb25FeGVjdXRhYmxlKiAoKkJ1aWx0aW5HZW5l
cmF0b3IpKFZNJik7CiAKICAgICBjbGFzcyBIYXNoRW50cnkgewogICAgICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKQEAgLTY4LDExICs2OSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgIHJldHVybiBtX2ludHJpbnNpYzsKICAgICAgICAgfQogCisgICAgICAgIEJ1aWx0aW5H
ZW5lcmF0b3IgYnVpbHRpbkdlbmVyYXRvcigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAm
IEJ1aWx0aW4pOyByZXR1cm4gbV91LmJ1aWx0aW5HZW5lcmF0b3IuZ2VuZXJhdG9yVmFsdWU7IH0K
ICAgICAgICAgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24oKSBjb25zdCB7IEFTU0VSVChtX2F0dHJp
YnV0ZXMgJiBGdW5jdGlvbik7IHJldHVybiBtX3UuZnVuY3Rpb24uZnVuY3Rpb25WYWx1ZTsgfQog
ICAgICAgICB1bnNpZ25lZCBjaGFyIGZ1bmN0aW9uTGVuZ3RoKCkgY29uc3QgeyBBU1NFUlQobV9h
dHRyaWJ1dGVzICYgRnVuY3Rpb24pOyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4o
bV91LmZ1bmN0aW9uLmxlbmd0aCk7IH0KIAotICAgICAgICBHZXRGdW5jdGlvbiBwcm9wZXJ0eUdl
dHRlcigpIGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pKTsgcmV0dXJu
IG1fdS5wcm9wZXJ0eS5nZXQ7IH0KLSAgICAgICAgUHV0RnVuY3Rpb24gcHJvcGVydHlQdXR0ZXIo
KSBjb25zdCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKSk7IHJldHVybiBtX3Uu
cHJvcGVydHkucHV0OyB9CisgICAgICAgIEdldEZ1bmN0aW9uIHByb3BlcnR5R2V0dGVyKCkgY29u
c3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBCdWlsdGluT3JGdW5jdGlvbikpOyByZXR1cm4g
bV91LnByb3BlcnR5LmdldDsgfQorICAgICAgICBQdXRGdW5jdGlvbiBwcm9wZXJ0eVB1dHRlcigp
IGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1dGVzICYgQnVpbHRpbk9yRnVuY3Rpb24pKTsgcmV0
dXJuIG1fdS5wcm9wZXJ0eS5wdXQ7IH0KIAogICAgICAgICBpbnRwdHJfdCBsZXhlclZhbHVlKCkg
Y29uc3QgeyBBU1NFUlQoIW1fYXR0cmlidXRlcyk7IHJldHVybiBtX3UubGV4ZXIudmFsdWU7IH0K
IApAQCAtOTQsNiArOTYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgaW50
cHRyX3QgbGVuZ3RoOyAvLyBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBmdW5jdGlvbgogICAgICAg
ICAgICAgfSBmdW5jdGlvbjsKICAgICAgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAgICAg
QnVpbHRpbkdlbmVyYXRvciBnZW5lcmF0b3JWYWx1ZTsKKyAgICAgICAgICAgICAgICBpbnRwdHJf
dCB1bnVzZWQ7CisgICAgICAgICAgICB9IGJ1aWx0aW5HZW5lcmF0b3I7CisgICAgICAgICAgICBz
dHJ1Y3QgewogICAgICAgICAgICAgICAgIEdldEZ1bmN0aW9uIGdldDsKICAgICAgICAgICAgICAg
ICBQdXRGdW5jdGlvbiBwdXQ7CiAgICAgICAgICAgICB9IHByb3BlcnR5OwpAQCAtMjA5LDcgKzIx
NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIEFMV0FZU19JTkxJ
TkUgY29uc3QgSGFzaEVudHJ5KiBlbnRyeShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25z
dAogICAgICAgICB7Ci0gICAgICAgICAgICBTdHJpbmdJbXBsKiBpbXBsID0gcHJvcGVydHlOYW1l
LnB1YmxpY05hbWUoKTsKKyAgICAgICAgICAgIFN0cmluZ0ltcGwqIGltcGwgPSBwcm9wZXJ0eU5h
bWUudWlkKCk7CiAgICAgICAgICAgICBpZiAoIWltcGwpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IDA7CiAgICAgICAgIApAQCAtMjQ5LDcgKzI1NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBpZiAoIWVudHJ5KSAvLyBub3QgZm91bmQsIGZvcndhcmQgdG8gcGFyZW50CiAgICAgICAgICAg
ICByZXR1cm4gUGFyZW50SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iaiwgZXhlYywgcHJv
cGVydHlOYW1lLCBzbG90KTsKIAotICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEZ1
bmN0aW9uKQorICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0
aW9uKQogICAgICAgICAgICAgcmV0dXJuIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KGV4ZWMsIGVu
dHJ5LCB0aGlzT2JqLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCiAgICAgICAgIHNsb3Quc2V0Q2Fj
aGVhYmxlQ3VzdG9tKHRoaXNPYmosIGVudHJ5LT5hdHRyaWJ1dGVzKCksIGVudHJ5LT5wcm9wZXJ0
eUdldHRlcigpKTsKQEAgLTI4Niw3ICsyOTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
aWYgKCFlbnRyeSkgLy8gbm90IGZvdW5kLCBmb3J3YXJkIHRvIHBhcmVudAogICAgICAgICAgICAg
cmV0dXJuIFBhcmVudEltcDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmosIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiAKLSAgICAgICAgQVNTRVJUKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAm
IEZ1bmN0aW9uKSk7CisgICAgICAgIEFTU0VSVCghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWls
dGluT3JGdW5jdGlvbikpOwogCiAgICAgICAgIHNsb3Quc2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXNP
YmosIGVudHJ5LT5hdHRyaWJ1dGVzKCksIGVudHJ5LT5wcm9wZXJ0eUdldHRlcigpKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC0yOTUsNyArMzAxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
aW5saW5lIHZvaWQgcHV0RW50cnkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoRW50cnkqIGVu
dHJ5LCBKU09iamVjdCogYmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogICAgIHsKICAgICAgICAgLy8gSWYgdGhpcyBp
cyBhIGZ1bmN0aW9uIHB1dCBpdCBhcyBhbiBvdmVycmlkZSBwcm9wZXJ0eS4KLSAgICAgICAgaWYg
KGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikgeworICAgICAgICBpZiAoZW50cnktPmF0
dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSB7CiAgICAgICAgICAgICBpZiAoSlNPYmpl
Y3QqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4oc2xvdC50aGlzVmFsdWUo
KSkpCiAgICAgICAgICAgICAgICAgdGhpc09iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIHBy
b3BlcnR5TmFtZSwgdmFsdWUpOwogICAgICAgICB9IGVsc2UgaWYgKCEoZW50cnktPmF0dHJpYnV0
ZXMoKSAmIFJlYWRPbmx5KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAppbmRleCBkNWU3MjhjMmNkMTAyMGE0
N2U0YWRjZDY0OWNkMWZmZmE1Y2Q2YTgzLi5kY2EyZmQ4ZDFmNmFjMjNiOGZmODE3Y2JiMThmYWFl
N2JjZDU5NzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRp
dmVFcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtMzgsNiArMzgsMjAgQEAgTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvcjo6TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlKQogewogfQogCit2b2lkIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBw
cm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSwgbmFtZSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworICAg
IAorICAgIE5hdGl2ZUVycm9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBOYXRpdmVFcnJvclByb3Rv
dHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZVN0cnVjdHVyZSwgbmFtZSwg
dGhpcyk7CisgICAgCisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgs
IGpzTnVtYmVyKDEpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7IC8vIEVDTUEg
MTUuMTEuNy41CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUs
IHByb3RvdHlwZSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIG1fZXJy
b3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBFcnJvckluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlKSk7CisgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1
cmUpOworICAgIEFTU0VSVChtX2Vycm9yU3RydWN0dXJlLT5pc09iamVjdCgpKTsKK30KKwogdm9p
ZCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogdGhpc09i
amVjdCA9IGpzQ2FzdDxOYXRpdmVFcnJvckNvbnN0cnVjdG9yKj4oY2VsbCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgK
aW5kZXggNzQwZDNmOTMzMjkyZmQyYWNjYjRiOTkwMzQ0MzEyYjkzMTlhZTExMC4uNDM4YTNhZmI5
YmIwZjY0MTJjOTc5MzIyMzBjODg3MTA5NjFmNTQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaApAQCAtNTEsMTkg
KzUxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1
cmUoKSB7IHJldHVybiBtX2Vycm9yU3RydWN0dXJlLmdldCgpOyB9CiAKICAgICBwcm90ZWN0ZWQ6
Ci0gICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBu
YW1lKQotICAgICAgICB7Ci0gICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgbmFt
ZSk7Ci0gICAgICAgICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7Ci0KLSAgICAgICAgICAg
IE5hdGl2ZUVycm9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBOYXRpdmVFcnJvclByb3RvdHlwZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZVN0cnVjdHVyZSwgbmFtZSwgdGhpcyk7
Ci0KLSAgICAgICAgICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBq
c051bWJlcigxKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOyAvLyBFQ01BIDE1
LjExLjcuNQotICAgICAgICAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUsIHByb3RvdHlwZSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwotICAg
ICAgICAgICAgbV9lcnJvclN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEVycm9ySW5zdGFuY2U6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUpKTsKLSAgICAgICAgICAg
IEFTU0VSVChtX2Vycm9yU3RydWN0dXJlKTsKLSAgICAgICAgICAgIEFTU0VSVChtX2Vycm9yU3Ry
dWN0dXJlLT5pc09iamVjdCgpKTsKLSAgICAgICAgfQorICAgICAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwg
Y29uc3QgU3RyaW5nJiBuYW1lKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIE5hdGl2ZUVycm9y
Q29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlTbG90LmgKaW5kZXggZDkzOGZhMzE2NDVhZjI2Yjc1ODUxNGRiNmIyNDc4
ZjE4M2U5ZWVlMS4uY2ZlOWM0ZDMyYmE3NjhjNzRlNGZmYmIxOTEzNTI3OWRlYmYxMTc2NiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKQEAgLTQyLDYg
KzQyLDggQEAgZW51bSBBdHRyaWJ1dGUgewogICAgIEZ1bmN0aW9uICAgICA9IDEgPDwgNCwgIC8v
IHByb3BlcnR5IGlzIGEgZnVuY3Rpb24gLSBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMK
ICAgICBBY2Nlc3NvciAgICAgPSAxIDw8IDUsICAvLyBwcm9wZXJ0eSBpcyBhIGdldHRlci9zZXR0
ZXIKICAgICBDdXN0b21BY2Nlc3NvciA9IDEgPDwgNiwKKyAgICBCdWlsdGluICAgICAgICAgPSAx
IDw8IDcsIC8vIHByb3BlcnR5IGlzIGEgYnVpbHRpbiBmdW5jdGlvbiAtIG9ubHkgdXNlZCBieSBz
dGF0aWMgaGFzaHRhYmxlcworICAgIEJ1aWx0aW5PckZ1bmN0aW9uID0gQnVpbHRpbiB8IEZ1bmN0
aW9uLCAvLyBoZWxwZXIgb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCiB9OwogCiBjbGFz
cyBQcm9wZXJ0eVNsb3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwQ29uc3RydWN0b3IuY3BwCmluZGV4IGJjNTE2YjA2ZDY2NTFmMGU2ODJhMjAxN2JkZjhi
MDNiYWJlZDZlYTIuLjJjMjQzNGI4N2QwNGY3NDljYjEyZTYwMmFiNTQ3ODQ5NDZhOTFmMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJSZWdFeHBDb25zdHJ1Y3Rvci5oIgog
CiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNs
dWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUmVnRXhwTWF0Y2hlc0FycmF5LmgiCiAjaW5j
bHVkZSAiUmVnRXhwUHJvdG90eXBlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAppbmRleCA4OWQ3YWMxYjhjYmYxZGIwZTEyNmYxZmM3
OTZkZmQ1ZmM4NGIyZTU5Li45ZGRhMGJhOGRlMTQxMmVhZjRkMjkxZGNmMGM2YjM5NjU3ZmI2Nzdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5
cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlw
ZS5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJBcnJheVByb3RvdHlwZS5oIgogI2lu
Y2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgotI2luY2x1ZGUgIkpTQ0pTVmFs
dWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
YjIwMzg4OGQzYzE2Y2RhM2MwMDM1MDYyMDhhZTA4Njk1ZGM1ZGFhYS4uZDAyNjZhNTllZjNmNTVh
YTM2OTRmNWY3NDE4Y2Y3OGUwYWUwZDhiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg
IkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUg
IkpTU2V0LmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWFwRGF0
YS5oIgogI2luY2x1ZGUgIlNldFByb3RvdHlwZS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAppbmRleCA0NDBhNjA5NDIxOTMzODAzMWU1OTI3
YWY0NmIyODlkYmNmYjVhNzI4Li44MGU3ZWFhOGM0OTFjYjZkNTRhODMyNGNlNjQ3YTZjZGI3ZTg4
NzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5j
cHAKQEAgLTIyLDcgKzIyLDkgQEAKICNpbmNsdWRlICJTdHJpbmdPYmplY3QuaCIKIAogI2luY2x1
ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUg
Ik9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCAwNDI5MWY3ZThkZDI0
ZThhYjMzZDc1YWYxZGE0NTY4ZjJiYzk5ZTY4Li4xZWNhYjg1YzBiZGIyODY5ODk0NTc3YTc0MTI1
NGUzNjQ0MTQ5ZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAKQEAgLTI3LDEyICsyNywxOCBAQAogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogCiAjaW5j
bHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNs
dWRlICJEdW1wQ29udGV4dC5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRl
ICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKKyNpbmNs
dWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJMb29rdXAuaCIKKyNpbmNsdWRlICJQ
cm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCisj
aW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4u
aCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlUmFy
ZURhdGFJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcAppbmRleCA1MmNjZjQyM2ExMDQzZTEwNzlmMmQ4YjE4OTQyMTk4OTBlNzFmMmJjLi4wMjA2
OTVmYWM4M2VkNGU1MTg1YjcwZTY5Njk5NjNhMmRlOWEzNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQXJnTGlzdC5oIgog
I2luY2x1ZGUgIkFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmgiCiAjaW5jbHVkZSAiQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgiCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVz
LmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lSW5saW5lcy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgogI2luY2x1ZGUgIkNvZGVDYWNoZS5oIgpAQCAtNTUsNyArNTYsOSBAQAogI2luY2x1ZGUgIkpT
QVBJVmFsdWVXcmFwcGVyLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAi
SlNBcnJheS5oIgotI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0
aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5j
bHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKQEAgLTY4LDEzICs3MSwx
NiBAQAogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk1hcERhdGEuaCIKICNpbmNsdWRl
ICJOb2Rlcy5oIgorI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlBhcnNlckFyZW5hLmgi
CisjaW5jbHVkZSAiUHJvcGVydHlNYXBIYXNoVGFibGUuaCIKICNpbmNsdWRlICJSZWdFeHBDYWNo
ZS5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlNpbXBsZVR5cGVkQXJy
YXlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU291cmNlUHJvdmlkZXJDYWNoZS5oIgogI2luY2x1
ZGUgIlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgor
I2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9j
ay5oIgogI2luY2x1ZGUgIldlYWtNYXBEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NJRC5o
PgpAQCAtMjI2LDYgKzIzMiw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFw
VHlwZSkKICAgICAsIG1faW5EZWZpbmVPd25Qcm9wZXJ0eShmYWxzZSkKICAgICAsIG1fY29kZUNh
Y2hlKENvZGVDYWNoZTo6Y3JlYXRlKCkpCiAgICAgLCBtX2VuYWJsZWRQcm9maWxlcihudWxscHRy
KQorICAgICwgbV9idWlsdGluRXhlY3V0YWJsZXMoQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGUo
KnRoaXMpKQogewogICAgIGludGVycHJldGVyID0gbmV3IEludGVycHJldGVyKCp0aGlzKTsKICAg
ICBTdGFja0JvdW5kcyBzdGFjayA9IHd0ZlRocmVhZERhdGEoKS5zdGFjaygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggNWE4NDEwNWVhZmI3YWJiYTVmYTQzMWVlZWRkNTVkN2E4
OWY1NWNlMi4uNjk1OGFjMzkzYjFhZWZjMGJlZmJmNmU0ZWI4YjY4MjVjZjdjOWEwYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiUHJp
dmF0ZU5hbWUuaCIKICNpbmNsdWRlICJQcm90b3R5cGVNYXAuaCIKICNpbmNsdWRlICJTbWFsbFN0
cmluZ3MuaCIKKyNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU3Ryb25nLmgiCiAj
aW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheUNvbnRyb2xs
ZXIuaCIKQEAgLTY5LDYgKzcwLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQXJp
dHlDaGVja0ZhaWxSZXR1cm5UaHVua3M7CisgICAgY2xhc3MgQnVpbHRpbkV4ZWN1dGFibGVzOwog
ICAgIGNsYXNzIENvZGVCbG9jazsKICAgICBjbGFzcyBDb2RlQ2FjaGU7CiAgICAgY2xhc3MgQ29t
bW9uSWRlbnRpZmllcnM7CkBAIC00OTcsNiArNDk5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZvaWQgcmVnaXN0ZXJXYXRjaHBvaW50Rm9ySW1wdXJlUHJvcGVydHkoY29uc3QgSWRlbnRp
ZmllciYsIFdhdGNocG9pbnQqKTsKICAgICAgICAgLy8gRklYTUU6IFVzZSBBdG9taWNTdHJpbmcg
b25jZSBpdCBnb3QgbWVyZ2VkIHdpdGggSWRlbnRpZmllci4KICAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBhZGRJbXB1cmVQcm9wZXJ0eShjb25zdCBTdHJpbmcmKTsKKyAgICAgICAgCisg
ICAgICAgIEJ1aWx0aW5FeGVjdXRhYmxlcyogYnVpbHRpbkV4ZWN1dGFibGVzKCkgeyByZXR1cm4g
bV9idWlsdGluRXhlY3V0YWJsZXMuZ2V0KCk7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CkBAIC01MzcsMTAgKzU0MSw5IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBKU1ZhbHVlIG1fZXhjZXB0aW9uOwogICAgICAgICBib29s
IG1faW5EZWZpbmVPd25Qcm9wZXJ0eTsKICAgICAgICAgT3duUHRyPENvZGVDYWNoZT4gbV9jb2Rl
Q2FjaGU7Ci0gICAgICAgIFJlZkNvdW50ZWRBcnJheTxTdGFja0ZyYW1lPiBtX2V4Y2VwdGlvblN0
YWNrOwotCiAgICAgICAgIExlZ2FjeVByb2ZpbGVyKiBtX2VuYWJsZWRQcm9maWxlcjsKLQorICAg
ICAgICBPd25QdHI8QnVpbHRpbkV4ZWN1dGFibGVzPiBtX2J1aWx0aW5FeGVjdXRhYmxlczsKKyAg
ICAgICAgUmVmQ291bnRlZEFycmF5PFN0YWNrRnJhbWU+IG1fZXhjZXB0aW9uU3RhY2s7CiAgICAg
ICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8V2F0Y2hwb2ludFNldD4+IG1faW1wdXJlUHJvcGVy
dHlXYXRjaHBvaW50U2V0czsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9G
b3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oIGIvU291cmNlL1dlYkNv
cmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43MGZjYzM4NGU4ZWRmYzM0YjE0MDgzYjg2NWQzNzM4MjBmNDE2NWM0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU1N0cmluZ0lu
bGluZXMuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSlNTdHJpbmdJbmxp
bmVzX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfSlNTdHJpbmdJbmxpbmVzX2gKKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU1N0cmluZ0lubGluZXMuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudC5jcHAKaW5kZXggMmVkZGNkYmI5ZjAwNmNhNzYyNjY1MGI0MjAyNzg2MjZiOTI2MTQxNy4u
M2M0ZTBkN2JiYjMxY2FiMTJiNWU2Yzk3NWM3NGQzZjQ4NGU5Y2IxNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVw
bGFjZW1lbnQuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
QVBJQ2FzdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcAppbmRleCA1NjQ5Yzg1
Y2EwOTU4Nzc0OGEzZGEwNmNkZGQwY2E5OTllNTBiOGU3Li4zZjRkOGVmYWViNTdmMzMwMDNlNzNh
N2U3ODQyZTQyYzczY2U2NDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0lEQkFueUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJ
REJBbnlDdXN0b20uY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiSlNJREJPYmplY3RT
dG9yZS5oIgogI2luY2x1ZGUgIkpTSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oPgog
CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwCmluZGV4IDllYWU3NTY5YzcwNjAzYTRmZWQwYWYx
NGM0Zjg3MThjZGU2NGE2ZTEuLmY0OWRmZTkwYjRlODJkMzllZGNiZjliYTI5ZjJhZTc5OWMwZGRm
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VD
dXN0b20uY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIK
ICNpbmNsdWRlICJKU0lEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5o
PgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmcuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTU3Ry
aW5nSW5saW5lcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwCmluZGV4IDc0
ZmQzNTRiMjg2MDdjZjc4MjJmODA1MzQ3OTcwZjVkN2FjOGM4MzIuLjU0MzRiM2I3ZDZjNTZlY2Iw
YTAzYTI3OTRjNjczNmE5YWRmYjcwZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwCkBAIC0zNiw3ICszNiw3IEBACiAj
aW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJKU0lEQkluZGV4LmgiCiAjaW5j
bHVkZSA8cnVudGltZS9FcnJvci5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmcuaD4KKyNp
bmNsdWRlIDxydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlND
OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggOWQwNjZmNWUxYTAwNGZiZDRkNTc0MGU0OTdjODI4YzliZThmOTBkYS4uOTA5
MmUxNzA5ZDZmZjI2ZGFlNmYyOTIzYzc1MWNiNjhhZTMzNjA1ZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIy
IEBACisyMDE0LTAxLTI5ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgTWFrZSBpdCBwb3NzaWJsZSB0byBpbXBsZW1lbnQgSlMgYnVpbHRpbnMgaW4gSlMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzg4NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgdGhlIHRl
c3QgcmVzdWx0cyBmb3IgbmV3IGVycm9yIG1lc3NhZ2VzIChub3cgdGhhdCB0aGV5J3JlCisgICAg
ICAgIGFjdHVhbGx5IGhlbHBmdWwpLCBhbmQgYWRkZWQgYSBqcy1yZWdyZXNzIHRlc3QgdG8gdHJh
Y2sgcGVyZm9ybWFuY2UuCisKKyAgICAgICAgKiBqcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQ6
CisgICAgICAgICoganMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBqcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5LXByb3Rv
dHlwZS1ldmVyeS5qczogQWRkZWQuCisgICAgICAgICh0ZXN0MSk6CisgICAgICAgICh0ZXN0Mik6
CisgICAgICAgICh0ZXN0Myk6CisKIDIwMTQtMDEtMzAgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxh
cEBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4t
cGx1Z2luLXByaXZhdGUtYnJvd3NpbmctdG9nZ2xlZC5odG1sIGlzIGZsYWt5IG9uIFdLMgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0CmluZGV4IDU0MWI4YzM1OGYwNjhhMGNl
YTg4MmMxMDUxNzUzMjUxMTRjZDMzZjcuLmNjYTM2M2RjZTU4ZmJhOTVhNThjZTQ2ZmNiNDhjMzhi
ZjU4YWRmNTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQKQEAgLTMw
LDEyICszMCwxMiBAQCBQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoaXNCaWdFbm91Z2hB
bmRFeGNlcHRpb24pIHRocmV3IGV4Y2VwdGlvbiBleGNlcHRpbwogUEFTUyBbMTIsIDU0LCAxOCwg
MTMwLCA0NF0uZXZlcnkoaXNCaWdFbm91Z2hBbmRFeGNlcHRpb24pIHRocmV3IGV4Y2VwdGlvbiBl
eGNlcHRpb24gZnJvbSBmdW5jdGlvbi4KIAogNS4wIFdyb25nIFR5cGUgZm9yIENhbGxiYWNrIFRl
c3QKLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSg1KSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCd3cm9u
ZycpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwg
OCwgMTMwLCA0NF0uZXZlcnkobmV3IE9iamVjdCgpKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KG51bGwpIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0
NF0uZXZlcnkodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9y
LgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogVHlwZSBlcnJvci4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSg1KSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVz
dCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCd3cm9uZycp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFj
ayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkobmV3
IE9iamVjdCgpKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZl
cnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRd
LmV2ZXJ5KG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5l
dmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0
NF0uZXZlcnkodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90
b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgs
IDEzMCwgNDRdLmV2ZXJ5KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90
eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KIAogNi4wIEVhcmx5IEV4aXQg
KCJTaG9ydCBDaXJjdWl0aW5nIikKIFBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShpc0Jp
Z0Vub3VnaFNob3J0Q2lyY3VpdCkgaXMgZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9qcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CmluZGV4IDJj
MmE2OGNiMTA2ZGExMGYwODZiMjJjNWJmMmJmNWM4ZmU3OWUzM2UuLjVkOWVjYjc1YThkYTc5YmE2
NTYwNWU3ZWI5Y2Y4ZmMyNWZlMThhZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2RvbS9h
cnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
anMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApAQCAtMTUsNyAr
MTUsNyBAQCBQQVNTIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHVuZGVmaW5lZCwgMCwgMSkg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZQogUEFTUyBBcnJheS5wcm90b3R5cGUuc29y
dC5jYWxsKHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlz
IG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5zb3J0LmNhbGwodW5k
ZWZpbmVkKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwodW5kZWZpbmVkLCAw
LCAxKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVj
dCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKHVuZGVmaW5lZCwgMCwg
MSknKS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuY2FsbCh1bmRlZmluZWQsIHt9KSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZh
bHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuY2FsbCh1bmRlZmluZWQsIHt9KScpLgot
UEFTUyBBcnJheS5wcm90b3R5cGUuZXZlcnkuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVh
dGluZyAnQXJyYXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZyknKS4K
K1BBU1MgQXJyYXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZykgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRo
YXQgfHRoaXN8IG5vdCBiZSB1bmRlZmluZWQuCiBQQVNTIEFycmF5LnByb3RvdHlwZS5mb3JFYWNo
LmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5k
ZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5mb3JF
YWNoLmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZyknKS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLnNv
bWUuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1
bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnNv
bWUuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUuaW5k
ZXhPZi5jYWxsKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZp
bmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5pbmRleE9m
LmNhbGwodW5kZWZpbmVkLCAwKScpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9hcnJheS1wcm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyOTBj
MGVlZmY4ZGU0MjE4MzNkOTJkMjdlOTUyNDE5MTc2MDRiOTYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeQorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbCBiL0xh
eW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU1Y2MxNzFjNDg3NWEzNTg1YmYxNGU1NDE1ZjVjZDBlNTgxZDU0NAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwK
QEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVz
dHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5LXByb3RvdHlw
ZS1ldmVyeS5qcyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5LXBy
b3RvdHlwZS1ldmVyeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTRhYTE2MWMwY2U5OGIyYWIxOGEzYTFhMWYw
ZGZhYWM5ZDdkMmUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzCkBAIC0wLDAgKzEsMjkgQEAKK3Zh
ciByZXN1bHQgPSAwOworZnVuY3Rpb24gdGVzdDEoYSkgeworICAgIHJlc3VsdCA8PCAxOworICAg
IHJlc3VsdCsrOworICAgIHJldHVybiB0cnVlOworfQorZnVuY3Rpb24gdGVzdDIoYSxiKSB7Cisg
ICAgcmVzdWx0IF49IDM7CisgICAgcmVzdWx0ICo9IDM7CisgICAgcmV0dXJuIHRydWU7Cit9Citm
dW5jdGlvbiB0ZXN0MyhhLGIsYykgeworICAgIHJlc3VsdCBePSByZXN1bHQgPj4gMTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwordmFyIHJlc3VsdCA9IDA7Cit2YXIgYXJyYXkgPSBbXQorZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkKKyAgICBhcnJheVtpXSA9IDE7CisKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMTA7IGkrKykgeworICAgIGFycmF5LmV2ZXJ5KHRlc3QxKTsKKyAgICBhcnJh
eS5ldmVyeSh0ZXN0Mik7CisgICAgYXJyYXkuZXZlcnkodGVzdDMpOworfQorCitpZiAocmVzdWx0
ICE9IDE0Mjg4MTA0OTYpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0
OwpkaWZmIC0tZ2l0IGEvR05VbWFrZWZpbGUuYW0gYi9HTlVtYWtlZmlsZS5hbQppbmRleCA3M2Zj
NDkyOGM0ZGQ0OWI1NDk4NjliNTA2NzhjNmJkZTc0ZjQ0NzYwLi4wOGM5MTE1NDI2MDUwMGRlM2Zm
MDRiMDIwY2UwZDYwZjk4ZThjZmU4IDEwMDY0NAotLS0gYS9HTlVtYWtlZmlsZS5hbQorKysgYi9H
TlVtYWtlZmlsZS5hbQpAQCAtNjgsNiArNjgsNyBAQCBBTExfTU9GSUxFUyA6PQogZG9tX2JpbmRp
bmdfaWRscyA6PQogd3RmX3NvdXJjZXMgOj0KIGphdmFzY3JpcHRjb3JlX2hfYXBpIDo9CitqYXZh
c2NyaXB0Y29yZV9idWlsdGluc19qc19ub3NvdXJjZXMgOj0KIGphdmFzY3JpcHRjb3JlX2NwcGZs
YWdzOj0KIGphdmFzY3JpcHRjb3JlX2NmbGFncyA6PQogamF2YXNjcmlwdGNvcmVfc291cmNlcyA6
PQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222784</attachid>
            <date>2014-01-30 19:45:53 -0800</date>
            <delta_ts>2014-01-30 19:57:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140130194332.patch</filename>
            <type>text/plain</type>
            <size>198868</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NjgxMzcxYWU2ZDBjYWZlNDJmNWNmN2E1NWI3MjRjMTc5ODExYjBhLi43NTA0MGJiMjVhNTg0MTY0
Mzg5ODQzNDFjNmEwMjMzMzdhOTk1ZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
IFRoaXMgcmVzdWx0IG9mIHRoaXMgcmVmYWN0b3JpbmcKKyAgICAgICAgaXMgdGhhdCBDb21tb25J
ZGVudGlmaWVycywgYW5kIGEgZmV3IG90aGVyIG1pc2NlbGxhbmVvdXMgaGVhZGVycyBub3cKKyAg
ICAgICAgbmVlZCB0byBiZSBpbmNsdWRlZCBkaXJlY3RseSBhcyB0aGV5IHdlcmUgZm9ybWVybHkg
Y2FwdHVyZWQgdGhyb3VnaCBvdGhlcgorICAgICAgICBwYXRocy4KKworICAgICAgICBJbiBhZGRp
dGlvbiB0aGlzIGFkZHMgYSBmbGFnIHRvIHRoZSBMb29rdXAgdGFibGUncyBoYXNoZW50cnkgdG8g
aW5kaWNhdGUKKyAgICAgICAgdGhhdCBhIHN0YXRpYyBmdW5jdGlvbiBpcyBhY3R1YWxseSBiYWNr
ZWQgYnkgSlMuIFRoZXJlIGlzIHRoZW4gYSBsb3Qgb2YKKyAgICAgICAgbG9naWMgdG8gdGhyZWFk
IHRoZSBzcGVjaWFsIG5hdHVyZSBvZiB0aGUgZnVuY3RvbiB0byB3aGVyZSBpdCBtYXR0ZXJzLgor
ICAgICAgICBUaGlzIGFsbG93cyB0b1N0cmluZygpLCAuY2FsbGVyLCBldGMgdG8gbWltaWMgdGhl
IGJlaGF2aW91ciBvZiBhIGhvc3QKKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAgICAgTm90ZXMg
b24gd3JpdGluZyBidWlsdGluczoKKyAgICAgICAgIC0gRWFjaCBmdW5jdGlvbiBpcyBjb21waWxl
ZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBvdGhlcnMsIGFuZCB0aG9zZQorICAgICAgICAgICBpbXBs
ZW1lbnRhdGlvbnMgY2Fubm90IGN1cnJlbnRseSBjYXB0dXJlIGFsbCBnbG9iYWwgcHJvcGVydGll
cyAoYXMKKyAgICAgICAgICAgdGhhdCBjb3VsZCBiZSBwb3RlbnRpYWxseSB1bnNhZmUpLiBJZiBh
IGZ1bmN0aW9uIGRvZXMgY2FwdHVyZSBhCisgICAgICAgICAgIGdsb2JhbCB3ZSB3aWxsIGRlbGli
ZXJhdGVseSBjcmFzaC4KKyAgICAgICAgIC0gRm9yIHRob3NlICJnbG9iYWwiIHByb3BlcnRpZXMg
dGhhdCB3ZSBkbyB3YW50IGFjY2VzcyB0bywgd2UgdXNlCisgICAgICAgICAgIHRoZSBAIHByZWZp
eCwgZS5nLiBPYmplY3QodGhpcykgYmVjb21lcyBAT2JqZWN0KHRoaXMpLiBUaGUgQCBpZGVudGlm
aWVycworICAgICAgICAgICBhcmUgcHJpdmF0ZSBuYW1lcywgYW5kIGJlaGF2ZSBqdXN0IGxpa2Ug
cmVndWxhciBwcm9wZXJ0aWVzLCBvbmx5CisgICAgICAgICAgIHdpdGhvdXQgdGhlIHJpc2sgb2Yg
YWR1bHRlcmF0aW9uLiBBZ2FpbiwgaW4gdGhlIEBPYmplY3QgY2FzZSwgd2UKKyAgICAgICAgICAg
ZXhwbGljaXRseSBkdXBsaWNhdGUgdGhlIE9iamVjdENvbnN0cnVjdG9yIHJlZmVyZW5jZSBvbiB0
aGUgR2xvYmFsT2JqZWN0CisgICAgICAgICAgIHNvIHRoYXQgd2UgaGF2ZSBndWFyYW50ZWVkIGFj
Y2VzcyB0byB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgY29uc3RydWN0
b3IuCisgICAgICAgICAtIGNhbGwsIGFwcGx5LCBldmFsLCBhbmQgRnVuY3Rpb24gYXJlIGFsbCBy
ZWplY3RlZCBpZGVudGlmaWVycywgYWdhaW4KKyAgICAgICAgICAgdG8gcHJldmVudCBhbnl0aGlu
ZyBmcm9tIGFjY2lkZW50YWxseSB1c2luZyBhbiBhZHVsdGVyYXRlZCBvYmplY3QuCisgICAgICAg
ICAgIEluc3RlYWQgQGNhbGwgYW5kIEBhcHBseSBhcmUgYXZhaWxhYmxlLCBhbmQgaGFwcGlseSB0
aGV5IGNvbXBsZXRlbHkKKyAgICAgICAgICAgZHJvcCB0aGUgbmVxX3B0ciBpbnN0cnVjdGlvbiBh
cyB0aGV5J3JlIGRlZmluZWQgYXMgYWx3YXlzIGJlaW5nIHRoZQorICAgICAgICAgICBvcmlnaW5h
bCBjYWxsL2FwcGx5IGZ1bmN0aW9ucy4KKworICAgICAgICBUaGVzZSByZXN0cmljdGlvbnMgYXJl
IGp1c3QgaW50ZW5kZWQgdG8gbWFrZSBpdCBoYXJkZXIgdG8gYWNjaWRlbnRhbGx5CisgICAgICAg
IG1ha2UgY2hhbmdlcyB0aGF0IGFyZSBpbmNvcnJlY3QgKGZvciBpbnN0YW5jZSBjYWxsaW5nIHdo
YXRldmVyIGhhcyBiZWVuCisgICAgICAgIGFzc2lnbmVkIHRvIGdsb2JhbC5PYmplY3QsIGluc3Rl
YWQgb2YgdGhlIG9yaWdpbmFsIGNvbnN0cnVjdG9yIGZ1bmN0aW9uKS4KKyAgICAgICAgSG93ZXZl
ciwgbWFraW5nIGEgbWlzdGFrZSBsaWtlIHRoaXMgc2hvdWxkIHJlc3VsdCBpbiBhIHB1cmVseSBz
ZW1hbnRpYworICAgICAgICBlcnJvciBhcyBmdW5kYW1lbnRhbGx5IHRoZXNlIGZ1bmN0aW9ucyBh
cmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlCisgICAgICAgIHJlZ3VsYXIgSlMgY29kZSBp
biB0aGUgaG9zdCBnbG9iYWwsIGFuZCBoYXZlIG5vIG1vcmUgcHJpdmlsZWdlcyB0aGFuCisgICAg
ICAgIGFueSBvdGhlciBKUy4KKworICAgICAgICBUaGUgaW5pdGlhbCBwcm9vZiBvZiBjb25jZXB0
IGlzIEFycmF5LnByb3RvdHlwZS5ldmVyeSwgdGhpcyBzaG93cyBhIDY1JQorICAgICAgICBwZXJm
b3JtYW5jZSBpbXByb3ZlbWVudCwgYW5kIHRoYXQgaW1wcm92ZW1lbnQgaXMgc2lnbmlmaWNhbnRs
eSBodXJ0IGJ5CisgICAgICAgIG91ciBwb29yIG9wdGltaXNhdGlvbiBvZiBvcF9pbi4KKworICAg
ICAgICBBcyB0aGlzIGlzIHN1Y2ggYSBsaW1pdGVkIGZ1bmN0aW9uLCB3ZSBoYXZlIG5vdCB5ZXQg
ZXhwb3J0ZWQgYWxsIHN5bWJvbHMKKyAgICAgICAgdGhhdCB3ZSBjb3VsZCBwb3NzaWJseSBuZWVk
LCBidXQgYXMgd2UgaW1wbGVtZW50IG1vcmUsIHRoZSBsaWtlbGlob29kCisgICAgICAgIG9mIGVu
Y291bnRlcmluZyBtaXNzaW5nIGZlYXR1cmVzIHdpbGwgcmVkdWNlLgorCisgICAgICAgIFRoaXMg
ZGlkIHJlcXVpcmUgYnJlYWtpbmcgb3V0IGEgSlNTdHJpbmdJbmxpbmVzIGhlYWRlciwgYW5kIHJl
cXVpcmVkCisgICAgICAgIGZpeGluZyBhIGZldyBvYmplY3RzIHRoYXQgd2VyZSB0cnlpbmcgdG8g
dXNpbmcgUHJvcGVydHlOYW1lOjpwdWJsaWNOYW1lCisgICAgICAgIHJhdGhlciB0aGFuIFByb3Bl
cnR5TmFtZTo6dWlkLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0
eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dCk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRpY1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWNGdW5jdGlvbkdl
dHRlcik6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tH
ZXR0ZXIpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBidWlsdGlucy9BcnJheS5wcm90b3R5cGUuanM6CisgICAgICAgIChldmVyeSk6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkJ1aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKToKKyAgICAgICAgKEpTQzo6
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSk6CisgICAgICAgICog
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVj
dXRhYmxlczo6Y3JlYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tG
b3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6dG9TdHJpY3RuZXNzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNCdWlsdGluRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBjcmVhdGVfaGFz
aF90YWJsZToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZ2Vu
ZXJhdGUtanMtYnVpbHRpbnM6IEFkZGVkLgorICAgICAgICAoZ2V0Q29weXJpZ2h0KToKKyAgICAg
ICAgKGdldEZ1bmN0aW9ucyk6CisgICAgICAgIChnZW5lcmF0ZUNvZGUpOgorICAgICAgICAobWFu
Z2xlTmFtZSk6CisgICAgICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSWRlbnRp
Zmllcik6CisgICAgICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChTb3VyY2VDb2RlKToK
KyAgICAgICAgKFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKFZNKToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvUHJvdG9DYWxsRnJhbWUuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUp
OgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpM
ZXhlcik6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpM
ZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFy
Pjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAg
ICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcik6CisgICAgICAgICog
cGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OnNldENsb3NlZFZh
cmlhYmxlcyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
Tm9kZTo6Y2FwdHVyZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OnNldENs
b3NlZFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmluaXNoUGFy
c2luZyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRU
b2tlblRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OmdldFVzZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNsb3NlZFZhcmlh
Ymxlcyk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9k
ZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAgICAgICogcnVudGlt
ZS9BcmdMaXN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAg
ICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJh
dG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpn
ZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpD
b21tb25JZGVudGlmaWVycyk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQ
cml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQdWJsaWNO
YW1lKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzRXhjZXB0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxl
OjpleGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpleGVj
dXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aXNCdWlsdGlu
RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1l
L0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFi
bGVHZXQpOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0KToKKyAg
ICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgICogcnVudGltZS9K
U0NlbGxJbmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6c291cmNlQ29kZSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzSG9zdE9y
QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6aXNCdWlsdGluRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIpOgorICAgICAg
ICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9w
ZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgICogcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6Om9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpnZXRDbGFzc1Byb3BlcnR5TmFtZXMpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZ0lubGlu
ZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjppbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9i
amVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgICAgRG9uJ3QgcmVw
b3J0IHByaXZhdGUgbmFtZXMuCisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6c3ltYm9s
VGFibGVQdXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChKU0M6OnNldFVwU3RhdGlj
RnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlND
OjpIYXNoRW50cnk6OmJ1aWx0aW5HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpIYXNoRW50cnk6
OnByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpwcm9wZXJ0eVB1dHRl
cik6CisgICAgICAgIChKU0M6Okhhc2hUYWJsZTo6ZW50cnkpOgorICAgICAgICAoSlNDOjpnZXRT
dGF0aWNQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpnZXRTdGF0aWNWYWx1ZVNsb3QpOgor
ICAgICAgICAoSlNDOjpwdXRFbnRyeSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6YnVp
bHRpbkV4ZWN1dGFibGVzKToKKwogMjAxNC0wMS0yOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBw
bGUuY29tPgogCiAgICAgICAgIEZUTCBzaG91bGQgc3VwcG9ydCBHZXRCeUlkKFVudHlwZWQ6KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDFhZDY5NzQ4OGIwYzRiOGI0Y2ZhZTI5MTM1NDI1OWI2ZGFjZmRjNDUuLmYz
YzNkNzE3MWQwNTQ0ODBlYzYwNTQwYzBkNTI1OTk2ZWVjZGI5YTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxNC0wMS0yOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gaW1wbGVtZW50IEpTIGJ1aWx0aW5zIGluIEpT
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc4ODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGlu
ZyBmb3IgdGhlIG5ld2x5IHJlcXVpcmVkIGhlYWRlcnMuCisKKyAgICAgICAgVGVzdDoganMvcmVn
cmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbAorCisgICAgICAgICogRm9yd2FyZGluZ0hl
YWRlcnMvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0lEQkFueUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJREJE
YXRhYmFzZUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9y
ZUN1c3RvbS5jcHA6CisKIDIwMTQtMDEtMzAgIFJvZ2VyIEZvbmcgIDxyb2dlcl9mb25nQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWJHTCBsb2FkIHBvbGljeSBzaG91bGQgYmUgcXVlcmllZCBmb3Ig
dGhlIHRvcCBsZXZlbCBkb2N1bWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggNWJlMDUzZjFlMDg2YjQzZTY4
NmMzNjc0ZGFlN2M1MTYwNWEyODZlNy4uMGVjZWQ1MWYzZTJkNWI2MjFkYWRmMDU3NDlmNWU3NDY2
YTA2ZjUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBib29sIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZQogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKICAg
ICBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHByb3BlcnR5TmFtZVJlZjsKICAgICAKLSAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpT
Q2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xh
c3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgLy8gb3B0aW9uYWwgb3B0
aW1pemF0aW9uIHRvIGJ5cGFzcyBnZXRQcm9wZXJ0eSBpbiBjYXNlcyB3aGVuIHdlIG9ubHkgbmVl
ZCB0byBrbm93IGlmIHRoZSBwcm9wZXJ0eSBleGlzdHMKICAgICAgICAgICAgIGlmIChKU09iamVj
dEhhc1Byb3BlcnR5Q2FsbGJhY2sgaGFzUHJvcGVydHkgPSBqc0NsYXNzLT5oYXNQcm9wZXJ0eSkg
ewpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiAgICAgUmVmUHRy
PE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgSlNWYWx1ZVJlZiB2YWx1ZVJl
ZiA9IHRvUmVmKGV4ZWMsIHZhbHVlKTsKICAgICAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9
IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJl
bnRDbGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBz
ZXRQcm9wZXJ0eSA9IGpzQ2xhc3MtPnNldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFwcm9wZXJ0eU5hbWVSZWYpCkBAIC0zNDMsNyArMzQzLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm8KICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CiAgICAg
UmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0Ns
YXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNz
ID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdERlbGV0
ZVByb3BlcnR5Q2FsbGJhY2sgZGVsZXRlUHJvcGVydHkgPSBqc0NsYXNzLT5kZWxldGVQcm9wZXJ0
eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lUmVmKQpAQCAtNTY0LDcgKzU2
NCw3IEBAIEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiB7CiAgICAgSlNPYmplY3RSZWYgdGhpc1Jl
ZiA9IHRvUmVmKHRoaXMpOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gY2xhc3NS
ZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAg
ICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXMgPSBq
c0NsYXNzLT5zdGF0aWNWYWx1ZXMoZXhlYykpIHsKICAgICAgICAgICAgICAgICBpZiAoU3RhdGlj
VmFsdWVFbnRyeSogZW50cnkgPSBzdGF0aWNWYWx1ZXMtPmdldChuYW1lKSkgewpAQCAtNjAwLDcg
KzYwMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGlj
RnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFCiAgICAgaWYgKFBhcmVudDo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdDIpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QyLmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFt
ZSkpOwogCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsK
ICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqLT5jbGFzc1JlZigpOyBq
c0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlm
IChPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGUqIHN0YXRpY0Z1bmN0aW9ucyA9IGpz
Q2xhc3MtPnN0YXRpY0Z1bmN0aW9ucyhleGVjKSkgewogICAgICAgICAgICAgICAgIGlmIChTdGF0
aWNGdW5jdGlvbkVudHJ5KiBlbnRyeSA9IHN0YXRpY0Z1bmN0aW9ucy0+Z2V0KG5hbWUpKSB7CkBA
IC02MjYsNyArNjI2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpjYWxsYmFja0dldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWQKICAgICBKU09iamVjdFJl
ZiB0aGlzUmVmID0gdG9SZWYodGhpc09iaik7CiAgICAgUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBw
cm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2Jq
LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsK
ICAgICAgICAgICAgIGlmIChKU09iamVjdEdldFByb3BlcnR5Q2FsbGJhY2sgZ2V0UHJvcGVydHkg
PSBqc0NsYXNzLT5nZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlO
YW1lUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDI3YmM0YzE3ZjNk
ZmVlYjYxZDI1MjMyM2ZkODc4YzQ0NzgwZjc0YzUuLjNjYTgzODY0OWM5MTQwNzM5ZDk0OTIyYWVj
MWVkOTk1ZjBmYTc3ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUs
NiArNSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7
SkFWQVNDUklQVENPUkVfRElSfS9Gb3J3YXJkaW5nSGVhZGVycyIKICAgICAiJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2Fzc2VtYmxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2JpbmRpbmdz
IgorICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMiCiAgICAgIiR7SkFWQVNDUklQ
VENPUkVfRElSfS9ieXRlY29kZSIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J5dGVjb21w
aWxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2RmZyIKQEAgLTUyLDYgKzUzLDggQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9TY3JpcHRPYmplY3QuY3Bw
CiAgICAgYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCiAKKyAgICBidWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwCisKICAgICBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcAog
ICAgIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUJhc2lj
QmxvY2suY3BwCkBAIC03MDcsNyArNzEwLDcgQEAgc2V0KEhBU0hfTFVUX0dFTkVSQVRPUiAke0NN
QUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vY3JlYXRlX2hhc2hfdGFibGUpCiBtYWNybyhHRU5FUkFU
RV9IQVNIX0xVVCBfaW5wdXQgX291dHB1dCkKICAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAg
ICAgIE9VVFBVVCAke19vdXRwdXR9Ci0gICAgICAgIERFUEVORFMgJHtIQVNIX0xVVF9HRU5FUkFU
T1J9ICR7X2lucHV0fQorICAgICAgICBERVBFTkRTICR7SEFTSF9MVVRfR0VORVJBVE9SfSAke19p
bnB1dH0gJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5o
CiAgICAgICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7SEFTSF9MVVRfR0VORVJBVE9S
fSAke19pbnB1dH0gLWkgPiAke19vdXRwdXR9CiAgICAgICAgIFZFUkJBVElNKQogICAgIGxpc3Qo
QVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMgJHtfb3V0cHV0fSkKQEAgLTgxNSwxNiArODE4
LDI3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFC
TEV9ICR7SmF2YVNjcmlwdENvcmVfSU5TUEVDVE9SX1NDUklQVFNfRElSfS9Db2RlR2VuZXJhdG9y
SW5zcGVjdG9yLnB5ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVj
dG9ySlMuanNvbiAtLW91dHB1dF9oX2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENP
UkVfRElSfSIgLS1vdXRwdXRfY3BwX2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENP
UkVfRElSfSIgLS1vdXRwdXRfanNfZGlyICIke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09S
RV9ESVJ9IiAtLW91dHB1dF90eXBlIEphdmFTY3JpcHQgLS13cml0ZV9hbHdheXMgJiYgbWtkaXIg
LXAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IgJiYgY3Ag
JHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0JhY2tlbmRE
aXNwYXRjaGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVj
dG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmggJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENP
UkVfRElSfS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFT
Q1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yCiAgICAgVkVSQkFUSU0pCiAKKyMgSlNDQnVpbHRpbnMK
K2ZpbGUoR0xPQiBKU0NCdWlsdGluc19qc19maWxlcyAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9E
SVJ9L2J1aWx0aW5zLyouanMiKQorYWRkX2N1c3RvbV9jb21tYW5kKAorICAgT1VUUFVUICR7REVS
SVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuY3BwICR7REVSSVZF
RF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAorICAgTUFJTl9ERVBF
TkRFTkNZICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucwor
ICAgREVQRU5EUyAke0pTQ0J1aWx0aW5zX2pzX2ZpbGVzfQorICAgQ09NTUFORCAke1BZVEhPTl9F
WEVDVVRBQkxFfSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRp
bnMgJHtKU0NCdWlsdGluc19qc19maWxlc30gJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENP
UkVfRElSfS9KU0NCdWlsdGlucy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vSlNDQnVpbHRpbnMuY3BwCisgICBWRVJCQVRJTSkKKwogbGlzdChBUFBFTkQgSmF2YVNjcmlw
dENvcmVfU09VUkNFUwogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0v
SW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwCiAgICAgJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuY3BwCiAg
ICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU1R5cGVC
dWlsZGVycy5jcHAKKyAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pT
Q0J1aWx0aW5zLmNwcAogKQogCiBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTCiAg
ICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0JhY2tl
bmREaXNwYXRjaGVycy5oCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElS
fS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuaAogICAgICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaAorICAgICR7REVS
SVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAogKQogCiBhZGRf
Y3VzdG9tX2NvbW1hbmQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CmluZGV4IDExNTZlOTdmZDg4NjI1NTdjOWNmOGQzYjY4YmY0ZDAzYzNlOGJhOGYuLjdjOTgyYjY5
MTNlMmY4OGQ1ODg4NGRiZTIzNzNmNTk1ZTdiNDU5MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yOCw4ICsyOCw5IEBAIFZQQVRIID0gXAogICAgICQo
SmF2YVNjcmlwdENvcmUpIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9wYXJzZXIgXAogICAgICQo
SmF2YVNjcmlwdENvcmUpL3J1bnRpbWUgXAotICAgICQoSmF2YVNjcmlwdENvcmUpL2ludGVycHJl
dGVyIFwKLSAgICAkKEphdmFTY3JpcHRDb3JlKS9qaXQgXAorCSQoSmF2YVNjcmlwdENvcmUpL2lu
dGVycHJldGVyIFwKKwkkKEphdmFTY3JpcHRDb3JlKS9qaXQgXAorCSQoSmF2YVNjcmlwdENvcmUp
L2J1aWx0aW5zIFwKICMKIAogLlBIT05ZIDogYWxsCkBAIC01NywxMiArNTgsMjUgQEAgYWxsIDog
XAogICAgIFJlZ0V4cE9iamVjdC5sdXQuaCBcCiAgICAgU3RyaW5nQ29uc3RydWN0b3IubHV0Lmgg
XAogICAgIHVkaXM4Nl9pdGFiLmggXAorICAgIEpTQ0J1aWx0aW5zIFwKICMKIAorIyBidWlsdGlu
IGZ1bmN0aW9ucworLlBIT05ZOiBKU0NCdWlsdGlucworCitKU0NCdWlsdGluczogJChKYXZhU2Ny
aXB0Q29yZSkvZ2VuZXJhdGUtanMtYnVpbHRpbnMgSlNDQnVpbHRpbnMuaCBKU0NCdWlsdGlucy5j
cHAKK0pTQ0J1aWx0aW5zLmg6ICQoSmF2YVNjcmlwdENvcmUpL2dlbmVyYXRlLWpzLWJ1aWx0aW5z
ICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zLyouanMKKwlweXRob24gJF4gJEAKKwkJCQkJCQkJ
CQkJCQkJCQkJCQkJIAorSlNDQnVpbHRpbnMuY3BwOiBKU0NCdWlsdGlucy5oCisKICMgbG9va3Vw
IHRhYmxlcyBmb3IgY2xhc3NlcwogCitjcmVhdGVfaGFzaF90YWJsZTogSlNDQnVpbHRpbnMKKwog
JS5sdXQuaDogY3JlYXRlX2hhc2hfdGFibGUgJS5jcHAKIAkkXiAtaSA+ICRACisKIExleGVyLmx1
dC5oOiBjcmVhdGVfaGFzaF90YWJsZSBLZXl3b3Jkcy50YWJsZQogCSReID4gJEAKIApAQCAtNzks
NyArOTMsNiBAQCBLZXl3b3JkTG9va3VwLmg6IEtleXdvcmRMb29rdXBHZW5lcmF0b3IucHkgS2V5
d29yZHMudGFibGUKIHVkaXM4Nl9pdGFiLmg6ICQoSmF2YVNjcmlwdENvcmUpL2Rpc2Fzc2VtYmxl
ci91ZGlzODYvaXRhYi5weSAkKEphdmFTY3JpcHRDb3JlKS9kaXNhc3NlbWJsZXIvdWRpczg2L29w
dGFibGUueG1sCiAJKFBZVEhPTlBBVEg9JChKYXZhU2NyaXB0Q29yZSkvZGlzYXNzZW1ibGVyL3Vk
aXM4NiBweXRob24gJChKYXZhU2NyaXB0Q29yZSkvZGlzYXNzZW1ibGVyL3VkaXM4Ni9pdGFiLnB5
ICQoSmF2YVNjcmlwdENvcmUpL2Rpc2Fzc2VtYmxlci91ZGlzODYvb3B0YWJsZS54bWwgfHwgZXhp
dCAxKQogCi0KICMgSW5zcGVjdG9yIGludGVyZmFjZXMKIAogSU5TUEVDVE9SX0RPTUFJTlMgPSBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggZmU1NDQ4ZGRjMWJjZmFhNGM3
MjlhMWNjMDBkZWE2MjQzMTkzOTBhMi4uNTU2OWY1MDI4ZDhjM2NkZDVhMDRkYzkzNjZhODRiMDRl
ZWM0ODE1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFt
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtNTEsNiArNTEs
NyBAQCBqYXZhc2NyaXB0Y29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0ZvcndhcmRpbmdIZWFkZXJzIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYmluZGluZ3MgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cyBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlIFwKIAktSSQo
c3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyIFwKIAktSSQoc3JjZGly
KS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIgXApAQCAtMTEwLDEyICsxMTEsMTYgQEAg
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnREZXNpcmVkT2Zmc2V0cy5oOiAkKGph
dmFzY3JpcHRjb3JlX3NvdXJjZXMpICQKIAkkKEFNX1ZfR0VOKSQoUlVCWSkgJChzcmNkaXIpL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3Iu
cmIgJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbSAkQAogCSQoQU1fVl9hdCl0b3VjaCAkQAogCi0kKFByb2dyYW1zX0xMSW50T2Zmc2V0
c0V4dHJhY3Rvcl9PQkpFQ1RTKTogRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnRE
ZXNpcmVkT2Zmc2V0cy5oCiskKFByb2dyYW1zX0xMSW50T2Zmc2V0c0V4dHJhY3Rvcl9PQkpFQ1RT
KTogRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnREZXNpcmVkT2Zmc2V0cy5oIAog
CiBEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9MTEludEFzc2VtYmx5Lmg6IFByb2dyYW1z
L0xMSW50T2Zmc2V0c0V4dHJhY3RvciQoRVhFRVhUKQogCSQoQU1fVl9HRU4pJChSVUJZKSAkKHNy
Y2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiICQoc3JjZGlyKS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gUHJvZ3Jh
bXMvTExJbnRPZmZzZXRzRXh0cmFjdG9yJChFWEVFWFQpICRACiAJJChBTV9WX2F0KXRvdWNoICRA
CiAKK0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmg6IERlcml2ZWRT
b3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmNwcAorRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvSlNDQnVpbHRpbnMuY3BwOiAkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRD
b3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5zICQoamF2YXNjcmlwdGNvcmVfYnVpbHRpbnNfanNfbm9z
b3VyY2VzKQorCSQoQU1fVl9HRU4pJChQWVRIT04pICReICRACisKICQobGliamF2YXNjcmlwdGNv
cmVndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1Jf
VkVSU0lPTkBfbGFfT0JKRUNUUyk6IERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50
QXNzZW1ibHkuaAogCiBqc2M6ICQoamF2YXNjcmlwdGNvcmVfYnVpbHRfbm9zb3VyY2VzKSBQcm9n
cmFtcy9qc2MkKEVYRUVYVCkKQEAgLTIxNiw2ICsyMjEsNyBAQCBFWFRSQV9ESVNUICs9IFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvS2V5d29yZExvb2t1cEdlbmVyYXRvci5weSBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9LZXl3b3Jkcy50YWJsZSBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL1RIQU5LUyBcCisJJChqYXZhc2NyaXB0Y29yZV9idWlsdGluc19qc19ub3NvdXJjZXMp
IFwKIAkkKGxsaW50X25vc291cmNlcykgXAogCSQob2ZmbGluZWFzbV9ub3NvdXJjZXMpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggY2RiNTQyNmIwNmI1
MmE5ODI1NmVlOTA1OGJiYThmMTFlZWE2OWVlMC4uOThmYWFhN2QxNzVhYTYxZjIwODk2Y2VlYjEz
ODYzZTI3YjI2NmNlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KQEAgLTIwLDYgKzIwLDggQEAgamF2YXNjcmlwdGNvcmVfYnVpbHRfbm9zb3VyY2VzICs9IFwK
IAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9FcnJvclByb3RvdHlwZS5sdXQuaCBcCiAJ
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNEYXRhVmlld1Byb3RvdHlwZS5sdXQuaCBc
CiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3QubHV0LmggXAor
CURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmNwcCBcCisJRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNDQnVpbHRpbnMuaCBcCiAJRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvSlNPTk9iamVjdC5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvSlNQcm9taXNlQ29uc3RydWN0b3IubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL0pTUHJvbWlzZVByb3RvdHlwZS5sdXQuaCBcCkBAIC0zNSw2ICszNyw5IEBA
IGphdmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvTExJbnREZXNpcmVkT2Zmc2V0cy5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9MTEludEFzc2VtYmx5LmgKIAoramF2YXNjcmlwdGNvcmVfYnVpbHRpbnNfanNf
bm9zb3VyY2VzICs9IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXkucHJv
dG90eXBlLmpzCisKIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0FQSUNhc3QuaCBcCkBAIC0xMDIsNiArMTA3LDggQEAgamF2YXNjcmlwdGNvcmVfc291
cmNlcyArPSBcCiAgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9iamVj
dC5oIFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3Bw
IFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuaCBcCisg
ICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAg
XAorICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMu
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2Zp
bGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9u
UHJvZmlsZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxl
LmNwcCBcCkBAIC0xMjQxLDcgKzEyNDgsOSBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwK
IAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0
Y2hlcnMuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JKU0Zy
b250ZW5kRGlzcGF0Y2hlcnMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5z
cGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwIFwKLQlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29y
ZS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaCBcCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvSlNDQnVpbHRpbnMuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9K
U0NCdWlsdGlucy5oCiAKIGxsaW50X25vc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gXApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggNWVkZWZkYmU4NTVmOTZhNjI2OGQ4NTczYmVjMWQw
YzNkODU4YWE1Yy4uYTEyZGIxODM0ODZkZmJiY2E4M2YzYTc4ZTljZjk4NjMxYjI2NTNkYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBAIC0zMDksNiArMzA5LDcgQEAK
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdEZ1bmN0aW9uQ2FsbC5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRPYmplY3Qu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0VmFsdWUu
Y3BwIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnVpbHRpbnNcQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5
QWxsb2NhdGlvblByb2ZpbGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0
ZWNvZGVcQXJyYXlQcm9maWxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5
dGVjb2RlXEJ5dGVjb2RlQmFzaWNCbG9jay5jcHAiIC8+CkBAIC03MjEsNiArNzIyLDcgQEAKICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JK
U0JhY2tlbmREaXNwYXRjaGVycy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmok
KFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNw
ZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuY3BwIiAvPgogICA8L0l0ZW1Hcm91cD4K
ICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xBcnJheUNvbnN0cnVjdG9yLmx1dC5oIiAvPgpAQCAtNzUwLDYgKzc1Miw3IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcUmVnRXhwT2Jq
ZWN0Lmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVp
bGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXFJlZ0V4cFByb3RvdHlwZS5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCIgLz4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NCdWlsdGlu
cy5oIiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXEFQSVxBUElDYWxsYmFja0Z1bmN0aW9uLmgiIC8+CkBAIC03OTgsNiArODAxLDcg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdEZ1bmN0aW9uQ2Fs
bC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0T2JqZWN0
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRWYWx1ZS5o
IiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnVpbHRpbnNcQnVpbHRpbkV4ZWN1dGFi
bGVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9j
YXRpb25Qcm9maWxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxB
cnJheVByb2ZpbGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEJ5
VmFsSW5mby5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
ai5maWx0ZXJzCmluZGV4IDg3ZTEyYTQ3MTU4YmI2MjI0ZDQ5ZmQ2MjI5NzhjNGE5YzQ0MzVhNjUu
Ljg2OWMxZjU4OWJjYjY4NmViOWNmMjBjMDk2YmUxYjgzYTU1MWUyNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTcsNiArNyw5IEBA
CiAgICAgPEZpbHRlciBJbmNsdWRlPSJiaW5kaW5ncyI+CiAgICAgICA8VW5pcXVlSWRlbnRpZmll
cj57MGJhY2UxMjMtNDU4Mi1lZWJjLTkzMTQtNzgxOWIzNzZjMTk4fTwvVW5pcXVlSWRlbnRpZmll
cj4KICAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9ImJ1aWx0aW5zIj4KKyAgICAg
IDxVbmlxdWVJZGVudGlmaWVyPnszYjlkNzJhNS0xMzViLTQzYjMtYTUyNC1jNmQyYjlkMjlkMzV9
PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgogICAgIDxGaWx0ZXIgSW5jbHVkZT0i
Ynl0ZWNvZGUiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezc2NjA4OGEwLTEyMTYtNDg1NC1h
YTQzLTU2MGM1ZTI4MzY2OH08L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CkBAIC0x
MDgsNiArMTExLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxNYWNy
b0Fzc2VtYmxlci5jcHAiPgogICAgICAgPEZpbHRlcj5hc3NlbWJsZXI8L0ZpbHRlcj4KICAgICA8
L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5F
eGVjdXRhYmxlcy5jcHAiPgorICAgICAgPEZpbHRlcj5idWlsdGluczwvRmlsdGVyPgorICAgIDwv
Q2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZS5jcHAiPgogICAgICAgPEZpbHRlcj5ieXRlY29kZTwvRmlsdGVyPgogICAg
IDwvQ2xDb21waWxlPgpAQCAtMTMyOSw2ICsxMzM1LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAi
PgogICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGls
ZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmok
KFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NC
dWlsdGlucy5jcHAiPgorICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KKyAg
ICA8L0NsQ29tcGlsZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxBUElcQVBJQ2FsbGJhY2tGdW5jdGlvbi5oIj4KQEAgLTE0NTQsNiAr
MTQ2Myw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcWDg2QXNzZW1i
bGVyLmgiPgogICAgICAgPEZpbHRlcj5hc3NlbWJsZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVk
ZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxl
cy5oIj4KKyAgICAgIDxGaWx0ZXI+YnVpbHRpbnM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlvblByb2Zp
bGUuaCI+CiAgICAgICA8RmlsdGVyPmJ5dGVjb2RlPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+
CkBAIC0yNTUwLDYgKzI1NjIsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEFycmF5UHJvdG90eXBlLmx1dC5oIj4KICAgICAgIDxGaWx0ZXI+RGVy
aXZlZCBTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVy
ZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuaCI+CisgICAgICA8
RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxWTS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmVDb21tb24ucHJvcHMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZUNvbW1vbi5wcm9wcwppbmRleCAzNjIyZmZjNTc3YzQzZGRmNzBkYTUxZmY2OGFkNjQ2ZjYz
MDRlNTY3Li5jNTg4ODcwYzJmZDEzZDYwNzZkMzhmNTJjYTYyMjVkYjI4NzJjNzgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZUNvbW1vbi5wcm9wcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZUNvbW1vbi5wcm9wcwpAQCAtNSw3ICs1LDcgQEAK
ICAgPFByb3BlcnR5R3JvdXAgLz4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29t
cGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXDsuLlx0b29sc1w7
Li5ccnVudGltZVw7Li5cbGxpbnRcOy4uXGppdFw7Li5cZGlzYXNzZW1ibGVyXDsuLlxoZWFwXDsu
LlxkZWJ1Z2dlclw7Li5cYXNzZW1ibGVyXDsuLlxwcm9maWxlclw7Li5ceWFyclw7Li5caW50ZXJw
cmV0ZXJcOy4uXGJ5dGVjb2RlXDsuLlxkZmdcOy4uXGJ5dGVjb21waWxlclw7Li5ccGFyc2VyXDsu
LlxBUElcOy4uXGZ0bFw7Li5cYmluZGluZ3NcOy4uXGluc3BlY3Rvclw7JChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXEphdmFTY3JpcHRDb3JlXERlcml2
ZWRTb3VyY2VzXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVw7JChDb25maWd1cmF0
aW9uQnVpbGREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmVcOyQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxpbmNsdWRlXHByaXZhdGVcOyQoV2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZTskKFdlYktp
dF9MaWJyYXJpZXMpXGluY2x1ZGVccHJpdmF0ZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM+Li5cOy4uXHRvb2xzXDsuLlxydW50aW1lXDsuLlxsbGludFw7Li5caml0
XDsuLlxkaXNhc3NlbWJsZXJcOy4uXGhlYXBcOy4uXGRlYnVnZ2VyXDsuLlxhc3NlbWJsZXJcOy4u
XHByb2ZpbGVyXDsuLlx5YXJyXDsuLlxpbnRlcnByZXRlclw7Li5cYnl0ZWNvZGVcOy4uXGJ1aWx0
aW5zXDsuLlxkZmdcOy4uXGJ5dGVjb21waWxlclw7Li5ccGFyc2VyXDsuLlxBUElcOy4uXGZ0bFw7
Li5cYmluZGluZ3NcOy4uXGluc3BlY3Rvclw7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXEphdmFTY3JpcHRDb3JlXERlcml2ZWRTb3VyY2VzXDskKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVw7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGlu
Y2x1ZGVcSmF2YVNjcmlwdENvcmVcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHBy
aXZhdGVcOyQoV2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZTskKFdlYktpdF9MaWJyYXJpZXMpXGlu
Y2x1ZGVccHJpdmF0ZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPgogICAgICAgPEZvcmNlZEluY2x1ZGVGaWxlcz5JQ1VWZXJzaW9u
Lmg7JShGb3JjZWRJbmNsdWRlRmlsZXMpPC9Gb3JjZWRJbmNsdWRlRmlsZXM+CiAgICAgPC9DbENv
bXBpbGU+CiAgICAgPExpbms+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI3ZTg3
Njc0MGE5NjRiMDI4OTg0ZWQ2NzgxNjE4MjBhNWRjZjc3YzQuLjkxMTU3M2FiMTdkMzM5NzRhYTdj
OWEwMTFkYjIwMGIwOWFmNzhiZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05
MjIsNyArOTIyLDYgQEAKIAkJQTUwM0ZBMTkxODhFMEZCMDAwMTEwRjE0IC8qIEphdmFTY3JpcHRD
YWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTUwM0ZBMTMxODhFMEZBRjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwICov
OyB9OwogCQlBNTAzRkExQTE4OEUwRkIwMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTQx
ODhFMEZBRjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCAqLzsgfTsKIAkJQTUwM0ZB
MUIxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNTE4OEUwRkIwMDAx
MTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLzsgfTsKLQkJQTUwM0ZBMUMxODhF
MEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTYxODhFMEZCMDAwMTEwRjE0IC8q
IEpTSmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQlBNTAzRkExRDE4OEUwRkIwMDAxMTBG
MTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE3MTg4RTBGQjAwMDExMEYxNCAv
KiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwICovOyB9OwogCQlBNTAzRkExRTE4
OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExODE4OEUwRkIw
MDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggKi87IH07CiAJCUE1
MDNGQTIxMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRCcmVha3BvaW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExRjE4OEVGRjY4MDAxMTBG
MTQgLyogU2NyaXB0QnJlYWtwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0xMDI0LDYgKzEwMjMsNyBAQAogCQlBNzBCMDgzMjE3QTBCNzlC
MDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MEIwODMwMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5h
cnlTd2l0Y2guY3BwICovOyB9OwogCQlBNzBCMDgzMzE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmlu
YXJ5U3dpdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNzBCMDgzMTE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmggKi87IH07CiAJ
CUE3MTIzNkU1MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxMjM2RTQxMTk1RjMzQzAw
QkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgKi87IH07CisJCUE3MURBODBGMTg4MERCQUIw
MEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3MURBODBFMTg4MERCQUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lu
bGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlBNzIwMjhCNjE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjAyOEI0MTc5NzYw
MUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwICovOyB9OwogCQlBNzIwMjhCODE3
OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIwMjhCNTE3OTc2MDFFMDA5ODAyOEMgLyog
SlNDVGVzdFJ1bm5lclV0aWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQTcyMDI4QkExNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25Jbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIw
MjhCOTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklubGluZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTE1MCw2ICsxMTUwLDEwIEBA
CiAJCUE3Q0EzQUU4MTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0EzQUUyMTdEQTQxQUUwMDY1MzhB
RiAvKiBKU1dlYWtNYXAuaCAqLzsgfTsKIAkJQTdDQTNBRUIxN0RBNTE2ODAwNjUzOEFGIC8qIFdl
YWtNYXBEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3Q0EzQUU5MTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5jcHAgKi87IH07CiAJ
CUE3Q0EzQUVDMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDQTNBRUExN0RBNTE2ODAwNjUzOEFG
IC8qIFdlYWtNYXBEYXRhLmggKi87IH07CisJCUE3RDgwMUE0MTg4MEQ2NkUwMDI2QzM5QiAvKiBC
dWlsdGluRXhlY3V0YWJsZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTdEODAxQTExODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxl
cy5jcHAgKi87IH07CisJCUE3RDgwMUE1MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0
YWJsZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBN0Q4MDFBODE4ODBENkE4
MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTYxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5z
LmNwcCAqLzsgfTsKKwkJQTdEODAxQTkxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4MDFBNzE4
ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBN0Q4OUNGMjE3QTBCOENDMDA3NzNBRDggLyogREZH
QmFzaWNCbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBN0Q4OUNFMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgKi87IH07
CiAJCUE3RDg5Q0YzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4OUNFNDE3
QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwICovOyB9OwogCQlBN0Q4
OUNGNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDg5Q0U1MTdBMEI4Q0MwMDc3
M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNDYyLDYgKzI0NjYsOCBAQAogCQlBNzEyMzZFNDEx
OTVGMzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpJVE9wY29kZXMzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE3MThGNjFBMTE3NTRBMjEwMDI0NjVBNyAvKiBSZWdFeHBKaXRUYWJsZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwSml0VGFibGVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MThGODIxMTE3OEVCNEIwMDI0NjVBNyAvKiBj
cmVhdGVfcmVnZXhfdGFibGVzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0
RmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBj
cmVhdGVfcmVnZXhfdGFibGVzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzFEQTgw
RDE4ODBENzFGMDBEMUYyOTkgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnNjcmlwdC5weXRob247IHBhdGggPSAiZ2VuZXJhdGUtanMtYnVpbHRpbnMiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBNzFEQTgwRTE4ODBEQkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJ
bmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nSW5saW5l
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzIwMjhCNDE3OTc2MDFFMDA5ODAy
OEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE3MjAyOEI1MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDVGVzdFJ1bm5lclV0aWxzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI5MTc5NzYwM0QwMDk4MDI4QyAvKiBK
U0Z1bmN0aW9uSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Z1
bmN0aW9uSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU5MCw2ICsy
NTk2LDExIEBACiAJCUE3Q0EzQUUyMTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWFrTWFwLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE3Q0EzQUU5MTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrTWFwRGF0YS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Q0EzQUVBMTdEQTUxNjgwMDY1MzhBRiAv
KiBXZWFrTWFwRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrTWFw
RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFBMDE4ODBENjZFMDAy
NkMzOUIgLyogQXJyYXkucHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2Ny
aXB0OyBwYXRoID0gQXJyYXkucHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBN0Q4MDFBMTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ1aWx0aW5FeGVjdXRhYmxlcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5
QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQnVpbHRpbkV4ZWN1dGFibGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3
RDgwMUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NCdWlsdGlucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE3RDgwMUE3MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NCdWlsdGlucy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBN0Q4OUNFMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNC
bG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdCYXNpY0Js
b2NrLmNwcDsgcGF0aCA9IGRmZy9ERkdCYXNpY0Jsb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTdEODlDRTQxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9u
U2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Jsb2NrSW5z
ZXJ0aW9uU2V0LmNwcDsgcGF0aCA9IGRmZy9ERkdCbG9ja0luc2VydGlvblNldC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RDg5Q0U1MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdC
bG9ja0luc2VydGlvblNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdC
bG9ja0luc2VydGlvblNldC5oOyBwYXRoID0gZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTI2LDYgKzI5MzcsNyBAQAogCQkJCTg2MDRG
NEYyMTQzQTZDNDQwMEIyOTVGNSAvKiBDaGFuZ2VMb2cgKi8sCiAJCQkJRjY5MkE4NTQwMjU1NTk3
RDAxRkY2MEY3IC8qIGNyZWF0ZV9oYXNoX3RhYmxlICovLAogCQkJCUE3MThGODIxMTE3OEVCNEIw
MDI0NjVBNyAvKiBjcmVhdGVfcmVnZXhfdGFibGVzICovLAorCQkJCUE3MURBODBEMTg4MEQ3MUYw
MEQxRjI5OSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAqLywKIAkJCQk0NUUxMkQ4ODA2QTQ5QjBG
MDBFOURGODQgLyoganNjLmNwcCAqLywKIAkJCQlGNjhFQkI4QzAyNTVENEM2MDFGRjYwRjcgLyog
Y29uZmlnLmggKi8sCiAJCQkJRjVDMjkwRTYwMjg0Rjk4RTAxODYzNUNBIC8qIEphdmFTY3JpcHRD
b3JlUHJlZml4LmggKi8sCkBAIC0yOTM0LDYgKzI5NDYsNyBAQAogCQkJCTE0MzJFQkQ3MEEzNENB
RDQwMDcxN0I5RiAvKiBBUEkgKi8sCiAJCQkJOTY4OENCMTIwRUQxMkI0RTAwMUQ2NDlGIC8qIGFz
c2VtYmxlciAqLywKIAkJCQlBNTRDRjJFQTE4NEVBNzM5MDAyMzdGMTkgLyogYmluZGluZ3MgKi8s
CisJCQkJQTdEODAxOUYxODgwRDY2RTAwMjZDMzlCIC8qIGJ1aWx0aW5zICovLAogCQkJCTk2OUEw
NzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLywKIAkJCQk3RTM5RDgxRDBFQzM4RUZB
MDAzQUYxMUEgLyogYnl0ZWNvbXBpbGVyICovLAogCQkJCTFDOTA1MTNFMEJBOUU4ODMwMDgxRTlE
MCAvKiBDb25maWd1cmF0aW9ucyAqLywKQEAgLTM1MDksNiArMzUyMiw4IEBACiAJCTY1MEZERjhE
MDlEMEZDQTcwMDc2OUU1NCAvKiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUE3RDgwMUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBK
U0NCdWlsdGlucy5jcHAgKi8sCisJCQkJQTdEODAxQTcxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1
aWx0aW5zLmggKi8sCiAJCQkJQkMxOEM1MjMwRTE2RkM4QTAwQjM0NDYwIC8qIEFycmF5UHJvdG90
eXBlLmx1dC5oICovLAogCQkJCUJDRDIwM0U3MEUxNzE4RjQwMDJDN0U4MiAvKiBEYXRlUHJvdG90
eXBlLmx1dC5oICovLAogCQkJCUE1MTNFNUM2MTg1Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNj
cmlwdFNvdXJjZS5oICovLApAQCAtMzgxMSw2ICszODI2LDcgQEAKIAkJCQlBNzkwREQ2QTE4MkY0
OTk3MDA1ODg4MDcgLyogSlNTZXRJdGVyYXRvci5oICovLAogCQkJCUJDMDJFOUI2MEUxODQyRkEw
MDBGOTI5NyAvKiBKU1N0cmluZy5jcHAgKi8sCiAJCQkJRjY5MkE4NjIwMjU1NTk3RDAxRkY2MEY3
IC8qIEpTU3RyaW5nLmggKi8sCisJCQkJQTcxREE4MEUxODgwREJBQjAwRDFGMjk5IC8qIEpTU3Ry
aW5nSW5saW5lcy5oICovLAogCQkJCTg2RTg1NTM4MTExQjk5NjgwMDFBRjUxRSAvKiBKU1N0cmlu
Z0J1aWxkZXIuaCAqLywKIAkJCQkyNjAwQjVBNDE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdK
b2luZXIuY3BwICovLAogCQkJCTI2MDBCNUE1MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pv
aW5lci5oICovLApAQCAtNDU2MSw2ICs0NTc3LDE2IEBACiAJCQlwYXRoID0gcmVtb3RlOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQTdEODAxOUYxODgwRDY2RTAwMjZDMzlC
IC8qIGJ1aWx0aW5zICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQlBN0Q4MDFBMDE4ODBENjZFMDAyNkMzOUIgLyogQXJyYXkucHJvdG90eXBlLmpzICovLAor
CQkJCUE3RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwICov
LAorCQkJCUE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCAq
LywKKwkJCSk7CisJCQlwYXRoID0gYnVpbHRpbnM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OworCQl9OwogLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYSGVhZGVy
c0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtNDYwNiwxMSArNDYzMiwxMSBAQAogCQkJCTg2QURE
MTQ1MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTVDRUVFMTUxODdGM0JBRDAwRTU1Qzk5IC8qIEluc3BlY3RvckFnZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2NUMwMjg1RDE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmggaW4g
SGVhZGVycyAqLywKLSAJCQkJMkE2ODI5NUIxODc1RjgwNTAwQjZDM0UyIC8qIENvcHlXcml0ZUJh
cnJpZXIuaCBpbiBIZWFkZXJzICovLAotICAgICAgICAgICAgICAgIDJBNEVDOTBDMTg2MEQ2QzIw
MDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTJBNjgy
OTVCMTg3NUY4MDUwMEI2QzNFMiAvKiBDb3B5V3JpdGVCYXJyaWVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQkyQTRFQzkwQzE4NjBENkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRTU5MzJBODE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3Bl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTMyNDM5MzE4NTY5NzA5MDAyRUQ2OTIgLyogQ29kZUdl
bmVyYXRvckluc3BlY3RvclN0cmluZ3MucHkgaW4gSGVhZGVycyAqLywKLSAJCQkJQTUzMjQzOTIx
ODU2OTcwOTAwMkVENjkyIC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkgaW4gSGVhZGVycyAq
LywKKwkJCQlBNTMyNDM5MjE4NTY5NzA5MDAyRUQ2OTIgLyogQ29kZUdlbmVyYXRvckluc3BlY3Rv
ci5weSBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTRGMTdFRTI3NDkwMEFCQjIxNyAvKiBUZW1w
UmVnaXN0ZXJTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MEU0QjY0MTg4MDlERDUwMDY4QTQ2
RCAvKiBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVC
NThDMTUxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC00NjIyLDcgKzQ2NDgsNyBAQAogCQkJCTBGODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAv
KiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUyOTE4
N0NBNUU2MDA4NDNCMTAgLyogaW5saW5lLWFuZC1taW5pZnktc3R5bGVzaGVldHMtYW5kLXNjcmlw
dHMucHkgaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUyQjE4N0NBNzVCMDA4NDNCMTAgLyoganNt
aW4ucHkgaW4gSGVhZGVycyAqLywKLSAJCQkJQTUzMjQzOTgxODU2QTQ4OTAwMkVENjkyIC8qIElu
c3BlY3RvckpTLmpzb24gaW4gSGVhZGVycyAqLywKKwkJCQlBNTMyNDM5ODE4NTZBNDg5MDAyRUQ2
OTIgLyogSW5zcGVjdG9ySlMuanNvbiBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwRTJBMTg3Q0E3
NTkwMDg0M0IxMCAvKiB4eGQucGwgaW4gSGVhZGVycyAqLywKIAkJCQlGRUEwODYyMDE4MkI3QTA0
MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzUxN0FE
QjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTQ3MzMsNyAr
NDc1OSw3IEBACiAJCQkJQTFBMDA5QzAxODMxQTIyRDAwQ0Y4NzExIC8qIE1hY3JvQXNzZW1ibGVy
QVJNNjQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUM5REM1MTMyOERGODIwMDJCMkFENyAvKiBE
RkdCeXRlQ29kZVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0ODUzMjgxODdERkRFQzAw
ODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5LmggaW4gSGVhZGVycyAqLywKLSAgICAgICAg
ICAgICAgICBBNTkzQ0Y4NzE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3Ry
eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU5M0NGODcxODQwMzhDQTAwQkZDRTI3IC8qIEluc3Bl
Y3RvckFnZW50UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjU2QzM2MTYyN0IwQUQw
MDdGMjc4MyAvKiBERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY3QjI5NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERGR0NhcGFiaWxpdGll
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NTgxNEVGOTBBMjAwQzcyNTMyIC8qIERGR0NG
QVBoYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTQ4NzIsNiArNDg5OCw3IEBACiAJCQkJMEZFQTBB
MUQxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZFQTBBMUYxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnku
aCBpbiBIZWFkZXJzICovLAogCQkJCUE1OTQ1NTkzMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2Jh
bE9iamVjdERlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3RDgwMUE5MTg4MEQ2QTgw
MDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMEExNzA1
MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0
ODUzMkExODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292ZXJ5T3Bjb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkVBMEEyMzE3MDk2MDY5MDBCQjcyMkMgLyogRlRMQ29tbW9uVmFsdWVzLmggaW4g
SGVhZGVycyAqLywKQEAgLTQ5NDYsNiArNDk3Myw3IEBACiAJCQkJQkMxOEM0MEYwRTE2RjVDRDAw
QjM0NDYwIC8qIElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyNUY4QkNFMTU3NTQ0
QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
QjdGMzk5MTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ0hlYWRlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTdEODAxQTUxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOUExNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nSGVh
ZGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOUIxNUVEOEU0NjAwRjE2N0Iy
IC8qIEluZGV4aW5nVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDRUZBQjAxODA1Q0E2RDAw
NDcyQ0U0IC8qIEluaXRpYWxpemVMTFZNLmggaW4gSGVhZGVycyAqLywKQEAgLTUyMTgsNiArNTI0
Niw3IEBACiAJCQkJQTUzMjQzODgxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckpTQmFja2Vu
ZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1NjBFMTZGNUNEMDBCMzQ0
NjAgLyogUHJvdGVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3NEMzM0IxNkFBMkQ5NTAwNjJG
MDFEIC8qIFByb3RvdHlwZU1hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTcxREE4MEYxODgwREJB
QjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMy
QTQxNENBN0REOTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTdDMDA4Q0U3MTg3NjMxQjYwMDk1NUMyNCAvKiBNaWNyb3Rhc2suaCBpbiBI
ZWFkZXJzICovLApAQCAtNTgzNiw2ICs1ODY1LDcgQEAKIAkJCQlBN0Q4OUNGMjE3QTBCOENDMDA3
NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzBCMDgzMjE3
QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE3RDg5Q0YzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlBN0Q4MDFBNDE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUM5REM0MTMyOERGODIwMDJCMkFENyAv
KiBERkdCeXRlQ29kZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4MkUyMTE0MTcy
Q0UzMDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RkZDOTU3MTRFRjkwQTAwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTU4NTIsNiArNTg4Miw3IEBACiAJCQkJMEZGRkM5NTkxNEVGOTBBNjAwQzcyNTMyIC8qIERG
R0NTRVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkZDNzcyMTZFMTJGNzEwMDM4RDk3
NiAvKiBERkdEQ0VQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhGMkI5OTE3MkYwNEZG
MDA3REJEQTUgLyogREZHRGVzaXJlZElkZW50aWZpZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUE3RDgwMUE4MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBNzNFMTMzMDE3OTYyNENEMDBFNERFQTggLyogREZHRGVzaXJlZFN0cnVjdHVyZUNo
YWlucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkMwRjdDRDE3QkJGQzVCMDA0NjRGRTQgLyog
REZHRGVzaXJlZFRyYW5zaXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRTg1MzRCMTcy
M0NEQTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC01OTc2LDcgKzYwMDcsNyBAQAogCQkJCTBGNkIxQ0M1MTg2MkM0NzgwMDg0NUQ5NyAvKiBG
VExVbndpbmRJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOUQzMzlBMTgwM0FEQjcwMDcz
QzJCQyAvKiBGVExTdGFja01hcHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMTYxNzA2
QkI5MDAwQkI3MjJDIC8qIEZUTFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAotIAkJCQk3QzAwOENE
MjE4NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9taXNlRnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTdDMDA4Q0QyMTg2RjhBOTMwMDk1NUMyNCAvKiBKU1Byb21pc2VGdW5jdGlvbnMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2QjFDQjUxODVGQzlFOTAwODQ1RDk3IC8qIEZUTEpTQ2Fs
bC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJFMTE3MTc4RTFDMDA2OTBDN0YgLyogRlRM
VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1OTNDRjdDMTg0MDM2MDMwMEJGQ0UyNyAv
KiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNlYjQyZjVjYzQzM2YxNjM2MzQzYmZjOTgyYWEyYWFmYjMzNmU5NDkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpz
CkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitmdW5jdGlvbiBldmVyeShjYWxsYmFjayAvKiwgdGhpc0FyZyAqLykgeworICAgICJ1
c2Ugc3RyaWN0IjsKKyAgICBpZiAodGhpcyA9PT0gbnVsbCkKKyAgICAgICAgdGhyb3cgbmV3IEBU
eXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3Qg
YmUgbnVsbCIpOworICAgIAorICAgIGlmICh0aGlzID09PSB1bmRlZmluZWQpCisgICAgICAgIHRo
cm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8
dGhpc3wgbm90IGJlIHVuZGVmaW5lZCIpOworICAgIAorICAgIHZhciBhcnJheSA9IEBPYmplY3Qo
dGhpcyk7CisgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCA+Pj4gMDsKKyAgICAKKyAgICBp
ZiAodHlwZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKQorICAgICAgICB0aHJvdyBuZXcgQFR5
cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlv
biIpOworCisgICAgdmFyIHRoaXNBcmcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50
c1sxXSA6IHVuZGVmaW5lZDsKKyAgICAKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsg
aSsrKSB7CisgICAgICAgIGlmICghKGkgaW4gYXJyYXkpKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIGlmICghY2FsbGJhY2suQGNhbGwodGhpc0FyZywgYXJyYXlbaV0sIGksIGFycmF5
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5FeGVjdXRhYmxlcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQxZGJiNWY5MjI1ZTI4YTEyZWQzZDE3OThm
ZjE3NjhlNDM2NzFhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKworI2luY2x1ZGUgIkV4ZWN1dGFi
bGUuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklu
bGluZXMuaCIKKyNpbmNsdWRlICJQYXJzZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0J1aWx0
aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKFZNJiB2bSkKKyAgICA6IG1fdm0odm0p
CisjZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlv
bk5hbWUsIGxlbmd0aCkgLCBtXyMjbmFtZSMjU291cmNlKG1ha2VTb3VyY2UoU3RyaW5nSW1wbDo6
Y3JlYXRlRnJvbUxpdGVyYWwoc18jI25hbWUsIGxlbmd0aCksIFN0cmluZ0ltcGw6OmNyZWF0ZUZy
b21MaXRlcmFsKCI8YnVpbHRpbj4iKSkpCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTihJTklUSUFM
SVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgRVhQT1NFX0JVSUxUSU5fU1RSSU5H
UworeworfQorCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVz
OjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGNvbnN0
IElkZW50aWZpZXImIG5hbWUpCit7CisgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVM
YXN0TmV3bGluZTsKKyAgICBQYXJzZXJFcnJvciBlcnJvcjsKKyAgICBSZWZQdHI8UHJvZ3JhbU5v
ZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oJm1fdm0sIHNvdXJjZSwgMCwgSWRlbnRp
ZmllcigpLCBKU1BhcnNlQnVpbHRpbiwgSlNQYXJzZVByb2dyYW1Db2RlLCBlcnJvciwgJnBvc2l0
aW9uQmVmb3JlTGFzdE5ld2xpbmUpOworCisgICAgaWYgKCFwcm9ncmFtKSB7CisgICAgICAgIGRh
dGFMb2coIkZhdGFsIGVycm9yIGNvbXBpbGluZyBidWlsdGluIGZ1bmN0aW9uICciLCBuYW1lLnN0
cmluZygpLCAiJzogIiwgZXJyb3IubV9tZXNzYWdlKTsKKyAgICAgICAgQ1JBU0goKTsKKyAgICB9
CisKKyAgICBTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVtZW50ID0gcHJvZ3JhbS0+c2luZ2xlU3Rh
dGVtZW50KCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudCk7CisgICAgUkVMRUFT
RV9BU1NFUlQoZXhwclN0YXRlbWVudC0+aXNFeHByU3RhdGVtZW50KCkpOworICAgIEV4cHJlc3Np
b25Ob2RlKiBmdW5jRXhwciA9IHN0YXRpY19jYXN0PEV4cHJTdGF0ZW1lbnROb2RlKj4oZXhwclN0
YXRlbWVudCktPmV4cHIoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwcik7CisgICAgUkVM
RUFTRV9BU1NFUlQoZnVuY0V4cHItPmlzRnVuY0V4cHJOb2RlKCkpOworICAgIEZ1bmN0aW9uQm9k
eU5vZGUqIGJvZHkgPSBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihmdW5jRXhwciktPmJvZHko
KTsKKyAgICBSRUxFQVNFX0FTU0VSVCghcHJvZ3JhbS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7
CisgICAgCisgICAgYm9keS0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGlu
ZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keS0+
aWRlbnQoKS5pc051bGwoKSk7CisgICAgCisgICAgLy8gVGhpcyBmdW5jdGlvbiBhc3N1bWVzIGFu
IGlucHV0IHN0cmluZyB0aGF0IHdvdWxkIHJlc3VsdCBpbiBhIHNpbmdsZSBhbm9ueW1vdXMgZnVu
Y3Rpb24gZXhwcmVzc2lvbi4KKyAgICBib2R5LT5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9y
ZUxhc3ROZXdsaW5lKTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5KTsKKyAgICBmb3IgKGNvbnN0
IGF1dG8mIGNsb3NlZFZhcmlhYmxlIDogcHJvZ3JhbS0+Y2xvc2VkVmFyaWFibGVzKCkpIHsKKyAg
ICAgICAgaWYgKGNsb3NlZFZhcmlhYmxlID09IG1fdm0ucHJvcGVydHlOYW1lcy0+YXJndW1lbnRz
LmltcGwoKSkKKyAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBpZiAoY2xvc2Vk
VmFyaWFibGUgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLmltcGwoKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBSRUxFQVNFX0FTU0VSVChjbG9zZWRWYXJp
YWJsZS0+aXNFbXB0eVVuaXF1ZSgpKTsKKyAgICB9CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
cmVhdGUoJm1fdm0sIHNvdXJjZSwgYm9keSwgdHJ1ZSwgVW5saW5rZWRCdWlsdGluRnVuY3Rpb24p
OworICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+bV9uYW1lVmFsdWUuc2V0KG1fdm0sIGZ1bmN0aW9u
RXhlY3V0YWJsZSwganNTdHJpbmcoJm1fdm0sIG5hbWUuc3RyaW5nKCkpKTsKKyAgICByZXR1cm4g
ZnVuY3Rpb25FeGVjdXRhYmxlOworfQorCisjZGVmaW5lIERFRklORV9CVUlMVElOX0VYRUNVVEFC
TEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpuYW1lIyNFeGVjdXRhYmxlKCkgXAore1wKKyAgICBp
ZiAoIW1fIyNuYW1lIyNFeGVjdXRhYmxlKVwKKyAgICAgICAgbV8jI25hbWUjI0V4ZWN1dGFibGUg
PSBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShtXyMjbmFtZSMjU291cmNlLCBtX3ZtLnByb3BlcnR5
TmFtZXMtPmZ1bmN0aW9uTmFtZSk7XAorICAgIHJldHVybiBtXyMjbmFtZSMjRXhlY3V0YWJsZS5n
ZXQoKTtcCit9CitKU0NfRk9SRUFDSF9CVUlMVElOKERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVT
KQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX1NPVVJDRVMKKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5
YTE5ZTI2MTUwNzk0YTY2OWVjOThlMzk5YmY2N2Y3ZjcxMDY0MTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKQEAg
LTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgQnVpbHRpbkV4ZWN1dGFibGVzX2gKKyNkZWZpbmUgQnVpbHRpbkV4ZWN1dGFi
bGVzX2gKKworI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisjaW5jbHVkZSAiU291cmNlQ29kZS5o
IgorI2luY2x1ZGUgIldlYWsuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7CitjbGFzcyBJ
ZGVudGlmaWVyOworY2xhc3MgVk07CisKK2NsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlcyB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8QnVpbHRpbkV4ZWN1dGFibGVzPiBjcmVhdGUoVk0m
IHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBCdWlsdGluRXhlY3V0YWJs
ZXModm0pKTsKKyAgICB9CisgICAgCisjZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVT
KG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCitjb25zdCBTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2Uo
KSB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CisgICAgCisgICAgSlNDX0ZPUkVBQ0hfQlVJ
TFRJTihFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJTl9T
T1VSQ0VTCisgICAgCitwcml2YXRlOgorICAgIEJ1aWx0aW5FeGVjdXRhYmxlcyhWTSYpOworICAg
IFZNJiBtX3ZtOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVCdWlsdGlu
RXhlY3V0YWJsZShjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYpOworI2RlZmlu
ZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5n
dGgpXAorICAgIFNvdXJjZUNvZGUgbV8jI25hbWUjI1NvdXJjZTsgXAorICAgIFdlYWs8VW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU+IG1fIyNuYW1lIyNFeGVjdXRhYmxlOworICAgIEpTQ19GT1JF
QUNIX0JVSUxUSU4oREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIERFQ0xB
UkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMjYzZWM3Y2FkZjRmNzlj
YTgxMDI0NDFlNjJiZjJhMDViNWRkYzNmMi4uNzUxNTA2NTQyMzc2ZDdlZGM1OTlhYTAwZjliMTI2
ODVjZGEzNTJjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKQEAgLTQzLDExICs0MywxMyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJ
VFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1
ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50
LmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk5hdGl2ZUVy
cm9yQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmgiCiAj
aW5jbHVkZSAiUmVkdWNlV2hpdGVzcGFjZS5oIgpAQCAtMTU2OSw3ICsxNTcxLDcgQEAgQ29kZUJs
b2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtl
ZENvZGVCbG9jayogdW5saW4KIAogICAgIHNldENvbnN0YW50UmVnaXN0ZXJzKHVubGlua2VkQ29k
ZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVycygpKTsKICAgICBpZiAodW5saW5rZWRDb2RlQmxvY2st
PnVzZXNHbG9iYWxPYmplY3QoKSkKLSAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1t1bmxpbmtl
ZENvZGVCbG9jay0+Z2xvYmFsT2JqZWN0UmVnaXN0ZXIoKS5vZmZzZXQoKV0uc2V0KCptX3ZtLCBv
d25lckV4ZWN1dGFibGUsIG1fZ2xvYmFsT2JqZWN0LmdldCgpKTsKKyAgICAgICAgbV9jb25zdGFu
dFJlZ2lzdGVyc1t1bmxpbmtlZENvZGVCbG9jay0+Z2xvYmFsT2JqZWN0UmVnaXN0ZXIoKS50b0Nv
bnN0YW50SW5kZXgoKV0uc2V0KCptX3ZtLCBvd25lckV4ZWN1dGFibGUsIG1fZ2xvYmFsT2JqZWN0
LmdldCgpKTsKICAgICBtX2Z1bmN0aW9uRGVjbHMucmVzaXplVG9GaXQodW5saW5rZWRDb2RlQmxv
Y2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpKTsKICAgICBmb3IgKHNpemVfdCBjb3VudCA9IHVu
bGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSwgaSA9IDA7IGkgPCBjb3Vu
dDsgKytpKSB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4
ZWN1dGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDY4YmMwMzc5ZjU3NDRjOWE4
Zjc0MzFkYjY0ZjhhYjU0ZTZlMTA1M2YuLjQ5OTVjNTJjZjhiMmIxYjRkNjI4MDQ1M2VlZDI3Yzc3
NGE0OTU1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
QEAgLTU2LDcgKzU2LDYgQEAKICNpbmNsdWRlICJIYW5kbGVySW5mby5oIgogI2luY2x1ZGUgIk9i
amVjdEFsbG9jYXRpb25Qcm9maWxlLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgotI2luY2x1ZGUg
Ik9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQdXRQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJJ
bnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hw
b2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxv
Y2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCmluZGV4IDk4NmUwM2QwY2JhNzE4NWIzOWNlZTAy
M2Y0YWI2YmM5YjhjY2I2ZTQuLjcwZWY5YjQyOTAxYzA1OGJjNzJjOWRiOTJkY2MzM2Q1M2Q2YmFh
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9maWxlZENv
ZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcApA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0Nv
bW1vbi5oIgogI2luY2x1ZGUgIkRGR0V4aXRQcm9maWxlLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5s
aW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggMWRmYjVhYzZhZDkwOTNm
OGY4MTEwMWVmN2YyZTYxMjMxMWFjMTkzOS4uNDMzOTBkOTY1ZmM1MDM0MDE2ZjdiZmZmMjNlNjhi
YjFlMDU0NTUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC00OSw5ICs0OSw5IEBAIGNvbnN0IENsYXNzSW5mbyBV
bmxpbmtlZFByb2dyYW1Db2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkUHJvZ3JhbUNvZGVC
bG9jayIsCiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRFdmFsQ29kZUJsb2NrOjpzX2luZm8gPSB7
ICJVbmxpbmtlZEV2YWxDb2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKFVubGlua2VkRXZhbENvZGVCbG9jaykgfTsKIGNvbnN0IENsYXNzSW5mbyBVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrKSB9OwogCi1zdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayog
Z2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhWTSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHBy
b2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorc3RhdGljIFVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2sqIGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZtLCBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2Zp
bGVyTW9kZSBwcm9maWxlck1vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwg
UGFyc2VyRXJyb3ImIGVycm9yKQogewotICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBib2R5
ID0gcGFyc2U8RnVuY3Rpb25Cb2R5Tm9kZT4oJnZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPnBhcmFt
ZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4
dCgpID8gSlNQYXJzZVN0cmljdCA6IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VGdW5jdGlvbkNvZGUs
IGVycm9yKTsKKyAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSA9IHBhcnNlPEZ1bmN0
aW9uQm9keU5vZGU+KCZ2bSwgc291cmNlLCBleGVjdXRhYmxlLT5wYXJhbWV0ZXJzKCksIGV4ZWN1
dGFibGUtPm5hbWUoKSwgZXhlY3V0YWJsZS0+dG9TdHJpY3RuZXNzKCksIEpTUGFyc2VGdW5jdGlv
bkNvZGUsIGVycm9yKTsKIAogICAgIGlmICghYm9keSkgewogICAgICAgICBBU1NFUlQoZXJyb3Iu
bV90eXBlICE9IFBhcnNlckVycm9yOjpFcnJvck5vbmUpOwpAQCAtNjMsNyArNjMsNyBAQCBzdGF0
aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhW
TSYgdm0sIFVubGlua2VkRnVuYwogICAgIGJvZHktPmZpbmlzaFBhcnNpbmcoZXhlY3V0YWJsZS0+
cGFyYW1ldGVycygpLCBleGVjdXRhYmxlLT5uYW1lKCksIGV4ZWN1dGFibGUtPmZ1bmN0aW9uTmFt
ZUlzSW5TY29wZVRvZ2dsZSgpKTsKICAgICBleGVjdXRhYmxlLT5yZWNvcmRQYXJzZShib2R5LT5m
ZWF0dXJlcygpLCBib2R5LT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKICAgICAKLSAgICBVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
OjpjcmVhdGUoJnZtLCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFibGVJbmZvKGJvZHktPm5lZWRzQWN0
aXZhdGlvbigpLCBib2R5LT51c2VzRXZhbCgpLCBib2R5LT5pc1N0cmljdE1vZGUoKSwga2luZCA9
PSBDb2RlRm9yQ29uc3RydWN0KSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVz
dWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2Rl
LCBFeGVjdXRhYmxlSW5mbyhib2R5LT5uZWVkc0FjdGl2YXRpb24oKSwgYm9keS0+dXNlc0V2YWwo
KSwgYm9keS0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rp
b25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uKSk7CiAgICAgT3duUHRyPEJ5dGVjb2Rl
R2VuZXJhdG9yPiBnZW5lcmF0b3IoYWRvcHRQdHIobmV3IEJ5dGVjb2RlR2VuZXJhdG9yKHZtLCBi
b2R5LmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlKSkpOwogICAgIGVy
cm9yID0gZ2VuZXJhdG9yLT5nZW5lcmF0ZSgpOwogICAgIGJvZHktPmRlc3Ryb3lEYXRhKCk7CkBA
IC04MiwxMyArODIsMTQgQEAgdW5zaWduZWQgVW5saW5rZWRDb2RlQmxvY2s6OmFkZE9yRmluZENv
bnN0YW50KEpTVmFsdWUgdikKICAgICByZXR1cm4gYWRkQ29uc3RhbnQodik7CiB9CiAKLVVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9u
Qm9keU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSkKK1VubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5v
ZGUsIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCkKICAg
ICA6IEJhc2UoKnZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX251bUNhcHR1cmVkVmFyaWFibGVzKG5v
ZGUtPmNhcHR1cmVkVmFyaWFibGVDb3VudCgpKQogICAgICwgbV9mb3JjZVVzZXNBcmd1bWVudHMo
bm9kZS0+dXNlc0FyZ3VtZW50cygpKQogICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChub2RlLT5p
c1N0cmljdE1vZGUoKSkKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMobm9kZS0+aGFzQ2Fw
dHVyZWRWYXJpYWJsZXMoKSkKICAgICAsIG1faXNGcm9tR2xvYmFsQ29kZShpc0Zyb21HbG9iYWxD
b2RlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihraW5kID09IFVubGlua2VkQnVpbHRpbkZ1
bmN0aW9uKQogICAgICwgbV9uYW1lKG5vZGUtPmlkZW50KCkpCiAgICAgLCBtX2luZmVycmVkTmFt
ZShub2RlLT5pbmZlcnJlZE5hbWUoKSkKICAgICAsIG1fcGFyYW1ldGVycyhub2RlLT5wYXJhbWV0
ZXJzKCkpCkBAIC0xNjYsNyArMTY3LDcgQEAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNvZGVCbG9ja0ZvcihWTSYgdm0sIGNvbnMKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCi0gICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0
ID0gZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayh2bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXph
dGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CisgICAgVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayh2
bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmls
ZXJNb2RlLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBV
bmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBlcnJvcik7CiAgICAgCiAgICAgaWYgKGVycm9yLm1fdHlw
ZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKQogICAgICAgICByZXR1cm4gMDsKQEAgLTIxMCw2
ICsyMTEsNyBAQCBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0qIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZVR5cGUgY29kZQogICAgICwgbV9pc1N0cmljdE1vZGUo
aW5mby5tX2lzU3RyaWN0TW9kZSkKICAgICAsIG1faXNDb25zdHJ1Y3RvcihpbmZvLm1faXNDb25z
dHJ1Y3RvcikKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMoZmFsc2UpCisgICAgLCBtX2lz
QnVpbHRpbkZ1bmN0aW9uKGluZm8ubV9pc0J1aWx0aW5GdW5jdGlvbikKICAgICAsIG1fZmlyc3RM
aW5lKDApCiAgICAgLCBtX2xpbmVDb3VudCgwKQogICAgICwgbV9lbmRDb2x1bW4oVUlOVF9NQVgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oCmluZGV4IGI5ZGFlMmQ1YzY5Yzc5Y2VhYWE4MDIzZDJhM2ExZjI2ZDQ2MDk0M2IuLmFiZjZj
ZjM1YjkzMDZhNGY3YTMwMWFiMGRmNzY2NmVjNjEyZTM3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC02NiwyNiArNjYs
MzUgQEAgdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOwog
dHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZExMSW50Q2FsbExpbmtJbmZvOwogCiBzdHJ1Y3QgRXhl
Y3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBi
b29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yKQorICAg
IEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29s
IGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9u
KQogICAgICAgICA6IG1fbmVlZHNBY3RpdmF0aW9uKG5lZWRzQWN0aXZhdGlvbikKICAgICAgICAg
LCBtX3VzZXNFdmFsKHVzZXNFdmFsKQogICAgICAgICAsIG1faXNTdHJpY3RNb2RlKGlzU3RyaWN0
TW9kZSkKICAgICAgICAgLCBtX2lzQ29uc3RydWN0b3IoaXNDb25zdHJ1Y3RvcikKKyAgICAgICAg
LCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGlzQnVpbHRpbkZ1bmN0aW9uKQogICAgIHsKICAgICB9Ci0g
ICAgYm9vbCBtX25lZWRzQWN0aXZhdGlvbjsKLSAgICBib29sIG1fdXNlc0V2YWw7Ci0gICAgYm9v
bCBtX2lzU3RyaWN0TW9kZTsKLSAgICBib29sIG1faXNDb25zdHJ1Y3RvcjsKKyAgICBib29sIG1f
bmVlZHNBY3RpdmF0aW9uIDogMTsKKyAgICBib29sIG1fdXNlc0V2YWwgOiAxOworICAgIGJvb2wg
bV9pc1N0cmljdE1vZGUgOiAxOworICAgIGJvb2wgbV9pc0NvbnN0cnVjdG9yIDogMTsKKyAgICBi
b29sIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOworfTsKKworZW51bSBVbmxpbmtlZEZ1bmN0aW9u
S2luZCB7CisgICAgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwKKyAgICBVbmxpbmtlZEJ1aWx0aW5G
dW5jdGlvbiwKIH07CiAKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGlj
IEpTQ2VsbCB7CiBwdWJsaWM6CisgICAgZnJpZW5kIGNsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlczsK
ICAgICBmcmllbmQgY2xhc3MgQ29kZUNhY2hlOworICAgIGZyaWVuZCBjbGFzcyBWTTsKICAgICB0
eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogY3JlYXRlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlO
b2RlKiBub2RlLCBib29sIGlzRnJvbUdsb2JhbENvZGUgPSBmYWxzZSkKKyAgICBzdGF0aWMgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSogbm9kZSwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlLCBV
bmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCkKICAgICB7Ci0gICAgICAg
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVhcCkpIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1
Y3R1cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgaXNGcm9tR2xvYmFsQ29kZSk7CisgICAgICAgIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVhcCkpIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1
cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgaXNGcm9tR2xvYmFsQ29kZSwgdW5saW5rZWRGdW5jdGlv
bktpbmQpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oKnZtKTsKICAgICAgICAg
cmV0dXJuIGluc3RhbmNlOwogICAgIH0KQEAgLTk5LDYgKzEwOCwxNCBAQCBwdWJsaWM6CiAgICAg
fQogICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0OwogICAgIGJvb2wgaXNJblN0cmlj
dENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0OyB9CisgICAgSlNQ
YXJzZXJTdHJpY3RuZXNzIHRvU3RyaWN0bmVzcygpIGNvbnN0CisgICAgeworICAgICAgICBpZiAo
bV9pc0J1aWx0aW5GdW5jdGlvbikKKyAgICAgICAgICAgIHJldHVybiBKU1BhcnNlQnVpbHRpbjsK
KyAgICAgICAgaWYgKG1faXNJblN0cmljdENvbnRleHQpCisgICAgICAgICAgICByZXR1cm4gSlNQ
YXJzZVN0cmljdDsKKyAgICAgICAgcmV0dXJuIEpTUGFyc2VOb3JtYWw7CisgICAgfQogICAgIEZ1
bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZSBmdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGUoKSBj
b25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZTsgfQogCiAgICAgdW5z
aWduZWQgZmlyc3RMaW5lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdExpbmVPZmZzZXQ7
IH0KQEAgLTE0Miw4ICsxNTksMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhh
c0ltbW9ydGFsU3RydWN0dXJlID0gdHJ1ZTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2Vs
bCopOwogCisgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNC
dWlsdGluRnVuY3Rpb247IH0KKwogcHJpdmF0ZToKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZShWTSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbkJvZHlOb2Rl
KiwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZShWTSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbkJvZHlOb2RlKiwg
Ym9vbCBpc0Zyb21HbG9iYWxDb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCk7CiAgICAgV3JpdGVC
YXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fY29kZUJsb2NrRm9yQ2FsbDsKICAg
ICBXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV9jb2RlQmxvY2tGb3JD
b25zdHJ1Y3Q7CiAKQEAgLTE1Miw2ICsxNzEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0lu
U3RyaWN0Q29udGV4dCA6IDE7CiAgICAgYm9vbCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIDogMTsK
ICAgICBib29sIG1faXNGcm9tR2xvYmFsQ29kZSA6IDE7CisgICAgYm9vbCBtX2lzQnVpbHRpbkZ1
bmN0aW9uIDogMTsKIAogICAgIElkZW50aWZpZXIgbV9uYW1lOwogICAgIElkZW50aWZpZXIgbV9p
bmZlcnJlZE5hbWU7CkBAIC0zMTksNiArMzM5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNO
dW1lcmljQ29tcGFyZUZ1bmN0aW9uKGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKSB7IG1f
aXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uID0gaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CiAg
ICAgYm9vbCBpc051bWVyaWNDb21wYXJlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzTnVt
ZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQogCisgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KKyAgICAKICAgICB2b2lkIHNocmlu
a1RvRml0KCkKICAgICB7CiAgICAgICAgIG1fanVtcFRhcmdldHMuc2hyaW5rVG9GaXQoKTsKQEAg
LTUwMCw2ICs1MjIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1N0cmljdE1vZGUgOiAxOwog
ICAgIGJvb2wgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICBib29sIG1faGFzQ2FwdHVyZWRWYXJp
YWJsZXMgOiAxOworICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CiAgICAgdW5zaWdu
ZWQgbV9maXJzdExpbmU7CiAgICAgdW5zaWduZWQgbV9saW5lQ291bnQ7CiAgICAgdW5zaWduZWQg
bV9lbmRDb2x1bW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDY4MTBhYjgwMDJjZTZiYjhkNzhlN2Zm
MjIyN2Y0YzZlYTdiNzU4YzIuLmVjNTIxYjUzMDQ2MzkyM2U3NGMwMTBmYTIxOGU1OWVkMmE5YTNj
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0xNzUsNiArMTc1LDcgQEAgQnl0ZWNvZGVHZW5lcmF0
b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBV
bmxpbmtlZFAKICNlbmRpZgogICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKICAgICAsIG1f
ZXhwcmVzc2lvblRvb0RlZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGZhbHNl
KQogewogICAgIGlmIChtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKQogICAgICAgICBtX2NvZGVCbG9j
ay0+c2V0TmVlZHNGdWxsU2NvcGVDaGFpbih0cnVlKTsKQEAgLTIyMiw3ICsyMjMsMTMgQEAgQnl0
ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Cb2R5Tm9k
ZSogZnVuY3Rpb25Cb2R5LCBVbmwKICNlbmRpZgogICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxz
ZSkKICAgICAsIG1fZXhwcmVzc2lvblRvb0RlZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1
bmN0aW9uKGNvZGVCbG9jay0+aXNCdWlsdGluRnVuY3Rpb24oKSkKIHsKKyAgICBpZiAobV9pc0J1
aWx0aW5GdW5jdGlvbikgeworICAgICAgICBtX3Nob3VsZEVtaXRQcm9maWxlSG9va3MgPSBmYWxz
ZTsKKyAgICAgICAgbV9zaG91bGRFbWl0RGVidWdIb29rcyA9IGZhbHNlOworICAgIH0KKwogICAg
IGlmIChtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKQogICAgICAgICBtX2NvZGVCbG9jay0+c2V0TmVl
ZHNGdWxsU2NvcGVDaGFpbih0cnVlKTsKIApAQCAtNDM4LDYgKzQ0NSw3IEBAIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5s
aW5rZWRFdmFsQ29kCiAjZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAgICAg
LCBtX2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihm
YWxzZSkKIHsKICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNGdWxsU2NvcGVDaGFpbih0cnVlKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCmluZGV4IDRlOWYyMTNjOWJmYTZjZjE5NGIxYTE0ZmU5MTllODMzMzdhZTM1
ZDkuLjE1ODQyNzRiNzhlYTZjMGJkMGVmYjBiOTgyNWM4MThiZTBkYmMwNjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKQEAgLTQ2MSw3ICs0NjEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBzaG91
bGRFbWl0RGVidWdIb29rcygpIHsgcmV0dXJuIG1fc2hvdWxkRW1pdERlYnVnSG9va3M7IH0KICAg
ICAgICAgCiAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2Rl
QmxvY2stPmlzU3RyaWN0TW9kZSgpOyB9Ci0KKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNCdWls
dGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisgICAg
ICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMYWJlbDsKICAgICAgICAg
CkBAIC01NDMsNyArNTQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbWFrZUZ1bmN0aW9uKEZ1bmN0aW9uQm9keU5vZGUq
IGJvZHkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgYm9keSk7CisgICAg
ICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBt
X3Njb3BlTm9kZS0+c291cmNlKCksIGJvZHksIGZhbHNlLCBpc0J1aWx0aW5GdW5jdGlvbigpID8g
VW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uKTsKICAgICAg
ICAgfQogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbml0TGF6eVJlZ2lzdGVyKFJlZ2lzdGVy
SUQqKTsKQEAgLTY3Nyw2ICs2NzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29s
IG1fdXNlc0V4Y2VwdGlvbnM7CiAgICAgICAgIGJvb2wgbV9leHByZXNzaW9uVG9vRGVlcDsKKyAg
ICAgICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9uOwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAx
ZmZkNGYzMTE4ODJkMGVlNWM1NTE0ZjViOGIyNTkzOWQ5NzVlMzc5Li42MmVjYTM2YTEwZDc3MDhh
OTI4ZDQzYWMwM2YyZmM4NjE1Y2VjYTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0yNiwxMCArMjYsMTAgQEAKIAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCi0jaW5jbHVkZSAiTm9kZUNv
bnN0cnVjdG9ycy5oIgogCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRl
ICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUg
IkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpA
QCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJMYWJl
bFNjb3BlLmgiCiAjaW5jbHVkZSAiTGV4ZXIuaCIKKyNpbmNsdWRlICJOb2RlQ29uc3RydWN0b3Jz
LmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1
ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCkBAIC01MzUsMzYgKzUzNiwzOSBAQCBSZWdpc3RlcklE
KiBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsCiAgICAgUmVmUHRyPExhYmVsPiBlbmQgPSBnZW5lcmF0b3IubmV3TGFiZWwo
KTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jh
c2UpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90
KCksIHN1YmV4cHJlc3Npb25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwotICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3Iu
dGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIG1faWRlbnQpOworICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVt
cERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCku
Y2FsbCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZp
bmFsRGVzdGluYXRpb24oZHN0LCBmdW5jdGlvbi5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRK
dW1wSWZOb3RGdW5jdGlvbkNhbGwoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKKyAg
ICBib29sIGVtaXRDYWxsQ2hlY2sgPSAhZ2VuZXJhdG9yLmlzQnVpbHRpbkZ1bmN0aW9uKCk7Cisg
ICAgaWYgKGVtaXRDYWxsQ2hlY2spCisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVu
Y3Rpb25DYWxsKGZ1bmN0aW9uLmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7CisKICAgICB7CiAgICAg
ICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIp
IHsKICAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIG9sZExpc3QgPSBtX2FyZ3MtPm1fbGlz
dE5vZGU7CiAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5v
ZGUtPm1fbmV4dDsKLQorICAgICAgICAgICAgCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGlu
YXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxB
cmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRO
b2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG9sZExpc3QtPm1fZXhwcik7CiAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlv
bi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVu
ZC5nZXQoKSk7Ci0KICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9sZExpc3Q7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0
aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwg
YmFzZS5nZXQoKSk7CiAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2Vu
ZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1
bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhw
ZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZv
dEVuZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOwogICAg
ICAgICB9CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOwot
ICAgIHsKLSAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9h
cmdzKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lz
dGVyKCksIGJhc2UuZ2V0KCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFs
dWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVu
dHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgaWYgKGVtaXRDYWxs
Q2hlY2spIHsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CisgICAgICAg
IGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOworICAgICAgICB7CisgICAgICAg
ICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCks
IGJhc2UuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVl
LmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRz
LCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICB9CisgICAgICAg
IGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVt
aXRMYWJlbChlbmQuZ2V0KCkpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZS5nZXQoKTsKIH0KIApA
QCAtNTg1LDY1ICs1ODksNjcgQEAgUmVnaXN0ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICBSZWZQdHI8
TGFiZWw+IGVuZCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYmFzZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRF
eHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0KCks
IHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uID0g
Z2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFz
ZS5nZXQoKSwgbV9pZGVudCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uOwogICAg
IFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0
aW9uKGRzdCwgZnVuY3Rpb24uZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVu
Y3Rpb25BcHBseShmdW5jdGlvbi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkpOwotICAgIHsKLSAgICAg
ICAgaWYgKG1heUJlQ2FsbCkgewotICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZSAm
JiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcikgewotICAgICAgICAgICAgICAgIEFyZ3VtZW50
TGlzdE5vZGUqIG9sZExpc3QgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7Ci0gICAgICAgICAgICAgICAg
aWYgKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIEFT
U0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByLT5pc1NpbXBsZUFycmF5KCkp
OwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0
LT5tX25leHQpOwotICAgICAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBzdGF0
aWNfY2FzdDxBcnJheU5vZGUqPihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByKS0+
dG9Bcmd1bWVudExpc3QoZ2VuZXJhdG9yLnZtKCksIDAsIDApOwotICAgICAgICAgICAgICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdl
bmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0g
ICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNS
ZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1f
YXJncy0+bV9saXN0Tm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwotICAgICAgICAg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVt
aXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1f
YXJncyk7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1l
bnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwotICAgICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQo
KSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtX2Fy
Z3MtPm1fbGlzdE5vZGUgPSBvbGRMaXN0OworICAgIGJvb2wgZW1pdENhbGxDaGVjayA9ICFnZW5l
cmF0b3IuaXNCdWlsdGluRnVuY3Rpb24oKTsKKyAgICBpZiAoZW1pdENhbGxDaGVjaykgeworICAg
ICAgICBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3Rp
bmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYXBwbHkp
OworICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHkoZnVuY3Rpb24u
Z2V0KCksIHJlYWxDYWxsLmdldCgpKTsKKyAgICB9CisgICAgaWYgKG1heUJlQ2FsbCkgeworICAg
ICAgICBpZiAobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHBy
KSB7CisgICAgICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xp
c3ROb2RlOworICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KSB7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHIt
PmlzU2ltcGxlQXJyYXkoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlz
dE5vZGUtPm1fbmV4dC0+bV9uZXh0KTsKKyAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5v
ZGUgPSBzdGF0aWNfY2FzdDxBcnJheU5vZGUqPihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+
bV9leHByKS0+dG9Bcmd1bWVudExpc3QoZ2VuZXJhdG9yLnZtKCksIDAsIDApOworICAgICAgICAg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1v
dmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKKyAgICAgICAg
ICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwor
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdp
c3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVu
Y3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
CiAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9k
ZSA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwogICAgICAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRl
bXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKICAgICAgICAgICAgICAgICBDYWxsQXJn
dW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgICAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVm
aW5lZCgpKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50
cy50aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKICAgICAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9F
eHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2Rl
ID0gb2xkTGlzdDsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2FyZ3Mt
Pm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQpOwotICAgICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHByb2ZpbGVIb29rUmVnaXN0ZXI7Ci0gICAgICAgICAgICBpZiAo
Z2VuZXJhdG9yLnNob3VsZEVtaXRQcm9maWxlSG9va3MoKSkKLSAgICAgICAgICAgICAgICBwcm9m
aWxlSG9va1JlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5l
cmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHRoaXNSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2FyZ3Mt
Pm1fbGlzdE5vZGUtPm1fZXhwcik7Ci0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXJn
c1JlZ2lzdGVyOwotICAgICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogYXJncyA9IG1fYXJncy0+
bV9saXN0Tm9kZS0+bV9uZXh0OwotICAgICAgICAgICAgaWYgKGFyZ3MtPm1fZXhwci0+aXNSZXNv
bHZlTm9kZSgpICYmIGdlbmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHN0YXRpY19jYXN0
PFJlc29sdmVOb2RlKj4oYXJncy0+bV9leHByKS0+aWRlbnRpZmllcigpKSkKLSAgICAgICAgICAg
ICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IudW5jaGVja2VkUmVnaXN0ZXJGb3JBcmd1bWVu
dHMoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBn
ZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKLQotICAgICAgICAgICAgLy8gRnVuY3Rp
b24ucHJvdG90eXBlLmFwcGx5IGlnbm9yZXMgZXh0cmEgYXJndW1lbnRzLCBidXQgd2Ugc3RpbGwK
LSAgICAgICAgICAgIC8vIG5lZWQgdG8gZXZhbHVhdGUgdGhlbSBmb3Igc2lkZSBlZmZlY3RzLgot
ICAgICAgICAgICAgd2hpbGUgKChhcmdzID0gYXJncy0+bV9uZXh0KSkKLSAgICAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKLQotICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRDYWxsVmFyYXJncyhyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgp
LCB0aGlzUmVnaXN0ZXIuZ2V0KCksIGFyZ3NSZWdpc3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpLCBwcm9maWxlSG9va1JlZ2lzdGVyLmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOworICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRz
KGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxs
QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBO
b0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7CiAgICAgICAgIH0KLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5n
ZXQoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZSAm
JiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBwcm9maWxlSG9va1JlZ2lzdGVyOworICAgICAgICBpZiAoZ2VuZXJhdG9yLnNob3VsZEVtaXRQ
cm9maWxlSG9va3MoKSkKKyAgICAgICAgICAgIHByb2ZpbGVIb29rUmVnaXN0ZXIgPSBnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rp
b24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBi
YXNlLmdldCgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNSZWdpc3RlciA9IGdl
bmVyYXRvci5lbWl0Tm9kZShtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcik7CisgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBhcmdzUmVnaXN0ZXI7CisgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUq
IGFyZ3MgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKKyAgICAgICAgaWYgKGFyZ3MtPm1f
ZXhwci0+aXNSZXNvbHZlTm9kZSgpICYmIGdlbmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRz
KHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oYXJncy0+bV9leHByKS0+aWRlbnRpZmllcigpKSkK
KyAgICAgICAgICAgIGFyZ3NSZWdpc3RlciA9IGdlbmVyYXRvci51bmNoZWNrZWRSZWdpc3RlckZv
ckFyZ3VtZW50cygpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBn
ZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKKworICAgICAgICAvLyBGdW5jdGlvbi5w
cm90b3R5cGUuYXBwbHkgaWdub3JlcyBleHRyYSBhcmd1bWVudHMsIGJ1dCB3ZSBzdGlsbAorICAg
ICAgICAvLyBuZWVkIHRvIGV2YWx1YXRlIHRoZW0gZm9yIHNpZGUgZWZmZWN0cy4KKyAgICAgICAg
d2hpbGUgKChhcmdzID0gYXJncy0+bV9uZXh0KSkKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
Tm9kZShhcmdzLT5tX2V4cHIpOworCisgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbFZhcmFyZ3Mo
cmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgp
LCBhcmdzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcHJvZmlsZUhv
b2tSZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAg
ICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChyZWFsQ2FsbC5nZXQoKSk7Ci0gICAgeworICAg
IGlmIChlbWl0Q2FsbENoZWNrKSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0
KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKICAgICAg
ICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2Uu
Z2V0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1
bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCks
IGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwo
ZW5kLmdldCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0KCkpOwog
ICAgIHJldHVybiByZXR1cm5WYWx1ZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Ny
ZWF0ZV9oYXNoX3RhYmxlCmluZGV4IDM5Nzk3NmIwNmM3YTliNTgzNjMzMjkwMGE2ZWJiOTNlYzY4
Yjc0ODYuLmNhZDY1YmM0Y2M4ODhlMzE0Zjg4ZDY2NWRkNGE2ZTY0NWEwOWEzNTUgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUKQEAgLTI4OSw3ICsyODksMTcgQEAgc3Vi
IG91dHB1dCgpIHsKICAgICAgICAgICAgICRpbnRyaW5zaWMgPSAiUmVnRXhwVGVzdEludHJpbnNp
YyIgaWYgKCRrZXkgZXEgInRlc3QiKTsKICAgICAgICAgfQogCisgICAgICAgIGlmICgkdmFsdWVz
WyRpXXsidHlwZSJ9IGVxICJGdW5jdGlvbiIpICB7CisgICAgICAgICAgICBteSAkdGFibGVIZWFk
ID0gJG5hbWU7CisgICAgICAgICAgICAkdGFibGVIZWFkID1+IHMvVGFibGUkLy87CisgICAgICAg
ICAgICBwcmludCAiICNpZiBKU0NfQlVJTFRJTl9FWElTVFMoIiAuIHVjKCR0YWJsZUhlYWQgLiAk
a2V5KSAuIilcbiI7CisgICAgICAgICAgICBwcmludCAiICAgeyBcIiRrZXlcIiwgKCgkYXR0cnNb
JGldKSAmIH5GdW5jdGlvbikgfCBCdWlsdGluLCAkaW50cmluc2ljLCAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8QnVpbHRpbkdlbmVyYXRvcj4oIiAuICR0YWJsZUhlYWQgLiB1Y2ZpcnN0KCRrZXkpIC4g
IkNvZGVHZW5lcmF0b3IpLCAoaW50cHRyX3QpJHNlY29uZFZhbHVlIH0sXG4iOworICAgICAgICAg
ICAgcHJpbnQgIiAjZWxzZVxuIgorICAgICAgICB9CiAgICAgICAgIHByaW50ICIgICB7IFwiJGtl
eVwiLCAkYXR0cnNbJGldLCAkaW50cmluc2ljLCAoaW50cHRyX3QpIiAuICRmaXJzdENhc3RTdHIg
LiAiKCRmaXJzdFZhbHVlKSwgKGludHB0cl90KSIgLiAkc2Vjb25kQ2FzdFN0ciAuICIoJHNlY29u
ZFZhbHVlKSB9LFxuIjsKKyAgICAgICAgaWYgKCR2YWx1ZXNbJGldeyJ0eXBlIn0gZXEgIkZ1bmN0
aW9uIikgIHsKKyAgICAgICAgICAgIHByaW50ICIgI2VuZGlmXG4iCisgICAgICAgIH0KICAgICAg
ICAgJGkrKzsKICAgICB9CiAgICAgcHJpbnQgIiAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIDAsIDAg
fVxuIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9taW5hdG9y
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWluYXRvcnMuY3BwCmluZGV4
IGE1YWU2MTRiOTE5YjBmZDQzNDgyZDAxNWNjMjk1MDg0MGU1NGIyNjEuLjIwMDk2ZTczYjM1MTU5
Yzc0MzRiZDI3YWI2ZjYzMzM3ZmU5ZGY0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9taW5hdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb21pbmF0b3JzLmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiREZHRG9taW5hdG9ycy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25Jbmxp
bmVzLmgiCiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggMmZmMGMzNDE0NmUyYzBiYTJmZjc2YzRkM2Y3YzQ2
YmEzZTI1NTE0Ny4uOTA0NGNkYzZiOGMzYWQ0YTFlOTQxODhkZDFkMGUyMDBlNjlmYjk5YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC00OCw2ICs0
OCw3IEBACiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNs
dWRlICJKU05hbWVTY29wZS5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1
ZGUgIk5hbWVJbnN0YW5jZS5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5j
bHVkZSAiT3BlcmF0aW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dl
bmVyYXRlLWpzLWJ1aWx0aW5zIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWpzLWJ1
aWx0aW5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmVlZTFjN2E3Y2NkZDkzNzY5MjBlNzZkN2ZlOGQzMGFmOTU1ZjMx
YTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtanMt
YnVpbHRpbnMKQEAgLTAsMCArMSwzMDQgQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisjIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisjIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisjIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyMgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCitpbXBvcnQgZmlsZWNtcAoraW1wb3J0IGZubWF0Y2gKK2ltcG9ydCBvcworaW1wb3J0IHJl
CitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3lzCitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBqc29u
CisKK2NvcHlyaWdodFRleHQgPSAiIiIgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqL1xuCisiIiIKKworZ2VuZXJhdG9yU3RyaW5nID0gIi8qIEdlbmVyYXRlZCBieSAlcyBk
byBub3QgaGFuZCBlZGl0LiAqL1xuIiAlIG9zLnBhdGguYmFzZW5hbWUoX19maWxlX18pCisKK2Z1
bmN0aW9uSGVhZFJlZ0V4cCA9IHJlLmNvbXBpbGUociJmdW5jdGlvblxzK1x3K1xzKlwoLio/XCki
LCByZS5NVUxUSUxJTkUgfCByZS5TKQorZnVuY3Rpb25OYW1lUmVnRXhwID0gcmUuY29tcGlsZShy
ImZ1bmN0aW9uXHMrKFx3KylccypcKCIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitmdW5jdGlvblBh
cmFtZXRlckZpbmRlciA9IHJlLmNvbXBpbGUociJeZnVuY3Rpb25ccysoPzpcdyspXHMqXCgoKD86
XHMqXHcrKT9ccyooPzpccyosXHMqXHcrKSopP1wpIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKKwor
bXVsdGlsaW5lQ29tbWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJcL1wqLio/XCpcLyIsIHJlLk1V
TFRJTElORSB8IHJlLlMpCitzaW5nbGVMaW5lQ29tbWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJc
L1wvLio/XG4iLCByZS5NVUxUSUxJTkUgfCByZS5TKQorCitkZWYgZ2V0Q29weXJpZ2h0KHNvdXJj
ZSk6CisgICAgY29weXJpZ2h0QmxvY2sgPSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLmZpbmRhbGwo
c291cmNlKVswXQorICAgIGNvcHlyaWdodEJsb2NrID0gY29weXJpZ2h0QmxvY2tbOmNvcHlyaWdo
dEJsb2NrLmluZGV4KCJSZWRpc3RyaWJ1dGlvbiIpXQorICAgIGNvcHlSaWdodExpbmVzID0gW10K
KworICAgIGZvciBsaW5lIGluIGNvcHlyaWdodEJsb2NrLnNwbGl0KCJcbiIpOgorICAgICAgICBs
aW5lID0gbGluZS5yZXBsYWNlKCIvKiIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNl
KCIqLyIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIqIiwgIiIpCisgICAgICAg
IGxpbmUgPSBsaW5lLnJlcGxhY2UoIkNvcHlyaWdodCIsICIiKQorICAgICAgICBsaW5lID0gbGlu
ZS5yZXBsYWNlKCJjb3B5cmlnaHQiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgi
KEMpIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIihjKSIsICIiKQorICAgICAg
ICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgIGlmIGxlbihsaW5lKSA9PSAwOgorICAgICAg
ICAgICAgY29udGludWUKKworICAgICAgICBjb3B5UmlnaHRMaW5lcy5hcHBlbmQobGluZSkKKyAg
ICAKKyAgICByZXR1cm4gbGlzdChzZXQoY29weVJpZ2h0TGluZXMpKQorCisKKworZGVmIGdldEZ1
bmN0aW9ucyhzb3VyY2UpOgorCisgICAgc291cmNlID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5z
dWIoIi8qKi8iLCBzaW5nbGVMaW5lQ29tbWVudFJlZ0V4cC5zdWIoIi8vXG4iLCBzb3VyY2UpKQor
CisgICAgbWF0Y2hlcyA9IFsgZiBmb3IgZiBpbiBmdW5jdGlvbkhlYWRSZWdFeHAuZmluZGl0ZXIo
c291cmNlKV0KKyAgICBmdW5jdGlvbkJvdW5kcyA9IFtdCisgICAgc3RhcnQgPSAwCisgICAgZW5k
ID0gMAorICAgIGZvciBtYXRjaCBpbiBtYXRjaGVzOgorICAgICAgICBzdGFydCA9IG1hdGNoLnN0
YXJ0KCkKKyAgICAgICAgaWYgc3RhcnQgPCBlbmQ6CisgICAgICAgICAgICBjb250aW51ZQorICAg
ICAgICBlbmQgPSBtYXRjaC5lbmQoKQorICAgICAgICB3aGlsZSBzb3VyY2VbZW5kXSAhPSAneyc6
CisgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgIGRlcHRoID0gMQorICAgICAgICBl
bmQgPSBlbmQgKyAxCisgICAgICAgIHdoaWxlIGRlcHRoID4gMDoKKyAgICAgICAgICAgIGlmIHNv
dXJjZVtlbmRdID09ICd7JzoKKyAgICAgICAgICAgICAgICBkZXB0aCA9IGRlcHRoICsgMQorICAg
ICAgICAgICAgZWxpZiBzb3VyY2VbZW5kXSA9PSAnfSc6CisgICAgICAgICAgICAgICAgZGVwdGgg
PSBkZXB0aCAtIDEKKyAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgZnVuY3Rpb25C
b3VuZHMuYXBwZW5kKChzdGFydCwgZW5kKSkKKworICAgIGZ1bmN0aW9ucyA9IFtzb3VyY2Vbc3Rh
cnQ6ZW5kXS5zdHJpcCgpIGZvciAoc3RhcnQsIGVuZCkgaW4gZnVuY3Rpb25Cb3VuZHNdCisgICAg
cmVzdWx0ID0gW10KKyAgICBmb3IgZnVuY3Rpb24gaW4gZnVuY3Rpb25zOgorICAgICAgICBmdW5j
dGlvbiA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAuc3ViKCIiLCBmdW5jdGlvbikKKyAgICAgICAg
ZnVuY3Rpb25OYW1lID0gZnVuY3Rpb25OYW1lUmVnRXhwLmZpbmRhbGwoZnVuY3Rpb24pWzBdCisg
ICAgICAgIGZ1bmN0aW9uUGFyYW1ldGVycyA9IGZ1bmN0aW9uUGFyYW1ldGVyRmluZGVyLmZpbmRh
bGwoZnVuY3Rpb24pWzBdLnNwbGl0KCcsJykKKyAgICAgICAgaWYgbGVuKGZ1bmN0aW9uUGFyYW1l
dGVyc1swXSkgPT0gMDoKKyAgICAgICAgICAgIGZ1bmN0aW9uUGFyYW1ldGVycyA9IFtdCisgICAg
ICAgICAgICAKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgoZnVuY3Rpb25OYW1lLCBmdW5jdGlvbiwg
ZnVuY3Rpb25QYXJhbWV0ZXJzKSkKKyAgICByZXR1cm4gcmVzdWx0CisgICAgICAgIAorCitkZWYg
Z2VuZXJhdGVDb2RlKHNvdXJjZSk6CisgICAgaW5wdXRGaWxlID0gb3Blbihzb3VyY2UsICJyIikK
KyAgICBiYXNlTmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoc291cmNlKS5yZXBsYWNlKCIuanMiLCAi
IikKKyAgICAKKyAgICBzb3VyY2UgPSAiIgorICAgIGZvciBsaW5lIGluIGlucHV0RmlsZToKKyAg
ICAgICAgc291cmNlID0gc291cmNlICsgbGluZQorICAgIAorICAgIGlmIHN5cy5wbGF0Zm9ybSA9
PSAiY3lnd2luIjoKKyAgICAgICAgc291cmNlID0gc291cmNlLnJlcGxhY2UoIlxyXG4iLCAiXG4i
KQorICAgIHJldHVybiAoYmFzZU5hbWUsIGdldEZ1bmN0aW9ucyhzb3VyY2UpLCBnZXRDb3B5cmln
aHQoc291cmNlKSkKKworZGVmIG1hbmdsZU5hbWUob2JqZWN0LCBuYW1lKToKKyAgICBxTmFtZSA9
IG9iamVjdCArICIuIiArIG5hbWUKKyAgICBtYW5nbGVkTmFtZSA9ICIiCisgICAgaSA9IDAKKyAg
ICB3aGlsZSBpIDwgbGVuKHFOYW1lKToKKyAgICAgICAgaWYgcU5hbWVbaV0gPT0gJy4nOgorICAg
ICAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZSArIHFOYW1lW2kgKyAxXS51cHBlcigp
CisgICAgICAgICAgICBpID0gaSArIDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1hbmds
ZWROYW1lID0gbWFuZ2xlZE5hbWUgKyBxTmFtZVtpXQorICAgICAgICBpID0gaSArIDEKKyAgICBy
ZXR1cm4gbWFuZ2xlZE5hbWUKKworYnVpbHRpbnMgPSBbXQorCitiYXNlTmFtZSA9IHN5cy5hcmd2
Wy0xXQorYnVpbHRpbl9kZWZpbml0aW9ucyA9IHN5cy5hcmd2WzE6LTFdCisob3V0cHV0X2Jhc2Us
IF8pID0gb3MucGF0aC5zcGxpdGV4dChzeXMuYXJndlstMV0pCisKK2NvcHlyaWdodHMgPSBbXQor
Zm9yIGZpbGUgaW4gYnVpbHRpbl9kZWZpbml0aW9uczoKKyAgICBpZiBmbm1hdGNoLmZubWF0Y2go
ZmlsZSwgJyouanMnKToKKyAgICAgICAgKGJhc2VOYW1lLCBmdW5jdGlvbnMsIG9iamVjdENvcHly
aWdodHMpID0gZ2VuZXJhdGVDb2RlKGZpbGUpCisgICAgICAgIGNvcHlyaWdodHMuZXh0ZW5kKG9i
amVjdENvcHlyaWdodHMpCisgICAgICAgIGJ1aWx0aW5zLmFwcGVuZCgoYmFzZU5hbWUsIGZ1bmN0
aW9ucykpCisKK2NvcHlyaWdodHMgPSBsaXN0KHNldChjb3B5cmlnaHRzKSkKKworY29weXJpZ2h0
Qm9keSA9ICIiCitmb3IgY29weXJpZ2h0IGluIGNvcHlyaWdodHM6CisgICAgY29weXJpZ2h0Qm9k
eSA9IGNvcHlyaWdodEJvZHkgKyIgKiBDb3B5cmlnaHQgKEMpICIgKyBjb3B5cmlnaHQgKyAiXG4i
CisKK2J1aWx0aW5zSGVhZGVyID0gb3BlbihvdXRwdXRfYmFzZSArICIuaC50bXAiLCAidyIpCiti
dWlsdGluc0ltcGxlbWVudGF0aW9uID0gb3BlbihvdXRwdXRfYmFzZSArICIuY3BwLnRtcCIsICJ3
IikKK2NvcHlyaWdodFRleHQgPSAiLypcbiIgKyBjb3B5cmlnaHRCb2R5ICsgY29weXJpZ2h0VGV4
dAorYnVpbHRpbnNIZWFkZXIud3JpdGUoIiIiJXMKKyVzCisKKyNpZm5kZWYgSlNDQnVpbHRpbnNf
SAorI2RlZmluZSBKU0NCdWlsdGluc19ICisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBGdW5j
dGlvbkV4ZWN1dGFibGU7CitjbGFzcyBJZGVudGlmaWVyOworY2xhc3MgSlNHbG9iYWxPYmplY3Q7
CitjbGFzcyBTb3VyY2VDb2RlOworY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7Citj
bGFzcyBWTTsKKworRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShW
TSYsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29kZSYpOworCisi
IiIgJSAoZ2VuZXJhdG9yU3RyaW5nLCBjb3B5cmlnaHRUZXh0KSkKKworY29kZVJlZmVyZW5jZXMg
PSBbXQorCitmb3IgKG9iamVjdE5hbWUsIGZ1bmN0aW9ucykgaW4gYnVpbHRpbnM6CisgICAgcHJp
bnQoIkdlbmVyYXRpbmcgYmluZGluZ3MgZm9yIHRoZSAlcyBidWlsdGluLiIgJSBvYmplY3ROYW1l
KQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIvKiAlcyBmdW5jdGlvbnMgKi9cbiIgJSBvYmpl
Y3ROYW1lKQorICAgIGZvciAobmFtZSwgaW1wbGVtZW50YXRpb24sIF8pIGluIGZ1bmN0aW9uczoK
KyAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVOYW1lKG9iamVjdE5hbWUsIG5hbWUpCisgICAg
ICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWVbMF0ubG93ZXIoKSArIG1hbmdsZWROYW1lWzE6
XSArICJDb2RlIgorICAgICAgICBjb2RlUmVmZXJlbmNlcy5hcHBlbmQoKG1hbmdsZWROYW1lLCBu
YW1lLCBpbXBsZW1lbnRhdGlvbikpCisgICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJleHRl
cm4gY29uc3QgY2hhciogc18lcztcbiIgJSBtYW5nbGVkTmFtZSkKKyAgICAgICAgYnVpbHRpbnNI
ZWFkZXIud3JpdGUoImV4dGVybiBjb25zdCBpbnQgc18lc0xlbmd0aDtcbiIgJSBtYW5nbGVkTmFt
ZSkKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiXG4iKQorICAgIGJ1aWx0aW5zSGVhZGVyLndy
aXRlKCIjZGVmaW5lIEpTQ19GT1JFQUNIXyVzX0JVSUxUSU4obWFjcm8pIFxcXG4iICUgb2JqZWN0
TmFtZS5yZXBsYWNlKCIuIiwgIl8iKS51cHBlcigpKQorICAgIGZvciAobmFtZSwgaW1wbGVtZW50
YXRpb24sIGFyZ3VtZW50cykgaW4gZnVuY3Rpb25zOgorICAgICAgICBtYW5nbGVkTmFtZSA9IG1h
bmdsZU5hbWUob2JqZWN0TmFtZSwgbmFtZSkKKyAgICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUo
IiAgICBtYWNybyglcywgJXMsICVkKSBcXFxuIiAlIChuYW1lLCBtYW5nbGVkTmFtZSwgbGVuKGFy
Z3VtZW50cykpKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJcbiIpCisgICAgZm9yIChuYW1l
LCBpbXBsZW1lbnRhdGlvbiwgYXJndW1lbnRzKSBpbiBmdW5jdGlvbnM6CisgICAgICAgIGJ1aWx0
aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19CVUlMVElOXyVzIDFcbiIgJSBtYW5nbGVOYW1l
KG9iamVjdE5hbWUsIG5hbWUpLnVwcGVyKCkpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxu
XG4iKQorbmFtZXMgPSBbXQorYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0ZPUkVB
Q0hfQlVJTFRJTihtYWNybylcXFxuIikKK2ZvciAoY29kZVJlZmVyZW5jZSwgZnVuY3Rpb25OYW1l
LCBzb3VyY2UpIGluIGNvZGVSZWZlcmVuY2VzOgorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIg
ICAgbWFjcm8oJXMsICVzLCBzXyVzTGVuZ3RoKSBcXFxuIiAlIChjb2RlUmVmZXJlbmNlLCBmdW5j
dGlvbk5hbWUsIGNvZGVSZWZlcmVuY2UpKQorICAgIG5hbWVzLmFwcGVuZChmdW5jdGlvbk5hbWUp
CisKK2J1aWx0aW5zSGVhZGVyLndyaXRlKCJcblxuIikKK2J1aWx0aW5zSGVhZGVyLndyaXRlKCIj
ZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykgXFxcbiIpCitm
b3IgbmFtZSBpbiBzb3J0ZWQoc2V0KG5hbWVzKSk6CisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUo
IiAgICBtYWNybyglcykgXFxcbiIgJSBuYW1lKQorYnVpbHRpbnNIZWFkZXIud3JpdGUoIiIiCisK
KyNkZWZpbmUgSlNDX0RFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9u
TmFtZSwgYXJndW1lbnRDb3VudCkgXFwKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1l
IyNHZW5lcmF0b3IoVk0mKTsKKworSlNDX0ZPUkVBQ0hfQlVJTFRJTihKU0NfREVDTEFSRV9CVUlM
VElOX0dFTkVSQVRPUikKKyN1bmRlZiBKU0NfREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisj
ZGVmaW5lIEpTQ19CVUlMVElOX0VYSVNUUyhuYW1lKSBkZWZpbmVkKEpTQ19CVUlMVElOXyMjbmFt
ZSkKKworfQorCisjZW5kaWYKKworIiIiKQorCitidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRl
KCIiIiVzCislcworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJKU0NCdWlsdGlu
cy5oIgorCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiRXhlY3V0
YWJsZS5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJWTS5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworIiIiICAlIChnZW5lcmF0b3JTdHJpbmcsIGNvcHlyaWdodFRleHQp
KQorCitmb3IgKGNvZGVSZWZlcmVuY2UsIG5hbWUsIHNvdXJjZSkgaW4gY29kZVJlZmVyZW5jZXM6
CisgICAgc291cmNlID0gIihmdW5jdGlvbiAiICsgc291cmNlW3NvdXJjZS5pbmRleCgiKCIpOl0g
KyAiKSIKKyAgICBsaW5lcyA9IGpzb24uZHVtcHMoc291cmNlKVsxOi0xXS5zcGxpdCgiXFxuIikK
KyAgICBzb3VyY2VMZW5ndGggPSBsZW4oc291cmNlKQorICAgIHNvdXJjZSA9ICIiCisgICAgZm9y
IGxpbmUgaW4gbGluZXM6CisgICAgICAgIHNvdXJjZSA9IHNvdXJjZSArICgiICAgIFwiJXNcXG5c
IiBcXFxuIiAlIGxpbmUpCisgICAgYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiY29uc3Qg
Y2hhciogc18lcyA9XG4lcztcblxuIiAlIChjb2RlUmVmZXJlbmNlLCBzb3VyY2UpKQorICAgIGJ1
aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoImNvbnN0IGludCBzXyVzTGVuZ3RoID0gJWQ7XG5c
biIgJSAoY29kZVJlZmVyZW5jZSwgc291cmNlTGVuZ3RoICsgMSkpICMgKyAxIGZvciBcbgorCiti
dWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIgorRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVh
dGVCdWlsdGluRXhlY3V0YWJsZShWTSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1
bmxpbmtlZEV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKK3sKKyAgICB1bnNp
Z25lZCBsaW5lQ291bnQgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPmxpbmVDb3VudCgpOworICAgIHVu
c2lnbmVkIHN0YXJ0Q29sdW1uID0gMTsKKyAgICB1bnNpZ25lZCBzb3VyY2VMZW5ndGggPSB1bmxp
bmtlZEV4ZWN1dGFibGUtPnNvdXJjZUxlbmd0aCgpOworICAgIGJvb2wgZW5kQ29sdW1uSXNPblN0
YXJ0TGluZSA9ICFsaW5lQ291bnQ7CisgICAgdW5zaWduZWQgZW5kQ29sdW1uRXhjbHVkaW5nQnJh
Y2VzID0gdW5saW5rZWRFeGVjdXRhYmxlLT51bmxpbmtlZEJvZHlFbmRDb2x1bW4oKSArIChlbmRD
b2x1bW5Jc09uU3RhcnRMaW5lID8gMCA6IDEpOworICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0g
dW5saW5rZWRFeGVjdXRhYmxlLT5zdGFydE9mZnNldCgpOworICAgIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0RXhjbHVkaW5nT3BlbkJyYWNlID0gc3RhcnRPZmZzZXQgKyAxOworICAgIHVuc2lnbmVkIGVu
ZE9mZnNldEV4Y2x1ZGluZ0Nsb3NlQnJhY2UgPSBzdGFydE9mZnNldCArIHNvdXJjZUxlbmd0aCAt
IDE7CisgICAgU291cmNlQ29kZSBib2R5U291cmNlKHNvdXJjZS5wcm92aWRlcigpLCBzdGFydE9m
ZnNldEV4Y2x1ZGluZ09wZW5CcmFjZSwgZW5kT2Zmc2V0RXhjbHVkaW5nQ2xvc2VCcmFjZSwgMCwg
c3RhcnRDb2x1bW4pOworICAgIHJldHVybiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwg
Ym9keVNvdXJjZSwgdW5saW5rZWRFeGVjdXRhYmxlLCAwLCBsaW5lQ291bnQsIHN0YXJ0Q29sdW1u
LCBlbmRDb2x1bW5FeGNsdWRpbmdCcmFjZXMsIGZhbHNlKTsKK30KKworI2RlZmluZSBKU0NfREVG
SU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291
bnQpIFxcCitGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoVk0mIHZtKSBc
XAoreyBcXAorICAgIHJldHVybiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSh2bSwgdm0uYnVpbHRp
bkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCksIHZtLmJ1aWx0aW5FeGVjdXRh
YmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyBcXAorfQorCitKU0NfRk9SRUFDSF9CVUlMVElO
KEpTQ19ERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgSlNDX0RFRklORV9CVUlMVElO
X0dFTkVSQVRPUgorfQorCisiIiIpCisKK2J1aWx0aW5zSGVhZGVyLmNsb3NlKCkKK2J1aWx0aW5z
SW1wbGVtZW50YXRpb24uY2xvc2UoKQorCitpZiAobm90IG9zLnBhdGguZXhpc3RzKG91dHB1dF9i
YXNlICsgIi5oIikpIG9yIChub3QgZmlsZWNtcC5jbXAob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwg
b3V0cHV0X2Jhc2UgKyAiLmgiLCBzaGFsbG93PUZhbHNlKSk6CisgICAgb3MucmVuYW1lKG91dHB1
dF9iYXNlICsgIi5oLnRtcCIsIG91dHB1dF9iYXNlICsgIi5oIikKK2Vsc2U6CisgICAgb3MucmVt
b3ZlKG91dHB1dF9iYXNlICsgIi5oLnRtcCIpCisKK2lmIChub3Qgb3MucGF0aC5leGlzdHMob3V0
cHV0X2Jhc2UgKyAiLmNwcCIpKSBvciAobm90IGZpbGVjbXAuY21wKG91dHB1dF9iYXNlICsgIi5j
cHAudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmNwcCIsIHNoYWxsb3c9RmFsc2UpKToKKyAgICBvcy5y
ZW5hbWUob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCBvdXRwdXRfYmFzZSArICIuY3BwIikKK2Vs
c2U6CisgICAgb3MucmVtb3ZlKG91dHB1dF9iYXNlICsgIi5jcHAudG1wIikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oCmluZGV4IDJjYTNlOTc5NDBj
N2MxMTA2YzFiYWJhMWYzNTRmZTg0N2I0Mzg1YjMuLjMwY2FkMmExNGZmZGJmYjRkNTdjZjVhMTJm
Y2I5MDBlMjY0Zjg3NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9DYWNoZWRDYWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0NhY2hlZENhbGwuaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgICwgbV9pbnRlcnByZXRlcihjYWxsRnJhbWUtPmludGVycHJldGVyKCkpCiAgICAgICAgICAg
ICAsIG1fZW50cnlTY29wZShjYWxsRnJhbWUtPnZtKCksIGZ1bmN0aW9uLT5zY29wZSgpLT5nbG9i
YWxPYmplY3QoKSkKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKCFmdW5jdGlvbi0+aXNI
b3N0RnVuY3Rpb24oKSk7CisgICAgICAgICAgICBBU1NFUlQoIWZ1bmN0aW9uLT5pc0hvc3RGdW5j
dGlvbk5vbklubGluZSgpKTsKICAgICAgICAgICAgIGlmIChjYWxsRnJhbWUtPnZtKCkuaXNTYWZl
VG9SZWN1cnNlKCkpIHsKICAgICAgICAgICAgICAgICBtX2FyZ3VtZW50cy5yZXNpemUoYXJndW1l
bnRDb3VudCk7CiAgICAgICAgICAgICAgICAgbV9jbG9zdXJlID0gbV9pbnRlcnByZXRlci0+cHJl
cGFyZUZvclJlcGVhdENhbGwoZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLCBjYWxsRnJhbWUsICZt
X3Byb3RvQ2FsbEZyYW1lLCBmdW5jdGlvbiwgYXJndW1lbnRDb3VudCArIDEsIGZ1bmN0aW9uLT5z
Y29wZSgpLCBtX2FyZ3VtZW50cy5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggY2E4OTBiMDZlYTMzZmE5ZTdmMWZh
NTFhMzVlYTJkNDhkMDA5YTM4YS4uNmM5YmY5NmMxNWY2MDllMjY1Y2UyNTBhNDViZjA4NjFkMDZj
ZDFmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oIgogI2luY2x1ZGUgIkpTU3RhY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcu
aCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJKU1dpdGhTY29wZS5o
IgogI2luY2x1ZGUgIkxMSW50Q0xvb3AuaCIKICNpbmNsdWRlICJMTEludFRodW5rcy5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1l
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5j
cHAKaW5kZXggZjBlMDJiYTRlNDc2Zjk5Y2M5MTNiMDQ2MmFkMjc5NTAwNjA5ZmEzYS4uMWMyNDBk
Y2Q3MWJlNTI5ZDg4Y2JmNDYxZDE4NjhmNWViMmIwMmFkNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuY3BwCkBAIC0yNyw2ICsy
Nyw3IEBACiAjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9j
ay5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGln
bm1lbnQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcAppbmRleCBjYTdhZDExZjJlMGI4YTNiOGIxODU4OTFkN2U1MjJiYWU0MDNhMjM2
Li5jYjU1MDdiZWFjNTViZjhlYjFiMzdlYzkwZmNhYjE5MzRmYjQ4ZWEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
ICJIZWFwLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIK
KyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXgg
OThkMTBhM2Y0ZGNiMTJkODlmMzdhMTJmMjI2MDRiOTQ2ZTA4ZTYyNy4uZGQwMzUzNzc5ZThiZGY5
OGY0NjU4YTMwN2UzMmQwNmU0NzI0NDE1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRlYnVn
Z2VyLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNp
bmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA5MjhkZDUw
ZmIwMTZlMjcxNjQ0YTU3NWUzMGFiNWYyNTE2ZWI1MGVjLi45MDg4YjdmYjJmYjdhZDAxMzgwNmVm
NDliNWFmNDIwZmE2NDg0MDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKQEAgLTQxLDYgKzQxLDggQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRl
ICJKSVRPcGVyYXRpb25XcmFwcGVycy5oIgogI2luY2x1ZGUgIkpJVFRvREZHRGVmZXJyZWRDb21w
aWxhdGlvbkNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNs
dWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rp
b25zLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwCmluZGV4IDI2ZGQ0ZDFhZjc0NWFmYTFmYmM1M2E5YzAyM2E2ZTQ3NDFhNjZhMDku
LmRmMWJkM2E5Y2ZhNDAyYzUyYTUyMTFjZjFhY2NlNjdkNTEyMWI3ZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0yOSwxMSArMjks
MTMgQEAKICNpbmNsdWRlICJKSVQuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1
ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiR0NBd2FyZUpJVFN0dWJSb3V0aW5l
LmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIK
ICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUg
IkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1ZhcmlhYmxlT2JqZWN0Lmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDQwNzg0YjQ5NDMxZmUwMmU4ZTQ1MjJmMTYzMDhjOTAy
NDcxNmQyMzYuLjJmNzk1NTU0YjA5MWRlZWJiYzAzYmYyYmU4Yzc0ZjQxYWU1NDFlZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAj
aW5jbHVkZSAiSlNQcm94eS5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNT
dHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlNhbXBs
aW5nVG9vbC5oIgogI2luY2x1ZGUgIlN0YWNrVmlzaXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCA2MDRj
YzI2M2NmOTdlMDg2ZmVkMDZlYzkwM2IwZWMxOTgzZTc4MTM3Li44MTY2ZTdmODFmYTg5YTdkNGY1
MGM1ZjFhOTRmYTk2OGM1ZDU3ZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2lu
Y2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQ2Vs
bC5oIgotI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5l
cy5oIgogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNs
dWRlICJKU09iamVjdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIu
aAppbmRleCA4ZWMxZmQzMmEzYWRhMjJlMTI1MjI5NTcwZGNmN2ZmMjhlYWJmMWVkLi40NmE3Yzc2
YjJmOTAxZmMzY2MzNmQxY2UwYzA3MzUzZWIwNmIyZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtODg4LDkgKzg4OCw5IEBAIEV4cHJlc3Npb25Ob2Rl
KiBBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uCiAgICAgQVNTRVJUKGZ1bmMtPmlzRG90QWNjZXNzb3JOb2RlKCkpOwogICAgIERv
dEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4oZnVuYyk7
CiAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZSogbm9kZTsKLSAgICBpZiAoZG90LT5pZGVudGlmaWVy
KCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y2FsbCkKKyAgICBpZiAoZG90LT5pZGVudGlmaWVy
KCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y2FsbCB8fCBkb3QtPmlkZW50aWZpZXIoKSA9PSBt
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5jYWxsUHJpdmF0ZU5hbWUpCiAgICAgICAgIG5vZGUgPSBuZXcg
KG1fdm0pIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90
LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7Ci0gICAg
ZWxzZSBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXBwbHkp
CisgICAgZWxzZSBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+
YXBwbHkgfHwgZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXBwbHlQ
cml2YXRlTmFtZSkKICAgICAgICAgbm9kZSA9IG5ldyAobV92bSkgQXBwbHlGdW5jdGlvbkNhbGxE
b3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRp
dm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiAgICAgZWxzZQogICAgICAgICBub2RlID0gbmV3
IChtX3ZtKSBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5p
ZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IGNhNGJiNGYwYWRlOGQ2YmM4MjY5MWE2
YzAwMDE0Y2YxOThiZDg4YmQuLmNjYjA3OWQ5NzVhMTQxYzVjNGIyZDdiNjIzMTMwMDA3MDk3Nzc4
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC0yNSwxMCArMjUs
MTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMZXhlci5oIgogCisjaW5jbHVk
ZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKKyNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbklubGluZXMuaCIKLQogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rp
b25zLmgiCi0jaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk5vZGVJbmZvLmgiCiAj
aW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlIDx3dGYvZHRvYS5oPgpAQCAtOTAsNiArOTAsNyBA
QCBlbnVtIENoYXJhY3RlclR5cGUgewogCiAgICAgLy8gT3RoZXIgdHlwZXMgKG9ubHkgb25lIHNv
IGZhcikKICAgICBDaGFyYWN0ZXJXaGl0ZVNwYWNlLAorICAgIENoYXJhY3RlclByaXZhdGVJZGVu
dGlmaWVyU3RhcnQKIH07CiAKIC8vIDI1NiBMYXRpbi0xIGNvZGVzCkBAIC0xNTgsNyArMTU5LDcg
QEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IHR5cGVzT2ZMYXRpbjFDaGFyYWN0ZXJzWzI1
Nl0gPSB7CiAvKiAgNjEgLSA9ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyRXF1YWwsCiAv
KiAgNjIgLSA+ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyR3JlYXRlciwKIC8qICA2MyAt
ID8gICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJRdWVzdGlvbiwKLS8qICA2NCAtIEAgICAg
ICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyogIDY0IC0gQCAgICAgICAgICAg
ICAgICAgICovIENoYXJhY3RlclByaXZhdGVJZGVudGlmaWVyU3RhcnQsCiAvKiAgNjUgLSBBICAg
ICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAogLyogIDY2IC0gQiAg
ICAgICAgICAgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKIC8qICA2NyAtIEMg
ICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCkBAIC00ODYsOSAr
NDg3LDEwIEBAIHN0YXRpYyBjb25zdCBMQ2hhciBzaW5nbGVDaGFyYWN0ZXJFc2NhcGVWYWx1ZXNG
b3JBU0NJSVsxMjhdID0gewogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1MZXhlcjxUPjo6
TGV4ZXIoVk0qIHZtKQorTGV4ZXI8VD46OkxleGVyKFZNKiB2bSwgSlNQYXJzZXJTdHJpY3RuZXNz
IHN0cmljdG5lc3MpCiAgICAgOiBtX2lzUmVwYXJzaW5nKGZhbHNlKQogICAgICwgbV92bSh2bSkK
KyAgICAsIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbihzdHJpY3RuZXNzID09IEpTUGFyc2VCdWls
dGluKQogewogfQogCkBAIC03NTMsNyArNzU1LDI3IEBAIGlubGluZSB2b2lkIExleGVyPFQ+Ojpy
ZWNvcmQxNihpbnQgYykKICAgICBBU1NFUlQoYyA8PSBzdGF0aWNfY2FzdDxpbnQ+KFVTSFJUX01B
WCkpOwogICAgIG1fYnVmZmVyMTYuYXBwZW5kKHN0YXRpY19jYXN0PFVDaGFyPihjKSk7CiB9Ci0K
KyAgICAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECitib29sIGlzU2FmZUlkZW50aWZpZXIoVk0mIHZt
LCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCkKK3sKKyAgICBpZiAoIWlkZW50KQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAvKiBKdXN0IGJsb2NrIGFueSB1c2Ugb2Ygc3VzcGljaW91cyBpZGVu
dGlmaWVycy4gIFRoaXMgaXMgaW50ZW5kZWQgdG8KKyAgICAgKiBiZSB1c2VkIGFzIGEgc2FmZXR5
IG5ldCB3aGlsZSBpbXBsZW1lbnRpbmcgYnVpbHRpbnMuCisgICAgICovCisgICAgaWYgKCppZGVu
dCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCppZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5hcHBseSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+ZXZhbCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+RnVuY3Rp
b24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgor
ICAgIAogdGVtcGxhdGUgPD4KIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+
IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwYXJzZUlkZW50aWZpZXIo
SlNUb2tlbkRhdGEqIHRva2VuRGF0YSwgdW5zaWduZWQgbGV4ZXJGbGFncywgYm9vbCBzdHJpY3RN
b2RlKQogewpAQCAtNzY1LDcgKzc4NywxMSBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJ
ZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAogICAg
ICAgICAgICAgcmV0dXJuIGtleXdvcmQgPT0gUkVTRVJWRURfSUZfU1RSSUNUICYmICFzdHJpY3RN
b2RlID8gSURFTlQgOiBrZXl3b3JkOwogICAgICAgICB9CiAgICAgfQotCisgICAgCisgICAgYm9v
bCBpc1ByaXZhdGVOYW1lID0gbV9jdXJyZW50ID09ICdAJyAmJiBtX3BhcnNpbmdCdWlsdGluRnVu
Y3Rpb247CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgIHNoaWZ0KCk7CisgICAgCiAg
ICAgY29uc3QgTENoYXIqIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKICAg
ICB1bnNpZ25lZCBpZGVudGlmaWVyTGluZVN0YXJ0ID0gY3VycmVudExpbmVTdGFydE9mZnNldCgp
OwogICAgIApAQCAtNzc5LDE1ICs4MDUsMjYgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRl
SWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKIAog
ICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gMDsKICAgICAKLSAgICBpZiAoc2hvdWxkQ3Jl
YXRlSWRlbnRpZmllcikgeworICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyIHx8IG1fcGFy
c2luZ0J1aWx0aW5GdW5jdGlvbikgewogICAgICAgICBpbnQgaWRlbnRpZmllckxlbmd0aCA9IGN1
cnJlbnRTb3VyY2VQdHIoKSAtIGlkZW50aWZpZXJTdGFydDsKICAgICAgICAgaWRlbnQgPSBtYWtl
SWRlbnRpZmllcihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwotCisgICAgICAg
IGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKKyAgICAgICAgICAgIGlmICghaXNTYWZl
SWRlbnRpZmllcigqbV92bSwgaWRlbnQpICYmICFpc1ByaXZhdGVOYW1lKSB7CisgICAgICAgICAg
ICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJUaGUgdXNlIG9mICciLCBpZGVu
dC0+c3RyaW5nKCksICInIGlzIGRpc2FsbG93ZWQgaW4gYnVpbHRpbiBmdW5jdGlvbnMuIik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgICAgICAgICAgaWRlbnQgPSBtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5nZXRQcml2YXRlTmFtZSgqaWRlbnQpOworICAgICAgICAgICAgZWxzZSBpZiAo
KmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQpCisgICAgICAg
ICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmlu
ZWRLZXl3b3JkUHJpdmF0ZU5hbWU7CisgICAgICAgICAgICBpZiAoIWlkZW50KQorICAgICAgICAg
ICAgICAgIHJldHVybiBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzsKKyAgICAgICAgfQog
ICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gaWRlbnQ7CiAgICAgfSBlbHNlCiAgICAgICAgIHRv
a2VuRGF0YS0+aWRlbnQgPSAwOwogCi0gICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhU
b2tlbkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29y
ZHMpKSkgeworICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYm
ICEobGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlzUHJp
dmF0ZU5hbWUpIHsKICAgICAgICAgQVNTRVJUKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpOwogICAg
ICAgICBpZiAocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHsKICAgICAgICAgICAgIGNvbnN0
IEhhc2hFbnRyeSogZW50cnkgPSBtX3ZtLT5rZXl3b3Jkcy0+Z2V0S2V5d29yZCgqaWRlbnQpOwpA
QCAtODE0LDYgKzg1MSwxMCBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVy
PiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAgICAgICAgICAg
cmV0dXJuIGtleXdvcmQgPT0gUkVTRVJWRURfSUZfU1RSSUNUICYmICFzdHJpY3RNb2RlID8gSURF
TlQgOiBrZXl3b3JkOwogICAgICAgICB9CiAgICAgfQorICAgIAorICAgIGJvb2wgaXNQcml2YXRl
TmFtZSA9IG1fY3VycmVudCA9PSAnQCcgJiYgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uOworICAg
IGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICBzaGlmdCgpOwogCiAgICAgY29uc3QgVUNoYXIq
IGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKICAgICBpbnQgaWRlbnRpZmll
ckxpbmVTdGFydCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKQEAgLTgyNiw2ICs4NjcsNyBA
QCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpT
VG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAgIH0KICAgICAKICAgICBpZiAoVU5MSUtFTFko
bV9jdXJyZW50ID09ICdcXCcpKSB7CisgICAgICAgIEFTU0VSVCghaXNQcml2YXRlTmFtZSk7CiAg
ICAgICAgIHNldE9mZnNldEZyb21Tb3VyY2VQdHIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVy
TGluZVN0YXJ0KTsKICAgICAgICAgcmV0dXJuIHBhcnNlSWRlbnRpZmllclNsb3dDYXNlPHNob3Vs
ZENyZWF0ZUlkZW50aWZpZXI+KHRva2VuRGF0YSwgbGV4ZXJGbGFncywgc3RyaWN0TW9kZSk7CiAg
ICAgfQpAQCAtODM3LDE4ICs4NzksMjkgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRl
bnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAKIAogICAg
IGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gMDsKICAgICAKLSAgICBpZiAoc2hvdWxkQ3JlYXRl
SWRlbnRpZmllcikgeworICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyIHx8IG1fcGFyc2lu
Z0J1aWx0aW5GdW5jdGlvbikgewogICAgICAgICBpbnQgaWRlbnRpZmllckxlbmd0aCA9IGN1cnJl
bnRTb3VyY2VQdHIoKSAtIGlkZW50aWZpZXJTdGFydDsKICAgICAgICAgaWYgKGlzQWxsOEJpdCkK
ICAgICAgICAgICAgIGlkZW50ID0gbWFrZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hhcihpZGVudGlm
aWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBp
ZGVudCA9IG1ha2VJZGVudGlmaWVyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCk7
Ci0gICAgICAgIAorICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CisgICAg
ICAgICAgICBpZiAoIWlzU2FmZUlkZW50aWZpZXIoKm1fdm0sIGlkZW50KSAmJiAhaXNQcml2YXRl
TmFtZSkgeworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZygi
VGhlIHVzZSBvZiAnIiwgaWRlbnQtPnN0cmluZygpLCAiJyBpcyBkaXNhbGxvd2VkIGluIGJ1aWx0
aW4gZnVuY3Rpb25zLiIpOworICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPSzsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICAgICAgICAg
IGlkZW50ID0gbV92bS0+cHJvcGVydHlOYW1lcy0+Z2V0UHJpdmF0ZU5hbWUoKmlkZW50KTsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmlu
ZWRLZXl3b3JkKQorICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAmbV92bS0+cHJv
cGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZFByaXZhdGVOYW1lOworICAgICAgICAgICAgaWYg
KCFpZGVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9QUklWQVRFX05BTUVfRVJS
T1JUT0s7CisgICAgICAgIH0KICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IGlkZW50OwogICAg
IH0gZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gMDsKICAgICAKLSAgICBpZiAoVU5M
SUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxhZ3MgJiBMZXhl
ckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpKSB7CisgICAgaWYgKFVOTElLRUxZKChyZW1haW5p
bmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJl
c2VydmVkV29yZHMpKSAmJiAhaXNQcml2YXRlTmFtZSkgewogICAgICAgICBBU1NFUlQoc2hvdWxk
Q3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0
aCkgewogICAgICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IG1fdm0tPmtleXdvcmRz
LT5nZXRLZXl3b3JkKCppZGVudCk7CkBAIC0xNjU4LDYgKzE3MTEsNyBAQCBpbk51bWJlckFmdGVy
RGVjaW1hbFBvaW50OgogICAgICAgICBBU1NFUlQoaXNJZGVudFN0YXJ0KG1fY3VycmVudCkpOwog
ICAgICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNlIENoYXJhY3RlckJhY2tTbGFzaDoKKyAgICAg
ICAgcGFyc2VJZGVudDoKICAgICAgICAgaWYgKGxleGVyRmxhZ3MgJiBMZXhleEZsYWdzRG9udEJ1
aWxkS2V5d29yZHMpCiAgICAgICAgICAgICB0b2tlbiA9IHBhcnNlSWRlbnRpZmllcjxmYWxzZT4o
dG9rZW5EYXRhLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKTsKICAgICAgICAgZWxzZQpAQCAtMTY3
MCw2ICsxNzI0LDExIEBAIGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ6CiAgICAgICAgIG1fdGVy
bWluYXRvciA9IHRydWU7CiAgICAgICAgIG1fbGluZVN0YXJ0ID0gbV9jb2RlOwogICAgICAgICBn
b3RvIHN0YXJ0OworICAgIGNhc2UgQ2hhcmFjdGVyUHJpdmF0ZUlkZW50aWZpZXJTdGFydDoKKyAg
ICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikKKyAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudDsKKworICAgICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNlIENoYXJhY3RlckludmFs
aWQ6CiAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gaW52YWxpZENoYXJhY3Rlck1lc3NhZ2Uo
KTsKICAgICAgICAgdG9rZW4gPSBFUlJPUlRPSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTGV4ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4
ZXIuaAppbmRleCAyOGM2MWJhMTk4ZDJjMTVhNDliYjE4NTJlZDMwYmVmZWI4OTA0MDA4Li5iODg3
M2U5OTUwMjg2NDRiZjhjYmIzZDRjMmRhNTYyZTkzZTBlOGU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9MZXhlci5oCkBAIC03Miw3ICs3Miw3IEBAIGNsYXNzIExleGVyIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIAogcHVibGljOgotICAgIExleGVyKFZNKik7CisgICAgTGV4
ZXIoVk0qLCBKU1BhcnNlclN0cmljdG5lc3MpOwogICAgIH5MZXhlcigpOwogCiAgICAgLy8gQ2hh
cmFjdGVyIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMuCkBAIC0yMzgsNiArMjM4LDcgQEAgcHJpdmF0
ZToKICAgICBJZGVudGlmaWVyQXJlbmEqIG1fYXJlbmE7CiAKICAgICBWTSogbV92bTsKKyAgICBi
b29sIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKIH07CiAKIHRlbXBsYXRlIDw+CkBAIC0zMzUs
NiArMzM2LDEyIEBAIEFMV0FZU19JTkxJTkUgY29uc3QgSWRlbnRpZmllciogTGV4ZXI8VD46Om1h
a2VMQ2hhcklkZW50aWZpZXIoY29uc3QgVUNoYXIqIGNoYXJhCiAgICAgcmV0dXJuICZtX2FyZW5h
LT5tYWtlSWRlbnRpZmllckxDaGFyRnJvbVVDaGFyKG1fdm0sIGNoYXJhY3RlcnMsIGxlbmd0aCk7
CiB9CiAKKyNpZiBBU1NFUlRfRElTQUJMRUQKK0FMV0FZU19JTkxJTkUgYm9vbCBpc1NhZmVJZGVu
dGlmaWVyKFZNJiwgY29uc3QgSWRlbnRpZmllciopIHsgcmV0dXJuIHRydWU7IH0KKyNlbHNlCiti
b29sIGlzU2FmZUlkZW50aWZpZXIoVk0mLCBjb25zdCBJZGVudGlmaWVyKik7CisjZW5kaWYKKwog
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+
OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW4qIHRva2VuUmVjb3JkLCB1bnNpZ25lZCBsZXhl
ckZsYWdzLCBib29sIHN0cmljdE1vZGUpCiB7CkBAIC0zNzAsMTAgKzM3NywxNSBAQCBBTFdBWVNf
SU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW4q
IHRva2VuUmVjb3JkLCB1bgogICAgIEFTU0VSVChjdXJyZW50T2Zmc2V0KCkgPj0gY3VycmVudExp
bmVTdGFydE9mZnNldCgpKTsKIAogICAgIC8vIENyZWF0ZSB0aGUgaWRlbnRpZmllciBpZiBuZWVk
ZWQKLSAgICBpZiAobGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250QnVpbGRLZXl3b3JkcykKKyAg
ICBpZiAobGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250QnVpbGRLZXl3b3JkcworI2lmICFBU1NF
UlRfRElTQUJMRUQKKyAgICAgICAgJiYgIW1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbgorI2VuZGlm
CisgICAgICAgICkKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IDA7CiAgICAgZWxzZQogICAg
ICAgICB0b2tlbkRhdGEtPmlkZW50ID0gbWFrZUxDaGFySWRlbnRpZmllcihzdGFydCwgcHRyIC0g
c3RhcnQpOworCiAgICAgdG9rZW5Mb2NhdGlvbi0+bGluZSA9IG1fbGluZU51bWJlcjsKICAgICB0
b2tlbkxvY2F0aW9uLT5saW5lU3RhcnRPZmZzZXQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7
CiAgICAgdG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZzZXQgPSBvZmZzZXRGcm9tU291cmNlUHRyKHN0
YXJ0KTsKQEAgLTM4MSw2ICszOTMsMTMgQEAgQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhl
cjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rva2VuKiB0b2tlblJlY29yZCwgdW4KICAgICBB
U1NFUlQodG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZzZXQgPj0gdG9rZW5Mb2NhdGlvbi0+bGluZVN0
YXJ0T2Zmc2V0KTsKICAgICB0b2tlblJlY29yZC0+bV9zdGFydFBvc2l0aW9uID0gc3RhcnRQb3Np
dGlvbjsKICAgICB0b2tlblJlY29yZC0+bV9lbmRQb3NpdGlvbiA9IGN1cnJlbnRQb3NpdGlvbigp
OworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9u
KSB7CisgICAgICAgIGlmICghaXNTYWZlSWRlbnRpZmllcigqbV92bSwgdG9rZW5EYXRhLT5pZGVu
dCkpCisgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7CisgICAgfQorI2VuZGlmCisKICAgICBt
X2xhc3RUb2tlbiA9IElERU5UOwogICAgIHJldHVybiBJREVOVDsKICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggZmM5Y2NkOWY2YzU3NmMxYWVmNTQ3ZjIxMWZk
ZDU5NmY0MmUwNTgwNi4uZDk1MmJhNmE5NGQyZjZiNDE4MjE1NTAwNGQwYTk3MDg0MjliZDc4YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTEzMiw2ICsxMzIsMTIg
QEAgUGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4gUHJvZ3JhbU5vZGU6OmNyZWF0ZShWTSogdm0sIGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQKICAgICByZXR1cm4gbm9kZS5yZWxlYXNlKCk7CiB9
CiAKKwordm9pZCBQcm9ncmFtTm9kZTo6c2V0Q2xvc2VkVmFyaWFibGVzKGNvbnN0IFZlY3RvcjxS
ZWZQdHI8U3RyaW5nSW1wbD4+JiYgY2xvc2VkVmFyaWFibGVzKQoreworICAgIG1fY2xvc2VkVmFy
aWFibGVzID0gc3RkOjptb3ZlKGNsb3NlZFZhcmlhYmxlcyk7Cit9CisKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSBFdmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCiBpbmxpbmUgRXZhbE5vZGU6OkV2YWxOb2RlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1
bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZh
clN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVk
VmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJl
cywgaW50IG51bUNvbnN0YW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRl
eCBkNzc5YTE3OGQ5NTZmZjk5ZmQwYmVkNWQ1ZjQ1NGFhM2U2YjUwODc5Li44MTZmZjAwMWFiZjAz
NzZjNjQyZjFhOTM4ZDBlMGE5ZjUyOWNhNmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5oCkBAIC0xNDMxLDYgKzE0MzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9v
bCBuZWVkc0FjdGl2YXRpb24oKSBjb25zdCB7IHJldHVybiAoaGFzQ2FwdHVyZWRWYXJpYWJsZXMo
KSkgfHwgKG1fZmVhdHVyZXMgJiAoRXZhbEZlYXR1cmUgfCBXaXRoRmVhdHVyZSB8IENhdGNoRmVh
dHVyZSkpOyB9CiAgICAgICAgIGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJl
dHVybiAhIW1fY2FwdHVyZWRWYXJpYWJsZXMuc2l6ZSgpOyB9CiAgICAgICAgIHNpemVfdCBjYXB0
dXJlZFZhcmlhYmxlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2NhcHR1cmVkVmFyaWFibGVzLnNp
emUoKTsgfQorICAgICAgICBjb25zdCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcygp
IGNvbnN0IHsgcmV0dXJuIG1fY2FwdHVyZWRWYXJpYWJsZXM7IH0KICAgICAgICAgYm9vbCBjYXB0
dXJlcyhjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgeyByZXR1cm4gbV9jYXB0dXJlZFZhcmlhYmxl
cy5jb250YWlucyhpZGVudC5pbXBsKCkpOyB9CiAKICAgICAgICAgVmFyU3RhY2smIHZhclN0YWNr
KCkgeyByZXR1cm4gbV92YXJTdGFjazsgfQpAQCAtMTQ0Niw2ICsxNDQ3LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCgpIGNvbnN0Owog
CiAgICAgICAgIHZvaWQgZW1pdFN0YXRlbWVudHNCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9uKTsKKyAgICAgICAgCisgICAgICAgIHZvaWQgc2V0Q2xv
c2VkVmFyaWFibGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYpIHsgfQogCiAg
ICAgcHJvdGVjdGVkOgogICAgICAgICB2b2lkIHNldFNvdXJjZShjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UpIHsgbV9zb3VyY2UgPSBzb3VyY2U7IH0KQEAgLTE0NzUsMTEgKzE0NzgsMTMgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9u
ID0gZmFsc2U7CiAKKyAgICAgICAgdm9pZCBzZXRDbG9zZWRWYXJpYWJsZXMoY29uc3QgVmVjdG9y
PFJlZlB0cjxTdHJpbmdJbXBsPj4mJik7CisgICAgICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3Ry
aW5nSW1wbD4+JiBjbG9zZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2Nsb3NlZFZhcmlh
YmxlczsgfQogICAgIHByaXZhdGU6CiAgICAgICAgIFByb2dyYW1Ob2RlKFZNKiwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVk
IHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3Rh
Y2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBD
b2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRl
OwotCisgICAgICAgIFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+IG1fY2xvc2VkVmFyaWFibGVz
OwogICAgICAgICB1bnNpZ25lZCBtX3N0YXJ0Q29sdW1uOwogICAgICAgICB1bnNpZ25lZCBtX2Vu
ZENvbHVtbjsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmlu
ZGV4IDI5NzY2NmU3MjZlNDVkMDgzZWYxMzQ5ZGRmZmRmMzdlZjgwMGRmN2EuLjUwYmVjNzlmZTM4
YWRmOGYzYTA0ZjZiNDZjYmQyYTVjYmZjZjI0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKQEAgLTIwNCw4ICsyMDQsOSBAQCBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFy
c2VyKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcnMq
CiAgICAgLCBtX2xhc3RJZGVudGlmaWVyKDApCiAgICAgLCBtX2xhc3RGdW5jdGlvbk5hbWUobnVs
bHB0cikKICAgICAsIG1fc291cmNlRWxlbWVudHMoMCkKKyAgICAsIG1fcGFyc2luZ0J1aWx0aW4o
c3RyaWN0bmVzcyA9PSBKU1BhcnNlQnVpbHRpbikKIHsKLSAgICBtX2xleGVyID0gYWRvcHRQdHIo
bmV3IExleGVyVHlwZSh2bSkpOworICAgIG1fbGV4ZXIgPSBhZG9wdFB0cihuZXcgTGV4ZXJUeXBl
KHZtLCBzdHJpY3RuZXNzKSk7CiAgICAgbV9hcmVuYSA9IG1fdm0tPnBhcnNlckFyZW5hLmdldCgp
OwogICAgIG1fbGV4ZXItPnNldENvZGUoc291cmNlLCBtX2FyZW5hKTsKICAgICBtX3Rva2VuLm1f
bG9jYXRpb24ubGluZSA9IHNvdXJjZS5maXJzdExpbmUoKTsKQEAgLTI1Niw2ICsyNTcsNyBAQCBT
dHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoKQogICAgIElkZW50aWZpZXJTZXQg
Y2FwdHVyZWRWYXJpYWJsZXM7CiAgICAgYm9vbCBtb2RpZmllZFBhcmFtZXRlciA9IGZhbHNlOwog
ICAgIHNjb3BlLT5nZXRDYXB0dXJlZFZhcmlhYmxlcyhjYXB0dXJlZFZhcmlhYmxlcywgbW9kaWZp
ZWRQYXJhbWV0ZXIpOworICAgIAogICAgIENvZGVGZWF0dXJlcyBmZWF0dXJlcyA9IGNvbnRleHQu
ZmVhdHVyZXMoKTsKICAgICBpZiAoc2NvcGUtPnN0cmljdE1vZGUoKSkKICAgICAgICAgZmVhdHVy
ZXMgfD0gU3RyaWN0TW9kZUZlYXR1cmU7CkBAIC0yNjMsMjEgKzI2NSwzNiBAQCBTdHJpbmcgUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoKQogICAgICAgICBmZWF0dXJlcyB8PSBTaGFkb3dz
QXJndW1lbnRzRmVhdHVyZTsKICAgICBpZiAobW9kaWZpZWRQYXJhbWV0ZXIpCiAgICAgICAgIGZl
YXR1cmVzIHw9IE1vZGlmaWVkUGFyYW1ldGVyRmVhdHVyZTsKLQorICAgIAorICAgIFZlY3RvcjxS
ZWZQdHI8U3RyaW5nSW1wbD4+IGNsb3NlZFZhcmlhYmxlczsKKyAgICBpZiAobV9wYXJzaW5nQnVp
bHRpbikgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghY2FwdHVyZWRWYXJpYWJsZXMuc2l6ZSgp
KTsKKyAgICAgICAgSWRlbnRpZmllclNldCB1c2VkVmFyaWFibGVzOworICAgICAgICBzY29wZS0+
Z2V0VXNlZFZhcmlhYmxlcyh1c2VkVmFyaWFibGVzKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRv
JiB2YXJpYWJsZSA6IHVzZWRWYXJpYWJsZXMpIHsKKyAgICAgICAgICAgIGlmIChzY29wZS0+aGFz
RGVjbGFyZWRWYXJpYWJsZShJZGVudGlmaWVyKG1fdm0sIHZhcmlhYmxlLmdldCgpKSkpCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChzY29w
ZS0+aGFzRGVjbGFyZWRQYXJhbWV0ZXIoSWRlbnRpZmllcihtX3ZtLCB2YXJpYWJsZS5nZXQoKSkp
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgY2xvc2VkVmFyaWFibGVz
LmFwcGVuZCh2YXJpYWJsZSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgZGlkRmluaXNoUGFyc2lu
Zyhzb3VyY2VFbGVtZW50cywgY29udGV4dC52YXJEZWNsYXJhdGlvbnMoKSwgY29udGV4dC5mdW5j
RGVjbGFyYXRpb25zKCksIGZlYXR1cmVzLAotICAgICAgICBjb250ZXh0Lm51bUNvbnN0YW50cygp
LCBjYXB0dXJlZFZhcmlhYmxlcyk7CisgICAgICAgIGNvbnRleHQubnVtQ29uc3RhbnRzKCksIGNh
cHR1cmVkVmFyaWFibGVzLCBzdGQ6Om1vdmUoY2xvc2VkVmFyaWFibGVzKSk7CiAKICAgICByZXR1
cm4gcGFyc2VFcnJvcjsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHZvaWQg
UGFyc2VyPExleGVyVHlwZT46OmRpZEZpbmlzaFBhcnNpbmcoU291cmNlRWxlbWVudHMqIHNvdXJj
ZUVsZW1lbnRzLCBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrPiog
dmFyU3RhY2ssIAotICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rp
b25TdGFjaz4qIGZ1bmNTdGFjaywgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3Rh
bnRzLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcnMpCisgICAgUGFyc2VyQXJlbmFEYXRhPERl
Y2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiogZnVuY1N0YWNrLCBDb2RlRmVhdHVyZXMg
ZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMsIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFycywg
Y29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJiBjbG9zZWRWYXJpYWJsZXMpCiB7CiAg
ICAgbV9zb3VyY2VFbGVtZW50cyA9IHNvdXJjZUVsZW1lbnRzOwogICAgIG1fdmFyRGVjbGFyYXRp
b25zID0gdmFyU3RhY2s7CiAgICAgbV9mdW5jRGVjbGFyYXRpb25zID0gZnVuY1N0YWNrOwogICAg
IG1fY2FwdHVyZWRWYXJpYWJsZXMuc3dhcChjYXB0dXJlZFZhcnMpOworICAgIG1fY2xvc2VkVmFy
aWFibGVzID0gY2xvc2VkVmFyaWFibGVzOwogICAgIG1fZmVhdHVyZXMgPSBmZWF0dXJlczsKICAg
ICBtX251bUNvbnN0YW50cyA9IG51bUNvbnN0YW50czsKIH0KQEAgLTIzNDYsNiArMjM2MywxMCBA
QCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPiB2b2lkIFBhcnNlcjxMZXhlclR5cGU+Ojpw
cmludFVuZXhwZWN0ZWRUb2tlblRleHQoVwogICAgIGNhc2UgUkVTRVJWRUQ6CiAgICAgICAgIG91
dC5wcmludCgiVW5leHBlY3RlZCB1c2Ugb2YgcmVzZXJ2ZWQgd29yZCAnIiwgZ2V0VG9rZW4oKSwg
IiciKTsKICAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBJTlZBTElEX1BSSVZBVEVfTkFNRV9F
UlJPUlRPSzoKKyAgICAgICAgb3V0LnByaW50KCJJbnZhbGlkIHByaXZhdGUgbmFtZSAnIiwgZ2V0
VG9rZW4oKSwgIiciKTsKKyAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAgICAgY2FzZSBJ
REVOVDoKICAgICAgICAgb3V0LnByaW50KCJVbmV4cGVjdGVkIGlkZW50aWZpZXIgJyIsIGdldFRv
a2VuKCksICInIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBiNjk4
ZWY5MzY4Y2I4YzhmMTk3Y2NkMDAwYWNhYTZkZmIxMWJhMjQ0Li45MDMzODUwYzhjOTdmNTdlMjFk
YTVlZWRiMDJkMDQ0ZjRjODk3OGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmgKQEAgLTIzLDYgKzIzLDcgQEAKICNpZm5kZWYgUGFyc2VyX2gKICNkZWZpbmUgUGFyc2VyX2gK
IAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIK
ICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgpA
QCAtMjU5LDYgKzI2MCwxMCBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICByZXR1cm4gaXNWYWxp
ZFN0cmljdE1vZGUgPyBCaW5kaW5nU3VjY2VlZGVkIDogU3RyaWN0QmluZGluZ0ZhaWxlZDsKICAg
ICB9CiAKKyAgICB2b2lkIGdldFVzZWRWYXJpYWJsZXMoSWRlbnRpZmllclNldCYgdXNlZFZhcmlh
YmxlcykKKyAgICB7CisgICAgICAgIHVzZWRWYXJpYWJsZXMuc3dhcChtX3VzZWRWYXJpYWJsZXMp
OworICAgIH0KIAogICAgIHZvaWQgdXNlVmFyaWFibGUoY29uc3QgSWRlbnRpZmllciogaWRlbnQs
IGJvb2wgaXNFdmFsKQogICAgIHsKQEAgLTQxNCw2ICs0MTksNyBAQCBwdWJsaWM6CiAgICAgUGFz
c1JlZlB0cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYpOwogCiAgICAgSlNUZXh0UG9z
aXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4ZXIt
PnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsgfQorICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8
U3RyaW5nSW1wbD4+JiYgY2xvc2VkVmFyaWFibGVzKCkgeyByZXR1cm4gc3RkOjptb3ZlKG1fY2xv
c2VkVmFyaWFibGVzKTsgfQogCiBwcml2YXRlOgogICAgIHN0cnVjdCBBbGxvd0luT3ZlcnJpZGUg
ewpAQCAtNTQwLDcgKzU0Niw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIHBhcnNlSW5uZXIoKTsK
IAogICAgIHZvaWQgZGlkRmluaXNoUGFyc2luZyhTb3VyY2VFbGVtZW50cyosIFBhcnNlckFyZW5h
RGF0YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+KiwgCi0gICAgICAgIFBhcnNlckFyZW5h
RGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qLCBDb2RlRmVhdHVyZXMsIGlu
dCwgSWRlbnRpZmllclNldCYpOworICAgICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25T
dGFja3M6OkZ1bmN0aW9uU3RhY2s+KiwgQ29kZUZlYXR1cmVzLCBpbnQsIElkZW50aWZpZXJTZXQm
LCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmKTsKIAogICAgIC8vIFVzZWQgdG8g
ZGV0ZXJtaW5lIHR5cGUgb2YgZXJyb3IgdG8gcmVwb3J0LgogICAgIGJvb2wgaXNGdW5jdGlvbkJv
ZHlOb2RlKFNjb3BlTm9kZSopIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC04NDAsOSArODQ2LDExIEBA
IHByaXZhdGU6CiAgICAgY29uc3QgSWRlbnRpZmllciogbV9sYXN0RnVuY3Rpb25OYW1lOwogICAg
IFJlZlB0cjxTb3VyY2VQcm92aWRlckNhY2hlPiBtX2Z1bmN0aW9uQ2FjaGU7CiAgICAgU291cmNl
RWxlbWVudHMqIG1fc291cmNlRWxlbWVudHM7CisgICAgYm9vbCBtX3BhcnNpbmdCdWlsdGluOwog
ICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+KiBtX3ZhckRl
Y2xhcmF0aW9uczsKICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0
aW9uU3RhY2s+KiBtX2Z1bmNEZWNsYXJhdGlvbnM7CiAgICAgSWRlbnRpZmllclNldCBtX2NhcHR1
cmVkVmFyaWFibGVzOworICAgIFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+IG1fY2xvc2VkVmFy
aWFibGVzOwogICAgIENvZGVGZWF0dXJlcyBtX2ZlYXR1cmVzOwogICAgIGludCBtX251bUNvbnN0
YW50czsKICAgICAKQEAgLTk1Nyw2ICs5NjUsMTAgQEAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBw
YXJzZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25QYXJhbWV0ZXIK
ICAgICAgICAgUmVmUHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWRO
b2RlPihlcnJvcik7CiAgICAgICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAg
ICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZv
cmVMYXN0TmV3bGluZSgpOworICAgICAgICBpZiAoc3RyaWN0bmVzcyA9PSBKU1BhcnNlQnVpbHRp
bikgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKKyAgICAgICAgICAgIHJl
c3VsdC0+c2V0Q2xvc2VkVmFyaWFibGVzKHN0ZDo6bW92ZShwYXJzZXIuY2xvc2VkVmFyaWFibGVz
KCkpKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKICAgICB9
CiAgICAgUGFyc2VyPExleGVyPFVDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIHBhcmFtZXRlcnMs
IG5hbWUsIHN0cmljdG5lc3MsIHBhcnNlck1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXJNb2Rlcy5oCmluZGV4IDRlOWExN2NkMjFjYTM0MTQ2YmJkNDgxNTZhMzcyY2Q0
MDRkZWY2MGMuLmY3YTc1YmY3YzM3ODU3ZTQ0YjZkNWQ3MWY0NTI5YmIxYWMxY2Y1ZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKQEAgLTI5LDcgKzI5LDcg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gSlNQYXJzZXJTdHJpY3RuZXNzIHsgSlNQYXJz
ZU5vcm1hbCwgSlNQYXJzZVN0cmljdCB9OworZW51bSBKU1BhcnNlclN0cmljdG5lc3MgeyBKU1Bh
cnNlTm9ybWFsLCBKU1BhcnNlQnVpbHRpbiwgSlNQYXJzZVN0cmljdCB9OwogZW51bSBKU1BhcnNl
ck1vZGUgeyBKU1BhcnNlUHJvZ3JhbUNvZGUsIEpTUGFyc2VGdW5jdGlvbkNvZGUgfTsKIAogZW51
bSBQcm9maWxlck1vZGUgeyBQcm9maWxlck9mZiwgUHJvZmlsZXJPbiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXggODJhMjY2MzlhNzkyMjBhMDg0
NDU2YjQ4ZjMyODUyZDE0M2M3MzlkMC4uOGM4N2FkOWZhZGJkYzRhZjM5YWM5OWRiMmQ4NDQ1ZTEz
ZmZmZDM1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJU
b2tlbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5o
CkBAIC0xNDksNiArMTQ5LDcgQEAgZW51bSBKU1Rva2VuVHlwZSB7CiAgICAgSU5WQUxJRF9OVU1F
UklDX0xJVEVSQUxfRVJST1JUT0sgPSA3IHwgRXJyb3JUb2tlbkZsYWcsCiAgICAgVU5URVJNSU5B
VEVEX1NUUklOR19MSVRFUkFMX0VSUk9SVE9LID0gOCB8IEVycm9yVG9rZW5GbGFnIHwgVW50ZXJt
aW5hdGVkRXJyb3JUb2tlbkZsYWcsCiAgICAgSU5WQUxJRF9TVFJJTkdfTElURVJBTF9FUlJPUlRP
SyA9IDkgfCBFcnJvclRva2VuRmxhZywKKyAgICBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRP
SyA9IDEwIHwgRXJyb3JUb2tlbkZsYWcKIH07CiAKIHN0cnVjdCBKU1RleHRQb3NpdGlvbiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCmluZGV4IDE4ZjM4OTE3MTM4
NTIzNjJjN2E3NWEzMDUzYjQ2MzE0MTdiZWI4MWIuLmYxNmZkM2RlNDA1NTk3MGJhOWQ5YzZmMGFl
NjMxOGYyMjA0YjY1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50
cy5oCkBAIC0yNSw2ICsyNSw3IEBACiAjZGVmaW5lIEFyZ3VtZW50c19oCiAKICNpbmNsdWRlICJD
b2RlT3JpZ2luLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJK
U0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgogI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcAppbmRleCBkZDA4OTRmMTRh
MDIxZDVmMTI2NThhY2IwMWU3MjFmY2Q2ZDM0OGNjLi41YjRhZTg3MTZiMDU1M2JlNDYyMzk1NWU5
OWUxYjQzZWJmMThmZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCkBAIC0yNiw3ICsyNiw5
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRzSXRlcmF0b3JQcm90
b3R5cGUuaCIKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiSlNB
cmd1bWVudHNJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAKIG5h
bWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eVByb3RvdHlwZS5jcHAKaW5kZXggMjdhYzZkNDhhNzFmNzk1NTAyYTEwY2VhNjQ3ODY1NDEzNWE0
NjNhMC4uNmRjN2JlNTY5NjlkZTY3ZjYyMTA3YmIzYTUxYTMwOGZhM2JhNzZiZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTQXJyYXlJdGVyYXRvci5o
IgogI2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nSm9pbmVyLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCiAj
aW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCkBAIC01Niw3ICs1Nyw2IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKik7
CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NvcnQo
RXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVBy
b3RvRnVuY1NwbGljZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5UHJvdG9GdW5jVW5TaGlmdChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRXZlcnkoRXhlY1N0YXRlKik7CiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0ZvckVhY2go
RXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVBy
b3RvRnVuY1NvbWUoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheVByb3RvRnVuY0luZGV4T2YoRXhlY1N0YXRlKik7CkBAIC05NTQsNjkgKzk1NCw2
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNNYXAoRXhlY1N0
YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0QXJyYXkpOwogfQog
Ci0vLyBEb2N1bWVudGF0aW9uIGZvciB0aGVzZSB0aHJlZSBpcyBhdmFpbGFibGUgYXQ6Ci0vLyBo
dHRwOi8vZGV2ZWxvcGVyLXRlc3QubW96aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0phdmFTY3JpcHRf
MS41X1JlZmVyZW5jZTpPYmplY3RzOkFycmF5OmV2ZXJ5Ci0vLyBodHRwOi8vZGV2ZWxvcGVyLXRl
c3QubW96aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0phdmFTY3JpcHRfMS41X1JlZmVyZW5jZTpPYmpl
Y3RzOkFycmF5OmZvckVhY2gKLS8vIGh0dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3ppbGxhLm9yZy9l
bi9kb2NzL0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6QXJyYXk6c29tZQot
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRXZlcnkoRXhlY1N0
YXRlKiBleGVjKQotewotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhlYy0+aG9zdFRoaXNWYWx1
ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKLSAgICB1bnNpZ25l
ZCBsZW5ndGggPSB0aGlzT2JqLT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0
aCkudG9VSW50MzIoZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCi0gICAgSlNWYWx1ZSBm
dW5jdGlvbiA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAg
IENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAg
ICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjKTsKLQotICAgIEpTVmFsdWUgYXBwbHlUaGlzID0gZXhlYy0+YXJndW1lbnQo
MSk7Ci0KLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbih0cnVlKTsKLQotICAgIHVuc2ln
bmVkIGsgPSAwOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUpTICYmIGlzSlNBcnJheSh0
aGlzT2JqKSkgewotICAgICAgICBKU0Z1bmN0aW9uKiBmID0ganNDYXN0PEpTRnVuY3Rpb24qPihm
dW5jdGlvbik7Ci0gICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh0aGlzT2JqKTsKLSAg
ICAgICAgQ2FjaGVkQ2FsbCBjYWNoZWRDYWxsKGV4ZWMsIGYsIDMpOwotICAgICAgICBmb3IgKDsg
ayA8IGxlbmd0aCAmJiAhZXhlYy0+aGFkRXhjZXB0aW9uKCk7ICsraykgewotICAgICAgICAgICAg
aWYgKFVOTElLRUxZKCFhcnJheS0+Y2FuR2V0SW5kZXhRdWlja2x5KGspKSkKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRUaGlz
KGFwcGx5VGhpcyk7Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDAsIGFycmF5
LT5nZXRJbmRleFF1aWNrbHkoaykpOwotICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVu
dCgxLCBqc051bWJlcihrKSk7Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDIs
IHRoaXNPYmopOwotICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWNoZWRDYWxsLmNhbGwo
KTsKLSAgICAgICAgICAgIGlmICghcmVzdWx0LnRvQm9vbGVhbihleGVjKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwotICAgICAgICB9
Ci0gICAgfQotICAgIGZvciAoOyBrIDwgbGVuZ3RoICYmICFleGVjLT5oYWRFeGNlcHRpb24oKTsg
KytrKSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmopOwotICAgICAgICBpZiAo
IXRoaXNPYmotPmdldFByb3BlcnR5U2xvdChleGVjLCBrLCBzbG90KSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGVhY2hBcmd1bWVudHM7Ci0g
ICAgICAgIGVhY2hBcmd1bWVudHMuYXBwZW5kKHNsb3QuZ2V0VmFsdWUoZXhlYywgaykpOwotICAg
ICAgICBlYWNoQXJndW1lbnRzLmFwcGVuZChqc051bWJlcihrKSk7Ci0gICAgICAgIGVhY2hBcmd1
bWVudHMuYXBwZW5kKHRoaXNPYmopOwotCi0gICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0K
LSAgICAgICAgYm9vbCBwcmVkaWNhdGVSZXN1bHQgPSBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxs
VHlwZSwgY2FsbERhdGEsIGFwcGx5VGhpcywgZWFjaEFyZ3VtZW50cykudG9Cb29sZWFuKGV4ZWMp
OwotICAgICAgICBpZiAoIXByZWRpY2F0ZVJlc3VsdCkgewotICAgICAgICAgICAgcmVzdWx0ID0g
anNCb29sZWFuKGZhbHNlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotfQotCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRm9yRWFjaChFeGVjU3RhdGUqIGV4ZWMpCiB7
CiAgICAgSlNPYmplY3QqIHRoaXNPYmogPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCkudG9UaGlzKGV4
ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggNTEwZTM4M2ZhZTU3NWFhZGE4MTc2YzA0NDFlZTcy
NWI0M2E0YzczMi4uZDMwNDg3N2ZlOWNkZTFjMDkxOWZkNDU5NWY4MTFlY2FiY2U3NzI3NiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC0xNDQsMjQg
KzE0NCwyNiBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hlOjpnZXRGdW5j
dGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShWTSYgdgogICAgIEpTVGV4dFBvc2l0aW9uIHBv
c2l0aW9uQmVmb3JlTGFzdE5ld2xpbmU7CiAgICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFt
ID0gcGFyc2U8UHJvZ3JhbU5vZGU+KCZ2bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIEpTUGFy
c2VOb3JtYWwsIEpTUGFyc2VQcm9ncmFtQ29kZSwgZXJyb3IsICZwb3NpdGlvbkJlZm9yZUxhc3RO
ZXdsaW5lKTsKICAgICBpZiAoIXByb2dyYW0pIHsKLSAgICAgICAgQVNTRVJUKGVycm9yLm1fdHlw
ZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXJy
b3IubV90eXBlICE9IFBhcnNlckVycm9yOjpFcnJvck5vbmUpOwogICAgICAgICBtX3NvdXJjZUNv
ZGUucmVtb3ZlKGFkZFJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
IAogICAgIC8vIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBhbiBpbnB1dCBzdHJpbmcgdGhhdCB3b3Vs
ZCByZXN1bHQgaW4gYSBzaW5nbGUgYW5vbnltb3VzIGZ1bmN0aW9uIGV4cHJlc3Npb24uCiAgICAg
U3RhdGVtZW50Tm9kZSogZXhwclN0YXRlbWVudCA9IHByb2dyYW0tPnNpbmdsZVN0YXRlbWVudCgp
OwotICAgIEFTU0VSVChleHByU3RhdGVtZW50KTsKLSAgICBBU1NFUlQoZXhwclN0YXRlbWVudC0+
aXNFeHByU3RhdGVtZW50KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKICAg
ICBFeHByZXNzaW9uTm9kZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVtZW50Tm9k
ZSo+KGV4cHJTdGF0ZW1lbnQpLT5leHByKCk7Ci0gICAgQVNTRVJUKGZ1bmNFeHByKTsKKyAgICBS
RUxFQVNFX0FTU0VSVChmdW5jRXhwcik7CiAgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHItPmlz
RnVuY0V4cHJOb2RlKCkpOwogICAgIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkgPSBzdGF0aWNfY2Fz
dDxGdW5jRXhwck5vZGUqPihmdW5jRXhwciktPmJvZHkoKTsKKyAgICBSRUxFQVNFX0FTU0VSVCgh
cHJvZ3JhbS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CisgICAgCiAgICAgYm9keS0+c2V0RW5k
UG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7Ci0gICAgQVNTRVJUKGJvZHkpOwot
ICAgIEFTU0VSVChib2R5LT5pZGVudCgpLmlzTnVsbCgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChi
b2R5KTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5LT5pZGVudCgpLmlzTnVsbCgpKTsKIAotICAg
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBib2R5LCB0cnVlKTsKKyAg
ICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgYm9keSwgdHJ1ZSwgVW5s
aW5rZWROb3JtYWxGdW5jdGlvbik7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5tX25hbWVWYWx1
ZS5zZXQodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwganNTdHJpbmcoJnZtLCBuYW1lLnN0cmluZygp
KSk7CiAKICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gU291cmNlQ29kZVZhbHVlKHZt
LCBmdW5jdGlvbkV4ZWN1dGFibGUsIG1fc291cmNlQ29kZS5hZ2UoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKaW5kZXggM2Y1
YzY0NWMwOThkNTI3ZmMwYzcyNTllOTQ0N2VmYmU4ODY4YTI5Yy4uMmZjMmI3MjdhZmNlZWUxZWMy
YzYyNWRlNTY3NWIzYmUxY2Y2MGQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcApAQCAtMjcsNyArMjcsMTAgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICNkZWZpbmUgSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKG5hbWUpICwgbmFt
ZSh2bSwgI25hbWUpCiAjZGVmaW5lIElOSVRJQUxJWkVfS0VZV09SRChuYW1lKSAsIG5hbWUjI0tl
eXdvcmQodm0sICNuYW1lKQotI2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFNRShuYW1lKSAs
IG5hbWUjI1ByaXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb20oUHJpdmF0ZU5hbWUoKSkpCisjZGVm
aW5lIElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKG5hbWUpIFwKKyAgICAsIG5hbWUjI1ByaXZhdGVO
YW1lKElkZW50aWZpZXI6OmZyb20oUHJpdmF0ZU5hbWUoKSkpIFwKKyAgICAsIG1fIyNuYW1lIyNQ
dWJsaWNTdHJpbmdQYWlyKG5hbWUsIG5hbWUjI1ByaXZhdGVOYW1lKSBcCisKIAogQ29tbW9uSWRl
bnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZNKiB2bSkKICAgICA6IG51bGxJZGVudGlmaWVy
KCkKQEAgLTM4LDggKzQxLDI2IEBAIENvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVy
cyhWTSogdm0pCiAgICAgLCBoYXNOZXh0SWRlbnRpZmllcih2bSwgImhhc05leHQiKQogICAgIEpT
Q19DT01NT05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKElOSVRJQUxJWkVfS0VZV09SRCkKICAg
ICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpFX1BS
T1BFUlRZX05BTUUpCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJ
QUxJWkVfUFJPUEVSVFlfTkFNRSkKICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNf
RUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKQogewogfQogCitjb25z
dCBJZGVudGlmaWVyKiBDb21tb25JZGVudGlmaWVyczo6Z2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRl
bnRpZmllciYgaWRlbnQpIGNvbnN0Cit7CisjZGVmaW5lIFJFVFVSTl9JRl9QUklWQVRFX05BTUVf
TUFUQ0hFUyhuYW1lKSBpZiAobV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuZmlyc3QgPT0gaWRl
bnQpIHJldHVybiAmbV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuc2Vjb25kOworICAgIEpTQ19D
T01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoUkVUVVJOX0lGX1BS
SVZBVEVfTkFNRV9NQVRDSEVTKQorI3VuZGVmIFJFVFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hF
UworICAgIHJldHVybiAwOworfQorCitJZGVudGlmaWVyIENvbW1vbklkZW50aWZpZXJzOjpnZXRQ
dWJsaWNOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAoreworI2RlZmluZSBSRVRV
Uk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMobmFtZSkgaWYgKG1fIyNuYW1lIyNQdWJsaWNTdHJp
bmdQYWlyLnNlY29uZCA9PSBpZGVudCkgcmV0dXJuIG1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQYWly
LmZpcnN0OworICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZ
X05BTUUoUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKQorI3VuZGVmIFJFVFVSTl9JRl9Q
UklWQVRFX05BTUVfTUFUQ0hFUworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIGVtcHR5SWRlbnRpZmllcjsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRl
eCBlOGY5ZWQ4MmJjNzk0NjIwMzgyNjZiMzAyMDc4MjI0N2IxZmEyN2EzLi45MjRkMzZhYzY5MTM1
MDM1N2NiMzgyYjFlZjNiNDBhMGEwOGMwYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTIyLDYgKzIyLDcgQEAKICNkZWZp
bmUgQ29tbW9uSWRlbnRpZmllcnNfaAogCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgorI2luY2x1
ZGUgIkpTQ0J1aWx0aW5zLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIC8vIE1h
cmtlZEFyZ3VtZW50QnVmZmVyIG9mIHByb3BlcnR5IG5hbWVzLCBwYXNzZWQgdG8gYSBtYWNybyBz
byB3ZSBjYW4gZG8gc2V0IHRoZW0gdXAgdmFyaW91cwpAQCAtMTMzLDggKzEzNCwxMCBAQAogICAg
IG1hY3JvKG9zckV4aXRzKSBcCiAgICAgbWFjcm8ocGFyc2UpIFwKICAgICBtYWNybyhwcm9maWxl
ZEJ5dGVjb2RlcykgXAorICAgIG1hY3JvKHByb21pc2UpIFwKICAgICBtYWNybyhwcm9wZXJ0eUlz
RW51bWVyYWJsZSkgXAogICAgIG1hY3JvKHByb3RvdHlwZSkgXAorICAgIG1hY3JvKHJlc29sdmUp
IFwKICAgICBtYWNybyhzZXQpIFwKICAgICBtYWNybyhzaXplKSBcCiAgICAgbWFjcm8oc2xpY2Up
IFwKQEAgLTE1NSw3ICsxNTgsMTQgQEAKICAgICBtYWNybyh2YWx1ZXMpIFwKICAgICBtYWNybyh2
YWx1ZU9mKSBcCiAgICAgbWFjcm8od2luZG93KSBcCi0gICAgbWFjcm8od3JpdGFibGUpCisgICAg
bWFjcm8od3JpdGFibGUpIFwKKyAgICBtYWNybyhpdGVyYXRvcikgXAorICAgIG1hY3JvKGl0ZXJh
dG9yTmV4dCkgXAorICAgIG1hY3JvKHJlamVjdCkgXAorICAgIG1hY3JvKGZ1bGZpbGxtZW50SGFu
ZGxlcikgXAorICAgIG1hY3JvKHJlamVjdGlvbkhhbmRsZXIpIFwKKyAgICBtYWNybyhkZWZlcnJl
ZCkgXAorICAgIG1hY3JvKGNvdW50ZG93bkhvbGRlcikgXAogCiAjZGVmaW5lIEpTQ19DT01NT05f
SURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKG1hY3JvKSBcCiAgICAgbWFjcm8oYnJlYWspIFwKQEAg
LTIwMyw3ICsyMTMsNyBAQAogICAgIG1hY3JvKHZvaWQpIFwKICAgICBtYWNybyh3aGlsZSkgXAog
ICAgIG1hY3JvKHdpdGgpIFwKLSAgICBtYWNybyh5aWVsZCkKKyAgICBtYWNybyh5aWVsZCkgXAog
CiAjZGVmaW5lIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05B
TUUobWFjcm8pIFwKICAgICBtYWNybyhpdGVyYXRvcikgXApAQCAtMjE2LDcgKzIyNiwxMiBAQAog
ICAgIG1hY3JvKGluZGV4KSBcCiAgICAgbWFjcm8odmFsdWVzKSBcCiAgICAgbWFjcm8oZGVmZXJy
ZWQpIFwKLSAgICBtYWNybyhjb3VudGRvd25Ib2xkZXIpCisgICAgbWFjcm8oY291bnRkb3duSG9s
ZGVyKSBcCisgICAgbWFjcm8oT2JqZWN0KSBcCisgICAgbWFjcm8oVHlwZUVycm9yKSBcCisgICAg
bWFjcm8odW5kZWZpbmVkS2V5d29yZCkgXAorICAgIG1hY3JvKGNhbGwpIFwKKyAgICBtYWNybyhh
cHBseSkKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTI0MCwxMSArMjU1LDE1IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAKICNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJU
WV9OQU1FX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWU7CiAgICAgICAgIEpTQ19D
T01NT05fSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKEpTQ19JREVOVElGSUVSX0RFQ0xB
UkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwpCisgICAgICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVO
Q1RJT05fTkFNRShKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFMKQog
I3VuZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwKIAotI2Rl
ZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwo
bmFtZSkgY29uc3QgSWRlbnRpZmllciBuYW1lIyNQcml2YXRlTmFtZTsKKyNkZWZpbmUgSlNDX0lE
RU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMKG5hbWUpIGNvbnN0
IElkZW50aWZpZXIgbmFtZSMjUHJpdmF0ZU5hbWU7IGNvbnN0IHN0ZDo6cGFpcjxJZGVudGlmaWVy
LCBJZGVudGlmaWVyPiBtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpcjsKICAgICAgICAgSlNDX0NP
TU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShKU0NfSURFTlRJRklF
Ul9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwpCiAjdW5kZWYgSlNDX0lERU5U
SUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMCisgICAgICAgIAorICAg
ICAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJikg
Y29uc3Q7CisgICAgICAgIElkZW50aWZpZXIgZ2V0UHVibGljTmFtZShjb25zdCBJZGVudGlmaWVy
JikgY29uc3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCAwNzU4NzVmYjIz
MTZhNTU1NzA1MGE2NjkwY2QwZjk4ODI0ODRmNWYzLi41YWY5MDg3NTRlNzQ3ZjhjYWUwY2QwNGFm
OGQ0OTE1MDA0NjhjMmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlICJKSVQuaCIK
ICNpbmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgotI2luY2x1
ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIK
ICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3Bw
CmluZGV4IDU1MzM0YmUyZjk4MGE5OGY3ZmVhNDJhMDViZTBmMjBjMDE5ZmYwZGQuLmZhNTdjMDI2
ODVlNTNkNTI1Mjg4MDU3ZTIxMWQ5OGIxMDk4MWQ3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3Bw
CkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFs
dWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJM
TEludENvbW1vbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIENvbW1vblNsb3dQYXRo
cyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBl
cnMuY3BwCmluZGV4IDA1ZTExZTBiODBhMzQzMGFlYWIyMmIwMjIyYTIxMmY0YThlMmM0OWIuLjM2
NGNjNzE2NjYwOGI1MDA3ZDQ3N2Q4NzM5MThhNWQ2NGIxNjg2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC04MSw2ICs4
MSwxMSBAQCBKU09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCiAKIEpTT2JqZWN0KiBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9y
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7CisgICAgCisgICAg
aWYgKGlkZW50LmltcGwoKS0+aXNFbXB0eVVuaXF1ZSgpKSB7CisgICAgICAgIFN0cmluZyBtZXNz
YWdlKG1ha2VTdHJpbmcoIkNhbid0IGZpbmQgcHJpdmF0ZSB2YXJpYWJsZTogQCIsIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5nZXRQdWJsaWNOYW1lKGlkZW50KS5zdHJpbmcoKSkpOworICAgICAgICBy
ZXR1cm4gY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgbWVzc2FnZSk7CisgICAgfQogICAgIFN0
cmluZyBtZXNzYWdlKG1ha2VTdHJpbmcoIkNhbid0IGZpbmQgdmFyaWFibGU6ICIsIGlkZW50LnN0
cmluZygpKSk7CiAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIG1lc3NhZ2Up
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IDE5
ODk3NmJiM2ZlNmU2ZTkxMTc5ODEyZDFjYWY5YjhiZjliZmQwYmIuLjhkNTkwZWYwZmZjMGViOTBh
YzhmOWE4MWQ5YmMyNTcyMWNkMzVjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmgKQEAgLTQ4NCw3ICs0ODQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNs
ZWFyQ29kZSgpOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7
IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNT
dHJpY3RNb2RlKCksIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZv
KCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNF
dmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UpOyB9CiAKICAgICB1bnNpZ25lZCBu
dW1WYXJpYWJsZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFi
bGVzKCk7IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBt
X3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KQEAgLTU0
MCw3ICs1NDAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyQ29kZSgpOwogCi0gICAgRXhl
Y3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5m
byhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlKTsg
fQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhl
Y3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgp
LCBmYWxzZSwgZmFsc2UpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4
ZWN1dGFibGU7CkBAIC02MjgsNyArNjI4LDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0
dXJuIGJhc2VsaW5lQ29kZUJsb2NrRm9yKGtpbmQpOwogICAgIH0KLSAgICAgICAgCisKKyAgICBi
b29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFi
bGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lKCkg
eyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWUoKTsgfQogICAgIGNvbnN0IElkZW50
aWZpZXImIGluZmVycmVkTmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pbmZl
cnJlZE5hbWUoKTsgfQogICAgIEpTU3RyaW5nKiBuYW1lVmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZVZhbHVlKCk7IH0KQEAgLTY3NSwxNCArNjc2LDYgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fYm9keUluY2x1ZGVzQnJhY2VzOwogfTsKIAotaW5saW5lIGJv
b2wgaXNIb3N0RnVuY3Rpb24oSlNWYWx1ZSB2YWx1ZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVu
Y3Rpb24pCi17Ci0gICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+
KGdldEpTRnVuY3Rpb24odmFsdWUpKTsKLSAgICBpZiAoIWZ1bmN0aW9uIHx8ICFmdW5jdGlvbi0+
aXNIb3N0RnVuY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBmdW5j
dGlvbi0+bmF0aXZlRnVuY3Rpb24oKSA9PSBuYXRpdmVGdW5jdGlvbjsKLX0KLQogaW5saW5lIHZv
aWQgRXhlY3V0YWJsZUJhc2U6OmNsZWFyQ29kZVZpcnR1YWwoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1
dGFibGUpCiB7CiAgICAgc3dpdGNoIChleGVjdXRhYmxlLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8o
KS50eXBlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUHJvdG90eXBlLmNwcAppbmRleCBjMWIwOGFmMmQ4MThkYWU1N2UxYjAwZmRhMTczYTgxNjEz
NzUyOWI1Li4xMjQ5MGM0MGYzMzQxN2VjYTkyMzg1MGEwZGM2NjJkYmJjZDQwZjMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
CkBAIC0yMiwxMiArMjIsMTMgQEAKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgogCiAj
aW5jbHVkZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRl
ICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdCdWls
ZGVyLmgiCi0jaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGlu
ZXMuaCIKICNpbmNsdWRlICJMZXhlci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIApAQCAt
MTA4LDcgKzEwOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90
b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT5ob3N0VGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0cyhKU0Z1bmN0
aW9uOjppbmZvKCkpKSB7CiAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpT
RnVuY3Rpb24qPih0aGlzVmFsdWUpOwotICAgICAgICBpZiAoZnVuY3Rpb24tPmlzSG9zdEZ1bmN0
aW9uKCkpCisgICAgICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkK
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmlu
ZyhleGVjLCAiZnVuY3Rpb24gIiwgZnVuY3Rpb24tPm5hbWUoZXhlYyksICIoKSB7XG4gICAgW25h
dGl2ZSBjb2RlXVxufSIpKTsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxl
ID0gZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpOwogICAgICAgICBTdHJpbmcgc291cmNlU3RyaW5n
ID0gZXhlY3V0YWJsZS0+c291cmNlKCkudG9TdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCmluZGV4IDcyZWQxYzcxMjQwNjExNjhiMGFk
ZGQzMTE2Zjc1NWExMTdiOGZiOTAuLmIzNzQ5NDMwOTllMjE1NWEzOTc3MTMzMTM0NzAyYzJhMjRh
Y2M4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZh
dGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9u
LmNwcApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIEpTQWN0aXZhdGlvbjo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogCiBpbmxpbmUgYm9vbCBKU0FjdGl2
YXRpb246OnN5bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUo
KS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxl
RW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnVpZCgp
KTsKICAgICBpZiAoZW50cnkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAt
NzIsNyArNzIsNyBAQCBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlR2V0KFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdAogCiBpbmxpbmUgYm9vbCBKU0Fj
dGl2YXRpb246OnN5bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5
ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwor
ICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJv
cGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoZW50cnkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApAQCAtODksNyArODksNyBAQCBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5
bWJvbFRhYmxlUHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TgogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBI
ZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMpKTsKICAgICAKLSAgICBTeW1ib2xU
YWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS5w
dWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgp
LT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoZW50cnkuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoZW50cnkuaXNSZWFkT25seSgpKSB7CkBA
IC0xMzYsNyArMTM2LDcgQEAgaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1
dFdpdGhBdHRyaWJ1dGVzKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3AKICAgICBXcml0ZUJhcnJp
ZXJCYXNlPFVua25vd24+KiByZWc7CiAgICAgewogICAgICAgICBDb25jdXJyZW50SklUTG9ja2Vy
IGxvY2tlcihzeW1ib2xUYWJsZSgpLT5tX2xvY2spOwotICAgICAgICBTeW1ib2xUYWJsZTo6TWFw
OjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUoKS0+ZmluZChsb2NrZXIsIHByb3BlcnR5TmFt
ZS5wdWJsaWNOYW1lKCkpOworICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVy
ID0gc3ltYm9sVGFibGUoKS0+ZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAg
ICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlKCktPmVuZChsb2NrZXIpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5JiBlbnRyeSA9IGl0ZXItPnZh
bHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVu
dHNJdGVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50
c0l0ZXJhdG9yLmNwcAppbmRleCAyZmNmODgxNWMwNTY4MDU4MTJhNzk5MWE1ZmYwNjNkNjg3Mzk3
MTY0Li45YTkyNTgzYWEwZWM5MGRiYjMyOGVjZDUwZGMzMTM5YWVmMDI3M2I1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNw
cApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkpTQXJndW1lbnRzSXRlcmF0b3IuaCIKIAog
I2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXku
Y3BwCmluZGV4IDkwMDdiNWY3ZDNmMTAzYjFkMjFiMWEzNjVhMjZjMjE1YzMyYjRkMjguLmJhMGEy
ZDM4ZTljNTNlMTU5MzdkNDZhODk1MWE4YzhjNDUwNzkyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRXhl
Y3V0YWJsZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkluZGV4aW5n
SGVhZGVySW5saW5lcy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUg
IlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSAiUmVqZWN0LmgiCiAjaW5jbHVkZSA8d3Rm
L0FWTFRyZWUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5j
cHAKaW5kZXggY2NhNjg4OGJmOThhMDI4NjQ2Y2EzZGRkZjM3NjI3Y2UwZTdkOTMwMi4uMzM5YTdh
YjdmNTk1MTVlOTZhZmI3ZWM0Yjg3NDFlN2FhOGUxNjZmOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAgLTMyLDcgKzMyLDkgQEAKICNpbmNsdWRl
ICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJK
U05vdEFuT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
TnVtYmVyT2JqZWN0LmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9N
YXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKaW5kZXggZjdjODQ0NjQ1MDky
YjI1MDgwNWU2ZThkNDgzMmM5OThiZGI4OWI1NC4uZDc5NWRkNTZhOTdkZGI1OTdjMDkwZmMyZTBi
N2YzMDhlMzNlYmNhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bElubGluZXMuaApAQCAtMjcsOCArMjcsMTAgQEAKICNkZWZpbmUgSlNDZWxsSW5saW5lc19oCiAK
ICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgog
I2luY2x1ZGUgIkRlZmVyR0MuaCIKICNpbmNsdWRlICJIYW5kbGUuaCIKKyNpbmNsdWRlICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggMjQxOTY0NjEwYmI0NDI3YjE4NjM3MzM0NmUyNGY1YTgy
ZDBjZGNjNC4uYWNlNmMxNDdlNDk3ZmVlMjAyOTJmYjU1Mzk3NjBkNWQ2OTgyOWNlOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTM0LDcgKzM0
LDggQEAKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdldHRlclNl
dHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKLSNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24u
aCIgCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklu
bGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTm90QW5P
YmplY3QuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtMTA5LDYgKzExMCwxNCBAQCB2
b2lkIEpTRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgTmF0aXZlRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSwgaW50IGxlbmd0aAogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250
RW51bSk7CiB9CiAKK0pTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlv
bihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKK3sKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNyZWF0ZSh2bSwg
ZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBmdW5jdGlvbi0+cHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZygmdm0sIGV4ZWN1dGFibGUtPm5hbWUoKS5z
dHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBmdW5jdGlv
bi0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKGV4ZWN1
dGFibGUtPnBhcmFtZXRlckNvdW50KCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51
bSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uOworfQorCiBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSog
SlNGdW5jdGlvbjo6Y3JlYXRlQWxsb2NhdGlvblByb2ZpbGUoRXhlY1N0YXRlKiBleGVjLCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHkpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTE0Miw3
ICsxNTEsNyBAQCBjb25zdCBTdHJpbmcgSlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1l
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIGV4cGxpY2l0TmFtZTsKICAgICAKICAg
ICBjb25zdCBTdHJpbmcgYWN0dWFsTmFtZSA9IG5hbWUoZXhlYyk7Ci0gICAgaWYgKCFhY3R1YWxO
YW1lLmlzRW1wdHkoKSB8fCBpc0hvc3RGdW5jdGlvbigpKQorICAgIGlmICghYWN0dWFsTmFtZS5p
c0VtcHR5KCkgfHwgaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIGFj
dHVhbE5hbWU7CiAgICAgCiAgICAgcmV0dXJuIGpzRXhlY3V0YWJsZSgpLT5pbmZlcnJlZE5hbWUo
KS5zdHJpbmcoKTsKQEAgLTE1MCwxMCArMTU5LDIwIEBAIGNvbnN0IFN0cmluZyBKU0Z1bmN0aW9u
OjpjYWxjdWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQogCiBjb25zdCBTb3VyY2VD
b2RlKiBKU0Z1bmN0aW9uOjpzb3VyY2VDb2RlKCkgY29uc3QKIHsKLSAgICBpZiAoaXNIb3N0RnVu
Y3Rpb24oKSkKKyAgICBpZiAoaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgcmV0dXJuICZqc0V4ZWN1dGFibGUoKS0+c291cmNlKCk7CiB9CisgICAgCiti
b29sIEpTRnVuY3Rpb246OmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gaXNIb3N0RnVuY3Rpb24oKSB8fCBpc0J1aWx0aW5GdW5jdGlvbigpOworfQorCitib29s
IEpTRnVuY3Rpb246OmlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWlz
SG9zdEZ1bmN0aW9uKCkgJiYganNFeGVjdXRhYmxlKCktPmlzQnVpbHRpbkZ1bmN0aW9uKCk7Cit9
CiAKIHZvaWQgSlNGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogewpAQCAtMjc3LDcgKzI5Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTRnVu
Y3Rpb246OmNhbGxlckdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHNsb3RC
YXNlCiAgICAgaWYgKCFjYWxsZXIuaXNPYmplY3QoKSB8fCAhYXNPYmplY3QoY2FsbGVyKS0+aW5o
ZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjYWxsZXIpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24q
PihjYWxsZXIpOwotICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSB8fCAhZnVuY3Rp
b24tPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkKKyAgICBpZiAoZnVuY3Rpb24tPmlz
SG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgfHwgIWZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKS0+aXNT
dHJpY3RNb2RlKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbGVyKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiRnVuY3Rpb24uY2FsbGVyIHVzZWQgdG8gcmV0cmlldmUgc3RyaWN0IGNhbGxlciIpKSk7CiB9
CkBAIC0yOTksNyArMzE4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNGdW5jdGlvbjo6bmFtZUdldHRl
cihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBzbG90QmFzZSwgRW5jb2QKIGJvb2wgSlNGdW5j
dGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdCk7Ci0g
ICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgaWYgKHRoaXNPYmplY3Qt
PmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBCYXNlOjpnZXRPd25Q
cm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIAogICAg
IGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSkgewpA
QCAtMzYxLDcgKzM4MCw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiB2b2lkIEpTRnVuY3Rp
b246OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1v
ZGUgbW9kZSkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rp
b24qPihvYmplY3QpOwotICAgIGlmICghdGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSAmJiAo
bW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgeworICAgIGlmICghdGhpc09iamVj
dC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSAmJiAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKSkgewogICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90eXBlIGhhcyBiZWVuIHJl
aWZpZWQuCiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QpOwogICAgICAgICB0
aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwg
ZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgc2xvdCk7CkBAIC0zNzcsNyAr
Mzk2LDcgQEAgdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLAogdm9pZCBKU0Z1bmN0aW9uOjpwdXQoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1bmN0aW9uKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKLSAgICBpZiAodGhpc09iamVj
dC0+aXNIb3N0RnVuY3Rpb24oKSkgeworICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0
aW5GdW5jdGlvbigpKSB7CiAgICAgICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQyNSw3
ICs0NDQsNyBAQCBib29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcAogYm9vbCBKU0Z1bmN0aW9uOjpkZWZp
bmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwg
Ym9vbCB0aHJvd0V4Y2VwdGlvbikKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RGdW5j
dGlvbigpKQorICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQog
ICAgICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKTsKIAogICAgIGlmIChwcm9wZXJ0
eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDdjZDE0YjhjMmQ4MDBmNjFiZGMx
MmVkZDJkZjA0ZDM1ZmEwNjE5YjYuLjhjZDk1MGM0YWI0MmU5MzUzYmQ3OGQ5NDI3YmFlZDhjNjlj
ZDIyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAg
LTY4LDYgKzY4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rp
b247CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVh
dGVCdWlsdGluRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0dsb2JhbE9iamVj
dCopOworICAgICAgICAKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAg
ICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBuYW1lKEV4ZWNTdGF0ZSop
OwpAQCAtMTQ1LDYgKzE0NywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVy
biBtX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDsKICAgICAgICAgfQogCisgICAgICAgIGJv
b2wgaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc0J1aWx0
aW5GdW5jdGlvbigpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzSG9z
dEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGNv
bnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCB8IEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4g
fCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwog
CkBAIC0xNjksOCArMTc1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAgCi0gICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsK
LQogICAgICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKICAgICAg
ICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGNhbGxlckdldHRlcihFeGVjU3RhdGUqLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKaW5kZXggZmU0ZTExNGFkYmMyMzY3NGQzYjYw
ZTYxZjcxY2I3YTA2Yzk0Nzg0ZC4uNjlmMGQ0ZjM5NmVmOWMyZGE5ZTBiZjYwOGMyNjQ0MTcxNzk5
YmE1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
SW5saW5lcy5oCkBAIC01MywxNiArNTMsMjQgQEAgaW5saW5lIGJvb2wgSlNGdW5jdGlvbjo6aXNI
b3N0RnVuY3Rpb24oKSBjb25zdAogCiBpbmxpbmUgTmF0aXZlRnVuY3Rpb24gSlNGdW5jdGlvbjo6
bmF0aXZlRnVuY3Rpb24oKQogewotICAgIEFTU0VSVChpc0hvc3RGdW5jdGlvbigpKTsKKyAgICBB
U1NFUlQoaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PE5hdGl2ZUV4ZWN1dGFibGUqPihtX2V4ZWN1dGFibGUuZ2V0KCkpLT5mdW5jdGlvbigpOwogfQog
CiBpbmxpbmUgTmF0aXZlRnVuY3Rpb24gSlNGdW5jdGlvbjo6bmF0aXZlQ29uc3RydWN0b3IoKQog
ewotICAgIEFTU0VSVChpc0hvc3RGdW5jdGlvbigpKTsKKyAgICBBU1NFUlQoaXNIb3N0RnVuY3Rp
b25Ob25JbmxpbmUoKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5hdGl2ZUV4ZWN1dGFibGUq
PihtX2V4ZWN1dGFibGUuZ2V0KCkpLT5jb25zdHJ1Y3RvcigpOwogfQogCitpbmxpbmUgYm9vbCBp
c0hvc3RGdW5jdGlvbihKU1ZhbHVlIHZhbHVlLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlv
bikKK3sKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZ2V0
SlNGdW5jdGlvbih2YWx1ZSkpOworICAgIGlmICghZnVuY3Rpb24gfHwgIWZ1bmN0aW9uLT5pc0hv
c3RGdW5jdGlvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGZ1bmN0aW9u
LT5uYXRpdmVGdW5jdGlvbigpID09IG5hdGl2ZUZ1bmN0aW9uOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIAogI2VuZGlmIC8vIEpTRnVuY3Rpb25JbmxpbmVzX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3JJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCmluZGV4IDJkZGMyOWY3MTg5N2JiNTFkMzkw
YjA2YjI1YTczODMzODc0YmEwYzEuLmVkZDM0NDljZTQ3YjE3MzVlOGU1ZGJiMDVmMzE4ZTNkNTVm
M2JlNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMu
aApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0
cnVjdG9ySW5saW5lc19oCiAjZGVmaW5lIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3JJbmxpbmVzX2gKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAi
RXJyb3IuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApp
bmRleCA2ZGI4NjI3NGMzYjg3NGFhYWRlNTE1MTg5ODI2NzI2ZmIxMzZjMTczLi5mMjRlYTczMDNk
Zjk2OWRiZDJkY2E1MmM4NmQxMWM3OGMwMGRiOWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGlu
ZXMuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lu
bGluZXNfaAogCiAjaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCisjaW5jbHVkZSAiQ29tbW9u
SWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJEZWZlckdDLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIK
ICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
UHJvdG90eXBlSW5saW5lcy5oCmluZGV4IDQ1OTk5N2E0NjRiOTExOTQ3N2IxYmU4NGUzNmM0ZTI5
NjZhY2VmODUuLjhlNWZmODI3OTFlNmZmOGQ0ZWI5YzM3MzY5MWU0MzNlYjdkMTZhZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG90eXBlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oCkBAIC0yNiw2ICsyNiw3
IEBACiAjaWZuZGVmIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lc19oCiAj
ZGVmaW5lIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lc19oCiAKKyNpbmNs
dWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAyYzI3NGMx
YTdkNDgxYzA3ZGYwZDJiZWIzYjI5MzFhMzkwN2E1ZTY2Li4wNmU1NGM4NGU3N2I5MDMyYmFhMWQy
ZGY0N2ExYzcyZTgwYjdkZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0zNDYsNyArMzQ2LDggQEAgdm9pZCBKU0dsb2JhbE9i
amVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAKICAgICAvLyBDb25zdHJ1Y3RvcnMKIAot
ICAgIEpTQ2VsbCogb2JqZWN0Q29uc3RydWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRl
KHZtLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0
aW9uUHJvdG90eXBlLmdldCgpKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOworICAgIE9iamVj
dENvbnN0cnVjdG9yKiBvYmplY3RDb25zdHJ1Y3RvciA9IE9iamVjdENvbnN0cnVjdG9yOjpjcmVh
dGUodm0sIE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVu
Y3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9v
YmplY3RDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIG9iamVjdENvbnN0cnVjdG9yKTsKICAgICBK
U0NlbGwqIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUo
dm0sIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5j
dGlvblByb3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwogICAgIEpT
Q2VsbCogYXJyYXlDb25zdHJ1Y3RvciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgQXJy
YXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90
eXBlLmdldCgpKSwgbV9hcnJheVByb3RvdHlwZS5nZXQoKSk7CiAKQEAgLTQzMiw3ICs0MzMsMTAg
QEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgR2xv
YmFsUHJvcGVydHlJbmZvIHN0YXRpY0dsb2JhbHNbXSA9IHsKICAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPk5hTiwganNOYU4oKSwgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+SW5maW5pdHksIGpzTnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5m
aW5pdHkoKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKLSAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQsIGpzVW5k
ZWZpbmVkKCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KQorICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCwganNVbmRl
ZmluZWQoKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZFByaXZhdGVO
YW1lLCBqc1VuZGVmaW5lZCgpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisg
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5PYmplY3RQcml2YXRl
TmFtZSwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPlR5cGVFcnJv
clByaXZhdGVOYW1lLCBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSB8IERv
bnREZWxldGUgfCBSZWFkT25seSkKICAgICB9OwogICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGlj
R2xvYmFscywgV1RGX0FSUkFZX0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CiAgICAgCkBAIC02MDgs
NiArNjEyLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX3N5bnRheEVycm9yQ29uc3RydWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX3R5cGVFcnJvckNvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9VUklFcnJvckNvbnN0cnVjdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9vYmplY3RDb25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fcHJvbWlzZUNvbnN0cnVjdG9yKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX2V2YWxGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAppbmRleCBiMGNhZDNkYzU0NzBmN2M3YTBlNTcwYmRjZDJkZmZhODk1
ZTJhYTBjLi4zYTYxNmM2ZjA1ZWRmMWQyOTVhZjg0NDFhYTY2NTAwZmI5MmE0YTQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTY3LDYg
KzY3LDcgQEAgY2xhc3MgSlNTdGFjazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNs
YXNzIE1pY3JvdGFzazsKIGNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I7CitjbGFzcyBPYmpl
Y3RDb25zdHJ1Y3RvcjsKIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBQcm9ncmFtRXhl
Y3V0YWJsZTsKIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yOwpAQCAtMTU4LDYgKzE1OSw3IEBAIHBy
b3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV90eXBl
RXJyb3JDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
cj4gbV9VUklFcnJvckNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VDb25z
dHJ1Y3Rvcj4gbV9wcm9taXNlQ29uc3RydWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPE9iamVjdENv
bnN0cnVjdG9yPiBtX29iamVjdENvbnN0cnVjdG9yOwogCiAgICAgV3JpdGVCYXJyaWVyPEpTRnVu
Y3Rpb24+IG1fZXZhbEZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2Nh
bGxGdW5jdGlvbjsKQEAgLTMzMCw2ICszMzIsNyBAQCBwdWJsaWM6CiAgICAgUmVnRXhwQ29uc3Ry
dWN0b3IqIHJlZ0V4cENvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBDb25zdHJ1
Y3Rvci5nZXQoKTsgfQogCiAgICAgRXJyb3JDb25zdHJ1Y3RvciogZXJyb3JDb25zdHJ1Y3Rvcigp
IGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQorICAgIE9iamVjdENv
bnN0cnVjdG9yKiBvYmplY3RDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0Q29u
c3RydWN0b3IuZ2V0KCk7IH0KICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBldmFsRXJyb3JD
b25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXZhbEVycm9yQ29uc3RydWN0b3IuZ2V0KCk7
IH0KICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiByYW5nZUVycm9yQ29uc3RydWN0b3IoKSBj
b25zdCB7IHJldHVybiBtX3JhbmdlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3IqIHJlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX3JlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KQEAgLTU4MSw3ICs1ODQs
NyBAQCBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6aGFzT3duUHJvcGVydHlGb3JXcml0ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZQogCiBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVj
dDo6c3ltYm9sVGFibGVIYXNQcm9wZXJ0eShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewot
ICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJv
cGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5
bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIHJldHVybiAh
ZW50cnkuaXNOdWxsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcAppbmRleCAyYjY3YTFkOWVlZDg0ZTk5NTZmOGJiOTY4Mzg0Yzg0Y2FlYTUzY2ZmLi4y
ZWEyYzI0ZTZlYWI0Y2QwZDdmZmVkNjY1ZWY0YWU0MWFmMDc1MGYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBp
bmxpbmUgdm9pZCBnZXRDbGFzc1Byb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBD
bGFzc0luZm8qIGNsYXNzCiAgICAgICAgIGludCBoYXNoU2l6ZU1hc2sgPSB0YWJsZS0+Y29tcGFj
dFNpemUgLSAxOwogICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gdGFibGUtPnRhYmxl
OwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8PSBoYXNoU2l6ZU1hc2s7ICsraSwgKytlbnRy
eSkgewotICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkoKSAmJiAoIShlbnRyeS0+YXR0cmlidXRl
cygpICYgRG9udEVudW0pIHx8IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKSAm
JiAhKChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pICYmIGRpZFJlaWZ5KSkKKyAgICAg
ICAgICAgIGlmIChlbnRyeS0+a2V5KCkgJiYgKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIERvbnRF
bnVtKSB8fCAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgJiYgISgoZW50cnkt
PmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSAmJiBkaWRSZWlmeSkpCiAgICAgICAg
ICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZW50cnktPmtleSgpKTsKICAgICAgICAgfQogICAg
IH0KQEAgLTE2MTgsNyArMTYxOCw3IEBAIHZvaWQgSlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rp
b25zRm9yRGVsZXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzKTsKICAgICAgICAgZm9yIChIYXNoVGFibGU6OkNv
bnN0SXRlcmF0b3IgaXRlciA9IGhhc2hUYWJsZS0+YmVnaW4odm0pOyBpdGVyICE9IGhhc2hUYWJs
ZS0+ZW5kKHZtKTsgKytpdGVyKSB7Ci0gICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygp
ICYgRnVuY3Rpb24pCisgICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygpICYgQnVpbHRp
bk9yRnVuY3Rpb24pCiAgICAgICAgICAgICAgICAgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoZ2xv
YmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgKml0ZXIsIHRoaXMsIElkZW50aWZpZXIoJnZtLCBp
dGVyLT5rZXkoKSksIHNsb3QpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjIzNiw2ICsyMjM2LDE2
IEBAIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uCiAgICAgcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5h
bWUsIGZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsKIH0KIAordm9pZCBKU09iamVjdDo6cHV0RGlyZWN0
QnVpbHRpbkZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rp
b25FeGVjdXRhYmxlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQoreworICAgIFN0cmluZ0ltcGwqIG5h
bWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOworICAgIGlmICghbmFtZSkKKyAgICAgICAg
bmFtZSA9IHZtLnByb3BlcnR5TmFtZXMtPmFub255bW91cy5pbXBsKCk7CisgICAgQVNTRVJUKG5h
bWUpOworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRp
bkZ1bmN0aW9uKHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4
ZWN1dGFibGUpLCBnbG9iYWxPYmplY3QpOworICAgIHB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1l
LCBmdW5jdGlvbiwgYXR0cmlidXRlcyk7Cit9CisKIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdE5h
dGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgZnVu
Y3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50
cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBw
cm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgKaW5kZXggMDJiMTM3YjM1MGMyZmE4MzI1YmQzYjk2NDcxMTJhYmU4NzZmMzgzZi4u
ZGRlNTk3ZWZmYWVjMGYxYjhkNDRjMjkxMTk1MDMwMWYwNjAwN2U5OCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAi
QnV0dGVyZmx5LmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ2xhc3NJbmZv
LmgiCi0jaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJDb3B5V3JpdGVC
YXJyaWVyLmgiCiAjaW5jbHVkZSAiRGVmZXJHQy5oIgogI2luY2x1ZGUgIkhlYXAuaCIKQEAgLTU4
MSw2ICs1ODAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXREaXJlY3RVbmRlZmluZWQoUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0KSB7IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNldFVuZGVmaW5l
ZCgpOyB9CiAKICAgICB2b2lkIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0
aXZlRnVuY3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgdm9pZCBw
dXREaXJlY3RCdWlsdGluRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3Bl
cnR5TmFtZSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAg
IHZvaWQgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgs
IE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJv
b2wgc2hvdWxkVGhyb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCmluZGV4IDQwMjYxOTYzM2ZhMDZmZDI1NGIzZjJh
N2E4Y2M3MWU4MDdhYWY5MTEuLjE3ZDJhYjY1YTg4ZmZiMTNmYTlhNmM4ZjU4M2NhODQ0YWY4MzIy
NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21p
c2VDb25zdHJ1Y3Rvci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJKU1Byb21pc2VE
ZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZUZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpT
UHJvbWlzZVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1
ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk51bWJlck9iamVjdC5oIgogI2luY2x1ZGUgIlN0cnVj
dHVyZUlubGluZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKaW5kZXggNjhhOGJkODdkMzhhZGJiYjlkZDJh
YzllYzRiNDlkNWVmNDU0OWQ1Ni4uMjM3YzQyYmIwZGEwZjE2Njc2ZWIxMWFkZTgxODBhN2IwNmQ5
OGViNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKQEAgLTI5LDcgKzI5LDkgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAKKyNpbmNsdWRlICJK
U0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVk
ZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmgKaW5kZXggZjQzNjJmZjM1NGVlNmE1MDIyMWJiNzMxZDFhMjYx
MWU2ZGQ2MWJjMC4uZDA3MzcxOWRlMTYwZDJmMjkyMTEwYTU5NmExMDVlMmZhMjExNWZmYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1l
SXRlcmF0b3IuaApAQCAtMzEsNyArMzEsNiBAQAogCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNp
bmNsdWRlICJKU1N0cmluZy5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQ
cm9wZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1ZGUgPG1lbW9yeT4KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXggMmIxY2RkZGM1ODQxZDYwZDE1N2EyZTYxZjcw
MmIwZWU1ZmExZDY3Ni4uZTM5MzQxNjBhZWE5MjZlZjE1OTMyZjg3OTBlMjRjNTJhZjAyZDM1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC0yNCw3ICsyNCw2
IEBACiAjZGVmaW5lIEpTU3RyaW5nX2gKIAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgotI2luY2x1
ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIlByb3BlcnR5RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgpAQCAt
NDcyLDMzICs0NzEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpz
Tm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1
cm4ganNOb250cml2aWFsU3RyaW5nKCZleGVjLT52bSgpLCBzKTsgfQogICAgIGlubGluZSBKU1N0
cmluZyoganNPd25lZFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyBy
ZXR1cm4ganNPd25lZFN0cmluZygmZXhlYy0+dm0oKSwgcyk7IH0KIAotICAgIEFMV0FZU19JTkxJ
TkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQotICAgIHsKLSAg
ICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7
Ci0gICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5LCBqc051bWJlcihtX2xlbmd0aCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIH0KLQotICAgICAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgo
KTsKLSAgICAgICAgaWYgKGkgPCBtX2xlbmd0aCkgewotICAgICAgICAgICAgQVNTRVJUKGkgIT0g
UHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTsgLy8gTm8gbmVlZCBmb3IgYW4gZXhwbGljaXQgY2hl
Y2ssIHRoZSBhYm92ZSB0ZXN0IHdvdWxkIGFsd2F5cyBmYWlsIQotICAgICAgICAgICAgc2xvdC5z
ZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIGkpKTsK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLSAgICAgICAgICAgIAotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmlu
Zzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi0gICAgewotICAgICAgICBpZiAocHJvcGVydHlO
YW1lIDwgbV9sZW5ndGgpIHsKLSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERl
bGV0ZSB8IFJlYWRPbmx5LCBnZXRJbmRleChleGVjLCBwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLQogICAgIGlubGluZSBib29sIGlzSlNTdHJpbmcoSlNWYWx1ZSB2KSB7IHJldHVybiB2Lmlz
Q2VsbCgpICYmIHYuYXNDZWxsKCktPmNsYXNzSW5mbygpID09IEpTU3RyaW5nOjppbmZvKCk7IH0K
IAogICAgIC8vIC0tLSBKU1ZhbHVlIGlubGluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQpAQCAtNTI4LDMyICs1MDAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIHRv
V1RGU3RyaW5nU2xvd0Nhc2UoZXhlYyk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBTdHJp
bmcgaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKGNvbnN0IEpTVmFsdWUmIHZhbHVlLCBF
eGVjU3RhdGUqIGV4ZWMpCi0gICAgewotICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAg
ICAgICBpZiAodmFsdWUuaXNJbnQzMigpKQotICAgICAgICAgICAgcmV0dXJuIHZtLm51bWVyaWNT
dHJpbmdzLmFkZCh2YWx1ZS5hc0ludDMyKCkpOwotICAgICAgICBpZiAodmFsdWUuaXNEb3VibGUo
KSkKLSAgICAgICAgICAgIHJldHVybiB2bS5udW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNEb3Vi
bGUoKSk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc1RydWUoKSkKLSAgICAgICAgICAgIHJldHVybiB2
bS5wcm9wZXJ0eU5hbWVzLT50cnVlS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHZhbHVl
LmlzRmFsc2UoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5mYWxzZUtl
eXdvcmQuc3RyaW5nKCk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgICAg
IHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5udWxsS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAg
aWYgKHZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlO
YW1lcy0+dW5kZWZpbmVkS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIFN0
cmluZyBKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci0g
ICAgewotICAgICAgICBpZiAoaXNTdHJpbmcoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxKU1N0cmluZyo+KGFzQ2VsbCgpKS0+dmFsdWUoZXhlYyk7Ci0KLSAgICAgICAgcmV0dXJu
IGlubGluZUpTVmFsdWVOb3RTdHJpbmd0b1N0cmluZygqdGhpcywgZXhlYyk7Ci0gICAgfQotCiB9
IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTU3RyaW5nX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzc4YzA1
ZmM4MGQ4OGU4NTM3YzlkMmE1ZWFiOWZmMGJhOWI2MGE3NQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCkBAIC0wLDAgKzEs
OTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEpTU3RyaW5nSW5saW5lc19oCisjZGVmaW5lIEpTU3RyaW5nSW5saW5lc19oCisK
KyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxp
bmVzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0FMV0FZ
U19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorewor
ICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewor
ICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5LCBqc051bWJlcihtX2xlbmd0aCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisg
ICAgCisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGkg
PCBtX2xlbmd0aCkgeworICAgICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5k
ZXgpOyAvLyBObyBuZWVkIGZvciBhbiBleHBsaWNpdCBjaGVjaywgdGhlIGFib3ZlIHRlc3Qgd291
bGQgYWx3YXlzIGZhaWwhCisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8
IFJlYWRPbmx5LCBnZXRJbmRleChleGVjLCBpKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0FMV0FZU19JTkxJTkUgYm9vbCBKU1N0
cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgaWYgKHByb3BlcnR5TmFtZSA8
IG1fbGVuZ3RoKSB7CisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJl
YWRPbmx5LCBnZXRJbmRleChleGVjLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKworQUxXQVlTX0lOTElORSBT
dHJpbmcgaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKGNvbnN0IEpTVmFsdWUmIHZhbHVl
LCBFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBpZiAo
dmFsdWUuaXNJbnQzMigpKQorICAgICAgICByZXR1cm4gdm0ubnVtZXJpY1N0cmluZ3MuYWRkKHZh
bHVlLmFzSW50MzIoKSk7CisgICAgaWYgKHZhbHVlLmlzRG91YmxlKCkpCisgICAgICAgIHJldHVy
biB2bS5udW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNEb3VibGUoKSk7CisgICAgaWYgKHZhbHVl
LmlzVHJ1ZSgpKQorICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+dHJ1ZUtleXdvcmQu
c3RyaW5nKCk7CisgICAgaWYgKHZhbHVlLmlzRmFsc2UoKSkKKyAgICAgICAgcmV0dXJuIHZtLnBy
b3BlcnR5TmFtZXMtPmZhbHNlS2V5d29yZC5zdHJpbmcoKTsKKyAgICBpZiAodmFsdWUuaXNOdWxs
KCkpCisgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5udWxsS2V5d29yZC5zdHJpbmco
KTsKKyAgICBpZiAodmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3Bl
cnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQuc3RyaW5nKCk7CisgICAgcmV0dXJuIHZhbHVlLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKK30KKyAgICAKK0FMV0FZU19JTkxJTkUgU3RyaW5n
IEpTVmFsdWU6OnRvV1RGU3RyaW5nSW5saW5lKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAg
ICBpZiAoaXNTdHJpbmcoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTU3RyaW5nKj4o
YXNDZWxsKCkpLT52YWx1ZShleGVjKTsKKyAgICAKKyAgICByZXR1cm4gaW5saW5lSlNWYWx1ZU5v
dFN0cmluZ3RvU3RyaW5nKCp0aGlzLCBleGVjKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAK
aW5kZXggMmFjMjUyNGM1ZGZkYTNkMTIyNDlkNzc5MGFkYzMxMjllM2MwZTg3MS4uZmJjOGI4OTVl
YWU2YWY3ODg4MzliZWI1ZTgzZDdiNmI5NzkyOGZhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKQEAgLTY0LDYgKzY0
LDggQEAgdm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFt
ZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXQKICAgICAgICAgQ29uY3VycmVudEpJVExvY2tl
ciBsb2NrZXIodGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+bV9sb2NrKTsKICAgICAgICAgU3lt
Ym9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgZW5kID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+
ZW5kKGxvY2tlcik7CiAgICAgICAgIGZvciAoU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXQg
PSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5iZWdpbihsb2NrZXIpOyBpdCAhPSBlbmQ7ICsr
aXQpIHsKKyAgICAgICAgICAgIGlmIChpdC0+a2V5LT5pc0VtcHR5VW5pcXVlKCkpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoIShpdC0+dmFsdWUuZ2V0QXR0cmli
dXRlcygpICYgRG9udEVudW0pIHx8IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMp
KQogICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgaXQt
PmtleS5nZXQoKSkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKaW5kZXggYjViMjBhODQ1YjZhYjY0NDI0YjM3
ZTMxYjI3NzRlZjkwNTM1M2Y3Zi4uZDAzYjI0NTExYzJkZTE5NTlmYjVmNTZkNjQ5YzY0ZDBlZmUw
Njg1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xU
YWJsZU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9s
VGFibGVPYmplY3QuaApAQCAtNzIsNyArNzIsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdl
dCgKIHsKICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJs
ZSgpOwogICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7
Ci0gICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQo
bG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZTo6TWFw
OjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51
aWQoKSk7CiAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+
dmFsdWU7CkBAIC04Nyw3ICs4Nyw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogewog
ICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAg
ICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICBT
eW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIs
IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJh
dG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsK
ICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1ZTsK
QEAgLTEwNCw3ICsxMDQsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKIHsKICAgICBT
eW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgIENv
bmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAgU3ltYm9s
VGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9w
ZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBp
dGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAg
aWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+dmFsdWU7CkBAIC0x
MjYsNyArMTI2LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoCiAgICAgewogICAgICAg
ICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAg
ICAgICBHQ1NhZmVDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2ss
IGV4ZWMtPnZtKCkuaGVhcCk7Ci0gICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0
ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7
CisgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5m
aW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICAgICAgaWYgKGl0ZXIgPT0gc3lt
Ym9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IGJvb2wgd2FzRmF0OwpAQCAtMTU5LDcgKzE1OSw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxl
UHV0V2l0aEF0dHJpYnV0ZXMoCiAgICAgewogICAgICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFi
bGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBDb25jdXJyZW50SklUTG9ja2Vy
IGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2spOwotICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjpp
dGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJs
aWNOYW1lKCkpOworICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3lt
Ym9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgICAgIGlmIChp
dGVyID09IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5JiBlbnRyeSA9IGl0ZXItPnZhbHVlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKaW5kZXggYTgwNmRkMDUyYTBjYmVlNGNh
YzJjYWE2ZTA4YzY3MTYwMDVjMjcwYy4uYTk3NjUyMDFiOWY1MTg2NDE0MjNkZGUwZmUwZTJlNTFh
OGNlNzNiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3Vw
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCkBAIC02
OCw3ICs2OCw3IEBAIHZvaWQgSGFzaFRhYmxlOjpkZWxldGVUYWJsZSgpIGNvbnN0CiBib29sIHNl
dFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBl
bnRyeSwgSlNPYmplY3QqIHRoaXNPYmosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKICAgICBBU1NFUlQodGhpc09iai0+Z2xvYmFsT2JqZWN0KCkpOwot
ICAgIEFTU0VSVChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pOworICAgIEFTU0VSVChl
bnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pOwogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQgPSB0aGlzT2JqLT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmli
dXRlcyk7CkBAIC03OSw5ICs3OSwxMyBAQCBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqCiAgICAgICAg
IGlmICh0aGlzT2JqLT5zdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgCi0gICAgICAgIHRoaXNPYmotPnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
KAotICAgICAgICAgICAgdm0sIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUs
IGVudHJ5LT5mdW5jdGlvbkxlbmd0aCgpLAotICAgICAgICAgICAgZW50cnktPmZ1bmN0aW9uKCks
IGVudHJ5LT5pbnRyaW5zaWMoKSwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAgICAgIGlmIChl
bnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbikKKyAgICAgICAgICAgIHRoaXNPYmotPnB1dERp
cmVjdEJ1aWx0aW5GdW5jdGlvbih2bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5
TmFtZSwgZW50cnktPmJ1aWx0aW5HZW5lcmF0b3IoKSh2bSksIGVudHJ5LT5hdHRyaWJ1dGVzKCkp
OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdE5hdGl2ZUZ1
bmN0aW9uKAorICAgICAgICAgICAgICAgIHZtLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgcHJv
cGVydHlOYW1lLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSwKKyAgICAgICAgICAgICAgICBlbnRy
eS0+ZnVuY3Rpb24oKSwgZW50cnktPmludHJpbnNpYygpLCBlbnRyeS0+YXR0cmlidXRlcygpKTsK
KyAgICAgICAgfQogICAgICAgICBvZmZzZXQgPSB0aGlzT2JqLT5nZXREaXJlY3RPZmZzZXQodm0s
IHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CiAgICAgICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0
KG9mZnNldCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0xvb2t1cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKaW5k
ZXggYmRlODNkNGE2ZmMzNTU3Nzg1MGUzMWU4OGJjMzlmZDA1ZjdiY2U1Mi4uZGJhMzg5ZTllMjQz
ZGQwZWNiMmJhOThmMzk0ZDQwNzlmOWRlYTkzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTG9va3VwLmgKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgLy8gaWUu
IHR5cGVkZWYgSlNWYWx1ZSAoKkdldEZ1bmN0aW9uKShFeGVjU3RhdGUqLCBKU09iamVjdCogYmFz
ZU9iamVjdCkKICAgICB0eXBlZGVmIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIEdldEZ1bmN0
aW9uOwogICAgIHR5cGVkZWYgUHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmMgUHV0RnVuY3Rp
b247CisgICAgdHlwZWRlZiBGdW5jdGlvbkV4ZWN1dGFibGUqICgqQnVpbHRpbkdlbmVyYXRvciko
Vk0mKTsKIAogICAgIGNsYXNzIEhhc2hFbnRyeSB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwpAQCAtNjgsMTEgKzY5LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
cmV0dXJuIG1faW50cmluc2ljOwogICAgICAgICB9CiAKKyAgICAgICAgQnVpbHRpbkdlbmVyYXRv
ciBidWlsdGluR2VuZXJhdG9yKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgQnVpbHRp
bik7IHJldHVybiBtX3UuYnVpbHRpbkdlbmVyYXRvci5nZW5lcmF0b3JWYWx1ZTsgfQogICAgICAg
ICBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAm
IEZ1bmN0aW9uKTsgcmV0dXJuIG1fdS5mdW5jdGlvbi5mdW5jdGlvblZhbHVlOyB9CiAgICAgICAg
IHVuc2lnbmVkIGNoYXIgZnVuY3Rpb25MZW5ndGgoKSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0
ZXMgJiBGdW5jdGlvbik7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihtX3UuZnVu
Y3Rpb24ubGVuZ3RoKTsgfQogCi0gICAgICAgIEdldEZ1bmN0aW9uIHByb3BlcnR5R2V0dGVyKCkg
Y29uc3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBGdW5jdGlvbikpOyByZXR1cm4gbV91LnBy
b3BlcnR5LmdldDsgfQotICAgICAgICBQdXRGdW5jdGlvbiBwcm9wZXJ0eVB1dHRlcigpIGNvbnN0
IHsgQVNTRVJUKCEobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0
eS5wdXQ7IH0KKyAgICAgICAgR2V0RnVuY3Rpb24gcHJvcGVydHlHZXR0ZXIoKSBjb25zdCB7IEFT
U0VSVCghKG1fYXR0cmlidXRlcyAmIEJ1aWx0aW5PckZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJv
cGVydHkuZ2V0OyB9CisgICAgICAgIFB1dEZ1bmN0aW9uIHByb3BlcnR5UHV0dGVyKCkgY29uc3Qg
eyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBCdWlsdGluT3JGdW5jdGlvbikpOyByZXR1cm4gbV91
LnByb3BlcnR5LnB1dDsgfQogCiAgICAgICAgIGludHB0cl90IGxleGVyVmFsdWUoKSBjb25zdCB7
IEFTU0VSVCghbV9hdHRyaWJ1dGVzKTsgcmV0dXJuIG1fdS5sZXhlci52YWx1ZTsgfQogCkBAIC05
NCw2ICs5NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBpbnRwdHJfdCBs
ZW5ndGg7IC8vIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGZ1bmN0aW9uCiAgICAgICAgICAgICB9
IGZ1bmN0aW9uOwogICAgICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICBCdWlsdGlu
R2VuZXJhdG9yIGdlbmVyYXRvclZhbHVlOworICAgICAgICAgICAgICAgIGludHB0cl90IHVudXNl
ZDsKKyAgICAgICAgICAgIH0gYnVpbHRpbkdlbmVyYXRvcjsKKyAgICAgICAgICAgIHN0cnVjdCB7
CiAgICAgICAgICAgICAgICAgR2V0RnVuY3Rpb24gZ2V0OwogICAgICAgICAgICAgICAgIFB1dEZ1
bmN0aW9uIHB1dDsKICAgICAgICAgICAgIH0gcHJvcGVydHk7CkBAIC0yMDksNyArMjE1LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgQUxXQVlTX0lOTElORSBjb25z
dCBIYXNoRW50cnkqIGVudHJ5KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIFN0cmluZ0ltcGwqIGltcGwgPSBwcm9wZXJ0eU5hbWUucHVibGlj
TmFtZSgpOworICAgICAgICAgICAgU3RyaW5nSW1wbCogaW1wbCA9IHByb3BlcnR5TmFtZS51aWQo
KTsKICAgICAgICAgICAgIGlmICghaW1wbCkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICAgCkBAIC0yNDksNyArMjU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGlmICgh
ZW50cnkpIC8vIG5vdCBmb3VuZCwgZm9yd2FyZCB0byBwYXJlbnQKICAgICAgICAgICAgIHJldHVy
biBQYXJlbnRJbXA6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogCi0gICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24p
CisgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pCiAg
ICAgICAgICAgICByZXR1cm4gc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoZXhlYywgZW50cnksIHRo
aXNPYmosIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVD
dXN0b20odGhpc09iaiwgZW50cnktPmF0dHJpYnV0ZXMoKSwgZW50cnktPnByb3BlcnR5R2V0dGVy
KCkpOwpAQCAtMjg2LDcgKzI5Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpZiAoIWVu
dHJ5KSAvLyBub3QgZm91bmQsIGZvcndhcmQgdG8gcGFyZW50CiAgICAgICAgICAgICByZXR1cm4g
UGFyZW50SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iaiwgZXhlYywgcHJvcGVydHlOYW1l
LCBzbG90KTsKIAotICAgICAgICBBU1NFUlQoIShlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rp
b24pKTsKKyAgICAgICAgQVNTRVJUKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1
bmN0aW9uKSk7CiAKICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09iaiwgZW50
cnktPmF0dHJpYnV0ZXMoKSwgZW50cnktPnByb3BlcnR5R2V0dGVyKCkpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTI5NSw3ICszMDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUg
dm9pZCBwdXRFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpT
T2JqZWN0KiBiYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiAgICAgewogICAgICAgICAvLyBJZiB0aGlzIGlzIGEgZnVu
Y3Rpb24gcHV0IGl0IGFzIGFuIG92ZXJyaWRlIHByb3BlcnR5LgotICAgICAgICBpZiAoZW50cnkt
PmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKSB7CisgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRl
cygpICYgQnVpbHRpbk9yRnVuY3Rpb24pIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdCogdGhp
c09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPihzbG90LnRoaXNWYWx1ZSgpKSkKICAg
ICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVydHlO
YW1lLCB2YWx1ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYg
UmVhZE9ubHkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
YXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IGQ1ZTcyOGMyY2QxMDIwYTQ3ZTRhZGNk
NjQ5Y2QxZmZmYTVjZDZhODMuLmRjYTJmZDhkMWY2YWMyM2I4ZmY4MTdjYmIxOGZhYWU3YmNkNTk3
MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9y
Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUVycm9yQ29uc3RydWN0b3IuY3BwCkBAIC0zOCw2ICszOCwyMCBAQCBOYXRpdmVFcnJvckNvbnN0
cnVjdG9yOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiB7CiB9CiAKK3ZvaWQgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHByb3RvdHlw
ZVN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtLCBuYW1lKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAgCisgICAg
TmF0aXZlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1lLCB0aGlzKTsK
KyAgICAKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1i
ZXIoMSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsgLy8gRUNNQSAxNS4xMS43
LjUKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90
eXBlLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgbV9lcnJvclN0cnVj
dHVyZS5zZXQodm0sIHRoaXMsIEVycm9ySW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUpKTsKKyAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZSk7Cisg
ICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOworfQorCiB2b2lkIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRv
ciYgdmlzaXRvcikKIHsKICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0g
anNDYXN0PE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAppbmRleCA3
NDBkM2Y5MzMyOTJmZDJhY2NiNGI5OTAzNDQzMTJiOTMxOWFlMTEwLi40MzhhM2FmYjliYjBmNjQx
MmM5NzkzMjIzMGM4ODcxMDk2MWY1NDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCkBAIC01MSwxOSArNTEsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSgpIHsg
cmV0dXJuIG1fZXJyb3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBuYW1lKTsKLSAg
ICAgICAgICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKLQotICAgICAgICAgICAgTmF0aXZl
RXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1lLCB0aGlzKTsKLQotICAg
ICAgICAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVy
KDEpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7IC8vIEVDTUEgMTUuMTEuNy41
Ci0gICAgICAgICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
cHJvdG90eXBlLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Ci0gICAgICAgICAg
ICBtX2Vycm9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSkpOwotICAgICAgICAgICAgQVNTRVJU
KG1fZXJyb3JTdHJ1Y3R1cmUpOwotICAgICAgICAgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUt
PmlzT2JqZWN0KCkpOwotICAgICAgICB9CisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
LCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBT
dHJpbmcmIG5hbWUpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1
Y3RvcihWTSYsIFN0cnVjdHVyZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlTbG90LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eVNsb3QuaAppbmRleCBkOTM4ZmEzMTY0NWFmMjZiNzU4NTE0ZGI2YjI0NzhmMTgzZTll
ZWUxLi5jZmU5YzRkMzJiYTc2OGM3NGU0ZmZiYjE5MTM1Mjc5ZGViZjExNzY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaApAQCAtNDIsNiArNDIsOCBA
QCBlbnVtIEF0dHJpYnV0ZSB7CiAgICAgRnVuY3Rpb24gICAgID0gMSA8PCA0LCAgLy8gcHJvcGVy
dHkgaXMgYSBmdW5jdGlvbiAtIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIEFj
Y2Vzc29yICAgICA9IDEgPDwgNSwgIC8vIHByb3BlcnR5IGlzIGEgZ2V0dGVyL3NldHRlcgogICAg
IEN1c3RvbUFjY2Vzc29yID0gMSA8PCA2LAorICAgIEJ1aWx0aW4gICAgICAgICA9IDEgPDwgNywg
Ly8gcHJvcGVydHkgaXMgYSBidWlsdGluIGZ1bmN0aW9uIC0gb25seSB1c2VkIGJ5IHN0YXRpYyBo
YXNodGFibGVzCisgICAgQnVpbHRpbk9yRnVuY3Rpb24gPSBCdWlsdGluIHwgRnVuY3Rpb24sIC8v
IGhlbHBlciBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKIH07CiAKIGNsYXNzIFByb3Bl
cnR5U2xvdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBD
b25zdHJ1Y3Rvci5jcHAKaW5kZXggYmM1MTZiMDZkNjY1MWYwZTY4MmEyMDE3YmRmOGIwM2JhYmVk
NmVhMi4uMmMyNDM0Yjg3ZDA0Zjc0OWNiMTJlNjAyYWI1NDc4NDk0NmE5MWYxZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcApA
QCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgiCiAKICNpbmNs
dWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk9w
ZXJhdGlvbnMuaCIKICNpbmNsdWRlICJSZWdFeHBNYXRjaGVzQXJyYXkuaCIKICNpbmNsdWRlICJS
ZWdFeHBQcm90b3R5cGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwCmluZGV4IDg5ZDdhYzFiOGNiZjFkYjBlMTI2ZjFmYzc5NmRmZDVm
Yzg0YjJlNTkuLjlkZGEwYmE4ZGUxNDEyZWFmNGQyOTFkY2YwYzZiMzk2NTdmYjY3N2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcApA
QCAtMjQsNyArMjQsNyBAQAogI2luY2x1ZGUgIkFycmF5UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAi
RXJyb3IuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgor
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAppbmRleCBiMjAzODg4
ZDNjMTZjZGEzYzAwMzUwNjIwOGFlMDg2OTVkYzVkYWFhLi5kMDI2NmE1OWVmM2Y1NWFhMzY5NGY1
Zjc0MThjZjc4ZTBhZTBkOGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2V0Q29uc3RydWN0b3IuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSlNDZWxs
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTZXQu
aCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJNYXBEYXRhLmgiCiAj
aW5jbHVkZSAiU2V0UHJvdG90eXBlLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdPYmplY3QuY3BwCmluZGV4IDQ0MGE2MDk0MjE5MzM4MDMxZTU5MjdhZjQ2YjI4
OWRiY2ZiNWE3MjguLjgwZTdlYWE4YzQ5MWNiNmQ1NGE4MzI0Y2U2NDdhNmNkYjdlODg3ODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAt
MjIsNyArMjIsOSBAQAogI2luY2x1ZGUgIlN0cmluZ09iamVjdC5oIgogCiAjaW5jbHVkZSAiRXJy
b3IuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFs
T2JqZWN0LmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0
aW9ucy5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDA0MjkxZjdlOGRkMjRlOGFiMzNk
NzVhZjFkYTQ1NjhmMmJjOTllNjguLjFlY2FiODVjMGJkYjI4Njk4OTQ1NzdhNzQxMjU0ZTM2NDQx
NDlkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApA
QCAtMjcsMTIgKzI3LDE4IEBACiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkR1
bXBDb250ZXh0LmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpT
U3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgorI2luY2x1ZGUgIlByb3BlcnR5
TWFwSGFzaFRhYmxlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKKyNpbmNsdWRl
ICJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgorI2lu
Y2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YUlu
bGluZXMuaCIKICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWRMZWFrQ291bnRlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmlu
ZGV4IDUyY2NmNDIzYTEwNDNlMTA3OWYyZDhiMTg5NDIxOTg5MGU3MWYyYmMuLjAyMDY5NWZhYzgz
ZWQ0ZTUxODViNzBlNjk2OTk2M2EyZGU5YTM2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJBcmdMaXN0LmgiCiAjaW5jbHVk
ZSAiQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuaCIKICNpbmNsdWRlICJBcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKICNp
bmNsdWRlICJDYWxsRnJhbWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5j
bHVkZSAiQ29kZUNhY2hlLmgiCkBAIC01NSw3ICs1Niw5IEBACiAjaW5jbHVkZSAiSlNBUElWYWx1
ZVdyYXBwZXIuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0FycmF5
LmgiCi0jaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25Jbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJK
U0xvY2suaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgpAQCAtNjgsMTMgKzcxLDE2IEBACiAj
aW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVkZSAiTWFwRGF0YS5oIgogI2luY2x1ZGUgIk5vZGVz
LmgiCisjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiUGFyc2VyQXJlbmEuaCIKKyNpbmNs
dWRlICJQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgogI2luY2x1ZGUgIlJlZ0V4cENhY2hlLmgiCiAj
aW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2ltcGxlVHlwZWRBcnJheUNvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJTb3VyY2VQcm92aWRlckNhY2hlLmgiCiAjaW5jbHVkZSAiU3Ry
aWN0RXZhbEFjdGl2YXRpb24uaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiU3RydWN0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAj
aW5jbHVkZSAiV2Vha01hcERhdGEuaCIKICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CkBAIC0y
MjYsNiArMjMyLDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQog
ICAgICwgbV9pbkRlZmluZU93blByb3BlcnR5KGZhbHNlKQogICAgICwgbV9jb2RlQ2FjaGUoQ29k
ZUNhY2hlOjpjcmVhdGUoKSkKICAgICAsIG1fZW5hYmxlZFByb2ZpbGVyKG51bGxwdHIpCisgICAg
LCBtX2J1aWx0aW5FeGVjdXRhYmxlcyhCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZSgqdGhpcykp
CiB7CiAgICAgaW50ZXJwcmV0ZXIgPSBuZXcgSW50ZXJwcmV0ZXIoKnRoaXMpOwogICAgIFN0YWNr
Qm91bmRzIHN0YWNrID0gd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAppbmRleCA1YTg0MTA1ZWFmYjdhYmJhNWZhNDMxZWVlZGQ1NWQ3YTg5ZjU1Y2Uy
Li42OTU4YWMzOTNiMWFlZmMwYmVmYmY2ZTRlYjhiNjgyNWNmN2M5YTBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJQcml2YXRlTmFt
ZS5oIgogI2luY2x1ZGUgIlByb3RvdHlwZU1hcC5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5o
IgorI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRl
ICJUaHVua0dlbmVyYXRvcnMuaCIKICNpbmNsdWRlICJUeXBlZEFycmF5Q29udHJvbGxlci5oIgpA
QCAtNjksNiArNzAsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcml0eUNoZWNr
RmFpbFJldHVyblRodW5rczsKKyAgICBjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXM7CiAgICAgY2xh
c3MgQ29kZUJsb2NrOwogICAgIGNsYXNzIENvZGVDYWNoZTsKICAgICBjbGFzcyBDb21tb25JZGVu
dGlmaWVyczsKQEAgLTQ5Nyw2ICs0OTksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9p
ZCByZWdpc3RlcldhdGNocG9pbnRGb3JJbXB1cmVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyJiwg
V2F0Y2hwb2ludCopOwogICAgICAgICAvLyBGSVhNRTogVXNlIEF0b21pY1N0cmluZyBvbmNlIGl0
IGdvdCBtZXJnZWQgd2l0aCBJZGVudGlmaWVyLgogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIGFkZEltcHVyZVByb3BlcnR5KGNvbnN0IFN0cmluZyYpOworICAgICAgICAKKyAgICAgICAg
QnVpbHRpbkV4ZWN1dGFibGVzKiBidWlsdGluRXhlY3V0YWJsZXMoKSB7IHJldHVybiBtX2J1aWx0
aW5FeGVjdXRhYmxlcy5nZXQoKTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKQEAgLTUzNywxMCArNTQxLDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIEpTVmFsdWUgbV9leGNlcHRpb247CiAgICAgICAgIGJvb2wgbV9pbkRl
ZmluZU93blByb3BlcnR5OwogICAgICAgICBPd25QdHI8Q29kZUNhY2hlPiBtX2NvZGVDYWNoZTsK
LSAgICAgICAgUmVmQ291bnRlZEFycmF5PFN0YWNrRnJhbWU+IG1fZXhjZXB0aW9uU3RhY2s7Ci0K
ICAgICAgICAgTGVnYWN5UHJvZmlsZXIqIG1fZW5hYmxlZFByb2ZpbGVyOwotCisgICAgICAgIE93
blB0cjxCdWlsdGluRXhlY3V0YWJsZXM+IG1fYnVpbHRpbkV4ZWN1dGFibGVzOworICAgICAgICBS
ZWZDb3VudGVkQXJyYXk8U3RhY2tGcmFtZT4gbV9leGNlcHRpb25TdGFjazsKICAgICAgICAgSGFz
aE1hcDxTdHJpbmcsIFJlZlB0cjxXYXRjaHBvaW50U2V0Pj4gbV9pbXB1cmVQcm9wZXJ0eVdhdGNo
cG9pbnRTZXRzOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3
YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwZmNj
Mzg0ZThlZGZjMzRiMTQwODNiODY1ZDM3MzgyMGY0MTY1YzQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5o
CkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9KU1N0cmluZ0lubGluZXNfaAor
I2RlZmluZSBXZWJDb3JlX0ZXRF9KU1N0cmluZ0lubGluZXNfaAorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTU3RyaW5nSW5saW5lcy5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNw
cAppbmRleCAyZWRkY2RiYjlmMDA2Y2E3NjI2NjUwYjQyMDI3ODYyNmI5MjYxNDE3Li4zYzRlMGQ3
YmJiMzFjYWIxMmI1ZTZjOTc1Yzc0ZDNmNDg0ZTljYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVu
dC5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNDSlNWYWx1ZUlubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U1N0cmluZ0lubGluZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwCmluZGV4IDU2NDljODVjYTA5NTg3
NzQ4YTNkYTA2Y2RkZDBjYTk5OWU1MGI4ZTcuLjNmNGQ4ZWZhZWI1N2YzMzAwM2U3M2E3ZTc4NDJl
NDJjNzNjZTY0OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURC
QW55Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFueUN1
c3RvbS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJKU0lEQk9iamVjdFN0b3JlLmgi
CiAjaW5jbHVkZSAiSlNJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSURCRGF0YWJhc2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJ
REJEYXRhYmFzZUN1c3RvbS5jcHAKaW5kZXggOWVhZTc1NjljNzA2MDNhNGZlZDBhZjE0YzRmODcx
OGNkZTY0YTZlMS4uZjQ5ZGZlOTBiNGU4MmQzOWVkY2JmOWJhMjlmMmFlNzk5YzBkZGYyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5j
cHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1
ZGUgIkpTSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0jaW5j
bHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxp
bmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAKaW5kZXggNzRmZDM1NGIy
ODYwN2NmNzgyMmY4MDUzNDc5NzBmNWQ3YWM4YzgzMi4uNTQzNGIzYjdkNmM1NmVjYjBhMDNhMjc5
NGM2NzM2YTlhZGZiNzBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRl
ICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIkpTSURCSW5kZXguaCIKICNpbmNsdWRlIDxy
dW50aW1lL0Vycm9yLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgorI2luY2x1ZGUg
PHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCA5ZDA2NmY1ZTFhMDA0ZmJkNGQ1NzQwZTQ5N2M4MjhjOWJlOGY5MGRhLi45MDkyZTE3MDlk
NmZmMjZkYWU2ZjI5MjNjNzUxY2I2OGFlMzM2MDVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIw
MTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtl
IGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBKUworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlZCB0aGUgdGVzdCByZXN1
bHRzIGZvciBuZXcgZXJyb3IgbWVzc2FnZXMgKG5vdyB0aGF0IHRoZXkncmUKKyAgICAgICAgYWN0
dWFsbHkgaGVscGZ1bCksIGFuZCBhZGRlZCBhIGpzLXJlZ3Jlc3MgdGVzdCB0byB0cmFjayBwZXJm
b3JtYW5jZS4KKworICAgICAgICAqIGpzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBqcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGpzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICoganMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbDogQWRk
ZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2
ZXJ5LmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QxKToKKyAgICAgICAgKHRlc3QyKToKKyAgICAg
ICAgKHRlc3QzKToKKwogMjAxNC0wMS0zMCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxl
LmNvbT4KIAogICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1wbHVnaW4t
cHJpdmF0ZS1icm93c2luZy10b2dnbGVkLmh0bWwgaXMgZmxha3kgb24gV0syCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9q
cy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQKaW5kZXggNTQxYjhjMzU4ZjA2OGEwY2VhODgyYzEw
NTE3NTMyNTExNGNkMzNmNy4uY2NhMzYzZGNlNThmYmE5NWE1OGNlNDZmY2I0OGMzOGJmNThhZGY1
OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dApAQCAtMzAsMTIgKzMw
LDEyIEBAIFBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShpc0JpZ0Vub3VnaEFuZEV4Y2Vw
dGlvbikgdGhyZXcgZXhjZXB0aW9uIGV4Y2VwdGlvCiBQQVNTIFsxMiwgNTQsIDE4LCAxMzAsIDQ0
XS5ldmVyeShpc0JpZ0Vub3VnaEFuZEV4Y2VwdGlvbikgdGhyZXcgZXhjZXB0aW9uIGV4Y2VwdGlv
biBmcm9tIGZ1bmN0aW9uLgogCiA1LjAgV3JvbmcgVHlwZSBmb3IgQ2FsbGJhY2sgVGVzdAotUEFT
UyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KDUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoJ3dyb25nJykgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAs
IDQ0XS5ldmVyeShuZXcgT2JqZWN0KCkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUg
ZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkobnVsbCkgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVy
eSh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNT
IFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBU
eXBlIGVycm9yLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KDUpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEg
ZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoJ3dyb25nJykgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3Qg
YmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShuZXcgT2JqZWN0
KCkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxs
YmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnko
bnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNh
bGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVy
eSh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5l
dmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0
NF0uZXZlcnkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZl
cnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgogCiA2LjAgRWFybHkgRXhpdCAoIlNob3J0
IENpcmN1aXRpbmciKQogUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KGlzQmlnRW5vdWdo
U2hvcnRDaXJjdWl0KSBpcyBmYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2Fy
cmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Rv
bS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQKaW5kZXggMmMyYTY4Y2Ix
MDZkYTEwZjA4NmIyMmM1YmYyYmY1YzhmZTc5ZTMzZS4uNWQ5ZWNiNzVhOGRhNzliYTY1NjA1ZTdl
YjljZjhmYzI1ZmUxOGFmYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvZG9tL2FycmF5LXBy
b3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20v
YXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CkBAIC0xNSw3ICsxNSw3IEBA
IFBBU1MgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodW5kZWZpbmVkLCAwLCAxKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiB1bmRlCiBQQVNTIEFycmF5LnByb3RvdHlwZS5zb3J0LmNhbGwo
dW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFu
IG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnNvcnQuY2FsbCh1bmRlZmluZWQp
JykuCiBQQVNTIEFycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbCh1bmRlZmluZWQsIDAsIDEpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFs
dWF0aW5nICdBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwodW5kZWZpbmVkLCAwLCAxKScpLgog
UEFTUyBBcnJheS5wcm90b3R5cGUudW5zaGlmdC5jYWxsKHVuZGVmaW5lZCwge30pIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5n
ICdBcnJheS5wcm90b3R5cGUudW5zaGlmdC5jYWxsKHVuZGVmaW5lZCwge30pJykuCi1QQVNTIEFy
cmF5LnByb3RvdHlwZS5ldmVyeS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdB
cnJheS5wcm90b3R5cGUuZXZlcnkuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKScpLgorUEFTUyBB
cnJheS5wcm90b3R5cGUuZXZlcnkuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhp
c3wgbm90IGJlIHVuZGVmaW5lZC4KIFBBU1MgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbCh1
bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQg
aXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2Fs
bCh1bmRlZmluZWQsIHRvU3RyaW5nKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUuc29tZS5jYWxs
KHVuZGVmaW5lZCwgdG9TdHJpbmcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5l
ZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUuc29tZS5jYWxs
KHVuZGVmaW5lZCwgdG9TdHJpbmcpJykuCiBQQVNTIEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNh
bGwodW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMg
bm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbCh1
bmRlZmluZWQsIDApJykuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5
LXByb3RvdHlwZS1ldmVyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fy
cmF5LXByb3RvdHlwZS1ldmVyeS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTI5MGMwZWVmZjhk
ZTQyMTgzM2Q5MmQyN2U5NTI0MTkxNzYwNGI5NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDEwIEBACitKU1JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5CisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sIGIvTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTVj
YzE3MWM0ODc1YTM1ODViZjE0ZTU0MTVmNWNkMGU1ODFkNTQ0Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbApAQCAtMCww
ICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
cmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJh
eS1wcm90b3R5cGUtZXZlcnkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9y
ZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5
LmpzIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBl
LWV2ZXJ5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5NGFhMTYxYzBjZTk4YjJhYjE4YTNhMWExZjBkZmFhYzlk
N2QyZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10
ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuanMKQEAgLTAsMCArMSwyOSBAQAordmFyIHJlc3Vs
dCA9IDA7CitmdW5jdGlvbiB0ZXN0MShhKSB7CisgICAgcmVzdWx0IDw8IDE7CisgICAgcmVzdWx0
Kys7CisgICAgcmV0dXJuIHRydWU7Cit9CitmdW5jdGlvbiB0ZXN0MihhLGIpIHsKKyAgICByZXN1
bHQgXj0gMzsKKyAgICByZXN1bHQgKj0gMzsKKyAgICByZXR1cm4gdHJ1ZTsKK30KK2Z1bmN0aW9u
IHRlc3QzKGEsYixjKSB7CisgICAgcmVzdWx0IF49IHJlc3VsdCA+PiAxOworICAgIHJldHVybiB0
cnVlOworfQorCit2YXIgcmVzdWx0ID0gMDsKK3ZhciBhcnJheSA9IFtdCitmb3IgKHZhciBpID0g
MDsgaSA8IDEwMDAwMDsgKytpKQorICAgIGFycmF5W2ldID0gMTsKKworZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDsgaSsrKSB7CisgICAgYXJyYXkuZXZlcnkodGVzdDEpOworICAgIGFycmF5LmV2ZXJ5
KHRlc3QyKTsKKyAgICBhcnJheS5ldmVyeSh0ZXN0Myk7Cit9CisKK2lmIChyZXN1bHQgIT0gMTQy
ODgxMDQ5NikKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CmRpZmYg
LS1naXQgYS9HTlVtYWtlZmlsZS5hbSBiL0dOVW1ha2VmaWxlLmFtCmluZGV4IDczZmM0OTI4YzRk
ZDQ5YjU0OTg2OWI1MDY3OGM2YmRlNzRmNDQ3NjAuLjA4YzkxMTU0MjYwNTAwZGUzZmYwNGIwMjBj
ZTBkNjBmOThlOGNmZTggMTAwNjQ0Ci0tLSBhL0dOVW1ha2VmaWxlLmFtCisrKyBiL0dOVW1ha2Vm
aWxlLmFtCkBAIC02OCw2ICs2OCw3IEBAIEFMTF9NT0ZJTEVTIDo9CiBkb21fYmluZGluZ19pZGxz
IDo9CiB3dGZfc291cmNlcyA6PQogamF2YXNjcmlwdGNvcmVfaF9hcGkgOj0KK2phdmFzY3JpcHRj
b3JlX2J1aWx0aW5zX2pzX25vc291cmNlcyA6PQogamF2YXNjcmlwdGNvcmVfY3BwZmxhZ3M6PQog
amF2YXNjcmlwdGNvcmVfY2ZsYWdzIDo9CiBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzIDo9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222785</attachid>
            <date>2014-01-30 19:57:47 -0800</date>
            <delta_ts>2014-01-31 08:24:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140130195738.patch</filename>
            <type>text/plain</type>
            <size>198352</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NjgxMzcxYWU2ZDBjYWZlNDJmNWNmN2E1NWI3MjRjMTc5ODExYjBhLi43NTA0MGJiMjVhNTg0MTY0
Mzg5ODQzNDFjNmEwMjMzMzdhOTk1ZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
IFRoaXMgcmVzdWx0IG9mIHRoaXMgcmVmYWN0b3JpbmcKKyAgICAgICAgaXMgdGhhdCBDb21tb25J
ZGVudGlmaWVycywgYW5kIGEgZmV3IG90aGVyIG1pc2NlbGxhbmVvdXMgaGVhZGVycyBub3cKKyAg
ICAgICAgbmVlZCB0byBiZSBpbmNsdWRlZCBkaXJlY3RseSBhcyB0aGV5IHdlcmUgZm9ybWVybHkg
Y2FwdHVyZWQgdGhyb3VnaCBvdGhlcgorICAgICAgICBwYXRocy4KKworICAgICAgICBJbiBhZGRp
dGlvbiB0aGlzIGFkZHMgYSBmbGFnIHRvIHRoZSBMb29rdXAgdGFibGUncyBoYXNoZW50cnkgdG8g
aW5kaWNhdGUKKyAgICAgICAgdGhhdCBhIHN0YXRpYyBmdW5jdGlvbiBpcyBhY3R1YWxseSBiYWNr
ZWQgYnkgSlMuIFRoZXJlIGlzIHRoZW4gYSBsb3Qgb2YKKyAgICAgICAgbG9naWMgdG8gdGhyZWFk
IHRoZSBzcGVjaWFsIG5hdHVyZSBvZiB0aGUgZnVuY3RvbiB0byB3aGVyZSBpdCBtYXR0ZXJzLgor
ICAgICAgICBUaGlzIGFsbG93cyB0b1N0cmluZygpLCAuY2FsbGVyLCBldGMgdG8gbWltaWMgdGhl
IGJlaGF2aW91ciBvZiBhIGhvc3QKKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAgICAgTm90ZXMg
b24gd3JpdGluZyBidWlsdGluczoKKyAgICAgICAgIC0gRWFjaCBmdW5jdGlvbiBpcyBjb21waWxl
ZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBvdGhlcnMsIGFuZCB0aG9zZQorICAgICAgICAgICBpbXBs
ZW1lbnRhdGlvbnMgY2Fubm90IGN1cnJlbnRseSBjYXB0dXJlIGFsbCBnbG9iYWwgcHJvcGVydGll
cyAoYXMKKyAgICAgICAgICAgdGhhdCBjb3VsZCBiZSBwb3RlbnRpYWxseSB1bnNhZmUpLiBJZiBh
IGZ1bmN0aW9uIGRvZXMgY2FwdHVyZSBhCisgICAgICAgICAgIGdsb2JhbCB3ZSB3aWxsIGRlbGli
ZXJhdGVseSBjcmFzaC4KKyAgICAgICAgIC0gRm9yIHRob3NlICJnbG9iYWwiIHByb3BlcnRpZXMg
dGhhdCB3ZSBkbyB3YW50IGFjY2VzcyB0bywgd2UgdXNlCisgICAgICAgICAgIHRoZSBAIHByZWZp
eCwgZS5nLiBPYmplY3QodGhpcykgYmVjb21lcyBAT2JqZWN0KHRoaXMpLiBUaGUgQCBpZGVudGlm
aWVycworICAgICAgICAgICBhcmUgcHJpdmF0ZSBuYW1lcywgYW5kIGJlaGF2ZSBqdXN0IGxpa2Ug
cmVndWxhciBwcm9wZXJ0aWVzLCBvbmx5CisgICAgICAgICAgIHdpdGhvdXQgdGhlIHJpc2sgb2Yg
YWR1bHRlcmF0aW9uLiBBZ2FpbiwgaW4gdGhlIEBPYmplY3QgY2FzZSwgd2UKKyAgICAgICAgICAg
ZXhwbGljaXRseSBkdXBsaWNhdGUgdGhlIE9iamVjdENvbnN0cnVjdG9yIHJlZmVyZW5jZSBvbiB0
aGUgR2xvYmFsT2JqZWN0CisgICAgICAgICAgIHNvIHRoYXQgd2UgaGF2ZSBndWFyYW50ZWVkIGFj
Y2VzcyB0byB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgY29uc3RydWN0
b3IuCisgICAgICAgICAtIGNhbGwsIGFwcGx5LCBldmFsLCBhbmQgRnVuY3Rpb24gYXJlIGFsbCBy
ZWplY3RlZCBpZGVudGlmaWVycywgYWdhaW4KKyAgICAgICAgICAgdG8gcHJldmVudCBhbnl0aGlu
ZyBmcm9tIGFjY2lkZW50YWxseSB1c2luZyBhbiBhZHVsdGVyYXRlZCBvYmplY3QuCisgICAgICAg
ICAgIEluc3RlYWQgQGNhbGwgYW5kIEBhcHBseSBhcmUgYXZhaWxhYmxlLCBhbmQgaGFwcGlseSB0
aGV5IGNvbXBsZXRlbHkKKyAgICAgICAgICAgZHJvcCB0aGUgbmVxX3B0ciBpbnN0cnVjdGlvbiBh
cyB0aGV5J3JlIGRlZmluZWQgYXMgYWx3YXlzIGJlaW5nIHRoZQorICAgICAgICAgICBvcmlnaW5h
bCBjYWxsL2FwcGx5IGZ1bmN0aW9ucy4KKworICAgICAgICBUaGVzZSByZXN0cmljdGlvbnMgYXJl
IGp1c3QgaW50ZW5kZWQgdG8gbWFrZSBpdCBoYXJkZXIgdG8gYWNjaWRlbnRhbGx5CisgICAgICAg
IG1ha2UgY2hhbmdlcyB0aGF0IGFyZSBpbmNvcnJlY3QgKGZvciBpbnN0YW5jZSBjYWxsaW5nIHdo
YXRldmVyIGhhcyBiZWVuCisgICAgICAgIGFzc2lnbmVkIHRvIGdsb2JhbC5PYmplY3QsIGluc3Rl
YWQgb2YgdGhlIG9yaWdpbmFsIGNvbnN0cnVjdG9yIGZ1bmN0aW9uKS4KKyAgICAgICAgSG93ZXZl
ciwgbWFraW5nIGEgbWlzdGFrZSBsaWtlIHRoaXMgc2hvdWxkIHJlc3VsdCBpbiBhIHB1cmVseSBz
ZW1hbnRpYworICAgICAgICBlcnJvciBhcyBmdW5kYW1lbnRhbGx5IHRoZXNlIGZ1bmN0aW9ucyBh
cmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlCisgICAgICAgIHJlZ3VsYXIgSlMgY29kZSBp
biB0aGUgaG9zdCBnbG9iYWwsIGFuZCBoYXZlIG5vIG1vcmUgcHJpdmlsZWdlcyB0aGFuCisgICAg
ICAgIGFueSBvdGhlciBKUy4KKworICAgICAgICBUaGUgaW5pdGlhbCBwcm9vZiBvZiBjb25jZXB0
IGlzIEFycmF5LnByb3RvdHlwZS5ldmVyeSwgdGhpcyBzaG93cyBhIDY1JQorICAgICAgICBwZXJm
b3JtYW5jZSBpbXByb3ZlbWVudCwgYW5kIHRoYXQgaW1wcm92ZW1lbnQgaXMgc2lnbmlmaWNhbnRs
eSBodXJ0IGJ5CisgICAgICAgIG91ciBwb29yIG9wdGltaXNhdGlvbiBvZiBvcF9pbi4KKworICAg
ICAgICBBcyB0aGlzIGlzIHN1Y2ggYSBsaW1pdGVkIGZ1bmN0aW9uLCB3ZSBoYXZlIG5vdCB5ZXQg
ZXhwb3J0ZWQgYWxsIHN5bWJvbHMKKyAgICAgICAgdGhhdCB3ZSBjb3VsZCBwb3NzaWJseSBuZWVk
LCBidXQgYXMgd2UgaW1wbGVtZW50IG1vcmUsIHRoZSBsaWtlbGlob29kCisgICAgICAgIG9mIGVu
Y291bnRlcmluZyBtaXNzaW5nIGZlYXR1cmVzIHdpbGwgcmVkdWNlLgorCisgICAgICAgIFRoaXMg
ZGlkIHJlcXVpcmUgYnJlYWtpbmcgb3V0IGEgSlNTdHJpbmdJbmxpbmVzIGhlYWRlciwgYW5kIHJl
cXVpcmVkCisgICAgICAgIGZpeGluZyBhIGZldyBvYmplY3RzIHRoYXQgd2VyZSB0cnlpbmcgdG8g
dXNpbmcgUHJvcGVydHlOYW1lOjpwdWJsaWNOYW1lCisgICAgICAgIHJhdGhlciB0aGFuIFByb3Bl
cnR5TmFtZTo6dWlkLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0
eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dCk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRpY1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWNGdW5jdGlvbkdl
dHRlcik6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tH
ZXR0ZXIpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBidWlsdGlucy9BcnJheS5wcm90b3R5cGUuanM6CisgICAgICAgIChldmVyeSk6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkJ1aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKToKKyAgICAgICAgKEpTQzo6
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSk6CisgICAgICAgICog
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVj
dXRhYmxlczo6Y3JlYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tG
b3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6dG9TdHJpY3RuZXNzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNCdWlsdGluRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBjcmVhdGVfaGFz
aF90YWJsZToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZ2Vu
ZXJhdGUtanMtYnVpbHRpbnM6IEFkZGVkLgorICAgICAgICAoZ2V0Q29weXJpZ2h0KToKKyAgICAg
ICAgKGdldEZ1bmN0aW9ucyk6CisgICAgICAgIChnZW5lcmF0ZUNvZGUpOgorICAgICAgICAobWFu
Z2xlTmFtZSk6CisgICAgICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSWRlbnRp
Zmllcik6CisgICAgICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChTb3VyY2VDb2RlKToK
KyAgICAgICAgKFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKFZNKToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvUHJvdG9DYWxsRnJhbWUuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUp
OgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpM
ZXhlcik6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpM
ZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFy
Pjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAg
ICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcik6CisgICAgICAgICog
cGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OnNldENsb3NlZFZh
cmlhYmxlcyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
Tm9kZTo6Y2FwdHVyZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OnNldENs
b3NlZFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmluaXNoUGFy
c2luZyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRU
b2tlblRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OmdldFVzZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNsb3NlZFZhcmlh
Ymxlcyk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9k
ZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAgICAgICogcnVudGlt
ZS9BcmdMaXN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAg
ICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJh
dG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpn
ZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpD
b21tb25JZGVudGlmaWVycyk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQ
cml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQdWJsaWNO
YW1lKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzRXhjZXB0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxl
OjpleGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpleGVj
dXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aXNCdWlsdGlu
RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1l
L0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFi
bGVHZXQpOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0KToKKyAg
ICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgICogcnVudGltZS9K
U0NlbGxJbmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6c291cmNlQ29kZSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzSG9zdE9y
QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6aXNCdWlsdGluRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIpOgorICAgICAg
ICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9w
ZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgICogcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6Om9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpnZXRDbGFzc1Byb3BlcnR5TmFtZXMpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZ0lubGlu
ZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjppbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9i
amVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgICAgRG9uJ3QgcmVw
b3J0IHByaXZhdGUgbmFtZXMuCisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6c3ltYm9s
VGFibGVQdXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChKU0M6OnNldFVwU3RhdGlj
RnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlND
OjpIYXNoRW50cnk6OmJ1aWx0aW5HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpIYXNoRW50cnk6
OnByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpwcm9wZXJ0eVB1dHRl
cik6CisgICAgICAgIChKU0M6Okhhc2hUYWJsZTo6ZW50cnkpOgorICAgICAgICAoSlNDOjpnZXRT
dGF0aWNQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpnZXRTdGF0aWNWYWx1ZVNsb3QpOgor
ICAgICAgICAoSlNDOjpwdXRFbnRyeSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6YnVp
bHRpbkV4ZWN1dGFibGVzKToKKwogMjAxNC0wMS0yOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBw
bGUuY29tPgogCiAgICAgICAgIEZUTCBzaG91bGQgc3VwcG9ydCBHZXRCeUlkKFVudHlwZWQ6KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDFhZDY5NzQ4OGIwYzRiOGI0Y2ZhZTI5MTM1NDI1OWI2ZGFjZmRjNDUuLmYz
YzNkNzE3MWQwNTQ0ODBlYzYwNTQwYzBkNTI1OTk2ZWVjZGI5YTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxNC0wMS0yOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gaW1wbGVtZW50IEpTIGJ1aWx0aW5zIGluIEpT
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc4ODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGlu
ZyBmb3IgdGhlIG5ld2x5IHJlcXVpcmVkIGhlYWRlcnMuCisKKyAgICAgICAgVGVzdDoganMvcmVn
cmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbAorCisgICAgICAgICogRm9yd2FyZGluZ0hl
YWRlcnMvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0lEQkFueUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJREJE
YXRhYmFzZUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9y
ZUN1c3RvbS5jcHA6CisKIDIwMTQtMDEtMzAgIFJvZ2VyIEZvbmcgIDxyb2dlcl9mb25nQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWJHTCBsb2FkIHBvbGljeSBzaG91bGQgYmUgcXVlcmllZCBmb3Ig
dGhlIHRvcCBsZXZlbCBkb2N1bWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggNWJlMDUzZjFlMDg2YjQzZTY4
NmMzNjc0ZGFlN2M1MTYwNWEyODZlNy4uMGVjZWQ1MWYzZTJkNWI2MjFkYWRmMDU3NDlmNWU3NDY2
YTA2ZjUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBib29sIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZQogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKICAg
ICBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHByb3BlcnR5TmFtZVJlZjsKICAgICAKLSAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpT
Q2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xh
c3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgLy8gb3B0aW9uYWwgb3B0
aW1pemF0aW9uIHRvIGJ5cGFzcyBnZXRQcm9wZXJ0eSBpbiBjYXNlcyB3aGVuIHdlIG9ubHkgbmVl
ZCB0byBrbm93IGlmIHRoZSBwcm9wZXJ0eSBleGlzdHMKICAgICAgICAgICAgIGlmIChKU09iamVj
dEhhc1Byb3BlcnR5Q2FsbGJhY2sgaGFzUHJvcGVydHkgPSBqc0NsYXNzLT5oYXNQcm9wZXJ0eSkg
ewpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiAgICAgUmVmUHRy
PE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgSlNWYWx1ZVJlZiB2YWx1ZVJl
ZiA9IHRvUmVmKGV4ZWMsIHZhbHVlKTsKICAgICAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9
IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJl
bnRDbGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBz
ZXRQcm9wZXJ0eSA9IGpzQ2xhc3MtPnNldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFwcm9wZXJ0eU5hbWVSZWYpCkBAIC0zNDMsNyArMzQzLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm8KICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CiAgICAg
UmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0Ns
YXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNz
ID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdERlbGV0
ZVByb3BlcnR5Q2FsbGJhY2sgZGVsZXRlUHJvcGVydHkgPSBqc0NsYXNzLT5kZWxldGVQcm9wZXJ0
eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lUmVmKQpAQCAtNTY0LDcgKzU2
NCw3IEBAIEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiB7CiAgICAgSlNPYmplY3RSZWYgdGhpc1Jl
ZiA9IHRvUmVmKHRoaXMpOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gY2xhc3NS
ZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAg
ICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXMgPSBq
c0NsYXNzLT5zdGF0aWNWYWx1ZXMoZXhlYykpIHsKICAgICAgICAgICAgICAgICBpZiAoU3RhdGlj
VmFsdWVFbnRyeSogZW50cnkgPSBzdGF0aWNWYWx1ZXMtPmdldChuYW1lKSkgewpAQCAtNjAwLDcg
KzYwMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGlj
RnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFCiAgICAgaWYgKFBhcmVudDo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdDIpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QyLmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFt
ZSkpOwogCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsK
ICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqLT5jbGFzc1JlZigpOyBq
c0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlm
IChPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGUqIHN0YXRpY0Z1bmN0aW9ucyA9IGpz
Q2xhc3MtPnN0YXRpY0Z1bmN0aW9ucyhleGVjKSkgewogICAgICAgICAgICAgICAgIGlmIChTdGF0
aWNGdW5jdGlvbkVudHJ5KiBlbnRyeSA9IHN0YXRpY0Z1bmN0aW9ucy0+Z2V0KG5hbWUpKSB7CkBA
IC02MjYsNyArNjI2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpjYWxsYmFja0dldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWQKICAgICBKU09iamVjdFJl
ZiB0aGlzUmVmID0gdG9SZWYodGhpc09iaik7CiAgICAgUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBw
cm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2Jq
LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsK
ICAgICAgICAgICAgIGlmIChKU09iamVjdEdldFByb3BlcnR5Q2FsbGJhY2sgZ2V0UHJvcGVydHkg
PSBqc0NsYXNzLT5nZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlO
YW1lUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDI3YmM0YzE3ZjNk
ZmVlYjYxZDI1MjMyM2ZkODc4YzQ0NzgwZjc0YzUuLjNjYTgzODY0OWM5MTQwNzM5ZDk0OTIyYWVj
MWVkOTk1ZjBmYTc3ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUs
NiArNSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7
SkFWQVNDUklQVENPUkVfRElSfS9Gb3J3YXJkaW5nSGVhZGVycyIKICAgICAiJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2Fzc2VtYmxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2JpbmRpbmdz
IgorICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMiCiAgICAgIiR7SkFWQVNDUklQ
VENPUkVfRElSfS9ieXRlY29kZSIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J5dGVjb21w
aWxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2RmZyIKQEAgLTUyLDYgKzUzLDggQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9TY3JpcHRPYmplY3QuY3Bw
CiAgICAgYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCiAKKyAgICBidWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwCisKICAgICBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcAog
ICAgIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUJhc2lj
QmxvY2suY3BwCkBAIC03MDcsNyArNzEwLDcgQEAgc2V0KEhBU0hfTFVUX0dFTkVSQVRPUiAke0NN
QUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vY3JlYXRlX2hhc2hfdGFibGUpCiBtYWNybyhHRU5FUkFU
RV9IQVNIX0xVVCBfaW5wdXQgX291dHB1dCkKICAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAg
ICAgIE9VVFBVVCAke19vdXRwdXR9Ci0gICAgICAgIERFUEVORFMgJHtIQVNIX0xVVF9HRU5FUkFU
T1J9ICR7X2lucHV0fQorICAgICAgICBERVBFTkRTICR7SEFTSF9MVVRfR0VORVJBVE9SfSAke19p
bnB1dH0gJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5o
CiAgICAgICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7SEFTSF9MVVRfR0VORVJBVE9S
fSAke19pbnB1dH0gLWkgPiAke19vdXRwdXR9CiAgICAgICAgIFZFUkJBVElNKQogICAgIGxpc3Qo
QVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMgJHtfb3V0cHV0fSkKQEAgLTgxNSwxNiArODE4
LDI3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFC
TEV9ICR7SmF2YVNjcmlwdENvcmVfSU5TUEVDVE9SX1NDUklQVFNfRElSfS9Db2RlR2VuZXJhdG9y
SW5zcGVjdG9yLnB5ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVj
dG9ySlMuanNvbiAtLW91dHB1dF9oX2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENP
UkVfRElSfSIgLS1vdXRwdXRfY3BwX2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENP
UkVfRElSfSIgLS1vdXRwdXRfanNfZGlyICIke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09S
RV9ESVJ9IiAtLW91dHB1dF90eXBlIEphdmFTY3JpcHQgLS13cml0ZV9hbHdheXMgJiYgbWtkaXIg
LXAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IgJiYgY3Ag
JHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0JhY2tlbmRE
aXNwYXRjaGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVj
dG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmggJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENP
UkVfRElSfS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFT
Q1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yCiAgICAgVkVSQkFUSU0pCiAKKyMgSlNDQnVpbHRpbnMK
K2ZpbGUoR0xPQiBKU0NCdWlsdGluc19qc19maWxlcyAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9E
SVJ9L2J1aWx0aW5zLyouanMiKQorYWRkX2N1c3RvbV9jb21tYW5kKAorICAgT1VUUFVUICR7REVS
SVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuY3BwICR7REVSSVZF
RF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAorICAgTUFJTl9ERVBF
TkRFTkNZICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucwor
ICAgREVQRU5EUyAke0pTQ0J1aWx0aW5zX2pzX2ZpbGVzfQorICAgQ09NTUFORCAke1BZVEhPTl9F
WEVDVVRBQkxFfSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRp
bnMgJHtKU0NCdWlsdGluc19qc19maWxlc30gJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENP
UkVfRElSfS9KU0NCdWlsdGlucy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vSlNDQnVpbHRpbnMuY3BwCisgICBWRVJCQVRJTSkKKwogbGlzdChBUFBFTkQgSmF2YVNjcmlw
dENvcmVfU09VUkNFUwogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0v
SW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwCiAgICAgJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuY3BwCiAg
ICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU1R5cGVC
dWlsZGVycy5jcHAKKyAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pT
Q0J1aWx0aW5zLmNwcAogKQogCiBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTCiAg
ICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0JhY2tl
bmREaXNwYXRjaGVycy5oCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElS
fS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuaAogICAgICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaAorICAgICR7REVS
SVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAogKQogCiBhZGRf
Y3VzdG9tX2NvbW1hbmQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CmluZGV4IDExNTZlOTdmZDg4NjI1NTdjOWNmOGQzYjY4YmY0ZDAzYzNlOGJhOGYuLmE4M2JkY2Fk
NTFiMDY2ODg2NjdhNmI3MzIwNTdlNGNkYzg5NjBhOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yOCw4ICsyOCw5IEBAIFZQQVRIID0gXAogICAgICQo
SmF2YVNjcmlwdENvcmUpIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9wYXJzZXIgXAogICAgICQo
SmF2YVNjcmlwdENvcmUpL3J1bnRpbWUgXAotICAgICQoSmF2YVNjcmlwdENvcmUpL2ludGVycHJl
dGVyIFwKLSAgICAkKEphdmFTY3JpcHRDb3JlKS9qaXQgXAorCSQoSmF2YVNjcmlwdENvcmUpL2lu
dGVycHJldGVyIFwKKwkkKEphdmFTY3JpcHRDb3JlKS9qaXQgXAorCSQoSmF2YVNjcmlwdENvcmUp
L2J1aWx0aW5zIFwKICMKIAogLlBIT05ZIDogYWxsCkBAIC01Nyw4ICs1OCwxOCBAQCBhbGwgOiBc
CiAgICAgUmVnRXhwT2JqZWN0Lmx1dC5oIFwKICAgICBTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCBc
CiAgICAgdWRpczg2X2l0YWIuaCBcCisgICAgSlNDQnVpbHRpbnMgXAogIwogCisjIGJ1aWx0aW4g
ZnVuY3Rpb25zCisuUEhPTlk6IEpTQ0J1aWx0aW5zCisKK0pTQ0J1aWx0aW5zOiAkKEphdmFTY3Jp
cHRDb3JlKS9nZW5lcmF0ZS1qcy1idWlsdGlucyBKU0NCdWlsdGlucy5oIEpTQ0J1aWx0aW5zLmNw
cAorSlNDQnVpbHRpbnMuaDogJChKYXZhU2NyaXB0Q29yZSkvZ2VuZXJhdGUtanMtYnVpbHRpbnMg
JChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvKi5qcworCXB5dGhvbiAkXiAkQAorCQkJCQkJCQkJ
CQkJCQkJCQkJCQkgCitKU0NCdWlsdGlucy5jcHA6IEpTQ0J1aWx0aW5zLmgKKwogIyBsb29rdXAg
dGFibGVzIGZvciBjbGFzc2VzCiAKICUubHV0Lmg6IGNyZWF0ZV9oYXNoX3RhYmxlICUuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggZmU1NDQ4ZGRjMWJjZmFhNGM3Mjlh
MWNjMDBkZWE2MjQzMTkzOTBhMi4uNTU2OWY1MDI4ZDhjM2NkZDVhMDRkYzkzNjZhODRiMDRlZWM0
ODE1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtNTEsNiArNTEsNyBA
QCBqYXZhc2NyaXB0Y29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0ZvcndhcmRpbmdIZWFkZXJzIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YmluZGluZ3MgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucyBc
CiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlIFwKIAktSSQoc3Jj
ZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyIFwKIAktSSQoc3JjZGlyKS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIgXApAQCAtMTEwLDEyICsxMTEsMTYgQEAgRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnREZXNpcmVkT2Zmc2V0cy5oOiAkKGphdmFz
Y3JpcHRjb3JlX3NvdXJjZXMpICQKIAkkKEFNX1ZfR0VOKSQoUlVCWSkgJChzcmNkaXIpL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIg
JChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbSAkQAogCSQoQU1fVl9hdCl0b3VjaCAkQAogCi0kKFByb2dyYW1zX0xMSW50T2Zmc2V0c0V4
dHJhY3Rvcl9PQkpFQ1RTKTogRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnREZXNp
cmVkT2Zmc2V0cy5oCiskKFByb2dyYW1zX0xMSW50T2Zmc2V0c0V4dHJhY3Rvcl9PQkpFQ1RTKTog
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnREZXNpcmVkT2Zmc2V0cy5oIAogCiBE
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9MTEludEFzc2VtYmx5Lmg6IFByb2dyYW1zL0xM
SW50T2Zmc2V0c0V4dHJhY3RvciQoRVhFRVhUKQogCSQoQU1fVl9HRU4pJChSVUJZKSAkKHNyY2Rp
cikvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiICQoc3JjZGlyKS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gUHJvZ3JhbXMv
TExJbnRPZmZzZXRzRXh0cmFjdG9yJChFWEVFWFQpICRACiAJJChBTV9WX2F0KXRvdWNoICRACiAK
K0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmg6IERlcml2ZWRTb3Vy
Y2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmNwcAorRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvSlNDQnVpbHRpbnMuY3BwOiAkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2dlbmVyYXRlLWpzLWJ1aWx0aW5zICQoamF2YXNjcmlwdGNvcmVfYnVpbHRpbnNfanNfbm9zb3Vy
Y2VzKQorCSQoQU1fVl9HRU4pJChQWVRIT04pICReICRACisKICQobGliamF2YXNjcmlwdGNvcmVn
dGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVS
U0lPTkBfbGFfT0JKRUNUUyk6IERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50QXNz
ZW1ibHkuaAogCiBqc2M6ICQoamF2YXNjcmlwdGNvcmVfYnVpbHRfbm9zb3VyY2VzKSBQcm9ncmFt
cy9qc2MkKEVYRUVYVCkKQEAgLTIxNiw2ICsyMjEsNyBAQCBFWFRSQV9ESVNUICs9IFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvS2V5d29yZExvb2t1cEdlbmVyYXRvci5weSBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9LZXl3b3Jkcy50YWJsZSBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL1RIQU5LUyBcCisJJChqYXZhc2NyaXB0Y29yZV9idWlsdGluc19qc19ub3NvdXJjZXMpIFwK
IAkkKGxsaW50X25vc291cmNlcykgXAogCSQob2ZmbGluZWFzbV9ub3NvdXJjZXMpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggY2RiNTQyNmIwNmI1MmE5
ODI1NmVlOTA1OGJiYThmMTFlZWE2OWVlMC4uOThmYWFhN2QxNzVhYTYxZjIwODk2Y2VlYjEzODYz
ZTI3YjI2NmNlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
QEAgLTIwLDYgKzIwLDggQEAgamF2YXNjcmlwdGNvcmVfYnVpbHRfbm9zb3VyY2VzICs9IFwKIAlE
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9FcnJvclByb3RvdHlwZS5sdXQuaCBcCiAJRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNEYXRhVmlld1Byb3RvdHlwZS5sdXQuaCBcCiAJ
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3QubHV0LmggXAorCURl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmNwcCBcCisJRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvSlNDQnVpbHRpbnMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvSlNPTk9iamVjdC5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvSlNQcm9taXNlQ29uc3RydWN0b3IubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFT
Y3JpcHRDb3JlL0pTUHJvbWlzZVByb3RvdHlwZS5sdXQuaCBcCkBAIC0zNSw2ICszNyw5IEBAIGph
dmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvTExJbnREZXNpcmVkT2Zmc2V0cy5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9MTEludEFzc2VtYmx5LmgKIAoramF2YXNjcmlwdGNvcmVfYnVpbHRpbnNfanNfbm9z
b3VyY2VzICs9IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXkucHJvdG90
eXBlLmpzCisKIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0FQSUNhc3QuaCBcCkBAIC0xMDIsNiArMTA3LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNl
cyArPSBcCiAgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5o
IFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwIFwK
ICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuaCBcCisgICAg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAgXAor
ICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2ZpbGUu
Y3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJv
ZmlsZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNw
cCBcCkBAIC0xMjQxLDcgKzEyNDgsOSBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlE
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hl
cnMuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JKU0Zyb250
ZW5kRGlzcGF0Y2hlcnMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVj
dG9ySlNUeXBlQnVpbGRlcnMuY3BwIFwKLQlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9J
bnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUv
SW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaCBcCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvSlNDQnVpbHRpbnMuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NC
dWlsdGlucy5oCiAKIGxsaW50X25vc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gXApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2oKaW5kZXggNWVkZWZkYmU4NTVmOTZhNjI2OGQ4NTczYmVjMWQwYzNk
ODU4YWE1Yy4uYTEyZGIxODM0ODZkZmJiY2E4M2YzYTc4ZTljZjk4NjMxYjI2NTNkYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBAIC0zMDksNiArMzA5LDcgQEAKICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRPYmplY3QuY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0VmFsdWUuY3Bw
IiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnVpbHRpbnNcQnVpbHRpbkV4ZWN1dGFi
bGVzLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxs
b2NhdGlvblByb2ZpbGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNv
ZGVcQXJyYXlQcm9maWxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVj
b2RlXEJ5dGVjb2RlQmFzaWNCbG9jay5jcHAiIC8+CkBAIC03MjEsNiArNzIyLDcgQEAKICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3Jt
QXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JKU0Jh
Y2tlbmREaXNwYXRjaGVycy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBs
YXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0
b3JKU1R5cGVCdWlsZGVycy5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuY3BwIiAvPgogICA8L0l0ZW1Hcm91cD4KICAg
PEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xBcnJheUNvbnN0cnVjdG9yLmx1dC5oIiAvPgpAQCAtNzUwLDYgKzc1Miw3IEBACiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcUmVnRXhwT2JqZWN0
Lmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXFJlZ0V4cFByb3RvdHlwZS5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2pl
Y3ROYW1lKVxEZXJpdmVkU291cmNlc1xTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCIgLz4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3Jt
QXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NCdWlsdGlucy5o
IiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXEFQSVxBUElDYWxsYmFja0Z1bmN0aW9uLmgiIC8+CkBAIC03OTgsNiArODAxLDcgQEAK
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdEZ1bmN0aW9uQ2FsbC5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0T2JqZWN0Lmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRWYWx1ZS5oIiAv
PgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnVpbHRpbnNcQnVpbHRpbkV4ZWN1dGFibGVz
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRp
b25Qcm9maWxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJh
eVByb2ZpbGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEJ5VmFs
SW5mby5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5m
aWx0ZXJzCmluZGV4IDg3ZTEyYTQ3MTU4YmI2MjI0ZDQ5ZmQ2MjI5NzhjNGE5YzQ0MzVhNjUuLjg2
OWMxZjU4OWJjYjY4NmViOWNmMjBjMDk2YmUxYjgzYTU1MWUyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTcsNiArNyw5IEBACiAg
ICAgPEZpbHRlciBJbmNsdWRlPSJiaW5kaW5ncyI+CiAgICAgICA8VW5pcXVlSWRlbnRpZmllcj57
MGJhY2UxMjMtNDU4Mi1lZWJjLTkzMTQtNzgxOWIzNzZjMTk4fTwvVW5pcXVlSWRlbnRpZmllcj4K
ICAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9ImJ1aWx0aW5zIj4KKyAgICAgIDxV
bmlxdWVJZGVudGlmaWVyPnszYjlkNzJhNS0xMzViLTQzYjMtYTUyNC1jNmQyYjlkMjlkMzV9PC9V
bmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgogICAgIDxGaWx0ZXIgSW5jbHVkZT0iYnl0
ZWNvZGUiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezc2NjA4OGEwLTEyMTYtNDg1NC1hYTQz
LTU2MGM1ZTI4MzY2OH08L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CkBAIC0xMDgs
NiArMTExLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxNYWNyb0Fz
c2VtYmxlci5jcHAiPgogICAgICAgPEZpbHRlcj5hc3NlbWJsZXI8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVj
dXRhYmxlcy5jcHAiPgorICAgICAgPEZpbHRlcj5idWlsdGluczwvRmlsdGVyPgorICAgIDwvQ2xD
b21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0
aW9uUHJvZmlsZS5jcHAiPgogICAgICAgPEZpbHRlcj5ieXRlY29kZTwvRmlsdGVyPgogICAgIDwv
Q2xDb21waWxlPgpAQCAtMTMyOSw2ICsxMzM1LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAiPgog
ICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBs
YXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NCdWls
dGlucy5jcHAiPgorICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KKyAgICA8
L0NsQ29tcGlsZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxBUElcQVBJQ2FsbGJhY2tGdW5jdGlvbi5oIj4KQEAgLTE0NTQsNiArMTQ2
Myw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcWDg2QXNzZW1ibGVy
LmgiPgogICAgICAgPEZpbHRlcj5hc3NlbWJsZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxlcy5o
Ij4KKyAgICAgIDxGaWx0ZXI+YnVpbHRpbnM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUu
aCI+CiAgICAgICA8RmlsdGVyPmJ5dGVjb2RlPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBA
IC0yNTUwLDYgKzI1NjIsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEFycmF5UHJvdG90eXBlLmx1dC5oIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZl
ZCBTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuaCI+CisgICAgICA8Rmls
dGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxWTS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmVDb21tb24ucHJvcHMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZUNvbW1vbi5wcm9wcwppbmRleCAzNjIyZmZjNTc3YzQzZGRmNzBkYTUxZmY2OGFkNjQ2ZjYzMDRl
NTY3Li5jNTg4ODcwYzJmZDEzZDYwNzZkMzhmNTJjYTYyMjVkYjI4NzJjNzgyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZUNvbW1vbi5wcm9wcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZUNvbW1vbi5wcm9wcwpAQCAtNSw3ICs1LDcgQEAKICAg
PFByb3BlcnR5R3JvdXAgLz4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGls
ZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXDsuLlx0b29sc1w7Li5c
cnVudGltZVw7Li5cbGxpbnRcOy4uXGppdFw7Li5cZGlzYXNzZW1ibGVyXDsuLlxoZWFwXDsuLlxk
ZWJ1Z2dlclw7Li5cYXNzZW1ibGVyXDsuLlxwcm9maWxlclw7Li5ceWFyclw7Li5caW50ZXJwcmV0
ZXJcOy4uXGJ5dGVjb2RlXDsuLlxkZmdcOy4uXGJ5dGVjb21waWxlclw7Li5ccGFyc2VyXDsuLlxB
UElcOy4uXGZ0bFw7Li5cYmluZGluZ3NcOy4uXGluc3BlY3Rvclw7JChDb25maWd1cmF0aW9uQnVp
bGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXEphdmFTY3JpcHRDb3JlXERlcml2ZWRT
b3VyY2VzXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVw7JChDb25maWd1cmF0aW9u
QnVpbGREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmVcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxpbmNsdWRlXHByaXZhdGVcOyQoV2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZTskKFdlYktpdF9M
aWJyYXJpZXMpXGluY2x1ZGVccHJpdmF0ZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMp
PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM+Li5cOy4uXHRvb2xzXDsuLlxydW50aW1lXDsuLlxsbGludFw7Li5caml0XDsu
LlxkaXNhc3NlbWJsZXJcOy4uXGhlYXBcOy4uXGRlYnVnZ2VyXDsuLlxhc3NlbWJsZXJcOy4uXHBy
b2ZpbGVyXDsuLlx5YXJyXDsuLlxpbnRlcnByZXRlclw7Li5cYnl0ZWNvZGVcOy4uXGJ1aWx0aW5z
XDsuLlxkZmdcOy4uXGJ5dGVjb21waWxlclw7Li5ccGFyc2VyXDsuLlxBUElcOy4uXGZ0bFw7Li5c
YmluZGluZ3NcOy4uXGluc3BlY3Rvclw7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXEphdmFTY3JpcHRDb3JlXERlcml2ZWRTb3VyY2VzXDskKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVw7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1
ZGVcSmF2YVNjcmlwdENvcmVcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZh
dGVcOyQoV2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZTskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1
ZGVccHJpdmF0ZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPgogICAgICAgPEZvcmNlZEluY2x1ZGVGaWxlcz5JQ1VWZXJzaW9uLmg7
JShGb3JjZWRJbmNsdWRlRmlsZXMpPC9Gb3JjZWRJbmNsdWRlRmlsZXM+CiAgICAgPC9DbENvbXBp
bGU+CiAgICAgPExpbms+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI3ZTg3Njc0
MGE5NjRiMDI4OTg0ZWQ2NzgxNjE4MjBhNWRjZjc3YzQuLjkxMTU3M2FiMTdkMzM5NzRhYTdjOWEw
MTFkYjIwMGIwOWFmNzhiZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MjIs
NyArOTIyLDYgQEAKIAkJQTUwM0ZBMTkxODhFMEZCMDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxs
RnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTUwM0ZBMTMxODhFMEZBRjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwICovOyB9
OwogCQlBNTAzRkExQTE4OEUwRkIwMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTQxODhF
MEZBRjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCAqLzsgfTsKIAkJQTUwM0ZBMUIx
ODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNTE4OEUwRkIwMDAxMTBG
MTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLzsgfTsKLQkJQTUwM0ZBMUMxODhFMEZC
MDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTYxODhFMEZCMDAwMTEwRjE0IC8qIEpT
SmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQlBNTAzRkExRDE4OEUwRkIwMDAxMTBGMTQg
LyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE3MTg4RTBGQjAwMDExMEYxNCAvKiBK
U0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwICovOyB9OwogCQlBNTAzRkExRTE4OEUw
RkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExODE4OEUwRkIwMDAx
MTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggKi87IH07CiAJCUE1MDNG
QTIxMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExRjE4OEVGRjY4MDAxMTBGMTQg
LyogU2NyaXB0QnJlYWtwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0xMDI0LDYgKzEwMjMsNyBAQAogCQlBNzBCMDgzMjE3QTBCNzlCMDBE
QUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3MEIwODMwMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlT
d2l0Y2guY3BwICovOyB9OwogCQlBNzBCMDgzMzE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5
U3dpdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NzBCMDgzMTE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmggKi87IH07CiAJCUE3
MTIzNkU1MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxMjM2RTQxMTk1RjMzQzAwQkQy
MTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgKi87IH07CisJCUE3MURBODBGMTg4MERCQUIwMEQx
RjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3MURBODBFMTg4MERCQUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lubGlu
ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlB
NzIwMjhCNjE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjAyOEI0MTc5NzYwMUUw
MDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwICovOyB9OwogCQlBNzIwMjhCODE3OTc2
MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIwMjhCNTE3OTc2MDFFMDA5ODAyOEMgLyogSlND
VGVzdFJ1bm5lclV0aWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQTcyMDI4QkExNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIwMjhC
OTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTE1MCw2ICsxMTUwLDEwIEBACiAJ
CUE3Q0EzQUU4MTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0EzQUUyMTdEQTQxQUUwMDY1MzhBRiAv
KiBKU1dlYWtNYXAuaCAqLzsgfTsKIAkJQTdDQTNBRUIxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtN
YXBEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3Q0EzQUU5MTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5jcHAgKi87IH07CiAJCUE3
Q0EzQUVDMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDQTNBRUExN0RBNTE2ODAwNjUzOEFGIC8q
IFdlYWtNYXBEYXRhLmggKi87IH07CisJCUE3RDgwMUE0MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWls
dGluRXhlY3V0YWJsZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTdEODAxQTExODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5j
cHAgKi87IH07CisJCUE3RDgwMUE1MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJs
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDgw
MUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBN0Q4MDFBODE4ODBENkE4MDAy
NkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTdEODAxQTYxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNw
cCAqLzsgfTsKKwkJQTdEODAxQTkxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4MDFBNzE4ODBE
NkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBN0Q4OUNGMjE3QTBCOENDMDA3NzNBRDggLyogREZHQmFz
aWNCbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBN0Q4OUNFMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgKi87IH07CiAJ
CUE3RDg5Q0YzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4OUNFNDE3QTBC
OENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwICovOyB9OwogCQlBN0Q4OUNG
NDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDg5Q0U1MTdBMEI4Q0MwMDc3M0FE
OCAvKiBERkdCbG9ja0luc2VydGlvblNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0yNDYyLDYgKzI0NjYsOCBAQAogCQlBNzEyMzZFNDExOTVG
MzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpJVE9wY29kZXMzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE3MThGNjFBMTE3NTRBMjEwMDI0NjVBNyAvKiBSZWdFeHBKaXRUYWJsZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwSml0VGFibGVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MThGODIxMTE3OEVCNEIwMDI0NjVBNyAvKiBjcmVh
dGVfcmVnZXhfdGFibGVzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0Rmls
ZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBjcmVh
dGVfcmVnZXhfdGFibGVzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzFEQTgwRDE4
ODBENzFGMDBEMUYyOTkgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNj
cmlwdC5weXRob247IHBhdGggPSAiZ2VuZXJhdGUtanMtYnVpbHRpbnMiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBNzFEQTgwRTE4ODBEQkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nSW5saW5lcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzIwMjhCNDE3OTc2MDFFMDA5ODAyOEMg
LyogSlNDVGVzdFJ1bm5lclV0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE3MjAyOEI1MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDVGVzdFJ1bm5lclV0aWxzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI5MTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1
bmN0aW9uSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Z1bmN0
aW9uSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU5MCw2ICsyNTk2
LDExIEBACiAJCUE3Q0EzQUUyMTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWFrTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE3Q0EzQUU5MTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrTWFwRGF0YS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Q0EzQUVBMTdEQTUxNjgwMDY1MzhBRiAvKiBX
ZWFrTWFwRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrTWFwRGF0
YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFBMDE4ODBENjZFMDAyNkMz
OUIgLyogQXJyYXkucHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0
OyBwYXRoID0gQXJyYXkucHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBN0Q4MDFBMTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAv
KiBCdWlsdGluRXhlY3V0YWJsZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QnVpbHRpbkV4ZWN1dGFibGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgw
MUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0NCdWlsdGlucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE3RDgwMUE3MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBN0Q4OUNFMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9j
ay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdCYXNpY0Jsb2Nr
LmNwcDsgcGF0aCA9IGRmZy9ERkdCYXNpY0Jsb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTdEODlDRTQxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Jsb2NrSW5zZXJ0
aW9uU2V0LmNwcDsgcGF0aCA9IGRmZy9ERkdCbG9ja0luc2VydGlvblNldC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RDg5Q0U1MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9j
a0luc2VydGlvblNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCbG9j
a0luc2VydGlvblNldC5oOyBwYXRoID0gZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTI2LDYgKzI5MzcsNyBAQAogCQkJCTg2MDRGNEYy
MTQzQTZDNDQwMEIyOTVGNSAvKiBDaGFuZ2VMb2cgKi8sCiAJCQkJRjY5MkE4NTQwMjU1NTk3RDAx
RkY2MEY3IC8qIGNyZWF0ZV9oYXNoX3RhYmxlICovLAogCQkJCUE3MThGODIxMTE3OEVCNEIwMDI0
NjVBNyAvKiBjcmVhdGVfcmVnZXhfdGFibGVzICovLAorCQkJCUE3MURBODBEMTg4MEQ3MUYwMEQx
RjI5OSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAqLywKIAkJCQk0NUUxMkQ4ODA2QTQ5QjBGMDBF
OURGODQgLyoganNjLmNwcCAqLywKIAkJCQlGNjhFQkI4QzAyNTVENEM2MDFGRjYwRjcgLyogY29u
ZmlnLmggKi8sCiAJCQkJRjVDMjkwRTYwMjg0Rjk4RTAxODYzNUNBIC8qIEphdmFTY3JpcHRDb3Jl
UHJlZml4LmggKi8sCkBAIC0yOTM0LDYgKzI5NDYsNyBAQAogCQkJCTE0MzJFQkQ3MEEzNENBRDQw
MDcxN0I5RiAvKiBBUEkgKi8sCiAJCQkJOTY4OENCMTIwRUQxMkI0RTAwMUQ2NDlGIC8qIGFzc2Vt
YmxlciAqLywKIAkJCQlBNTRDRjJFQTE4NEVBNzM5MDAyMzdGMTkgLyogYmluZGluZ3MgKi8sCisJ
CQkJQTdEODAxOUYxODgwRDY2RTAwMjZDMzlCIC8qIGJ1aWx0aW5zICovLAogCQkJCTk2OUEwNzhG
MEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLywKIAkJCQk3RTM5RDgxRDBFQzM4RUZBMDAz
QUYxMUEgLyogYnl0ZWNvbXBpbGVyICovLAogCQkJCTFDOTA1MTNFMEJBOUU4ODMwMDgxRTlEMCAv
KiBDb25maWd1cmF0aW9ucyAqLywKQEAgLTM1MDksNiArMzUyMiw4IEBACiAJCTY1MEZERjhEMDlE
MEZDQTcwMDc2OUU1NCAvKiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUE3RDgwMUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NC
dWlsdGlucy5jcHAgKi8sCisJCQkJQTdEODAxQTcxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0
aW5zLmggKi8sCiAJCQkJQkMxOEM1MjMwRTE2RkM4QTAwQjM0NDYwIC8qIEFycmF5UHJvdG90eXBl
Lmx1dC5oICovLAogCQkJCUJDRDIwM0U3MEUxNzE4RjQwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBl
Lmx1dC5oICovLAogCQkJCUE1MTNFNUM2MTg1Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlw
dFNvdXJjZS5oICovLApAQCAtMzgxMSw2ICszODI2LDcgQEAKIAkJCQlBNzkwREQ2QTE4MkY0OTk3
MDA1ODg4MDcgLyogSlNTZXRJdGVyYXRvci5oICovLAogCQkJCUJDMDJFOUI2MEUxODQyRkEwMDBG
OTI5NyAvKiBKU1N0cmluZy5jcHAgKi8sCiAJCQkJRjY5MkE4NjIwMjU1NTk3RDAxRkY2MEY3IC8q
IEpTU3RyaW5nLmggKi8sCisJCQkJQTcxREE4MEUxODgwREJBQjAwRDFGMjk5IC8qIEpTU3RyaW5n
SW5saW5lcy5oICovLAogCQkJCTg2RTg1NTM4MTExQjk5NjgwMDFBRjUxRSAvKiBKU1N0cmluZ0J1
aWxkZXIuaCAqLywKIAkJCQkyNjAwQjVBNDE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2lu
ZXIuY3BwICovLAogCQkJCTI2MDBCNUE1MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5l
ci5oICovLApAQCAtNDU2MSw2ICs0NTc3LDE2IEBACiAJCQlwYXRoID0gcmVtb3RlOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQTdEODAxOUYxODgwRDY2RTAwMjZDMzlCIC8q
IGJ1aWx0aW5zICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQlBN0Q4MDFBMDE4ODBENjZFMDAyNkMzOUIgLyogQXJyYXkucHJvdG90eXBlLmpzICovLAorCQkJ
CUE3RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwICovLAor
CQkJCUE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCAqLywK
KwkJCSk7CisJCQlwYXRoID0gYnVpbHRpbnM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwor
CQl9OwogLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYSGVhZGVyc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtNDYwNiwxMSArNDYzMiwxMSBAQAogCQkJCTg2QUREMTQ1
MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTVDRUVFMTUxODdGM0JBRDAwRTU1Qzk5IC8qIEluc3BlY3RvckFnZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk2NUMwMjg1RDE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmggaW4gSGVh
ZGVycyAqLywKLSAJCQkJMkE2ODI5NUIxODc1RjgwNTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJp
ZXIuaCBpbiBIZWFkZXJzICovLAotICAgICAgICAgICAgICAgIDJBNEVDOTBDMTg2MEQ2QzIwMDk0
Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTJBNjgyOTVC
MTg3NUY4MDUwMEI2QzNFMiAvKiBDb3B5V3JpdGVCYXJyaWVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkyQTRFQzkwQzE4NjBENkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGRTU5MzJBODE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTMyNDM5MzE4NTY5NzA5MDAyRUQ2OTIgLyogQ29kZUdlbmVy
YXRvckluc3BlY3RvclN0cmluZ3MucHkgaW4gSGVhZGVycyAqLywKLSAJCQkJQTUzMjQzOTIxODU2
OTcwOTAwMkVENjkyIC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkgaW4gSGVhZGVycyAqLywK
KwkJCQlBNTMyNDM5MjE4NTY5NzA5MDAyRUQ2OTIgLyogQ29kZUdlbmVyYXRvckluc3BlY3Rvci5w
eSBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTRGMTdFRTI3NDkwMEFCQjIxNyAvKiBUZW1wUmVn
aXN0ZXJTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MEU0QjY0MTg4MDlERDUwMDY4QTQ2RCAv
KiBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVCNThD
MTUxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC00NjIyLDcgKzQ2NDgsNyBAQAogCQkJCTBGODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBB
cnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUyOTE4N0NB
NUU2MDA4NDNCMTAgLyogaW5saW5lLWFuZC1taW5pZnktc3R5bGVzaGVldHMtYW5kLXNjcmlwdHMu
cHkgaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUyQjE4N0NBNzVCMDA4NDNCMTAgLyoganNtaW4u
cHkgaW4gSGVhZGVycyAqLywKLSAJCQkJQTUzMjQzOTgxODU2QTQ4OTAwMkVENjkyIC8qIEluc3Bl
Y3RvckpTLmpzb24gaW4gSGVhZGVycyAqLywKKwkJCQlBNTMyNDM5ODE4NTZBNDg5MDAyRUQ2OTIg
LyogSW5zcGVjdG9ySlMuanNvbiBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwRTJBMTg3Q0E3NTkw
MDg0M0IxMCAvKiB4eGQucGwgaW4gSGVhZGVycyAqLywKIAkJCQlGRUEwODYyMDE4MkI3QTA0MDBG
NkQ4NTEgLyogQnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzUxN0FEQjVG
MzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTQ3MzMsNyArNDc1
OSw3IEBACiAJCQkJQTFBMDA5QzAxODMxQTIyRDAwQ0Y4NzExIC8qIE1hY3JvQXNzZW1ibGVyQVJN
NjQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUM5REM1MTMyOERGODIwMDJCMkFENyAvKiBERkdC
eXRlQ29kZVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0ODUzMjgxODdERkRFQzAwODNC
Njg3IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5LmggaW4gSGVhZGVycyAqLywKLSAgICAgICAgICAg
ICAgICBBNTkzQ0Y4NzE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQTU5M0NGODcxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3Rv
ckFnZW50UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjU2QzM2MTYyN0IwQUQwMDdG
Mjc4MyAvKiBERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY3QjI5NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERGR0NhcGFiaWxpdGllcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NTgxNEVGOTBBMjAwQzcyNTMyIC8qIERGR0NGQVBo
YXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTQ4NzIsNiArNDg5OCw3IEBACiAJCQkJMEZFQTBBMUQx
NzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZFQTBBMUYxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBp
biBIZWFkZXJzICovLAogCQkJCUE1OTQ1NTkzMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9i
amVjdERlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3RDgwMUE5MTg4MEQ2QTgwMDI2
QzM5QiAvKiBKU0NCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMEExNzA1MTNE
QjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0ODUz
MkExODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292ZXJ5T3Bjb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkVBMEEyMzE3MDk2MDY5MDBCQjcyMkMgLyogRlRMQ29tbW9uVmFsdWVzLmggaW4gSGVh
ZGVycyAqLywKQEAgLTQ5NDYsNiArNDk3Myw3IEBACiAJCQkJQkMxOEM0MEYwRTE2RjVDRDAwQjM0
NDYwIC8qIElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyNUY4QkNFMTU3NTQ0QTkw
MDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdG
Mzk5MTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ0hlYWRlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTdEODAxQTUxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZCN0YzOUExNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nSGVhZGVy
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOUIxNUVEOEU0NjAwRjE2N0IyIC8q
IEluZGV4aW5nVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDRUZBQjAxODA1Q0E2RDAwNDcy
Q0U0IC8qIEluaXRpYWxpemVMTFZNLmggaW4gSGVhZGVycyAqLywKQEAgLTUyMTgsNiArNTI0Niw3
IEBACiAJCQkJQTUzMjQzODgxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckpTQmFja2VuZERp
c3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1NjBFMTZGNUNEMDBCMzQ0NjAg
LyogUHJvdGVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3NEMzM0IxNkFBMkQ5NTAwNjJGMDFE
IC8qIFByb3RvdHlwZU1hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTcxREE4MEYxODgwREJBQjAw
RDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQx
NENBN0REOTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdDMDA4Q0U3MTg3NjMxQjYwMDk1NUMyNCAvKiBNaWNyb3Rhc2suaCBpbiBIZWFk
ZXJzICovLApAQCAtNTgzNiw2ICs1ODY1LDcgQEAKIAkJCQlBN0Q4OUNGMjE3QTBCOENDMDA3NzNB
RDggLyogREZHQmFzaWNCbG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzBCMDgzMjE3QTBC
NzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3
RDg5Q0YzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlBN0Q4MDFBNDE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFi
bGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUM5REM0MTMyOERGODIwMDJCMkFENyAvKiBE
RkdCeXRlQ29kZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4MkUyMTE0MTcyQ0Uz
MDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRkZD
OTU3MTRFRjkwQTAwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTU4NTIsNiArNTg4Miw3IEBACiAJCQkJMEZGRkM5NTkxNEVGOTBBNjAwQzcyNTMyIC8qIERGR0NT
RVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkZDNzcyMTZFMTJGNzEwMDM4RDk3NiAv
KiBERkdEQ0VQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhGMkI5OTE3MkYwNEZGMDA3
REJEQTUgLyogREZHRGVzaXJlZElkZW50aWZpZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3
RDgwMUE4MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBNzNFMTMzMDE3OTYyNENEMDBFNERFQTggLyogREZHRGVzaXJlZFN0cnVjdHVyZUNoYWlu
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkMwRjdDRDE3QkJGQzVCMDA0NjRGRTQgLyogREZH
RGVzaXJlZFRyYW5zaXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRTg1MzRCMTcyM0NE
QTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC01OTc2LDcgKzYwMDcsNyBAQAogCQkJCTBGNkIxQ0M1MTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExV
bndpbmRJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOUQzMzlBMTgwM0FEQjcwMDczQzJC
QyAvKiBGVExTdGFja01hcHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMTYxNzA2QkI5
MDAwQkI3MjJDIC8qIEZUTFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAotIAkJCQk3QzAwOENEMjE4
NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9taXNlRnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTdDMDA4Q0QyMTg2RjhBOTMwMDk1NUMyNCAvKiBKU1Byb21pc2VGdW5jdGlvbnMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEY2QjFDQjUxODVGQzlFOTAwODQ1RDk3IC8qIEZUTEpTQ2FsbC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJFMTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMVGh1
bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1OTNDRjdDMTg0MDM2MDMwMEJGQ0UyNyAvKiBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjNlYjQyZjVjYzQzM2YxNjM2MzQzYmZjOTgyYWEyYWFmYjMzNmU5NDkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzCkBA
IC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCitmdW5jdGlvbiBldmVyeShjYWxsYmFjayAvKiwgdGhpc0FyZyAqLykgeworICAgICJ1c2Ug
c3RyaWN0IjsKKyAgICBpZiAodGhpcyA9PT0gbnVsbCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBl
RXJyb3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUg
bnVsbCIpOworICAgIAorICAgIGlmICh0aGlzID09PSB1bmRlZmluZWQpCisgICAgICAgIHRocm93
IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhp
c3wgbm90IGJlIHVuZGVmaW5lZCIpOworICAgIAorICAgIHZhciBhcnJheSA9IEBPYmplY3QodGhp
cyk7CisgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCA+Pj4gMDsKKyAgICAKKyAgICBpZiAo
dHlwZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVF
cnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIp
OworCisgICAgdmFyIHRoaXNBcmcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sx
XSA6IHVuZGVmaW5lZDsKKyAgICAKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsr
KSB7CisgICAgICAgIGlmICghKGkgaW4gYXJyYXkpKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIGlmICghY2FsbGJhY2suQGNhbGwodGhpc0FyZywgYXJyYXlbaV0sIGksIGFycmF5KSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7
Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
RXhlY3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5F
eGVjdXRhYmxlcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQxZGJiNWY5MjI1ZTI4YTEyZWQzZDE3OThmZjE3
NjhlNDM2NzFhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKworI2luY2x1ZGUgIkV4ZWN1dGFibGUu
aCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGlu
ZXMuaCIKKyNpbmNsdWRlICJQYXJzZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0J1aWx0aW5F
eGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKFZNJiB2bSkKKyAgICA6IG1fdm0odm0pCisj
ZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5h
bWUsIGxlbmd0aCkgLCBtXyMjbmFtZSMjU291cmNlKG1ha2VTb3VyY2UoU3RyaW5nSW1wbDo6Y3Jl
YXRlRnJvbUxpdGVyYWwoc18jI25hbWUsIGxlbmd0aCksIFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21M
aXRlcmFsKCI8YnVpbHRpbj4iKSkpCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTihJTklUSUFMSVpF
X0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgRVhQT1NFX0JVSUxUSU5fU1RSSU5HUwor
eworfQorCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpj
cmVhdGVCdWlsdGluRXhlY3V0YWJsZShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGNvbnN0IElk
ZW50aWZpZXImIG5hbWUpCit7CisgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZTsKKyAgICBQYXJzZXJFcnJvciBlcnJvcjsKKyAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+
IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oJm1fdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmll
cigpLCBKU1BhcnNlQnVpbHRpbiwgSlNQYXJzZVByb2dyYW1Db2RlLCBlcnJvciwgJnBvc2l0aW9u
QmVmb3JlTGFzdE5ld2xpbmUpOworCisgICAgaWYgKCFwcm9ncmFtKSB7CisgICAgICAgIGRhdGFM
b2coIkZhdGFsIGVycm9yIGNvbXBpbGluZyBidWlsdGluIGZ1bmN0aW9uICciLCBuYW1lLnN0cmlu
ZygpLCAiJzogIiwgZXJyb3IubV9tZXNzYWdlKTsKKyAgICAgICAgQ1JBU0goKTsKKyAgICB9CisK
KyAgICBTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVtZW50ID0gcHJvZ3JhbS0+c2luZ2xlU3RhdGVt
ZW50KCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudCk7CisgICAgUkVMRUFTRV9B
U1NFUlQoZXhwclN0YXRlbWVudC0+aXNFeHByU3RhdGVtZW50KCkpOworICAgIEV4cHJlc3Npb25O
b2RlKiBmdW5jRXhwciA9IHN0YXRpY19jYXN0PEV4cHJTdGF0ZW1lbnROb2RlKj4oZXhwclN0YXRl
bWVudCktPmV4cHIoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwcik7CisgICAgUkVMRUFT
RV9BU1NFUlQoZnVuY0V4cHItPmlzRnVuY0V4cHJOb2RlKCkpOworICAgIEZ1bmN0aW9uQm9keU5v
ZGUqIGJvZHkgPSBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihmdW5jRXhwciktPmJvZHkoKTsK
KyAgICBSRUxFQVNFX0FTU0VSVCghcHJvZ3JhbS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7Cisg
ICAgCisgICAgYm9keS0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7
CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keS0+aWRl
bnQoKS5pc051bGwoKSk7CisgICAgCisgICAgLy8gVGhpcyBmdW5jdGlvbiBhc3N1bWVzIGFuIGlu
cHV0IHN0cmluZyB0aGF0IHdvdWxkIHJlc3VsdCBpbiBhIHNpbmdsZSBhbm9ueW1vdXMgZnVuY3Rp
b24gZXhwcmVzc2lvbi4KKyAgICBib2R5LT5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZUxh
c3ROZXdsaW5lKTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5KTsKKyAgICBmb3IgKGNvbnN0IGF1
dG8mIGNsb3NlZFZhcmlhYmxlIDogcHJvZ3JhbS0+Y2xvc2VkVmFyaWFibGVzKCkpIHsKKyAgICAg
ICAgaWYgKGNsb3NlZFZhcmlhYmxlID09IG1fdm0ucHJvcGVydHlOYW1lcy0+YXJndW1lbnRzLmlt
cGwoKSkKKyAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBpZiAoY2xvc2VkVmFy
aWFibGUgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLmltcGwoKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBSRUxFQVNFX0FTU0VSVChjbG9zZWRWYXJpYWJs
ZS0+aXNFbXB0eVVuaXF1ZSgpKTsKKyAgICB9CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVh
dGUoJm1fdm0sIHNvdXJjZSwgYm9keSwgdHJ1ZSwgVW5saW5rZWRCdWlsdGluRnVuY3Rpb24pOwor
ICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+bV9uYW1lVmFsdWUuc2V0KG1fdm0sIGZ1bmN0aW9uRXhl
Y3V0YWJsZSwganNTdHJpbmcoJm1fdm0sIG5hbWUuc3RyaW5nKCkpKTsKKyAgICByZXR1cm4gZnVu
Y3Rpb25FeGVjdXRhYmxlOworfQorCisjZGVmaW5lIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVT
KG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpuYW1lIyNFeGVjdXRhYmxlKCkgXAore1wKKyAgICBpZiAo
IW1fIyNuYW1lIyNFeGVjdXRhYmxlKVwKKyAgICAgICAgbV8jI25hbWUjI0V4ZWN1dGFibGUgPSBj
cmVhdGVCdWlsdGluRXhlY3V0YWJsZShtXyMjbmFtZSMjU291cmNlLCBtX3ZtLnByb3BlcnR5TmFt
ZXMtPmZ1bmN0aW9uTmFtZSk7XAorICAgIHJldHVybiBtXyMjbmFtZSMjRXhlY3V0YWJsZS5nZXQo
KTtcCit9CitKU0NfRk9SRUFDSF9CVUlMVElOKERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKQor
I3VuZGVmIEVYUE9TRV9CVUlMVElOX1NPVVJDRVMKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5YTE5
ZTI2MTUwNzk0YTY2OWVjOThlMzk5YmY2N2Y3ZjcxMDY0MTkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKQEAgLTAs
MCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgQnVpbHRpbkV4ZWN1dGFibGVzX2gKKyNkZWZpbmUgQnVpbHRpbkV4ZWN1dGFibGVz
X2gKKworI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisjaW5jbHVkZSAiU291cmNlQ29kZS5oIgor
I2luY2x1ZGUgIldlYWsuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7CitjbGFzcyBJZGVu
dGlmaWVyOworY2xhc3MgVk07CisKK2NsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlcyB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NPd25QdHI8QnVpbHRpbkV4ZWN1dGFibGVzPiBjcmVhdGUoVk0mIHZt
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBCdWlsdGluRXhlY3V0YWJsZXMo
dm0pKTsKKyAgICB9CisgICAgCisjZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKG5h
bWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
bmFtZSMjRXhlY3V0YWJsZSgpOyBcCitjb25zdCBTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSB7
IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CisgICAgCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJ
TihFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJTl9TT1VS
Q0VTCisgICAgCitwcml2YXRlOgorICAgIEJ1aWx0aW5FeGVjdXRhYmxlcyhWTSYpOworICAgIFZN
JiBtX3ZtOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVCdWlsdGluRXhl
Y3V0YWJsZShjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYpOworI2RlZmluZSBE
RUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgp
XAorICAgIFNvdXJjZUNvZGUgbV8jI25hbWUjI1NvdXJjZTsgXAorICAgIFdlYWs8VW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU+IG1fIyNuYW1lIyNFeGVjdXRhYmxlOworICAgIEpTQ19GT1JFQUNI
X0JVSUxUSU4oREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIERFQ0xBUkVf
QlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMjYzZWM3Y2FkZjRmNzljYTgx
MDI0NDFlNjJiZjJhMDViNWRkYzNmMi4uNzUxNTA2NTQyMzc2ZDdlZGM1OTlhYTAwZjliMTI2ODVj
ZGEzNTJjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKQEAgLTQzLDExICs0MywxMyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVFN0
dWJzLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5o
IgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5o
IgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50Lmgi
CiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk5hdGl2ZUVycm9y
Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUg
Ik9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmgiCiAjaW5j
bHVkZSAiUmVkdWNlV2hpdGVzcGFjZS5oIgpAQCAtMTU2OSw3ICsxNTcxLDcgQEAgQ29kZUJsb2Nr
OjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENv
ZGVCbG9jayogdW5saW4KIAogICAgIHNldENvbnN0YW50UmVnaXN0ZXJzKHVubGlua2VkQ29kZUJs
b2NrLT5jb25zdGFudFJlZ2lzdGVycygpKTsKICAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPnVz
ZXNHbG9iYWxPYmplY3QoKSkKLSAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1t1bmxpbmtlZENv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0UmVnaXN0ZXIoKS5vZmZzZXQoKV0uc2V0KCptX3ZtLCBvd25l
ckV4ZWN1dGFibGUsIG1fZ2xvYmFsT2JqZWN0LmdldCgpKTsKKyAgICAgICAgbV9jb25zdGFudFJl
Z2lzdGVyc1t1bmxpbmtlZENvZGVCbG9jay0+Z2xvYmFsT2JqZWN0UmVnaXN0ZXIoKS50b0NvbnN0
YW50SW5kZXgoKV0uc2V0KCptX3ZtLCBvd25lckV4ZWN1dGFibGUsIG1fZ2xvYmFsT2JqZWN0Lmdl
dCgpKTsKICAgICBtX2Z1bmN0aW9uRGVjbHMucmVzaXplVG9GaXQodW5saW5rZWRDb2RlQmxvY2st
Pm51bWJlck9mRnVuY3Rpb25EZWNscygpKTsKICAgICBmb3IgKHNpemVfdCBjb3VudCA9IHVubGlu
a2VkQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSwgaSA9IDA7IGkgPCBjb3VudDsg
KytpKSB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1
dGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDY4YmMwMzc5ZjU3NDRjOWE4Zjc0
MzFkYjY0ZjhhYjU0ZTZlMTA1M2YuLjQ5OTVjNTJjZjhiMmIxYjRkNjI4MDQ1M2VlZDI3Yzc3NGE0
OTU1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAg
LTU2LDcgKzU2LDYgQEAKICNpbmNsdWRlICJIYW5kbGVySW5mby5oIgogI2luY2x1ZGUgIk9iamVj
dEFsbG9jYXRpb25Qcm9maWxlLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgotI2luY2x1ZGUgIk9w
ZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQdXRQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJJbnN0
cnVjdGlvbi5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2lu
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tK
ZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCmluZGV4IDk4NmUwM2QwY2JhNzE4NWIzOWNlZTAyM2Y0
YWI2YmM5YjhjY2I2ZTQuLjcwZWY5YjQyOTAxYzA1OGJjNzJjOWRiOTJkY2MzM2Q1M2Q2YmFhYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVC
bG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcApAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0NvbW1v
bi5oIgogI2luY2x1ZGUgIkRGR0V4aXRQcm9maWxlLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5l
cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggMWRmYjVhYzZhZDkwOTNmOGY4
MTEwMWVmN2YyZTYxMjMxMWFjMTkzOS4uNDMzOTBkOTY1ZmM1MDM0MDE2ZjdiZmZmMjNlNjhiYjFl
MDU0NTUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suY3BwCkBAIC00OSw5ICs0OSw5IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxp
bmtlZFByb2dyYW1Db2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkUHJvZ3JhbUNvZGVCbG9j
ayIsCiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRFdmFsQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJV
bmxpbmtlZEV2YWxDb2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKFVubGlua2VkRXZhbENvZGVCbG9jaykgfTsKIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
IiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKSB9OwogCi1zdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2Vu
ZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhWTSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVTcGVjaWFsaXphdGlv
bktpbmQga2luZCwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2Zp
bGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2sqIGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIGtpbmQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVy
TW9kZSBwcm9maWxlck1vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFy
c2VyRXJyb3ImIGVycm9yKQogewotICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBib2R5ID0g
cGFyc2U8RnVuY3Rpb25Cb2R5Tm9kZT4oJnZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPnBhcmFtZXRl
cnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgp
ID8gSlNQYXJzZVN0cmljdCA6IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VGdW5jdGlvbkNvZGUsIGVy
cm9yKTsKKyAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSA9IHBhcnNlPEZ1bmN0aW9u
Qm9keU5vZGU+KCZ2bSwgc291cmNlLCBleGVjdXRhYmxlLT5wYXJhbWV0ZXJzKCksIGV4ZWN1dGFi
bGUtPm5hbWUoKSwgZXhlY3V0YWJsZS0+dG9TdHJpY3RuZXNzKCksIEpTUGFyc2VGdW5jdGlvbkNv
ZGUsIGVycm9yKTsKIAogICAgIGlmICghYm9keSkgewogICAgICAgICBBU1NFUlQoZXJyb3IubV90
eXBlICE9IFBhcnNlckVycm9yOjpFcnJvck5vbmUpOwpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhWTSYg
dm0sIFVubGlua2VkRnVuYwogICAgIGJvZHktPmZpbmlzaFBhcnNpbmcoZXhlY3V0YWJsZS0+cGFy
YW1ldGVycygpLCBleGVjdXRhYmxlLT5uYW1lKCksIGV4ZWN1dGFibGUtPmZ1bmN0aW9uTmFtZUlz
SW5TY29wZVRvZ2dsZSgpKTsKICAgICBleGVjdXRhYmxlLT5yZWNvcmRQYXJzZShib2R5LT5mZWF0
dXJlcygpLCBib2R5LT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKICAgICAKLSAgICBVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpj
cmVhdGUoJnZtLCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFibGVJbmZvKGJvZHktPm5lZWRzQWN0aXZh
dGlvbigpLCBib2R5LT51c2VzRXZhbCgpLCBib2R5LT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBD
b2RlRm9yQ29uc3RydWN0KSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0
ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLCBF
eGVjdXRhYmxlSW5mbyhib2R5LT5uZWVkc0FjdGl2YXRpb24oKSwgYm9keS0+dXNlc0V2YWwoKSwg
Ym9keS0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25L
aW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uKSk7CiAgICAgT3duUHRyPEJ5dGVjb2RlR2Vu
ZXJhdG9yPiBnZW5lcmF0b3IoYWRvcHRQdHIobmV3IEJ5dGVjb2RlR2VuZXJhdG9yKHZtLCBib2R5
LmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlKSkpOwogICAgIGVycm9y
ID0gZ2VuZXJhdG9yLT5nZW5lcmF0ZSgpOwogICAgIGJvZHktPmRlc3Ryb3lEYXRhKCk7CkBAIC04
MiwxMyArODIsMTQgQEAgdW5zaWduZWQgVW5saW5rZWRDb2RlQmxvY2s6OmFkZE9yRmluZENvbnN0
YW50KEpTVmFsdWUgdikKICAgICByZXR1cm4gYWRkQ29uc3RhbnQodik7CiB9CiAKLVVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9k
eU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSkKK1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUs
IGJvb2wgaXNGcm9tR2xvYmFsQ29kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCkKICAgICA6
IEJhc2UoKnZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX251bUNhcHR1cmVkVmFyaWFibGVzKG5vZGUt
PmNhcHR1cmVkVmFyaWFibGVDb3VudCgpKQogICAgICwgbV9mb3JjZVVzZXNBcmd1bWVudHMobm9k
ZS0+dXNlc0FyZ3VtZW50cygpKQogICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChub2RlLT5pc1N0
cmljdE1vZGUoKSkKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMobm9kZS0+aGFzQ2FwdHVy
ZWRWYXJpYWJsZXMoKSkKICAgICAsIG1faXNGcm9tR2xvYmFsQ29kZShpc0Zyb21HbG9iYWxDb2Rl
KQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihraW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0
aW9uKQogICAgICwgbV9uYW1lKG5vZGUtPmlkZW50KCkpCiAgICAgLCBtX2luZmVycmVkTmFtZShu
b2RlLT5pbmZlcnJlZE5hbWUoKSkKICAgICAsIG1fcGFyYW1ldGVycyhub2RlLT5wYXJhbWV0ZXJz
KCkpCkBAIC0xNjYsNyArMTY3LDcgQEAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNvZGVCbG9ja0ZvcihWTSYgdm0sIGNvbnMKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCi0gICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0g
Z2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayh2bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlv
bktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CisgICAgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayh2bSwg
dGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJN
b2RlLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxp
bmtlZE5vcm1hbEZ1bmN0aW9uLCBlcnJvcik7CiAgICAgCiAgICAgaWYgKGVycm9yLm1fdHlwZSAh
PSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKQogICAgICAgICByZXR1cm4gMDsKQEAgLTIxMCw2ICsy
MTEsNyBAQCBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0qIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZVR5cGUgY29kZQogICAgICwgbV9pc1N0cmljdE1vZGUoaW5m
by5tX2lzU3RyaWN0TW9kZSkKICAgICAsIG1faXNDb25zdHJ1Y3RvcihpbmZvLm1faXNDb25zdHJ1
Y3RvcikKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMoZmFsc2UpCisgICAgLCBtX2lzQnVp
bHRpbkZ1bmN0aW9uKGluZm8ubV9pc0J1aWx0aW5GdW5jdGlvbikKICAgICAsIG1fZmlyc3RMaW5l
KDApCiAgICAgLCBtX2xpbmVDb3VudCgwKQogICAgICwgbV9lbmRDb2x1bW4oVUlOVF9NQVgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5o
CmluZGV4IGI5ZGFlMmQ1YzY5Yzc5Y2VhYWE4MDIzZDJhM2ExZjI2ZDQ2MDk0M2IuLmFiZjZjZjM1
YjkzMDZhNGY3YTMwMWFiMGRmNzY2NmVjNjEyZTM3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC02NiwyNiArNjYsMzUg
QEAgdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOwogdHlw
ZWRlZiB1bnNpZ25lZCBVbmxpbmtlZExMSW50Q2FsbExpbmtJbmZvOwogCiBzdHJ1Y3QgRXhlY3V0
YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29s
IHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yKQorICAgIEV4
ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlz
U3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKQog
ICAgICAgICA6IG1fbmVlZHNBY3RpdmF0aW9uKG5lZWRzQWN0aXZhdGlvbikKICAgICAgICAgLCBt
X3VzZXNFdmFsKHVzZXNFdmFsKQogICAgICAgICAsIG1faXNTdHJpY3RNb2RlKGlzU3RyaWN0TW9k
ZSkKICAgICAgICAgLCBtX2lzQ29uc3RydWN0b3IoaXNDb25zdHJ1Y3RvcikKKyAgICAgICAgLCBt
X2lzQnVpbHRpbkZ1bmN0aW9uKGlzQnVpbHRpbkZ1bmN0aW9uKQogICAgIHsKICAgICB9Ci0gICAg
Ym9vbCBtX25lZWRzQWN0aXZhdGlvbjsKLSAgICBib29sIG1fdXNlc0V2YWw7Ci0gICAgYm9vbCBt
X2lzU3RyaWN0TW9kZTsKLSAgICBib29sIG1faXNDb25zdHJ1Y3RvcjsKKyAgICBib29sIG1fbmVl
ZHNBY3RpdmF0aW9uIDogMTsKKyAgICBib29sIG1fdXNlc0V2YWwgOiAxOworICAgIGJvb2wgbV9p
c1N0cmljdE1vZGUgOiAxOworICAgIGJvb2wgbV9pc0NvbnN0cnVjdG9yIDogMTsKKyAgICBib29s
IG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOworfTsKKworZW51bSBVbmxpbmtlZEZ1bmN0aW9uS2lu
ZCB7CisgICAgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwKKyAgICBVbmxpbmtlZEJ1aWx0aW5GdW5j
dGlvbiwKIH07CiAKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGljIEpT
Q2VsbCB7CiBwdWJsaWM6CisgICAgZnJpZW5kIGNsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlczsKICAg
ICBmcmllbmQgY2xhc3MgQ29kZUNhY2hlOworICAgIGZyaWVuZCBjbGFzcyBWTTsKICAgICB0eXBl
ZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
Y3JlYXRlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlOb2Rl
KiBub2RlLCBib29sIGlzRnJvbUdsb2JhbENvZGUgPSBmYWxzZSkKKyAgICBzdGF0aWMgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSogbm9kZSwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlLCBVbmxp
bmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCkKICAgICB7Ci0gICAgICAgIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVhcCkpIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1
cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgaXNGcm9tR2xvYmFsQ29kZSk7CisgICAgICAgIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVhcCkpIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUu
Z2V0KCksIHNvdXJjZSwgbm9kZSwgaXNGcm9tR2xvYmFsQ29kZSwgdW5saW5rZWRGdW5jdGlvbktp
bmQpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oKnZtKTsKICAgICAgICAgcmV0
dXJuIGluc3RhbmNlOwogICAgIH0KQEAgLTk5LDYgKzEwOCwxNCBAQCBwdWJsaWM6CiAgICAgfQog
ICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0OwogICAgIGJvb2wgaXNJblN0cmljdENv
bnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0OyB9CisgICAgSlNQYXJz
ZXJTdHJpY3RuZXNzIHRvU3RyaWN0bmVzcygpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9p
c0J1aWx0aW5GdW5jdGlvbikKKyAgICAgICAgICAgIHJldHVybiBKU1BhcnNlQnVpbHRpbjsKKyAg
ICAgICAgaWYgKG1faXNJblN0cmljdENvbnRleHQpCisgICAgICAgICAgICByZXR1cm4gSlNQYXJz
ZVN0cmljdDsKKyAgICAgICAgcmV0dXJuIEpTUGFyc2VOb3JtYWw7CisgICAgfQogICAgIEZ1bmN0
aW9uTmFtZUlzSW5TY29wZVRvZ2dsZSBmdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGUoKSBjb25z
dCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZTsgfQogCiAgICAgdW5zaWdu
ZWQgZmlyc3RMaW5lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdExpbmVPZmZzZXQ7IH0K
QEAgLTE0Miw4ICsxNTksMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0lt
bW9ydGFsU3RydWN0dXJlID0gdHJ1ZTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCop
OwogCisgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWls
dGluRnVuY3Rpb247IH0KKwogcHJpdmF0ZToKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZShWTSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbkJvZHlOb2RlKiwg
Ym9vbCBpc0Zyb21HbG9iYWxDb2RlKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShW
TSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbkJvZHlOb2RlKiwgYm9v
bCBpc0Zyb21HbG9iYWxDb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCk7CiAgICAgV3JpdGVCYXJy
aWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fY29kZUJsb2NrRm9yQ2FsbDsKICAgICBX
cml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV9jb2RlQmxvY2tGb3JDb25z
dHJ1Y3Q7CiAKQEAgLTE1Miw2ICsxNzEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0luU3Ry
aWN0Q29udGV4dCA6IDE7CiAgICAgYm9vbCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIDogMTsKICAg
ICBib29sIG1faXNGcm9tR2xvYmFsQ29kZSA6IDE7CisgICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0
aW9uIDogMTsKIAogICAgIElkZW50aWZpZXIgbV9uYW1lOwogICAgIElkZW50aWZpZXIgbV9pbmZl
cnJlZE5hbWU7CkBAIC0zMTksNiArMzM5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNOdW1l
cmljQ29tcGFyZUZ1bmN0aW9uKGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKSB7IG1faXNO
dW1lcmljQ29tcGFyZUZ1bmN0aW9uID0gaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CiAgICAg
Ym9vbCBpc051bWVyaWNDb21wYXJlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzTnVtZXJp
Y0NvbXBhcmVGdW5jdGlvbjsgfQogCisgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KKyAgICAKICAgICB2b2lkIHNocmlua1Rv
Rml0KCkKICAgICB7CiAgICAgICAgIG1fanVtcFRhcmdldHMuc2hyaW5rVG9GaXQoKTsKQEAgLTUw
MCw2ICs1MjIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1N0cmljdE1vZGUgOiAxOwogICAg
IGJvb2wgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICBib29sIG1faGFzQ2FwdHVyZWRWYXJpYWJs
ZXMgOiAxOworICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CiAgICAgdW5zaWduZWQg
bV9maXJzdExpbmU7CiAgICAgdW5zaWduZWQgbV9saW5lQ291bnQ7CiAgICAgdW5zaWduZWQgbV9l
bmRDb2x1bW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDY4MTBhYjgwMDJjZTZiYjhkNzhlN2ZmMjIy
N2Y0YzZlYTdiNzU4YzIuLmVjNTIxYjUzMDQ2MzkyM2U3NGMwMTBmYTIxOGU1OWVkMmE5YTNjYWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0xNzUsNiArMTc1LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxp
bmtlZFAKICNlbmRpZgogICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKICAgICAsIG1fZXhw
cmVzc2lvblRvb0RlZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGZhbHNlKQog
ewogICAgIGlmIChtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKQogICAgICAgICBtX2NvZGVCbG9jay0+
c2V0TmVlZHNGdWxsU2NvcGVDaGFpbih0cnVlKTsKQEAgLTIyMiw3ICsyMjMsMTMgQEAgQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Cb2R5Tm9kZSog
ZnVuY3Rpb25Cb2R5LCBVbmwKICNlbmRpZgogICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkK
ICAgICAsIG1fZXhwcmVzc2lvblRvb0RlZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0
aW9uKGNvZGVCbG9jay0+aXNCdWlsdGluRnVuY3Rpb24oKSkKIHsKKyAgICBpZiAobV9pc0J1aWx0
aW5GdW5jdGlvbikgeworICAgICAgICBtX3Nob3VsZEVtaXRQcm9maWxlSG9va3MgPSBmYWxzZTsK
KyAgICAgICAgbV9zaG91bGRFbWl0RGVidWdIb29rcyA9IGZhbHNlOworICAgIH0KKwogICAgIGlm
IChtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKQogICAgICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNG
dWxsU2NvcGVDaGFpbih0cnVlKTsKIApAQCAtNDM4LDYgKzQ0NSw3IEBAIEJ5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5r
ZWRFdmFsQ29kCiAjZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAgICAgLCBt
X2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihmYWxz
ZSkKIHsKICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNGdWxsU2NvcGVDaGFpbih0cnVlKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCmluZGV4IDRlOWYyMTNjOWJmYTZjZjE5NGIxYTE0ZmU5MTllODMzMzdhZTM1ZDku
LjE1ODQyNzRiNzhlYTZjMGJkMGVmYjBiOTgyNWM4MThiZTBkYmMwNjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
QEAgLTQ2MSw3ICs0NjEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBzaG91bGRF
bWl0RGVidWdIb29rcygpIHsgcmV0dXJuIG1fc2hvdWxkRW1pdERlYnVnSG9va3M7IH0KICAgICAg
ICAgCiAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxv
Y2stPmlzU3RyaWN0TW9kZSgpOyB9Ci0KKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNCdWlsdGlu
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisgICAgICAg
IAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMYWJlbDsKICAgICAgICAgCkBA
IC01NDMsNyArNTQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbWFrZUZ1bmN0aW9uKEZ1bmN0aW9uQm9keU5vZGUqIGJv
ZHkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgYm9keSk7CisgICAgICAg
ICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Nj
b3BlTm9kZS0+c291cmNlKCksIGJvZHksIGZhbHNlLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5s
aW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uKTsKICAgICAgICAg
fQogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbml0TGF6eVJlZ2lzdGVyKFJlZ2lzdGVySUQq
KTsKQEAgLTY3Nyw2ICs2NzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIG1f
dXNlc0V4Y2VwdGlvbnM7CiAgICAgICAgIGJvb2wgbV9leHByZXNzaW9uVG9vRGVlcDsKKyAgICAg
ICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9uOwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAxZmZk
NGYzMTE4ODJkMGVlNWM1NTE0ZjViOGIyNTkzOWQ5NzVlMzc5Li42MmVjYTM2YTEwZDc3MDhhOTI4
ZDQzYWMwM2YyZmM4NjE1Y2VjYTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0yNiwxMCArMjYsMTAgQEAKIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCi0jaW5jbHVkZSAiTm9kZUNvbnN0
cnVjdG9ycy5oIgogCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJD
YWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkRl
YnVnZ2VyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAt
MzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJMYWJlbFNj
b3BlLmgiCiAjaW5jbHVkZSAiTGV4ZXIuaCIKKyNpbmNsdWRlICJOb2RlQ29uc3RydWN0b3JzLmgi
CiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUg
IlByb3BlcnR5TmFtZUFycmF5LmgiCkBAIC01MzUsMzYgKzUzNiwzOSBAQCBSZWdpc3RlcklEKiBD
YWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsCiAgICAgUmVmUHRyPExhYmVsPiBlbmQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsK
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2Up
OwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCks
IHN1YmV4cHJlc3Npb25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwotICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVt
cERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIG1faWRlbnQpOworICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERl
c3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuY2Fs
bCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0LCBmdW5jdGlvbi5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRKdW1w
SWZOb3RGdW5jdGlvbkNhbGwoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKKyAgICBi
b29sIGVtaXRDYWxsQ2hlY2sgPSAhZ2VuZXJhdG9yLmlzQnVpbHRpbkZ1bmN0aW9uKCk7CisgICAg
aWYgKGVtaXRDYWxsQ2hlY2spCisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rp
b25DYWxsKGZ1bmN0aW9uLmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7CisKICAgICB7CiAgICAgICAg
IGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpIHsK
ICAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIG9sZExpc3QgPSBtX2FyZ3MtPm1fbGlzdE5v
ZGU7CiAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGUt
Pm1fbmV4dDsKLQorICAgICAgICAgICAgCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
cmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRp
b24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1
bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2Rl
KGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG9sZExpc3QtPm1fZXhwcik7CiAgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5n
ZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5n
ZXQoKSk7Ci0KICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9sZExpc3Q7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9u
ID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFz
ZS5nZXQoKSk7CiAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJh
dG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVu
dHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0
ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOwogICAgICAg
ICB9CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOwotICAg
IHsKLSAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdz
KTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVy
KCksIGJhc2UuZ2V0KCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUu
Z2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMs
IGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgaWYgKGVtaXRDYWxsQ2hl
Y2spIHsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CisgICAgICAgIGdl
bmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOworICAgICAgICB7CisgICAgICAgICAg
ICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJh
c2UuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdl
dCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBk
aXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICB9CisgICAgICAgIGdl
bmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRM
YWJlbChlbmQuZ2V0KCkpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZS5nZXQoKTsKIH0KIApAQCAt
NTg1LDY1ICs1ODksNjcgQEAgUmVnaXN0ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICBSZWZQdHI8TGFi
ZWw+IGVuZCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBi
YXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYmFzZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHBy
ZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1
YmV4cHJlc3Npb25FbmQoKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uID0gZ2Vu
ZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5n
ZXQoKSwgbV9pZGVudCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uOwogICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9u
KGRzdCwgZnVuY3Rpb24uZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rp
b25BcHBseShmdW5jdGlvbi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkpOwotICAgIHsKLSAgICAgICAg
aWYgKG1heUJlQ2FsbCkgewotICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBt
X2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcikgewotICAgICAgICAgICAgICAgIEFyZ3VtZW50TGlz
dE5vZGUqIG9sZExpc3QgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7Ci0gICAgICAgICAgICAgICAgaWYg
KG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VS
VChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByLT5pc1NpbXBsZUFycmF5KCkpOwot
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5t
X25leHQpOwotICAgICAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBzdGF0aWNf
Y2FzdDxBcnJheU5vZGUqPihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByKS0+dG9B
cmd1bWVudExpc3QoZ2VuZXJhdG9yLnZtKCksIDAsIDApOwotICAgICAgICAgICAgICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVy
YXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAg
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdp
c3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3Rl
ZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fYXJn
cy0+bV9saXN0Tm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwotICAgICAgICAgICAg
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRN
b3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJn
cyk7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRz
LnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwotICAgICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwg
Tm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCks
IGRpdm90RW5kKCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtX2FyZ3Mt
Pm1fbGlzdE5vZGUgPSBvbGRMaXN0OworICAgIGJvb2wgZW1pdENhbGxDaGVjayA9ICFnZW5lcmF0
b3IuaXNCdWlsdGluRnVuY3Rpb24oKTsKKyAgICBpZiAoZW1pdENhbGxDaGVjaykgeworICAgICAg
ICBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0
aW9uKGRzdCksIGJhc2UuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYXBwbHkpOwor
ICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHkoZnVuY3Rpb24uZ2V0
KCksIHJlYWxDYWxsLmdldCgpKTsKKyAgICB9CisgICAgaWYgKG1heUJlQ2FsbCkgeworICAgICAg
ICBpZiAobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKSB7
CisgICAgICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3RO
b2RlOworICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KSB7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHItPmlz
U2ltcGxlQXJyYXkoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5v
ZGUtPm1fbmV4dC0+bV9uZXh0KTsKKyAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUg
PSBzdGF0aWNfY2FzdDxBcnJheU5vZGUqPihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9l
eHByKS0+dG9Bcmd1bWVudExpc3QoZ2VuZXJhdG9yLnZtKCksIDAsIDApOworICAgICAgICAgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUo
Z2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rl
cigpLCBvbGRMaXN0LT5tX2V4cHIpOworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2Fs
bChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rp
b24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9
IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwogICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBE
ZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKICAgICAgICAgICAgICAgICBDYWxsQXJndW1l
bnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgICAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5l
ZCgpKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50
aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKICAgICAgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0g
b2xkTGlzdDsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1f
bGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQpOwotICAgICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHByb2ZpbGVIb29rUmVnaXN0ZXI7Ci0gICAgICAgICAgICBpZiAoZ2Vu
ZXJhdG9yLnNob3VsZEVtaXRQcm9maWxlSG9va3MoKSkKLSAgICAgICAgICAgICAgICBwcm9maWxl
SG9va1JlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0
b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHRoaXNSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2FyZ3MtPm1f
bGlzdE5vZGUtPm1fZXhwcik7Ci0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXJnc1Jl
Z2lzdGVyOwotICAgICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogYXJncyA9IG1fYXJncy0+bV9s
aXN0Tm9kZS0+bV9uZXh0OwotICAgICAgICAgICAgaWYgKGFyZ3MtPm1fZXhwci0+aXNSZXNvbHZl
Tm9kZSgpICYmIGdlbmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHN0YXRpY19jYXN0PFJl
c29sdmVOb2RlKj4oYXJncy0+bV9leHByKS0+aWRlbnRpZmllcigpKSkKLSAgICAgICAgICAgICAg
ICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IudW5jaGVja2VkUmVnaXN0ZXJGb3JBcmd1bWVudHMo
KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5l
cmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKLQotICAgICAgICAgICAgLy8gRnVuY3Rpb24u
cHJvdG90eXBlLmFwcGx5IGlnbm9yZXMgZXh0cmEgYXJndW1lbnRzLCBidXQgd2Ugc3RpbGwKLSAg
ICAgICAgICAgIC8vIG5lZWQgdG8gZXZhbHVhdGUgdGhlbSBmb3Igc2lkZSBlZmZlY3RzLgotICAg
ICAgICAgICAgd2hpbGUgKChhcmdzID0gYXJncy0+bV9uZXh0KSkKLSAgICAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKLQotICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRDYWxsVmFyYXJncyhyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCB0
aGlzUmVnaXN0ZXIuZ2V0KCksIGFyZ3NSZWdpc3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpLCBwcm9maWxlSG9va1JlZ2lzdGVyLmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCks
IGRpdm90RW5kKCkpOworICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdl
bmVyYXRvciwgbV9hcmdzKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJn
dW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7CiAgICAgICAgIH0KLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQo
KSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBt
X2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBw
cm9maWxlSG9va1JlZ2lzdGVyOworICAgICAgICBpZiAoZ2VuZXJhdG9yLnNob3VsZEVtaXRQcm9m
aWxlSG9va3MoKSkKKyAgICAgICAgICAgIHByb2ZpbGVIb29rUmVnaXN0ZXIgPSBnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24g
PSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNl
LmdldCgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNSZWdpc3RlciA9IGdlbmVy
YXRvci5lbWl0Tm9kZShtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcik7CisgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBhcmdzUmVnaXN0ZXI7CisgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIGFy
Z3MgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKKyAgICAgICAgaWYgKGFyZ3MtPm1fZXhw
ci0+aXNSZXNvbHZlTm9kZSgpICYmIGdlbmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHN0
YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oYXJncy0+bV9leHByKS0+aWRlbnRpZmllcigpKSkKKyAg
ICAgICAgICAgIGFyZ3NSZWdpc3RlciA9IGdlbmVyYXRvci51bmNoZWNrZWRSZWdpc3RlckZvckFy
Z3VtZW50cygpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5l
cmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKKworICAgICAgICAvLyBGdW5jdGlvbi5wcm90
b3R5cGUuYXBwbHkgaWdub3JlcyBleHRyYSBhcmd1bWVudHMsIGJ1dCB3ZSBzdGlsbAorICAgICAg
ICAvLyBuZWVkIHRvIGV2YWx1YXRlIHRoZW0gZm9yIHNpZGUgZWZmZWN0cy4KKyAgICAgICAgd2hp
bGUgKChhcmdzID0gYXJncy0+bV9uZXh0KSkKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9k
ZShhcmdzLT5tX2V4cHIpOworCisgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbFZhcmFyZ3MocmV0
dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBh
cmdzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcHJvZmlsZUhvb2tS
ZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICB9
Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChyZWFsQ2FsbC5nZXQoKSk7Ci0gICAgeworICAgIGlm
IChlbWl0Q2FsbENoZWNrKSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkp
OworICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKICAgICAgICAg
Q2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0
KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0
aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRp
dm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5k
LmdldCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0KCkpOwogICAg
IHJldHVybiByZXR1cm5WYWx1ZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0
ZV9oYXNoX3RhYmxlCmluZGV4IDM5Nzk3NmIwNmM3YTliNTgzNjMzMjkwMGE2ZWJiOTNlYzY4Yjc0
ODYuLmNhZDY1YmM0Y2M4ODhlMzE0Zjg4ZDY2NWRkNGE2ZTY0NWEwOWEzNTUgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUKQEAgLTI4OSw3ICsyODksMTcgQEAgc3ViIG91
dHB1dCgpIHsKICAgICAgICAgICAgICRpbnRyaW5zaWMgPSAiUmVnRXhwVGVzdEludHJpbnNpYyIg
aWYgKCRrZXkgZXEgInRlc3QiKTsKICAgICAgICAgfQogCisgICAgICAgIGlmICgkdmFsdWVzWyRp
XXsidHlwZSJ9IGVxICJGdW5jdGlvbiIpICB7CisgICAgICAgICAgICBteSAkdGFibGVIZWFkID0g
JG5hbWU7CisgICAgICAgICAgICAkdGFibGVIZWFkID1+IHMvVGFibGUkLy87CisgICAgICAgICAg
ICBwcmludCAiICNpZiBKU0NfQlVJTFRJTl9FWElTVFMoIiAuIHVjKCR0YWJsZUhlYWQgLiAka2V5
KSAuIilcbiI7CisgICAgICAgICAgICBwcmludCAiICAgeyBcIiRrZXlcIiwgKCgkYXR0cnNbJGld
KSAmIH5GdW5jdGlvbikgfCBCdWlsdGluLCAkaW50cmluc2ljLCAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8QnVpbHRpbkdlbmVyYXRvcj4oIiAuICR0YWJsZUhlYWQgLiB1Y2ZpcnN0KCRrZXkpIC4gIkNv
ZGVHZW5lcmF0b3IpLCAoaW50cHRyX3QpJHNlY29uZFZhbHVlIH0sXG4iOworICAgICAgICAgICAg
cHJpbnQgIiAjZWxzZVxuIgorICAgICAgICB9CiAgICAgICAgIHByaW50ICIgICB7IFwiJGtleVwi
LCAkYXR0cnNbJGldLCAkaW50cmluc2ljLCAoaW50cHRyX3QpIiAuICRmaXJzdENhc3RTdHIgLiAi
KCRmaXJzdFZhbHVlKSwgKGludHB0cl90KSIgLiAkc2Vjb25kQ2FzdFN0ciAuICIoJHNlY29uZFZh
bHVlKSB9LFxuIjsKKyAgICAgICAgaWYgKCR2YWx1ZXNbJGldeyJ0eXBlIn0gZXEgIkZ1bmN0aW9u
IikgIHsKKyAgICAgICAgICAgIHByaW50ICIgI2VuZGlmXG4iCisgICAgICAgIH0KICAgICAgICAg
JGkrKzsKICAgICB9CiAgICAgcHJpbnQgIiAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIDAsIDAgfVxu
IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9taW5hdG9ycy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWluYXRvcnMuY3BwCmluZGV4IGE1
YWU2MTRiOTE5YjBmZDQzNDgyZDAxNWNjMjk1MDg0MGU1NGIyNjEuLjIwMDk2ZTczYjM1MTU5Yzc0
MzRiZDI3YWI2ZjYzMzM3ZmU5ZGY0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRG9taW5hdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb21pbmF0b3JzLmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiREZHRG9taW5hdG9ycy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVz
LmgiCiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAKaW5kZXggMmZmMGMzNDE0NmUyYzBiYTJmZjc2YzRkM2Y3YzQ2YmEz
ZTI1NTE0Ny4uOTA0NGNkYzZiOGMzYWQ0YTFlOTQxODhkZDFkMGUyMDBlNjlmYjk5YSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC00OCw2ICs0OCw3
IEBACiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRl
ICJKU05hbWVTY29wZS5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUg
Ik5hbWVJbnN0YW5jZS5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVk
ZSAiT3BlcmF0aW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVy
YXRlLWpzLWJ1aWx0aW5zIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0
aW5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmVlZTFjN2E3Y2NkZDkzNzY5MjBlNzZkN2ZlOGQzMGFmOTU1ZjMxYTYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtanMtYnVp
bHRpbnMKQEAgLTAsMCArMSwzMDQgQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisjIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisjIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisjIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyMgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CitpbXBvcnQgZmlsZWNtcAoraW1wb3J0IGZubWF0Y2gKK2ltcG9ydCBvcworaW1wb3J0IHJlCitp
bXBvcnQgc2h1dGlsCitpbXBvcnQgc3lzCitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBqc29uCisK
K2NvcHlyaWdodFRleHQgPSAiIiIgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqL1xuCisiIiIKKworZ2VuZXJhdG9yU3RyaW5nID0gIi8qIEdlbmVyYXRlZCBieSAlcyBkbyBu
b3QgaGFuZCBlZGl0LiAqL1xuIiAlIG9zLnBhdGguYmFzZW5hbWUoX19maWxlX18pCisKK2Z1bmN0
aW9uSGVhZFJlZ0V4cCA9IHJlLmNvbXBpbGUociJmdW5jdGlvblxzK1x3K1xzKlwoLio/XCkiLCBy
ZS5NVUxUSUxJTkUgfCByZS5TKQorZnVuY3Rpb25OYW1lUmVnRXhwID0gcmUuY29tcGlsZShyImZ1
bmN0aW9uXHMrKFx3KylccypcKCIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitmdW5jdGlvblBhcmFt
ZXRlckZpbmRlciA9IHJlLmNvbXBpbGUociJeZnVuY3Rpb25ccysoPzpcdyspXHMqXCgoKD86XHMq
XHcrKT9ccyooPzpccyosXHMqXHcrKSopP1wpIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKKworbXVs
dGlsaW5lQ29tbWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJcL1wqLio/XCpcLyIsIHJlLk1VTFRJ
TElORSB8IHJlLlMpCitzaW5nbGVMaW5lQ29tbWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJcL1wv
Lio/XG4iLCByZS5NVUxUSUxJTkUgfCByZS5TKQorCitkZWYgZ2V0Q29weXJpZ2h0KHNvdXJjZSk6
CisgICAgY29weXJpZ2h0QmxvY2sgPSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLmZpbmRhbGwoc291
cmNlKVswXQorICAgIGNvcHlyaWdodEJsb2NrID0gY29weXJpZ2h0QmxvY2tbOmNvcHlyaWdodEJs
b2NrLmluZGV4KCJSZWRpc3RyaWJ1dGlvbiIpXQorICAgIGNvcHlSaWdodExpbmVzID0gW10KKwor
ICAgIGZvciBsaW5lIGluIGNvcHlyaWdodEJsb2NrLnNwbGl0KCJcbiIpOgorICAgICAgICBsaW5l
ID0gbGluZS5yZXBsYWNlKCIvKiIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIq
LyIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIqIiwgIiIpCisgICAgICAgIGxp
bmUgPSBsaW5lLnJlcGxhY2UoIkNvcHlyaWdodCIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5y
ZXBsYWNlKCJjb3B5cmlnaHQiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKEMp
IiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIihjKSIsICIiKQorICAgICAgICBs
aW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgIGlmIGxlbihsaW5lKSA9PSAwOgorICAgICAgICAg
ICAgY29udGludWUKKworICAgICAgICBjb3B5UmlnaHRMaW5lcy5hcHBlbmQobGluZSkKKyAgICAK
KyAgICByZXR1cm4gbGlzdChzZXQoY29weVJpZ2h0TGluZXMpKQorCisKKworZGVmIGdldEZ1bmN0
aW9ucyhzb3VyY2UpOgorCisgICAgc291cmNlID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5zdWIo
Ii8qKi8iLCBzaW5nbGVMaW5lQ29tbWVudFJlZ0V4cC5zdWIoIi8vXG4iLCBzb3VyY2UpKQorCisg
ICAgbWF0Y2hlcyA9IFsgZiBmb3IgZiBpbiBmdW5jdGlvbkhlYWRSZWdFeHAuZmluZGl0ZXIoc291
cmNlKV0KKyAgICBmdW5jdGlvbkJvdW5kcyA9IFtdCisgICAgc3RhcnQgPSAwCisgICAgZW5kID0g
MAorICAgIGZvciBtYXRjaCBpbiBtYXRjaGVzOgorICAgICAgICBzdGFydCA9IG1hdGNoLnN0YXJ0
KCkKKyAgICAgICAgaWYgc3RhcnQgPCBlbmQ6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAg
ICBlbmQgPSBtYXRjaC5lbmQoKQorICAgICAgICB3aGlsZSBzb3VyY2VbZW5kXSAhPSAneyc6Cisg
ICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgIGRlcHRoID0gMQorICAgICAgICBlbmQg
PSBlbmQgKyAxCisgICAgICAgIHdoaWxlIGRlcHRoID4gMDoKKyAgICAgICAgICAgIGlmIHNvdXJj
ZVtlbmRdID09ICd7JzoKKyAgICAgICAgICAgICAgICBkZXB0aCA9IGRlcHRoICsgMQorICAgICAg
ICAgICAgZWxpZiBzb3VyY2VbZW5kXSA9PSAnfSc6CisgICAgICAgICAgICAgICAgZGVwdGggPSBk
ZXB0aCAtIDEKKyAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgZnVuY3Rpb25Cb3Vu
ZHMuYXBwZW5kKChzdGFydCwgZW5kKSkKKworICAgIGZ1bmN0aW9ucyA9IFtzb3VyY2Vbc3RhcnQ6
ZW5kXS5zdHJpcCgpIGZvciAoc3RhcnQsIGVuZCkgaW4gZnVuY3Rpb25Cb3VuZHNdCisgICAgcmVz
dWx0ID0gW10KKyAgICBmb3IgZnVuY3Rpb24gaW4gZnVuY3Rpb25zOgorICAgICAgICBmdW5jdGlv
biA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAuc3ViKCIiLCBmdW5jdGlvbikKKyAgICAgICAgZnVu
Y3Rpb25OYW1lID0gZnVuY3Rpb25OYW1lUmVnRXhwLmZpbmRhbGwoZnVuY3Rpb24pWzBdCisgICAg
ICAgIGZ1bmN0aW9uUGFyYW1ldGVycyA9IGZ1bmN0aW9uUGFyYW1ldGVyRmluZGVyLmZpbmRhbGwo
ZnVuY3Rpb24pWzBdLnNwbGl0KCcsJykKKyAgICAgICAgaWYgbGVuKGZ1bmN0aW9uUGFyYW1ldGVy
c1swXSkgPT0gMDoKKyAgICAgICAgICAgIGZ1bmN0aW9uUGFyYW1ldGVycyA9IFtdCisgICAgICAg
ICAgICAKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgoZnVuY3Rpb25OYW1lLCBmdW5jdGlvbiwgZnVu
Y3Rpb25QYXJhbWV0ZXJzKSkKKyAgICByZXR1cm4gcmVzdWx0CisgICAgICAgIAorCitkZWYgZ2Vu
ZXJhdGVDb2RlKHNvdXJjZSk6CisgICAgaW5wdXRGaWxlID0gb3Blbihzb3VyY2UsICJyIikKKyAg
ICBiYXNlTmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoc291cmNlKS5yZXBsYWNlKCIuanMiLCAiIikK
KyAgICAKKyAgICBzb3VyY2UgPSAiIgorICAgIGZvciBsaW5lIGluIGlucHV0RmlsZToKKyAgICAg
ICAgc291cmNlID0gc291cmNlICsgbGluZQorICAgIAorICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAi
Y3lnd2luIjoKKyAgICAgICAgc291cmNlID0gc291cmNlLnJlcGxhY2UoIlxyXG4iLCAiXG4iKQor
ICAgIHJldHVybiAoYmFzZU5hbWUsIGdldEZ1bmN0aW9ucyhzb3VyY2UpLCBnZXRDb3B5cmlnaHQo
c291cmNlKSkKKworZGVmIG1hbmdsZU5hbWUob2JqZWN0LCBuYW1lKToKKyAgICBxTmFtZSA9IG9i
amVjdCArICIuIiArIG5hbWUKKyAgICBtYW5nbGVkTmFtZSA9ICIiCisgICAgaSA9IDAKKyAgICB3
aGlsZSBpIDwgbGVuKHFOYW1lKToKKyAgICAgICAgaWYgcU5hbWVbaV0gPT0gJy4nOgorICAgICAg
ICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZSArIHFOYW1lW2kgKyAxXS51cHBlcigpCisg
ICAgICAgICAgICBpID0gaSArIDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1hbmdsZWRO
YW1lID0gbWFuZ2xlZE5hbWUgKyBxTmFtZVtpXQorICAgICAgICBpID0gaSArIDEKKyAgICByZXR1
cm4gbWFuZ2xlZE5hbWUKKworYnVpbHRpbnMgPSBbXQorCitiYXNlTmFtZSA9IHN5cy5hcmd2Wy0x
XQorYnVpbHRpbl9kZWZpbml0aW9ucyA9IHN5cy5hcmd2WzE6LTFdCisob3V0cHV0X2Jhc2UsIF8p
ID0gb3MucGF0aC5zcGxpdGV4dChzeXMuYXJndlstMV0pCisKK2NvcHlyaWdodHMgPSBbXQorZm9y
IGZpbGUgaW4gYnVpbHRpbl9kZWZpbml0aW9uczoKKyAgICBpZiBmbm1hdGNoLmZubWF0Y2goZmls
ZSwgJyouanMnKToKKyAgICAgICAgKGJhc2VOYW1lLCBmdW5jdGlvbnMsIG9iamVjdENvcHlyaWdo
dHMpID0gZ2VuZXJhdGVDb2RlKGZpbGUpCisgICAgICAgIGNvcHlyaWdodHMuZXh0ZW5kKG9iamVj
dENvcHlyaWdodHMpCisgICAgICAgIGJ1aWx0aW5zLmFwcGVuZCgoYmFzZU5hbWUsIGZ1bmN0aW9u
cykpCisKK2NvcHlyaWdodHMgPSBsaXN0KHNldChjb3B5cmlnaHRzKSkKKworY29weXJpZ2h0Qm9k
eSA9ICIiCitmb3IgY29weXJpZ2h0IGluIGNvcHlyaWdodHM6CisgICAgY29weXJpZ2h0Qm9keSA9
IGNvcHlyaWdodEJvZHkgKyIgKiBDb3B5cmlnaHQgKEMpICIgKyBjb3B5cmlnaHQgKyAiXG4iCisK
K2J1aWx0aW5zSGVhZGVyID0gb3BlbihvdXRwdXRfYmFzZSArICIuaC50bXAiLCAidyIpCitidWls
dGluc0ltcGxlbWVudGF0aW9uID0gb3BlbihvdXRwdXRfYmFzZSArICIuY3BwLnRtcCIsICJ3IikK
K2NvcHlyaWdodFRleHQgPSAiLypcbiIgKyBjb3B5cmlnaHRCb2R5ICsgY29weXJpZ2h0VGV4dAor
YnVpbHRpbnNIZWFkZXIud3JpdGUoIiIiJXMKKyVzCisKKyNpZm5kZWYgSlNDQnVpbHRpbnNfSAor
I2RlZmluZSBKU0NCdWlsdGluc19ICisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBGdW5jdGlv
bkV4ZWN1dGFibGU7CitjbGFzcyBJZGVudGlmaWVyOworY2xhc3MgSlNHbG9iYWxPYmplY3Q7Citj
bGFzcyBTb3VyY2VDb2RlOworY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7CitjbGFz
cyBWTTsKKworRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShWTSYs
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29kZSYpOworCisiIiIg
JSAoZ2VuZXJhdG9yU3RyaW5nLCBjb3B5cmlnaHRUZXh0KSkKKworY29kZVJlZmVyZW5jZXMgPSBb
XQorCitmb3IgKG9iamVjdE5hbWUsIGZ1bmN0aW9ucykgaW4gYnVpbHRpbnM6CisgICAgcHJpbnQo
IkdlbmVyYXRpbmcgYmluZGluZ3MgZm9yIHRoZSAlcyBidWlsdGluLiIgJSBvYmplY3ROYW1lKQor
ICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIvKiAlcyBmdW5jdGlvbnMgKi9cbiIgJSBvYmplY3RO
YW1lKQorICAgIGZvciAobmFtZSwgaW1wbGVtZW50YXRpb24sIF8pIGluIGZ1bmN0aW9uczoKKyAg
ICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVOYW1lKG9iamVjdE5hbWUsIG5hbWUpCisgICAgICAg
IG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWVbMF0ubG93ZXIoKSArIG1hbmdsZWROYW1lWzE6XSAr
ICJDb2RlIgorICAgICAgICBjb2RlUmVmZXJlbmNlcy5hcHBlbmQoKG1hbmdsZWROYW1lLCBuYW1l
LCBpbXBsZW1lbnRhdGlvbikpCisgICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJleHRlcm4g
Y29uc3QgY2hhciogc18lcztcbiIgJSBtYW5nbGVkTmFtZSkKKyAgICAgICAgYnVpbHRpbnNIZWFk
ZXIud3JpdGUoImV4dGVybiBjb25zdCBpbnQgc18lc0xlbmd0aDtcbiIgJSBtYW5nbGVkTmFtZSkK
KyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiXG4iKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRl
KCIjZGVmaW5lIEpTQ19GT1JFQUNIXyVzX0JVSUxUSU4obWFjcm8pIFxcXG4iICUgb2JqZWN0TmFt
ZS5yZXBsYWNlKCIuIiwgIl8iKS51cHBlcigpKQorICAgIGZvciAobmFtZSwgaW1wbGVtZW50YXRp
b24sIGFyZ3VtZW50cykgaW4gZnVuY3Rpb25zOgorICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmds
ZU5hbWUob2JqZWN0TmFtZSwgbmFtZSkKKyAgICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiAg
ICBtYWNybyglcywgJXMsICVkKSBcXFxuIiAlIChuYW1lLCBtYW5nbGVkTmFtZSwgbGVuKGFyZ3Vt
ZW50cykpKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJcbiIpCisgICAgZm9yIChuYW1lLCBp
bXBsZW1lbnRhdGlvbiwgYXJndW1lbnRzKSBpbiBmdW5jdGlvbnM6CisgICAgICAgIGJ1aWx0aW5z
SGVhZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19CVUlMVElOXyVzIDFcbiIgJSBtYW5nbGVOYW1lKG9i
amVjdE5hbWUsIG5hbWUpLnVwcGVyKCkpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuXG4i
KQorbmFtZXMgPSBbXQorYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0ZPUkVBQ0hf
QlVJTFRJTihtYWNybylcXFxuIikKK2ZvciAoY29kZVJlZmVyZW5jZSwgZnVuY3Rpb25OYW1lLCBz
b3VyY2UpIGluIGNvZGVSZWZlcmVuY2VzOgorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIgICAg
bWFjcm8oJXMsICVzLCBzXyVzTGVuZ3RoKSBcXFxuIiAlIChjb2RlUmVmZXJlbmNlLCBmdW5jdGlv
bk5hbWUsIGNvZGVSZWZlcmVuY2UpKQorICAgIG5hbWVzLmFwcGVuZChmdW5jdGlvbk5hbWUpCisK
K2J1aWx0aW5zSGVhZGVyLndyaXRlKCJcblxuIikKK2J1aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVm
aW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykgXFxcbiIpCitmb3Ig
bmFtZSBpbiBzb3J0ZWQoc2V0KG5hbWVzKSk6CisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiAg
ICBtYWNybyglcykgXFxcbiIgJSBuYW1lKQorYnVpbHRpbnNIZWFkZXIud3JpdGUoIiIiCisKKyNk
ZWZpbmUgSlNDX0RFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFt
ZSwgYXJndW1lbnRDb3VudCkgXFwKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNH
ZW5lcmF0b3IoVk0mKTsKKworSlNDX0ZPUkVBQ0hfQlVJTFRJTihKU0NfREVDTEFSRV9CVUlMVElO
X0dFTkVSQVRPUikKKyN1bmRlZiBKU0NfREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVm
aW5lIEpTQ19CVUlMVElOX0VYSVNUUyhuYW1lKSBkZWZpbmVkKEpTQ19CVUlMVElOXyMjbmFtZSkK
KworfQorCisjZW5kaWYKKworIiIiKQorCitidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIi
IiVzCislcworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5o
IgorCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJs
ZS5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworIiIiICAlIChnZW5lcmF0b3JTdHJpbmcsIGNvcHlyaWdodFRleHQpKQor
Citmb3IgKGNvZGVSZWZlcmVuY2UsIG5hbWUsIHNvdXJjZSkgaW4gY29kZVJlZmVyZW5jZXM6Cisg
ICAgc291cmNlID0gIihmdW5jdGlvbiAiICsgc291cmNlW3NvdXJjZS5pbmRleCgiKCIpOl0gKyAi
KSIKKyAgICBsaW5lcyA9IGpzb24uZHVtcHMoc291cmNlKVsxOi0xXS5zcGxpdCgiXFxuIikKKyAg
ICBzb3VyY2VMZW5ndGggPSBsZW4oc291cmNlKQorICAgIHNvdXJjZSA9ICIiCisgICAgZm9yIGxp
bmUgaW4gbGluZXM6CisgICAgICAgIHNvdXJjZSA9IHNvdXJjZSArICgiICAgIFwiJXNcXG5cIiBc
XFxuIiAlIGxpbmUpCisgICAgYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiY29uc3QgY2hh
ciogc18lcyA9XG4lcztcblxuIiAlIChjb2RlUmVmZXJlbmNlLCBzb3VyY2UpKQorICAgIGJ1aWx0
aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoImNvbnN0IGludCBzXyVzTGVuZ3RoID0gJWQ7XG5cbiIg
JSAoY29kZVJlZmVyZW5jZSwgc291cmNlTGVuZ3RoICsgMSkpICMgKyAxIGZvciBcbgorCitidWls
dGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIgorRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVC
dWlsdGluRXhlY3V0YWJsZShWTSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxp
bmtlZEV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKK3sKKyAgICB1bnNpZ25l
ZCBsaW5lQ291bnQgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPmxpbmVDb3VudCgpOworICAgIHVuc2ln
bmVkIHN0YXJ0Q29sdW1uID0gMTsKKyAgICB1bnNpZ25lZCBzb3VyY2VMZW5ndGggPSB1bmxpbmtl
ZEV4ZWN1dGFibGUtPnNvdXJjZUxlbmd0aCgpOworICAgIGJvb2wgZW5kQ29sdW1uSXNPblN0YXJ0
TGluZSA9ICFsaW5lQ291bnQ7CisgICAgdW5zaWduZWQgZW5kQ29sdW1uRXhjbHVkaW5nQnJhY2Vz
ID0gdW5saW5rZWRFeGVjdXRhYmxlLT51bmxpbmtlZEJvZHlFbmRDb2x1bW4oKSArIChlbmRDb2x1
bW5Jc09uU3RhcnRMaW5lID8gMCA6IDEpOworICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gdW5s
aW5rZWRFeGVjdXRhYmxlLT5zdGFydE9mZnNldCgpOworICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
RXhjbHVkaW5nT3BlbkJyYWNlID0gc3RhcnRPZmZzZXQgKyAxOworICAgIHVuc2lnbmVkIGVuZE9m
ZnNldEV4Y2x1ZGluZ0Nsb3NlQnJhY2UgPSBzdGFydE9mZnNldCArIHNvdXJjZUxlbmd0aCAtIDE7
CisgICAgU291cmNlQ29kZSBib2R5U291cmNlKHNvdXJjZS5wcm92aWRlcigpLCBzdGFydE9mZnNl
dEV4Y2x1ZGluZ09wZW5CcmFjZSwgZW5kT2Zmc2V0RXhjbHVkaW5nQ2xvc2VCcmFjZSwgMCwgc3Rh
cnRDb2x1bW4pOworICAgIHJldHVybiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgYm9k
eVNvdXJjZSwgdW5saW5rZWRFeGVjdXRhYmxlLCAwLCBsaW5lQ291bnQsIHN0YXJ0Q29sdW1uLCBl
bmRDb2x1bW5FeGNsdWRpbmdCcmFjZXMsIGZhbHNlKTsKK30KKworI2RlZmluZSBKU0NfREVGSU5F
X0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQp
IFxcCitGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoVk0mIHZtKSBcXAor
eyBcXAorICAgIHJldHVybiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSh2bSwgdm0uYnVpbHRpbkV4
ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCksIHZtLmJ1aWx0aW5FeGVjdXRhYmxl
cygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyBcXAorfQorCitKU0NfRk9SRUFDSF9CVUlMVElOKEpT
Q19ERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgSlNDX0RFRklORV9CVUlMVElOX0dF
TkVSQVRPUgorfQorCisiIiIpCisKK2J1aWx0aW5zSGVhZGVyLmNsb3NlKCkKK2J1aWx0aW5zSW1w
bGVtZW50YXRpb24uY2xvc2UoKQorCitpZiAobm90IG9zLnBhdGguZXhpc3RzKG91dHB1dF9iYXNl
ICsgIi5oIikpIG9yIChub3QgZmlsZWNtcC5jbXAob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgb3V0
cHV0X2Jhc2UgKyAiLmgiLCBzaGFsbG93PUZhbHNlKSk6CisgICAgb3MucmVuYW1lKG91dHB1dF9i
YXNlICsgIi5oLnRtcCIsIG91dHB1dF9iYXNlICsgIi5oIikKK2Vsc2U6CisgICAgb3MucmVtb3Zl
KG91dHB1dF9iYXNlICsgIi5oLnRtcCIpCisKK2lmIChub3Qgb3MucGF0aC5leGlzdHMob3V0cHV0
X2Jhc2UgKyAiLmNwcCIpKSBvciAobm90IGZpbGVjbXAuY21wKG91dHB1dF9iYXNlICsgIi5jcHAu
dG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmNwcCIsIHNoYWxsb3c9RmFsc2UpKToKKyAgICBvcy5yZW5h
bWUob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCBvdXRwdXRfYmFzZSArICIuY3BwIikKK2Vsc2U6
CisgICAgb3MucmVtb3ZlKG91dHB1dF9iYXNlICsgIi5jcHAudG1wIikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oCmluZGV4IDJjYTNlOTc5NDBjN2Mx
MTA2YzFiYWJhMWYzNTRmZTg0N2I0Mzg1YjMuLjMwY2FkMmExNGZmZGJmYjRkNTdjZjVhMTJmY2I5
MDBlMjY0Zjg3NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9DYWNoZWRDYWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Nh
Y2hlZENhbGwuaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
ICwgbV9pbnRlcnByZXRlcihjYWxsRnJhbWUtPmludGVycHJldGVyKCkpCiAgICAgICAgICAgICAs
IG1fZW50cnlTY29wZShjYWxsRnJhbWUtPnZtKCksIGZ1bmN0aW9uLT5zY29wZSgpLT5nbG9iYWxP
YmplY3QoKSkKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKCFmdW5jdGlvbi0+aXNIb3N0
RnVuY3Rpb24oKSk7CisgICAgICAgICAgICBBU1NFUlQoIWZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlv
bk5vbklubGluZSgpKTsKICAgICAgICAgICAgIGlmIChjYWxsRnJhbWUtPnZtKCkuaXNTYWZlVG9S
ZWN1cnNlKCkpIHsKICAgICAgICAgICAgICAgICBtX2FyZ3VtZW50cy5yZXNpemUoYXJndW1lbnRD
b3VudCk7CiAgICAgICAgICAgICAgICAgbV9jbG9zdXJlID0gbV9pbnRlcnByZXRlci0+cHJlcGFy
ZUZvclJlcGVhdENhbGwoZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLCBjYWxsRnJhbWUsICZtX3By
b3RvQ2FsbEZyYW1lLCBmdW5jdGlvbiwgYXJndW1lbnRDb3VudCArIDEsIGZ1bmN0aW9uLT5zY29w
ZSgpLCBtX2FyZ3VtZW50cy5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggY2E4OTBiMDZlYTMzZmE5ZTdmMWZhNTFh
MzVlYTJkNDhkMDA5YTM4YS4uNmM5YmY5NmMxNWY2MDllMjY1Y2UyNTBhNDViZjA4NjFkMDZjZDFm
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5oIgogI2luY2x1ZGUgIkpTU3RhY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIK
KyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgog
I2luY2x1ZGUgIkxMSW50Q0xvb3AuaCIKICNpbmNsdWRlICJMTEludFRodW5rcy5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAK
aW5kZXggZjBlMDJiYTRlNDc2Zjk5Y2M5MTNiMDQ2MmFkMjc5NTAwNjA5ZmEzYS4uMWMyNDBkY2Q3
MWJlNTI5ZDg4Y2JmNDYxZDE4NjhmNWViMmIwMmFkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuY3BwCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1l
bnQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcAppbmRleCBjYTdhZDExZjJlMGI4YTNiOGIxODU4OTFkN2U1MjJiYWU0MDNhMjM2Li5j
YjU1MDdiZWFjNTViZjhlYjFiMzdlYzkwZmNhYjE5MzRmYjQ4ZWEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJI
ZWFwLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNp
bmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggOThk
MTBhM2Y0ZGNiMTJkODlmMzdhMTJmMjI2MDRiOTQ2ZTA4ZTYyNy4uZGQwMzUzNzc5ZThiZGY5OGY0
NjU4YTMwN2UzMmQwNmU0NzI0NDE1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2RlczMyXzY0LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRlYnVnZ2Vy
LmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNs
dWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA5MjhkZDUwZmIw
MTZlMjcxNjQ0YTU3NWUzMGFiNWYyNTE2ZWI1MGVjLi45MDg4YjdmYjJmYjdhZDAxMzgwNmVmNDli
NWFmNDIwZmE2NDg0MDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKQEAgLTQxLDYgKzQxLDggQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJK
SVRPcGVyYXRpb25XcmFwcGVycy5oIgogI2luY2x1ZGUgIkpJVFRvREZHRGVmZXJyZWRDb21waWxh
dGlvbkNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRl
ICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25z
LmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCmluZGV4IDI2ZGQ0ZDFhZjc0NWFmYTFmYmM1M2E5YzAyM2E2ZTQ3NDFhNjZhMDkuLmRm
MWJkM2E5Y2ZhNDAyYzUyYTUyMTFjZjFhY2NlNjdkNTEyMWI3ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0yOSwxMSArMjksMTMg
QEAKICNpbmNsdWRlICJKSVQuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUg
IkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgi
CiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNp
bmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpT
Q0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
UHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1ZhcmlhYmxlT2JqZWN0LmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCmluZGV4IDQwNzg0YjQ5NDMxZmUwMmU4ZTQ1MjJmMTYzMDhjOTAyNDcx
NmQyMzYuLjJmNzk1NTU0YjA5MWRlZWJiYzAzYmYyYmU4Yzc0ZjQxYWU1NDFlZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5j
bHVkZSAiSlNQcm94eS5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNTdHJp
bmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlNhbXBsaW5n
VG9vbC5oIgogI2luY2x1ZGUgIlN0YWNrVmlzaXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCA2MDRjYzI2
M2NmOTdlMDg2ZmVkMDZlYzkwM2IwZWMxOTgzZTc4MTM3Li44MTY2ZTdmODFmYTg5YTdkNGY1MGM1
ZjFhOTRmYTk2OGM1ZDU3ZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1
ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQ2VsbC5o
IgotI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5o
IgogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRl
ICJKU09iamVjdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9B
U1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApp
bmRleCA4ZWMxZmQzMmEzYWRhMjJlMTI1MjI5NTcwZGNmN2ZmMjhlYWJmMWVkLi40NmE3Yzc2YjJm
OTAxZmMzY2MzNmQxY2UwYzA3MzUzZWIwNmIyZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtODg4LDkgKzg4OCw5IEBAIEV4cHJlc3Npb25Ob2RlKiBB
U1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uCiAgICAgQVNTRVJUKGZ1bmMtPmlzRG90QWNjZXNzb3JOb2RlKCkpOwogICAgIERvdEFj
Y2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4oZnVuYyk7CiAg
ICAgRnVuY3Rpb25DYWxsRG90Tm9kZSogbm9kZTsKLSAgICBpZiAoZG90LT5pZGVudGlmaWVyKCkg
PT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y2FsbCkKKyAgICBpZiAoZG90LT5pZGVudGlmaWVyKCkg
PT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y2FsbCB8fCBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3Zt
LT5wcm9wZXJ0eU5hbWVzLT5jYWxsUHJpdmF0ZU5hbWUpCiAgICAgICAgIG5vZGUgPSBuZXcgKG1f
dm0pIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5p
ZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7Ci0gICAgZWxz
ZSBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXBwbHkpCisg
ICAgZWxzZSBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXBw
bHkgfHwgZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXBwbHlQcml2
YXRlTmFtZSkKICAgICAgICAgbm9kZSA9IG5ldyAobV92bSkgQXBwbHlGdW5jdGlvbkNhbGxEb3RO
b2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90
LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiAgICAgZWxzZQogICAgICAgICBub2RlID0gbmV3ICht
X3ZtKSBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVu
dGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IGNhNGJiNGYwYWRlOGQ2YmM4MjY5MWE2YzAw
MDE0Y2YxOThiZDg4YmQuLmNjYjA3OWQ5NzVhMTQxYzVjNGIyZDdiNjIzMTMwMDA3MDk3Nzc4Mjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC0yNSwxMCArMjUsMTAg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMZXhlci5oIgogCisjaW5jbHVkZSAi
Q29tbW9uSWRlbnRpZmllcnMuaCIKKyNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
SlNGdW5jdGlvbklubGluZXMuaCIKLQogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25z
LmgiCi0jaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk5vZGVJbmZvLmgiCiAjaW5j
bHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlIDx3dGYvZHRvYS5oPgpAQCAtOTAsNiArOTAsNyBAQCBl
bnVtIENoYXJhY3RlclR5cGUgewogCiAgICAgLy8gT3RoZXIgdHlwZXMgKG9ubHkgb25lIHNvIGZh
cikKICAgICBDaGFyYWN0ZXJXaGl0ZVNwYWNlLAorICAgIENoYXJhY3RlclByaXZhdGVJZGVudGlm
aWVyU3RhcnQKIH07CiAKIC8vIDI1NiBMYXRpbi0xIGNvZGVzCkBAIC0xNTgsNyArMTU5LDcgQEAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IHR5cGVzT2ZMYXRpbjFDaGFyYWN0ZXJzWzI1Nl0g
PSB7CiAvKiAgNjEgLSA9ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyRXF1YWwsCiAvKiAg
NjIgLSA+ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyR3JlYXRlciwKIC8qICA2MyAtID8g
ICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJRdWVzdGlvbiwKLS8qICA2NCAtIEAgICAgICAg
ICAgICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyogIDY0IC0gQCAgICAgICAgICAgICAg
ICAgICovIENoYXJhY3RlclByaXZhdGVJZGVudGlmaWVyU3RhcnQsCiAvKiAgNjUgLSBBICAgICAg
ICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAogLyogIDY2IC0gQiAgICAg
ICAgICAgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKIC8qICA2NyAtIEMgICAg
ICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCkBAIC00ODYsOSArNDg3
LDEwIEBAIHN0YXRpYyBjb25zdCBMQ2hhciBzaW5nbGVDaGFyYWN0ZXJFc2NhcGVWYWx1ZXNGb3JB
U0NJSVsxMjhdID0gewogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1MZXhlcjxUPjo6TGV4
ZXIoVk0qIHZtKQorTGV4ZXI8VD46OkxleGVyKFZNKiB2bSwgSlNQYXJzZXJTdHJpY3RuZXNzIHN0
cmljdG5lc3MpCiAgICAgOiBtX2lzUmVwYXJzaW5nKGZhbHNlKQogICAgICwgbV92bSh2bSkKKyAg
ICAsIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbihzdHJpY3RuZXNzID09IEpTUGFyc2VCdWlsdGlu
KQogewogfQogCkBAIC03NTMsNyArNzU1LDI3IEBAIGlubGluZSB2b2lkIExleGVyPFQ+OjpyZWNv
cmQxNihpbnQgYykKICAgICBBU1NFUlQoYyA8PSBzdGF0aWNfY2FzdDxpbnQ+KFVTSFJUX01BWCkp
OwogICAgIG1fYnVmZmVyMTYuYXBwZW5kKHN0YXRpY19jYXN0PFVDaGFyPihjKSk7CiB9Ci0KKyAg
ICAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECitib29sIGlzU2FmZUlkZW50aWZpZXIoVk0mIHZtLCBj
b25zdCBJZGVudGlmaWVyKiBpZGVudCkKK3sKKyAgICBpZiAoIWlkZW50KQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAvKiBKdXN0IGJsb2NrIGFueSB1c2Ugb2Ygc3VzcGljaW91cyBpZGVudGlm
aWVycy4gIFRoaXMgaXMgaW50ZW5kZWQgdG8KKyAgICAgKiBiZSB1c2VkIGFzIGEgc2FmZXR5IG5l
dCB3aGlsZSBpbXBsZW1lbnRpbmcgYnVpbHRpbnMuCisgICAgICovCisgICAgaWYgKCppZGVudCA9
PSB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KCppZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5hcHBseSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+ZXZhbCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+RnVuY3Rpb24p
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorICAg
IAogdGVtcGxhdGUgPD4KIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFM
V0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwYXJzZUlkZW50aWZpZXIoSlNU
b2tlbkRhdGEqIHRva2VuRGF0YSwgdW5zaWduZWQgbGV4ZXJGbGFncywgYm9vbCBzdHJpY3RNb2Rl
KQogewpAQCAtNzY1LDcgKzc4NywxMSBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVu
dGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAogICAgICAg
ICAgICAgcmV0dXJuIGtleXdvcmQgPT0gUkVTRVJWRURfSUZfU1RSSUNUICYmICFzdHJpY3RNb2Rl
ID8gSURFTlQgOiBrZXl3b3JkOwogICAgICAgICB9CiAgICAgfQotCisgICAgCisgICAgYm9vbCBp
c1ByaXZhdGVOYW1lID0gbV9jdXJyZW50ID09ICdAJyAmJiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rp
b247CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgIHNoaWZ0KCk7CisgICAgCiAgICAg
Y29uc3QgTENoYXIqIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKICAgICB1
bnNpZ25lZCBpZGVudGlmaWVyTGluZVN0YXJ0ID0gY3VycmVudExpbmVTdGFydE9mZnNldCgpOwog
ICAgIApAQCAtNzc5LDE1ICs4MDUsMjYgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRl
bnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKIAogICAg
IGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gMDsKICAgICAKLSAgICBpZiAoc2hvdWxkQ3JlYXRl
SWRlbnRpZmllcikgeworICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyIHx8IG1fcGFyc2lu
Z0J1aWx0aW5GdW5jdGlvbikgewogICAgICAgICBpbnQgaWRlbnRpZmllckxlbmd0aCA9IGN1cnJl
bnRTb3VyY2VQdHIoKSAtIGlkZW50aWZpZXJTdGFydDsKICAgICAgICAgaWRlbnQgPSBtYWtlSWRl
bnRpZmllcihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwotCisgICAgICAgIGlm
IChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKKyAgICAgICAgICAgIGlmICghaXNTYWZlSWRl
bnRpZmllcigqbV92bSwgaWRlbnQpICYmICFpc1ByaXZhdGVOYW1lKSB7CisgICAgICAgICAgICAg
ICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJUaGUgdXNlIG9mICciLCBpZGVudC0+
c3RyaW5nKCksICInIGlzIGRpc2FsbG93ZWQgaW4gYnVpbHRpbiBmdW5jdGlvbnMuIik7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgICAgICAgICAgaWRlbnQgPSBtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5nZXRQcml2YXRlTmFtZSgqaWRlbnQpOworICAgICAgICAgICAgZWxzZSBpZiAoKmlk
ZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQpCisgICAgICAgICAg
ICAgICAgdG9rZW5EYXRhLT5pZGVudCA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRL
ZXl3b3JkUHJpdmF0ZU5hbWU7CisgICAgICAgICAgICBpZiAoIWlkZW50KQorICAgICAgICAgICAg
ICAgIHJldHVybiBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzsKKyAgICAgICAgfQogICAg
ICAgICB0b2tlbkRhdGEtPmlkZW50ID0gaWRlbnQ7CiAgICAgfSBlbHNlCiAgICAgICAgIHRva2Vu
RGF0YS0+aWRlbnQgPSAwOwogCi0gICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tl
bkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMp
KSkgeworICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICEo
bGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlzUHJpdmF0
ZU5hbWUpIHsKICAgICAgICAgQVNTRVJUKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpOwogICAgICAg
ICBpZiAocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHsKICAgICAgICAgICAgIGNvbnN0IEhh
c2hFbnRyeSogZW50cnkgPSBtX3ZtLT5rZXl3b3Jkcy0+Z2V0S2V5d29yZCgqaWRlbnQpOwpAQCAt
ODE0LDYgKzg1MSwxMCBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBB
TFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAgICAgICAgICAgcmV0
dXJuIGtleXdvcmQgPT0gUkVTRVJWRURfSUZfU1RSSUNUICYmICFzdHJpY3RNb2RlID8gSURFTlQg
OiBrZXl3b3JkOwogICAgICAgICB9CiAgICAgfQorICAgIAorICAgIGJvb2wgaXNQcml2YXRlTmFt
ZSA9IG1fY3VycmVudCA9PSAnQCcgJiYgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uOworICAgIGlm
IChpc1ByaXZhdGVOYW1lKQorICAgICAgICBzaGlmdCgpOwogCiAgICAgY29uc3QgVUNoYXIqIGlk
ZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKICAgICBpbnQgaWRlbnRpZmllckxp
bmVTdGFydCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKQEAgLTgyNiw2ICs4NjcsNyBAQCB0
ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9r
ZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAgIH0KICAgICAKICAgICBpZiAoVU5MSUtFTFkobV9j
dXJyZW50ID09ICdcXCcpKSB7CisgICAgICAgIEFTU0VSVCghaXNQcml2YXRlTmFtZSk7CiAgICAg
ICAgIHNldE9mZnNldEZyb21Tb3VyY2VQdHIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGlu
ZVN0YXJ0KTsKICAgICAgICAgcmV0dXJuIHBhcnNlSWRlbnRpZmllclNsb3dDYXNlPHNob3VsZENy
ZWF0ZUlkZW50aWZpZXI+KHRva2VuRGF0YSwgbGV4ZXJGbGFncywgc3RyaWN0TW9kZSk7CiAgICAg
fQpAQCAtODM3LDE4ICs4NzksMjkgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRp
Zmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAKIAogICAgIGNv
bnN0IElkZW50aWZpZXIqIGlkZW50ID0gMDsKICAgICAKLSAgICBpZiAoc2hvdWxkQ3JlYXRlSWRl
bnRpZmllcikgeworICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyIHx8IG1fcGFyc2luZ0J1
aWx0aW5GdW5jdGlvbikgewogICAgICAgICBpbnQgaWRlbnRpZmllckxlbmd0aCA9IGN1cnJlbnRT
b3VyY2VQdHIoKSAtIGlkZW50aWZpZXJTdGFydDsKICAgICAgICAgaWYgKGlzQWxsOEJpdCkKICAg
ICAgICAgICAgIGlkZW50ID0gbWFrZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hhcihpZGVudGlmaWVy
U3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBpZGVu
dCA9IG1ha2VJZGVudGlmaWVyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCk7Ci0g
ICAgICAgIAorICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CisgICAgICAg
ICAgICBpZiAoIWlzU2FmZUlkZW50aWZpZXIoKm1fdm0sIGlkZW50KSAmJiAhaXNQcml2YXRlTmFt
ZSkgeworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZygiVGhl
IHVzZSBvZiAnIiwgaWRlbnQtPnN0cmluZygpLCAiJyBpcyBkaXNhbGxvd2VkIGluIGJ1aWx0aW4g
ZnVuY3Rpb25zLiIpOworICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPSzsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICAgICAgICAgIGlk
ZW50ID0gbV92bS0+cHJvcGVydHlOYW1lcy0+Z2V0UHJpdmF0ZU5hbWUoKmlkZW50KTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRL
ZXl3b3JkKQorICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAmbV92bS0+cHJvcGVy
dHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZFByaXZhdGVOYW1lOworICAgICAgICAgICAgaWYgKCFp
ZGVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9QUklWQVRFX05BTUVfRVJST1JU
T0s7CisgICAgICAgIH0KICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IGlkZW50OwogICAgIH0g
ZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gMDsKICAgICAKLSAgICBpZiAoVU5MSUtF
TFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxhZ3MgJiBMZXhlckZs
YWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpKSB7CisgICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcg
PCBtYXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2Vy
dmVkV29yZHMpKSAmJiAhaXNQcml2YXRlTmFtZSkgewogICAgICAgICBBU1NFUlQoc2hvdWxkQ3Jl
YXRlSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkg
ewogICAgICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IG1fdm0tPmtleXdvcmRzLT5n
ZXRLZXl3b3JkKCppZGVudCk7CkBAIC0xNjU4LDYgKzE3MTEsNyBAQCBpbk51bWJlckFmdGVyRGVj
aW1hbFBvaW50OgogICAgICAgICBBU1NFUlQoaXNJZGVudFN0YXJ0KG1fY3VycmVudCkpOwogICAg
ICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNlIENoYXJhY3RlckJhY2tTbGFzaDoKKyAgICAgICAg
cGFyc2VJZGVudDoKICAgICAgICAgaWYgKGxleGVyRmxhZ3MgJiBMZXhleEZsYWdzRG9udEJ1aWxk
S2V5d29yZHMpCiAgICAgICAgICAgICB0b2tlbiA9IHBhcnNlSWRlbnRpZmllcjxmYWxzZT4odG9r
ZW5EYXRhLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKTsKICAgICAgICAgZWxzZQpAQCAtMTY3MCw2
ICsxNzI0LDExIEBAIGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ6CiAgICAgICAgIG1fdGVybWlu
YXRvciA9IHRydWU7CiAgICAgICAgIG1fbGluZVN0YXJ0ID0gbV9jb2RlOwogICAgICAgICBnb3Rv
IHN0YXJ0OworICAgIGNhc2UgQ2hhcmFjdGVyUHJpdmF0ZUlkZW50aWZpZXJTdGFydDoKKyAgICAg
ICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikKKyAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudDsKKworICAgICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNlIENoYXJhY3RlckludmFsaWQ6
CiAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gaW52YWxpZENoYXJhY3Rlck1lc3NhZ2UoKTsK
ICAgICAgICAgdG9rZW4gPSBFUlJPUlRPSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTGV4ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
aAppbmRleCAyOGM2MWJhMTk4ZDJjMTVhNDliYjE4NTJlZDMwYmVmZWI4OTA0MDA4Li5iODg3M2U5
OTUwMjg2NDRiZjhjYmIzZDRjMmRhNTYyZTkzZTBlOGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9MZXhlci5oCkBAIC03Miw3ICs3Miw3IEBAIGNsYXNzIExleGVyIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIAogcHVibGljOgotICAgIExleGVyKFZNKik7CisgICAgTGV4ZXIo
Vk0qLCBKU1BhcnNlclN0cmljdG5lc3MpOwogICAgIH5MZXhlcigpOwogCiAgICAgLy8gQ2hhcmFj
dGVyIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMuCkBAIC0yMzgsNiArMjM4LDcgQEAgcHJpdmF0ZToK
ICAgICBJZGVudGlmaWVyQXJlbmEqIG1fYXJlbmE7CiAKICAgICBWTSogbV92bTsKKyAgICBib29s
IG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKIH07CiAKIHRlbXBsYXRlIDw+CkBAIC0zMzUsNiAr
MzM2LDEyIEBAIEFMV0FZU19JTkxJTkUgY29uc3QgSWRlbnRpZmllciogTGV4ZXI8VD46Om1ha2VM
Q2hhcklkZW50aWZpZXIoY29uc3QgVUNoYXIqIGNoYXJhCiAgICAgcmV0dXJuICZtX2FyZW5hLT5t
YWtlSWRlbnRpZmllckxDaGFyRnJvbVVDaGFyKG1fdm0sIGNoYXJhY3RlcnMsIGxlbmd0aCk7CiB9
CiAKKyNpZiBBU1NFUlRfRElTQUJMRUQKK0FMV0FZU19JTkxJTkUgYm9vbCBpc1NhZmVJZGVudGlm
aWVyKFZNJiwgY29uc3QgSWRlbnRpZmllciopIHsgcmV0dXJuIHRydWU7IH0KKyNlbHNlCitib29s
IGlzU2FmZUlkZW50aWZpZXIoVk0mLCBjb25zdCBJZGVudGlmaWVyKik7CisjZW5kaWYKKwogdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+Ojps
ZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW4qIHRva2VuUmVjb3JkLCB1bnNpZ25lZCBsZXhlckZs
YWdzLCBib29sIHN0cmljdE1vZGUpCiB7CkBAIC0zNzAsMTAgKzM3NywxNSBAQCBBTFdBWVNfSU5M
SU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW4qIHRv
a2VuUmVjb3JkLCB1bgogICAgIEFTU0VSVChjdXJyZW50T2Zmc2V0KCkgPj0gY3VycmVudExpbmVT
dGFydE9mZnNldCgpKTsKIAogICAgIC8vIENyZWF0ZSB0aGUgaWRlbnRpZmllciBpZiBuZWVkZWQK
LSAgICBpZiAobGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250QnVpbGRLZXl3b3JkcykKKyAgICBp
ZiAobGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250QnVpbGRLZXl3b3JkcworI2lmICFBU1NFUlRf
RElTQUJMRUQKKyAgICAgICAgJiYgIW1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbgorI2VuZGlmCisg
ICAgICAgICkKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IDA7CiAgICAgZWxzZQogICAgICAg
ICB0b2tlbkRhdGEtPmlkZW50ID0gbWFrZUxDaGFySWRlbnRpZmllcihzdGFydCwgcHRyIC0gc3Rh
cnQpOworCiAgICAgdG9rZW5Mb2NhdGlvbi0+bGluZSA9IG1fbGluZU51bWJlcjsKICAgICB0b2tl
bkxvY2F0aW9uLT5saW5lU3RhcnRPZmZzZXQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CiAg
ICAgdG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZzZXQgPSBvZmZzZXRGcm9tU291cmNlUHRyKHN0YXJ0
KTsKQEAgLTM4MSw2ICszOTMsMTMgQEAgQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxU
Pjo6bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rva2VuKiB0b2tlblJlY29yZCwgdW4KICAgICBBU1NF
UlQodG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZzZXQgPj0gdG9rZW5Mb2NhdGlvbi0+bGluZVN0YXJ0
T2Zmc2V0KTsKICAgICB0b2tlblJlY29yZC0+bV9zdGFydFBvc2l0aW9uID0gc3RhcnRQb3NpdGlv
bjsKICAgICB0b2tlblJlY29yZC0+bV9lbmRQb3NpdGlvbiA9IGN1cnJlbnRQb3NpdGlvbigpOwor
I2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7
CisgICAgICAgIGlmICghaXNTYWZlSWRlbnRpZmllcigqbV92bSwgdG9rZW5EYXRhLT5pZGVudCkp
CisgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7CisgICAgfQorI2VuZGlmCisKICAgICBtX2xh
c3RUb2tlbiA9IElERU5UOwogICAgIHJldHVybiBJREVOVDsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggZmM5Y2NkOWY2YzU3NmMxYWVmNTQ3ZjIxMWZkZDU5
NmY0MmUwNTgwNi4uZDk1MmJhNmE5NGQyZjZiNDE4MjE1NTAwNGQwYTk3MDg0MjliZDc4YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTEzMiw2ICsxMzIsMTIgQEAg
UGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4gUHJvZ3JhbU5vZGU6OmNyZWF0ZShWTSogdm0sIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQKICAgICByZXR1cm4gbm9kZS5yZWxlYXNlKCk7CiB9CiAK
Kwordm9pZCBQcm9ncmFtTm9kZTo6c2V0Q2xvc2VkVmFyaWFibGVzKGNvbnN0IFZlY3RvcjxSZWZQ
dHI8U3RyaW5nSW1wbD4+JiYgY2xvc2VkVmFyaWFibGVzKQoreworICAgIG1fY2xvc2VkVmFyaWFi
bGVzID0gc3RkOjptb3ZlKGNsb3NlZFZhcmlhYmxlcyk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSBFdmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
CiBpbmxpbmUgRXZhbE5vZGU6OkV2YWxOb2RlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNp
Z25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0
YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFy
aWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywg
aW50IG51bUNvbnN0YW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCBk
Nzc5YTE3OGQ5NTZmZjk5ZmQwYmVkNWQ1ZjQ1NGFhM2U2YjUwODc5Li44MTZmZjAwMWFiZjAzNzZj
NjQyZjFhOTM4ZDBlMGE5ZjUyOWNhNmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oCkBAIC0xNDMxLDYgKzE0MzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBu
ZWVkc0FjdGl2YXRpb24oKSBjb25zdCB7IHJldHVybiAoaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkg
fHwgKG1fZmVhdHVyZXMgJiAoRXZhbEZlYXR1cmUgfCBXaXRoRmVhdHVyZSB8IENhdGNoRmVhdHVy
ZSkpOyB9CiAgICAgICAgIGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVy
biAhIW1fY2FwdHVyZWRWYXJpYWJsZXMuc2l6ZSgpOyB9CiAgICAgICAgIHNpemVfdCBjYXB0dXJl
ZFZhcmlhYmxlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2NhcHR1cmVkVmFyaWFibGVzLnNpemUo
KTsgfQorICAgICAgICBjb25zdCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcygpIGNv
bnN0IHsgcmV0dXJuIG1fY2FwdHVyZWRWYXJpYWJsZXM7IH0KICAgICAgICAgYm9vbCBjYXB0dXJl
cyhjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgeyByZXR1cm4gbV9jYXB0dXJlZFZhcmlhYmxlcy5j
b250YWlucyhpZGVudC5pbXBsKCkpOyB9CiAKICAgICAgICAgVmFyU3RhY2smIHZhclN0YWNrKCkg
eyByZXR1cm4gbV92YXJTdGFjazsgfQpAQCAtMTQ0Niw2ICsxNDQ3LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCgpIGNvbnN0OwogCiAg
ICAgICAgIHZvaWQgZW1pdFN0YXRlbWVudHNCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqIGRlc3RpbmF0aW9uKTsKKyAgICAgICAgCisgICAgICAgIHZvaWQgc2V0Q2xvc2Vk
VmFyaWFibGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYpIHsgfQogCiAgICAg
cHJvdGVjdGVkOgogICAgICAgICB2b2lkIHNldFNvdXJjZShjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UpIHsgbV9zb3VyY2UgPSBzb3VyY2U7IH0KQEAgLTE0NzUsMTEgKzE0NzgsMTMgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9uID0g
ZmFsc2U7CiAKKyAgICAgICAgdm9pZCBzZXRDbG9zZWRWYXJpYWJsZXMoY29uc3QgVmVjdG9yPFJl
ZlB0cjxTdHJpbmdJbXBsPj4mJik7CisgICAgICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5n
SW1wbD4+JiBjbG9zZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2Nsb3NlZFZhcmlhYmxl
czsgfQogICAgIHByaXZhdGU6CiAgICAgICAgIFByb2dyYW1Ob2RlKFZNKiwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0
YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sq
LCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2Rl
RmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwot
CisgICAgICAgIFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+IG1fY2xvc2VkVmFyaWFibGVzOwog
ICAgICAgICB1bnNpZ25lZCBtX3N0YXJ0Q29sdW1uOwogICAgICAgICB1bnNpZ25lZCBtX2VuZENv
bHVtbjsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4
IDI5NzY2NmU3MjZlNDVkMDgzZWYxMzQ5ZGRmZmRmMzdlZjgwMGRmN2EuLjUwYmVjNzlmZTM4YWRm
OGYzYTA0ZjZiNDZjYmQyYTVjYmZjZjI0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5jcHAKQEAgLTIwNCw4ICsyMDQsOSBAQCBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2Vy
KFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcnMqCiAg
ICAgLCBtX2xhc3RJZGVudGlmaWVyKDApCiAgICAgLCBtX2xhc3RGdW5jdGlvbk5hbWUobnVsbHB0
cikKICAgICAsIG1fc291cmNlRWxlbWVudHMoMCkKKyAgICAsIG1fcGFyc2luZ0J1aWx0aW4oc3Ry
aWN0bmVzcyA9PSBKU1BhcnNlQnVpbHRpbikKIHsKLSAgICBtX2xleGVyID0gYWRvcHRQdHIobmV3
IExleGVyVHlwZSh2bSkpOworICAgIG1fbGV4ZXIgPSBhZG9wdFB0cihuZXcgTGV4ZXJUeXBlKHZt
LCBzdHJpY3RuZXNzKSk7CiAgICAgbV9hcmVuYSA9IG1fdm0tPnBhcnNlckFyZW5hLmdldCgpOwog
ICAgIG1fbGV4ZXItPnNldENvZGUoc291cmNlLCBtX2FyZW5hKTsKICAgICBtX3Rva2VuLm1fbG9j
YXRpb24ubGluZSA9IHNvdXJjZS5maXJzdExpbmUoKTsKQEAgLTI1Niw2ICsyNTcsNyBAQCBTdHJp
bmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoKQogICAgIElkZW50aWZpZXJTZXQgY2Fw
dHVyZWRWYXJpYWJsZXM7CiAgICAgYm9vbCBtb2RpZmllZFBhcmFtZXRlciA9IGZhbHNlOwogICAg
IHNjb3BlLT5nZXRDYXB0dXJlZFZhcmlhYmxlcyhjYXB0dXJlZFZhcmlhYmxlcywgbW9kaWZpZWRQ
YXJhbWV0ZXIpOworICAgIAogICAgIENvZGVGZWF0dXJlcyBmZWF0dXJlcyA9IGNvbnRleHQuZmVh
dHVyZXMoKTsKICAgICBpZiAoc2NvcGUtPnN0cmljdE1vZGUoKSkKICAgICAgICAgZmVhdHVyZXMg
fD0gU3RyaWN0TW9kZUZlYXR1cmU7CkBAIC0yNjMsMjEgKzI2NSwzNiBAQCBTdHJpbmcgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlSW5uZXIoKQogICAgICAgICBmZWF0dXJlcyB8PSBTaGFkb3dzQXJn
dW1lbnRzRmVhdHVyZTsKICAgICBpZiAobW9kaWZpZWRQYXJhbWV0ZXIpCiAgICAgICAgIGZlYXR1
cmVzIHw9IE1vZGlmaWVkUGFyYW1ldGVyRmVhdHVyZTsKLQorICAgIAorICAgIFZlY3RvcjxSZWZQ
dHI8U3RyaW5nSW1wbD4+IGNsb3NlZFZhcmlhYmxlczsKKyAgICBpZiAobV9wYXJzaW5nQnVpbHRp
bikgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghY2FwdHVyZWRWYXJpYWJsZXMuc2l6ZSgpKTsK
KyAgICAgICAgSWRlbnRpZmllclNldCB1c2VkVmFyaWFibGVzOworICAgICAgICBzY29wZS0+Z2V0
VXNlZFZhcmlhYmxlcyh1c2VkVmFyaWFibGVzKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiB2
YXJpYWJsZSA6IHVzZWRWYXJpYWJsZXMpIHsKKyAgICAgICAgICAgIGlmIChzY29wZS0+aGFzRGVj
bGFyZWRWYXJpYWJsZShJZGVudGlmaWVyKG1fdm0sIHZhcmlhYmxlLmdldCgpKSkpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChzY29wZS0+
aGFzRGVjbGFyZWRQYXJhbWV0ZXIoSWRlbnRpZmllcihtX3ZtLCB2YXJpYWJsZS5nZXQoKSkpKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgY2xvc2VkVmFyaWFibGVzLmFw
cGVuZCh2YXJpYWJsZSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgZGlkRmluaXNoUGFyc2luZyhz
b3VyY2VFbGVtZW50cywgY29udGV4dC52YXJEZWNsYXJhdGlvbnMoKSwgY29udGV4dC5mdW5jRGVj
bGFyYXRpb25zKCksIGZlYXR1cmVzLAotICAgICAgICBjb250ZXh0Lm51bUNvbnN0YW50cygpLCBj
YXB0dXJlZFZhcmlhYmxlcyk7CisgICAgICAgIGNvbnRleHQubnVtQ29uc3RhbnRzKCksIGNhcHR1
cmVkVmFyaWFibGVzLCBzdGQ6Om1vdmUoY2xvc2VkVmFyaWFibGVzKSk7CiAKICAgICByZXR1cm4g
cGFyc2VFcnJvcjsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHZvaWQgUGFy
c2VyPExleGVyVHlwZT46OmRpZEZpbmlzaFBhcnNpbmcoU291cmNlRWxlbWVudHMqIHNvdXJjZUVs
ZW1lbnRzLCBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrPiogdmFy
U3RhY2ssIAotICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25T
dGFjaz4qIGZ1bmNTdGFjaywgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRz
LCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcnMpCisgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xh
cmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiogZnVuY1N0YWNrLCBDb2RlRmVhdHVyZXMgZmVh
dHVyZXMsIGludCBudW1Db25zdGFudHMsIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFycywgY29u
c3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJiBjbG9zZWRWYXJpYWJsZXMpCiB7CiAgICAg
bV9zb3VyY2VFbGVtZW50cyA9IHNvdXJjZUVsZW1lbnRzOwogICAgIG1fdmFyRGVjbGFyYXRpb25z
ID0gdmFyU3RhY2s7CiAgICAgbV9mdW5jRGVjbGFyYXRpb25zID0gZnVuY1N0YWNrOwogICAgIG1f
Y2FwdHVyZWRWYXJpYWJsZXMuc3dhcChjYXB0dXJlZFZhcnMpOworICAgIG1fY2xvc2VkVmFyaWFi
bGVzID0gY2xvc2VkVmFyaWFibGVzOwogICAgIG1fZmVhdHVyZXMgPSBmZWF0dXJlczsKICAgICBt
X251bUNvbnN0YW50cyA9IG51bUNvbnN0YW50czsKIH0KQEAgLTIzNDYsNiArMjM2MywxMCBAQCB0
ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPiB2b2lkIFBhcnNlcjxMZXhlclR5cGU+Ojpwcmlu
dFVuZXhwZWN0ZWRUb2tlblRleHQoVwogICAgIGNhc2UgUkVTRVJWRUQ6CiAgICAgICAgIG91dC5w
cmludCgiVW5leHBlY3RlZCB1c2Ugb2YgcmVzZXJ2ZWQgd29yZCAnIiwgZ2V0VG9rZW4oKSwgIici
KTsKICAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJP
UlRPSzoKKyAgICAgICAgb3V0LnByaW50KCJJbnZhbGlkIHByaXZhdGUgbmFtZSAnIiwgZ2V0VG9r
ZW4oKSwgIiciKTsKKyAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAgICAgY2FzZSBJREVO
VDoKICAgICAgICAgb3V0LnByaW50KCJVbmV4cGVjdGVkIGlkZW50aWZpZXIgJyIsIGdldFRva2Vu
KCksICInIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBiNjk4ZWY5
MzY4Y2I4YzhmMTk3Y2NkMDAwYWNhYTZkZmIxMWJhMjQ0Li45MDMzODUwYzhjOTdmNTdlMjFkYTVl
ZWRiMDJkMDQ0ZjRjODk3OGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgK
QEAgLTIzLDYgKzIzLDcgQEAKICNpZm5kZWYgUGFyc2VyX2gKICNkZWZpbmUgUGFyc2VyX2gKIAor
I2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNp
bmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgpAQCAt
MjU5LDYgKzI2MCwxMCBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICByZXR1cm4gaXNWYWxpZFN0
cmljdE1vZGUgPyBCaW5kaW5nU3VjY2VlZGVkIDogU3RyaWN0QmluZGluZ0ZhaWxlZDsKICAgICB9
CiAKKyAgICB2b2lkIGdldFVzZWRWYXJpYWJsZXMoSWRlbnRpZmllclNldCYgdXNlZFZhcmlhYmxl
cykKKyAgICB7CisgICAgICAgIHVzZWRWYXJpYWJsZXMuc3dhcChtX3VzZWRWYXJpYWJsZXMpOwor
ICAgIH0KIAogICAgIHZvaWQgdXNlVmFyaWFibGUoY29uc3QgSWRlbnRpZmllciogaWRlbnQsIGJv
b2wgaXNFdmFsKQogICAgIHsKQEAgLTQxNCw2ICs0MTksNyBAQCBwdWJsaWM6CiAgICAgUGFzc1Jl
ZlB0cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYpOwogCiAgICAgSlNUZXh0UG9zaXRp
b24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4ZXItPnBv
c2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsgfQorICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3Ry
aW5nSW1wbD4+JiYgY2xvc2VkVmFyaWFibGVzKCkgeyByZXR1cm4gc3RkOjptb3ZlKG1fY2xvc2Vk
VmFyaWFibGVzKTsgfQogCiBwcml2YXRlOgogICAgIHN0cnVjdCBBbGxvd0luT3ZlcnJpZGUgewpA
QCAtNTQwLDcgKzU0Niw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIHBhcnNlSW5uZXIoKTsKIAog
ICAgIHZvaWQgZGlkRmluaXNoUGFyc2luZyhTb3VyY2VFbGVtZW50cyosIFBhcnNlckFyZW5hRGF0
YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+KiwgCi0gICAgICAgIFBhcnNlckFyZW5hRGF0
YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qLCBDb2RlRmVhdHVyZXMsIGludCwg
SWRlbnRpZmllclNldCYpOworICAgICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFj
a3M6OkZ1bmN0aW9uU3RhY2s+KiwgQ29kZUZlYXR1cmVzLCBpbnQsIElkZW50aWZpZXJTZXQmLCBj
b25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmKTsKIAogICAgIC8vIFVzZWQgdG8gZGV0
ZXJtaW5lIHR5cGUgb2YgZXJyb3IgdG8gcmVwb3J0LgogICAgIGJvb2wgaXNGdW5jdGlvbkJvZHlO
b2RlKFNjb3BlTm9kZSopIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC04NDAsOSArODQ2LDExIEBAIHBy
aXZhdGU6CiAgICAgY29uc3QgSWRlbnRpZmllciogbV9sYXN0RnVuY3Rpb25OYW1lOwogICAgIFJl
ZlB0cjxTb3VyY2VQcm92aWRlckNhY2hlPiBtX2Z1bmN0aW9uQ2FjaGU7CiAgICAgU291cmNlRWxl
bWVudHMqIG1fc291cmNlRWxlbWVudHM7CisgICAgYm9vbCBtX3BhcnNpbmdCdWlsdGluOwogICAg
IFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+KiBtX3ZhckRlY2xh
cmF0aW9uczsKICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9u
U3RhY2s+KiBtX2Z1bmNEZWNsYXJhdGlvbnM7CiAgICAgSWRlbnRpZmllclNldCBtX2NhcHR1cmVk
VmFyaWFibGVzOworICAgIFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+IG1fY2xvc2VkVmFyaWFi
bGVzOwogICAgIENvZGVGZWF0dXJlcyBtX2ZlYXR1cmVzOwogICAgIGludCBtX251bUNvbnN0YW50
czsKICAgICAKQEAgLTk1Nyw2ICs5NjUsMTAgQEAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBwYXJz
ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25QYXJhbWV0ZXIKICAg
ICAgICAgUmVmUHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2Rl
PihlcnJvcik7CiAgICAgICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAg
ICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVM
YXN0TmV3bGluZSgpOworICAgICAgICBpZiAoc3RyaWN0bmVzcyA9PSBKU1BhcnNlQnVpbHRpbikg
eworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKKyAgICAgICAgICAgIHJlc3Vs
dC0+c2V0Q2xvc2VkVmFyaWFibGVzKHN0ZDo6bW92ZShwYXJzZXIuY2xvc2VkVmFyaWFibGVzKCkp
KTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKICAgICB9CiAg
ICAgUGFyc2VyPExleGVyPFVDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIHBhcmFtZXRlcnMsIG5h
bWUsIHN0cmljdG5lc3MsIHBhcnNlck1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXJNb2Rlcy5oCmluZGV4IDRlOWExN2NkMjFjYTM0MTQ2YmJkNDgxNTZhMzcyY2Q0MDRk
ZWY2MGMuLmY3YTc1YmY3YzM3ODU3ZTQ0YjZkNWQ3MWY0NTI5YmIxYWMxY2Y1ZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKQEAgLTI5LDcgKzI5LDcgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gSlNQYXJzZXJTdHJpY3RuZXNzIHsgSlNQYXJzZU5v
cm1hbCwgSlNQYXJzZVN0cmljdCB9OworZW51bSBKU1BhcnNlclN0cmljdG5lc3MgeyBKU1BhcnNl
Tm9ybWFsLCBKU1BhcnNlQnVpbHRpbiwgSlNQYXJzZVN0cmljdCB9OwogZW51bSBKU1BhcnNlck1v
ZGUgeyBKU1BhcnNlUHJvZ3JhbUNvZGUsIEpTUGFyc2VGdW5jdGlvbkNvZGUgfTsKIAogZW51bSBQ
cm9maWxlck1vZGUgeyBQcm9maWxlck9mZiwgUHJvZmlsZXJPbiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXggODJhMjY2MzlhNzkyMjBhMDg0NDU2
YjQ4ZjMyODUyZDE0M2M3MzlkMC4uOGM4N2FkOWZhZGJkYzRhZjM5YWM5OWRiMmQ4NDQ1ZTEzZmZm
ZDM1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tl
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCkBA
IC0xNDksNiArMTQ5LDcgQEAgZW51bSBKU1Rva2VuVHlwZSB7CiAgICAgSU5WQUxJRF9OVU1FUklD
X0xJVEVSQUxfRVJST1JUT0sgPSA3IHwgRXJyb3JUb2tlbkZsYWcsCiAgICAgVU5URVJNSU5BVEVE
X1NUUklOR19MSVRFUkFMX0VSUk9SVE9LID0gOCB8IEVycm9yVG9rZW5GbGFnIHwgVW50ZXJtaW5h
dGVkRXJyb3JUb2tlbkZsYWcsCiAgICAgSU5WQUxJRF9TVFJJTkdfTElURVJBTF9FUlJPUlRPSyA9
IDkgfCBFcnJvclRva2VuRmxhZywKKyAgICBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSyA9
IDEwIHwgRXJyb3JUb2tlbkZsYWcKIH07CiAKIHN0cnVjdCBKU1RleHRQb3NpdGlvbiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCmluZGV4IDE4ZjM4OTE3MTM4NTIz
NjJjN2E3NWEzMDUzYjQ2MzE0MTdiZWI4MWIuLmYxNmZkM2RlNDA1NTk3MGJhOWQ5YzZmMGFlNjMx
OGYyMjA0YjY1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
Z3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5o
CkBAIC0yNSw2ICsyNSw3IEBACiAjZGVmaW5lIEFyZ3VtZW50c19oCiAKICNpbmNsdWRlICJDb2Rl
T3JpZ2luLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJKU0Fj
dGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgogI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcAppbmRleCBkZDA4OTRmMTRhMDIx
ZDVmMTI2NThhY2IwMWU3MjFmY2Q2ZDM0OGNjLi41YjRhZTg3MTZiMDU1M2JlNDYyMzk1NWU5OWUx
YjQzZWJmMThmZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCkBAIC0yNiw3ICsyNiw5IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5
cGUuaCIKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiSlNBcmd1
bWVudHNJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAKIG5hbWVz
cGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVBy
b3RvdHlwZS5jcHAKaW5kZXggMjdhYzZkNDhhNzFmNzk1NTAyYTEwY2VhNjQ3ODY1NDEzNWE0NjNh
MC4uNmRjN2JlNTY5NjlkZTY3ZjYyMTA3YmIzYTUxYTMwOGZhM2JhNzZiZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTQXJyYXlJdGVyYXRvci5oIgog
I2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTU3RyaW5nSm9pbmVyLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5j
bHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCkBAIC01Niw3ICs1Nyw2IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKik7CiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NvcnQoRXhl
Y1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3Rv
RnVuY1NwbGljZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGFycmF5UHJvdG9GdW5jVW5TaGlmdChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRXZlcnkoRXhlY1N0YXRlKik7CiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0ZvckVhY2goRXhl
Y1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3Rv
RnVuY1NvbWUoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvRnVuY0luZGV4T2YoRXhlY1N0YXRlKik7CkBAIC05NTQsNjkgKzk1NCw2IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNNYXAoRXhlY1N0YXRl
KiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0QXJyYXkpOwogfQogCi0v
LyBEb2N1bWVudGF0aW9uIGZvciB0aGVzZSB0aHJlZSBpcyBhdmFpbGFibGUgYXQ6Ci0vLyBodHRw
Oi8vZGV2ZWxvcGVyLXRlc3QubW96aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0phdmFTY3JpcHRfMS41
X1JlZmVyZW5jZTpPYmplY3RzOkFycmF5OmV2ZXJ5Ci0vLyBodHRwOi8vZGV2ZWxvcGVyLXRlc3Qu
bW96aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0phdmFTY3JpcHRfMS41X1JlZmVyZW5jZTpPYmplY3Rz
OkFycmF5OmZvckVhY2gKLS8vIGh0dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3ppbGxhLm9yZy9lbi9k
b2NzL0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6QXJyYXk6c29tZQotCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRXZlcnkoRXhlY1N0YXRl
KiBleGVjKQotewotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgp
LnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKLSAgICB1bnNpZ25lZCBs
ZW5ndGggPSB0aGlzT2JqLT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCku
dG9VSW50MzIoZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCi0gICAgSlNWYWx1ZSBmdW5j
dGlvbiA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENh
bGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBp
ZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjKTsKLQotICAgIEpTVmFsdWUgYXBwbHlUaGlzID0gZXhlYy0+YXJndW1lbnQoMSk7
Ci0KLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbih0cnVlKTsKLQotICAgIHVuc2lnbmVk
IGsgPSAwOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUpTICYmIGlzSlNBcnJheSh0aGlz
T2JqKSkgewotICAgICAgICBKU0Z1bmN0aW9uKiBmID0ganNDYXN0PEpTRnVuY3Rpb24qPihmdW5j
dGlvbik7Ci0gICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh0aGlzT2JqKTsKLSAgICAg
ICAgQ2FjaGVkQ2FsbCBjYWNoZWRDYWxsKGV4ZWMsIGYsIDMpOwotICAgICAgICBmb3IgKDsgayA8
IGxlbmd0aCAmJiAhZXhlYy0+aGFkRXhjZXB0aW9uKCk7ICsraykgewotICAgICAgICAgICAgaWYg
KFVOTElLRUxZKCFhcnJheS0+Y2FuR2V0SW5kZXhRdWlja2x5KGspKSkKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRUaGlzKGFw
cGx5VGhpcyk7Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDAsIGFycmF5LT5n
ZXRJbmRleFF1aWNrbHkoaykpOwotICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudCgx
LCBqc051bWJlcihrKSk7Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDIsIHRo
aXNPYmopOwotICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWNoZWRDYWxsLmNhbGwoKTsK
LSAgICAgICAgICAgIGlmICghcmVzdWx0LnRvQm9vbGVhbihleGVjKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwotICAgICAgICB9Ci0g
ICAgfQotICAgIGZvciAoOyBrIDwgbGVuZ3RoICYmICFleGVjLT5oYWRFeGNlcHRpb24oKTsgKytr
KSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmopOwotICAgICAgICBpZiAoIXRo
aXNPYmotPmdldFByb3BlcnR5U2xvdChleGVjLCBrLCBzbG90KSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotCi0gICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGVhY2hBcmd1bWVudHM7Ci0gICAg
ICAgIGVhY2hBcmd1bWVudHMuYXBwZW5kKHNsb3QuZ2V0VmFsdWUoZXhlYywgaykpOwotICAgICAg
ICBlYWNoQXJndW1lbnRzLmFwcGVuZChqc051bWJlcihrKSk7Ci0gICAgICAgIGVhY2hBcmd1bWVu
dHMuYXBwZW5kKHRoaXNPYmopOwotCi0gICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
LSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KLSAg
ICAgICAgYm9vbCBwcmVkaWNhdGVSZXN1bHQgPSBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlw
ZSwgY2FsbERhdGEsIGFwcGx5VGhpcywgZWFjaEFyZ3VtZW50cykudG9Cb29sZWFuKGV4ZWMpOwot
ICAgICAgICBpZiAoIXByZWRpY2F0ZVJlc3VsdCkgewotICAgICAgICAgICAgcmVzdWx0ID0ganNC
b29sZWFuKGZhbHNlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotfQotCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRm9yRWFjaChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAg
ICAgSlNPYmplY3QqIHRoaXNPYmogPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMs
IFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggNTEwZTM4M2ZhZTU3NWFhZGE4MTc2YzA0NDFlZTcyNWI0
M2E0YzczMi4uZDMwNDg3N2ZlOWNkZTFjMDkxOWZkNDU5NWY4MTFlY2FiY2U3NzI3NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC0xNDQsMjQgKzE0
NCwyNiBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hlOjpnZXRGdW5jdGlv
bkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShWTSYgdgogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0
aW9uQmVmb3JlTGFzdE5ld2xpbmU7CiAgICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtID0g
cGFyc2U8UHJvZ3JhbU5vZGU+KCZ2bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIEpTUGFyc2VO
b3JtYWwsIEpTUGFyc2VQcm9ncmFtQ29kZSwgZXJyb3IsICZwb3NpdGlvbkJlZm9yZUxhc3ROZXds
aW5lKTsKICAgICBpZiAoIXByb2dyYW0pIHsKLSAgICAgICAgQVNTRVJUKGVycm9yLm1fdHlwZSAh
PSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXJyb3Iu
bV90eXBlICE9IFBhcnNlckVycm9yOjpFcnJvck5vbmUpOwogICAgICAgICBtX3NvdXJjZUNvZGUu
cmVtb3ZlKGFkZFJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAog
ICAgIC8vIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBhbiBpbnB1dCBzdHJpbmcgdGhhdCB3b3VsZCBy
ZXN1bHQgaW4gYSBzaW5nbGUgYW5vbnltb3VzIGZ1bmN0aW9uIGV4cHJlc3Npb24uCiAgICAgU3Rh
dGVtZW50Tm9kZSogZXhwclN0YXRlbWVudCA9IHByb2dyYW0tPnNpbmdsZVN0YXRlbWVudCgpOwot
ICAgIEFTU0VSVChleHByU3RhdGVtZW50KTsKLSAgICBBU1NFUlQoZXhwclN0YXRlbWVudC0+aXNF
eHByU3RhdGVtZW50KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQpOworICAg
IFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKICAgICBF
eHByZXNzaW9uTm9kZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVtZW50Tm9kZSo+
KGV4cHJTdGF0ZW1lbnQpLT5leHByKCk7Ci0gICAgQVNTRVJUKGZ1bmNFeHByKTsKKyAgICBSRUxF
QVNFX0FTU0VSVChmdW5jRXhwcik7CiAgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHItPmlzRnVu
Y0V4cHJOb2RlKCkpOwogICAgIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkgPSBzdGF0aWNfY2FzdDxG
dW5jRXhwck5vZGUqPihmdW5jRXhwciktPmJvZHkoKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghcHJv
Z3JhbS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CisgICAgCiAgICAgYm9keS0+c2V0RW5kUG9z
aXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7Ci0gICAgQVNTRVJUKGJvZHkpOwotICAg
IEFTU0VSVChib2R5LT5pZGVudCgpLmlzTnVsbCgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5
KTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5LT5pZGVudCgpLmlzTnVsbCgpKTsKIAotICAgIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBib2R5LCB0cnVlKTsKKyAgICBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgYm9keSwgdHJ1ZSwgVW5saW5r
ZWROb3JtYWxGdW5jdGlvbik7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5tX25hbWVWYWx1ZS5z
ZXQodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwganNTdHJpbmcoJnZtLCBuYW1lLnN0cmluZygpKSk7
CiAKICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gU291cmNlQ29kZVZhbHVlKHZtLCBm
dW5jdGlvbkV4ZWN1dGFibGUsIG1fc291cmNlQ29kZS5hZ2UoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKaW5kZXggM2Y1YzY0
NWMwOThkNTI3ZmMwYzcyNTllOTQ0N2VmYmU4ODY4YTI5Yy4uMmZjMmI3MjdhZmNlZWUxZWMyYzYy
NWRlNTY3NWIzYmUxY2Y2MGQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcApAQCAtMjcsNyArMjcsMTAgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICNkZWZpbmUgSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKG5hbWUpICwgbmFtZSh2
bSwgI25hbWUpCiAjZGVmaW5lIElOSVRJQUxJWkVfS0VZV09SRChuYW1lKSAsIG5hbWUjI0tleXdv
cmQodm0sICNuYW1lKQotI2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFNRShuYW1lKSAsIG5h
bWUjI1ByaXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb20oUHJpdmF0ZU5hbWUoKSkpCisjZGVmaW5l
IElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKG5hbWUpIFwKKyAgICAsIG5hbWUjI1ByaXZhdGVOYW1l
KElkZW50aWZpZXI6OmZyb20oUHJpdmF0ZU5hbWUoKSkpIFwKKyAgICAsIG1fIyNuYW1lIyNQdWJs
aWNTdHJpbmdQYWlyKG5hbWUsIG5hbWUjI1ByaXZhdGVOYW1lKSBcCisKIAogQ29tbW9uSWRlbnRp
ZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZNKiB2bSkKICAgICA6IG51bGxJZGVudGlmaWVyKCkK
QEAgLTM4LDggKzQxLDI2IEBAIENvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyhW
TSogdm0pCiAgICAgLCBoYXNOZXh0SWRlbnRpZmllcih2bSwgImhhc05leHQiKQogICAgIEpTQ19D
T01NT05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKElOSVRJQUxJWkVfS0VZV09SRCkKICAgICBK
U0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpFX1BST1BF
UlRZX05BTUUpCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJ
WkVfUFJPUEVSVFlfTkFNRSkKICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFD
SF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKQogewogfQogCitjb25zdCBJ
ZGVudGlmaWVyKiBDb21tb25JZGVudGlmaWVyczo6Z2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQpIGNvbnN0Cit7CisjZGVmaW5lIFJFVFVSTl9JRl9QUklWQVRFX05BTUVfTUFU
Q0hFUyhuYW1lKSBpZiAobV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuZmlyc3QgPT0gaWRlbnQp
IHJldHVybiAmbV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuc2Vjb25kOworICAgIEpTQ19DT01N
T05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoUkVUVVJOX0lGX1BSSVZB
VEVfTkFNRV9NQVRDSEVTKQorI3VuZGVmIFJFVFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hFUwor
ICAgIHJldHVybiAwOworfQorCitJZGVudGlmaWVyIENvbW1vbklkZW50aWZpZXJzOjpnZXRQdWJs
aWNOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAoreworI2RlZmluZSBSRVRVUk5f
SUZfUFJJVkFURV9OQU1FX01BVENIRVMobmFtZSkgaWYgKG1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQ
YWlyLnNlY29uZCA9PSBpZGVudCkgcmV0dXJuIG1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQYWlyLmZp
cnN0OworICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05B
TUUoUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKQorI3VuZGVmIFJFVFVSTl9JRl9QUklW
QVRFX05BTUVfTUFUQ0hFUworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIGVtcHR5SWRlbnRpZmllcjsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCBl
OGY5ZWQ4MmJjNzk0NjIwMzgyNjZiMzAyMDc4MjI0N2IxZmEyN2EzLi45MjRkMzZhYzY5MTM1MDM1
N2NiMzgyYjFlZjNiNDBhMGEwOGMwYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTIyLDYgKzIyLDcgQEAKICNkZWZpbmUg
Q29tbW9uSWRlbnRpZmllcnNfaAogCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
IkpTQ0J1aWx0aW5zLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIC8vIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIG9mIHByb3BlcnR5IG5hbWVzLCBwYXNzZWQgdG8gYSBtYWNybyBzbyB3
ZSBjYW4gZG8gc2V0IHRoZW0gdXAgdmFyaW91cwpAQCAtMTMzLDggKzEzNCwxMCBAQAogICAgIG1h
Y3JvKG9zckV4aXRzKSBcCiAgICAgbWFjcm8ocGFyc2UpIFwKICAgICBtYWNybyhwcm9maWxlZEJ5
dGVjb2RlcykgXAorICAgIG1hY3JvKHByb21pc2UpIFwKICAgICBtYWNybyhwcm9wZXJ0eUlzRW51
bWVyYWJsZSkgXAogICAgIG1hY3JvKHByb3RvdHlwZSkgXAorICAgIG1hY3JvKHJlc29sdmUpIFwK
ICAgICBtYWNybyhzZXQpIFwKICAgICBtYWNybyhzaXplKSBcCiAgICAgbWFjcm8oc2xpY2UpIFwK
QEAgLTE1NSw3ICsxNTgsMTQgQEAKICAgICBtYWNybyh2YWx1ZXMpIFwKICAgICBtYWNybyh2YWx1
ZU9mKSBcCiAgICAgbWFjcm8od2luZG93KSBcCi0gICAgbWFjcm8od3JpdGFibGUpCisgICAgbWFj
cm8od3JpdGFibGUpIFwKKyAgICBtYWNybyhpdGVyYXRvcikgXAorICAgIG1hY3JvKGl0ZXJhdG9y
TmV4dCkgXAorICAgIG1hY3JvKHJlamVjdCkgXAorICAgIG1hY3JvKGZ1bGZpbGxtZW50SGFuZGxl
cikgXAorICAgIG1hY3JvKHJlamVjdGlvbkhhbmRsZXIpIFwKKyAgICBtYWNybyhkZWZlcnJlZCkg
XAorICAgIG1hY3JvKGNvdW50ZG93bkhvbGRlcikgXAogCiAjZGVmaW5lIEpTQ19DT01NT05fSURF
TlRJRklFUlNfRUFDSF9LRVlXT1JEKG1hY3JvKSBcCiAgICAgbWFjcm8oYnJlYWspIFwKQEAgLTIw
Myw3ICsyMTMsNyBAQAogICAgIG1hY3JvKHZvaWQpIFwKICAgICBtYWNybyh3aGlsZSkgXAogICAg
IG1hY3JvKHdpdGgpIFwKLSAgICBtYWNybyh5aWVsZCkKKyAgICBtYWNybyh5aWVsZCkgXAogCiAj
ZGVmaW5lIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUo
bWFjcm8pIFwKICAgICBtYWNybyhpdGVyYXRvcikgXApAQCAtMjE2LDcgKzIyNiwxMiBAQAogICAg
IG1hY3JvKGluZGV4KSBcCiAgICAgbWFjcm8odmFsdWVzKSBcCiAgICAgbWFjcm8oZGVmZXJyZWQp
IFwKLSAgICBtYWNybyhjb3VudGRvd25Ib2xkZXIpCisgICAgbWFjcm8oY291bnRkb3duSG9sZGVy
KSBcCisgICAgbWFjcm8oT2JqZWN0KSBcCisgICAgbWFjcm8oVHlwZUVycm9yKSBcCisgICAgbWFj
cm8odW5kZWZpbmVkS2V5d29yZCkgXAorICAgIG1hY3JvKGNhbGwpIFwKKyAgICBtYWNybyhhcHBs
eSkKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTI0MCwxMSArMjU1LDE1IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAKICNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJUWV9O
QU1FX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWU7CiAgICAgICAgIEpTQ19DT01N
T05fSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVf
UFJPUEVSVFlfTkFNRV9HTE9CQUwpCisgICAgICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJ
T05fTkFNRShKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFMKQogI3Vu
ZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwKIAotI2RlZmlu
ZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwobmFt
ZSkgY29uc3QgSWRlbnRpZmllciBuYW1lIyNQcml2YXRlTmFtZTsKKyNkZWZpbmUgSlNDX0lERU5U
SUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMKG5hbWUpIGNvbnN0IElk
ZW50aWZpZXIgbmFtZSMjUHJpdmF0ZU5hbWU7IGNvbnN0IHN0ZDo6cGFpcjxJZGVudGlmaWVyLCBJ
ZGVudGlmaWVyPiBtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpcjsKICAgICAgICAgSlNDX0NPTU1P
Tl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShKU0NfSURFTlRJRklFUl9E
RUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwpCiAjdW5kZWYgSlNDX0lERU5USUZJ
RVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMCisgICAgICAgIAorICAgICAg
ICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29u
c3Q7CisgICAgICAgIElkZW50aWZpZXIgZ2V0UHVibGljTmFtZShjb25zdCBJZGVudGlmaWVyJikg
Y29uc3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCAwNzU4NzVmYjIzMTZh
NTU1NzA1MGE2NjkwY2QwZjk4ODI0ODRmNWYzLi41YWY5MDg3NTRlNzQ3ZjhjYWUwY2QwNGFmOGQ0
OTE1MDA0NjhjMmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNp
bmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgotI2luY2x1ZGUg
IkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNp
bmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwCmlu
ZGV4IDU1MzM0YmUyZjk4MGE5OGY3ZmVhNDJhMDViZTBmMjBjMDE5ZmYwZGQuLmZhNTdjMDI2ODVl
NTNkNTI1Mjg4MDU3ZTIxMWQ5OGIxMDk4MWQ3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwCkBA
IC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJMTElu
dENvbW1vbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIENvbW1vblNsb3dQYXRocyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxw
ZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMu
Y3BwCmluZGV4IDA1ZTExZTBiODBhMzQzMGFlYWIyMmIwMjIyYTIxMmY0YThlMmM0OWIuLjM2NGNj
NzE2NjYwOGI1MDA3ZDQ3N2Q4NzM5MThhNWQ2NGIxNjg2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC04MSw2ICs4MSwx
MSBAQCBKU09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCiAKIEpTT2JqZWN0KiBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7CisgICAgCisgICAgaWYg
KGlkZW50LmltcGwoKS0+aXNFbXB0eVVuaXF1ZSgpKSB7CisgICAgICAgIFN0cmluZyBtZXNzYWdl
KG1ha2VTdHJpbmcoIkNhbid0IGZpbmQgcHJpdmF0ZSB2YXJpYWJsZTogQCIsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5nZXRQdWJsaWNOYW1lKGlkZW50KS5zdHJpbmcoKSkpOworICAgICAgICByZXR1
cm4gY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgbWVzc2FnZSk7CisgICAgfQogICAgIFN0cmlu
ZyBtZXNzYWdlKG1ha2VTdHJpbmcoIkNhbid0IGZpbmQgdmFyaWFibGU6ICIsIGlkZW50LnN0cmlu
ZygpKSk7CiAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIG1lc3NhZ2UpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IDE5ODk3
NmJiM2ZlNmU2ZTkxMTc5ODEyZDFjYWY5YjhiZjliZmQwYmIuLjhkNTkwZWYwZmZjMGViOTBhYzhm
OWE4MWQ5YmMyNTcyMWNkMzVjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmgKQEAgLTQ4NCw3ICs0ODQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFy
Q29kZSgpOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJl
dHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJp
Y3RNb2RlKCksIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkg
Y29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFs
KCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UpOyB9CiAKICAgICB1bnNpZ25lZCBudW1W
YXJpYWJsZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVz
KCk7IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3Vu
bGlua2VkRXZhbENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KQEAgLTU0MCw3
ICs1NDAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyQ29kZSgpOwogCi0gICAgRXhlY3V0
YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhu
ZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlKTsgfQor
ICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0
YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBm
YWxzZSwgZmFsc2UpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1
dGFibGU7CkBAIC02MjgsNyArNjI4LDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJu
IGJhc2VsaW5lQ29kZUJsb2NrRm9yKGtpbmQpOwogICAgIH0KLSAgICAgICAgCisKKyAgICBib29s
IGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUt
PmlzQnVpbHRpbkZ1bmN0aW9uKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lKCkgeyBy
ZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWUoKTsgfQogICAgIGNvbnN0IElkZW50aWZp
ZXImIGluZmVycmVkTmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pbmZlcnJl
ZE5hbWUoKTsgfQogICAgIEpTU3RyaW5nKiBuYW1lVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3Vu
bGlua2VkRXhlY3V0YWJsZS0+bmFtZVZhbHVlKCk7IH0KQEAgLTY3NSwxNCArNjc2LDYgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fYm9keUluY2x1ZGVzQnJhY2VzOwogfTsKIAotaW5saW5lIGJvb2wg
aXNIb3N0RnVuY3Rpb24oSlNWYWx1ZSB2YWx1ZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rp
b24pCi17Ci0gICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGdl
dEpTRnVuY3Rpb24odmFsdWUpKTsKLSAgICBpZiAoIWZ1bmN0aW9uIHx8ICFmdW5jdGlvbi0+aXNI
b3N0RnVuY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBmdW5jdGlv
bi0+bmF0aXZlRnVuY3Rpb24oKSA9PSBuYXRpdmVGdW5jdGlvbjsKLX0KLQogaW5saW5lIHZvaWQg
RXhlY3V0YWJsZUJhc2U6OmNsZWFyQ29kZVZpcnR1YWwoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFi
bGUpCiB7CiAgICAgc3dpdGNoIChleGVjdXRhYmxlLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50
eXBlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
UHJvdG90eXBlLmNwcAppbmRleCBjMWIwOGFmMmQ4MThkYWU1N2UxYjAwZmRhMTczYTgxNjEzNzUy
OWI1Li4xMjQ5MGM0MGYzMzQxN2VjYTkyMzg1MGEwZGM2NjJkYmJjZDQwZjMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBA
IC0yMiwxMiArMjIsMTMgQEAKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgogCiAjaW5j
bHVkZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJK
U0FycmF5LmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdCdWlsZGVy
LmgiCi0jaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMu
aCIKICNpbmNsdWRlICJMZXhlci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIApAQCAtMTA4
LDcgKzEwOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1
bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT5ob3N0VGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0cyhKU0Z1bmN0aW9u
OjppbmZvKCkpKSB7CiAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVu
Y3Rpb24qPih0aGlzVmFsdWUpOwotICAgICAgICBpZiAoZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9u
KCkpCisgICAgICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhl
eGVjLCAiZnVuY3Rpb24gIiwgZnVuY3Rpb24tPm5hbWUoZXhlYyksICIoKSB7XG4gICAgW25hdGl2
ZSBjb2RlXVxufSIpKTsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0g
ZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpOwogICAgICAgICBTdHJpbmcgc291cmNlU3RyaW5nID0g
ZXhlY3V0YWJsZS0+c291cmNlKCkudG9TdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCmluZGV4IDcyZWQxYzcxMjQwNjExNjhiMGFkZGQz
MTE2Zjc1NWExMTdiOGZiOTAuLmIzNzQ5NDMwOTllMjE1NWEzOTc3MTMzMTM0NzAyYzJhMjRhY2M4
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlv
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNw
cApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIEpTQWN0aXZhdGlvbjo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogCiBpbmxpbmUgYm9vbCBKU0FjdGl2YXRp
b246OnN5bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+
aW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlRW50
cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnVpZCgpKTsK
ICAgICBpZiAoZW50cnkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzIs
NyArNzIsNyBAQCBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlR2V0KFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdAogCiBpbmxpbmUgYm9vbCBKU0FjdGl2
YXRpb246OnN5bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0g
c3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAg
IFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVy
dHlOYW1lLnVpZCgpKTsKICAgICBpZiAoZW50cnkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApAQCAtODksNyArODksNyBAQCBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJv
bFRhYmxlUHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TgogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFw
OjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMpKTsKICAgICAKLSAgICBTeW1ib2xUYWJs
ZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJs
aWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5p
bmxpbmVHZXQocHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoZW50cnkuaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoZW50cnkuaXNSZWFkT25seSgpKSB7CkBAIC0x
MzYsNyArMTM2LDcgQEAgaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdp
dGhBdHRyaWJ1dGVzKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3AKICAgICBXcml0ZUJhcnJpZXJC
YXNlPFVua25vd24+KiByZWc7CiAgICAgewogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxv
Y2tlcihzeW1ib2xUYWJsZSgpLT5tX2xvY2spOwotICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjpp
dGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUoKS0+ZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5w
dWJsaWNOYW1lKCkpOworICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0g
c3ltYm9sVGFibGUoKS0+ZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgICAg
IGlmIChpdGVyID09IHN5bWJvbFRhYmxlKCktPmVuZChsb2NrZXIpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5JiBlbnRyeSA9IGl0ZXItPnZhbHVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJ
dGVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0
ZXJhdG9yLmNwcAppbmRleCAyZmNmODgxNWMwNTY4MDU4MTJhNzk5MWE1ZmYwNjNkNjg3Mzk3MTY0
Li45YTkyNTgzYWEwZWM5MGRiYjMyOGVjZDUwZGMzMTM5YWVmMDI3M2I1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcApA
QCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkpTQXJndW1lbnRzSXRlcmF0b3IuaCIKIAogI2lu
Y2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAKIG5h
bWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3Bw
CmluZGV4IDkwMDdiNWY3ZDNmMTAzYjFkMjFiMWEzNjVhMjZjMjE1YzMyYjRkMjguLmJhMGEyZDM4
ZTljNTNlMTU5MzdkNDZhODk1MWE4YzhjNDUwNzkyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRXhlY3V0
YWJsZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkluZGV4aW5nSGVh
ZGVySW5saW5lcy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIlBy
b3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSAiUmVqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL0FW
TFRyZWUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAK
aW5kZXggY2NhNjg4OGJmOThhMDI4NjQ2Y2EzZGRkZjM3NjI3Y2UwZTdkOTMwMi4uMzM5YTdhYjdm
NTk1MTVlOTZhZmI3ZWM0Yjg3NDFlN2FhOGUxNjZmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAgLTMyLDcgKzMyLDkgQEAKICNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU05v
dEFuT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTnVt
YmVyT2JqZWN0LmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKaW5kZXggZjdjODQ0NjQ1MDkyYjI1
MDgwNWU2ZThkNDgzMmM5OThiZGI4OWI1NC4uZDc5NWRkNTZhOTdkZGI1OTdjMDkwZmMyZTBiN2Yz
MDhlMzNlYmNhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElu
bGluZXMuaApAQCAtMjcsOCArMjcsMTAgQEAKICNkZWZpbmUgSlNDZWxsSW5saW5lc19oCiAKICNp
bmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2lu
Y2x1ZGUgIkRlZmVyR0MuaCIKICNpbmNsdWRlICJIYW5kbGUuaCIKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5jcHAKaW5kZXggMjQxOTY0NjEwYmI0NDI3YjE4NjM3MzM0NmUyNGY1YTgyZDBj
ZGNjNC4uYWNlNmMxNDdlNDk3ZmVlMjAyOTJmYjU1Mzk3NjBkNWQ2OTgyOWNlOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTM0LDcgKzM0LDgg
QEAKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRl
ci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKLSNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIg
CisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTm90QW5PYmpl
Y3QuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtMTA5LDYgKzExMCwxNCBAQCB2b2lk
IEpTRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgTmF0aXZlRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSwgaW50IGxlbmd0aAogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51
bSk7CiB9CiAKK0pTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihW
TSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKK3sKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNyZWF0ZSh2bSwgZXhl
Y3V0YWJsZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBmdW5jdGlvbi0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZygmdm0sIGV4ZWN1dGFibGUtPm5hbWUoKS5zdHJp
bmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBmdW5jdGlvbi0+
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKGV4ZWN1dGFi
bGUtPnBhcmFtZXRlckNvdW50KCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7
CisgICAgcmV0dXJuIGZ1bmN0aW9uOworfQorCiBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSogSlNG
dW5jdGlvbjo6Y3JlYXRlQWxsb2NhdGlvblByb2ZpbGUoRXhlY1N0YXRlKiBleGVjLCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHkpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTE0Miw3ICsx
NTEsNyBAQCBjb25zdCBTdHJpbmcgSlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKEV4
ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIGV4cGxpY2l0TmFtZTsKICAgICAKICAgICBj
b25zdCBTdHJpbmcgYWN0dWFsTmFtZSA9IG5hbWUoZXhlYyk7Ci0gICAgaWYgKCFhY3R1YWxOYW1l
LmlzRW1wdHkoKSB8fCBpc0hvc3RGdW5jdGlvbigpKQorICAgIGlmICghYWN0dWFsTmFtZS5pc0Vt
cHR5KCkgfHwgaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIGFjdHVh
bE5hbWU7CiAgICAgCiAgICAgcmV0dXJuIGpzRXhlY3V0YWJsZSgpLT5pbmZlcnJlZE5hbWUoKS5z
dHJpbmcoKTsKQEAgLTE1MCwxMCArMTU5LDIwIEBAIGNvbnN0IFN0cmluZyBKU0Z1bmN0aW9uOjpj
YWxjdWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQogCiBjb25zdCBTb3VyY2VDb2Rl
KiBKU0Z1bmN0aW9uOjpzb3VyY2VDb2RlKCkgY29uc3QKIHsKLSAgICBpZiAoaXNIb3N0RnVuY3Rp
b24oKSkKKyAgICBpZiAoaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgcmV0dXJuICZqc0V4ZWN1dGFibGUoKS0+c291cmNlKCk7CiB9CisgICAgCitib29s
IEpTRnVuY3Rpb246OmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gaXNIb3N0RnVuY3Rpb24oKSB8fCBpc0J1aWx0aW5GdW5jdGlvbigpOworfQorCitib29sIEpT
RnVuY3Rpb246OmlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWlzSG9z
dEZ1bmN0aW9uKCkgJiYganNFeGVjdXRhYmxlKCktPmlzQnVpbHRpbkZ1bmN0aW9uKCk7Cit9CiAK
IHZvaWQgSlNGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogewpAQCAtMjc3LDcgKzI5Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTRnVuY3Rp
b246OmNhbGxlckdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHNsb3RCYXNl
CiAgICAgaWYgKCFjYWxsZXIuaXNPYmplY3QoKSB8fCAhYXNPYmplY3QoY2FsbGVyKS0+aW5oZXJp
dHMoSlNGdW5jdGlvbjo6aW5mbygpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
YWxsZXIpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihj
YWxsZXIpOwotICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSB8fCAhZnVuY3Rpb24t
PmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkKKyAgICBpZiAoZnVuY3Rpb24tPmlzSG9z
dE9yQnVpbHRpbkZ1bmN0aW9uKCkgfHwgIWZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJp
Y3RNb2RlKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbGVyKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
RnVuY3Rpb24uY2FsbGVyIHVzZWQgdG8gcmV0cmlldmUgc3RyaWN0IGNhbGxlciIpKSk7CiB9CkBA
IC0yOTksNyArMzE4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNGdW5jdGlvbjo6bmFtZUdldHRlcihF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBzbG90QmFzZSwgRW5jb2QKIGJvb2wgSlNGdW5jdGlv
bjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpT
RnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdCk7Ci0gICAg
aWYgKHRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgaWYgKHRoaXNPYmplY3QtPmlz
SG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIAogICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSkgewpAQCAt
MzYxLDcgKzM4MCw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiB2b2lkIEpTRnVuY3Rpb246
OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUg
bW9kZSkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24q
PihvYmplY3QpOwotICAgIGlmICghdGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSAmJiAobW9k
ZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgeworICAgIGlmICghdGhpc09iamVjdC0+
aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSAmJiAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKSkgewogICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90eXBlIGhhcyBiZWVuIHJlaWZp
ZWQuCiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QpOwogICAgICAgICB0aGlz
T2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhl
YywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgc2xvdCk7CkBAIC0zNzcsNyArMzk2
LDcgQEAgdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLAogdm9pZCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKLSAgICBpZiAodGhpc09iamVjdC0+
aXNIb3N0RnVuY3Rpb24oKSkgeworICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5G
dW5jdGlvbigpKSB7CiAgICAgICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQyNSw3ICs0
NDQsNyBAQCBib29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcAogYm9vbCBKU0Z1bmN0aW9uOjpkZWZpbmVP
d25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9v
bCB0aHJvd0V4Y2VwdGlvbikKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RGdW5jdGlv
bigpKQorICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQogICAg
ICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKTsKIAogICAgIGlmIChwcm9wZXJ0eU5h
bWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDdjZDE0YjhjMmQ4MDBmNjFiZGMxMmVk
ZDJkZjA0ZDM1ZmEwNjE5YjYuLjhjZDk1MGM0YWI0MmU5MzUzYmQ3OGQ5NDI3YmFlZDhjNjljZDIy
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTY4
LDYgKzY4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb247
CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGVC
dWlsdGluRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0dsb2JhbE9iamVjdCop
OworICAgICAgICAKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAg
ICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBuYW1lKEV4ZWNTdGF0ZSopOwpA
QCAtMTQ1LDYgKzE0NywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBt
X2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDsKICAgICAgICAgfQogCisgICAgICAgIGJvb2wg
aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc0J1aWx0aW5G
dW5jdGlvbigpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzSG9zdEZ1
bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGNvbnN0
IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5
U2xvdCB8IEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBP
dmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCkBA
IC0xNjksOCArMTc1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAgCi0gICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsKLQog
ICAgICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKICAgICAgICAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIGNhbGxlckdldHRlcihFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKaW5kZXggZmU0ZTExNGFkYmMyMzY3NGQzYjYwZTYx
ZjcxY2I3YTA2Yzk0Nzg0ZC4uNjlmMGQ0ZjM5NmVmOWMyZGE5ZTBiZjYwOGMyNjQ0MTcxNzk5YmE1
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5s
aW5lcy5oCkBAIC01MywxNiArNTMsMjQgQEAgaW5saW5lIGJvb2wgSlNGdW5jdGlvbjo6aXNIb3N0
RnVuY3Rpb24oKSBjb25zdAogCiBpbmxpbmUgTmF0aXZlRnVuY3Rpb24gSlNGdW5jdGlvbjo6bmF0
aXZlRnVuY3Rpb24oKQogewotICAgIEFTU0VSVChpc0hvc3RGdW5jdGlvbigpKTsKKyAgICBBU1NF
UlQoaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5h
dGl2ZUV4ZWN1dGFibGUqPihtX2V4ZWN1dGFibGUuZ2V0KCkpLT5mdW5jdGlvbigpOwogfQogCiBp
bmxpbmUgTmF0aXZlRnVuY3Rpb24gSlNGdW5jdGlvbjo6bmF0aXZlQ29uc3RydWN0b3IoKQogewot
ICAgIEFTU0VSVChpc0hvc3RGdW5jdGlvbigpKTsKKyAgICBBU1NFUlQoaXNIb3N0RnVuY3Rpb25O
b25JbmxpbmUoKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5hdGl2ZUV4ZWN1dGFibGUqPiht
X2V4ZWN1dGFibGUuZ2V0KCkpLT5jb25zdHJ1Y3RvcigpOwogfQogCitpbmxpbmUgYm9vbCBpc0hv
c3RGdW5jdGlvbihKU1ZhbHVlIHZhbHVlLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbikK
K3sKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZ2V0SlNG
dW5jdGlvbih2YWx1ZSkpOworICAgIGlmICghZnVuY3Rpb24gfHwgIWZ1bmN0aW9uLT5pc0hvc3RG
dW5jdGlvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGZ1bmN0aW9uLT5u
YXRpdmVGdW5jdGlvbigpID09IG5hdGl2ZUZ1bmN0aW9uOworfQorCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIAogI2VuZGlmIC8vIEpTRnVuY3Rpb25JbmxpbmVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCmluZGV4IDJkZGMyOWY3MTg5N2JiNTFkMzkwYjA2
YjI1YTczODMzODc0YmEwYzEuLmVkZDM0NDljZTQ3YjE3MzVlOGU1ZGJiMDVmMzE4ZTNkNTVmM2Jl
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaApA
QCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVj
dG9ySW5saW5lc19oCiAjZGVmaW5lIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJ
bmxpbmVzX2gKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRXJy
b3IuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRl
eCA2ZGI4NjI3NGMzYjg3NGFhYWRlNTE1MTg5ODI2NzI2ZmIxMzZjMTczLi5mMjRlYTczMDNkZjk2
OWRiZDJkY2E1MmM4NmQxMWM3OGMwMGRiOWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMu
aApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGlu
ZXNfaAogCiAjaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCisjaW5jbHVkZSAiQ29tbW9uSWRl
bnRpZmllcnMuaCIKICNpbmNsdWRlICJEZWZlckdDLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNp
bmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJv
dG90eXBlSW5saW5lcy5oCmluZGV4IDQ1OTk5N2E0NjRiOTExOTQ3N2IxYmU4NGUzNmM0ZTI5NjZh
Y2VmODUuLjhlNWZmODI3OTFlNmZmOGQ0ZWI5YzM3MzY5MWU0MzNlYjdkMTZhZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
UHJvdG90eXBlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaWZuZGVmIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lc19oCiAjZGVm
aW5lIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lc19oCiAKKyNpbmNsdWRl
ICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAyYzI3NGMxYTdk
NDgxYzA3ZGYwZDJiZWIzYjI5MzFhMzkwN2E1ZTY2Li4wNmU1NGM4NGU3N2I5MDMyYmFhMWQyZGY0
N2ExYzcyZTgwYjdkZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCkBAIC0zNDYsNyArMzQ2LDggQEAgdm9pZCBKU0dsb2JhbE9iamVj
dDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAKICAgICAvLyBDb25zdHJ1Y3RvcnMKIAotICAg
IEpTQ2VsbCogb2JqZWN0Q29uc3RydWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZt
LCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9u
UHJvdG90eXBlLmdldCgpKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOworICAgIE9iamVjdENv
bnN0cnVjdG9yKiBvYmplY3RDb25zdHJ1Y3RvciA9IE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUo
dm0sIE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rp
b25Qcm90b3R5cGUuZ2V0KCkpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9vYmpl
Y3RDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIG9iamVjdENvbnN0cnVjdG9yKTsKICAgICBKU0Nl
bGwqIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0s
IEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlv
blByb3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwogICAgIEpTQ2Vs
bCogYXJyYXlDb25zdHJ1Y3RvciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgQXJyYXlD
b25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBl
LmdldCgpKSwgbV9hcnJheVByb3RvdHlwZS5nZXQoKSk7CiAKQEAgLTQzMiw3ICs0MzMsMTAgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgR2xvYmFs
UHJvcGVydHlJbmZvIHN0YXRpY0dsb2JhbHNbXSA9IHsKICAgICAgICAgR2xvYmFsUHJvcGVydHlJ
bmZvKHZtLnByb3BlcnR5TmFtZXMtPk5hTiwganNOYU4oKSwgRG9udEVudW0gfCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+SW5maW5pdHksIGpzTnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5p
dHkoKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQsIGpzVW5kZWZp
bmVkKCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KQorICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCwganNVbmRlZmlu
ZWQoKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZFByaXZhdGVOYW1l
LCBqc1VuZGVmaW5lZCgpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5PYmplY3RQcml2YXRlTmFt
ZSwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwK
KyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPlR5cGVFcnJvclBy
aXZhdGVOYW1lLCBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSB8IERvbnRE
ZWxldGUgfCBSZWFkT25seSkKICAgICB9OwogICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xv
YmFscywgV1RGX0FSUkFZX0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CiAgICAgCkBAIC02MDgsNiAr
NjEyLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X3N5bnRheEVycm9yQ29uc3RydWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX3R5cGVFcnJvckNvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9VUklFcnJvckNvbnN0cnVjdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9vYmplY3RDb25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fcHJvbWlzZUNvbnN0cnVjdG9yKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2V2YWxGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAppbmRleCBiMGNhZDNkYzU0NzBmN2M3YTBlNTcwYmRjZDJkZmZhODk1ZTJh
YTBjLi4zYTYxNmM2ZjA1ZWRmMWQyOTVhZjg0NDFhYTY2NTAwZmI5MmE0YTQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTY3LDYgKzY3
LDcgQEAgY2xhc3MgSlNTdGFjazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNz
IE1pY3JvdGFzazsKIGNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I7CitjbGFzcyBPYmplY3RD
b25zdHJ1Y3RvcjsKIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBQcm9ncmFtRXhlY3V0
YWJsZTsKIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yOwpAQCAtMTU4LDYgKzE1OSw3IEBAIHByb3Rl
Y3RlZDoKICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV90eXBlRXJy
b3JDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4g
bV9VUklFcnJvckNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VDb25zdHJ1
Y3Rvcj4gbV9wcm9taXNlQ29uc3RydWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPE9iamVjdENvbnN0
cnVjdG9yPiBtX29iamVjdENvbnN0cnVjdG9yOwogCiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rp
b24+IG1fZXZhbEZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2NhbGxG
dW5jdGlvbjsKQEAgLTMzMCw2ICszMzIsNyBAQCBwdWJsaWM6CiAgICAgUmVnRXhwQ29uc3RydWN0
b3IqIHJlZ0V4cENvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBDb25zdHJ1Y3Rv
ci5nZXQoKTsgfQogCiAgICAgRXJyb3JDb25zdHJ1Y3RvciogZXJyb3JDb25zdHJ1Y3RvcigpIGNv
bnN0IHsgcmV0dXJuIG1fZXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQorICAgIE9iamVjdENvbnN0
cnVjdG9yKiBvYmplY3RDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0Q29uc3Ry
dWN0b3IuZ2V0KCk7IH0KICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBldmFsRXJyb3JDb25z
dHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXZhbEVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0K
ICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiByYW5nZUVycm9yQ29uc3RydWN0b3IoKSBjb25z
dCB7IHJldHVybiBtX3JhbmdlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgIE5hdGl2ZUVy
cm9yQ29uc3RydWN0b3IqIHJlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVy
biBtX3JlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KQEAgLTU4MSw3ICs1ODQsNyBA
QCBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6aGFzT3duUHJvcGVydHlGb3JXcml0ZShFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZQogCiBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6
c3ltYm9sVGFibGVIYXNQcm9wZXJ0eShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAg
IFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVy
dHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJv
bFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIHJldHVybiAhZW50
cnkuaXNOdWxsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcAppbmRleCAyYjY3YTFkOWVlZDg0ZTk5NTZmOGJiOTY4Mzg0Yzg0Y2FlYTUzY2ZmLi4yZWEy
YzI0ZTZlYWI0Y2QwZDdmZmVkNjY1ZWY0YWU0MWFmMDc1MGYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBnZXRDbGFzc1Byb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDbGFz
c0luZm8qIGNsYXNzCiAgICAgICAgIGludCBoYXNoU2l6ZU1hc2sgPSB0YWJsZS0+Y29tcGFjdFNp
emUgLSAxOwogICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gdGFibGUtPnRhYmxlOwog
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8PSBoYXNoU2l6ZU1hc2s7ICsraSwgKytlbnRyeSkg
ewotICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkoKSAmJiAoIShlbnRyeS0+YXR0cmlidXRlcygp
ICYgRG9udEVudW0pIHx8IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKSAmJiAh
KChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pICYmIGRpZFJlaWZ5KSkKKyAgICAgICAg
ICAgIGlmIChlbnRyeS0+a2V5KCkgJiYgKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIERvbnRFbnVt
KSB8fCAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgJiYgISgoZW50cnktPmF0
dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSAmJiBkaWRSZWlmeSkpCiAgICAgICAgICAg
ICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZW50cnktPmtleSgpKTsKICAgICAgICAgfQogICAgIH0K
QEAgLTE2MTgsNyArMTYxOCw3IEBAIHZvaWQgSlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25z
Rm9yRGVsZXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzKTsKICAgICAgICAgZm9yIChIYXNoVGFibGU6OkNvbnN0
SXRlcmF0b3IgaXRlciA9IGhhc2hUYWJsZS0+YmVnaW4odm0pOyBpdGVyICE9IGhhc2hUYWJsZS0+
ZW5kKHZtKTsgKytpdGVyKSB7Ci0gICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygpICYg
RnVuY3Rpb24pCisgICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9y
RnVuY3Rpb24pCiAgICAgICAgICAgICAgICAgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoZ2xvYmFs
T2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgKml0ZXIsIHRoaXMsIElkZW50aWZpZXIoJnZtLCBpdGVy
LT5rZXkoKSksIHNsb3QpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjIzNiw2ICsyMjM2LDE2IEBA
IHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uCiAgICAgcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUs
IGZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsKIH0KIAordm9pZCBKU09iamVjdDo6cHV0RGlyZWN0QnVp
bHRpbkZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
UHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25F
eGVjdXRhYmxlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQoreworICAgIFN0cmluZ0ltcGwqIG5hbWUg
PSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOworICAgIGlmICghbmFtZSkKKyAgICAgICAgbmFt
ZSA9IHZtLnByb3BlcnR5TmFtZXMtPmFub255bW91cy5pbXBsKCk7CisgICAgQVNTRVJUKG5hbWUp
OworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1
bmN0aW9uKHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1
dGFibGUpLCBnbG9iYWxPYmplY3QpOworICAgIHB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCBm
dW5jdGlvbiwgYXR0cmlidXRlcyk7Cit9CisKIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgZnVuY3Rp
b25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmlu
c2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9w
ZXJ0eU5hbWUucHVibGljTmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmgKaW5kZXggMDJiMTM3YjM1MGMyZmE4MzI1YmQzYjk2NDcxMTJhYmU4NzZmMzgzZi4uZGRl
NTk3ZWZmYWVjMGYxYjhkNDRjMjkxMTk1MDMwMWYwNjAwN2U5OCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQnV0
dGVyZmx5LmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ2xhc3NJbmZvLmgi
Ci0jaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJDb3B5V3JpdGVCYXJy
aWVyLmgiCiAjaW5jbHVkZSAiRGVmZXJHQy5oIgogI2luY2x1ZGUgIkhlYXAuaCIKQEAgLTU4MSw2
ICs1ODAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXREaXJlY3RVbmRlZmluZWQoUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0KSB7IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNldFVuZGVmaW5lZCgp
OyB9CiAKICAgICB2b2lkIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZl
RnVuY3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgdm9pZCBwdXRE
aXJlY3RCdWlsdGluRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5
TmFtZSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIHZv
aWQgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYsIEpTR2xvYmFs
T2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5h
dGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wg
c2hvdWxkVGhyb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9taXNlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCmluZGV4IDQwMjYxOTYzM2ZhMDZmZDI1NGIzZjJhN2E4
Y2M3MWU4MDdhYWY5MTEuLjE3ZDJhYjY1YTg4ZmZiMTNmYTlhNmM4ZjU4M2NhODQ0YWY4MzIyNDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VD
b25zdHJ1Y3Rvci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJKU1Byb21pc2VEZWZl
cnJlZC5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZUZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTUHJv
bWlzZVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUg
Ikxvb2t1cC5oIgogI2luY2x1ZGUgIk51bWJlck9iamVjdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVy
ZUlubGluZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKaW5kZXggNjhhOGJkODdkMzhhZGJiYjlkZDJhYzll
YzRiNDlkNWVmNDU0OWQ1Ni4uMjM3YzQyYmIwZGEwZjE2Njc2ZWIxMWFkZTgxODBhN2IwNmQ5OGVi
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5jcHAKQEAgLTI5LDcgKzI5LDkgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAKKyNpbmNsdWRlICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAi
T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmgKaW5kZXggZjQzNjJmZjM1NGVlNmE1MDIyMWJiNzMxZDFhMjYxMWU2
ZGQ2MWJjMC4uZDA3MzcxOWRlMTYwZDJmMjkyMTEwYTU5NmExMDVlMmZhMjExNWZmYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRl
cmF0b3IuaApAQCAtMzEsNyArMzEsNiBAQAogCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNs
dWRlICJKU1N0cmluZy5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQcm9w
ZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1ZGUgPG1lbW9yeT4KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXggMmIxY2RkZGM1ODQxZDYwZDE1N2EyZTYxZjcwMmIw
ZWU1ZmExZDY3Ni4uZTM5MzQxNjBhZWE5MjZlZjE1OTMyZjg3OTBlMjRjNTJhZjAyZDM1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC0yNCw3ICsyNCw2IEBA
CiAjZGVmaW5lIEpTU3RyaW5nX2gKIAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgotI2luY2x1ZGUg
IkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IlByb3BlcnR5RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgpAQCAtNDcy
LDMzICs0NzEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9u
dHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4g
anNOb250cml2aWFsU3RyaW5nKCZleGVjLT52bSgpLCBzKTsgfQogICAgIGlubGluZSBKU1N0cmlu
ZyoganNPd25lZFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1
cm4ganNPd25lZFN0cmluZygmZXhlYy0+dm0oKSwgcyk7IH0KIAotICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQotICAgIHsKLSAgICAg
ICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7Ci0g
ICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5LCBqc051bWJlcihtX2xlbmd0aCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIH0KLQotICAgICAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsK
LSAgICAgICAgaWYgKGkgPCBtX2xlbmd0aCkgewotICAgICAgICAgICAgQVNTRVJUKGkgIT0gUHJv
cGVydHlOYW1lOjpOb3RBbkluZGV4KTsgLy8gTm8gbmVlZCBmb3IgYW4gZXhwbGljaXQgY2hlY2ss
IHRoZSBhYm92ZSB0ZXN0IHdvdWxkIGFsd2F5cyBmYWlsIQotICAgICAgICAgICAgc2xvdC5zZXRW
YWx1ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIGkpKTsKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLSAgICAgICAgICAgIAotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6
Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi0gICAgewotICAgICAgICBpZiAocHJvcGVydHlOYW1l
IDwgbV9sZW5ndGgpIHsKLSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0
ZSB8IFJlYWRPbmx5LCBnZXRJbmRleChleGVjLCBwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQogICAgIGlubGluZSBib29sIGlzSlNTdHJpbmcoSlNWYWx1ZSB2KSB7IHJldHVybiB2LmlzQ2Vs
bCgpICYmIHYuYXNDZWxsKCktPmNsYXNzSW5mbygpID09IEpTU3RyaW5nOjppbmZvKCk7IH0KIAog
ICAgIC8vIC0tLSBKU1ZhbHVlIGlubGluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpA
QCAtNTI4LDMyICs1MDAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIHRvV1RG
U3RyaW5nU2xvd0Nhc2UoZXhlYyk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBTdHJpbmcg
aW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKGNvbnN0IEpTVmFsdWUmIHZhbHVlLCBFeGVj
U3RhdGUqIGV4ZWMpCi0gICAgewotICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgICAg
ICBpZiAodmFsdWUuaXNJbnQzMigpKQotICAgICAgICAgICAgcmV0dXJuIHZtLm51bWVyaWNTdHJp
bmdzLmFkZCh2YWx1ZS5hc0ludDMyKCkpOwotICAgICAgICBpZiAodmFsdWUuaXNEb3VibGUoKSkK
LSAgICAgICAgICAgIHJldHVybiB2bS5udW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNEb3VibGUo
KSk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc1RydWUoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5w
cm9wZXJ0eU5hbWVzLT50cnVlS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHZhbHVlLmlz
RmFsc2UoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5mYWxzZUtleXdv
cmQuc3RyaW5nKCk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgICAgIHJl
dHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5udWxsS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgaWYg
KHZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1l
cy0+dW5kZWZpbmVkS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIFN0cmlu
ZyBKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci0gICAg
ewotICAgICAgICBpZiAoaXNTdHJpbmcoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxKU1N0cmluZyo+KGFzQ2VsbCgpKS0+dmFsdWUoZXhlYyk7Ci0KLSAgICAgICAgcmV0dXJuIGlu
bGluZUpTVmFsdWVOb3RTdHJpbmd0b1N0cmluZygqdGhpcywgZXhlYyk7Ci0gICAgfQotCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTU3RyaW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzc4YzA1ZmM4
MGQ4OGU4NTM3YzlkMmE1ZWFiOWZmMGJhOWI2MGE3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCkBAIC0wLDAgKzEsOTAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEpTU3RyaW5nSW5saW5lc19oCisjZGVmaW5lIEpTU3RyaW5nSW5saW5lc19oCisKKyNp
bmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0FMV0FZU19J
TkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAg
IGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgeworICAg
ICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
LCBqc051bWJlcihtX2xlbmd0aCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
CisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGkgPCBt
X2xlbmd0aCkgeworICAgICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgp
OyAvLyBObyBuZWVkIGZvciBhbiBleHBsaWNpdCBjaGVjaywgdGhlIGFib3ZlIHRlc3Qgd291bGQg
YWx3YXlzIGZhaWwhCisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJl
YWRPbmx5LCBnZXRJbmRleChleGVjLCBpKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0FMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmlu
Zzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgaWYgKHByb3BlcnR5TmFtZSA8IG1f
bGVuZ3RoKSB7CisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRP
bmx5LCBnZXRJbmRleChleGVjLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKworQUxXQVlTX0lOTElORSBTdHJp
bmcgaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKGNvbnN0IEpTVmFsdWUmIHZhbHVlLCBF
eGVjU3RhdGUqIGV4ZWMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBpZiAodmFs
dWUuaXNJbnQzMigpKQorICAgICAgICByZXR1cm4gdm0ubnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVl
LmFzSW50MzIoKSk7CisgICAgaWYgKHZhbHVlLmlzRG91YmxlKCkpCisgICAgICAgIHJldHVybiB2
bS5udW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNEb3VibGUoKSk7CisgICAgaWYgKHZhbHVlLmlz
VHJ1ZSgpKQorICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+dHJ1ZUtleXdvcmQuc3Ry
aW5nKCk7CisgICAgaWYgKHZhbHVlLmlzRmFsc2UoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3Bl
cnR5TmFtZXMtPmZhbHNlS2V5d29yZC5zdHJpbmcoKTsKKyAgICBpZiAodmFsdWUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5udWxsS2V5d29yZC5zdHJpbmcoKTsK
KyAgICBpZiAodmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5
TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQuc3RyaW5nKCk7CisgICAgcmV0dXJuIHZhbHVlLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKK30KKyAgICAKK0FMV0FZU19JTkxJTkUgU3RyaW5nIEpT
VmFsdWU6OnRvV1RGU3RyaW5nSW5saW5lKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBp
ZiAoaXNTdHJpbmcoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTU3RyaW5nKj4oYXND
ZWxsKCkpLT52YWx1ZShleGVjKTsKKyAgICAKKyAgICByZXR1cm4gaW5saW5lSlNWYWx1ZU5vdFN0
cmluZ3RvU3RyaW5nKCp0aGlzLCBleGVjKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKaW5k
ZXggMmFjMjUyNGM1ZGZkYTNkMTIyNDlkNzc5MGFkYzMxMjllM2MwZTg3MS4uZmJjOGI4OTVlYWU2
YWY3ODg4MzliZWI1ZTgzZDdiNmI5NzkyOGZhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKQEAgLTY0LDYgKzY0LDgg
QEAgdm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXQKICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBs
b2NrZXIodGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+bV9sb2NrKTsKICAgICAgICAgU3ltYm9s
VGFibGU6Ok1hcDo6aXRlcmF0b3IgZW5kID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+ZW5k
KGxvY2tlcik7CiAgICAgICAgIGZvciAoU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXQgPSB0
aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5iZWdpbihsb2NrZXIpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKKyAgICAgICAgICAgIGlmIChpdC0+a2V5LT5pc0VtcHR5VW5pcXVlKCkpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoIShpdC0+dmFsdWUuZ2V0QXR0cmlidXRl
cygpICYgRG9udEVudW0pIHx8IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKQog
ICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgaXQtPmtl
eS5nZXQoKSkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKaW5kZXggYjViMjBhODQ1YjZhYjY0NDI0YjM3ZTMx
YjI3NzRlZjkwNTM1M2Y3Zi4uZDAzYjI0NTExYzJkZTE5NTlmYjVmNTZkNjQ5YzY0ZDBlZmUwNjg1
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJs
ZU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFi
bGVPYmplY3QuaApAQCAtNzIsNyArNzIsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgK
IHsKICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgp
OwogICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0g
ICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9j
a2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZTo6TWFwOjpp
dGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQo
KSk7CiAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+dmFs
dWU7CkBAIC04Nyw3ICs4Nyw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogewogICAg
IFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAg
Q29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICBTeW1i
b2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHBy
b3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9y
IGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAg
ICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1ZTsKQEAg
LTEwNCw3ICsxMDQsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKIHsKICAgICBTeW1i
b2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgIENvbmN1
cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAgU3ltYm9sVGFi
bGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0
eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVy
ID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYg
KGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+dmFsdWU7CkBAIC0xMjYs
NyArMTI2LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoCiAgICAgewogICAgICAgICBT
eW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgICAg
ICBHQ1NhZmVDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2ssIGV4
ZWMtPnZtKCkuaGVhcCk7Ci0gICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIg
PSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7Cisg
ICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5k
KGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICAgICAgaWYgKGl0ZXIgPT0gc3ltYm9s
VGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJv
b2wgd2FzRmF0OwpAQCAtMTU5LDcgKzE1OSw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0
V2l0aEF0dHJpYnV0ZXMoCiAgICAgewogICAgICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUg
PSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxv
Y2tlcihzeW1ib2xUYWJsZS5tX2xvY2spOwotICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVy
YXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNO
YW1lKCkpOworICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9s
VGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgICAgIGlmIChpdGVy
ID09IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICBTeW1ib2xUYWJsZUVudHJ5JiBlbnRyeSA9IGl0ZXItPnZhbHVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKaW5kZXggYTgwNmRkMDUyYTBjYmVlNGNhYzJj
YWE2ZTA4YzY3MTYwMDVjMjcwYy4uYTk3NjUyMDFiOWY1MTg2NDE0MjNkZGUwZmUwZTJlNTFhOGNl
NzNiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCkBAIC02OCw3
ICs2OCw3IEBAIHZvaWQgSGFzaFRhYmxlOjpkZWxldGVUYWJsZSgpIGNvbnN0CiBib29sIHNldFVw
U3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRy
eSwgSlNPYmplY3QqIHRoaXNPYmosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKICAgICBBU1NFUlQodGhpc09iai0+Z2xvYmFsT2JqZWN0KCkpOwotICAg
IEFTU0VSVChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pOworICAgIEFTU0VSVChlbnRy
eS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pOwogICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQgPSB0aGlzT2JqLT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRl
cyk7CkBAIC03OSw5ICs3OSwxMyBAQCBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqCiAgICAgICAgIGlm
ICh0aGlzT2JqLT5zdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgCi0gICAgICAgIHRoaXNPYmotPnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKAot
ICAgICAgICAgICAgdm0sIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIGVu
dHJ5LT5mdW5jdGlvbkxlbmd0aCgpLAotICAgICAgICAgICAgZW50cnktPmZ1bmN0aW9uKCksIGVu
dHJ5LT5pbnRyaW5zaWMoKSwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAgICAgIGlmIChlbnRy
eS0+YXR0cmlidXRlcygpICYgQnVpbHRpbikKKyAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVj
dEJ1aWx0aW5GdW5jdGlvbih2bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFt
ZSwgZW50cnktPmJ1aWx0aW5HZW5lcmF0b3IoKSh2bSksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOwor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdE5hdGl2ZUZ1bmN0
aW9uKAorICAgICAgICAgICAgICAgIHZtLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgcHJvcGVy
dHlOYW1lLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSwKKyAgICAgICAgICAgICAgICBlbnRyeS0+
ZnVuY3Rpb24oKSwgZW50cnktPmludHJpbnNpYygpLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAg
ICAgICAgfQogICAgICAgICBvZmZzZXQgPSB0aGlzT2JqLT5nZXREaXJlY3RPZmZzZXQodm0sIHBy
b3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CiAgICAgICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG9m
ZnNldCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0xvb2t1cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKaW5kZXgg
YmRlODNkNGE2ZmMzNTU3Nzg1MGUzMWU4OGJjMzlmZDA1ZjdiY2U1Mi4uZGJhMzg5ZTllMjQzZGQw
ZWNiMmJhOThmMzk0ZDQwNzlmOWRlYTkzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTG9va3VwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TG9va3VwLmgKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgLy8gaWUuIHR5
cGVkZWYgSlNWYWx1ZSAoKkdldEZ1bmN0aW9uKShFeGVjU3RhdGUqLCBKU09iamVjdCogYmFzZU9i
amVjdCkKICAgICB0eXBlZGVmIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIEdldEZ1bmN0aW9u
OwogICAgIHR5cGVkZWYgUHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmMgUHV0RnVuY3Rpb247
CisgICAgdHlwZWRlZiBGdW5jdGlvbkV4ZWN1dGFibGUqICgqQnVpbHRpbkdlbmVyYXRvcikoVk0m
KTsKIAogICAgIGNsYXNzIEhhc2hFbnRyeSB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwpAQCAtNjgsMTEgKzY5LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0
dXJuIG1faW50cmluc2ljOwogICAgICAgICB9CiAKKyAgICAgICAgQnVpbHRpbkdlbmVyYXRvciBi
dWlsdGluR2VuZXJhdG9yKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgQnVpbHRpbik7
IHJldHVybiBtX3UuYnVpbHRpbkdlbmVyYXRvci5nZW5lcmF0b3JWYWx1ZTsgfQogICAgICAgICBO
YXRpdmVGdW5jdGlvbiBmdW5jdGlvbigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1
bmN0aW9uKTsgcmV0dXJuIG1fdS5mdW5jdGlvbi5mdW5jdGlvblZhbHVlOyB9CiAgICAgICAgIHVu
c2lnbmVkIGNoYXIgZnVuY3Rpb25MZW5ndGgoKSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMg
JiBGdW5jdGlvbik7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihtX3UuZnVuY3Rp
b24ubGVuZ3RoKTsgfQogCi0gICAgICAgIEdldEZ1bmN0aW9uIHByb3BlcnR5R2V0dGVyKCkgY29u
c3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3Bl
cnR5LmdldDsgfQotICAgICAgICBQdXRGdW5jdGlvbiBwcm9wZXJ0eVB1dHRlcigpIGNvbnN0IHsg
QVNTRVJUKCEobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0eS5w
dXQ7IH0KKyAgICAgICAgR2V0RnVuY3Rpb24gcHJvcGVydHlHZXR0ZXIoKSBjb25zdCB7IEFTU0VS
VCghKG1fYXR0cmlidXRlcyAmIEJ1aWx0aW5PckZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVy
dHkuZ2V0OyB9CisgICAgICAgIFB1dEZ1bmN0aW9uIHByb3BlcnR5UHV0dGVyKCkgY29uc3QgeyBB
U1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBCdWlsdGluT3JGdW5jdGlvbikpOyByZXR1cm4gbV91LnBy
b3BlcnR5LnB1dDsgfQogCiAgICAgICAgIGludHB0cl90IGxleGVyVmFsdWUoKSBjb25zdCB7IEFT
U0VSVCghbV9hdHRyaWJ1dGVzKTsgcmV0dXJuIG1fdS5sZXhlci52YWx1ZTsgfQogCkBAIC05NCw2
ICs5NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBpbnRwdHJfdCBsZW5n
dGg7IC8vIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGZ1bmN0aW9uCiAgICAgICAgICAgICB9IGZ1
bmN0aW9uOwogICAgICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICBCdWlsdGluR2Vu
ZXJhdG9yIGdlbmVyYXRvclZhbHVlOworICAgICAgICAgICAgICAgIGludHB0cl90IHVudXNlZDsK
KyAgICAgICAgICAgIH0gYnVpbHRpbkdlbmVyYXRvcjsKKyAgICAgICAgICAgIHN0cnVjdCB7CiAg
ICAgICAgICAgICAgICAgR2V0RnVuY3Rpb24gZ2V0OwogICAgICAgICAgICAgICAgIFB1dEZ1bmN0
aW9uIHB1dDsKICAgICAgICAgICAgIH0gcHJvcGVydHk7CkBAIC0yMDksNyArMjE1LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBI
YXNoRW50cnkqIGVudHJ5KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgICAg
IHsKLSAgICAgICAgICAgIFN0cmluZ0ltcGwqIGltcGwgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpOworICAgICAgICAgICAgU3RyaW5nSW1wbCogaW1wbCA9IHByb3BlcnR5TmFtZS51aWQoKTsK
ICAgICAgICAgICAgIGlmICghaW1wbCkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAg
ICAgCkBAIC0yNDksNyArMjU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGlmICghZW50
cnkpIC8vIG5vdCBmb3VuZCwgZm9yd2FyZCB0byBwYXJlbnQKICAgICAgICAgICAgIHJldHVybiBQ
YXJlbnRJbXA6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogCi0gICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pCisg
ICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pCiAgICAg
ICAgICAgICByZXR1cm4gc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoZXhlYywgZW50cnksIHRoaXNP
YmosIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0
b20odGhpc09iaiwgZW50cnktPmF0dHJpYnV0ZXMoKSwgZW50cnktPnByb3BlcnR5R2V0dGVyKCkp
OwpAQCAtMjg2LDcgKzI5Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpZiAoIWVudHJ5
KSAvLyBub3QgZm91bmQsIGZvcndhcmQgdG8gcGFyZW50CiAgICAgICAgICAgICByZXR1cm4gUGFy
ZW50SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iaiwgZXhlYywgcHJvcGVydHlOYW1lLCBz
bG90KTsKIAotICAgICAgICBBU1NFUlQoIShlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24p
KTsKKyAgICAgICAgQVNTRVJUKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0
aW9uKSk7CiAKICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09iaiwgZW50cnkt
PmF0dHJpYnV0ZXMoKSwgZW50cnktPnByb3BlcnR5R2V0dGVyKCkpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTI5NSw3ICszMDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgdm9p
ZCBwdXRFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2Jq
ZWN0KiBiYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmIHNsb3QpCiAgICAgewogICAgICAgICAvLyBJZiB0aGlzIGlzIGEgZnVuY3Rp
b24gcHV0IGl0IGFzIGFuIG92ZXJyaWRlIHByb3BlcnR5LgotICAgICAgICBpZiAoZW50cnktPmF0
dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKSB7CisgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygp
ICYgQnVpbHRpbk9yRnVuY3Rpb24pIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdCogdGhpc09i
amVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPihzbG90LnRoaXNWYWx1ZSgpKSkKICAgICAg
ICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1l
LCB2YWx1ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgUmVh
ZE9ubHkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRp
dmVFcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05h
dGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IGQ1ZTcyOGMyY2QxMDIwYTQ3ZTRhZGNkNjQ5
Y2QxZmZmYTVjZDZhODMuLmRjYTJmZDhkMWY2YWMyM2I4ZmY4MTdjYmIxOGZhYWU3YmNkNTk3MDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29u
c3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVy
cm9yQ29uc3RydWN0b3IuY3BwCkBAIC0zOCw2ICszOCwyMCBAQCBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiB7CiB9CiAKK3ZvaWQgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0
cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtLCBuYW1lKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAgCisgICAgTmF0
aXZlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1lLCB0aGlzKTsKKyAg
ICAKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIo
MSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsgLy8gRUNNQSAxNS4xMS43LjUK
KyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBl
LCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgbV9lcnJvclN0cnVjdHVy
ZS5zZXQodm0sIHRoaXMsIEVycm9ySW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUpKTsKKyAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZSk7CisgICAg
QVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOworfQorCiB2b2lkIE5hdGl2ZUVy
cm9yQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKIHsKICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0ganND
YXN0PE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAppbmRleCA3NDBk
M2Y5MzMyOTJmZDJhY2NiNGI5OTAzNDQzMTJiOTMxOWFlMTEwLi40MzhhM2FmYjliYjBmNjQxMmM5
NzkzMjIzMGM4ODcxMDk2MWY1NDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCkBAIC01MSwxOSArNTEsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSgpIHsgcmV0
dXJuIG1fZXJyb3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBuYW1lKTsKLSAgICAg
ICAgICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKLQotICAgICAgICAgICAgTmF0aXZlRXJy
b3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1lLCB0aGlzKTsKLQotICAgICAg
ICAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEp
LCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7IC8vIEVDTUEgMTUuMTEuNy41Ci0g
ICAgICAgICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJv
dG90eXBlLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Ci0gICAgICAgICAgICBt
X2Vycm9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0
dXJlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSkpOwotICAgICAgICAgICAgQVNTRVJUKG1f
ZXJyb3JTdHJ1Y3R1cmUpOwotICAgICAgICAgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUtPmlz
T2JqZWN0KCkpOwotICAgICAgICB9CisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBTdHJp
bmcmIG5hbWUpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
cihWTSYsIFN0cnVjdHVyZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlTbG90LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eVNsb3QuaAppbmRleCBkOTM4ZmEzMTY0NWFmMjZiNzU4NTE0ZGI2YjI0NzhmMTgzZTllZWUx
Li5jZmU5YzRkMzJiYTc2OGM3NGU0ZmZiYjE5MTM1Mjc5ZGViZjExNzY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaApAQCAtNDIsNiArNDIsOCBAQCBl
bnVtIEF0dHJpYnV0ZSB7CiAgICAgRnVuY3Rpb24gICAgID0gMSA8PCA0LCAgLy8gcHJvcGVydHkg
aXMgYSBmdW5jdGlvbiAtIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIEFjY2Vz
c29yICAgICA9IDEgPDwgNSwgIC8vIHByb3BlcnR5IGlzIGEgZ2V0dGVyL3NldHRlcgogICAgIEN1
c3RvbUFjY2Vzc29yID0gMSA8PCA2LAorICAgIEJ1aWx0aW4gICAgICAgICA9IDEgPDwgNywgLy8g
cHJvcGVydHkgaXMgYSBidWlsdGluIGZ1bmN0aW9uIC0gb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNo
dGFibGVzCisgICAgQnVpbHRpbk9yRnVuY3Rpb24gPSBCdWlsdGluIHwgRnVuY3Rpb24sIC8vIGhl
bHBlciBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKIH07CiAKIGNsYXNzIFByb3BlcnR5
U2xvdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggYmM1MTZiMDZkNjY1MWYwZTY4MmEyMDE3YmRmOGIwM2JhYmVkNmVh
Mi4uMmMyNDM0Yjg3ZDA0Zjc0OWNiMTJlNjAyYWI1NDc4NDk0NmE5MWYxZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcApAQCAt
MjMsNiArMjMsNyBAQAogI2luY2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgiCiAKICNpbmNsdWRl
ICJFcnJvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk9wZXJh
dGlvbnMuaCIKICNpbmNsdWRlICJSZWdFeHBNYXRjaGVzQXJyYXkuaCIKICNpbmNsdWRlICJSZWdF
eHBQcm90b3R5cGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBQcm90b3R5cGUuY3BwCmluZGV4IDg5ZDdhYzFiOGNiZjFkYjBlMTI2ZjFmYzc5NmRmZDVmYzg0
YjJlNTkuLjlkZGEwYmE4ZGUxNDEyZWFmNGQyOTFkY2YwYzZiMzk2NTdmYjY3N2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcApAQCAt
MjQsNyArMjQsNyBAQAogI2luY2x1ZGUgIkFycmF5UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiRXJy
b3IuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAppbmRleCBiMjAzODg4ZDNj
MTZjZGEzYzAwMzUwNjIwOGFlMDg2OTVkYzVkYWFhLi5kMDI2NmE1OWVmM2Y1NWFhMzY5NGY1Zjc0
MThjZjc4ZTBhZTBkOGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TZXRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2V0Q29uc3RydWN0b3IuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSlNDZWxsSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTZXQuaCIK
KyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJNYXBEYXRhLmgiCiAjaW5j
bHVkZSAiU2V0UHJvdG90eXBlLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdPYmplY3QuY3BwCmluZGV4IDQ0MGE2MDk0MjE5MzM4MDMxZTU5MjdhZjQ2YjI4OWRi
Y2ZiNWE3MjguLjgwZTdlYWE4YzQ5MWNiNmQ1NGE4MzI0Y2U2NDdhNmNkYjdlODg3ODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAtMjIs
NyArMjIsOSBAQAogI2luY2x1ZGUgIlN0cmluZ09iamVjdC5oIgogCiAjaW5jbHVkZSAiRXJyb3Iu
aCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9u
cy5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDA0MjkxZjdlOGRkMjRlOGFiMzNkNzVh
ZjFkYTQ1NjhmMmJjOTllNjguLjFlY2FiODVjMGJkYjI4Njk4OTQ1NzdhNzQxMjU0ZTM2NDQxNDlk
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAt
MjcsMTIgKzI3LDE4IEBACiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAKICNpbmNsdWRlICJDb2Rl
QmxvY2suaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkR1bXBD
b250ZXh0LmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3Ry
aW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgorI2luY2x1ZGUgIlByb3BlcnR5TWFw
SGFzaFRhYmxlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKKyNpbmNsdWRlICJT
bG90VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgorI2luY2x1
ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YUlubGlu
ZXMuaCIKICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWRMZWFrQ291bnRlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4
IDUyY2NmNDIzYTEwNDNlMTA3OWYyZDhiMTg5NDIxOTg5MGU3MWYyYmMuLjAyMDY5NWZhYzgzZWQ0
ZTUxODViNzBlNjk2OTk2M2EyZGU5YTM2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJBcmdMaXN0LmgiCiAjaW5jbHVkZSAi
QXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuaCIKICNpbmNsdWRlICJBcnJheUJ1ZmZlck5ldXRl
cmluZ1dhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKICNpbmNs
dWRlICJDYWxsRnJhbWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVk
ZSAiQ29kZUNhY2hlLmgiCkBAIC01NSw3ICs1Niw5IEBACiAjaW5jbHVkZSAiSlNBUElWYWx1ZVdy
YXBwZXIuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0FycmF5Lmgi
Ci0jaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
CisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU0xv
Y2suaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgpAQCAtNjgsMTMgKzcxLDE2IEBACiAjaW5j
bHVkZSAiTG9va3VwLmgiCiAjaW5jbHVkZSAiTWFwRGF0YS5oIgogI2luY2x1ZGUgIk5vZGVzLmgi
CisjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiUGFyc2VyQXJlbmEuaCIKKyNpbmNsdWRl
ICJQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgogI2luY2x1ZGUgIlJlZ0V4cENhY2hlLmgiCiAjaW5j
bHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJTb3VyY2VQcm92aWRlckNhY2hlLmgiCiAjaW5jbHVkZSAiU3RyaWN0
RXZhbEFjdGl2YXRpb24uaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCisjaW5jbHVkZSAi
U3RydWN0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAjaW5j
bHVkZSAiV2Vha01hcERhdGEuaCIKICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CkBAIC0yMjYs
NiArMjMyLDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAg
ICwgbV9pbkRlZmluZU93blByb3BlcnR5KGZhbHNlKQogICAgICwgbV9jb2RlQ2FjaGUoQ29kZUNh
Y2hlOjpjcmVhdGUoKSkKICAgICAsIG1fZW5hYmxlZFByb2ZpbGVyKG51bGxwdHIpCisgICAgLCBt
X2J1aWx0aW5FeGVjdXRhYmxlcyhCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZSgqdGhpcykpCiB7
CiAgICAgaW50ZXJwcmV0ZXIgPSBuZXcgSW50ZXJwcmV0ZXIoKnRoaXMpOwogICAgIFN0YWNrQm91
bmRzIHN0YWNrID0gd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAppbmRleCA1YTg0MTA1ZWFmYjdhYmJhNWZhNDMxZWVlZGQ1NWQ3YTg5ZjU1Y2UyLi42
OTU4YWMzOTNiMWFlZmMwYmVmYmY2ZTRlYjhiNjgyNWNmN2M5YTBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJQcml2YXRlTmFtZS5o
IgogI2luY2x1ZGUgIlByb3RvdHlwZU1hcC5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgor
I2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJU
aHVua0dlbmVyYXRvcnMuaCIKICNpbmNsdWRlICJUeXBlZEFycmF5Q29udHJvbGxlci5oIgpAQCAt
NjksNiArNzAsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcml0eUNoZWNrRmFp
bFJldHVyblRodW5rczsKKyAgICBjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXM7CiAgICAgY2xhc3Mg
Q29kZUJsb2NrOwogICAgIGNsYXNzIENvZGVDYWNoZTsKICAgICBjbGFzcyBDb21tb25JZGVudGlm
aWVyczsKQEAgLTQ5Nyw2ICs0OTksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBy
ZWdpc3RlcldhdGNocG9pbnRGb3JJbXB1cmVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyJiwgV2F0
Y2hwb2ludCopOwogICAgICAgICAvLyBGSVhNRTogVXNlIEF0b21pY1N0cmluZyBvbmNlIGl0IGdv
dCBtZXJnZWQgd2l0aCBJZGVudGlmaWVyLgogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IGFkZEltcHVyZVByb3BlcnR5KGNvbnN0IFN0cmluZyYpOworICAgICAgICAKKyAgICAgICAgQnVp
bHRpbkV4ZWN1dGFibGVzKiBidWlsdGluRXhlY3V0YWJsZXMoKSB7IHJldHVybiBtX2J1aWx0aW5F
eGVjdXRhYmxlcy5nZXQoKTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKQEAgLTUzNywxMCArNTQxLDkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIEpTVmFsdWUgbV9leGNlcHRpb247CiAgICAgICAgIGJvb2wgbV9pbkRlZmlu
ZU93blByb3BlcnR5OwogICAgICAgICBPd25QdHI8Q29kZUNhY2hlPiBtX2NvZGVDYWNoZTsKLSAg
ICAgICAgUmVmQ291bnRlZEFycmF5PFN0YWNrRnJhbWU+IG1fZXhjZXB0aW9uU3RhY2s7Ci0KICAg
ICAgICAgTGVnYWN5UHJvZmlsZXIqIG1fZW5hYmxlZFByb2ZpbGVyOwotCisgICAgICAgIE93blB0
cjxCdWlsdGluRXhlY3V0YWJsZXM+IG1fYnVpbHRpbkV4ZWN1dGFibGVzOworICAgICAgICBSZWZD
b3VudGVkQXJyYXk8U3RhY2tGcmFtZT4gbV9leGNlcHRpb25TdGFjazsKICAgICAgICAgSGFzaE1h
cDxTdHJpbmcsIFJlZlB0cjxXYXRjaHBvaW50U2V0Pj4gbV9pbXB1cmVQcm9wZXJ0eVdhdGNocG9p
bnRTZXRzOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdI
ZWFkZXJzL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwZmNjMzg0
ZThlZGZjMzRiMTQwODNiODY1ZDM3MzgyMGY0MTY1YzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCkBA
IC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9KU1N0cmluZ0lubGluZXNfaAorI2Rl
ZmluZSBXZWJDb3JlX0ZXRF9KU1N0cmluZ0lubGluZXNfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTU3RyaW5nSW5saW5lcy5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcApp
bmRleCAyZWRkY2RiYjlmMDA2Y2E3NjI2NjUwYjQyMDI3ODYyNmI5MjYxNDE3Li4zYzRlMGQ3YmJi
MzFjYWIxMmI1ZTZjOTc1Yzc0ZDNmNDg0ZTljYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5j
cHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNDSlNWYWx1ZUlubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0
cmluZ0lubGluZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwCmluZGV4IDU2NDljODVjYTA5NTg3NzQ4
YTNkYTA2Y2RkZDBjYTk5OWU1MGI4ZTcuLjNmNGQ4ZWZhZWI1N2YzMzAwM2U3M2E3ZTc4NDJlNDJj
NzNjZTY0OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCQW55
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFueUN1c3Rv
bS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJKU0lEQk9iamVjdFN0b3JlLmgiCiAj
aW5jbHVkZSAiSlNJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SURCRGF0YWJhc2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJE
YXRhYmFzZUN1c3RvbS5jcHAKaW5kZXggOWVhZTc1NjljNzA2MDNhNGZlZDBhZjE0YzRmODcxOGNk
ZTY0YTZlMS4uZjQ5ZGZlOTBiNGU4MmQzOWVkY2JmOWJhMjlmMmFlNzk5YzBkZGYyOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAK
QEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUg
IkpTSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0jaW5jbHVk
ZSA8cnVudGltZS9KU1N0cmluZy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVz
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAKaW5kZXggNzRmZDM1NGIyODYw
N2NmNzgyMmY4MDUzNDc5NzBmNWQ3YWM4YzgzMi4uNTQzNGIzYjdkNmM1NmVjYjBhMDNhMjc5NGM2
NzM2YTlhZGZiNzBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJ
REJPYmplY3RTdG9yZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJJ
REJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIkpTSURCSW5kZXguaCIKICNpbmNsdWRlIDxydW50
aW1lL0Vycm9yLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgorI2luY2x1ZGUgPHJ1
bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA5ZDA2NmY1ZTFhMDA0ZmJkNGQ1NzQwZTQ5N2M4MjhjOWJlOGY5MGRhLi45MDkyZTE3MDlkNmZm
MjZkYWU2ZjI5MjNjNzUxY2I2OGFlMzM2MDVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTQt
MDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGl0
IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBKUworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlZCB0aGUgdGVzdCByZXN1bHRz
IGZvciBuZXcgZXJyb3IgbWVzc2FnZXMgKG5vdyB0aGF0IHRoZXkncmUKKyAgICAgICAgYWN0dWFs
bHkgaGVscGZ1bCksIGFuZCBhZGRlZCBhIGpzLXJlZ3Jlc3MgdGVzdCB0byB0cmFjayBwZXJmb3Jt
YW5jZS4KKworICAgICAgICAqIGpzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBqcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGpzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICoganMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbDogQWRkZWQu
CisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5
LmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QxKToKKyAgICAgICAgKHRlc3QyKToKKyAgICAgICAg
KHRlc3QzKToKKwogMjAxNC0wMS0zMCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNv
bT4KIAogICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1wbHVnaW4tcHJp
dmF0ZS1icm93c2luZy10b2dnbGVkLmh0bWwgaXMgZmxha3kgb24gV0syCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9qcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9h
cnJheS1ldmVyeS1leHBlY3RlZC50eHQKaW5kZXggNTQxYjhjMzU4ZjA2OGEwY2VhODgyYzEwNTE3
NTMyNTExNGNkMzNmNy4uY2NhMzYzZGNlNThmYmE5NWE1OGNlNDZmY2I0OGMzOGJmNThhZGY1OSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dApAQCAtMzAsMTIgKzMwLDEy
IEBAIFBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShpc0JpZ0Vub3VnaEFuZEV4Y2VwdGlv
bikgdGhyZXcgZXhjZXB0aW9uIGV4Y2VwdGlvCiBQQVNTIFsxMiwgNTQsIDE4LCAxMzAsIDQ0XS5l
dmVyeShpc0JpZ0Vub3VnaEFuZEV4Y2VwdGlvbikgdGhyZXcgZXhjZXB0aW9uIGV4Y2VwdGlvbiBm
cm9tIGZ1bmN0aW9uLgogCiA1LjAgV3JvbmcgVHlwZSBmb3IgQ2FsbGJhY2sgVGVzdAotUEFTUyBb
MTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KDUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoJ3dyb25nJykgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0
XS5ldmVyeShuZXcgT2JqZWN0KCkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJy
b3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkobnVsbCkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSh1
bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsx
MiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBl
IGVycm9yLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KDUpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVu
Y3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoJ3dyb25nJykgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUg
YSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShuZXcgT2JqZWN0KCkp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFj
ayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkobnVs
bCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxi
YWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSh1
bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVy
eSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0u
ZXZlcnkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkg
Y2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgogCiA2LjAgRWFybHkgRXhpdCAoIlNob3J0IENp
cmN1aXRpbmciKQogUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KGlzQmlnRW5vdWdoU2hv
cnRDaXJjdWl0KSBpcyBmYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2FycmF5
LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9h
cnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQKaW5kZXggMmMyYTY4Y2IxMDZk
YTEwZjA4NmIyMmM1YmYyYmY1YzhmZTc5ZTMzZS4uNWQ5ZWNiNzVhOGRhNzliYTY1NjA1ZTdlYjlj
ZjhmYzI1ZmUxOGFmYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvZG9tL2FycmF5LXByb3Rv
dHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vYXJy
YXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CkBAIC0xNSw3ICsxNSw3IEBAIFBB
U1MgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodW5kZWZpbmVkLCAwLCAxKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiB1bmRlCiBQQVNTIEFycmF5LnByb3RvdHlwZS5zb3J0LmNhbGwodW5k
ZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9i
amVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnNvcnQuY2FsbCh1bmRlZmluZWQpJyku
CiBQQVNTIEFycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbCh1bmRlZmluZWQsIDAsIDEpIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0
aW5nICdBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwodW5kZWZpbmVkLCAwLCAxKScpLgogUEFT
UyBBcnJheS5wcm90b3R5cGUudW5zaGlmdC5jYWxsKHVuZGVmaW5lZCwge30pIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdB
cnJheS5wcm90b3R5cGUudW5zaGlmdC5jYWxsKHVuZGVmaW5lZCwge30pJykuCi1QQVNTIEFycmF5
LnByb3RvdHlwZS5ldmVyeS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJh
eS5wcm90b3R5cGUuZXZlcnkuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKScpLgorUEFTUyBBcnJh
eS5wcm90b3R5cGUuZXZlcnkuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wg
bm90IGJlIHVuZGVmaW5lZC4KIFBBU1MgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbCh1bmRl
ZmluZWQsIHRvU3RyaW5nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMg
bm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbCh1
bmRlZmluZWQsIHRvU3RyaW5nKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUuc29tZS5jYWxsKHVu
ZGVmaW5lZCwgdG9TdHJpbmcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBp
cyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUuc29tZS5jYWxsKHVu
ZGVmaW5lZCwgdG9TdHJpbmcpJykuCiBQQVNTIEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwo
dW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90
IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbCh1bmRl
ZmluZWQsIDApJykuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXBy
b3RvdHlwZS1ldmVyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5
LXByb3RvdHlwZS1ldmVyeS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTI5MGMwZWVmZjhkZTQy
MTgzM2Q5MmQyN2U5NTI0MTkxNzYwNGI5NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDEwIEBACitKU1JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5CisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sIGIvTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTVjYzE3
MWM0ODc1YTM1ODViZjE0ZTU0MTVmNWNkMGU1ODFkNTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbApAQCAtMCwwICsx
LDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVn
cmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJheS1w
cm90b3R5cGUtZXZlcnkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdy
ZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmpz
IGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2
ZXJ5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjI5NGFhMTYxYzBjZTk4YjJhYjE4YTNhMWExZjBkZmFhYzlkN2Qy
ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0
cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuanMKQEAgLTAsMCArMSwyOSBAQAordmFyIHJlc3VsdCA9
IDA7CitmdW5jdGlvbiB0ZXN0MShhKSB7CisgICAgcmVzdWx0IDw8IDE7CisgICAgcmVzdWx0Kys7
CisgICAgcmV0dXJuIHRydWU7Cit9CitmdW5jdGlvbiB0ZXN0MihhLGIpIHsKKyAgICByZXN1bHQg
Xj0gMzsKKyAgICByZXN1bHQgKj0gMzsKKyAgICByZXR1cm4gdHJ1ZTsKK30KK2Z1bmN0aW9uIHRl
c3QzKGEsYixjKSB7CisgICAgcmVzdWx0IF49IHJlc3VsdCA+PiAxOworICAgIHJldHVybiB0cnVl
OworfQorCit2YXIgcmVzdWx0ID0gMDsKK3ZhciBhcnJheSA9IFtdCitmb3IgKHZhciBpID0gMDsg
aSA8IDEwMDAwMDsgKytpKQorICAgIGFycmF5W2ldID0gMTsKKworZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDsgaSsrKSB7CisgICAgYXJyYXkuZXZlcnkodGVzdDEpOworICAgIGFycmF5LmV2ZXJ5KHRl
c3QyKTsKKyAgICBhcnJheS5ldmVyeSh0ZXN0Myk7Cit9CisKK2lmIChyZXN1bHQgIT0gMTQyODgx
MDQ5NikKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CmRpZmYgLS1n
aXQgYS9HTlVtYWtlZmlsZS5hbSBiL0dOVW1ha2VmaWxlLmFtCmluZGV4IDczZmM0OTI4YzRkZDQ5
YjU0OTg2OWI1MDY3OGM2YmRlNzRmNDQ3NjAuLjA4YzkxMTU0MjYwNTAwZGUzZmYwNGIwMjBjZTBk
NjBmOThlOGNmZTggMTAwNjQ0Ci0tLSBhL0dOVW1ha2VmaWxlLmFtCisrKyBiL0dOVW1ha2VmaWxl
LmFtCkBAIC02OCw2ICs2OCw3IEBAIEFMTF9NT0ZJTEVTIDo9CiBkb21fYmluZGluZ19pZGxzIDo9
CiB3dGZfc291cmNlcyA6PQogamF2YXNjcmlwdGNvcmVfaF9hcGkgOj0KK2phdmFzY3JpcHRjb3Jl
X2J1aWx0aW5zX2pzX25vc291cmNlcyA6PQogamF2YXNjcmlwdGNvcmVfY3BwZmxhZ3M6PQogamF2
YXNjcmlwdGNvcmVfY2ZsYWdzIDo9CiBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzIDo9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222816</attachid>
            <date>2014-01-31 08:25:01 -0800</date>
            <delta_ts>2014-01-31 08:43:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140131082455.patch</filename>
            <type>text/plain</type>
            <size>199227</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NjgxMzcxYWU2ZDBjYWZlNDJmNWNmN2E1NWI3MjRjMTc5ODExYjBhLi43NTA0MGJiMjVhNTg0MTY0
Mzg5ODQzNDFjNmEwMjMzMzdhOTk1ZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
IFRoaXMgcmVzdWx0IG9mIHRoaXMgcmVmYWN0b3JpbmcKKyAgICAgICAgaXMgdGhhdCBDb21tb25J
ZGVudGlmaWVycywgYW5kIGEgZmV3IG90aGVyIG1pc2NlbGxhbmVvdXMgaGVhZGVycyBub3cKKyAg
ICAgICAgbmVlZCB0byBiZSBpbmNsdWRlZCBkaXJlY3RseSBhcyB0aGV5IHdlcmUgZm9ybWVybHkg
Y2FwdHVyZWQgdGhyb3VnaCBvdGhlcgorICAgICAgICBwYXRocy4KKworICAgICAgICBJbiBhZGRp
dGlvbiB0aGlzIGFkZHMgYSBmbGFnIHRvIHRoZSBMb29rdXAgdGFibGUncyBoYXNoZW50cnkgdG8g
aW5kaWNhdGUKKyAgICAgICAgdGhhdCBhIHN0YXRpYyBmdW5jdGlvbiBpcyBhY3R1YWxseSBiYWNr
ZWQgYnkgSlMuIFRoZXJlIGlzIHRoZW4gYSBsb3Qgb2YKKyAgICAgICAgbG9naWMgdG8gdGhyZWFk
IHRoZSBzcGVjaWFsIG5hdHVyZSBvZiB0aGUgZnVuY3RvbiB0byB3aGVyZSBpdCBtYXR0ZXJzLgor
ICAgICAgICBUaGlzIGFsbG93cyB0b1N0cmluZygpLCAuY2FsbGVyLCBldGMgdG8gbWltaWMgdGhl
IGJlaGF2aW91ciBvZiBhIGhvc3QKKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAgICAgTm90ZXMg
b24gd3JpdGluZyBidWlsdGluczoKKyAgICAgICAgIC0gRWFjaCBmdW5jdGlvbiBpcyBjb21waWxl
ZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBvdGhlcnMsIGFuZCB0aG9zZQorICAgICAgICAgICBpbXBs
ZW1lbnRhdGlvbnMgY2Fubm90IGN1cnJlbnRseSBjYXB0dXJlIGFsbCBnbG9iYWwgcHJvcGVydGll
cyAoYXMKKyAgICAgICAgICAgdGhhdCBjb3VsZCBiZSBwb3RlbnRpYWxseSB1bnNhZmUpLiBJZiBh
IGZ1bmN0aW9uIGRvZXMgY2FwdHVyZSBhCisgICAgICAgICAgIGdsb2JhbCB3ZSB3aWxsIGRlbGli
ZXJhdGVseSBjcmFzaC4KKyAgICAgICAgIC0gRm9yIHRob3NlICJnbG9iYWwiIHByb3BlcnRpZXMg
dGhhdCB3ZSBkbyB3YW50IGFjY2VzcyB0bywgd2UgdXNlCisgICAgICAgICAgIHRoZSBAIHByZWZp
eCwgZS5nLiBPYmplY3QodGhpcykgYmVjb21lcyBAT2JqZWN0KHRoaXMpLiBUaGUgQCBpZGVudGlm
aWVycworICAgICAgICAgICBhcmUgcHJpdmF0ZSBuYW1lcywgYW5kIGJlaGF2ZSBqdXN0IGxpa2Ug
cmVndWxhciBwcm9wZXJ0aWVzLCBvbmx5CisgICAgICAgICAgIHdpdGhvdXQgdGhlIHJpc2sgb2Yg
YWR1bHRlcmF0aW9uLiBBZ2FpbiwgaW4gdGhlIEBPYmplY3QgY2FzZSwgd2UKKyAgICAgICAgICAg
ZXhwbGljaXRseSBkdXBsaWNhdGUgdGhlIE9iamVjdENvbnN0cnVjdG9yIHJlZmVyZW5jZSBvbiB0
aGUgR2xvYmFsT2JqZWN0CisgICAgICAgICAgIHNvIHRoYXQgd2UgaGF2ZSBndWFyYW50ZWVkIGFj
Y2VzcyB0byB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgY29uc3RydWN0
b3IuCisgICAgICAgICAtIGNhbGwsIGFwcGx5LCBldmFsLCBhbmQgRnVuY3Rpb24gYXJlIGFsbCBy
ZWplY3RlZCBpZGVudGlmaWVycywgYWdhaW4KKyAgICAgICAgICAgdG8gcHJldmVudCBhbnl0aGlu
ZyBmcm9tIGFjY2lkZW50YWxseSB1c2luZyBhbiBhZHVsdGVyYXRlZCBvYmplY3QuCisgICAgICAg
ICAgIEluc3RlYWQgQGNhbGwgYW5kIEBhcHBseSBhcmUgYXZhaWxhYmxlLCBhbmQgaGFwcGlseSB0
aGV5IGNvbXBsZXRlbHkKKyAgICAgICAgICAgZHJvcCB0aGUgbmVxX3B0ciBpbnN0cnVjdGlvbiBh
cyB0aGV5J3JlIGRlZmluZWQgYXMgYWx3YXlzIGJlaW5nIHRoZQorICAgICAgICAgICBvcmlnaW5h
bCBjYWxsL2FwcGx5IGZ1bmN0aW9ucy4KKworICAgICAgICBUaGVzZSByZXN0cmljdGlvbnMgYXJl
IGp1c3QgaW50ZW5kZWQgdG8gbWFrZSBpdCBoYXJkZXIgdG8gYWNjaWRlbnRhbGx5CisgICAgICAg
IG1ha2UgY2hhbmdlcyB0aGF0IGFyZSBpbmNvcnJlY3QgKGZvciBpbnN0YW5jZSBjYWxsaW5nIHdo
YXRldmVyIGhhcyBiZWVuCisgICAgICAgIGFzc2lnbmVkIHRvIGdsb2JhbC5PYmplY3QsIGluc3Rl
YWQgb2YgdGhlIG9yaWdpbmFsIGNvbnN0cnVjdG9yIGZ1bmN0aW9uKS4KKyAgICAgICAgSG93ZXZl
ciwgbWFraW5nIGEgbWlzdGFrZSBsaWtlIHRoaXMgc2hvdWxkIHJlc3VsdCBpbiBhIHB1cmVseSBz
ZW1hbnRpYworICAgICAgICBlcnJvciBhcyBmdW5kYW1lbnRhbGx5IHRoZXNlIGZ1bmN0aW9ucyBh
cmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlCisgICAgICAgIHJlZ3VsYXIgSlMgY29kZSBp
biB0aGUgaG9zdCBnbG9iYWwsIGFuZCBoYXZlIG5vIG1vcmUgcHJpdmlsZWdlcyB0aGFuCisgICAg
ICAgIGFueSBvdGhlciBKUy4KKworICAgICAgICBUaGUgaW5pdGlhbCBwcm9vZiBvZiBjb25jZXB0
IGlzIEFycmF5LnByb3RvdHlwZS5ldmVyeSwgdGhpcyBzaG93cyBhIDY1JQorICAgICAgICBwZXJm
b3JtYW5jZSBpbXByb3ZlbWVudCwgYW5kIHRoYXQgaW1wcm92ZW1lbnQgaXMgc2lnbmlmaWNhbnRs
eSBodXJ0IGJ5CisgICAgICAgIG91ciBwb29yIG9wdGltaXNhdGlvbiBvZiBvcF9pbi4KKworICAg
ICAgICBBcyB0aGlzIGlzIHN1Y2ggYSBsaW1pdGVkIGZ1bmN0aW9uLCB3ZSBoYXZlIG5vdCB5ZXQg
ZXhwb3J0ZWQgYWxsIHN5bWJvbHMKKyAgICAgICAgdGhhdCB3ZSBjb3VsZCBwb3NzaWJseSBuZWVk
LCBidXQgYXMgd2UgaW1wbGVtZW50IG1vcmUsIHRoZSBsaWtlbGlob29kCisgICAgICAgIG9mIGVu
Y291bnRlcmluZyBtaXNzaW5nIGZlYXR1cmVzIHdpbGwgcmVkdWNlLgorCisgICAgICAgIFRoaXMg
ZGlkIHJlcXVpcmUgYnJlYWtpbmcgb3V0IGEgSlNTdHJpbmdJbmxpbmVzIGhlYWRlciwgYW5kIHJl
cXVpcmVkCisgICAgICAgIGZpeGluZyBhIGZldyBvYmplY3RzIHRoYXQgd2VyZSB0cnlpbmcgdG8g
dXNpbmcgUHJvcGVydHlOYW1lOjpwdWJsaWNOYW1lCisgICAgICAgIHJhdGhlciB0aGFuIFByb3Bl
cnR5TmFtZTo6dWlkLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0
eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dCk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRpY1ZhbHVlKToK
KyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWNGdW5jdGlvbkdl
dHRlcik6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tH
ZXR0ZXIpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBidWlsdGlucy9BcnJheS5wcm90b3R5cGUuanM6CisgICAgICAgIChldmVyeSk6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkJ1aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKToKKyAgICAgICAgKEpTQzo6
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSk6CisgICAgICAgICog
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVj
dXRhYmxlczo6Y3JlYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tG
b3IpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkV4ZWN1dGFibGVJbmZvOjpFeGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6dG9TdHJpY3RuZXNzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNCdWlsdGluRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBjcmVhdGVfaGFz
aF90YWJsZToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZ2Vu
ZXJhdGUtanMtYnVpbHRpbnM6IEFkZGVkLgorICAgICAgICAoZ2V0Q29weXJpZ2h0KToKKyAgICAg
ICAgKGdldEZ1bmN0aW9ucyk6CisgICAgICAgIChnZW5lcmF0ZUNvZGUpOgorICAgICAgICAobWFu
Z2xlTmFtZSk6CisgICAgICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSWRlbnRp
Zmllcik6CisgICAgICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChTb3VyY2VDb2RlKToK
KyAgICAgICAgKFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKFZNKToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvUHJvdG9DYWxsRnJhbWUuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgICoganNjLmNwcDoKKyAg
ICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUp
OgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpM
ZXhlcik6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpM
ZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFy
Pjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleCk6CisgICAg
ICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OmlzU2FmZUlkZW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcik6CisgICAgICAgICog
cGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OnNldENsb3NlZFZh
cmlhYmxlcyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
Tm9kZTo6Y2FwdHVyZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OnNldENs
b3NlZFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmluaXNoUGFy
c2luZyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRU
b2tlblRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OmdldFVzZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNsb3NlZFZhcmlh
Ymxlcyk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9k
ZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAgICAgICogcnVudGlt
ZS9BcmdMaXN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAg
ICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJh
dG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpn
ZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpD
b21tb25JZGVudGlmaWVycyk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQ
cml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpnZXRQdWJsaWNO
YW1lKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzRXhjZXB0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxl
OjpleGVjdXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpleGVj
dXRhYmxlSW5mbyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aXNCdWlsdGlu
RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1l
L0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFi
bGVHZXQpOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0KToKKyAg
ICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgICogcnVudGltZS9K
U0NlbGxJbmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6c291cmNlQ29kZSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzSG9zdE9y
QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6aXNCdWlsdGluRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIpOgorICAgICAg
ICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpK
U0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9w
ZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgICogcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6Om9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpnZXRDbGFzc1Byb3BlcnR5TmFtZXMpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZ0lubGlu
ZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjppbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTeW1ib2xUYWJsZU9i
amVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgICAgRG9uJ3QgcmVw
b3J0IHByaXZhdGUgbmFtZXMuCisgICAgICAgICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OnN5bWJvbFRhYmxlR2V0KToKKyAgICAgICAgKEpTQzo6c3ltYm9s
VGFibGVQdXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKToK
KyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChKU0M6OnNldFVwU3RhdGlj
RnVuY3Rpb25TbG90KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlND
OjpIYXNoRW50cnk6OmJ1aWx0aW5HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpIYXNoRW50cnk6
OnByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpwcm9wZXJ0eVB1dHRl
cik6CisgICAgICAgIChKU0M6Okhhc2hUYWJsZTo6ZW50cnkpOgorICAgICAgICAoSlNDOjpnZXRT
dGF0aWNQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpnZXRTdGF0aWNWYWx1ZVNsb3QpOgor
ICAgICAgICAoSlNDOjpwdXRFbnRyeSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6YnVp
bHRpbkV4ZWN1dGFibGVzKToKKwogMjAxNC0wMS0yOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBw
bGUuY29tPgogCiAgICAgICAgIEZUTCBzaG91bGQgc3VwcG9ydCBHZXRCeUlkKFVudHlwZWQ6KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDFhZDY5NzQ4OGIwYzRiOGI0Y2ZhZTI5MTM1NDI1OWI2ZGFjZmRjNDUuLmYz
YzNkNzE3MWQwNTQ0ODBlYzYwNTQwYzBkNTI1OTk2ZWVjZGI5YTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxNC0wMS0yOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gaW1wbGVtZW50IEpTIGJ1aWx0aW5zIGluIEpT
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc4ODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGlu
ZyBmb3IgdGhlIG5ld2x5IHJlcXVpcmVkIGhlYWRlcnMuCisKKyAgICAgICAgVGVzdDoganMvcmVn
cmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbAorCisgICAgICAgICogRm9yd2FyZGluZ0hl
YWRlcnMvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0lEQkFueUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJREJE
YXRhYmFzZUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9y
ZUN1c3RvbS5jcHA6CisKIDIwMTQtMDEtMzAgIFJvZ2VyIEZvbmcgIDxyb2dlcl9mb25nQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWJHTCBsb2FkIHBvbGljeSBzaG91bGQgYmUgcXVlcmllZCBmb3Ig
dGhlIHRvcCBsZXZlbCBkb2N1bWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggNWJlMDUzZjFlMDg2YjQzZTY4
NmMzNjc0ZGFlN2M1MTYwNWEyODZlNy4uMGVjZWQ1MWYzZTJkNWI2MjFkYWRmMDU3NDlmNWU3NDY2
YTA2ZjUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBib29sIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZQogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKICAg
ICBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHByb3BlcnR5TmFtZVJlZjsKICAgICAKLSAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpT
Q2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xh
c3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgLy8gb3B0aW9uYWwgb3B0
aW1pemF0aW9uIHRvIGJ5cGFzcyBnZXRQcm9wZXJ0eSBpbiBjYXNlcyB3aGVuIHdlIG9ubHkgbmVl
ZCB0byBrbm93IGlmIHRoZSBwcm9wZXJ0eSBleGlzdHMKICAgICAgICAgICAgIGlmIChKU09iamVj
dEhhc1Byb3BlcnR5Q2FsbGJhY2sgaGFzUHJvcGVydHkgPSBqc0NsYXNzLT5oYXNQcm9wZXJ0eSkg
ewpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiAgICAgUmVmUHRy
PE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgSlNWYWx1ZVJlZiB2YWx1ZVJl
ZiA9IHRvUmVmKGV4ZWMsIHZhbHVlKTsKICAgICAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9
IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJl
bnRDbGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBz
ZXRQcm9wZXJ0eSA9IGpzQ2xhc3MtPnNldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFwcm9wZXJ0eU5hbWVSZWYpCkBAIC0zNDMsNyArMzQzLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm8KICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CiAgICAg
UmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0Ns
YXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNz
ID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdERlbGV0
ZVByb3BlcnR5Q2FsbGJhY2sgZGVsZXRlUHJvcGVydHkgPSBqc0NsYXNzLT5kZWxldGVQcm9wZXJ0
eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lUmVmKQpAQCAtNTY0LDcgKzU2
NCw3IEBAIEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiB7CiAgICAgSlNPYmplY3RSZWYgdGhpc1Jl
ZiA9IHRvUmVmKHRoaXMpOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gY2xhc3NS
ZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAg
ICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXMgPSBq
c0NsYXNzLT5zdGF0aWNWYWx1ZXMoZXhlYykpIHsKICAgICAgICAgICAgICAgICBpZiAoU3RhdGlj
VmFsdWVFbnRyeSogZW50cnkgPSBzdGF0aWNWYWx1ZXMtPmdldChuYW1lKSkgewpAQCAtNjAwLDcg
KzYwMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGlj
RnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFCiAgICAgaWYgKFBhcmVudDo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdDIpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QyLmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFt
ZSkpOwogCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsK
ICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqLT5jbGFzc1JlZigpOyBq
c0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlm
IChPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGUqIHN0YXRpY0Z1bmN0aW9ucyA9IGpz
Q2xhc3MtPnN0YXRpY0Z1bmN0aW9ucyhleGVjKSkgewogICAgICAgICAgICAgICAgIGlmIChTdGF0
aWNGdW5jdGlvbkVudHJ5KiBlbnRyeSA9IHN0YXRpY0Z1bmN0aW9ucy0+Z2V0KG5hbWUpKSB7CkBA
IC02MjYsNyArNjI2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpjYWxsYmFja0dldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWQKICAgICBKU09iamVjdFJl
ZiB0aGlzUmVmID0gdG9SZWYodGhpc09iaik7CiAgICAgUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBw
cm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0
eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2Jq
LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsK
ICAgICAgICAgICAgIGlmIChKU09iamVjdEdldFByb3BlcnR5Q2FsbGJhY2sgZ2V0UHJvcGVydHkg
PSBqc0NsYXNzLT5nZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlO
YW1lUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDI3YmM0YzE3ZjNk
ZmVlYjYxZDI1MjMyM2ZkODc4YzQ0NzgwZjc0YzUuLjNjYTgzODY0OWM5MTQwNzM5ZDk0OTIyYWVj
MWVkOTk1ZjBmYTc3ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUs
NiArNSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7
SkFWQVNDUklQVENPUkVfRElSfS9Gb3J3YXJkaW5nSGVhZGVycyIKICAgICAiJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2Fzc2VtYmxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2JpbmRpbmdz
IgorICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMiCiAgICAgIiR7SkFWQVNDUklQ
VENPUkVfRElSfS9ieXRlY29kZSIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J5dGVjb21w
aWxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2RmZyIKQEAgLTUyLDYgKzUzLDggQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9TY3JpcHRPYmplY3QuY3Bw
CiAgICAgYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCiAKKyAgICBidWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwCisKICAgICBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcAog
ICAgIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUJhc2lj
QmxvY2suY3BwCkBAIC03MDcsNyArNzEwLDcgQEAgc2V0KEhBU0hfTFVUX0dFTkVSQVRPUiAke0NN
QUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vY3JlYXRlX2hhc2hfdGFibGUpCiBtYWNybyhHRU5FUkFU
RV9IQVNIX0xVVCBfaW5wdXQgX291dHB1dCkKICAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAg
ICAgIE9VVFBVVCAke19vdXRwdXR9Ci0gICAgICAgIERFUEVORFMgJHtIQVNIX0xVVF9HRU5FUkFU
T1J9ICR7X2lucHV0fQorICAgICAgICBERVBFTkRTICR7SEFTSF9MVVRfR0VORVJBVE9SfSAke19p
bnB1dH0gJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5o
CiAgICAgICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7SEFTSF9MVVRfR0VORVJBVE9S
fSAke19pbnB1dH0gLWkgPiAke19vdXRwdXR9CiAgICAgICAgIFZFUkJBVElNKQogICAgIGxpc3Qo
QVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMgJHtfb3V0cHV0fSkKQEAgLTgxNSwxNiArODE4
LDI3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFC
TEV9ICR7SmF2YVNjcmlwdENvcmVfSU5TUEVDVE9SX1NDUklQVFNfRElSfS9Db2RlR2VuZXJhdG9y
SW5zcGVjdG9yLnB5ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVj
dG9ySlMuanNvbiAtLW91dHB1dF9oX2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENP
UkVfRElSfSIgLS1vdXRwdXRfY3BwX2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENP
UkVfRElSfSIgLS1vdXRwdXRfanNfZGlyICIke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09S
RV9ESVJ9IiAtLW91dHB1dF90eXBlIEphdmFTY3JpcHQgLS13cml0ZV9hbHdheXMgJiYgbWtkaXIg
LXAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IgJiYgY3Ag
JHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0JhY2tlbmRE
aXNwYXRjaGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVj
dG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmggJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENP
UkVfRElSfS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFT
Q1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yCiAgICAgVkVSQkFUSU0pCiAKKyMgSlNDQnVpbHRpbnMK
K2ZpbGUoR0xPQiBKU0NCdWlsdGluc19qc19maWxlcyAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9E
SVJ9L2J1aWx0aW5zLyouanMiKQorYWRkX2N1c3RvbV9jb21tYW5kKAorICAgT1VUUFVUICR7REVS
SVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuY3BwICR7REVSSVZF
RF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAorICAgTUFJTl9ERVBF
TkRFTkNZICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucwor
ICAgREVQRU5EUyAke0pTQ0J1aWx0aW5zX2pzX2ZpbGVzfQorICAgQ09NTUFORCAke1BZVEhPTl9F
WEVDVVRBQkxFfSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRp
bnMgJHtKU0NCdWlsdGluc19qc19maWxlc30gJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENP
UkVfRElSfS9KU0NCdWlsdGlucy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vSlNDQnVpbHRpbnMuY3BwCisgICBWRVJCQVRJTSkKKwogbGlzdChBUFBFTkQgSmF2YVNjcmlw
dENvcmVfU09VUkNFUwogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0v
SW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwCiAgICAgJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuY3BwCiAg
ICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU1R5cGVC
dWlsZGVycy5jcHAKKyAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pT
Q0J1aWx0aW5zLmNwcAogKQogCiBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTCiAg
ICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0JhY2tl
bmREaXNwYXRjaGVycy5oCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElS
fS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuaAogICAgICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaAorICAgICR7REVS
SVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAogKQogCiBhZGRf
Y3VzdG9tX2NvbW1hbmQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CmluZGV4IDExNTZlOTdmZDg4NjI1NTdjOWNmOGQzYjY4YmY0ZDAzYzNlOGJhOGYuLmE4M2JkY2Fk
NTFiMDY2ODg2NjdhNmI3MzIwNTdlNGNkYzg5NjBhOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yOCw4ICsyOCw5IEBAIFZQQVRIID0gXAogICAgICQo
SmF2YVNjcmlwdENvcmUpIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9wYXJzZXIgXAogICAgICQo
SmF2YVNjcmlwdENvcmUpL3J1bnRpbWUgXAotICAgICQoSmF2YVNjcmlwdENvcmUpL2ludGVycHJl
dGVyIFwKLSAgICAkKEphdmFTY3JpcHRDb3JlKS9qaXQgXAorCSQoSmF2YVNjcmlwdENvcmUpL2lu
dGVycHJldGVyIFwKKwkkKEphdmFTY3JpcHRDb3JlKS9qaXQgXAorCSQoSmF2YVNjcmlwdENvcmUp
L2J1aWx0aW5zIFwKICMKIAogLlBIT05ZIDogYWxsCkBAIC01Nyw4ICs1OCwxOCBAQCBhbGwgOiBc
CiAgICAgUmVnRXhwT2JqZWN0Lmx1dC5oIFwKICAgICBTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCBc
CiAgICAgdWRpczg2X2l0YWIuaCBcCisgICAgSlNDQnVpbHRpbnMgXAogIwogCisjIGJ1aWx0aW4g
ZnVuY3Rpb25zCisuUEhPTlk6IEpTQ0J1aWx0aW5zCisKK0pTQ0J1aWx0aW5zOiAkKEphdmFTY3Jp
cHRDb3JlKS9nZW5lcmF0ZS1qcy1idWlsdGlucyBKU0NCdWlsdGlucy5oIEpTQ0J1aWx0aW5zLmNw
cAorSlNDQnVpbHRpbnMuaDogJChKYXZhU2NyaXB0Q29yZSkvZ2VuZXJhdGUtanMtYnVpbHRpbnMg
JChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvKi5qcworCXB5dGhvbiAkXiAkQAorCQkJCQkJCQkJ
CQkJCQkJCQkJCQkgCitKU0NCdWlsdGlucy5jcHA6IEpTQ0J1aWx0aW5zLmgKKwogIyBsb29rdXAg
dGFibGVzIGZvciBjbGFzc2VzCiAKICUubHV0Lmg6IGNyZWF0ZV9oYXNoX3RhYmxlICUuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggZmU1NDQ4ZGRjMWJjZmFhNGM3Mjlh
MWNjMDBkZWE2MjQzMTkzOTBhMi4uNTU2OWY1MDI4ZDhjM2NkZDVhMDRkYzkzNjZhODRiMDRlZWM0
ODE1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtNTEsNiArNTEsNyBA
QCBqYXZhc2NyaXB0Y29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0ZvcndhcmRpbmdIZWFkZXJzIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YmluZGluZ3MgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucyBc
CiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlIFwKIAktSSQoc3Jj
ZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyIFwKIAktSSQoc3JjZGlyKS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIgXApAQCAtMTEwLDEyICsxMTEsMTYgQEAgRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnREZXNpcmVkT2Zmc2V0cy5oOiAkKGphdmFz
Y3JpcHRjb3JlX3NvdXJjZXMpICQKIAkkKEFNX1ZfR0VOKSQoUlVCWSkgJChzcmNkaXIpL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIg
JChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbSAkQAogCSQoQU1fVl9hdCl0b3VjaCAkQAogCi0kKFByb2dyYW1zX0xMSW50T2Zmc2V0c0V4
dHJhY3Rvcl9PQkpFQ1RTKTogRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnREZXNp
cmVkT2Zmc2V0cy5oCiskKFByb2dyYW1zX0xMSW50T2Zmc2V0c0V4dHJhY3Rvcl9PQkpFQ1RTKTog
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnREZXNpcmVkT2Zmc2V0cy5oIAogCiBE
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9MTEludEFzc2VtYmx5Lmg6IFByb2dyYW1zL0xM
SW50T2Zmc2V0c0V4dHJhY3RvciQoRVhFRVhUKQogCSQoQU1fVl9HRU4pJChSVUJZKSAkKHNyY2Rp
cikvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiICQoc3JjZGlyKS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gUHJvZ3JhbXMv
TExJbnRPZmZzZXRzRXh0cmFjdG9yJChFWEVFWFQpICRACiAJJChBTV9WX2F0KXRvdWNoICRACiAK
K0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmg6IERlcml2ZWRTb3Vy
Y2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmNwcAorRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvSlNDQnVpbHRpbnMuY3BwOiAkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2dlbmVyYXRlLWpzLWJ1aWx0aW5zICQoamF2YXNjcmlwdGNvcmVfYnVpbHRpbnNfanNfbm9zb3Vy
Y2VzKQorCSQoQU1fVl9HRU4pJChQWVRIT04pICReICRACisKICQobGliamF2YXNjcmlwdGNvcmVn
dGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVS
U0lPTkBfbGFfT0JKRUNUUyk6IERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50QXNz
ZW1ibHkuaAogCiBqc2M6ICQoamF2YXNjcmlwdGNvcmVfYnVpbHRfbm9zb3VyY2VzKSBQcm9ncmFt
cy9qc2MkKEVYRUVYVCkKQEAgLTIxNiw2ICsyMjEsNyBAQCBFWFRSQV9ESVNUICs9IFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvS2V5d29yZExvb2t1cEdlbmVyYXRvci5weSBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9LZXl3b3Jkcy50YWJsZSBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL1RIQU5LUyBcCisJJChqYXZhc2NyaXB0Y29yZV9idWlsdGluc19qc19ub3NvdXJjZXMpIFwK
IAkkKGxsaW50X25vc291cmNlcykgXAogCSQob2ZmbGluZWFzbV9ub3NvdXJjZXMpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggY2RiNTQyNmIwNmI1MmE5
ODI1NmVlOTA1OGJiYThmMTFlZWE2OWVlMC4uOThmYWFhN2QxNzVhYTYxZjIwODk2Y2VlYjEzODYz
ZTI3YjI2NmNlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
QEAgLTIwLDYgKzIwLDggQEAgamF2YXNjcmlwdGNvcmVfYnVpbHRfbm9zb3VyY2VzICs9IFwKIAlE
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9FcnJvclByb3RvdHlwZS5sdXQuaCBcCiAJRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNEYXRhVmlld1Byb3RvdHlwZS5sdXQuaCBcCiAJ
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3QubHV0LmggXAorCURl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmNwcCBcCisJRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvSlNDQnVpbHRpbnMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvSlNPTk9iamVjdC5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvSlNQcm9taXNlQ29uc3RydWN0b3IubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFT
Y3JpcHRDb3JlL0pTUHJvbWlzZVByb3RvdHlwZS5sdXQuaCBcCkBAIC0zNSw2ICszNyw5IEBAIGph
dmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvTExJbnREZXNpcmVkT2Zmc2V0cy5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9MTEludEFzc2VtYmx5LmgKIAoramF2YXNjcmlwdGNvcmVfYnVpbHRpbnNfanNfbm9z
b3VyY2VzICs9IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXkucHJvdG90
eXBlLmpzCisKIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0FQSUNhc3QuaCBcCkBAIC0xMDIsNiArMTA3LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNl
cyArPSBcCiAgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5o
IFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwIFwK
ICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuaCBcCisgICAg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAgXAor
ICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2ZpbGUu
Y3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJv
ZmlsZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNw
cCBcCkBAIC0xMjQxLDcgKzEyNDgsOSBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlE
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hl
cnMuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JKU0Zyb250
ZW5kRGlzcGF0Y2hlcnMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVj
dG9ySlNUeXBlQnVpbGRlcnMuY3BwIFwKLQlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9J
bnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUv
SW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaCBcCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvSlNDQnVpbHRpbnMuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NC
dWlsdGlucy5oCiAKIGxsaW50X25vc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gXApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2oKaW5kZXggNWVkZWZkYmU4NTVmOTZhNjI2OGQ4NTczYmVjMWQwYzNk
ODU4YWE1Yy4uYTEyZGIxODM0ODZkZmJiY2E4M2YzYTc4ZTljZjk4NjMxYjI2NTNkYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBAIC0zMDksNiArMzA5LDcgQEAKICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRPYmplY3QuY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0VmFsdWUuY3Bw
IiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnVpbHRpbnNcQnVpbHRpbkV4ZWN1dGFi
bGVzLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxs
b2NhdGlvblByb2ZpbGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNv
ZGVcQXJyYXlQcm9maWxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVj
b2RlXEJ5dGVjb2RlQmFzaWNCbG9jay5jcHAiIC8+CkBAIC03MjEsNiArNzIyLDcgQEAKICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3Jt
QXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JKU0Jh
Y2tlbmREaXNwYXRjaGVycy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBs
YXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0
b3JKU1R5cGVCdWlsZGVycy5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuY3BwIiAvPgogICA8L0l0ZW1Hcm91cD4KICAg
PEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xBcnJheUNvbnN0cnVjdG9yLmx1dC5oIiAvPgpAQCAtNzUwLDYgKzc1Miw3IEBACiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9y
bUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcUmVnRXhwT2JqZWN0
Lmx1dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXFJlZ0V4cFByb3RvdHlwZS5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2pl
Y3ROYW1lKVxEZXJpdmVkU291cmNlc1xTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCIgLz4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3Jt
QXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NCdWlsdGlucy5o
IiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXEFQSVxBUElDYWxsYmFja0Z1bmN0aW9uLmgiIC8+CkBAIC03OTgsNiArODAxLDcgQEAK
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdEZ1bmN0aW9uQ2FsbC5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0T2JqZWN0Lmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRWYWx1ZS5oIiAv
PgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnVpbHRpbnNcQnVpbHRpbkV4ZWN1dGFibGVz
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRp
b25Qcm9maWxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJh
eVByb2ZpbGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEJ5VmFs
SW5mby5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5m
aWx0ZXJzCmluZGV4IDg3ZTEyYTQ3MTU4YmI2MjI0ZDQ5ZmQ2MjI5NzhjNGE5YzQ0MzVhNjUuLjg2
OWMxZjU4OWJjYjY4NmViOWNmMjBjMDk2YmUxYjgzYTU1MWUyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTcsNiArNyw5IEBACiAg
ICAgPEZpbHRlciBJbmNsdWRlPSJiaW5kaW5ncyI+CiAgICAgICA8VW5pcXVlSWRlbnRpZmllcj57
MGJhY2UxMjMtNDU4Mi1lZWJjLTkzMTQtNzgxOWIzNzZjMTk4fTwvVW5pcXVlSWRlbnRpZmllcj4K
ICAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9ImJ1aWx0aW5zIj4KKyAgICAgIDxV
bmlxdWVJZGVudGlmaWVyPnszYjlkNzJhNS0xMzViLTQzYjMtYTUyNC1jNmQyYjlkMjlkMzV9PC9V
bmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgogICAgIDxGaWx0ZXIgSW5jbHVkZT0iYnl0
ZWNvZGUiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezc2NjA4OGEwLTEyMTYtNDg1NC1hYTQz
LTU2MGM1ZTI4MzY2OH08L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CkBAIC0xMDgs
NiArMTExLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxNYWNyb0Fz
c2VtYmxlci5jcHAiPgogICAgICAgPEZpbHRlcj5hc3NlbWJsZXI8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVj
dXRhYmxlcy5jcHAiPgorICAgICAgPEZpbHRlcj5idWlsdGluczwvRmlsdGVyPgorICAgIDwvQ2xD
b21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0
aW9uUHJvZmlsZS5jcHAiPgogICAgICAgPEZpbHRlcj5ieXRlY29kZTwvRmlsdGVyPgogICAgIDwv
Q2xDb21waWxlPgpAQCAtMTMyOSw2ICsxMzM1LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAiPgog
ICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBs
YXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NCdWls
dGlucy5jcHAiPgorICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KKyAgICA8
L0NsQ29tcGlsZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxBUElcQVBJQ2FsbGJhY2tGdW5jdGlvbi5oIj4KQEAgLTE0NTQsNiArMTQ2
Myw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcWDg2QXNzZW1ibGVy
LmgiPgogICAgICAgPEZpbHRlcj5hc3NlbWJsZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxlcy5o
Ij4KKyAgICAgIDxGaWx0ZXI+YnVpbHRpbnM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUu
aCI+CiAgICAgICA8RmlsdGVyPmJ5dGVjb2RlPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBA
IC0yNTUwLDYgKzI1NjIsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEFycmF5UHJvdG90eXBlLmx1dC5oIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZl
ZCBTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuaCI+CisgICAgICA8Rmls
dGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxWTS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmVDb21tb24ucHJvcHMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZUNvbW1vbi5wcm9wcwppbmRleCAzNjIyZmZjNTc3YzQzZGRmNzBkYTUxZmY2OGFkNjQ2ZjYzMDRl
NTY3Li5jNTg4ODcwYzJmZDEzZDYwNzZkMzhmNTJjYTYyMjVkYjI4NzJjNzgyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZUNvbW1vbi5wcm9wcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZUNvbW1vbi5wcm9wcwpAQCAtNSw3ICs1LDcgQEAKICAg
PFByb3BlcnR5R3JvdXAgLz4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGls
ZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXDsuLlx0b29sc1w7Li5c
cnVudGltZVw7Li5cbGxpbnRcOy4uXGppdFw7Li5cZGlzYXNzZW1ibGVyXDsuLlxoZWFwXDsuLlxk
ZWJ1Z2dlclw7Li5cYXNzZW1ibGVyXDsuLlxwcm9maWxlclw7Li5ceWFyclw7Li5caW50ZXJwcmV0
ZXJcOy4uXGJ5dGVjb2RlXDsuLlxkZmdcOy4uXGJ5dGVjb21waWxlclw7Li5ccGFyc2VyXDsuLlxB
UElcOy4uXGZ0bFw7Li5cYmluZGluZ3NcOy4uXGluc3BlY3Rvclw7JChDb25maWd1cmF0aW9uQnVp
bGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXEphdmFTY3JpcHRDb3JlXERlcml2ZWRT
b3VyY2VzXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVw7JChDb25maWd1cmF0aW9u
QnVpbGREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmVcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxpbmNsdWRlXHByaXZhdGVcOyQoV2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZTskKFdlYktpdF9M
aWJyYXJpZXMpXGluY2x1ZGVccHJpdmF0ZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMp
PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM+Li5cOy4uXHRvb2xzXDsuLlxydW50aW1lXDsuLlxsbGludFw7Li5caml0XDsu
LlxkaXNhc3NlbWJsZXJcOy4uXGhlYXBcOy4uXGRlYnVnZ2VyXDsuLlxhc3NlbWJsZXJcOy4uXHBy
b2ZpbGVyXDsuLlx5YXJyXDsuLlxpbnRlcnByZXRlclw7Li5cYnl0ZWNvZGVcOy4uXGJ1aWx0aW5z
XDsuLlxkZmdcOy4uXGJ5dGVjb21waWxlclw7Li5ccGFyc2VyXDsuLlxBUElcOy4uXGZ0bFw7Li5c
YmluZGluZ3NcOy4uXGluc3BlY3Rvclw7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXEphdmFTY3JpcHRDb3JlXERlcml2ZWRTb3VyY2VzXDskKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVw7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1
ZGVcSmF2YVNjcmlwdENvcmVcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZh
dGVcOyQoV2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZTskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1
ZGVccHJpdmF0ZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPgogICAgICAgPEZvcmNlZEluY2x1ZGVGaWxlcz5JQ1VWZXJzaW9uLmg7
JShGb3JjZWRJbmNsdWRlRmlsZXMpPC9Gb3JjZWRJbmNsdWRlRmlsZXM+CiAgICAgPC9DbENvbXBp
bGU+CiAgICAgPExpbms+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI3ZTg3Njc0
MGE5NjRiMDI4OTg0ZWQ2NzgxNjE4MjBhNWRjZjc3YzQuLjkxMTU3M2FiMTdkMzM5NzRhYTdjOWEw
MTFkYjIwMGIwOWFmNzhiZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MjIs
NyArOTIyLDYgQEAKIAkJQTUwM0ZBMTkxODhFMEZCMDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxs
RnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTUwM0ZBMTMxODhFMEZBRjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwICovOyB9
OwogCQlBNTAzRkExQTE4OEUwRkIwMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTQxODhF
MEZBRjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCAqLzsgfTsKIAkJQTUwM0ZBMUIx
ODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNTE4OEUwRkIwMDAxMTBG
MTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLzsgfTsKLQkJQTUwM0ZBMUMxODhFMEZC
MDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTYxODhFMEZCMDAwMTEwRjE0IC8qIEpT
SmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQlBNTAzRkExRDE4OEUwRkIwMDAxMTBGMTQg
LyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE3MTg4RTBGQjAwMDExMEYxNCAvKiBK
U0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwICovOyB9OwogCQlBNTAzRkExRTE4OEUw
RkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExODE4OEUwRkIwMDAx
MTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggKi87IH07CiAJCUE1MDNG
QTIxMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExRjE4OEVGRjY4MDAxMTBGMTQg
LyogU2NyaXB0QnJlYWtwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0xMDI0LDYgKzEwMjMsNyBAQAogCQlBNzBCMDgzMjE3QTBCNzlCMDBE
QUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3MEIwODMwMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlT
d2l0Y2guY3BwICovOyB9OwogCQlBNzBCMDgzMzE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5
U3dpdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NzBCMDgzMTE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmggKi87IH07CiAJCUE3
MTIzNkU1MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxMjM2RTQxMTk1RjMzQzAwQkQy
MTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgKi87IH07CisJCUE3MURBODBGMTg4MERCQUIwMEQx
RjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3MURBODBFMTg4MERCQUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lubGlu
ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlB
NzIwMjhCNjE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjAyOEI0MTc5NzYwMUUw
MDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwICovOyB9OwogCQlBNzIwMjhCODE3OTc2
MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIwMjhCNTE3OTc2MDFFMDA5ODAyOEMgLyogSlND
VGVzdFJ1bm5lclV0aWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQTcyMDI4QkExNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIwMjhC
OTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTE1MCw2ICsxMTUwLDEwIEBACiAJ
CUE3Q0EzQUU4MTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0EzQUUyMTdEQTQxQUUwMDY1MzhBRiAv
KiBKU1dlYWtNYXAuaCAqLzsgfTsKIAkJQTdDQTNBRUIxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtN
YXBEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3Q0EzQUU5MTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5jcHAgKi87IH07CiAJCUE3
Q0EzQUVDMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDQTNBRUExN0RBNTE2ODAwNjUzOEFGIC8q
IFdlYWtNYXBEYXRhLmggKi87IH07CisJCUE3RDgwMUE0MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWls
dGluRXhlY3V0YWJsZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTdEODAxQTExODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5j
cHAgKi87IH07CisJCUE3RDgwMUE1MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJs
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDgw
MUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBN0Q4MDFBODE4ODBENkE4MDAy
NkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTdEODAxQTYxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNw
cCAqLzsgfTsKKwkJQTdEODAxQTkxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4MDFBNzE4ODBE
NkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBN0Q4OUNGMjE3QTBCOENDMDA3NzNBRDggLyogREZHQmFz
aWNCbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBN0Q4OUNFMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgKi87IH07CiAJ
CUE3RDg5Q0YzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4OUNFNDE3QTBC
OENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwICovOyB9OwogCQlBN0Q4OUNG
NDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDg5Q0U1MTdBMEI4Q0MwMDc3M0FE
OCAvKiBERkdCbG9ja0luc2VydGlvblNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0yNDYyLDYgKzI0NjYsOCBAQAogCQlBNzEyMzZFNDExOTVG
MzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpJVE9wY29kZXMzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE3MThGNjFBMTE3NTRBMjEwMDI0NjVBNyAvKiBSZWdFeHBKaXRUYWJsZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwSml0VGFibGVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MThGODIxMTE3OEVCNEIwMDI0NjVBNyAvKiBjcmVh
dGVfcmVnZXhfdGFibGVzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0Rmls
ZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBjcmVh
dGVfcmVnZXhfdGFibGVzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzFEQTgwRDE4
ODBENzFGMDBEMUYyOTkgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNj
cmlwdC5weXRob247IHBhdGggPSAiZ2VuZXJhdGUtanMtYnVpbHRpbnMiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBNzFEQTgwRTE4ODBEQkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nSW5saW5lcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzIwMjhCNDE3OTc2MDFFMDA5ODAyOEMg
LyogSlNDVGVzdFJ1bm5lclV0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE3MjAyOEI1MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDVGVzdFJ1bm5lclV0aWxzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI5MTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1
bmN0aW9uSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Z1bmN0
aW9uSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU5MCw2ICsyNTk2
LDExIEBACiAJCUE3Q0EzQUUyMTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWFrTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE3Q0EzQUU5MTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrTWFwRGF0YS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Q0EzQUVBMTdEQTUxNjgwMDY1MzhBRiAvKiBX
ZWFrTWFwRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrTWFwRGF0
YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFBMDE4ODBENjZFMDAyNkMz
OUIgLyogQXJyYXkucHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0
OyBwYXRoID0gQXJyYXkucHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBN0Q4MDFBMTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAv
KiBCdWlsdGluRXhlY3V0YWJsZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QnVpbHRpbkV4ZWN1dGFibGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgw
MUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0NCdWlsdGlucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE3RDgwMUE3MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBN0Q4OUNFMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9j
ay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdCYXNpY0Jsb2Nr
LmNwcDsgcGF0aCA9IGRmZy9ERkdCYXNpY0Jsb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTdEODlDRTQxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Jsb2NrSW5zZXJ0
aW9uU2V0LmNwcDsgcGF0aCA9IGRmZy9ERkdCbG9ja0luc2VydGlvblNldC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RDg5Q0U1MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9j
a0luc2VydGlvblNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCbG9j
a0luc2VydGlvblNldC5oOyBwYXRoID0gZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTI2LDYgKzI5MzcsNyBAQAogCQkJCTg2MDRGNEYy
MTQzQTZDNDQwMEIyOTVGNSAvKiBDaGFuZ2VMb2cgKi8sCiAJCQkJRjY5MkE4NTQwMjU1NTk3RDAx
RkY2MEY3IC8qIGNyZWF0ZV9oYXNoX3RhYmxlICovLAogCQkJCUE3MThGODIxMTE3OEVCNEIwMDI0
NjVBNyAvKiBjcmVhdGVfcmVnZXhfdGFibGVzICovLAorCQkJCUE3MURBODBEMTg4MEQ3MUYwMEQx
RjI5OSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAqLywKIAkJCQk0NUUxMkQ4ODA2QTQ5QjBGMDBF
OURGODQgLyoganNjLmNwcCAqLywKIAkJCQlGNjhFQkI4QzAyNTVENEM2MDFGRjYwRjcgLyogY29u
ZmlnLmggKi8sCiAJCQkJRjVDMjkwRTYwMjg0Rjk4RTAxODYzNUNBIC8qIEphdmFTY3JpcHRDb3Jl
UHJlZml4LmggKi8sCkBAIC0yOTM0LDYgKzI5NDYsNyBAQAogCQkJCTE0MzJFQkQ3MEEzNENBRDQw
MDcxN0I5RiAvKiBBUEkgKi8sCiAJCQkJOTY4OENCMTIwRUQxMkI0RTAwMUQ2NDlGIC8qIGFzc2Vt
YmxlciAqLywKIAkJCQlBNTRDRjJFQTE4NEVBNzM5MDAyMzdGMTkgLyogYmluZGluZ3MgKi8sCisJ
CQkJQTdEODAxOUYxODgwRDY2RTAwMjZDMzlCIC8qIGJ1aWx0aW5zICovLAogCQkJCTk2OUEwNzhG
MEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLywKIAkJCQk3RTM5RDgxRDBFQzM4RUZBMDAz
QUYxMUEgLyogYnl0ZWNvbXBpbGVyICovLAogCQkJCTFDOTA1MTNFMEJBOUU4ODMwMDgxRTlEMCAv
KiBDb25maWd1cmF0aW9ucyAqLywKQEAgLTM1MDksNiArMzUyMiw4IEBACiAJCTY1MEZERjhEMDlE
MEZDQTcwMDc2OUU1NCAvKiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUE3RDgwMUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NC
dWlsdGlucy5jcHAgKi8sCisJCQkJQTdEODAxQTcxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0
aW5zLmggKi8sCiAJCQkJQkMxOEM1MjMwRTE2RkM4QTAwQjM0NDYwIC8qIEFycmF5UHJvdG90eXBl
Lmx1dC5oICovLAogCQkJCUJDRDIwM0U3MEUxNzE4RjQwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBl
Lmx1dC5oICovLAogCQkJCUE1MTNFNUM2MTg1Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlw
dFNvdXJjZS5oICovLApAQCAtMzgxMSw2ICszODI2LDcgQEAKIAkJCQlBNzkwREQ2QTE4MkY0OTk3
MDA1ODg4MDcgLyogSlNTZXRJdGVyYXRvci5oICovLAogCQkJCUJDMDJFOUI2MEUxODQyRkEwMDBG
OTI5NyAvKiBKU1N0cmluZy5jcHAgKi8sCiAJCQkJRjY5MkE4NjIwMjU1NTk3RDAxRkY2MEY3IC8q
IEpTU3RyaW5nLmggKi8sCisJCQkJQTcxREE4MEUxODgwREJBQjAwRDFGMjk5IC8qIEpTU3RyaW5n
SW5saW5lcy5oICovLAogCQkJCTg2RTg1NTM4MTExQjk5NjgwMDFBRjUxRSAvKiBKU1N0cmluZ0J1
aWxkZXIuaCAqLywKIAkJCQkyNjAwQjVBNDE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2lu
ZXIuY3BwICovLAogCQkJCTI2MDBCNUE1MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5l
ci5oICovLApAQCAtNDU2MSw2ICs0NTc3LDE2IEBACiAJCQlwYXRoID0gcmVtb3RlOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQTdEODAxOUYxODgwRDY2RTAwMjZDMzlCIC8q
IGJ1aWx0aW5zICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQlBN0Q4MDFBMDE4ODBENjZFMDAyNkMzOUIgLyogQXJyYXkucHJvdG90eXBlLmpzICovLAorCQkJ
CUE3RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwICovLAor
CQkJCUE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCAqLywK
KwkJCSk7CisJCQlwYXRoID0gYnVpbHRpbnM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwor
CQl9OwogLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYSGVhZGVyc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtNDYwNiwxMSArNDYzMiwxMSBAQAogCQkJCTg2QUREMTQ1
MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTVDRUVFMTUxODdGM0JBRDAwRTU1Qzk5IC8qIEluc3BlY3RvckFnZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk2NUMwMjg1RDE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmggaW4gSGVh
ZGVycyAqLywKLSAJCQkJMkE2ODI5NUIxODc1RjgwNTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJp
ZXIuaCBpbiBIZWFkZXJzICovLAotICAgICAgICAgICAgICAgIDJBNEVDOTBDMTg2MEQ2QzIwMDk0
Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTJBNjgyOTVC
MTg3NUY4MDUwMEI2QzNFMiAvKiBDb3B5V3JpdGVCYXJyaWVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkyQTRFQzkwQzE4NjBENkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGRTU5MzJBODE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTMyNDM5MzE4NTY5NzA5MDAyRUQ2OTIgLyogQ29kZUdlbmVy
YXRvckluc3BlY3RvclN0cmluZ3MucHkgaW4gSGVhZGVycyAqLywKLSAJCQkJQTUzMjQzOTIxODU2
OTcwOTAwMkVENjkyIC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkgaW4gSGVhZGVycyAqLywK
KwkJCQlBNTMyNDM5MjE4NTY5NzA5MDAyRUQ2OTIgLyogQ29kZUdlbmVyYXRvckluc3BlY3Rvci5w
eSBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTRGMTdFRTI3NDkwMEFCQjIxNyAvKiBUZW1wUmVn
aXN0ZXJTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MEU0QjY0MTg4MDlERDUwMDY4QTQ2RCAv
KiBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVCNThD
MTUxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC00NjIyLDcgKzQ2NDgsNyBAQAogCQkJCTBGODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBB
cnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUyOTE4N0NB
NUU2MDA4NDNCMTAgLyogaW5saW5lLWFuZC1taW5pZnktc3R5bGVzaGVldHMtYW5kLXNjcmlwdHMu
cHkgaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUyQjE4N0NBNzVCMDA4NDNCMTAgLyoganNtaW4u
cHkgaW4gSGVhZGVycyAqLywKLSAJCQkJQTUzMjQzOTgxODU2QTQ4OTAwMkVENjkyIC8qIEluc3Bl
Y3RvckpTLmpzb24gaW4gSGVhZGVycyAqLywKKwkJCQlBNTMyNDM5ODE4NTZBNDg5MDAyRUQ2OTIg
LyogSW5zcGVjdG9ySlMuanNvbiBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwRTJBMTg3Q0E3NTkw
MDg0M0IxMCAvKiB4eGQucGwgaW4gSGVhZGVycyAqLywKIAkJCQlGRUEwODYyMDE4MkI3QTA0MDBG
NkQ4NTEgLyogQnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzUxN0FEQjVG
MzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTQ3MzMsNyArNDc1
OSw3IEBACiAJCQkJQTFBMDA5QzAxODMxQTIyRDAwQ0Y4NzExIC8qIE1hY3JvQXNzZW1ibGVyQVJN
NjQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUM5REM1MTMyOERGODIwMDJCMkFENyAvKiBERkdC
eXRlQ29kZVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0ODUzMjgxODdERkRFQzAwODNC
Njg3IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5LmggaW4gSGVhZGVycyAqLywKLSAgICAgICAgICAg
ICAgICBBNTkzQ0Y4NzE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQTU5M0NGODcxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3Rv
ckFnZW50UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjU2QzM2MTYyN0IwQUQwMDdG
Mjc4MyAvKiBERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY3QjI5NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERGR0NhcGFiaWxpdGllcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NTgxNEVGOTBBMjAwQzcyNTMyIC8qIERGR0NGQVBo
YXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTQ4NzIsNiArNDg5OCw3IEBACiAJCQkJMEZFQTBBMUQx
NzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZFQTBBMUYxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBp
biBIZWFkZXJzICovLAogCQkJCUE1OTQ1NTkzMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9i
amVjdERlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3RDgwMUE5MTg4MEQ2QTgwMDI2
QzM5QiAvKiBKU0NCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMEExNzA1MTNE
QjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0ODUz
MkExODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292ZXJ5T3Bjb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkVBMEEyMzE3MDk2MDY5MDBCQjcyMkMgLyogRlRMQ29tbW9uVmFsdWVzLmggaW4gSGVh
ZGVycyAqLywKQEAgLTQ5NDYsNiArNDk3Myw3IEBACiAJCQkJQkMxOEM0MEYwRTE2RjVDRDAwQjM0
NDYwIC8qIElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyNUY4QkNFMTU3NTQ0QTkw
MDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdG
Mzk5MTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ0hlYWRlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTdEODAxQTUxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZCN0YzOUExNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nSGVhZGVy
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOUIxNUVEOEU0NjAwRjE2N0IyIC8q
IEluZGV4aW5nVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDRUZBQjAxODA1Q0E2RDAwNDcy
Q0U0IC8qIEluaXRpYWxpemVMTFZNLmggaW4gSGVhZGVycyAqLywKQEAgLTUyMTgsNiArNTI0Niw3
IEBACiAJCQkJQTUzMjQzODgxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckpTQmFja2VuZERp
c3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1NjBFMTZGNUNEMDBCMzQ0NjAg
LyogUHJvdGVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3NEMzM0IxNkFBMkQ5NTAwNjJGMDFE
IC8qIFByb3RvdHlwZU1hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTcxREE4MEYxODgwREJBQjAw
RDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQx
NENBN0REOTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdDMDA4Q0U3MTg3NjMxQjYwMDk1NUMyNCAvKiBNaWNyb3Rhc2suaCBpbiBIZWFk
ZXJzICovLApAQCAtNTgzNiw2ICs1ODY1LDcgQEAKIAkJCQlBN0Q4OUNGMjE3QTBCOENDMDA3NzNB
RDggLyogREZHQmFzaWNCbG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzBCMDgzMjE3QTBC
NzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3
RDg5Q0YzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlBN0Q4MDFBNDE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFi
bGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUM5REM0MTMyOERGODIwMDJCMkFENyAvKiBE
RkdCeXRlQ29kZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4MkUyMTE0MTcyQ0Uz
MDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRkZD
OTU3MTRFRjkwQTAwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTU4NTIsNiArNTg4Miw3IEBACiAJCQkJMEZGRkM5NTkxNEVGOTBBNjAwQzcyNTMyIC8qIERGR0NT
RVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkZDNzcyMTZFMTJGNzEwMDM4RDk3NiAv
KiBERkdEQ0VQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhGMkI5OTE3MkYwNEZGMDA3
REJEQTUgLyogREZHRGVzaXJlZElkZW50aWZpZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3
RDgwMUE4MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBNzNFMTMzMDE3OTYyNENEMDBFNERFQTggLyogREZHRGVzaXJlZFN0cnVjdHVyZUNoYWlu
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkMwRjdDRDE3QkJGQzVCMDA0NjRGRTQgLyogREZH
RGVzaXJlZFRyYW5zaXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRTg1MzRCMTcyM0NE
QTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC01OTc2LDcgKzYwMDcsNyBAQAogCQkJCTBGNkIxQ0M1MTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExV
bndpbmRJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOUQzMzlBMTgwM0FEQjcwMDczQzJC
QyAvKiBGVExTdGFja01hcHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMTYxNzA2QkI5
MDAwQkI3MjJDIC8qIEZUTFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAotIAkJCQk3QzAwOENEMjE4
NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9taXNlRnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTdDMDA4Q0QyMTg2RjhBOTMwMDk1NUMyNCAvKiBKU1Byb21pc2VGdW5jdGlvbnMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEY2QjFDQjUxODVGQzlFOTAwODQ1RDk3IC8qIEZUTEpTQ2FsbC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJFMTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMVGh1
bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1OTNDRjdDMTg0MDM2MDMwMEJGQ0UyNyAvKiBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjNlYjQyZjVjYzQzM2YxNjM2MzQzYmZjOTgyYWEyYWFmYjMzNmU5NDkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzCkBA
IC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCitmdW5jdGlvbiBldmVyeShjYWxsYmFjayAvKiwgdGhpc0FyZyAqLykgeworICAgICJ1c2Ug
c3RyaWN0IjsKKyAgICBpZiAodGhpcyA9PT0gbnVsbCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBl
RXJyb3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUg
bnVsbCIpOworICAgIAorICAgIGlmICh0aGlzID09PSB1bmRlZmluZWQpCisgICAgICAgIHRocm93
IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhp
c3wgbm90IGJlIHVuZGVmaW5lZCIpOworICAgIAorICAgIHZhciBhcnJheSA9IEBPYmplY3QodGhp
cyk7CisgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCA+Pj4gMDsKKyAgICAKKyAgICBpZiAo
dHlwZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVF
cnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIp
OworCisgICAgdmFyIHRoaXNBcmcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sx
XSA6IHVuZGVmaW5lZDsKKyAgICAKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsr
KSB7CisgICAgICAgIGlmICghKGkgaW4gYXJyYXkpKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIGlmICghY2FsbGJhY2suQGNhbGwodGhpc0FyZywgYXJyYXlbaV0sIGksIGFycmF5KSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7
Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
RXhlY3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5F
eGVjdXRhYmxlcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQxZGJiNWY5MjI1ZTI4YTEyZWQzZDE3OThmZjE3
NjhlNDM2NzFhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKworI2luY2x1ZGUgIkV4ZWN1dGFibGUu
aCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGlu
ZXMuaCIKKyNpbmNsdWRlICJQYXJzZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0J1aWx0aW5F
eGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKFZNJiB2bSkKKyAgICA6IG1fdm0odm0pCisj
ZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5h
bWUsIGxlbmd0aCkgLCBtXyMjbmFtZSMjU291cmNlKG1ha2VTb3VyY2UoU3RyaW5nSW1wbDo6Y3Jl
YXRlRnJvbUxpdGVyYWwoc18jI25hbWUsIGxlbmd0aCksIFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21M
aXRlcmFsKCI8YnVpbHRpbj4iKSkpCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTihJTklUSUFMSVpF
X0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgRVhQT1NFX0JVSUxUSU5fU1RSSU5HUwor
eworfQorCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpj
cmVhdGVCdWlsdGluRXhlY3V0YWJsZShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGNvbnN0IElk
ZW50aWZpZXImIG5hbWUpCit7CisgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZTsKKyAgICBQYXJzZXJFcnJvciBlcnJvcjsKKyAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+
IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oJm1fdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmll
cigpLCBKU1BhcnNlQnVpbHRpbiwgSlNQYXJzZVByb2dyYW1Db2RlLCBlcnJvciwgJnBvc2l0aW9u
QmVmb3JlTGFzdE5ld2xpbmUpOworCisgICAgaWYgKCFwcm9ncmFtKSB7CisgICAgICAgIGRhdGFM
b2coIkZhdGFsIGVycm9yIGNvbXBpbGluZyBidWlsdGluIGZ1bmN0aW9uICciLCBuYW1lLnN0cmlu
ZygpLCAiJzogIiwgZXJyb3IubV9tZXNzYWdlKTsKKyAgICAgICAgQ1JBU0goKTsKKyAgICB9CisK
KyAgICBTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVtZW50ID0gcHJvZ3JhbS0+c2luZ2xlU3RhdGVt
ZW50KCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudCk7CisgICAgUkVMRUFTRV9B
U1NFUlQoZXhwclN0YXRlbWVudC0+aXNFeHByU3RhdGVtZW50KCkpOworICAgIEV4cHJlc3Npb25O
b2RlKiBmdW5jRXhwciA9IHN0YXRpY19jYXN0PEV4cHJTdGF0ZW1lbnROb2RlKj4oZXhwclN0YXRl
bWVudCktPmV4cHIoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwcik7CisgICAgUkVMRUFT
RV9BU1NFUlQoZnVuY0V4cHItPmlzRnVuY0V4cHJOb2RlKCkpOworICAgIEZ1bmN0aW9uQm9keU5v
ZGUqIGJvZHkgPSBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihmdW5jRXhwciktPmJvZHkoKTsK
KyAgICBSRUxFQVNFX0FTU0VSVCghcHJvZ3JhbS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7Cisg
ICAgCisgICAgYm9keS0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7
CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keS0+aWRl
bnQoKS5pc051bGwoKSk7CisgICAgCisgICAgLy8gVGhpcyBmdW5jdGlvbiBhc3N1bWVzIGFuIGlu
cHV0IHN0cmluZyB0aGF0IHdvdWxkIHJlc3VsdCBpbiBhIHNpbmdsZSBhbm9ueW1vdXMgZnVuY3Rp
b24gZXhwcmVzc2lvbi4KKyAgICBib2R5LT5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZUxh
c3ROZXdsaW5lKTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5KTsKKyAgICBmb3IgKGNvbnN0IGF1
dG8mIGNsb3NlZFZhcmlhYmxlIDogcHJvZ3JhbS0+Y2xvc2VkVmFyaWFibGVzKCkpIHsKKyAgICAg
ICAgaWYgKGNsb3NlZFZhcmlhYmxlID09IG1fdm0ucHJvcGVydHlOYW1lcy0+YXJndW1lbnRzLmlt
cGwoKSkKKyAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBpZiAoY2xvc2VkVmFy
aWFibGUgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLmltcGwoKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBSRUxFQVNFX0FTU0VSVChjbG9zZWRWYXJpYWJs
ZS0+aXNFbXB0eVVuaXF1ZSgpKTsKKyAgICB9CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVh
dGUoJm1fdm0sIHNvdXJjZSwgYm9keSwgdHJ1ZSwgVW5saW5rZWRCdWlsdGluRnVuY3Rpb24pOwor
ICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+bV9uYW1lVmFsdWUuc2V0KG1fdm0sIGZ1bmN0aW9uRXhl
Y3V0YWJsZSwganNTdHJpbmcoJm1fdm0sIG5hbWUuc3RyaW5nKCkpKTsKKyAgICByZXR1cm4gZnVu
Y3Rpb25FeGVjdXRhYmxlOworfQorCisjZGVmaW5lIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVT
KG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpuYW1lIyNFeGVjdXRhYmxlKCkgXAore1wKKyAgICBpZiAo
IW1fIyNuYW1lIyNFeGVjdXRhYmxlKVwKKyAgICAgICAgbV8jI25hbWUjI0V4ZWN1dGFibGUgPSBj
cmVhdGVCdWlsdGluRXhlY3V0YWJsZShtXyMjbmFtZSMjU291cmNlLCBtX3ZtLnByb3BlcnR5TmFt
ZXMtPmZ1bmN0aW9uTmFtZSk7XAorICAgIHJldHVybiBtXyMjbmFtZSMjRXhlY3V0YWJsZS5nZXQo
KTtcCit9CitKU0NfRk9SRUFDSF9CVUlMVElOKERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKQor
I3VuZGVmIEVYUE9TRV9CVUlMVElOX1NPVVJDRVMKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5YTE5
ZTI2MTUwNzk0YTY2OWVjOThlMzk5YmY2N2Y3ZjcxMDY0MTkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKQEAgLTAs
MCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgQnVpbHRpbkV4ZWN1dGFibGVzX2gKKyNkZWZpbmUgQnVpbHRpbkV4ZWN1dGFibGVz
X2gKKworI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisjaW5jbHVkZSAiU291cmNlQ29kZS5oIgor
I2luY2x1ZGUgIldlYWsuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7CitjbGFzcyBJZGVu
dGlmaWVyOworY2xhc3MgVk07CisKK2NsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlcyB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NPd25QdHI8QnVpbHRpbkV4ZWN1dGFibGVzPiBjcmVhdGUoVk0mIHZt
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBCdWlsdGluRXhlY3V0YWJsZXMo
dm0pKTsKKyAgICB9CisgICAgCisjZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKG5h
bWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
bmFtZSMjRXhlY3V0YWJsZSgpOyBcCitjb25zdCBTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSB7
IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CisgICAgCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJ
TihFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJTl9TT1VS
Q0VTCisgICAgCitwcml2YXRlOgorICAgIEJ1aWx0aW5FeGVjdXRhYmxlcyhWTSYpOworICAgIFZN
JiBtX3ZtOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVCdWlsdGluRXhl
Y3V0YWJsZShjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYpOworI2RlZmluZSBE
RUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgp
XAorICAgIFNvdXJjZUNvZGUgbV8jI25hbWUjI1NvdXJjZTsgXAorICAgIFdlYWs8VW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU+IG1fIyNuYW1lIyNFeGVjdXRhYmxlOworICAgIEpTQ19GT1JFQUNI
X0JVSUxUSU4oREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIERFQ0xBUkVf
QlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMjYzZWM3Y2FkZjRmNzljYTgx
MDI0NDFlNjJiZjJhMDViNWRkYzNmMi4uNzUxNTA2NTQyMzc2ZDdlZGM1OTlhYTAwZjliMTI2ODVj
ZGEzNTJjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKQEAgLTQzLDExICs0MywxMyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVFN0
dWJzLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5o
IgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5o
IgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50Lmgi
CiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk5hdGl2ZUVycm9y
Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUg
Ik9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmgiCiAjaW5j
bHVkZSAiUmVkdWNlV2hpdGVzcGFjZS5oIgpAQCAtMTU2OSw3ICsxNTcxLDcgQEAgQ29kZUJsb2Nr
OjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENv
ZGVCbG9jayogdW5saW4KIAogICAgIHNldENvbnN0YW50UmVnaXN0ZXJzKHVubGlua2VkQ29kZUJs
b2NrLT5jb25zdGFudFJlZ2lzdGVycygpKTsKICAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPnVz
ZXNHbG9iYWxPYmplY3QoKSkKLSAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1t1bmxpbmtlZENv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0UmVnaXN0ZXIoKS5vZmZzZXQoKV0uc2V0KCptX3ZtLCBvd25l
ckV4ZWN1dGFibGUsIG1fZ2xvYmFsT2JqZWN0LmdldCgpKTsKKyAgICAgICAgbV9jb25zdGFudFJl
Z2lzdGVyc1t1bmxpbmtlZENvZGVCbG9jay0+Z2xvYmFsT2JqZWN0UmVnaXN0ZXIoKS50b0NvbnN0
YW50SW5kZXgoKV0uc2V0KCptX3ZtLCBvd25lckV4ZWN1dGFibGUsIG1fZ2xvYmFsT2JqZWN0Lmdl
dCgpKTsKICAgICBtX2Z1bmN0aW9uRGVjbHMucmVzaXplVG9GaXQodW5saW5rZWRDb2RlQmxvY2st
Pm51bWJlck9mRnVuY3Rpb25EZWNscygpKTsKICAgICBmb3IgKHNpemVfdCBjb3VudCA9IHVubGlu
a2VkQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSwgaSA9IDA7IGkgPCBjb3VudDsg
KytpKSB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1
dGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDY4YmMwMzc5ZjU3NDRjOWE4Zjc0
MzFkYjY0ZjhhYjU0ZTZlMTA1M2YuLjQ5OTVjNTJjZjhiMmIxYjRkNjI4MDQ1M2VlZDI3Yzc3NGE0
OTU1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAg
LTU2LDcgKzU2LDYgQEAKICNpbmNsdWRlICJIYW5kbGVySW5mby5oIgogI2luY2x1ZGUgIk9iamVj
dEFsbG9jYXRpb25Qcm9maWxlLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgotI2luY2x1ZGUgIk9w
ZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQdXRQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJJbnN0
cnVjdGlvbi5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2lu
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tK
ZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCmluZGV4IDk4NmUwM2QwY2JhNzE4NWIzOWNlZTAyM2Y0
YWI2YmM5YjhjY2I2ZTQuLjcwZWY5YjQyOTAxYzA1OGJjNzJjOWRiOTJkY2MzM2Q1M2Q2YmFhYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVC
bG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcApAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0NvbW1v
bi5oIgogI2luY2x1ZGUgIkRGR0V4aXRQcm9maWxlLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5l
cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggMWRmYjVhYzZhZDkwOTNmOGY4
MTEwMWVmN2YyZTYxMjMxMWFjMTkzOS4uNDMzOTBkOTY1ZmM1MDM0MDE2ZjdiZmZmMjNlNjhiYjFl
MDU0NTUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suY3BwCkBAIC00OSw5ICs0OSw5IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxp
bmtlZFByb2dyYW1Db2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkUHJvZ3JhbUNvZGVCbG9j
ayIsCiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRFdmFsQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJV
bmxpbmtlZEV2YWxDb2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKFVubGlua2VkRXZhbENvZGVCbG9jaykgfTsKIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
IiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKSB9OwogCi1zdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2Vu
ZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhWTSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVTcGVjaWFsaXphdGlv
bktpbmQga2luZCwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2Zp
bGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2sqIGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIGtpbmQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVy
TW9kZSBwcm9maWxlck1vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFy
c2VyRXJyb3ImIGVycm9yKQogewotICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBib2R5ID0g
cGFyc2U8RnVuY3Rpb25Cb2R5Tm9kZT4oJnZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPnBhcmFtZXRl
cnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgp
ID8gSlNQYXJzZVN0cmljdCA6IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VGdW5jdGlvbkNvZGUsIGVy
cm9yKTsKKyAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSA9IHBhcnNlPEZ1bmN0aW9u
Qm9keU5vZGU+KCZ2bSwgc291cmNlLCBleGVjdXRhYmxlLT5wYXJhbWV0ZXJzKCksIGV4ZWN1dGFi
bGUtPm5hbWUoKSwgZXhlY3V0YWJsZS0+dG9TdHJpY3RuZXNzKCksIEpTUGFyc2VGdW5jdGlvbkNv
ZGUsIGVycm9yKTsKIAogICAgIGlmICghYm9keSkgewogICAgICAgICBBU1NFUlQoZXJyb3IubV90
eXBlICE9IFBhcnNlckVycm9yOjpFcnJvck5vbmUpOwpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMg
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhWTSYg
dm0sIFVubGlua2VkRnVuYwogICAgIGJvZHktPmZpbmlzaFBhcnNpbmcoZXhlY3V0YWJsZS0+cGFy
YW1ldGVycygpLCBleGVjdXRhYmxlLT5uYW1lKCksIGV4ZWN1dGFibGUtPmZ1bmN0aW9uTmFtZUlz
SW5TY29wZVRvZ2dsZSgpKTsKICAgICBleGVjdXRhYmxlLT5yZWNvcmRQYXJzZShib2R5LT5mZWF0
dXJlcygpLCBib2R5LT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKICAgICAKLSAgICBVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpj
cmVhdGUoJnZtLCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFibGVJbmZvKGJvZHktPm5lZWRzQWN0aXZh
dGlvbigpLCBib2R5LT51c2VzRXZhbCgpLCBib2R5LT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBD
b2RlRm9yQ29uc3RydWN0KSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0
ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLCBF
eGVjdXRhYmxlSW5mbyhib2R5LT5uZWVkc0FjdGl2YXRpb24oKSwgYm9keS0+dXNlc0V2YWwoKSwg
Ym9keS0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25L
aW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uKSk7CiAgICAgT3duUHRyPEJ5dGVjb2RlR2Vu
ZXJhdG9yPiBnZW5lcmF0b3IoYWRvcHRQdHIobmV3IEJ5dGVjb2RlR2VuZXJhdG9yKHZtLCBib2R5
LmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlKSkpOwogICAgIGVycm9y
ID0gZ2VuZXJhdG9yLT5nZW5lcmF0ZSgpOwogICAgIGJvZHktPmRlc3Ryb3lEYXRhKCk7CkBAIC04
MiwxMyArODIsMTQgQEAgdW5zaWduZWQgVW5saW5rZWRDb2RlQmxvY2s6OmFkZE9yRmluZENvbnN0
YW50KEpTVmFsdWUgdikKICAgICByZXR1cm4gYWRkQ29uc3RhbnQodik7CiB9CiAKLVVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9k
eU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSkKK1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUs
IGJvb2wgaXNGcm9tR2xvYmFsQ29kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCkKICAgICA6
IEJhc2UoKnZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX251bUNhcHR1cmVkVmFyaWFibGVzKG5vZGUt
PmNhcHR1cmVkVmFyaWFibGVDb3VudCgpKQogICAgICwgbV9mb3JjZVVzZXNBcmd1bWVudHMobm9k
ZS0+dXNlc0FyZ3VtZW50cygpKQogICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChub2RlLT5pc1N0
cmljdE1vZGUoKSkKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMobm9kZS0+aGFzQ2FwdHVy
ZWRWYXJpYWJsZXMoKSkKICAgICAsIG1faXNGcm9tR2xvYmFsQ29kZShpc0Zyb21HbG9iYWxDb2Rl
KQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihraW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0
aW9uKQogICAgICwgbV9uYW1lKG5vZGUtPmlkZW50KCkpCiAgICAgLCBtX2luZmVycmVkTmFtZShu
b2RlLT5pbmZlcnJlZE5hbWUoKSkKICAgICAsIG1fcGFyYW1ldGVycyhub2RlLT5wYXJhbWV0ZXJz
KCkpCkBAIC0xNjYsNyArMTY3LDcgQEAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNvZGVCbG9ja0ZvcihWTSYgdm0sIGNvbnMKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCi0gICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0g
Z2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayh2bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlv
bktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CisgICAgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayh2bSwg
dGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJN
b2RlLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxp
bmtlZE5vcm1hbEZ1bmN0aW9uLCBlcnJvcik7CiAgICAgCiAgICAgaWYgKGVycm9yLm1fdHlwZSAh
PSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKQogICAgICAgICByZXR1cm4gMDsKQEAgLTIxMCw2ICsy
MTEsNyBAQCBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0qIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZVR5cGUgY29kZQogICAgICwgbV9pc1N0cmljdE1vZGUoaW5m
by5tX2lzU3RyaWN0TW9kZSkKICAgICAsIG1faXNDb25zdHJ1Y3RvcihpbmZvLm1faXNDb25zdHJ1
Y3RvcikKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMoZmFsc2UpCisgICAgLCBtX2lzQnVp
bHRpbkZ1bmN0aW9uKGluZm8ubV9pc0J1aWx0aW5GdW5jdGlvbikKICAgICAsIG1fZmlyc3RMaW5l
KDApCiAgICAgLCBtX2xpbmVDb3VudCgwKQogICAgICwgbV9lbmRDb2x1bW4oVUlOVF9NQVgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5o
CmluZGV4IGI5ZGFlMmQ1YzY5Yzc5Y2VhYWE4MDIzZDJhM2ExZjI2ZDQ2MDk0M2IuLmFiZjZjZjM1
YjkzMDZhNGY3YTMwMWFiMGRmNzY2NmVjNjEyZTM3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC02NiwyNiArNjYsMzUg
QEAgdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOwogdHlw
ZWRlZiB1bnNpZ25lZCBVbmxpbmtlZExMSW50Q2FsbExpbmtJbmZvOwogCiBzdHJ1Y3QgRXhlY3V0
YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29s
IHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yKQorICAgIEV4
ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlz
U3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKQog
ICAgICAgICA6IG1fbmVlZHNBY3RpdmF0aW9uKG5lZWRzQWN0aXZhdGlvbikKICAgICAgICAgLCBt
X3VzZXNFdmFsKHVzZXNFdmFsKQogICAgICAgICAsIG1faXNTdHJpY3RNb2RlKGlzU3RyaWN0TW9k
ZSkKICAgICAgICAgLCBtX2lzQ29uc3RydWN0b3IoaXNDb25zdHJ1Y3RvcikKKyAgICAgICAgLCBt
X2lzQnVpbHRpbkZ1bmN0aW9uKGlzQnVpbHRpbkZ1bmN0aW9uKQogICAgIHsKICAgICB9Ci0gICAg
Ym9vbCBtX25lZWRzQWN0aXZhdGlvbjsKLSAgICBib29sIG1fdXNlc0V2YWw7Ci0gICAgYm9vbCBt
X2lzU3RyaWN0TW9kZTsKLSAgICBib29sIG1faXNDb25zdHJ1Y3RvcjsKKyAgICBib29sIG1fbmVl
ZHNBY3RpdmF0aW9uIDogMTsKKyAgICBib29sIG1fdXNlc0V2YWwgOiAxOworICAgIGJvb2wgbV9p
c1N0cmljdE1vZGUgOiAxOworICAgIGJvb2wgbV9pc0NvbnN0cnVjdG9yIDogMTsKKyAgICBib29s
IG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOworfTsKKworZW51bSBVbmxpbmtlZEZ1bmN0aW9uS2lu
ZCB7CisgICAgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwKKyAgICBVbmxpbmtlZEJ1aWx0aW5GdW5j
dGlvbiwKIH07CiAKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGljIEpT
Q2VsbCB7CiBwdWJsaWM6CisgICAgZnJpZW5kIGNsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlczsKICAg
ICBmcmllbmQgY2xhc3MgQ29kZUNhY2hlOworICAgIGZyaWVuZCBjbGFzcyBWTTsKICAgICB0eXBl
ZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
Y3JlYXRlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlOb2Rl
KiBub2RlLCBib29sIGlzRnJvbUdsb2JhbENvZGUgPSBmYWxzZSkKKyAgICBzdGF0aWMgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSogbm9kZSwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlLCBVbmxp
bmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCkKICAgICB7Ci0gICAgICAgIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVhcCkpIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1
cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgaXNGcm9tR2xvYmFsQ29kZSk7CisgICAgICAgIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVhcCkpIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUu
Z2V0KCksIHNvdXJjZSwgbm9kZSwgaXNGcm9tR2xvYmFsQ29kZSwgdW5saW5rZWRGdW5jdGlvbktp
bmQpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oKnZtKTsKICAgICAgICAgcmV0
dXJuIGluc3RhbmNlOwogICAgIH0KQEAgLTk5LDYgKzEwOCwxNCBAQCBwdWJsaWM6CiAgICAgfQog
ICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0OwogICAgIGJvb2wgaXNJblN0cmljdENv
bnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0OyB9CisgICAgSlNQYXJz
ZXJTdHJpY3RuZXNzIHRvU3RyaWN0bmVzcygpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9p
c0J1aWx0aW5GdW5jdGlvbikKKyAgICAgICAgICAgIHJldHVybiBKU1BhcnNlQnVpbHRpbjsKKyAg
ICAgICAgaWYgKG1faXNJblN0cmljdENvbnRleHQpCisgICAgICAgICAgICByZXR1cm4gSlNQYXJz
ZVN0cmljdDsKKyAgICAgICAgcmV0dXJuIEpTUGFyc2VOb3JtYWw7CisgICAgfQogICAgIEZ1bmN0
aW9uTmFtZUlzSW5TY29wZVRvZ2dsZSBmdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGUoKSBjb25z
dCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZTsgfQogCiAgICAgdW5zaWdu
ZWQgZmlyc3RMaW5lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdExpbmVPZmZzZXQ7IH0K
QEAgLTE0Miw4ICsxNTksMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0lt
bW9ydGFsU3RydWN0dXJlID0gdHJ1ZTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCop
OwogCisgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWls
dGluRnVuY3Rpb247IH0KKwogcHJpdmF0ZToKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZShWTSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbkJvZHlOb2RlKiwg
Ym9vbCBpc0Zyb21HbG9iYWxDb2RlKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShW
TSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbkJvZHlOb2RlKiwgYm9v
bCBpc0Zyb21HbG9iYWxDb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCk7CiAgICAgV3JpdGVCYXJy
aWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fY29kZUJsb2NrRm9yQ2FsbDsKICAgICBX
cml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV9jb2RlQmxvY2tGb3JDb25z
dHJ1Y3Q7CiAKQEAgLTE1Miw2ICsxNzEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0luU3Ry
aWN0Q29udGV4dCA6IDE7CiAgICAgYm9vbCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIDogMTsKICAg
ICBib29sIG1faXNGcm9tR2xvYmFsQ29kZSA6IDE7CisgICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0
aW9uIDogMTsKIAogICAgIElkZW50aWZpZXIgbV9uYW1lOwogICAgIElkZW50aWZpZXIgbV9pbmZl
cnJlZE5hbWU7CkBAIC0zMTksNiArMzM5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNOdW1l
cmljQ29tcGFyZUZ1bmN0aW9uKGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKSB7IG1faXNO
dW1lcmljQ29tcGFyZUZ1bmN0aW9uID0gaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CiAgICAg
Ym9vbCBpc051bWVyaWNDb21wYXJlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzTnVtZXJp
Y0NvbXBhcmVGdW5jdGlvbjsgfQogCisgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KKyAgICAKICAgICB2b2lkIHNocmlua1Rv
Rml0KCkKICAgICB7CiAgICAgICAgIG1fanVtcFRhcmdldHMuc2hyaW5rVG9GaXQoKTsKQEAgLTUw
MCw2ICs1MjIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1N0cmljdE1vZGUgOiAxOwogICAg
IGJvb2wgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICBib29sIG1faGFzQ2FwdHVyZWRWYXJpYWJs
ZXMgOiAxOworICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CiAgICAgdW5zaWduZWQg
bV9maXJzdExpbmU7CiAgICAgdW5zaWduZWQgbV9saW5lQ291bnQ7CiAgICAgdW5zaWduZWQgbV9l
bmRDb2x1bW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDY4MTBhYjgwMDJjZTZiYjhkNzhlN2ZmMjIy
N2Y0YzZlYTdiNzU4YzIuLmVjNTIxYjUzMDQ2MzkyM2U3NGMwMTBmYTIxOGU1OWVkMmE5YTNjYWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0xNzUsNiArMTc1LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxp
bmtlZFAKICNlbmRpZgogICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKICAgICAsIG1fZXhw
cmVzc2lvblRvb0RlZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGZhbHNlKQog
ewogICAgIGlmIChtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKQogICAgICAgICBtX2NvZGVCbG9jay0+
c2V0TmVlZHNGdWxsU2NvcGVDaGFpbih0cnVlKTsKQEAgLTIyMiw3ICsyMjMsMTMgQEAgQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Cb2R5Tm9kZSog
ZnVuY3Rpb25Cb2R5LCBVbmwKICNlbmRpZgogICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkK
ICAgICAsIG1fZXhwcmVzc2lvblRvb0RlZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0
aW9uKGNvZGVCbG9jay0+aXNCdWlsdGluRnVuY3Rpb24oKSkKIHsKKyAgICBpZiAobV9pc0J1aWx0
aW5GdW5jdGlvbikgeworICAgICAgICBtX3Nob3VsZEVtaXRQcm9maWxlSG9va3MgPSBmYWxzZTsK
KyAgICAgICAgbV9zaG91bGRFbWl0RGVidWdIb29rcyA9IGZhbHNlOworICAgIH0KKwogICAgIGlm
IChtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKQogICAgICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNG
dWxsU2NvcGVDaGFpbih0cnVlKTsKIApAQCAtNDM4LDYgKzQ0NSw3IEBAIEJ5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5r
ZWRFdmFsQ29kCiAjZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAgICAgLCBt
X2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihmYWxz
ZSkKIHsKICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNGdWxsU2NvcGVDaGFpbih0cnVlKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCmluZGV4IDRlOWYyMTNjOWJmYTZjZjE5NGIxYTE0ZmU5MTllODMzMzdhZTM1ZDku
LjE1ODQyNzRiNzhlYTZjMGJkMGVmYjBiOTgyNWM4MThiZTBkYmMwNjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
QEAgLTQ2MSw3ICs0NjEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBzaG91bGRF
bWl0RGVidWdIb29rcygpIHsgcmV0dXJuIG1fc2hvdWxkRW1pdERlYnVnSG9va3M7IH0KICAgICAg
ICAgCiAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxv
Y2stPmlzU3RyaWN0TW9kZSgpOyB9Ci0KKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNCdWlsdGlu
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisgICAgICAg
IAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMYWJlbDsKICAgICAgICAgCkBA
IC01NDMsNyArNTQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbWFrZUZ1bmN0aW9uKEZ1bmN0aW9uQm9keU5vZGUqIGJv
ZHkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgYm9keSk7CisgICAgICAg
ICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Nj
b3BlTm9kZS0+c291cmNlKCksIGJvZHksIGZhbHNlLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5s
aW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uKTsKICAgICAgICAg
fQogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbml0TGF6eVJlZ2lzdGVyKFJlZ2lzdGVySUQq
KTsKQEAgLTY3Nyw2ICs2NzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIG1f
dXNlc0V4Y2VwdGlvbnM7CiAgICAgICAgIGJvb2wgbV9leHByZXNzaW9uVG9vRGVlcDsKKyAgICAg
ICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9uOwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAxZmZk
NGYzMTE4ODJkMGVlNWM1NTE0ZjViOGIyNTkzOWQ5NzVlMzc5Li42MmVjYTM2YTEwZDc3MDhhOTI4
ZDQzYWMwM2YyZmM4NjE1Y2VjYTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0yNiwxMCArMjYsMTAgQEAKIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCi0jaW5jbHVkZSAiTm9kZUNvbnN0
cnVjdG9ycy5oIgogCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJD
YWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkRl
YnVnZ2VyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAt
MzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJMYWJlbFNj
b3BlLmgiCiAjaW5jbHVkZSAiTGV4ZXIuaCIKKyNpbmNsdWRlICJOb2RlQ29uc3RydWN0b3JzLmgi
CiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUg
IlByb3BlcnR5TmFtZUFycmF5LmgiCkBAIC01MzUsMzYgKzUzNiwzOSBAQCBSZWdpc3RlcklEKiBD
YWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsCiAgICAgUmVmUHRyPExhYmVsPiBlbmQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsK
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2Up
OwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCks
IHN1YmV4cHJlc3Npb25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwotICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVt
cERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIG1faWRlbnQpOworICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERl
c3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuY2Fs
bCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0LCBmdW5jdGlvbi5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRKdW1w
SWZOb3RGdW5jdGlvbkNhbGwoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKKyAgICBi
b29sIGVtaXRDYWxsQ2hlY2sgPSAhZ2VuZXJhdG9yLmlzQnVpbHRpbkZ1bmN0aW9uKCk7CisgICAg
aWYgKGVtaXRDYWxsQ2hlY2spCisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rp
b25DYWxsKGZ1bmN0aW9uLmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7CisKICAgICB7CiAgICAgICAg
IGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpIHsK
ICAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIG9sZExpc3QgPSBtX2FyZ3MtPm1fbGlzdE5v
ZGU7CiAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGUt
Pm1fbmV4dDsKLQorICAgICAgICAgICAgCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
cmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRp
b24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1
bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2Rl
KGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG9sZExpc3QtPm1fZXhwcik7CiAgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5n
ZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5n
ZXQoKSk7Ci0KICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9sZExpc3Q7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9u
ID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFz
ZS5nZXQoKSk7CiAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJh
dG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVu
dHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0
ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOwogICAgICAg
ICB9CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOwotICAg
IHsKLSAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdz
KTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVy
KCksIGJhc2UuZ2V0KCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUu
Z2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMs
IGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgaWYgKGVtaXRDYWxsQ2hl
Y2spIHsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CisgICAgICAgIGdl
bmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOworICAgICAgICB7CisgICAgICAgICAg
ICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJh
c2UuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdl
dCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBk
aXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICB9CisgICAgICAgIGdl
bmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRM
YWJlbChlbmQuZ2V0KCkpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZS5nZXQoKTsKIH0KIApAQCAt
NTg1LDY1ICs1ODksNjcgQEAgUmVnaXN0ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICBSZWZQdHI8TGFi
ZWw+IGVuZCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBi
YXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYmFzZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHBy
ZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1
YmV4cHJlc3Npb25FbmQoKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uID0gZ2Vu
ZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5n
ZXQoKSwgbV9pZGVudCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uOwogICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9u
KGRzdCwgZnVuY3Rpb24uZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rp
b25BcHBseShmdW5jdGlvbi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkpOwotICAgIHsKLSAgICAgICAg
aWYgKG1heUJlQ2FsbCkgewotICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBt
X2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcikgewotICAgICAgICAgICAgICAgIEFyZ3VtZW50TGlz
dE5vZGUqIG9sZExpc3QgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7Ci0gICAgICAgICAgICAgICAgaWYg
KG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VS
VChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByLT5pc1NpbXBsZUFycmF5KCkpOwot
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5t
X25leHQpOwotICAgICAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBzdGF0aWNf
Y2FzdDxBcnJheU5vZGUqPihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByKS0+dG9B
cmd1bWVudExpc3QoZ2VuZXJhdG9yLnZtKCksIDAsIDApOwotICAgICAgICAgICAgICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVy
YXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAg
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdp
c3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3Rl
ZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fYXJn
cy0+bV9saXN0Tm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwotICAgICAgICAgICAg
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRN
b3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJn
cyk7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRz
LnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwotICAgICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwg
Tm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCks
IGRpdm90RW5kKCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtX2FyZ3Mt
Pm1fbGlzdE5vZGUgPSBvbGRMaXN0OworICAgIGJvb2wgZW1pdENhbGxDaGVjayA9ICFnZW5lcmF0
b3IuaXNCdWlsdGluRnVuY3Rpb24oKTsKKyAgICBpZiAoZW1pdENhbGxDaGVjaykgeworICAgICAg
ICBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0
aW9uKGRzdCksIGJhc2UuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYXBwbHkpOwor
ICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHkoZnVuY3Rpb24uZ2V0
KCksIHJlYWxDYWxsLmdldCgpKTsKKyAgICB9CisgICAgaWYgKG1heUJlQ2FsbCkgeworICAgICAg
ICBpZiAobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKSB7
CisgICAgICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3RO
b2RlOworICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KSB7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHItPmlz
U2ltcGxlQXJyYXkoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5v
ZGUtPm1fbmV4dC0+bV9uZXh0KTsKKyAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUg
PSBzdGF0aWNfY2FzdDxBcnJheU5vZGUqPihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9l
eHByKS0+dG9Bcmd1bWVudExpc3QoZ2VuZXJhdG9yLnZtKCksIDAsIDApOworICAgICAgICAgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUo
Z2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rl
cigpLCBvbGRMaXN0LT5tX2V4cHIpOworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2Fs
bChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rp
b24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9
IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwogICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBE
ZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKICAgICAgICAgICAgICAgICBDYWxsQXJndW1l
bnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgICAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5l
ZCgpKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50
aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKICAgICAgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0g
b2xkTGlzdDsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1f
bGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQpOwotICAgICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHByb2ZpbGVIb29rUmVnaXN0ZXI7Ci0gICAgICAgICAgICBpZiAoZ2Vu
ZXJhdG9yLnNob3VsZEVtaXRQcm9maWxlSG9va3MoKSkKLSAgICAgICAgICAgICAgICBwcm9maWxl
SG9va1JlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0
b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHRoaXNSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2FyZ3MtPm1f
bGlzdE5vZGUtPm1fZXhwcik7Ci0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXJnc1Jl
Z2lzdGVyOwotICAgICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogYXJncyA9IG1fYXJncy0+bV9s
aXN0Tm9kZS0+bV9uZXh0OwotICAgICAgICAgICAgaWYgKGFyZ3MtPm1fZXhwci0+aXNSZXNvbHZl
Tm9kZSgpICYmIGdlbmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHN0YXRpY19jYXN0PFJl
c29sdmVOb2RlKj4oYXJncy0+bV9leHByKS0+aWRlbnRpZmllcigpKSkKLSAgICAgICAgICAgICAg
ICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IudW5jaGVja2VkUmVnaXN0ZXJGb3JBcmd1bWVudHMo
KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5l
cmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKLQotICAgICAgICAgICAgLy8gRnVuY3Rpb24u
cHJvdG90eXBlLmFwcGx5IGlnbm9yZXMgZXh0cmEgYXJndW1lbnRzLCBidXQgd2Ugc3RpbGwKLSAg
ICAgICAgICAgIC8vIG5lZWQgdG8gZXZhbHVhdGUgdGhlbSBmb3Igc2lkZSBlZmZlY3RzLgotICAg
ICAgICAgICAgd2hpbGUgKChhcmdzID0gYXJncy0+bV9uZXh0KSkKLSAgICAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKLQotICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRDYWxsVmFyYXJncyhyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCB0
aGlzUmVnaXN0ZXIuZ2V0KCksIGFyZ3NSZWdpc3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpLCBwcm9maWxlSG9va1JlZ2lzdGVyLmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCks
IGRpdm90RW5kKCkpOworICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdl
bmVyYXRvciwgbV9hcmdzKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJn
dW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7CiAgICAgICAgIH0KLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQo
KSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBt
X2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBw
cm9maWxlSG9va1JlZ2lzdGVyOworICAgICAgICBpZiAoZ2VuZXJhdG9yLnNob3VsZEVtaXRQcm9m
aWxlSG9va3MoKSkKKyAgICAgICAgICAgIHByb2ZpbGVIb29rUmVnaXN0ZXIgPSBnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24g
PSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNl
LmdldCgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNSZWdpc3RlciA9IGdlbmVy
YXRvci5lbWl0Tm9kZShtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcik7CisgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBhcmdzUmVnaXN0ZXI7CisgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIGFy
Z3MgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKKyAgICAgICAgaWYgKGFyZ3MtPm1fZXhw
ci0+aXNSZXNvbHZlTm9kZSgpICYmIGdlbmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHN0
YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oYXJncy0+bV9leHByKS0+aWRlbnRpZmllcigpKSkKKyAg
ICAgICAgICAgIGFyZ3NSZWdpc3RlciA9IGdlbmVyYXRvci51bmNoZWNrZWRSZWdpc3RlckZvckFy
Z3VtZW50cygpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5l
cmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKKworICAgICAgICAvLyBGdW5jdGlvbi5wcm90
b3R5cGUuYXBwbHkgaWdub3JlcyBleHRyYSBhcmd1bWVudHMsIGJ1dCB3ZSBzdGlsbAorICAgICAg
ICAvLyBuZWVkIHRvIGV2YWx1YXRlIHRoZW0gZm9yIHNpZGUgZWZmZWN0cy4KKyAgICAgICAgd2hp
bGUgKChhcmdzID0gYXJncy0+bV9uZXh0KSkKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9k
ZShhcmdzLT5tX2V4cHIpOworCisgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbFZhcmFyZ3MocmV0
dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBh
cmdzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcHJvZmlsZUhvb2tS
ZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICB9
Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChyZWFsQ2FsbC5nZXQoKSk7Ci0gICAgeworICAgIGlm
IChlbWl0Q2FsbENoZWNrKSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkp
OworICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKICAgICAgICAg
Q2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0
KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0
aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRp
dm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5k
LmdldCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0KCkpOwogICAg
IHJldHVybiByZXR1cm5WYWx1ZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0
ZV9oYXNoX3RhYmxlCmluZGV4IDM5Nzk3NmIwNmM3YTliNTgzNjMzMjkwMGE2ZWJiOTNlYzY4Yjc0
ODYuLmNhZDY1YmM0Y2M4ODhlMzE0Zjg4ZDY2NWRkNGE2ZTY0NWEwOWEzNTUgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUKQEAgLTI4OSw3ICsyODksMTcgQEAgc3ViIG91
dHB1dCgpIHsKICAgICAgICAgICAgICRpbnRyaW5zaWMgPSAiUmVnRXhwVGVzdEludHJpbnNpYyIg
aWYgKCRrZXkgZXEgInRlc3QiKTsKICAgICAgICAgfQogCisgICAgICAgIGlmICgkdmFsdWVzWyRp
XXsidHlwZSJ9IGVxICJGdW5jdGlvbiIpICB7CisgICAgICAgICAgICBteSAkdGFibGVIZWFkID0g
JG5hbWU7CisgICAgICAgICAgICAkdGFibGVIZWFkID1+IHMvVGFibGUkLy87CisgICAgICAgICAg
ICBwcmludCAiICNpZiBKU0NfQlVJTFRJTl9FWElTVFMoIiAuIHVjKCR0YWJsZUhlYWQgLiAka2V5
KSAuIilcbiI7CisgICAgICAgICAgICBwcmludCAiICAgeyBcIiRrZXlcIiwgKCgkYXR0cnNbJGld
KSAmIH5GdW5jdGlvbikgfCBCdWlsdGluLCAkaW50cmluc2ljLCAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8QnVpbHRpbkdlbmVyYXRvcj4oIiAuICR0YWJsZUhlYWQgLiB1Y2ZpcnN0KCRrZXkpIC4gIkNv
ZGVHZW5lcmF0b3IpLCAoaW50cHRyX3QpJHNlY29uZFZhbHVlIH0sXG4iOworICAgICAgICAgICAg
cHJpbnQgIiAjZWxzZVxuIgorICAgICAgICB9CiAgICAgICAgIHByaW50ICIgICB7IFwiJGtleVwi
LCAkYXR0cnNbJGldLCAkaW50cmluc2ljLCAoaW50cHRyX3QpIiAuICRmaXJzdENhc3RTdHIgLiAi
KCRmaXJzdFZhbHVlKSwgKGludHB0cl90KSIgLiAkc2Vjb25kQ2FzdFN0ciAuICIoJHNlY29uZFZh
bHVlKSB9LFxuIjsKKyAgICAgICAgaWYgKCR2YWx1ZXNbJGldeyJ0eXBlIn0gZXEgIkZ1bmN0aW9u
IikgIHsKKyAgICAgICAgICAgIHByaW50ICIgI2VuZGlmXG4iCisgICAgICAgIH0KICAgICAgICAg
JGkrKzsKICAgICB9CiAgICAgcHJpbnQgIiAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIDAsIDAgfVxu
IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9taW5hdG9ycy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWluYXRvcnMuY3BwCmluZGV4IGE1
YWU2MTRiOTE5YjBmZDQzNDgyZDAxNWNjMjk1MDg0MGU1NGIyNjEuLjIwMDk2ZTczYjM1MTU5Yzc0
MzRiZDI3YWI2ZjYzMzM3ZmU5ZGY0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRG9taW5hdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb21pbmF0b3JzLmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiREZHRG9taW5hdG9ycy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVz
LmgiCiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAKaW5kZXggMmZmMGMzNDE0NmUyYzBiYTJmZjc2YzRkM2Y3YzQ2YmEz
ZTI1NTE0Ny4uOTA0NGNkYzZiOGMzYWQ0YTFlOTQxODhkZDFkMGUyMDBlNjlmYjk5YSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC00OCw2ICs0OCw3
IEBACiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRl
ICJKU05hbWVTY29wZS5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUg
Ik5hbWVJbnN0YW5jZS5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVk
ZSAiT3BlcmF0aW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVy
YXRlLWpzLWJ1aWx0aW5zIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0
aW5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmVlZTFjN2E3Y2NkZDkzNzY5MjBlNzZkN2ZlOGQzMGFmOTU1ZjMxYTYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtanMtYnVp
bHRpbnMKQEAgLTAsMCArMSwzMDQgQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisjIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisjIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisjIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyMgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CitpbXBvcnQgZmlsZWNtcAoraW1wb3J0IGZubWF0Y2gKK2ltcG9ydCBvcworaW1wb3J0IHJlCitp
bXBvcnQgc2h1dGlsCitpbXBvcnQgc3lzCitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBqc29uCisK
K2NvcHlyaWdodFRleHQgPSAiIiIgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqL1xuCisiIiIKKworZ2VuZXJhdG9yU3RyaW5nID0gIi8qIEdlbmVyYXRlZCBieSAlcyBkbyBu
b3QgaGFuZCBlZGl0LiAqL1xuIiAlIG9zLnBhdGguYmFzZW5hbWUoX19maWxlX18pCisKK2Z1bmN0
aW9uSGVhZFJlZ0V4cCA9IHJlLmNvbXBpbGUociJmdW5jdGlvblxzK1x3K1xzKlwoLio/XCkiLCBy
ZS5NVUxUSUxJTkUgfCByZS5TKQorZnVuY3Rpb25OYW1lUmVnRXhwID0gcmUuY29tcGlsZShyImZ1
bmN0aW9uXHMrKFx3KylccypcKCIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitmdW5jdGlvblBhcmFt
ZXRlckZpbmRlciA9IHJlLmNvbXBpbGUociJeZnVuY3Rpb25ccysoPzpcdyspXHMqXCgoKD86XHMq
XHcrKT9ccyooPzpccyosXHMqXHcrKSopP1wpIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKKworbXVs
dGlsaW5lQ29tbWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJcL1wqLio/XCpcLyIsIHJlLk1VTFRJ
TElORSB8IHJlLlMpCitzaW5nbGVMaW5lQ29tbWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJcL1wv
Lio/XG4iLCByZS5NVUxUSUxJTkUgfCByZS5TKQorCitkZWYgZ2V0Q29weXJpZ2h0KHNvdXJjZSk6
CisgICAgY29weXJpZ2h0QmxvY2sgPSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLmZpbmRhbGwoc291
cmNlKVswXQorICAgIGNvcHlyaWdodEJsb2NrID0gY29weXJpZ2h0QmxvY2tbOmNvcHlyaWdodEJs
b2NrLmluZGV4KCJSZWRpc3RyaWJ1dGlvbiIpXQorICAgIGNvcHlSaWdodExpbmVzID0gW10KKwor
ICAgIGZvciBsaW5lIGluIGNvcHlyaWdodEJsb2NrLnNwbGl0KCJcbiIpOgorICAgICAgICBsaW5l
ID0gbGluZS5yZXBsYWNlKCIvKiIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIq
LyIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIqIiwgIiIpCisgICAgICAgIGxp
bmUgPSBsaW5lLnJlcGxhY2UoIkNvcHlyaWdodCIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5y
ZXBsYWNlKCJjb3B5cmlnaHQiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKEMp
IiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIihjKSIsICIiKQorICAgICAgICBs
aW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgIGlmIGxlbihsaW5lKSA9PSAwOgorICAgICAgICAg
ICAgY29udGludWUKKworICAgICAgICBjb3B5UmlnaHRMaW5lcy5hcHBlbmQobGluZSkKKyAgICAK
KyAgICByZXR1cm4gbGlzdChzZXQoY29weVJpZ2h0TGluZXMpKQorCisKKworZGVmIGdldEZ1bmN0
aW9ucyhzb3VyY2UpOgorCisgICAgc291cmNlID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5zdWIo
Ii8qKi8iLCBzaW5nbGVMaW5lQ29tbWVudFJlZ0V4cC5zdWIoIi8vXG4iLCBzb3VyY2UpKQorCisg
ICAgbWF0Y2hlcyA9IFsgZiBmb3IgZiBpbiBmdW5jdGlvbkhlYWRSZWdFeHAuZmluZGl0ZXIoc291
cmNlKV0KKyAgICBmdW5jdGlvbkJvdW5kcyA9IFtdCisgICAgc3RhcnQgPSAwCisgICAgZW5kID0g
MAorICAgIGZvciBtYXRjaCBpbiBtYXRjaGVzOgorICAgICAgICBzdGFydCA9IG1hdGNoLnN0YXJ0
KCkKKyAgICAgICAgaWYgc3RhcnQgPCBlbmQ6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAg
ICBlbmQgPSBtYXRjaC5lbmQoKQorICAgICAgICB3aGlsZSBzb3VyY2VbZW5kXSAhPSAneyc6Cisg
ICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgIGRlcHRoID0gMQorICAgICAgICBlbmQg
PSBlbmQgKyAxCisgICAgICAgIHdoaWxlIGRlcHRoID4gMDoKKyAgICAgICAgICAgIGlmIHNvdXJj
ZVtlbmRdID09ICd7JzoKKyAgICAgICAgICAgICAgICBkZXB0aCA9IGRlcHRoICsgMQorICAgICAg
ICAgICAgZWxpZiBzb3VyY2VbZW5kXSA9PSAnfSc6CisgICAgICAgICAgICAgICAgZGVwdGggPSBk
ZXB0aCAtIDEKKyAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgZnVuY3Rpb25Cb3Vu
ZHMuYXBwZW5kKChzdGFydCwgZW5kKSkKKworICAgIGZ1bmN0aW9ucyA9IFtzb3VyY2Vbc3RhcnQ6
ZW5kXS5zdHJpcCgpIGZvciAoc3RhcnQsIGVuZCkgaW4gZnVuY3Rpb25Cb3VuZHNdCisgICAgcmVz
dWx0ID0gW10KKyAgICBmb3IgZnVuY3Rpb24gaW4gZnVuY3Rpb25zOgorICAgICAgICBmdW5jdGlv
biA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAuc3ViKCIiLCBmdW5jdGlvbikKKyAgICAgICAgZnVu
Y3Rpb25OYW1lID0gZnVuY3Rpb25OYW1lUmVnRXhwLmZpbmRhbGwoZnVuY3Rpb24pWzBdCisgICAg
ICAgIGZ1bmN0aW9uUGFyYW1ldGVycyA9IGZ1bmN0aW9uUGFyYW1ldGVyRmluZGVyLmZpbmRhbGwo
ZnVuY3Rpb24pWzBdLnNwbGl0KCcsJykKKyAgICAgICAgaWYgbGVuKGZ1bmN0aW9uUGFyYW1ldGVy
c1swXSkgPT0gMDoKKyAgICAgICAgICAgIGZ1bmN0aW9uUGFyYW1ldGVycyA9IFtdCisgICAgICAg
ICAgICAKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgoZnVuY3Rpb25OYW1lLCBmdW5jdGlvbiwgZnVu
Y3Rpb25QYXJhbWV0ZXJzKSkKKyAgICByZXR1cm4gcmVzdWx0CisgICAgICAgIAorCitkZWYgZ2Vu
ZXJhdGVDb2RlKHNvdXJjZSk6CisgICAgaW5wdXRGaWxlID0gb3Blbihzb3VyY2UsICJyIikKKyAg
ICBiYXNlTmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoc291cmNlKS5yZXBsYWNlKCIuanMiLCAiIikK
KyAgICAKKyAgICBzb3VyY2UgPSAiIgorICAgIGZvciBsaW5lIGluIGlucHV0RmlsZToKKyAgICAg
ICAgc291cmNlID0gc291cmNlICsgbGluZQorICAgIAorICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAi
Y3lnd2luIjoKKyAgICAgICAgc291cmNlID0gc291cmNlLnJlcGxhY2UoIlxyXG4iLCAiXG4iKQor
ICAgIHJldHVybiAoYmFzZU5hbWUsIGdldEZ1bmN0aW9ucyhzb3VyY2UpLCBnZXRDb3B5cmlnaHQo
c291cmNlKSkKKworZGVmIG1hbmdsZU5hbWUob2JqZWN0LCBuYW1lKToKKyAgICBxTmFtZSA9IG9i
amVjdCArICIuIiArIG5hbWUKKyAgICBtYW5nbGVkTmFtZSA9ICIiCisgICAgaSA9IDAKKyAgICB3
aGlsZSBpIDwgbGVuKHFOYW1lKToKKyAgICAgICAgaWYgcU5hbWVbaV0gPT0gJy4nOgorICAgICAg
ICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZSArIHFOYW1lW2kgKyAxXS51cHBlcigpCisg
ICAgICAgICAgICBpID0gaSArIDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1hbmdsZWRO
YW1lID0gbWFuZ2xlZE5hbWUgKyBxTmFtZVtpXQorICAgICAgICBpID0gaSArIDEKKyAgICByZXR1
cm4gbWFuZ2xlZE5hbWUKKworYnVpbHRpbnMgPSBbXQorCitiYXNlTmFtZSA9IHN5cy5hcmd2Wy0x
XQorYnVpbHRpbl9kZWZpbml0aW9ucyA9IHN5cy5hcmd2WzE6LTFdCisob3V0cHV0X2Jhc2UsIF8p
ID0gb3MucGF0aC5zcGxpdGV4dChzeXMuYXJndlstMV0pCisKK2NvcHlyaWdodHMgPSBbXQorZm9y
IGZpbGUgaW4gYnVpbHRpbl9kZWZpbml0aW9uczoKKyAgICBpZiBmbm1hdGNoLmZubWF0Y2goZmls
ZSwgJyouanMnKToKKyAgICAgICAgKGJhc2VOYW1lLCBmdW5jdGlvbnMsIG9iamVjdENvcHlyaWdo
dHMpID0gZ2VuZXJhdGVDb2RlKGZpbGUpCisgICAgICAgIGNvcHlyaWdodHMuZXh0ZW5kKG9iamVj
dENvcHlyaWdodHMpCisgICAgICAgIGJ1aWx0aW5zLmFwcGVuZCgoYmFzZU5hbWUsIGZ1bmN0aW9u
cykpCisKK2NvcHlyaWdodHMgPSBsaXN0KHNldChjb3B5cmlnaHRzKSkKKworY29weXJpZ2h0Qm9k
eSA9ICIiCitmb3IgY29weXJpZ2h0IGluIGNvcHlyaWdodHM6CisgICAgY29weXJpZ2h0Qm9keSA9
IGNvcHlyaWdodEJvZHkgKyIgKiBDb3B5cmlnaHQgKEMpICIgKyBjb3B5cmlnaHQgKyAiXG4iCisK
K2J1aWx0aW5zSGVhZGVyID0gb3BlbihvdXRwdXRfYmFzZSArICIuaC50bXAiLCAidyIpCitidWls
dGluc0ltcGxlbWVudGF0aW9uID0gb3BlbihvdXRwdXRfYmFzZSArICIuY3BwLnRtcCIsICJ3IikK
K2NvcHlyaWdodFRleHQgPSAiLypcbiIgKyBjb3B5cmlnaHRCb2R5ICsgY29weXJpZ2h0VGV4dAor
YnVpbHRpbnNIZWFkZXIud3JpdGUoIiIiJXMKKyVzCisKKyNpZm5kZWYgSlNDQnVpbHRpbnNfSAor
I2RlZmluZSBKU0NCdWlsdGluc19ICisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBGdW5jdGlv
bkV4ZWN1dGFibGU7CitjbGFzcyBJZGVudGlmaWVyOworY2xhc3MgSlNHbG9iYWxPYmplY3Q7Citj
bGFzcyBTb3VyY2VDb2RlOworY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7CitjbGFz
cyBWTTsKKworRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShWTSYs
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwgY29uc3QgU291cmNlQ29kZSYpOworCisiIiIg
JSAoZ2VuZXJhdG9yU3RyaW5nLCBjb3B5cmlnaHRUZXh0KSkKKworY29kZVJlZmVyZW5jZXMgPSBb
XQorCitmb3IgKG9iamVjdE5hbWUsIGZ1bmN0aW9ucykgaW4gYnVpbHRpbnM6CisgICAgcHJpbnQo
IkdlbmVyYXRpbmcgYmluZGluZ3MgZm9yIHRoZSAlcyBidWlsdGluLiIgJSBvYmplY3ROYW1lKQor
ICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIvKiAlcyBmdW5jdGlvbnMgKi9cbiIgJSBvYmplY3RO
YW1lKQorICAgIGZvciAobmFtZSwgaW1wbGVtZW50YXRpb24sIF8pIGluIGZ1bmN0aW9uczoKKyAg
ICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVOYW1lKG9iamVjdE5hbWUsIG5hbWUpCisgICAgICAg
IG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWVbMF0ubG93ZXIoKSArIG1hbmdsZWROYW1lWzE6XSAr
ICJDb2RlIgorICAgICAgICBjb2RlUmVmZXJlbmNlcy5hcHBlbmQoKG1hbmdsZWROYW1lLCBuYW1l
LCBpbXBsZW1lbnRhdGlvbikpCisgICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJleHRlcm4g
Y29uc3QgY2hhciogc18lcztcbiIgJSBtYW5nbGVkTmFtZSkKKyAgICAgICAgYnVpbHRpbnNIZWFk
ZXIud3JpdGUoImV4dGVybiBjb25zdCBpbnQgc18lc0xlbmd0aDtcbiIgJSBtYW5nbGVkTmFtZSkK
KyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiXG4iKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRl
KCIjZGVmaW5lIEpTQ19GT1JFQUNIXyVzX0JVSUxUSU4obWFjcm8pIFxcXG4iICUgb2JqZWN0TmFt
ZS5yZXBsYWNlKCIuIiwgIl8iKS51cHBlcigpKQorICAgIGZvciAobmFtZSwgaW1wbGVtZW50YXRp
b24sIGFyZ3VtZW50cykgaW4gZnVuY3Rpb25zOgorICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmds
ZU5hbWUob2JqZWN0TmFtZSwgbmFtZSkKKyAgICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiAg
ICBtYWNybyglcywgJXMsICVkKSBcXFxuIiAlIChuYW1lLCBtYW5nbGVkTmFtZSwgbGVuKGFyZ3Vt
ZW50cykpKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJcbiIpCisgICAgZm9yIChuYW1lLCBp
bXBsZW1lbnRhdGlvbiwgYXJndW1lbnRzKSBpbiBmdW5jdGlvbnM6CisgICAgICAgIGJ1aWx0aW5z
SGVhZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19CVUlMVElOXyVzIDFcbiIgJSBtYW5nbGVOYW1lKG9i
amVjdE5hbWUsIG5hbWUpLnVwcGVyKCkpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuXG4i
KQorbmFtZXMgPSBbXQorYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0ZPUkVBQ0hf
QlVJTFRJTihtYWNybylcXFxuIikKK2ZvciAoY29kZVJlZmVyZW5jZSwgZnVuY3Rpb25OYW1lLCBz
b3VyY2UpIGluIGNvZGVSZWZlcmVuY2VzOgorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIgICAg
bWFjcm8oJXMsICVzLCBzXyVzTGVuZ3RoKSBcXFxuIiAlIChjb2RlUmVmZXJlbmNlLCBmdW5jdGlv
bk5hbWUsIGNvZGVSZWZlcmVuY2UpKQorICAgIG5hbWVzLmFwcGVuZChmdW5jdGlvbk5hbWUpCisK
K2J1aWx0aW5zSGVhZGVyLndyaXRlKCJcblxuIikKK2J1aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVm
aW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykgXFxcbiIpCitmb3Ig
bmFtZSBpbiBzb3J0ZWQoc2V0KG5hbWVzKSk6CisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiAg
ICBtYWNybyglcykgXFxcbiIgJSBuYW1lKQorYnVpbHRpbnNIZWFkZXIud3JpdGUoIiIiCisKKyNk
ZWZpbmUgSlNDX0RFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFt
ZSwgYXJndW1lbnRDb3VudCkgXFwKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNH
ZW5lcmF0b3IoVk0mKTsKKworSlNDX0ZPUkVBQ0hfQlVJTFRJTihKU0NfREVDTEFSRV9CVUlMVElO
X0dFTkVSQVRPUikKKyN1bmRlZiBKU0NfREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVm
aW5lIEpTQ19CVUlMVElOX0VYSVNUUyhuYW1lKSBkZWZpbmVkKEpTQ19CVUlMVElOXyMjbmFtZSkK
KworfQorCisjZW5kaWYKKworIiIiKQorCitidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIi
IiVzCislcworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5o
IgorCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJs
ZS5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworIiIiICAlIChnZW5lcmF0b3JTdHJpbmcsIGNvcHlyaWdodFRleHQpKQor
Citmb3IgKGNvZGVSZWZlcmVuY2UsIG5hbWUsIHNvdXJjZSkgaW4gY29kZVJlZmVyZW5jZXM6Cisg
ICAgc291cmNlID0gIihmdW5jdGlvbiAiICsgc291cmNlW3NvdXJjZS5pbmRleCgiKCIpOl0gKyAi
KSIKKyAgICBsaW5lcyA9IGpzb24uZHVtcHMoc291cmNlKVsxOi0xXS5zcGxpdCgiXFxuIikKKyAg
ICBzb3VyY2VMZW5ndGggPSBsZW4oc291cmNlKQorICAgIHNvdXJjZSA9ICIiCisgICAgZm9yIGxp
bmUgaW4gbGluZXM6CisgICAgICAgIHNvdXJjZSA9IHNvdXJjZSArICgiICAgIFwiJXNcXG5cIiBc
XFxuIiAlIGxpbmUpCisgICAgYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiY29uc3QgY2hh
ciogc18lcyA9XG4lcztcblxuIiAlIChjb2RlUmVmZXJlbmNlLCBzb3VyY2UpKQorICAgIGJ1aWx0
aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoImNvbnN0IGludCBzXyVzTGVuZ3RoID0gJWQ7XG5cbiIg
JSAoY29kZVJlZmVyZW5jZSwgc291cmNlTGVuZ3RoICsgMSkpICMgKyAxIGZvciBcbgorCitidWls
dGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIgorRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVC
dWlsdGluRXhlY3V0YWJsZShWTSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxp
bmtlZEV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKK3sKKyAgICB1bnNpZ25l
ZCBsaW5lQ291bnQgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPmxpbmVDb3VudCgpOworICAgIHVuc2ln
bmVkIHN0YXJ0Q29sdW1uID0gMTsKKyAgICB1bnNpZ25lZCBzb3VyY2VMZW5ndGggPSB1bmxpbmtl
ZEV4ZWN1dGFibGUtPnNvdXJjZUxlbmd0aCgpOworICAgIGJvb2wgZW5kQ29sdW1uSXNPblN0YXJ0
TGluZSA9ICFsaW5lQ291bnQ7CisgICAgdW5zaWduZWQgZW5kQ29sdW1uRXhjbHVkaW5nQnJhY2Vz
ID0gdW5saW5rZWRFeGVjdXRhYmxlLT51bmxpbmtlZEJvZHlFbmRDb2x1bW4oKSArIChlbmRDb2x1
bW5Jc09uU3RhcnRMaW5lID8gMCA6IDEpOworICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gdW5s
aW5rZWRFeGVjdXRhYmxlLT5zdGFydE9mZnNldCgpOworICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
RXhjbHVkaW5nT3BlbkJyYWNlID0gc3RhcnRPZmZzZXQgKyAxOworICAgIHVuc2lnbmVkIGVuZE9m
ZnNldEV4Y2x1ZGluZ0Nsb3NlQnJhY2UgPSBzdGFydE9mZnNldCArIHNvdXJjZUxlbmd0aCAtIDE7
CisgICAgU291cmNlQ29kZSBib2R5U291cmNlKHNvdXJjZS5wcm92aWRlcigpLCBzdGFydE9mZnNl
dEV4Y2x1ZGluZ09wZW5CcmFjZSwgZW5kT2Zmc2V0RXhjbHVkaW5nQ2xvc2VCcmFjZSwgMCwgc3Rh
cnRDb2x1bW4pOworICAgIHJldHVybiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgYm9k
eVNvdXJjZSwgdW5saW5rZWRFeGVjdXRhYmxlLCAwLCBsaW5lQ291bnQsIHN0YXJ0Q29sdW1uLCBl
bmRDb2x1bW5FeGNsdWRpbmdCcmFjZXMsIGZhbHNlKTsKK30KKworI2RlZmluZSBKU0NfREVGSU5F
X0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQp
IFxcCitGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoVk0mIHZtKSBcXAor
eyBcXAorICAgIHJldHVybiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSh2bSwgdm0uYnVpbHRpbkV4
ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCksIHZtLmJ1aWx0aW5FeGVjdXRhYmxl
cygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyBcXAorfQorCitKU0NfRk9SRUFDSF9CVUlMVElOKEpT
Q19ERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgSlNDX0RFRklORV9CVUlMVElOX0dF
TkVSQVRPUgorfQorCisiIiIpCisKK2J1aWx0aW5zSGVhZGVyLmNsb3NlKCkKK2J1aWx0aW5zSW1w
bGVtZW50YXRpb24uY2xvc2UoKQorCitpZiAobm90IG9zLnBhdGguZXhpc3RzKG91dHB1dF9iYXNl
ICsgIi5oIikpIG9yIChub3QgZmlsZWNtcC5jbXAob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgb3V0
cHV0X2Jhc2UgKyAiLmgiLCBzaGFsbG93PUZhbHNlKSk6CisgICAgb3MucmVuYW1lKG91dHB1dF9i
YXNlICsgIi5oLnRtcCIsIG91dHB1dF9iYXNlICsgIi5oIikKK2Vsc2U6CisgICAgb3MucmVtb3Zl
KG91dHB1dF9iYXNlICsgIi5oLnRtcCIpCisKK2lmIChub3Qgb3MucGF0aC5leGlzdHMob3V0cHV0
X2Jhc2UgKyAiLmNwcCIpKSBvciAobm90IGZpbGVjbXAuY21wKG91dHB1dF9iYXNlICsgIi5jcHAu
dG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmNwcCIsIHNoYWxsb3c9RmFsc2UpKToKKyAgICBvcy5yZW5h
bWUob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCBvdXRwdXRfYmFzZSArICIuY3BwIikKK2Vsc2U6
CisgICAgb3MucmVtb3ZlKG91dHB1dF9iYXNlICsgIi5jcHAudG1wIikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oCmluZGV4IDJjYTNlOTc5NDBjN2Mx
MTA2YzFiYWJhMWYzNTRmZTg0N2I0Mzg1YjMuLjMwY2FkMmExNGZmZGJmYjRkNTdjZjVhMTJmY2I5
MDBlMjY0Zjg3NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9DYWNoZWRDYWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Nh
Y2hlZENhbGwuaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
ICwgbV9pbnRlcnByZXRlcihjYWxsRnJhbWUtPmludGVycHJldGVyKCkpCiAgICAgICAgICAgICAs
IG1fZW50cnlTY29wZShjYWxsRnJhbWUtPnZtKCksIGZ1bmN0aW9uLT5zY29wZSgpLT5nbG9iYWxP
YmplY3QoKSkKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKCFmdW5jdGlvbi0+aXNIb3N0
RnVuY3Rpb24oKSk7CisgICAgICAgICAgICBBU1NFUlQoIWZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlv
bk5vbklubGluZSgpKTsKICAgICAgICAgICAgIGlmIChjYWxsRnJhbWUtPnZtKCkuaXNTYWZlVG9S
ZWN1cnNlKCkpIHsKICAgICAgICAgICAgICAgICBtX2FyZ3VtZW50cy5yZXNpemUoYXJndW1lbnRD
b3VudCk7CiAgICAgICAgICAgICAgICAgbV9jbG9zdXJlID0gbV9pbnRlcnByZXRlci0+cHJlcGFy
ZUZvclJlcGVhdENhbGwoZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLCBjYWxsRnJhbWUsICZtX3By
b3RvQ2FsbEZyYW1lLCBmdW5jdGlvbiwgYXJndW1lbnRDb3VudCArIDEsIGZ1bmN0aW9uLT5zY29w
ZSgpLCBtX2FyZ3VtZW50cy5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggY2E4OTBiMDZlYTMzZmE5ZTdmMWZhNTFh
MzVlYTJkNDhkMDA5YTM4YS4uNmM5YmY5NmMxNWY2MDllMjY1Y2UyNTBhNDViZjA4NjFkMDZjZDFm
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5oIgogI2luY2x1ZGUgIkpTU3RhY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIK
KyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgog
I2luY2x1ZGUgIkxMSW50Q0xvb3AuaCIKICNpbmNsdWRlICJMTEludFRodW5rcy5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAK
aW5kZXggZjBlMDJiYTRlNDc2Zjk5Y2M5MTNiMDQ2MmFkMjc5NTAwNjA5ZmEzYS4uMWMyNDBkY2Q3
MWJlNTI5ZDg4Y2JmNDYxZDE4NjhmNWViMmIwMmFkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuY3BwCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1l
bnQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcAppbmRleCBjYTdhZDExZjJlMGI4YTNiOGIxODU4OTFkN2U1MjJiYWU0MDNhMjM2Li5j
YjU1MDdiZWFjNTViZjhlYjFiMzdlYzkwZmNhYjE5MzRmYjQ4ZWEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJI
ZWFwLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNp
bmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggOThk
MTBhM2Y0ZGNiMTJkODlmMzdhMTJmMjI2MDRiOTQ2ZTA4ZTYyNy4uZGQwMzUzNzc5ZThiZGY5OGY0
NjU4YTMwN2UzMmQwNmU0NzI0NDE1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2RlczMyXzY0LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRlYnVnZ2Vy
LmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNs
dWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA5MjhkZDUwZmIw
MTZlMjcxNjQ0YTU3NWUzMGFiNWYyNTE2ZWI1MGVjLi45MDg4YjdmYjJmYjdhZDAxMzgwNmVmNDli
NWFmNDIwZmE2NDg0MDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKQEAgLTQxLDYgKzQxLDggQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJK
SVRPcGVyYXRpb25XcmFwcGVycy5oIgogI2luY2x1ZGUgIkpJVFRvREZHRGVmZXJyZWRDb21waWxh
dGlvbkNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRl
ICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25z
LmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCmluZGV4IDI2ZGQ0ZDFhZjc0NWFmYTFmYmM1M2E5YzAyM2E2ZTQ3NDFhNjZhMDkuLmRm
MWJkM2E5Y2ZhNDAyYzUyYTUyMTFjZjFhY2NlNjdkNTEyMWI3ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0yOSwxMSArMjksMTMg
QEAKICNpbmNsdWRlICJKSVQuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUg
IkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgi
CiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNp
bmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpT
Q0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
UHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1ZhcmlhYmxlT2JqZWN0LmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCmluZGV4IDQwNzg0YjQ5NDMxZmUwMmU4ZTQ1MjJmMTYzMDhjOTAyNDcx
NmQyMzYuLjJmNzk1NTU0YjA5MWRlZWJiYzAzYmYyYmU4Yzc0ZjQxYWU1NDFlZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5j
bHVkZSAiSlNQcm94eS5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNTdHJp
bmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlNhbXBsaW5n
VG9vbC5oIgogI2luY2x1ZGUgIlN0YWNrVmlzaXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCA2MDRjYzI2
M2NmOTdlMDg2ZmVkMDZlYzkwM2IwZWMxOTgzZTc4MTM3Li44MTY2ZTdmODFmYTg5YTdkNGY1MGM1
ZjFhOTRmYTk2OGM1ZDU3ZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1
ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQ2VsbC5o
IgotI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5o
IgogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRl
ICJKU09iamVjdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9B
U1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApp
bmRleCA4ZWMxZmQzMmEzYWRhMjJlMTI1MjI5NTcwZGNmN2ZmMjhlYWJmMWVkLi40NmE3Yzc2YjJm
OTAxZmMzY2MzNmQxY2UwYzA3MzUzZWIwNmIyZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtODg4LDkgKzg4OCw5IEBAIEV4cHJlc3Npb25Ob2RlKiBB
U1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uCiAgICAgQVNTRVJUKGZ1bmMtPmlzRG90QWNjZXNzb3JOb2RlKCkpOwogICAgIERvdEFj
Y2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4oZnVuYyk7CiAg
ICAgRnVuY3Rpb25DYWxsRG90Tm9kZSogbm9kZTsKLSAgICBpZiAoZG90LT5pZGVudGlmaWVyKCkg
PT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y2FsbCkKKyAgICBpZiAoZG90LT5pZGVudGlmaWVyKCkg
PT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y2FsbCB8fCBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3Zt
LT5wcm9wZXJ0eU5hbWVzLT5jYWxsUHJpdmF0ZU5hbWUpCiAgICAgICAgIG5vZGUgPSBuZXcgKG1f
dm0pIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5p
ZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7Ci0gICAgZWxz
ZSBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXBwbHkpCisg
ICAgZWxzZSBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXBw
bHkgfHwgZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXBwbHlQcml2
YXRlTmFtZSkKICAgICAgICAgbm9kZSA9IG5ldyAobV92bSkgQXBwbHlGdW5jdGlvbkNhbGxEb3RO
b2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90
LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiAgICAgZWxzZQogICAgICAgICBub2RlID0gbmV3ICht
X3ZtKSBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVu
dGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IGNhNGJiNGYwYWRlOGQ2YmM4MjY5MWE2YzAw
MDE0Y2YxOThiZDg4YmQuLmNjYjA3OWQ5NzVhMTQxYzVjNGIyZDdiNjIzMTMwMDA3MDk3Nzc4Mjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC0yNSwxMCArMjUsMTAg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMZXhlci5oIgogCisjaW5jbHVkZSAi
Q29tbW9uSWRlbnRpZmllcnMuaCIKKyNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
SlNGdW5jdGlvbklubGluZXMuaCIKLQogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25z
LmgiCi0jaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk5vZGVJbmZvLmgiCiAjaW5j
bHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlIDx3dGYvZHRvYS5oPgpAQCAtOTAsNiArOTAsNyBAQCBl
bnVtIENoYXJhY3RlclR5cGUgewogCiAgICAgLy8gT3RoZXIgdHlwZXMgKG9ubHkgb25lIHNvIGZh
cikKICAgICBDaGFyYWN0ZXJXaGl0ZVNwYWNlLAorICAgIENoYXJhY3RlclByaXZhdGVJZGVudGlm
aWVyU3RhcnQKIH07CiAKIC8vIDI1NiBMYXRpbi0xIGNvZGVzCkBAIC0xNTgsNyArMTU5LDcgQEAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IHR5cGVzT2ZMYXRpbjFDaGFyYWN0ZXJzWzI1Nl0g
PSB7CiAvKiAgNjEgLSA9ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyRXF1YWwsCiAvKiAg
NjIgLSA+ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyR3JlYXRlciwKIC8qICA2MyAtID8g
ICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJRdWVzdGlvbiwKLS8qICA2NCAtIEAgICAgICAg
ICAgICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyogIDY0IC0gQCAgICAgICAgICAgICAg
ICAgICovIENoYXJhY3RlclByaXZhdGVJZGVudGlmaWVyU3RhcnQsCiAvKiAgNjUgLSBBICAgICAg
ICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAogLyogIDY2IC0gQiAgICAg
ICAgICAgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKIC8qICA2NyAtIEMgICAg
ICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCkBAIC00ODYsOSArNDg3
LDEwIEBAIHN0YXRpYyBjb25zdCBMQ2hhciBzaW5nbGVDaGFyYWN0ZXJFc2NhcGVWYWx1ZXNGb3JB
U0NJSVsxMjhdID0gewogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1MZXhlcjxUPjo6TGV4
ZXIoVk0qIHZtKQorTGV4ZXI8VD46OkxleGVyKFZNKiB2bSwgSlNQYXJzZXJTdHJpY3RuZXNzIHN0
cmljdG5lc3MpCiAgICAgOiBtX2lzUmVwYXJzaW5nKGZhbHNlKQogICAgICwgbV92bSh2bSkKKyAg
ICAsIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbihzdHJpY3RuZXNzID09IEpTUGFyc2VCdWlsdGlu
KQogewogfQogCkBAIC03NTMsNyArNzU1LDI3IEBAIGlubGluZSB2b2lkIExleGVyPFQ+OjpyZWNv
cmQxNihpbnQgYykKICAgICBBU1NFUlQoYyA8PSBzdGF0aWNfY2FzdDxpbnQ+KFVTSFJUX01BWCkp
OwogICAgIG1fYnVmZmVyMTYuYXBwZW5kKHN0YXRpY19jYXN0PFVDaGFyPihjKSk7CiB9Ci0KKyAg
ICAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECitib29sIGlzU2FmZUlkZW50aWZpZXIoVk0mIHZtLCBj
b25zdCBJZGVudGlmaWVyKiBpZGVudCkKK3sKKyAgICBpZiAoIWlkZW50KQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAvKiBKdXN0IGJsb2NrIGFueSB1c2Ugb2Ygc3VzcGljaW91cyBpZGVudGlm
aWVycy4gIFRoaXMgaXMgaW50ZW5kZWQgdG8KKyAgICAgKiBiZSB1c2VkIGFzIGEgc2FmZXR5IG5l
dCB3aGlsZSBpbXBsZW1lbnRpbmcgYnVpbHRpbnMuCisgICAgICovCisgICAgaWYgKCppZGVudCA9
PSB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KCppZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5hcHBseSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+ZXZhbCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+RnVuY3Rpb24p
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorICAg
IAogdGVtcGxhdGUgPD4KIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFM
V0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwYXJzZUlkZW50aWZpZXIoSlNU
b2tlbkRhdGEqIHRva2VuRGF0YSwgdW5zaWduZWQgbGV4ZXJGbGFncywgYm9vbCBzdHJpY3RNb2Rl
KQogewpAQCAtNzY1LDcgKzc4NywxMSBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVu
dGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAogICAgICAg
ICAgICAgcmV0dXJuIGtleXdvcmQgPT0gUkVTRVJWRURfSUZfU1RSSUNUICYmICFzdHJpY3RNb2Rl
ID8gSURFTlQgOiBrZXl3b3JkOwogICAgICAgICB9CiAgICAgfQotCisgICAgCisgICAgYm9vbCBp
c1ByaXZhdGVOYW1lID0gbV9jdXJyZW50ID09ICdAJyAmJiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rp
b247CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgIHNoaWZ0KCk7CisgICAgCiAgICAg
Y29uc3QgTENoYXIqIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKICAgICB1
bnNpZ25lZCBpZGVudGlmaWVyTGluZVN0YXJ0ID0gY3VycmVudExpbmVTdGFydE9mZnNldCgpOwog
ICAgIApAQCAtNzc5LDE1ICs4MDUsMjYgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRl
bnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKIAogICAg
IGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gMDsKICAgICAKLSAgICBpZiAoc2hvdWxkQ3JlYXRl
SWRlbnRpZmllcikgeworICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyIHx8IG1fcGFyc2lu
Z0J1aWx0aW5GdW5jdGlvbikgewogICAgICAgICBpbnQgaWRlbnRpZmllckxlbmd0aCA9IGN1cnJl
bnRTb3VyY2VQdHIoKSAtIGlkZW50aWZpZXJTdGFydDsKICAgICAgICAgaWRlbnQgPSBtYWtlSWRl
bnRpZmllcihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwotCisgICAgICAgIGlm
IChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKKyAgICAgICAgICAgIGlmICghaXNTYWZlSWRl
bnRpZmllcigqbV92bSwgaWRlbnQpICYmICFpc1ByaXZhdGVOYW1lKSB7CisgICAgICAgICAgICAg
ICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJUaGUgdXNlIG9mICciLCBpZGVudC0+
c3RyaW5nKCksICInIGlzIGRpc2FsbG93ZWQgaW4gYnVpbHRpbiBmdW5jdGlvbnMuIik7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgICAgICAgICAgaWRlbnQgPSBtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5nZXRQcml2YXRlTmFtZSgqaWRlbnQpOworICAgICAgICAgICAgZWxzZSBpZiAoKmlk
ZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQpCisgICAgICAgICAg
ICAgICAgdG9rZW5EYXRhLT5pZGVudCA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRL
ZXl3b3JkUHJpdmF0ZU5hbWU7CisgICAgICAgICAgICBpZiAoIWlkZW50KQorICAgICAgICAgICAg
ICAgIHJldHVybiBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzsKKyAgICAgICAgfQogICAg
ICAgICB0b2tlbkRhdGEtPmlkZW50ID0gaWRlbnQ7CiAgICAgfSBlbHNlCiAgICAgICAgIHRva2Vu
RGF0YS0+aWRlbnQgPSAwOwogCi0gICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tl
bkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMp
KSkgeworICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICEo
bGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlzUHJpdmF0
ZU5hbWUpIHsKICAgICAgICAgQVNTRVJUKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpOwogICAgICAg
ICBpZiAocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHsKICAgICAgICAgICAgIGNvbnN0IEhh
c2hFbnRyeSogZW50cnkgPSBtX3ZtLT5rZXl3b3Jkcy0+Z2V0S2V5d29yZCgqaWRlbnQpOwpAQCAt
ODE0LDYgKzg1MSwxMCBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBB
TFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAgICAgICAgICAgcmV0
dXJuIGtleXdvcmQgPT0gUkVTRVJWRURfSUZfU1RSSUNUICYmICFzdHJpY3RNb2RlID8gSURFTlQg
OiBrZXl3b3JkOwogICAgICAgICB9CiAgICAgfQorICAgIAorICAgIGJvb2wgaXNQcml2YXRlTmFt
ZSA9IG1fY3VycmVudCA9PSAnQCcgJiYgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uOworICAgIGlm
IChpc1ByaXZhdGVOYW1lKQorICAgICAgICBzaGlmdCgpOwogCiAgICAgY29uc3QgVUNoYXIqIGlk
ZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKICAgICBpbnQgaWRlbnRpZmllckxp
bmVTdGFydCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKQEAgLTgyNiw2ICs4NjcsNyBAQCB0
ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9r
ZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAgIH0KICAgICAKICAgICBpZiAoVU5MSUtFTFkobV9j
dXJyZW50ID09ICdcXCcpKSB7CisgICAgICAgIEFTU0VSVCghaXNQcml2YXRlTmFtZSk7CiAgICAg
ICAgIHNldE9mZnNldEZyb21Tb3VyY2VQdHIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGlu
ZVN0YXJ0KTsKICAgICAgICAgcmV0dXJuIHBhcnNlSWRlbnRpZmllclNsb3dDYXNlPHNob3VsZENy
ZWF0ZUlkZW50aWZpZXI+KHRva2VuRGF0YSwgbGV4ZXJGbGFncywgc3RyaWN0TW9kZSk7CiAgICAg
fQpAQCAtODM3LDE4ICs4NzksMjkgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRp
Zmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAKIAogICAgIGNv
bnN0IElkZW50aWZpZXIqIGlkZW50ID0gMDsKICAgICAKLSAgICBpZiAoc2hvdWxkQ3JlYXRlSWRl
bnRpZmllcikgeworICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyIHx8IG1fcGFyc2luZ0J1
aWx0aW5GdW5jdGlvbikgewogICAgICAgICBpbnQgaWRlbnRpZmllckxlbmd0aCA9IGN1cnJlbnRT
b3VyY2VQdHIoKSAtIGlkZW50aWZpZXJTdGFydDsKICAgICAgICAgaWYgKGlzQWxsOEJpdCkKICAg
ICAgICAgICAgIGlkZW50ID0gbWFrZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hhcihpZGVudGlmaWVy
U3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBpZGVu
dCA9IG1ha2VJZGVudGlmaWVyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCk7Ci0g
ICAgICAgIAorICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CisgICAgICAg
ICAgICBpZiAoIWlzU2FmZUlkZW50aWZpZXIoKm1fdm0sIGlkZW50KSAmJiAhaXNQcml2YXRlTmFt
ZSkgeworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZygiVGhl
IHVzZSBvZiAnIiwgaWRlbnQtPnN0cmluZygpLCAiJyBpcyBkaXNhbGxvd2VkIGluIGJ1aWx0aW4g
ZnVuY3Rpb25zLiIpOworICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPSzsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICAgICAgICAgIGlk
ZW50ID0gbV92bS0+cHJvcGVydHlOYW1lcy0+Z2V0UHJpdmF0ZU5hbWUoKmlkZW50KTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRL
ZXl3b3JkKQorICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAmbV92bS0+cHJvcGVy
dHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZFByaXZhdGVOYW1lOworICAgICAgICAgICAgaWYgKCFp
ZGVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9QUklWQVRFX05BTUVfRVJST1JU
T0s7CisgICAgICAgIH0KICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IGlkZW50OwogICAgIH0g
ZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gMDsKICAgICAKLSAgICBpZiAoVU5MSUtF
TFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxhZ3MgJiBMZXhlckZs
YWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpKSB7CisgICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcg
PCBtYXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2Vy
dmVkV29yZHMpKSAmJiAhaXNQcml2YXRlTmFtZSkgewogICAgICAgICBBU1NFUlQoc2hvdWxkQ3Jl
YXRlSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkg
ewogICAgICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IG1fdm0tPmtleXdvcmRzLT5n
ZXRLZXl3b3JkKCppZGVudCk7CkBAIC0xNjU4LDYgKzE3MTEsNyBAQCBpbk51bWJlckFmdGVyRGVj
aW1hbFBvaW50OgogICAgICAgICBBU1NFUlQoaXNJZGVudFN0YXJ0KG1fY3VycmVudCkpOwogICAg
ICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNlIENoYXJhY3RlckJhY2tTbGFzaDoKKyAgICAgICAg
cGFyc2VJZGVudDoKICAgICAgICAgaWYgKGxleGVyRmxhZ3MgJiBMZXhleEZsYWdzRG9udEJ1aWxk
S2V5d29yZHMpCiAgICAgICAgICAgICB0b2tlbiA9IHBhcnNlSWRlbnRpZmllcjxmYWxzZT4odG9r
ZW5EYXRhLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKTsKICAgICAgICAgZWxzZQpAQCAtMTY3MCw2
ICsxNzI0LDExIEBAIGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ6CiAgICAgICAgIG1fdGVybWlu
YXRvciA9IHRydWU7CiAgICAgICAgIG1fbGluZVN0YXJ0ID0gbV9jb2RlOwogICAgICAgICBnb3Rv
IHN0YXJ0OworICAgIGNhc2UgQ2hhcmFjdGVyUHJpdmF0ZUlkZW50aWZpZXJTdGFydDoKKyAgICAg
ICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikKKyAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudDsKKworICAgICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNlIENoYXJhY3RlckludmFsaWQ6
CiAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gaW52YWxpZENoYXJhY3Rlck1lc3NhZ2UoKTsK
ICAgICAgICAgdG9rZW4gPSBFUlJPUlRPSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTGV4ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
aAppbmRleCAyOGM2MWJhMTk4ZDJjMTVhNDliYjE4NTJlZDMwYmVmZWI4OTA0MDA4Li5iODg3M2U5
OTUwMjg2NDRiZjhjYmIzZDRjMmRhNTYyZTkzZTBlOGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9MZXhlci5oCkBAIC03Miw3ICs3Miw3IEBAIGNsYXNzIExleGVyIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIAogcHVibGljOgotICAgIExleGVyKFZNKik7CisgICAgTGV4ZXIo
Vk0qLCBKU1BhcnNlclN0cmljdG5lc3MpOwogICAgIH5MZXhlcigpOwogCiAgICAgLy8gQ2hhcmFj
dGVyIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMuCkBAIC0yMzgsNiArMjM4LDcgQEAgcHJpdmF0ZToK
ICAgICBJZGVudGlmaWVyQXJlbmEqIG1fYXJlbmE7CiAKICAgICBWTSogbV92bTsKKyAgICBib29s
IG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKIH07CiAKIHRlbXBsYXRlIDw+CkBAIC0zMzUsNiAr
MzM2LDEyIEBAIEFMV0FZU19JTkxJTkUgY29uc3QgSWRlbnRpZmllciogTGV4ZXI8VD46Om1ha2VM
Q2hhcklkZW50aWZpZXIoY29uc3QgVUNoYXIqIGNoYXJhCiAgICAgcmV0dXJuICZtX2FyZW5hLT5t
YWtlSWRlbnRpZmllckxDaGFyRnJvbVVDaGFyKG1fdm0sIGNoYXJhY3RlcnMsIGxlbmd0aCk7CiB9
CiAKKyNpZiBBU1NFUlRfRElTQUJMRUQKK0FMV0FZU19JTkxJTkUgYm9vbCBpc1NhZmVJZGVudGlm
aWVyKFZNJiwgY29uc3QgSWRlbnRpZmllciopIHsgcmV0dXJuIHRydWU7IH0KKyNlbHNlCitib29s
IGlzU2FmZUlkZW50aWZpZXIoVk0mLCBjb25zdCBJZGVudGlmaWVyKik7CisjZW5kaWYKKwogdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+Ojps
ZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW4qIHRva2VuUmVjb3JkLCB1bnNpZ25lZCBsZXhlckZs
YWdzLCBib29sIHN0cmljdE1vZGUpCiB7CkBAIC0zNzAsMTAgKzM3NywxNSBAQCBBTFdBWVNfSU5M
SU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW4qIHRv
a2VuUmVjb3JkLCB1bgogICAgIEFTU0VSVChjdXJyZW50T2Zmc2V0KCkgPj0gY3VycmVudExpbmVT
dGFydE9mZnNldCgpKTsKIAogICAgIC8vIENyZWF0ZSB0aGUgaWRlbnRpZmllciBpZiBuZWVkZWQK
LSAgICBpZiAobGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250QnVpbGRLZXl3b3JkcykKKyAgICBp
ZiAobGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250QnVpbGRLZXl3b3JkcworI2lmICFBU1NFUlRf
RElTQUJMRUQKKyAgICAgICAgJiYgIW1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbgorI2VuZGlmCisg
ICAgICAgICkKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IDA7CiAgICAgZWxzZQogICAgICAg
ICB0b2tlbkRhdGEtPmlkZW50ID0gbWFrZUxDaGFySWRlbnRpZmllcihzdGFydCwgcHRyIC0gc3Rh
cnQpOworCiAgICAgdG9rZW5Mb2NhdGlvbi0+bGluZSA9IG1fbGluZU51bWJlcjsKICAgICB0b2tl
bkxvY2F0aW9uLT5saW5lU3RhcnRPZmZzZXQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CiAg
ICAgdG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZzZXQgPSBvZmZzZXRGcm9tU291cmNlUHRyKHN0YXJ0
KTsKQEAgLTM4MSw2ICszOTMsMTMgQEAgQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxU
Pjo6bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rva2VuKiB0b2tlblJlY29yZCwgdW4KICAgICBBU1NF
UlQodG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZzZXQgPj0gdG9rZW5Mb2NhdGlvbi0+bGluZVN0YXJ0
T2Zmc2V0KTsKICAgICB0b2tlblJlY29yZC0+bV9zdGFydFBvc2l0aW9uID0gc3RhcnRQb3NpdGlv
bjsKICAgICB0b2tlblJlY29yZC0+bV9lbmRQb3NpdGlvbiA9IGN1cnJlbnRQb3NpdGlvbigpOwor
I2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7
CisgICAgICAgIGlmICghaXNTYWZlSWRlbnRpZmllcigqbV92bSwgdG9rZW5EYXRhLT5pZGVudCkp
CisgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7CisgICAgfQorI2VuZGlmCisKICAgICBtX2xh
c3RUb2tlbiA9IElERU5UOwogICAgIHJldHVybiBJREVOVDsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggZmM5Y2NkOWY2YzU3NmMxYWVmNTQ3ZjIxMWZkZDU5
NmY0MmUwNTgwNi4uZDk1MmJhNmE5NGQyZjZiNDE4MjE1NTAwNGQwYTk3MDg0MjliZDc4YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTEzMiw2ICsxMzIsMTIgQEAg
UGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4gUHJvZ3JhbU5vZGU6OmNyZWF0ZShWTSogdm0sIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQKICAgICByZXR1cm4gbm9kZS5yZWxlYXNlKCk7CiB9CiAK
Kwordm9pZCBQcm9ncmFtTm9kZTo6c2V0Q2xvc2VkVmFyaWFibGVzKGNvbnN0IFZlY3RvcjxSZWZQ
dHI8U3RyaW5nSW1wbD4+JiYgY2xvc2VkVmFyaWFibGVzKQoreworICAgIG1fY2xvc2VkVmFyaWFi
bGVzID0gc3RkOjptb3ZlKGNsb3NlZFZhcmlhYmxlcyk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSBFdmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
CiBpbmxpbmUgRXZhbE5vZGU6OkV2YWxOb2RlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNp
Z25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0
YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFy
aWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywg
aW50IG51bUNvbnN0YW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCBk
Nzc5YTE3OGQ5NTZmZjk5ZmQwYmVkNWQ1ZjQ1NGFhM2U2YjUwODc5Li44MTZmZjAwMWFiZjAzNzZj
NjQyZjFhOTM4ZDBlMGE5ZjUyOWNhNmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oCkBAIC0xNDMxLDYgKzE0MzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBu
ZWVkc0FjdGl2YXRpb24oKSBjb25zdCB7IHJldHVybiAoaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkg
fHwgKG1fZmVhdHVyZXMgJiAoRXZhbEZlYXR1cmUgfCBXaXRoRmVhdHVyZSB8IENhdGNoRmVhdHVy
ZSkpOyB9CiAgICAgICAgIGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVy
biAhIW1fY2FwdHVyZWRWYXJpYWJsZXMuc2l6ZSgpOyB9CiAgICAgICAgIHNpemVfdCBjYXB0dXJl
ZFZhcmlhYmxlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2NhcHR1cmVkVmFyaWFibGVzLnNpemUo
KTsgfQorICAgICAgICBjb25zdCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcygpIGNv
bnN0IHsgcmV0dXJuIG1fY2FwdHVyZWRWYXJpYWJsZXM7IH0KICAgICAgICAgYm9vbCBjYXB0dXJl
cyhjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgeyByZXR1cm4gbV9jYXB0dXJlZFZhcmlhYmxlcy5j
b250YWlucyhpZGVudC5pbXBsKCkpOyB9CiAKICAgICAgICAgVmFyU3RhY2smIHZhclN0YWNrKCkg
eyByZXR1cm4gbV92YXJTdGFjazsgfQpAQCAtMTQ0Niw2ICsxNDQ3LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCgpIGNvbnN0OwogCiAg
ICAgICAgIHZvaWQgZW1pdFN0YXRlbWVudHNCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqIGRlc3RpbmF0aW9uKTsKKyAgICAgICAgCisgICAgICAgIHZvaWQgc2V0Q2xvc2Vk
VmFyaWFibGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYpIHsgfQogCiAgICAg
cHJvdGVjdGVkOgogICAgICAgICB2b2lkIHNldFNvdXJjZShjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UpIHsgbV9zb3VyY2UgPSBzb3VyY2U7IH0KQEAgLTE0NzUsMTEgKzE0NzgsMTMgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9uID0g
ZmFsc2U7CiAKKyAgICAgICAgdm9pZCBzZXRDbG9zZWRWYXJpYWJsZXMoY29uc3QgVmVjdG9yPFJl
ZlB0cjxTdHJpbmdJbXBsPj4mJik7CisgICAgICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5n
SW1wbD4+JiBjbG9zZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2Nsb3NlZFZhcmlhYmxl
czsgfQogICAgIHByaXZhdGU6CiAgICAgICAgIFByb2dyYW1Ob2RlKFZNKiwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0
YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sq
LCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2Rl
RmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwot
CisgICAgICAgIFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+IG1fY2xvc2VkVmFyaWFibGVzOwog
ICAgICAgICB1bnNpZ25lZCBtX3N0YXJ0Q29sdW1uOwogICAgICAgICB1bnNpZ25lZCBtX2VuZENv
bHVtbjsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4
IDI5NzY2NmU3MjZlNDVkMDgzZWYxMzQ5ZGRmZmRmMzdlZjgwMGRmN2EuLjUwYmVjNzlmZTM4YWRm
OGYzYTA0ZjZiNDZjYmQyYTVjYmZjZjI0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5jcHAKQEAgLTIwNCw4ICsyMDQsOSBAQCBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2Vy
KFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcnMqCiAg
ICAgLCBtX2xhc3RJZGVudGlmaWVyKDApCiAgICAgLCBtX2xhc3RGdW5jdGlvbk5hbWUobnVsbHB0
cikKICAgICAsIG1fc291cmNlRWxlbWVudHMoMCkKKyAgICAsIG1fcGFyc2luZ0J1aWx0aW4oc3Ry
aWN0bmVzcyA9PSBKU1BhcnNlQnVpbHRpbikKIHsKLSAgICBtX2xleGVyID0gYWRvcHRQdHIobmV3
IExleGVyVHlwZSh2bSkpOworICAgIG1fbGV4ZXIgPSBhZG9wdFB0cihuZXcgTGV4ZXJUeXBlKHZt
LCBzdHJpY3RuZXNzKSk7CiAgICAgbV9hcmVuYSA9IG1fdm0tPnBhcnNlckFyZW5hLmdldCgpOwog
ICAgIG1fbGV4ZXItPnNldENvZGUoc291cmNlLCBtX2FyZW5hKTsKICAgICBtX3Rva2VuLm1fbG9j
YXRpb24ubGluZSA9IHNvdXJjZS5maXJzdExpbmUoKTsKQEAgLTI1Niw2ICsyNTcsNyBAQCBTdHJp
bmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoKQogICAgIElkZW50aWZpZXJTZXQgY2Fw
dHVyZWRWYXJpYWJsZXM7CiAgICAgYm9vbCBtb2RpZmllZFBhcmFtZXRlciA9IGZhbHNlOwogICAg
IHNjb3BlLT5nZXRDYXB0dXJlZFZhcmlhYmxlcyhjYXB0dXJlZFZhcmlhYmxlcywgbW9kaWZpZWRQ
YXJhbWV0ZXIpOworICAgIAogICAgIENvZGVGZWF0dXJlcyBmZWF0dXJlcyA9IGNvbnRleHQuZmVh
dHVyZXMoKTsKICAgICBpZiAoc2NvcGUtPnN0cmljdE1vZGUoKSkKICAgICAgICAgZmVhdHVyZXMg
fD0gU3RyaWN0TW9kZUZlYXR1cmU7CkBAIC0yNjMsMjEgKzI2NSwzNiBAQCBTdHJpbmcgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlSW5uZXIoKQogICAgICAgICBmZWF0dXJlcyB8PSBTaGFkb3dzQXJn
dW1lbnRzRmVhdHVyZTsKICAgICBpZiAobW9kaWZpZWRQYXJhbWV0ZXIpCiAgICAgICAgIGZlYXR1
cmVzIHw9IE1vZGlmaWVkUGFyYW1ldGVyRmVhdHVyZTsKLQorICAgIAorICAgIFZlY3RvcjxSZWZQ
dHI8U3RyaW5nSW1wbD4+IGNsb3NlZFZhcmlhYmxlczsKKyAgICBpZiAobV9wYXJzaW5nQnVpbHRp
bikgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghY2FwdHVyZWRWYXJpYWJsZXMuc2l6ZSgpKTsK
KyAgICAgICAgSWRlbnRpZmllclNldCB1c2VkVmFyaWFibGVzOworICAgICAgICBzY29wZS0+Z2V0
VXNlZFZhcmlhYmxlcyh1c2VkVmFyaWFibGVzKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiB2
YXJpYWJsZSA6IHVzZWRWYXJpYWJsZXMpIHsKKyAgICAgICAgICAgIGlmIChzY29wZS0+aGFzRGVj
bGFyZWRWYXJpYWJsZShJZGVudGlmaWVyKG1fdm0sIHZhcmlhYmxlLmdldCgpKSkpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChzY29wZS0+
aGFzRGVjbGFyZWRQYXJhbWV0ZXIoSWRlbnRpZmllcihtX3ZtLCB2YXJpYWJsZS5nZXQoKSkpKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgY2xvc2VkVmFyaWFibGVzLmFw
cGVuZCh2YXJpYWJsZSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgZGlkRmluaXNoUGFyc2luZyhz
b3VyY2VFbGVtZW50cywgY29udGV4dC52YXJEZWNsYXJhdGlvbnMoKSwgY29udGV4dC5mdW5jRGVj
bGFyYXRpb25zKCksIGZlYXR1cmVzLAotICAgICAgICBjb250ZXh0Lm51bUNvbnN0YW50cygpLCBj
YXB0dXJlZFZhcmlhYmxlcyk7CisgICAgICAgIGNvbnRleHQubnVtQ29uc3RhbnRzKCksIGNhcHR1
cmVkVmFyaWFibGVzLCBzdGQ6Om1vdmUoY2xvc2VkVmFyaWFibGVzKSk7CiAKICAgICByZXR1cm4g
cGFyc2VFcnJvcjsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHZvaWQgUGFy
c2VyPExleGVyVHlwZT46OmRpZEZpbmlzaFBhcnNpbmcoU291cmNlRWxlbWVudHMqIHNvdXJjZUVs
ZW1lbnRzLCBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrPiogdmFy
U3RhY2ssIAotICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25T
dGFjaz4qIGZ1bmNTdGFjaywgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRz
LCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcnMpCisgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xh
cmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiogZnVuY1N0YWNrLCBDb2RlRmVhdHVyZXMgZmVh
dHVyZXMsIGludCBudW1Db25zdGFudHMsIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFycywgY29u
c3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJiBjbG9zZWRWYXJpYWJsZXMpCiB7CiAgICAg
bV9zb3VyY2VFbGVtZW50cyA9IHNvdXJjZUVsZW1lbnRzOwogICAgIG1fdmFyRGVjbGFyYXRpb25z
ID0gdmFyU3RhY2s7CiAgICAgbV9mdW5jRGVjbGFyYXRpb25zID0gZnVuY1N0YWNrOwogICAgIG1f
Y2FwdHVyZWRWYXJpYWJsZXMuc3dhcChjYXB0dXJlZFZhcnMpOworICAgIG1fY2xvc2VkVmFyaWFi
bGVzID0gY2xvc2VkVmFyaWFibGVzOwogICAgIG1fZmVhdHVyZXMgPSBmZWF0dXJlczsKICAgICBt
X251bUNvbnN0YW50cyA9IG51bUNvbnN0YW50czsKIH0KQEAgLTIzNDYsNiArMjM2MywxMCBAQCB0
ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPiB2b2lkIFBhcnNlcjxMZXhlclR5cGU+Ojpwcmlu
dFVuZXhwZWN0ZWRUb2tlblRleHQoVwogICAgIGNhc2UgUkVTRVJWRUQ6CiAgICAgICAgIG91dC5w
cmludCgiVW5leHBlY3RlZCB1c2Ugb2YgcmVzZXJ2ZWQgd29yZCAnIiwgZ2V0VG9rZW4oKSwgIici
KTsKICAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJP
UlRPSzoKKyAgICAgICAgb3V0LnByaW50KCJJbnZhbGlkIHByaXZhdGUgbmFtZSAnIiwgZ2V0VG9r
ZW4oKSwgIiciKTsKKyAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAgICAgY2FzZSBJREVO
VDoKICAgICAgICAgb3V0LnByaW50KCJVbmV4cGVjdGVkIGlkZW50aWZpZXIgJyIsIGdldFRva2Vu
KCksICInIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBiNjk4ZWY5
MzY4Y2I4YzhmMTk3Y2NkMDAwYWNhYTZkZmIxMWJhMjQ0Li45MDMzODUwYzhjOTdmNTdlMjFkYTVl
ZWRiMDJkMDQ0ZjRjODk3OGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgK
QEAgLTIzLDYgKzIzLDcgQEAKICNpZm5kZWYgUGFyc2VyX2gKICNkZWZpbmUgUGFyc2VyX2gKIAor
I2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNp
bmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgpAQCAt
MjU5LDYgKzI2MCwxMCBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICByZXR1cm4gaXNWYWxpZFN0
cmljdE1vZGUgPyBCaW5kaW5nU3VjY2VlZGVkIDogU3RyaWN0QmluZGluZ0ZhaWxlZDsKICAgICB9
CiAKKyAgICB2b2lkIGdldFVzZWRWYXJpYWJsZXMoSWRlbnRpZmllclNldCYgdXNlZFZhcmlhYmxl
cykKKyAgICB7CisgICAgICAgIHVzZWRWYXJpYWJsZXMuc3dhcChtX3VzZWRWYXJpYWJsZXMpOwor
ICAgIH0KIAogICAgIHZvaWQgdXNlVmFyaWFibGUoY29uc3QgSWRlbnRpZmllciogaWRlbnQsIGJv
b2wgaXNFdmFsKQogICAgIHsKQEAgLTQxNCw2ICs0MTksNyBAQCBwdWJsaWM6CiAgICAgUGFzc1Jl
ZlB0cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYpOwogCiAgICAgSlNUZXh0UG9zaXRp
b24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4ZXItPnBv
c2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsgfQorICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3Ry
aW5nSW1wbD4+JiYgY2xvc2VkVmFyaWFibGVzKCkgeyByZXR1cm4gc3RkOjptb3ZlKG1fY2xvc2Vk
VmFyaWFibGVzKTsgfQogCiBwcml2YXRlOgogICAgIHN0cnVjdCBBbGxvd0luT3ZlcnJpZGUgewpA
QCAtNTQwLDcgKzU0Niw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIHBhcnNlSW5uZXIoKTsKIAog
ICAgIHZvaWQgZGlkRmluaXNoUGFyc2luZyhTb3VyY2VFbGVtZW50cyosIFBhcnNlckFyZW5hRGF0
YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+KiwgCi0gICAgICAgIFBhcnNlckFyZW5hRGF0
YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qLCBDb2RlRmVhdHVyZXMsIGludCwg
SWRlbnRpZmllclNldCYpOworICAgICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFj
a3M6OkZ1bmN0aW9uU3RhY2s+KiwgQ29kZUZlYXR1cmVzLCBpbnQsIElkZW50aWZpZXJTZXQmLCBj
b25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmKTsKIAogICAgIC8vIFVzZWQgdG8gZGV0
ZXJtaW5lIHR5cGUgb2YgZXJyb3IgdG8gcmVwb3J0LgogICAgIGJvb2wgaXNGdW5jdGlvbkJvZHlO
b2RlKFNjb3BlTm9kZSopIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC04NDAsOSArODQ2LDExIEBAIHBy
aXZhdGU6CiAgICAgY29uc3QgSWRlbnRpZmllciogbV9sYXN0RnVuY3Rpb25OYW1lOwogICAgIFJl
ZlB0cjxTb3VyY2VQcm92aWRlckNhY2hlPiBtX2Z1bmN0aW9uQ2FjaGU7CiAgICAgU291cmNlRWxl
bWVudHMqIG1fc291cmNlRWxlbWVudHM7CisgICAgYm9vbCBtX3BhcnNpbmdCdWlsdGluOwogICAg
IFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+KiBtX3ZhckRlY2xh
cmF0aW9uczsKICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9u
U3RhY2s+KiBtX2Z1bmNEZWNsYXJhdGlvbnM7CiAgICAgSWRlbnRpZmllclNldCBtX2NhcHR1cmVk
VmFyaWFibGVzOworICAgIFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+IG1fY2xvc2VkVmFyaWFi
bGVzOwogICAgIENvZGVGZWF0dXJlcyBtX2ZlYXR1cmVzOwogICAgIGludCBtX251bUNvbnN0YW50
czsKICAgICAKQEAgLTk1Nyw2ICs5NjUsMTAgQEAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBwYXJz
ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25QYXJhbWV0ZXIKICAg
ICAgICAgUmVmUHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2Rl
PihlcnJvcik7CiAgICAgICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAg
ICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVM
YXN0TmV3bGluZSgpOworICAgICAgICBpZiAoc3RyaWN0bmVzcyA9PSBKU1BhcnNlQnVpbHRpbikg
eworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKKyAgICAgICAgICAgIHJlc3Vs
dC0+c2V0Q2xvc2VkVmFyaWFibGVzKHN0ZDo6bW92ZShwYXJzZXIuY2xvc2VkVmFyaWFibGVzKCkp
KTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKICAgICB9CiAg
ICAgUGFyc2VyPExleGVyPFVDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIHBhcmFtZXRlcnMsIG5h
bWUsIHN0cmljdG5lc3MsIHBhcnNlck1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXJNb2Rlcy5oCmluZGV4IDRlOWExN2NkMjFjYTM0MTQ2YmJkNDgxNTZhMzcyY2Q0MDRk
ZWY2MGMuLmY3YTc1YmY3YzM3ODU3ZTQ0YjZkNWQ3MWY0NTI5YmIxYWMxY2Y1ZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKQEAgLTI5LDcgKzI5LDcgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gSlNQYXJzZXJTdHJpY3RuZXNzIHsgSlNQYXJzZU5v
cm1hbCwgSlNQYXJzZVN0cmljdCB9OworZW51bSBKU1BhcnNlclN0cmljdG5lc3MgeyBKU1BhcnNl
Tm9ybWFsLCBKU1BhcnNlQnVpbHRpbiwgSlNQYXJzZVN0cmljdCB9OwogZW51bSBKU1BhcnNlck1v
ZGUgeyBKU1BhcnNlUHJvZ3JhbUNvZGUsIEpTUGFyc2VGdW5jdGlvbkNvZGUgfTsKIAogZW51bSBQ
cm9maWxlck1vZGUgeyBQcm9maWxlck9mZiwgUHJvZmlsZXJPbiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXggODJhMjY2MzlhNzkyMjBhMDg0NDU2
YjQ4ZjMyODUyZDE0M2M3MzlkMC4uOGM4N2FkOWZhZGJkYzRhZjM5YWM5OWRiMmQ4NDQ1ZTEzZmZm
ZDM1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tl
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCkBA
IC0xNDksNiArMTQ5LDcgQEAgZW51bSBKU1Rva2VuVHlwZSB7CiAgICAgSU5WQUxJRF9OVU1FUklD
X0xJVEVSQUxfRVJST1JUT0sgPSA3IHwgRXJyb3JUb2tlbkZsYWcsCiAgICAgVU5URVJNSU5BVEVE
X1NUUklOR19MSVRFUkFMX0VSUk9SVE9LID0gOCB8IEVycm9yVG9rZW5GbGFnIHwgVW50ZXJtaW5h
dGVkRXJyb3JUb2tlbkZsYWcsCiAgICAgSU5WQUxJRF9TVFJJTkdfTElURVJBTF9FUlJPUlRPSyA9
IDkgfCBFcnJvclRva2VuRmxhZywKKyAgICBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSyA9
IDEwIHwgRXJyb3JUb2tlbkZsYWcKIH07CiAKIHN0cnVjdCBKU1RleHRQb3NpdGlvbiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCmluZGV4IDE4ZjM4OTE3MTM4NTIz
NjJjN2E3NWEzMDUzYjQ2MzE0MTdiZWI4MWIuLmYxNmZkM2RlNDA1NTk3MGJhOWQ5YzZmMGFlNjMx
OGYyMjA0YjY1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
Z3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5o
CkBAIC0yNSw2ICsyNSw3IEBACiAjZGVmaW5lIEFyZ3VtZW50c19oCiAKICNpbmNsdWRlICJDb2Rl
T3JpZ2luLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJKU0Fj
dGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgogI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcAppbmRleCBkZDA4OTRmMTRhMDIx
ZDVmMTI2NThhY2IwMWU3MjFmY2Q2ZDM0OGNjLi41YjRhZTg3MTZiMDU1M2JlNDYyMzk1NWU5OWUx
YjQzZWJmMThmZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCkBAIC0yNiw3ICsyNiw5IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5
cGUuaCIKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiSlNBcmd1
bWVudHNJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAKIG5hbWVz
cGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVBy
b3RvdHlwZS5jcHAKaW5kZXggMjdhYzZkNDhhNzFmNzk1NTAyYTEwY2VhNjQ3ODY1NDEzNWE0NjNh
MC4uNmRjN2JlNTY5NjlkZTY3ZjYyMTA3YmIzYTUxYTMwOGZhM2JhNzZiZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTQXJyYXlJdGVyYXRvci5oIgog
I2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTU3RyaW5nSm9pbmVyLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5j
bHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCkBAIC01Niw3ICs1Nyw2IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKik7CiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NvcnQoRXhl
Y1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3Rv
RnVuY1NwbGljZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGFycmF5UHJvdG9GdW5jVW5TaGlmdChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRXZlcnkoRXhlY1N0YXRlKik7CiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0ZvckVhY2goRXhl
Y1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3Rv
RnVuY1NvbWUoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvRnVuY0luZGV4T2YoRXhlY1N0YXRlKik7CkBAIC05NTQsNjkgKzk1NCw2IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNNYXAoRXhlY1N0YXRl
KiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0QXJyYXkpOwogfQogCi0v
LyBEb2N1bWVudGF0aW9uIGZvciB0aGVzZSB0aHJlZSBpcyBhdmFpbGFibGUgYXQ6Ci0vLyBodHRw
Oi8vZGV2ZWxvcGVyLXRlc3QubW96aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0phdmFTY3JpcHRfMS41
X1JlZmVyZW5jZTpPYmplY3RzOkFycmF5OmV2ZXJ5Ci0vLyBodHRwOi8vZGV2ZWxvcGVyLXRlc3Qu
bW96aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0phdmFTY3JpcHRfMS41X1JlZmVyZW5jZTpPYmplY3Rz
OkFycmF5OmZvckVhY2gKLS8vIGh0dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3ppbGxhLm9yZy9lbi9k
b2NzL0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6QXJyYXk6c29tZQotCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRXZlcnkoRXhlY1N0YXRl
KiBleGVjKQotewotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgp
LnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKLSAgICB1bnNpZ25lZCBs
ZW5ndGggPSB0aGlzT2JqLT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCku
dG9VSW50MzIoZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCi0gICAgSlNWYWx1ZSBmdW5j
dGlvbiA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENh
bGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBp
ZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjKTsKLQotICAgIEpTVmFsdWUgYXBwbHlUaGlzID0gZXhlYy0+YXJndW1lbnQoMSk7
Ci0KLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbih0cnVlKTsKLQotICAgIHVuc2lnbmVk
IGsgPSAwOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUpTICYmIGlzSlNBcnJheSh0aGlz
T2JqKSkgewotICAgICAgICBKU0Z1bmN0aW9uKiBmID0ganNDYXN0PEpTRnVuY3Rpb24qPihmdW5j
dGlvbik7Ci0gICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh0aGlzT2JqKTsKLSAgICAg
ICAgQ2FjaGVkQ2FsbCBjYWNoZWRDYWxsKGV4ZWMsIGYsIDMpOwotICAgICAgICBmb3IgKDsgayA8
IGxlbmd0aCAmJiAhZXhlYy0+aGFkRXhjZXB0aW9uKCk7ICsraykgewotICAgICAgICAgICAgaWYg
KFVOTElLRUxZKCFhcnJheS0+Y2FuR2V0SW5kZXhRdWlja2x5KGspKSkKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRUaGlzKGFw
cGx5VGhpcyk7Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDAsIGFycmF5LT5n
ZXRJbmRleFF1aWNrbHkoaykpOwotICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudCgx
LCBqc051bWJlcihrKSk7Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDIsIHRo
aXNPYmopOwotICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWNoZWRDYWxsLmNhbGwoKTsK
LSAgICAgICAgICAgIGlmICghcmVzdWx0LnRvQm9vbGVhbihleGVjKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwotICAgICAgICB9Ci0g
ICAgfQotICAgIGZvciAoOyBrIDwgbGVuZ3RoICYmICFleGVjLT5oYWRFeGNlcHRpb24oKTsgKytr
KSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmopOwotICAgICAgICBpZiAoIXRo
aXNPYmotPmdldFByb3BlcnR5U2xvdChleGVjLCBrLCBzbG90KSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotCi0gICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGVhY2hBcmd1bWVudHM7Ci0gICAg
ICAgIGVhY2hBcmd1bWVudHMuYXBwZW5kKHNsb3QuZ2V0VmFsdWUoZXhlYywgaykpOwotICAgICAg
ICBlYWNoQXJndW1lbnRzLmFwcGVuZChqc051bWJlcihrKSk7Ci0gICAgICAgIGVhY2hBcmd1bWVu
dHMuYXBwZW5kKHRoaXNPYmopOwotCi0gICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
LSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KLSAg
ICAgICAgYm9vbCBwcmVkaWNhdGVSZXN1bHQgPSBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlw
ZSwgY2FsbERhdGEsIGFwcGx5VGhpcywgZWFjaEFyZ3VtZW50cykudG9Cb29sZWFuKGV4ZWMpOwot
ICAgICAgICBpZiAoIXByZWRpY2F0ZVJlc3VsdCkgewotICAgICAgICAgICAgcmVzdWx0ID0ganNC
b29sZWFuKGZhbHNlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotfQotCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRm9yRWFjaChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAg
ICAgSlNPYmplY3QqIHRoaXNPYmogPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMs
IFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggNTEwZTM4M2ZhZTU3NWFhZGE4MTc2YzA0NDFlZTcyNWI0
M2E0YzczMi4uZDMwNDg3N2ZlOWNkZTFjMDkxOWZkNDU5NWY4MTFlY2FiY2U3NzI3NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC0xNDQsMjQgKzE0
NCwyNiBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hlOjpnZXRGdW5jdGlv
bkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShWTSYgdgogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0
aW9uQmVmb3JlTGFzdE5ld2xpbmU7CiAgICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtID0g
cGFyc2U8UHJvZ3JhbU5vZGU+KCZ2bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIEpTUGFyc2VO
b3JtYWwsIEpTUGFyc2VQcm9ncmFtQ29kZSwgZXJyb3IsICZwb3NpdGlvbkJlZm9yZUxhc3ROZXds
aW5lKTsKICAgICBpZiAoIXByb2dyYW0pIHsKLSAgICAgICAgQVNTRVJUKGVycm9yLm1fdHlwZSAh
PSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXJyb3Iu
bV90eXBlICE9IFBhcnNlckVycm9yOjpFcnJvck5vbmUpOwogICAgICAgICBtX3NvdXJjZUNvZGUu
cmVtb3ZlKGFkZFJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAog
ICAgIC8vIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBhbiBpbnB1dCBzdHJpbmcgdGhhdCB3b3VsZCBy
ZXN1bHQgaW4gYSBzaW5nbGUgYW5vbnltb3VzIGZ1bmN0aW9uIGV4cHJlc3Npb24uCiAgICAgU3Rh
dGVtZW50Tm9kZSogZXhwclN0YXRlbWVudCA9IHByb2dyYW0tPnNpbmdsZVN0YXRlbWVudCgpOwot
ICAgIEFTU0VSVChleHByU3RhdGVtZW50KTsKLSAgICBBU1NFUlQoZXhwclN0YXRlbWVudC0+aXNF
eHByU3RhdGVtZW50KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQpOworICAg
IFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKICAgICBF
eHByZXNzaW9uTm9kZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVtZW50Tm9kZSo+
KGV4cHJTdGF0ZW1lbnQpLT5leHByKCk7Ci0gICAgQVNTRVJUKGZ1bmNFeHByKTsKKyAgICBSRUxF
QVNFX0FTU0VSVChmdW5jRXhwcik7CiAgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHItPmlzRnVu
Y0V4cHJOb2RlKCkpOwogICAgIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkgPSBzdGF0aWNfY2FzdDxG
dW5jRXhwck5vZGUqPihmdW5jRXhwciktPmJvZHkoKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghcHJv
Z3JhbS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CisgICAgCiAgICAgYm9keS0+c2V0RW5kUG9z
aXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7Ci0gICAgQVNTRVJUKGJvZHkpOwotICAg
IEFTU0VSVChib2R5LT5pZGVudCgpLmlzTnVsbCgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5
KTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5LT5pZGVudCgpLmlzTnVsbCgpKTsKIAotICAgIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBib2R5LCB0cnVlKTsKKyAgICBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgYm9keSwgdHJ1ZSwgVW5saW5r
ZWROb3JtYWxGdW5jdGlvbik7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5tX25hbWVWYWx1ZS5z
ZXQodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwganNTdHJpbmcoJnZtLCBuYW1lLnN0cmluZygpKSk7
CiAKICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gU291cmNlQ29kZVZhbHVlKHZtLCBm
dW5jdGlvbkV4ZWN1dGFibGUsIG1fc291cmNlQ29kZS5hZ2UoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKaW5kZXggM2Y1YzY0
NWMwOThkNTI3ZmMwYzcyNTllOTQ0N2VmYmU4ODY4YTI5Yy4uMmZjMmI3MjdhZmNlZWUxZWMyYzYy
NWRlNTY3NWIzYmUxY2Y2MGQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcApAQCAtMjcsNyArMjcsMTAgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICNkZWZpbmUgSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKG5hbWUpICwgbmFtZSh2
bSwgI25hbWUpCiAjZGVmaW5lIElOSVRJQUxJWkVfS0VZV09SRChuYW1lKSAsIG5hbWUjI0tleXdv
cmQodm0sICNuYW1lKQotI2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFNRShuYW1lKSAsIG5h
bWUjI1ByaXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb20oUHJpdmF0ZU5hbWUoKSkpCisjZGVmaW5l
IElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKG5hbWUpIFwKKyAgICAsIG5hbWUjI1ByaXZhdGVOYW1l
KElkZW50aWZpZXI6OmZyb20oUHJpdmF0ZU5hbWUoKSkpIFwKKyAgICAsIG1fIyNuYW1lIyNQdWJs
aWNTdHJpbmdQYWlyKG5hbWUsIG5hbWUjI1ByaXZhdGVOYW1lKSBcCisKIAogQ29tbW9uSWRlbnRp
ZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZNKiB2bSkKICAgICA6IG51bGxJZGVudGlmaWVyKCkK
QEAgLTM4LDggKzQxLDI2IEBAIENvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyhW
TSogdm0pCiAgICAgLCBoYXNOZXh0SWRlbnRpZmllcih2bSwgImhhc05leHQiKQogICAgIEpTQ19D
T01NT05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKElOSVRJQUxJWkVfS0VZV09SRCkKICAgICBK
U0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpFX1BST1BF
UlRZX05BTUUpCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJ
WkVfUFJPUEVSVFlfTkFNRSkKICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFD
SF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKQogewogfQogCitjb25zdCBJ
ZGVudGlmaWVyKiBDb21tb25JZGVudGlmaWVyczo6Z2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQpIGNvbnN0Cit7CisjZGVmaW5lIFJFVFVSTl9JRl9QUklWQVRFX05BTUVfTUFU
Q0hFUyhuYW1lKSBpZiAobV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuZmlyc3QgPT0gaWRlbnQp
IHJldHVybiAmbV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuc2Vjb25kOworICAgIEpTQ19DT01N
T05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoUkVUVVJOX0lGX1BSSVZB
VEVfTkFNRV9NQVRDSEVTKQorI3VuZGVmIFJFVFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hFUwor
ICAgIHJldHVybiAwOworfQorCitJZGVudGlmaWVyIENvbW1vbklkZW50aWZpZXJzOjpnZXRQdWJs
aWNOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAoreworI2RlZmluZSBSRVRVUk5f
SUZfUFJJVkFURV9OQU1FX01BVENIRVMobmFtZSkgaWYgKG1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQ
YWlyLnNlY29uZCA9PSBpZGVudCkgcmV0dXJuIG1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQYWlyLmZp
cnN0OworICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05B
TUUoUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKQorI3VuZGVmIFJFVFVSTl9JRl9QUklW
QVRFX05BTUVfTUFUQ0hFUworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIGVtcHR5SWRlbnRpZmllcjsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCBl
OGY5ZWQ4MmJjNzk0NjIwMzgyNjZiMzAyMDc4MjI0N2IxZmEyN2EzLi45MjRkMzZhYzY5MTM1MDM1
N2NiMzgyYjFlZjNiNDBhMGEwOGMwYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTIyLDYgKzIyLDcgQEAKICNkZWZpbmUg
Q29tbW9uSWRlbnRpZmllcnNfaAogCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
IkpTQ0J1aWx0aW5zLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIC8vIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIG9mIHByb3BlcnR5IG5hbWVzLCBwYXNzZWQgdG8gYSBtYWNybyBzbyB3
ZSBjYW4gZG8gc2V0IHRoZW0gdXAgdmFyaW91cwpAQCAtMTMzLDggKzEzNCwxMCBAQAogICAgIG1h
Y3JvKG9zckV4aXRzKSBcCiAgICAgbWFjcm8ocGFyc2UpIFwKICAgICBtYWNybyhwcm9maWxlZEJ5
dGVjb2RlcykgXAorICAgIG1hY3JvKHByb21pc2UpIFwKICAgICBtYWNybyhwcm9wZXJ0eUlzRW51
bWVyYWJsZSkgXAogICAgIG1hY3JvKHByb3RvdHlwZSkgXAorICAgIG1hY3JvKHJlc29sdmUpIFwK
ICAgICBtYWNybyhzZXQpIFwKICAgICBtYWNybyhzaXplKSBcCiAgICAgbWFjcm8oc2xpY2UpIFwK
QEAgLTE1NSw3ICsxNTgsMTQgQEAKICAgICBtYWNybyh2YWx1ZXMpIFwKICAgICBtYWNybyh2YWx1
ZU9mKSBcCiAgICAgbWFjcm8od2luZG93KSBcCi0gICAgbWFjcm8od3JpdGFibGUpCisgICAgbWFj
cm8od3JpdGFibGUpIFwKKyAgICBtYWNybyhpdGVyYXRvcikgXAorICAgIG1hY3JvKGl0ZXJhdG9y
TmV4dCkgXAorICAgIG1hY3JvKHJlamVjdCkgXAorICAgIG1hY3JvKGZ1bGZpbGxtZW50SGFuZGxl
cikgXAorICAgIG1hY3JvKHJlamVjdGlvbkhhbmRsZXIpIFwKKyAgICBtYWNybyhkZWZlcnJlZCkg
XAorICAgIG1hY3JvKGNvdW50ZG93bkhvbGRlcikgXAogCiAjZGVmaW5lIEpTQ19DT01NT05fSURF
TlRJRklFUlNfRUFDSF9LRVlXT1JEKG1hY3JvKSBcCiAgICAgbWFjcm8oYnJlYWspIFwKQEAgLTIw
Myw3ICsyMTMsNyBAQAogICAgIG1hY3JvKHZvaWQpIFwKICAgICBtYWNybyh3aGlsZSkgXAogICAg
IG1hY3JvKHdpdGgpIFwKLSAgICBtYWNybyh5aWVsZCkKKyAgICBtYWNybyh5aWVsZCkgXAogCiAj
ZGVmaW5lIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUo
bWFjcm8pIFwKICAgICBtYWNybyhpdGVyYXRvcikgXApAQCAtMjE2LDcgKzIyNiwxMiBAQAogICAg
IG1hY3JvKGluZGV4KSBcCiAgICAgbWFjcm8odmFsdWVzKSBcCiAgICAgbWFjcm8oZGVmZXJyZWQp
IFwKLSAgICBtYWNybyhjb3VudGRvd25Ib2xkZXIpCisgICAgbWFjcm8oY291bnRkb3duSG9sZGVy
KSBcCisgICAgbWFjcm8oT2JqZWN0KSBcCisgICAgbWFjcm8oVHlwZUVycm9yKSBcCisgICAgbWFj
cm8odW5kZWZpbmVkS2V5d29yZCkgXAorICAgIG1hY3JvKGNhbGwpIFwKKyAgICBtYWNybyhhcHBs
eSkKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTI0MCwxMSArMjU1LDE1IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAKICNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJUWV9O
QU1FX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWU7CiAgICAgICAgIEpTQ19DT01N
T05fSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVf
UFJPUEVSVFlfTkFNRV9HTE9CQUwpCisgICAgICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJ
T05fTkFNRShKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFMKQogI3Vu
ZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwKIAotI2RlZmlu
ZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwobmFt
ZSkgY29uc3QgSWRlbnRpZmllciBuYW1lIyNQcml2YXRlTmFtZTsKKyNkZWZpbmUgSlNDX0lERU5U
SUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMKG5hbWUpIGNvbnN0IElk
ZW50aWZpZXIgbmFtZSMjUHJpdmF0ZU5hbWU7IGNvbnN0IHN0ZDo6cGFpcjxJZGVudGlmaWVyLCBJ
ZGVudGlmaWVyPiBtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpcjsKICAgICAgICAgSlNDX0NPTU1P
Tl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShKU0NfSURFTlRJRklFUl9E
RUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwpCiAjdW5kZWYgSlNDX0lERU5USUZJ
RVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMCisgICAgICAgIAorICAgICAg
ICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29u
c3Q7CisgICAgICAgIElkZW50aWZpZXIgZ2V0UHVibGljTmFtZShjb25zdCBJZGVudGlmaWVyJikg
Y29uc3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCAwNzU4NzVmYjIzMTZh
NTU1NzA1MGE2NjkwY2QwZjk4ODI0ODRmNWYzLi41YWY5MDg3NTRlNzQ3ZjhjYWUwY2QwNGFmOGQ0
OTE1MDA0NjhjMmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNp
bmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgotI2luY2x1ZGUg
IkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNp
bmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwCmlu
ZGV4IDU1MzM0YmUyZjk4MGE5OGY3ZmVhNDJhMDViZTBmMjBjMDE5ZmYwZGQuLmZhNTdjMDI2ODVl
NTNkNTI1Mjg4MDU3ZTIxMWQ5OGIxMDk4MWQ3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwCkBA
IC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJMTElu
dENvbW1vbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIENvbW1vblNsb3dQYXRocyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxw
ZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMu
Y3BwCmluZGV4IDA1ZTExZTBiODBhMzQzMGFlYWIyMmIwMjIyYTIxMmY0YThlMmM0OWIuLjM2NGNj
NzE2NjYwOGI1MDA3ZDQ3N2Q4NzM5MThhNWQ2NGIxNjg2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC04MSw2ICs4MSwx
MSBAQCBKU09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCiAKIEpTT2JqZWN0KiBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7CisgICAgCisgICAgaWYg
KGlkZW50LmltcGwoKS0+aXNFbXB0eVVuaXF1ZSgpKSB7CisgICAgICAgIFN0cmluZyBtZXNzYWdl
KG1ha2VTdHJpbmcoIkNhbid0IGZpbmQgcHJpdmF0ZSB2YXJpYWJsZTogQCIsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5nZXRQdWJsaWNOYW1lKGlkZW50KS5zdHJpbmcoKSkpOworICAgICAgICByZXR1
cm4gY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgbWVzc2FnZSk7CisgICAgfQogICAgIFN0cmlu
ZyBtZXNzYWdlKG1ha2VTdHJpbmcoIkNhbid0IGZpbmQgdmFyaWFibGU6ICIsIGlkZW50LnN0cmlu
ZygpKSk7CiAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIG1lc3NhZ2UpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IDE5ODk3
NmJiM2ZlNmU2ZTkxMTc5ODEyZDFjYWY5YjhiZjliZmQwYmIuLjhkNTkwZWYwZmZjMGViOTBhYzhm
OWE4MWQ5YmMyNTcyMWNkMzVjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmgKQEAgLTQ4NCw3ICs0ODQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFy
Q29kZSgpOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJl
dHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJp
Y3RNb2RlKCksIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkg
Y29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFs
KCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UpOyB9CiAKICAgICB1bnNpZ25lZCBudW1W
YXJpYWJsZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVz
KCk7IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3Vu
bGlua2VkRXZhbENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KQEAgLTU0MCw3
ICs1NDAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyQ29kZSgpOwogCi0gICAgRXhlY3V0
YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhu
ZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlKTsgfQor
ICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0
YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBm
YWxzZSwgZmFsc2UpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1
dGFibGU7CkBAIC02MjgsNyArNjI4LDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJu
IGJhc2VsaW5lQ29kZUJsb2NrRm9yKGtpbmQpOwogICAgIH0KLSAgICAgICAgCisKKyAgICBib29s
IGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUt
PmlzQnVpbHRpbkZ1bmN0aW9uKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lKCkgeyBy
ZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWUoKTsgfQogICAgIGNvbnN0IElkZW50aWZp
ZXImIGluZmVycmVkTmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pbmZlcnJl
ZE5hbWUoKTsgfQogICAgIEpTU3RyaW5nKiBuYW1lVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3Vu
bGlua2VkRXhlY3V0YWJsZS0+bmFtZVZhbHVlKCk7IH0KQEAgLTY3NSwxNCArNjc2LDYgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fYm9keUluY2x1ZGVzQnJhY2VzOwogfTsKIAotaW5saW5lIGJvb2wg
aXNIb3N0RnVuY3Rpb24oSlNWYWx1ZSB2YWx1ZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rp
b24pCi17Ci0gICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGdl
dEpTRnVuY3Rpb24odmFsdWUpKTsKLSAgICBpZiAoIWZ1bmN0aW9uIHx8ICFmdW5jdGlvbi0+aXNI
b3N0RnVuY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBmdW5jdGlv
bi0+bmF0aXZlRnVuY3Rpb24oKSA9PSBuYXRpdmVGdW5jdGlvbjsKLX0KLQogaW5saW5lIHZvaWQg
RXhlY3V0YWJsZUJhc2U6OmNsZWFyQ29kZVZpcnR1YWwoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFi
bGUpCiB7CiAgICAgc3dpdGNoIChleGVjdXRhYmxlLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50
eXBlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
UHJvdG90eXBlLmNwcAppbmRleCBjMWIwOGFmMmQ4MThkYWU1N2UxYjAwZmRhMTczYTgxNjEzNzUy
OWI1Li4xMjQ5MGM0MGYzMzQxN2VjYTkyMzg1MGEwZGM2NjJkYmJjZDQwZjMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBA
IC0yMiwxMiArMjIsMTMgQEAKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgogCiAjaW5j
bHVkZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJK
U0FycmF5LmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdCdWlsZGVy
LmgiCi0jaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMu
aCIKICNpbmNsdWRlICJMZXhlci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIApAQCAtMTA4
LDcgKzEwOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1
bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT5ob3N0VGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0cyhKU0Z1bmN0aW9u
OjppbmZvKCkpKSB7CiAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVu
Y3Rpb24qPih0aGlzVmFsdWUpOwotICAgICAgICBpZiAoZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9u
KCkpCisgICAgICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhl
eGVjLCAiZnVuY3Rpb24gIiwgZnVuY3Rpb24tPm5hbWUoZXhlYyksICIoKSB7XG4gICAgW25hdGl2
ZSBjb2RlXVxufSIpKTsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0g
ZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpOwogICAgICAgICBTdHJpbmcgc291cmNlU3RyaW5nID0g
ZXhlY3V0YWJsZS0+c291cmNlKCkudG9TdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCmluZGV4IDcyZWQxYzcxMjQwNjExNjhiMGFkZGQz
MTE2Zjc1NWExMTdiOGZiOTAuLmIzNzQ5NDMwOTllMjE1NWEzOTc3MTMzMTM0NzAyYzJhMjRhY2M4
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlv
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNw
cApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIEpTQWN0aXZhdGlvbjo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogCiBpbmxpbmUgYm9vbCBKU0FjdGl2YXRp
b246OnN5bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+
aW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlRW50
cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnVpZCgpKTsK
ICAgICBpZiAoZW50cnkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzIs
NyArNzIsNyBAQCBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlR2V0KFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdAogCiBpbmxpbmUgYm9vbCBKU0FjdGl2
YXRpb246OnN5bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0g
c3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAg
IFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVy
dHlOYW1lLnVpZCgpKTsKICAgICBpZiAoZW50cnkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApAQCAtODksNyArODksNyBAQCBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJv
bFRhYmxlUHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TgogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFw
OjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMpKTsKICAgICAKLSAgICBTeW1ib2xUYWJs
ZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJs
aWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5p
bmxpbmVHZXQocHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoZW50cnkuaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoZW50cnkuaXNSZWFkT25seSgpKSB7CkBAIC0x
MzYsNyArMTM2LDcgQEAgaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdp
dGhBdHRyaWJ1dGVzKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3AKICAgICBXcml0ZUJhcnJpZXJC
YXNlPFVua25vd24+KiByZWc7CiAgICAgewogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxv
Y2tlcihzeW1ib2xUYWJsZSgpLT5tX2xvY2spOwotICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjpp
dGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUoKS0+ZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5w
dWJsaWNOYW1lKCkpOworICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0g
c3ltYm9sVGFibGUoKS0+ZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgICAg
IGlmIChpdGVyID09IHN5bWJvbFRhYmxlKCktPmVuZChsb2NrZXIpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5JiBlbnRyeSA9IGl0ZXItPnZhbHVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJ
dGVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0
ZXJhdG9yLmNwcAppbmRleCAyZmNmODgxNWMwNTY4MDU4MTJhNzk5MWE1ZmYwNjNkNjg3Mzk3MTY0
Li45YTkyNTgzYWEwZWM5MGRiYjMyOGVjZDUwZGMzMTM5YWVmMDI3M2I1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcApA
QCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkpTQXJndW1lbnRzSXRlcmF0b3IuaCIKIAogI2lu
Y2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAKIG5h
bWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3Bw
CmluZGV4IDkwMDdiNWY3ZDNmMTAzYjFkMjFiMWEzNjVhMjZjMjE1YzMyYjRkMjguLmJhMGEyZDM4
ZTljNTNlMTU5MzdkNDZhODk1MWE4YzhjNDUwNzkyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRXhlY3V0
YWJsZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkluZGV4aW5nSGVh
ZGVySW5saW5lcy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIlBy
b3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSAiUmVqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL0FW
TFRyZWUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAK
aW5kZXggY2NhNjg4OGJmOThhMDI4NjQ2Y2EzZGRkZjM3NjI3Y2UwZTdkOTMwMi4uMzM5YTdhYjdm
NTk1MTVlOTZhZmI3ZWM0Yjg3NDFlN2FhOGUxNjZmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAgLTMyLDcgKzMyLDkgQEAKICNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU05v
dEFuT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTnVt
YmVyT2JqZWN0LmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKaW5kZXggZjdjODQ0NjQ1MDkyYjI1
MDgwNWU2ZThkNDgzMmM5OThiZGI4OWI1NC4uZDc5NWRkNTZhOTdkZGI1OTdjMDkwZmMyZTBiN2Yz
MDhlMzNlYmNhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElu
bGluZXMuaApAQCAtMjcsOCArMjcsMTAgQEAKICNkZWZpbmUgSlNDZWxsSW5saW5lc19oCiAKICNp
bmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2lu
Y2x1ZGUgIkRlZmVyR0MuaCIKICNpbmNsdWRlICJIYW5kbGUuaCIKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5jcHAKaW5kZXggMjQxOTY0NjEwYmI0NDI3YjE4NjM3MzM0NmUyNGY1YTgyZDBj
ZGNjNC4uYWNlNmMxNDdlNDk3ZmVlMjAyOTJmYjU1Mzk3NjBkNWQ2OTgyOWNlOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTM0LDcgKzM0LDgg
QEAKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRl
ci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKLSNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIg
CisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTm90QW5PYmpl
Y3QuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtMTA5LDYgKzExMCwxNCBAQCB2b2lk
IEpTRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgTmF0aXZlRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSwgaW50IGxlbmd0aAogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51
bSk7CiB9CiAKK0pTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihW
TSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKK3sKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNyZWF0ZSh2bSwgZXhl
Y3V0YWJsZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBmdW5jdGlvbi0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZygmdm0sIGV4ZWN1dGFibGUtPm5hbWUoKS5zdHJp
bmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBmdW5jdGlvbi0+
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKGV4ZWN1dGFi
bGUtPnBhcmFtZXRlckNvdW50KCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7
CisgICAgcmV0dXJuIGZ1bmN0aW9uOworfQorCiBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSogSlNG
dW5jdGlvbjo6Y3JlYXRlQWxsb2NhdGlvblByb2ZpbGUoRXhlY1N0YXRlKiBleGVjLCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHkpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTE0Miw3ICsx
NTEsNyBAQCBjb25zdCBTdHJpbmcgSlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKEV4
ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIGV4cGxpY2l0TmFtZTsKICAgICAKICAgICBj
b25zdCBTdHJpbmcgYWN0dWFsTmFtZSA9IG5hbWUoZXhlYyk7Ci0gICAgaWYgKCFhY3R1YWxOYW1l
LmlzRW1wdHkoKSB8fCBpc0hvc3RGdW5jdGlvbigpKQorICAgIGlmICghYWN0dWFsTmFtZS5pc0Vt
cHR5KCkgfHwgaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIGFjdHVh
bE5hbWU7CiAgICAgCiAgICAgcmV0dXJuIGpzRXhlY3V0YWJsZSgpLT5pbmZlcnJlZE5hbWUoKS5z
dHJpbmcoKTsKQEAgLTE1MCwxMCArMTU5LDIwIEBAIGNvbnN0IFN0cmluZyBKU0Z1bmN0aW9uOjpj
YWxjdWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQogCiBjb25zdCBTb3VyY2VDb2Rl
KiBKU0Z1bmN0aW9uOjpzb3VyY2VDb2RlKCkgY29uc3QKIHsKLSAgICBpZiAoaXNIb3N0RnVuY3Rp
b24oKSkKKyAgICBpZiAoaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgcmV0dXJuICZqc0V4ZWN1dGFibGUoKS0+c291cmNlKCk7CiB9CisgICAgCitib29s
IEpTRnVuY3Rpb246OmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gaXNIb3N0RnVuY3Rpb24oKSB8fCBpc0J1aWx0aW5GdW5jdGlvbigpOworfQorCitib29sIEpT
RnVuY3Rpb246OmlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWlzSG9z
dEZ1bmN0aW9uKCkgJiYganNFeGVjdXRhYmxlKCktPmlzQnVpbHRpbkZ1bmN0aW9uKCk7Cit9CiAK
IHZvaWQgSlNGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogewpAQCAtMjc3LDcgKzI5Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTRnVuY3Rp
b246OmNhbGxlckdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHNsb3RCYXNl
CiAgICAgaWYgKCFjYWxsZXIuaXNPYmplY3QoKSB8fCAhYXNPYmplY3QoY2FsbGVyKS0+aW5oZXJp
dHMoSlNGdW5jdGlvbjo6aW5mbygpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
YWxsZXIpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihj
YWxsZXIpOwotICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSB8fCAhZnVuY3Rpb24t
PmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkKKyAgICBpZiAoZnVuY3Rpb24tPmlzSG9z
dE9yQnVpbHRpbkZ1bmN0aW9uKCkgfHwgIWZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJp
Y3RNb2RlKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbGVyKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
RnVuY3Rpb24uY2FsbGVyIHVzZWQgdG8gcmV0cmlldmUgc3RyaWN0IGNhbGxlciIpKSk7CiB9CkBA
IC0yOTksNyArMzE4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNGdW5jdGlvbjo6bmFtZUdldHRlcihF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBzbG90QmFzZSwgRW5jb2QKIGJvb2wgSlNGdW5jdGlv
bjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpT
RnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdCk7Ci0gICAg
aWYgKHRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgaWYgKHRoaXNPYmplY3QtPmlz
SG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIAogICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSkgewpAQCAt
MzYxLDcgKzM4MCw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiB2b2lkIEpTRnVuY3Rpb246
OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUg
bW9kZSkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24q
PihvYmplY3QpOwotICAgIGlmICghdGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSAmJiAobW9k
ZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgeworICAgIGlmICghdGhpc09iamVjdC0+
aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSAmJiAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKSkgewogICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90eXBlIGhhcyBiZWVuIHJlaWZp
ZWQuCiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QpOwogICAgICAgICB0aGlz
T2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhl
YywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgc2xvdCk7CkBAIC0zNzcsNyArMzk2
LDcgQEAgdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLAogdm9pZCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKLSAgICBpZiAodGhpc09iamVjdC0+
aXNIb3N0RnVuY3Rpb24oKSkgeworICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5G
dW5jdGlvbigpKSB7CiAgICAgICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQyNSw3ICs0
NDQsNyBAQCBib29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcAogYm9vbCBKU0Z1bmN0aW9uOjpkZWZpbmVP
d25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9v
bCB0aHJvd0V4Y2VwdGlvbikKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RGdW5jdGlv
bigpKQorICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQogICAg
ICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKTsKIAogICAgIGlmIChwcm9wZXJ0eU5h
bWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDdjZDE0YjhjMmQ4MDBmNjFiZGMxMmVk
ZDJkZjA0ZDM1ZmEwNjE5YjYuLjliNThiNzQ3Y2UxZjNmMzMyZDBmNzYwYTU3ODViN2FjMTllYmU5
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTY4
LDYgKzY4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb247
CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGVC
dWlsdGluRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0dsb2JhbE9iamVjdCop
OworICAgICAgICAKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAg
ICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBuYW1lKEV4ZWNTdGF0ZSopOwpA
QCAtOTcsNyArOTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhlY3V0YWJsZUJhc2Uq
IGV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtX2V4ZWN1dGFibGUuZ2V0KCk7IH0KIAogICAg
ICAgICAvLyBUbyBjYWxsIGVpdGhlciBvZiB0aGVzZSBtZXRob2RzIGluY2x1ZGUgRXhlY3V0YWJs
ZS5oCi0gICAgICAgIGlubGluZSBib29sIGlzSG9zdEZ1bmN0aW9uKCkgY29uc3Q7CisgICAgICAg
IGJvb2wgaXNIb3N0RnVuY3Rpb24oKSBjb25zdDsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxl
KiBqc0V4ZWN1dGFibGUoKSBjb25zdDsKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBjb25z
dCBTb3VyY2VDb2RlKiBzb3VyY2VDb2RlKCkgY29uc3Q7CkBAIC0xNDUsNiArMTQ3LDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1fYWxsb2NhdGlvblByb2ZpbGVXYXRj
aHBvaW50OwogICAgICAgICB9CiAKKyAgICAgICAgYm9vbCBpc0hvc3RPckJ1aWx0aW5GdW5jdGlv
bigpIGNvbnN0OworICAgICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25z
dDsKKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW1wbGVtZW50c0hhc0lu
c3RhbmNlIHwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFt
ZXMgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKQEAgLTE2OSw4ICsxNzUsNiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwogICAgICAgICAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBp
c0hvc3RGdW5jdGlvbk5vbklubGluZSgpIGNvbnN0OwotCiAgICAgICAgIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBhcmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
Y2FsbGVyR2V0dGVyKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwg
UHJvcGVydHlOYW1lKTsKICAgICAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGxlbmd0aEdldHRl
cihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGlu
ZXMuaAppbmRleCBmZTRlMTE0YWRiYzIzNjc0ZDNiNjBlNjFmNzFjYjdhMDZjOTQ3ODRkLi42OWYw
ZDRmMzk2ZWY5YzJkYTllMGJmNjA4YzI2NDQxNzE3OTliYTUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKQEAgLTUzLDE2ICs1Mywy
NCBAQCBpbmxpbmUgYm9vbCBKU0Z1bmN0aW9uOjppc0hvc3RGdW5jdGlvbigpIGNvbnN0CiAKIGlu
bGluZSBOYXRpdmVGdW5jdGlvbiBKU0Z1bmN0aW9uOjpuYXRpdmVGdW5jdGlvbigpCiB7Ci0gICAg
QVNTRVJUKGlzSG9zdEZ1bmN0aW9uKCkpOworICAgIEFTU0VSVChpc0hvc3RGdW5jdGlvbk5vbklu
bGluZSgpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TmF0aXZlRXhlY3V0YWJsZSo+KG1fZXhl
Y3V0YWJsZS5nZXQoKSktPmZ1bmN0aW9uKCk7CiB9CiAKIGlubGluZSBOYXRpdmVGdW5jdGlvbiBK
U0Z1bmN0aW9uOjpuYXRpdmVDb25zdHJ1Y3RvcigpCiB7Ci0gICAgQVNTRVJUKGlzSG9zdEZ1bmN0
aW9uKCkpOworICAgIEFTU0VSVChpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpKTsKICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8TmF0aXZlRXhlY3V0YWJsZSo+KG1fZXhlY3V0YWJsZS5nZXQoKSktPmNv
bnN0cnVjdG9yKCk7CiB9CiAKK2lubGluZSBib29sIGlzSG9zdEZ1bmN0aW9uKEpTVmFsdWUgdmFs
dWUsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uKQoreworICAgIEpTRnVuY3Rpb24qIGZ1
bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihnZXRKU0Z1bmN0aW9uKHZhbHVlKSk7CisgICAg
aWYgKCFmdW5jdGlvbiB8fCAhZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm4gZnVuY3Rpb24tPm5hdGl2ZUZ1bmN0aW9uKCkgPT0gbmF0
aXZlRnVuY3Rpb247Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gSlNGdW5j
dGlvbklubGluZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxp
bmVzLmgKaW5kZXggMmRkYzI5ZjcxODk3YmI1MWQzOTBiMDZiMjVhNzM4MzM4NzRiYTBjMS4uZWRk
MzQ0OWNlNDdiMTczNWU4ZTVkYmIwNWYzMThlM2Q1NWYzYmU2MiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rv
cklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZu
ZGVmIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzX2gKICNkZWZpbmUg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXNfaAogCisjaW5jbHVkZSAi
Q29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkpTQXJy
YXlCdWZmZXIuaCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9y
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IDZkYjg2Mjc0YzNiODc0YWFhZGU1
MTUxODk4MjY3MjZmYjEzNmMxNzMuLmYyNGVhNzMwM2RmOTY5ZGJkMmRjYTUyYzg2ZDExYzc4YzAw
ZGI5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0yNyw2ICsyNyw3IEBACiAj
ZGVmaW5lIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lc19oCiAKICNpbmNsdWRlICJBcnJh
eUJ1ZmZlclZpZXcuaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUg
IkRlZmVyR0MuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBl
cnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmgKaW5kZXgg
NDU5OTk3YTQ2NGI5MTE5NDc3YjFiZTg0ZTM2YzRlMjk2NmFjZWY4NS4uOGU1ZmY4Mjc5MWU2ZmY4
ZDRlYjljMzczNjkxZTQzM2ViN2QxNmFlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGVJbmxpbmVzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzX2gKICNkZWZpbmUgSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdQcm90b3R5cGVJbmxpbmVzX2gKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgi
CiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDJjMjc0YzFhN2Q0ODFjMDdkZjBkMmJlYjNiMjkzMWEz
OTA3YTVlNjYuLjA2ZTU0Yzg0ZTc3YjkwMzJiYWExZDJkZjQ3YTFjNzJlODBiN2RlYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAg
LTM0Niw3ICszNDYsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3Rv
dHlwZSkKIAogICAgIC8vIENvbnN0cnVjdG9ycwogCi0gICAgSlNDZWxsKiBvYmplY3RDb25zdHJ1
Y3RvciA9IE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIE9iamVjdENvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX29i
amVjdFByb3RvdHlwZS5nZXQoKSk7CisgICAgT2JqZWN0Q29uc3RydWN0b3IqIG9iamVjdENvbnN0
cnVjdG9yID0gT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgT2JqZWN0Q29uc3RydWN0b3I6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1f
b2JqZWN0UHJvdG90eXBlLmdldCgpKTsKKyAgICBtX29iamVjdENvbnN0cnVjdG9yLnNldCh2bSwg
dGhpcywgb2JqZWN0Q29uc3RydWN0b3IpOwogICAgIEpTQ2VsbCogZnVuY3Rpb25Db25zdHJ1Y3Rv
ciA9IEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9m
dW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CiAgICAgSlNDZWxsKiBhcnJheUNvbnN0cnVjdG9yID0g
QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2FycmF5UHJvdG90
eXBlLmdldCgpKTsKIApAQCAtNDMyLDcgKzQzMywxMCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojpy
ZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKICAgICBHbG9iYWxQcm9wZXJ0eUluZm8gc3RhdGljR2xv
YmFsc1tdID0gewogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+
TmFOLCBqc05hTigpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5JbmZpbml0eSwganNOdW1iZXIo
c3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSwgRG9udEVudW0gfCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCwganNVbmRlZmluZWQoKSwgRG9udEVudW0gfCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLCBqc1VuZGVmaW5lZCgpLCBEb250RW51bSB8IERvbnRE
ZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkUHJpdmF0ZU5hbWUsIGpzVW5kZWZpbmVkKCksIERvbnRF
bnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPk9iamVjdFByaXZhdGVOYW1lLCBvYmplY3RDb25zdHJ1Y3Rvciwg
RG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8odm0ucHJvcGVydHlOYW1lcy0+VHlwZUVycm9yUHJpdmF0ZU5hbWUsIG1fdHlwZUVycm9y
Q29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KQogICAg
IH07CiAgICAgYWRkU3RhdGljR2xvYmFscyhzdGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVOR1RI
KHN0YXRpY0dsb2JhbHMpKTsKICAgICAKQEAgLTYwOCw2ICs2MTIsNyBAQCB2b2lkIEpTR2xvYmFs
T2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3ludGF4RXJyb3JDb25zdHJ1Y3Rv
cik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdHlwZUVycm9yQ29uc3RydWN0
b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX1VSSUVycm9yQ29uc3RydWN0
b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX29iamVjdENvbnN0cnVjdG9y
KTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcm9taXNlQ29uc3RydWN0b3Ip
OwogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZXZhbEZ1bmN0aW9uKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGIw
Y2FkM2RjNTQ3MGY3YzdhMGU1NzBiZGNkMmRmZmE4OTVlMmFhMGMuLjNhNjE2YzZmMDVlZGYxZDI5
NWFmODQ0MWFhNjY1MDBmYjkyYTRhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNjcsNiArNjcsNyBAQCBjbGFzcyBKU1N0YWNrOwog
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgTWljcm90YXNrOwogY2xhc3MgTmF0
aXZlRXJyb3JDb25zdHJ1Y3RvcjsKK2NsYXNzIE9iamVjdENvbnN0cnVjdG9yOwogY2xhc3MgUHJv
Z3JhbUNvZGVCbG9jazsKIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwogY2xhc3MgUmVnRXhwQ29u
c3RydWN0b3I7CkBAIC0xNTgsNiArMTU5LDcgQEAgcHJvdGVjdGVkOgogICAgIFdyaXRlQmFycmll
cjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX3R5cGVFcnJvckNvbnN0cnVjdG9yOwogICAgIFdy
aXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX1VSSUVycm9yQ29uc3RydWN0b3I7
CiAgICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlzZUNvbnN0cnVjdG9yPiBtX3Byb21pc2VDb25zdHJ1
Y3RvcjsKKyAgICBXcml0ZUJhcnJpZXI8T2JqZWN0Q29uc3RydWN0b3I+IG1fb2JqZWN0Q29uc3Ry
dWN0b3I7CiAKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9ldmFsRnVuY3Rpb247CiAg
ICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fY2FsbEZ1bmN0aW9uOwpAQCAtMzMwLDYgKzMz
Miw3IEBAIHB1YmxpYzoKICAgICBSZWdFeHBDb25zdHJ1Y3RvciogcmVnRXhwQ29uc3RydWN0b3Io
KSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cENvbnN0cnVjdG9yLmdldCgpOyB9CiAKICAgICBFcnJv
ckNvbnN0cnVjdG9yKiBlcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvckNv
bnN0cnVjdG9yLmdldCgpOyB9CisgICAgT2JqZWN0Q29uc3RydWN0b3IqIG9iamVjdENvbnN0cnVj
dG9yKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgIE5h
dGl2ZUVycm9yQ29uc3RydWN0b3IqIGV2YWxFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1
cm4gbV9ldmFsRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgIE5hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IqIHJhbmdlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2VFcnJv
ckNvbnN0cnVjdG9yLmdldCgpOyB9CiAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogcmVmZXJl
bmNlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlRXJyb3JDb25z
dHJ1Y3Rvci5nZXQoKTsgfQpAQCAtNTgxLDcgKzU4NCw3IEBAIGlubGluZSBib29sIEpTR2xvYmFs
T2JqZWN0OjpoYXNPd25Qcm9wZXJ0eUZvcldyaXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lCiAKIGlubGluZSBib29sIEpTR2xvYmFsT2JqZWN0OjpzeW1ib2xUYWJsZUhhc1Byb3BlcnR5
KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRy
eSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsK
KyAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHBy
b3BlcnR5TmFtZS51aWQoKSk7CiAgICAgcmV0dXJuICFlbnRyeS5pc051bGwoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IDJiNjdhMWQ5ZWVk
ODRlOTk1NmY4YmI5NjgzODRjODRjYWVhNTNjZmYuLjJlYTJjMjRlNmVhYjRjZDBkN2ZmZWQ2NjVl
ZjRhZTQxYWYwNzUwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGdldENsYXNzUHJvcGVy
dHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENsYXNzSW5mbyogY2xhc3MKICAgICAgICAg
aW50IGhhc2hTaXplTWFzayA9IHRhYmxlLT5jb21wYWN0U2l6ZSAtIDE7CiAgICAgICAgIGNvbnN0
IEhhc2hFbnRyeSogZW50cnkgPSB0YWJsZS0+dGFibGU7CiAgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDw9IGhhc2hTaXplTWFzazsgKytpLCArK2VudHJ5KSB7Ci0gICAgICAgICAgICBpZiAoZW50
cnktPmtleSgpICYmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwgKG1vZGUg
PT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpICYmICEoKGVudHJ5LT5hdHRyaWJ1dGVzKCkg
JiBGdW5jdGlvbikgJiYgZGlkUmVpZnkpKQorICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkoKSAm
JiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IChtb2RlID09IEluY2x1ZGVE
b250RW51bVByb3BlcnRpZXMpKSAmJiAhKChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9y
RnVuY3Rpb24pICYmIGRpZFJlaWZ5KSkKICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFk
ZChlbnRyeS0+a2V5KCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTYxOCw3ICsxNjE4LDcgQEAg
dm9pZCBKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUoRXhlY1N0YXRlKiBl
eGVjKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRo
aXMpOwogICAgICAgICBmb3IgKEhhc2hUYWJsZTo6Q29uc3RJdGVyYXRvciBpdGVyID0gaGFzaFRh
YmxlLT5iZWdpbih2bSk7IGl0ZXIgIT0gaGFzaFRhYmxlLT5lbmQodm0pOyArK2l0ZXIpIHsKLSAg
ICAgICAgICAgIGlmIChpdGVyLT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikKKyAgICAgICAgICAg
IGlmIChpdGVyLT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikKICAgICAgICAgICAg
ICAgICBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygp
LCAqaXRlciwgdGhpcywgSWRlbnRpZmllcigmdm0sIGl0ZXItPmtleSgpKSwgc2xvdCk7CiAgICAg
ICAgIH0KICAgICB9CkBAIC0yMjM2LDYgKzIyMzYsMTYgQEAgdm9pZCBKU09iamVjdDo6cHV0RGly
ZWN0TmF0aXZlRnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b24KICAgICBwdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgZnVuY3Rpb24sIGF0dHJpYnV0ZXMp
OwogfQogCit2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RCdWlsdGluRnVuY3Rpb24oVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5
TmFtZSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMpCit7CisgICAgU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNO
YW1lKCk7CisgICAgaWYgKCFuYW1lKQorICAgICAgICBuYW1lID0gdm0ucHJvcGVydHlOYW1lcy0+
YW5vbnltb3VzLmltcGwoKTsKKyAgICBBU1NFUlQobmFtZSk7CisgICAgSlNGdW5jdGlvbiogZnVu
Y3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHN0YXRpY19jYXN0
PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIGdsb2JhbE9iamVjdCk7
CisgICAgcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsK
K30KKwogdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5
TmFtZSYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rp
b24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpCiB7CiAgICAgU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCAwMmIxMzdiMzUw
YzJmYTgzMjViZDNiOTY0NzExMmFiZTg3NmYzODNmLi5kZGU1OTdlZmZhZWMwZjFiOGQ0NGMyOTEx
OTUwMzAxZjA2MDA3ZTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJCdXR0ZXJmbHkuaCIKICNpbmNsdWRlICJD
YWxsRnJhbWUuaCIKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKLSNpbmNsdWRlICJDb21tb25JZGVu
dGlmaWVycy5oIgogI2luY2x1ZGUgIkNvcHlXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlICJEZWZl
ckdDLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgpAQCAtNTgxLDYgKzU4MCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHB1dERpcmVjdFVuZGVmaW5lZChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpIHsgbG9jYXRp
b25Gb3JPZmZzZXQob2Zmc2V0KS0+c2V0VW5kZWZpbmVkKCk7IH0KIAogICAgIHZvaWQgcHV0RGly
ZWN0TmF0aXZlRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFt
ZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICB2b2lkIHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbihW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgRnVuY3Rpb25FeGVjdXRh
YmxlKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgdm9pZCBwdXREaXJlY3ROYXRpdmVGdW5j
dGlvbldpdGhvdXRUcmFuc2l0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0
eU5hbWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNp
YywgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
Ym9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5j
cHAKaW5kZXggNDAyNjE5NjMzZmEwNmZkMjU0YjNmMmE3YThjYzcxZTgwN2FhZjkxMS4uMTdkMmFi
NjVhODhmZmIxM2ZhOWE2YzhmNTgzY2E4NDRhZjgzMjI0MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcApAQCAtMzUs
NiArMzUsNyBAQAogI2luY2x1ZGUgIkpTUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiSlNQ
cm9taXNlRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlUHJvdG90eXBlLmgiCisjaW5j
bHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVkZSAi
TnVtYmVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcAppbmRleCA2OGE4YmQ4N2QzOGFkYmJiOWRkMmFjOWVjNGI0OWQ1ZWY0NTQ5ZDU2Li4yMzdj
NDJiYjBkYTBmMTY2NzZlYjExYWRlODE4MGE3YjA2ZDk4ZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcApA
QCAtMjksNyArMjksOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaCIKIAorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAppbmRl
eCBmNDM2MmZmMzU0ZWU2YTUwMjIxYmI3MzFkMWEyNjExZTZkZDYxYmMwLi5kMDczNzE5ZGUxNjBk
MmYyOTIxMTBhNTk2YTEwNWUyZmEyMTE1ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCkBAIC0zMSw3ICszMSw2
IEBACiAKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCi0jaW5j
bHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5j
bHVkZSA8bWVtb3J5PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaApp
bmRleCAyYjFjZGRkYzU4NDFkNjBkMTU3YTJlNjFmNzAyYjBlZTVmYTFkNjc2Li5lMzkzNDE2MGFl
YTkyNmVmMTU5MzJmODc5MGUyNGM1MmFmMDJkMzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmgKQEAgLTI0LDcgKzI0LDYgQEAKICNkZWZpbmUgSlNTdHJpbmdfaAog
CiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIK
ICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlEZXNjcmlwdG9yLmgi
CiAjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCkBAIC00NzIsMzMgKzQ3MSw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIGlubGluZSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoJmV4
ZWMtPnZtKCksIHMpOyB9CiAgICAgaW5saW5lIEpTU3RyaW5nKiBqc093bmVkU3RyaW5nKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBqc093bmVkU3RyaW5nKCZleGVj
LT52bSgpLCBzKTsgfQogCi0gICAgQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJp
bmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi0gICAgewotICAgICAgICBpZiAocHJvcGVydHlOYW1lID09
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKLSAgICAgICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpcywgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGpzTnVtYmVyKG1fbGVu
Z3RoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHVu
c2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOwotICAgICAgICBpZiAoaSA8IG1fbGVu
Z3RoKSB7Ci0gICAgICAgICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgp
OyAvLyBObyBuZWVkIGZvciBhbiBleHBsaWNpdCBjaGVjaywgdGhlIGFib3ZlIHRlc3Qgd291bGQg
YWx3YXlzIGZhaWwhCi0gICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnREZWxldGUg
fCBSZWFkT25seSwgZ2V0SW5kZXgoZXhlYywgaSkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgICAgICAgICAg
Ci0gICAgQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3Qo
RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKLSAgICB7Ci0gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPCBtX2xlbmd0aCkgewotICAgICAg
ICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4
KGV4ZWMsIHByb3BlcnR5TmFtZSkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCiAgICAgaW5saW5lIGJvb2wgaXNK
U1N0cmluZyhKU1ZhbHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxsKCkgJiYgdi5hc0NlbGwoKS0+Y2xh
c3NJbmZvKCkgPT0gSlNTdHJpbmc6OmluZm8oKTsgfQogCiAgICAgLy8gLS0tIEpTVmFsdWUgaW5s
aW5lcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC01MjgsMzIgKzUwMCw2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gdG9XVEZTdHJpbmdTbG93Q2FzZShleGVjKTsK
ICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIFN0cmluZyBpbmxpbmVKU1ZhbHVlTm90U3RyaW5n
dG9TdHJpbmcoY29uc3QgSlNWYWx1ZSYgdmFsdWUsIEV4ZWNTdGF0ZSogZXhlYykKLSAgICB7Ci0g
ICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkp
Ci0gICAgICAgICAgICByZXR1cm4gdm0ubnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVlLmFzSW50MzIo
KSk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc0RvdWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuIHZt
Lm51bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZS5hc0RvdWJsZSgpKTsKLSAgICAgICAgaWYgKHZhbHVl
LmlzVHJ1ZSgpKQotICAgICAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPnRydWVLZXl3
b3JkLnN0cmluZygpOwotICAgICAgICBpZiAodmFsdWUuaXNGYWxzZSgpKQotICAgICAgICAgICAg
cmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPmZhbHNlS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAg
aWYgKHZhbHVlLmlzTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMt
Pm51bGxLZXl3b3JkLnN0cmluZygpOwotICAgICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWQoKSkK
LSAgICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLnN0
cmluZygpOwotICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
OwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgU3RyaW5nIEpTVmFsdWU6OnRvV1RGU3RyaW5n
SW5saW5lKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChpc1N0cmlu
ZygpKQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTU3RyaW5nKj4oYXNDZWxsKCkp
LT52YWx1ZShleGVjKTsKLQotICAgICAgICByZXR1cm4gaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3Rv
U3RyaW5nKCp0aGlzLCBleGVjKTsKLSAgICB9Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5k
aWYgLy8gSlNTdHJpbmdfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZ0lubGluZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzhjMDVmYzgwZDg4ZTg1MzdjOWQyYTVlYWI5ZmYw
YmE5YjYwYTc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmdJbmxpbmVzLmgKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNTdHJpbmdJbmxpbmVz
X2gKKyNkZWZpbmUgSlNTdHJpbmdJbmxpbmVzX2gKKworI2luY2x1ZGUgIkNvbW1vbklkZW50aWZp
ZXJzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU1N0cmlu
Zy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpn
ZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhp
cywgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGpzTnVtYmVyKG1fbGVuZ3RoKSk7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBpID0gcHJv
cGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaSA8IG1fbGVuZ3RoKSB7CisgICAgICAgIEFT
U0VSVChpICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCk7IC8vIE5vIG5lZWQgZm9yIGFuIGV4
cGxpY2l0IGNoZWNrLCB0aGUgYWJvdmUgdGVzdCB3b3VsZCBhbHdheXMgZmFpbCEKKyAgICAgICAg
c2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMs
IGkpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHJldHVybiBmYWxz
ZTsKK30KKworQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNs
b3QoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCkKK3sKKyAgICBpZiAocHJvcGVydHlOYW1lIDwgbV9sZW5ndGgpIHsKKyAgICAgICAgc2xv
dC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIHBy
b3BlcnR5TmFtZSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgcmV0
dXJuIGZhbHNlOworfQorCitBTFdBWVNfSU5MSU5FIFN0cmluZyBpbmxpbmVKU1ZhbHVlTm90U3Ry
aW5ndG9TdHJpbmcoY29uc3QgSlNWYWx1ZSYgdmFsdWUsIEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpCisgICAgICAg
IHJldHVybiB2bS5udW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNJbnQzMigpKTsKKyAgICBpZiAo
dmFsdWUuaXNEb3VibGUoKSkKKyAgICAgICAgcmV0dXJuIHZtLm51bWVyaWNTdHJpbmdzLmFkZCh2
YWx1ZS5hc0RvdWJsZSgpKTsKKyAgICBpZiAodmFsdWUuaXNUcnVlKCkpCisgICAgICAgIHJldHVy
biB2bS5wcm9wZXJ0eU5hbWVzLT50cnVlS2V5d29yZC5zdHJpbmcoKTsKKyAgICBpZiAodmFsdWUu
aXNGYWxzZSgpKQorICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+ZmFsc2VLZXl3b3Jk
LnN0cmluZygpOworICAgIGlmICh2YWx1ZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHZtLnBy
b3BlcnR5TmFtZXMtPm51bGxLZXl3b3JkLnN0cmluZygpOworICAgIGlmICh2YWx1ZS5pc1VuZGVm
aW5lZCgpKQorICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29y
ZC5zdHJpbmcoKTsKKyAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
OworfQorICAgIAorQUxXQVlTX0lOTElORSBTdHJpbmcgSlNWYWx1ZTo6dG9XVEZTdHJpbmdJbmxp
bmUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIGlmIChpc1N0cmluZygpKQorICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNTdHJpbmcqPihhc0NlbGwoKSktPnZhbHVlKGV4ZWMpOwor
ICAgIAorICAgIHJldHVybiBpbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcoKnRoaXMsIGV4
ZWMpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAppbmRleCAyYWMyNTI0YzVkZmRhM2QxMjI0
OWQ3NzkwYWRjMzEyOWUzYzBlODcxLi5mYmM4Yjg5NWVhZTZhZjc4ODgzOWJlYjVlODNkN2I2Yjk3
OTI4ZmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJv
bFRhYmxlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5
bWJvbFRhYmxlT2JqZWN0LmNwcApAQCAtNjQsNiArNjQsOCBAQCB2b2lkIEpTU3ltYm9sVGFibGVP
YmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdAogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcih0aGlzT2JqZWN0LT5zeW1i
b2xUYWJsZSgpLT5tX2xvY2spOwogICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBl
bmQgPSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5lbmQobG9ja2VyKTsKICAgICAgICAgZm9y
IChTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxl
KCktPmJlZ2luKGxvY2tlcik7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgaWYgKGl0
LT5rZXktPmlzRW1wdHlVbmlxdWUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgIGlmICghKGl0LT52YWx1ZS5nZXRBdHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwgKG1v
ZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpCiAgICAgICAgICAgICAgICAgcHJvcGVy
dHlOYW1lcy5hZGQoSWRlbnRpZmllcihleGVjLCBpdC0+a2V5LmdldCgpKSk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVP
YmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmpl
Y3QuaAppbmRleCBiNWIyMGE4NDViNmFiNjQ0MjRiMzdlMzFiMjc3NGVmOTA1MzUzZjdmLi5kMDNi
MjQ1MTFjMmRlMTk1OWZiNWY1NmQ2NDljNjRkMGVmZTA2ODU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCkBAIC03Miw3ICs3
Miw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogewogICAgIFN5bWJvbFRhYmxlJiBz
eW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgQ29uY3VycmVudEpJVExv
Y2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICBTeW1ib2xUYWJsZTo6TWFwOjpp
dGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJs
aWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xU
YWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoaXRlciA9PSBz
eW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFN5bWJv
bFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1ZTsKQEAgLTg3LDcgKzg3LDcgQEAg
aW5saW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiB7CiAgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRh
YmxlID0gKm9iamVjdC0+c3ltYm9sVGFibGUoKTsKICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxv
Y2tlcihzeW1ib2xUYWJsZS5tX2xvY2spOwotICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9y
IGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUo
KSk7CisgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZp
bmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChpdGVyID09IHN5bWJvbFRh
YmxlLmVuZChsb2NrZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgU3ltYm9sVGFibGVF
bnRyeTo6RmFzdCBlbnRyeSA9IGl0ZXItPnZhbHVlOwpAQCAtMTA0LDcgKzEwNCw3IEBAIGlubGlu
ZSBib29sIHN5bWJvbFRhYmxlR2V0KAogewogICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9
ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIo
c3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVy
ID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwor
ICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxv
Y2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5l
bmQobG9ja2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFN5bWJvbFRhYmxlRW50cnk6
OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1ZTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBpbmxpbmUgYm9v
bCBzeW1ib2xUYWJsZVB1dCgKICAgICB7CiAgICAgICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJs
ZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKSVRM
b2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jaywgZXhlYy0+dm0oKS5oZWFwKTsKLSAgICAg
ICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9j
a2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICAgICAgU3ltYm9sVGFibGU6Ok1h
cDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUu
dWlkKCkpOwogICAgICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYm9vbCB3YXNGYXQ7CkBAIC0xNTksNyAr
MTU5LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcygKICAgICB7
CiAgICAgICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxl
KCk7CiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9j
ayk7Ci0gICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJs
ZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgICAgIFN5bWJv
bFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJv
cGVydHlOYW1lLnVpZCgpKTsKICAgICAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxv
Y2tlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50
cnkmIGVudHJ5ID0gaXRlci0+dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Mb29rdXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9v
a3VwLmNwcAppbmRleCBhODA2ZGQwNTJhMGNiZWU0Y2FjMmNhYTZlMDhjNjcxNjAwNWMyNzBjLi5h
OTc2NTIwMWI5ZjUxODY0MTQyM2RkZTBmZTBlMmU1MWE4Y2U3M2JjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBIYXNoVGFi
bGU6OmRlbGV0ZVRhYmxlKCkgY29uc3QKIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCogdGhpc09iaiwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEFT
U0VSVCh0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSk7Ci0gICAgQVNTRVJUKGVudHJ5LT5hdHRyaWJ1
dGVzKCkgJiBGdW5jdGlvbik7CisgICAgQVNTRVJUKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWls
dGluT3JGdW5jdGlvbik7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICB1bnNpZ25lZCBh
dHRyaWJ1dGVzOwogICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHRoaXNPYmotPmdldERpcmVj
dE9mZnNldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKQEAgLTc5LDkgKzc5LDEzIEBA
IGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNo
RW50cnkqIGVudHJ5LCBKU09iamVjdCoKICAgICAgICAgaWYgKHRoaXNPYmotPnN0YXRpY0Z1bmN0
aW9uc1JlaWZpZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICAgICAg
dGhpc09iai0+cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oCi0gICAgICAgICAgICB2bSwgdGhpc09i
ai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZW50cnktPmZ1bmN0aW9uTGVuZ3RoKCks
Ci0gICAgICAgICAgICBlbnRyeS0+ZnVuY3Rpb24oKSwgZW50cnktPmludHJpbnNpYygpLCBlbnRy
eS0+YXR0cmlidXRlcygpKTsKKyAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWls
dGluKQorICAgICAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKHZtLCB0
aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBlbnRyeS0+YnVpbHRpbkdlbmVy
YXRvcigpKHZtKSwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgdGhpc09iai0+cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oCisgICAgICAgICAgICAgICAg
dm0sIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5mdW5jdGlv
bkxlbmd0aCgpLAorICAgICAgICAgICAgICAgIGVudHJ5LT5mdW5jdGlvbigpLCBlbnRyeS0+aW50
cmluc2ljKCksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAgICAgICB9CiAgICAgICAgIG9mZnNl
dCA9IHRoaXNPYmotPmdldERpcmVjdE9mZnNldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVz
KTsKICAgICAgICAgQVNTRVJUKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAppbmRleCBiZGU4M2Q0YTZmYzM1NTc3ODUwZTMx
ZTg4YmMzOWZkMDVmN2JjZTUyLi5kYmEzODllOWUyNDNkZDBlY2IyYmE5OGYzOTRkNDA3OWY5ZGVh
OTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaApAQCAtNDMsNiArNDMs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAvLyBpZS4gdHlwZWRlZiBKU1ZhbHVlICgqR2V0RnVu
Y3Rpb24pKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBiYXNlT2JqZWN0KQogICAgIHR5cGVkZWYgUHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgR2V0RnVuY3Rpb247CiAgICAgdHlwZWRlZiBQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYyBQdXRGdW5jdGlvbjsKKyAgICB0eXBlZGVmIEZ1bmN0aW9u
RXhlY3V0YWJsZSogKCpCdWlsdGluR2VuZXJhdG9yKShWTSYpOwogCiAgICAgY2xhc3MgSGFzaEVu
dHJ5IHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC02OCwxMSArNjksMTIg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbV9pbnRyaW5zaWM7CiAgICAg
ICAgIH0KIAorICAgICAgICBCdWlsdGluR2VuZXJhdG9yIGJ1aWx0aW5HZW5lcmF0b3IoKSBjb25z
dCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBCdWlsdGluKTsgcmV0dXJuIG1fdS5idWlsdGluR2Vu
ZXJhdG9yLmdlbmVyYXRvclZhbHVlOyB9CiAgICAgICAgIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9u
KCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pOyByZXR1cm4gbV91LmZ1
bmN0aW9uLmZ1bmN0aW9uVmFsdWU7IH0KICAgICAgICAgdW5zaWduZWQgY2hhciBmdW5jdGlvbkxl
bmd0aCgpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKTsgcmV0dXJuIHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KG1fdS5mdW5jdGlvbi5sZW5ndGgpOyB9CiAKLSAgICAg
ICAgR2V0RnVuY3Rpb24gcHJvcGVydHlHZXR0ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1fYXR0cmli
dXRlcyAmIEZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVydHkuZ2V0OyB9Ci0gICAgICAgIFB1
dEZ1bmN0aW9uIHByb3BlcnR5UHV0dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMg
JiBGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5LnB1dDsgfQorICAgICAgICBHZXRGdW5j
dGlvbiBwcm9wZXJ0eUdldHRlcigpIGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1dGVzICYgQnVp
bHRpbk9yRnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0eS5nZXQ7IH0KKyAgICAgICAgUHV0
RnVuY3Rpb24gcHJvcGVydHlQdXR0ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAm
IEJ1aWx0aW5PckZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVydHkucHV0OyB9CiAKICAgICAg
ICAgaW50cHRyX3QgbGV4ZXJWYWx1ZSgpIGNvbnN0IHsgQVNTRVJUKCFtX2F0dHJpYnV0ZXMpOyBy
ZXR1cm4gbV91LmxleGVyLnZhbHVlOyB9CiAKQEAgLTk0LDYgKzk2LDEwIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgICAgIGludHB0cl90IGxlbmd0aDsgLy8gbnVtYmVyIG9mIGFyZ3Vt
ZW50cyBmb3IgZnVuY3Rpb24KICAgICAgICAgICAgIH0gZnVuY3Rpb247CiAgICAgICAgICAgICBz
dHJ1Y3QgeworICAgICAgICAgICAgICAgIEJ1aWx0aW5HZW5lcmF0b3IgZ2VuZXJhdG9yVmFsdWU7
CisgICAgICAgICAgICAgICAgaW50cHRyX3QgdW51c2VkOworICAgICAgICAgICAgfSBidWlsdGlu
R2VuZXJhdG9yOworICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICBHZXRGdW5j
dGlvbiBnZXQ7CiAgICAgICAgICAgICAgICAgUHV0RnVuY3Rpb24gcHV0OwogICAgICAgICAgICAg
fSBwcm9wZXJ0eTsKQEAgLTIwOSw3ICsyMTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2
YXRlOgogICAgICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IEhhc2hFbnRyeSogZW50cnkoUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgU3RyaW5n
SW1wbCogaW1wbCA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CisgICAgICAgICAgICBTdHJp
bmdJbXBsKiBpbXBsID0gcHJvcGVydHlOYW1lLnVpZCgpOwogICAgICAgICAgICAgaWYgKCFpbXBs
KQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAKQEAgLTI0OSw3ICsyNTUsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaWYgKCFlbnRyeSkgLy8gbm90IGZvdW5kLCBmb3J3
YXJkIHRvIHBhcmVudAogICAgICAgICAgICAgcmV0dXJuIFBhcmVudEltcDo6Z2V0T3duUHJvcGVy
dHlTbG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKLSAgICAgICAgaWYg
KGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikKKyAgICAgICAgaWYgKGVudHJ5LT5hdHRy
aWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikKICAgICAgICAgICAgIHJldHVybiBzZXRVcFN0
YXRpY0Z1bmN0aW9uU2xvdChleGVjLCBlbnRyeSwgdGhpc09iaiwgcHJvcGVydHlOYW1lLCBzbG90
KTsKIAogICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqLCBlbnRyeS0+YXR0
cmlidXRlcygpLCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSk7CkBAIC0yODYsNyArMjkyLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGlmICghZW50cnkpIC8vIG5vdCBmb3VuZCwgZm9yd2Fy
ZCB0byBwYXJlbnQKICAgICAgICAgICAgIHJldHVybiBQYXJlbnRJbXA6OmdldE93blByb3BlcnR5
U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCi0gICAgICAgIEFTU0VS
VCghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikpOworICAgICAgICBBU1NFUlQoIShl
bnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pKTsKIAogICAgICAgICBzbG90
LnNldENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqLCBlbnRyeS0+YXR0cmlidXRlcygpLCBlbnRyeS0+
cHJvcGVydHlHZXR0ZXIoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjk1LDcgKzMwMSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGlubGluZSB2b2lkIHB1dEVudHJ5KEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIGJhc2UsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKICAg
ICB7CiAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBmdW5jdGlvbiBwdXQgaXQgYXMgYW4gb3ZlcnJp
ZGUgcHJvcGVydHkuCi0gICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24p
IHsKKyAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikg
ewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxK
U09iamVjdCo+KHNsb3QudGhpc1ZhbHVlKCkpKQogICAgICAgICAgICAgICAgIHRoaXNPYmplY3Qt
PnB1dERpcmVjdChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKICAgICAgICAgfSBl
bHNlIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBSZWFkT25seSkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5j
cHAKaW5kZXggZDVlNzI4YzJjZDEwMjBhNDdlNGFkY2Q2NDljZDFmZmZhNWNkNmE4My4uZGNhMmZk
OGQxZjZhYzIzYjhmZjgxN2NiYjE4ZmFhZTdiY2Q1OTcwMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAg
LTM4LDYgKzM4LDIwIEBAIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6Ok5hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAordm9pZCBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcm
IG5hbWUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIG5hbWUpOworICAgIEFTU0VS
VChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICAKKyAgICBOYXRpdmVFcnJvclByb3RvdHlwZSogcHJv
dG90eXBlID0gTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGVTdHJ1Y3R1cmUsIG5hbWUsIHRoaXMpOworICAgIAorICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5IHwgRG9udEVudW0pOyAvLyBFQ01BIDE1LjExLjcuNQorICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBSZWFkT25s
eSB8IERvbnRFbnVtKTsKKyAgICBtX2Vycm9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgRXJyb3JJ
bnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSkpOwor
ICAgIEFTU0VSVChtX2Vycm9yU3RydWN0dXJlKTsKKyAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVy
ZS0+aXNPYmplY3QoKSk7Cit9CisKIHZvaWQgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8TmF0aXZlRXJyb3JDb25zdHJ1
Y3Rvcio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCmluZGV4IDc0MGQzZjkzMzI5MmZkMmFjY2I0Yjk5MDM0
NDMxMmI5MzE5YWUxMTAuLjQzOGEzYWZiOWJiMGY2NDEyYzk3OTMyMjMwYzg4NzEwOTYxZjU0Njcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29u
c3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJv
ckNvbnN0cnVjdG9yLmgKQEAgLTUxLDE5ICs1MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlKCkgeyByZXR1cm4gbV9lcnJvclN0cnVjdHVyZS5n
ZXQoKTsgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBwcm90b3R5cGVT
dHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkKLSAgICAgICAgewotICAgICAgICAgICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24odm0sIG5hbWUpOwotICAgICAgICAgICAgQVNTRVJUKGluaGVyaXRz
KGluZm8oKSkpOwotCi0gICAgICAgICAgICBOYXRpdmVFcnJvclByb3RvdHlwZSogcHJvdG90eXBl
ID0gTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGVTdHJ1Y3R1cmUsIG5hbWUsIHRoaXMpOwotCi0gICAgICAgICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIERvbnREZWxldGUgfCBSZWFkT25s
eSB8IERvbnRFbnVtKTsgLy8gRUNNQSAxNS4xMS43LjUKLSAgICAgICAgICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBS
ZWFkT25seSB8IERvbnRFbnVtKTsKLSAgICAgICAgICAgIG1fZXJyb3JTdHJ1Y3R1cmUuc2V0KHZt
LCB0aGlzLCBFcnJvckluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlKSk7Ci0gICAgICAgICAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZSk7Ci0gICAg
ICAgICAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZS0+aXNPYmplY3QoKSk7Ci0gICAgICAgIH0K
KyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICBwcml2
YXRlOgogICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCmluZGV4IGQ5Mzhm
YTMxNjQ1YWYyNmI3NTg1MTRkYjZiMjQ3OGYxODNlOWVlZTEuLmNmZTljNGQzMmJhNzY4Yzc0ZTRm
ZmJiMTkxMzUyNzlkZWJmMTE3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5U2xvdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5U2xvdC5oCkBAIC00Miw2ICs0Miw4IEBAIGVudW0gQXR0cmlidXRlIHsKICAgICBG
dW5jdGlvbiAgICAgPSAxIDw8IDQsICAvLyBwcm9wZXJ0eSBpcyBhIGZ1bmN0aW9uIC0gb25seSB1
c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCiAgICAgQWNjZXNzb3IgICAgID0gMSA8PCA1LCAgLy8g
cHJvcGVydHkgaXMgYSBnZXR0ZXIvc2V0dGVyCiAgICAgQ3VzdG9tQWNjZXNzb3IgPSAxIDw8IDYs
CisgICAgQnVpbHRpbiAgICAgICAgID0gMSA8PCA3LCAvLyBwcm9wZXJ0eSBpcyBhIGJ1aWx0aW4g
ZnVuY3Rpb24gLSBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKKyAgICBCdWlsdGluT3JG
dW5jdGlvbiA9IEJ1aWx0aW4gfCBGdW5jdGlvbiwgLy8gaGVscGVyIG9ubHkgdXNlZCBieSBzdGF0
aWMgaGFzaHRhYmxlcwogfTsKIAogY2xhc3MgUHJvcGVydHlTbG90IHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAppbmRleCBiYzUx
NmIwNmQ2NjUxZjBlNjgyYTIwMTdiZGY4YjAzYmFiZWQ2ZWEyLi4yYzI0MzRiODdkMDRmNzQ5Y2Ix
MmU2MDJhYjU0Nzg0OTQ2YTkxZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVk
ZSAiUmVnRXhwQ29uc3RydWN0b3IuaCIKIAogI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAi
SlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlJl
Z0V4cE1hdGNoZXNBcnJheS5oIgogI2luY2x1ZGUgIlJlZ0V4cFByb3RvdHlwZS5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKaW5kZXgg
ODlkN2FjMWI4Y2JmMWRiMGUxMjZmMWZjNzk2ZGZkNWZjODRiMmU1OS4uOWRkYTBiYThkZTE0MTJl
YWY0ZDI5MWRjZjBjNmIzOTY1N2ZiNjc3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVk
ZSAiQXJyYXlQcm90b3R5cGUuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkpTQXJy
YXkuaCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNp
bmNsdWRlICJKU1N0cmluZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2V0Q29uc3RydWN0b3IuY3BwCmluZGV4IGIyMDM4ODhkM2MxNmNkYTNjMDAzNTA2MjA4YWUwODY5
NWRjNWRhYWEuLmQwMjY2YTU5ZWYzZjU1YWEzNjk0ZjVmNzQxOGNmNzhlMGFlMGQ4YjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNH
bG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU1NldC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5s
aW5lcy5oIgogI2luY2x1ZGUgIk1hcERhdGEuaCIKICNpbmNsdWRlICJTZXRQcm90b3R5cGUuaCIK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKaW5k
ZXggNDQwYTYwOTQyMTkzMzgwMzFlNTkyN2FmNDZiMjg5ZGJjZmI1YTcyOC4uODBlN2VhYThjNDkx
Y2I2ZDU0YTgzMjRjZTY0N2E2Y2RiN2U4ODc4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCkBAIC0yMiw3ICsyMiw5IEBACiAjaW5jbHVkZSAi
U3RyaW5nT2JqZWN0LmgiCiAKICNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFs
dWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU1N0
cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHJvcGVy
dHlOYW1lQXJyYXkuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAKaW5kZXggMDQyOTFmN2U4ZGQyNGU4YWIzM2Q3NWFmMWRhNDU2OGYyYmM5OWU2OC4uMWVj
YWI4NWMwYmRiMjg2OTg5NDU3N2E3NDEyNTRlMzY0NDE0OWQ4OSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0yNywxMiArMjcsMTggQEAKICNpbmNs
dWRlICJTdHJ1Y3R1cmUuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkNv
bW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRHVtcENvbnRleHQuaCIKKyNpbmNsdWRlICJK
U0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiTG9va3VwLmgiCisjaW5jbHVkZSAiUHJvcGVydHlNYXBIYXNoVGFibGUuaCIKICNpbmNsdWRl
ICJQcm9wZXJ0eU5hbWVBcnJheS5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgog
I2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5o
IgogI2luY2x1ZGUgIlN0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9D
b21tYVByaW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNTJjY2Y0MjNhMTA0M2UxMDc5ZjJk
OGIxODk0MjE5ODkwZTcxZjJiYy4uMDIwNjk1ZmFjODNlZDRlNTE4NWI3MGU2OTY5OTYzYTJkZTlh
MzY3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMzIsNiArMzIsNyBA
QAogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKICNpbmNsdWRlICJBcml0eUNoZWNrRmFpbFJldHVyblRo
dW5rcy5oIgogI2luY2x1ZGUgIkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5oIgorI2lu
Y2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZUlubGluZXMu
aCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2RlQ2FjaGUuaCIKQEAgLTU1
LDcgKzU2LDkgQEAKICNpbmNsdWRlICJKU0FQSVZhbHVlV3JhcHBlci5oIgogI2luY2x1ZGUgIkpT
QWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKLSNpbmNsdWRlICJKU0Z1bmN0aW9u
LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxp
bmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTTmFt
ZVNjb3BlLmgiCkBAIC02OCwxMyArNzEsMTYgQEAKICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNs
dWRlICJNYXBEYXRhLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKKyNpbmNsdWRlICJQYXJzZXIuaCIK
ICNpbmNsdWRlICJQYXJzZXJBcmVuYS5oIgorI2luY2x1ZGUgIlByb3BlcnR5TWFwSGFzaFRhYmxl
LmgiCiAjaW5jbHVkZSAiUmVnRXhwQ2FjaGUuaCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIK
ICNpbmNsdWRlICJTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNvdXJj
ZVByb3ZpZGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTdHJpY3RFdmFsQWN0aXZhdGlvbi5oIgogI2lu
Y2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKICNpbmNsdWRlICJXZWFrTWFwRGF0YS5oIgog
I2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KQEAgLTIyNiw2ICsyMzIsNyBAQCBWTTo6Vk0oVk1U
eXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2luRGVmaW5lT3duUHJvcGVy
dHkoZmFsc2UpCiAgICAgLCBtX2NvZGVDYWNoZShDb2RlQ2FjaGU6OmNyZWF0ZSgpKQogICAgICwg
bV9lbmFibGVkUHJvZmlsZXIobnVsbHB0cikKKyAgICAsIG1fYnVpbHRpbkV4ZWN1dGFibGVzKEJ1
aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlKCp0aGlzKSkKIHsKICAgICBpbnRlcnByZXRlciA9IG5l
dyBJbnRlcnByZXRlcigqdGhpcyk7CiAgICAgU3RhY2tCb3VuZHMgc3RhY2sgPSB3dGZUaHJlYWRE
YXRhKCkuc3RhY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDVhODQxMDVl
YWZiN2FiYmE1ZmE0MzFlZWVkZDU1ZDdhODlmNTVjZTIuLjY5NThhYzM5M2IxYWVmYzBiZWZiZjZl
NGViOGI2ODI1Y2Y3YzlhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNDQs
NiArNDQsNyBAQAogI2luY2x1ZGUgIlByaXZhdGVOYW1lLmgiCiAjaW5jbHVkZSAiUHJvdG90eXBl
TWFwLmgiCiAjaW5jbHVkZSAiU21hbGxTdHJpbmdzLmgiCisjaW5jbHVkZSAiU291cmNlQ29kZS5o
IgogI2luY2x1ZGUgIlN0cm9uZy5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgogI2lu
Y2x1ZGUgIlR5cGVkQXJyYXlDb250cm9sbGVyLmgiCkBAIC02OSw2ICs3MCw3IEBACiBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzOworICAgIGNs
YXNzIEJ1aWx0aW5FeGVjdXRhYmxlczsKICAgICBjbGFzcyBDb2RlQmxvY2s7CiAgICAgY2xhc3Mg
Q29kZUNhY2hlOwogICAgIGNsYXNzIENvbW1vbklkZW50aWZpZXJzOwpAQCAtNDk3LDYgKzQ5OSw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHJlZ2lzdGVyV2F0Y2hwb2ludEZvcklt
cHVyZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImLCBXYXRjaHBvaW50Kik7CiAgICAgICAgIC8v
IEZJWE1FOiBVc2UgQXRvbWljU3RyaW5nIG9uY2UgaXQgZ290IG1lcmdlZCB3aXRoIElkZW50aWZp
ZXIuCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkSW1wdXJlUHJvcGVydHkoY29u
c3QgU3RyaW5nJik7CisgICAgICAgIAorICAgICAgICBCdWlsdGluRXhlY3V0YWJsZXMqIGJ1aWx0
aW5FeGVjdXRhYmxlcygpIHsgcmV0dXJuIG1fYnVpbHRpbkV4ZWN1dGFibGVzLmdldCgpOyB9CiAK
ICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwpAQCAtNTM3LDEwICs1NDEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNWYWx1ZSBt
X2V4Y2VwdGlvbjsKICAgICAgICAgYm9vbCBtX2luRGVmaW5lT3duUHJvcGVydHk7CiAgICAgICAg
IE93blB0cjxDb2RlQ2FjaGU+IG1fY29kZUNhY2hlOwotICAgICAgICBSZWZDb3VudGVkQXJyYXk8
U3RhY2tGcmFtZT4gbV9leGNlcHRpb25TdGFjazsKLQogICAgICAgICBMZWdhY3lQcm9maWxlciog
bV9lbmFibGVkUHJvZmlsZXI7Ci0KKyAgICAgICAgT3duUHRyPEJ1aWx0aW5FeGVjdXRhYmxlcz4g
bV9idWlsdGluRXhlY3V0YWJsZXM7CisgICAgICAgIFJlZkNvdW50ZWRBcnJheTxTdGFja0ZyYW1l
PiBtX2V4Y2VwdGlvblN0YWNrOwogICAgICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdhdGNo
cG9pbnRTZXQ+PiBtX2ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludFNldHM7CiAgICAgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU1N0cmlu
Z0lubGluZXMuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNT
dHJpbmdJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBmY2MzODRlOGVkZmMzNGIxNDA4M2I4NjVkMzcz
ODIwZjQxNjVjNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdI
ZWFkZXJzL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVm
IFdlYkNvcmVfRldEX0pTU3RyaW5nSW5saW5lc19oCisjZGVmaW5lIFdlYkNvcmVfRldEX0pTU3Ry
aW5nSW5saW5lc19oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdJbmxpbmVzLmg+
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdp
bnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwCmluZGV4IDJlZGRjZGJiOWYwMDZjYTc2
MjY2NTBiNDIwMjc4NjI2YjkyNjE0MTcuLjNjNGUwZDdiYmIzMWNhYjEyYjVlNmM5NzVjNzRkM2Y0
ODRlOWNiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
bHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcApAQCAtNDYsNiArNDYsNyBAQAog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0Jhc2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlSW5saW5l
cy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nSW5saW5lcy5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0lEQkFueUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFu
eUN1c3RvbS5jcHAKaW5kZXggNTY0OWM4NWNhMDk1ODc3NDhhM2RhMDZjZGRkMGNhOTk5ZTUwYjhl
Ny4uM2Y0ZDhlZmFlYjU3ZjMzMDAzZTczYTdlNzg0MmU0MmM3M2NlNjQ5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcApAQCAtNDcsNiArNDcsNyBA
QAogI2luY2x1ZGUgIkpTSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJKU0lEQlRyYW5zYWN0
aW9uLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8cnVu
dGltZS9KU1N0cmluZ0lubGluZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAppbmRl
eCA5ZWFlNzU2OWM3MDYwM2E0ZmVkMGFmMTRjNGY4NzE4Y2RlNjRhNmUxLi5mNDlkZmU5MGI0ZTgy
ZDM5ZWRjYmY5YmEyOWYyYWU3OTljMGRkZjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2lu
Y2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSlNJREJPYmplY3RTdG9yZS5oIgog
I2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nLmg+
CisjaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZ0lubGluZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmpl
Y3RTdG9yZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVj
dFN0b3JlQ3VzdG9tLmNwcAppbmRleCA3NGZkMzU0YjI4NjA3Y2Y3ODIyZjgwNTM0Nzk3MGY1ZDdh
YzhjODMyLi41NDM0YjNiN2Q2YzU2ZWNiMGEwM2EyNzk0YzY3MzZhOWFkZmI3MGUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9t
LmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCiAjaW5j
bHVkZSAiSlNJREJJbmRleC5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KLSNpbmNsdWRl
IDxydW50aW1lL0pTU3RyaW5nLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZ0lubGluZXMu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAKaW5kZXggZDFiNDcyMTM1MWViMWIy
YmY4Y2UwY2Q0NzNmZWUxNDQ5MTRjNTNhYi4uZjFkYWE4YTEwNDZiMzNmYTNkMzVhNjZjNTU5ZWUw
ZmFmMmFkZTY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2Rl
RmlsdGVyQ29uZGl0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05v
ZGVGaWx0ZXJDb25kaXRpb24uY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiTm9kZUZp
bHRlci5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDxydW50aW1lL0pT
TG9jay5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDlkMDY2ZjVlMWEwMDRmYmQ0ZDU3NDBlNDk3YzgyOGM5YmU4
ZjkwZGEuLjkwOTJlMTcwOWQ2ZmYyNmRhZTZmMjkyM2M3NTFjYjY4YWUzMzYwNWUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMiBAQAorMjAxNC0wMS0yOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29t
PgorCisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gaW1wbGVtZW50IEpTIGJ1aWx0aW5zIGlu
IEpTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc4
ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRh
dGVkIHRoZSB0ZXN0IHJlc3VsdHMgZm9yIG5ldyBlcnJvciBtZXNzYWdlcyAobm93IHRoYXQgdGhl
eSdyZQorICAgICAgICBhY3R1YWxseSBoZWxwZnVsKSwgYW5kIGFkZGVkIGEganMtcmVncmVzcyB0
ZXN0IHRvIHRyYWNrIHBlcmZvcm1hbmNlLgorCisgICAgICAgICoganMvYXJyYXktZXZlcnktZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGpzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1l
eHBlY3RlZC50eHQ6CisgICAgICAgICoganMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL2FycmF5LXByb3RvdHlw
ZS1ldmVyeS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9h
cnJheS1wcm90b3R5cGUtZXZlcnkuanM6IEFkZGVkLgorICAgICAgICAodGVzdDEpOgorICAgICAg
ICAodGVzdDIpOgorICAgICAgICAodGVzdDMpOgorCiAyMDE0LTAxLTMwICBBbGV4ZXkgUHJvc2t1
cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jv
c3Mtb3JpZ2luLXBsdWdpbi1wcml2YXRlLWJyb3dzaW5nLXRvZ2dsZWQuaHRtbCBpcyBmbGFreSBv
biBXSzIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dAppbmRleCA1NDFiOGMz
NThmMDY4YTBjZWE4ODJjMTA1MTc1MzI1MTE0Y2QzM2Y3Li5jY2EzNjNkY2U1OGZiYTk1YTU4Y2U0
NmZjYjQ4YzM4YmY1OGFkZjU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9hcnJheS1ldmVy
eS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQu
dHh0CkBAIC0zMCwxMiArMzAsMTIgQEAgUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KGlz
QmlnRW5vdWdoQW5kRXhjZXB0aW9uKSB0aHJldyBleGNlcHRpb24gZXhjZXB0aW8KIFBBU1MgWzEy
LCA1NCwgMTgsIDEzMCwgNDRdLmV2ZXJ5KGlzQmlnRW5vdWdoQW5kRXhjZXB0aW9uKSB0aHJldyBl
eGNlcHRpb24gZXhjZXB0aW9uIGZyb20gZnVuY3Rpb24uCiAKIDUuMCBXcm9uZyBUeXBlIGZvciBD
YWxsYmFjayBUZXN0Ci1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoNSkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5l
dmVyeSgnd3JvbmcnKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFT
UyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KG5ldyBPYmplY3QoKSkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShu
dWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUs
IDgsIDEzMCwgNDRdLmV2ZXJ5KHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
VHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSgpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZl
cnkoNSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNh
bGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVy
eSgnd3JvbmcnKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZl
cnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRd
LmV2ZXJ5KG5ldyBPYmplY3QoKSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJv
dG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4
LCAxMzAsIDQ0XS5ldmVyeShudWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5w
cm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUs
IDgsIDEzMCwgNDRdLmV2ZXJ5KHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
QXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1Mg
WzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFy
cmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCiAKIDYuMCBF
YXJseSBFeGl0ICgiU2hvcnQgQ2lyY3VpdGluZyIpCiBQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0u
ZXZlcnkoaXNCaWdFbm91Z2hTaG9ydENpcmN1aXQpIGlzIGZhbHNlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvanMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4
dAppbmRleCAyYzJhNjhjYjEwNmRhMTBmMDg2YjIyYzViZjJiZjVjOGZlNzllMzNlLi41ZDllY2I3
NWE4ZGE3OWJhNjU2MDVlN2ViOWNmOGZjMjVmZTE4YWZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9qcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2pzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQK
QEAgLTE1LDcgKzE1LDcgQEAgUEFTUyBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh1bmRlZmlu
ZWQsIDAsIDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGUKIFBBU1MgQXJyYXkucHJv
dG90eXBlLnNvcnQuY2FsbCh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVu
ZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUuc29y
dC5jYWxsKHVuZGVmaW5lZCknKS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKHVu
ZGVmaW5lZCwgMCwgMSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5v
dCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbCh1bmRl
ZmluZWQsIDAsIDEpJykuCiBQQVNTIEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmNhbGwodW5kZWZp
bmVkLCB7fSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBv
YmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS51bnNoaWZ0LmNhbGwodW5kZWZpbmVk
LCB7fSknKS4KLVBBU1MgQXJyYXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVkLCB0b1N0
cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmpl
Y3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5ldmVyeS5jYWxsKHVuZGVmaW5lZCwgdG9T
dHJpbmcpJykuCitQQVNTIEFycmF5LnByb3RvdHlwZS5ldmVyeS5jYWxsKHVuZGVmaW5lZCwgdG9T
dHJpbmcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBy
ZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkLgogUEFTUyBBcnJheS5wcm90b3R5
cGUuZm9yRWFjaC5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90
b3R5cGUuZm9yRWFjaC5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpJykuCiBQQVNTIEFycmF5LnBy
b3RvdHlwZS5zb21lLmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnBy
b3RvdHlwZS5zb21lLmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZyknKS4KIFBBU1MgQXJyYXkucHJv
dG90eXBlLmluZGV4T2YuY2FsbCh1bmRlZmluZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5
cGUuaW5kZXhPZi5jYWxsKHVuZGVmaW5lZCwgMCknKS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xMjkwYzBlZWZmOGRlNDIxODMzZDkyZDI3ZTk1MjQxOTE3NjA0Yjk2Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnktZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZl
cnkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRo
cm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5
Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlNWNjMTcxYzQ4NzVhMzU4NWJmMTRlNTQxNWY1Y2QwZTU4MWQ1NDQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1l
dmVyeS5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
c2NyaXB0LXRlc3RzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJh
eS1wcm90b3R5cGUtZXZlcnkuanMgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0
cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjk0YWExNjFjMGNlOThiMmFi
MThhM2ExYTFmMGRmYWFjOWQ3ZDJlMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5qcwpAQCAtMCwwICsx
LDI5IEBACit2YXIgcmVzdWx0ID0gMDsKK2Z1bmN0aW9uIHRlc3QxKGEpIHsKKyAgICByZXN1bHQg
PDwgMTsKKyAgICByZXN1bHQrKzsKKyAgICByZXR1cm4gdHJ1ZTsKK30KK2Z1bmN0aW9uIHRlc3Qy
KGEsYikgeworICAgIHJlc3VsdCBePSAzOworICAgIHJlc3VsdCAqPSAzOworICAgIHJldHVybiB0
cnVlOworfQorZnVuY3Rpb24gdGVzdDMoYSxiLGMpIHsKKyAgICByZXN1bHQgXj0gcmVzdWx0ID4+
IDE7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZhciByZXN1bHQgPSAwOwordmFyIGFycmF5ID0g
W10KK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpCisgICAgYXJyYXlbaV0gPSAxOwor
Citmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHsKKyAgICBhcnJheS5ldmVyeSh0ZXN0MSk7
CisgICAgYXJyYXkuZXZlcnkodGVzdDIpOworICAgIGFycmF5LmV2ZXJ5KHRlc3QzKTsKK30KKwor
aWYgKHJlc3VsdCAhPSAxNDI4ODEwNDk2KQorICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDog
IiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxlLmFtIGIvR05VbWFrZWZpbGUuYW0K
aW5kZXggNzNmYzQ5MjhjNGRkNDliNTQ5ODY5YjUwNjc4YzZiZGU3NGY0NDc2MC4uMDhjOTExNTQy
NjA1MDBkZTNmZjA0YjAyMGNlMGQ2MGY5OGU4Y2ZlOCAxMDA2NDQKLS0tIGEvR05VbWFrZWZpbGUu
YW0KKysrIGIvR05VbWFrZWZpbGUuYW0KQEAgLTY4LDYgKzY4LDcgQEAgQUxMX01PRklMRVMgOj0K
IGRvbV9iaW5kaW5nX2lkbHMgOj0KIHd0Zl9zb3VyY2VzIDo9CiBqYXZhc2NyaXB0Y29yZV9oX2Fw
aSA6PQoramF2YXNjcmlwdGNvcmVfYnVpbHRpbnNfanNfbm9zb3VyY2VzIDo9CiBqYXZhc2NyaXB0
Y29yZV9jcHBmbGFnczo9CiBqYXZhc2NyaXB0Y29yZV9jZmxhZ3MgOj0KIGphdmFzY3JpcHRjb3Jl
X3NvdXJjZXMgOj0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222817</attachid>
            <date>2014-01-31 08:43:20 -0800</date>
            <delta_ts>2014-01-31 08:53:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140131084309.patch</filename>
            <type>text/plain</type>
            <size>199225</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NjgxMzcxYWU2ZDBjYWZlNDJmNWNmN2E1NWI3MjRjMTc5ODExYjBhLi44OWQ0ZmRmOGYwMzA2Y2M5
ZjFiNmM5NDVlZWY3ZDRlMTczOGFhOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
VGhlIHJlc3VsdCBvZiB0aGlzIHJlZmFjdG9yaW5nCisgICAgICAgIGlzIHRoYXQgQ29tbW9uSWRl
bnRpZmllcnMsIGFuZCBhIGZldyBvdGhlciBtaXNjZWxsYW5lb3VzIGhlYWRlcnMgbm93CisgICAg
ICAgIG5lZWQgdG8gYmUgaW5jbHVkZWQgZGlyZWN0bHkgYXMgdGhleSB3ZXJlIGZvcm1lcmx5IGNh
cHR1cmVkIHRocm91Z2ggb3RoZXIKKyAgICAgICAgcGF0aHMuCisKKyAgICAgICAgSW4gYWRkaXRp
b24gdGhpcyBhZGRzIGEgZmxhZyB0byB0aGUgTG9va3VwIHRhYmxlJ3MgaGFzaGVudHJ5IHRvIGlu
ZGljYXRlCisgICAgICAgIHRoYXQgYSBzdGF0aWMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgYmFja2Vk
IGJ5IEpTLiBUaGVyZSBpcyB0aGVuIGEgbG90IG9mCisgICAgICAgIGxvZ2ljIHRvIHRocmVhZCB0
aGUgc3BlY2lhbCBuYXR1cmUgb2YgdGhlIGZ1bmN0b24gdG8gd2hlcmUgaXQgbWF0dGVycy4KKyAg
ICAgICAgVGhpcyBhbGxvd3MgdG9TdHJpbmcoKSwgLmNhbGxlciwgZXRjIHRvIG1pbWljIHRoZSBi
ZWhhdmlvdXIgb2YgYSBob3N0CisgICAgICAgIGZ1bmN0aW9uLgorCisgICAgICAgIE5vdGVzIG9u
IHdyaXRpbmcgYnVpbHRpbnM6CisgICAgICAgICAtIEVhY2ggZnVuY3Rpb24gaXMgY29tcGlsZWQg
aW5kZXBlbmRlbnRseSBvZiB0aGUgb3RoZXJzLCBhbmQgdGhvc2UKKyAgICAgICAgICAgaW1wbGVt
ZW50YXRpb25zIGNhbm5vdCBjdXJyZW50bHkgY2FwdHVyZSBhbGwgZ2xvYmFsIHByb3BlcnRpZXMg
KGFzCisgICAgICAgICAgIHRoYXQgY291bGQgYmUgcG90ZW50aWFsbHkgdW5zYWZlKS4gSWYgYSBm
dW5jdGlvbiBkb2VzIGNhcHR1cmUgYQorICAgICAgICAgICBnbG9iYWwgd2Ugd2lsbCBkZWxpYmVy
YXRlbHkgY3Jhc2guCisgICAgICAgICAtIEZvciB0aG9zZSAiZ2xvYmFsIiBwcm9wZXJ0aWVzIHRo
YXQgd2UgZG8gd2FudCBhY2Nlc3MgdG8sIHdlIHVzZQorICAgICAgICAgICB0aGUgQCBwcmVmaXgs
IGUuZy4gT2JqZWN0KHRoaXMpIGJlY29tZXMgQE9iamVjdCh0aGlzKS4gVGhlIEAgaWRlbnRpZmll
cnMKKyAgICAgICAgICAgYXJlIHByaXZhdGUgbmFtZXMsIGFuZCBiZWhhdmUganVzdCBsaWtlIHJl
Z3VsYXIgcHJvcGVydGllcywgb25seQorICAgICAgICAgICB3aXRob3V0IHRoZSByaXNrIG9mIGFk
dWx0ZXJhdGlvbi4gQWdhaW4sIGluIHRoZSBAT2JqZWN0IGNhc2UsIHdlCisgICAgICAgICAgIGV4
cGxpY2l0bHkgZHVwbGljYXRlIHRoZSBPYmplY3RDb25zdHJ1Y3RvciByZWZlcmVuY2Ugb24gdGhl
IEdsb2JhbE9iamVjdAorICAgICAgICAgICBzbyB0aGF0IHdlIGhhdmUgZ3VhcmFudGVlZCBhY2Nl
c3MgdG8gdGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhlCisgICAgICAgICAgIGNvbnN0cnVjdG9y
LgorICAgICAgICAgLSBjYWxsLCBhcHBseSwgZXZhbCwgYW5kIEZ1bmN0aW9uIGFyZSBhbGwgcmVq
ZWN0ZWQgaWRlbnRpZmllcnMsIGFnYWluCisgICAgICAgICAgIHRvIHByZXZlbnQgYW55dGhpbmcg
ZnJvbSBhY2NpZGVudGFsbHkgdXNpbmcgYW4gYWR1bHRlcmF0ZWQgb2JqZWN0LgorICAgICAgICAg
ICBJbnN0ZWFkIEBjYWxsIGFuZCBAYXBwbHkgYXJlIGF2YWlsYWJsZSwgYW5kIGhhcHBpbHkgdGhl
eSBjb21wbGV0ZWx5CisgICAgICAgICAgIGRyb3AgdGhlIG5lcV9wdHIgaW5zdHJ1Y3Rpb24gYXMg
dGhleSdyZSBkZWZpbmVkIGFzIGFsd2F5cyBiZWluZyB0aGUKKyAgICAgICAgICAgb3JpZ2luYWwg
Y2FsbC9hcHBseSBmdW5jdGlvbnMuCisKKyAgICAgICAgVGhlc2UgcmVzdHJpY3Rpb25zIGFyZSBq
dXN0IGludGVuZGVkIHRvIG1ha2UgaXQgaGFyZGVyIHRvIGFjY2lkZW50YWxseQorICAgICAgICBt
YWtlIGNoYW5nZXMgdGhhdCBhcmUgaW5jb3JyZWN0IChmb3IgaW5zdGFuY2UgY2FsbGluZyB3aGF0
ZXZlciBoYXMgYmVlbgorICAgICAgICBhc3NpZ25lZCB0byBnbG9iYWwuT2JqZWN0LCBpbnN0ZWFk
IG9mIHRoZSBvcmlnaW5hbCBjb25zdHJ1Y3RvciBmdW5jdGlvbikuCisgICAgICAgIEhvd2V2ZXIs
IG1ha2luZyBhIG1pc3Rha2UgbGlrZSB0aGlzIHNob3VsZCByZXN1bHQgaW4gYSBwdXJlbHkgc2Vt
YW50aWMKKyAgICAgICAgZXJyb3IgYXMgZnVuZGFtZW50YWxseSB0aGVzZSBmdW5jdGlvbnMgYXJl
IHRyZWF0ZWQgYXMgdGhvdWdoIHRoZXkgd2VyZQorICAgICAgICByZWd1bGFyIEpTIGNvZGUgaW4g
dGhlIGhvc3QgZ2xvYmFsLCBhbmQgaGF2ZSBubyBtb3JlIHByaXZpbGVnZXMgdGhhbgorICAgICAg
ICBhbnkgb3RoZXIgSlMuCisKKyAgICAgICAgVGhlIGluaXRpYWwgcHJvb2Ygb2YgY29uY2VwdCBp
cyBBcnJheS5wcm90b3R5cGUuZXZlcnksIHRoaXMgc2hvd3MgYSA2NSUKKyAgICAgICAgcGVyZm9y
bWFuY2UgaW1wcm92ZW1lbnQsIGFuZCB0aGF0IGltcHJvdmVtZW50IGlzIHNpZ25pZmljYW50bHkg
aHVydCBieQorICAgICAgICBvdXIgcG9vciBvcHRpbWlzYXRpb24gb2Ygb3BfaW4uCisKKyAgICAg
ICAgQXMgdGhpcyBpcyBzdWNoIGEgbGltaXRlZCBmdW5jdGlvbiwgd2UgaGF2ZSBub3QgeWV0IGV4
cG9ydGVkIGFsbCBzeW1ib2xzCisgICAgICAgIHRoYXQgd2UgY291bGQgcG9zc2libHkgbmVlZCwg
YnV0IGFzIHdlIGltcGxlbWVudCBtb3JlLCB0aGUgbGlrZWxpaG9vZAorICAgICAgICBvZiBlbmNv
dW50ZXJpbmcgbWlzc2luZyBmZWF0dXJlcyB3aWxsIHJlZHVjZS4KKworICAgICAgICBUaGlzIGRp
ZCByZXF1aXJlIGJyZWFraW5nIG91dCBhIEpTU3RyaW5nSW5saW5lcyBoZWFkZXIsIGFuZCByZXF1
aXJlZAorICAgICAgICBmaXhpbmcgYSBmZXcgb2JqZWN0cyB0aGF0IHdlcmUgdHJ5aW5nIHRvIHVz
aW5nIFByb3BlcnR5TmFtZTo6cHVibGljTmFtZQorICAgICAgICByYXRoZXIgdGhhbiBQcm9wZXJ0
eU5hbWU6OnVpZC4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6
CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQpOgorICAg
ICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZSk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGljRnVuY3Rpb25HZXR0
ZXIpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGxiYWNrR2V0
dGVyKToKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy5tYWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
YnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzOgorICAgICAgICAoZXZlcnkpOgorICAgICAgICAq
IGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpC
dWlsdGluRXhlY3V0YWJsZXM6OkJ1aWx0aW5FeGVjdXRhYmxlcyk6CisgICAgICAgIChKU0M6OkJ1
aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ1
aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0
YWJsZXM6OmNyZWF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdX
YXRjaHBvaW50LmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAoSlND
OjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUp
OgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9y
KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToK
KyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpF
eGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OnRvU3RyaWN0bmVzcyk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjppc0J1aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChKU0M6OlVubGlua2Vk
Q29kZUJsb2NrOjppc0J1aWx0aW5GdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzQnVpbHRpbkZ1bmN0aW9u
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Om1ha2VGdW5jdGlvbik6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkNhbGxG
dW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpBcHBseUZ1
bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogY3JlYXRlX2hhc2hf
dGFibGU6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGdlbmVy
YXRlLWpzLWJ1aWx0aW5zOiBBZGRlZC4KKyAgICAgICAgKGdldENvcHlyaWdodCk6CisgICAgICAg
IChnZXRGdW5jdGlvbnMpOgorICAgICAgICAoZ2VuZXJhdGVDb2RlKToKKyAgICAgICAgKG1hbmds
ZU5hbWUpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKElkZW50aWZp
ZXIpOgorICAgICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAgICAgICAoU291cmNlQ29kZSk6Cisg
ICAgICAgIChVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChWTSk6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAqIGludGVycHJldGVy
L1Byb3RvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgICog
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAqIGpzYy5jcHA6CisgICAg
ICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAqIHBhcnNlci9BU1RCdWls
ZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKToK
KyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6TGV4
ZXIpOgorICAgICAgICAoSlNDOjppc1NhZmVJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4
ZXI8TENoYXI+OjpwYXJzZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpMZXhlcjxVQ2hhcj46
OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpsZXgpOgorICAgICAg
ICAqIHBhcnNlci9MZXhlci5oOgorICAgICAgICAoSlNDOjppc1NhZmVJZGVudGlmaWVyKToKKyAg
ICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIpOgorICAgICAgICAqIHBh
cnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpzZXRDbG9zZWRWYXJp
YWJsZXMpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpTY29wZU5v
ZGU6OmNhcHR1cmVkVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6U2NvcGVOb2RlOjpzZXRDbG9z
ZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQcm9ncmFtTm9kZTo6Y2xvc2VkVmFyaWFibGVz
KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OlBhcnNlcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUlubmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmRpZEZpbmlzaFBhcnNp
bmcpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cHJpbnRVbmV4cGVjdGVkVG9r
ZW5UZXh0KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
OjpnZXRVc2VkVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVz
Lmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlclRva2Vucy5oOgorICAgICAgICAqIHJ1bnRpbWUv
QXJnTGlzdC5jcHA6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvQXJndW1lbnRzLmg6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHNJdGVyYXRv
ckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0
RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Q29t
bW9uSWRlbnRpZmllcnMpOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Z2V0UHJp
dmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Z2V0UHVibGljTmFt
ZSk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQ
YXRoc0V4Y2VwdGlvbnMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5j
cHA6CisgICAgICAgIChKU0M6OmNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6
ZXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6ZXhlY3V0
YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1
bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6ZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9K
U0FjdGl2YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxl
R2V0KToKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dCk6CisgICAg
ICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyk6Cisg
ICAgICAgICogcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcDoKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlND
ZWxsSW5saW5lcy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAg
IChKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZSk6CisgICAgICAgIChKU0M6OkpTRnVu
Y3Rpb246OnNvdXJjZUNvZGUpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjppc0hvc3RPckJ1
aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzQnVpbHRpbkZ1bmN0
aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKToKKyAgICAgICAg
KEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVy
dHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmg6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
OjpyZXNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjpvYmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpzeW1ib2xUYWJsZUhhc1Byb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGVsZXRlKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5j
cHA6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAg
ICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90
KToKKyAgICAgICAgKEpTQzo6aW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKToKKyAgICAg
ICAgKEpTQzo6SlNWYWx1ZTo6dG9XVEZTdHJpbmdJbmxpbmUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNTeW1ib2xUYWJsZU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTU3ltYm9sVGFibGVPYmpl
Y3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgICAgIERvbid0IHJlcG9y
dCBwcml2YXRlIG5hbWVzLgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5o
OgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZUdldCk6CisgICAgICAgIChKU0M6OnN5bWJvbFRh
YmxlUHV0KToKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyk6Cisg
ICAgICAgICogcnVudGltZS9Mb29rdXAuY3BwOgorICAgICAgICAoSlNDOjpzZXRVcFN0YXRpY0Z1
bmN0aW9uU2xvdCk6CisgICAgICAgICogcnVudGltZS9Mb29rdXAuaDoKKyAgICAgICAgKEpTQzo6
SGFzaEVudHJ5OjpidWlsdGluR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpw
cm9wZXJ0eUdldHRlcik6CisgICAgICAgIChKU0M6Okhhc2hFbnRyeTo6cHJvcGVydHlQdXR0ZXIp
OgorICAgICAgICAoSlNDOjpIYXNoVGFibGU6OmVudHJ5KToKKyAgICAgICAgKEpTQzo6Z2V0U3Rh
dGljUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6Z2V0U3RhdGljVmFsdWVTbG90KToKKyAg
ICAgICAgKEpTQzo6cHV0RW50cnkpOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaDoK
KyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVn
RXhwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5jcHA6CisgICAgICAgICogcnVudGltZS9T
dHJ1Y3R1cmUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpW
TTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6Vk06OmJ1aWx0
aW5FeGVjdXRhYmxlcyk6CisKIDIwMTQtMDEtMjkgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxl
LmNvbT4KIAogICAgICAgICBGVEwgc2hvdWxkIHN1cHBvcnQgR2V0QnlJZChVbnR5cGVkOikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCAxYWQ2OTc0ODhiMGM0YjhiNGNmYWUyOTEzNTQyNTliNmRhY2ZkYzQ1Li5mM2Mz
ZDcxNzFkMDU0NDgwZWM2MDU0MGMwZDUyNTk5NmVlY2RiOWEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBKUwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRpbmcg
Zm9yIHRoZSBuZXdseSByZXF1aXJlZCBoZWFkZXJzLgorCisgICAgICAgIFRlc3Q6IGpzL3JlZ3Jl
c3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwKKworICAgICAgICAqIEZvcndhcmRpbmdIZWFk
ZXJzL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMv
cGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNJREJBbnlDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCRGF0
YWJhc2VDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVD
dXN0b20uY3BwOgorCiAyMDE0LTAxLTMwICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgV2ViR0wgbG9hZCBwb2xpY3kgc2hvdWxkIGJlIHF1ZXJpZWQgZm9yIHRo
ZSB0b3AgbGV2ZWwgZG9jdW1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCmluZGV4IDViZTA1M2YxZTA4NmI0M2U2ODZj
MzY3NGRhZTdjNTE2MDVhMjg2ZTcuLjBlY2VkNTFmM2UyZDViNjIxZGFkZjA1NzQ5ZjVlNzQ2NmEw
NmY1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09i
amVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdEZ1bmN0aW9ucy5oCkBAIC0xMzYsNyArMTM2LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGUKICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CiAgICAg
UmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0Ns
YXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNz
ID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIC8vIG9wdGlvbmFsIG9wdGlt
aXphdGlvbiB0byBieXBhc3MgZ2V0UHJvcGVydHkgaW4gY2FzZXMgd2hlbiB3ZSBvbmx5IG5lZWQg
dG8ga25vdyBpZiB0aGUgcHJvcGVydHkgZXhpc3RzCiAgICAgICAgICAgICBpZiAoSlNPYmplY3RI
YXNQcm9wZXJ0eUNhbGxiYWNrIGhhc1Byb3BlcnR5ID0ganNDbGFzcy0+aGFzUHJvcGVydHkpIHsK
QEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcAogICAgIFJlZlB0cjxP
cGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwogICAgIEpTVmFsdWVSZWYgdmFsdWVSZWYg
PSB0b1JlZihleGVjLCB2YWx1ZSk7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBw
cm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBw
cm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0
aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50
Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdFNldFByb3BlcnR5Q2FsbGJhY2sgc2V0
UHJvcGVydHkgPSBqc0NsYXNzLT5zZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIGlmICgh
cHJvcGVydHlOYW1lUmVmKQpAQCAtMzQzLDcgKzM0Myw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvCiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmplY3QpOwogICAgIFJl
ZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwogICAgIAotICAgIGlmIChTdHJp
bmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJp
bmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFz
c1JlZiBqc0NsYXNzID0gdGhpc09iamVjdC0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9
IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgICAgICBpZiAoSlNPYmplY3REZWxldGVQ
cm9wZXJ0eUNhbGxiYWNrIGRlbGV0ZVByb3BlcnR5ID0ganNDbGFzcy0+ZGVsZXRlUHJvcGVydHkp
IHsKICAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5TmFtZVJlZikKQEAgLTU2NCw3ICs1NjQs
NyBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0U3RhdGljVmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcAogewogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYg
PSB0b1JlZih0aGlzKTsKICAgICAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5
TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5
TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IGNsYXNzUmVm
KCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAg
ICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZSogc3RhdGljVmFsdWVzID0ganND
bGFzcy0+c3RhdGljVmFsdWVzKGV4ZWMpKSB7CiAgICAgICAgICAgICAgICAgaWYgKFN0YXRpY1Zh
bHVlRW50cnkqIGVudHJ5ID0gc3RhdGljVmFsdWVzLT5nZXQobmFtZSkpIHsKQEAgLTYwMCw3ICs2
MDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1
bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRQogICAgIGlmIChQYXJlbnQ6OmdldE93blBy
b3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QyKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90Mi5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUp
KTsKIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUo
KSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CiAg
ICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iai0+Y2xhc3NSZWYoKTsganND
bGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgICAgICBpZiAo
T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlKiBzdGF0aWNGdW5jdGlvbnMgPSBqc0Ns
YXNzLT5zdGF0aWNGdW5jdGlvbnMoZXhlYykpIHsKICAgICAgICAgICAgICAgICBpZiAoU3RhdGlj
RnVuY3Rpb25FbnRyeSogZW50cnkgPSBzdGF0aWNGdW5jdGlvbnMtPmdldChuYW1lKSkgewpAQCAt
NjI2LDcgKzYyNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6
Y2FsbGJhY2tHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkCiAgICAgSlNPYmplY3RSZWYg
dGhpc1JlZiA9IHRvUmVmKHRoaXNPYmopOwogICAgIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJv
cGVydHlOYW1lUmVmOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlO
YW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlO
YW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iai0+
Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAg
ICAgICAgICAgICBpZiAoSlNPYmplY3RHZXRQcm9wZXJ0eUNhbGxiYWNrIGdldFByb3BlcnR5ID0g
anNDbGFzcy0+Z2V0UHJvcGVydHkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5TmFt
ZVJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAyN2JjNGMxN2YzZGZl
ZWI2MWQyNTIzMjNmZDg3OGM0NDc4MGY3NGM1Li4zY2E4Mzg2NDljOTE0MDczOWQ5NDkyMmFlYzFl
ZDk5NWYwZmE3N2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01LDYg
KzUsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMiCiAgICAgIiR7SkFWQVNDUklQVENP
UkVfRElSfS9hc3NlbWJsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9iaW5kaW5ncyIK
KyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zIgogICAgICIke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vYnl0ZWNvZGUiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9ieXRlY29tcGls
ZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9kZmciCkBAIC01Miw2ICs1Myw4IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcAog
ICAgIGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAogCisgICAgYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcAorCiAgICAgYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAKICAg
ICBieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Js
b2NrLmNwcApAQCAtNzA3LDcgKzcxMCw3IEBAIHNldChIQVNIX0xVVF9HRU5FUkFUT1IgJHtDTUFL
RV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2NyZWF0ZV9oYXNoX3RhYmxlKQogbWFjcm8oR0VORVJBVEVf
SEFTSF9MVVQgX2lucHV0IF9vdXRwdXQpCiAgICAgYWRkX2N1c3RvbV9jb21tYW5kKAogICAgICAg
ICBPVVRQVVQgJHtfb3V0cHV0fQotICAgICAgICBERVBFTkRTICR7SEFTSF9MVVRfR0VORVJBVE9S
fSAke19pbnB1dH0KKyAgICAgICAgREVQRU5EUyAke0hBU0hfTFVUX0dFTkVSQVRPUn0gJHtfaW5w
dXR9ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAog
ICAgICAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke0hBU0hfTFVUX0dFTkVSQVRPUn0g
JHtfaW5wdXR9IC1pID4gJHtfb3V0cHV0fQogICAgICAgICBWRVJCQVRJTSkKICAgICBsaXN0KEFQ
UEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTICR7X291dHB1dH0pCkBAIC04MTUsMTYgKzgxOCwy
NyBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxF
fSAke0phdmFTY3JpcHRDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0vQ29kZUdlbmVyYXRvcklu
c3BlY3Rvci5weSAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3Rv
ckpTLmpzb24gLS1vdXRwdXRfaF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0iIC0tb3V0cHV0X2NwcF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0iIC0tb3V0cHV0X2pzX2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVf
RElSfSIgLS1vdXRwdXRfdHlwZSBKYXZhU2NyaXB0IC0td3JpdGVfYWx3YXlzICYmIG1rZGlyIC1w
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yICYmIGNwICR7
REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlz
cGF0Y2hlcnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3Rv
ckpTRnJvbnRlbmREaXNwYXRjaGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NS
SVBUQ09SRV9ESVJ9L2luc3BlY3RvcgogICAgIFZFUkJBVElNKQogCisjIEpTQ0J1aWx0aW5zCitm
aWxlKEdMT0IgSlNDQnVpbHRpbnNfanNfZmlsZXMgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElS
fS9idWlsdGlucy8qLmpzIikKK2FkZF9jdXN0b21fY29tbWFuZCgKKyAgIE9VVFBVVCAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcCAke0RFUklWRURf
U09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKKyAgIE1BSU5fREVQRU5E
RU5DWSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMKKyAg
IERFUEVORFMgJHtKU0NCdWlsdGluc19qc19maWxlc30KKyAgIENPTU1BTkQgJHtQWVRIT05fRVhF
Q1VUQUJMRX0gJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5z
ICR7SlNDQnVpbHRpbnNfanNfZmlsZXN9ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0vSlNDQnVpbHRpbnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9
L0pTQ0J1aWx0aW5zLmNwcAorICAgVkVSQkFUSU0pCisKIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRD
b3JlX1NPVVJDRVMKICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0lu
c3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcAogICAg
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVp
bGRlcnMuY3BwCisgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NC
dWlsdGlucy5jcHAKICkKIAogbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUwogICAg
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5k
RGlzcGF0Y2hlcnMuaAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0v
SW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmgKICAgICAke0RFUklWRURfU09VUkNFU19K
QVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgKKyAgICAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKICkKIAogYWRkX2N1
c3RvbV9jb21tYW5kKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpp
bmRleCAxMTU2ZTk3ZmQ4ODYyNTU3YzljZjhkM2I2OGJmNGQwM2MzZThiYThmLi5hODNiZGNhZDUx
YjA2Njg4NjY3YTZiNzMyMDU3ZTRjZGM4OTYwYTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjgsOCArMjgsOSBAQCBWUEFUSCA9IFwKICAgICAkKEph
dmFTY3JpcHRDb3JlKSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvcGFyc2VyIFwKICAgICAkKEph
dmFTY3JpcHRDb3JlKS9ydW50aW1lIFwKLSAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnRlcnByZXRl
ciBcCi0gICAgJChKYXZhU2NyaXB0Q29yZSkvaml0IFwKKwkkKEphdmFTY3JpcHRDb3JlKS9pbnRl
cnByZXRlciBcCisJJChKYXZhU2NyaXB0Q29yZSkvaml0IFwKKwkkKEphdmFTY3JpcHRDb3JlKS9i
dWlsdGlucyBcCiAjCiAKIC5QSE9OWSA6IGFsbApAQCAtNTcsOCArNTgsMTggQEAgYWxsIDogXAog
ICAgIFJlZ0V4cE9iamVjdC5sdXQuaCBcCiAgICAgU3RyaW5nQ29uc3RydWN0b3IubHV0LmggXAog
ICAgIHVkaXM4Nl9pdGFiLmggXAorICAgIEpTQ0J1aWx0aW5zIFwKICMKIAorIyBidWlsdGluIGZ1
bmN0aW9ucworLlBIT05ZOiBKU0NCdWlsdGlucworCitKU0NCdWlsdGluczogJChKYXZhU2NyaXB0
Q29yZSkvZ2VuZXJhdGUtanMtYnVpbHRpbnMgSlNDQnVpbHRpbnMuaCBKU0NCdWlsdGlucy5jcHAK
K0pTQ0J1aWx0aW5zLmg6ICQoSmF2YVNjcmlwdENvcmUpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zICQo
SmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zLyouanMKKwlweXRob24gJF4gJEAKKwkJCQkJCQkJCQkJ
CQkJCQkJCQkJIAorSlNDQnVpbHRpbnMuY3BwOiBKU0NCdWlsdGlucy5oCisKICMgbG9va3VwIHRh
YmxlcyBmb3IgY2xhc3NlcwogCiAlLmx1dC5oOiBjcmVhdGVfaGFzaF90YWJsZSAlLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGZlNTQ0OGRkYzFiY2ZhYTRjNzI5YTFj
YzAwZGVhNjI0MzE5MzkwYTIuLjU1NjlmNTAyOGQ4YzNjZGQ1YTA0ZGM5MzY2YTg0YjA0ZWVjNDgx
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTUxLDYgKzUxLDcgQEAg
amF2YXNjcmlwdGNvcmVfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVycyBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2Jp
bmRpbmdzIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMgXAog
CS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZSBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlciBcCiAJLUkkKHNyY2RpcikvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyIFwKQEAgLTExMCwxMiArMTExLDE2IEBAIERlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaDogJChqYXZhc2Ny
aXB0Y29yZV9zb3VyY2VzKSAkCiAJJChBTV9WX0dFTikkKFJVQlkpICQoc3JjZGlyKS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiICQo
c3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20gJEAKIAkkKEFNX1ZfYXQpdG91Y2ggJEAKIAotJChQcm9ncmFtc19MTEludE9mZnNldHNFeHRy
YWN0b3JfT0JKRUNUUyk6IERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJl
ZE9mZnNldHMuaAorJChQcm9ncmFtc19MTEludE9mZnNldHNFeHRyYWN0b3JfT0JKRUNUUyk6IERl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaCAKIAogRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnRBc3NlbWJseS5oOiBQcm9ncmFtcy9MTElu
dE9mZnNldHNFeHRyYWN0b3IkKEVYRUVYVCkKIAkkKEFNX1ZfR0VOKSQoUlVCWSkgJChzcmNkaXIp
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYiAkKHNyY2RpcikvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIFByb2dyYW1zL0xM
SW50T2Zmc2V0c0V4dHJhY3RvciQoRVhFRVhUKSAkQAogCSQoQU1fVl9hdCl0b3VjaCAkQAogCitE
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5oOiBEZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5jcHAKK0Rlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL0pTQ0J1aWx0aW5zLmNwcDogJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9n
ZW5lcmF0ZS1qcy1idWlsdGlucyAkKGphdmFzY3JpcHRjb3JlX2J1aWx0aW5zX2pzX25vc291cmNl
cykKKwkkKEFNX1ZfR0VOKSQoUFlUSE9OKSAkXiAkQAorCiAkKGxpYmphdmFzY3JpcHRjb3JlZ3Rr
X0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJ
T05AX2xhX09CSkVDVFMpOiBEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9MTEludEFzc2Vt
Ymx5LmgKIAoganNjOiAkKGphdmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcykgUHJvZ3JhbXMv
anNjJChFWEVFWFQpCkBAIC0yMTYsNiArMjIxLDcgQEAgRVhUUkFfRElTVCArPSBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL0tleXdvcmRMb29rdXBHZW5lcmF0b3IucHkgXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvS2V5d29yZHMudGFibGUgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9USEFOS1MgXAorCSQoamF2YXNjcmlwdGNvcmVfYnVpbHRpbnNfanNfbm9zb3VyY2VzKSBcCiAJ
JChsbGludF9ub3NvdXJjZXMpIFwKIAkkKG9mZmxpbmVhc21fbm9zb3VyY2VzKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGNkYjU0MjZiMDZiNTJhOTgy
NTZlZTkwNThiYmE4ZjExZWVhNjllZTAuLjk4ZmFhYTdkMTc1YWE2MWYyMDg5NmNlZWIxMzg2M2Uy
N2IyNjZjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC0yMCw2ICsyMCw4IEBAIGphdmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcyArPSBcCiAJRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvRXJyb3JQcm90b3R5cGUubHV0LmggXAogCURlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTRGF0YVZpZXdQcm90b3R5cGUubHV0LmggXAogCURl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0Lmx1dC5oIFwKKwlEZXJp
dmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5jcHAgXAorCURlcml2ZWRTb3Vy
Y2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFT
Y3JpcHRDb3JlL0pTT05PYmplY3QubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9KU1Byb21pc2VQcm90b3R5cGUubHV0LmggXApAQCAtMzUsNiArMzcsOSBAQCBqYXZh
c2NyaXB0Y29yZV9idWlsdF9ub3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvTExJbnRBc3NlbWJseS5oCiAKK2phdmFzY3JpcHRjb3JlX2J1aWx0aW5zX2pzX25vc291
cmNlcyArPSBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlw
ZS5qcworCiBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9BUElDYXN0LmggXApAQCAtMTAyLDYgKzEwNyw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMg
Kz0gXAogICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRPYmplY3QuaCBc
CiAgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcCBcCiAg
ICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmggXAorICAgIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIFwKKyAg
ICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmNw
cCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2Zp
bGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAg
XApAQCAtMTI0MSw3ICsxMjQ4LDkgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJz
LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNGcm9udGVu
ZERpc3BhdGNoZXJzLmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3Rv
ckpTVHlwZUJ1aWxkZXJzLmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5z
cGVjdG9ySlNUeXBlQnVpbGRlcnMuaAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0lu
c3BlY3RvckpTVHlwZUJ1aWxkZXJzLmggXAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3Jl
L0pTQ0J1aWx0aW5zLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNDQnVp
bHRpbnMuaAogCiBsbGludF9ub3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qCmluZGV4IDVlZGVmZGJlODU1Zjk2YTYyNjhkODU3M2JlYzFkMGMzZDg1
OGFhNWMuLmExMmRiMTgzNDg2ZGZiYmNhODNmM2E3OGU5Y2Y5ODYzMWIyNjUzZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtMzA5LDYgKzMwOSw3IEBACiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0T2JqZWN0LmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdFZhbHVlLmNwcCIg
Lz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxl
cy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9j
YXRpb25Qcm9maWxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2Rl
XEFycmF5UHJvZmlsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29k
ZVxCeXRlY29kZUJhc2ljQmxvY2suY3BwIiAvPgpAQCAtNzIxLDYgKzcyMiw3IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNCYWNr
ZW5kRGlzcGF0Y2hlcnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9y
SlNUeXBlQnVpbGRlcnMuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmNwcCIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJ
dGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJj
ZXNcQXJyYXlDb25zdHJ1Y3Rvci5sdXQuaCIgLz4KQEAgLTc1MCw2ICs3NTIsNyBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFJlZ0V4cE9iamVjdC5s
dXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xSZWdFeHBQcm90b3R5cGUubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcU3RyaW5nQ29uc3RydWN0b3IubHV0LmgiIC8+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuaCIg
Lz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxBUElcQVBJQ2FsbGJhY2tGdW5jdGlvbi5oIiAvPgpAQCAtNzk4LDYgKzgwMSw3IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdE9iamVjdC5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0VmFsdWUuaCIgLz4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxlcy5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9u
UHJvZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlQ
cm9maWxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeVZhbElu
Zm8uaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmls
dGVycwppbmRleCA4N2UxMmE0NzE1OGJiNjIyNGQ0OWZkNjIyOTc4YzRhOWM0NDM1YTY1Li44Njlj
MWY1ODliY2I2ODZlYjljZjIwYzA5NmJlMWI4M2E1NTFlMjRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC03LDYgKzcsOSBAQAogICAg
IDxGaWx0ZXIgSW5jbHVkZT0iYmluZGluZ3MiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezBi
YWNlMTIzLTQ1ODItZWViYy05MzE0LTc4MTliMzc2YzE5OH08L1VuaXF1ZUlkZW50aWZpZXI+CiAg
ICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJidWlsdGlucyI+CisgICAgICA8VW5p
cXVlSWRlbnRpZmllcj57M2I5ZDcyYTUtMTM1Yi00M2IzLWE1MjQtYzZkMmI5ZDI5ZDM1fTwvVW5p
cXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KICAgICA8RmlsdGVyIEluY2x1ZGU9ImJ5dGVj
b2RlIj4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns3NjYwODhhMC0xMjE2LTQ4NTQtYWE0My01
NjBjNWUyODM2Njh9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgpAQCAtMTA4LDYg
KzExMSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcTWFjcm9Bc3Nl
bWJsZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAgPC9DbENv
bXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWlsdGluRXhlY3V0
YWJsZXMuY3BwIj4KKyAgICAgIDxGaWx0ZXI+YnVpbHRpbnM8L0ZpbHRlcj4KKyAgICA8L0NsQ29t
cGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlv
blByb2ZpbGUuY3BwIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KQEAgLTEzMjksNiArMTMzNSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwIj4KICAg
ICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRp
bnMuY3BwIj4KKyAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CisgICAgPC9D
bENvbXBpbGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cQVBJXEFQSUNhbGxiYWNrRnVuY3Rpb24uaCI+CkBAIC0xNDU0LDYgKzE0NjMs
OSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXFg4NkFzc2VtYmxlci5o
Ij4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWlsdGluRXhlY3V0YWJsZXMuaCI+
CisgICAgICA8RmlsdGVyPmJ1aWx0aW5zPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmgi
PgogICAgICAgPEZpbHRlcj5ieXRlY29kZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAt
MjU1MCw2ICsyNTYyLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xBcnJheVByb3RvdHlwZS5sdXQuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQg
U291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmgiPgorICAgICAgPEZpbHRl
cj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVk0uaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlQ29tbW9uLnByb3BzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmVD
b21tb24ucHJvcHMKaW5kZXggMzYyMmZmYzU3N2M0M2RkZjcwZGE1MWZmNjhhZDY0NmY2MzA0ZTU2
Ny4uYzU4ODg3MGMyZmQxM2Q2MDc2ZDM4ZjUyY2E2MjI1ZGIyODcyYzc4MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmVDb21tb24ucHJvcHMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmVDb21tb24ucHJvcHMKQEAgLTUsNyArNSw3IEBACiAgIDxQ
cm9wZXJ0eUdyb3VwIC8+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+
Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlw7Li5cdG9vbHNcOy4uXHJ1
bnRpbWVcOy4uXGxsaW50XDsuLlxqaXRcOy4uXGRpc2Fzc2VtYmxlclw7Li5caGVhcFw7Li5cZGVi
dWdnZXJcOy4uXGFzc2VtYmxlclw7Li5ccHJvZmlsZXJcOy4uXHlhcnJcOy4uXGludGVycHJldGVy
XDsuLlxieXRlY29kZVw7Li5cZGZnXDsuLlxieXRlY29tcGlsZXJcOy4uXHBhcnNlclw7Li5cQVBJ
XDsuLlxmdGxcOy4uXGJpbmRpbmdzXDsuLlxpbnNwZWN0b3JcOyQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291
cmNlc1w7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcOyQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
aW5jbHVkZVxwcml2YXRlXDskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGU7JChXZWJLaXRfTGli
cmFyaWVzKVxpbmNsdWRlXHByaXZhdGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwv
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzPi4uXDsuLlx0b29sc1w7Li5ccnVudGltZVw7Li5cbGxpbnRcOy4uXGppdFw7Li5c
ZGlzYXNzZW1ibGVyXDsuLlxoZWFwXDsuLlxkZWJ1Z2dlclw7Li5cYXNzZW1ibGVyXDsuLlxwcm9m
aWxlclw7Li5ceWFyclw7Li5caW50ZXJwcmV0ZXJcOy4uXGJ5dGVjb2RlXDsuLlxidWlsdGluc1w7
Li5cZGZnXDsuLlxieXRlY29tcGlsZXJcOy4uXHBhcnNlclw7Li5cQVBJXDsuLlxmdGxcOy4uXGJp
bmRpbmdzXDsuLlxpbnNwZWN0b3JcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1w7JChDb25maWd1
cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRl
XEphdmFTY3JpcHRDb3JlXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRl
XDskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGU7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRl
XHByaXZhdGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz4KICAgICAgIDxGb3JjZWRJbmNsdWRlRmlsZXM+SUNVVmVyc2lvbi5oOyUo
Rm9yY2VkSW5jbHVkZUZpbGVzKTwvRm9yY2VkSW5jbHVkZUZpbGVzPgogICAgIDwvQ2xDb21waWxl
PgogICAgIDxMaW5rPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyN2U4NzY3NDBh
OTY0YjAyODk4NGVkNjc4MTYxODIwYTVkY2Y3N2M0Li45MTE1NzNhYjE3ZDMzOTc0YWE3YzlhMDEx
ZGIyMDBiMDlhZjc4YmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTIyLDcg
KzkyMiw2IEBACiAJCUE1MDNGQTE5MTg4RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZy
YW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
MDNGQTEzMTg4RTBGQUYwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLzsgfTsK
IAkJQTUwM0ZBMUExODhFMEZCMDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE0MTg4RTBG
QUYwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggKi87IH07CiAJCUE1MDNGQTFCMTg4
RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTUxODhFMEZCMDAwMTEwRjE0
IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi87IH07Ci0JCUE1MDNGQTFDMTg4RTBGQjAw
MDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE2MTg4RTBGQjAwMDExMEYxNCAvKiBKU0ph
dmFTY3JpcHRDYWxsRnJhbWUuaCAqLzsgfTsKIAkJQTUwM0ZBMUQxODhFMEZCMDAwMTEwRjE0IC8q
IEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNzE4OEUwRkIwMDAxMTBGMTQgLyogSlNK
YXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcCAqLzsgfTsKIAkJQTUwM0ZBMUUxODhFMEZC
MDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTgxODhFMEZCMDAwMTEw
RjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oICovOyB9OwogCQlBNTAzRkEy
MTE4OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0QnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMUYxODhFRkY2ODAwMTEwRjE0IC8q
IFNjcmlwdEJyZWFrcG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTAyNCw2ICsxMDIzLDcgQEAKIAkJQTcwQjA4MzIxN0EwQjc5QjAwREFG
MTRCIC8qIERGR0JpbmFyeVN3aXRjaC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNzBCMDgzMDE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dp
dGNoLmNwcCAqLzsgfTsKIAkJQTcwQjA4MzMxN0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3
aXRjaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcw
QjA4MzExN0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5oICovOyB9OwogCQlBNzEy
MzZFNTExOTVGMzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MTIzNkU0MTE5NUYzM0MwMEJEMjE3
NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3BwICovOyB9OworCQlBNzFEQTgwRjE4ODBEQkFCMDBEMUYy
OTkgLyogSlNTdHJpbmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNzFEQTgwRTE4ODBEQkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxpbmVz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcy
MDI4QjYxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIwMjhCNDE3OTc2MDFFMDA5
ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmNwcCAqLzsgfTsKIAkJQTcyMDI4QjgxNzk3NjAx
RTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyMDI4QjUxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rl
c3RSdW5uZXJVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUE3MjAyOEJBMTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyMDI4Qjkx
Nzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExNTAsNiArMTE1MCwxMCBAQAogCQlB
N0NBM0FFODE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0NBM0FFMjE3REE0MUFFMDA2NTM4QUYgLyog
SlNXZWFrTWFwLmggKi87IH07CiAJCUE3Q0EzQUVCMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFw
RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
N0NBM0FFOTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuY3BwICovOyB9OwogCQlBN0NB
M0FFQzE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0EzQUVBMTdEQTUxNjgwMDY1MzhBRiAvKiBX
ZWFrTWFwRGF0YS5oICovOyB9OworCQlBN0Q4MDFBNDE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRp
bkV4ZWN1dGFibGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3Bw
ICovOyB9OworCQlBN0Q4MDFBNTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4MDFB
MjE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdEODAxQTgxODgwRDZBODAwMjZD
MzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3RDgwMUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAg
Ki87IH07CisJCUE3RDgwMUE5MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTcxODgwRDZB
ODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTdEODlDRjIxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jhc2lj
QmxvY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTdEODlDRTMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jhc2ljQmxvY2suY3BwICovOyB9OwogCQlB
N0Q4OUNGMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODlDRTQxN0EwQjhD
QzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCAqLzsgfTsKIAkJQTdEODlDRjQx
N0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4OUNFNTE3QTBCOENDMDA3NzNBRDgg
LyogREZHQmxvY2tJbnNlcnRpb25TZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMjQ2Miw2ICsyNDY2LDggQEAKIAkJQTcxMjM2RTQxMTk1RjMz
QzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKSVRPcGNvZGVzMzJfNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNzE4RjYxQTExNzU0QTIxMDAyNDY1QTcgLyogUmVnRXhwSml0VGFibGVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEppdFRhYmxlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNzE4RjgyMTExNzhFQjRCMDAyNDY1QTcgLyogY3JlYXRl
X3JlZ2V4X3RhYmxlcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVU
eXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gY3JlYXRl
X3JlZ2V4X3RhYmxlczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcxREE4MEQxODgw
RDcxRjAwRDFGMjk5IC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3Jp
cHQucHl0aG9uOyBwYXRoID0gImdlbmVyYXRlLWpzLWJ1aWx0aW5zIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTcxREE4MEUxODgwREJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5l
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0cmluZ0lubGluZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyMDI4QjQxNzk3NjAxRTAwOTgwMjhDIC8q
IEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0NUZXN0UnVubmVyVXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNzIwMjhCNTE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ1Rlc3RSdW5uZXJVdGlscy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNzIwMjhCOTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5j
dGlvbklubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGdW5jdGlv
bklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1OTAsNiArMjU5Niwx
MSBAQAogCQlBN0NBM0FFMjE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2Vha01hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBN0NBM0FFOTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vha01hcERhdGEuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0NBM0FFQTE3REE1MTY4MDA2NTM4QUYgLyogV2Vh
a01hcERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha01hcERhdGEu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTAxODgwRDY2RTAwMjZDMzlC
IC8qIEFycmF5LnByb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsg
cGF0aCA9IEFycmF5LnByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTdEODAxQTExODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCdWlsdGluRXhlY3V0YWJsZXMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFBMjE4ODBENjZFMDAyNkMzOUIgLyog
QnVpbHRpbkV4ZWN1dGFibGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1
aWx0aW5FeGVjdXRhYmxlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFB
NjE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNDQnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBN0Q4MDFBNzE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTdEODlDRTMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jhc2ljQmxvY2su
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQmFzaWNCbG9jay5j
cHA7IHBhdGggPSBkZmcvREZHQmFzaWNCbG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE3RDg5Q0U0MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdCbG9ja0luc2VydGlv
blNldC5jcHA7IHBhdGggPSBkZmcvREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBN0Q4OUNFNTE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJ
bnNlcnRpb25TZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQmxvY2tJ
bnNlcnRpb25TZXQuaDsgcGF0aCA9IGRmZy9ERkdCbG9ja0luc2VydGlvblNldC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjkyNiw2ICsyOTM3LDcgQEAKIAkJCQk4NjA0RjRGMjE0
M0E2QzQ0MDBCMjk1RjUgLyogQ2hhbmdlTG9nICovLAogCQkJCUY2OTJBODU0MDI1NTU5N0QwMUZG
NjBGNyAvKiBjcmVhdGVfaGFzaF90YWJsZSAqLywKIAkJCQlBNzE4RjgyMTExNzhFQjRCMDAyNDY1
QTcgLyogY3JlYXRlX3JlZ2V4X3RhYmxlcyAqLywKKwkJCQlBNzFEQTgwRDE4ODBENzFGMDBEMUYy
OTkgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMgKi8sCiAJCQkJNDVFMTJEODgwNkE0OUIwRjAwRTlE
Rjg0IC8qIGpzYy5jcHAgKi8sCiAJCQkJRjY4RUJCOEMwMjU1RDRDNjAxRkY2MEY3IC8qIGNvbmZp
Zy5oICovLAogCQkJCUY1QzI5MEU2MDI4NEY5OEUwMTg2MzVDQSAvKiBKYXZhU2NyaXB0Q29yZVBy
ZWZpeC5oICovLApAQCAtMjkzNCw2ICsyOTQ2LDcgQEAKIAkJCQkxNDMyRUJENzBBMzRDQUQ0MDA3
MTdCOUYgLyogQVBJICovLAogCQkJCTk2ODhDQjEyMEVEMTJCNEUwMDFENjQ5RiAvKiBhc3NlbWJs
ZXIgKi8sCiAJCQkJQTU0Q0YyRUExODRFQTczOTAwMjM3RjE5IC8qIGJpbmRpbmdzICovLAorCQkJ
CUE3RDgwMTlGMTg4MEQ2NkUwMDI2QzM5QiAvKiBidWlsdGlucyAqLywKIAkJCQk5NjlBMDc4RjBF
RDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8sCiAJCQkJN0UzOUQ4MUQwRUMzOEVGQTAwM0FG
MTFBIC8qIGJ5dGVjb21waWxlciAqLywKIAkJCQkxQzkwNTEzRTBCQTlFODgzMDA4MUU5RDAgLyog
Q29uZmlndXJhdGlvbnMgKi8sCkBAIC0zNTA5LDYgKzM1MjIsOCBAQAogCQk2NTBGREY4RDA5RDBG
Q0E3MDA3NjlFNTQgLyogRGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlBN0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVp
bHRpbnMuY3BwICovLAorCQkJCUE3RDgwMUE3MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlu
cy5oICovLAogCQkJCUJDMThDNTIzMEUxNkZDOEEwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5s
dXQuaCAqLywKIAkJCQlCQ0QyMDNFNzBFMTcxOEY0MDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5s
dXQuaCAqLywKIAkJCQlBNTEzRTVDNjE4NUY5NDM2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRT
b3VyY2UuaCAqLywKQEAgLTM4MTEsNiArMzgyNiw3IEBACiAJCQkJQTc5MERENkExODJGNDk5NzAw
NTg4ODA3IC8qIEpTU2V0SXRlcmF0b3IuaCAqLywKIAkJCQlCQzAyRTlCNjBFMTg0MkZBMDAwRjky
OTcgLyogSlNTdHJpbmcuY3BwICovLAogCQkJCUY2OTJBODYyMDI1NTU5N0QwMUZGNjBGNyAvKiBK
U1N0cmluZy5oICovLAorCQkJCUE3MURBODBFMTg4MERCQUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lu
bGluZXMuaCAqLywKIAkJCQk4NkU4NTUzODExMUI5OTY4MDAxQUY1MUUgLyogSlNTdHJpbmdCdWls
ZGVyLmggKi8sCiAJCQkJMjYwMEI1QTQxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVy
LmNwcCAqLywKIAkJCQkyNjAwQjVBNTE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIu
aCAqLywKQEAgLTQ1NjEsNiArNDU3NywxNiBAQAogCQkJcGF0aCA9IHJlbW90ZTsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUE3RDgwMTlGMTg4MEQ2NkUwMDI2QzM5QiAvKiBi
dWlsdGlucyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
QTdEODAxQTAxODgwRDY2RTAwMjZDMzlCIC8qIEFycmF5LnByb3RvdHlwZS5qcyAqLywKKwkJCQlB
N0Q4MDFBMTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCAqLywKKwkJ
CQlBN0Q4MDFBMjE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggKi8sCisJ
CQkpOworCQkJcGF0aCA9IGJ1aWx0aW5zOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJ
fTsKIC8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEhlYWRlcnNCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTQ2MDYsMTEgKzQ2MzIsMTEgQEAKIAkJCQk4NkFERDE0NTBG
RERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1
Q0VFRTE1MTg3RjNCQUQwMEU1NUM5OSAvKiBJbnNwZWN0b3JBZ2VudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNjVDMDI4NUQxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5oIGluIEhlYWRl
cnMgKi8sCi0gCQkJCTJBNjgyOTVCMTg3NUY4MDUwMEI2QzNFMiAvKiBDb3B5V3JpdGVCYXJyaWVy
LmggaW4gSGVhZGVycyAqLywKLSAgICAgICAgICAgICAgICAyQTRFQzkwQzE4NjBENkMyMDA5NEY3
ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkyQTY4Mjk1QjE4
NzVGODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MkE0RUM5MEMxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkU1OTMyQTgxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTUzMjQzOTMxODU2OTcwOTAwMkVENjkyIC8qIENvZGVHZW5lcmF0
b3JJbnNwZWN0b3JTdHJpbmdzLnB5IGluIEhlYWRlcnMgKi8sCi0gCQkJCUE1MzI0MzkyMTg1Njk3
MDkwMDJFRDY5MiAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGluIEhlYWRlcnMgKi8sCisJ
CQkJQTUzMjQzOTIxODU2OTcwOTAwMkVENjkyIC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjI0RTU0RjE3RUUyNzQ5MDBBQkIyMTcgLyogVGVtcFJlZ2lz
dGVyU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTBFNEI2NDE4ODA5REQ1MDA2OEE0NkQgLyog
SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFQjU4QzE1
MTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJvckhhbmRsaW5nU2NvcGUuaCBpbiBIZWFkZXJzICovLApA
QCAtNDYyMiw3ICs0NjQ4LDcgQEAKIAkJCQkwRjgzMzVCODE2MzlDMUVBMDAxNDQzQjUgLyogQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMjkxODdDQTVF
NjAwODQzQjEwIC8qIGlubGluZS1hbmQtbWluaWZ5LXN0eWxlc2hlZXRzLWFuZC1zY3JpcHRzLnB5
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMkIxODdDQTc1QjAwODQzQjEwIC8qIGpzbWluLnB5
IGluIEhlYWRlcnMgKi8sCi0gCQkJCUE1MzI0Mzk4MTg1NkE0ODkwMDJFRDY5MiAvKiBJbnNwZWN0
b3JKUy5qc29uIGluIEhlYWRlcnMgKi8sCisJCQkJQTUzMjQzOTgxODU2QTQ4OTAwMkVENjkyIC8q
IEluc3BlY3RvckpTLmpzb24gaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUyQTE4N0NBNzU5MDA4
NDNCMTAgLyogeHhkLnBsIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVBMDg2MjAxODJCN0EwNDAwRjZE
ODUxIC8qIEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjM1MTdBREI1RjMw
MDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC00NzMzLDcgKzQ3NTks
NyBAQAogCQkJCUExQTAwOUMwMTgzMUEyMkQwMENGODcxMSAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDOURDNTEzMjhERjgyMDAyQjJBRDcgLyogREZHQnl0
ZUNvZGVQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDg1MzI4MTg3REZERUMwMDgzQjY4
NyAvKiBGVExBdmFpbGFibGVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8sCi0gICAgICAgICAgICAg
ICAgQTU5M0NGODcxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCBp
biBIZWFkZXJzICovLAorCQkJCUE1OTNDRjg3MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JB
Z2VudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI1NkMzNjE2MjdCMEFEMDA3RjI3
ODMgLyogREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRpZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRkZDOTU4MTRFRjkwQTIwMEM3MjUzMiAvKiBERkdDRkFQaGFz
ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC00ODcyLDYgKzQ4OTgsNyBAQAogCQkJCTBGRUEwQTFEMTcw
OEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RUEwQTFGMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNTk0NTU5MzE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0Q4MDFBOTE4ODBENkE4MDAyNkMz
OUIgLyogSlNDQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTBBMTcwNTEzREIw
MEJCNzIyQyAvKiBGVExDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDg1MzJB
MTg3REZERUMwMDgzQjY4NyAvKiBGVExSZWNvdmVyeU9wY29kZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZFQTBBMjMxNzA5NjA2OTAwQkI3MjJDIC8qIEZUTENvbW1vblZhbHVlcy5oIGluIEhlYWRl
cnMgKi8sCkBAIC00OTQ2LDYgKzQ5NzMsNyBAQAogCQkJCUJDMThDNDBGMEUxNkY1Q0QwMEIzNDQ2
MCAvKiBJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjVGOEJDRTE1NzU0NEE5MDAy
NDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5
OTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUE3RDgwMUE1MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQjdGMzlBMTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ0hlYWRlcklu
bGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzlCMTVFRDhFNDYwMEYxNjdCMiAvKiBJ
bmRleGluZ1R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQ0VGQUIwMTgwNUNBNkQwMDQ3MkNF
NCAvKiBJbml0aWFsaXplTExWTS5oIGluIEhlYWRlcnMgKi8sCkBAIC01MjE4LDYgKzUyNDYsNyBA
QAogCQkJCUE1MzI0Mzg4MTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JKU0JhY2tlbmREaXNw
YXRjaGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NTYwRTE2RjVDRDAwQjM0NDYwIC8q
IFByb3RlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzRDMzNCMTZBQTJEOTUwMDYyRjAxRCAv
KiBQcm90b3R5cGVNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3MURBODBGMTg4MERCQUIwMEQx
RjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMzMkE0MTRD
QTdERDkwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBD
RDRDMjE1RjFBNjA3MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3QzAwOENFNzE4NzYzMUI2MDA5NTVDMjQgLyogTWljcm90YXNrLmggaW4gSGVhZGVy
cyAqLywKQEAgLTU4MzYsNiArNTg2NSw3IEBACiAJCQkJQTdEODlDRjIxN0EwQjhDQzAwNzczQUQ4
IC8qIERGR0Jhc2ljQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcwQjA4MzIxN0EwQjc5
QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q4
OUNGMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQTdEODAxQTQxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxl
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkVDOURDNDEzMjhERjgyMDAyQjJBRDcgLyogREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEODJFMjExNDE3MkNFMzAw
MTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkZGQzk1
NzE0RUY5MEEwMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01
ODUyLDYgKzU4ODIsNyBAQAogCQkJCTBGRkZDOTU5MTRFRjkwQTYwMEM3MjUzMiAvKiBERkdDU0VQ
aGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJGQzc3MjE2RTEyRjcxMDAzOEQ5NzYgLyog
REZHRENFUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4RjJCOTkxNzJGMDRGRjAwN0RC
REE1IC8qIERGR0Rlc2lyZWRJZGVudGlmaWVycy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBN0Q4
MDFBODE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTczRTEzMzAxNzk2MjRDRDAwRTRERUE4IC8qIERGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzJDMEY3Q0QxN0JCRkM1QjAwNDY0RkU0IC8qIERGR0Rl
c2lyZWRUcmFuc2l0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkU4NTM0QjE3MjNDREE1
MDBCNjE4RjUgLyogREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
NTk3Niw3ICs2MDA3LDcgQEAKIAkJCQkwRjZCMUNDNTE4NjJDNDc4MDA4NDVEOTcgLyogRlRMVW53
aW5kSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM5QTE4MDNBREI3MDA3M0MyQkMg
LyogRlRMU3RhY2tNYXBzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEwQTE2MTcwNkJCOTAw
MEJCNzIyQyAvKiBGVExTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKLSAJCQkJN0MwMDhDRDIxODZG
OEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk3QzAwOENEMjE4NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9taXNlRnVuY3Rpb25zLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGNkIxQ0I1MTg1RkM5RTkwMDg0NUQ5NyAvKiBGVExKU0NhbGwuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMzVCRTExNzE3OEUxQzAwNjkwQzdGIC8qIEZUTFRodW5r
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTkzQ0Y3QzE4NDAzNjAzMDBCRkNFMjcgLyogSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
ZWI0MmY1Y2M0MzNmMTYzNjM0M2JmYzk4MmFhMmFhZmIzMzZlOTQ5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcwpAQCAt
MCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworZnVuY3Rpb24gZXZlcnkoY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pIHsKKyAgICAidXNlIHN0
cmljdCI7CisgICAgaWYgKHRoaXMgPT09IG51bGwpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVy
cm9yKCJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51
bGwiKTsKKyAgICAKKyAgICBpZiAodGhpcyA9PT0gdW5kZWZpbmVkKQorICAgICAgICB0aHJvdyBu
ZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8
IG5vdCBiZSB1bmRlZmluZWQiKTsKKyAgICAKKyAgICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMp
OworICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGggPj4+IDA7CisgICAgCisgICAgaWYgKHR5
cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJy
b3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsK
KworICAgIHZhciB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0g
OiB1bmRlZmluZWQ7CisgICAgCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykg
eworICAgICAgICBpZiAoIShpIGluIGFycmF5KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBpZiAoIWNhbGxiYWNrLkBjYWxsKHRoaXNBcmcsIGFycmF5W2ldLCBpLCBhcnJheSkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHJldHVybiB0cnVlOwor
fQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0MWRiYjVmOTIyNWUyOGExMmVkM2QxNzk4ZmYxNzY4
ZTQzNjcxYTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgi
CisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVz
LmgiCisjaW5jbHVkZSAiUGFyc2VyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitCdWlsdGluRXhl
Y3V0YWJsZXM6OkJ1aWx0aW5FeGVjdXRhYmxlcyhWTSYgdm0pCisgICAgOiBtX3ZtKHZtKQorI2Rl
ZmluZSBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1l
LCBsZW5ndGgpICwgbV8jI25hbWUjI1NvdXJjZShtYWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0
ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgpLCBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0
ZXJhbCgiPGJ1aWx0aW4+IikpKQorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4oSU5JVElBTElaRV9C
VUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX1NUUklOR1MKK3sK
K30KKworVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3Jl
YXRlQnVpbHRpbkV4ZWN1dGFibGUoY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lKQoreworICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmU7CisgICAgUGFyc2VyRXJyb3IgZXJyb3I7CisgICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBw
cm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KCZtX3ZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIo
KSwgSlNQYXJzZUJ1aWx0aW4sIEpTUGFyc2VQcm9ncmFtQ29kZSwgZXJyb3IsICZwb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lKTsKKworICAgIGlmICghcHJvZ3JhbSkgeworICAgICAgICBkYXRhTG9n
KCJGYXRhbCBlcnJvciBjb21waWxpbmcgYnVpbHRpbiBmdW5jdGlvbiAnIiwgbmFtZS5zdHJpbmco
KSwgIic6ICIsIGVycm9yLm1fbWVzc2FnZSk7CisgICAgICAgIENSQVNIKCk7CisgICAgfQorCisg
ICAgU3RhdGVtZW50Tm9kZSogZXhwclN0YXRlbWVudCA9IHByb2dyYW0tPnNpbmdsZVN0YXRlbWVu
dCgpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQpOworICAgIFJFTEVBU0VfQVNT
RVJUKGV4cHJTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKKyAgICBFeHByZXNzaW9uTm9k
ZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVtZW50Tm9kZSo+KGV4cHJTdGF0ZW1l
bnQpLT5leHByKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHIpOworICAgIFJFTEVBU0Vf
QVNTRVJUKGZ1bmNFeHByLT5pc0Z1bmNFeHByTm9kZSgpKTsKKyAgICBGdW5jdGlvbkJvZHlOb2Rl
KiBib2R5ID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZnVuY0V4cHIpLT5ib2R5KCk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoIXByb2dyYW0tPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpOworICAg
IAorICAgIGJvZHktPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKGJvZHkpOworICAgIFJFTEVBU0VfQVNTRVJUKGJvZHktPmlkZW50
KCkuaXNOdWxsKCkpOworICAgIAorICAgIC8vIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBhbiBpbnB1
dCBzdHJpbmcgdGhhdCB3b3VsZCByZXN1bHQgaW4gYSBzaW5nbGUgYW5vbnltb3VzIGZ1bmN0aW9u
IGV4cHJlc3Npb24uCisgICAgYm9keS0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keSk7CisgICAgZm9yIChjb25zdCBhdXRv
JiBjbG9zZWRWYXJpYWJsZSA6IHByb2dyYW0tPmNsb3NlZFZhcmlhYmxlcygpKSB7CisgICAgICAg
IGlmIChjbG9zZWRWYXJpYWJsZSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cy5pbXBs
KCkpCisgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgaWYgKGNsb3NlZFZhcmlh
YmxlID09IG1fdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZC5pbXBsKCkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2xvc2VkVmFyaWFibGUt
PmlzRW1wdHlVbmlxdWUoKSk7CisgICAgfQorICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRl
KCZtX3ZtLCBzb3VyY2UsIGJvZHksIHRydWUsIFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uKTsKKyAg
ICBmdW5jdGlvbkV4ZWN1dGFibGUtPm1fbmFtZVZhbHVlLnNldChtX3ZtLCBmdW5jdGlvbkV4ZWN1
dGFibGUsIGpzU3RyaW5nKCZtX3ZtLCBuYW1lLnN0cmluZygpKSk7CisgICAgcmV0dXJuIGZ1bmN0
aW9uRXhlY3V0YWJsZTsKK30KKworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUyhu
YW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IEJ1aWx0aW5FeGVjdXRhYmxlczo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK3tcCisgICAgaWYgKCFt
XyMjbmFtZSMjRXhlY3V0YWJsZSlcCisgICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gY3Jl
YXRlQnVpbHRpbkV4ZWN1dGFibGUobV8jI25hbWUjI1NvdXJjZSwgbV92bS5wcm9wZXJ0eU5hbWVz
LT5mdW5jdGlvbk5hbWUpO1wKKyAgICByZXR1cm4gbV8jI25hbWUjI0V4ZWN1dGFibGUuZ2V0KCk7
XAorfQorSlNDX0ZPUkVBQ0hfQlVJTFRJTihERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1
bmRlZiBFWFBPU0VfQlVJTFRJTl9TT1VSQ0VTCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOWExOWUy
NjE1MDc5NGE2NjllYzk4ZTM5OWJmNjdmN2Y3MTA2NDE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCkBAIC0wLDAg
KzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEJ1aWx0aW5FeGVjdXRhYmxlc19oCisjZGVmaW5lIEJ1aWx0aW5FeGVjdXRhYmxlc19o
CisKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgorI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKKyNp
bmNsdWRlICJXZWFrLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgSWRlbnRp
ZmllcjsKK2NsYXNzIFZNOworCitjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXMgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEJ1aWx0aW5FeGVjdXRhYmxlcz4gY3JlYXRlKFZNJiB2bSkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQnVpbHRpbkV4ZWN1dGFibGVzKHZt
KSk7CisgICAgfQorICAgIAorI2RlZmluZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1l
LCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5h
bWUjI0V4ZWN1dGFibGUoKTsgXAorY29uc3QgU291cmNlQ29kZSYgbmFtZSMjU291cmNlKCkgeyBy
ZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsgfQorICAgIAorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4o
RVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgRVhQT1NFX0JVSUxUSU5fU09VUkNF
UworICAgIAorcHJpdmF0ZToKKyAgICBCdWlsdGluRXhlY3V0YWJsZXMoVk0mKTsKKyAgICBWTSYg
bV92bTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1
dGFibGUoY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImKTsKKyNkZWZpbmUgREVD
TEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKVwK
KyAgICBTb3VyY2VDb2RlIG1fIyNuYW1lIyNTb3VyY2U7IFwKKyAgICBXZWFrPFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlPiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKKyAgICBKU0NfRk9SRUFDSF9C
VUlMVElOKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JV
SUxUSU5fU09VUkNFX01FTUJFUlMKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDI2M2VjN2NhZGY0Zjc5Y2E4MTAy
NDQxZTYyYmYyYTA1YjVkZGMzZjIuLjc1MTUwNjU0MjM3NmQ3ZWRjNTk5YWEwMGY5YjEyNjg1Y2Rh
MzUyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CkBAIC00MywxMSArNDMsMTMgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRTdHVi
cy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgotI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIK
KyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludC5oIgog
I2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJOYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJP
cGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5oIgogI2luY2x1
ZGUgIlJlZHVjZVdoaXRlc3BhY2UuaCIKQEAgLTE1NjksNyArMTU3MSw3IEBAIENvZGVCbG9jazo6
Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2Rl
QmxvY2sqIHVubGluCiAKICAgICBzZXRDb25zdGFudFJlZ2lzdGVycyh1bmxpbmtlZENvZGVCbG9j
ay0+Y29uc3RhbnRSZWdpc3RlcnMoKSk7CiAgICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT51c2Vz
R2xvYmFsT2JqZWN0KCkpCi0gICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnNbdW5saW5rZWRDb2Rl
QmxvY2stPmdsb2JhbE9iamVjdFJlZ2lzdGVyKCkub2Zmc2V0KCldLnNldCgqbV92bSwgb3duZXJF
eGVjdXRhYmxlLCBtX2dsb2JhbE9iamVjdC5nZXQoKSk7CisgICAgICAgIG1fY29uc3RhbnRSZWdp
c3RlcnNbdW5saW5rZWRDb2RlQmxvY2stPmdsb2JhbE9iamVjdFJlZ2lzdGVyKCkudG9Db25zdGFu
dEluZGV4KCldLnNldCgqbV92bSwgb3duZXJFeGVjdXRhYmxlLCBtX2dsb2JhbE9iamVjdC5nZXQo
KSk7CiAgICAgbV9mdW5jdGlvbkRlY2xzLnJlc2l6ZVRvRml0KHVubGlua2VkQ29kZUJsb2NrLT5u
dW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSk7CiAgICAgZm9yIChzaXplX3QgY291bnQgPSB1bmxpbmtl
ZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCksIGkgPSAwOyBpIDwgY291bnQ7ICsr
aSkgewogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRh
YmxlID0gdW5saW5rZWRDb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA2OGJjMDM3OWY1NzQ0YzlhOGY3NDMx
ZGI2NGY4YWI1NGU2ZTEwNTNmLi40OTk1YzUyY2Y4YjJiMWI0ZDYyODA0NTNlZWQyN2M3NzRhNDk1
NThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC01
Niw3ICs1Niw2IEBACiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIKICNpbmNsdWRlICJPYmplY3RB
bGxvY2F0aW9uUHJvZmlsZS5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKLSNpbmNsdWRlICJPcGVy
YXRpb25zLmgiCiAjaW5jbHVkZSAiUHV0UHJvcGVydHlTbG90LmgiCiAjaW5jbHVkZSAiSW5zdHJ1
Y3Rpb24uaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0
dGlzb25pbmdXYXRjaHBvaW50LmNwcAppbmRleCA5ODZlMDNkMGNiYTcxODViMzljZWUwMjNmNGFi
NmJjOWI4Y2NiNmU0Li43MGVmOWI0MjkwMWMwNThiYzcyYzlkYjkyZGNjMzNkNTNkNmJhYWM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxv
Y2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdDb21tb24u
aCIKICNpbmNsdWRlICJERkdFeGl0UHJvZmlsZS5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMu
aCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDFkZmI1YWM2YWQ5MDkzZjhmODEx
MDFlZjdmMmU2MTIzMTFhYzE5MzkuLjQzMzkwZDk2NWZjNTAzNDAxNmY3YmZmZjIzZTY4YmIxZTA1
NDU1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmNwcApAQCAtNDksOSArNDksOSBAQCBjb25zdCBDbGFzc0luZm8gVW5saW5r
ZWRQcm9ncmFtQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2si
LAogY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkRXZhbENvZGVCbG9jazo6c19pbmZvID0geyAiVW5s
aW5rZWRFdmFsQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShVbmxpbmtlZEV2YWxDb2RlQmxvY2spIH07CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayIs
ICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jaykgfTsKIAotc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVy
YXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxl
ck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikKK3N0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKiBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKFZNJiB2bSwgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1v
ZGUgcHJvZmlsZXJNb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBmdW5jdGlvbktpbmQsIFBhcnNl
ckVycm9yJiBlcnJvcikKIHsKLSAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSA9IHBh
cnNlPEZ1bmN0aW9uQm9keU5vZGU+KCZ2bSwgc291cmNlLCBleGVjdXRhYmxlLT5wYXJhbWV0ZXJz
KCksIGV4ZWN1dGFibGUtPm5hbWUoKSwgZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/
IEpTUGFyc2VTdHJpY3QgOiBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlRnVuY3Rpb25Db2RlLCBlcnJv
cik7CisgICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGJvZHkgPSBwYXJzZTxGdW5jdGlvbkJv
ZHlOb2RlPigmdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+cGFyYW1ldGVycygpLCBleGVjdXRhYmxl
LT5uYW1lKCksIGV4ZWN1dGFibGUtPnRvU3RyaWN0bmVzcygpLCBKU1BhcnNlRnVuY3Rpb25Db2Rl
LCBlcnJvcik7CiAKICAgICBpZiAoIWJvZHkpIHsKICAgICAgICAgQVNTRVJUKGVycm9yLm1fdHlw
ZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZt
LCBVbmxpbmtlZEZ1bmMKICAgICBib2R5LT5maW5pc2hQYXJzaW5nKGV4ZWN1dGFibGUtPnBhcmFt
ZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT5mdW5jdGlvbk5hbWVJc0lu
U2NvcGVUb2dnbGUoKSk7CiAgICAgZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2UoYm9keS0+ZmVhdHVy
ZXMoKSwgYm9keS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCi0gICAgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3Jl
YXRlKCZ2bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5mbyhib2R5LT5uZWVkc0FjdGl2YXRp
b24oKSwgYm9keS0+dXNlc0V2YWwoKSwgYm9keS0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29k
ZUZvckNvbnN0cnVjdCkpOworICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmdm0sIEZ1bmN0aW9uQ29kZSwgRXhl
Y3V0YWJsZUluZm8oYm9keS0+bmVlZHNBY3RpdmF0aW9uKCksIGJvZHktPnVzZXNFdmFsKCksIGJv
ZHktPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2lu
ZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbikpOwogICAgIE93blB0cjxCeXRlY29kZUdlbmVy
YXRvcj4gZ2VuZXJhdG9yKGFkb3B0UHRyKG5ldyBCeXRlY29kZUdlbmVyYXRvcih2bSwgYm9keS5n
ZXQoKSwgcmVzdWx0LCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSkpKTsKICAgICBlcnJvciA9
IGdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKICAgICBib2R5LT5kZXN0cm95RGF0YSgpOwpAQCAtODIs
MTMgKzgyLDE0IEBAIHVuc2lnbmVkIFVubGlua2VkQ29kZUJsb2NrOjphZGRPckZpbmRDb25zdGFu
dChKU1ZhbHVlIHYpCiAgICAgcmV0dXJuIGFkZENvbnN0YW50KHYpOwogfQogCi1VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlO
b2RlKiBub2RlLCBib29sIGlzRnJvbUdsb2JhbENvZGUpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlLCBi
b29sIGlzRnJvbUdsb2JhbENvZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQpCiAgICAgOiBC
YXNlKCp2bSwgc3RydWN0dXJlKQogICAgICwgbV9udW1DYXB0dXJlZFZhcmlhYmxlcyhub2RlLT5j
YXB0dXJlZFZhcmlhYmxlQ291bnQoKSkKICAgICAsIG1fZm9yY2VVc2VzQXJndW1lbnRzKG5vZGUt
PnVzZXNBcmd1bWVudHMoKSkKICAgICAsIG1faXNJblN0cmljdENvbnRleHQobm9kZS0+aXNTdHJp
Y3RNb2RlKCkpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKG5vZGUtPmhhc0NhcHR1cmVk
VmFyaWFibGVzKCkpCiAgICAgLCBtX2lzRnJvbUdsb2JhbENvZGUoaXNGcm9tR2xvYmFsQ29kZSkK
KyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oa2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlv
bikKICAgICAsIG1fbmFtZShub2RlLT5pZGVudCgpKQogICAgICwgbV9pbmZlcnJlZE5hbWUobm9k
ZS0+aW5mZXJyZWROYW1lKCkpCiAgICAgLCBtX3BhcmFtZXRlcnMobm9kZS0+cGFyYW1ldGVycygp
KQpAQCAtMTY2LDcgKzE2Nyw3IEBAIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tGb3IoVk0mIHZtLCBjb25zCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIAotICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IGdl
bmVyYXRlRnVuY3Rpb25Db2RlQmxvY2sodm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lhbGl6YXRpb25L
aW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IpOworICAgIFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2sodm0sIHRo
aXMsIHNvdXJjZSwgc3BlY2lhbGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9k
ZSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5r
ZWROb3JtYWxGdW5jdGlvbiwgZXJyb3IpOwogICAgIAogICAgIGlmIChlcnJvci5tX3R5cGUgIT0g
UGFyc2VyRXJyb3I6OkVycm9yTm9uZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMTAsNiArMjEx
LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1faXNTdHJpY3RNb2RlKGluZm8u
bV9pc1N0cmljdE1vZGUpCiAgICAgLCBtX2lzQ29uc3RydWN0b3IoaW5mby5tX2lzQ29uc3RydWN0
b3IpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGZhbHNlKQorICAgICwgbV9pc0J1aWx0
aW5GdW5jdGlvbihpbmZvLm1faXNCdWlsdGluRnVuY3Rpb24pCiAgICAgLCBtX2ZpcnN0TGluZSgw
KQogICAgICwgbV9saW5lQ291bnQoMCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApp
bmRleCBiOWRhZTJkNWM2OWM3OWNlYWFhODAyM2QyYTNhMWYyNmQ0NjA5NDNiLi5hYmY2Y2YzNWI5
MzA2YTRmN2EzMDFhYjBkZjc2NjZlYzYxMmUzNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtNjYsMjYgKzY2LDM1IEBA
IHR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTsKIHR5cGVk
ZWYgdW5zaWduZWQgVW5saW5rZWRMTEludENhbGxMaW5rSW5mbzsKIAogc3RydWN0IEV4ZWN1dGFi
bGVJbmZvIHsKLSAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1
c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvcikKKyAgICBFeGVj
dXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0
cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbikKICAg
ICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2YXRpb24pCiAgICAgICAgICwgbV91
c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0cmljdE1vZGUp
CiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3RydWN0b3IpCisgICAgICAgICwgbV9p
c0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikKICAgICB7CiAgICAgfQotICAgIGJv
b2wgbV9uZWVkc0FjdGl2YXRpb247Ci0gICAgYm9vbCBtX3VzZXNFdmFsOwotICAgIGJvb2wgbV9p
c1N0cmljdE1vZGU7Ci0gICAgYm9vbCBtX2lzQ29uc3RydWN0b3I7CisgICAgYm9vbCBtX25lZWRz
QWN0aXZhdGlvbiA6IDE7CisgICAgYm9vbCBtX3VzZXNFdmFsIDogMTsKKyAgICBib29sIG1faXNT
dHJpY3RNb2RlIDogMTsKKyAgICBib29sIG1faXNDb25zdHJ1Y3RvciA6IDE7CisgICAgYm9vbCBt
X2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKK307CisKK2VudW0gVW5saW5rZWRGdW5jdGlvbktpbmQg
eworICAgIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sCisgICAgVW5saW5rZWRCdWlsdGluRnVuY3Rp
b24sCiB9OwogCiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBKU0Nl
bGwgewogcHVibGljOgorICAgIGZyaWVuZCBjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXM7CiAgICAg
ZnJpZW5kIGNsYXNzIENvZGVDYWNoZTsKKyAgICBmcmllbmQgY2xhc3MgVk07CiAgICAgdHlwZWRl
ZiBKU0NlbGwgQmFzZTsKLSAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNy
ZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSog
bm9kZSwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlID0gZmFsc2UpCisgICAgc3RhdGljIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSwgVW5saW5r
ZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQpCiAgICAgewotICAgICAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhlYXApKSBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJl
LmdldCgpLCBzb3VyY2UsIG5vZGUsIGlzRnJvbUdsb2JhbENvZGUpOworICAgICAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhlYXApKSBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdl
dCgpLCBzb3VyY2UsIG5vZGUsIGlzRnJvbUdsb2JhbENvZGUsIHVubGlua2VkRnVuY3Rpb25LaW5k
KTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2bSk7CiAgICAgICAgIHJldHVy
biBpbnN0YW5jZTsKICAgICB9CkBAIC05OSw2ICsxMDgsMTQgQEAgcHVibGljOgogICAgIH0KICAg
ICBzaXplX3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdDsKICAgICBib29sIGlzSW5TdHJpY3RDb250
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQorICAgIEpTUGFyc2Vy
U3RyaWN0bmVzcyB0b1N0cmljdG5lc3MoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1faXNC
dWlsdGluRnVuY3Rpb24pCisgICAgICAgICAgICByZXR1cm4gSlNQYXJzZUJ1aWx0aW47CisgICAg
ICAgIGlmIChtX2lzSW5TdHJpY3RDb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuIEpTUGFyc2VT
dHJpY3Q7CisgICAgICAgIHJldHVybiBKU1BhcnNlTm9ybWFsOworICAgIH0KICAgICBGdW5jdGlv
bk5hbWVJc0luU2NvcGVUb2dnbGUgZnVuY3Rpb25OYW1lSXNJblNjb3BlVG9nZ2xlKCkgY29uc3Qg
eyByZXR1cm4gbV9mdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGU7IH0KIAogICAgIHVuc2lnbmVk
IGZpcnN0TGluZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RMaW5lT2Zmc2V0OyB9CkBA
IC0xNDIsOCArMTU5LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJbW1v
cnRhbFN0cnVjdHVyZSA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsK
IAorICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRp
bkZ1bmN0aW9uOyB9CisKIHByaXZhdGU6Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUo
Vk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGJv
b2wgaXNGcm9tR2xvYmFsQ29kZSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0q
LCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGJvb2wg
aXNGcm9tR2xvYmFsQ29kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQpOwogICAgIFdyaXRlQmFycmll
cjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX2NvZGVCbG9ja0ZvckNhbGw7CiAgICAgV3Jp
dGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fY29kZUJsb2NrRm9yQ29uc3Ry
dWN0OwogCkBAIC0xNTIsNiArMTcxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNJblN0cmlj
dENvbnRleHQgOiAxOwogICAgIGJvb2wgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAg
Ym9vbCBtX2lzRnJvbUdsb2JhbENvZGUgOiAxOworICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlv
biA6IDE7CiAKICAgICBJZGVudGlmaWVyIG1fbmFtZTsKICAgICBJZGVudGlmaWVyIG1faW5mZXJy
ZWROYW1lOwpAQCAtMzE5LDYgKzMzOSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzTnVtZXJp
Y0NvbXBhcmVGdW5jdGlvbihib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbikgeyBtX2lzTnVt
ZXJpY0NvbXBhcmVGdW5jdGlvbiA9IGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQogICAgIGJv
b2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc051bWVyaWND
b21wYXJlRnVuY3Rpb247IH0KIAorICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisgICAgCiAgICAgdm9pZCBzaHJpbmtUb0Zp
dCgpCiAgICAgewogICAgICAgICBtX2p1bXBUYXJnZXRzLnNocmlua1RvRml0KCk7CkBAIC01MDAs
NiArNTIyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNTdHJpY3RNb2RlIDogMTsKICAgICBi
b29sIG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAgYm9vbCBtX2hhc0NhcHR1cmVkVmFyaWFibGVz
IDogMTsKKyAgICBib29sIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1f
Zmlyc3RMaW5lOwogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50OwogICAgIHVuc2lnbmVkIG1fZW5k
Q29sdW1uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2ODEwYWI4MDAyY2U2YmI4ZDc4ZTdmZjIyMjdm
NGM2ZWE3Yjc1OGMyLi5lYzUyMWI1MzA0NjM5MjNlNzRjMDEwZmEyMThlNTllZDJhOWEzY2FlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcApAQCAtMTc1LDYgKzE3NSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5r
ZWRQCiAjZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAgICAgLCBtX2V4cHJl
c3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihmYWxzZSkKIHsK
ICAgICBpZiAobV9zaG91bGRFbWl0RGVidWdIb29rcykKICAgICAgICAgbV9jb2RlQmxvY2stPnNl
dE5lZWRzRnVsbFNjb3BlQ2hhaW4odHJ1ZSk7CkBAIC0yMjIsNyArMjIzLDEzIEBAIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uQm9keU5vZGUqIGZ1
bmN0aW9uQm9keSwgVW5sCiAjZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAg
ICAgLCBtX2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlv
bihjb2RlQmxvY2stPmlzQnVpbHRpbkZ1bmN0aW9uKCkpCiB7CisgICAgaWYgKG1faXNCdWlsdGlu
RnVuY3Rpb24pIHsKKyAgICAgICAgbV9zaG91bGRFbWl0UHJvZmlsZUhvb2tzID0gZmFsc2U7Cisg
ICAgICAgIG1fc2hvdWxkRW1pdERlYnVnSG9va3MgPSBmYWxzZTsKKyAgICB9CisKICAgICBpZiAo
bV9zaG91bGRFbWl0RGVidWdIb29rcykKICAgICAgICAgbV9jb2RlQmxvY2stPnNldE5lZWRzRnVs
bFNjb3BlQ2hhaW4odHJ1ZSk7CiAKQEAgLTQzOCw2ICs0NDUsNyBAQCBCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2Vk
RXZhbENvZAogI2VuZGlmCiAgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQogICAgICwgbV9l
eHByZXNzaW9uVG9vRGVlcChmYWxzZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oZmFsc2Up
CiB7CiAgICAgbV9jb2RlQmxvY2stPnNldE5lZWRzRnVsbFNjb3BlQ2hhaW4odHJ1ZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAppbmRleCA0ZTlmMjEzYzliZmE2Y2YxOTRiMWExNGZlOTE5ZTgzMzM3YWUzNWQ5Li4x
NTg0Mjc0Yjc4ZWE2YzBiZDBlZmIwYjk4MjVjODE4YmUwZGJjMDY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBA
IC00NjEsNyArNDYxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgc2hvdWxkRW1p
dERlYnVnSG9va3MoKSB7IHJldHVybiBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzOyB9CiAgICAgICAg
IAogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2Nr
LT5pc1N0cmljdE1vZGUoKTsgfQotCisgICAgICAgIAorICAgICAgICBib29sIGlzQnVpbHRpbkZ1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQorICAgICAgICAK
ICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTGFiZWw7CiAgICAgICAgIApAQCAt
NTQzLDcgKzU0NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG1ha2VGdW5jdGlvbihGdW5jdGlvbkJvZHlOb2RlKiBib2R5
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIGJvZHkpOworICAgICAgICAg
ICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29w
ZU5vZGUtPnNvdXJjZSgpLCBib2R5LCBmYWxzZSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlu
a2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbik7CiAgICAgICAgIH0K
IAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SW5pdExhenlSZWdpc3RlcihSZWdpc3RlcklEKik7
CkBAIC02NzcsNiArNjc5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBtX3Vz
ZXNFeGNlcHRpb25zOwogICAgICAgICBib29sIG1fZXhwcmVzc2lvblRvb0RlZXA7CisgICAgICAg
IGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlvbjsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMWZmZDRm
MzExODgyZDBlZTVjNTUxNGY1YjhiMjU5MzlkOTc1ZTM3OS4uNjJlY2EzNmExMGQ3NzA4YTkyOGQ0
M2FjMDNmMmZjODYxNWNlY2E3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjYsMTAgKzI2LDEwIEBACiAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgotI2luY2x1ZGUgIk5vZGVDb25zdHJ1
Y3RvcnMuaCIKIAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ2Fs
bEZyYW1lLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJEZWJ1
Z2dlci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTM4
LDYgKzM4LDcgQEAKICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiTGFiZWxTY29w
ZS5oIgogI2luY2x1ZGUgIkxleGVyLmgiCisjaW5jbHVkZSAiTm9kZUNvbnN0cnVjdG9ycy5oIgog
I2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRlICJQ
cm9wZXJ0eU5hbWVBcnJheS5oIgpAQCAtNTM1LDM2ICs1MzYsMzkgQEAgUmVnaXN0ZXJJRCogQ2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLAogICAgIFJlZlB0cjxMYWJlbD4gZW5kID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9iYXNlKTsK
ICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBz
dWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBE
ZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBtX2lkZW50KTsKKyAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0
aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmNhbGwp
OwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERl
c3RpbmF0aW9uKGRzdCwgZnVuY3Rpb24uZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SnVtcElm
Tm90RnVuY3Rpb25DYWxsKGZ1bmN0aW9uLmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7CisgICAgYm9v
bCBlbWl0Q2FsbENoZWNrID0gIWdlbmVyYXRvci5pc0J1aWx0aW5GdW5jdGlvbigpOworICAgIGlm
IChlbWl0Q2FsbENoZWNrKQorICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9u
Q2FsbChmdW5jdGlvbi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkpOworCiAgICAgewogICAgICAgICBp
ZiAobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKSB7CiAg
ICAgICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2Rl
OwogICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5t
X25leHQ7Ci0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJl
YWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9u
KGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1l
bnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShj
YWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwogICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0
KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0
KCkpOwotCiAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBvbGRMaXN0OwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9
IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2Uu
Z2V0KCkpOwogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRv
ciwgbV9hcmdzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRz
LnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVk
RnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKICAgICAgICAg
fQogICAgIH0KLSAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKLSAgICB7
Ci0gICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7
Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBiYXNlLmdldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdl
dCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBk
aXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIGlmIChlbWl0Q2FsbENoZWNr
KSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKKyAgICAgICAgeworICAgICAgICAgICAg
Q2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNl
LmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQo
KSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgfQorICAgICAgICBnZW5l
cmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFi
ZWwoZW5kLmdldCgpKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWUuZ2V0KCk7CiB9CiAKQEAgLTU4
NSw2NSArNTg5LDY3IEBAIFJlZ2lzdGVySUQqIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgUmVmUHRyPExhYmVs
PiBlbmQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFz
ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVz
c2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Npb25TdGFydCgpLCBzdWJl
eHByZXNzaW9uRW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbiA9IGdlbmVy
YXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0
KCksIG1faWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbjsKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihk
c3QsIGZ1bmN0aW9uLmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9u
QXBwbHkoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKLSAgICB7Ci0gICAgICAgIGlm
IChtYXlCZUNhbGwpIHsKLSAgICAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9h
cmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpIHsKLSAgICAgICAgICAgICAgICBBcmd1bWVudExpc3RO
b2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2RlOwotICAgICAgICAgICAgICAgIGlmICht
X2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCkgewotICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
bV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwci0+aXNTaW1wbGVBcnJheSgpKTsKLSAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9u
ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gc3RhdGljX2Nh
c3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwciktPnRvQXJn
dW1lbnRMaXN0KGdlbmVyYXRvci52bSgpLCAwLCAwKTsKLSAgICAgICAgICAgICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0
b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAgICAgICAgICAg
ICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0
ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRG
dW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBtX2FyZ3Mt
Pm1fbGlzdE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKLSAgICAgICAgICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92
ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAg
ICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3Mp
OwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50
aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5v
RXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbV9hcmdzLT5t
X2xpc3ROb2RlID0gb2xkTGlzdDsKKyAgICBib29sIGVtaXRDYWxsQ2hlY2sgPSAhZ2VuZXJhdG9y
LmlzQnVpbHRpbkZ1bmN0aW9uKCk7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKKyAgICAgICAg
ZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlv
bihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmFwcGx5KTsKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KGZ1bmN0aW9uLmdldCgp
LCByZWFsQ2FsbC5nZXQoKSk7CisgICAgfQorICAgIGlmIChtYXlCZUNhbGwpIHsKKyAgICAgICAg
aWYgKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcikgewor
ICAgICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogb2xkTGlzdCA9IG1fYXJncy0+bV9saXN0Tm9k
ZTsKKyAgICAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCkgeworICAgICAg
ICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByLT5pc1Np
bXBsZUFycmF5KCkpOworICAgICAgICAgICAgICAgIEFTU0VSVCghbV9hcmdzLT5tX2xpc3ROb2Rl
LT5tX25leHQtPm1fbmV4dCk7CisgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0g
c3RhdGljX2Nhc3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhw
ciktPnRvQXJndW1lbnRMaXN0KGdlbmVyYXRvci52bSgpLCAwLCAwKTsKKyAgICAgICAgICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdl
bmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CisgICAgICAgICAgICAg
ICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIo
KSwgb2xkTGlzdC0+bV9leHByKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwo
cmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9u
LCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBt
X2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVz
dGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50
cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAgICAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQo
KSk7CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhp
c1JlZ2lzdGVyKCksIG9sZExpc3QtPm1fZXhwcik7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0
ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9s
ZExpc3Q7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9hcmdzLT5tX2xp
c3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KTsKLSAgICAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBwcm9maWxlSG9va1JlZ2lzdGVyOwotICAgICAgICAgICAgaWYgKGdlbmVy
YXRvci5zaG91bGRFbWl0UHJvZmlsZUhvb2tzKCkpCi0gICAgICAgICAgICAgICAgcHJvZmlsZUhv
b2tSZWdpc3RlciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9y
LnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKLSAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiB0aGlzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9hcmdzLT5tX2xp
c3ROb2RlLT5tX2V4cHIpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFyZ3NSZWdp
c3RlcjsKLSAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MgPSBtX2FyZ3MtPm1fbGlz
dE5vZGUtPm1fbmV4dDsKLSAgICAgICAgICAgIGlmIChhcmdzLT5tX2V4cHItPmlzUmVzb2x2ZU5v
ZGUoKSAmJiBnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50cyhzdGF0aWNfY2FzdDxSZXNv
bHZlTm9kZSo+KGFyZ3MtPm1fZXhwciktPmlkZW50aWZpZXIoKSkpCi0gICAgICAgICAgICAgICAg
YXJnc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLnVuY2hlY2tlZFJlZ2lzdGVyRm9yQXJndW1lbnRzKCk7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJh
dG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7Ci0KLSAgICAgICAgICAgIC8vIEZ1bmN0aW9uLnBy
b3RvdHlwZS5hcHBseSBpZ25vcmVzIGV4dHJhIGFyZ3VtZW50cywgYnV0IHdlIHN0aWxsCi0gICAg
ICAgICAgICAvLyBuZWVkIHRvIGV2YWx1YXRlIHRoZW0gZm9yIHNpZGUgZWZmZWN0cy4KLSAgICAg
ICAgICAgIHdoaWxlICgoYXJncyA9IGFyZ3MtPm1fbmV4dCkpCi0gICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7Ci0KLSAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0Q2FsbFZhcmFyZ3MocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgdGhp
c1JlZ2lzdGVyLmdldCgpLCBhcmdzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKSwgcHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5l
cmF0b3IsIG1fYXJncyk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3Vt
ZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwogICAgICAgICB9Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9h
cmdzLT5tX2xpc3ROb2RlLT5tX25leHQpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJv
ZmlsZUhvb2tSZWdpc3RlcjsKKyAgICAgICAgaWYgKGdlbmVyYXRvci5zaG91bGRFbWl0UHJvZmls
ZUhvb2tzKCkpCisgICAgICAgICAgICBwcm9maWxlSG9va1JlZ2lzdGVyID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0g
Z2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5n
ZXQoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzUmVnaXN0ZXIgPSBnZW5lcmF0
b3IuZW1pdE5vZGUobV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpOworICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gYXJnc1JlZ2lzdGVyOworICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBhcmdz
ID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQ7CisgICAgICAgIGlmIChhcmdzLT5tX2V4cHIt
PmlzUmVzb2x2ZU5vZGUoKSAmJiBnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50cyhzdGF0
aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGFyZ3MtPm1fZXhwciktPmlkZW50aWZpZXIoKSkpCisgICAg
ICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IudW5jaGVja2VkUmVnaXN0ZXJGb3JBcmd1
bWVudHMoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJh
dG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7CisKKyAgICAgICAgLy8gRnVuY3Rpb24ucHJvdG90
eXBlLmFwcGx5IGlnbm9yZXMgZXh0cmEgYXJndW1lbnRzLCBidXQgd2Ugc3RpbGwKKyAgICAgICAg
Ly8gbmVlZCB0byBldmFsdWF0ZSB0aGVtIGZvciBzaWRlIGVmZmVjdHMuCisgICAgICAgIHdoaWxl
ICgoYXJncyA9IGFyZ3MtPm1fbmV4dCkpCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUo
YXJncy0+bV9leHByKTsKKworICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxWYXJhcmdzKHJldHVy
blZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJn
c1JlZ2lzdGVyLmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb2ZpbGVIb29rUmVn
aXN0ZXIuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgfQot
ICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOwotICAgIHsKKyAgICBpZiAo
ZW1pdENhbGxDaGVjaykgeworICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChyZWFsQ2FsbC5nZXQoKSk7CiAgICAgICAgIENh
bGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgIGdl
bmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgp
KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlv
bi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5n
ZXQoKSk7CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICBy
ZXR1cm4gcmV0dXJuVmFsdWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVf
aGFzaF90YWJsZQppbmRleCAzOTc5NzZiMDZjN2E5YjU4MzYzMzI5MDBhNmViYjkzZWM2OGI3NDg2
Li5jYWQ2NWJjNGNjODg4ZTMxNGY4OGQ2NjVkZDRhNmU2NDVhMDlhMzU1IDEwMDc1NQotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlCkBAIC0yODksNyArMjg5LDE3IEBAIHN1YiBvdXRw
dXQoKSB7CiAgICAgICAgICAgICAkaW50cmluc2ljID0gIlJlZ0V4cFRlc3RJbnRyaW5zaWMiIGlm
ICgka2V5IGVxICJ0ZXN0Iik7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoJHZhbHVlc1skaV17
InR5cGUifSBlcSAiRnVuY3Rpb24iKSAgeworICAgICAgICAgICAgbXkgJHRhYmxlSGVhZCA9ICRu
YW1lOworICAgICAgICAgICAgJHRhYmxlSGVhZCA9fiBzL1RhYmxlJC8vOworICAgICAgICAgICAg
cHJpbnQgIiAjaWYgSlNDX0JVSUxUSU5fRVhJU1RTKCIgLiB1YygkdGFibGVIZWFkIC4gJGtleSkg
LiIpXG4iOworICAgICAgICAgICAgcHJpbnQgIiAgIHsgXCIka2V5XCIsICgoJGF0dHJzWyRpXSkg
JiB+RnVuY3Rpb24pIHwgQnVpbHRpbiwgJGludHJpbnNpYywgKGludHB0cl90KXN0YXRpY19jYXN0
PEJ1aWx0aW5HZW5lcmF0b3I+KCIgLiAkdGFibGVIZWFkIC4gdWNmaXJzdCgka2V5KSAuICJDb2Rl
R2VuZXJhdG9yKSwgKGludHB0cl90KSRzZWNvbmRWYWx1ZSB9LFxuIjsKKyAgICAgICAgICAgIHBy
aW50ICIgI2Vsc2VcbiIKKyAgICAgICAgfQogICAgICAgICBwcmludCAiICAgeyBcIiRrZXlcIiwg
JGF0dHJzWyRpXSwgJGludHJpbnNpYywgKGludHB0cl90KSIgLiAkZmlyc3RDYXN0U3RyIC4gIigk
Zmlyc3RWYWx1ZSksIChpbnRwdHJfdCkiIC4gJHNlY29uZENhc3RTdHIgLiAiKCRzZWNvbmRWYWx1
ZSkgfSxcbiI7CisgICAgICAgIGlmICgkdmFsdWVzWyRpXXsidHlwZSJ9IGVxICJGdW5jdGlvbiIp
ICB7CisgICAgICAgICAgICBwcmludCAiICNlbmRpZlxuIgorICAgICAgICB9CiAgICAgICAgICRp
Kys7CiAgICAgfQogICAgIHByaW50ICIgICB7IDAsIDAsIE5vSW50cmluc2ljLCAwLCAwIH1cbiI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWluYXRvcnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb21pbmF0b3JzLmNwcAppbmRleCBhNWFl
NjE0YjkxOWIwZmQ0MzQ4MmQwMTVjYzI5NTA4NDBlNTRiMjYxLi4yMDA5NmU3M2IzNTE1OWM3NDM0
YmQyN2FiNmY2MzMzN2ZlOWRmNGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RvbWluYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9taW5hdG9ycy5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkRGR0RvbWluYXRvcnMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5o
IgogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCmluZGV4IDJmZjBjMzQxNDZlMmMwYmEyZmY3NmM0ZDNmN2M0NmJhM2Uy
NTUxNDcuLjkwNDRjZGM2YjhjM2FkNGExZTk0MTg4ZGQxZDBlMjAwZTY5ZmI5OWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtNDgsNiArNDgsNyBA
QAogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAi
SlNOYW1lU2NvcGUuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJO
YW1lSW5zdGFuY2UuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUg
Ik9wZXJhdGlvbnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0
ZS1qcy1idWlsdGlucyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlu
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lZWUxYzdhN2NjZGQ5Mzc2OTIwZTc2ZDdmZThkMzBhZjk1NWYzMWE2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0
aW5zCkBAIC0wLDAgKzEsMzA0IEBACisjIS91c3IvYmluL3B5dGhvbgorIyBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisjIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorIyBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorIyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisjIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
aW1wb3J0IGZpbGVjbXAKK2ltcG9ydCBmbm1hdGNoCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1w
b3J0IHNodXRpbAoraW1wb3J0IHN5cworaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQganNvbgorCitj
b3B5cmlnaHRUZXh0ID0gIiIiICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki9cbgorIiIiCisKK2dlbmVyYXRvclN0cmluZyA9ICIvKiBHZW5lcmF0ZWQgYnkgJXMgZG8gbm90
IGhhbmQgZWRpdC4gKi9cbiIgJSBvcy5wYXRoLmJhc2VuYW1lKF9fZmlsZV9fKQorCitmdW5jdGlv
bkhlYWRSZWdFeHAgPSByZS5jb21waWxlKHIiZnVuY3Rpb25ccytcdytccypcKC4qP1wpIiwgcmUu
TVVMVElMSU5FIHwgcmUuUykKK2Z1bmN0aW9uTmFtZVJlZ0V4cCA9IHJlLmNvbXBpbGUociJmdW5j
dGlvblxzKyhcdyspXHMqXCgiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorZnVuY3Rpb25QYXJhbWV0
ZXJGaW5kZXIgPSByZS5jb21waWxlKHIiXmZ1bmN0aW9uXHMrKD86XHcrKVxzKlwoKCg/OlxzKlx3
Kyk/XHMqKD86XHMqLFxzKlx3KykqKT9cKSIsIHJlLk1VTFRJTElORSB8IHJlLlMpCisKK211bHRp
bGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cKi4qP1wqXC8iLCByZS5NVUxUSUxJ
TkUgfCByZS5TKQorc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cLy4q
P1xuIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKKworZGVmIGdldENvcHlyaWdodChzb3VyY2UpOgor
ICAgIGNvcHlyaWdodEJsb2NrID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5maW5kYWxsKHNvdXJj
ZSlbMF0KKyAgICBjb3B5cmlnaHRCbG9jayA9IGNvcHlyaWdodEJsb2NrWzpjb3B5cmlnaHRCbG9j
ay5pbmRleCgiUmVkaXN0cmlidXRpb24iKV0KKyAgICBjb3B5UmlnaHRMaW5lcyA9IFtdCisKKyAg
ICBmb3IgbGluZSBpbiBjb3B5cmlnaHRCbG9jay5zcGxpdCgiXG4iKToKKyAgICAgICAgbGluZSA9
IGxpbmUucmVwbGFjZSgiLyoiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKi8i
LCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKiIsICIiKQorICAgICAgICBsaW5l
ID0gbGluZS5yZXBsYWNlKCJDb3B5cmlnaHQiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVw
bGFjZSgiY29weXJpZ2h0IiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIihDKSIs
ICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIoYykiLCAiIikKKyAgICAgICAgbGlu
ZSA9IGxpbmUuc3RyaXAoKQorICAgICAgICBpZiBsZW4obGluZSkgPT0gMDoKKyAgICAgICAgICAg
IGNvbnRpbnVlCisKKyAgICAgICAgY29weVJpZ2h0TGluZXMuYXBwZW5kKGxpbmUpCisgICAgCisg
ICAgcmV0dXJuIGxpc3Qoc2V0KGNvcHlSaWdodExpbmVzKSkKKworCisKK2RlZiBnZXRGdW5jdGlv
bnMoc291cmNlKToKKworICAgIHNvdXJjZSA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAuc3ViKCIv
KiovIiwgc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAuc3ViKCIvL1xuIiwgc291cmNlKSkKKworICAg
IG1hdGNoZXMgPSBbIGYgZm9yIGYgaW4gZnVuY3Rpb25IZWFkUmVnRXhwLmZpbmRpdGVyKHNvdXJj
ZSldCisgICAgZnVuY3Rpb25Cb3VuZHMgPSBbXQorICAgIHN0YXJ0ID0gMAorICAgIGVuZCA9IDAK
KyAgICBmb3IgbWF0Y2ggaW4gbWF0Y2hlczoKKyAgICAgICAgc3RhcnQgPSBtYXRjaC5zdGFydCgp
CisgICAgICAgIGlmIHN0YXJ0IDwgZW5kOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAg
ZW5kID0gbWF0Y2guZW5kKCkKKyAgICAgICAgd2hpbGUgc291cmNlW2VuZF0gIT0gJ3snOgorICAg
ICAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICBkZXB0aCA9IDEKKyAgICAgICAgZW5kID0g
ZW5kICsgMQorICAgICAgICB3aGlsZSBkZXB0aCA+IDA6CisgICAgICAgICAgICBpZiBzb3VyY2Vb
ZW5kXSA9PSAneyc6CisgICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCArIDEKKyAgICAgICAg
ICAgIGVsaWYgc291cmNlW2VuZF0gPT0gJ30nOgorICAgICAgICAgICAgICAgIGRlcHRoID0gZGVw
dGggLSAxCisgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgIGZ1bmN0aW9uQm91bmRz
LmFwcGVuZCgoc3RhcnQsIGVuZCkpCisKKyAgICBmdW5jdGlvbnMgPSBbc291cmNlW3N0YXJ0OmVu
ZF0uc3RyaXAoKSBmb3IgKHN0YXJ0LCBlbmQpIGluIGZ1bmN0aW9uQm91bmRzXQorICAgIHJlc3Vs
dCA9IFtdCisgICAgZm9yIGZ1bmN0aW9uIGluIGZ1bmN0aW9uczoKKyAgICAgICAgZnVuY3Rpb24g
PSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLnN1YigiIiwgZnVuY3Rpb24pCisgICAgICAgIGZ1bmN0
aW9uTmFtZSA9IGZ1bmN0aW9uTmFtZVJlZ0V4cC5maW5kYWxsKGZ1bmN0aW9uKVswXQorICAgICAg
ICBmdW5jdGlvblBhcmFtZXRlcnMgPSBmdW5jdGlvblBhcmFtZXRlckZpbmRlci5maW5kYWxsKGZ1
bmN0aW9uKVswXS5zcGxpdCgnLCcpCisgICAgICAgIGlmIGxlbihmdW5jdGlvblBhcmFtZXRlcnNb
MF0pID09IDA6CisgICAgICAgICAgICBmdW5jdGlvblBhcmFtZXRlcnMgPSBbXQorICAgICAgICAg
ICAgCisgICAgICAgIHJlc3VsdC5hcHBlbmQoKGZ1bmN0aW9uTmFtZSwgZnVuY3Rpb24sIGZ1bmN0
aW9uUGFyYW1ldGVycykpCisgICAgcmV0dXJuIHJlc3VsdAorICAgICAgICAKKworZGVmIGdlbmVy
YXRlQ29kZShzb3VyY2UpOgorICAgIGlucHV0RmlsZSA9IG9wZW4oc291cmNlLCAiciIpCisgICAg
YmFzZU5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHNvdXJjZSkucmVwbGFjZSgiLmpzIiwgIiIpCisg
ICAgCisgICAgc291cmNlID0gIiIKKyAgICBmb3IgbGluZSBpbiBpbnB1dEZpbGU6CisgICAgICAg
IHNvdXJjZSA9IHNvdXJjZSArIGxpbmUKKyAgICAKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gImN5
Z3dpbiI6CisgICAgICAgIHNvdXJjZSA9IHNvdXJjZS5yZXBsYWNlKCJcclxuIiwgIlxuIikKKyAg
ICByZXR1cm4gKGJhc2VOYW1lLCBnZXRGdW5jdGlvbnMoc291cmNlKSwgZ2V0Q29weXJpZ2h0KHNv
dXJjZSkpCisKK2RlZiBtYW5nbGVOYW1lKG9iamVjdCwgbmFtZSk6CisgICAgcU5hbWUgPSBvYmpl
Y3QgKyAiLiIgKyBuYW1lCisgICAgbWFuZ2xlZE5hbWUgPSAiIgorICAgIGkgPSAwCisgICAgd2hp
bGUgaSA8IGxlbihxTmFtZSk6CisgICAgICAgIGlmIHFOYW1lW2ldID09ICcuJzoKKyAgICAgICAg
ICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWUgKyBxTmFtZVtpICsgMV0udXBwZXIoKQorICAg
ICAgICAgICAgaSA9IGkgKyAxCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtYW5nbGVkTmFt
ZSA9IG1hbmdsZWROYW1lICsgcU5hbWVbaV0KKyAgICAgICAgaSA9IGkgKyAxCisgICAgcmV0dXJu
IG1hbmdsZWROYW1lCisKK2J1aWx0aW5zID0gW10KKworYmFzZU5hbWUgPSBzeXMuYXJndlstMV0K
K2J1aWx0aW5fZGVmaW5pdGlvbnMgPSBzeXMuYXJndlsxOi0xXQorKG91dHB1dF9iYXNlLCBfKSA9
IG9zLnBhdGguc3BsaXRleHQoc3lzLmFyZ3ZbLTFdKQorCitjb3B5cmlnaHRzID0gW10KK2ZvciBm
aWxlIGluIGJ1aWx0aW5fZGVmaW5pdGlvbnM6CisgICAgaWYgZm5tYXRjaC5mbm1hdGNoKGZpbGUs
ICcqLmpzJyk6CisgICAgICAgIChiYXNlTmFtZSwgZnVuY3Rpb25zLCBvYmplY3RDb3B5cmlnaHRz
KSA9IGdlbmVyYXRlQ29kZShmaWxlKQorICAgICAgICBjb3B5cmlnaHRzLmV4dGVuZChvYmplY3RD
b3B5cmlnaHRzKQorICAgICAgICBidWlsdGlucy5hcHBlbmQoKGJhc2VOYW1lLCBmdW5jdGlvbnMp
KQorCitjb3B5cmlnaHRzID0gbGlzdChzZXQoY29weXJpZ2h0cykpCisKK2NvcHlyaWdodEJvZHkg
PSAiIgorZm9yIGNvcHlyaWdodCBpbiBjb3B5cmlnaHRzOgorICAgIGNvcHlyaWdodEJvZHkgPSBj
b3B5cmlnaHRCb2R5ICsiICogQ29weXJpZ2h0IChDKSAiICsgY29weXJpZ2h0ICsgIlxuIgorCiti
dWlsdGluc0hlYWRlciA9IG9wZW4ob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgInciKQorYnVpbHRp
bnNJbXBsZW1lbnRhdGlvbiA9IG9wZW4ob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCAidyIpCitj
b3B5cmlnaHRUZXh0ID0gIi8qXG4iICsgY29weXJpZ2h0Qm9keSArIGNvcHlyaWdodFRleHQKK2J1
aWx0aW5zSGVhZGVyLndyaXRlKCIiIiVzCislcworCisjaWZuZGVmIEpTQ0J1aWx0aW5zX0gKKyNk
ZWZpbmUgSlNDQnVpbHRpbnNfSAorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRnVuY3Rpb25F
eGVjdXRhYmxlOworY2xhc3MgSWRlbnRpZmllcjsKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OworY2xh
c3MgU291cmNlQ29kZTsKK2NsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3Mg
Vk07CisKK0Z1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUoVk0mLCBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKKworIiIiICUg
KGdlbmVyYXRvclN0cmluZywgY29weXJpZ2h0VGV4dCkpCisKK2NvZGVSZWZlcmVuY2VzID0gW10K
KworZm9yIChvYmplY3ROYW1lLCBmdW5jdGlvbnMpIGluIGJ1aWx0aW5zOgorICAgIHByaW50KCJH
ZW5lcmF0aW5nIGJpbmRpbmdzIGZvciB0aGUgJXMgYnVpbHRpbi4iICUgb2JqZWN0TmFtZSkKKyAg
ICBidWlsdGluc0hlYWRlci53cml0ZSgiLyogJXMgZnVuY3Rpb25zICovXG4iICUgb2JqZWN0TmFt
ZSkKKyAgICBmb3IgKG5hbWUsIGltcGxlbWVudGF0aW9uLCBfKSBpbiBmdW5jdGlvbnM6CisgICAg
ICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlTmFtZShvYmplY3ROYW1lLCBuYW1lKQorICAgICAgICBt
YW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lWzBdLmxvd2VyKCkgKyBtYW5nbGVkTmFtZVsxOl0gKyAi
Q29kZSIKKyAgICAgICAgY29kZVJlZmVyZW5jZXMuYXBwZW5kKChtYW5nbGVkTmFtZSwgbmFtZSwg
aW1wbGVtZW50YXRpb24pKQorICAgICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiZXh0ZXJuIGNv
bnN0IGNoYXIqIHNfJXM7XG4iICUgbWFuZ2xlZE5hbWUpCisgICAgICAgIGJ1aWx0aW5zSGVhZGVy
LndyaXRlKCJleHRlcm4gY29uc3QgaW50IHNfJXNMZW5ndGg7XG4iICUgbWFuZ2xlZE5hbWUpCisg
ICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuIikKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgi
I2RlZmluZSBKU0NfRk9SRUFDSF8lc19CVUlMVElOKG1hY3JvKSBcXFxuIiAlIG9iamVjdE5hbWUu
cmVwbGFjZSgiLiIsICJfIikudXBwZXIoKSkKKyAgICBmb3IgKG5hbWUsIGltcGxlbWVudGF0aW9u
LCBhcmd1bWVudHMpIGluIGZ1bmN0aW9uczoKKyAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVO
YW1lKG9iamVjdE5hbWUsIG5hbWUpCisgICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIgICAg
bWFjcm8oJXMsICVzLCAlZCkgXFxcbiIgJSAobmFtZSwgbWFuZ2xlZE5hbWUsIGxlbihhcmd1bWVu
dHMpKSkKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiXG4iKQorICAgIGZvciAobmFtZSwgaW1w
bGVtZW50YXRpb24sIGFyZ3VtZW50cykgaW4gZnVuY3Rpb25zOgorICAgICAgICBidWlsdGluc0hl
YWRlci53cml0ZSgiI2RlZmluZSBKU0NfQlVJTFRJTl8lcyAxXG4iICUgbWFuZ2xlTmFtZShvYmpl
Y3ROYW1lLCBuYW1lKS51cHBlcigpKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJcblxuIikK
K25hbWVzID0gW10KK2J1aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19GT1JFQUNIX0JV
SUxUSU4obWFjcm8pXFxcbiIpCitmb3IgKGNvZGVSZWZlcmVuY2UsIGZ1bmN0aW9uTmFtZSwgc291
cmNlKSBpbiBjb2RlUmVmZXJlbmNlczoKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiICAgIG1h
Y3JvKCVzLCAlcywgc18lc0xlbmd0aCkgXFxcbiIgJSAoY29kZVJlZmVyZW5jZSwgZnVuY3Rpb25O
YW1lLCBjb2RlUmVmZXJlbmNlKSkKKyAgICBuYW1lcy5hcHBlbmQoZnVuY3Rpb25OYW1lKQorCiti
dWlsdGluc0hlYWRlci53cml0ZSgiXG5cbiIpCitidWlsdGluc0hlYWRlci53cml0ZSgiI2RlZmlu
ZSBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFxcXG4iKQorZm9yIG5h
bWUgaW4gc29ydGVkKHNldChuYW1lcykpOgorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIgICAg
bWFjcm8oJXMpIFxcXG4iICUgbmFtZSkKK2J1aWx0aW5zSGVhZGVyLndyaXRlKCIiIgorCisjZGVm
aW5lIEpTQ19ERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUs
IGFyZ3VtZW50Q291bnQpIFxcCisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2Vu
ZXJhdG9yKFZNJik7CisKK0pTQ19GT1JFQUNIX0JVSUxUSU4oSlNDX0RFQ0xBUkVfQlVJTFRJTl9H
RU5FUkFUT1IpCisjdW5kZWYgSlNDX0RFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IKKworI2RlZmlu
ZSBKU0NfQlVJTFRJTl9FWElTVFMobmFtZSkgZGVmaW5lZChKU0NfQlVJTFRJTl8jI25hbWUpCisK
K30KKworI2VuZGlmCisKKyIiIikKKworYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiIiIl
cworJXMKKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIK
KworI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkV4ZWN1dGFibGUu
aCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKKyIiIiAgJSAoZ2VuZXJhdG9yU3RyaW5nLCBjb3B5cmlnaHRUZXh0KSkKKwor
Zm9yIChjb2RlUmVmZXJlbmNlLCBuYW1lLCBzb3VyY2UpIGluIGNvZGVSZWZlcmVuY2VzOgorICAg
IHNvdXJjZSA9ICIoZnVuY3Rpb24gIiArIHNvdXJjZVtzb3VyY2UuaW5kZXgoIigiKTpdICsgIiki
CisgICAgbGluZXMgPSBqc29uLmR1bXBzKHNvdXJjZSlbMTotMV0uc3BsaXQoIlxcbiIpCisgICAg
c291cmNlTGVuZ3RoID0gbGVuKHNvdXJjZSkKKyAgICBzb3VyY2UgPSAiIgorICAgIGZvciBsaW5l
IGluIGxpbmVzOgorICAgICAgICBzb3VyY2UgPSBzb3VyY2UgKyAoIiAgICBcIiVzXFxuXCIgXFxc
biIgJSBsaW5lKQorICAgIGJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoImNvbnN0IGNoYXIq
IHNfJXMgPVxuJXM7XG5cbiIgJSAoY29kZVJlZmVyZW5jZSwgc291cmNlKSkKKyAgICBidWlsdGlu
c0ltcGxlbWVudGF0aW9uLndyaXRlKCJjb25zdCBpbnQgc18lc0xlbmd0aCA9ICVkO1xuXG4iICUg
KGNvZGVSZWZlcmVuY2UsIHNvdXJjZUxlbmd0aCArIDEpKSAjICsgMSBmb3IgXG4KKworYnVpbHRp
bnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiIiIKK0Z1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVp
bHRpbkV4ZWN1dGFibGUoVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5r
ZWRFeGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCit7CisgICAgdW5zaWduZWQg
bGluZUNvdW50ID0gdW5saW5rZWRFeGVjdXRhYmxlLT5saW5lQ291bnQoKTsKKyAgICB1bnNpZ25l
ZCBzdGFydENvbHVtbiA9IDE7CisgICAgdW5zaWduZWQgc291cmNlTGVuZ3RoID0gdW5saW5rZWRF
eGVjdXRhYmxlLT5zb3VyY2VMZW5ndGgoKTsKKyAgICBib29sIGVuZENvbHVtbklzT25TdGFydExp
bmUgPSAhbGluZUNvdW50OworICAgIHVuc2lnbmVkIGVuZENvbHVtbkV4Y2x1ZGluZ0JyYWNlcyA9
IHVubGlua2VkRXhlY3V0YWJsZS0+dW5saW5rZWRCb2R5RW5kQ29sdW1uKCkgKyAoZW5kQ29sdW1u
SXNPblN0YXJ0TGluZSA/IDAgOiAxKTsKKyAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IHVubGlu
a2VkRXhlY3V0YWJsZS0+c3RhcnRPZmZzZXQoKTsKKyAgICB1bnNpZ25lZCBzdGFydE9mZnNldEV4
Y2x1ZGluZ09wZW5CcmFjZSA9IHN0YXJ0T2Zmc2V0ICsgMTsKKyAgICB1bnNpZ25lZCBlbmRPZmZz
ZXRFeGNsdWRpbmdDbG9zZUJyYWNlID0gc3RhcnRPZmZzZXQgKyBzb3VyY2VMZW5ndGggLSAxOwor
ICAgIFNvdXJjZUNvZGUgYm9keVNvdXJjZShzb3VyY2UucHJvdmlkZXIoKSwgc3RhcnRPZmZzZXRF
eGNsdWRpbmdPcGVuQnJhY2UsIGVuZE9mZnNldEV4Y2x1ZGluZ0Nsb3NlQnJhY2UsIDAsIHN0YXJ0
Q29sdW1uKTsKKyAgICByZXR1cm4gRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUodm0sIGJvZHlT
b3VyY2UsIHVubGlua2VkRXhlY3V0YWJsZSwgMCwgbGluZUNvdW50LCBzdGFydENvbHVtbiwgZW5k
Q29sdW1uRXhjbHVkaW5nQnJhY2VzLCBmYWxzZSk7Cit9CisKKyNkZWZpbmUgSlNDX0RFRklORV9C
VUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBc
XAorRnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKFZNJiB2bSkgXFwKK3sg
XFwKKyAgICByZXR1cm4gY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUodm0sIHZtLmJ1aWx0aW5FeGVj
dXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLCB2bS5idWlsdGluRXhlY3V0YWJsZXMo
KS0+Y29kZU5hbWUjI1NvdXJjZSgpKTsgXFwKK30KKworSlNDX0ZPUkVBQ0hfQlVJTFRJTihKU0Nf
REVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIEpTQ19ERUZJTkVfQlVJTFRJTl9HRU5F
UkFUT1IKK30KKworIiIiKQorCitidWlsdGluc0hlYWRlci5jbG9zZSgpCitidWlsdGluc0ltcGxl
bWVudGF0aW9uLmNsb3NlKCkKKworaWYgKG5vdCBvcy5wYXRoLmV4aXN0cyhvdXRwdXRfYmFzZSAr
ICIuaCIpKSBvciAobm90IGZpbGVjbXAuY21wKG91dHB1dF9iYXNlICsgIi5oLnRtcCIsIG91dHB1
dF9iYXNlICsgIi5oIiwgc2hhbGxvdz1GYWxzZSkpOgorICAgIG9zLnJlbmFtZShvdXRwdXRfYmFz
ZSArICIuaC50bXAiLCBvdXRwdXRfYmFzZSArICIuaCIpCitlbHNlOgorICAgIG9zLnJlbW92ZShv
dXRwdXRfYmFzZSArICIuaC50bXAiKQorCitpZiAobm90IG9zLnBhdGguZXhpc3RzKG91dHB1dF9i
YXNlICsgIi5jcHAiKSkgb3IgKG5vdCBmaWxlY21wLmNtcChvdXRwdXRfYmFzZSArICIuY3BwLnRt
cCIsIG91dHB1dF9iYXNlICsgIi5jcHAiLCBzaGFsbG93PUZhbHNlKSk6CisgICAgb3MucmVuYW1l
KG91dHB1dF9iYXNlICsgIi5jcHAudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmNwcCIpCitlbHNlOgor
ICAgIG9zLnJlbW92ZShvdXRwdXRfYmFzZSArICIuY3BwLnRtcCIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaAppbmRleCAyY2EzZTk3OTQwYzdjMTEw
NmMxYmFiYTFmMzU0ZmU4NDdiNDM4NWIzLi4zMGNhZDJhMTRmZmRiZmI0ZDU3Y2Y1YTEyZmNiOTAw
ZTI2NGY4NzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
Q2FjaGVkQ2FsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNo
ZWRDYWxsLmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAs
IG1faW50ZXJwcmV0ZXIoY2FsbEZyYW1lLT5pbnRlcnByZXRlcigpKQogICAgICAgICAgICAgLCBt
X2VudHJ5U2NvcGUoY2FsbEZyYW1lLT52bSgpLCBmdW5jdGlvbi0+c2NvcGUoKS0+Z2xvYmFsT2Jq
ZWN0KCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCghZnVuY3Rpb24tPmlzSG9zdEZ1
bmN0aW9uKCkpOworICAgICAgICAgICAgQVNTRVJUKCFmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb25O
b25JbmxpbmUoKSk7CiAgICAgICAgICAgICBpZiAoY2FsbEZyYW1lLT52bSgpLmlzU2FmZVRvUmVj
dXJzZSgpKSB7CiAgICAgICAgICAgICAgICAgbV9hcmd1bWVudHMucmVzaXplKGFyZ3VtZW50Q291
bnQpOwogICAgICAgICAgICAgICAgIG1fY2xvc3VyZSA9IG1faW50ZXJwcmV0ZXItPnByZXBhcmVG
b3JSZXBlYXRDYWxsKGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKSwgY2FsbEZyYW1lLCAmbV9wcm90
b0NhbGxGcmFtZSwgZnVuY3Rpb24sIGFyZ3VtZW50Q291bnQgKyAxLCBmdW5jdGlvbi0+c2NvcGUo
KSwgbV9hcmd1bWVudHMuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGNhODkwYjA2ZWEzM2ZhOWU3ZjFmYTUxYTM1
ZWEyZDQ4ZDAwOWEzOGEuLjZjOWJmOTZjMTVmNjA5ZTI2NWNlMjUwYTQ1YmYwODYxZDA2Y2QxZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aCIKICNpbmNsdWRlICJKU1N0YWNrSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisj
aW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKICNp
bmNsdWRlICJMTEludENMb29wLmgiCiAjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuY3BwCmlu
ZGV4IGYwZTAyYmE0ZTQ3NmY5OWNjOTEzYjA0NjJhZDI3OTUwMDYwOWZhM2EuLjFjMjQwZGNkNzFi
ZTUyOWQ4OGNiZjQ2MWQxODY4ZjVlYjJiMDJhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcApAQCAtMjcsNiArMjcsNyBA
QAogI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIK
KyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAKaW5kZXggY2E3YWQxMWYyZTBiOGEzYjhiMTg1ODkxZDdlNTIyYmFlNDAzYTIzNi4uY2I1
NTA3YmVhYzU1YmY4ZWIxYjM3ZWM5MGZjYWIxOTM0ZmI0OGVhMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSGVh
cC5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5j
bHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRl
ICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDk4ZDEw
YTNmNGRjYjEyZDg5ZjM3YTEyZjIyNjA0Yjk0NmUwOGU2MjcuLmRkMDM1Mzc3OWU4YmRmOThmNDY1
OGEzMDdlMzJkMDZlNDcyNDQxNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMzMl82NC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJEZWJ1Z2dlci5o
IgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVk
ZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggOTI4ZGQ1MGZiMDE2
ZTI3MTY0NGE1NzVlMzBhYjVmMjUxNmViNTBlYy4uOTA4OGI3ZmIyZmI3YWQwMTM4MDZlZjQ5YjVh
ZjQyMGZhNjQ4NDA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCkBAIC00MSw2ICs0MSw4IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklU
T3BlcmF0aW9uV3JhcHBlcnMuaCIKICNpbmNsdWRlICJKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRp
b25DYWxsYmFjay5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAi
SlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5o
IgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcAppbmRleCAyNmRkNGQxYWY3NDVhZmExZmJjNTNhOWMwMjNhNmU0NzQxYTY2YTA5Li5kZjFi
ZDNhOWNmYTQwMmM1MmE1MjExY2YxYWNjZTY3ZDUxMjFiN2VlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMjksMTEgKzI5LDEzIEBA
CiAjaW5jbHVkZSAiSklULmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJD
b21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkdDQXdhcmVKSVRTdHViUm91dGluZS5oIgog
I2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5j
bHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNWYXJpYWJsZU9iamVjdC5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvanNjLmNwcAppbmRleCA0MDc4NGI0OTQzMWZlMDJlOGU0NTIyZjE2MzA4YzkwMjQ3MTZk
MjM2Li4yZjc5NTU1NGIwOTFkZWViYmMwM2JmMmJlOGM3NGY0MWFlNTQxZWQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1
ZGUgIkpTUHJveHkuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTU3RyaW5n
SW5saW5lcy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Rv
b2wuaCIKICNpbmNsdWRlICJTdGFja1Zpc2l0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggNjA0Y2MyNjNj
Zjk3ZTA4NmZlZDA2ZWM5MDNiMGVjMTk4M2U3ODEzNy4uODE2NmU3ZjgxZmE4OWE3ZDRmNTBjNWYx
YTk0ZmE5NjhjNWQ1N2UxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRl
ICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIK
LSNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIK
ICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAi
SlNPYmplY3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNU
QnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5k
ZXggOGVjMWZkMzJhM2FkYTIyZTEyNTIyOTU3MGRjZjdmZjI4ZWFiZjFlZC4uNDZhN2M3NmIyZjkw
MWZjM2NjMzZkMWNlMGMwNzM1M2ViMDZiMmY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9BU1RCdWlsZGVyLmgKQEAgLTg4OCw5ICs4ODgsOSBAQCBFeHByZXNzaW9uTm9kZSogQVNU
QnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbgogICAgIEFTU0VSVChmdW5jLT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKICAgICBEb3RBY2Nl
c3Nvck5vZGUqIGRvdCA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGZ1bmMpOwogICAg
IEZ1bmN0aW9uQ2FsbERvdE5vZGUqIG5vZGU7Ci0gICAgaWYgKGRvdC0+aWRlbnRpZmllcigpID09
IG1fdm0tPnByb3BlcnR5TmFtZXMtPmNhbGwpCisgICAgaWYgKGRvdC0+aWRlbnRpZmllcigpID09
IG1fdm0tPnByb3BlcnR5TmFtZXMtPmNhbGwgfHwgZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+
cHJvcGVydHlOYW1lcy0+Y2FsbFByaXZhdGVOYW1lKQogICAgICAgICBub2RlID0gbmV3IChtX3Zt
KSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRl
bnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwotICAgIGVsc2Ug
aWYgKGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmFwcGx5KQorICAg
IGVsc2UgaWYgKGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmFwcGx5
IHx8IGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmFwcGx5UHJpdmF0
ZU5hbWUpCiAgICAgICAgIG5vZGUgPSBuZXcgKG1fdm0pIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9k
ZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwg
ZGl2b3RTdGFydCwgZGl2b3RFbmQpOwogICAgIGVsc2UKICAgICAgICAgbm9kZSA9IG5ldyAobV92
bSkgRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRp
ZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCBjYTRiYjRmMGFkZThkNmJjODI2OTFhNmMwMDAx
NGNmMTk4YmQ4OGJkLi5jY2IwNzlkOTc1YTE0MWM1YzRiMmQ3YjYyMzEzMDAwNzA5Nzc3ODI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAtMjUsMTAgKzI1LDEwIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGV4ZXIuaCIKIAorI2luY2x1ZGUgIkNv
bW1vbklkZW50aWZpZXJzLmgiCisjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpT
RnVuY3Rpb25JbmxpbmVzLmgiCi0KICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5o
IgotI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJOb2RlSW5mby5oIgogI2luY2x1
ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSA8d3RmL2R0b2EuaD4KQEAgLTkwLDYgKzkwLDcgQEAgZW51
bSBDaGFyYWN0ZXJUeXBlIHsKIAogICAgIC8vIE90aGVyIHR5cGVzIChvbmx5IG9uZSBzbyBmYXIp
CiAgICAgQ2hhcmFjdGVyV2hpdGVTcGFjZSwKKyAgICBDaGFyYWN0ZXJQcml2YXRlSWRlbnRpZmll
clN0YXJ0CiB9OwogCiAvLyAyNTYgTGF0aW4tMSBjb2RlcwpAQCAtMTU4LDcgKzE1OSw3IEBAIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCB0eXBlc09mTGF0aW4xQ2hhcmFjdGVyc1syNTZdID0g
ewogLyogIDYxIC0gPSAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlckVxdWFsLAogLyogIDYy
IC0gPiAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlckdyZWF0ZXIsCiAvKiAgNjMgLSA/ICAg
ICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyUXVlc3Rpb24sCi0vKiAgNjQgLSBAICAgICAgICAg
ICAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKKy8qICA2NCAtIEAgICAgICAgICAgICAgICAg
ICAqLyBDaGFyYWN0ZXJQcml2YXRlSWRlbnRpZmllclN0YXJ0LAogLyogIDY1IC0gQSAgICAgICAg
ICAgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKIC8qICA2NiAtIEIgICAgICAg
ICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCiAvKiAgNjcgLSBDICAgICAg
ICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LApAQCAtNDg2LDkgKzQ4Nywx
MCBAQCBzdGF0aWMgY29uc3QgTENoYXIgc2luZ2xlQ2hhcmFjdGVyRXNjYXBlVmFsdWVzRm9yQVND
SUlbMTI4XSA9IHsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotTGV4ZXI8VD46OkxleGVy
KFZNKiB2bSkKK0xleGVyPFQ+OjpMZXhlcihWTSogdm0sIEpTUGFyc2VyU3RyaWN0bmVzcyBzdHJp
Y3RuZXNzKQogICAgIDogbV9pc1JlcGFyc2luZyhmYWxzZSkKICAgICAsIG1fdm0odm0pCisgICAg
LCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24oc3RyaWN0bmVzcyA9PSBKU1BhcnNlQnVpbHRpbikK
IHsKIH0KIApAQCAtNzUzLDcgKzc1NSwyNyBAQCBpbmxpbmUgdm9pZCBMZXhlcjxUPjo6cmVjb3Jk
MTYoaW50IGMpCiAgICAgQVNTRVJUKGMgPD0gc3RhdGljX2Nhc3Q8aW50PihVU0hSVF9NQVgpKTsK
ICAgICBtX2J1ZmZlcjE2LmFwcGVuZChzdGF0aWNfY2FzdDxVQ2hhcj4oYykpOwogfQotCisgICAg
CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorYm9vbCBpc1NhZmVJZGVudGlmaWVyKFZNJiB2bSwgY29u
c3QgSWRlbnRpZmllciogaWRlbnQpCit7CisgICAgaWYgKCFpZGVudCkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgLyogSnVzdCBibG9jayBhbnkgdXNlIG9mIHN1c3BpY2lvdXMgaWRlbnRpZmll
cnMuICBUaGlzIGlzIGludGVuZGVkIHRvCisgICAgICogYmUgdXNlZCBhcyBhIHNhZmV0eSBuZXQg
d2hpbGUgaW1wbGVtZW50aW5nIGJ1aWx0aW5zLgorICAgICAqLworICAgIGlmICgqaWRlbnQgPT0g
dm0ucHJvcGVydHlOYW1lcy0+Y2FsbCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgq
aWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+YXBwbHkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoKmlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmV2YWwpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoKmlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPkZ1bmN0aW9uKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKyAgICAK
IHRlbXBsYXRlIDw+CiB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdB
WVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cGFyc2VJZGVudGlmaWVyKEpTVG9r
ZW5EYXRhKiB0b2tlbkRhdGEsIHVuc2lnbmVkIGxleGVyRmxhZ3MsIGJvb2wgc3RyaWN0TW9kZSkK
IHsKQEAgLTc2NSw3ICs3ODcsMTEgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRp
Zmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKICAgICAgICAg
ICAgIHJldHVybiBrZXl3b3JkID09IFJFU0VSVkVEX0lGX1NUUklDVCAmJiAhc3RyaWN0TW9kZSA/
IElERU5UIDoga2V5d29yZDsKICAgICAgICAgfQogICAgIH0KLQorICAgIAorICAgIGJvb2wgaXNQ
cml2YXRlTmFtZSA9IG1fY3VycmVudCA9PSAnQCcgJiYgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9u
OworICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICBzaGlmdCgpOworICAgIAogICAgIGNv
bnN0IExDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50U291cmNlUHRyKCk7CiAgICAgdW5z
aWduZWQgaWRlbnRpZmllckxpbmVTdGFydCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKICAg
ICAKQEAgLTc3OSwxNSArODA1LDI2IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50
aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAKICAgICBj
b25zdCBJZGVudGlmaWVyKiBpZGVudCA9IDA7CiAgICAgCi0gICAgaWYgKHNob3VsZENyZWF0ZUlk
ZW50aWZpZXIpIHsKKyAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllciB8fCBtX3BhcnNpbmdC
dWlsdGluRnVuY3Rpb24pIHsKICAgICAgICAgaW50IGlkZW50aWZpZXJMZW5ndGggPSBjdXJyZW50
U291cmNlUHRyKCkgLSBpZGVudGlmaWVyU3RhcnQ7CiAgICAgICAgIGlkZW50ID0gbWFrZUlkZW50
aWZpZXIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVuZ3RoKTsKLQorICAgICAgICBpZiAo
bV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CisgICAgICAgICAgICBpZiAoIWlzU2FmZUlkZW50
aWZpZXIoKm1fdm0sIGlkZW50KSAmJiAhaXNQcml2YXRlTmFtZSkgeworICAgICAgICAgICAgICAg
IG1fbGV4RXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZygiVGhlIHVzZSBvZiAnIiwgaWRlbnQtPnN0
cmluZygpLCAiJyBpcyBkaXNhbGxvd2VkIGluIGJ1aWx0aW4gZnVuY3Rpb25zLiIpOworICAgICAg
ICAgICAgICAgIHJldHVybiBFUlJPUlRPSzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
IChpc1ByaXZhdGVOYW1lKQorICAgICAgICAgICAgICAgIGlkZW50ID0gbV92bS0+cHJvcGVydHlO
YW1lcy0+Z2V0UHJpdmF0ZU5hbWUoKmlkZW50KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCppZGVu
dCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkKQorICAgICAgICAgICAg
ICAgIHRva2VuRGF0YS0+aWRlbnQgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5
d29yZFByaXZhdGVOYW1lOworICAgICAgICAgICAgaWYgKCFpZGVudCkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gSU5WQUxJRF9QUklWQVRFX05BTUVfRVJST1JUT0s7CisgICAgICAgIH0KICAgICAg
ICAgdG9rZW5EYXRhLT5pZGVudCA9IGlkZW50OwogICAgIH0gZWxzZQogICAgICAgICB0b2tlbkRh
dGEtPmlkZW50ID0gMDsKIAotICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5M
ZW5ndGgpICYmICEobGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkp
IHsKKyAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhKGxl
eGVyRmxhZ3MgJiBMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpICYmICFpc1ByaXZhdGVO
YW1lKSB7CiAgICAgICAgIEFTU0VSVChzaG91bGRDcmVhdGVJZGVudGlmaWVyKTsKICAgICAgICAg
aWYgKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSB7CiAgICAgICAgICAgICBjb25zdCBIYXNo
RW50cnkqIGVudHJ5ID0gbV92bS0+a2V5d29yZHMtPmdldEtleXdvcmQoKmlkZW50KTsKQEAgLTgx
NCw2ICs4NTEsMTAgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxX
QVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAKICAgICAgICAgICAgIHJldHVy
biBrZXl3b3JkID09IFJFU0VSVkVEX0lGX1NUUklDVCAmJiAhc3RyaWN0TW9kZSA/IElERU5UIDog
a2V5d29yZDsKICAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUg
PSBtX2N1cnJlbnQgPT0gJ0AnICYmIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKKyAgICBpZiAo
aXNQcml2YXRlTmFtZSkKKyAgICAgICAgc2hpZnQoKTsKIAogICAgIGNvbnN0IFVDaGFyKiBpZGVu
dGlmaWVyU3RhcnQgPSBjdXJyZW50U291cmNlUHRyKCk7CiAgICAgaW50IGlkZW50aWZpZXJMaW5l
U3RhcnQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CkBAIC04MjYsNiArODY3LDcgQEAgdGVt
cGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2Vu
VHlwZSBMZXhlcjxVQ2hhcj46OnAKICAgICB9CiAgICAgCiAgICAgaWYgKFVOTElLRUxZKG1fY3Vy
cmVudCA9PSAnXFwnKSkgeworICAgICAgICBBU1NFUlQoIWlzUHJpdmF0ZU5hbWUpOwogICAgICAg
ICBzZXRPZmZzZXRGcm9tU291cmNlUHRyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxpbmVT
dGFydCk7CiAgICAgICAgIHJldHVybiBwYXJzZUlkZW50aWZpZXJTbG93Q2FzZTxzaG91bGRDcmVh
dGVJZGVudGlmaWVyPih0b2tlbkRhdGEsIGxleGVyRmxhZ3MsIHN0cmljdE1vZGUpOwogICAgIH0K
QEAgLTgzNywxOCArODc5LDI5IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZp
ZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+OjpwCiAKICAgICBjb25z
dCBJZGVudGlmaWVyKiBpZGVudCA9IDA7CiAgICAgCi0gICAgaWYgKHNob3VsZENyZWF0ZUlkZW50
aWZpZXIpIHsKKyAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllciB8fCBtX3BhcnNpbmdCdWls
dGluRnVuY3Rpb24pIHsKICAgICAgICAgaW50IGlkZW50aWZpZXJMZW5ndGggPSBjdXJyZW50U291
cmNlUHRyKCkgLSBpZGVudGlmaWVyU3RhcnQ7CiAgICAgICAgIGlmIChpc0FsbDhCaXQpCiAgICAg
ICAgICAgICBpZGVudCA9IG1ha2VJZGVudGlmaWVyTENoYXJGcm9tVUNoYXIoaWRlbnRpZmllclN0
YXJ0LCBpZGVudGlmaWVyTGVuZ3RoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaWRlbnQg
PSBtYWtlSWRlbnRpZmllcihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwotICAg
ICAgICAKKyAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgeworICAgICAgICAg
ICAgaWYgKCFpc1NhZmVJZGVudGlmaWVyKCptX3ZtLCBpZGVudCkgJiYgIWlzUHJpdmF0ZU5hbWUp
IHsKKyAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIlRoZSB1
c2Ugb2YgJyIsIGlkZW50LT5zdHJpbmcoKSwgIicgaXMgZGlzYWxsb3dlZCBpbiBidWlsdGluIGZ1
bmN0aW9ucy4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgICAgICAgICBpZGVu
dCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPmdldFByaXZhdGVOYW1lKCppZGVudCk7CisgICAgICAg
ICAgICBlbHNlIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5
d29yZCkKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gJm1fdm0tPnByb3BlcnR5
TmFtZXMtPnVuZGVmaW5lZEtleXdvcmRQcml2YXRlTmFtZTsKKyAgICAgICAgICAgIGlmICghaWRl
bnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSURfUFJJVkFURV9OQU1FX0VSUk9SVE9L
OworICAgICAgICB9CiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBpZGVudDsKICAgICB9IGVs
c2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IDA7CiAgICAgCi0gICAgaWYgKFVOTElLRUxZ
KChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFn
c0lnbm9yZVJlc2VydmVkV29yZHMpKSkgeworICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwg
bWF4VG9rZW5MZW5ndGgpICYmICEobGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25vcmVSZXNlcnZl
ZFdvcmRzKSkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsKICAgICAgICAgQVNTRVJUKHNob3VsZENyZWF0
ZUlkZW50aWZpZXIpOwogICAgICAgICBpZiAocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHsK
ICAgICAgICAgICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSBtX3ZtLT5rZXl3b3Jkcy0+Z2V0
S2V5d29yZCgqaWRlbnQpOwpAQCAtMTY1OCw2ICsxNzExLDcgQEAgaW5OdW1iZXJBZnRlckRlY2lt
YWxQb2ludDoKICAgICAgICAgQVNTRVJUKGlzSWRlbnRTdGFydChtX2N1cnJlbnQpKTsKICAgICAg
ICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBDaGFyYWN0ZXJCYWNrU2xhc2g6CisgICAgICAgIHBh
cnNlSWRlbnQ6CiAgICAgICAgIGlmIChsZXhlckZsYWdzICYgTGV4ZXhGbGFnc0RvbnRCdWlsZEtl
eXdvcmRzKQogICAgICAgICAgICAgdG9rZW4gPSBwYXJzZUlkZW50aWZpZXI8ZmFsc2U+KHRva2Vu
RGF0YSwgbGV4ZXJGbGFncywgc3RyaWN0TW9kZSk7CiAgICAgICAgIGVsc2UKQEAgLTE2NzAsNiAr
MTcyNCwxMSBAQCBpbk51bWJlckFmdGVyRGVjaW1hbFBvaW50OgogICAgICAgICBtX3Rlcm1pbmF0
b3IgPSB0cnVlOwogICAgICAgICBtX2xpbmVTdGFydCA9IG1fY29kZTsKICAgICAgICAgZ290byBz
dGFydDsKKyAgICBjYXNlIENoYXJhY3RlclByaXZhdGVJZGVudGlmaWVyU3RhcnQ6CisgICAgICAg
IGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pCisgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnQ7CisKKyAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBDaGFyYWN0ZXJJbnZhbGlkOgog
ICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IGludmFsaWRDaGFyYWN0ZXJNZXNzYWdlKCk7CiAg
ICAgICAgIHRva2VuID0gRVJST1JUT0s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0xleGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgK
aW5kZXggMjhjNjFiYTE5OGQyYzE1YTQ5YmIxODUyZWQzMGJlZmViODkwNDAwOC4uYjg4NzNlOTk1
MDI4NjQ0YmY4Y2JiM2Q0YzJkYTU2MmU5M2UwZThlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTGV4ZXIuaApAQCAtNzIsNyArNzIsNyBAQCBjbGFzcyBMZXhlciB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAKIHB1YmxpYzoKLSAgICBMZXhlcihWTSopOworICAgIExleGVyKFZN
KiwgSlNQYXJzZXJTdHJpY3RuZXNzKTsKICAgICB+TGV4ZXIoKTsKIAogICAgIC8vIENoYXJhY3Rl
ciBtYW5pcHVsYXRpb24gZnVuY3Rpb25zLgpAQCAtMjM4LDYgKzIzOCw3IEBAIHByaXZhdGU6CiAg
ICAgSWRlbnRpZmllckFyZW5hKiBtX2FyZW5hOwogCiAgICAgVk0qIG1fdm07CisgICAgYm9vbCBt
X3BhcnNpbmdCdWlsdGluRnVuY3Rpb247CiB9OwogCiB0ZW1wbGF0ZSA8PgpAQCAtMzM1LDYgKzMz
NiwxMiBAQCBBTFdBWVNfSU5MSU5FIGNvbnN0IElkZW50aWZpZXIqIExleGVyPFQ+OjptYWtlTENo
YXJJZGVudGlmaWVyKGNvbnN0IFVDaGFyKiBjaGFyYQogICAgIHJldHVybiAmbV9hcmVuYS0+bWFr
ZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hhcihtX3ZtLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOwogfQog
CisjaWYgQVNTRVJUX0RJU0FCTEVECitBTFdBWVNfSU5MSU5FIGJvb2wgaXNTYWZlSWRlbnRpZmll
cihWTSYsIGNvbnN0IElkZW50aWZpZXIqKSB7IHJldHVybiB0cnVlOyB9CisjZWxzZQorYm9vbCBp
c1NhZmVJZGVudGlmaWVyKFZNJiwgY29uc3QgSWRlbnRpZmllciopOworI2VuZGlmCisKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgogQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4
RXhwZWN0SWRlbnRpZmllcihKU1Rva2VuKiB0b2tlblJlY29yZCwgdW5zaWduZWQgbGV4ZXJGbGFn
cywgYm9vbCBzdHJpY3RNb2RlKQogewpAQCAtMzcwLDEwICszNzcsMTUgQEAgQUxXQVlTX0lOTElO
RSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rva2VuKiB0b2tl
blJlY29yZCwgdW4KICAgICBBU1NFUlQoY3VycmVudE9mZnNldCgpID49IGN1cnJlbnRMaW5lU3Rh
cnRPZmZzZXQoKSk7CiAKICAgICAvLyBDcmVhdGUgdGhlIGlkZW50aWZpZXIgaWYgbmVlZGVkCi0g
ICAgaWYgKGxleGVyRmxhZ3MgJiBMZXhleEZsYWdzRG9udEJ1aWxkS2V5d29yZHMpCisgICAgaWYg
KGxleGVyRmxhZ3MgJiBMZXhleEZsYWdzRG9udEJ1aWxkS2V5d29yZHMKKyNpZiAhQVNTRVJUX0RJ
U0FCTEVECisgICAgICAgICYmICFtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24KKyNlbmRpZgorICAg
ICAgICApCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAwOwogICAgIGVsc2UKICAgICAgICAg
dG9rZW5EYXRhLT5pZGVudCA9IG1ha2VMQ2hhcklkZW50aWZpZXIoc3RhcnQsIHB0ciAtIHN0YXJ0
KTsKKwogICAgIHRva2VuTG9jYXRpb24tPmxpbmUgPSBtX2xpbmVOdW1iZXI7CiAgICAgdG9rZW5M
b2NhdGlvbi0+bGluZVN0YXJ0T2Zmc2V0ID0gY3VycmVudExpbmVTdGFydE9mZnNldCgpOwogICAg
IHRva2VuTG9jYXRpb24tPnN0YXJ0T2Zmc2V0ID0gb2Zmc2V0RnJvbVNvdXJjZVB0cihzdGFydCk7
CkBAIC0zODEsNiArMzkzLDEzIEBAIEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46
OmxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tlbiogdG9rZW5SZWNvcmQsIHVuCiAgICAgQVNTRVJU
KHRva2VuTG9jYXRpb24tPnN0YXJ0T2Zmc2V0ID49IHRva2VuTG9jYXRpb24tPmxpbmVTdGFydE9m
ZnNldCk7CiAgICAgdG9rZW5SZWNvcmQtPm1fc3RhcnRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb247
CiAgICAgdG9rZW5SZWNvcmQtPm1fZW5kUG9zaXRpb24gPSBjdXJyZW50UG9zaXRpb24oKTsKKyNp
ZiAhQVNTRVJUX0RJU0FCTEVECisgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgewor
ICAgICAgICBpZiAoIWlzU2FmZUlkZW50aWZpZXIoKm1fdm0sIHRva2VuRGF0YS0+aWRlbnQpKQor
ICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LOworICAgIH0KKyNlbmRpZgorCiAgICAgbV9sYXN0
VG9rZW4gPSBJREVOVDsKICAgICByZXR1cm4gSURFTlQ7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IGZjOWNjZDlmNmM1NzZjMWFlZjU0N2YyMTFmZGQ1OTZm
NDJlMDU4MDYuLmQ5NTJiYTZhOTRkMmY2YjQxODIxNTUwMDRkMGE5NzA4NDI5YmQ3OGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0xMzIsNiArMTMyLDEyIEBAIFBh
c3NSZWZQdHI8UHJvZ3JhbU5vZGU+IFByb2dyYW1Ob2RlOjpjcmVhdGUoVk0qIHZtLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIHN0YXJ0CiAgICAgcmV0dXJuIG5vZGUucmVsZWFzZSgpOwogfQogCisK
K3ZvaWQgUHJvZ3JhbU5vZGU6OnNldENsb3NlZFZhcmlhYmxlcyhjb25zdCBWZWN0b3I8UmVmUHRy
PFN0cmluZ0ltcGw+PiYmIGNsb3NlZFZhcmlhYmxlcykKK3sKKyAgICBtX2Nsb3NlZFZhcmlhYmxl
cyA9IHN0ZDo6bW92ZShjbG9zZWRWYXJpYWJsZXMpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gRXZhbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAog
aW5saW5lIEV2YWxOb2RlOjpFdmFsTm9kZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
c3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWdu
ZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFj
aywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlh
YmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGlu
dCBudW1Db25zdGFudHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggZDc3
OWExNzhkOTU2ZmY5OWZkMGJlZDVkNWY0NTRhYTNlNmI1MDg3OS4uODE2ZmYwMDFhYmYwMzc2YzY0
MmYxYTkzOGQwZTBhOWY1MjljYTZiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMu
aApAQCAtMTQzMSw2ICsxNDMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbmVl
ZHNBY3RpdmF0aW9uKCkgY29uc3QgeyByZXR1cm4gKGhhc0NhcHR1cmVkVmFyaWFibGVzKCkpIHx8
IChtX2ZlYXR1cmVzICYgKEV2YWxGZWF0dXJlIHwgV2l0aEZlYXR1cmUgfCBDYXRjaEZlYXR1cmUp
KTsgfQogICAgICAgICBib29sIGhhc0NhcHR1cmVkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4g
ISFtX2NhcHR1cmVkVmFyaWFibGVzLnNpemUoKTsgfQogICAgICAgICBzaXplX3QgY2FwdHVyZWRW
YXJpYWJsZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jYXB0dXJlZFZhcmlhYmxlcy5zaXplKCk7
IH0KKyAgICAgICAgY29uc3QgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMoKSBjb25z
dCB7IHJldHVybiBtX2NhcHR1cmVkVmFyaWFibGVzOyB9CiAgICAgICAgIGJvb2wgY2FwdHVyZXMo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQpIHsgcmV0dXJuIG1fY2FwdHVyZWRWYXJpYWJsZXMuY29u
dGFpbnMoaWRlbnQuaW1wbCgpKTsgfQogCiAgICAgICAgIFZhclN0YWNrJiB2YXJTdGFjaygpIHsg
cmV0dXJuIG1fdmFyU3RhY2s7IH0KQEAgLTE0NDYsNiArMTQ0Nyw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1lbnQoKSBjb25zdDsKIAogICAg
ICAgICB2b2lkIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiBkZXN0aW5hdGlvbik7CisgICAgICAgIAorICAgICAgICB2b2lkIHNldENsb3NlZFZh
cmlhYmxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmKSB7IH0KIAogICAgIHBy
b3RlY3RlZDoKICAgICAgICAgdm9pZCBzZXRTb3VyY2UoY29uc3QgU291cmNlQ29kZSYgc291cmNl
KSB7IG1fc291cmNlID0gc291cmNlOyB9CkBAIC0xNDc1LDExICsxNDc4LDEzIEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNjb3BlSXNGdW5jdGlvbiA9IGZh
bHNlOwogCisgICAgICAgIHZvaWQgc2V0Q2xvc2VkVmFyaWFibGVzKGNvbnN0IFZlY3RvcjxSZWZQ
dHI8U3RyaW5nSW1wbD4+JiYpOworICAgICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0lt
cGw+PiYgY2xvc2VkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9jbG9zZWRWYXJpYWJsZXM7
IH0KICAgICBwcml2YXRlOgogICAgICAgICBQcm9ncmFtTm9kZShWTSosIGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFy
dENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwg
RnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZl
YXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKLQor
ICAgICAgICBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiBtX2Nsb3NlZFZhcmlhYmxlczsKICAg
ICAgICAgdW5zaWduZWQgbV9zdGFydENvbHVtbjsKICAgICAgICAgdW5zaWduZWQgbV9lbmRDb2x1
bW47CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCAy
OTc2NjZlNzI2ZTQ1ZDA4M2VmMTM0OWRkZmZkZjM3ZWY4MDBkZjdhLi41MGJlYzc5ZmUzOGFkZjhm
M2EwNGY2YjQ2Y2JkMmE1Y2JmY2YyNDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwCkBAIC0yMDQsOCArMjA0LDkgQEAgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlcihW
TSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25QYXJhbWV0ZXJzKgogICAg
ICwgbV9sYXN0SWRlbnRpZmllcigwKQogICAgICwgbV9sYXN0RnVuY3Rpb25OYW1lKG51bGxwdHIp
CiAgICAgLCBtX3NvdXJjZUVsZW1lbnRzKDApCisgICAgLCBtX3BhcnNpbmdCdWlsdGluKHN0cmlj
dG5lc3MgPT0gSlNQYXJzZUJ1aWx0aW4pCiB7Ci0gICAgbV9sZXhlciA9IGFkb3B0UHRyKG5ldyBM
ZXhlclR5cGUodm0pKTsKKyAgICBtX2xleGVyID0gYWRvcHRQdHIobmV3IExleGVyVHlwZSh2bSwg
c3RyaWN0bmVzcykpOwogICAgIG1fYXJlbmEgPSBtX3ZtLT5wYXJzZXJBcmVuYS5nZXQoKTsKICAg
ICBtX2xleGVyLT5zZXRDb2RlKHNvdXJjZSwgbV9hcmVuYSk7CiAgICAgbV90b2tlbi5tX2xvY2F0
aW9uLmxpbmUgPSBzb3VyY2UuZmlyc3RMaW5lKCk7CkBAIC0yNTYsNiArMjU3LDcgQEAgU3RyaW5n
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKCkKICAgICBJZGVudGlmaWVyU2V0IGNhcHR1
cmVkVmFyaWFibGVzOwogICAgIGJvb2wgbW9kaWZpZWRQYXJhbWV0ZXIgPSBmYWxzZTsKICAgICBz
Y29wZS0+Z2V0Q2FwdHVyZWRWYXJpYWJsZXMoY2FwdHVyZWRWYXJpYWJsZXMsIG1vZGlmaWVkUGFy
YW1ldGVyKTsKKyAgICAKICAgICBDb2RlRmVhdHVyZXMgZmVhdHVyZXMgPSBjb250ZXh0LmZlYXR1
cmVzKCk7CiAgICAgaWYgKHNjb3BlLT5zdHJpY3RNb2RlKCkpCiAgICAgICAgIGZlYXR1cmVzIHw9
IFN0cmljdE1vZGVGZWF0dXJlOwpAQCAtMjYzLDIxICsyNjUsMzYgQEAgU3RyaW5nIFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUlubmVyKCkKICAgICAgICAgZmVhdHVyZXMgfD0gU2hhZG93c0FyZ3Vt
ZW50c0ZlYXR1cmU7CiAgICAgaWYgKG1vZGlmaWVkUGFyYW1ldGVyKQogICAgICAgICBmZWF0dXJl
cyB8PSBNb2RpZmllZFBhcmFtZXRlckZlYXR1cmU7Ci0KKyAgICAKKyAgICBWZWN0b3I8UmVmUHRy
PFN0cmluZ0ltcGw+PiBjbG9zZWRWYXJpYWJsZXM7CisgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW4p
IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWNhcHR1cmVkVmFyaWFibGVzLnNpemUoKSk7Cisg
ICAgICAgIElkZW50aWZpZXJTZXQgdXNlZFZhcmlhYmxlczsKKyAgICAgICAgc2NvcGUtPmdldFVz
ZWRWYXJpYWJsZXModXNlZFZhcmlhYmxlcyk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgdmFy
aWFibGUgOiB1c2VkVmFyaWFibGVzKSB7CisgICAgICAgICAgICBpZiAoc2NvcGUtPmhhc0RlY2xh
cmVkVmFyaWFibGUoSWRlbnRpZmllcihtX3ZtLCB2YXJpYWJsZS5nZXQoKSkpKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoc2NvcGUtPmhh
c0RlY2xhcmVkUGFyYW1ldGVyKElkZW50aWZpZXIobV92bSwgdmFyaWFibGUuZ2V0KCkpKSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGNsb3NlZFZhcmlhYmxlcy5hcHBl
bmQodmFyaWFibGUpOworICAgICAgICB9CisgICAgfQogICAgIGRpZEZpbmlzaFBhcnNpbmcoc291
cmNlRWxlbWVudHMsIGNvbnRleHQudmFyRGVjbGFyYXRpb25zKCksIGNvbnRleHQuZnVuY0RlY2xh
cmF0aW9ucygpLCBmZWF0dXJlcywKLSAgICAgICAgY29udGV4dC5udW1Db25zdGFudHMoKSwgY2Fw
dHVyZWRWYXJpYWJsZXMpOworICAgICAgICBjb250ZXh0Lm51bUNvbnN0YW50cygpLCBjYXB0dXJl
ZFZhcmlhYmxlcywgc3RkOjptb3ZlKGNsb3NlZFZhcmlhYmxlcykpOwogCiAgICAgcmV0dXJuIHBh
cnNlRXJyb3I7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB2b2lkIFBhcnNl
cjxMZXhlclR5cGU+OjpkaWRGaW5pc2hQYXJzaW5nKFNvdXJjZUVsZW1lbnRzKiBzb3VyY2VFbGVt
ZW50cywgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjaz4qIHZhclN0
YWNrLCAKLSAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3Rh
Y2s+KiBmdW5jU3RhY2ssIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cywg
SWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJzKQorICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJh
dGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qIGZ1bmNTdGFjaywgQ29kZUZlYXR1cmVzIGZlYXR1
cmVzLCBpbnQgbnVtQ29uc3RhbnRzLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcnMsIGNvbnN0
IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYgY2xvc2VkVmFyaWFibGVzKQogewogICAgIG1f
c291cmNlRWxlbWVudHMgPSBzb3VyY2VFbGVtZW50czsKICAgICBtX3ZhckRlY2xhcmF0aW9ucyA9
IHZhclN0YWNrOwogICAgIG1fZnVuY0RlY2xhcmF0aW9ucyA9IGZ1bmNTdGFjazsKICAgICBtX2Nh
cHR1cmVkVmFyaWFibGVzLnN3YXAoY2FwdHVyZWRWYXJzKTsKKyAgICBtX2Nsb3NlZFZhcmlhYmxl
cyA9IGNsb3NlZFZhcmlhYmxlczsKICAgICBtX2ZlYXR1cmVzID0gZmVhdHVyZXM7CiAgICAgbV9u
dW1Db25zdGFudHMgPSBudW1Db25zdGFudHM7CiB9CkBAIC0yMzQ2LDYgKzIzNjMsMTAgQEAgdGVt
cGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4gdm9pZCBQYXJzZXI8TGV4ZXJUeXBlPjo6cHJpbnRV
bmV4cGVjdGVkVG9rZW5UZXh0KFcKICAgICBjYXNlIFJFU0VSVkVEOgogICAgICAgICBvdXQucHJp
bnQoIlVuZXhwZWN0ZWQgdXNlIG9mIHJlc2VydmVkIHdvcmQgJyIsIGdldFRva2VuKCksICInIik7
CiAgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgSU5WQUxJRF9QUklWQVRFX05BTUVfRVJST1JU
T0s6CisgICAgICAgIG91dC5wcmludCgiSW52YWxpZCBwcml2YXRlIG5hbWUgJyIsIGdldFRva2Vu
KCksICInIik7CisgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIAogICAgIGNhc2UgSURFTlQ6
CiAgICAgICAgIG91dC5wcmludCgiVW5leHBlY3RlZCBpZGVudGlmaWVyICciLCBnZXRUb2tlbigp
LCAiJyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggYjY5OGVmOTM2
OGNiOGM4ZjE5N2NjZDAwMGFjYWE2ZGZiMTFiYTI0NC4uOTAzMzg1MGM4Yzk3ZjU3ZTIxZGE1ZWVk
YjAyZDA0NGY0Yzg5NzhlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBA
IC0yMyw2ICsyMyw3IEBACiAjaWZuZGVmIFBhcnNlcl9oCiAjZGVmaW5lIFBhcnNlcl9oCiAKKyNp
bmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5j
bHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKQEAgLTI1
OSw2ICsyNjAsMTAgQEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAgcmV0dXJuIGlzVmFsaWRTdHJp
Y3RNb2RlID8gQmluZGluZ1N1Y2NlZWRlZCA6IFN0cmljdEJpbmRpbmdGYWlsZWQ7CiAgICAgfQog
CisgICAgdm9pZCBnZXRVc2VkVmFyaWFibGVzKElkZW50aWZpZXJTZXQmIHVzZWRWYXJpYWJsZXMp
CisgICAgeworICAgICAgICB1c2VkVmFyaWFibGVzLnN3YXAobV91c2VkVmFyaWFibGVzKTsKKyAg
ICB9CiAKICAgICB2b2lkIHVzZVZhcmlhYmxlKGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBib29s
IGlzRXZhbCkKICAgICB7CkBAIC00MTQsNiArNDE5LDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQ
dHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImKTsKIAogICAgIEpTVGV4dFBvc2l0aW9u
IHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKSBjb25zdCB7IHJldHVybiBtX2xleGVyLT5wb3Np
dGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7IH0KKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmlu
Z0ltcGw+PiYmIGNsb3NlZFZhcmlhYmxlcygpIHsgcmV0dXJuIHN0ZDo6bW92ZShtX2Nsb3NlZFZh
cmlhYmxlcyk7IH0KIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgQWxsb3dJbk92ZXJyaWRlIHsKQEAg
LTU0MCw3ICs1NDYsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBwYXJzZUlubmVyKCk7CiAKICAg
ICB2b2lkIGRpZEZpbmlzaFBhcnNpbmcoU291cmNlRWxlbWVudHMqLCBQYXJzZXJBcmVuYURhdGE8
RGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrPiosIAotICAgICAgICBQYXJzZXJBcmVuYURhdGE8
RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KiwgQ29kZUZlYXR1cmVzLCBpbnQsIElk
ZW50aWZpZXJTZXQmKTsKKyAgICAgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tz
OjpGdW5jdGlvblN0YWNrPiosIENvZGVGZWF0dXJlcywgaW50LCBJZGVudGlmaWVyU2V0JiwgY29u
c3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJik7CiAKICAgICAvLyBVc2VkIHRvIGRldGVy
bWluZSB0eXBlIG9mIGVycm9yIHRvIHJlcG9ydC4KICAgICBib29sIGlzRnVuY3Rpb25Cb2R5Tm9k
ZShTY29wZU5vZGUqKSB7IHJldHVybiBmYWxzZTsgfQpAQCAtODQwLDkgKzg0NiwxMSBAQCBwcml2
YXRlOgogICAgIGNvbnN0IElkZW50aWZpZXIqIG1fbGFzdEZ1bmN0aW9uTmFtZTsKICAgICBSZWZQ
dHI8U291cmNlUHJvdmlkZXJDYWNoZT4gbV9mdW5jdGlvbkNhY2hlOwogICAgIFNvdXJjZUVsZW1l
bnRzKiBtX3NvdXJjZUVsZW1lbnRzOworICAgIGJvb2wgbV9wYXJzaW5nQnVpbHRpbjsKICAgICBQ
YXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrPiogbV92YXJEZWNsYXJh
dGlvbnM7CiAgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0
YWNrPiogbV9mdW5jRGVjbGFyYXRpb25zOwogICAgIElkZW50aWZpZXJTZXQgbV9jYXB0dXJlZFZh
cmlhYmxlczsKKyAgICBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiBtX2Nsb3NlZFZhcmlhYmxl
czsKICAgICBDb2RlRmVhdHVyZXMgbV9mZWF0dXJlczsKICAgICBpbnQgbV9udW1Db25zdGFudHM7
CiAgICAgCkBAIC05NTcsNiArOTY1LDEwIEBAIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gcGFyc2Uo
Vk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uUGFyYW1ldGVyCiAgICAg
ICAgIFJlZlB0cjxQYXJzZWROb2RlPiByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4o
ZXJyb3IpOwogICAgICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAg
ICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFz
dE5ld2xpbmUoKTsKKyAgICAgICAgaWYgKHN0cmljdG5lc3MgPT0gSlNQYXJzZUJ1aWx0aW4pIHsK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgICAgICAgICByZXN1bHQt
PnNldENsb3NlZFZhcmlhYmxlcyhzdGQ6Om1vdmUocGFyc2VyLmNsb3NlZFZhcmlhYmxlcygpKSk7
CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiAgICAgfQogICAg
IFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBwYXJhbWV0ZXJzLCBuYW1l
LCBzdHJpY3RuZXNzLCBwYXJzZXJNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyTW9kZXMuaAppbmRleCA0ZTlhMTdjZDIxY2EzNDE0NmJiZDQ4MTU2YTM3MmNkNDA0ZGVm
NjBjLi5mN2E3NWJmN2MzNzg1N2U0NGI2ZDVkNzFmNDUyOWJiMWFjMWNmNWYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCkBAIC0yOSw3ICsyOSw3IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi1lbnVtIEpTUGFyc2VyU3RyaWN0bmVzcyB7IEpTUGFyc2VOb3Jt
YWwsIEpTUGFyc2VTdHJpY3QgfTsKK2VudW0gSlNQYXJzZXJTdHJpY3RuZXNzIHsgSlNQYXJzZU5v
cm1hbCwgSlNQYXJzZUJ1aWx0aW4sIEpTUGFyc2VTdHJpY3QgfTsKIGVudW0gSlNQYXJzZXJNb2Rl
IHsgSlNQYXJzZVByb2dyYW1Db2RlLCBKU1BhcnNlRnVuY3Rpb25Db2RlIH07CiAKIGVudW0gUHJv
ZmlsZXJNb2RlIHsgUHJvZmlsZXJPZmYsIFByb2ZpbGVyT24gfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCmluZGV4IDgyYTI2NjM5YTc5MjIwYTA4NDQ1NmI0
OGYzMjg1MmQxNDNjNzM5ZDAuLjhjODdhZDlmYWRiZGM0YWYzOWFjOTlkYjJkODQ0NWUxM2ZmZmQz
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5z
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaApAQCAt
MTQ5LDYgKzE0OSw3IEBAIGVudW0gSlNUb2tlblR5cGUgewogICAgIElOVkFMSURfTlVNRVJJQ19M
SVRFUkFMX0VSUk9SVE9LID0gNyB8IEVycm9yVG9rZW5GbGFnLAogICAgIFVOVEVSTUlOQVRFRF9T
VFJJTkdfTElURVJBTF9FUlJPUlRPSyA9IDggfCBFcnJvclRva2VuRmxhZyB8IFVudGVybWluYXRl
ZEVycm9yVG9rZW5GbGFnLAogICAgIElOVkFMSURfU1RSSU5HX0xJVEVSQUxfRVJST1JUT0sgPSA5
IHwgRXJyb3JUb2tlbkZsYWcsCisgICAgSU5WQUxJRF9QUklWQVRFX05BTUVfRVJST1JUT0sgPSAx
MCB8IEVycm9yVG9rZW5GbGFnCiB9OwogCiBzdHJ1Y3QgSlNUZXh0UG9zaXRpb24gewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAppbmRleCAxOGYzODkxNzEzODUyMzYy
YzdhNzVhMzA1M2I0NjMxNDE3YmViODFiLi5mMTZmZDNkZTQwNTU5NzBiYTlkOWM2ZjBhZTYzMThm
MjIwNGI2NTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1
bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaApA
QCAtMjUsNiArMjUsNyBAQAogI2RlZmluZSBBcmd1bWVudHNfaAogCiAjaW5jbHVkZSAiQ29kZU9y
aWdpbi5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiSlNBY3Rp
dmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKICNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKaW5kZXggZGQwODk0ZjE0YTAyMWQ1
ZjEyNjU4YWNiMDFlNzIxZmNkNmQzNDhjYy4uNWI0YWU4NzE2YjA1NTNiZTQ2MjM5NTVlOTllMWI0
M2ViZjE4ZmUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJn
dW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtMjYsNyArMjYsOSBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBl
LmgiCiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkpTQXJndW1l
bnRzSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90
b3R5cGUuY3BwCmluZGV4IDI3YWM2ZDQ4YTcxZjc5NTUwMmExMGNlYTY0Nzg2NTQxMzVhNDYzYTAu
LjZkYzdiZTU2OTY5ZGU2N2Y2MjEwN2JiM2E1MWEzMDhmYTNiYTc2YmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKICNp
bmNsdWRlICJKU1N0cmluZ0J1aWxkZXIuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIK
ICNpbmNsdWRlICJKU1N0cmluZ0pvaW5lci5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1
ZGUgIk9iamVjdFByb3RvdHlwZS5oIgpAQCAtNTYsNyArNTcsNiBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NsaWNlKEV4ZWNTdGF0ZSopOwogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTb3J0KEV4ZWNT
dGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1
bmNTcGxpY2UoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvRnVuY1VuU2hpZnQoRXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0V2ZXJ5KEV4ZWNTdGF0ZSopOwogc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNGb3JFYWNoKEV4ZWNT
dGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1
bmNTb21lKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlQcm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0ZSopOwpAQCAtOTU0LDY5ICs5NTQsNiBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jTWFwKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdEFycmF5KTsKIH0KIAotLy8g
RG9jdW1lbnRhdGlvbiBmb3IgdGhlc2UgdGhyZWUgaXMgYXZhaWxhYmxlIGF0OgotLy8gaHR0cDov
L2RldmVsb3Blci10ZXN0Lm1vemlsbGEub3JnL2VuL2RvY3MvQ29yZV9KYXZhU2NyaXB0XzEuNV9S
ZWZlcmVuY2U6T2JqZWN0czpBcnJheTpldmVyeQotLy8gaHR0cDovL2RldmVsb3Blci10ZXN0Lm1v
emlsbGEub3JnL2VuL2RvY3MvQ29yZV9KYXZhU2NyaXB0XzEuNV9SZWZlcmVuY2U6T2JqZWN0czpB
cnJheTpmb3JFYWNoCi0vLyBodHRwOi8vZGV2ZWxvcGVyLXRlc3QubW96aWxsYS5vcmcvZW4vZG9j
cy9Db3JlX0phdmFTY3JpcHRfMS41X1JlZmVyZW5jZTpPYmplY3RzOkFycmF5OnNvbWUKLQotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0V2ZXJ5KEV4ZWNTdGF0ZSog
ZXhlYykKLXsKLSAgICBKU09iamVjdCogdGhpc09iaiA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKS50
b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7Ci0gICAgdW5zaWduZWQgbGVu
Z3RoID0gdGhpc09iai0+Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpLnRv
VUludDMyKGV4ZWMpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQotICAgIEpTVmFsdWUgZnVuY3Rp
b24gPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxs
VHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgaWYg
KGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYyk7Ci0KLSAgICBKU1ZhbHVlIGFwcGx5VGhpcyA9IGV4ZWMtPmFyZ3VtZW50KDEpOwot
Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4odHJ1ZSk7Ci0KLSAgICB1bnNpZ25lZCBr
ID0gMDsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVKUyAmJiBpc0pTQXJyYXkodGhpc09i
aikpIHsKLSAgICAgICAgSlNGdW5jdGlvbiogZiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZnVuY3Rp
b24pOwotICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodGhpc09iaik7Ci0gICAgICAg
IENhY2hlZENhbGwgY2FjaGVkQ2FsbChleGVjLCBmLCAzKTsKLSAgICAgICAgZm9yICg7IGsgPCBs
ZW5ndGggJiYgIWV4ZWMtPmhhZEV4Y2VwdGlvbigpOyArK2spIHsKLSAgICAgICAgICAgIGlmIChV
TkxJS0VMWSghYXJyYXktPmNhbkdldEluZGV4UXVpY2tseShrKSkpCi0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0VGhpcyhhcHBs
eVRoaXMpOwotICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudCgwLCBhcnJheS0+Z2V0
SW5kZXhRdWlja2x5KGspKTsKLSAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoMSwg
anNOdW1iZXIoaykpOwotICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudCgyLCB0aGlz
T2JqKTsKLSAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FjaGVkQ2FsbC5jYWxsKCk7Ci0g
ICAgICAgICAgICBpZiAoIXJlc3VsdC50b0Jvb2xlYW4oZXhlYykpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKLSAgICAgICAgfQotICAg
IH0KLSAgICBmb3IgKDsgayA8IGxlbmd0aCAmJiAhZXhlYy0+aGFkRXhjZXB0aW9uKCk7ICsraykg
ewotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqKTsKLSAgICAgICAgaWYgKCF0aGlz
T2JqLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaywgc2xvdCkpCi0gICAgICAgICAgICBjb250aW51
ZTsKLQotICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBlYWNoQXJndW1lbnRzOwotICAgICAg
ICBlYWNoQXJndW1lbnRzLmFwcGVuZChzbG90LmdldFZhbHVlKGV4ZWMsIGspKTsKLSAgICAgICAg
ZWFjaEFyZ3VtZW50cy5hcHBlbmQoanNOdW1iZXIoaykpOwotICAgICAgICBlYWNoQXJndW1lbnRz
LmFwcGVuZCh0aGlzT2JqKTsKLQotICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0g
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCi0gICAg
ICAgIGJvb2wgcHJlZGljYXRlUmVzdWx0ID0gY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUs
IGNhbGxEYXRhLCBhcHBseVRoaXMsIGVhY2hBcmd1bWVudHMpLnRvQm9vbGVhbihleGVjKTsKLSAg
ICAgICAgaWYgKCFwcmVkaWNhdGVSZXN1bHQpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGpzQm9v
bGVhbihmYWxzZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKLX0KLQogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0ZvckVhY2goRXhlY1N0YXRlKiBleGVjKQogewogICAg
IEpTT2JqZWN0KiB0aGlzT2JqID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBT
dHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlQ2FjaGUuY3BwCmluZGV4IDUxMGUzODNmYWU1NzVhYWRhODE3NmMwNDQxZWU3MjViNDNh
NGM3MzIuLmQzMDQ4NzdmZTljZGUxYzA5MTlmZDQ1OTVmODExZWNhYmNlNzcyNzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtMTQ0LDI0ICsxNDQs
MjYgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNoZTo6Z2V0RnVuY3Rpb25F
eGVjdXRhYmxlRnJvbUdsb2JhbENvZGUoVk0mIHYKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlv
bkJlZm9yZUxhc3ROZXdsaW5lOwogICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9IHBh
cnNlPFByb2dyYW1Ob2RlPigmdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBKU1BhcnNlTm9y
bWFsLCBKU1BhcnNlUHJvZ3JhbUNvZGUsIGVycm9yLCAmcG9zaXRpb25CZWZvcmVMYXN0TmV3bGlu
ZSk7CiAgICAgaWYgKCFwcm9ncmFtKSB7Ci0gICAgICAgIEFTU0VSVChlcnJvci5tX3R5cGUgIT0g
UGFyc2VyRXJyb3I6OkVycm9yTm9uZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVycm9yLm1f
dHlwZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKICAgICAgICAgbV9zb3VyY2VDb2RlLnJl
bW92ZShhZGRSZXN1bHQuaXRlcmF0b3IpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAg
ICAvLyBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgYW4gaW5wdXQgc3RyaW5nIHRoYXQgd291bGQgcmVz
dWx0IGluIGEgc2luZ2xlIGFub255bW91cyBmdW5jdGlvbiBleHByZXNzaW9uLgogICAgIFN0YXRl
bWVudE5vZGUqIGV4cHJTdGF0ZW1lbnQgPSBwcm9ncmFtLT5zaW5nbGVTdGF0ZW1lbnQoKTsKLSAg
ICBBU1NFUlQoZXhwclN0YXRlbWVudCk7Ci0gICAgQVNTRVJUKGV4cHJTdGF0ZW1lbnQtPmlzRXhw
clN0YXRlbWVudCgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChleHByU3RhdGVtZW50KTsKKyAgICBS
RUxFQVNFX0FTU0VSVChleHByU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CiAgICAgRXhw
cmVzc2lvbk5vZGUqIGZ1bmNFeHByID0gc3RhdGljX2Nhc3Q8RXhwclN0YXRlbWVudE5vZGUqPihl
eHByU3RhdGVtZW50KS0+ZXhwcigpOwotICAgIEFTU0VSVChmdW5jRXhwcik7CisgICAgUkVMRUFT
RV9BU1NFUlQoZnVuY0V4cHIpOwogICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmNFeHByLT5pc0Z1bmNF
eHByTm9kZSgpKTsKICAgICBGdW5jdGlvbkJvZHlOb2RlKiBib2R5ID0gc3RhdGljX2Nhc3Q8RnVu
Y0V4cHJOb2RlKj4oZnVuY0V4cHIpLT5ib2R5KCk7CisgICAgUkVMRUFTRV9BU1NFUlQoIXByb2dy
YW0tPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpOworICAgIAogICAgIGJvZHktPnNldEVuZFBvc2l0
aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwotICAgIEFTU0VSVChib2R5KTsKLSAgICBB
U1NFUlQoYm9keS0+aWRlbnQoKS5pc051bGwoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keSk7
CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keS0+aWRlbnQoKS5pc051bGwoKSk7CiAKLSAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgYm9keSwgdHJ1ZSk7CisgICAgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIGJvZHksIHRydWUsIFVubGlua2Vk
Tm9ybWFsRnVuY3Rpb24pOwogICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+bV9uYW1lVmFsdWUuc2V0
KHZtLCBmdW5jdGlvbkV4ZWN1dGFibGUsIGpzU3RyaW5nKCZ2bSwgbmFtZS5zdHJpbmcoKSkpOwog
CiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IFNvdXJjZUNvZGVWYWx1ZSh2bSwgZnVu
Y3Rpb25FeGVjdXRhYmxlLCBtX3NvdXJjZUNvZGUuYWdlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCmluZGV4IDNmNWM2NDVj
MDk4ZDUyN2ZjMGM3MjU5ZTk0NDdlZmJlODg2OGEyOWMuLjJmYzJiNzI3YWZjZWVlMWVjMmM2MjVk
ZTU2NzViM2JlMWNmNjBkNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKQEAgLTI3LDcgKzI3LDEwIEBAIG5hbWVzcGFjZSBK
U0MgewogCiAjZGVmaW5lIElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRShuYW1lKSAsIG5hbWUodm0s
ICNuYW1lKQogI2RlZmluZSBJTklUSUFMSVpFX0tFWVdPUkQobmFtZSkgLCBuYW1lIyNLZXl3b3Jk
KHZtLCAjbmFtZSkKLSNkZWZpbmUgSU5JVElBTElaRV9QUklWQVRFX05BTUUobmFtZSkgLCBuYW1l
IyNQcml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tKFByaXZhdGVOYW1lKCkpKQorI2RlZmluZSBJ
TklUSUFMSVpFX1BSSVZBVEVfTkFNRShuYW1lKSBcCisgICAgLCBuYW1lIyNQcml2YXRlTmFtZShJ
ZGVudGlmaWVyOjpmcm9tKFByaXZhdGVOYW1lKCkpKSBcCisgICAgLCBtXyMjbmFtZSMjUHVibGlj
U3RyaW5nUGFpcihuYW1lLCBuYW1lIyNQcml2YXRlTmFtZSkgXAorCiAKIENvbW1vbklkZW50aWZp
ZXJzOjpDb21tb25JZGVudGlmaWVycyhWTSogdm0pCiAgICAgOiBudWxsSWRlbnRpZmllcigpCkBA
IC0zOCw4ICs0MSwyNiBAQCBDb21tb25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMoVk0q
IHZtKQogICAgICwgaGFzTmV4dElkZW50aWZpZXIodm0sICJoYXNOZXh0IikKICAgICBKU0NfQ09N
TU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZV09SRChJTklUSUFMSVpFX0tFWVdPUkQpCiAgICAgSlND
X0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElaRV9QUk9QRVJU
WV9OQU1FKQorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShJTklUSUFMSVpF
X1BST1BFUlRZX05BTUUpCiAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hf
UFJPUEVSVFlfTkFNRShJTklUSUFMSVpFX1BSSVZBVEVfTkFNRSkKIHsKIH0KIAorY29uc3QgSWRl
bnRpZmllciogQ29tbW9uSWRlbnRpZmllcnM6OmdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZp
ZXImIGlkZW50KSBjb25zdAoreworI2RlZmluZSBSRVRVUk5fSUZfUFJJVkFURV9OQU1FX01BVENI
RVMobmFtZSkgaWYgKG1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQYWlyLmZpcnN0ID09IGlkZW50KSBy
ZXR1cm4gJm1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQYWlyLnNlY29uZDsKKyAgICBKU0NfQ09NTU9O
X1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKFJFVFVSTl9JRl9QUklWQVRF
X05BTUVfTUFUQ0hFUykKKyN1bmRlZiBSRVRVUk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMKKyAg
ICByZXR1cm4gMDsKK30KKworSWRlbnRpZmllciBDb21tb25JZGVudGlmaWVyczo6Z2V0UHVibGlj
TmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK3sKKyNkZWZpbmUgUkVUVVJOX0lG
X1BSSVZBVEVfTkFNRV9NQVRDSEVTKG5hbWUpIGlmIChtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFp
ci5zZWNvbmQgPT0gaWRlbnQpIHJldHVybiBtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpci5maXJz
dDsKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1F
KFJFVFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hFUykKKyN1bmRlZiBSRVRVUk5fSUZfUFJJVkFU
RV9OQU1FX01BVENIRVMKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBlbXB0eUlkZW50aWZpZXI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggZThm
OWVkODJiYzc5NDYyMDM4MjY2YjMwMjA3ODIyNDdiMWZhMjdhMy4uOTI0ZDM2YWM2OTEzNTAzNTdj
YjM4MmIxZWYzYjQwYTBhMDhjMGFiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0yMiw2ICsyMiw3IEBACiAjZGVmaW5lIENv
bW1vbklkZW50aWZpZXJzX2gKIAogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJK
U0NCdWlsdGlucy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiAvLyBNYXJrZWRB
cmd1bWVudEJ1ZmZlciBvZiBwcm9wZXJ0eSBuYW1lcywgcGFzc2VkIHRvIGEgbWFjcm8gc28gd2Ug
Y2FuIGRvIHNldCB0aGVtIHVwIHZhcmlvdXMKQEAgLTEzMyw4ICsxMzQsMTAgQEAKICAgICBtYWNy
byhvc3JFeGl0cykgXAogICAgIG1hY3JvKHBhcnNlKSBcCiAgICAgbWFjcm8ocHJvZmlsZWRCeXRl
Y29kZXMpIFwKKyAgICBtYWNybyhwcm9taXNlKSBcCiAgICAgbWFjcm8ocHJvcGVydHlJc0VudW1l
cmFibGUpIFwKICAgICBtYWNybyhwcm90b3R5cGUpIFwKKyAgICBtYWNybyhyZXNvbHZlKSBcCiAg
ICAgbWFjcm8oc2V0KSBcCiAgICAgbWFjcm8oc2l6ZSkgXAogICAgIG1hY3JvKHNsaWNlKSBcCkBA
IC0xNTUsNyArMTU4LDE0IEBACiAgICAgbWFjcm8odmFsdWVzKSBcCiAgICAgbWFjcm8odmFsdWVP
ZikgXAogICAgIG1hY3JvKHdpbmRvdykgXAotICAgIG1hY3JvKHdyaXRhYmxlKQorICAgIG1hY3Jv
KHdyaXRhYmxlKSBcCisgICAgbWFjcm8oaXRlcmF0b3IpIFwKKyAgICBtYWNybyhpdGVyYXRvck5l
eHQpIFwKKyAgICBtYWNybyhyZWplY3QpIFwKKyAgICBtYWNybyhmdWxmaWxsbWVudEhhbmRsZXIp
IFwKKyAgICBtYWNybyhyZWplY3Rpb25IYW5kbGVyKSBcCisgICAgbWFjcm8oZGVmZXJyZWQpIFwK
KyAgICBtYWNybyhjb3VudGRvd25Ib2xkZXIpIFwKIAogI2RlZmluZSBKU0NfQ09NTU9OX0lERU5U
SUZJRVJTX0VBQ0hfS0VZV09SRChtYWNybykgXAogICAgIG1hY3JvKGJyZWFrKSBcCkBAIC0yMDMs
NyArMjEzLDcgQEAKICAgICBtYWNybyh2b2lkKSBcCiAgICAgbWFjcm8od2hpbGUpIFwKICAgICBt
YWNybyh3aXRoKSBcCi0gICAgbWFjcm8oeWllbGQpCisgICAgbWFjcm8oeWllbGQpIFwKIAogI2Rl
ZmluZSBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKG1h
Y3JvKSBcCiAgICAgbWFjcm8oaXRlcmF0b3IpIFwKQEAgLTIxNiw3ICsyMjYsMTIgQEAKICAgICBt
YWNybyhpbmRleCkgXAogICAgIG1hY3JvKHZhbHVlcykgXAogICAgIG1hY3JvKGRlZmVycmVkKSBc
Ci0gICAgbWFjcm8oY291bnRkb3duSG9sZGVyKQorICAgIG1hY3JvKGNvdW50ZG93bkhvbGRlcikg
XAorICAgIG1hY3JvKE9iamVjdCkgXAorICAgIG1hY3JvKFR5cGVFcnJvcikgXAorICAgIG1hY3Jv
KHVuZGVmaW5lZEtleXdvcmQpIFwKKyAgICBtYWNybyhjYWxsKSBcCisgICAgbWFjcm8oYXBwbHkp
CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0yNDAsMTEgKzI1NSwxNSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgCiAjZGVmaW5lIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFN
RV9HTE9CQUwobmFtZSkgY29uc3QgSWRlbnRpZmllciBuYW1lOwogICAgICAgICBKU0NfQ09NTU9O
X0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BS
T1BFUlRZX05BTUVfR0xPQkFMKQorICAgICAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9O
X05BTUUoSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJUWV9OQU1FX0dMT0JBTCkKICN1bmRl
ZiBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFMCiAKLSNkZWZpbmUg
SlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMKG5hbWUp
IGNvbnN0IElkZW50aWZpZXIgbmFtZSMjUHJpdmF0ZU5hbWU7CisjZGVmaW5lIEpTQ19JREVOVElG
SUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTChuYW1lKSBjb25zdCBJZGVu
dGlmaWVyIG5hbWUjI1ByaXZhdGVOYW1lOyBjb25zdCBzdGQ6OnBhaXI8SWRlbnRpZmllciwgSWRl
bnRpZmllcj4gbV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXI7CiAgICAgICAgIEpTQ19DT01NT05f
UFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSlNDX0lERU5USUZJRVJfREVD
TEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMKQogI3VuZGVmIEpTQ19JREVOVElGSUVS
X0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTAorICAgICAgICAKKyAgICAgICAg
Y29uc3QgSWRlbnRpZmllciogZ2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0
OworICAgICAgICBJZGVudGlmaWVyIGdldFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYpIGNv
bnN0OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggMDc1ODc1ZmIyMzE2YTU1
NTcwNTBhNjY5MGNkMGY5ODgyNDg0ZjVmMy4uNWFmOTA4NzU0ZTc0N2Y4Y2FlMGNkMDRhZjhkNDkx
NTAwNDY4YzJhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCkBAIC00MSw3ICs0MSw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5j
bHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKLSNpbmNsdWRlICJK
U0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5j
bHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcAppbmRl
eCA1NTMzNGJlMmY5ODBhOThmN2ZlYTQyYTA1YmUwZjIwYzAxOWZmMGRkLi5mYTU3YzAyNjg1ZTUz
ZDUyNTI4ODA1N2UyMTFkOThiMTA5ODFkNzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcApAQCAt
MjksNiArMjksOCBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNvZGVCbG9j
ay5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5s
aW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiTExJbnRD
b21tb24uaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBDb21tb25TbG93UGF0aHMgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVy
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNw
cAppbmRleCAwNWUxMWUwYjgwYTM0MzBhZWFiMjJiMDIyMmEyMTJmNGE4ZTJjNDliLi4zNjRjYzcx
NjY2MDhiNTAwN2Q0NzdkODczOTE4YTVkNjRiMTY4NjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAtODEsNiArODEsMTEg
QEAgSlNPYmplY3QqIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogCiBKU09iamVjdCogY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogeworICAgIAorICAgIGlmIChp
ZGVudC5pbXBsKCktPmlzRW1wdHlVbmlxdWUoKSkgeworICAgICAgICBTdHJpbmcgbWVzc2FnZSht
YWtlU3RyaW5nKCJDYW4ndCBmaW5kIHByaXZhdGUgdmFyaWFibGU6IEAiLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuZ2V0UHVibGljTmFtZShpZGVudCkuc3RyaW5nKCkpKTsKKyAgICAgICAgcmV0dXJu
IGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIG1lc3NhZ2UpOworICAgIH0KICAgICBTdHJpbmcg
bWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBmaW5kIHZhcmlhYmxlOiAiLCBpZGVudC5zdHJpbmco
KSkpOwogICAgIHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBtZXNzYWdlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCAxOTg5NzZi
YjNmZTZlNmU5MTE3OTgxMmQxY2FmOWI4YmY5YmZkMGJiLi44ZDU5MGVmMGZmYzBlYjkwYWM4Zjlh
ODFkOWJjMjU3MjFjZDM1YzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZS5oCkBAIC00ODQsNyArNDg0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckNv
ZGUoKTsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1
cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0
TW9kZSgpLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNv
bnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgp
LCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlKTsgfQogCiAgICAgdW5zaWduZWQgbnVtVmFy
aWFibGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bVZhcmlhYmxlcygp
OyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCkgeyByZXR1cm4gbV91bmxp
bmtlZEV2YWxDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpOyB9CkBAIC01NDAsNyAr
NTQwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckNvZGUoKTsKIAotICAgIEV4ZWN1dGFi
bGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVl
ZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSk7IH0KKyAg
ICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFi
bGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFs
c2UsIGZhbHNlKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBTY3JpcHRFeGVjdXRh
YmxlOwpAQCAtNjI4LDcgKzYyOCw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBi
YXNlbGluZUNvZGVCbG9ja0ZvcihraW5kKTsKICAgICB9Ci0gICAgICAgIAorCisgICAgYm9vbCBp
c0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5p
c0J1aWx0aW5GdW5jdGlvbigpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSgpIHsgcmV0
dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1lKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVy
JiBpbmZlcnJlZE5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aW5mZXJyZWRO
YW1lKCk7IH0KICAgICBKU1N0cmluZyogbmFtZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV91bmxp
bmtlZEV4ZWN1dGFibGUtPm5hbWVWYWx1ZSgpOyB9CkBAIC02NzUsMTQgKzY3Niw2IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2JvZHlJbmNsdWRlc0JyYWNlczsKIH07CiAKLWlubGluZSBib29sIGlz
SG9zdEZ1bmN0aW9uKEpTVmFsdWUgdmFsdWUsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9u
KQotewotICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihnZXRK
U0Z1bmN0aW9uKHZhbHVlKSk7Ci0gICAgaWYgKCFmdW5jdGlvbiB8fCAhZnVuY3Rpb24tPmlzSG9z
dEZ1bmN0aW9uKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gZnVuY3Rpb24t
Pm5hdGl2ZUZ1bmN0aW9uKCkgPT0gbmF0aXZlRnVuY3Rpb247Ci19Ci0KIGlubGluZSB2b2lkIEV4
ZWN1dGFibGVCYXNlOjpjbGVhckNvZGVWaXJ0dWFsKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxl
KQogewogICAgIHN3aXRjaCAoZXhlY3V0YWJsZS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlw
ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
blByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblBy
b3RvdHlwZS5jcHAKaW5kZXggYzFiMDhhZjJkODE4ZGFlNTdlMWIwMGZkYTE3M2E4MTYxMzc1Mjli
NS4uMTI0OTBjNDBmMzM0MTdlY2E5MjM4NTBhMGRjNjYyZGJiY2Q0MGYzMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcApAQCAt
MjIsMTIgKzIyLDEzIEBACiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKIAogI2luY2x1
ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNB
cnJheS5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5o
IgotI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiTGV4ZXIuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKQEAgLTEwOCw3
ICsxMDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5j
VG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHMoSlNGdW5jdGlvbjo6
aW5mbygpKSkgewogICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0
aW9uKj4odGhpc1ZhbHVlKTsKLSAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigp
KQorICAgICAgICBpZiAoZnVuY3Rpb24tPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhl
YywgImZ1bmN0aW9uICIsIGZ1bmN0aW9uLT5uYW1lKGV4ZWMpLCAiKCkge1xuICAgIFtuYXRpdmUg
Y29kZV1cbn0iKSk7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGZ1
bmN0aW9uLT5qc0V4ZWN1dGFibGUoKTsKICAgICAgICAgU3RyaW5nIHNvdXJjZVN0cmluZyA9IGV4
ZWN1dGFibGUtPnNvdXJjZSgpLnRvU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAppbmRleCA3MmVkMWM3MTI0MDYxMTY4YjBhZGRkMzEx
NmY3NTVhMTE3YjhmYjkwLi5iMzc0OTQzMDk5ZTIxNTVhMzk3NzEzMzEzNDcwMmMyYTI0YWNjODZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAK
QEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBKU0FjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIAogaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9u
OjpzeW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7Ci0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlu
bGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5
IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS51aWQoKSk7CiAg
ICAgaWYgKGVudHJ5LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTcyLDcg
KzcyLDcgQEAgaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZUdldChQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QKIAogaW5saW5lIGJvb2wgSlNBY3RpdmF0
aW9uOjpzeW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5
bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBT
eW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5
TmFtZS51aWQoKSk7CiAgICAgaWYgKGVudHJ5LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKQEAgLTg5LDcgKzg5LDcgQEAgaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xU
YWJsZVB1dChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU4KICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6
aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CiAgICAgCi0gICAgU3ltYm9sVGFibGVF
bnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGlj
TmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5s
aW5lR2V0KHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGVudHJ5LmlzTnVsbCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGVudHJ5LmlzUmVhZE9ubHkoKSkgewpAQCAtMTM2
LDcgKzEzNiw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXRXaXRo
QXR0cmlidXRlcyhWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wCiAgICAgV3JpdGVCYXJyaWVyQmFz
ZTxVbmtub3duPiogcmVnOwogICAgIHsKICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIoc3ltYm9sVGFibGUoKS0+bV9sb2NrKTsKLSAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRl
cmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlKCktPmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVi
bGljTmFtZSgpKTsKKyAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5
bWJvbFRhYmxlKCktPmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgICAgICBp
ZiAoaXRlciA9PSBzeW1ib2xUYWJsZSgpLT5lbmQobG9ja2VyKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSYgZW50cnkgPSBpdGVyLT52YWx1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRl
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVy
YXRvci5jcHAKaW5kZXggMmZjZjg4MTVjMDU2ODA1ODEyYTc5OTFhNWZmMDYzZDY4NzM5NzE2NC4u
OWE5MjU4M2FhMGVjOTBkYmIzMjhlY2Q1MGRjMzEzOWFlZjAyNzNiNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5jcHAKQEAg
LTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJKU0FyZ3VtZW50c0l0ZXJhdG9yLmgiCiAKICNpbmNs
dWRlICJBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApp
bmRleCA5MDA3YjVmN2QzZjEwM2IxZDIxYjFhMzY1YTI2YzIxNWMzMmI0ZDI4Li5iYTBhMmQzOGU5
YzUzZTE1OTM3ZDQ2YTg5NTFhOGM4YzQ1MDc5MjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkV4ZWN1dGFi
bGUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJJbmRleGluZ0hlYWRl
cklubGluZXMuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJQcm9w
ZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1ZGUgIlJlamVjdC5oIgogI2luY2x1ZGUgPHd0Zi9BVkxU
cmVlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCmlu
ZGV4IGNjYTY4ODhiZjk4YTAyODY0NmNhM2RkZGYzNzYyN2NlMGU3ZDkzMDIuLjMzOWE3YWI3ZjU5
NTE1ZTk2YWZiN2VjNGI4NzQxZTdhYThlMTY2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCkBAIC0zMiw3ICszMiw5IEBACiAjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNOb3RB
bk9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk51bWJl
ck9iamVjdC5oIgorI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4
dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCmluZGV4IGY3Yzg0NDY0NTA5MmIyNTA4
MDVlNmU4ZDQ4MzJjOTk4YmRiODliNTQuLmQ3OTVkZDU2YTk3ZGRiNTk3YzA5MGZjMmUwYjdmMzA4
ZTMzZWJjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxp
bmVzLmgKQEAgLTI3LDggKzI3LDEwIEBACiAjZGVmaW5lIEpTQ2VsbElubGluZXNfaAogCiAjaW5j
bHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNs
dWRlICJEZWZlckdDLmgiCiAjaW5jbHVkZSAiSGFuZGxlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgog
I2luY2x1ZGUgIkpTU3RyaW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uY3BwCmluZGV4IDI0MTk2NDYxMGJiNDQyN2IxODYzNzMzNDZlMjRmNWE4MmQwY2Rj
YzQuLmFjZTZjMTQ3ZTQ5N2ZlZTIwMjkyZmI1NTM5NzYwZDVkNjk4MjljZTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0zNCw3ICszNCw4IEBA
CiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIu
aCIKICNpbmNsdWRlICJKU0FycmF5LmgiCi0jaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiIAor
I2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU05vdEFuT2JqZWN0
LmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTEwOSw2ICsxMTAsMTQgQEAgdm9pZCBK
U0Z1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUsIGludCBsZW5ndGgKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxl
bmd0aCwganNOdW1iZXIobGVuZ3RoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0p
OwogfQogCitKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24oVk0m
IHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCit7CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjcmVhdGUodm0sIGV4ZWN1
dGFibGUsIGdsb2JhbE9iamVjdCk7CisgICAgZnVuY3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoJnZtLCBleGVjdXRhYmxlLT5uYW1lKCkuc3RyaW5n
KCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgZnVuY3Rpb24tPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcihleGVjdXRhYmxl
LT5wYXJhbWV0ZXJDb3VudCgpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwor
ICAgIHJldHVybiBmdW5jdGlvbjsKK30KKwogT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUqIEpTRnVu
Y3Rpb246OmNyZWF0ZUFsbG9jYXRpb25Qcm9maWxlKEV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IGlu
bGluZUNhcGFjaXR5KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC0xNDIsNyArMTUx
LDcgQEAgY29uc3QgU3RyaW5nIEpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBleHBsaWNpdE5hbWU7CiAgICAgCiAgICAgY29u
c3QgU3RyaW5nIGFjdHVhbE5hbWUgPSBuYW1lKGV4ZWMpOwotICAgIGlmICghYWN0dWFsTmFtZS5p
c0VtcHR5KCkgfHwgaXNIb3N0RnVuY3Rpb24oKSkKKyAgICBpZiAoIWFjdHVhbE5hbWUuaXNFbXB0
eSgpIHx8IGlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBhY3R1YWxO
YW1lOwogICAgIAogICAgIHJldHVybiBqc0V4ZWN1dGFibGUoKS0+aW5mZXJyZWROYW1lKCkuc3Ry
aW5nKCk7CkBAIC0xNTAsMTAgKzE1OSwyMCBAQCBjb25zdCBTdHJpbmcgSlNGdW5jdGlvbjo6Y2Fs
Y3VsYXRlZERpc3BsYXlOYW1lKEV4ZWNTdGF0ZSogZXhlYykKIAogY29uc3QgU291cmNlQ29kZSog
SlNGdW5jdGlvbjo6c291cmNlQ29kZSgpIGNvbnN0CiB7Ci0gICAgaWYgKGlzSG9zdEZ1bmN0aW9u
KCkpCisgICAgaWYgKGlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiAw
OwogICAgIHJldHVybiAmanNFeGVjdXRhYmxlKCktPnNvdXJjZSgpOwogfQorICAgIAorYm9vbCBK
U0Z1bmN0aW9uOjppc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGlzSG9zdEZ1bmN0aW9uKCkgfHwgaXNCdWlsdGluRnVuY3Rpb24oKTsKK30KKworYm9vbCBKU0Z1
bmN0aW9uOjppc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuICFpc0hvc3RG
dW5jdGlvbigpICYmIGpzRXhlY3V0YWJsZSgpLT5pc0J1aWx0aW5GdW5jdGlvbigpOworfQogCiB2
b2lkIEpTRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKIHsKQEAgLTI3Nyw3ICsyOTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Z1bmN0aW9u
OjpjYWxsZXJHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBzbG90QmFzZQog
ICAgIGlmICghY2FsbGVyLmlzT2JqZWN0KCkgfHwgIWFzT2JqZWN0KGNhbGxlciktPmluaGVyaXRz
KEpTRnVuY3Rpb246OmluZm8oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2Fs
bGVyKTsKICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2Fs
bGVyKTsKLSAgICBpZiAoZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkgfHwgIWZ1bmN0aW9uLT5q
c0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RP
ckJ1aWx0aW5GdW5jdGlvbigpIHx8ICFmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCktPmlzU3RyaWN0
TW9kZSgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxlcik7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkZ1
bmN0aW9uLmNhbGxlciB1c2VkIHRvIHJldHJpZXZlIHN0cmljdCBjYWxsZXIiKSkpOwogfQpAQCAt
Mjk5LDcgKzMxOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTRnVuY3Rpb246Om5hbWVHZXR0ZXIoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgc2xvdEJhc2UsIEVuY29kCiBib29sIEpTRnVuY3Rpb246
OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1
bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlm
ICh0aGlzT2JqZWN0LT5pc0hvc3RGdW5jdGlvbigpKQorICAgIGlmICh0aGlzT2JqZWN0LT5pc0hv
c3RPckJ1aWx0aW5GdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVy
dHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICBpZiAo
cHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpIHsKQEAgLTM2
MSw3ICszODAsNyBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5Tgogdm9pZCBKU0Z1bmN0aW9uOjpn
ZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1v
ZGUpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4o
b2JqZWN0KTsKLSAgICBpZiAoIXRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkgJiYgKG1vZGUg
PT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpIHsKKyAgICBpZiAoIXRoaXNPYmplY3QtPmlz
SG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgJiYgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVy
dGllcykpIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHByb3RvdHlwZSBoYXMgYmVlbiByZWlmaWVk
LgogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0KTsKICAgICAgICAgdGhpc09i
amVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMs
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHNsb3QpOwpAQCAtMzc3LDcgKzM5Niw3
IEBAIHZvaWQgSlNGdW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywKIHZvaWQgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2VsbCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlz
SG9zdEZ1bmN0aW9uKCkpIHsKKyAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVu
Y3Rpb24oKSkgewogICAgICAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MjUsNyArNDQ0
LDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3AKIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3du
UHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wg
dGhyb3dFeGNlcHRpb24pCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U0Z1bmN0aW9uKj4ob2JqZWN0KTsKLSAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24o
KSkKKyAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAg
ICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbik7CiAKICAgICBpZiAocHJvcGVydHlOYW1l
ID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAppbmRleCA3Y2QxNGI4YzJkODAwZjYxYmRjMTJlZGQy
ZGYwNGQzNWZhMDYxOWI2Li45YjU4Yjc0N2NlMWYzZjMzMmQwZjc2MGE1Nzg1YjdhYzE5ZWJlOWY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC02OCw2
ICs2OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uOwog
ICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlQnVp
bHRpbkZ1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNHbG9iYWxPYmplY3QqKTsK
KyAgICAgICAgCiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAg
IAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgbmFtZShFeGVjU3RhdGUqKTsKQEAg
LTk3LDcgKzk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4ZWN1dGFibGVCYXNlKiBl
eGVjdXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9leGVjdXRhYmxlLmdldCgpOyB9CiAKICAgICAg
ICAgLy8gVG8gY2FsbCBlaXRoZXIgb2YgdGhlc2UgbWV0aG9kcyBpbmNsdWRlIEV4ZWN1dGFibGUu
aAotICAgICAgICBpbmxpbmUgYm9vbCBpc0hvc3RGdW5jdGlvbigpIGNvbnN0OworICAgICAgICBi
b29sIGlzSG9zdEZ1bmN0aW9uKCkgY29uc3Q7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSog
anNFeGVjdXRhYmxlKCkgY29uc3Q7CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3Qg
U291cmNlQ29kZSogc291cmNlQ29kZSgpIGNvbnN0OwpAQCAtMTQ1LDYgKzE0NywxMCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hw
b2ludDsKICAgICAgICAgfQogCisgICAgICAgIGJvb2wgaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24o
KSBjb25zdDsKKyAgICAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0OworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7
CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEltcGxlbWVudHNIYXNJbnN0
YW5jZSB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVz
IHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCkBAIC0xNjksOCArMTc1LDYgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKICAgICAgICAgCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNI
b3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsKLQogICAgICAgICBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKICAgICAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGNh
bGxlckdldHRlcihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFBy
b3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBsZW5ndGhHZXR0ZXIo
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVz
LmgKaW5kZXggZmU0ZTExNGFkYmMyMzY3NGQzYjYwZTYxZjcxY2I3YTA2Yzk0Nzg0ZC4uNjlmMGQ0
ZjM5NmVmOWMyZGE5ZTBiZjYwOGMyNjQ0MTcxNzk5YmE1MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCkBAIC01MywxNiArNTMsMjQg
QEAgaW5saW5lIGJvb2wgSlNGdW5jdGlvbjo6aXNIb3N0RnVuY3Rpb24oKSBjb25zdAogCiBpbmxp
bmUgTmF0aXZlRnVuY3Rpb24gSlNGdW5jdGlvbjo6bmF0aXZlRnVuY3Rpb24oKQogewotICAgIEFT
U0VSVChpc0hvc3RGdW5jdGlvbigpKTsKKyAgICBBU1NFUlQoaXNIb3N0RnVuY3Rpb25Ob25Jbmxp
bmUoKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5hdGl2ZUV4ZWN1dGFibGUqPihtX2V4ZWN1
dGFibGUuZ2V0KCkpLT5mdW5jdGlvbigpOwogfQogCiBpbmxpbmUgTmF0aXZlRnVuY3Rpb24gSlNG
dW5jdGlvbjo6bmF0aXZlQ29uc3RydWN0b3IoKQogewotICAgIEFTU0VSVChpc0hvc3RGdW5jdGlv
bigpKTsKKyAgICBBU1NFUlQoaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSk7CiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PE5hdGl2ZUV4ZWN1dGFibGUqPihtX2V4ZWN1dGFibGUuZ2V0KCkpLT5jb25z
dHJ1Y3RvcigpOwogfQogCitpbmxpbmUgYm9vbCBpc0hvc3RGdW5jdGlvbihKU1ZhbHVlIHZhbHVl
LCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbikKK3sKKyAgICBKU0Z1bmN0aW9uKiBmdW5j
dGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZ2V0SlNGdW5jdGlvbih2YWx1ZSkpOworICAgIGlm
ICghZnVuY3Rpb24gfHwgIWZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuIGZ1bmN0aW9uLT5uYXRpdmVGdW5jdGlvbigpID09IG5hdGl2
ZUZ1bmN0aW9uOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTRnVuY3Rp
b25JbmxpbmVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5l
cy5oCmluZGV4IDJkZGMyOWY3MTg5N2JiNTFkMzkwYjA2YjI1YTczODMzODc0YmEwYzEuLmVkZDM0
NDljZTQ3YjE3MzVlOGU1ZGJiMDVmMzE4ZTNkNTVmM2JlNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRl
ZiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lc19oCiAjZGVmaW5lIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzX2gKIAorI2luY2x1ZGUgIkNv
bW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJKU0FycmF5
QnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCA2ZGI4NjI3NGMzYjg3NGFhYWRlNTE1
MTg5ODI2NzI2ZmIxMzZjMTczLi5mMjRlYTczMDNkZjk2OWRiZDJkY2E1MmM4NmQxMWM3OGMwMGRi
OWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtMjcsNiArMjcsNyBAQAogI2Rl
ZmluZSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXNfaAogCiAjaW5jbHVkZSAiQXJyYXlC
dWZmZXJWaWV3LmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJE
ZWZlckdDLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJz
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oCmluZGV4IDQ1
OTk5N2E0NjRiOTExOTQ3N2IxYmU4NGUzNmM0ZTI5NjZhY2VmODUuLjhlNWZmODI3OTFlNmZmOGQ0
ZWI5YzM3MzY5MWU0MzNlYjdkMTZhZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJv
dG90eXBlSW5saW5lcy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG90eXBlSW5saW5lc19oCiAjZGVmaW5lIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG90eXBlSW5saW5lc19oCiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgog
I2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAppbmRleCAyYzI3NGMxYTdkNDgxYzA3ZGYwZDJiZWIzYjI5MzFhMzkw
N2E1ZTY2Li4wNmU1NGM4NGU3N2I5MDMyYmFhMWQyZGY0N2ExYzcyZTgwYjdkZWEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0z
NDYsNyArMzQ2LDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5
cGUpCiAKICAgICAvLyBDb25zdHJ1Y3RvcnMKIAotICAgIEpTQ2VsbCogb2JqZWN0Q29uc3RydWN0
b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9vYmpl
Y3RQcm90b3R5cGUuZ2V0KCkpOworICAgIE9iamVjdENvbnN0cnVjdG9yKiBvYmplY3RDb25zdHJ1
Y3RvciA9IE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIE9iamVjdENvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX29i
amVjdFByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9vYmplY3RDb25zdHJ1Y3Rvci5zZXQodm0sIHRo
aXMsIG9iamVjdENvbnN0cnVjdG9yKTsKICAgICBKU0NlbGwqIGZ1bmN0aW9uQ29uc3RydWN0b3Ig
PSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fZnVu
Y3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwogICAgIEpTQ2VsbCogYXJyYXlDb25zdHJ1Y3RvciA9IEFy
cmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0
dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9hcnJheVByb3RvdHlw
ZS5nZXQoKSk7CiAKQEAgLTQzMiw3ICs0MzMsMTAgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVz
ZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgR2xvYmFsUHJvcGVydHlJbmZvIHN0YXRpY0dsb2Jh
bHNbXSA9IHsKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPk5h
TiwganNOYU4oKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+SW5maW5pdHksIGpzTnVtYmVyKHN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSksIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQsIGpzVW5kZWZpbmVkKCksIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KQorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+dW5kZWZpbmVkS2V5d29yZCwganNVbmRlZmluZWQoKSwgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+dW5kZWZpbmVkS2V5d29yZFByaXZhdGVOYW1lLCBqc1VuZGVmaW5lZCgpLCBEb250RW51
bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2
bS5wcm9wZXJ0eU5hbWVzLT5PYmplY3RQcml2YXRlTmFtZSwgb2JqZWN0Q29uc3RydWN0b3IsIERv
bnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJ
bmZvKHZtLnByb3BlcnR5TmFtZXMtPlR5cGVFcnJvclByaXZhdGVOYW1lLCBtX3R5cGVFcnJvckNv
bnN0cnVjdG9yLmdldCgpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSkKICAgICB9
OwogICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFscywgV1RGX0FSUkFZX0xFTkdUSChz
dGF0aWNHbG9iYWxzKSk7CiAgICAgCkBAIC02MDgsNiArNjEyLDcgQEAgdm9pZCBKU0dsb2JhbE9i
amVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5bnRheEVycm9yQ29uc3RydWN0b3Ip
OwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3R5cGVFcnJvckNvbnN0cnVjdG9y
KTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9VUklFcnJvckNvbnN0cnVjdG9y
KTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9vYmplY3RDb25zdHJ1Y3Rvcik7
CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvbWlzZUNvbnN0cnVjdG9yKTsK
IAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2V2YWxGdW5jdGlvbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBiMGNh
ZDNkYzU0NzBmN2M3YTBlNTcwYmRjZDJkZmZhODk1ZTJhYTBjLi4zYTYxNmM2ZjA1ZWRmMWQyOTVh
Zjg0NDFhYTY2NTAwZmI5MmE0YTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTY3LDYgKzY3LDcgQEAgY2xhc3MgSlNTdGFjazsKIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIE1pY3JvdGFzazsKIGNsYXNzIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3I7CitjbGFzcyBPYmplY3RDb25zdHJ1Y3RvcjsKIGNsYXNzIFByb2dy
YW1Db2RlQmxvY2s7CiBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsKIGNsYXNzIFJlZ0V4cENvbnN0
cnVjdG9yOwpAQCAtMTU4LDYgKzE1OSw3IEBAIHByb3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV90eXBlRXJyb3JDb25zdHJ1Y3RvcjsKICAgICBXcml0
ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV9VUklFcnJvckNvbnN0cnVjdG9yOwog
ICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VDb25zdHJ1Y3Rvcj4gbV9wcm9taXNlQ29uc3RydWN0
b3I7CisgICAgV3JpdGVCYXJyaWVyPE9iamVjdENvbnN0cnVjdG9yPiBtX29iamVjdENvbnN0cnVj
dG9yOwogCiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fZXZhbEZ1bmN0aW9uOwogICAg
IFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2NhbGxGdW5jdGlvbjsKQEAgLTMzMCw2ICszMzIs
NyBAQCBwdWJsaWM6CiAgICAgUmVnRXhwQ29uc3RydWN0b3IqIHJlZ0V4cENvbnN0cnVjdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9yZWdFeHBDb25zdHJ1Y3Rvci5nZXQoKTsgfQogCiAgICAgRXJyb3JD
b25zdHJ1Y3RvciogZXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JDb25z
dHJ1Y3Rvci5nZXQoKTsgfQorICAgIE9iamVjdENvbnN0cnVjdG9yKiBvYmplY3RDb25zdHJ1Y3Rv
cigpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0Q29uc3RydWN0b3IuZ2V0KCk7IH0KICAgICBOYXRp
dmVFcnJvckNvbnN0cnVjdG9yKiBldmFsRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJu
IG1fZXZhbEVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KICAgICBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yKiByYW5nZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlRXJyb3JD
b25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHJlZmVyZW5j
ZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5jZUVycm9yQ29uc3Ry
dWN0b3IuZ2V0KCk7IH0KQEAgLTU4MSw3ICs1ODQsNyBAQCBpbmxpbmUgYm9vbCBKU0dsb2JhbE9i
amVjdDo6aGFzT3duUHJvcGVydHlGb3JXcml0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZQogCiBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6c3ltYm9sVGFibGVIYXNQcm9wZXJ0eShQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkg
PSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7Cisg
ICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9w
ZXJ0eU5hbWUudWlkKCkpOwogICAgIHJldHVybiAhZW50cnkuaXNOdWxsKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCAyYjY3YTFkOWVlZDg0
ZTk5NTZmOGJiOTY4Mzg0Yzg0Y2FlYTUzY2ZmLi4yZWEyYzI0ZTZlYWI0Y2QwZDdmZmVkNjY1ZWY0
YWU0MWFmMDc1MGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
Y3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBnZXRDbGFzc1Byb3BlcnR5
TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzCiAgICAgICAgIGlu
dCBoYXNoU2l6ZU1hc2sgPSB0YWJsZS0+Y29tcGFjdFNpemUgLSAxOwogICAgICAgICBjb25zdCBI
YXNoRW50cnkqIGVudHJ5ID0gdGFibGUtPnRhYmxlOwogICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8PSBoYXNoU2l6ZU1hc2s7ICsraSwgKytlbnRyeSkgewotICAgICAgICAgICAgaWYgKGVudHJ5
LT5rZXkoKSAmJiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IChtb2RlID09
IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKSAmJiAhKChlbnRyeS0+YXR0cmlidXRlcygpICYg
RnVuY3Rpb24pICYmIGRpZFJlaWZ5KSkKKyAgICAgICAgICAgIGlmIChlbnRyeS0+a2V5KCkgJiYg
KCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCAobW9kZSA9PSBJbmNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzKSkgJiYgISgoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1
bmN0aW9uKSAmJiBkaWRSZWlmeSkpCiAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQo
ZW50cnktPmtleSgpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE2MTgsNyArMTYxOCw3IEBAIHZv
aWQgSlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGVsZXRlKEV4ZWNTdGF0ZSogZXhl
YykKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlz
KTsKICAgICAgICAgZm9yIChIYXNoVGFibGU6OkNvbnN0SXRlcmF0b3IgaXRlciA9IGhhc2hUYWJs
ZS0+YmVnaW4odm0pOyBpdGVyICE9IGhhc2hUYWJsZS0+ZW5kKHZtKTsgKytpdGVyKSB7Ci0gICAg
ICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pCisgICAgICAgICAgICBp
ZiAoaXRlci0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pCiAgICAgICAgICAgICAg
ICAgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwg
Kml0ZXIsIHRoaXMsIElkZW50aWZpZXIoJnZtLCBpdGVyLT5rZXkoKSksIHNsb3QpOwogICAgICAg
ICB9CiAgICAgfQpAQCAtMjIzNiw2ICsyMjM2LDE2IEBAIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
CiAgICAgcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsK
IH0KIAordm9pZCBKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5h
bWUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzKQoreworICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpOworICAgIGlmICghbmFtZSkKKyAgICAgICAgbmFtZSA9IHZtLnByb3BlcnR5TmFtZXMtPmFu
b255bW91cy5pbXBsKCk7CisgICAgQVNTRVJUKG5hbWUpOworICAgIEpTRnVuY3Rpb24qIGZ1bmN0
aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBzdGF0aWNfY2FzdDxG
dW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBnbG9iYWxPYmplY3QpOwor
ICAgIHB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCBmdW5jdGlvbiwgYXR0cmlidXRlcyk7Cit9
CisKIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5h
bWUmIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9u
IG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KQogewogICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggMDJiMTM3YjM1MGMy
ZmE4MzI1YmQzYjk2NDcxMTJhYmU4NzZmMzgzZi4uZGRlNTk3ZWZmYWVjMGYxYjhkNDRjMjkxMTk1
MDMwMWYwNjAwN2U5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
CkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQnV0dGVyZmx5LmgiCiAjaW5jbHVkZSAiQ2Fs
bEZyYW1lLmgiCiAjaW5jbHVkZSAiQ2xhc3NJbmZvLmgiCi0jaW5jbHVkZSAiQ29tbW9uSWRlbnRp
ZmllcnMuaCIKICNpbmNsdWRlICJDb3B5V3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSAiRGVmZXJH
Qy5oIgogI2luY2x1ZGUgIkhlYXAuaCIKQEAgLTU4MSw2ICs1ODAsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBwdXREaXJlY3RVbmRlZmluZWQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSB7IGxvY2F0aW9u
Rm9yT2Zmc2V0KG9mZnNldCktPnNldFVuZGVmaW5lZCgpOyB9CiAKICAgICB2b2lkIHB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUm
LCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgdW5z
aWduZWQgYXR0cmlidXRlcyk7CisgICAgdm9pZCBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb24oVk0m
LCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEZ1bmN0aW9uRXhlY3V0YWJs
ZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIHZvaWQgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlO
YW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJv
b2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3Bw
CmluZGV4IDQwMjYxOTYzM2ZhMDZmZDI1NGIzZjJhN2E4Y2M3MWU4MDdhYWY5MTEuLjE3ZDJhYjY1
YTg4ZmZiMTNmYTlhNmM4ZjU4M2NhODQ0YWY4MzIyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKQEAgLTM1LDYg
KzM1LDcgQEAKICNpbmNsdWRlICJKU1Byb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTUHJv
bWlzZUZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZVByb3RvdHlwZS5oIgorI2luY2x1
ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk51
bWJlck9iamVjdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5j
cHAKaW5kZXggNjhhOGJkODdkMzhhZGJiYjlkZDJhYzllYzRiNDlkNWVmNDU0OWQ1Ni4uMjM3YzQy
YmIwZGEwZjE2Njc2ZWIxMWFkZTgxODBhN2IwNmQ5OGViNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKQEAg
LTI5LDcgKzI5LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmgiCiAKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKaW5kZXgg
ZjQzNjJmZjM1NGVlNmE1MDIyMWJiNzMxZDFhMjYxMWU2ZGQ2MWJjMC4uZDA3MzcxOWRlMTYwZDJm
MjkyMTEwYTU5NmExMDVlMmZhMjExNWZmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaApAQCAtMzEsNyArMzEsNiBA
QAogCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgotI2luY2x1
ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1
ZGUgPG1lbW9yeT4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5k
ZXggMmIxY2RkZGM1ODQxZDYwZDE1N2EyZTYxZjcwMmIwZWU1ZmExZDY3Ni4uZTM5MzQxNjBhZWE5
MjZlZjE1OTMyZjg3OTBlMjRjNTJhZjAyZDM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oCkBAIC0yNCw3ICsyNCw2IEBACiAjZGVmaW5lIEpTU3RyaW5nX2gKIAog
I2luY2x1ZGUgIkNhbGxGcmFtZS5oIgotI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAj
aW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlByb3BlcnR5RGVzY3JpcHRvci5oIgog
I2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgpAQCAtNDcyLDMzICs0NzEsNiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKCZleGVj
LT52bSgpLCBzKTsgfQogICAgIGlubGluZSBKU1N0cmluZyoganNPd25lZFN0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4ganNPd25lZFN0cmluZygmZXhlYy0+
dm0oKSwgcyk7IH0KIAotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5n
UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQotICAgIHsKLSAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7Ci0gICAgICAgICAgICBzbG90LnNldFZhbHVl
KHRoaXMsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBqc051bWJlcihtX2xlbmd0
aCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICB1bnNp
Z25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKLSAgICAgICAgaWYgKGkgPCBtX2xlbmd0
aCkgewotICAgICAgICAgICAgQVNTRVJUKGkgIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTsg
Ly8gTm8gbmVlZCBmb3IgYW4gZXhwbGljaXQgY2hlY2ssIHRoZSBhYm92ZSB0ZXN0IHdvdWxkIGFs
d2F5cyBmYWlsIQotICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlIHwg
UmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIGkpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAgICAgICAgIAot
ICAgIEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4
ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
Ci0gICAgewotICAgICAgICBpZiAocHJvcGVydHlOYW1lIDwgbV9sZW5ndGgpIHsKLSAgICAgICAg
ICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBnZXRJbmRleChl
eGVjLCBwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9
Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQogICAgIGlubGluZSBib29sIGlzSlNT
dHJpbmcoSlNWYWx1ZSB2KSB7IHJldHVybiB2LmlzQ2VsbCgpICYmIHYuYXNDZWxsKCktPmNsYXNz
SW5mbygpID09IEpTU3RyaW5nOjppbmZvKCk7IH0KIAogICAgIC8vIC0tLSBKU1ZhbHVlIGlubGlu
ZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTI4LDMyICs1MDAsNiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIHRvV1RGU3RyaW5nU2xvd0Nhc2UoZXhlYyk7CiAg
ICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBTdHJpbmcgaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3Rv
U3RyaW5nKGNvbnN0IEpTVmFsdWUmIHZhbHVlLCBFeGVjU3RhdGUqIGV4ZWMpCi0gICAgewotICAg
ICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgICAgICBpZiAodmFsdWUuaXNJbnQzMigpKQot
ICAgICAgICAgICAgcmV0dXJuIHZtLm51bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZS5hc0ludDMyKCkp
OwotICAgICAgICBpZiAodmFsdWUuaXNEb3VibGUoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5u
dW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNEb3VibGUoKSk7Ci0gICAgICAgIGlmICh2YWx1ZS5p
c1RydWUoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT50cnVlS2V5d29y
ZC5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzRmFsc2UoKSkKLSAgICAgICAgICAgIHJl
dHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5mYWxzZUtleXdvcmQuc3RyaW5nKCk7Ci0gICAgICAgIGlm
ICh2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5u
dWxsS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkKCkpCi0g
ICAgICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZC5zdHJp
bmcoKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsK
LSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIFN0cmluZyBKU1ZhbHVlOjp0b1dURlN0cmluZ0lu
bGluZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoaXNTdHJpbmco
KSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU1N0cmluZyo+KGFzQ2VsbCgpKS0+
dmFsdWUoZXhlYyk7Ci0KLSAgICAgICAgcmV0dXJuIGlubGluZUpTVmFsdWVOb3RTdHJpbmd0b1N0
cmluZygqdGhpcywgZXhlYyk7Ci0gICAgfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlm
IC8vIEpTU3RyaW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmdJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzc4YzA1ZmM4MGQ4OGU4NTM3YzlkMmE1ZWFiOWZmMGJh
OWI2MGE3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nSW5saW5lcy5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTU3RyaW5nSW5saW5lc19o
CisjZGVmaW5lIEpTU3RyaW5nSW5saW5lc19oCisKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVy
cy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0FMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0
U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgeworICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMs
IERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBqc051bWJlcihtX2xlbmd0aCkpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgaSA9IHByb3Bl
cnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGkgPCBtX2xlbmd0aCkgeworICAgICAgICBBU1NF
UlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOyAvLyBObyBuZWVkIGZvciBhbiBleHBs
aWNpdCBjaGVjaywgdGhlIGFib3ZlIHRlc3Qgd291bGQgYWx3YXlzIGZhaWwhCisgICAgICAgIHNs
b3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBnZXRJbmRleChleGVjLCBp
KSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK0FMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90
KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCit7CisgICAgaWYgKHByb3BlcnR5TmFtZSA8IG1fbGVuZ3RoKSB7CisgICAgICAgIHNsb3Qu
c2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBnZXRJbmRleChleGVjLCBwcm9w
ZXJ0eU5hbWUpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHJldHVy
biBmYWxzZTsKK30KKworQUxXQVlTX0lOTElORSBTdHJpbmcgaW5saW5lSlNWYWx1ZU5vdFN0cmlu
Z3RvU3RyaW5nKGNvbnN0IEpTVmFsdWUmIHZhbHVlLCBFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBpZiAodmFsdWUuaXNJbnQzMigpKQorICAgICAgICBy
ZXR1cm4gdm0ubnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVlLmFzSW50MzIoKSk7CisgICAgaWYgKHZh
bHVlLmlzRG91YmxlKCkpCisgICAgICAgIHJldHVybiB2bS5udW1lcmljU3RyaW5ncy5hZGQodmFs
dWUuYXNEb3VibGUoKSk7CisgICAgaWYgKHZhbHVlLmlzVHJ1ZSgpKQorICAgICAgICByZXR1cm4g
dm0ucHJvcGVydHlOYW1lcy0+dHJ1ZUtleXdvcmQuc3RyaW5nKCk7CisgICAgaWYgKHZhbHVlLmlz
RmFsc2UoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPmZhbHNlS2V5d29yZC5z
dHJpbmcoKTsKKyAgICBpZiAodmFsdWUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiB2bS5wcm9w
ZXJ0eU5hbWVzLT5udWxsS2V5d29yZC5zdHJpbmcoKTsKKyAgICBpZiAodmFsdWUuaXNVbmRlZmlu
ZWQoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQu
c3RyaW5nKCk7CisgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsK
K30KKyAgICAKK0FMV0FZU19JTkxJTkUgU3RyaW5nIEpTVmFsdWU6OnRvV1RGU3RyaW5nSW5saW5l
KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBpZiAoaXNTdHJpbmcoKSkKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEpTU3RyaW5nKj4oYXNDZWxsKCkpLT52YWx1ZShleGVjKTsKKyAg
ICAKKyAgICByZXR1cm4gaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKCp0aGlzLCBleGVj
KTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKaW5kZXggMmFjMjUyNGM1ZGZkYTNkMTIyNDlk
Nzc5MGFkYzMxMjllM2MwZTg3MS4uZmJjOGI4OTVlYWU2YWY3ODg4MzliZWI1ZTgzZDdiNmI5Nzky
OGZhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xU
YWJsZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1i
b2xUYWJsZU9iamVjdC5jcHAKQEAgLTY0LDYgKzY0LDggQEAgdm9pZCBKU1N5bWJvbFRhYmxlT2Jq
ZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXQKICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIodGhpc09iamVjdC0+c3ltYm9s
VGFibGUoKS0+bV9sb2NrKTsKICAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgZW5k
ID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+ZW5kKGxvY2tlcik7CiAgICAgICAgIGZvciAo
U3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXQgPSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgp
LT5iZWdpbihsb2NrZXIpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIGlmIChpdC0+
a2V5LT5pc0VtcHR5VW5pcXVlKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICBpZiAoIShpdC0+dmFsdWUuZ2V0QXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IChtb2Rl
ID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKQogICAgICAgICAgICAgICAgIHByb3BlcnR5
TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgaXQtPmtleS5nZXQoKSkpOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
LmgKaW5kZXggYjViMjBhODQ1YjZhYjY0NDI0YjM3ZTMxYjI3NzRlZjkwNTM1M2Y3Zi4uZDAzYjI0
NTExYzJkZTE5NTlmYjVmNTZkNjQ5YzY0ZDBlZmUwNjg1NSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaApAQCAtNzIsNyArNzIs
NyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKIHsKICAgICBTeW1ib2xUYWJsZSYgc3lt
Ym9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgIENvbmN1cnJlbnRKSVRMb2Nr
ZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRl
cmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGlj
TmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFi
bGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGl0ZXIgPT0gc3lt
Ym9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBTeW1ib2xU
YWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+dmFsdWU7CkBAIC04Nyw3ICs4Nyw3IEBAIGlu
bGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogewogICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJs
ZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBp
dGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkp
OworICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5k
KGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJs
ZS5lbmQobG9ja2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFN5bWJvbFRhYmxlRW50
cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1ZTsKQEAgLTEwNCw3ICsxMDQsNyBAQCBpbmxpbmUg
Ym9vbCBzeW1ib2xUYWJsZUdldCgKIHsKICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAq
b2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5
bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9
IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAg
ICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2Nr
ZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5k
KGxvY2tlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBTeW1ib2xUYWJsZUVudHJ5OjpG
YXN0IGVudHJ5ID0gaXRlci0+dmFsdWU7CkBAIC0xMjYsNyArMTI2LDcgQEAgaW5saW5lIGJvb2wg
c3ltYm9sVGFibGVQdXQoCiAgICAgewogICAgICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUg
PSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBHQ1NhZmVDb25jdXJyZW50SklUTG9j
a2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2ssIGV4ZWMtPnZtKCkuaGVhcCk7Ci0gICAgICAg
IFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tl
ciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6
Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVp
ZCgpKTsKICAgICAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJvb2wgd2FzRmF0OwpAQCAtMTU5LDcgKzE1
OSw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoCiAgICAgewog
ICAgICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgp
OwogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2sp
OwotICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUu
ZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgICAgICBTeW1ib2xU
YWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3Bl
cnR5TmFtZS51aWQoKSk7CiAgICAgICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZChsb2Nr
ZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5
JiBlbnRyeSA9IGl0ZXItPnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTG9va3VwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1
cC5jcHAKaW5kZXggYTgwNmRkMDUyYTBjYmVlNGNhYzJjYWE2ZTA4YzY3MTYwMDVjMjcwYy4uYTk3
NjUyMDFiOWY1MTg2NDE0MjNkZGUwZmUwZTJlNTFhOGNlNzNiYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Mb29rdXAuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgSGFzaFRhYmxl
OjpkZWxldGVUYWJsZSgpIGNvbnN0CiBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIHRoaXNPYmosIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBBU1NF
UlQodGhpc09iai0+Z2xvYmFsT2JqZWN0KCkpOwotICAgIEFTU0VSVChlbnRyeS0+YXR0cmlidXRl
cygpICYgRnVuY3Rpb24pOworICAgIEFTU0VSVChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRp
bk9yRnVuY3Rpb24pOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgdW5zaWduZWQgYXR0
cmlidXRlczsKICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSB0aGlzT2JqLT5nZXREaXJlY3RP
ZmZzZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CkBAIC03OSw5ICs3OSwxMyBAQCBi
b29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVu
dHJ5KiBlbnRyeSwgSlNPYmplY3QqCiAgICAgICAgIGlmICh0aGlzT2JqLT5zdGF0aWNGdW5jdGlv
bnNSZWlmaWVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgICAgIHRo
aXNPYmotPnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKAotICAgICAgICAgICAgdm0sIHRoaXNPYmot
Pmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5mdW5jdGlvbkxlbmd0aCgpLAot
ICAgICAgICAgICAgZW50cnktPmZ1bmN0aW9uKCksIGVudHJ5LT5pbnRyaW5zaWMoKSwgZW50cnkt
PmF0dHJpYnV0ZXMoKSk7CisgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRp
bikKKyAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbih2bSwgdGhp
c09iai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZW50cnktPmJ1aWx0aW5HZW5lcmF0
b3IoKSh2bSksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIHRoaXNPYmotPnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKAorICAgICAgICAgICAgICAgIHZt
LCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBlbnRyeS0+ZnVuY3Rpb25M
ZW5ndGgoKSwKKyAgICAgICAgICAgICAgICBlbnRyeS0+ZnVuY3Rpb24oKSwgZW50cnktPmludHJp
bnNpYygpLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAgICAgICAgfQogICAgICAgICBvZmZzZXQg
PSB0aGlzT2JqLT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7
CiAgICAgICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKaW5kZXggYmRlODNkNGE2ZmMzNTU3Nzg1MGUzMWU4
OGJjMzlmZDA1ZjdiY2U1Mi4uZGJhMzg5ZTllMjQzZGQwZWNiMmJhOThmMzk0ZDQwNzlmOWRlYTkz
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKQEAgLTQzLDYgKzQzLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgLy8gaWUuIHR5cGVkZWYgSlNWYWx1ZSAoKkdldEZ1bmN0
aW9uKShFeGVjU3RhdGUqLCBKU09iamVjdCogYmFzZU9iamVjdCkKICAgICB0eXBlZGVmIFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jIEdldEZ1bmN0aW9uOwogICAgIHR5cGVkZWYgUHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmMgUHV0RnVuY3Rpb247CisgICAgdHlwZWRlZiBGdW5jdGlvbkV4
ZWN1dGFibGUqICgqQnVpbHRpbkdlbmVyYXRvcikoVk0mKTsKIAogICAgIGNsYXNzIEhhc2hFbnRy
eSB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjgsMTEgKzY5LDEyIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1faW50cmluc2ljOwogICAgICAg
ICB9CiAKKyAgICAgICAgQnVpbHRpbkdlbmVyYXRvciBidWlsdGluR2VuZXJhdG9yKCkgY29uc3Qg
eyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgQnVpbHRpbik7IHJldHVybiBtX3UuYnVpbHRpbkdlbmVy
YXRvci5nZW5lcmF0b3JWYWx1ZTsgfQogICAgICAgICBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbigp
IGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKTsgcmV0dXJuIG1fdS5mdW5j
dGlvbi5mdW5jdGlvblZhbHVlOyB9CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgZnVuY3Rpb25MZW5n
dGgoKSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBGdW5jdGlvbik7IHJldHVybiBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihtX3UuZnVuY3Rpb24ubGVuZ3RoKTsgfQogCi0gICAgICAg
IEdldEZ1bmN0aW9uIHByb3BlcnR5R2V0dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0
ZXMgJiBGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5LmdldDsgfQotICAgICAgICBQdXRG
dW5jdGlvbiBwcm9wZXJ0eVB1dHRlcigpIGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1dGVzICYg
RnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0eS5wdXQ7IH0KKyAgICAgICAgR2V0RnVuY3Rp
b24gcHJvcGVydHlHZXR0ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEJ1aWx0
aW5PckZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVydHkuZ2V0OyB9CisgICAgICAgIFB1dEZ1
bmN0aW9uIHByb3BlcnR5UHV0dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBC
dWlsdGluT3JGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5LnB1dDsgfQogCiAgICAgICAg
IGludHB0cl90IGxleGVyVmFsdWUoKSBjb25zdCB7IEFTU0VSVCghbV9hdHRyaWJ1dGVzKTsgcmV0
dXJuIG1fdS5sZXhlci52YWx1ZTsgfQogCkBAIC05NCw2ICs5NiwxMCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgICAgICBpbnRwdHJfdCBsZW5ndGg7IC8vIG51bWJlciBvZiBhcmd1bWVu
dHMgZm9yIGZ1bmN0aW9uCiAgICAgICAgICAgICB9IGZ1bmN0aW9uOwogICAgICAgICAgICAgc3Ry
dWN0IHsKKyAgICAgICAgICAgICAgICBCdWlsdGluR2VuZXJhdG9yIGdlbmVyYXRvclZhbHVlOwor
ICAgICAgICAgICAgICAgIGludHB0cl90IHVudXNlZDsKKyAgICAgICAgICAgIH0gYnVpbHRpbkdl
bmVyYXRvcjsKKyAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgR2V0RnVuY3Rp
b24gZ2V0OwogICAgICAgICAgICAgICAgIFB1dEZ1bmN0aW9uIHB1dDsKICAgICAgICAgICAgIH0g
cHJvcGVydHk7CkBAIC0yMDksNyArMjE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0
ZToKICAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBIYXNoRW50cnkqIGVudHJ5KFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cmluZ0lt
cGwqIGltcGwgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOworICAgICAgICAgICAgU3RyaW5n
SW1wbCogaW1wbCA9IHByb3BlcnR5TmFtZS51aWQoKTsKICAgICAgICAgICAgIGlmICghaW1wbCkK
ICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgCkBAIC0yNDksNyArMjU1LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGlmICghZW50cnkpIC8vIG5vdCBmb3VuZCwgZm9yd2Fy
ZCB0byBwYXJlbnQKICAgICAgICAgICAgIHJldHVybiBQYXJlbnRJbXA6OmdldE93blByb3BlcnR5
U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCi0gICAgICAgIGlmIChl
bnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pCisgICAgICAgIGlmIChlbnRyeS0+YXR0cmli
dXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pCiAgICAgICAgICAgICByZXR1cm4gc2V0VXBTdGF0
aWNGdW5jdGlvblNsb3QoZXhlYywgZW50cnksIHRoaXNPYmosIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiAKICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09iaiwgZW50cnktPmF0dHJp
YnV0ZXMoKSwgZW50cnktPnByb3BlcnR5R2V0dGVyKCkpOwpAQCAtMjg2LDcgKzI5Miw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBpZiAoIWVudHJ5KSAvLyBub3QgZm91bmQsIGZvcndhcmQg
dG8gcGFyZW50CiAgICAgICAgICAgICByZXR1cm4gUGFyZW50SW1wOjpnZXRPd25Qcm9wZXJ0eVNs
b3QodGhpc09iaiwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIAotICAgICAgICBBU1NFUlQo
IShlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pKTsKKyAgICAgICAgQVNTRVJUKCEoZW50
cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSk7CiAKICAgICAgICAgc2xvdC5z
ZXRDYWNoZWFibGVDdXN0b20odGhpc09iaiwgZW50cnktPmF0dHJpYnV0ZXMoKSwgZW50cnktPnBy
b3BlcnR5R2V0dGVyKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI5NSw3ICszMDEsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgdm9pZCBwdXRFbnRyeShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0KiBiYXNlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiAgICAg
ewogICAgICAgICAvLyBJZiB0aGlzIGlzIGEgZnVuY3Rpb24gcHV0IGl0IGFzIGFuIG92ZXJyaWRl
IHByb3BlcnR5LgotICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKSB7
CisgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pIHsK
ICAgICAgICAgICAgIGlmIChKU09iamVjdCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNP
YmplY3QqPihzbG90LnRoaXNWYWx1ZSgpKSkKICAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5w
dXREaXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgUmVhZE9ubHkpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3Bw
CmluZGV4IGQ1ZTcyOGMyY2QxMDIwYTQ3ZTRhZGNkNjQ5Y2QxZmZmYTVjZDZhODMuLmRjYTJmZDhk
MWY2YWMyM2I4ZmY4MTdjYmIxOGZhYWU3YmNkNTk3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCkBAIC0z
OCw2ICszOCwyMCBAQCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpOYXRpdmVFcnJvckNvbnN0cnVj
dG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiB9CiAKK3ZvaWQgTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBu
YW1lKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBuYW1lKTsKKyAgICBBU1NFUlQo
aW5oZXJpdHMoaW5mbygpKSk7CisgICAgCisgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHByb3Rv
dHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlU3RydWN0dXJlLCBuYW1lLCB0aGlzKTsKKyAgICAKKyAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIERvbnREZWxldGUgfCBSZWFkT25s
eSB8IERvbnRFbnVtKTsgLy8gRUNNQSAxNS4xMS43LjUKKyAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RGVsZXRlIHwgUmVhZE9ubHkg
fCBEb250RW51bSk7CisgICAgbV9lcnJvclN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEVycm9ySW5z
dGFuY2U6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUpKTsKKyAg
ICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZSk7CisgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUt
PmlzT2JqZWN0KCkpOworfQorCiB2b2lkIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PE5hdGl2ZUVycm9yQ29uc3RydWN0
b3IqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05h
dGl2ZUVycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05h
dGl2ZUVycm9yQ29uc3RydWN0b3IuaAppbmRleCA3NDBkM2Y5MzMyOTJmZDJhY2NiNGI5OTAzNDQz
MTJiOTMxOWFlMTEwLi40MzhhM2FmYjliYjBmNjQxMmM5NzkzMjIzMGM4ODcxMDk2MWY1NDY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0
cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvci5oCkBAIC01MSwxOSArNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
U3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fZXJyb3JTdHJ1Y3R1cmUuZ2V0
KCk7IH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogcHJvdG90eXBlU3Ry
dWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtLCBuYW1lKTsKLSAgICAgICAgICAgIEFTU0VSVChpbmhlcml0cyhp
bmZvKCkpKTsKLQotICAgICAgICAgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9
IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
U3RydWN0dXJlLCBuYW1lLCB0aGlzKTsKLQotICAgICAgICAgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkg
fCBEb250RW51bSk7IC8vIEVDTUEgMTUuMTEuNy41Ci0gICAgICAgICAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkgfCBEb250RW51bSk7Ci0gICAgICAgICAgICBtX2Vycm9yU3RydWN0dXJlLnNldCh2bSwg
dGhpcywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSkpOwotICAgICAgICAgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUpOwotICAgICAg
ICAgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwotICAgICAgICB9Cisg
ICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAppbmRleCBkOTM4ZmEz
MTY0NWFmMjZiNzU4NTE0ZGI2YjI0NzhmMTgzZTllZWUxLi5jZmU5YzRkMzJiYTc2OGM3NGU0ZmZi
YjE5MTM1Mjc5ZGViZjExNzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eVNsb3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eVNsb3QuaApAQCAtNDIsNiArNDIsOCBAQCBlbnVtIEF0dHJpYnV0ZSB7CiAgICAgRnVu
Y3Rpb24gICAgID0gMSA8PCA0LCAgLy8gcHJvcGVydHkgaXMgYSBmdW5jdGlvbiAtIG9ubHkgdXNl
ZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIEFjY2Vzc29yICAgICA9IDEgPDwgNSwgIC8vIHBy
b3BlcnR5IGlzIGEgZ2V0dGVyL3NldHRlcgogICAgIEN1c3RvbUFjY2Vzc29yID0gMSA8PCA2LAor
ICAgIEJ1aWx0aW4gICAgICAgICA9IDEgPDwgNywgLy8gcHJvcGVydHkgaXMgYSBidWlsdGluIGZ1
bmN0aW9uIC0gb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCisgICAgQnVpbHRpbk9yRnVu
Y3Rpb24gPSBCdWlsdGluIHwgRnVuY3Rpb24sIC8vIGhlbHBlciBvbmx5IHVzZWQgYnkgc3RhdGlj
IGhhc2h0YWJsZXMKIH07CiAKIGNsYXNzIFByb3BlcnR5U2xvdCB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYmM1MTZi
MDZkNjY1MWYwZTY4MmEyMDE3YmRmOGIwM2JhYmVkNmVhMi4uMmMyNDM0Yjg3ZDA0Zjc0OWNiMTJl
NjAyYWI1NDc4NDk0NmE5MWYxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUg
IlJlZ0V4cENvbnN0cnVjdG9yLmgiCiAKICNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpT
U3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJSZWdF
eHBNYXRjaGVzQXJyYXkuaCIKICNpbmNsdWRlICJSZWdFeHBQcm90b3R5cGUuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCmluZGV4IDg5
ZDdhYzFiOGNiZjFkYjBlMTI2ZjFmYzc5NmRmZDVmYzg0YjJlNTkuLjlkZGEwYmE4ZGUxNDEyZWFm
NGQyOTFkY2YwYzZiMzk2NTdmYjY3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcApAQCAtMjQsNyArMjQsNyBAQAogI2luY2x1ZGUg
IkFycmF5UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJKU0FycmF5
LmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSlNTdHJpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NldENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nl
dENvbnN0cnVjdG9yLmNwcAppbmRleCBiMjAzODg4ZDNjMTZjZGEzYzAwMzUwNjIwOGFlMDg2OTVk
YzVkYWFhLi5kMDI2NmE1OWVmM2Y1NWFhMzY5NGY1Zjc0MThjZjc4ZTBhZTBkOGIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTZXQuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGlu
ZXMuaCIKICNpbmNsdWRlICJNYXBEYXRhLmgiCiAjaW5jbHVkZSAiU2V0UHJvdG90eXBlLmgiCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCmluZGV4
IDQ0MGE2MDk0MjE5MzM4MDMxZTU5MjdhZjQ2YjI4OWRiY2ZiNWE3MjguLjgwZTdlYWE4YzQ5MWNi
NmQ1NGE4MzI0Y2U2NDdhNmNkYjdlODg3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAtMjIsNyArMjIsOSBAQAogI2luY2x1ZGUgIlN0
cmluZ09iamVjdC5oIgogCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNTdHJp
bmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlByb3BlcnR5
TmFtZUFycmF5LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwCmluZGV4IDA0MjkxZjdlOGRkMjRlOGFiMzNkNzVhZjFkYTQ1NjhmMmJjOTllNjguLjFlY2Fi
ODVjMGJkYjI4Njk4OTQ1NzdhNzQxMjU0ZTM2NDQxNDlkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMjcsMTIgKzI3LDE4IEBACiAjaW5jbHVk
ZSAiU3RydWN0dXJlLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJDb21t
b25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkR1bXBDb250ZXh0LmgiCisjaW5jbHVkZSAiSlND
ZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUg
Ikxvb2t1cC5oIgorI2luY2x1ZGUgIlByb3BlcnR5TWFwSGFzaFRhYmxlLmgiCiAjaW5jbHVkZSAi
UHJvcGVydHlOYW1lQXJyYXkuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKICNp
bmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIK
ICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvQ29t
bWFQcmludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDUyY2NmNDIzYTEwNDNlMTA3OWYyZDhi
MTg5NDIxOTg5MGU3MWYyYmMuLjAyMDY5NWZhYzgzZWQ0ZTUxODViNzBlNjk2OTk2M2EyZGU5YTM2
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlICJBcmdMaXN0LmgiCiAjaW5jbHVkZSAiQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVu
a3MuaCIKICNpbmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaCIKKyNpbmNs
dWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWVJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29kZUNhY2hlLmgiCkBAIC01NSw3
ICs1Niw5IEBACiAjaW5jbHVkZSAiSlNBUElWYWx1ZVdyYXBwZXIuaCIKICNpbmNsdWRlICJKU0Fj
dGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCi0jaW5jbHVkZSAiSlNGdW5jdGlvbi5o
IgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5l
cy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxP
YmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU05hbWVT
Y29wZS5oIgpAQCAtNjgsMTMgKzcxLDE2IEBACiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVk
ZSAiTWFwRGF0YS5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCisjaW5jbHVkZSAiUGFyc2VyLmgiCiAj
aW5jbHVkZSAiUGFyc2VyQXJlbmEuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eU1hcEhhc2hUYWJsZS5o
IgogI2luY2x1ZGUgIlJlZ0V4cENhY2hlLmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAj
aW5jbHVkZSAiU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTb3VyY2VQ
cm92aWRlckNhY2hlLmgiCiAjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKICNpbmNs
dWRlICJTdHJvbmdJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiV2Vha01hcERhdGEuaCIKICNp
bmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CkBAIC0yMjYsNiArMjMyLDcgQEAgVk06OlZNKFZNVHlw
ZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9pbkRlZmluZU93blByb3BlcnR5
KGZhbHNlKQogICAgICwgbV9jb2RlQ2FjaGUoQ29kZUNhY2hlOjpjcmVhdGUoKSkKICAgICAsIG1f
ZW5hYmxlZFByb2ZpbGVyKG51bGxwdHIpCisgICAgLCBtX2J1aWx0aW5FeGVjdXRhYmxlcyhCdWls
dGluRXhlY3V0YWJsZXM6OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgaW50ZXJwcmV0ZXIgPSBuZXcg
SW50ZXJwcmV0ZXIoKnRoaXMpOwogICAgIFN0YWNrQm91bmRzIHN0YWNrID0gd3RmVGhyZWFkRGF0
YSgpLnN0YWNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA1YTg0MTA1ZWFm
YjdhYmJhNWZhNDMxZWVlZGQ1NWQ3YTg5ZjU1Y2UyLi42OTU4YWMzOTNiMWFlZmMwYmVmYmY2ZTRl
YjhiNjgyNWNmN2M5YTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTQ0LDYg
KzQ0LDcgQEAKICNpbmNsdWRlICJQcml2YXRlTmFtZS5oIgogI2luY2x1ZGUgIlByb3RvdHlwZU1h
cC5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgorI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIK
ICNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKICNpbmNs
dWRlICJUeXBlZEFycmF5Q29udHJvbGxlci5oIgpAQCAtNjksNiArNzAsNyBAQAogbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBBcml0eUNoZWNrRmFpbFJldHVyblRodW5rczsKKyAgICBjbGFz
cyBCdWlsdGluRXhlY3V0YWJsZXM7CiAgICAgY2xhc3MgQ29kZUJsb2NrOwogICAgIGNsYXNzIENv
ZGVDYWNoZTsKICAgICBjbGFzcyBDb21tb25JZGVudGlmaWVyczsKQEAgLTQ5Nyw2ICs0OTksOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCByZWdpc3RlcldhdGNocG9pbnRGb3JJbXB1
cmVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyJiwgV2F0Y2hwb2ludCopOwogICAgICAgICAvLyBG
SVhNRTogVXNlIEF0b21pY1N0cmluZyBvbmNlIGl0IGdvdCBtZXJnZWQgd2l0aCBJZGVudGlmaWVy
LgogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFkZEltcHVyZVByb3BlcnR5KGNvbnN0
IFN0cmluZyYpOworICAgICAgICAKKyAgICAgICAgQnVpbHRpbkV4ZWN1dGFibGVzKiBidWlsdGlu
RXhlY3V0YWJsZXMoKSB7IHJldHVybiBtX2J1aWx0aW5FeGVjdXRhYmxlcy5nZXQoKTsgfQogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
QEAgLTUzNywxMCArNTQxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWUgbV9l
eGNlcHRpb247CiAgICAgICAgIGJvb2wgbV9pbkRlZmluZU93blByb3BlcnR5OwogICAgICAgICBP
d25QdHI8Q29kZUNhY2hlPiBtX2NvZGVDYWNoZTsKLSAgICAgICAgUmVmQ291bnRlZEFycmF5PFN0
YWNrRnJhbWU+IG1fZXhjZXB0aW9uU3RhY2s7Ci0KICAgICAgICAgTGVnYWN5UHJvZmlsZXIqIG1f
ZW5hYmxlZFByb2ZpbGVyOwotCisgICAgICAgIE93blB0cjxCdWlsdGluRXhlY3V0YWJsZXM+IG1f
YnVpbHRpbkV4ZWN1dGFibGVzOworICAgICAgICBSZWZDb3VudGVkQXJyYXk8U3RhY2tGcmFtZT4g
bV9leGNlcHRpb25TdGFjazsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxXYXRjaHBv
aW50U2V0Pj4gbV9pbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnRTZXRzOwogICAgIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNTdHJpbmdJ
bmxpbmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3Ry
aW5nSW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwZmNjMzg0ZThlZGZjMzRiMTQwODNiODY1ZDM3Mzgy
MGY0MTY1YzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVh
ZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBX
ZWJDb3JlX0ZXRF9KU1N0cmluZ0lubGluZXNfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9KU1N0cmlu
Z0lubGluZXNfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nSW5saW5lcy5oPgor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tU
aW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5z
L1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcAppbmRleCAyZWRkY2RiYjlmMDA2Y2E3NjI2
NjUwYjQyMDI3ODYyNmI5MjYxNDE3Li4zYzRlMGQ3YmJiMzFjYWIxMmI1ZTZjOTc1Yzc0ZDNmNDg0
ZTljYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tU
aW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1
Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZUlubGluZXMu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ0lubGluZXMuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJREJBbnlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJBbnlD
dXN0b20uY3BwCmluZGV4IDU2NDljODVjYTA5NTg3NzQ4YTNkYTA2Y2RkZDBjYTk5OWU1MGI4ZTcu
LjNmNGQ4ZWZhZWI1N2YzMzAwM2U3M2E3ZTc4NDJlNDJjNzNjZTY0OTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFueUN1c3RvbS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAK
ICNpbmNsdWRlICJKU0lEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSlNJREJUcmFuc2FjdGlv
bi5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPHJ1bnRp
bWUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKaW5kZXgg
OWVhZTc1NjljNzA2MDNhNGZlZDBhZjE0YzRmODcxOGNkZTY0YTZlMS4uZjQ5ZGZlOTBiNGU4MmQz
OWVkY2JmOWJhMjlmMmFlNzk5YzBkZGYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNs
dWRlICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIkpTSURCT2JqZWN0U3RvcmUuaCIKICNp
bmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgor
I2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0
U3RvcmVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RT
dG9yZUN1c3RvbS5jcHAKaW5kZXggNzRmZDM1NGIyODYwN2NmNzgyMmY4MDUzNDc5NzBmNWQ3YWM4
YzgzMi4uNTQzNGIzYjdkNmM1NmVjYjBhMDNhMjc5NGM2NzM2YTlhZGZiNzBlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5j
cHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1
ZGUgIkpTSURCSW5kZXguaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0jaW5jbHVkZSA8
cnVudGltZS9KU1N0cmluZy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwCmluZGV4IGQxYjQ3MjEzNTFlYjFiMmJm
OGNlMGNkNDczZmVlMTQ0OTE0YzUzYWIuLmYxZGFhOGExMDQ2YjMzZmEzZDM1YTY2YzU1OWVlMGZh
ZjJhZGU2NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZp
bHRlckNvbmRpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2Rl
RmlsdGVyQ29uZGl0aW9uLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIk5vZGVGaWx0
ZXIuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xv
Y2suaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA5ZDA2NmY1ZTFhMDA0ZmJkNGQ1NzQwZTQ5N2M4MjhjOWJlOGY5
MGRhLi45MDkyZTE3MDlkNmZmMjZkYWU2ZjI5MjNjNzUxY2I2OGFlMzM2MDVlIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjIgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRl
ZCB0aGUgdGVzdCByZXN1bHRzIGZvciBuZXcgZXJyb3IgbWVzc2FnZXMgKG5vdyB0aGF0IHRoZXkn
cmUKKyAgICAgICAgYWN0dWFsbHkgaGVscGZ1bCksIGFuZCBhZGRlZCBhIGpzLXJlZ3Jlc3MgdGVz
dCB0byB0cmFjayBwZXJmb3JtYW5jZS4KKworICAgICAgICAqIGpzL2FycmF5LWV2ZXJ5LWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBqcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGpzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUt
ZXZlcnkuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJy
YXktcHJvdG90eXBlLWV2ZXJ5LmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QxKToKKyAgICAgICAg
KHRlc3QyKToKKyAgICAgICAgKHRlc3QzKToKKwogMjAxNC0wMS0zMCAgQWxleGV5IFByb3NrdXJ5
YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3Nz
LW9yaWdpbi1wbHVnaW4tcHJpdmF0ZS1icm93c2luZy10b2dnbGVkLmh0bWwgaXMgZmxha3kgb24g
V0syCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9qcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQKaW5kZXggNTQxYjhjMzU4
ZjA2OGEwY2VhODgyYzEwNTE3NTMyNTExNGNkMzNmNy4uY2NhMzYzZGNlNThmYmE5NWE1OGNlNDZm
Y2I0OGMzOGJmNThhZGY1OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnkt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4
dApAQCAtMzAsMTIgKzMwLDEyIEBAIFBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShpc0Jp
Z0Vub3VnaEFuZEV4Y2VwdGlvbikgdGhyZXcgZXhjZXB0aW9uIGV4Y2VwdGlvCiBQQVNTIFsxMiwg
NTQsIDE4LCAxMzAsIDQ0XS5ldmVyeShpc0JpZ0Vub3VnaEFuZEV4Y2VwdGlvbikgdGhyZXcgZXhj
ZXB0aW9uIGV4Y2VwdGlvbiBmcm9tIGZ1bmN0aW9uLgogCiA1LjAgV3JvbmcgVHlwZSBmb3IgQ2Fs
bGJhY2sgVGVzdAotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KDUpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZl
cnkoJ3dyb25nJykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1Mg
WzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShuZXcgT2JqZWN0KCkpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkobnVs
bCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4
LCAxMzAsIDQ0XS5ldmVyeSh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoKSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5
KDUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxs
YmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnko
J3dyb25nJykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5
IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5l
dmVyeShuZXcgT2JqZWN0KCkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3Rv
dHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwg
MTMwLCA0NF0uZXZlcnkobnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJv
dG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4
LCAxMzAsIDQ0XS5ldmVyeSh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFy
cmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsx
MiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJh
eS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgogCiA2LjAgRWFy
bHkgRXhpdCAoIlNob3J0IENpcmN1aXRpbmciKQogUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2
ZXJ5KGlzQmlnRW5vdWdoU2hvcnRDaXJjdWl0KSBpcyBmYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvanMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2pzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQK
aW5kZXggMmMyYTY4Y2IxMDZkYTEwZjA4NmIyMmM1YmYyYmY1YzhmZTc5ZTMzZS4uNWQ5ZWNiNzVh
OGRhNzliYTY1NjA1ZTdlYjljZjhmYzI1ZmUxOGFmYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
anMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9qcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CkBA
IC0xNSw3ICsxNSw3IEBAIFBBU1MgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodW5kZWZpbmVk
LCAwLCAxKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlCiBQQVNTIEFycmF5LnByb3Rv
dHlwZS5zb3J0LmNhbGwodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRl
ZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnNvcnQu
Y2FsbCh1bmRlZmluZWQpJykuCiBQQVNTIEFycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbCh1bmRl
ZmluZWQsIDAsIDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3Qg
YW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwodW5kZWZp
bmVkLCAwLCAxKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUudW5zaGlmdC5jYWxsKHVuZGVmaW5l
ZCwge30pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2Jq
ZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUudW5zaGlmdC5jYWxsKHVuZGVmaW5lZCwg
e30pJykuCi1QQVNTIEFycmF5LnByb3RvdHlwZS5ldmVyeS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJp
bmcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0
IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUuZXZlcnkuY2FsbCh1bmRlZmluZWQsIHRvU3Ry
aW5nKScpLgorUEFTUyBBcnJheS5wcm90b3R5cGUuZXZlcnkuY2FsbCh1bmRlZmluZWQsIHRvU3Ry
aW5nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVx
dWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVmaW5lZC4KIFBBU1MgQXJyYXkucHJvdG90eXBl
LmZvckVhY2guY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90
eXBlLmZvckVhY2guY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKScpLgogUEFTUyBBcnJheS5wcm90
b3R5cGUuc29tZS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90
b3R5cGUuc29tZS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpJykuCiBQQVNTIEFycmF5LnByb3Rv
dHlwZS5pbmRleE9mLmNhbGwodW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBl
LmluZGV4T2YuY2FsbCh1bmRlZmluZWQsIDApJykuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTI5MGMwZWVmZjhkZTQyMTgzM2Q5MmQyN2U5NTI0MTkxNzYwNGI5NgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJv
d24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5o
dG1sIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZTVjYzE3MWM0ODc1YTM1ODViZjE0ZTU0MTVmNWNkMGU1ODFkNTQ0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZl
cnkuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNj
cmlwdC10ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyYXkt
cHJvdG90eXBlLWV2ZXJ5LmpzIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMv
YXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5NGFhMTYxYzBjZTk4YjJhYjE4
YTNhMWExZjBkZmFhYzlkN2QyZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuanMKQEAgLTAsMCArMSwy
OSBAQAordmFyIHJlc3VsdCA9IDA7CitmdW5jdGlvbiB0ZXN0MShhKSB7CisgICAgcmVzdWx0IDw8
IDE7CisgICAgcmVzdWx0Kys7CisgICAgcmV0dXJuIHRydWU7Cit9CitmdW5jdGlvbiB0ZXN0Mihh
LGIpIHsKKyAgICByZXN1bHQgXj0gMzsKKyAgICByZXN1bHQgKj0gMzsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KK2Z1bmN0aW9uIHRlc3QzKGEsYixjKSB7CisgICAgcmVzdWx0IF49IHJlc3VsdCA+PiAx
OworICAgIHJldHVybiB0cnVlOworfQorCit2YXIgcmVzdWx0ID0gMDsKK3ZhciBhcnJheSA9IFtd
Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKQorICAgIGFycmF5W2ldID0gMTsKKwor
Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7CisgICAgYXJyYXkuZXZlcnkodGVzdDEpOwor
ICAgIGFycmF5LmV2ZXJ5KHRlc3QyKTsKKyAgICBhcnJheS5ldmVyeSh0ZXN0Myk7Cit9CisKK2lm
IChyZXN1bHQgIT0gMTQyODgxMDQ5NikKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIg
KyByZXN1bHQ7CmRpZmYgLS1naXQgYS9HTlVtYWtlZmlsZS5hbSBiL0dOVW1ha2VmaWxlLmFtCmlu
ZGV4IDczZmM0OTI4YzRkZDQ5YjU0OTg2OWI1MDY3OGM2YmRlNzRmNDQ3NjAuLjA4YzkxMTU0MjYw
NTAwZGUzZmYwNGIwMjBjZTBkNjBmOThlOGNmZTggMTAwNjQ0Ci0tLSBhL0dOVW1ha2VmaWxlLmFt
CisrKyBiL0dOVW1ha2VmaWxlLmFtCkBAIC02OCw2ICs2OCw3IEBAIEFMTF9NT0ZJTEVTIDo9CiBk
b21fYmluZGluZ19pZGxzIDo9CiB3dGZfc291cmNlcyA6PQogamF2YXNjcmlwdGNvcmVfaF9hcGkg
Oj0KK2phdmFzY3JpcHRjb3JlX2J1aWx0aW5zX2pzX25vc291cmNlcyA6PQogamF2YXNjcmlwdGNv
cmVfY3BwZmxhZ3M6PQogamF2YXNjcmlwdGNvcmVfY2ZsYWdzIDo9CiBqYXZhc2NyaXB0Y29yZV9z
b3VyY2VzIDo9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222819</attachid>
            <date>2014-01-31 08:53:41 -0800</date>
            <delta_ts>2014-01-31 09:03:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140131085335.patch</filename>
            <type>text/plain</type>
            <size>201172</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NjgxMzcxYWU2ZDBjYWZlNDJmNWNmN2E1NWI3MjRjMTc5ODExYjBhLi44OWQ0ZmRmOGYwMzA2Y2M5
ZjFiNmM5NDVlZWY3ZDRlMTczOGFhOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
VGhlIHJlc3VsdCBvZiB0aGlzIHJlZmFjdG9yaW5nCisgICAgICAgIGlzIHRoYXQgQ29tbW9uSWRl
bnRpZmllcnMsIGFuZCBhIGZldyBvdGhlciBtaXNjZWxsYW5lb3VzIGhlYWRlcnMgbm93CisgICAg
ICAgIG5lZWQgdG8gYmUgaW5jbHVkZWQgZGlyZWN0bHkgYXMgdGhleSB3ZXJlIGZvcm1lcmx5IGNh
cHR1cmVkIHRocm91Z2ggb3RoZXIKKyAgICAgICAgcGF0aHMuCisKKyAgICAgICAgSW4gYWRkaXRp
b24gdGhpcyBhZGRzIGEgZmxhZyB0byB0aGUgTG9va3VwIHRhYmxlJ3MgaGFzaGVudHJ5IHRvIGlu
ZGljYXRlCisgICAgICAgIHRoYXQgYSBzdGF0aWMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgYmFja2Vk
IGJ5IEpTLiBUaGVyZSBpcyB0aGVuIGEgbG90IG9mCisgICAgICAgIGxvZ2ljIHRvIHRocmVhZCB0
aGUgc3BlY2lhbCBuYXR1cmUgb2YgdGhlIGZ1bmN0b24gdG8gd2hlcmUgaXQgbWF0dGVycy4KKyAg
ICAgICAgVGhpcyBhbGxvd3MgdG9TdHJpbmcoKSwgLmNhbGxlciwgZXRjIHRvIG1pbWljIHRoZSBi
ZWhhdmlvdXIgb2YgYSBob3N0CisgICAgICAgIGZ1bmN0aW9uLgorCisgICAgICAgIE5vdGVzIG9u
IHdyaXRpbmcgYnVpbHRpbnM6CisgICAgICAgICAtIEVhY2ggZnVuY3Rpb24gaXMgY29tcGlsZWQg
aW5kZXBlbmRlbnRseSBvZiB0aGUgb3RoZXJzLCBhbmQgdGhvc2UKKyAgICAgICAgICAgaW1wbGVt
ZW50YXRpb25zIGNhbm5vdCBjdXJyZW50bHkgY2FwdHVyZSBhbGwgZ2xvYmFsIHByb3BlcnRpZXMg
KGFzCisgICAgICAgICAgIHRoYXQgY291bGQgYmUgcG90ZW50aWFsbHkgdW5zYWZlKS4gSWYgYSBm
dW5jdGlvbiBkb2VzIGNhcHR1cmUgYQorICAgICAgICAgICBnbG9iYWwgd2Ugd2lsbCBkZWxpYmVy
YXRlbHkgY3Jhc2guCisgICAgICAgICAtIEZvciB0aG9zZSAiZ2xvYmFsIiBwcm9wZXJ0aWVzIHRo
YXQgd2UgZG8gd2FudCBhY2Nlc3MgdG8sIHdlIHVzZQorICAgICAgICAgICB0aGUgQCBwcmVmaXgs
IGUuZy4gT2JqZWN0KHRoaXMpIGJlY29tZXMgQE9iamVjdCh0aGlzKS4gVGhlIEAgaWRlbnRpZmll
cnMKKyAgICAgICAgICAgYXJlIHByaXZhdGUgbmFtZXMsIGFuZCBiZWhhdmUganVzdCBsaWtlIHJl
Z3VsYXIgcHJvcGVydGllcywgb25seQorICAgICAgICAgICB3aXRob3V0IHRoZSByaXNrIG9mIGFk
dWx0ZXJhdGlvbi4gQWdhaW4sIGluIHRoZSBAT2JqZWN0IGNhc2UsIHdlCisgICAgICAgICAgIGV4
cGxpY2l0bHkgZHVwbGljYXRlIHRoZSBPYmplY3RDb25zdHJ1Y3RvciByZWZlcmVuY2Ugb24gdGhl
IEdsb2JhbE9iamVjdAorICAgICAgICAgICBzbyB0aGF0IHdlIGhhdmUgZ3VhcmFudGVlZCBhY2Nl
c3MgdG8gdGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhlCisgICAgICAgICAgIGNvbnN0cnVjdG9y
LgorICAgICAgICAgLSBjYWxsLCBhcHBseSwgZXZhbCwgYW5kIEZ1bmN0aW9uIGFyZSBhbGwgcmVq
ZWN0ZWQgaWRlbnRpZmllcnMsIGFnYWluCisgICAgICAgICAgIHRvIHByZXZlbnQgYW55dGhpbmcg
ZnJvbSBhY2NpZGVudGFsbHkgdXNpbmcgYW4gYWR1bHRlcmF0ZWQgb2JqZWN0LgorICAgICAgICAg
ICBJbnN0ZWFkIEBjYWxsIGFuZCBAYXBwbHkgYXJlIGF2YWlsYWJsZSwgYW5kIGhhcHBpbHkgdGhl
eSBjb21wbGV0ZWx5CisgICAgICAgICAgIGRyb3AgdGhlIG5lcV9wdHIgaW5zdHJ1Y3Rpb24gYXMg
dGhleSdyZSBkZWZpbmVkIGFzIGFsd2F5cyBiZWluZyB0aGUKKyAgICAgICAgICAgb3JpZ2luYWwg
Y2FsbC9hcHBseSBmdW5jdGlvbnMuCisKKyAgICAgICAgVGhlc2UgcmVzdHJpY3Rpb25zIGFyZSBq
dXN0IGludGVuZGVkIHRvIG1ha2UgaXQgaGFyZGVyIHRvIGFjY2lkZW50YWxseQorICAgICAgICBt
YWtlIGNoYW5nZXMgdGhhdCBhcmUgaW5jb3JyZWN0IChmb3IgaW5zdGFuY2UgY2FsbGluZyB3aGF0
ZXZlciBoYXMgYmVlbgorICAgICAgICBhc3NpZ25lZCB0byBnbG9iYWwuT2JqZWN0LCBpbnN0ZWFk
IG9mIHRoZSBvcmlnaW5hbCBjb25zdHJ1Y3RvciBmdW5jdGlvbikuCisgICAgICAgIEhvd2V2ZXIs
IG1ha2luZyBhIG1pc3Rha2UgbGlrZSB0aGlzIHNob3VsZCByZXN1bHQgaW4gYSBwdXJlbHkgc2Vt
YW50aWMKKyAgICAgICAgZXJyb3IgYXMgZnVuZGFtZW50YWxseSB0aGVzZSBmdW5jdGlvbnMgYXJl
IHRyZWF0ZWQgYXMgdGhvdWdoIHRoZXkgd2VyZQorICAgICAgICByZWd1bGFyIEpTIGNvZGUgaW4g
dGhlIGhvc3QgZ2xvYmFsLCBhbmQgaGF2ZSBubyBtb3JlIHByaXZpbGVnZXMgdGhhbgorICAgICAg
ICBhbnkgb3RoZXIgSlMuCisKKyAgICAgICAgVGhlIGluaXRpYWwgcHJvb2Ygb2YgY29uY2VwdCBp
cyBBcnJheS5wcm90b3R5cGUuZXZlcnksIHRoaXMgc2hvd3MgYSA2NSUKKyAgICAgICAgcGVyZm9y
bWFuY2UgaW1wcm92ZW1lbnQsIGFuZCB0aGF0IGltcHJvdmVtZW50IGlzIHNpZ25pZmljYW50bHkg
aHVydCBieQorICAgICAgICBvdXIgcG9vciBvcHRpbWlzYXRpb24gb2Ygb3BfaW4uCisKKyAgICAg
ICAgQXMgdGhpcyBpcyBzdWNoIGEgbGltaXRlZCBmdW5jdGlvbiwgd2UgaGF2ZSBub3QgeWV0IGV4
cG9ydGVkIGFsbCBzeW1ib2xzCisgICAgICAgIHRoYXQgd2UgY291bGQgcG9zc2libHkgbmVlZCwg
YnV0IGFzIHdlIGltcGxlbWVudCBtb3JlLCB0aGUgbGlrZWxpaG9vZAorICAgICAgICBvZiBlbmNv
dW50ZXJpbmcgbWlzc2luZyBmZWF0dXJlcyB3aWxsIHJlZHVjZS4KKworICAgICAgICBUaGlzIGRp
ZCByZXF1aXJlIGJyZWFraW5nIG91dCBhIEpTU3RyaW5nSW5saW5lcyBoZWFkZXIsIGFuZCByZXF1
aXJlZAorICAgICAgICBmaXhpbmcgYSBmZXcgb2JqZWN0cyB0aGF0IHdlcmUgdHJ5aW5nIHRvIHVz
aW5nIFByb3BlcnR5TmFtZTo6cHVibGljTmFtZQorICAgICAgICByYXRoZXIgdGhhbiBQcm9wZXJ0
eU5hbWU6OnVpZC4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6
CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQpOgorICAg
ICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZSk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGljRnVuY3Rpb25HZXR0
ZXIpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGxiYWNrR2V0
dGVyKToKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy5tYWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
YnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzOgorICAgICAgICAoZXZlcnkpOgorICAgICAgICAq
IGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpC
dWlsdGluRXhlY3V0YWJsZXM6OkJ1aWx0aW5FeGVjdXRhYmxlcyk6CisgICAgICAgIChKU0M6OkJ1
aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ1
aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0
YWJsZXM6OmNyZWF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdX
YXRjaHBvaW50LmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAoSlND
OjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUp
OgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9y
KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToK
KyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpF
eGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OnRvU3RyaWN0bmVzcyk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjppc0J1aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChKU0M6OlVubGlua2Vk
Q29kZUJsb2NrOjppc0J1aWx0aW5GdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzQnVpbHRpbkZ1bmN0aW9u
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Om1ha2VGdW5jdGlvbik6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkNhbGxG
dW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpBcHBseUZ1
bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogY3JlYXRlX2hhc2hf
dGFibGU6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGdlbmVy
YXRlLWpzLWJ1aWx0aW5zOiBBZGRlZC4KKyAgICAgICAgKGdldENvcHlyaWdodCk6CisgICAgICAg
IChnZXRGdW5jdGlvbnMpOgorICAgICAgICAoZ2VuZXJhdGVDb2RlKToKKyAgICAgICAgKG1hbmds
ZU5hbWUpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKElkZW50aWZp
ZXIpOgorICAgICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAgICAgICAoU291cmNlQ29kZSk6Cisg
ICAgICAgIChVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChWTSk6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAqIGludGVycHJldGVy
L1Byb3RvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgICog
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAqIGpzYy5jcHA6CisgICAg
ICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAqIHBhcnNlci9BU1RCdWls
ZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKToK
KyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6TGV4
ZXIpOgorICAgICAgICAoSlNDOjppc1NhZmVJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4
ZXI8TENoYXI+OjpwYXJzZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpMZXhlcjxVQ2hhcj46
OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpsZXgpOgorICAgICAg
ICAqIHBhcnNlci9MZXhlci5oOgorICAgICAgICAoSlNDOjppc1NhZmVJZGVudGlmaWVyKToKKyAg
ICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIpOgorICAgICAgICAqIHBh
cnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpzZXRDbG9zZWRWYXJp
YWJsZXMpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpTY29wZU5v
ZGU6OmNhcHR1cmVkVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6U2NvcGVOb2RlOjpzZXRDbG9z
ZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQcm9ncmFtTm9kZTo6Y2xvc2VkVmFyaWFibGVz
KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OlBhcnNlcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUlubmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmRpZEZpbmlzaFBhcnNp
bmcpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cHJpbnRVbmV4cGVjdGVkVG9r
ZW5UZXh0KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
OjpnZXRVc2VkVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVz
Lmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlclRva2Vucy5oOgorICAgICAgICAqIHJ1bnRpbWUv
QXJnTGlzdC5jcHA6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvQXJndW1lbnRzLmg6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHNJdGVyYXRv
ckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0
RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Q29t
bW9uSWRlbnRpZmllcnMpOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Z2V0UHJp
dmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Z2V0UHVibGljTmFt
ZSk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQ
YXRoc0V4Y2VwdGlvbnMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5j
cHA6CisgICAgICAgIChKU0M6OmNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6
ZXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6ZXhlY3V0
YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1
bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6ZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9K
U0FjdGl2YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxl
R2V0KToKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dCk6CisgICAg
ICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyk6Cisg
ICAgICAgICogcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcDoKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlND
ZWxsSW5saW5lcy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAg
IChKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZSk6CisgICAgICAgIChKU0M6OkpTRnVu
Y3Rpb246OnNvdXJjZUNvZGUpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjppc0hvc3RPckJ1
aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzQnVpbHRpbkZ1bmN0
aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKToKKyAgICAgICAg
KEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVy
dHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmg6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
OjpyZXNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjpvYmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpzeW1ib2xUYWJsZUhhc1Byb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGVsZXRlKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5j
cHA6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAg
ICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90
KToKKyAgICAgICAgKEpTQzo6aW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKToKKyAgICAg
ICAgKEpTQzo6SlNWYWx1ZTo6dG9XVEZTdHJpbmdJbmxpbmUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNTeW1ib2xUYWJsZU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTU3ltYm9sVGFibGVPYmpl
Y3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgICAgIERvbid0IHJlcG9y
dCBwcml2YXRlIG5hbWVzLgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5o
OgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZUdldCk6CisgICAgICAgIChKU0M6OnN5bWJvbFRh
YmxlUHV0KToKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyk6Cisg
ICAgICAgICogcnVudGltZS9Mb29rdXAuY3BwOgorICAgICAgICAoSlNDOjpzZXRVcFN0YXRpY0Z1
bmN0aW9uU2xvdCk6CisgICAgICAgICogcnVudGltZS9Mb29rdXAuaDoKKyAgICAgICAgKEpTQzo6
SGFzaEVudHJ5OjpidWlsdGluR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpw
cm9wZXJ0eUdldHRlcik6CisgICAgICAgIChKU0M6Okhhc2hFbnRyeTo6cHJvcGVydHlQdXR0ZXIp
OgorICAgICAgICAoSlNDOjpIYXNoVGFibGU6OmVudHJ5KToKKyAgICAgICAgKEpTQzo6Z2V0U3Rh
dGljUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6Z2V0U3RhdGljVmFsdWVTbG90KToKKyAg
ICAgICAgKEpTQzo6cHV0RW50cnkpOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaDoK
KyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVn
RXhwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5jcHA6CisgICAgICAgICogcnVudGltZS9T
dHJ1Y3R1cmUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpW
TTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6Vk06OmJ1aWx0
aW5FeGVjdXRhYmxlcyk6CisKIDIwMTQtMDEtMjkgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxl
LmNvbT4KIAogICAgICAgICBGVEwgc2hvdWxkIHN1cHBvcnQgR2V0QnlJZChVbnR5cGVkOikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCAxYWQ2OTc0ODhiMGM0YjhiNGNmYWUyOTEzNTQyNTliNmRhY2ZkYzQ1Li5mM2Mz
ZDcxNzFkMDU0NDgwZWM2MDU0MGMwZDUyNTk5NmVlY2RiOWEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBKUwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRpbmcg
Zm9yIHRoZSBuZXdseSByZXF1aXJlZCBoZWFkZXJzLgorCisgICAgICAgIFRlc3Q6IGpzL3JlZ3Jl
c3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwKKworICAgICAgICAqIEZvcndhcmRpbmdIZWFk
ZXJzL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMv
cGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNJREJBbnlDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCRGF0
YWJhc2VDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVD
dXN0b20uY3BwOgorCiAyMDE0LTAxLTMwICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgV2ViR0wgbG9hZCBwb2xpY3kgc2hvdWxkIGJlIHF1ZXJpZWQgZm9yIHRo
ZSB0b3AgbGV2ZWwgZG9jdW1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCmluZGV4IDViZTA1M2YxZTA4NmI0M2U2ODZj
MzY3NGRhZTdjNTE2MDVhMjg2ZTcuLjBlY2VkNTFmM2UyZDViNjIxZGFkZjA1NzQ5ZjVlNzQ2NmEw
NmY1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09i
amVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdEZ1bmN0aW9ucy5oCkBAIC0xMzYsNyArMTM2LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGUKICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CiAgICAg
UmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0Ns
YXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNz
ID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIC8vIG9wdGlvbmFsIG9wdGlt
aXphdGlvbiB0byBieXBhc3MgZ2V0UHJvcGVydHkgaW4gY2FzZXMgd2hlbiB3ZSBvbmx5IG5lZWQg
dG8ga25vdyBpZiB0aGUgcHJvcGVydHkgZXhpc3RzCiAgICAgICAgICAgICBpZiAoSlNPYmplY3RI
YXNQcm9wZXJ0eUNhbGxiYWNrIGhhc1Byb3BlcnR5ID0ganNDbGFzcy0+aGFzUHJvcGVydHkpIHsK
QEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcAogICAgIFJlZlB0cjxP
cGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwogICAgIEpTVmFsdWVSZWYgdmFsdWVSZWYg
PSB0b1JlZihleGVjLCB2YWx1ZSk7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBw
cm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBw
cm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0
aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50
Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdFNldFByb3BlcnR5Q2FsbGJhY2sgc2V0
UHJvcGVydHkgPSBqc0NsYXNzLT5zZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIGlmICgh
cHJvcGVydHlOYW1lUmVmKQpAQCAtMzQzLDcgKzM0Myw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvCiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmplY3QpOwogICAgIFJl
ZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwogICAgIAotICAgIGlmIChTdHJp
bmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJp
bmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFz
c1JlZiBqc0NsYXNzID0gdGhpc09iamVjdC0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9
IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgICAgICBpZiAoSlNPYmplY3REZWxldGVQ
cm9wZXJ0eUNhbGxiYWNrIGRlbGV0ZVByb3BlcnR5ID0ganNDbGFzcy0+ZGVsZXRlUHJvcGVydHkp
IHsKICAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5TmFtZVJlZikKQEAgLTU2NCw3ICs1NjQs
NyBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0U3RhdGljVmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcAogewogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYg
PSB0b1JlZih0aGlzKTsKICAgICAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5
TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5
TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IGNsYXNzUmVm
KCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAg
ICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZSogc3RhdGljVmFsdWVzID0ganND
bGFzcy0+c3RhdGljVmFsdWVzKGV4ZWMpKSB7CiAgICAgICAgICAgICAgICAgaWYgKFN0YXRpY1Zh
bHVlRW50cnkqIGVudHJ5ID0gc3RhdGljVmFsdWVzLT5nZXQobmFtZSkpIHsKQEAgLTYwMCw3ICs2
MDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1
bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRQogICAgIGlmIChQYXJlbnQ6OmdldE93blBy
b3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QyKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90Mi5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUp
KTsKIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUo
KSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CiAg
ICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iai0+Y2xhc3NSZWYoKTsganND
bGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgICAgICBpZiAo
T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlKiBzdGF0aWNGdW5jdGlvbnMgPSBqc0Ns
YXNzLT5zdGF0aWNGdW5jdGlvbnMoZXhlYykpIHsKICAgICAgICAgICAgICAgICBpZiAoU3RhdGlj
RnVuY3Rpb25FbnRyeSogZW50cnkgPSBzdGF0aWNGdW5jdGlvbnMtPmdldChuYW1lKSkgewpAQCAt
NjI2LDcgKzYyNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6
Y2FsbGJhY2tHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkCiAgICAgSlNPYmplY3RSZWYg
dGhpc1JlZiA9IHRvUmVmKHRoaXNPYmopOwogICAgIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJv
cGVydHlOYW1lUmVmOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlO
YW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlO
YW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iai0+
Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAg
ICAgICAgICAgICBpZiAoSlNPYmplY3RHZXRQcm9wZXJ0eUNhbGxiYWNrIGdldFByb3BlcnR5ID0g
anNDbGFzcy0+Z2V0UHJvcGVydHkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5TmFt
ZVJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAyN2JjNGMxN2YzZGZl
ZWI2MWQyNTIzMjNmZDg3OGM0NDc4MGY3NGM1Li4zY2E4Mzg2NDljOTE0MDczOWQ5NDkyMmFlYzFl
ZDk5NWYwZmE3N2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01LDYg
KzUsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMiCiAgICAgIiR7SkFWQVNDUklQVENP
UkVfRElSfS9hc3NlbWJsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9iaW5kaW5ncyIK
KyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zIgogICAgICIke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vYnl0ZWNvZGUiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9ieXRlY29tcGls
ZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9kZmciCkBAIC01Miw2ICs1Myw4IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcAog
ICAgIGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAogCisgICAgYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcAorCiAgICAgYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAKICAg
ICBieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Js
b2NrLmNwcApAQCAtNzA3LDcgKzcxMCw3IEBAIHNldChIQVNIX0xVVF9HRU5FUkFUT1IgJHtDTUFL
RV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2NyZWF0ZV9oYXNoX3RhYmxlKQogbWFjcm8oR0VORVJBVEVf
SEFTSF9MVVQgX2lucHV0IF9vdXRwdXQpCiAgICAgYWRkX2N1c3RvbV9jb21tYW5kKAogICAgICAg
ICBPVVRQVVQgJHtfb3V0cHV0fQotICAgICAgICBERVBFTkRTICR7SEFTSF9MVVRfR0VORVJBVE9S
fSAke19pbnB1dH0KKyAgICAgICAgREVQRU5EUyAke0hBU0hfTFVUX0dFTkVSQVRPUn0gJHtfaW5w
dXR9ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAog
ICAgICAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke0hBU0hfTFVUX0dFTkVSQVRPUn0g
JHtfaW5wdXR9IC1pID4gJHtfb3V0cHV0fQogICAgICAgICBWRVJCQVRJTSkKICAgICBsaXN0KEFQ
UEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTICR7X291dHB1dH0pCkBAIC04MTUsMTYgKzgxOCwy
NyBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxF
fSAke0phdmFTY3JpcHRDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0vQ29kZUdlbmVyYXRvcklu
c3BlY3Rvci5weSAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3Rv
ckpTLmpzb24gLS1vdXRwdXRfaF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0iIC0tb3V0cHV0X2NwcF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0iIC0tb3V0cHV0X2pzX2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVf
RElSfSIgLS1vdXRwdXRfdHlwZSBKYXZhU2NyaXB0IC0td3JpdGVfYWx3YXlzICYmIG1rZGlyIC1w
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yICYmIGNwICR7
REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlz
cGF0Y2hlcnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3Rv
ckpTRnJvbnRlbmREaXNwYXRjaGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NS
SVBUQ09SRV9ESVJ9L2luc3BlY3RvcgogICAgIFZFUkJBVElNKQogCisjIEpTQ0J1aWx0aW5zCitm
aWxlKEdMT0IgSlNDQnVpbHRpbnNfanNfZmlsZXMgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElS
fS9idWlsdGlucy8qLmpzIikKK2FkZF9jdXN0b21fY29tbWFuZCgKKyAgIE9VVFBVVCAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcCAke0RFUklWRURf
U09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKKyAgIE1BSU5fREVQRU5E
RU5DWSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMKKyAg
IERFUEVORFMgJHtKU0NCdWlsdGluc19qc19maWxlc30KKyAgIENPTU1BTkQgJHtQWVRIT05fRVhF
Q1VUQUJMRX0gJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5z
ICR7SlNDQnVpbHRpbnNfanNfZmlsZXN9ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0vSlNDQnVpbHRpbnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9
L0pTQ0J1aWx0aW5zLmNwcAorICAgVkVSQkFUSU0pCisKIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRD
b3JlX1NPVVJDRVMKICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0lu
c3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcAogICAg
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVp
bGRlcnMuY3BwCisgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NC
dWlsdGlucy5jcHAKICkKIAogbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUwogICAg
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5k
RGlzcGF0Y2hlcnMuaAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0v
SW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmgKICAgICAke0RFUklWRURfU09VUkNFU19K
QVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgKKyAgICAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKICkKIAogYWRkX2N1
c3RvbV9jb21tYW5kKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpp
bmRleCAxMTU2ZTk3ZmQ4ODYyNTU3YzljZjhkM2I2OGJmNGQwM2MzZThiYThmLi5hODNiZGNhZDUx
YjA2Njg4NjY3YTZiNzMyMDU3ZTRjZGM4OTYwYTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjgsOCArMjgsOSBAQCBWUEFUSCA9IFwKICAgICAkKEph
dmFTY3JpcHRDb3JlKSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvcGFyc2VyIFwKICAgICAkKEph
dmFTY3JpcHRDb3JlKS9ydW50aW1lIFwKLSAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnRlcnByZXRl
ciBcCi0gICAgJChKYXZhU2NyaXB0Q29yZSkvaml0IFwKKwkkKEphdmFTY3JpcHRDb3JlKS9pbnRl
cnByZXRlciBcCisJJChKYXZhU2NyaXB0Q29yZSkvaml0IFwKKwkkKEphdmFTY3JpcHRDb3JlKS9i
dWlsdGlucyBcCiAjCiAKIC5QSE9OWSA6IGFsbApAQCAtNTcsOCArNTgsMTggQEAgYWxsIDogXAog
ICAgIFJlZ0V4cE9iamVjdC5sdXQuaCBcCiAgICAgU3RyaW5nQ29uc3RydWN0b3IubHV0LmggXAog
ICAgIHVkaXM4Nl9pdGFiLmggXAorICAgIEpTQ0J1aWx0aW5zIFwKICMKIAorIyBidWlsdGluIGZ1
bmN0aW9ucworLlBIT05ZOiBKU0NCdWlsdGlucworCitKU0NCdWlsdGluczogJChKYXZhU2NyaXB0
Q29yZSkvZ2VuZXJhdGUtanMtYnVpbHRpbnMgSlNDQnVpbHRpbnMuaCBKU0NCdWlsdGlucy5jcHAK
K0pTQ0J1aWx0aW5zLmg6ICQoSmF2YVNjcmlwdENvcmUpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zICQo
SmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zLyouanMKKwlweXRob24gJF4gJEAKKwkJCQkJCQkJCQkJ
CQkJCQkJCQkJIAorSlNDQnVpbHRpbnMuY3BwOiBKU0NCdWlsdGlucy5oCisKICMgbG9va3VwIHRh
YmxlcyBmb3IgY2xhc3NlcwogCiAlLmx1dC5oOiBjcmVhdGVfaGFzaF90YWJsZSAlLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGZlNTQ0OGRkYzFiY2ZhYTRjNzI5YTFj
YzAwZGVhNjI0MzE5MzkwYTIuLjU1NjlmNTAyOGQ4YzNjZGQ1YTA0ZGM5MzY2YTg0YjA0ZWVjNDgx
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTUxLDYgKzUxLDcgQEAg
amF2YXNjcmlwdGNvcmVfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVycyBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2Jp
bmRpbmdzIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMgXAog
CS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZSBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlciBcCiAJLUkkKHNyY2RpcikvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyIFwKQEAgLTExMCwxMiArMTExLDE2IEBAIERlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaDogJChqYXZhc2Ny
aXB0Y29yZV9zb3VyY2VzKSAkCiAJJChBTV9WX0dFTikkKFJVQlkpICQoc3JjZGlyKS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiICQo
c3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20gJEAKIAkkKEFNX1ZfYXQpdG91Y2ggJEAKIAotJChQcm9ncmFtc19MTEludE9mZnNldHNFeHRy
YWN0b3JfT0JKRUNUUyk6IERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJl
ZE9mZnNldHMuaAorJChQcm9ncmFtc19MTEludE9mZnNldHNFeHRyYWN0b3JfT0JKRUNUUyk6IERl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaCAKIAogRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnRBc3NlbWJseS5oOiBQcm9ncmFtcy9MTElu
dE9mZnNldHNFeHRyYWN0b3IkKEVYRUVYVCkKIAkkKEFNX1ZfR0VOKSQoUlVCWSkgJChzcmNkaXIp
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYiAkKHNyY2RpcikvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIFByb2dyYW1zL0xM
SW50T2Zmc2V0c0V4dHJhY3RvciQoRVhFRVhUKSAkQAogCSQoQU1fVl9hdCl0b3VjaCAkQAogCitE
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5oOiBEZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5jcHAKK0Rlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL0pTQ0J1aWx0aW5zLmNwcDogJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9n
ZW5lcmF0ZS1qcy1idWlsdGlucyAkKGphdmFzY3JpcHRjb3JlX2J1aWx0aW5zX2pzX25vc291cmNl
cykKKwkkKEFNX1ZfR0VOKSQoUFlUSE9OKSAkXiAkQAorCiAkKGxpYmphdmFzY3JpcHRjb3JlZ3Rr
X0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJ
T05AX2xhX09CSkVDVFMpOiBEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9MTEludEFzc2Vt
Ymx5LmgKIAoganNjOiAkKGphdmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcykgUHJvZ3JhbXMv
anNjJChFWEVFWFQpCkBAIC0yMTYsNiArMjIxLDcgQEAgRVhUUkFfRElTVCArPSBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL0tleXdvcmRMb29rdXBHZW5lcmF0b3IucHkgXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvS2V5d29yZHMudGFibGUgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9USEFOS1MgXAorCSQoamF2YXNjcmlwdGNvcmVfYnVpbHRpbnNfanNfbm9zb3VyY2VzKSBcCiAJ
JChsbGludF9ub3NvdXJjZXMpIFwKIAkkKG9mZmxpbmVhc21fbm9zb3VyY2VzKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGNkYjU0MjZiMDZiNTJhOTgy
NTZlZTkwNThiYmE4ZjExZWVhNjllZTAuLjk4ZmFhYTdkMTc1YWE2MWYyMDg5NmNlZWIxMzg2M2Uy
N2IyNjZjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC0yMCw2ICsyMCw4IEBAIGphdmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcyArPSBcCiAJRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvRXJyb3JQcm90b3R5cGUubHV0LmggXAogCURlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTRGF0YVZpZXdQcm90b3R5cGUubHV0LmggXAogCURl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0Lmx1dC5oIFwKKwlEZXJp
dmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5jcHAgXAorCURlcml2ZWRTb3Vy
Y2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFT
Y3JpcHRDb3JlL0pTT05PYmplY3QubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9KU1Byb21pc2VQcm90b3R5cGUubHV0LmggXApAQCAtMzUsNiArMzcsOSBAQCBqYXZh
c2NyaXB0Y29yZV9idWlsdF9ub3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvTExJbnRBc3NlbWJseS5oCiAKK2phdmFzY3JpcHRjb3JlX2J1aWx0aW5zX2pzX25vc291
cmNlcyArPSBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlw
ZS5qcworCiBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9BUElDYXN0LmggXApAQCAtMTAyLDYgKzEwNyw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMg
Kz0gXAogICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRPYmplY3QuaCBc
CiAgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcCBcCiAg
ICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmggXAorICAgIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIFwKKyAg
ICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmNw
cCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2Zp
bGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAg
XApAQCAtMTI0MSw3ICsxMjQ4LDkgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJz
LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNGcm9udGVu
ZERpc3BhdGNoZXJzLmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3Rv
ckpTVHlwZUJ1aWxkZXJzLmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5z
cGVjdG9ySlNUeXBlQnVpbGRlcnMuaAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0lu
c3BlY3RvckpTVHlwZUJ1aWxkZXJzLmggXAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3Jl
L0pTQ0J1aWx0aW5zLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNDQnVp
bHRpbnMuaAogCiBsbGludF9ub3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qCmluZGV4IDVlZGVmZGJlODU1Zjk2YTYyNjhkODU3M2JlYzFkMGMzZDg1
OGFhNWMuLmExMmRiMTgzNDg2ZGZiYmNhODNmM2E3OGU5Y2Y5ODYzMWIyNjUzZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtMzA5LDYgKzMwOSw3IEBACiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0T2JqZWN0LmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdFZhbHVlLmNwcCIg
Lz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxl
cy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9j
YXRpb25Qcm9maWxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2Rl
XEFycmF5UHJvZmlsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29k
ZVxCeXRlY29kZUJhc2ljQmxvY2suY3BwIiAvPgpAQCAtNzIxLDYgKzcyMiw3IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNCYWNr
ZW5kRGlzcGF0Y2hlcnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9y
SlNUeXBlQnVpbGRlcnMuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmNwcCIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJ
dGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJj
ZXNcQXJyYXlDb25zdHJ1Y3Rvci5sdXQuaCIgLz4KQEAgLTc1MCw2ICs3NTIsNyBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFJlZ0V4cE9iamVjdC5s
dXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xSZWdFeHBQcm90b3R5cGUubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcU3RyaW5nQ29uc3RydWN0b3IubHV0LmgiIC8+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuaCIg
Lz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxBUElcQVBJQ2FsbGJhY2tGdW5jdGlvbi5oIiAvPgpAQCAtNzk4LDYgKzgwMSw3IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdE9iamVjdC5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0VmFsdWUuaCIgLz4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxlcy5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9u
UHJvZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlQ
cm9maWxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeVZhbElu
Zm8uaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmls
dGVycwppbmRleCA4N2UxMmE0NzE1OGJiNjIyNGQ0OWZkNjIyOTc4YzRhOWM0NDM1YTY1Li44Njlj
MWY1ODliY2I2ODZlYjljZjIwYzA5NmJlMWI4M2E1NTFlMjRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC03LDYgKzcsOSBAQAogICAg
IDxGaWx0ZXIgSW5jbHVkZT0iYmluZGluZ3MiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezBi
YWNlMTIzLTQ1ODItZWViYy05MzE0LTc4MTliMzc2YzE5OH08L1VuaXF1ZUlkZW50aWZpZXI+CiAg
ICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJidWlsdGlucyI+CisgICAgICA8VW5p
cXVlSWRlbnRpZmllcj57M2I5ZDcyYTUtMTM1Yi00M2IzLWE1MjQtYzZkMmI5ZDI5ZDM1fTwvVW5p
cXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KICAgICA8RmlsdGVyIEluY2x1ZGU9ImJ5dGVj
b2RlIj4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns3NjYwODhhMC0xMjE2LTQ4NTQtYWE0My01
NjBjNWUyODM2Njh9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgpAQCAtMTA4LDYg
KzExMSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcTWFjcm9Bc3Nl
bWJsZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAgPC9DbENv
bXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWlsdGluRXhlY3V0
YWJsZXMuY3BwIj4KKyAgICAgIDxGaWx0ZXI+YnVpbHRpbnM8L0ZpbHRlcj4KKyAgICA8L0NsQ29t
cGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlv
blByb2ZpbGUuY3BwIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KQEAgLTEzMjksNiArMTMzNSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwIj4KICAg
ICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRp
bnMuY3BwIj4KKyAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CisgICAgPC9D
bENvbXBpbGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cQVBJXEFQSUNhbGxiYWNrRnVuY3Rpb24uaCI+CkBAIC0xNDU0LDYgKzE0NjMs
OSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXFg4NkFzc2VtYmxlci5o
Ij4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWlsdGluRXhlY3V0YWJsZXMuaCI+
CisgICAgICA8RmlsdGVyPmJ1aWx0aW5zPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmgi
PgogICAgICAgPEZpbHRlcj5ieXRlY29kZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAt
MjU1MCw2ICsyNTYyLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xBcnJheVByb3RvdHlwZS5sdXQuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQg
U291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmgiPgorICAgICAgPEZpbHRl
cj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVk0uaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlQ29tbW9uLnByb3BzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmVD
b21tb24ucHJvcHMKaW5kZXggMzYyMmZmYzU3N2M0M2RkZjcwZGE1MWZmNjhhZDY0NmY2MzA0ZTU2
Ny4uYzU4ODg3MGMyZmQxM2Q2MDc2ZDM4ZjUyY2E2MjI1ZGIyODcyYzc4MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmVDb21tb24ucHJvcHMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmVDb21tb24ucHJvcHMKQEAgLTUsNyArNSw3IEBACiAgIDxQ
cm9wZXJ0eUdyb3VwIC8+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+
Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlw7Li5cdG9vbHNcOy4uXHJ1
bnRpbWVcOy4uXGxsaW50XDsuLlxqaXRcOy4uXGRpc2Fzc2VtYmxlclw7Li5caGVhcFw7Li5cZGVi
dWdnZXJcOy4uXGFzc2VtYmxlclw7Li5ccHJvZmlsZXJcOy4uXHlhcnJcOy4uXGludGVycHJldGVy
XDsuLlxieXRlY29kZVw7Li5cZGZnXDsuLlxieXRlY29tcGlsZXJcOy4uXHBhcnNlclw7Li5cQVBJ
XDsuLlxmdGxcOy4uXGJpbmRpbmdzXDsuLlxpbnNwZWN0b3JcOyQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291
cmNlc1w7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcOyQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
aW5jbHVkZVxwcml2YXRlXDskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGU7JChXZWJLaXRfTGli
cmFyaWVzKVxpbmNsdWRlXHByaXZhdGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwv
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzPi4uXDsuLlx0b29sc1w7Li5ccnVudGltZVw7Li5cbGxpbnRcOy4uXGppdFw7Li5c
ZGlzYXNzZW1ibGVyXDsuLlxoZWFwXDsuLlxkZWJ1Z2dlclw7Li5cYXNzZW1ibGVyXDsuLlxwcm9m
aWxlclw7Li5ceWFyclw7Li5caW50ZXJwcmV0ZXJcOy4uXGJ5dGVjb2RlXDsuLlxidWlsdGluc1w7
Li5cZGZnXDsuLlxieXRlY29tcGlsZXJcOy4uXHBhcnNlclw7Li5cQVBJXDsuLlxmdGxcOy4uXGJp
bmRpbmdzXDsuLlxpbnNwZWN0b3JcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1w7JChDb25maWd1
cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRl
XEphdmFTY3JpcHRDb3JlXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRl
XDskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGU7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRl
XHByaXZhdGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz4KICAgICAgIDxGb3JjZWRJbmNsdWRlRmlsZXM+SUNVVmVyc2lvbi5oOyUo
Rm9yY2VkSW5jbHVkZUZpbGVzKTwvRm9yY2VkSW5jbHVkZUZpbGVzPgogICAgIDwvQ2xDb21waWxl
PgogICAgIDxMaW5rPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyN2U4NzY3NDBh
OTY0YjAyODk4NGVkNjc4MTYxODIwYTVkY2Y3N2M0Li45MTE1NzNhYjE3ZDMzOTc0YWE3YzlhMDEx
ZGIyMDBiMDlhZjc4YmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTIyLDcg
KzkyMiw2IEBACiAJCUE1MDNGQTE5MTg4RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZy
YW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
MDNGQTEzMTg4RTBGQUYwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLzsgfTsK
IAkJQTUwM0ZBMUExODhFMEZCMDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE0MTg4RTBG
QUYwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggKi87IH07CiAJCUE1MDNGQTFCMTg4
RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTUxODhFMEZCMDAwMTEwRjE0
IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi87IH07Ci0JCUE1MDNGQTFDMTg4RTBGQjAw
MDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE2MTg4RTBGQjAwMDExMEYxNCAvKiBKU0ph
dmFTY3JpcHRDYWxsRnJhbWUuaCAqLzsgfTsKIAkJQTUwM0ZBMUQxODhFMEZCMDAwMTEwRjE0IC8q
IEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNzE4OEUwRkIwMDAxMTBGMTQgLyogSlNK
YXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcCAqLzsgfTsKIAkJQTUwM0ZBMUUxODhFMEZC
MDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTgxODhFMEZCMDAwMTEw
RjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oICovOyB9OwogCQlBNTAzRkEy
MTE4OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0QnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMUYxODhFRkY2ODAwMTEwRjE0IC8q
IFNjcmlwdEJyZWFrcG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTAyNCw2ICsxMDIzLDcgQEAKIAkJQTcwQjA4MzIxN0EwQjc5QjAwREFG
MTRCIC8qIERGR0JpbmFyeVN3aXRjaC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNzBCMDgzMDE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dp
dGNoLmNwcCAqLzsgfTsKIAkJQTcwQjA4MzMxN0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3
aXRjaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcw
QjA4MzExN0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5oICovOyB9OwogCQlBNzEy
MzZFNTExOTVGMzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MTIzNkU0MTE5NUYzM0MwMEJEMjE3
NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3BwICovOyB9OworCQlBNzFEQTgwRjE4ODBEQkFCMDBEMUYy
OTkgLyogSlNTdHJpbmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNzFEQTgwRTE4ODBEQkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxpbmVz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcy
MDI4QjYxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIwMjhCNDE3OTc2MDFFMDA5
ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmNwcCAqLzsgfTsKIAkJQTcyMDI4QjgxNzk3NjAx
RTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyMDI4QjUxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rl
c3RSdW5uZXJVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUE3MjAyOEJBMTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyMDI4Qjkx
Nzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExNTAsNiArMTE1MCwxMCBAQAogCQlB
N0NBM0FFODE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0NBM0FFMjE3REE0MUFFMDA2NTM4QUYgLyog
SlNXZWFrTWFwLmggKi87IH07CiAJCUE3Q0EzQUVCMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFw
RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
N0NBM0FFOTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuY3BwICovOyB9OwogCQlBN0NB
M0FFQzE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0EzQUVBMTdEQTUxNjgwMDY1MzhBRiAvKiBX
ZWFrTWFwRGF0YS5oICovOyB9OworCQlBN0Q4MDFBNDE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRp
bkV4ZWN1dGFibGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3Bw
ICovOyB9OworCQlBN0Q4MDFBNTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4MDFB
MjE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdEODAxQTgxODgwRDZBODAwMjZD
MzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3RDgwMUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAg
Ki87IH07CisJCUE3RDgwMUE5MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTcxODgwRDZB
ODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTdEODlDRjIxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jhc2lj
QmxvY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTdEODlDRTMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jhc2ljQmxvY2suY3BwICovOyB9OwogCQlB
N0Q4OUNGMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODlDRTQxN0EwQjhD
QzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCAqLzsgfTsKIAkJQTdEODlDRjQx
N0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4OUNFNTE3QTBCOENDMDA3NzNBRDgg
LyogREZHQmxvY2tJbnNlcnRpb25TZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMjQ2Miw2ICsyNDY2LDggQEAKIAkJQTcxMjM2RTQxMTk1RjMz
QzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKSVRPcGNvZGVzMzJfNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNzE4RjYxQTExNzU0QTIxMDAyNDY1QTcgLyogUmVnRXhwSml0VGFibGVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEppdFRhYmxlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNzE4RjgyMTExNzhFQjRCMDAyNDY1QTcgLyogY3JlYXRl
X3JlZ2V4X3RhYmxlcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVU
eXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gY3JlYXRl
X3JlZ2V4X3RhYmxlczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcxREE4MEQxODgw
RDcxRjAwRDFGMjk5IC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3Jp
cHQucHl0aG9uOyBwYXRoID0gImdlbmVyYXRlLWpzLWJ1aWx0aW5zIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTcxREE4MEUxODgwREJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5l
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0cmluZ0lubGluZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyMDI4QjQxNzk3NjAxRTAwOTgwMjhDIC8q
IEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0NUZXN0UnVubmVyVXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNzIwMjhCNTE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ1Rlc3RSdW5uZXJVdGlscy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNzIwMjhCOTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5j
dGlvbklubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGdW5jdGlv
bklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1OTAsNiArMjU5Niwx
MSBAQAogCQlBN0NBM0FFMjE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2Vha01hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBN0NBM0FFOTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vha01hcERhdGEuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0NBM0FFQTE3REE1MTY4MDA2NTM4QUYgLyogV2Vh
a01hcERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha01hcERhdGEu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTAxODgwRDY2RTAwMjZDMzlC
IC8qIEFycmF5LnByb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsg
cGF0aCA9IEFycmF5LnByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTdEODAxQTExODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCdWlsdGluRXhlY3V0YWJsZXMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFBMjE4ODBENjZFMDAyNkMzOUIgLyog
QnVpbHRpbkV4ZWN1dGFibGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1
aWx0aW5FeGVjdXRhYmxlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFB
NjE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNDQnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBN0Q4MDFBNzE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTdEODlDRTMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jhc2ljQmxvY2su
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQmFzaWNCbG9jay5j
cHA7IHBhdGggPSBkZmcvREZHQmFzaWNCbG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE3RDg5Q0U0MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdCbG9ja0luc2VydGlv
blNldC5jcHA7IHBhdGggPSBkZmcvREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBN0Q4OUNFNTE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJ
bnNlcnRpb25TZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQmxvY2tJ
bnNlcnRpb25TZXQuaDsgcGF0aCA9IGRmZy9ERkdCbG9ja0luc2VydGlvblNldC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjkyNiw2ICsyOTM3LDcgQEAKIAkJCQk4NjA0RjRGMjE0
M0E2QzQ0MDBCMjk1RjUgLyogQ2hhbmdlTG9nICovLAogCQkJCUY2OTJBODU0MDI1NTU5N0QwMUZG
NjBGNyAvKiBjcmVhdGVfaGFzaF90YWJsZSAqLywKIAkJCQlBNzE4RjgyMTExNzhFQjRCMDAyNDY1
QTcgLyogY3JlYXRlX3JlZ2V4X3RhYmxlcyAqLywKKwkJCQlBNzFEQTgwRDE4ODBENzFGMDBEMUYy
OTkgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMgKi8sCiAJCQkJNDVFMTJEODgwNkE0OUIwRjAwRTlE
Rjg0IC8qIGpzYy5jcHAgKi8sCiAJCQkJRjY4RUJCOEMwMjU1RDRDNjAxRkY2MEY3IC8qIGNvbmZp
Zy5oICovLAogCQkJCUY1QzI5MEU2MDI4NEY5OEUwMTg2MzVDQSAvKiBKYXZhU2NyaXB0Q29yZVBy
ZWZpeC5oICovLApAQCAtMjkzNCw2ICsyOTQ2LDcgQEAKIAkJCQkxNDMyRUJENzBBMzRDQUQ0MDA3
MTdCOUYgLyogQVBJICovLAogCQkJCTk2ODhDQjEyMEVEMTJCNEUwMDFENjQ5RiAvKiBhc3NlbWJs
ZXIgKi8sCiAJCQkJQTU0Q0YyRUExODRFQTczOTAwMjM3RjE5IC8qIGJpbmRpbmdzICovLAorCQkJ
CUE3RDgwMTlGMTg4MEQ2NkUwMDI2QzM5QiAvKiBidWlsdGlucyAqLywKIAkJCQk5NjlBMDc4RjBF
RDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8sCiAJCQkJN0UzOUQ4MUQwRUMzOEVGQTAwM0FG
MTFBIC8qIGJ5dGVjb21waWxlciAqLywKIAkJCQkxQzkwNTEzRTBCQTlFODgzMDA4MUU5RDAgLyog
Q29uZmlndXJhdGlvbnMgKi8sCkBAIC0zNTA5LDYgKzM1MjIsOCBAQAogCQk2NTBGREY4RDA5RDBG
Q0E3MDA3NjlFNTQgLyogRGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlBN0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVp
bHRpbnMuY3BwICovLAorCQkJCUE3RDgwMUE3MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlu
cy5oICovLAogCQkJCUJDMThDNTIzMEUxNkZDOEEwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5s
dXQuaCAqLywKIAkJCQlCQ0QyMDNFNzBFMTcxOEY0MDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5s
dXQuaCAqLywKIAkJCQlBNTEzRTVDNjE4NUY5NDM2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRT
b3VyY2UuaCAqLywKQEAgLTM4MTEsNiArMzgyNiw3IEBACiAJCQkJQTc5MERENkExODJGNDk5NzAw
NTg4ODA3IC8qIEpTU2V0SXRlcmF0b3IuaCAqLywKIAkJCQlCQzAyRTlCNjBFMTg0MkZBMDAwRjky
OTcgLyogSlNTdHJpbmcuY3BwICovLAogCQkJCUY2OTJBODYyMDI1NTU5N0QwMUZGNjBGNyAvKiBK
U1N0cmluZy5oICovLAorCQkJCUE3MURBODBFMTg4MERCQUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lu
bGluZXMuaCAqLywKIAkJCQk4NkU4NTUzODExMUI5OTY4MDAxQUY1MUUgLyogSlNTdHJpbmdCdWls
ZGVyLmggKi8sCiAJCQkJMjYwMEI1QTQxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVy
LmNwcCAqLywKIAkJCQkyNjAwQjVBNTE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIu
aCAqLywKQEAgLTQ1NjEsNiArNDU3NywxNiBAQAogCQkJcGF0aCA9IHJlbW90ZTsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUE3RDgwMTlGMTg4MEQ2NkUwMDI2QzM5QiAvKiBi
dWlsdGlucyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
QTdEODAxQTAxODgwRDY2RTAwMjZDMzlCIC8qIEFycmF5LnByb3RvdHlwZS5qcyAqLywKKwkJCQlB
N0Q4MDFBMTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCAqLywKKwkJ
CQlBN0Q4MDFBMjE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggKi8sCisJ
CQkpOworCQkJcGF0aCA9IGJ1aWx0aW5zOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJ
fTsKIC8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEhlYWRlcnNCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTQ2MDYsMTEgKzQ2MzIsMTEgQEAKIAkJCQk4NkFERDE0NTBG
RERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1
Q0VFRTE1MTg3RjNCQUQwMEU1NUM5OSAvKiBJbnNwZWN0b3JBZ2VudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNjVDMDI4NUQxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5oIGluIEhlYWRl
cnMgKi8sCi0gCQkJCTJBNjgyOTVCMTg3NUY4MDUwMEI2QzNFMiAvKiBDb3B5V3JpdGVCYXJyaWVy
LmggaW4gSGVhZGVycyAqLywKLSAgICAgICAgICAgICAgICAyQTRFQzkwQzE4NjBENkMyMDA5NEY3
ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkyQTY4Mjk1QjE4
NzVGODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MkE0RUM5MEMxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkU1OTMyQTgxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTUzMjQzOTMxODU2OTcwOTAwMkVENjkyIC8qIENvZGVHZW5lcmF0
b3JJbnNwZWN0b3JTdHJpbmdzLnB5IGluIEhlYWRlcnMgKi8sCi0gCQkJCUE1MzI0MzkyMTg1Njk3
MDkwMDJFRDY5MiAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGluIEhlYWRlcnMgKi8sCisJ
CQkJQTUzMjQzOTIxODU2OTcwOTAwMkVENjkyIC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjI0RTU0RjE3RUUyNzQ5MDBBQkIyMTcgLyogVGVtcFJlZ2lz
dGVyU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTBFNEI2NDE4ODA5REQ1MDA2OEE0NkQgLyog
SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFQjU4QzE1
MTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJvckhhbmRsaW5nU2NvcGUuaCBpbiBIZWFkZXJzICovLApA
QCAtNDYyMiw3ICs0NjQ4LDcgQEAKIAkJCQkwRjgzMzVCODE2MzlDMUVBMDAxNDQzQjUgLyogQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMjkxODdDQTVF
NjAwODQzQjEwIC8qIGlubGluZS1hbmQtbWluaWZ5LXN0eWxlc2hlZXRzLWFuZC1zY3JpcHRzLnB5
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMkIxODdDQTc1QjAwODQzQjEwIC8qIGpzbWluLnB5
IGluIEhlYWRlcnMgKi8sCi0gCQkJCUE1MzI0Mzk4MTg1NkE0ODkwMDJFRDY5MiAvKiBJbnNwZWN0
b3JKUy5qc29uIGluIEhlYWRlcnMgKi8sCisJCQkJQTUzMjQzOTgxODU2QTQ4OTAwMkVENjkyIC8q
IEluc3BlY3RvckpTLmpzb24gaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUyQTE4N0NBNzU5MDA4
NDNCMTAgLyogeHhkLnBsIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVBMDg2MjAxODJCN0EwNDAwRjZE
ODUxIC8qIEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjM1MTdBREI1RjMw
MDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC00NzMzLDcgKzQ3NTks
NyBAQAogCQkJCUExQTAwOUMwMTgzMUEyMkQwMENGODcxMSAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDOURDNTEzMjhERjgyMDAyQjJBRDcgLyogREZHQnl0
ZUNvZGVQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDg1MzI4MTg3REZERUMwMDgzQjY4
NyAvKiBGVExBdmFpbGFibGVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8sCi0gICAgICAgICAgICAg
ICAgQTU5M0NGODcxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCBp
biBIZWFkZXJzICovLAorCQkJCUE1OTNDRjg3MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JB
Z2VudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI1NkMzNjE2MjdCMEFEMDA3RjI3
ODMgLyogREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRpZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRkZDOTU4MTRFRjkwQTIwMEM3MjUzMiAvKiBERkdDRkFQaGFz
ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC00ODcyLDYgKzQ4OTgsNyBAQAogCQkJCTBGRUEwQTFEMTcw
OEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RUEwQTFGMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNTk0NTU5MzE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0Q4MDFBOTE4ODBENkE4MDAyNkMz
OUIgLyogSlNDQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTBBMTcwNTEzREIw
MEJCNzIyQyAvKiBGVExDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDg1MzJB
MTg3REZERUMwMDgzQjY4NyAvKiBGVExSZWNvdmVyeU9wY29kZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZFQTBBMjMxNzA5NjA2OTAwQkI3MjJDIC8qIEZUTENvbW1vblZhbHVlcy5oIGluIEhlYWRl
cnMgKi8sCkBAIC00OTQ2LDYgKzQ5NzMsNyBAQAogCQkJCUJDMThDNDBGMEUxNkY1Q0QwMEIzNDQ2
MCAvKiBJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjVGOEJDRTE1NzU0NEE5MDAy
NDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5
OTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUE3RDgwMUE1MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQjdGMzlBMTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ0hlYWRlcklu
bGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzlCMTVFRDhFNDYwMEYxNjdCMiAvKiBJ
bmRleGluZ1R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQ0VGQUIwMTgwNUNBNkQwMDQ3MkNF
NCAvKiBJbml0aWFsaXplTExWTS5oIGluIEhlYWRlcnMgKi8sCkBAIC01MjE4LDYgKzUyNDYsNyBA
QAogCQkJCUE1MzI0Mzg4MTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JKU0JhY2tlbmREaXNw
YXRjaGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NTYwRTE2RjVDRDAwQjM0NDYwIC8q
IFByb3RlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzRDMzNCMTZBQTJEOTUwMDYyRjAxRCAv
KiBQcm90b3R5cGVNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3MURBODBGMTg4MERCQUIwMEQx
RjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMzMkE0MTRD
QTdERDkwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBD
RDRDMjE1RjFBNjA3MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3QzAwOENFNzE4NzYzMUI2MDA5NTVDMjQgLyogTWljcm90YXNrLmggaW4gSGVhZGVy
cyAqLywKQEAgLTU4MzYsNiArNTg2NSw3IEBACiAJCQkJQTdEODlDRjIxN0EwQjhDQzAwNzczQUQ4
IC8qIERGR0Jhc2ljQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcwQjA4MzIxN0EwQjc5
QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q4
OUNGMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQTdEODAxQTQxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxl
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkVDOURDNDEzMjhERjgyMDAyQjJBRDcgLyogREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEODJFMjExNDE3MkNFMzAw
MTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkZGQzk1
NzE0RUY5MEEwMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01
ODUyLDYgKzU4ODIsNyBAQAogCQkJCTBGRkZDOTU5MTRFRjkwQTYwMEM3MjUzMiAvKiBERkdDU0VQ
aGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJGQzc3MjE2RTEyRjcxMDAzOEQ5NzYgLyog
REZHRENFUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4RjJCOTkxNzJGMDRGRjAwN0RC
REE1IC8qIERGR0Rlc2lyZWRJZGVudGlmaWVycy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBN0Q4
MDFBODE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTczRTEzMzAxNzk2MjRDRDAwRTRERUE4IC8qIERGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzJDMEY3Q0QxN0JCRkM1QjAwNDY0RkU0IC8qIERGR0Rl
c2lyZWRUcmFuc2l0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkU4NTM0QjE3MjNDREE1
MDBCNjE4RjUgLyogREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
NTk3Niw3ICs2MDA3LDcgQEAKIAkJCQkwRjZCMUNDNTE4NjJDNDc4MDA4NDVEOTcgLyogRlRMVW53
aW5kSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM5QTE4MDNBREI3MDA3M0MyQkMg
LyogRlRMU3RhY2tNYXBzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEwQTE2MTcwNkJCOTAw
MEJCNzIyQyAvKiBGVExTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKLSAJCQkJN0MwMDhDRDIxODZG
OEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk3QzAwOENEMjE4NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9taXNlRnVuY3Rpb25zLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGNkIxQ0I1MTg1RkM5RTkwMDg0NUQ5NyAvKiBGVExKU0NhbGwuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMzVCRTExNzE3OEUxQzAwNjkwQzdGIC8qIEZUTFRodW5r
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTkzQ0Y3QzE4NDAzNjAzMDBCRkNFMjcgLyogSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
ZWI0MmY1Y2M0MzNmMTYzNjM0M2JmYzk4MmFhMmFhZmIzMzZlOTQ5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcwpAQCAt
MCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworZnVuY3Rpb24gZXZlcnkoY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pIHsKKyAgICAidXNlIHN0
cmljdCI7CisgICAgaWYgKHRoaXMgPT09IG51bGwpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVy
cm9yKCJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51
bGwiKTsKKyAgICAKKyAgICBpZiAodGhpcyA9PT0gdW5kZWZpbmVkKQorICAgICAgICB0aHJvdyBu
ZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8
IG5vdCBiZSB1bmRlZmluZWQiKTsKKyAgICAKKyAgICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMp
OworICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGggPj4+IDA7CisgICAgCisgICAgaWYgKHR5
cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJy
b3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsK
KworICAgIHZhciB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0g
OiB1bmRlZmluZWQ7CisgICAgCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykg
eworICAgICAgICBpZiAoIShpIGluIGFycmF5KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBpZiAoIWNhbGxiYWNrLkBjYWxsKHRoaXNBcmcsIGFycmF5W2ldLCBpLCBhcnJheSkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHJldHVybiB0cnVlOwor
fQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0MWRiYjVmOTIyNWUyOGExMmVkM2QxNzk4ZmYxNzY4
ZTQzNjcxYTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgi
CisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVz
LmgiCisjaW5jbHVkZSAiUGFyc2VyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitCdWlsdGluRXhl
Y3V0YWJsZXM6OkJ1aWx0aW5FeGVjdXRhYmxlcyhWTSYgdm0pCisgICAgOiBtX3ZtKHZtKQorI2Rl
ZmluZSBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1l
LCBsZW5ndGgpICwgbV8jI25hbWUjI1NvdXJjZShtYWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0
ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgpLCBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0
ZXJhbCgiPGJ1aWx0aW4+IikpKQorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4oSU5JVElBTElaRV9C
VUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX1NUUklOR1MKK3sK
K30KKworVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3Jl
YXRlQnVpbHRpbkV4ZWN1dGFibGUoY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lKQoreworICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmU7CisgICAgUGFyc2VyRXJyb3IgZXJyb3I7CisgICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBw
cm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KCZtX3ZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIo
KSwgSlNQYXJzZUJ1aWx0aW4sIEpTUGFyc2VQcm9ncmFtQ29kZSwgZXJyb3IsICZwb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lKTsKKworICAgIGlmICghcHJvZ3JhbSkgeworICAgICAgICBkYXRhTG9n
KCJGYXRhbCBlcnJvciBjb21waWxpbmcgYnVpbHRpbiBmdW5jdGlvbiAnIiwgbmFtZS5zdHJpbmco
KSwgIic6ICIsIGVycm9yLm1fbWVzc2FnZSk7CisgICAgICAgIENSQVNIKCk7CisgICAgfQorCisg
ICAgU3RhdGVtZW50Tm9kZSogZXhwclN0YXRlbWVudCA9IHByb2dyYW0tPnNpbmdsZVN0YXRlbWVu
dCgpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQpOworICAgIFJFTEVBU0VfQVNT
RVJUKGV4cHJTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKKyAgICBFeHByZXNzaW9uTm9k
ZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVtZW50Tm9kZSo+KGV4cHJTdGF0ZW1l
bnQpLT5leHByKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHIpOworICAgIFJFTEVBU0Vf
QVNTRVJUKGZ1bmNFeHByLT5pc0Z1bmNFeHByTm9kZSgpKTsKKyAgICBGdW5jdGlvbkJvZHlOb2Rl
KiBib2R5ID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZnVuY0V4cHIpLT5ib2R5KCk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoIXByb2dyYW0tPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpOworICAg
IAorICAgIGJvZHktPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKGJvZHkpOworICAgIFJFTEVBU0VfQVNTRVJUKGJvZHktPmlkZW50
KCkuaXNOdWxsKCkpOworICAgIAorICAgIC8vIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBhbiBpbnB1
dCBzdHJpbmcgdGhhdCB3b3VsZCByZXN1bHQgaW4gYSBzaW5nbGUgYW5vbnltb3VzIGZ1bmN0aW9u
IGV4cHJlc3Npb24uCisgICAgYm9keS0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keSk7CisgICAgZm9yIChjb25zdCBhdXRv
JiBjbG9zZWRWYXJpYWJsZSA6IHByb2dyYW0tPmNsb3NlZFZhcmlhYmxlcygpKSB7CisgICAgICAg
IGlmIChjbG9zZWRWYXJpYWJsZSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cy5pbXBs
KCkpCisgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgaWYgKGNsb3NlZFZhcmlh
YmxlID09IG1fdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZC5pbXBsKCkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2xvc2VkVmFyaWFibGUt
PmlzRW1wdHlVbmlxdWUoKSk7CisgICAgfQorICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRl
KCZtX3ZtLCBzb3VyY2UsIGJvZHksIHRydWUsIFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uKTsKKyAg
ICBmdW5jdGlvbkV4ZWN1dGFibGUtPm1fbmFtZVZhbHVlLnNldChtX3ZtLCBmdW5jdGlvbkV4ZWN1
dGFibGUsIGpzU3RyaW5nKCZtX3ZtLCBuYW1lLnN0cmluZygpKSk7CisgICAgcmV0dXJuIGZ1bmN0
aW9uRXhlY3V0YWJsZTsKK30KKworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUyhu
YW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IEJ1aWx0aW5FeGVjdXRhYmxlczo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK3tcCisgICAgaWYgKCFt
XyMjbmFtZSMjRXhlY3V0YWJsZSlcCisgICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gY3Jl
YXRlQnVpbHRpbkV4ZWN1dGFibGUobV8jI25hbWUjI1NvdXJjZSwgbV92bS5wcm9wZXJ0eU5hbWVz
LT5mdW5jdGlvbk5hbWUpO1wKKyAgICByZXR1cm4gbV8jI25hbWUjI0V4ZWN1dGFibGUuZ2V0KCk7
XAorfQorSlNDX0ZPUkVBQ0hfQlVJTFRJTihERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1
bmRlZiBFWFBPU0VfQlVJTFRJTl9TT1VSQ0VTCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOWExOWUy
NjE1MDc5NGE2NjllYzk4ZTM5OWJmNjdmN2Y3MTA2NDE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCkBAIC0wLDAg
KzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEJ1aWx0aW5FeGVjdXRhYmxlc19oCisjZGVmaW5lIEJ1aWx0aW5FeGVjdXRhYmxlc19o
CisKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgorI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKKyNp
bmNsdWRlICJXZWFrLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgSWRlbnRp
ZmllcjsKK2NsYXNzIFZNOworCitjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXMgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEJ1aWx0aW5FeGVjdXRhYmxlcz4gY3JlYXRlKFZNJiB2bSkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQnVpbHRpbkV4ZWN1dGFibGVzKHZt
KSk7CisgICAgfQorICAgIAorI2RlZmluZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1l
LCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5h
bWUjI0V4ZWN1dGFibGUoKTsgXAorY29uc3QgU291cmNlQ29kZSYgbmFtZSMjU291cmNlKCkgeyBy
ZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsgfQorICAgIAorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4o
RVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgRVhQT1NFX0JVSUxUSU5fU09VUkNF
UworICAgIAorcHJpdmF0ZToKKyAgICBCdWlsdGluRXhlY3V0YWJsZXMoVk0mKTsKKyAgICBWTSYg
bV92bTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1
dGFibGUoY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImKTsKKyNkZWZpbmUgREVD
TEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKVwK
KyAgICBTb3VyY2VDb2RlIG1fIyNuYW1lIyNTb3VyY2U7IFwKKyAgICBXZWFrPFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlPiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKKyAgICBKU0NfRk9SRUFDSF9C
VUlMVElOKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JV
SUxUSU5fU09VUkNFX01FTUJFUlMKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDI2M2VjN2NhZGY0Zjc5Y2E4MTAy
NDQxZTYyYmYyYTA1YjVkZGMzZjIuLjc1MTUwNjU0MjM3NmQ3ZWRjNTk5YWEwMGY5YjEyNjg1Y2Rh
MzUyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CkBAIC00MywxMSArNDMsMTMgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRTdHVi
cy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgotI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIK
KyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludC5oIgog
I2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJOYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJP
cGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5oIgogI2luY2x1
ZGUgIlJlZHVjZVdoaXRlc3BhY2UuaCIKQEAgLTE1NjksNyArMTU3MSw3IEBAIENvZGVCbG9jazo6
Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2Rl
QmxvY2sqIHVubGluCiAKICAgICBzZXRDb25zdGFudFJlZ2lzdGVycyh1bmxpbmtlZENvZGVCbG9j
ay0+Y29uc3RhbnRSZWdpc3RlcnMoKSk7CiAgICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT51c2Vz
R2xvYmFsT2JqZWN0KCkpCi0gICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnNbdW5saW5rZWRDb2Rl
QmxvY2stPmdsb2JhbE9iamVjdFJlZ2lzdGVyKCkub2Zmc2V0KCldLnNldCgqbV92bSwgb3duZXJF
eGVjdXRhYmxlLCBtX2dsb2JhbE9iamVjdC5nZXQoKSk7CisgICAgICAgIG1fY29uc3RhbnRSZWdp
c3RlcnNbdW5saW5rZWRDb2RlQmxvY2stPmdsb2JhbE9iamVjdFJlZ2lzdGVyKCkudG9Db25zdGFu
dEluZGV4KCldLnNldCgqbV92bSwgb3duZXJFeGVjdXRhYmxlLCBtX2dsb2JhbE9iamVjdC5nZXQo
KSk7CiAgICAgbV9mdW5jdGlvbkRlY2xzLnJlc2l6ZVRvRml0KHVubGlua2VkQ29kZUJsb2NrLT5u
dW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSk7CiAgICAgZm9yIChzaXplX3QgY291bnQgPSB1bmxpbmtl
ZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCksIGkgPSAwOyBpIDwgY291bnQ7ICsr
aSkgewogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRh
YmxlID0gdW5saW5rZWRDb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA2OGJjMDM3OWY1NzQ0YzlhOGY3NDMx
ZGI2NGY4YWI1NGU2ZTEwNTNmLi40OTk1YzUyY2Y4YjJiMWI0ZDYyODA0NTNlZWQyN2M3NzRhNDk1
NThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC01
Niw3ICs1Niw2IEBACiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIKICNpbmNsdWRlICJPYmplY3RB
bGxvY2F0aW9uUHJvZmlsZS5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKLSNpbmNsdWRlICJPcGVy
YXRpb25zLmgiCiAjaW5jbHVkZSAiUHV0UHJvcGVydHlTbG90LmgiCiAjaW5jbHVkZSAiSW5zdHJ1
Y3Rpb24uaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0
dGlzb25pbmdXYXRjaHBvaW50LmNwcAppbmRleCA5ODZlMDNkMGNiYTcxODViMzljZWUwMjNmNGFi
NmJjOWI4Y2NiNmU0Li43MGVmOWI0MjkwMWMwNThiYzcyYzlkYjkyZGNjMzNkNTNkNmJhYWM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxv
Y2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdDb21tb24u
aCIKICNpbmNsdWRlICJERkdFeGl0UHJvZmlsZS5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMu
aCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDFkZmI1YWM2YWQ5MDkzZjhmODEx
MDFlZjdmMmU2MTIzMTFhYzE5MzkuLjQzMzkwZDk2NWZjNTAzNDAxNmY3YmZmZjIzZTY4YmIxZTA1
NDU1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmNwcApAQCAtNDksOSArNDksOSBAQCBjb25zdCBDbGFzc0luZm8gVW5saW5r
ZWRQcm9ncmFtQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2si
LAogY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkRXZhbENvZGVCbG9jazo6c19pbmZvID0geyAiVW5s
aW5rZWRFdmFsQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShVbmxpbmtlZEV2YWxDb2RlQmxvY2spIH07CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayIs
ICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jaykgfTsKIAotc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVy
YXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxl
ck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikKK3N0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKiBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKFZNJiB2bSwgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1v
ZGUgcHJvZmlsZXJNb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBmdW5jdGlvbktpbmQsIFBhcnNl
ckVycm9yJiBlcnJvcikKIHsKLSAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSA9IHBh
cnNlPEZ1bmN0aW9uQm9keU5vZGU+KCZ2bSwgc291cmNlLCBleGVjdXRhYmxlLT5wYXJhbWV0ZXJz
KCksIGV4ZWN1dGFibGUtPm5hbWUoKSwgZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/
IEpTUGFyc2VTdHJpY3QgOiBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlRnVuY3Rpb25Db2RlLCBlcnJv
cik7CisgICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGJvZHkgPSBwYXJzZTxGdW5jdGlvbkJv
ZHlOb2RlPigmdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+cGFyYW1ldGVycygpLCBleGVjdXRhYmxl
LT5uYW1lKCksIGV4ZWN1dGFibGUtPnRvU3RyaWN0bmVzcygpLCBKU1BhcnNlRnVuY3Rpb25Db2Rl
LCBlcnJvcik7CiAKICAgICBpZiAoIWJvZHkpIHsKICAgICAgICAgQVNTRVJUKGVycm9yLm1fdHlw
ZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZt
LCBVbmxpbmtlZEZ1bmMKICAgICBib2R5LT5maW5pc2hQYXJzaW5nKGV4ZWN1dGFibGUtPnBhcmFt
ZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT5mdW5jdGlvbk5hbWVJc0lu
U2NvcGVUb2dnbGUoKSk7CiAgICAgZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2UoYm9keS0+ZmVhdHVy
ZXMoKSwgYm9keS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCi0gICAgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3Jl
YXRlKCZ2bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5mbyhib2R5LT5uZWVkc0FjdGl2YXRp
b24oKSwgYm9keS0+dXNlc0V2YWwoKSwgYm9keS0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29k
ZUZvckNvbnN0cnVjdCkpOworICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmdm0sIEZ1bmN0aW9uQ29kZSwgRXhl
Y3V0YWJsZUluZm8oYm9keS0+bmVlZHNBY3RpdmF0aW9uKCksIGJvZHktPnVzZXNFdmFsKCksIGJv
ZHktPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2lu
ZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbikpOwogICAgIE93blB0cjxCeXRlY29kZUdlbmVy
YXRvcj4gZ2VuZXJhdG9yKGFkb3B0UHRyKG5ldyBCeXRlY29kZUdlbmVyYXRvcih2bSwgYm9keS5n
ZXQoKSwgcmVzdWx0LCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSkpKTsKICAgICBlcnJvciA9
IGdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKICAgICBib2R5LT5kZXN0cm95RGF0YSgpOwpAQCAtODIs
MTMgKzgyLDE0IEBAIHVuc2lnbmVkIFVubGlua2VkQ29kZUJsb2NrOjphZGRPckZpbmRDb25zdGFu
dChKU1ZhbHVlIHYpCiAgICAgcmV0dXJuIGFkZENvbnN0YW50KHYpOwogfQogCi1VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlO
b2RlKiBub2RlLCBib29sIGlzRnJvbUdsb2JhbENvZGUpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlLCBi
b29sIGlzRnJvbUdsb2JhbENvZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQpCiAgICAgOiBC
YXNlKCp2bSwgc3RydWN0dXJlKQogICAgICwgbV9udW1DYXB0dXJlZFZhcmlhYmxlcyhub2RlLT5j
YXB0dXJlZFZhcmlhYmxlQ291bnQoKSkKICAgICAsIG1fZm9yY2VVc2VzQXJndW1lbnRzKG5vZGUt
PnVzZXNBcmd1bWVudHMoKSkKICAgICAsIG1faXNJblN0cmljdENvbnRleHQobm9kZS0+aXNTdHJp
Y3RNb2RlKCkpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKG5vZGUtPmhhc0NhcHR1cmVk
VmFyaWFibGVzKCkpCiAgICAgLCBtX2lzRnJvbUdsb2JhbENvZGUoaXNGcm9tR2xvYmFsQ29kZSkK
KyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oa2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlv
bikKICAgICAsIG1fbmFtZShub2RlLT5pZGVudCgpKQogICAgICwgbV9pbmZlcnJlZE5hbWUobm9k
ZS0+aW5mZXJyZWROYW1lKCkpCiAgICAgLCBtX3BhcmFtZXRlcnMobm9kZS0+cGFyYW1ldGVycygp
KQpAQCAtMTY2LDcgKzE2Nyw3IEBAIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tGb3IoVk0mIHZtLCBjb25zCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIAotICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IGdl
bmVyYXRlRnVuY3Rpb25Db2RlQmxvY2sodm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lhbGl6YXRpb25L
aW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IpOworICAgIFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2sodm0sIHRo
aXMsIHNvdXJjZSwgc3BlY2lhbGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9k
ZSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5r
ZWROb3JtYWxGdW5jdGlvbiwgZXJyb3IpOwogICAgIAogICAgIGlmIChlcnJvci5tX3R5cGUgIT0g
UGFyc2VyRXJyb3I6OkVycm9yTm9uZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMTAsNiArMjEx
LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1faXNTdHJpY3RNb2RlKGluZm8u
bV9pc1N0cmljdE1vZGUpCiAgICAgLCBtX2lzQ29uc3RydWN0b3IoaW5mby5tX2lzQ29uc3RydWN0
b3IpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGZhbHNlKQorICAgICwgbV9pc0J1aWx0
aW5GdW5jdGlvbihpbmZvLm1faXNCdWlsdGluRnVuY3Rpb24pCiAgICAgLCBtX2ZpcnN0TGluZSgw
KQogICAgICwgbV9saW5lQ291bnQoMCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApp
bmRleCBiOWRhZTJkNWM2OWM3OWNlYWFhODAyM2QyYTNhMWYyNmQ0NjA5NDNiLi5hYmY2Y2YzNWI5
MzA2YTRmN2EzMDFhYjBkZjc2NjZlYzYxMmUzNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtNjYsMjYgKzY2LDM1IEBA
IHR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTsKIHR5cGVk
ZWYgdW5zaWduZWQgVW5saW5rZWRMTEludENhbGxMaW5rSW5mbzsKIAogc3RydWN0IEV4ZWN1dGFi
bGVJbmZvIHsKLSAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1
c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvcikKKyAgICBFeGVj
dXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0
cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbikKICAg
ICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2YXRpb24pCiAgICAgICAgICwgbV91
c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0cmljdE1vZGUp
CiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3RydWN0b3IpCisgICAgICAgICwgbV9p
c0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikKICAgICB7CiAgICAgfQotICAgIGJv
b2wgbV9uZWVkc0FjdGl2YXRpb247Ci0gICAgYm9vbCBtX3VzZXNFdmFsOwotICAgIGJvb2wgbV9p
c1N0cmljdE1vZGU7Ci0gICAgYm9vbCBtX2lzQ29uc3RydWN0b3I7CisgICAgYm9vbCBtX25lZWRz
QWN0aXZhdGlvbiA6IDE7CisgICAgYm9vbCBtX3VzZXNFdmFsIDogMTsKKyAgICBib29sIG1faXNT
dHJpY3RNb2RlIDogMTsKKyAgICBib29sIG1faXNDb25zdHJ1Y3RvciA6IDE7CisgICAgYm9vbCBt
X2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKK307CisKK2VudW0gVW5saW5rZWRGdW5jdGlvbktpbmQg
eworICAgIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sCisgICAgVW5saW5rZWRCdWlsdGluRnVuY3Rp
b24sCiB9OwogCiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBKU0Nl
bGwgewogcHVibGljOgorICAgIGZyaWVuZCBjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXM7CiAgICAg
ZnJpZW5kIGNsYXNzIENvZGVDYWNoZTsKKyAgICBmcmllbmQgY2xhc3MgVk07CiAgICAgdHlwZWRl
ZiBKU0NlbGwgQmFzZTsKLSAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNy
ZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSog
bm9kZSwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlID0gZmFsc2UpCisgICAgc3RhdGljIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSwgVW5saW5r
ZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQpCiAgICAgewotICAgICAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhlYXApKSBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJl
LmdldCgpLCBzb3VyY2UsIG5vZGUsIGlzRnJvbUdsb2JhbENvZGUpOworICAgICAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhlYXApKSBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdl
dCgpLCBzb3VyY2UsIG5vZGUsIGlzRnJvbUdsb2JhbENvZGUsIHVubGlua2VkRnVuY3Rpb25LaW5k
KTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2bSk7CiAgICAgICAgIHJldHVy
biBpbnN0YW5jZTsKICAgICB9CkBAIC05OSw2ICsxMDgsMTQgQEAgcHVibGljOgogICAgIH0KICAg
ICBzaXplX3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdDsKICAgICBib29sIGlzSW5TdHJpY3RDb250
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQorICAgIEpTUGFyc2Vy
U3RyaWN0bmVzcyB0b1N0cmljdG5lc3MoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1faXNC
dWlsdGluRnVuY3Rpb24pCisgICAgICAgICAgICByZXR1cm4gSlNQYXJzZUJ1aWx0aW47CisgICAg
ICAgIGlmIChtX2lzSW5TdHJpY3RDb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuIEpTUGFyc2VT
dHJpY3Q7CisgICAgICAgIHJldHVybiBKU1BhcnNlTm9ybWFsOworICAgIH0KICAgICBGdW5jdGlv
bk5hbWVJc0luU2NvcGVUb2dnbGUgZnVuY3Rpb25OYW1lSXNJblNjb3BlVG9nZ2xlKCkgY29uc3Qg
eyByZXR1cm4gbV9mdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGU7IH0KIAogICAgIHVuc2lnbmVk
IGZpcnN0TGluZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RMaW5lT2Zmc2V0OyB9CkBA
IC0xNDIsOCArMTU5LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJbW1v
cnRhbFN0cnVjdHVyZSA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsK
IAorICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRp
bkZ1bmN0aW9uOyB9CisKIHByaXZhdGU6Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUo
Vk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGJv
b2wgaXNGcm9tR2xvYmFsQ29kZSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0q
LCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGJvb2wg
aXNGcm9tR2xvYmFsQ29kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQpOwogICAgIFdyaXRlQmFycmll
cjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX2NvZGVCbG9ja0ZvckNhbGw7CiAgICAgV3Jp
dGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fY29kZUJsb2NrRm9yQ29uc3Ry
dWN0OwogCkBAIC0xNTIsNiArMTcxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNJblN0cmlj
dENvbnRleHQgOiAxOwogICAgIGJvb2wgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAg
Ym9vbCBtX2lzRnJvbUdsb2JhbENvZGUgOiAxOworICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlv
biA6IDE7CiAKICAgICBJZGVudGlmaWVyIG1fbmFtZTsKICAgICBJZGVudGlmaWVyIG1faW5mZXJy
ZWROYW1lOwpAQCAtMzE5LDYgKzMzOSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzTnVtZXJp
Y0NvbXBhcmVGdW5jdGlvbihib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbikgeyBtX2lzTnVt
ZXJpY0NvbXBhcmVGdW5jdGlvbiA9IGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQogICAgIGJv
b2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc051bWVyaWND
b21wYXJlRnVuY3Rpb247IH0KIAorICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisgICAgCiAgICAgdm9pZCBzaHJpbmtUb0Zp
dCgpCiAgICAgewogICAgICAgICBtX2p1bXBUYXJnZXRzLnNocmlua1RvRml0KCk7CkBAIC01MDAs
NiArNTIyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNTdHJpY3RNb2RlIDogMTsKICAgICBi
b29sIG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAgYm9vbCBtX2hhc0NhcHR1cmVkVmFyaWFibGVz
IDogMTsKKyAgICBib29sIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1f
Zmlyc3RMaW5lOwogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50OwogICAgIHVuc2lnbmVkIG1fZW5k
Q29sdW1uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2ODEwYWI4MDAyY2U2YmI4ZDc4ZTdmZjIyMjdm
NGM2ZWE3Yjc1OGMyLi5lYzUyMWI1MzA0NjM5MjNlNzRjMDEwZmEyMThlNTllZDJhOWEzY2FlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcApAQCAtMTc1LDYgKzE3NSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5r
ZWRQCiAjZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAgICAgLCBtX2V4cHJl
c3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihmYWxzZSkKIHsK
ICAgICBpZiAobV9zaG91bGRFbWl0RGVidWdIb29rcykKICAgICAgICAgbV9jb2RlQmxvY2stPnNl
dE5lZWRzRnVsbFNjb3BlQ2hhaW4odHJ1ZSk7CkBAIC0yMjIsNyArMjIzLDEzIEBAIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uQm9keU5vZGUqIGZ1
bmN0aW9uQm9keSwgVW5sCiAjZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAg
ICAgLCBtX2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlv
bihjb2RlQmxvY2stPmlzQnVpbHRpbkZ1bmN0aW9uKCkpCiB7CisgICAgaWYgKG1faXNCdWlsdGlu
RnVuY3Rpb24pIHsKKyAgICAgICAgbV9zaG91bGRFbWl0UHJvZmlsZUhvb2tzID0gZmFsc2U7Cisg
ICAgICAgIG1fc2hvdWxkRW1pdERlYnVnSG9va3MgPSBmYWxzZTsKKyAgICB9CisKICAgICBpZiAo
bV9zaG91bGRFbWl0RGVidWdIb29rcykKICAgICAgICAgbV9jb2RlQmxvY2stPnNldE5lZWRzRnVs
bFNjb3BlQ2hhaW4odHJ1ZSk7CiAKQEAgLTQzOCw2ICs0NDUsNyBAQCBCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2Vk
RXZhbENvZAogI2VuZGlmCiAgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQogICAgICwgbV9l
eHByZXNzaW9uVG9vRGVlcChmYWxzZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oZmFsc2Up
CiB7CiAgICAgbV9jb2RlQmxvY2stPnNldE5lZWRzRnVsbFNjb3BlQ2hhaW4odHJ1ZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAppbmRleCA0ZTlmMjEzYzliZmE2Y2YxOTRiMWExNGZlOTE5ZTgzMzM3YWUzNWQ5Li4x
NTg0Mjc0Yjc4ZWE2YzBiZDBlZmIwYjk4MjVjODE4YmUwZGJjMDY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBA
IC00NjEsNyArNDYxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgc2hvdWxkRW1p
dERlYnVnSG9va3MoKSB7IHJldHVybiBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzOyB9CiAgICAgICAg
IAogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2Nr
LT5pc1N0cmljdE1vZGUoKTsgfQotCisgICAgICAgIAorICAgICAgICBib29sIGlzQnVpbHRpbkZ1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQorICAgICAgICAK
ICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTGFiZWw7CiAgICAgICAgIApAQCAt
NTQzLDcgKzU0NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG1ha2VGdW5jdGlvbihGdW5jdGlvbkJvZHlOb2RlKiBib2R5
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIGJvZHkpOworICAgICAgICAg
ICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29w
ZU5vZGUtPnNvdXJjZSgpLCBib2R5LCBmYWxzZSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlu
a2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbik7CiAgICAgICAgIH0K
IAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SW5pdExhenlSZWdpc3RlcihSZWdpc3RlcklEKik7
CkBAIC02NzcsNiArNjc5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBtX3Vz
ZXNFeGNlcHRpb25zOwogICAgICAgICBib29sIG1fZXhwcmVzc2lvblRvb0RlZXA7CisgICAgICAg
IGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlvbjsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMWZmZDRm
MzExODgyZDBlZTVjNTUxNGY1YjhiMjU5MzlkOTc1ZTM3OS4uNjJlY2EzNmExMGQ3NzA4YTkyOGQ0
M2FjMDNmMmZjODYxNWNlY2E3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjYsMTAgKzI2LDEwIEBACiAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgotI2luY2x1ZGUgIk5vZGVDb25zdHJ1
Y3RvcnMuaCIKIAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ2Fs
bEZyYW1lLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJEZWJ1
Z2dlci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTM4
LDYgKzM4LDcgQEAKICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiTGFiZWxTY29w
ZS5oIgogI2luY2x1ZGUgIkxleGVyLmgiCisjaW5jbHVkZSAiTm9kZUNvbnN0cnVjdG9ycy5oIgog
I2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRlICJQ
cm9wZXJ0eU5hbWVBcnJheS5oIgpAQCAtNTM1LDM2ICs1MzYsMzkgQEAgUmVnaXN0ZXJJRCogQ2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLAogICAgIFJlZlB0cjxMYWJlbD4gZW5kID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9iYXNlKTsK
ICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBz
dWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBE
ZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBtX2lkZW50KTsKKyAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0
aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmNhbGwp
OwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERl
c3RpbmF0aW9uKGRzdCwgZnVuY3Rpb24uZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SnVtcElm
Tm90RnVuY3Rpb25DYWxsKGZ1bmN0aW9uLmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7CisgICAgYm9v
bCBlbWl0Q2FsbENoZWNrID0gIWdlbmVyYXRvci5pc0J1aWx0aW5GdW5jdGlvbigpOworICAgIGlm
IChlbWl0Q2FsbENoZWNrKQorICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9u
Q2FsbChmdW5jdGlvbi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkpOworCiAgICAgewogICAgICAgICBp
ZiAobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKSB7CiAg
ICAgICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2Rl
OwogICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5t
X25leHQ7Ci0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJl
YWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9u
KGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1l
bnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShj
YWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwogICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0
KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0
KCkpOwotCiAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBvbGRMaXN0OwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9
IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2Uu
Z2V0KCkpOwogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRv
ciwgbV9hcmdzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRz
LnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVk
RnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKICAgICAgICAg
fQogICAgIH0KLSAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKLSAgICB7
Ci0gICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7
Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBiYXNlLmdldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdl
dCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBk
aXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIGlmIChlbWl0Q2FsbENoZWNr
KSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKKyAgICAgICAgeworICAgICAgICAgICAg
Q2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNl
LmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQo
KSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgfQorICAgICAgICBnZW5l
cmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFi
ZWwoZW5kLmdldCgpKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWUuZ2V0KCk7CiB9CiAKQEAgLTU4
NSw2NSArNTg5LDY3IEBAIFJlZ2lzdGVySUQqIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgUmVmUHRyPExhYmVs
PiBlbmQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFz
ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVz
c2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Npb25TdGFydCgpLCBzdWJl
eHByZXNzaW9uRW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbiA9IGdlbmVy
YXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0
KCksIG1faWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbjsKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihk
c3QsIGZ1bmN0aW9uLmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9u
QXBwbHkoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKLSAgICB7Ci0gICAgICAgIGlm
IChtYXlCZUNhbGwpIHsKLSAgICAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9h
cmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpIHsKLSAgICAgICAgICAgICAgICBBcmd1bWVudExpc3RO
b2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2RlOwotICAgICAgICAgICAgICAgIGlmICht
X2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCkgewotICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
bV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwci0+aXNTaW1wbGVBcnJheSgpKTsKLSAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9u
ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gc3RhdGljX2Nh
c3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwciktPnRvQXJn
dW1lbnRMaXN0KGdlbmVyYXRvci52bSgpLCAwLCAwKTsKLSAgICAgICAgICAgICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0
b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAgICAgICAgICAg
ICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0
ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRG
dW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBtX2FyZ3Mt
Pm1fbGlzdE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKLSAgICAgICAgICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92
ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAg
ICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3Mp
OwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50
aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5v
RXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbV9hcmdzLT5t
X2xpc3ROb2RlID0gb2xkTGlzdDsKKyAgICBib29sIGVtaXRDYWxsQ2hlY2sgPSAhZ2VuZXJhdG9y
LmlzQnVpbHRpbkZ1bmN0aW9uKCk7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKKyAgICAgICAg
ZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlv
bihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmFwcGx5KTsKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KGZ1bmN0aW9uLmdldCgp
LCByZWFsQ2FsbC5nZXQoKSk7CisgICAgfQorICAgIGlmIChtYXlCZUNhbGwpIHsKKyAgICAgICAg
aWYgKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcikgewor
ICAgICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogb2xkTGlzdCA9IG1fYXJncy0+bV9saXN0Tm9k
ZTsKKyAgICAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCkgeworICAgICAg
ICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByLT5pc1Np
bXBsZUFycmF5KCkpOworICAgICAgICAgICAgICAgIEFTU0VSVCghbV9hcmdzLT5tX2xpc3ROb2Rl
LT5tX25leHQtPm1fbmV4dCk7CisgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0g
c3RhdGljX2Nhc3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhw
ciktPnRvQXJndW1lbnRMaXN0KGdlbmVyYXRvci52bSgpLCAwLCAwKTsKKyAgICAgICAgICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdl
bmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CisgICAgICAgICAgICAg
ICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIo
KSwgb2xkTGlzdC0+bV9leHByKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwo
cmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9u
LCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBt
X2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVz
dGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50
cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAgICAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQo
KSk7CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhp
c1JlZ2lzdGVyKCksIG9sZExpc3QtPm1fZXhwcik7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0
ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9s
ZExpc3Q7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9hcmdzLT5tX2xp
c3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KTsKLSAgICAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBwcm9maWxlSG9va1JlZ2lzdGVyOwotICAgICAgICAgICAgaWYgKGdlbmVy
YXRvci5zaG91bGRFbWl0UHJvZmlsZUhvb2tzKCkpCi0gICAgICAgICAgICAgICAgcHJvZmlsZUhv
b2tSZWdpc3RlciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9y
LnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKLSAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiB0aGlzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9hcmdzLT5tX2xp
c3ROb2RlLT5tX2V4cHIpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFyZ3NSZWdp
c3RlcjsKLSAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MgPSBtX2FyZ3MtPm1fbGlz
dE5vZGUtPm1fbmV4dDsKLSAgICAgICAgICAgIGlmIChhcmdzLT5tX2V4cHItPmlzUmVzb2x2ZU5v
ZGUoKSAmJiBnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50cyhzdGF0aWNfY2FzdDxSZXNv
bHZlTm9kZSo+KGFyZ3MtPm1fZXhwciktPmlkZW50aWZpZXIoKSkpCi0gICAgICAgICAgICAgICAg
YXJnc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLnVuY2hlY2tlZFJlZ2lzdGVyRm9yQXJndW1lbnRzKCk7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJh
dG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7Ci0KLSAgICAgICAgICAgIC8vIEZ1bmN0aW9uLnBy
b3RvdHlwZS5hcHBseSBpZ25vcmVzIGV4dHJhIGFyZ3VtZW50cywgYnV0IHdlIHN0aWxsCi0gICAg
ICAgICAgICAvLyBuZWVkIHRvIGV2YWx1YXRlIHRoZW0gZm9yIHNpZGUgZWZmZWN0cy4KLSAgICAg
ICAgICAgIHdoaWxlICgoYXJncyA9IGFyZ3MtPm1fbmV4dCkpCi0gICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7Ci0KLSAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0Q2FsbFZhcmFyZ3MocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgdGhp
c1JlZ2lzdGVyLmdldCgpLCBhcmdzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKSwgcHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5l
cmF0b3IsIG1fYXJncyk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3Vt
ZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwogICAgICAgICB9Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9h
cmdzLT5tX2xpc3ROb2RlLT5tX25leHQpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJv
ZmlsZUhvb2tSZWdpc3RlcjsKKyAgICAgICAgaWYgKGdlbmVyYXRvci5zaG91bGRFbWl0UHJvZmls
ZUhvb2tzKCkpCisgICAgICAgICAgICBwcm9maWxlSG9va1JlZ2lzdGVyID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0g
Z2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5n
ZXQoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzUmVnaXN0ZXIgPSBnZW5lcmF0
b3IuZW1pdE5vZGUobV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpOworICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gYXJnc1JlZ2lzdGVyOworICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBhcmdz
ID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQ7CisgICAgICAgIGlmIChhcmdzLT5tX2V4cHIt
PmlzUmVzb2x2ZU5vZGUoKSAmJiBnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50cyhzdGF0
aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGFyZ3MtPm1fZXhwciktPmlkZW50aWZpZXIoKSkpCisgICAg
ICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IudW5jaGVja2VkUmVnaXN0ZXJGb3JBcmd1
bWVudHMoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJh
dG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7CisKKyAgICAgICAgLy8gRnVuY3Rpb24ucHJvdG90
eXBlLmFwcGx5IGlnbm9yZXMgZXh0cmEgYXJndW1lbnRzLCBidXQgd2Ugc3RpbGwKKyAgICAgICAg
Ly8gbmVlZCB0byBldmFsdWF0ZSB0aGVtIGZvciBzaWRlIGVmZmVjdHMuCisgICAgICAgIHdoaWxl
ICgoYXJncyA9IGFyZ3MtPm1fbmV4dCkpCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUo
YXJncy0+bV9leHByKTsKKworICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxWYXJhcmdzKHJldHVy
blZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJn
c1JlZ2lzdGVyLmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb2ZpbGVIb29rUmVn
aXN0ZXIuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgfQot
ICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOwotICAgIHsKKyAgICBpZiAo
ZW1pdENhbGxDaGVjaykgeworICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChyZWFsQ2FsbC5nZXQoKSk7CiAgICAgICAgIENh
bGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgIGdl
bmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgp
KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlv
bi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5n
ZXQoKSk7CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICBy
ZXR1cm4gcmV0dXJuVmFsdWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVf
aGFzaF90YWJsZQppbmRleCAzOTc5NzZiMDZjN2E5YjU4MzYzMzI5MDBhNmViYjkzZWM2OGI3NDg2
Li5jYWQ2NWJjNGNjODg4ZTMxNGY4OGQ2NjVkZDRhNmU2NDVhMDlhMzU1IDEwMDc1NQotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlCkBAIC0yODksNyArMjg5LDE3IEBAIHN1YiBvdXRw
dXQoKSB7CiAgICAgICAgICAgICAkaW50cmluc2ljID0gIlJlZ0V4cFRlc3RJbnRyaW5zaWMiIGlm
ICgka2V5IGVxICJ0ZXN0Iik7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoJHZhbHVlc1skaV17
InR5cGUifSBlcSAiRnVuY3Rpb24iKSAgeworICAgICAgICAgICAgbXkgJHRhYmxlSGVhZCA9ICRu
YW1lOworICAgICAgICAgICAgJHRhYmxlSGVhZCA9fiBzL1RhYmxlJC8vOworICAgICAgICAgICAg
cHJpbnQgIiAjaWYgSlNDX0JVSUxUSU5fRVhJU1RTKCIgLiB1YygkdGFibGVIZWFkIC4gJGtleSkg
LiIpXG4iOworICAgICAgICAgICAgcHJpbnQgIiAgIHsgXCIka2V5XCIsICgoJGF0dHJzWyRpXSkg
JiB+RnVuY3Rpb24pIHwgQnVpbHRpbiwgJGludHJpbnNpYywgKGludHB0cl90KXN0YXRpY19jYXN0
PEJ1aWx0aW5HZW5lcmF0b3I+KCIgLiAkdGFibGVIZWFkIC4gdWNmaXJzdCgka2V5KSAuICJDb2Rl
R2VuZXJhdG9yKSwgKGludHB0cl90KSRzZWNvbmRWYWx1ZSB9LFxuIjsKKyAgICAgICAgICAgIHBy
aW50ICIgI2Vsc2VcbiIKKyAgICAgICAgfQogICAgICAgICBwcmludCAiICAgeyBcIiRrZXlcIiwg
JGF0dHJzWyRpXSwgJGludHJpbnNpYywgKGludHB0cl90KSIgLiAkZmlyc3RDYXN0U3RyIC4gIigk
Zmlyc3RWYWx1ZSksIChpbnRwdHJfdCkiIC4gJHNlY29uZENhc3RTdHIgLiAiKCRzZWNvbmRWYWx1
ZSkgfSxcbiI7CisgICAgICAgIGlmICgkdmFsdWVzWyRpXXsidHlwZSJ9IGVxICJGdW5jdGlvbiIp
ICB7CisgICAgICAgICAgICBwcmludCAiICNlbmRpZlxuIgorICAgICAgICB9CiAgICAgICAgICRp
Kys7CiAgICAgfQogICAgIHByaW50ICIgICB7IDAsIDAsIE5vSW50cmluc2ljLCAwLCAwIH1cbiI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWluYXRvcnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb21pbmF0b3JzLmNwcAppbmRleCBhNWFl
NjE0YjkxOWIwZmQ0MzQ4MmQwMTVjYzI5NTA4NDBlNTRiMjYxLi4yMDA5NmU3M2IzNTE1OWM3NDM0
YmQyN2FiNmY2MzMzN2ZlOWRmNGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RvbWluYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9taW5hdG9ycy5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkRGR0RvbWluYXRvcnMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5o
IgogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvZGUuY3BwCmluZGV4IDkzYzQxZmJkZTQ0NzY0YjZhNmZlZTBiMjRiNDg0OWFlZGIxMTc0YzUu
LmQ4NmFjOGI0MTM3MzFjYjhkYmRmNGFkMzNlZmE1ZDc4NTIwNTFhMDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJM
RShERkdfSklUKQogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAyZmYwYzM0MTQ2ZTJj
MGJhMmZmNzZjNGQzZjdjNDZiYTNlMjU1MTQ3Li45MDQ0Y2RjNmI4YzNhZDRhMWU5NDE4OGRkMWQw
ZTIwMGU2OWZiOTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNs
dWRlICJWTS5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiTmFtZUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29u
c3RydWN0b3IuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWVlMWM3YTdjY2RkOTM3NjkyMGU3
NmQ3ZmU4ZDMwYWY5NTVmMzFhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucwpAQCAtMCwwICsxLDMwNCBAQAorIyEvdXNyL2Jpbi9w
eXRob24KKyMgQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorIyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyMg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorIyBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBmaWxlY21wCitpbXBvcnQgZm5tYXRjaAoraW1w
b3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzeXMKK2ltcG9ydCBkYXRl
dGltZQoraW1wb3J0IGpzb24KKworY29weXJpZ2h0VGV4dCA9ICIiIiAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovXG4KKyIiIgorCitnZW5lcmF0b3JTdHJpbmcgPSAiLyog
R2VuZXJhdGVkIGJ5ICVzIGRvIG5vdCBoYW5kIGVkaXQuICovXG4iICUgb3MucGF0aC5iYXNlbmFt
ZShfX2ZpbGVfXykKKworZnVuY3Rpb25IZWFkUmVnRXhwID0gcmUuY29tcGlsZShyImZ1bmN0aW9u
XHMrXHcrXHMqXCguKj9cKSIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitmdW5jdGlvbk5hbWVSZWdF
eHAgPSByZS5jb21waWxlKHIiZnVuY3Rpb25ccysoXHcrKVxzKlwoIiwgcmUuTVVMVElMSU5FIHwg
cmUuUykKK2Z1bmN0aW9uUGFyYW1ldGVyRmluZGVyID0gcmUuY29tcGlsZShyIl5mdW5jdGlvblxz
Kyg/Olx3KylccypcKCgoPzpccypcdyspP1xzKig/OlxzKixccypcdyspKik/XCkiLCByZS5NVUxU
SUxJTkUgfCByZS5TKQorCittdWx0aWxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwv
XCouKj9cKlwvIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK3NpbmdsZUxpbmVDb21tZW50UmVnRXhw
ID0gcmUuY29tcGlsZShyIlwvXC8uKj9cbiIsIHJlLk1VTFRJTElORSB8IHJlLlMpCisKK2RlZiBn
ZXRDb3B5cmlnaHQoc291cmNlKToKKyAgICBjb3B5cmlnaHRCbG9jayA9IG11bHRpbGluZUNvbW1l
bnRSZWdFeHAuZmluZGFsbChzb3VyY2UpWzBdCisgICAgY29weXJpZ2h0QmxvY2sgPSBjb3B5cmln
aHRCbG9ja1s6Y29weXJpZ2h0QmxvY2suaW5kZXgoIlJlZGlzdHJpYnV0aW9uIildCisgICAgY29w
eVJpZ2h0TGluZXMgPSBbXQorCisgICAgZm9yIGxpbmUgaW4gY29weXJpZ2h0QmxvY2suc3BsaXQo
IlxuIik6CisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIi8qIiwgIiIpCisgICAgICAgIGxp
bmUgPSBsaW5lLnJlcGxhY2UoIiovIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2Uo
IioiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiQ29weXJpZ2h0IiwgIiIpCisg
ICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoImNvcHlyaWdodCIsICIiKQorICAgICAgICBsaW5l
ID0gbGluZS5yZXBsYWNlKCIoQykiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgi
KGMpIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgaWYgbGVuKGxp
bmUpID09IDA6CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIGNvcHlSaWdodExpbmVz
LmFwcGVuZChsaW5lKQorICAgIAorICAgIHJldHVybiBsaXN0KHNldChjb3B5UmlnaHRMaW5lcykp
CisKKworCitkZWYgZ2V0RnVuY3Rpb25zKHNvdXJjZSk6CisKKyAgICBzb3VyY2UgPSBtdWx0aWxp
bmVDb21tZW50UmVnRXhwLnN1YigiLyoqLyIsIHNpbmdsZUxpbmVDb21tZW50UmVnRXhwLnN1Yigi
Ly9cbiIsIHNvdXJjZSkpCisKKyAgICBtYXRjaGVzID0gWyBmIGZvciBmIGluIGZ1bmN0aW9uSGVh
ZFJlZ0V4cC5maW5kaXRlcihzb3VyY2UpXQorICAgIGZ1bmN0aW9uQm91bmRzID0gW10KKyAgICBz
dGFydCA9IDAKKyAgICBlbmQgPSAwCisgICAgZm9yIG1hdGNoIGluIG1hdGNoZXM6CisgICAgICAg
IHN0YXJ0ID0gbWF0Y2guc3RhcnQoKQorICAgICAgICBpZiBzdGFydCA8IGVuZDoKKyAgICAgICAg
ICAgIGNvbnRpbnVlCisgICAgICAgIGVuZCA9IG1hdGNoLmVuZCgpCisgICAgICAgIHdoaWxlIHNv
dXJjZVtlbmRdICE9ICd7JzoKKyAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgZGVw
dGggPSAxCisgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgd2hpbGUgZGVwdGggPiAwOgor
ICAgICAgICAgICAgaWYgc291cmNlW2VuZF0gPT0gJ3snOgorICAgICAgICAgICAgICAgIGRlcHRo
ID0gZGVwdGggKyAxCisgICAgICAgICAgICBlbGlmIHNvdXJjZVtlbmRdID09ICd9JzoKKyAgICAg
ICAgICAgICAgICBkZXB0aCA9IGRlcHRoIC0gMQorICAgICAgICAgICAgZW5kID0gZW5kICsgMQor
ICAgICAgICBmdW5jdGlvbkJvdW5kcy5hcHBlbmQoKHN0YXJ0LCBlbmQpKQorCisgICAgZnVuY3Rp
b25zID0gW3NvdXJjZVtzdGFydDplbmRdLnN0cmlwKCkgZm9yIChzdGFydCwgZW5kKSBpbiBmdW5j
dGlvbkJvdW5kc10KKyAgICByZXN1bHQgPSBbXQorICAgIGZvciBmdW5jdGlvbiBpbiBmdW5jdGlv
bnM6CisgICAgICAgIGZ1bmN0aW9uID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5zdWIoIiIsIGZ1
bmN0aW9uKQorICAgICAgICBmdW5jdGlvbk5hbWUgPSBmdW5jdGlvbk5hbWVSZWdFeHAuZmluZGFs
bChmdW5jdGlvbilbMF0KKyAgICAgICAgZnVuY3Rpb25QYXJhbWV0ZXJzID0gZnVuY3Rpb25QYXJh
bWV0ZXJGaW5kZXIuZmluZGFsbChmdW5jdGlvbilbMF0uc3BsaXQoJywnKQorICAgICAgICBpZiBs
ZW4oZnVuY3Rpb25QYXJhbWV0ZXJzWzBdKSA9PSAwOgorICAgICAgICAgICAgZnVuY3Rpb25QYXJh
bWV0ZXJzID0gW10KKyAgICAgICAgICAgIAorICAgICAgICByZXN1bHQuYXBwZW5kKChmdW5jdGlv
bk5hbWUsIGZ1bmN0aW9uLCBmdW5jdGlvblBhcmFtZXRlcnMpKQorICAgIHJldHVybiByZXN1bHQK
KyAgICAgICAgCisKK2RlZiBnZW5lcmF0ZUNvZGUoc291cmNlKToKKyAgICBpbnB1dEZpbGUgPSBv
cGVuKHNvdXJjZSwgInIiKQorICAgIGJhc2VOYW1lID0gb3MucGF0aC5iYXNlbmFtZShzb3VyY2Up
LnJlcGxhY2UoIi5qcyIsICIiKQorICAgIAorICAgIHNvdXJjZSA9ICIiCisgICAgZm9yIGxpbmUg
aW4gaW5wdXRGaWxlOgorICAgICAgICBzb3VyY2UgPSBzb3VyY2UgKyBsaW5lCisgICAgCisgICAg
aWYgc3lzLnBsYXRmb3JtID09ICJjeWd3aW4iOgorICAgICAgICBzb3VyY2UgPSBzb3VyY2UucmVw
bGFjZSgiXHJcbiIsICJcbiIpCisgICAgcmV0dXJuIChiYXNlTmFtZSwgZ2V0RnVuY3Rpb25zKHNv
dXJjZSksIGdldENvcHlyaWdodChzb3VyY2UpKQorCitkZWYgbWFuZ2xlTmFtZShvYmplY3QsIG5h
bWUpOgorICAgIHFOYW1lID0gb2JqZWN0ICsgIi4iICsgbmFtZQorICAgIG1hbmdsZWROYW1lID0g
IiIKKyAgICBpID0gMAorICAgIHdoaWxlIGkgPCBsZW4ocU5hbWUpOgorICAgICAgICBpZiBxTmFt
ZVtpXSA9PSAnLic6CisgICAgICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lICsgcU5h
bWVbaSArIDFdLnVwcGVyKCkKKyAgICAgICAgICAgIGkgPSBpICsgMQorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZSArIHFOYW1lW2ldCisgICAgICAg
IGkgPSBpICsgMQorICAgIHJldHVybiBtYW5nbGVkTmFtZQorCitidWlsdGlucyA9IFtdCisKK2Jh
c2VOYW1lID0gc3lzLmFyZ3ZbLTFdCitidWlsdGluX2RlZmluaXRpb25zID0gc3lzLmFyZ3ZbMTot
MV0KKyhvdXRwdXRfYmFzZSwgXykgPSBvcy5wYXRoLnNwbGl0ZXh0KHN5cy5hcmd2Wy0xXSkKKwor
Y29weXJpZ2h0cyA9IFtdCitmb3IgZmlsZSBpbiBidWlsdGluX2RlZmluaXRpb25zOgorICAgIGlm
IGZubWF0Y2guZm5tYXRjaChmaWxlLCAnKi5qcycpOgorICAgICAgICAoYmFzZU5hbWUsIGZ1bmN0
aW9ucywgb2JqZWN0Q29weXJpZ2h0cykgPSBnZW5lcmF0ZUNvZGUoZmlsZSkKKyAgICAgICAgY29w
eXJpZ2h0cy5leHRlbmQob2JqZWN0Q29weXJpZ2h0cykKKyAgICAgICAgYnVpbHRpbnMuYXBwZW5k
KChiYXNlTmFtZSwgZnVuY3Rpb25zKSkKKworY29weXJpZ2h0cyA9IGxpc3Qoc2V0KGNvcHlyaWdo
dHMpKQorCitjb3B5cmlnaHRCb2R5ID0gIiIKK2ZvciBjb3B5cmlnaHQgaW4gY29weXJpZ2h0czoK
KyAgICBjb3B5cmlnaHRCb2R5ID0gY29weXJpZ2h0Qm9keSArIiAqIENvcHlyaWdodCAoQykgIiAr
IGNvcHlyaWdodCArICJcbiIKKworYnVpbHRpbnNIZWFkZXIgPSBvcGVuKG91dHB1dF9iYXNlICsg
Ii5oLnRtcCIsICJ3IikKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24gPSBvcGVuKG91dHB1dF9iYXNl
ICsgIi5jcHAudG1wIiwgInciKQorY29weXJpZ2h0VGV4dCA9ICIvKlxuIiArIGNvcHlyaWdodEJv
ZHkgKyBjb3B5cmlnaHRUZXh0CitidWlsdGluc0hlYWRlci53cml0ZSgiIiIlcworJXMKKworI2lm
bmRlZiBKU0NCdWlsdGluc19ICisjZGVmaW5lIEpTQ0J1aWx0aW5zX0gKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIElkZW50aWZpZXI7CitjbGFz
cyBKU0dsb2JhbE9iamVjdDsKK2NsYXNzIFNvdXJjZUNvZGU7CitjbGFzcyBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTsKK2NsYXNzIFZNOworCitGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1
aWx0aW5FeGVjdXRhYmxlKFZNJiwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCBjb25zdCBT
b3VyY2VDb2RlJik7CisKKyIiIiAlIChnZW5lcmF0b3JTdHJpbmcsIGNvcHlyaWdodFRleHQpKQor
Citjb2RlUmVmZXJlbmNlcyA9IFtdCisKK2ZvciAob2JqZWN0TmFtZSwgZnVuY3Rpb25zKSBpbiBi
dWlsdGluczoKKyAgICBwcmludCgiR2VuZXJhdGluZyBiaW5kaW5ncyBmb3IgdGhlICVzIGJ1aWx0
aW4uIiAlIG9iamVjdE5hbWUpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIi8qICVzIGZ1bmN0
aW9ucyAqL1xuIiAlIG9iamVjdE5hbWUpCisgICAgZm9yIChuYW1lLCBpbXBsZW1lbnRhdGlvbiwg
XykgaW4gZnVuY3Rpb25zOgorICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZU5hbWUob2JqZWN0
TmFtZSwgbmFtZSkKKyAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZVswXS5sb3dlcigp
ICsgbWFuZ2xlZE5hbWVbMTpdICsgIkNvZGUiCisgICAgICAgIGNvZGVSZWZlcmVuY2VzLmFwcGVu
ZCgobWFuZ2xlZE5hbWUsIG5hbWUsIGltcGxlbWVudGF0aW9uKSkKKyAgICAgICAgYnVpbHRpbnNI
ZWFkZXIud3JpdGUoImV4dGVybiBjb25zdCBjaGFyKiBzXyVzO1xuIiAlIG1hbmdsZWROYW1lKQor
ICAgICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiZXh0ZXJuIGNvbnN0IGludCBzXyVzTGVuZ3Ro
O1xuIiAlIG1hbmdsZWROYW1lKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJcbiIpCisgICAg
YnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0ZPUkVBQ0hfJXNfQlVJTFRJTihtYWNy
bykgXFxcbiIgJSBvYmplY3ROYW1lLnJlcGxhY2UoIi4iLCAiXyIpLnVwcGVyKCkpCisgICAgZm9y
IChuYW1lLCBpbXBsZW1lbnRhdGlvbiwgYXJndW1lbnRzKSBpbiBmdW5jdGlvbnM6CisgICAgICAg
IG1hbmdsZWROYW1lID0gbWFuZ2xlTmFtZShvYmplY3ROYW1lLCBuYW1lKQorICAgICAgICBidWls
dGluc0hlYWRlci53cml0ZSgiICAgIG1hY3JvKCVzLCAlcywgJWQpIFxcXG4iICUgKG5hbWUsIG1h
bmdsZWROYW1lLCBsZW4oYXJndW1lbnRzKSkpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxu
IikKKyAgICBmb3IgKG5hbWUsIGltcGxlbWVudGF0aW9uLCBhcmd1bWVudHMpIGluIGZ1bmN0aW9u
czoKKyAgICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0JVSUxUSU5fJXMg
MVxuIiAlIG1hbmdsZU5hbWUob2JqZWN0TmFtZSwgbmFtZSkudXBwZXIoKSkKKyAgICBidWlsdGlu
c0hlYWRlci53cml0ZSgiXG5cbiIpCituYW1lcyA9IFtdCitidWlsdGluc0hlYWRlci53cml0ZSgi
I2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOKG1hY3JvKVxcXG4iKQorZm9yIChjb2RlUmVmZXJl
bmNlLCBmdW5jdGlvbk5hbWUsIHNvdXJjZSkgaW4gY29kZVJlZmVyZW5jZXM6CisgICAgYnVpbHRp
bnNIZWFkZXIud3JpdGUoIiAgICBtYWNybyglcywgJXMsIHNfJXNMZW5ndGgpIFxcXG4iICUgKGNv
ZGVSZWZlcmVuY2UsIGZ1bmN0aW9uTmFtZSwgY29kZVJlZmVyZW5jZSkpCisgICAgbmFtZXMuYXBw
ZW5kKGZ1bmN0aW9uTmFtZSkKKworYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuXG4iKQorYnVpbHRp
bnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1F
KG1hY3JvKSBcXFxuIikKK2ZvciBuYW1lIGluIHNvcnRlZChzZXQobmFtZXMpKToKKyAgICBidWls
dGluc0hlYWRlci53cml0ZSgiICAgIG1hY3JvKCVzKSBcXFxuIiAlIG5hbWUpCitidWlsdGluc0hl
YWRlci53cml0ZSgiIiIKKworI2RlZmluZSBKU0NfREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihj
b2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAorICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihWTSYpOworCitKU0NfRk9SRUFDSF9CVUlMVElO
KEpTQ19ERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIEpTQ19ERUNMQVJFX0JVSUxU
SU5fR0VORVJBVE9SCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fRVhJU1RTKG5hbWUpIGRlZmluZWQo
SlNDX0JVSUxUSU5fIyNuYW1lKQorCit9CisKKyNlbmRpZgorCisiIiIpCisKK2J1aWx0aW5zSW1w
bGVtZW50YXRpb24ud3JpdGUoIiIiJXMKKyVzCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lu
Y2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIK
KyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0MgeworCisiIiIgICUgKGdlbmVyYXRvclN0cmlu
ZywgY29weXJpZ2h0VGV4dCkpCisKK2ZvciAoY29kZVJlZmVyZW5jZSwgbmFtZSwgc291cmNlKSBp
biBjb2RlUmVmZXJlbmNlczoKKyAgICBzb3VyY2UgPSAiKGZ1bmN0aW9uICIgKyBzb3VyY2Vbc291
cmNlLmluZGV4KCIoIik6XSArICIpIgorICAgIGxpbmVzID0ganNvbi5kdW1wcyhzb3VyY2UpWzE6
LTFdLnNwbGl0KCJcXG4iKQorICAgIHNvdXJjZUxlbmd0aCA9IGxlbihzb3VyY2UpCisgICAgc291
cmNlID0gIiIKKyAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgc291cmNlID0gc291cmNl
ICsgKCIgICAgXCIlc1xcblwiIFxcXG4iICUgbGluZSkKKyAgICBidWlsdGluc0ltcGxlbWVudGF0
aW9uLndyaXRlKCJjb25zdCBjaGFyKiBzXyVzID1cbiVzO1xuXG4iICUgKGNvZGVSZWZlcmVuY2Us
IHNvdXJjZSkpCisgICAgYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiY29uc3QgaW50IHNf
JXNMZW5ndGggPSAlZDtcblxuIiAlIChjb2RlUmVmZXJlbmNlLCBzb3VyY2VMZW5ndGggKyAxKSkg
IyArIDEgZm9yIFxuCisKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoIiIiCitGdW5jdGlv
bkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKFZNJiB2bSwgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlKQoreworICAgIHVuc2lnbmVkIGxpbmVDb3VudCA9IHVubGlua2VkRXhlY3V0YWJsZS0+bGlu
ZUNvdW50KCk7CisgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSAxOworICAgIHVuc2lnbmVkIHNv
dXJjZUxlbmd0aCA9IHVubGlua2VkRXhlY3V0YWJsZS0+c291cmNlTGVuZ3RoKCk7CisgICAgYm9v
bCBlbmRDb2x1bW5Jc09uU3RhcnRMaW5lID0gIWxpbmVDb3VudDsKKyAgICB1bnNpZ25lZCBlbmRD
b2x1bW5FeGNsdWRpbmdCcmFjZXMgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnVubGlua2VkQm9keUVu
ZENvbHVtbigpICsgKGVuZENvbHVtbklzT25TdGFydExpbmUgPyAwIDogMSk7CisgICAgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnN0YXJ0T2Zmc2V0KCk7CisgICAg
dW5zaWduZWQgc3RhcnRPZmZzZXRFeGNsdWRpbmdPcGVuQnJhY2UgPSBzdGFydE9mZnNldCArIDE7
CisgICAgdW5zaWduZWQgZW5kT2Zmc2V0RXhjbHVkaW5nQ2xvc2VCcmFjZSA9IHN0YXJ0T2Zmc2V0
ICsgc291cmNlTGVuZ3RoIC0gMTsKKyAgICBTb3VyY2VDb2RlIGJvZHlTb3VyY2Uoc291cmNlLnBy
b3ZpZGVyKCksIHN0YXJ0T2Zmc2V0RXhjbHVkaW5nT3BlbkJyYWNlLCBlbmRPZmZzZXRFeGNsdWRp
bmdDbG9zZUJyYWNlLCAwLCBzdGFydENvbHVtbik7CisgICAgcmV0dXJuIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6Y3JlYXRlKHZtLCBib2R5U291cmNlLCB1bmxpbmtlZEV4ZWN1dGFibGUsIDAsIGxpbmVD
b3VudCwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbkV4Y2x1ZGluZ0JyYWNlcywgZmFsc2UpOworfQor
CisjZGVmaW5lIEpTQ19ERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9u
TmFtZSwgYXJndW1lbnRDb3VudCkgXFwKK0Z1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dl
bmVyYXRvcihWTSYgdm0pIFxcCit7IFxcCisgICAgcmV0dXJuIGNyZWF0ZUJ1aWx0aW5FeGVjdXRh
YmxlKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKSwg
dm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IFxcCit9CisKK0pT
Q19GT1JFQUNIX0JVSUxUSU4oSlNDX0RFRklORV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBK
U0NfREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCit9CisKKyIiIikKKworYnVpbHRpbnNIZWFkZXIu
Y2xvc2UoKQorYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi5jbG9zZSgpCisKK2lmIChub3Qgb3MucGF0
aC5leGlzdHMob3V0cHV0X2Jhc2UgKyAiLmgiKSkgb3IgKG5vdCBmaWxlY21wLmNtcChvdXRwdXRf
YmFzZSArICIuaC50bXAiLCBvdXRwdXRfYmFzZSArICIuaCIsIHNoYWxsb3c9RmFsc2UpKToKKyAg
ICBvcy5yZW5hbWUob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmgiKQor
ZWxzZToKKyAgICBvcy5yZW1vdmUob3V0cHV0X2Jhc2UgKyAiLmgudG1wIikKKworaWYgKG5vdCBv
cy5wYXRoLmV4aXN0cyhvdXRwdXRfYmFzZSArICIuY3BwIikpIG9yIChub3QgZmlsZWNtcC5jbXAo
b3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCBvdXRwdXRfYmFzZSArICIuY3BwIiwgc2hhbGxvdz1G
YWxzZSkpOgorICAgIG9zLnJlbmFtZShvdXRwdXRfYmFzZSArICIuY3BwLnRtcCIsIG91dHB1dF9i
YXNlICsgIi5jcHAiKQorZWxzZToKKyAgICBvcy5yZW1vdmUob3V0cHV0X2Jhc2UgKyAiLmNwcC50
bXAiKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hl
ZENhbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgK
aW5kZXggMmNhM2U5Nzk0MGM3YzExMDZjMWJhYmExZjM1NGZlODQ3YjQzODViMy4uMzBjYWQyYTE0
ZmZkYmZiNGQ1N2NmNWExMmZjYjkwMGUyNjRmODc2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgLCBtX2ludGVycHJldGVyKGNhbGxGcmFtZS0+aW50ZXJwcmV0
ZXIoKSkKICAgICAgICAgICAgICwgbV9lbnRyeVNjb3BlKGNhbGxGcmFtZS0+dm0oKSwgZnVuY3Rp
b24tPnNjb3BlKCktPmdsb2JhbE9iamVjdCgpKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NF
UlQoIWZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpKTsKKyAgICAgICAgICAgIEFTU0VSVCghZnVu
Y3Rpb24tPmlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkpOwogICAgICAgICAgICAgaWYgKGNhbGxG
cmFtZS0+dm0oKS5pc1NhZmVUb1JlY3Vyc2UoKSkgewogICAgICAgICAgICAgICAgIG1fYXJndW1l
bnRzLnJlc2l6ZShhcmd1bWVudENvdW50KTsKICAgICAgICAgICAgICAgICBtX2Nsb3N1cmUgPSBt
X2ludGVycHJldGVyLT5wcmVwYXJlRm9yUmVwZWF0Q2FsbChmdW5jdGlvbi0+anNFeGVjdXRhYmxl
KCksIGNhbGxGcmFtZSwgJm1fcHJvdG9DYWxsRnJhbWUsIGZ1bmN0aW9uLCBhcmd1bWVudENvdW50
ICsgMSwgZnVuY3Rpb24tPnNjb3BlKCksIG1fYXJndW1lbnRzLmRhdGEoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCBjYTg5
MGIwNmVhMzNmYTllN2YxZmE1MWEzNWVhMmQ0OGQwMDlhMzhhLi42YzliZjk2YzE1ZjYwOWUyNjVj
ZTI1MGE0NWJmMDg2MWQwNmNkMWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdGFja0lubGluZXMuaCIKICNp
bmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5jbHVkZSAiTExJbnRDTG9vcC5oIgogI2luY2x1ZGUgIkxM
SW50VGh1bmtzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvUHJvdG9DYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L1Byb3RvQ2FsbEZyYW1lLmNwcAppbmRleCBmMGUwMmJhNGU0NzZmOTljYzkxM2IwNDYyYWQyNzk1
MDA2MDlmYTNhLi4xYzI0MGRjZDcxYmU1MjlkODhjYmY0NjFkMTg2OGY1ZWIyYjAyYWQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFt
ZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5oIgogCiAj
aW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNp
bmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGNhN2FkMTFmMmUwYjhhM2I4YjE4NTg5
MWQ3ZTUyMmJhZTQwM2EyMzYuLmNiNTUwN2JlYWM1NWJmOGViMWIzN2VjOTBmY2FiMTkzNGZiNDhl
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
czMyXzY0LmNwcAppbmRleCA5OGQxMGEzZjRkY2IxMmQ4OWYzN2ExMmYyMjYwNGI5NDZlMDhlNjI3
Li5kZDAzNTM3NzllOGJkZjk4ZjQ2NThhMzA3ZTMyZDA2ZTQ3MjQ0MTU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlO
YW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCmluZGV4IDkyOGRkNTBmYjAxNmUyNzE2NDRhNTc1ZTMwYWI1ZjI1MTZlYjUwZWMuLjkwODhi
N2ZiMmZiN2FkMDEzODA2ZWY0OWI1YWY0MjBmYTY0ODQwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNDEsNiArNDEsOCBAQAogI2luY2x1ZGUg
IkpJVC5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbldyYXBwZXJzLmgiCiAjaW5jbHVkZSAiSklU
VG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNH
bG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1
ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggMjZkZDRkMWFmNzQ1YWZhMWZiYzUzYTlj
MDIzYTZlNDc0MWE2NmEwOS4uZGYxYmQzYTljZmE0MDJjNTJhNTIxMWNmMWFjY2U2N2Q1MTIxYjdl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAKQEAgLTI5LDExICsyOSwxMyBAQAogI2luY2x1ZGUgIkpJVC5oIgogCiAjaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJHQ0F3
YXJlSklUU3R1YlJvdXRpbmUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRl
ICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0Fy
cmF5LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpT
VmFyaWFibGVPYmplY3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggNDA3ODRiNDk0MzFmZTAy
ZThlNDUyMmYxNjMwOGM5MDI0NzE2ZDIzNi4uMmY3OTU1NTRiMDkxZGVlYmJjMDNiZjJiZThjNzRm
NDFhZTU0MWVkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNs
dWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcu
aCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgi
CiAjaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCiAjaW5jbHVkZSAiU3RhY2tWaXNpdG9yLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFj
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0
b3IuY3BwCmluZGV4IDYwNGNjMjYzY2Y5N2UwODZmZWQwNmVjOTAzYjBlYzE5ODNlNzgxMzcuLjgx
NjZlN2Y4MWZhODlhN2Q0ZjUwYzVmMWE5NGZhOTY4YzVkNTdlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC0z
NSw3ICszNSw3IEBACiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJKU0FycmF5Lmgi
CiAjaW5jbHVkZSAiSlNDZWxsLmgiCi0jaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUg
IkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IDhlYzFmZDMyYTNhZGEyMmUxMjUyMjk1NzBkY2Y3ZmYy
OGVhYmYxZWQuLjQ2YTdjNzZiMmY5MDFmYzNjYzM2ZDFjZTBjMDczNTNlYjA2YjJmNWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC04ODgsOSArODg4LDkg
QEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24KICAgICBBU1NFUlQoZnVuYy0+aXNEb3RBY2Nlc3Nv
ck5vZGUoKSk7CiAgICAgRG90QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nl
c3Nvck5vZGUqPihmdW5jKTsKICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKiBub2RlOwotICAgIGlm
IChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5jYWxsKQorICAgIGlm
IChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5jYWxsIHx8IGRvdC0+
aWRlbnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmNhbGxQcml2YXRlTmFtZSkKICAg
ICAgICAgbm9kZSA9IG5ldyAobV92bSkgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24s
IGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQs
IGRpdm90RW5kKTsKLSAgICBlbHNlIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5hcHBseSkKKyAgICBlbHNlIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3Zt
LT5wcm9wZXJ0eU5hbWVzLT5hcHBseSB8fCBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5hcHBseVByaXZhdGVOYW1lKQogICAgICAgICBub2RlID0gbmV3IChtX3ZtKSBB
cHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50
aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKICAgICBlbHNlCiAg
ICAgICAgIG5vZGUgPSBuZXcgKG1fdm0pIEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRv
dC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRp
dm90RW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKaW5kZXggY2E0YmI0
ZjBhZGU4ZDZiYzgyNjkxYTZjMDAwMTRjZjE5OGJkODhiZC4uY2NiMDc5ZDk3NWExNDFjNWM0YjJk
N2I2MjMxMzAwMDcwOTc3NzgyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5j
cHAKQEAgLTI1LDEwICsyNSwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxl
eGVyLmgiCiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgorI2luY2x1ZGUgIklkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgotCiAjaW5jbHVkZSAiSlNH
bG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKLSNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiTm9kZUluZm8uaCIKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUgPHd0Zi9kdG9hLmg+
CkBAIC05MCw2ICs5MCw3IEBAIGVudW0gQ2hhcmFjdGVyVHlwZSB7CiAKICAgICAvLyBPdGhlciB0
eXBlcyAob25seSBvbmUgc28gZmFyKQogICAgIENoYXJhY3RlcldoaXRlU3BhY2UsCisgICAgQ2hh
cmFjdGVyUHJpdmF0ZUlkZW50aWZpZXJTdGFydAogfTsKIAogLy8gMjU2IExhdGluLTEgY29kZXMK
QEAgLTE1OCw3ICsxNTksNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgdHlwZXNPZkxh
dGluMUNoYXJhY3RlcnNbMjU2XSA9IHsKIC8qICA2MSAtID0gICAgICAgICAgICAgICAgICAqLyBD
aGFyYWN0ZXJFcXVhbCwKIC8qICA2MiAtID4gICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJH
cmVhdGVyLAogLyogIDYzIC0gPyAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlclF1ZXN0aW9u
LAotLyogIDY0IC0gQCAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlckludmFsaWQsCisvKiAg
NjQgLSBAICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyUHJpdmF0ZUlkZW50aWZpZXJTdGFy
dCwKIC8qICA2NSAtIEEgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3Rh
cnQsCiAvKiAgNjYgLSBCICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0
YXJ0LAogLyogIDY3IC0gQyAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJT
dGFydCwKQEAgLTQ4Niw5ICs0ODcsMTAgQEAgc3RhdGljIGNvbnN0IExDaGFyIHNpbmdsZUNoYXJh
Y3RlckVzY2FwZVZhbHVlc0ZvckFTQ0lJWzEyOF0gPSB7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLUxleGVyPFQ+OjpMZXhlcihWTSogdm0pCitMZXhlcjxUPjo6TGV4ZXIoVk0qIHZtLCBK
U1BhcnNlclN0cmljdG5lc3Mgc3RyaWN0bmVzcykKICAgICA6IG1faXNSZXBhcnNpbmcoZmFsc2Up
CiAgICAgLCBtX3ZtKHZtKQorICAgICwgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKHN0cmljdG5l
c3MgPT0gSlNQYXJzZUJ1aWx0aW4pCiB7CiB9CiAKQEAgLTc1Myw3ICs3NTUsMjcgQEAgaW5saW5l
IHZvaWQgTGV4ZXI8VD46OnJlY29yZDE2KGludCBjKQogICAgIEFTU0VSVChjIDw9IHN0YXRpY19j
YXN0PGludD4oVVNIUlRfTUFYKSk7CiAgICAgbV9idWZmZXIxNi5hcHBlbmQoc3RhdGljX2Nhc3Q8
VUNoYXI+KGMpKTsKIH0KLQorICAgIAorI2lmICFBU1NFUlRfRElTQUJMRUQKK2Jvb2wgaXNTYWZl
SWRlbnRpZmllcihWTSYgdm0sIGNvbnN0IElkZW50aWZpZXIqIGlkZW50KQoreworICAgIGlmICgh
aWRlbnQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIC8qIEp1c3QgYmxvY2sgYW55IHVzZSBv
ZiBzdXNwaWNpb3VzIGlkZW50aWZpZXJzLiAgVGhpcyBpcyBpbnRlbmRlZCB0bworICAgICAqIGJl
IHVzZWQgYXMgYSBzYWZldHkgbmV0IHdoaWxlIGltcGxlbWVudGluZyBidWlsdGlucy4KKyAgICAg
Ki8KKyAgICBpZiAoKmlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmNhbGwpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoKmlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmFwcGx5KQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCppZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVz
LT5ldmFsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCppZGVudCA9PSB2bS5wcm9w
ZXJ0eU5hbWVzLT5GdW5jdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0
cnVlOworfQorI2VuZGlmCisgICAgCiB0ZW1wbGF0ZSA8PgogdGVtcGxhdGUgPGJvb2wgc2hvdWxk
Q3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46
OnBhcnNlSWRlbnRpZmllcihKU1Rva2VuRGF0YSogdG9rZW5EYXRhLCB1bnNpZ25lZCBsZXhlckZs
YWdzLCBib29sIHN0cmljdE1vZGUpCiB7CkBAIC03NjUsNyArNzg3LDExIEBAIHRlbXBsYXRlIDxi
b29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4
ZXI8TENoYXI+OjpwCiAgICAgICAgICAgICByZXR1cm4ga2V5d29yZCA9PSBSRVNFUlZFRF9JRl9T
VFJJQ1QgJiYgIXN0cmljdE1vZGUgPyBJREVOVCA6IGtleXdvcmQ7CiAgICAgICAgIH0KICAgICB9
Ci0KKyAgICAKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJlbnQgPT0gJ0AnICYmIG1f
cGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKKyAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAg
c2hpZnQoKTsKKyAgICAKICAgICBjb25zdCBMQ2hhciogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVu
dFNvdXJjZVB0cigpOwogICAgIHVuc2lnbmVkIGlkZW50aWZpZXJMaW5lU3RhcnQgPSBjdXJyZW50
TGluZVN0YXJ0T2Zmc2V0KCk7CiAgICAgCkBAIC03NzksMTUgKzgwNSwyNiBAQCB0ZW1wbGF0ZSA8
Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExl
eGVyPExDaGFyPjo6cAogCiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAwOwogICAgIAot
ICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyKSB7CisgICAgaWYgKHNob3VsZENyZWF0ZUlk
ZW50aWZpZXIgfHwgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CiAgICAgICAgIGludCBpZGVu
dGlmaWVyTGVuZ3RoID0gY3VycmVudFNvdXJjZVB0cigpIC0gaWRlbnRpZmllclN0YXJ0OwogICAg
ICAgICBpZGVudCA9IG1ha2VJZGVudGlmaWVyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxl
bmd0aCk7Ci0KKyAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgeworICAgICAg
ICAgICAgaWYgKCFpc1NhZmVJZGVudGlmaWVyKCptX3ZtLCBpZGVudCkgJiYgIWlzUHJpdmF0ZU5h
bWUpIHsKKyAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIlRo
ZSB1c2Ugb2YgJyIsIGlkZW50LT5zdHJpbmcoKSwgIicgaXMgZGlzYWxsb3dlZCBpbiBidWlsdGlu
IGZ1bmN0aW9ucy4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgICAgICAgICBp
ZGVudCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPmdldFByaXZhdGVOYW1lKCppZGVudCk7CisgICAg
ICAgICAgICBlbHNlIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVk
S2V5d29yZCkKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gJm1fdm0tPnByb3Bl
cnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmRQcml2YXRlTmFtZTsKKyAgICAgICAgICAgIGlmICgh
aWRlbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSURfUFJJVkFURV9OQU1FX0VSUk9S
VE9LOworICAgICAgICB9CiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBpZGVudDsKICAgICB9
IGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IDA7CiAKLSAgICBpZiAoVU5MSUtFTFko
KHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxhZ3MgJiBMZXhlckZsYWdz
SWdub3JlUmVzZXJ2ZWRXb3JkcykpKSB7CisgICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBt
YXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVk
V29yZHMpKSAmJiAhaXNQcml2YXRlTmFtZSkgewogICAgICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRl
SWRlbnRpZmllcik7CiAgICAgICAgIGlmIChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgewog
ICAgICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IG1fdm0tPmtleXdvcmRzLT5nZXRL
ZXl3b3JkKCppZGVudCk7CkBAIC04MTQsNiArODUxLDEwIEBAIHRlbXBsYXRlIDxib29sIHNob3Vs
ZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+
OjpwCiAgICAgICAgICAgICByZXR1cm4ga2V5d29yZCA9PSBSRVNFUlZFRF9JRl9TVFJJQ1QgJiYg
IXN0cmljdE1vZGUgPyBJREVOVCA6IGtleXdvcmQ7CiAgICAgICAgIH0KICAgICB9CisgICAgCisg
ICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gbV9jdXJyZW50ID09ICdAJyAmJiBtX3BhcnNpbmdCdWls
dGluRnVuY3Rpb247CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgIHNoaWZ0KCk7CiAK
ICAgICBjb25zdCBVQ2hhciogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudFNvdXJjZVB0cigpOwog
ICAgIGludCBpZGVudGlmaWVyTGluZVN0YXJ0ID0gY3VycmVudExpbmVTdGFydE9mZnNldCgpOwpA
QCAtODI2LDYgKzg2Nyw3IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+
IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+OjpwCiAgICAgfQogICAgIAog
ICAgIGlmIChVTkxJS0VMWShtX2N1cnJlbnQgPT0gJ1xcJykpIHsKKyAgICAgICAgQVNTRVJUKCFp
c1ByaXZhdGVOYW1lKTsKICAgICAgICAgc2V0T2Zmc2V0RnJvbVNvdXJjZVB0cihpZGVudGlmaWVy
U3RhcnQsIGlkZW50aWZpZXJMaW5lU3RhcnQpOwogICAgICAgICByZXR1cm4gcGFyc2VJZGVudGlm
aWVyU2xvd0Nhc2U8c2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4odG9rZW5EYXRhLCBsZXhlckZsYWdz
LCBzdHJpY3RNb2RlKTsKICAgICB9CkBAIC04MzcsMTggKzg3OSwyOSBAQCB0ZW1wbGF0ZSA8Ym9v
bCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVy
PFVDaGFyPjo6cAogCiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAwOwogICAgIAotICAg
IGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyKSB7CisgICAgaWYgKHNob3VsZENyZWF0ZUlkZW50
aWZpZXIgfHwgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CiAgICAgICAgIGludCBpZGVudGlm
aWVyTGVuZ3RoID0gY3VycmVudFNvdXJjZVB0cigpIC0gaWRlbnRpZmllclN0YXJ0OwogICAgICAg
ICBpZiAoaXNBbGw4Qml0KQogICAgICAgICAgICAgaWRlbnQgPSBtYWtlSWRlbnRpZmllckxDaGFy
RnJvbVVDaGFyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIGlkZW50ID0gbWFrZUlkZW50aWZpZXIoaWRlbnRpZmllclN0YXJ0LCBp
ZGVudGlmaWVyTGVuZ3RoKTsKLSAgICAgICAgCisgICAgICAgIGlmIChtX3BhcnNpbmdCdWlsdGlu
RnVuY3Rpb24pIHsKKyAgICAgICAgICAgIGlmICghaXNTYWZlSWRlbnRpZmllcigqbV92bSwgaWRl
bnQpICYmICFpc1ByaXZhdGVOYW1lKSB7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3Nh
Z2UgPSBtYWtlU3RyaW5nKCJUaGUgdXNlIG9mICciLCBpZGVudC0+c3RyaW5nKCksICInIGlzIGRp
c2FsbG93ZWQgaW4gYnVpbHRpbiBmdW5jdGlvbnMuIik7CisgICAgICAgICAgICAgICAgcmV0dXJu
IEVSUk9SVE9LOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGlzUHJpdmF0ZU5hbWUp
CisgICAgICAgICAgICAgICAgaWRlbnQgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZXRQcml2YXRl
TmFtZSgqaWRlbnQpOworICAgICAgICAgICAgZWxzZSBpZiAoKmlkZW50ID09IG1fdm0tPnByb3Bl
cnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQpCisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5p
ZGVudCA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkUHJpdmF0ZU5hbWU7
CisgICAgICAgICAgICBpZiAoIWlkZW50KQorICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElE
X1BSSVZBVEVfTkFNRV9FUlJPUlRPSzsKKyAgICAgICAgfQogICAgICAgICB0b2tlbkRhdGEtPmlk
ZW50ID0gaWRlbnQ7CiAgICAgfSBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAwOwog
ICAgIAotICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICEo
bGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkpIHsKKyAgICBpZiAo
VU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxhZ3MgJiBM
ZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpICYmICFpc1ByaXZhdGVOYW1lKSB7CiAgICAg
ICAgIEFTU0VSVChzaG91bGRDcmVhdGVJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKHJlbWFpbmlu
ZyA8IG1heFRva2VuTGVuZ3RoKSB7CiAgICAgICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5
ID0gbV92bS0+a2V5d29yZHMtPmdldEtleXdvcmQoKmlkZW50KTsKQEAgLTE2NTgsNiArMTcxMSw3
IEBAIGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ6CiAgICAgICAgIEFTU0VSVChpc0lkZW50U3Rh
cnQobV9jdXJyZW50KSk7CiAgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2UgQ2hhcmFjdGVy
QmFja1NsYXNoOgorICAgICAgICBwYXJzZUlkZW50OgogICAgICAgICBpZiAobGV4ZXJGbGFncyAm
IExleGV4RmxhZ3NEb250QnVpbGRLZXl3b3JkcykKICAgICAgICAgICAgIHRva2VuID0gcGFyc2VJ
ZGVudGlmaWVyPGZhbHNlPih0b2tlbkRhdGEsIGxleGVyRmxhZ3MsIHN0cmljdE1vZGUpOwogICAg
ICAgICBlbHNlCkBAIC0xNjcwLDYgKzE3MjQsMTEgQEAgaW5OdW1iZXJBZnRlckRlY2ltYWxQb2lu
dDoKICAgICAgICAgbV90ZXJtaW5hdG9yID0gdHJ1ZTsKICAgICAgICAgbV9saW5lU3RhcnQgPSBt
X2NvZGU7CiAgICAgICAgIGdvdG8gc3RhcnQ7CisgICAgY2FzZSBDaGFyYWN0ZXJQcml2YXRlSWRl
bnRpZmllclN0YXJ0OgorICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKQorICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50OworCisgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNh
c2UgQ2hhcmFjdGVySW52YWxpZDoKICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBpbnZhbGlk
Q2hhcmFjdGVyTWVzc2FnZSgpOwogICAgICAgICB0b2tlbiA9IEVSUk9SVE9LOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9MZXhlci5oCmluZGV4IDI4YzYxYmExOThkMmMxNWE0OWJiMTg1MmVkMzBi
ZWZlYjg5MDQwMDguLmI4ODczZTk5NTAyODY0NGJmOGNiYjNkNGMyZGE1NjJlOTNlMGU4ZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKQEAgLTcyLDcgKzcyLDcgQEAgY2xhc3Mg
TGV4ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCiBwdWJsaWM6Ci0gICAgTGV4
ZXIoVk0qKTsKKyAgICBMZXhlcihWTSosIEpTUGFyc2VyU3RyaWN0bmVzcyk7CiAgICAgfkxleGVy
KCk7CiAKICAgICAvLyBDaGFyYWN0ZXIgbWFuaXB1bGF0aW9uIGZ1bmN0aW9ucy4KQEAgLTIzOCw2
ICsyMzgsNyBAQCBwcml2YXRlOgogICAgIElkZW50aWZpZXJBcmVuYSogbV9hcmVuYTsKIAogICAg
IFZNKiBtX3ZtOworICAgIGJvb2wgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uOwogfTsKIAogdGVt
cGxhdGUgPD4KQEAgLTMzNSw2ICszMzYsMTIgQEAgQUxXQVlTX0lOTElORSBjb25zdCBJZGVudGlm
aWVyKiBMZXhlcjxUPjo6bWFrZUxDaGFySWRlbnRpZmllcihjb25zdCBVQ2hhciogY2hhcmEKICAg
ICByZXR1cm4gJm1fYXJlbmEtPm1ha2VJZGVudGlmaWVyTENoYXJGcm9tVUNoYXIobV92bSwgY2hh
cmFjdGVycywgbGVuZ3RoKTsKIH0KIAorI2lmIEFTU0VSVF9ESVNBQkxFRAorQUxXQVlTX0lOTElO
RSBib29sIGlzU2FmZUlkZW50aWZpZXIoVk0mLCBjb25zdCBJZGVudGlmaWVyKikgeyByZXR1cm4g
dHJ1ZTsgfQorI2Vsc2UKK2Jvb2wgaXNTYWZlSWRlbnRpZmllcihWTSYsIGNvbnN0IElkZW50aWZp
ZXIqKTsKKyNlbmRpZgorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIEFMV0FZU19JTkxJTkUgSlNU
b2tlblR5cGUgTGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tlbiogdG9rZW5SZWNv
cmQsIHVuc2lnbmVkIGxleGVyRmxhZ3MsIGJvb2wgc3RyaWN0TW9kZSkKIHsKQEAgLTM3MCwxMCAr
Mzc3LDE1IEBAIEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4cGVjdElk
ZW50aWZpZXIoSlNUb2tlbiogdG9rZW5SZWNvcmQsIHVuCiAgICAgQVNTRVJUKGN1cnJlbnRPZmZz
ZXQoKSA+PSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCkpOwogCiAgICAgLy8gQ3JlYXRlIHRoZSBp
ZGVudGlmaWVyIGlmIG5lZWRlZAotICAgIGlmIChsZXhlckZsYWdzICYgTGV4ZXhGbGFnc0RvbnRC
dWlsZEtleXdvcmRzKQorICAgIGlmIChsZXhlckZsYWdzICYgTGV4ZXhGbGFnc0RvbnRCdWlsZEtl
eXdvcmRzCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICAmJiAhbV9wYXJzaW5nQnVpbHRp
bkZ1bmN0aW9uCisjZW5kaWYKKyAgICAgICAgKQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0g
MDsKICAgICBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBtYWtlTENoYXJJZGVudGlm
aWVyKHN0YXJ0LCBwdHIgLSBzdGFydCk7CisKICAgICB0b2tlbkxvY2F0aW9uLT5saW5lID0gbV9s
aW5lTnVtYmVyOwogICAgIHRva2VuTG9jYXRpb24tPmxpbmVTdGFydE9mZnNldCA9IGN1cnJlbnRM
aW5lU3RhcnRPZmZzZXQoKTsKICAgICB0b2tlbkxvY2F0aW9uLT5zdGFydE9mZnNldCA9IG9mZnNl
dEZyb21Tb3VyY2VQdHIoc3RhcnQpOwpAQCAtMzgxLDYgKzM5MywxMyBAQCBBTFdBWVNfSU5MSU5F
IEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW4qIHRva2Vu
UmVjb3JkLCB1bgogICAgIEFTU0VSVCh0b2tlbkxvY2F0aW9uLT5zdGFydE9mZnNldCA+PSB0b2tl
bkxvY2F0aW9uLT5saW5lU3RhcnRPZmZzZXQpOwogICAgIHRva2VuUmVjb3JkLT5tX3N0YXJ0UG9z
aXRpb24gPSBzdGFydFBvc2l0aW9uOwogICAgIHRva2VuUmVjb3JkLT5tX2VuZFBvc2l0aW9uID0g
Y3VycmVudFBvc2l0aW9uKCk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIGlmIChtX3BhcnNp
bmdCdWlsdGluRnVuY3Rpb24pIHsKKyAgICAgICAgaWYgKCFpc1NhZmVJZGVudGlmaWVyKCptX3Zt
LCB0b2tlbkRhdGEtPmlkZW50KSkKKyAgICAgICAgICAgIHJldHVybiBFUlJPUlRPSzsKKyAgICB9
CisjZW5kaWYKKwogICAgIG1fbGFzdFRva2VuID0gSURFTlQ7CiAgICAgcmV0dXJuIElERU5UOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCBmYzljY2Q5ZjZj
NTc2YzFhZWY1NDdmMjExZmRkNTk2ZjQyZTA1ODA2Li5kOTUyYmE2YTk0ZDJmNmI0MTgyMTU1MDA0
ZDBhOTcwODQyOWJkNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApA
QCAtMTMyLDYgKzEzMiwxMiBAQCBQYXNzUmVmUHRyPFByb2dyYW1Ob2RlPiBQcm9ncmFtTm9kZTo6
Y3JlYXRlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydAogICAgIHJldHVybiBu
b2RlLnJlbGVhc2UoKTsKIH0KIAorCit2b2lkIFByb2dyYW1Ob2RlOjpzZXRDbG9zZWRWYXJpYWJs
ZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJiBjbG9zZWRWYXJpYWJsZXMpCit7
CisgICAgbV9jbG9zZWRWYXJpYWJsZXMgPSBzdGQ6Om1vdmUoY2xvc2VkVmFyaWFibGVzKTsKK30K
KwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV2YWxOb2RlIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKIGlubGluZSBFdmFsTm9kZTo6RXZhbE5vZGUoVk0qIHZtLCBj
b25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqIGNoaWxk
cmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRp
ZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29k
ZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5oCmluZGV4IGQ3NzlhMTc4ZDk1NmZmOTlmZDBiZWQ1ZDVmNDU0YWEzZTZiNTA4
NzkuLjgxNmZmMDAxYWJmMDM3NmM2NDJmMWE5MzhkMGUwYTlmNTI5Y2E2YmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTE0MzEsNiArMTQzMSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBib29sIG5lZWRzQWN0aXZhdGlvbigpIGNvbnN0IHsgcmV0dXJuIChoYXND
YXB0dXJlZFZhcmlhYmxlcygpKSB8fCAobV9mZWF0dXJlcyAmIChFdmFsRmVhdHVyZSB8IFdpdGhG
ZWF0dXJlIHwgQ2F0Y2hGZWF0dXJlKSk7IH0KICAgICAgICAgYm9vbCBoYXNDYXB0dXJlZFZhcmlh
YmxlcygpIGNvbnN0IHsgcmV0dXJuICEhbV9jYXB0dXJlZFZhcmlhYmxlcy5zaXplKCk7IH0KICAg
ICAgICAgc2l6ZV90IGNhcHR1cmVkVmFyaWFibGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fw
dHVyZWRWYXJpYWJsZXMuc2l6ZSgpOyB9CisgICAgICAgIGNvbnN0IElkZW50aWZpZXJTZXQmIGNh
cHR1cmVkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9jYXB0dXJlZFZhcmlhYmxlczsgfQog
ICAgICAgICBib29sIGNhcHR1cmVzKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSB7IHJldHVybiBt
X2NhcHR1cmVkVmFyaWFibGVzLmNvbnRhaW5zKGlkZW50LmltcGwoKSk7IH0KIAogICAgICAgICBW
YXJTdGFjayYgdmFyU3RhY2soKSB7IHJldHVybiBtX3ZhclN0YWNrOyB9CkBAIC0xNDQ2LDYgKzE0
NDcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3Rh
dGVtZW50KCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZGVzdGluYXRpb24pOworICAgICAgICAKKyAg
ICAgICAgdm9pZCBzZXRDbG9zZWRWYXJpYWJsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJ
bXBsPj4mJikgeyB9CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZvaWQgc2V0U291cmNlKGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkgeyBtX3NvdXJjZSA9IHNvdXJjZTsgfQpAQCAtMTQ3NSwx
MSArMTQ3OCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgY29uc3QgYm9v
bCBzY29wZUlzRnVuY3Rpb24gPSBmYWxzZTsKIAorICAgICAgICB2b2lkIHNldENsb3NlZFZhcmlh
Ymxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmKTsKKyAgICAgICAgY29uc3Qg
VmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mIGNsb3NlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0
dXJuIG1fY2xvc2VkVmFyaWFibGVzOyB9CiAgICAgcHJpdmF0ZToKICAgICAgICAgUHJvZ3JhbU5v
ZGUoVk0qLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNl
RWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29u
c3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAg
ICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCkgb3ZlcnJpZGU7Ci0KKyAgICAgICAgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4g
bV9jbG9zZWRWYXJpYWJsZXM7CiAgICAgICAgIHVuc2lnbmVkIG1fc3RhcnRDb2x1bW47CiAgICAg
ICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKaW5kZXggMjk3NjY2ZTcyNmU0NWQwODNlZjEzNDlkZGZmZGYzN2VmODAw
ZGY3YS4uNTBiZWM3OWZlMzhhZGY4ZjNhMDRmNmI0NmNiZDJhNWNiZmNmMjQ2YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjA0LDggKzIwNCw5IEBAIFBhcnNl
cjxMZXhlclR5cGU+OjpQYXJzZXIoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1
bmN0aW9uUGFyYW1ldGVycyoKICAgICAsIG1fbGFzdElkZW50aWZpZXIoMCkKICAgICAsIG1fbGFz
dEZ1bmN0aW9uTmFtZShudWxscHRyKQogICAgICwgbV9zb3VyY2VFbGVtZW50cygwKQorICAgICwg
bV9wYXJzaW5nQnVpbHRpbihzdHJpY3RuZXNzID09IEpTUGFyc2VCdWlsdGluKQogewotICAgIG1f
bGV4ZXIgPSBhZG9wdFB0cihuZXcgTGV4ZXJUeXBlKHZtKSk7CisgICAgbV9sZXhlciA9IGFkb3B0
UHRyKG5ldyBMZXhlclR5cGUodm0sIHN0cmljdG5lc3MpKTsKICAgICBtX2FyZW5hID0gbV92bS0+
cGFyc2VyQXJlbmEuZ2V0KCk7CiAgICAgbV9sZXhlci0+c2V0Q29kZShzb3VyY2UsIG1fYXJlbmEp
OwogICAgIG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lID0gc291cmNlLmZpcnN0TGluZSgpOwpAQCAt
MjU2LDYgKzI1Nyw3IEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcigpCiAg
ICAgSWRlbnRpZmllclNldCBjYXB0dXJlZFZhcmlhYmxlczsKICAgICBib29sIG1vZGlmaWVkUGFy
YW1ldGVyID0gZmFsc2U7CiAgICAgc2NvcGUtPmdldENhcHR1cmVkVmFyaWFibGVzKGNhcHR1cmVk
VmFyaWFibGVzLCBtb2RpZmllZFBhcmFtZXRlcik7CisgICAgCiAgICAgQ29kZUZlYXR1cmVzIGZl
YXR1cmVzID0gY29udGV4dC5mZWF0dXJlcygpOwogICAgIGlmIChzY29wZS0+c3RyaWN0TW9kZSgp
KQogICAgICAgICBmZWF0dXJlcyB8PSBTdHJpY3RNb2RlRmVhdHVyZTsKQEAgLTI2MywyMSArMjY1
LDM2IEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcigpCiAgICAgICAgIGZl
YXR1cmVzIHw9IFNoYWRvd3NBcmd1bWVudHNGZWF0dXJlOwogICAgIGlmIChtb2RpZmllZFBhcmFt
ZXRlcikKICAgICAgICAgZmVhdHVyZXMgfD0gTW9kaWZpZWRQYXJhbWV0ZXJGZWF0dXJlOwotCisg
ICAgCisgICAgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4gY2xvc2VkVmFyaWFibGVzOworICAg
IGlmIChtX3BhcnNpbmdCdWlsdGluKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFjYXB0dXJl
ZFZhcmlhYmxlcy5zaXplKCkpOworICAgICAgICBJZGVudGlmaWVyU2V0IHVzZWRWYXJpYWJsZXM7
CisgICAgICAgIHNjb3BlLT5nZXRVc2VkVmFyaWFibGVzKHVzZWRWYXJpYWJsZXMpOworICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIHZhcmlhYmxlIDogdXNlZFZhcmlhYmxlcykgeworICAgICAgICAg
ICAgaWYgKHNjb3BlLT5oYXNEZWNsYXJlZFZhcmlhYmxlKElkZW50aWZpZXIobV92bSwgdmFyaWFi
bGUuZ2V0KCkpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgaWYgKHNjb3BlLT5oYXNEZWNsYXJlZFBhcmFtZXRlcihJZGVudGlmaWVyKG1fdm0s
IHZhcmlhYmxlLmdldCgpKSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICBjbG9zZWRWYXJpYWJsZXMuYXBwZW5kKHZhcmlhYmxlKTsKKyAgICAgICAgfQorICAgIH0KICAg
ICBkaWRGaW5pc2hQYXJzaW5nKHNvdXJjZUVsZW1lbnRzLCBjb250ZXh0LnZhckRlY2xhcmF0aW9u
cygpLCBjb250ZXh0LmZ1bmNEZWNsYXJhdGlvbnMoKSwgZmVhdHVyZXMsCi0gICAgICAgIGNvbnRl
eHQubnVtQ29uc3RhbnRzKCksIGNhcHR1cmVkVmFyaWFibGVzKTsKKyAgICAgICAgY29udGV4dC5u
dW1Db25zdGFudHMoKSwgY2FwdHVyZWRWYXJpYWJsZXMsIHN0ZDo6bW92ZShjbG9zZWRWYXJpYWJs
ZXMpKTsKIAogICAgIHJldHVybiBwYXJzZUVycm9yOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
TGV4ZXJUeXBlPgogdm9pZCBQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmluaXNoUGFyc2luZyhTb3Vy
Y2VFbGVtZW50cyogc291cmNlRWxlbWVudHMsIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0
YWNrczo6VmFyU3RhY2s+KiB2YXJTdGFjaywgCi0gICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0
aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiogZnVuY1N0YWNrLCBDb2RlRmVhdHVyZXMgZmVhdHVy
ZXMsIGludCBudW1Db25zdGFudHMsIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFycykKKyAgICBQ
YXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KiBmdW5jU3Rh
Y2ssIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cywgSWRlbnRpZmllclNl
dCYgY2FwdHVyZWRWYXJzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmIGNsb3Nl
ZFZhcmlhYmxlcykKIHsKICAgICBtX3NvdXJjZUVsZW1lbnRzID0gc291cmNlRWxlbWVudHM7CiAg
ICAgbV92YXJEZWNsYXJhdGlvbnMgPSB2YXJTdGFjazsKICAgICBtX2Z1bmNEZWNsYXJhdGlvbnMg
PSBmdW5jU3RhY2s7CiAgICAgbV9jYXB0dXJlZFZhcmlhYmxlcy5zd2FwKGNhcHR1cmVkVmFycyk7
CisgICAgbV9jbG9zZWRWYXJpYWJsZXMgPSBjbG9zZWRWYXJpYWJsZXM7CiAgICAgbV9mZWF0dXJl
cyA9IGZlYXR1cmVzOwogICAgIG1fbnVtQ29uc3RhbnRzID0gbnVtQ29uc3RhbnRzOwogfQpAQCAt
MjM0Niw2ICsyMzYzLDEwIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+IHZvaWQgUGFy
c2VyPExleGVyVHlwZT46OnByaW50VW5leHBlY3RlZFRva2VuVGV4dChXCiAgICAgY2FzZSBSRVNF
UlZFRDoKICAgICAgICAgb3V0LnByaW50KCJVbmV4cGVjdGVkIHVzZSBvZiByZXNlcnZlZCB3b3Jk
ICciLCBnZXRUb2tlbigpLCAiJyIpOwogICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIElOVkFM
SURfUFJJVkFURV9OQU1FX0VSUk9SVE9LOgorICAgICAgICBvdXQucHJpbnQoIkludmFsaWQgcHJp
dmF0ZSBuYW1lICciLCBnZXRUb2tlbigpLCAiJyIpOworICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAKICAgICBjYXNlIElERU5UOgogICAgICAgICBvdXQucHJpbnQoIlVuZXhwZWN0ZWQgaWRl
bnRpZmllciAnIiwgZ2V0VG9rZW4oKSwgIiciKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oCmluZGV4IGI2OThlZjkzNjhjYjhjOGYxOTdjY2QwMDBhY2FhNmRmYjExYmEyNDQuLjkw
MzM4NTBjOGM5N2Y1N2UyMWRhNWVlZGIwMmQwNDRmNGM4OTc4ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjMsNiArMjMsNyBAQAogI2lmbmRlZiBQYXJzZXJfaAog
I2RlZmluZSBQYXJzZXJfaAogCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNs
dWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRl
ICJFeGVjdXRhYmxlLmgiCkBAIC0yNTksNiArMjYwLDEwIEBAIHN0cnVjdCBTY29wZSB7CiAgICAg
ICAgIHJldHVybiBpc1ZhbGlkU3RyaWN0TW9kZSA/IEJpbmRpbmdTdWNjZWVkZWQgOiBTdHJpY3RC
aW5kaW5nRmFpbGVkOwogICAgIH0KIAorICAgIHZvaWQgZ2V0VXNlZFZhcmlhYmxlcyhJZGVudGlm
aWVyU2V0JiB1c2VkVmFyaWFibGVzKQorICAgIHsKKyAgICAgICAgdXNlZFZhcmlhYmxlcy5zd2Fw
KG1fdXNlZFZhcmlhYmxlcyk7CisgICAgfQogCiAgICAgdm9pZCB1c2VWYXJpYWJsZShjb25zdCBJ
ZGVudGlmaWVyKiBpZGVudCwgYm9vbCBpc0V2YWwpCiAgICAgewpAQCAtNDE0LDYgKzQxOSw3IEBA
IHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNlckVycm9yJik7
CiAKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCkgY29uc3Qg
eyByZXR1cm4gbV9sZXhlci0+cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOyB9CisgICAgY29u
c3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJiBjbG9zZWRWYXJpYWJsZXMoKSB7IHJldHVy
biBzdGQ6Om1vdmUobV9jbG9zZWRWYXJpYWJsZXMpOyB9CiAKIHByaXZhdGU6CiAgICAgc3RydWN0
IEFsbG93SW5PdmVycmlkZSB7CkBAIC01NDAsNyArNTQ2LDcgQEAgcHJpdmF0ZToKICAgICBTdHJp
bmcgcGFyc2VJbm5lcigpOwogCiAgICAgdm9pZCBkaWRGaW5pc2hQYXJzaW5nKFNvdXJjZUVsZW1l
bnRzKiwgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjaz4qLCAKLSAg
ICAgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPios
IENvZGVGZWF0dXJlcywgaW50LCBJZGVudGlmaWVyU2V0Jik7CisgICAgICAgIFBhcnNlckFyZW5h
RGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qLCBDb2RlRmVhdHVyZXMsIGlu
dCwgSWRlbnRpZmllclNldCYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYpOwog
CiAgICAgLy8gVXNlZCB0byBkZXRlcm1pbmUgdHlwZSBvZiBlcnJvciB0byByZXBvcnQuCiAgICAg
Ym9vbCBpc0Z1bmN0aW9uQm9keU5vZGUoU2NvcGVOb2RlKikgeyByZXR1cm4gZmFsc2U7IH0KQEAg
LTg0MCw5ICs4NDYsMTEgQEAgcHJpdmF0ZToKICAgICBjb25zdCBJZGVudGlmaWVyKiBtX2xhc3RG
dW5jdGlvbk5hbWU7CiAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyQ2FjaGU+IG1fZnVuY3Rpb25D
YWNoZTsKICAgICBTb3VyY2VFbGVtZW50cyogbV9zb3VyY2VFbGVtZW50czsKKyAgICBib29sIG1f
cGFyc2luZ0J1aWx0aW47CiAgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpW
YXJTdGFjaz4qIG1fdmFyRGVjbGFyYXRpb25zOwogICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJh
dGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qIG1fZnVuY0RlY2xhcmF0aW9uczsKICAgICBJZGVu
dGlmaWVyU2V0IG1fY2FwdHVyZWRWYXJpYWJsZXM7CisgICAgVmVjdG9yPFJlZlB0cjxTdHJpbmdJ
bXBsPj4gbV9jbG9zZWRWYXJpYWJsZXM7CiAgICAgQ29kZUZlYXR1cmVzIG1fZmVhdHVyZXM7CiAg
ICAgaW50IG1fbnVtQ29uc3RhbnRzOwogICAgIApAQCAtOTU3LDYgKzk2NSwxMCBAQCBQYXNzUmVm
UHRyPFBhcnNlZE5vZGU+IHBhcnNlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBG
dW5jdGlvblBhcmFtZXRlcgogICAgICAgICBSZWZQdHI8UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFy
c2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yKTsKICAgICAgICAgaWYgKHBvc2l0aW9uQmVmb3Jl
TGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBh
cnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CisgICAgICAgIGlmIChzdHJpY3RuZXNz
ID09IEpTUGFyc2VCdWlsdGluKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQp
OworICAgICAgICAgICAgcmVzdWx0LT5zZXRDbG9zZWRWYXJpYWJsZXMoc3RkOjptb3ZlKHBhcnNl
ci5jbG9zZWRWYXJpYWJsZXMoKSkpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXN1bHQu
cmVsZWFzZSgpOwogICAgIH0KICAgICBQYXJzZXI8TGV4ZXI8VUNoYXI+PiBwYXJzZXIodm0sIHNv
dXJjZSwgcGFyYW1ldGVycywgbmFtZSwgc3RyaWN0bmVzcywgcGFyc2VyTW9kZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKaW5kZXggNGU5YTE3Y2QyMWNhMzQx
NDZiYmQ0ODE1NmEzNzJjZDQwNGRlZjYwYy4uZjdhNzViZjdjMzc4NTdlNDRiNmQ1ZDcxZjQ1Mjli
YjFhYzFjZjVmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMu
aApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51bSBKU1BhcnNlclN0
cmljdG5lc3MgeyBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlU3RyaWN0IH07CitlbnVtIEpTUGFyc2Vy
U3RyaWN0bmVzcyB7IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VCdWlsdGluLCBKU1BhcnNlU3RyaWN0
IH07CiBlbnVtIEpTUGFyc2VyTW9kZSB7IEpTUGFyc2VQcm9ncmFtQ29kZSwgSlNQYXJzZUZ1bmN0
aW9uQ29kZSB9OwogCiBlbnVtIFByb2ZpbGVyTW9kZSB7IFByb2ZpbGVyT2ZmLCBQcm9maWxlck9u
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vu
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAppbmRleCA4
MmEyNjYzOWE3OTIyMGEwODQ0NTZiNDhmMzI4NTJkMTQzYzczOWQwLi44Yzg3YWQ5ZmFkYmRjNGFm
MzlhYzk5ZGIyZDg0NDVlMTNmZmZkMzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyVG9rZW5zLmgKQEAgLTE0OSw2ICsxNDksNyBAQCBlbnVtIEpTVG9rZW5UeXBlIHsK
ICAgICBJTlZBTElEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSyA9IDcgfCBFcnJvclRva2VuRmxh
ZywKICAgICBVTlRFUk1JTkFURURfU1RSSU5HX0xJVEVSQUxfRVJST1JUT0sgPSA4IHwgRXJyb3JU
b2tlbkZsYWcgfCBVbnRlcm1pbmF0ZWRFcnJvclRva2VuRmxhZywKICAgICBJTlZBTElEX1NUUklO
R19MSVRFUkFMX0VSUk9SVE9LID0gOSB8IEVycm9yVG9rZW5GbGFnLAorICAgIElOVkFMSURfUFJJ
VkFURV9OQU1FX0VSUk9SVE9LID0gMTAgfCBFcnJvclRva2VuRmxhZwogfTsKIAogc3RydWN0IEpT
VGV4dFBvc2l0aW9uIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ3VtZW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgK
aW5kZXggMThmMzg5MTcxMzg1MjM2MmM3YTc1YTMwNTNiNDYzMTQxN2JlYjgxYi4uZjE2ZmQzZGU0
MDU1OTcwYmE5ZDljNmYwYWU2MzE4ZjIyMDRiNjU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJndW1lbnRzLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNkZWZpbmUgQXJndW1lbnRz
X2gKIAogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVy
cy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3Bw
CmluZGV4IGRkMDg5NGYxNGEwMjFkNWYxMjY1OGFjYjAxZTcyMWZjZDZkMzQ4Y2MuLjViNGFlODcx
NmIwNTUzYmU0NjIzOTU1ZTk5ZTFiNDNlYmYxOGZlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5j
cHAKQEAgLTI2LDcgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBcmd1
bWVudHNJdGVyYXRvclByb3RvdHlwZS5oIgogCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMu
aCIKICNpbmNsdWRlICJKU0FyZ3VtZW50c0l0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCAyN2FjNmQ0OGE3MWY3OTU1MDJh
MTBjZWE2NDc4NjU0MTM1YTQ2M2EwLi42ZGM3YmU1Njk2OWRlNjdmNjIxMDdiYjNhNTFhMzA4ZmEz
YmE3NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVBy
b3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90
b3R5cGUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAi
SlNBcnJheUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdCdWlsZGVyLmgiCisjaW5jbHVk
ZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdKb2luZXIuaCIKICNpbmNs
dWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKQEAgLTU2LDcgKzU3
LDYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNT
bGljZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFy
cmF5UHJvdG9GdW5jU29ydChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU3BsaWNlKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNVblNoaWZ0KEV4ZWNTdGF0ZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNFdmVy
eShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5
UHJvdG9GdW5jRm9yRWFjaChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU29tZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jSW5kZXhPZihFeGVjU3RhdGUqKTsK
QEAgLTk1NCw2OSArOTU0LDYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVBy
b3RvRnVuY01hcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHRBcnJheSk7CiB9CiAKLS8vIERvY3VtZW50YXRpb24gZm9yIHRoZXNlIHRocmVlIGlzIGF2
YWlsYWJsZSBhdDoKLS8vIGh0dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3ppbGxhLm9yZy9lbi9kb2Nz
L0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6QXJyYXk6ZXZlcnkKLS8vIGh0
dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3ppbGxhLm9yZy9lbi9kb2NzL0NvcmVfSmF2YVNjcmlwdF8x
LjVfUmVmZXJlbmNlOk9iamVjdHM6QXJyYXk6Zm9yRWFjaAotLy8gaHR0cDovL2RldmVsb3Blci10
ZXN0Lm1vemlsbGEub3JnL2VuL2RvY3MvQ29yZV9KYXZhU2NyaXB0XzEuNV9SZWZlcmVuY2U6T2Jq
ZWN0czpBcnJheTpzb21lCi0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b0Z1bmNFdmVyeShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNPYmplY3QqIHRoaXNPYmogPSBl
eGVjLT5ob3N0VGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4
ZWMpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmotPmdldChleGVjLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkubGVuZ3RoKS50b1VJbnQzMihleGVjKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
Ci0KLSAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgQ2FsbERh
dGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlv
biwgY2FsbERhdGEpOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwotCi0gICAgSlNWYWx1ZSBhcHBseVRoaXMg
PSBleGVjLT5hcmd1bWVudCgxKTsKLQotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKHRy
dWUpOwotCi0gICAgdW5zaWduZWQgayA9IDA7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBl
SlMgJiYgaXNKU0FycmF5KHRoaXNPYmopKSB7Ci0gICAgICAgIEpTRnVuY3Rpb24qIGYgPSBqc0Nh
c3Q8SlNGdW5jdGlvbio+KGZ1bmN0aW9uKTsKLSAgICAgICAgSlNBcnJheSogYXJyYXkgPSBhc0Fy
cmF5KHRoaXNPYmopOwotICAgICAgICBDYWNoZWRDYWxsIGNhY2hlZENhbGwoZXhlYywgZiwgMyk7
Ci0gICAgICAgIGZvciAoOyBrIDwgbGVuZ3RoICYmICFleGVjLT5oYWRFeGNlcHRpb24oKTsgKytr
KSB7Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWFycmF5LT5jYW5HZXRJbmRleFF1aWNrbHko
aykpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBj
YWNoZWRDYWxsLnNldFRoaXMoYXBwbHlUaGlzKTsKLSAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0
QXJndW1lbnQoMCwgYXJyYXktPmdldEluZGV4UXVpY2tseShrKSk7Ci0gICAgICAgICAgICBjYWNo
ZWRDYWxsLnNldEFyZ3VtZW50KDEsIGpzTnVtYmVyKGspKTsKLSAgICAgICAgICAgIGNhY2hlZENh
bGwuc2V0QXJndW1lbnQoMiwgdGhpc09iaik7Ci0gICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGNhY2hlZENhbGwuY2FsbCgpOwotICAgICAgICAgICAgaWYgKCFyZXN1bHQudG9Cb29sZWFuKGV4
ZWMpKQotICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZh
bHNlKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZm9yICg7IGsgPCBsZW5ndGggJiYgIWV4ZWMt
PmhhZEV4Y2VwdGlvbigpOyArK2spIHsKLSAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09i
aik7Ci0gICAgICAgIGlmICghdGhpc09iai0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGssIHNsb3Qp
KQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIg
ZWFjaEFyZ3VtZW50czsKLSAgICAgICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQoc2xvdC5nZXRWYWx1
ZShleGVjLCBrKSk7Ci0gICAgICAgIGVhY2hBcmd1bWVudHMuYXBwZW5kKGpzTnVtYmVyKGspKTsK
LSAgICAgICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQodGhpc09iaik7Ci0KLSAgICAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLQotICAgICAgICBib29sIHByZWRpY2F0ZVJlc3VsdCA9IGNhbGwoZXhl
YywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgYXBwbHlUaGlzLCBlYWNoQXJndW1lbnRz
KS50b0Jvb2xlYW4oZXhlYyk7Ci0gICAgICAgIGlmICghcHJlZGljYXRlUmVzdWx0KSB7Ci0gICAg
ICAgICAgICByZXN1bHQgPSBqc0Jvb2xlYW4oZmFsc2UpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci19
Ci0KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNGb3JFYWNoKEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU09iamVjdCogdGhpc09iaiA9IGV4ZWMtPmhvc3RUaGlz
VmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCA1MTBlMzgzZmFlNTc1
YWFkYTgxNzZjMDQ0MWVlNzI1YjQzYTRjNzMyLi5kMzA0ODc3ZmU5Y2RlMWMwOTE5ZmQ0NTk1Zjgx
MWVjYWJjZTc3Mjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNo
ZS5jcHAKQEAgLTE0NCwyNCArMTQ0LDI2IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBD
b2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZNJiB2CiAgICAg
SlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZTsKICAgICBSZWZQdHI8UHJv
Z3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oJnZtLCBzb3VyY2UsIDAsIElk
ZW50aWZpZXIoKSwgSlNQYXJzZU5vcm1hbCwgSlNQYXJzZVByb2dyYW1Db2RlLCBlcnJvciwgJnBv
c2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwogICAgIGlmICghcHJvZ3JhbSkgewotICAgICAgICBB
U1NFUlQoZXJyb3IubV90eXBlICE9IFBhcnNlckVycm9yOjpFcnJvck5vbmUpOworICAgICAgICBS
RUxFQVNFX0FTU0VSVChlcnJvci5tX3R5cGUgIT0gUGFyc2VyRXJyb3I6OkVycm9yTm9uZSk7CiAg
ICAgICAgIG1fc291cmNlQ29kZS5yZW1vdmUoYWRkUmVzdWx0Lml0ZXJhdG9yKTsKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBhc3N1bWVzIGFuIGlucHV0
IHN0cmluZyB0aGF0IHdvdWxkIHJlc3VsdCBpbiBhIHNpbmdsZSBhbm9ueW1vdXMgZnVuY3Rpb24g
ZXhwcmVzc2lvbi4KICAgICBTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVtZW50ID0gcHJvZ3JhbS0+
c2luZ2xlU3RhdGVtZW50KCk7Ci0gICAgQVNTRVJUKGV4cHJTdGF0ZW1lbnQpOwotICAgIEFTU0VS
VChleHByU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQo
ZXhwclN0YXRlbWVudCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudC0+aXNFeHBy
U3RhdGVtZW50KCkpOwogICAgIEV4cHJlc3Npb25Ob2RlKiBmdW5jRXhwciA9IHN0YXRpY19jYXN0
PEV4cHJTdGF0ZW1lbnROb2RlKj4oZXhwclN0YXRlbWVudCktPmV4cHIoKTsKLSAgICBBU1NFUlQo
ZnVuY0V4cHIpOworICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmNFeHByKTsKICAgICBSRUxFQVNFX0FT
U0VSVChmdW5jRXhwci0+aXNGdW5jRXhwck5vZGUoKSk7CiAgICAgRnVuY3Rpb25Cb2R5Tm9kZSog
Ym9keSA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGZ1bmNFeHByKS0+Ym9keSgpOworICAg
IFJFTEVBU0VfQVNTRVJUKCFwcm9ncmFtLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKKyAgICAK
ICAgICBib2R5LT5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKLSAg
ICBBU1NFUlQoYm9keSk7Ci0gICAgQVNTRVJUKGJvZHktPmlkZW50KCkuaXNOdWxsKCkpOworICAg
IFJFTEVBU0VfQVNTRVJUKGJvZHkpOworICAgIFJFTEVBU0VfQVNTRVJUKGJvZHktPmlkZW50KCku
aXNOdWxsKCkpOwogCi0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhl
Y3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2Us
IGJvZHksIHRydWUpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4
ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNl
LCBib2R5LCB0cnVlLCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uKTsKICAgICBmdW5jdGlvbkV4ZWN1
dGFibGUtPm1fbmFtZVZhbHVlLnNldCh2bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBqc1N0cmluZygm
dm0sIG5hbWUuc3RyaW5nKCkpKTsKIAogICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBT
b3VyY2VDb2RlVmFsdWUodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwgbV9zb3VyY2VDb2RlLmFnZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmNwcAppbmRleCAzZjVjNjQ1YzA5OGQ1MjdmYzBjNzI1OWU5NDQ3ZWZiZTg4NjhhMjljLi4y
ZmMyYjcyN2FmY2VlZTFlYzJjNjI1ZGU1Njc1YjNiZTFjZjYwZDc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCkBAIC0yNyw3
ICsyNywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2RlZmluZSBJTklUSUFMSVpFX1BST1BFUlRZ
X05BTUUobmFtZSkgLCBuYW1lKHZtLCAjbmFtZSkKICNkZWZpbmUgSU5JVElBTElaRV9LRVlXT1JE
KG5hbWUpICwgbmFtZSMjS2V5d29yZCh2bSwgI25hbWUpCi0jZGVmaW5lIElOSVRJQUxJWkVfUFJJ
VkFURV9OQU1FKG5hbWUpICwgbmFtZSMjUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbShQcml2
YXRlTmFtZSgpKSkKKyNkZWZpbmUgSU5JVElBTElaRV9QUklWQVRFX05BTUUobmFtZSkgXAorICAg
ICwgbmFtZSMjUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbShQcml2YXRlTmFtZSgpKSkgXAor
ICAgICwgbV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIobmFtZSwgbmFtZSMjUHJpdmF0ZU5hbWUp
IFwKKwogCiBDb21tb25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMoVk0qIHZtKQogICAg
IDogbnVsbElkZW50aWZpZXIoKQpAQCAtMzgsOCArNDEsMjYgQEAgQ29tbW9uSWRlbnRpZmllcnM6
OkNvbW1vbklkZW50aWZpZXJzKFZNKiB2bSkKICAgICAsIGhhc05leHRJZGVudGlmaWVyKHZtLCAi
aGFzTmV4dCIpCiAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQoSU5JVElB
TElaRV9LRVlXT1JEKQogICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9O
QU1FKElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRSkKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZV
TkNUSU9OX05BTUUoSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKQogICAgIEpTQ19DT01NT05fUFJJ
VkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElaRV9QUklWQVRFX05B
TUUpCiB7CiB9CiAKK2NvbnN0IElkZW50aWZpZXIqIENvbW1vbklkZW50aWZpZXJzOjpnZXRQcml2
YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK3sKKyNkZWZpbmUgUkVUVVJO
X0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKG5hbWUpIGlmIChtXyMjbmFtZSMjUHVibGljU3RyaW5n
UGFpci5maXJzdCA9PSBpZGVudCkgcmV0dXJuICZtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpci5z
ZWNvbmQ7CisgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlf
TkFNRShSRVRVUk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMpCisjdW5kZWYgUkVUVVJOX0lGX1BS
SVZBVEVfTkFNRV9NQVRDSEVTCisgICAgcmV0dXJuIDA7Cit9CisKK0lkZW50aWZpZXIgQ29tbW9u
SWRlbnRpZmllcnM6OmdldFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0
Cit7CisjZGVmaW5lIFJFVFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hFUyhuYW1lKSBpZiAobV8j
I25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuc2Vjb25kID09IGlkZW50KSByZXR1cm4gbV8jI25hbWUj
I1B1YmxpY1N0cmluZ1BhaXIuZmlyc3Q7CisgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJ
RVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShSRVRVUk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMpCisj
dW5kZWYgUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTCisgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZW1wdHlJZGVudGlmaWVyOworfQorCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5oCmluZGV4IGU4ZjllZDgyYmM3OTQ2MjAzODI2NmIzMDIwNzgyMjQ3YjFmYTI3
YTMuLjkyNGQzNmFjNjkxMzUwMzU3Y2IzODJiMWVmM2I0MGEwYTA4YzBhYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMjIs
NiArMjIsNyBAQAogI2RlZmluZSBDb21tb25JZGVudGlmaWVyc19oCiAKICNpbmNsdWRlICJJZGVu
dGlmaWVyLmgiCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KIAogLy8gTWFya2VkQXJndW1lbnRCdWZmZXIgb2YgcHJvcGVydHkgbmFtZXMsIHBh
c3NlZCB0byBhIG1hY3JvIHNvIHdlIGNhbiBkbyBzZXQgdGhlbSB1cCB2YXJpb3VzCkBAIC0xMzMs
OCArMTM0LDEwIEBACiAgICAgbWFjcm8ob3NyRXhpdHMpIFwKICAgICBtYWNybyhwYXJzZSkgXAog
ICAgIG1hY3JvKHByb2ZpbGVkQnl0ZWNvZGVzKSBcCisgICAgbWFjcm8ocHJvbWlzZSkgXAogICAg
IG1hY3JvKHByb3BlcnR5SXNFbnVtZXJhYmxlKSBcCiAgICAgbWFjcm8ocHJvdG90eXBlKSBcCisg
ICAgbWFjcm8ocmVzb2x2ZSkgXAogICAgIG1hY3JvKHNldCkgXAogICAgIG1hY3JvKHNpemUpIFwK
ICAgICBtYWNybyhzbGljZSkgXApAQCAtMTU1LDcgKzE1OCwxNCBAQAogICAgIG1hY3JvKHZhbHVl
cykgXAogICAgIG1hY3JvKHZhbHVlT2YpIFwKICAgICBtYWNybyh3aW5kb3cpIFwKLSAgICBtYWNy
byh3cml0YWJsZSkKKyAgICBtYWNybyh3cml0YWJsZSkgXAorICAgIG1hY3JvKGl0ZXJhdG9yKSBc
CisgICAgbWFjcm8oaXRlcmF0b3JOZXh0KSBcCisgICAgbWFjcm8ocmVqZWN0KSBcCisgICAgbWFj
cm8oZnVsZmlsbG1lbnRIYW5kbGVyKSBcCisgICAgbWFjcm8ocmVqZWN0aW9uSGFuZGxlcikgXAor
ICAgIG1hY3JvKGRlZmVycmVkKSBcCisgICAgbWFjcm8oY291bnRkb3duSG9sZGVyKSBcCiAKICNk
ZWZpbmUgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQobWFjcm8pIFwKICAgICBt
YWNybyhicmVhaykgXApAQCAtMjAzLDcgKzIxMyw3IEBACiAgICAgbWFjcm8odm9pZCkgXAogICAg
IG1hY3JvKHdoaWxlKSBcCiAgICAgbWFjcm8od2l0aCkgXAotICAgIG1hY3JvKHlpZWxkKQorICAg
IG1hY3JvKHlpZWxkKSBcCiAKICNkZWZpbmUgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJT
X0VBQ0hfUFJPUEVSVFlfTkFNRShtYWNybykgXAogICAgIG1hY3JvKGl0ZXJhdG9yKSBcCkBAIC0y
MTYsNyArMjI2LDEyIEBACiAgICAgbWFjcm8oaW5kZXgpIFwKICAgICBtYWNybyh2YWx1ZXMpIFwK
ICAgICBtYWNybyhkZWZlcnJlZCkgXAotICAgIG1hY3JvKGNvdW50ZG93bkhvbGRlcikKKyAgICBt
YWNybyhjb3VudGRvd25Ib2xkZXIpIFwKKyAgICBtYWNybyhPYmplY3QpIFwKKyAgICBtYWNybyhU
eXBlRXJyb3IpIFwKKyAgICBtYWNybyh1bmRlZmluZWRLZXl3b3JkKSBcCisgICAgbWFjcm8oY2Fs
bCkgXAorICAgIG1hY3JvKGFwcGx5KQogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMjQwLDExICsy
NTUsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2RlZmluZSBKU0NfSURFTlRJRklF
Ul9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFt
ZTsKICAgICAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSlND
X0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJUWV9OQU1FX0dMT0JBTCkKKyAgICAgICAgSlNDX0ZP
UkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJPUEVS
VFlfTkFNRV9HTE9CQUwpCiAjdW5kZWYgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJUWV9O
QU1FX0dMT0JBTAogCi0jZGVmaW5lIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9Q
RVJUWV9OQU1FX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWUjI1ByaXZhdGVOYW1l
OworI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9H
TE9CQUwobmFtZSkgY29uc3QgSWRlbnRpZmllciBuYW1lIyNQcml2YXRlTmFtZTsgY29uc3Qgc3Rk
OjpwYWlyPElkZW50aWZpZXIsIElkZW50aWZpZXI+IG1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQYWly
OwogICAgICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9O
QU1FKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTCkK
ICN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9C
QUwKKyAgICAgICAgCisgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGdldFByaXZhdGVOYW1lKGNv
bnN0IElkZW50aWZpZXImKSBjb25zdDsKKyAgICAgICAgSWRlbnRpZmllciBnZXRQdWJsaWNOYW1l
KGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
CmluZGV4IDA3NTg3NWZiMjMxNmE1NTU3MDUwYTY2OTBjZDBmOTg4MjQ4NGY1ZjMuLjVhZjkwODc1
NGU3NDdmOGNhZTBjZDA0YWY4ZDQ5MTUwMDQ2OGMyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtNDEsNyArNDEsNyBAQAog
I2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNBY3Rp
dmF0aW9uLmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRl
ICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4
Y2VwdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzRXhjZXB0aW9ucy5jcHAKaW5kZXggNTUzMzRiZTJmOTgwYTk4ZjdmZWE0MmEwNWJlMGYyMGMw
MTlmZjBkZC4uZmE1N2MwMjY4NWU1M2Q1MjUyODgwNTdlMjExZDk4YjEwOTgxZDczZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0
aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzRXhjZXB0aW9ucy5jcHAKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJDYWxsRnJhbWUu
aCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCisj
aW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5l
cy5oIgogI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgQ29tbW9uU2xvd1BhdGhzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggMDVlMTFlMGI4MGEzNDMwYWVhYjIyYjAyMjJh
MjEyZjRhOGUyYzQ5Yi4uMzY0Y2M3MTY2NjA4YjUwMDdkNDc3ZDg3MzkxOGE1ZDY0YjE2ODY1NSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVy
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVy
cy5jcHAKQEAgLTgxLDYgKzgxLDExIEBAIEpTT2JqZWN0KiBjcmVhdGVTdGFja092ZXJmbG93RXJy
b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogSlNPYmplY3QqIGNyZWF0ZVVuZGVm
aW5lZFZhcmlhYmxlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCkKIHsKKyAgICAKKyAgICBpZiAoaWRlbnQuaW1wbCgpLT5pc0VtcHR5VW5pcXVlKCkpIHsKKyAg
ICAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2FuJ3QgZmluZCBwcml2YXRlIHZhcmlh
YmxlOiBAIiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdldFB1YmxpY05hbWUoaWRlbnQpLnN0cmlu
ZygpKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBtZXNzYWdl
KTsKKyAgICB9CiAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2FuJ3QgZmluZCB2YXJp
YWJsZTogIiwgaWRlbnQuc3RyaW5nKCkpKTsKICAgICByZXR1cm4gY3JlYXRlUmVmZXJlbmNlRXJy
b3IoZXhlYywgbWVzc2FnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmgKaW5kZXggMTk4OTc2YmIzZmU2ZTZlOTExNzk4MTJkMWNhZjliOGJmOWJmZDBiYi4u
OGQ1OTBlZjBmZmMwZWI5MGFjOGY5YTgxZDliYzI1NzIxY2QzNWM5MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtNDg0LDcgKzQ4NCw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRh
YmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigp
LCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUlu
Zm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0Fj
dGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSk7IH0K
IAogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29k
ZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mRnVuY3Rpb25E
ZWNscygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9u
RGVjbHMoKTsgfQpAQCAtNTQwLDcgKzU0MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJD
b2RlKCk7CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0
dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmlj
dE1vZGUoKSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBj
b25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwo
KSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSk7IH0KIAogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKQEAgLTYyOCw3ICs2MjgsOCBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2tGb3Ioa2luZCk7CiAgICAgfQot
ICAgICAgICAKKworICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X3VubGlua2VkRXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKTsgfQogICAgIGNvbnN0IElk
ZW50aWZpZXImIG5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZSgpOyB9
CiAgICAgY29uc3QgSWRlbnRpZmllciYgaW5mZXJyZWROYW1lKCkgeyByZXR1cm4gbV91bmxpbmtl
ZEV4ZWN1dGFibGUtPmluZmVycmVkTmFtZSgpOyB9CiAgICAgSlNTdHJpbmcqIG5hbWVWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1lVmFsdWUoKTsgfQpAQCAt
Njc1LDE0ICs2NzYsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9ib2R5SW5jbHVkZXNCcmFjZXM7
CiB9OwogCi1pbmxpbmUgYm9vbCBpc0hvc3RGdW5jdGlvbihKU1ZhbHVlIHZhbHVlLCBOYXRpdmVG
dW5jdGlvbiBuYXRpdmVGdW5jdGlvbikKLXsKLSAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpz
Q2FzdDxKU0Z1bmN0aW9uKj4oZ2V0SlNGdW5jdGlvbih2YWx1ZSkpOwotICAgIGlmICghZnVuY3Rp
b24gfHwgIWZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIGZ1bmN0aW9uLT5uYXRpdmVGdW5jdGlvbigpID09IG5hdGl2ZUZ1bmN0aW9u
OwotfQotCiBpbmxpbmUgdm9pZCBFeGVjdXRhYmxlQmFzZTo6Y2xlYXJDb2RlVmlydHVhbChFeGVj
dXRhYmxlQmFzZSogZXhlY3V0YWJsZSkKIHsKICAgICBzd2l0Y2ggKGV4ZWN1dGFibGUtPnN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCmluZGV4IGMxYjA4YWYyZDgxOGRhZTU3
ZTFiMDBmZGExNzNhODE2MTM3NTI5YjUuLjEyNDkwYzQwZjMzNDE3ZWNhOTIzODUwYTBkYzY2MmRi
YmNkNDBmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvblByb3RvdHlwZS5jcHAKQEAgLTIyLDEyICsyMiwxMyBAQAogI2luY2x1ZGUgIkZ1bmN0aW9u
UHJvdG90eXBlLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJJbnRlcnBy
ZXRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNs
dWRlICJKU1N0cmluZ0J1aWxkZXIuaCIKLSNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1
ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIkxleGVyLmgiCiAjaW5jbHVkZSAiT3Bl
cmF0aW9ucy5oIgogCkBAIC0xMDgsNyArMTA5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVl
LmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZnVu
Y3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KHRoaXNWYWx1ZSk7Ci0gICAgICAgIGlmIChmdW5j
dGlvbi0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RPckJ1
aWx0aW5GdW5jdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01h
a2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJmdW5jdGlvbiAiLCBmdW5jdGlvbi0+bmFtZShleGVj
KSwgIigpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59IikpOwogICAgICAgICBGdW5jdGlvbkV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUgPSBmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCk7CiAgICAgICAgIFN0
cmluZyBzb3VyY2VTdHJpbmcgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS50b1N0cmluZygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKaW5kZXggNzJl
ZDFjNzEyNDA2MTE2OGIwYWRkZDMxMTZmNzU1YTExN2I4ZmI5MC4uYjM3NDk0MzA5OWUyMTU1YTM5
NzcxMzMxMzQ3MDJjMmEyNGFjYzg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FjdGl2YXRpb24uY3BwCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgSlNBY3RpdmF0aW9u
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAKIGlu
bGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50
cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7
CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChw
cm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChlbnRyeS5pc051bGwoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkBAIC03Miw3ICs3Miw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6
c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90CiAK
IGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAgIFN5bWJv
bFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1l
LnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxl
KCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChlbnRyeS5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC04OSw3ICs4OSw3IEBAIGlubGluZSBib29s
IEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBBU1NFUlQoIUhlYXA6
OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwog
ICAgIAotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVH
ZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRy
eSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlm
IChlbnRyeS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChlbnRyeS5p
c1JlYWRPbmx5KCkpIHsKQEAgLTEzNiw3ICsxMzYsNyBAQCBpbmxpbmUgYm9vbCBKU0FjdGl2YXRp
b246OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJv
cAogICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIHJlZzsKICAgICB7CiAgICAgICAgIENv
bmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlKCktPm1fbG9jayk7Ci0gICAgICAg
IFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZSgpLT5maW5kKGxv
Y2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgICAgIFN5bWJvbFRhYmxlOjpN
YXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZSgpLT5maW5kKGxvY2tlciwgcHJvcGVydHlO
YW1lLnVpZCgpKTsKICAgICAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUoKS0+ZW5kKGxvY2tl
cikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkm
IGVudHJ5ID0gaXRlci0+dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwCmluZGV4IDJmY2Y4ODE1YzA1NjgwNTgxMmE3
OTkxYTVmZjA2M2Q2ODczOTcxNjQuLjlhOTI1ODNhYTBlYzkwZGJiMzI4ZWNkNTBkYzMxMzlhZWYw
MjczYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1l
bnRzSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJn
dW1lbnRzSXRlcmF0b3IuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiSlNBcmd1bWVu
dHNJdGVyYXRvci5oIgogCiAjaW5jbHVkZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheS5jcHAKaW5kZXggOTAwN2I1ZjdkM2YxMDNiMWQyMWIxYTM2NWEyNmMy
MTVjMzJiNGQyOC4uYmEwYTJkMzhlOWM1M2UxNTkzN2Q0NmE4OTUxYThjOGM0NTA3OTI2NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAj
aW5jbHVkZSAiSW5kZXhpbmdIZWFkZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKICNpbmNsdWRlICJSZWplY3Qu
aCIKICNpbmNsdWRlIDx3dGYvQVZMVHJlZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlLmNwcAppbmRleCBjY2E2ODg4YmY5OGEwMjg2NDZjYTNkZGRmMzc2Mjdj
ZTBlN2Q5MzAyLi4zMzlhN2FiN2Y1OTUxNWU5NmFmYjdlYzRiODc0MWU3YWE4ZTE2NmY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApAQCAtMzIsNyAr
MzIsOSBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dC5oIgogI2luY2x1ZGUgIkpTTm90QW5PYmplY3QuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGlu
ZXMuaCIKICNpbmNsdWRlICJOdW1iZXJPYmplY3QuaCIKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgi
CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFz
Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaApp
bmRleCBmN2M4NDQ2NDUwOTJiMjUwODA1ZTZlOGQ0ODMyYzk5OGJkYjg5YjU0Li5kNzk1ZGQ1NmE5
N2RkYjU5N2MwOTBmYzJlMGI3ZjMwOGUzM2ViY2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCkBAIC0yNyw4ICsyNywxMCBAQAogI2RlZmluZSBK
U0NlbGxJbmxpbmVzX2gKIAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvbW1v
bklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRGVmZXJHQy5oIgogI2luY2x1ZGUgIkhhbmRsZS5o
IgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAj
aW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCAyNDE5NjQ2MTBiYjQ0Mjdi
MTg2MzczMzQ2ZTI0ZjVhODJkMGNkY2M0Li5hY2U2YzE0N2U0OTdmZWUyMDI5MmZiNTUzOTc2MGQ1
ZDY5ODI5Y2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmNwcApAQCAtMzQsNyArMzQsOCBAQAogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgotI2luY2x1ZGUg
IkpTQm91bmRGdW5jdGlvbi5oIiAKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKKyNpbmNs
dWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAj
aW5jbHVkZSAiSlNOb3RBbk9iamVjdC5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCkBAIC0x
MDksNiArMTEwLDE0IEBAIHZvaWQgSlNGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBO
YXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBpbnQgbGVuZ3RoCiAgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCksIERvbnREZWxldGUg
fCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KIAorSlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6Y3Jl
YXRlQnVpbHRpbkZ1bmN0aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxl
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIEpTRnVuY3Rpb24qIGZ1bmN0
aW9uID0gY3JlYXRlKHZtLCBleGVjdXRhYmxlLCBnbG9iYWxPYmplY3QpOworICAgIGZ1bmN0aW9u
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKCZ2bSwgZXhl
Y3V0YWJsZS0+bmFtZSgpLnN0cmluZygpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVu
dW0pOworICAgIGZ1bmN0aW9uLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0
aCwganNOdW1iZXIoZXhlY3V0YWJsZS0+cGFyYW1ldGVyQ291bnQoKSksIERvbnREZWxldGUgfCBS
ZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICByZXR1cm4gZnVuY3Rpb247Cit9CisKIE9iamVjdEFs
bG9jYXRpb25Qcm9maWxlKiBKU0Z1bmN0aW9uOjpjcmVhdGVBbGxvY2F0aW9uUHJvZmlsZShFeGVj
U3RhdGUqIGV4ZWMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSkKIHsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwpAQCAtMTQyLDcgKzE1MSw3IEBAIGNvbnN0IFN0cmluZyBKU0Z1bmN0aW9uOjpjYWxj
dWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gZXhwbGlj
aXROYW1lOwogICAgIAogICAgIGNvbnN0IFN0cmluZyBhY3R1YWxOYW1lID0gbmFtZShleGVjKTsK
LSAgICBpZiAoIWFjdHVhbE5hbWUuaXNFbXB0eSgpIHx8IGlzSG9zdEZ1bmN0aW9uKCkpCisgICAg
aWYgKCFhY3R1YWxOYW1lLmlzRW1wdHkoKSB8fCBpc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQog
ICAgICAgICByZXR1cm4gYWN0dWFsTmFtZTsKICAgICAKICAgICByZXR1cm4ganNFeGVjdXRhYmxl
KCktPmluZmVycmVkTmFtZSgpLnN0cmluZygpOwpAQCAtMTUwLDEwICsxNTksMjAgQEAgY29uc3Qg
U3RyaW5nIEpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMp
CiAKIGNvbnN0IFNvdXJjZUNvZGUqIEpTRnVuY3Rpb246OnNvdXJjZUNvZGUoKSBjb25zdAogewot
ICAgIGlmIChpc0hvc3RGdW5jdGlvbigpKQorICAgIGlmIChpc0hvc3RPckJ1aWx0aW5GdW5jdGlv
bigpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gJmpzRXhlY3V0YWJsZSgpLT5zb3Vy
Y2UoKTsKIH0KKyAgICAKK2Jvb2wgSlNGdW5jdGlvbjo6aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24o
KSBjb25zdAoreworICAgIHJldHVybiBpc0hvc3RGdW5jdGlvbigpIHx8IGlzQnVpbHRpbkZ1bmN0
aW9uKCk7Cit9CisKK2Jvb2wgSlNGdW5jdGlvbjo6aXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdAor
eworICAgIHJldHVybiAhaXNIb3N0RnVuY3Rpb24oKSAmJiBqc0V4ZWN1dGFibGUoKS0+aXNCdWls
dGluRnVuY3Rpb24oKTsKK30KIAogdm9pZCBKU0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CkBAIC0yNzcsNyArMjk2LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5j
b2RlZEpTVmFsdWUgc2xvdEJhc2UKICAgICBpZiAoIWNhbGxlci5pc09iamVjdCgpIHx8ICFhc09i
amVjdChjYWxsZXIpLT5pbmhlcml0cyhKU0Z1bmN0aW9uOjppbmZvKCkpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxlcik7CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBq
c0Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxlcik7Ci0gICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RGdW5j
dGlvbigpIHx8ICFmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpKQorICAg
IGlmIChmdW5jdGlvbi0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSB8fCAhZnVuY3Rpb24tPmpz
RXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjYWxsZXIpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJGdW5jdGlvbi5jYWxsZXIgdXNlZCB0byByZXRyaWV2ZSBzdHJp
Y3QgY2FsbGVyIikpKTsKIH0KQEAgLTI5OSw3ICszMTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Z1
bmN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIHNsb3RCYXNlLCBF
bmNvZAogYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0
aW9uKj4ob2JqZWN0KTsKLSAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSkKKyAg
ICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgcmV0
dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkucHJvdG90eXBlKSB7CkBAIC0zNjEsNyArMzgwLDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU4KIHZvaWQgSlNGdW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFt
ZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdCk7Ci0gICAgaWYgKCF0aGlzT2JqZWN0LT5pc0hv
c3RGdW5jdGlvbigpICYmIChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKSB7Cisg
ICAgaWYgKCF0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpICYmIChtb2RlID09
IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKSB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSBwcm90
b3R5cGUgaGFzIGJlZW4gcmVpZmllZC4KICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09i
amVjdCk7CiAgICAgICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5
U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBz
bG90KTsKQEAgLTM3Nyw3ICszOTYsNyBAQCB2b2lkIEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsCiB2b2lkIEpT
RnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewog
ICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNlbGwpOwot
ICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RGdW5jdGlvbigpKSB7CisgICAgaWYgKHRoaXNPYmpl
Y3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpIHsKICAgICAgICAgQmFzZTo6cHV0KHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtNDI1LDcgKzQ0NCw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wCiBib29s
IEpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQogewogICAgIEpTRnVuY3Rpb24q
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdCk7Ci0gICAgaWYgKHRoaXNP
YmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdE9yQnVp
bHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShv
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pOwog
CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBl
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggN2Nk
MTRiOGMyZDgwMGY2MWJkYzEyZWRkMmRmMDRkMzVmYTA2MTliNi4uOWI1OGI3NDdjZTFmM2YzMzJk
MGY3NjBhNTc4NWI3YWMxOWViZTlmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaApAQCAtNjgsNiArNjgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIHJldHVybiBmdW5jdGlvbjsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgc3RhdGlj
IEpTRnVuY3Rpb24qIGNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJs
ZSosIEpTR2xvYmFsT2JqZWN0Kik7CisgICAgICAgIAogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0
cm95KEpTQ2VsbCopOwogICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5n
IG5hbWUoRXhlY1N0YXRlKik7CkBAIC05Nyw3ICs5OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXhlY3V0
YWJsZS5nZXQoKTsgfQogCiAgICAgICAgIC8vIFRvIGNhbGwgZWl0aGVyIG9mIHRoZXNlIG1ldGhv
ZHMgaW5jbHVkZSBFeGVjdXRhYmxlLmgKLSAgICAgICAgaW5saW5lIGJvb2wgaXNIb3N0RnVuY3Rp
b24oKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc0hvc3RGdW5jdGlvbigpIGNvbnN0OwogICAgICAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGpzRXhlY3V0YWJsZSgpIGNvbnN0OwogCiAgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIGNvbnN0IFNvdXJjZUNvZGUqIHNvdXJjZUNvZGUoKSBjb25zdDsKQEAg
LTE0NSw2ICsxNDcsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbV9h
bGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ7CiAgICAgICAgIH0KIAorICAgICAgICBib29sIGlz
SG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNCdWlsdGluRnVu
Y3Rpb24oKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hvc3RGdW5j
dGlvbk5vbklubGluZSgpIGNvbnN0OworCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBjb25zdCBz
dGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3QgfCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgT3Zl
cnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIApAQCAt
MTY5LDggKzE3NSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIAotICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7Ci0KICAg
ICAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGFyZ3VtZW50c0dldHRlcihFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CiAgICAgICAgIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBjYWxsZXJHZXR0ZXIoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgbGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCmluZGV4IGZlNGUxMTRhZGJjMjM2NzRkM2I2MGU2MWY3
MWNiN2EwNmM5NDc4NGQuLjY5ZjBkNGYzOTZlZjljMmRhOWUwYmY2MDhjMjY0NDE3MTc5OWJhNTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25Jbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGlu
ZXMuaApAQCAtNTMsMTYgKzUzLDI0IEBAIGlubGluZSBib29sIEpTRnVuY3Rpb246OmlzSG9zdEZ1
bmN0aW9uKCkgY29uc3QKIAogaW5saW5lIE5hdGl2ZUZ1bmN0aW9uIEpTRnVuY3Rpb246Om5hdGl2
ZUZ1bmN0aW9uKCkKIHsKLSAgICBBU1NFUlQoaXNIb3N0RnVuY3Rpb24oKSk7CisgICAgQVNTRVJU
KGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxOYXRp
dmVFeGVjdXRhYmxlKj4obV9leGVjdXRhYmxlLmdldCgpKS0+ZnVuY3Rpb24oKTsKIH0KIAogaW5s
aW5lIE5hdGl2ZUZ1bmN0aW9uIEpTRnVuY3Rpb246Om5hdGl2ZUNvbnN0cnVjdG9yKCkKIHsKLSAg
ICBBU1NFUlQoaXNIb3N0RnVuY3Rpb24oKSk7CisgICAgQVNTRVJUKGlzSG9zdEZ1bmN0aW9uTm9u
SW5saW5lKCkpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxOYXRpdmVFeGVjdXRhYmxlKj4obV9l
eGVjdXRhYmxlLmdldCgpKS0+Y29uc3RydWN0b3IoKTsKIH0KIAoraW5saW5lIGJvb2wgaXNIb3N0
RnVuY3Rpb24oSlNWYWx1ZSB2YWx1ZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24pCit7
CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGdldEpTRnVu
Y3Rpb24odmFsdWUpKTsKKyAgICBpZiAoIWZ1bmN0aW9uIHx8ICFmdW5jdGlvbi0+aXNIb3N0RnVu
Y3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBmdW5jdGlvbi0+bmF0
aXZlRnVuY3Rpb24oKSA9PSBuYXRpdmVGdW5jdGlvbjsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlND
CiAKICNlbmRpZiAvLyBKU0Z1bmN0aW9uSW5saW5lc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5s
aW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAppbmRleCAyZGRjMjlmNzE4OTdiYjUxZDM5MGIwNmIy
NWE3MzgzMzg3NGJhMGMxLi5lZGQzNDQ5Y2U0N2IxNzM1ZThlNWRiYjA1ZjMxOGUzZDU1ZjNiZTYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKQEAg
LTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rv
cklubGluZXNfaAogI2RlZmluZSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5s
aW5lc19oCiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkVycm9y
LmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Q29uc3RydWN0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXgg
NmRiODYyNzRjM2I4NzRhYWFkZTUxNTE4OTgyNjcyNmZiMTM2YzE3My4uZjI0ZWE3MzAzZGY5Njlk
YmQyZGNhNTJjODZkMTFjNzhjMDBkYjllYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgK
QEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
X2gKIAogI2luY2x1ZGUgIkFycmF5QnVmZmVyVmlldy5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50
aWZpZXJzLmgiCiAjaW5jbHVkZSAiRGVmZXJHQy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5j
bHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3Rv
dHlwZUlubGluZXMuaAppbmRleCA0NTk5OTdhNDY0YjkxMTk0NzdiMWJlODRlMzZjNGUyOTY2YWNl
Zjg1Li44ZTVmZjgyNzkxZTZmZjhkNGViOWMzNzM2OTFlNDMzZWI3ZDE2YWVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1By
b3RvdHlwZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaApAQCAtMjYsNiArMjYsNyBAQAog
I2lmbmRlZiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXNfaAogI2RlZmlu
ZSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXNfaAogCisjaW5jbHVkZSAi
Q29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMmMyNzRjMWE3ZDQ4
MWMwN2RmMGQyYmViM2IyOTMxYTM5MDdhNWU2Ni4uMDZlNTRjODRlNzdiOTAzMmJhYTFkMmRmNDdh
MWM3MmU4MGI3ZGVhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcApAQCAtMzQ2LDcgKzM0Niw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQogCiAgICAgLy8gQ29uc3RydWN0b3JzCiAKLSAgICBK
U0NlbGwqIG9iamVjdENvbnN0cnVjdG9yID0gT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwg
T2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblBy
b3RvdHlwZS5nZXQoKSksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKKyAgICBPYmplY3RDb25z
dHJ1Y3Rvciogb2JqZWN0Q29uc3RydWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZt
LCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9u
UHJvdG90eXBlLmdldCgpKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOworICAgIG1fb2JqZWN0
Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBvYmplY3RDb25zdHJ1Y3Rvcik7CiAgICAgSlNDZWxs
KiBmdW5jdGlvbkNvbnN0cnVjdG9yID0gRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBG
dW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Q
cm90b3R5cGUuZ2V0KCkpLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKICAgICBKU0NlbGwq
IGFycmF5Q29uc3RydWN0b3IgPSBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEFycmF5Q29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5n
ZXQoKSksIG1fYXJyYXlQcm90b3R5cGUuZ2V0KCkpOwogCkBAIC00MzIsNyArNDMzLDEwIEBAIHZv
aWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQogICAgIEdsb2JhbFBy
b3BlcnR5SW5mbyBzdGF0aWNHbG9iYWxzW10gPSB7CiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5OYU4sIGpzTmFOKCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PkluZmluaXR5LCBqc051bWJlcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5
KCkpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFBy
b3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLCBqc1VuZGVmaW5l
ZCgpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSkKKyAgICAgICAgR2xvYmFsUHJv
cGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQsIGpzVW5kZWZpbmVk
KCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJv
cGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmRQcml2YXRlTmFtZSwg
anNVbmRlZmluZWQoKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAg
ICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+T2JqZWN0UHJpdmF0ZU5hbWUs
IG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisg
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5UeXBlRXJyb3JQcml2
YXRlTmFtZSwgbV90eXBlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkpCiAgICAgfTsKICAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2Jh
bHMsIFdURl9BUlJBWV9MRU5HVEgoc3RhdGljR2xvYmFscykpOwogICAgIApAQCAtNjA4LDYgKzYx
Miw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9z
eW50YXhFcnJvckNvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV90eXBlRXJyb3JDb25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fVVJJRXJyb3JDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fb2JqZWN0Q29uc3RydWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X3Byb21pc2VDb25zdHJ1Y3Rvcik7CiAKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9ldmFsRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgKaW5kZXggYjBjYWQzZGM1NDcwZjdjN2EwZTU3MGJkY2QyZGZmYTg5NWUyYWEw
Yy4uM2E2MTZjNmYwNWVkZjFkMjk1YWY4NDQxYWE2NjUwMGZiOTJhNGE0MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC02Nyw2ICs2Nyw3
IEBAIGNsYXNzIEpTU3RhY2s7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBN
aWNyb3Rhc2s7CiBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOworY2xhc3MgT2JqZWN0Q29u
c3RydWN0b3I7CiBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgUHJvZ3JhbUV4ZWN1dGFi
bGU7CiBjbGFzcyBSZWdFeHBDb25zdHJ1Y3RvcjsKQEAgLTE1OCw2ICsxNTksNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgV3JpdGVCYXJyaWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IG1fdHlwZUVycm9y
Q29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IG1f
VVJJRXJyb3JDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8SlNQcm9taXNlQ29uc3RydWN0
b3I+IG1fcHJvbWlzZUNvbnN0cnVjdG9yOworICAgIFdyaXRlQmFycmllcjxPYmplY3RDb25zdHJ1
Y3Rvcj4gbV9vYmplY3RDb25zdHJ1Y3RvcjsKIAogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9u
PiBtX2V2YWxGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9jYWxsRnVu
Y3Rpb247CkBAIC0zMzAsNiArMzMyLDcgQEAgcHVibGljOgogICAgIFJlZ0V4cENvbnN0cnVjdG9y
KiByZWdFeHBDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwQ29uc3RydWN0b3Iu
Z2V0KCk7IH0KIAogICAgIEVycm9yQ29uc3RydWN0b3IqIGVycm9yQ29uc3RydWN0b3IoKSBjb25z
dCB7IHJldHVybiBtX2Vycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KKyAgICBPYmplY3RDb25zdHJ1
Y3Rvciogb2JqZWN0Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX29iamVjdENvbnN0cnVj
dG9yLmdldCgpOyB9CiAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogZXZhbEVycm9yQ29uc3Ry
dWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2V2YWxFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CiAg
ICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogcmFuZ2VFcnJvckNvbnN0cnVjdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9yYW5nZUVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KICAgICBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yKiByZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4g
bV9yZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CkBAIC01ODEsNyArNTg0LDcgQEAg
aW5saW5lIGJvb2wgSlNHbG9iYWxPYmplY3Q6Omhhc093blByb3BlcnR5Rm9yV3JpdGUoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUKIAogaW5saW5lIGJvb2wgSlNHbG9iYWxPYmplY3Q6OnN5
bWJvbFRhYmxlSGFzUHJvcGVydHkoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICBT
eW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5
TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xU
YWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICByZXR1cm4gIWVudHJ5
LmlzTnVsbCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5j
cHAKaW5kZXggMmI2N2ExZDllZWQ4NGU5OTU2ZjhiYjk2ODM4NGM4NGNhZWE1M2NmZi4uMmVhMmMy
NGU2ZWFiNGNkMGQ3ZmZlZDY2NWVmNGFlNDFhZjA3NTBmMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgaW5saW5l
IHZvaWQgZ2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQ2xhc3NJ
bmZvKiBjbGFzcwogICAgICAgICBpbnQgaGFzaFNpemVNYXNrID0gdGFibGUtPmNvbXBhY3RTaXpl
IC0gMTsKICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IHRhYmxlLT50YWJsZTsKICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gaGFzaFNpemVNYXNrOyArK2ksICsrZW50cnkpIHsK
LSAgICAgICAgICAgIGlmIChlbnRyeS0+a2V5KCkgJiYgKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAm
IERvbnRFbnVtKSB8fCAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgJiYgISgo
ZW50cnktPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKSAmJiBkaWRSZWlmeSkpCisgICAgICAgICAg
ICBpZiAoZW50cnktPmtleSgpICYmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBEb250RW51bSkg
fHwgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpICYmICEoKGVudHJ5LT5hdHRy
aWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikgJiYgZGlkUmVpZnkpKQogICAgICAgICAgICAg
ICAgIHByb3BlcnR5TmFtZXMuYWRkKGVudHJ5LT5rZXkoKSk7CiAgICAgICAgIH0KICAgICB9CkBA
IC0xNjE4LDcgKzE2MTgsNyBAQCB2b2lkIEpTT2JqZWN0OjpyZWlmeVN0YXRpY0Z1bmN0aW9uc0Zv
ckRlbGV0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
UHJvcGVydHlTbG90IHNsb3QodGhpcyk7CiAgICAgICAgIGZvciAoSGFzaFRhYmxlOjpDb25zdEl0
ZXJhdG9yIGl0ZXIgPSBoYXNoVGFibGUtPmJlZ2luKHZtKTsgaXRlciAhPSBoYXNoVGFibGUtPmVu
ZCh2bSk7ICsraXRlcikgewotICAgICAgICAgICAgaWYgKGl0ZXItPmF0dHJpYnV0ZXMoKSAmIEZ1
bmN0aW9uKQorICAgICAgICAgICAgaWYgKGl0ZXItPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1
bmN0aW9uKQogICAgICAgICAgICAgICAgIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KGdsb2JhbE9i
amVjdCgpLT5nbG9iYWxFeGVjKCksICppdGVyLCB0aGlzLCBJZGVudGlmaWVyKCZ2bSwgaXRlci0+
a2V5KCkpLCBzbG90KTsKICAgICAgICAgfQogICAgIH0KQEAgLTIyMzYsNiArMjIzNiwxNiBAQCB2
b2lkIEpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbgogICAgIHB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCBm
dW5jdGlvbiwgYXR0cmlidXRlcyk7CiB9CiAKK3ZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEJ1aWx0
aW5GdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFBy
b3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhl
Y3V0YWJsZSwgdW5zaWduZWQgYXR0cmlidXRlcykKK3sKKyAgICBTdHJpbmdJbXBsKiBuYW1lID0g
cHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsKKyAgICBpZiAoIW5hbWUpCisgICAgICAgIG5hbWUg
PSB2bS5wcm9wZXJ0eU5hbWVzLT5hbm9ueW1vdXMuaW1wbCgpOworICAgIEFTU0VSVChuYW1lKTsK
KyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5j
dGlvbih2bSwgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRh
YmxlKSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBwdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgZnVu
Y3Rpb24sIGF0dHJpYnV0ZXMpOworfQorCiB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGZ1bmN0aW9u
TGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNp
YywgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVy
dHlOYW1lLnB1YmxpY05hbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oCmluZGV4IDAyYjEzN2IzNTBjMmZhODMyNWJkM2I5NjQ3MTEyYWJlODc2ZjM4M2YuLmRkZTU5
N2VmZmFlYzBmMWI4ZDQ0YzI5MTE5NTAzMDFmMDYwMDdlOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkJ1dHRl
cmZseS5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNsYXNzSW5mby5oIgot
I2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiQ29weVdyaXRlQmFycmll
ci5oIgogI2luY2x1ZGUgIkRlZmVyR0MuaCIKICNpbmNsdWRlICJIZWFwLmgiCkBAIC01ODEsNiAr
NTgwLDcgQEAgcHVibGljOgogICAgIHZvaWQgcHV0RGlyZWN0VW5kZWZpbmVkKFByb3BlcnR5T2Zm
c2V0IG9mZnNldCkgeyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5zZXRVbmRlZmluZWQoKTsg
fQogCiAgICAgdm9pZCBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1
bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIHZvaWQgcHV0RGly
ZWN0QnVpbHRpbkZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5h
bWUmLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICB2b2lk
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oVk0mLCBKU0dsb2JhbE9i
amVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRp
dmVGdW5jdGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNo
b3VsZFRocm93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvbWlzZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvbWlzZUNvbnN0cnVjdG9yLmNwcAppbmRleCA0MDI2MTk2MzNmYTA2ZmQyNTRiM2YyYTdhOGNj
NzFlODA3YWFmOTExLi4xN2QyYWI2NWE4OGZmYjEzZmE5YTZjOGY1ODNjYTg0NGFmODMyMjQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29u
c3RydWN0b3IuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSlNQcm9taXNlRGVmZXJy
ZWQuaCIKICNpbmNsdWRlICJKU1Byb21pc2VGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU1Byb21p
c2VQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJM
b29rdXAuaCIKICNpbmNsdWRlICJOdW1iZXJPYmplY3QuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJ
bmxpbmVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2VEZWZlcnJlZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21p
c2VEZWZlcnJlZC5jcHAKaW5kZXggY2JjNDJlYjlmZDkyMzBmNDZlNmY4NDlmZjFhNzk1OWJkMTA3
OWJlYy4uNDI3MTBjMzA1NDRhMTFjNzU0N2MzY2Y4ODhiOTZhNDhjNDY4YTA3MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmNwcApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTUHJv
bWlzZUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlRnVuY3Rpb25zLmgiCisjaW5j
bHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgi
CiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHAKaW5kZXggOWRmNDU3ODE3Y2E4MDNkMzczMjgyNDJm
YzMzZWNhNzQ1ZWQ0MDQzMS4uZTRjYTVhNDZkOTFiYjgwNDI0Yjg2MmU5MzI0OTIzN2JmYzUzZTdh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJv
dG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQ
cm90b3R5cGUuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSlNQcm9taXNlRGVmZXJy
ZWQuaCIKICNpbmNsdWRlICJKU1Byb21pc2VGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU1Byb21p
c2VSZWFjdGlvbi5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk1p
Y3JvdGFzay5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUmVhY3Rpb24uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlYWN0aW9uLmgKaW5kZXggZmM3MTQ2
YzUwZTg0OWQzMzBkODllNjNmYzE5Y2E2NDlkM2MwZTg0OC4uNDJkMjQ5NmExZmNkYWJiYzExZGM3
YmIyNzdkZDEyM2UyYTRkZTIxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9taXNlUmVhY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb21pc2VSZWFjdGlvbi5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEpTUHJv
bWlzZVJlYWN0aW9uX2gKIAogI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIkpTU3RyaW5n
SW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRl
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5jcHAKaW5kZXggNjhhOGJkODdkMzhhZGJiYjlkZDJhYzllYzRiNDlkNWVmNDU0OWQ1
Ni4uMjM3YzQyYmIwZGEwZjE2Njc2ZWIxMWFkZTgxODBhN2IwNmQ5OGViNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5jcHAKQEAgLTI5LDcgKzI5LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmgKaW5kZXggZjQzNjJmZjM1NGVlNmE1MDIyMWJiNzMxZDFhMjYxMWU2ZGQ2MWJjMC4uZDA3Mzcx
OWRlMTYwZDJmMjkyMTEwYTU5NmExMDVlMmZhMjExNWZmYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaApAQCAtMzEs
NyArMzEsNiBAQAogCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU1N0cmluZy5o
IgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5o
IgogI2luY2x1ZGUgPG1lbW9yeT4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nLmgKaW5kZXggMmIxY2RkZGM1ODQxZDYwZDE1N2EyZTYxZjcwMmIwZWU1ZmExZDY3Ni4uZTM5
MzQxNjBhZWE5MjZlZjE1OTMyZjg3OTBlMjRjNTJhZjAyZDM1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC0yNCw3ICsyNCw2IEBACiAjZGVmaW5lIEpTU3Ry
aW5nX2gKIAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgotI2luY2x1ZGUgIkNvbW1vbklkZW50aWZp
ZXJzLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlByb3BlcnR5RGVzY3Jp
cHRvci5oIgogI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgpAQCAtNDcyLDMzICs0NzEsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4ganNOb250cml2aWFsU3Ry
aW5nKCZleGVjLT52bSgpLCBzKTsgfQogICAgIGlubGluZSBKU1N0cmluZyoganNPd25lZFN0cmlu
ZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4ganNPd25lZFN0cmlu
ZygmZXhlYy0+dm0oKSwgcyk7IH0KIAotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6
Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQotICAgIHsKLSAgICAgICAgaWYgKHByb3BlcnR5
TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7Ci0gICAgICAgICAgICBzbG90
LnNldFZhbHVlKHRoaXMsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBqc051bWJl
cihtX2xlbmd0aCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAg
ICAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKLSAgICAgICAgaWYgKGkg
PCBtX2xlbmd0aCkgewotICAgICAgICAgICAgQVNTRVJUKGkgIT0gUHJvcGVydHlOYW1lOjpOb3RB
bkluZGV4KTsgLy8gTm8gbmVlZCBmb3IgYW4gZXhwbGljaXQgY2hlY2ssIHRoZSBhYm92ZSB0ZXN0
IHdvdWxkIGFsd2F5cyBmYWlsIQotICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250
RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIGkpKTsKLSAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAg
ICAgICAgIAotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCi0gICAgewotICAgICAgICBpZiAocHJvcGVydHlOYW1lIDwgbV9sZW5ndGgpIHsK
LSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBn
ZXRJbmRleChleGVjLCBwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQogICAgIGlubGluZSBi
b29sIGlzSlNTdHJpbmcoSlNWYWx1ZSB2KSB7IHJldHVybiB2LmlzQ2VsbCgpICYmIHYuYXNDZWxs
KCktPmNsYXNzSW5mbygpID09IEpTU3RyaW5nOjppbmZvKCk7IH0KIAogICAgIC8vIC0tLSBKU1Zh
bHVlIGlubGluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTI4LDMyICs1MDAs
NiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIHRvV1RGU3RyaW5nU2xvd0Nhc2Uo
ZXhlYyk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBTdHJpbmcgaW5saW5lSlNWYWx1ZU5v
dFN0cmluZ3RvU3RyaW5nKGNvbnN0IEpTVmFsdWUmIHZhbHVlLCBFeGVjU3RhdGUqIGV4ZWMpCi0g
ICAgewotICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgICAgICBpZiAodmFsdWUuaXNJ
bnQzMigpKQotICAgICAgICAgICAgcmV0dXJuIHZtLm51bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZS5h
c0ludDMyKCkpOwotICAgICAgICBpZiAodmFsdWUuaXNEb3VibGUoKSkKLSAgICAgICAgICAgIHJl
dHVybiB2bS5udW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNEb3VibGUoKSk7Ci0gICAgICAgIGlm
ICh2YWx1ZS5pc1RydWUoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT50
cnVlS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzRmFsc2UoKSkKLSAgICAg
ICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5mYWxzZUtleXdvcmQuc3RyaW5nKCk7Ci0g
ICAgICAgIGlmICh2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0
eU5hbWVzLT5udWxsS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzVW5kZWZp
bmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5
d29yZC5zdHJpbmcoKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIFN0cmluZyBKU1ZhbHVlOjp0b1dU
RlN0cmluZ0lubGluZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAo
aXNTdHJpbmcoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU1N0cmluZyo+KGFz
Q2VsbCgpKS0+dmFsdWUoZXhlYyk7Ci0KLSAgICAgICAgcmV0dXJuIGlubGluZUpTVmFsdWVOb3RT
dHJpbmd0b1N0cmluZygqdGhpcywgZXhlYyk7Ci0gICAgfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MK
IAogI2VuZGlmIC8vIEpTU3RyaW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmdJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzc4YzA1ZmM4MGQ4OGU4NTM3YzlkMmE1
ZWFiOWZmMGJhOWI2MGE3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTU3RyaW5n
SW5saW5lc19oCisjZGVmaW5lIEpTU3RyaW5nSW5saW5lc19oCisKKyNpbmNsdWRlICJDb21tb25J
ZGVudGlmaWVycy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAi
SlNTdHJpbmcuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0FMV0FZU19JTkxJTkUgYm9vbCBKU1N0
cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGlmIChwcm9wZXJ0eU5h
bWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgeworICAgICAgICBzbG90LnNldFZh
bHVlKHRoaXMsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBqc051bWJlcihtX2xl
bmd0aCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQg
aSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGkgPCBtX2xlbmd0aCkgeworICAg
ICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOyAvLyBObyBuZWVkIGZv
ciBhbiBleHBsaWNpdCBjaGVjaywgdGhlIGFib3ZlIHRlc3Qgd291bGQgYWx3YXlzIGZhaWwhCisg
ICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBnZXRJbmRl
eChleGVjLCBpKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK0FMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJv
cGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCit7CisgICAgaWYgKHByb3BlcnR5TmFtZSA8IG1fbGVuZ3RoKSB7CisgICAg
ICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBnZXRJbmRleChl
eGVjLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAor
ICAgIHJldHVybiBmYWxzZTsKK30KKworQUxXQVlTX0lOTElORSBTdHJpbmcgaW5saW5lSlNWYWx1
ZU5vdFN0cmluZ3RvU3RyaW5nKGNvbnN0IEpTVmFsdWUmIHZhbHVlLCBFeGVjU3RhdGUqIGV4ZWMp
Cit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBpZiAodmFsdWUuaXNJbnQzMigpKQor
ICAgICAgICByZXR1cm4gdm0ubnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVlLmFzSW50MzIoKSk7Cisg
ICAgaWYgKHZhbHVlLmlzRG91YmxlKCkpCisgICAgICAgIHJldHVybiB2bS5udW1lcmljU3RyaW5n
cy5hZGQodmFsdWUuYXNEb3VibGUoKSk7CisgICAgaWYgKHZhbHVlLmlzVHJ1ZSgpKQorICAgICAg
ICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+dHJ1ZUtleXdvcmQuc3RyaW5nKCk7CisgICAgaWYg
KHZhbHVlLmlzRmFsc2UoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPmZhbHNl
S2V5d29yZC5zdHJpbmcoKTsKKyAgICBpZiAodmFsdWUuaXNOdWxsKCkpCisgICAgICAgIHJldHVy
biB2bS5wcm9wZXJ0eU5hbWVzLT5udWxsS2V5d29yZC5zdHJpbmcoKTsKKyAgICBpZiAodmFsdWUu
aXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5l
ZEtleXdvcmQuc3RyaW5nKCk7CisgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKTsKK30KKyAgICAKK0FMV0FZU19JTkxJTkUgU3RyaW5nIEpTVmFsdWU6OnRvV1RGU3Ry
aW5nSW5saW5lKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBpZiAoaXNTdHJpbmcoKSkK
KyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTU3RyaW5nKj4oYXNDZWxsKCkpLT52YWx1ZShl
eGVjKTsKKyAgICAKKyAgICByZXR1cm4gaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKCp0
aGlzLCBleGVjKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKaW5kZXggMmFjMjUyNGM1ZGZk
YTNkMTIyNDlkNzc5MGFkYzMxMjllM2MwZTg3MS4uZmJjOGI4OTVlYWU2YWY3ODg4MzliZWI1ZTgz
ZDdiNmI5NzkyOGZhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKQEAgLTY0LDYgKzY0LDggQEAgdm9pZCBKU1N5bWJv
bFRhYmxlT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXQKICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIodGhpc09iamVj
dC0+c3ltYm9sVGFibGUoKS0+bV9sb2NrKTsKICAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRl
cmF0b3IgZW5kID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+ZW5kKGxvY2tlcik7CiAgICAg
ICAgIGZvciAoU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXQgPSB0aGlzT2JqZWN0LT5zeW1i
b2xUYWJsZSgpLT5iZWdpbihsb2NrZXIpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAg
IGlmIChpdC0+a2V5LT5pc0VtcHR5VW5pcXVlKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICBpZiAoIShpdC0+dmFsdWUuZ2V0QXR0cmlidXRlcygpICYgRG9udEVudW0p
IHx8IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKQogICAgICAgICAgICAgICAg
IHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgaXQtPmtleS5nZXQoKSkpOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJv
bFRhYmxlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRh
YmxlT2JqZWN0LmgKaW5kZXggYjViMjBhODQ1YjZhYjY0NDI0YjM3ZTMxYjI3NzRlZjkwNTM1M2Y3
Zi4uZDAzYjI0NTExYzJkZTE5NTlmYjVmNTZkNjQ5YzY0ZDBlZmUwNjg1NSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaApAQCAt
NzIsNyArNzIsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKIHsKICAgICBTeW1ib2xU
YWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgIENvbmN1cnJl
bnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAgU3ltYm9sVGFibGU6
Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5h
bWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0g
c3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGl0
ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+dmFsdWU7CkBAIC04Nyw3ICs4
Nyw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogewogICAgIFN5bWJvbFRhYmxlJiBz
eW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgQ29uY3VycmVudEpJVExv
Y2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICBTeW1ib2xUYWJsZTo6TWFwOjpp
dGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJs
aWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xU
YWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoaXRlciA9PSBz
eW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFN5bWJv
bFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1ZTsKQEAgLTEwNCw3ICsxMDQsNyBA
QCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKIHsKICAgICBTeW1ib2xUYWJsZSYgc3ltYm9s
VGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgIENvbmN1cnJlbnRKSVRMb2NrZXIg
bG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0
b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpKTsKKyAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUu
ZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGl0ZXIgPT0gc3ltYm9s
VGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBTeW1ib2xUYWJs
ZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+dmFsdWU7CkBAIC0xMjYsNyArMTI2LDcgQEAgaW5s
aW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoCiAgICAgewogICAgICAgICBTeW1ib2xUYWJsZSYgc3lt
Ym9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBHQ1NhZmVDb25jdXJy
ZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2ssIGV4ZWMtPnZtKCkuaGVhcCk7
Ci0gICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5m
aW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgICAgIFN5bWJvbFRh
YmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVy
dHlOYW1lLnVpZCgpKTsKICAgICAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tl
cikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJvb2wgd2FzRmF0OwpAQCAt
MTU5LDcgKzE1OSw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMo
CiAgICAgewogICAgICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1i
b2xUYWJsZSgpOwogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJs
ZS5tX2xvY2spOwotICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3lt
Ym9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgICAg
ICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2Nr
ZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxl
LmVuZChsb2NrZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBTeW1ib2xU
YWJsZUVudHJ5JiBlbnRyeSA9IGl0ZXItPnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0xvb2t1cC5jcHAKaW5kZXggYTgwNmRkMDUyYTBjYmVlNGNhYzJjYWE2ZTA4YzY3MTYwMDVj
MjcwYy4uYTk3NjUyMDFiOWY1MTg2NDE0MjNkZGUwZmUwZTJlNTFhOGNlNzNiYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQg
SGFzaFRhYmxlOjpkZWxldGVUYWJsZSgpIGNvbnN0CiBib29sIHNldFVwU3RhdGljRnVuY3Rpb25T
bG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIHRo
aXNPYmosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICBBU1NFUlQodGhpc09iai0+Z2xvYmFsT2JqZWN0KCkpOwotICAgIEFTU0VSVChlbnRyeS0+
YXR0cmlidXRlcygpICYgRnVuY3Rpb24pOworICAgIEFTU0VSVChlbnRyeS0+YXR0cmlidXRlcygp
ICYgQnVpbHRpbk9yRnVuY3Rpb24pOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgdW5z
aWduZWQgYXR0cmlidXRlczsKICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSB0aGlzT2JqLT5n
ZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CkBAIC03OSw5ICs3
OSwxMyBAQCBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqCiAgICAgICAgIGlmICh0aGlzT2JqLT5zdGF0
aWNGdW5jdGlvbnNSZWlmaWVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0g
ICAgICAgIHRoaXNPYmotPnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKAotICAgICAgICAgICAgdm0s
IHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5mdW5jdGlvbkxl
bmd0aCgpLAotICAgICAgICAgICAgZW50cnktPmZ1bmN0aW9uKCksIGVudHJ5LT5pbnRyaW5zaWMo
KSwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygp
ICYgQnVpbHRpbikKKyAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlv
bih2bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZW50cnktPmJ1aWx0
aW5HZW5lcmF0b3IoKSh2bSksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKAorICAgICAgICAg
ICAgICAgIHZtLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBlbnRyeS0+
ZnVuY3Rpb25MZW5ndGgoKSwKKyAgICAgICAgICAgICAgICBlbnRyeS0+ZnVuY3Rpb24oKSwgZW50
cnktPmludHJpbnNpYygpLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAgICAgICAgfQogICAgICAg
ICBvZmZzZXQgPSB0aGlzT2JqLT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0
cmlidXRlcyk7CiAgICAgICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKaW5kZXggYmRlODNkNGE2ZmMzNTU3
Nzg1MGUzMWU4OGJjMzlmZDA1ZjdiY2U1Mi4uZGJhMzg5ZTllMjQzZGQwZWNiMmJhOThmMzk0ZDQw
NzlmOWRlYTkzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9v
a3VwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKQEAgLTQz
LDYgKzQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgLy8gaWUuIHR5cGVkZWYgSlNWYWx1ZSAo
KkdldEZ1bmN0aW9uKShFeGVjU3RhdGUqLCBKU09iamVjdCogYmFzZU9iamVjdCkKICAgICB0eXBl
ZGVmIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIEdldEZ1bmN0aW9uOwogICAgIHR5cGVkZWYg
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmMgUHV0RnVuY3Rpb247CisgICAgdHlwZWRlZiBG
dW5jdGlvbkV4ZWN1dGFibGUqICgqQnVpbHRpbkdlbmVyYXRvcikoVk0mKTsKIAogICAgIGNsYXNz
IEhhc2hFbnRyeSB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjgsMTEg
KzY5LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1faW50cmluc2lj
OwogICAgICAgICB9CiAKKyAgICAgICAgQnVpbHRpbkdlbmVyYXRvciBidWlsdGluR2VuZXJhdG9y
KCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgQnVpbHRpbik7IHJldHVybiBtX3UuYnVp
bHRpbkdlbmVyYXRvci5nZW5lcmF0b3JWYWx1ZTsgfQogICAgICAgICBOYXRpdmVGdW5jdGlvbiBm
dW5jdGlvbigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKTsgcmV0dXJu
IG1fdS5mdW5jdGlvbi5mdW5jdGlvblZhbHVlOyB9CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgZnVu
Y3Rpb25MZW5ndGgoKSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBGdW5jdGlvbik7IHJl
dHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihtX3UuZnVuY3Rpb24ubGVuZ3RoKTsgfQog
Ci0gICAgICAgIEdldEZ1bmN0aW9uIHByb3BlcnR5R2V0dGVyKCkgY29uc3QgeyBBU1NFUlQoISht
X2F0dHJpYnV0ZXMgJiBGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5LmdldDsgfQotICAg
ICAgICBQdXRGdW5jdGlvbiBwcm9wZXJ0eVB1dHRlcigpIGNvbnN0IHsgQVNTRVJUKCEobV9hdHRy
aWJ1dGVzICYgRnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0eS5wdXQ7IH0KKyAgICAgICAg
R2V0RnVuY3Rpb24gcHJvcGVydHlHZXR0ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1fYXR0cmlidXRl
cyAmIEJ1aWx0aW5PckZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVydHkuZ2V0OyB9CisgICAg
ICAgIFB1dEZ1bmN0aW9uIHByb3BlcnR5UHV0dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0dHJp
YnV0ZXMgJiBCdWlsdGluT3JGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5LnB1dDsgfQog
CiAgICAgICAgIGludHB0cl90IGxleGVyVmFsdWUoKSBjb25zdCB7IEFTU0VSVCghbV9hdHRyaWJ1
dGVzKTsgcmV0dXJuIG1fdS5sZXhlci52YWx1ZTsgfQogCkBAIC05NCw2ICs5NiwxMCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBpbnRwdHJfdCBsZW5ndGg7IC8vIG51bWJlciBv
ZiBhcmd1bWVudHMgZm9yIGZ1bmN0aW9uCiAgICAgICAgICAgICB9IGZ1bmN0aW9uOwogICAgICAg
ICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICBCdWlsdGluR2VuZXJhdG9yIGdlbmVyYXRv
clZhbHVlOworICAgICAgICAgICAgICAgIGludHB0cl90IHVudXNlZDsKKyAgICAgICAgICAgIH0g
YnVpbHRpbkdlbmVyYXRvcjsKKyAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAg
R2V0RnVuY3Rpb24gZ2V0OwogICAgICAgICAgICAgICAgIFB1dEZ1bmN0aW9uIHB1dDsKICAgICAg
ICAgICAgIH0gcHJvcGVydHk7CkBAIC0yMDksNyArMjE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgcHJpdmF0ZToKICAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBIYXNoRW50cnkqIGVudHJ5
KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAg
IFN0cmluZ0ltcGwqIGltcGwgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOworICAgICAgICAg
ICAgU3RyaW5nSW1wbCogaW1wbCA9IHByb3BlcnR5TmFtZS51aWQoKTsKICAgICAgICAgICAgIGlm
ICghaW1wbCkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgCkBAIC0yNDksNyAr
MjU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGlmICghZW50cnkpIC8vIG5vdCBmb3Vu
ZCwgZm9yd2FyZCB0byBwYXJlbnQKICAgICAgICAgICAgIHJldHVybiBQYXJlbnRJbXA6OmdldE93
blByb3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCi0gICAg
ICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pCisgICAgICAgIGlmIChlbnRy
eS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pCiAgICAgICAgICAgICByZXR1cm4g
c2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoZXhlYywgZW50cnksIHRoaXNPYmosIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiAKICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09iaiwgZW50
cnktPmF0dHJpYnV0ZXMoKSwgZW50cnktPnByb3BlcnR5R2V0dGVyKCkpOwpAQCAtMjg2LDcgKzI5
Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpZiAoIWVudHJ5KSAvLyBub3QgZm91bmQs
IGZvcndhcmQgdG8gcGFyZW50CiAgICAgICAgICAgICByZXR1cm4gUGFyZW50SW1wOjpnZXRPd25Q
cm9wZXJ0eVNsb3QodGhpc09iaiwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIAotICAgICAg
ICBBU1NFUlQoIShlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pKTsKKyAgICAgICAgQVNT
RVJUKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSk7CiAKICAgICAg
ICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09iaiwgZW50cnktPmF0dHJpYnV0ZXMoKSwg
ZW50cnktPnByb3BlcnR5R2V0dGVyKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI5NSw3
ICszMDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgdm9pZCBwdXRFbnRyeShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0KiBiYXNlLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QpCiAgICAgewogICAgICAgICAvLyBJZiB0aGlzIGlzIGEgZnVuY3Rpb24gcHV0IGl0IGFzIGFu
IG92ZXJyaWRlIHByb3BlcnR5LgotICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEZ1
bmN0aW9uKSB7CisgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVu
Y3Rpb24pIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdCogdGhpc09iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8SlNPYmplY3QqPihzbG90LnRoaXNWYWx1ZSgpKSkKICAgICAgICAgICAgICAgICB0aGlz
T2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgUmVhZE9ubHkpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVj
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IuY3BwCmluZGV4IGQ1ZTcyOGMyY2QxMDIwYTQ3ZTRhZGNkNjQ5Y2QxZmZmYTVjZDZhODMu
LmRjYTJmZDhkMWY2YWMyM2I4ZmY4MTdjYmIxOGZhYWU3YmNkNTk3MDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3Iu
Y3BwCkBAIC0zOCw2ICszOCwyMCBAQCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiB9CiAKK3ZvaWQg
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3Qg
U3RyaW5nJiBuYW1lKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBuYW1lKTsKKyAg
ICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAgCisgICAgTmF0aXZlRXJyb3JQcm90b3R5
cGUqIHByb3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1lLCB0aGlzKTsKKyAgICAKKyAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIERvbnREZWxldGUg
fCBSZWFkT25seSB8IERvbnRFbnVtKTsgLy8gRUNNQSAxNS4xMS43LjUKKyAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RGVsZXRlIHwg
UmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgbV9lcnJvclN0cnVjdHVyZS5zZXQodm0sIHRoaXMs
IEVycm9ySW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUpKTsKKyAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZSk7CisgICAgQVNTRVJUKG1fZXJyb3JT
dHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOworfQorCiB2b2lkIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAg
ICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PE5hdGl2ZUVycm9y
Q29uc3RydWN0b3IqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAppbmRleCA3NDBkM2Y5MzMyOTJmZDJhY2Ni
NGI5OTAzNDQzMTJiOTMxOWFlMTEwLi40MzhhM2FmYjliYjBmNjQxMmM5NzkzMjIzMGM4ODcxMDk2
MWY1NDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVF
cnJvckNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0
aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCkBAIC01MSwxOSArNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fZXJyb3JTdHJ1
Y3R1cmUuZ2V0KCk7IH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogcHJv
dG90eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBuYW1lKTsKLSAgICAgICAgICAgIEFTU0VSVChp
bmhlcml0cyhpbmZvKCkpKTsKLQotICAgICAgICAgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHBy
b3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlU3RydWN0dXJlLCBuYW1lLCB0aGlzKTsKLQotICAgICAgICAgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBEb250RGVsZXRlIHwg
UmVhZE9ubHkgfCBEb250RW51bSk7IC8vIEVDTUEgMTUuMTEuNy41Ci0gICAgICAgICAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Ci0gICAgICAgICAgICBtX2Vycm9yU3RydWN0dXJl
LnNldCh2bSwgdGhpcywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSkpOwotICAgICAgICAgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUp
OwotICAgICAgICAgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwotICAg
ICAgICB9CisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVy
ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlT
bG90LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAppbmRl
eCBkOTM4ZmEzMTY0NWFmMjZiNzU4NTE0ZGI2YjI0NzhmMTgzZTllZWUxLi5jZmU5YzRkMzJiYTc2
OGM3NGU0ZmZiYjE5MTM1Mjc5ZGViZjExNzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eVNsb3QuaApAQCAtNDIsNiArNDIsOCBAQCBlbnVtIEF0dHJpYnV0ZSB7
CiAgICAgRnVuY3Rpb24gICAgID0gMSA8PCA0LCAgLy8gcHJvcGVydHkgaXMgYSBmdW5jdGlvbiAt
IG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIEFjY2Vzc29yICAgICA9IDEgPDwg
NSwgIC8vIHByb3BlcnR5IGlzIGEgZ2V0dGVyL3NldHRlcgogICAgIEN1c3RvbUFjY2Vzc29yID0g
MSA8PCA2LAorICAgIEJ1aWx0aW4gICAgICAgICA9IDEgPDwgNywgLy8gcHJvcGVydHkgaXMgYSBi
dWlsdGluIGZ1bmN0aW9uIC0gb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCisgICAgQnVp
bHRpbk9yRnVuY3Rpb24gPSBCdWlsdGluIHwgRnVuY3Rpb24sIC8vIGhlbHBlciBvbmx5IHVzZWQg
Ynkgc3RhdGljIGhhc2h0YWJsZXMKIH07CiAKIGNsYXNzIFByb3BlcnR5U2xvdCB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKaW5k
ZXggYmM1MTZiMDZkNjY1MWYwZTY4MmEyMDE3YmRmOGIwM2JhYmVkNmVhMi4uMmMyNDM0Yjg3ZDA0
Zjc0OWNiMTJlNjAyYWI1NDc4NDk0NmE5MWYxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcApAQCAtMjMsNiArMjMsNyBAQAog
I2luY2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgiCiAKICNpbmNsdWRlICJFcnJvci5oIgorI2lu
Y2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNs
dWRlICJSZWdFeHBNYXRjaGVzQXJyYXkuaCIKICNpbmNsdWRlICJSZWdFeHBQcm90b3R5cGUuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3Bw
CmluZGV4IDg5ZDdhYzFiOGNiZjFkYjBlMTI2ZjFmYzc5NmRmZDVmYzg0YjJlNTkuLjlkZGEwYmE4
ZGUxNDEyZWFmNGQyOTFkY2YwYzZiMzk2NTdmYjY3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcApAQCAtMjQsNyArMjQsNyBAQAog
I2luY2x1ZGUgIkFycmF5UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRl
ICJKU0FycmF5LmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFs
dWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAppbmRleCBiMjAzODg4ZDNjMTZjZGEzYzAwMzUwNjIw
OGFlMDg2OTVkYzVkYWFhLi5kMDI2NmE1OWVmM2Y1NWFhMzY5NGY1Zjc0MThjZjc4ZTBhZTBkOGIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3Iu
Y3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTZXQuaCIKKyNpbmNsdWRlICJKU1N0
cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJNYXBEYXRhLmgiCiAjaW5jbHVkZSAiU2V0UHJvdG90
eXBlLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3Qu
Y3BwCmluZGV4IDQ0MGE2MDk0MjE5MzM4MDMxZTU5MjdhZjQ2YjI4OWRiY2ZiNWE3MjguLjgwZTdl
YWE4YzQ5MWNiNmQ1NGE4MzI0Y2U2NDdhNmNkYjdlODg3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAtMjIsNyArMjIsOSBAQAogI2lu
Y2x1ZGUgIlN0cmluZ09iamVjdC5oIgogCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJK
U0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVk
ZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUg
IlByb3BlcnR5TmFtZUFycmF5LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCmluZGV4IDA0MjkxZjdlOGRkMjRlOGFiMzNkNzVhZjFkYTQ1NjhmMmJjOTll
NjguLjFlY2FiODVjMGJkYjI4Njk4OTQ1NzdhNzQxMjU0ZTM2NDQxNDlkODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMjcsMTIgKzI3LDE4IEBA
CiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNs
dWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkR1bXBDb250ZXh0LmgiCisjaW5j
bHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAi
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgog
I2luY2x1ZGUgIkxvb2t1cC5oIgorI2luY2x1ZGUgIlByb3BlcnR5TWFwSGFzaFRhYmxlLmgiCiAj
aW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGlu
ZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlu
bGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCIKICNpbmNsdWRl
IDx3dGYvQ29tbWFQcmludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRl
ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDUyY2NmNDIzYTEwNDNl
MTA3OWYyZDhiMTg5NDIxOTg5MGU3MWYyYmMuLjAyMDY5NWZhYzgzZWQ0ZTUxODViNzBlNjk2OTk2
M2EyZGU5YTM2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTMyLDYg
KzMyLDcgQEAKICNpbmNsdWRlICJBcmdMaXN0LmgiCiAjaW5jbHVkZSAiQXJpdHlDaGVja0ZhaWxS
ZXR1cm5UaHVua3MuaCIKICNpbmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQu
aCIKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWVJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29kZUNhY2hlLmgi
CkBAIC01NSw3ICs1Niw5IEBACiAjaW5jbHVkZSAiSlNBUElWYWx1ZVdyYXBwZXIuaCIKICNpbmNs
dWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCi0jaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlND
ZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRl
ICJKU05hbWVTY29wZS5oIgpAQCAtNjgsMTMgKzcxLDE2IEBACiAjaW5jbHVkZSAiTG9va3VwLmgi
CiAjaW5jbHVkZSAiTWFwRGF0YS5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCisjaW5jbHVkZSAiUGFy
c2VyLmgiCiAjaW5jbHVkZSAiUGFyc2VyQXJlbmEuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eU1hcEhh
c2hUYWJsZS5oIgogI2luY2x1ZGUgIlJlZ0V4cENhY2hlLmgiCiAjaW5jbHVkZSAiUmVnRXhwT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJTb3VyY2VQcm92aWRlckNhY2hlLmgiCiAjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24u
aCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5l
cy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiV2Vha01hcERh
dGEuaCIKICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CkBAIC0yMjYsNiArMjMyLDcgQEAgVk06
OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9pbkRlZmluZU93
blByb3BlcnR5KGZhbHNlKQogICAgICwgbV9jb2RlQ2FjaGUoQ29kZUNhY2hlOjpjcmVhdGUoKSkK
ICAgICAsIG1fZW5hYmxlZFByb2ZpbGVyKG51bGxwdHIpCisgICAgLCBtX2J1aWx0aW5FeGVjdXRh
YmxlcyhCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgaW50ZXJwcmV0
ZXIgPSBuZXcgSW50ZXJwcmV0ZXIoKnRoaXMpOwogICAgIFN0YWNrQm91bmRzIHN0YWNrID0gd3Rm
VGhyZWFkRGF0YSgpLnN0YWNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA1
YTg0MTA1ZWFmYjdhYmJhNWZhNDMxZWVlZGQ1NWQ3YTg5ZjU1Y2UyLi42OTU4YWMzOTNiMWFlZmMw
YmVmYmY2ZTRlYjhiNjgyNWNmN2M5YTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
QEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJQcml2YXRlTmFtZS5oIgogI2luY2x1ZGUgIlBy
b3RvdHlwZU1hcC5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgorI2luY2x1ZGUgIlNvdXJj
ZUNvZGUuaCIKICNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMu
aCIKICNpbmNsdWRlICJUeXBlZEFycmF5Q29udHJvbGxlci5oIgpAQCAtNjksNiArNzAsNyBAQAog
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcml0eUNoZWNrRmFpbFJldHVyblRodW5rczsK
KyAgICBjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXM7CiAgICAgY2xhc3MgQ29kZUJsb2NrOwogICAg
IGNsYXNzIENvZGVDYWNoZTsKICAgICBjbGFzcyBDb21tb25JZGVudGlmaWVyczsKQEAgLTQ5Nyw2
ICs0OTksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCByZWdpc3RlcldhdGNocG9p
bnRGb3JJbXB1cmVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyJiwgV2F0Y2hwb2ludCopOwogICAg
ICAgICAvLyBGSVhNRTogVXNlIEF0b21pY1N0cmluZyBvbmNlIGl0IGdvdCBtZXJnZWQgd2l0aCBJ
ZGVudGlmaWVyLgogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFkZEltcHVyZVByb3Bl
cnR5KGNvbnN0IFN0cmluZyYpOworICAgICAgICAKKyAgICAgICAgQnVpbHRpbkV4ZWN1dGFibGVz
KiBidWlsdGluRXhlY3V0YWJsZXMoKSB7IHJldHVybiBtX2J1aWx0aW5FeGVjdXRhYmxlcy5nZXQo
KTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKQEAgLTUzNywxMCArNTQxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpT
VmFsdWUgbV9leGNlcHRpb247CiAgICAgICAgIGJvb2wgbV9pbkRlZmluZU93blByb3BlcnR5Owog
ICAgICAgICBPd25QdHI8Q29kZUNhY2hlPiBtX2NvZGVDYWNoZTsKLSAgICAgICAgUmVmQ291bnRl
ZEFycmF5PFN0YWNrRnJhbWU+IG1fZXhjZXB0aW9uU3RhY2s7Ci0KICAgICAgICAgTGVnYWN5UHJv
ZmlsZXIqIG1fZW5hYmxlZFByb2ZpbGVyOwotCisgICAgICAgIE93blB0cjxCdWlsdGluRXhlY3V0
YWJsZXM+IG1fYnVpbHRpbkV4ZWN1dGFibGVzOworICAgICAgICBSZWZDb3VudGVkQXJyYXk8U3Rh
Y2tGcmFtZT4gbV9leGNlcHRpb25TdGFjazsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0
cjxXYXRjaHBvaW50U2V0Pj4gbV9pbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnRTZXRzOwogICAgIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUv
SlNTdHJpbmdJbmxpbmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50
aW1lL0pTU3RyaW5nSW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwZmNjMzg0ZThlZGZjMzRiMTQwODNi
ODY1ZDM3MzgyMGY0MTY1YzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3
YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCkBAIC0wLDAgKzEsNCBAQAor
I2lmbmRlZiBXZWJDb3JlX0ZXRF9KU1N0cmluZ0lubGluZXNfaAorI2RlZmluZSBXZWJDb3JlX0ZX
RF9KU1N0cmluZ0lubGluZXNfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nSW5s
aW5lcy5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdp
bnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcAppbmRleCAyZWRkY2RiYjlm
MDA2Y2E3NjI2NjUwYjQyMDI3ODYyNmI5MjYxNDE3Li4zYzRlMGQ3YmJiMzFjYWIxMmI1ZTZjOTc1
Yzc0ZDNmNDg0ZTljYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdp
bnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAKQEAgLTQ2LDYgKzQ2
LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1
ZUlubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ0lubGluZXMuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJREJBbnlDdXN0b20uY3BwCmluZGV4IDU2NDljODVjYTA5NTg3NzQ4YTNkYTA2Y2RkZDBjYTk5
OWU1MGI4ZTcuLjNmNGQ4ZWZhZWI1N2YzMzAwM2U3M2E3ZTc4NDJlNDJjNzNjZTY0OTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFueUN1c3RvbS5jcHAKQEAgLTQ3LDYg
KzQ3LDcgQEAKICNpbmNsdWRlICJKU0lEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSlNJREJU
cmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1
ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5j
cHAKaW5kZXggOWVhZTc1NjljNzA2MDNhNGZlZDBhZjE0YzRmODcxOGNkZTY0YTZlMS4uZjQ5ZGZl
OTBiNGU4MmQzOWVkY2JmOWJhMjlmMmFlNzk5YzBkZGYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKQEAgLTM3LDcgKzM3LDcg
QEAKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIkpTSURCT2JqZWN0U3Rv
cmUuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1N0
cmluZy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SURCT2JqZWN0U3RvcmVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJ
REJPYmplY3RTdG9yZUN1c3RvbS5jcHAKaW5kZXggNzRmZDM1NGIyODYwN2NmNzgyMmY4MDUzNDc5
NzBmNWQ3YWM4YzgzMi4uNTQzNGIzYjdkNmM1NmVjYjBhMDNhMjc5NGM2NzM2YTlhZGZiNzBlMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9y
ZUN1c3RvbS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5o
IgogI2luY2x1ZGUgIkpTSURCSW5kZXguaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0j
aW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJ
bmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwCmluZGV4IGQxYjQ3MjEz
NTFlYjFiMmJmOGNlMGNkNDczZmVlMTQ0OTE0YzUzYWIuLmYxZGFhOGExMDQ2YjMzZmEzZDM1YTY2
YzU1OWVlMGZhZjJhZGU2NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUg
Ik5vZGVGaWx0ZXIuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAjaW5jbHVkZSA8cnVu
dGltZS9KU0xvY2suaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5ZDA2NmY1ZTFhMDA0ZmJkNGQ1NzQwZTQ5N2M4
MjhjOWJlOGY5MGRhLi45MDkyZTE3MDlkNmZmMjZkYWU2ZjI5MjNjNzUxY2I2OGFlMzM2MDVlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFw
cGxlLmNvbT4KKworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWls
dGlucyBpbiBKUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTI3ODg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXBkYXRlZCB0aGUgdGVzdCByZXN1bHRzIGZvciBuZXcgZXJyb3IgbWVzc2FnZXMgKG5vdyB0
aGF0IHRoZXkncmUKKyAgICAgICAgYWN0dWFsbHkgaGVscGZ1bCksIGFuZCBhZGRlZCBhIGpzLXJl
Z3Jlc3MgdGVzdCB0byB0cmFjayBwZXJmb3JtYW5jZS4KKworICAgICAgICAqIGpzL2FycmF5LWV2
ZXJ5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3Bl
cnRpZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBl
LWV2ZXJ5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9hcnJheS1w
cm90b3R5cGUtZXZlcnkuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQt
dGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QxKToK
KyAgICAgICAgKHRlc3QyKToKKyAgICAgICAgKHRlc3QzKToKKwogMjAxNC0wMS0zMCAgQWxleGV5
IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2Nyb3NzLW9yaWdpbi1wbHVnaW4tcHJpdmF0ZS1icm93c2luZy10b2dnbGVkLmh0bWwgaXMg
Zmxha3kgb24gV0syCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJheS1ldmVyeS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQKaW5kZXgg
NTQxYjhjMzU4ZjA2OGEwY2VhODgyYzEwNTE3NTMyNTExNGNkMzNmNy4uY2NhMzYzZGNlNThmYmE5
NWE1OGNlNDZmY2I0OGMzOGJmNThhZGY1OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvYXJy
YXktZXZlcnktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5LWV4
cGVjdGVkLnR4dApAQCAtMzAsMTIgKzMwLDEyIEBAIFBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5l
dmVyeShpc0JpZ0Vub3VnaEFuZEV4Y2VwdGlvbikgdGhyZXcgZXhjZXB0aW9uIGV4Y2VwdGlvCiBQ
QVNTIFsxMiwgNTQsIDE4LCAxMzAsIDQ0XS5ldmVyeShpc0JpZ0Vub3VnaEFuZEV4Y2VwdGlvbikg
dGhyZXcgZXhjZXB0aW9uIGV4Y2VwdGlvbiBmcm9tIGZ1bmN0aW9uLgogCiA1LjAgV3JvbmcgVHlw
ZSBmb3IgQ2FsbGJhY2sgVGVzdAotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KDUpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMw
LCA0NF0uZXZlcnkoJ3dyb25nJykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJv
ci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShuZXcgT2JqZWN0KCkpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0u
ZXZlcnkobnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1Mg
WzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwg
NDRdLmV2ZXJ5KDUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5l
dmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0
NF0uZXZlcnkoJ3dyb25nJykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90
eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAx
MzAsIDQ0XS5ldmVyeShuZXcgT2JqZWN0KCkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFy
cmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsx
MiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkobnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
QXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1Mg
WzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24u
CitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgog
CiA2LjAgRWFybHkgRXhpdCAoIlNob3J0IENpcmN1aXRpbmciKQogUEFTUyBbMTIsIDUsIDgsIDEz
MCwgNDRdLmV2ZXJ5KGlzQmlnRW5vdWdoU2hvcnRDaXJjdWl0KSBpcyBmYWxzZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBl
Y3RlZC50eHQKaW5kZXggMmMyYTY4Y2IxMDZkYTEwZjA4NmIyMmM1YmYyYmY1YzhmZTc5ZTMzZS4u
NWQ5ZWNiNzVhOGRhNzliYTY1NjA1ZTdlYjljZjhmYzI1ZmUxOGFmYiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvanMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9qcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0
ZWQudHh0CkBAIC0xNSw3ICsxNSw3IEBAIFBBU1MgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwo
dW5kZWZpbmVkLCAwLCAxKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlCiBQQVNTIEFy
cmF5LnByb3RvdHlwZS5zb3J0LmNhbGwodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90
eXBlLnNvcnQuY2FsbCh1bmRlZmluZWQpJykuCiBQQVNTIEFycmF5LnByb3RvdHlwZS5zcGxpY2Uu
Y2FsbCh1bmRlZmluZWQsIDAsIDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5l
ZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNh
bGwodW5kZWZpbmVkLCAwLCAxKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUudW5zaGlmdC5jYWxs
KHVuZGVmaW5lZCwge30pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBu
b3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUudW5zaGlmdC5jYWxsKHVu
ZGVmaW5lZCwge30pJykuCi1QQVNTIEFycmF5LnByb3RvdHlwZS5ldmVyeS5jYWxsKHVuZGVmaW5l
ZCwgdG9TdHJpbmcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3Qg
YW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUuZXZlcnkuY2FsbCh1bmRlZmlu
ZWQsIHRvU3RyaW5nKScpLgorUEFTUyBBcnJheS5wcm90b3R5cGUuZXZlcnkuY2FsbCh1bmRlZmlu
ZWQsIHRvU3RyaW5nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUu
ZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVmaW5lZC4KIFBBU1MgQXJyYXku
cHJvdG90eXBlLmZvckVhY2guY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJy
YXkucHJvdG90eXBlLmZvckVhY2guY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKScpLgogUEFTUyBB
cnJheS5wcm90b3R5cGUuc29tZS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdB
cnJheS5wcm90b3R5cGUuc29tZS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpJykuCiBQQVNTIEFy
cmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwodW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXku
cHJvdG90eXBlLmluZGV4T2YuY2FsbCh1bmRlZmluZWQsIDApJykuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTI5MGMwZWVmZjhkZTQyMTgzM2Q5MmQyN2U5NTI0MTkxNzYwNGI5NgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2
ZXJ5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3MvYXJyYXktcHJvdG90
eXBlLWV2ZXJ5CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2Vw
dGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlw
ZS1ldmVyeS5odG1sIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZl
cnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZTVjYzE3MWM0ODc1YTM1ODViZjE0ZTU0MTVmNWNkMGU1ODFk
NTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90
b3R5cGUtZXZlcnkuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InNjcmlwdC10ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVz
dHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3Jp
cHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5NGFhMTYxYzBj
ZTk4YjJhYjE4YTNhMWExZjBkZmFhYzlkN2QyZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuanMKQEAg
LTAsMCArMSwyOSBAQAordmFyIHJlc3VsdCA9IDA7CitmdW5jdGlvbiB0ZXN0MShhKSB7CisgICAg
cmVzdWx0IDw8IDE7CisgICAgcmVzdWx0Kys7CisgICAgcmV0dXJuIHRydWU7Cit9CitmdW5jdGlv
biB0ZXN0MihhLGIpIHsKKyAgICByZXN1bHQgXj0gMzsKKyAgICByZXN1bHQgKj0gMzsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KK2Z1bmN0aW9uIHRlc3QzKGEsYixjKSB7CisgICAgcmVzdWx0IF49IHJl
c3VsdCA+PiAxOworICAgIHJldHVybiB0cnVlOworfQorCit2YXIgcmVzdWx0ID0gMDsKK3ZhciBh
cnJheSA9IFtdCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKQorICAgIGFycmF5W2ld
ID0gMTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7CisgICAgYXJyYXkuZXZlcnko
dGVzdDEpOworICAgIGFycmF5LmV2ZXJ5KHRlc3QyKTsKKyAgICBhcnJheS5ldmVyeSh0ZXN0Myk7
Cit9CisKK2lmIChyZXN1bHQgIT0gMTQyODgxMDQ5NikKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCBy
ZXN1bHQ6ICIgKyByZXN1bHQ7CmRpZmYgLS1naXQgYS9HTlVtYWtlZmlsZS5hbSBiL0dOVW1ha2Vm
aWxlLmFtCmluZGV4IDczZmM0OTI4YzRkZDQ5YjU0OTg2OWI1MDY3OGM2YmRlNzRmNDQ3NjAuLjA4
YzkxMTU0MjYwNTAwZGUzZmYwNGIwMjBjZTBkNjBmOThlOGNmZTggMTAwNjQ0Ci0tLSBhL0dOVW1h
a2VmaWxlLmFtCisrKyBiL0dOVW1ha2VmaWxlLmFtCkBAIC02OCw2ICs2OCw3IEBAIEFMTF9NT0ZJ
TEVTIDo9CiBkb21fYmluZGluZ19pZGxzIDo9CiB3dGZfc291cmNlcyA6PQogamF2YXNjcmlwdGNv
cmVfaF9hcGkgOj0KK2phdmFzY3JpcHRjb3JlX2J1aWx0aW5zX2pzX25vc291cmNlcyA6PQogamF2
YXNjcmlwdGNvcmVfY3BwZmxhZ3M6PQogamF2YXNjcmlwdGNvcmVfY2ZsYWdzIDo9CiBqYXZhc2Ny
aXB0Y29yZV9zb3VyY2VzIDo9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222820</attachid>
            <date>2014-01-31 09:03:20 -0800</date>
            <delta_ts>2014-01-31 10:27:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140131090315.patch</filename>
            <type>text/plain</type>
            <size>201657</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NjgxMzcxYWU2ZDBjYWZlNDJmNWNmN2E1NWI3MjRjMTc5ODExYjBhLi44OWQ0ZmRmOGYwMzA2Y2M5
ZjFiNmM5NDVlZWY3ZDRlMTczOGFhOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
VGhlIHJlc3VsdCBvZiB0aGlzIHJlZmFjdG9yaW5nCisgICAgICAgIGlzIHRoYXQgQ29tbW9uSWRl
bnRpZmllcnMsIGFuZCBhIGZldyBvdGhlciBtaXNjZWxsYW5lb3VzIGhlYWRlcnMgbm93CisgICAg
ICAgIG5lZWQgdG8gYmUgaW5jbHVkZWQgZGlyZWN0bHkgYXMgdGhleSB3ZXJlIGZvcm1lcmx5IGNh
cHR1cmVkIHRocm91Z2ggb3RoZXIKKyAgICAgICAgcGF0aHMuCisKKyAgICAgICAgSW4gYWRkaXRp
b24gdGhpcyBhZGRzIGEgZmxhZyB0byB0aGUgTG9va3VwIHRhYmxlJ3MgaGFzaGVudHJ5IHRvIGlu
ZGljYXRlCisgICAgICAgIHRoYXQgYSBzdGF0aWMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgYmFja2Vk
IGJ5IEpTLiBUaGVyZSBpcyB0aGVuIGEgbG90IG9mCisgICAgICAgIGxvZ2ljIHRvIHRocmVhZCB0
aGUgc3BlY2lhbCBuYXR1cmUgb2YgdGhlIGZ1bmN0b24gdG8gd2hlcmUgaXQgbWF0dGVycy4KKyAg
ICAgICAgVGhpcyBhbGxvd3MgdG9TdHJpbmcoKSwgLmNhbGxlciwgZXRjIHRvIG1pbWljIHRoZSBi
ZWhhdmlvdXIgb2YgYSBob3N0CisgICAgICAgIGZ1bmN0aW9uLgorCisgICAgICAgIE5vdGVzIG9u
IHdyaXRpbmcgYnVpbHRpbnM6CisgICAgICAgICAtIEVhY2ggZnVuY3Rpb24gaXMgY29tcGlsZWQg
aW5kZXBlbmRlbnRseSBvZiB0aGUgb3RoZXJzLCBhbmQgdGhvc2UKKyAgICAgICAgICAgaW1wbGVt
ZW50YXRpb25zIGNhbm5vdCBjdXJyZW50bHkgY2FwdHVyZSBhbGwgZ2xvYmFsIHByb3BlcnRpZXMg
KGFzCisgICAgICAgICAgIHRoYXQgY291bGQgYmUgcG90ZW50aWFsbHkgdW5zYWZlKS4gSWYgYSBm
dW5jdGlvbiBkb2VzIGNhcHR1cmUgYQorICAgICAgICAgICBnbG9iYWwgd2Ugd2lsbCBkZWxpYmVy
YXRlbHkgY3Jhc2guCisgICAgICAgICAtIEZvciB0aG9zZSAiZ2xvYmFsIiBwcm9wZXJ0aWVzIHRo
YXQgd2UgZG8gd2FudCBhY2Nlc3MgdG8sIHdlIHVzZQorICAgICAgICAgICB0aGUgQCBwcmVmaXgs
IGUuZy4gT2JqZWN0KHRoaXMpIGJlY29tZXMgQE9iamVjdCh0aGlzKS4gVGhlIEAgaWRlbnRpZmll
cnMKKyAgICAgICAgICAgYXJlIHByaXZhdGUgbmFtZXMsIGFuZCBiZWhhdmUganVzdCBsaWtlIHJl
Z3VsYXIgcHJvcGVydGllcywgb25seQorICAgICAgICAgICB3aXRob3V0IHRoZSByaXNrIG9mIGFk
dWx0ZXJhdGlvbi4gQWdhaW4sIGluIHRoZSBAT2JqZWN0IGNhc2UsIHdlCisgICAgICAgICAgIGV4
cGxpY2l0bHkgZHVwbGljYXRlIHRoZSBPYmplY3RDb25zdHJ1Y3RvciByZWZlcmVuY2Ugb24gdGhl
IEdsb2JhbE9iamVjdAorICAgICAgICAgICBzbyB0aGF0IHdlIGhhdmUgZ3VhcmFudGVlZCBhY2Nl
c3MgdG8gdGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhlCisgICAgICAgICAgIGNvbnN0cnVjdG9y
LgorICAgICAgICAgLSBjYWxsLCBhcHBseSwgZXZhbCwgYW5kIEZ1bmN0aW9uIGFyZSBhbGwgcmVq
ZWN0ZWQgaWRlbnRpZmllcnMsIGFnYWluCisgICAgICAgICAgIHRvIHByZXZlbnQgYW55dGhpbmcg
ZnJvbSBhY2NpZGVudGFsbHkgdXNpbmcgYW4gYWR1bHRlcmF0ZWQgb2JqZWN0LgorICAgICAgICAg
ICBJbnN0ZWFkIEBjYWxsIGFuZCBAYXBwbHkgYXJlIGF2YWlsYWJsZSwgYW5kIGhhcHBpbHkgdGhl
eSBjb21wbGV0ZWx5CisgICAgICAgICAgIGRyb3AgdGhlIG5lcV9wdHIgaW5zdHJ1Y3Rpb24gYXMg
dGhleSdyZSBkZWZpbmVkIGFzIGFsd2F5cyBiZWluZyB0aGUKKyAgICAgICAgICAgb3JpZ2luYWwg
Y2FsbC9hcHBseSBmdW5jdGlvbnMuCisKKyAgICAgICAgVGhlc2UgcmVzdHJpY3Rpb25zIGFyZSBq
dXN0IGludGVuZGVkIHRvIG1ha2UgaXQgaGFyZGVyIHRvIGFjY2lkZW50YWxseQorICAgICAgICBt
YWtlIGNoYW5nZXMgdGhhdCBhcmUgaW5jb3JyZWN0IChmb3IgaW5zdGFuY2UgY2FsbGluZyB3aGF0
ZXZlciBoYXMgYmVlbgorICAgICAgICBhc3NpZ25lZCB0byBnbG9iYWwuT2JqZWN0LCBpbnN0ZWFk
IG9mIHRoZSBvcmlnaW5hbCBjb25zdHJ1Y3RvciBmdW5jdGlvbikuCisgICAgICAgIEhvd2V2ZXIs
IG1ha2luZyBhIG1pc3Rha2UgbGlrZSB0aGlzIHNob3VsZCByZXN1bHQgaW4gYSBwdXJlbHkgc2Vt
YW50aWMKKyAgICAgICAgZXJyb3IgYXMgZnVuZGFtZW50YWxseSB0aGVzZSBmdW5jdGlvbnMgYXJl
IHRyZWF0ZWQgYXMgdGhvdWdoIHRoZXkgd2VyZQorICAgICAgICByZWd1bGFyIEpTIGNvZGUgaW4g
dGhlIGhvc3QgZ2xvYmFsLCBhbmQgaGF2ZSBubyBtb3JlIHByaXZpbGVnZXMgdGhhbgorICAgICAg
ICBhbnkgb3RoZXIgSlMuCisKKyAgICAgICAgVGhlIGluaXRpYWwgcHJvb2Ygb2YgY29uY2VwdCBp
cyBBcnJheS5wcm90b3R5cGUuZXZlcnksIHRoaXMgc2hvd3MgYSA2NSUKKyAgICAgICAgcGVyZm9y
bWFuY2UgaW1wcm92ZW1lbnQsIGFuZCB0aGF0IGltcHJvdmVtZW50IGlzIHNpZ25pZmljYW50bHkg
aHVydCBieQorICAgICAgICBvdXIgcG9vciBvcHRpbWlzYXRpb24gb2Ygb3BfaW4uCisKKyAgICAg
ICAgQXMgdGhpcyBpcyBzdWNoIGEgbGltaXRlZCBmdW5jdGlvbiwgd2UgaGF2ZSBub3QgeWV0IGV4
cG9ydGVkIGFsbCBzeW1ib2xzCisgICAgICAgIHRoYXQgd2UgY291bGQgcG9zc2libHkgbmVlZCwg
YnV0IGFzIHdlIGltcGxlbWVudCBtb3JlLCB0aGUgbGlrZWxpaG9vZAorICAgICAgICBvZiBlbmNv
dW50ZXJpbmcgbWlzc2luZyBmZWF0dXJlcyB3aWxsIHJlZHVjZS4KKworICAgICAgICBUaGlzIGRp
ZCByZXF1aXJlIGJyZWFraW5nIG91dCBhIEpTU3RyaW5nSW5saW5lcyBoZWFkZXIsIGFuZCByZXF1
aXJlZAorICAgICAgICBmaXhpbmcgYSBmZXcgb2JqZWN0cyB0aGF0IHdlcmUgdHJ5aW5nIHRvIHVz
aW5nIFByb3BlcnR5TmFtZTo6cHVibGljTmFtZQorICAgICAgICByYXRoZXIgdGhhbiBQcm9wZXJ0
eU5hbWU6OnVpZC4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6
CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQpOgorICAg
ICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZSk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGljRnVuY3Rpb25HZXR0
ZXIpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGxiYWNrR2V0
dGVyKToKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy5tYWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
YnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzOgorICAgICAgICAoZXZlcnkpOgorICAgICAgICAq
IGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpC
dWlsdGluRXhlY3V0YWJsZXM6OkJ1aWx0aW5FeGVjdXRhYmxlcyk6CisgICAgICAgIChKU0M6OkJ1
aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ1
aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0
YWJsZXM6OmNyZWF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdX
YXRjaHBvaW50LmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAoSlND
OjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUp
OgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9y
KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToK
KyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpF
eGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OnRvU3RyaWN0bmVzcyk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjppc0J1aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChKU0M6OlVubGlua2Vk
Q29kZUJsb2NrOjppc0J1aWx0aW5GdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzQnVpbHRpbkZ1bmN0aW9u
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Om1ha2VGdW5jdGlvbik6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkNhbGxG
dW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpBcHBseUZ1
bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogY3JlYXRlX2hhc2hf
dGFibGU6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGdlbmVy
YXRlLWpzLWJ1aWx0aW5zOiBBZGRlZC4KKyAgICAgICAgKGdldENvcHlyaWdodCk6CisgICAgICAg
IChnZXRGdW5jdGlvbnMpOgorICAgICAgICAoZ2VuZXJhdGVDb2RlKToKKyAgICAgICAgKG1hbmds
ZU5hbWUpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKElkZW50aWZp
ZXIpOgorICAgICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAgICAgICAoU291cmNlQ29kZSk6Cisg
ICAgICAgIChVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChWTSk6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAqIGludGVycHJldGVy
L1Byb3RvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgICog
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAqIGpzYy5jcHA6CisgICAg
ICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAqIHBhcnNlci9BU1RCdWls
ZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKToK
KyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6TGV4
ZXIpOgorICAgICAgICAoSlNDOjppc1NhZmVJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4
ZXI8TENoYXI+OjpwYXJzZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpMZXhlcjxVQ2hhcj46
OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpsZXgpOgorICAgICAg
ICAqIHBhcnNlci9MZXhlci5oOgorICAgICAgICAoSlNDOjppc1NhZmVJZGVudGlmaWVyKToKKyAg
ICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIpOgorICAgICAgICAqIHBh
cnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpzZXRDbG9zZWRWYXJp
YWJsZXMpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpTY29wZU5v
ZGU6OmNhcHR1cmVkVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6U2NvcGVOb2RlOjpzZXRDbG9z
ZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQcm9ncmFtTm9kZTo6Y2xvc2VkVmFyaWFibGVz
KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OlBhcnNlcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUlubmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmRpZEZpbmlzaFBhcnNp
bmcpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cHJpbnRVbmV4cGVjdGVkVG9r
ZW5UZXh0KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
OjpnZXRVc2VkVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVz
Lmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlclRva2Vucy5oOgorICAgICAgICAqIHJ1bnRpbWUv
QXJnTGlzdC5jcHA6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvQXJndW1lbnRzLmg6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHNJdGVyYXRv
ckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0
RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Q29t
bW9uSWRlbnRpZmllcnMpOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Z2V0UHJp
dmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Z2V0UHVibGljTmFt
ZSk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQ
YXRoc0V4Y2VwdGlvbnMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5j
cHA6CisgICAgICAgIChKU0M6OmNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6
ZXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6ZXhlY3V0
YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1
bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6ZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9K
U0FjdGl2YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxl
R2V0KToKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dCk6CisgICAg
ICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyk6Cisg
ICAgICAgICogcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcDoKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlND
ZWxsSW5saW5lcy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAg
IChKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZSk6CisgICAgICAgIChKU0M6OkpTRnVu
Y3Rpb246OnNvdXJjZUNvZGUpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjppc0hvc3RPckJ1
aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzQnVpbHRpbkZ1bmN0
aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKToKKyAgICAgICAg
KEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVy
dHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmg6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
OjpyZXNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjpvYmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpzeW1ib2xUYWJsZUhhc1Byb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGVsZXRlKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5j
cHA6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAg
ICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90
KToKKyAgICAgICAgKEpTQzo6aW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKToKKyAgICAg
ICAgKEpTQzo6SlNWYWx1ZTo6dG9XVEZTdHJpbmdJbmxpbmUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNTeW1ib2xUYWJsZU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTU3ltYm9sVGFibGVPYmpl
Y3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgICAgIERvbid0IHJlcG9y
dCBwcml2YXRlIG5hbWVzLgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5o
OgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZUdldCk6CisgICAgICAgIChKU0M6OnN5bWJvbFRh
YmxlUHV0KToKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyk6Cisg
ICAgICAgICogcnVudGltZS9Mb29rdXAuY3BwOgorICAgICAgICAoSlNDOjpzZXRVcFN0YXRpY0Z1
bmN0aW9uU2xvdCk6CisgICAgICAgICogcnVudGltZS9Mb29rdXAuaDoKKyAgICAgICAgKEpTQzo6
SGFzaEVudHJ5OjpidWlsdGluR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpw
cm9wZXJ0eUdldHRlcik6CisgICAgICAgIChKU0M6Okhhc2hFbnRyeTo6cHJvcGVydHlQdXR0ZXIp
OgorICAgICAgICAoSlNDOjpIYXNoVGFibGU6OmVudHJ5KToKKyAgICAgICAgKEpTQzo6Z2V0U3Rh
dGljUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6Z2V0U3RhdGljVmFsdWVTbG90KToKKyAg
ICAgICAgKEpTQzo6cHV0RW50cnkpOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaDoK
KyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVn
RXhwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5jcHA6CisgICAgICAgICogcnVudGltZS9T
dHJ1Y3R1cmUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpW
TTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6Vk06OmJ1aWx0
aW5FeGVjdXRhYmxlcyk6CisKIDIwMTQtMDEtMjkgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxl
LmNvbT4KIAogICAgICAgICBGVEwgc2hvdWxkIHN1cHBvcnQgR2V0QnlJZChVbnR5cGVkOikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCAxYWQ2OTc0ODhiMGM0YjhiNGNmYWUyOTEzNTQyNTliNmRhY2ZkYzQ1Li5mM2Mz
ZDcxNzFkMDU0NDgwZWM2MDU0MGMwZDUyNTk5NmVlY2RiOWEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBKUwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRpbmcg
Zm9yIHRoZSBuZXdseSByZXF1aXJlZCBoZWFkZXJzLgorCisgICAgICAgIFRlc3Q6IGpzL3JlZ3Jl
c3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwKKworICAgICAgICAqIEZvcndhcmRpbmdIZWFk
ZXJzL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMv
cGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNJREJBbnlDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCRGF0
YWJhc2VDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVD
dXN0b20uY3BwOgorCiAyMDE0LTAxLTMwICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgV2ViR0wgbG9hZCBwb2xpY3kgc2hvdWxkIGJlIHF1ZXJpZWQgZm9yIHRo
ZSB0b3AgbGV2ZWwgZG9jdW1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCmluZGV4IDViZTA1M2YxZTA4NmI0M2U2ODZj
MzY3NGRhZTdjNTE2MDVhMjg2ZTcuLjBlY2VkNTFmM2UyZDViNjIxZGFkZjA1NzQ5ZjVlNzQ2NmEw
NmY1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09i
amVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdEZ1bmN0aW9ucy5oCkBAIC0xMzYsNyArMTM2LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGUKICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CiAgICAg
UmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0Ns
YXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNz
ID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIC8vIG9wdGlvbmFsIG9wdGlt
aXphdGlvbiB0byBieXBhc3MgZ2V0UHJvcGVydHkgaW4gY2FzZXMgd2hlbiB3ZSBvbmx5IG5lZWQg
dG8ga25vdyBpZiB0aGUgcHJvcGVydHkgZXhpc3RzCiAgICAgICAgICAgICBpZiAoSlNPYmplY3RI
YXNQcm9wZXJ0eUNhbGxiYWNrIGhhc1Byb3BlcnR5ID0ganNDbGFzcy0+aGFzUHJvcGVydHkpIHsK
QEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcAogICAgIFJlZlB0cjxP
cGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwogICAgIEpTVmFsdWVSZWYgdmFsdWVSZWYg
PSB0b1JlZihleGVjLCB2YWx1ZSk7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBw
cm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBw
cm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0
aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50
Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdFNldFByb3BlcnR5Q2FsbGJhY2sgc2V0
UHJvcGVydHkgPSBqc0NsYXNzLT5zZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIGlmICgh
cHJvcGVydHlOYW1lUmVmKQpAQCAtMzQzLDcgKzM0Myw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvCiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmplY3QpOwogICAgIFJl
ZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwogICAgIAotICAgIGlmIChTdHJp
bmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJp
bmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFz
c1JlZiBqc0NsYXNzID0gdGhpc09iamVjdC0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9
IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgICAgICBpZiAoSlNPYmplY3REZWxldGVQ
cm9wZXJ0eUNhbGxiYWNrIGRlbGV0ZVByb3BlcnR5ID0ganNDbGFzcy0+ZGVsZXRlUHJvcGVydHkp
IHsKICAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5TmFtZVJlZikKQEAgLTU2NCw3ICs1NjQs
NyBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0U3RhdGljVmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcAogewogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYg
PSB0b1JlZih0aGlzKTsKICAgICAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5
TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5
TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IGNsYXNzUmVm
KCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAg
ICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZSogc3RhdGljVmFsdWVzID0ganND
bGFzcy0+c3RhdGljVmFsdWVzKGV4ZWMpKSB7CiAgICAgICAgICAgICAgICAgaWYgKFN0YXRpY1Zh
bHVlRW50cnkqIGVudHJ5ID0gc3RhdGljVmFsdWVzLT5nZXQobmFtZSkpIHsKQEAgLTYwMCw3ICs2
MDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1
bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRQogICAgIGlmIChQYXJlbnQ6OmdldE93blBy
b3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QyKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90Mi5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUp
KTsKIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUo
KSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CiAg
ICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iai0+Y2xhc3NSZWYoKTsganND
bGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgICAgICBpZiAo
T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlKiBzdGF0aWNGdW5jdGlvbnMgPSBqc0Ns
YXNzLT5zdGF0aWNGdW5jdGlvbnMoZXhlYykpIHsKICAgICAgICAgICAgICAgICBpZiAoU3RhdGlj
RnVuY3Rpb25FbnRyeSogZW50cnkgPSBzdGF0aWNGdW5jdGlvbnMtPmdldChuYW1lKSkgewpAQCAt
NjI2LDcgKzYyNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6
Y2FsbGJhY2tHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkCiAgICAgSlNPYmplY3RSZWYg
dGhpc1JlZiA9IHRvUmVmKHRoaXNPYmopOwogICAgIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJv
cGVydHlOYW1lUmVmOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlO
YW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlO
YW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iai0+
Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAg
ICAgICAgICAgICBpZiAoSlNPYmplY3RHZXRQcm9wZXJ0eUNhbGxiYWNrIGdldFByb3BlcnR5ID0g
anNDbGFzcy0+Z2V0UHJvcGVydHkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5TmFt
ZVJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAyN2JjNGMxN2YzZGZl
ZWI2MWQyNTIzMjNmZDg3OGM0NDc4MGY3NGM1Li4zY2E4Mzg2NDljOTE0MDczOWQ5NDkyMmFlYzFl
ZDk5NWYwZmE3N2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01LDYg
KzUsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMiCiAgICAgIiR7SkFWQVNDUklQVENP
UkVfRElSfS9hc3NlbWJsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9iaW5kaW5ncyIK
KyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zIgogICAgICIke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vYnl0ZWNvZGUiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9ieXRlY29tcGls
ZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9kZmciCkBAIC01Miw2ICs1Myw4IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcAog
ICAgIGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAogCisgICAgYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcAorCiAgICAgYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAKICAg
ICBieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Js
b2NrLmNwcApAQCAtNzA3LDcgKzcxMCw3IEBAIHNldChIQVNIX0xVVF9HRU5FUkFUT1IgJHtDTUFL
RV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2NyZWF0ZV9oYXNoX3RhYmxlKQogbWFjcm8oR0VORVJBVEVf
SEFTSF9MVVQgX2lucHV0IF9vdXRwdXQpCiAgICAgYWRkX2N1c3RvbV9jb21tYW5kKAogICAgICAg
ICBPVVRQVVQgJHtfb3V0cHV0fQotICAgICAgICBERVBFTkRTICR7SEFTSF9MVVRfR0VORVJBVE9S
fSAke19pbnB1dH0KKyAgICAgICAgREVQRU5EUyAke0hBU0hfTFVUX0dFTkVSQVRPUn0gJHtfaW5w
dXR9ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAog
ICAgICAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke0hBU0hfTFVUX0dFTkVSQVRPUn0g
JHtfaW5wdXR9IC1pID4gJHtfb3V0cHV0fQogICAgICAgICBWRVJCQVRJTSkKICAgICBsaXN0KEFQ
UEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTICR7X291dHB1dH0pCkBAIC04MTUsMTYgKzgxOCwy
NyBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxF
fSAke0phdmFTY3JpcHRDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0vQ29kZUdlbmVyYXRvcklu
c3BlY3Rvci5weSAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3Rv
ckpTLmpzb24gLS1vdXRwdXRfaF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0iIC0tb3V0cHV0X2NwcF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0iIC0tb3V0cHV0X2pzX2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVf
RElSfSIgLS1vdXRwdXRfdHlwZSBKYXZhU2NyaXB0IC0td3JpdGVfYWx3YXlzICYmIG1rZGlyIC1w
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yICYmIGNwICR7
REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlz
cGF0Y2hlcnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3Rv
ckpTRnJvbnRlbmREaXNwYXRjaGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NS
SVBUQ09SRV9ESVJ9L2luc3BlY3RvcgogICAgIFZFUkJBVElNKQogCisjIEpTQ0J1aWx0aW5zCitm
aWxlKEdMT0IgSlNDQnVpbHRpbnNfanNfZmlsZXMgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElS
fS9idWlsdGlucy8qLmpzIikKK2FkZF9jdXN0b21fY29tbWFuZCgKKyAgIE9VVFBVVCAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcCAke0RFUklWRURf
U09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKKyAgIE1BSU5fREVQRU5E
RU5DWSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMKKyAg
IERFUEVORFMgJHtKU0NCdWlsdGluc19qc19maWxlc30KKyAgIENPTU1BTkQgJHtQWVRIT05fRVhF
Q1VUQUJMRX0gJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5z
ICR7SlNDQnVpbHRpbnNfanNfZmlsZXN9ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0vSlNDQnVpbHRpbnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9
L0pTQ0J1aWx0aW5zLmNwcAorICAgVkVSQkFUSU0pCisKIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRD
b3JlX1NPVVJDRVMKICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0lu
c3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcAogICAg
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVp
bGRlcnMuY3BwCisgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NC
dWlsdGlucy5jcHAKICkKIAogbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUwogICAg
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5k
RGlzcGF0Y2hlcnMuaAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0v
SW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmgKICAgICAke0RFUklWRURfU09VUkNFU19K
QVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgKKyAgICAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKICkKIAogYWRkX2N1
c3RvbV9jb21tYW5kKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpp
bmRleCAxMTU2ZTk3ZmQ4ODYyNTU3YzljZjhkM2I2OGJmNGQwM2MzZThiYThmLi5hODNiZGNhZDUx
YjA2Njg4NjY3YTZiNzMyMDU3ZTRjZGM4OTYwYTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjgsOCArMjgsOSBAQCBWUEFUSCA9IFwKICAgICAkKEph
dmFTY3JpcHRDb3JlKSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvcGFyc2VyIFwKICAgICAkKEph
dmFTY3JpcHRDb3JlKS9ydW50aW1lIFwKLSAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnRlcnByZXRl
ciBcCi0gICAgJChKYXZhU2NyaXB0Q29yZSkvaml0IFwKKwkkKEphdmFTY3JpcHRDb3JlKS9pbnRl
cnByZXRlciBcCisJJChKYXZhU2NyaXB0Q29yZSkvaml0IFwKKwkkKEphdmFTY3JpcHRDb3JlKS9i
dWlsdGlucyBcCiAjCiAKIC5QSE9OWSA6IGFsbApAQCAtNTcsOCArNTgsMTggQEAgYWxsIDogXAog
ICAgIFJlZ0V4cE9iamVjdC5sdXQuaCBcCiAgICAgU3RyaW5nQ29uc3RydWN0b3IubHV0LmggXAog
ICAgIHVkaXM4Nl9pdGFiLmggXAorICAgIEpTQ0J1aWx0aW5zIFwKICMKIAorIyBidWlsdGluIGZ1
bmN0aW9ucworLlBIT05ZOiBKU0NCdWlsdGlucworCitKU0NCdWlsdGluczogJChKYXZhU2NyaXB0
Q29yZSkvZ2VuZXJhdGUtanMtYnVpbHRpbnMgSlNDQnVpbHRpbnMuaCBKU0NCdWlsdGlucy5jcHAK
K0pTQ0J1aWx0aW5zLmg6ICQoSmF2YVNjcmlwdENvcmUpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zICQo
SmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zLyouanMKKwlweXRob24gJF4gJEAKKwkJCQkJCQkJCQkJ
CQkJCQkJCQkJIAorSlNDQnVpbHRpbnMuY3BwOiBKU0NCdWlsdGlucy5oCisKICMgbG9va3VwIHRh
YmxlcyBmb3IgY2xhc3NlcwogCiAlLmx1dC5oOiBjcmVhdGVfaGFzaF90YWJsZSAlLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGZlNTQ0OGRkYzFiY2ZhYTRjNzI5YTFj
YzAwZGVhNjI0MzE5MzkwYTIuLjU1NjlmNTAyOGQ4YzNjZGQ1YTA0ZGM5MzY2YTg0YjA0ZWVjNDgx
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTUxLDYgKzUxLDcgQEAg
amF2YXNjcmlwdGNvcmVfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVycyBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2Jp
bmRpbmdzIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMgXAog
CS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZSBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlciBcCiAJLUkkKHNyY2RpcikvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyIFwKQEAgLTExMCwxMiArMTExLDE2IEBAIERlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaDogJChqYXZhc2Ny
aXB0Y29yZV9zb3VyY2VzKSAkCiAJJChBTV9WX0dFTikkKFJVQlkpICQoc3JjZGlyKS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiICQo
c3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20gJEAKIAkkKEFNX1ZfYXQpdG91Y2ggJEAKIAotJChQcm9ncmFtc19MTEludE9mZnNldHNFeHRy
YWN0b3JfT0JKRUNUUyk6IERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJl
ZE9mZnNldHMuaAorJChQcm9ncmFtc19MTEludE9mZnNldHNFeHRyYWN0b3JfT0JKRUNUUyk6IERl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaCAKIAogRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnRBc3NlbWJseS5oOiBQcm9ncmFtcy9MTElu
dE9mZnNldHNFeHRyYWN0b3IkKEVYRUVYVCkKIAkkKEFNX1ZfR0VOKSQoUlVCWSkgJChzcmNkaXIp
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYiAkKHNyY2RpcikvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIFByb2dyYW1zL0xM
SW50T2Zmc2V0c0V4dHJhY3RvciQoRVhFRVhUKSAkQAogCSQoQU1fVl9hdCl0b3VjaCAkQAogCitE
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5oOiBEZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5jcHAKK0Rlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL0pTQ0J1aWx0aW5zLmNwcDogJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9n
ZW5lcmF0ZS1qcy1idWlsdGlucyAkKGphdmFzY3JpcHRjb3JlX2J1aWx0aW5zX2pzX25vc291cmNl
cykKKwkkKEFNX1ZfR0VOKSQoUFlUSE9OKSAkXiAkQAorCiAkKGxpYmphdmFzY3JpcHRjb3JlZ3Rr
X0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJ
T05AX2xhX09CSkVDVFMpOiBEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9MTEludEFzc2Vt
Ymx5LmgKIAoganNjOiAkKGphdmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcykgUHJvZ3JhbXMv
anNjJChFWEVFWFQpCkBAIC0yMTYsNiArMjIxLDcgQEAgRVhUUkFfRElTVCArPSBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL0tleXdvcmRMb29rdXBHZW5lcmF0b3IucHkgXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvS2V5d29yZHMudGFibGUgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9USEFOS1MgXAorCSQoamF2YXNjcmlwdGNvcmVfYnVpbHRpbnNfanNfbm9zb3VyY2VzKSBcCiAJ
JChsbGludF9ub3NvdXJjZXMpIFwKIAkkKG9mZmxpbmVhc21fbm9zb3VyY2VzKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGNkYjU0MjZiMDZiNTJhOTgy
NTZlZTkwNThiYmE4ZjExZWVhNjllZTAuLjk4ZmFhYTdkMTc1YWE2MWYyMDg5NmNlZWIxMzg2M2Uy
N2IyNjZjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC0yMCw2ICsyMCw4IEBAIGphdmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcyArPSBcCiAJRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvRXJyb3JQcm90b3R5cGUubHV0LmggXAogCURlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTRGF0YVZpZXdQcm90b3R5cGUubHV0LmggXAogCURl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0Lmx1dC5oIFwKKwlEZXJp
dmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5jcHAgXAorCURlcml2ZWRTb3Vy
Y2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFT
Y3JpcHRDb3JlL0pTT05PYmplY3QubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9KU1Byb21pc2VQcm90b3R5cGUubHV0LmggXApAQCAtMzUsNiArMzcsOSBAQCBqYXZh
c2NyaXB0Y29yZV9idWlsdF9ub3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvTExJbnRBc3NlbWJseS5oCiAKK2phdmFzY3JpcHRjb3JlX2J1aWx0aW5zX2pzX25vc291
cmNlcyArPSBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlw
ZS5qcworCiBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9BUElDYXN0LmggXApAQCAtMTAyLDYgKzEwNyw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMg
Kz0gXAogICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRPYmplY3QuaCBc
CiAgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcCBcCiAg
ICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmggXAorICAgIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIFwKKyAg
ICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmNw
cCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2Zp
bGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAg
XApAQCAtMTI0MSw3ICsxMjQ4LDkgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJz
LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNGcm9udGVu
ZERpc3BhdGNoZXJzLmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3Rv
ckpTVHlwZUJ1aWxkZXJzLmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5z
cGVjdG9ySlNUeXBlQnVpbGRlcnMuaAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0lu
c3BlY3RvckpTVHlwZUJ1aWxkZXJzLmggXAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3Jl
L0pTQ0J1aWx0aW5zLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNDQnVp
bHRpbnMuaAogCiBsbGludF9ub3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qCmluZGV4IDVlZGVmZGJlODU1Zjk2YTYyNjhkODU3M2JlYzFkMGMzZDg1
OGFhNWMuLmExMmRiMTgzNDg2ZGZiYmNhODNmM2E3OGU5Y2Y5ODYzMWIyNjUzZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtMzA5LDYgKzMwOSw3IEBACiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0T2JqZWN0LmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdFZhbHVlLmNwcCIg
Lz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxl
cy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9j
YXRpb25Qcm9maWxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2Rl
XEFycmF5UHJvZmlsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29k
ZVxCeXRlY29kZUJhc2ljQmxvY2suY3BwIiAvPgpAQCAtNzIxLDYgKzcyMiw3IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNCYWNr
ZW5kRGlzcGF0Y2hlcnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9y
SlNUeXBlQnVpbGRlcnMuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmNwcCIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJ
dGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJj
ZXNcQXJyYXlDb25zdHJ1Y3Rvci5sdXQuaCIgLz4KQEAgLTc1MCw2ICs3NTIsNyBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFJlZ0V4cE9iamVjdC5s
dXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xSZWdFeHBQcm90b3R5cGUubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcU3RyaW5nQ29uc3RydWN0b3IubHV0LmgiIC8+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuaCIg
Lz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxBUElcQVBJQ2FsbGJhY2tGdW5jdGlvbi5oIiAvPgpAQCAtNzk4LDYgKzgwMSw3IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdE9iamVjdC5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0VmFsdWUuaCIgLz4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxlcy5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9u
UHJvZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlQ
cm9maWxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeVZhbElu
Zm8uaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmls
dGVycwppbmRleCA4N2UxMmE0NzE1OGJiNjIyNGQ0OWZkNjIyOTc4YzRhOWM0NDM1YTY1Li44Njlj
MWY1ODliY2I2ODZlYjljZjIwYzA5NmJlMWI4M2E1NTFlMjRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC03LDYgKzcsOSBAQAogICAg
IDxGaWx0ZXIgSW5jbHVkZT0iYmluZGluZ3MiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezBi
YWNlMTIzLTQ1ODItZWViYy05MzE0LTc4MTliMzc2YzE5OH08L1VuaXF1ZUlkZW50aWZpZXI+CiAg
ICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJidWlsdGlucyI+CisgICAgICA8VW5p
cXVlSWRlbnRpZmllcj57M2I5ZDcyYTUtMTM1Yi00M2IzLWE1MjQtYzZkMmI5ZDI5ZDM1fTwvVW5p
cXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KICAgICA8RmlsdGVyIEluY2x1ZGU9ImJ5dGVj
b2RlIj4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns3NjYwODhhMC0xMjE2LTQ4NTQtYWE0My01
NjBjNWUyODM2Njh9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgpAQCAtMTA4LDYg
KzExMSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcTWFjcm9Bc3Nl
bWJsZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAgPC9DbENv
bXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWlsdGluRXhlY3V0
YWJsZXMuY3BwIj4KKyAgICAgIDxGaWx0ZXI+YnVpbHRpbnM8L0ZpbHRlcj4KKyAgICA8L0NsQ29t
cGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlv
blByb2ZpbGUuY3BwIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KQEAgLTEzMjksNiArMTMzNSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwIj4KICAg
ICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRp
bnMuY3BwIj4KKyAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CisgICAgPC9D
bENvbXBpbGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cQVBJXEFQSUNhbGxiYWNrRnVuY3Rpb24uaCI+CkBAIC0xNDU0LDYgKzE0NjMs
OSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXFg4NkFzc2VtYmxlci5o
Ij4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWlsdGluRXhlY3V0YWJsZXMuaCI+
CisgICAgICA8RmlsdGVyPmJ1aWx0aW5zPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmgi
PgogICAgICAgPEZpbHRlcj5ieXRlY29kZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAt
MjU1MCw2ICsyNTYyLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xBcnJheVByb3RvdHlwZS5sdXQuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQg
U291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmgiPgorICAgICAgPEZpbHRl
cj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVk0uaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlQ29tbW9uLnByb3BzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmVD
b21tb24ucHJvcHMKaW5kZXggMzYyMmZmYzU3N2M0M2RkZjcwZGE1MWZmNjhhZDY0NmY2MzA0ZTU2
Ny4uYzU4ODg3MGMyZmQxM2Q2MDc2ZDM4ZjUyY2E2MjI1ZGIyODcyYzc4MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmVDb21tb24ucHJvcHMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmVDb21tb24ucHJvcHMKQEAgLTUsNyArNSw3IEBACiAgIDxQ
cm9wZXJ0eUdyb3VwIC8+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+
Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlw7Li5cdG9vbHNcOy4uXHJ1
bnRpbWVcOy4uXGxsaW50XDsuLlxqaXRcOy4uXGRpc2Fzc2VtYmxlclw7Li5caGVhcFw7Li5cZGVi
dWdnZXJcOy4uXGFzc2VtYmxlclw7Li5ccHJvZmlsZXJcOy4uXHlhcnJcOy4uXGludGVycHJldGVy
XDsuLlxieXRlY29kZVw7Li5cZGZnXDsuLlxieXRlY29tcGlsZXJcOy4uXHBhcnNlclw7Li5cQVBJ
XDsuLlxmdGxcOy4uXGJpbmRpbmdzXDsuLlxpbnNwZWN0b3JcOyQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291
cmNlc1w7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcOyQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
aW5jbHVkZVxwcml2YXRlXDskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGU7JChXZWJLaXRfTGli
cmFyaWVzKVxpbmNsdWRlXHByaXZhdGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwv
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzPi4uXDsuLlx0b29sc1w7Li5ccnVudGltZVw7Li5cbGxpbnRcOy4uXGppdFw7Li5c
ZGlzYXNzZW1ibGVyXDsuLlxoZWFwXDsuLlxkZWJ1Z2dlclw7Li5cYXNzZW1ibGVyXDsuLlxwcm9m
aWxlclw7Li5ceWFyclw7Li5caW50ZXJwcmV0ZXJcOy4uXGJ5dGVjb2RlXDsuLlxidWlsdGluc1w7
Li5cZGZnXDsuLlxieXRlY29tcGlsZXJcOy4uXHBhcnNlclw7Li5cQVBJXDsuLlxmdGxcOy4uXGJp
bmRpbmdzXDsuLlxpbnNwZWN0b3JcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1w7JChDb25maWd1
cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRl
XEphdmFTY3JpcHRDb3JlXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRl
XDskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGU7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRl
XHByaXZhdGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz4KICAgICAgIDxGb3JjZWRJbmNsdWRlRmlsZXM+SUNVVmVyc2lvbi5oOyUo
Rm9yY2VkSW5jbHVkZUZpbGVzKTwvRm9yY2VkSW5jbHVkZUZpbGVzPgogICAgIDwvQ2xDb21waWxl
PgogICAgIDxMaW5rPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyN2U4NzY3NDBh
OTY0YjAyODk4NGVkNjc4MTYxODIwYTVkY2Y3N2M0Li45MTE1NzNhYjE3ZDMzOTc0YWE3YzlhMDEx
ZGIyMDBiMDlhZjc4YmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTIyLDcg
KzkyMiw2IEBACiAJCUE1MDNGQTE5MTg4RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZy
YW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
MDNGQTEzMTg4RTBGQUYwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLzsgfTsK
IAkJQTUwM0ZBMUExODhFMEZCMDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE0MTg4RTBG
QUYwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggKi87IH07CiAJCUE1MDNGQTFCMTg4
RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTUxODhFMEZCMDAwMTEwRjE0
IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi87IH07Ci0JCUE1MDNGQTFDMTg4RTBGQjAw
MDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE2MTg4RTBGQjAwMDExMEYxNCAvKiBKU0ph
dmFTY3JpcHRDYWxsRnJhbWUuaCAqLzsgfTsKIAkJQTUwM0ZBMUQxODhFMEZCMDAwMTEwRjE0IC8q
IEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNzE4OEUwRkIwMDAxMTBGMTQgLyogSlNK
YXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcCAqLzsgfTsKIAkJQTUwM0ZBMUUxODhFMEZC
MDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTgxODhFMEZCMDAwMTEw
RjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oICovOyB9OwogCQlBNTAzRkEy
MTE4OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0QnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMUYxODhFRkY2ODAwMTEwRjE0IC8q
IFNjcmlwdEJyZWFrcG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTAyNCw2ICsxMDIzLDcgQEAKIAkJQTcwQjA4MzIxN0EwQjc5QjAwREFG
MTRCIC8qIERGR0JpbmFyeVN3aXRjaC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNzBCMDgzMDE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dp
dGNoLmNwcCAqLzsgfTsKIAkJQTcwQjA4MzMxN0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3
aXRjaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcw
QjA4MzExN0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5oICovOyB9OwogCQlBNzEy
MzZFNTExOTVGMzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MTIzNkU0MTE5NUYzM0MwMEJEMjE3
NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3BwICovOyB9OworCQlBNzFEQTgwRjE4ODBEQkFCMDBEMUYy
OTkgLyogSlNTdHJpbmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNzFEQTgwRTE4ODBEQkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxpbmVz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcy
MDI4QjYxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIwMjhCNDE3OTc2MDFFMDA5
ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmNwcCAqLzsgfTsKIAkJQTcyMDI4QjgxNzk3NjAx
RTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyMDI4QjUxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rl
c3RSdW5uZXJVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUE3MjAyOEJBMTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyMDI4Qjkx
Nzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExNTAsNiArMTE1MCwxMCBAQAogCQlB
N0NBM0FFODE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0NBM0FFMjE3REE0MUFFMDA2NTM4QUYgLyog
SlNXZWFrTWFwLmggKi87IH07CiAJCUE3Q0EzQUVCMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFw
RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
N0NBM0FFOTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuY3BwICovOyB9OwogCQlBN0NB
M0FFQzE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0EzQUVBMTdEQTUxNjgwMDY1MzhBRiAvKiBX
ZWFrTWFwRGF0YS5oICovOyB9OworCQlBN0Q4MDFBNDE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRp
bkV4ZWN1dGFibGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3Bw
ICovOyB9OworCQlBN0Q4MDFBNTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4MDFB
MjE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdEODAxQTgxODgwRDZBODAwMjZD
MzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3RDgwMUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAg
Ki87IH07CisJCUE3RDgwMUE5MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTcxODgwRDZB
ODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTdEODlDRjIxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jhc2lj
QmxvY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTdEODlDRTMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jhc2ljQmxvY2suY3BwICovOyB9OwogCQlB
N0Q4OUNGMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODlDRTQxN0EwQjhD
QzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCAqLzsgfTsKIAkJQTdEODlDRjQx
N0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4OUNFNTE3QTBCOENDMDA3NzNBRDgg
LyogREZHQmxvY2tJbnNlcnRpb25TZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMjQ2Miw2ICsyNDY2LDggQEAKIAkJQTcxMjM2RTQxMTk1RjMz
QzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKSVRPcGNvZGVzMzJfNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNzE4RjYxQTExNzU0QTIxMDAyNDY1QTcgLyogUmVnRXhwSml0VGFibGVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEppdFRhYmxlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNzE4RjgyMTExNzhFQjRCMDAyNDY1QTcgLyogY3JlYXRl
X3JlZ2V4X3RhYmxlcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVU
eXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gY3JlYXRl
X3JlZ2V4X3RhYmxlczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcxREE4MEQxODgw
RDcxRjAwRDFGMjk5IC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3Jp
cHQucHl0aG9uOyBwYXRoID0gImdlbmVyYXRlLWpzLWJ1aWx0aW5zIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTcxREE4MEUxODgwREJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5l
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0cmluZ0lubGluZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyMDI4QjQxNzk3NjAxRTAwOTgwMjhDIC8q
IEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0NUZXN0UnVubmVyVXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNzIwMjhCNTE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ1Rlc3RSdW5uZXJVdGlscy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNzIwMjhCOTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5j
dGlvbklubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGdW5jdGlv
bklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1OTAsNiArMjU5Niwx
MSBAQAogCQlBN0NBM0FFMjE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2Vha01hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBN0NBM0FFOTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vha01hcERhdGEuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0NBM0FFQTE3REE1MTY4MDA2NTM4QUYgLyogV2Vh
a01hcERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha01hcERhdGEu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTAxODgwRDY2RTAwMjZDMzlC
IC8qIEFycmF5LnByb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsg
cGF0aCA9IEFycmF5LnByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTdEODAxQTExODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCdWlsdGluRXhlY3V0YWJsZXMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFBMjE4ODBENjZFMDAyNkMzOUIgLyog
QnVpbHRpbkV4ZWN1dGFibGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1
aWx0aW5FeGVjdXRhYmxlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFB
NjE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNDQnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBN0Q4MDFBNzE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTdEODlDRTMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jhc2ljQmxvY2su
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQmFzaWNCbG9jay5j
cHA7IHBhdGggPSBkZmcvREZHQmFzaWNCbG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE3RDg5Q0U0MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdCbG9ja0luc2VydGlv
blNldC5jcHA7IHBhdGggPSBkZmcvREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBN0Q4OUNFNTE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJ
bnNlcnRpb25TZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQmxvY2tJ
bnNlcnRpb25TZXQuaDsgcGF0aCA9IGRmZy9ERkdCbG9ja0luc2VydGlvblNldC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjkyNiw2ICsyOTM3LDcgQEAKIAkJCQk4NjA0RjRGMjE0
M0E2QzQ0MDBCMjk1RjUgLyogQ2hhbmdlTG9nICovLAogCQkJCUY2OTJBODU0MDI1NTU5N0QwMUZG
NjBGNyAvKiBjcmVhdGVfaGFzaF90YWJsZSAqLywKIAkJCQlBNzE4RjgyMTExNzhFQjRCMDAyNDY1
QTcgLyogY3JlYXRlX3JlZ2V4X3RhYmxlcyAqLywKKwkJCQlBNzFEQTgwRDE4ODBENzFGMDBEMUYy
OTkgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMgKi8sCiAJCQkJNDVFMTJEODgwNkE0OUIwRjAwRTlE
Rjg0IC8qIGpzYy5jcHAgKi8sCiAJCQkJRjY4RUJCOEMwMjU1RDRDNjAxRkY2MEY3IC8qIGNvbmZp
Zy5oICovLAogCQkJCUY1QzI5MEU2MDI4NEY5OEUwMTg2MzVDQSAvKiBKYXZhU2NyaXB0Q29yZVBy
ZWZpeC5oICovLApAQCAtMjkzNCw2ICsyOTQ2LDcgQEAKIAkJCQkxNDMyRUJENzBBMzRDQUQ0MDA3
MTdCOUYgLyogQVBJICovLAogCQkJCTk2ODhDQjEyMEVEMTJCNEUwMDFENjQ5RiAvKiBhc3NlbWJs
ZXIgKi8sCiAJCQkJQTU0Q0YyRUExODRFQTczOTAwMjM3RjE5IC8qIGJpbmRpbmdzICovLAorCQkJ
CUE3RDgwMTlGMTg4MEQ2NkUwMDI2QzM5QiAvKiBidWlsdGlucyAqLywKIAkJCQk5NjlBMDc4RjBF
RDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8sCiAJCQkJN0UzOUQ4MUQwRUMzOEVGQTAwM0FG
MTFBIC8qIGJ5dGVjb21waWxlciAqLywKIAkJCQkxQzkwNTEzRTBCQTlFODgzMDA4MUU5RDAgLyog
Q29uZmlndXJhdGlvbnMgKi8sCkBAIC0zNTA5LDYgKzM1MjIsOCBAQAogCQk2NTBGREY4RDA5RDBG
Q0E3MDA3NjlFNTQgLyogRGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlBN0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVp
bHRpbnMuY3BwICovLAorCQkJCUE3RDgwMUE3MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlu
cy5oICovLAogCQkJCUJDMThDNTIzMEUxNkZDOEEwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5s
dXQuaCAqLywKIAkJCQlCQ0QyMDNFNzBFMTcxOEY0MDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5s
dXQuaCAqLywKIAkJCQlBNTEzRTVDNjE4NUY5NDM2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRT
b3VyY2UuaCAqLywKQEAgLTM4MTEsNiArMzgyNiw3IEBACiAJCQkJQTc5MERENkExODJGNDk5NzAw
NTg4ODA3IC8qIEpTU2V0SXRlcmF0b3IuaCAqLywKIAkJCQlCQzAyRTlCNjBFMTg0MkZBMDAwRjky
OTcgLyogSlNTdHJpbmcuY3BwICovLAogCQkJCUY2OTJBODYyMDI1NTU5N0QwMUZGNjBGNyAvKiBK
U1N0cmluZy5oICovLAorCQkJCUE3MURBODBFMTg4MERCQUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lu
bGluZXMuaCAqLywKIAkJCQk4NkU4NTUzODExMUI5OTY4MDAxQUY1MUUgLyogSlNTdHJpbmdCdWls
ZGVyLmggKi8sCiAJCQkJMjYwMEI1QTQxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVy
LmNwcCAqLywKIAkJCQkyNjAwQjVBNTE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIu
aCAqLywKQEAgLTQ1NjEsNiArNDU3NywxNiBAQAogCQkJcGF0aCA9IHJlbW90ZTsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUE3RDgwMTlGMTg4MEQ2NkUwMDI2QzM5QiAvKiBi
dWlsdGlucyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
QTdEODAxQTAxODgwRDY2RTAwMjZDMzlCIC8qIEFycmF5LnByb3RvdHlwZS5qcyAqLywKKwkJCQlB
N0Q4MDFBMTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCAqLywKKwkJ
CQlBN0Q4MDFBMjE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggKi8sCisJ
CQkpOworCQkJcGF0aCA9IGJ1aWx0aW5zOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJ
fTsKIC8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEhlYWRlcnNCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTQ2MDYsMTEgKzQ2MzIsMTEgQEAKIAkJCQk4NkFERDE0NTBG
RERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1
Q0VFRTE1MTg3RjNCQUQwMEU1NUM5OSAvKiBJbnNwZWN0b3JBZ2VudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNjVDMDI4NUQxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5oIGluIEhlYWRl
cnMgKi8sCi0gCQkJCTJBNjgyOTVCMTg3NUY4MDUwMEI2QzNFMiAvKiBDb3B5V3JpdGVCYXJyaWVy
LmggaW4gSGVhZGVycyAqLywKLSAgICAgICAgICAgICAgICAyQTRFQzkwQzE4NjBENkMyMDA5NEY3
ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkyQTY4Mjk1QjE4
NzVGODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MkE0RUM5MEMxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkU1OTMyQTgxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTUzMjQzOTMxODU2OTcwOTAwMkVENjkyIC8qIENvZGVHZW5lcmF0
b3JJbnNwZWN0b3JTdHJpbmdzLnB5IGluIEhlYWRlcnMgKi8sCi0gCQkJCUE1MzI0MzkyMTg1Njk3
MDkwMDJFRDY5MiAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGluIEhlYWRlcnMgKi8sCisJ
CQkJQTUzMjQzOTIxODU2OTcwOTAwMkVENjkyIC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjI0RTU0RjE3RUUyNzQ5MDBBQkIyMTcgLyogVGVtcFJlZ2lz
dGVyU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTBFNEI2NDE4ODA5REQ1MDA2OEE0NkQgLyog
SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFQjU4QzE1
MTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJvckhhbmRsaW5nU2NvcGUuaCBpbiBIZWFkZXJzICovLApA
QCAtNDYyMiw3ICs0NjQ4LDcgQEAKIAkJCQkwRjgzMzVCODE2MzlDMUVBMDAxNDQzQjUgLyogQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMjkxODdDQTVF
NjAwODQzQjEwIC8qIGlubGluZS1hbmQtbWluaWZ5LXN0eWxlc2hlZXRzLWFuZC1zY3JpcHRzLnB5
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMkIxODdDQTc1QjAwODQzQjEwIC8qIGpzbWluLnB5
IGluIEhlYWRlcnMgKi8sCi0gCQkJCUE1MzI0Mzk4MTg1NkE0ODkwMDJFRDY5MiAvKiBJbnNwZWN0
b3JKUy5qc29uIGluIEhlYWRlcnMgKi8sCisJCQkJQTUzMjQzOTgxODU2QTQ4OTAwMkVENjkyIC8q
IEluc3BlY3RvckpTLmpzb24gaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUyQTE4N0NBNzU5MDA4
NDNCMTAgLyogeHhkLnBsIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVBMDg2MjAxODJCN0EwNDAwRjZE
ODUxIC8qIEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjM1MTdBREI1RjMw
MDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC00NzMzLDcgKzQ3NTks
NyBAQAogCQkJCUExQTAwOUMwMTgzMUEyMkQwMENGODcxMSAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDOURDNTEzMjhERjgyMDAyQjJBRDcgLyogREZHQnl0
ZUNvZGVQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDg1MzI4MTg3REZERUMwMDgzQjY4
NyAvKiBGVExBdmFpbGFibGVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8sCi0gICAgICAgICAgICAg
ICAgQTU5M0NGODcxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCBp
biBIZWFkZXJzICovLAorCQkJCUE1OTNDRjg3MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JB
Z2VudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI1NkMzNjE2MjdCMEFEMDA3RjI3
ODMgLyogREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRpZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRkZDOTU4MTRFRjkwQTIwMEM3MjUzMiAvKiBERkdDRkFQaGFz
ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC00ODcyLDYgKzQ4OTgsNyBAQAogCQkJCTBGRUEwQTFEMTcw
OEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RUEwQTFGMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNTk0NTU5MzE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0Q4MDFBOTE4ODBENkE4MDAyNkMz
OUIgLyogSlNDQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTBBMTcwNTEzREIw
MEJCNzIyQyAvKiBGVExDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDg1MzJB
MTg3REZERUMwMDgzQjY4NyAvKiBGVExSZWNvdmVyeU9wY29kZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZFQTBBMjMxNzA5NjA2OTAwQkI3MjJDIC8qIEZUTENvbW1vblZhbHVlcy5oIGluIEhlYWRl
cnMgKi8sCkBAIC00OTQ2LDYgKzQ5NzMsNyBAQAogCQkJCUJDMThDNDBGMEUxNkY1Q0QwMEIzNDQ2
MCAvKiBJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjVGOEJDRTE1NzU0NEE5MDAy
NDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5
OTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUE3RDgwMUE1MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQjdGMzlBMTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ0hlYWRlcklu
bGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzlCMTVFRDhFNDYwMEYxNjdCMiAvKiBJ
bmRleGluZ1R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQ0VGQUIwMTgwNUNBNkQwMDQ3MkNF
NCAvKiBJbml0aWFsaXplTExWTS5oIGluIEhlYWRlcnMgKi8sCkBAIC01MjE4LDYgKzUyNDYsNyBA
QAogCQkJCUE1MzI0Mzg4MTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JKU0JhY2tlbmREaXNw
YXRjaGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NTYwRTE2RjVDRDAwQjM0NDYwIC8q
IFByb3RlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzRDMzNCMTZBQTJEOTUwMDYyRjAxRCAv
KiBQcm90b3R5cGVNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3MURBODBGMTg4MERCQUIwMEQx
RjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMzMkE0MTRD
QTdERDkwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBD
RDRDMjE1RjFBNjA3MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3QzAwOENFNzE4NzYzMUI2MDA5NTVDMjQgLyogTWljcm90YXNrLmggaW4gSGVhZGVy
cyAqLywKQEAgLTU4MzYsNiArNTg2NSw3IEBACiAJCQkJQTdEODlDRjIxN0EwQjhDQzAwNzczQUQ4
IC8qIERGR0Jhc2ljQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcwQjA4MzIxN0EwQjc5
QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q4
OUNGMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQTdEODAxQTQxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxl
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkVDOURDNDEzMjhERjgyMDAyQjJBRDcgLyogREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEODJFMjExNDE3MkNFMzAw
MTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkZGQzk1
NzE0RUY5MEEwMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01
ODUyLDYgKzU4ODIsNyBAQAogCQkJCTBGRkZDOTU5MTRFRjkwQTYwMEM3MjUzMiAvKiBERkdDU0VQ
aGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJGQzc3MjE2RTEyRjcxMDAzOEQ5NzYgLyog
REZHRENFUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4RjJCOTkxNzJGMDRGRjAwN0RC
REE1IC8qIERGR0Rlc2lyZWRJZGVudGlmaWVycy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBN0Q4
MDFBODE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTczRTEzMzAxNzk2MjRDRDAwRTRERUE4IC8qIERGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzJDMEY3Q0QxN0JCRkM1QjAwNDY0RkU0IC8qIERGR0Rl
c2lyZWRUcmFuc2l0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkU4NTM0QjE3MjNDREE1
MDBCNjE4RjUgLyogREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
NTk3Niw3ICs2MDA3LDcgQEAKIAkJCQkwRjZCMUNDNTE4NjJDNDc4MDA4NDVEOTcgLyogRlRMVW53
aW5kSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM5QTE4MDNBREI3MDA3M0MyQkMg
LyogRlRMU3RhY2tNYXBzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEwQTE2MTcwNkJCOTAw
MEJCNzIyQyAvKiBGVExTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKLSAJCQkJN0MwMDhDRDIxODZG
OEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk3QzAwOENEMjE4NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9taXNlRnVuY3Rpb25zLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGNkIxQ0I1MTg1RkM5RTkwMDg0NUQ5NyAvKiBGVExKU0NhbGwuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMzVCRTExNzE3OEUxQzAwNjkwQzdGIC8qIEZUTFRodW5r
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTkzQ0Y3QzE4NDAzNjAzMDBCRkNFMjcgLyogSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
ZWI0MmY1Y2M0MzNmMTYzNjM0M2JmYzk4MmFhMmFhZmIzMzZlOTQ5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcwpAQCAt
MCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworZnVuY3Rpb24gZXZlcnkoY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pIHsKKyAgICAidXNlIHN0
cmljdCI7CisgICAgaWYgKHRoaXMgPT09IG51bGwpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVy
cm9yKCJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51
bGwiKTsKKyAgICAKKyAgICBpZiAodGhpcyA9PT0gdW5kZWZpbmVkKQorICAgICAgICB0aHJvdyBu
ZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8
IG5vdCBiZSB1bmRlZmluZWQiKTsKKyAgICAKKyAgICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMp
OworICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGggPj4+IDA7CisgICAgCisgICAgaWYgKHR5
cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJy
b3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsK
KworICAgIHZhciB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0g
OiB1bmRlZmluZWQ7CisgICAgCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykg
eworICAgICAgICBpZiAoIShpIGluIGFycmF5KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBpZiAoIWNhbGxiYWNrLkBjYWxsKHRoaXNBcmcsIGFycmF5W2ldLCBpLCBhcnJheSkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHJldHVybiB0cnVlOwor
fQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0MWRiYjVmOTIyNWUyOGExMmVkM2QxNzk4ZmYxNzY4
ZTQzNjcxYTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgi
CisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVz
LmgiCisjaW5jbHVkZSAiUGFyc2VyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitCdWlsdGluRXhl
Y3V0YWJsZXM6OkJ1aWx0aW5FeGVjdXRhYmxlcyhWTSYgdm0pCisgICAgOiBtX3ZtKHZtKQorI2Rl
ZmluZSBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1l
LCBsZW5ndGgpICwgbV8jI25hbWUjI1NvdXJjZShtYWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0
ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgpLCBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0
ZXJhbCgiPGJ1aWx0aW4+IikpKQorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4oSU5JVElBTElaRV9C
VUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX1NUUklOR1MKK3sK
K30KKworVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3Jl
YXRlQnVpbHRpbkV4ZWN1dGFibGUoY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lKQoreworICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmU7CisgICAgUGFyc2VyRXJyb3IgZXJyb3I7CisgICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBw
cm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KCZtX3ZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIo
KSwgSlNQYXJzZUJ1aWx0aW4sIEpTUGFyc2VQcm9ncmFtQ29kZSwgZXJyb3IsICZwb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lKTsKKworICAgIGlmICghcHJvZ3JhbSkgeworICAgICAgICBkYXRhTG9n
KCJGYXRhbCBlcnJvciBjb21waWxpbmcgYnVpbHRpbiBmdW5jdGlvbiAnIiwgbmFtZS5zdHJpbmco
KSwgIic6ICIsIGVycm9yLm1fbWVzc2FnZSk7CisgICAgICAgIENSQVNIKCk7CisgICAgfQorCisg
ICAgU3RhdGVtZW50Tm9kZSogZXhwclN0YXRlbWVudCA9IHByb2dyYW0tPnNpbmdsZVN0YXRlbWVu
dCgpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQpOworICAgIFJFTEVBU0VfQVNT
RVJUKGV4cHJTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKKyAgICBFeHByZXNzaW9uTm9k
ZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVtZW50Tm9kZSo+KGV4cHJTdGF0ZW1l
bnQpLT5leHByKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHIpOworICAgIFJFTEVBU0Vf
QVNTRVJUKGZ1bmNFeHByLT5pc0Z1bmNFeHByTm9kZSgpKTsKKyAgICBGdW5jdGlvbkJvZHlOb2Rl
KiBib2R5ID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZnVuY0V4cHIpLT5ib2R5KCk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoIXByb2dyYW0tPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpOworICAg
IAorICAgIGJvZHktPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKGJvZHkpOworICAgIFJFTEVBU0VfQVNTRVJUKGJvZHktPmlkZW50
KCkuaXNOdWxsKCkpOworICAgIAorICAgIC8vIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBhbiBpbnB1
dCBzdHJpbmcgdGhhdCB3b3VsZCByZXN1bHQgaW4gYSBzaW5nbGUgYW5vbnltb3VzIGZ1bmN0aW9u
IGV4cHJlc3Npb24uCisgICAgYm9keS0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keSk7CisgICAgZm9yIChjb25zdCBhdXRv
JiBjbG9zZWRWYXJpYWJsZSA6IHByb2dyYW0tPmNsb3NlZFZhcmlhYmxlcygpKSB7CisgICAgICAg
IGlmIChjbG9zZWRWYXJpYWJsZSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cy5pbXBs
KCkpCisgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgaWYgKGNsb3NlZFZhcmlh
YmxlID09IG1fdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZC5pbXBsKCkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2xvc2VkVmFyaWFibGUt
PmlzRW1wdHlVbmlxdWUoKSk7CisgICAgfQorICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRl
KCZtX3ZtLCBzb3VyY2UsIGJvZHksIHRydWUsIFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uKTsKKyAg
ICBmdW5jdGlvbkV4ZWN1dGFibGUtPm1fbmFtZVZhbHVlLnNldChtX3ZtLCBmdW5jdGlvbkV4ZWN1
dGFibGUsIGpzU3RyaW5nKCZtX3ZtLCBuYW1lLnN0cmluZygpKSk7CisgICAgcmV0dXJuIGZ1bmN0
aW9uRXhlY3V0YWJsZTsKK30KKworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUyhu
YW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IEJ1aWx0aW5FeGVjdXRhYmxlczo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK3tcCisgICAgaWYgKCFt
XyMjbmFtZSMjRXhlY3V0YWJsZSlcCisgICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gY3Jl
YXRlQnVpbHRpbkV4ZWN1dGFibGUobV8jI25hbWUjI1NvdXJjZSwgbV92bS5wcm9wZXJ0eU5hbWVz
LT5mdW5jdGlvbk5hbWUpO1wKKyAgICByZXR1cm4gbV8jI25hbWUjI0V4ZWN1dGFibGUuZ2V0KCk7
XAorfQorSlNDX0ZPUkVBQ0hfQlVJTFRJTihERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1
bmRlZiBFWFBPU0VfQlVJTFRJTl9TT1VSQ0VTCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOWExOWUy
NjE1MDc5NGE2NjllYzk4ZTM5OWJmNjdmN2Y3MTA2NDE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCkBAIC0wLDAg
KzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEJ1aWx0aW5FeGVjdXRhYmxlc19oCisjZGVmaW5lIEJ1aWx0aW5FeGVjdXRhYmxlc19o
CisKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgorI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKKyNp
bmNsdWRlICJXZWFrLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgSWRlbnRp
ZmllcjsKK2NsYXNzIFZNOworCitjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXMgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEJ1aWx0aW5FeGVjdXRhYmxlcz4gY3JlYXRlKFZNJiB2bSkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQnVpbHRpbkV4ZWN1dGFibGVzKHZt
KSk7CisgICAgfQorICAgIAorI2RlZmluZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1l
LCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5h
bWUjI0V4ZWN1dGFibGUoKTsgXAorY29uc3QgU291cmNlQ29kZSYgbmFtZSMjU291cmNlKCkgeyBy
ZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsgfQorICAgIAorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4o
RVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgRVhQT1NFX0JVSUxUSU5fU09VUkNF
UworICAgIAorcHJpdmF0ZToKKyAgICBCdWlsdGluRXhlY3V0YWJsZXMoVk0mKTsKKyAgICBWTSYg
bV92bTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1
dGFibGUoY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImKTsKKyNkZWZpbmUgREVD
TEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKVwK
KyAgICBTb3VyY2VDb2RlIG1fIyNuYW1lIyNTb3VyY2U7IFwKKyAgICBXZWFrPFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlPiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKKyAgICBKU0NfRk9SRUFDSF9C
VUlMVElOKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JV
SUxUSU5fU09VUkNFX01FTUJFUlMKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDI2M2VjN2NhZGY0Zjc5Y2E4MTAy
NDQxZTYyYmYyYTA1YjVkZGMzZjIuLjc1MTUwNjU0MjM3NmQ3ZWRjNTk5YWEwMGY5YjEyNjg1Y2Rh
MzUyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CkBAIC00MywxMSArNDMsMTMgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRTdHVi
cy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgotI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIK
KyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludC5oIgog
I2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJOYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJP
cGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5oIgogI2luY2x1
ZGUgIlJlZHVjZVdoaXRlc3BhY2UuaCIKQEAgLTE1NjksNyArMTU3MSw3IEBAIENvZGVCbG9jazo6
Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2Rl
QmxvY2sqIHVubGluCiAKICAgICBzZXRDb25zdGFudFJlZ2lzdGVycyh1bmxpbmtlZENvZGVCbG9j
ay0+Y29uc3RhbnRSZWdpc3RlcnMoKSk7CiAgICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT51c2Vz
R2xvYmFsT2JqZWN0KCkpCi0gICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnNbdW5saW5rZWRDb2Rl
QmxvY2stPmdsb2JhbE9iamVjdFJlZ2lzdGVyKCkub2Zmc2V0KCldLnNldCgqbV92bSwgb3duZXJF
eGVjdXRhYmxlLCBtX2dsb2JhbE9iamVjdC5nZXQoKSk7CisgICAgICAgIG1fY29uc3RhbnRSZWdp
c3RlcnNbdW5saW5rZWRDb2RlQmxvY2stPmdsb2JhbE9iamVjdFJlZ2lzdGVyKCkudG9Db25zdGFu
dEluZGV4KCldLnNldCgqbV92bSwgb3duZXJFeGVjdXRhYmxlLCBtX2dsb2JhbE9iamVjdC5nZXQo
KSk7CiAgICAgbV9mdW5jdGlvbkRlY2xzLnJlc2l6ZVRvRml0KHVubGlua2VkQ29kZUJsb2NrLT5u
dW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSk7CiAgICAgZm9yIChzaXplX3QgY291bnQgPSB1bmxpbmtl
ZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCksIGkgPSAwOyBpIDwgY291bnQ7ICsr
aSkgewogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRh
YmxlID0gdW5saW5rZWRDb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA2OGJjMDM3OWY1NzQ0YzlhOGY3NDMx
ZGI2NGY4YWI1NGU2ZTEwNTNmLi40OTk1YzUyY2Y4YjJiMWI0ZDYyODA0NTNlZWQyN2M3NzRhNDk1
NThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC01
Niw3ICs1Niw2IEBACiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIKICNpbmNsdWRlICJPYmplY3RB
bGxvY2F0aW9uUHJvZmlsZS5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKLSNpbmNsdWRlICJPcGVy
YXRpb25zLmgiCiAjaW5jbHVkZSAiUHV0UHJvcGVydHlTbG90LmgiCiAjaW5jbHVkZSAiSW5zdHJ1
Y3Rpb24uaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0
dGlzb25pbmdXYXRjaHBvaW50LmNwcAppbmRleCA5ODZlMDNkMGNiYTcxODViMzljZWUwMjNmNGFi
NmJjOWI4Y2NiNmU0Li43MGVmOWI0MjkwMWMwNThiYzcyYzlkYjkyZGNjMzNkNTNkNmJhYWM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxv
Y2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdDb21tb24u
aCIKICNpbmNsdWRlICJERkdFeGl0UHJvZmlsZS5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMu
aCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDFkZmI1YWM2YWQ5MDkzZjhmODEx
MDFlZjdmMmU2MTIzMTFhYzE5MzkuLjQzMzkwZDk2NWZjNTAzNDAxNmY3YmZmZjIzZTY4YmIxZTA1
NDU1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmNwcApAQCAtNDksOSArNDksOSBAQCBjb25zdCBDbGFzc0luZm8gVW5saW5r
ZWRQcm9ncmFtQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2si
LAogY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkRXZhbENvZGVCbG9jazo6c19pbmZvID0geyAiVW5s
aW5rZWRFdmFsQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShVbmxpbmtlZEV2YWxDb2RlQmxvY2spIH07CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayIs
ICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jaykgfTsKIAotc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVy
YXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxl
ck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikKK3N0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKiBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKFZNJiB2bSwgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1v
ZGUgcHJvZmlsZXJNb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBmdW5jdGlvbktpbmQsIFBhcnNl
ckVycm9yJiBlcnJvcikKIHsKLSAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSA9IHBh
cnNlPEZ1bmN0aW9uQm9keU5vZGU+KCZ2bSwgc291cmNlLCBleGVjdXRhYmxlLT5wYXJhbWV0ZXJz
KCksIGV4ZWN1dGFibGUtPm5hbWUoKSwgZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/
IEpTUGFyc2VTdHJpY3QgOiBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlRnVuY3Rpb25Db2RlLCBlcnJv
cik7CisgICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGJvZHkgPSBwYXJzZTxGdW5jdGlvbkJv
ZHlOb2RlPigmdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+cGFyYW1ldGVycygpLCBleGVjdXRhYmxl
LT5uYW1lKCksIGV4ZWN1dGFibGUtPnRvU3RyaWN0bmVzcygpLCBKU1BhcnNlRnVuY3Rpb25Db2Rl
LCBlcnJvcik7CiAKICAgICBpZiAoIWJvZHkpIHsKICAgICAgICAgQVNTRVJUKGVycm9yLm1fdHlw
ZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZt
LCBVbmxpbmtlZEZ1bmMKICAgICBib2R5LT5maW5pc2hQYXJzaW5nKGV4ZWN1dGFibGUtPnBhcmFt
ZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT5mdW5jdGlvbk5hbWVJc0lu
U2NvcGVUb2dnbGUoKSk7CiAgICAgZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2UoYm9keS0+ZmVhdHVy
ZXMoKSwgYm9keS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCi0gICAgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3Jl
YXRlKCZ2bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5mbyhib2R5LT5uZWVkc0FjdGl2YXRp
b24oKSwgYm9keS0+dXNlc0V2YWwoKSwgYm9keS0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29k
ZUZvckNvbnN0cnVjdCkpOworICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmdm0sIEZ1bmN0aW9uQ29kZSwgRXhl
Y3V0YWJsZUluZm8oYm9keS0+bmVlZHNBY3RpdmF0aW9uKCksIGJvZHktPnVzZXNFdmFsKCksIGJv
ZHktPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2lu
ZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbikpOwogICAgIE93blB0cjxCeXRlY29kZUdlbmVy
YXRvcj4gZ2VuZXJhdG9yKGFkb3B0UHRyKG5ldyBCeXRlY29kZUdlbmVyYXRvcih2bSwgYm9keS5n
ZXQoKSwgcmVzdWx0LCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSkpKTsKICAgICBlcnJvciA9
IGdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKICAgICBib2R5LT5kZXN0cm95RGF0YSgpOwpAQCAtODIs
MTMgKzgyLDE0IEBAIHVuc2lnbmVkIFVubGlua2VkQ29kZUJsb2NrOjphZGRPckZpbmRDb25zdGFu
dChKU1ZhbHVlIHYpCiAgICAgcmV0dXJuIGFkZENvbnN0YW50KHYpOwogfQogCi1VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlO
b2RlKiBub2RlLCBib29sIGlzRnJvbUdsb2JhbENvZGUpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlLCBi
b29sIGlzRnJvbUdsb2JhbENvZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQpCiAgICAgOiBC
YXNlKCp2bSwgc3RydWN0dXJlKQogICAgICwgbV9udW1DYXB0dXJlZFZhcmlhYmxlcyhub2RlLT5j
YXB0dXJlZFZhcmlhYmxlQ291bnQoKSkKICAgICAsIG1fZm9yY2VVc2VzQXJndW1lbnRzKG5vZGUt
PnVzZXNBcmd1bWVudHMoKSkKICAgICAsIG1faXNJblN0cmljdENvbnRleHQobm9kZS0+aXNTdHJp
Y3RNb2RlKCkpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKG5vZGUtPmhhc0NhcHR1cmVk
VmFyaWFibGVzKCkpCiAgICAgLCBtX2lzRnJvbUdsb2JhbENvZGUoaXNGcm9tR2xvYmFsQ29kZSkK
KyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oa2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlv
bikKICAgICAsIG1fbmFtZShub2RlLT5pZGVudCgpKQogICAgICwgbV9pbmZlcnJlZE5hbWUobm9k
ZS0+aW5mZXJyZWROYW1lKCkpCiAgICAgLCBtX3BhcmFtZXRlcnMobm9kZS0+cGFyYW1ldGVycygp
KQpAQCAtMTY2LDcgKzE2Nyw3IEBAIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tGb3IoVk0mIHZtLCBjb25zCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIAotICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IGdl
bmVyYXRlRnVuY3Rpb25Db2RlQmxvY2sodm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lhbGl6YXRpb25L
aW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IpOworICAgIFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2sodm0sIHRo
aXMsIHNvdXJjZSwgc3BlY2lhbGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9k
ZSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5r
ZWROb3JtYWxGdW5jdGlvbiwgZXJyb3IpOwogICAgIAogICAgIGlmIChlcnJvci5tX3R5cGUgIT0g
UGFyc2VyRXJyb3I6OkVycm9yTm9uZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMTAsNiArMjEx
LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1faXNTdHJpY3RNb2RlKGluZm8u
bV9pc1N0cmljdE1vZGUpCiAgICAgLCBtX2lzQ29uc3RydWN0b3IoaW5mby5tX2lzQ29uc3RydWN0
b3IpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGZhbHNlKQorICAgICwgbV9pc0J1aWx0
aW5GdW5jdGlvbihpbmZvLm1faXNCdWlsdGluRnVuY3Rpb24pCiAgICAgLCBtX2ZpcnN0TGluZSgw
KQogICAgICwgbV9saW5lQ291bnQoMCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApp
bmRleCBiOWRhZTJkNWM2OWM3OWNlYWFhODAyM2QyYTNhMWYyNmQ0NjA5NDNiLi5hYmY2Y2YzNWI5
MzA2YTRmN2EzMDFhYjBkZjc2NjZlYzYxMmUzNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtNjYsMjYgKzY2LDM1IEBA
IHR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTsKIHR5cGVk
ZWYgdW5zaWduZWQgVW5saW5rZWRMTEludENhbGxMaW5rSW5mbzsKIAogc3RydWN0IEV4ZWN1dGFi
bGVJbmZvIHsKLSAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1
c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvcikKKyAgICBFeGVj
dXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0
cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbikKICAg
ICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2YXRpb24pCiAgICAgICAgICwgbV91
c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0cmljdE1vZGUp
CiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3RydWN0b3IpCisgICAgICAgICwgbV9p
c0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikKICAgICB7CiAgICAgfQotICAgIGJv
b2wgbV9uZWVkc0FjdGl2YXRpb247Ci0gICAgYm9vbCBtX3VzZXNFdmFsOwotICAgIGJvb2wgbV9p
c1N0cmljdE1vZGU7Ci0gICAgYm9vbCBtX2lzQ29uc3RydWN0b3I7CisgICAgYm9vbCBtX25lZWRz
QWN0aXZhdGlvbiA6IDE7CisgICAgYm9vbCBtX3VzZXNFdmFsIDogMTsKKyAgICBib29sIG1faXNT
dHJpY3RNb2RlIDogMTsKKyAgICBib29sIG1faXNDb25zdHJ1Y3RvciA6IDE7CisgICAgYm9vbCBt
X2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKK307CisKK2VudW0gVW5saW5rZWRGdW5jdGlvbktpbmQg
eworICAgIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sCisgICAgVW5saW5rZWRCdWlsdGluRnVuY3Rp
b24sCiB9OwogCiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBKU0Nl
bGwgewogcHVibGljOgorICAgIGZyaWVuZCBjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXM7CiAgICAg
ZnJpZW5kIGNsYXNzIENvZGVDYWNoZTsKKyAgICBmcmllbmQgY2xhc3MgVk07CiAgICAgdHlwZWRl
ZiBKU0NlbGwgQmFzZTsKLSAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNy
ZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSog
bm9kZSwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlID0gZmFsc2UpCisgICAgc3RhdGljIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSwgVW5saW5r
ZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQpCiAgICAgewotICAgICAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhlYXApKSBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJl
LmdldCgpLCBzb3VyY2UsIG5vZGUsIGlzRnJvbUdsb2JhbENvZGUpOworICAgICAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhlYXApKSBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdl
dCgpLCBzb3VyY2UsIG5vZGUsIGlzRnJvbUdsb2JhbENvZGUsIHVubGlua2VkRnVuY3Rpb25LaW5k
KTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2bSk7CiAgICAgICAgIHJldHVy
biBpbnN0YW5jZTsKICAgICB9CkBAIC05OSw2ICsxMDgsMTQgQEAgcHVibGljOgogICAgIH0KICAg
ICBzaXplX3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdDsKICAgICBib29sIGlzSW5TdHJpY3RDb250
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQorICAgIEpTUGFyc2Vy
U3RyaWN0bmVzcyB0b1N0cmljdG5lc3MoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1faXNC
dWlsdGluRnVuY3Rpb24pCisgICAgICAgICAgICByZXR1cm4gSlNQYXJzZUJ1aWx0aW47CisgICAg
ICAgIGlmIChtX2lzSW5TdHJpY3RDb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuIEpTUGFyc2VT
dHJpY3Q7CisgICAgICAgIHJldHVybiBKU1BhcnNlTm9ybWFsOworICAgIH0KICAgICBGdW5jdGlv
bk5hbWVJc0luU2NvcGVUb2dnbGUgZnVuY3Rpb25OYW1lSXNJblNjb3BlVG9nZ2xlKCkgY29uc3Qg
eyByZXR1cm4gbV9mdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGU7IH0KIAogICAgIHVuc2lnbmVk
IGZpcnN0TGluZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RMaW5lT2Zmc2V0OyB9CkBA
IC0xNDIsOCArMTU5LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJbW1v
cnRhbFN0cnVjdHVyZSA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsK
IAorICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRp
bkZ1bmN0aW9uOyB9CisKIHByaXZhdGU6Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUo
Vk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGJv
b2wgaXNGcm9tR2xvYmFsQ29kZSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0q
LCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGJvb2wg
aXNGcm9tR2xvYmFsQ29kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQpOwogICAgIFdyaXRlQmFycmll
cjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX2NvZGVCbG9ja0ZvckNhbGw7CiAgICAgV3Jp
dGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fY29kZUJsb2NrRm9yQ29uc3Ry
dWN0OwogCkBAIC0xNTIsNiArMTcxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNJblN0cmlj
dENvbnRleHQgOiAxOwogICAgIGJvb2wgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAg
Ym9vbCBtX2lzRnJvbUdsb2JhbENvZGUgOiAxOworICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlv
biA6IDE7CiAKICAgICBJZGVudGlmaWVyIG1fbmFtZTsKICAgICBJZGVudGlmaWVyIG1faW5mZXJy
ZWROYW1lOwpAQCAtMzE5LDYgKzMzOSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzTnVtZXJp
Y0NvbXBhcmVGdW5jdGlvbihib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbikgeyBtX2lzTnVt
ZXJpY0NvbXBhcmVGdW5jdGlvbiA9IGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQogICAgIGJv
b2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc051bWVyaWND
b21wYXJlRnVuY3Rpb247IH0KIAorICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisgICAgCiAgICAgdm9pZCBzaHJpbmtUb0Zp
dCgpCiAgICAgewogICAgICAgICBtX2p1bXBUYXJnZXRzLnNocmlua1RvRml0KCk7CkBAIC01MDAs
NiArNTIyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNTdHJpY3RNb2RlIDogMTsKICAgICBi
b29sIG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAgYm9vbCBtX2hhc0NhcHR1cmVkVmFyaWFibGVz
IDogMTsKKyAgICBib29sIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1f
Zmlyc3RMaW5lOwogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50OwogICAgIHVuc2lnbmVkIG1fZW5k
Q29sdW1uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2ODEwYWI4MDAyY2U2YmI4ZDc4ZTdmZjIyMjdm
NGM2ZWE3Yjc1OGMyLi5lYzUyMWI1MzA0NjM5MjNlNzRjMDEwZmEyMThlNTllZDJhOWEzY2FlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcApAQCAtMTc1LDYgKzE3NSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5r
ZWRQCiAjZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAgICAgLCBtX2V4cHJl
c3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihmYWxzZSkKIHsK
ICAgICBpZiAobV9zaG91bGRFbWl0RGVidWdIb29rcykKICAgICAgICAgbV9jb2RlQmxvY2stPnNl
dE5lZWRzRnVsbFNjb3BlQ2hhaW4odHJ1ZSk7CkBAIC0yMjIsNyArMjIzLDEzIEBAIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uQm9keU5vZGUqIGZ1
bmN0aW9uQm9keSwgVW5sCiAjZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAg
ICAgLCBtX2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlv
bihjb2RlQmxvY2stPmlzQnVpbHRpbkZ1bmN0aW9uKCkpCiB7CisgICAgaWYgKG1faXNCdWlsdGlu
RnVuY3Rpb24pIHsKKyAgICAgICAgbV9zaG91bGRFbWl0UHJvZmlsZUhvb2tzID0gZmFsc2U7Cisg
ICAgICAgIG1fc2hvdWxkRW1pdERlYnVnSG9va3MgPSBmYWxzZTsKKyAgICB9CisKICAgICBpZiAo
bV9zaG91bGRFbWl0RGVidWdIb29rcykKICAgICAgICAgbV9jb2RlQmxvY2stPnNldE5lZWRzRnVs
bFNjb3BlQ2hhaW4odHJ1ZSk7CiAKQEAgLTQzOCw2ICs0NDUsNyBAQCBCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2Vk
RXZhbENvZAogI2VuZGlmCiAgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQogICAgICwgbV9l
eHByZXNzaW9uVG9vRGVlcChmYWxzZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oZmFsc2Up
CiB7CiAgICAgbV9jb2RlQmxvY2stPnNldE5lZWRzRnVsbFNjb3BlQ2hhaW4odHJ1ZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAppbmRleCA0ZTlmMjEzYzliZmE2Y2YxOTRiMWExNGZlOTE5ZTgzMzM3YWUzNWQ5Li4x
NTg0Mjc0Yjc4ZWE2YzBiZDBlZmIwYjk4MjVjODE4YmUwZGJjMDY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBA
IC00NjEsNyArNDYxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgc2hvdWxkRW1p
dERlYnVnSG9va3MoKSB7IHJldHVybiBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzOyB9CiAgICAgICAg
IAogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2Nr
LT5pc1N0cmljdE1vZGUoKTsgfQotCisgICAgICAgIAorICAgICAgICBib29sIGlzQnVpbHRpbkZ1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQorICAgICAgICAK
ICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTGFiZWw7CiAgICAgICAgIApAQCAt
NTQzLDcgKzU0NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG1ha2VGdW5jdGlvbihGdW5jdGlvbkJvZHlOb2RlKiBib2R5
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIGJvZHkpOworICAgICAgICAg
ICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29w
ZU5vZGUtPnNvdXJjZSgpLCBib2R5LCBmYWxzZSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlu
a2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbik7CiAgICAgICAgIH0K
IAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SW5pdExhenlSZWdpc3RlcihSZWdpc3RlcklEKik7
CkBAIC02NzcsNiArNjc5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBtX3Vz
ZXNFeGNlcHRpb25zOwogICAgICAgICBib29sIG1fZXhwcmVzc2lvblRvb0RlZXA7CisgICAgICAg
IGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlvbjsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMWZmZDRm
MzExODgyZDBlZTVjNTUxNGY1YjhiMjU5MzlkOTc1ZTM3OS4uNjJlY2EzNmExMGQ3NzA4YTkyOGQ0
M2FjMDNmMmZjODYxNWNlY2E3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjYsMTAgKzI2LDEwIEBACiAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgotI2luY2x1ZGUgIk5vZGVDb25zdHJ1
Y3RvcnMuaCIKIAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ2Fs
bEZyYW1lLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJEZWJ1
Z2dlci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTM4
LDYgKzM4LDcgQEAKICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiTGFiZWxTY29w
ZS5oIgogI2luY2x1ZGUgIkxleGVyLmgiCisjaW5jbHVkZSAiTm9kZUNvbnN0cnVjdG9ycy5oIgog
I2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRlICJQ
cm9wZXJ0eU5hbWVBcnJheS5oIgpAQCAtNTM1LDM2ICs1MzYsMzkgQEAgUmVnaXN0ZXJJRCogQ2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLAogICAgIFJlZlB0cjxMYWJlbD4gZW5kID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9iYXNlKTsK
ICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBz
dWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBE
ZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBtX2lkZW50KTsKKyAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0
aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmNhbGwp
OwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERl
c3RpbmF0aW9uKGRzdCwgZnVuY3Rpb24uZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SnVtcElm
Tm90RnVuY3Rpb25DYWxsKGZ1bmN0aW9uLmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7CisgICAgYm9v
bCBlbWl0Q2FsbENoZWNrID0gIWdlbmVyYXRvci5pc0J1aWx0aW5GdW5jdGlvbigpOworICAgIGlm
IChlbWl0Q2FsbENoZWNrKQorICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9u
Q2FsbChmdW5jdGlvbi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkpOworCiAgICAgewogICAgICAgICBp
ZiAobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKSB7CiAg
ICAgICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2Rl
OwogICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5t
X25leHQ7Ci0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJl
YWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9u
KGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1l
bnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShj
YWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwogICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0
KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0
KCkpOwotCiAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBvbGRMaXN0OwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9
IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2Uu
Z2V0KCkpOwogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRv
ciwgbV9hcmdzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRz
LnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVk
RnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKICAgICAgICAg
fQogICAgIH0KLSAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKLSAgICB7
Ci0gICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7
Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBiYXNlLmdldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdl
dCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBk
aXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIGlmIChlbWl0Q2FsbENoZWNr
KSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKKyAgICAgICAgeworICAgICAgICAgICAg
Q2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNl
LmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQo
KSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgfQorICAgICAgICBnZW5l
cmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFi
ZWwoZW5kLmdldCgpKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWUuZ2V0KCk7CiB9CiAKQEAgLTU4
NSw2NSArNTg5LDY3IEBAIFJlZ2lzdGVySUQqIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgUmVmUHRyPExhYmVs
PiBlbmQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFz
ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVz
c2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Npb25TdGFydCgpLCBzdWJl
eHByZXNzaW9uRW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbiA9IGdlbmVy
YXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0
KCksIG1faWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbjsKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihk
c3QsIGZ1bmN0aW9uLmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9u
QXBwbHkoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKLSAgICB7Ci0gICAgICAgIGlm
IChtYXlCZUNhbGwpIHsKLSAgICAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9h
cmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpIHsKLSAgICAgICAgICAgICAgICBBcmd1bWVudExpc3RO
b2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2RlOwotICAgICAgICAgICAgICAgIGlmICht
X2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCkgewotICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
bV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwci0+aXNTaW1wbGVBcnJheSgpKTsKLSAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9u
ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gc3RhdGljX2Nh
c3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwciktPnRvQXJn
dW1lbnRMaXN0KGdlbmVyYXRvci52bSgpLCAwLCAwKTsKLSAgICAgICAgICAgICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0
b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAgICAgICAgICAg
ICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0
ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRG
dW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBtX2FyZ3Mt
Pm1fbGlzdE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKLSAgICAgICAgICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92
ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAg
ICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3Mp
OwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50
aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5v
RXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbV9hcmdzLT5t
X2xpc3ROb2RlID0gb2xkTGlzdDsKKyAgICBib29sIGVtaXRDYWxsQ2hlY2sgPSAhZ2VuZXJhdG9y
LmlzQnVpbHRpbkZ1bmN0aW9uKCk7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKKyAgICAgICAg
ZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlv
bihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmFwcGx5KTsKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KGZ1bmN0aW9uLmdldCgp
LCByZWFsQ2FsbC5nZXQoKSk7CisgICAgfQorICAgIGlmIChtYXlCZUNhbGwpIHsKKyAgICAgICAg
aWYgKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcikgewor
ICAgICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogb2xkTGlzdCA9IG1fYXJncy0+bV9saXN0Tm9k
ZTsKKyAgICAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCkgeworICAgICAg
ICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByLT5pc1Np
bXBsZUFycmF5KCkpOworICAgICAgICAgICAgICAgIEFTU0VSVCghbV9hcmdzLT5tX2xpc3ROb2Rl
LT5tX25leHQtPm1fbmV4dCk7CisgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0g
c3RhdGljX2Nhc3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhw
ciktPnRvQXJndW1lbnRMaXN0KGdlbmVyYXRvci52bSgpLCAwLCAwKTsKKyAgICAgICAgICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdl
bmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CisgICAgICAgICAgICAg
ICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIo
KSwgb2xkTGlzdC0+bV9leHByKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwo
cmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9u
LCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBt
X2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVz
dGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50
cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAgICAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQo
KSk7CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhp
c1JlZ2lzdGVyKCksIG9sZExpc3QtPm1fZXhwcik7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0
ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9s
ZExpc3Q7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9hcmdzLT5tX2xp
c3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KTsKLSAgICAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBwcm9maWxlSG9va1JlZ2lzdGVyOwotICAgICAgICAgICAgaWYgKGdlbmVy
YXRvci5zaG91bGRFbWl0UHJvZmlsZUhvb2tzKCkpCi0gICAgICAgICAgICAgICAgcHJvZmlsZUhv
b2tSZWdpc3RlciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9y
LnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKLSAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiB0aGlzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9hcmdzLT5tX2xp
c3ROb2RlLT5tX2V4cHIpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFyZ3NSZWdp
c3RlcjsKLSAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MgPSBtX2FyZ3MtPm1fbGlz
dE5vZGUtPm1fbmV4dDsKLSAgICAgICAgICAgIGlmIChhcmdzLT5tX2V4cHItPmlzUmVzb2x2ZU5v
ZGUoKSAmJiBnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50cyhzdGF0aWNfY2FzdDxSZXNv
bHZlTm9kZSo+KGFyZ3MtPm1fZXhwciktPmlkZW50aWZpZXIoKSkpCi0gICAgICAgICAgICAgICAg
YXJnc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLnVuY2hlY2tlZFJlZ2lzdGVyRm9yQXJndW1lbnRzKCk7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJh
dG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7Ci0KLSAgICAgICAgICAgIC8vIEZ1bmN0aW9uLnBy
b3RvdHlwZS5hcHBseSBpZ25vcmVzIGV4dHJhIGFyZ3VtZW50cywgYnV0IHdlIHN0aWxsCi0gICAg
ICAgICAgICAvLyBuZWVkIHRvIGV2YWx1YXRlIHRoZW0gZm9yIHNpZGUgZWZmZWN0cy4KLSAgICAg
ICAgICAgIHdoaWxlICgoYXJncyA9IGFyZ3MtPm1fbmV4dCkpCi0gICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7Ci0KLSAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0Q2FsbFZhcmFyZ3MocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgdGhp
c1JlZ2lzdGVyLmdldCgpLCBhcmdzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKSwgcHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5l
cmF0b3IsIG1fYXJncyk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3Vt
ZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwogICAgICAgICB9Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9h
cmdzLT5tX2xpc3ROb2RlLT5tX25leHQpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJv
ZmlsZUhvb2tSZWdpc3RlcjsKKyAgICAgICAgaWYgKGdlbmVyYXRvci5zaG91bGRFbWl0UHJvZmls
ZUhvb2tzKCkpCisgICAgICAgICAgICBwcm9maWxlSG9va1JlZ2lzdGVyID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0g
Z2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5n
ZXQoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzUmVnaXN0ZXIgPSBnZW5lcmF0
b3IuZW1pdE5vZGUobV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpOworICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gYXJnc1JlZ2lzdGVyOworICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBhcmdz
ID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQ7CisgICAgICAgIGlmIChhcmdzLT5tX2V4cHIt
PmlzUmVzb2x2ZU5vZGUoKSAmJiBnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50cyhzdGF0
aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGFyZ3MtPm1fZXhwciktPmlkZW50aWZpZXIoKSkpCisgICAg
ICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IudW5jaGVja2VkUmVnaXN0ZXJGb3JBcmd1
bWVudHMoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJh
dG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7CisKKyAgICAgICAgLy8gRnVuY3Rpb24ucHJvdG90
eXBlLmFwcGx5IGlnbm9yZXMgZXh0cmEgYXJndW1lbnRzLCBidXQgd2Ugc3RpbGwKKyAgICAgICAg
Ly8gbmVlZCB0byBldmFsdWF0ZSB0aGVtIGZvciBzaWRlIGVmZmVjdHMuCisgICAgICAgIHdoaWxl
ICgoYXJncyA9IGFyZ3MtPm1fbmV4dCkpCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUo
YXJncy0+bV9leHByKTsKKworICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxWYXJhcmdzKHJldHVy
blZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJn
c1JlZ2lzdGVyLmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb2ZpbGVIb29rUmVn
aXN0ZXIuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgfQot
ICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOwotICAgIHsKKyAgICBpZiAo
ZW1pdENhbGxDaGVjaykgeworICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChyZWFsQ2FsbC5nZXQoKSk7CiAgICAgICAgIENh
bGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgIGdl
bmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgp
KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlv
bi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5n
ZXQoKSk7CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICBy
ZXR1cm4gcmV0dXJuVmFsdWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVf
aGFzaF90YWJsZQppbmRleCAzOTc5NzZiMDZjN2E5YjU4MzYzMzI5MDBhNmViYjkzZWM2OGI3NDg2
Li5jYWQ2NWJjNGNjODg4ZTMxNGY4OGQ2NjVkZDRhNmU2NDVhMDlhMzU1IDEwMDc1NQotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlCkBAIC0yODksNyArMjg5LDE3IEBAIHN1YiBvdXRw
dXQoKSB7CiAgICAgICAgICAgICAkaW50cmluc2ljID0gIlJlZ0V4cFRlc3RJbnRyaW5zaWMiIGlm
ICgka2V5IGVxICJ0ZXN0Iik7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoJHZhbHVlc1skaV17
InR5cGUifSBlcSAiRnVuY3Rpb24iKSAgeworICAgICAgICAgICAgbXkgJHRhYmxlSGVhZCA9ICRu
YW1lOworICAgICAgICAgICAgJHRhYmxlSGVhZCA9fiBzL1RhYmxlJC8vOworICAgICAgICAgICAg
cHJpbnQgIiAjaWYgSlNDX0JVSUxUSU5fRVhJU1RTKCIgLiB1YygkdGFibGVIZWFkIC4gJGtleSkg
LiIpXG4iOworICAgICAgICAgICAgcHJpbnQgIiAgIHsgXCIka2V5XCIsICgoJGF0dHJzWyRpXSkg
JiB+RnVuY3Rpb24pIHwgQnVpbHRpbiwgJGludHJpbnNpYywgKGludHB0cl90KXN0YXRpY19jYXN0
PEJ1aWx0aW5HZW5lcmF0b3I+KCIgLiAkdGFibGVIZWFkIC4gdWNmaXJzdCgka2V5KSAuICJDb2Rl
R2VuZXJhdG9yKSwgKGludHB0cl90KSRzZWNvbmRWYWx1ZSB9LFxuIjsKKyAgICAgICAgICAgIHBy
aW50ICIgI2Vsc2VcbiIKKyAgICAgICAgfQogICAgICAgICBwcmludCAiICAgeyBcIiRrZXlcIiwg
JGF0dHJzWyRpXSwgJGludHJpbnNpYywgKGludHB0cl90KSIgLiAkZmlyc3RDYXN0U3RyIC4gIigk
Zmlyc3RWYWx1ZSksIChpbnRwdHJfdCkiIC4gJHNlY29uZENhc3RTdHIgLiAiKCRzZWNvbmRWYWx1
ZSkgfSxcbiI7CisgICAgICAgIGlmICgkdmFsdWVzWyRpXXsidHlwZSJ9IGVxICJGdW5jdGlvbiIp
ICB7CisgICAgICAgICAgICBwcmludCAiICNlbmRpZlxuIgorICAgICAgICB9CiAgICAgICAgICRp
Kys7CiAgICAgfQogICAgIHByaW50ICIgICB7IDAsIDAsIE5vSW50cmluc2ljLCAwLCAwIH1cbiI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWluYXRvcnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb21pbmF0b3JzLmNwcAppbmRleCBhNWFl
NjE0YjkxOWIwZmQ0MzQ4MmQwMTVjYzI5NTA4NDBlNTRiMjYxLi4yMDA5NmU3M2IzNTE1OWM3NDM0
YmQyN2FiNmY2MzMzN2ZlOWRmNGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RvbWluYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9taW5hdG9ycy5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkRGR0RvbWluYXRvcnMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5o
IgogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvZGUuY3BwCmluZGV4IDkzYzQxZmJkZTQ0NzY0YjZhNmZlZTBiMjRiNDg0OWFlZGIxMTc0YzUu
LmQ4NmFjOGI0MTM3MzFjYjhkYmRmNGFkMzNlZmE1ZDc4NTIwNTFhMDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJM
RShERkdfSklUKQogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAyZmYwYzM0MTQ2ZTJj
MGJhMmZmNzZjNGQzZjdjNDZiYTNlMjU1MTQ3Li45MDQ0Y2RjNmI4YzNhZDRhMWU5NDE4OGRkMWQw
ZTIwMGU2OWZiOTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNs
dWRlICJWTS5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiTmFtZUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29u
c3RydWN0b3IuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWVlMWM3YTdjY2RkOTM3NjkyMGU3
NmQ3ZmU4ZDMwYWY5NTVmMzFhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucwpAQCAtMCwwICsxLDMwNCBAQAorIyEvdXNyL2Jpbi9w
eXRob24KKyMgQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorIyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyMg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorIyBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBmaWxlY21wCitpbXBvcnQgZm5tYXRjaAoraW1w
b3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzeXMKK2ltcG9ydCBkYXRl
dGltZQoraW1wb3J0IGpzb24KKworY29weXJpZ2h0VGV4dCA9ICIiIiAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovXG4KKyIiIgorCitnZW5lcmF0b3JTdHJpbmcgPSAiLyog
R2VuZXJhdGVkIGJ5ICVzIGRvIG5vdCBoYW5kIGVkaXQuICovXG4iICUgb3MucGF0aC5iYXNlbmFt
ZShfX2ZpbGVfXykKKworZnVuY3Rpb25IZWFkUmVnRXhwID0gcmUuY29tcGlsZShyImZ1bmN0aW9u
XHMrXHcrXHMqXCguKj9cKSIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitmdW5jdGlvbk5hbWVSZWdF
eHAgPSByZS5jb21waWxlKHIiZnVuY3Rpb25ccysoXHcrKVxzKlwoIiwgcmUuTVVMVElMSU5FIHwg
cmUuUykKK2Z1bmN0aW9uUGFyYW1ldGVyRmluZGVyID0gcmUuY29tcGlsZShyIl5mdW5jdGlvblxz
Kyg/Olx3KylccypcKCgoPzpccypcdyspP1xzKig/OlxzKixccypcdyspKik/XCkiLCByZS5NVUxU
SUxJTkUgfCByZS5TKQorCittdWx0aWxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwv
XCouKj9cKlwvIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK3NpbmdsZUxpbmVDb21tZW50UmVnRXhw
ID0gcmUuY29tcGlsZShyIlwvXC8uKj9cbiIsIHJlLk1VTFRJTElORSB8IHJlLlMpCisKK2RlZiBn
ZXRDb3B5cmlnaHQoc291cmNlKToKKyAgICBjb3B5cmlnaHRCbG9jayA9IG11bHRpbGluZUNvbW1l
bnRSZWdFeHAuZmluZGFsbChzb3VyY2UpWzBdCisgICAgY29weXJpZ2h0QmxvY2sgPSBjb3B5cmln
aHRCbG9ja1s6Y29weXJpZ2h0QmxvY2suaW5kZXgoIlJlZGlzdHJpYnV0aW9uIildCisgICAgY29w
eVJpZ2h0TGluZXMgPSBbXQorCisgICAgZm9yIGxpbmUgaW4gY29weXJpZ2h0QmxvY2suc3BsaXQo
IlxuIik6CisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIi8qIiwgIiIpCisgICAgICAgIGxp
bmUgPSBsaW5lLnJlcGxhY2UoIiovIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2Uo
IioiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiQ29weXJpZ2h0IiwgIiIpCisg
ICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoImNvcHlyaWdodCIsICIiKQorICAgICAgICBsaW5l
ID0gbGluZS5yZXBsYWNlKCIoQykiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgi
KGMpIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgaWYgbGVuKGxp
bmUpID09IDA6CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIGNvcHlSaWdodExpbmVz
LmFwcGVuZChsaW5lKQorICAgIAorICAgIHJldHVybiBsaXN0KHNldChjb3B5UmlnaHRMaW5lcykp
CisKKworCitkZWYgZ2V0RnVuY3Rpb25zKHNvdXJjZSk6CisKKyAgICBzb3VyY2UgPSBtdWx0aWxp
bmVDb21tZW50UmVnRXhwLnN1YigiLyoqLyIsIHNpbmdsZUxpbmVDb21tZW50UmVnRXhwLnN1Yigi
Ly9cbiIsIHNvdXJjZSkpCisKKyAgICBtYXRjaGVzID0gWyBmIGZvciBmIGluIGZ1bmN0aW9uSGVh
ZFJlZ0V4cC5maW5kaXRlcihzb3VyY2UpXQorICAgIGZ1bmN0aW9uQm91bmRzID0gW10KKyAgICBz
dGFydCA9IDAKKyAgICBlbmQgPSAwCisgICAgZm9yIG1hdGNoIGluIG1hdGNoZXM6CisgICAgICAg
IHN0YXJ0ID0gbWF0Y2guc3RhcnQoKQorICAgICAgICBpZiBzdGFydCA8IGVuZDoKKyAgICAgICAg
ICAgIGNvbnRpbnVlCisgICAgICAgIGVuZCA9IG1hdGNoLmVuZCgpCisgICAgICAgIHdoaWxlIHNv
dXJjZVtlbmRdICE9ICd7JzoKKyAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgZGVw
dGggPSAxCisgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgd2hpbGUgZGVwdGggPiAwOgor
ICAgICAgICAgICAgaWYgc291cmNlW2VuZF0gPT0gJ3snOgorICAgICAgICAgICAgICAgIGRlcHRo
ID0gZGVwdGggKyAxCisgICAgICAgICAgICBlbGlmIHNvdXJjZVtlbmRdID09ICd9JzoKKyAgICAg
ICAgICAgICAgICBkZXB0aCA9IGRlcHRoIC0gMQorICAgICAgICAgICAgZW5kID0gZW5kICsgMQor
ICAgICAgICBmdW5jdGlvbkJvdW5kcy5hcHBlbmQoKHN0YXJ0LCBlbmQpKQorCisgICAgZnVuY3Rp
b25zID0gW3NvdXJjZVtzdGFydDplbmRdLnN0cmlwKCkgZm9yIChzdGFydCwgZW5kKSBpbiBmdW5j
dGlvbkJvdW5kc10KKyAgICByZXN1bHQgPSBbXQorICAgIGZvciBmdW5jdGlvbiBpbiBmdW5jdGlv
bnM6CisgICAgICAgIGZ1bmN0aW9uID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5zdWIoIiIsIGZ1
bmN0aW9uKQorICAgICAgICBmdW5jdGlvbk5hbWUgPSBmdW5jdGlvbk5hbWVSZWdFeHAuZmluZGFs
bChmdW5jdGlvbilbMF0KKyAgICAgICAgZnVuY3Rpb25QYXJhbWV0ZXJzID0gZnVuY3Rpb25QYXJh
bWV0ZXJGaW5kZXIuZmluZGFsbChmdW5jdGlvbilbMF0uc3BsaXQoJywnKQorICAgICAgICBpZiBs
ZW4oZnVuY3Rpb25QYXJhbWV0ZXJzWzBdKSA9PSAwOgorICAgICAgICAgICAgZnVuY3Rpb25QYXJh
bWV0ZXJzID0gW10KKyAgICAgICAgICAgIAorICAgICAgICByZXN1bHQuYXBwZW5kKChmdW5jdGlv
bk5hbWUsIGZ1bmN0aW9uLCBmdW5jdGlvblBhcmFtZXRlcnMpKQorICAgIHJldHVybiByZXN1bHQK
KyAgICAgICAgCisKK2RlZiBnZW5lcmF0ZUNvZGUoc291cmNlKToKKyAgICBpbnB1dEZpbGUgPSBv
cGVuKHNvdXJjZSwgInIiKQorICAgIGJhc2VOYW1lID0gb3MucGF0aC5iYXNlbmFtZShzb3VyY2Up
LnJlcGxhY2UoIi5qcyIsICIiKQorICAgIAorICAgIHNvdXJjZSA9ICIiCisgICAgZm9yIGxpbmUg
aW4gaW5wdXRGaWxlOgorICAgICAgICBzb3VyY2UgPSBzb3VyY2UgKyBsaW5lCisgICAgCisgICAg
aWYgc3lzLnBsYXRmb3JtID09ICJjeWd3aW4iOgorICAgICAgICBzb3VyY2UgPSBzb3VyY2UucmVw
bGFjZSgiXHJcbiIsICJcbiIpCisgICAgcmV0dXJuIChiYXNlTmFtZSwgZ2V0RnVuY3Rpb25zKHNv
dXJjZSksIGdldENvcHlyaWdodChzb3VyY2UpKQorCitkZWYgbWFuZ2xlTmFtZShvYmplY3QsIG5h
bWUpOgorICAgIHFOYW1lID0gb2JqZWN0ICsgIi4iICsgbmFtZQorICAgIG1hbmdsZWROYW1lID0g
IiIKKyAgICBpID0gMAorICAgIHdoaWxlIGkgPCBsZW4ocU5hbWUpOgorICAgICAgICBpZiBxTmFt
ZVtpXSA9PSAnLic6CisgICAgICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lICsgcU5h
bWVbaSArIDFdLnVwcGVyKCkKKyAgICAgICAgICAgIGkgPSBpICsgMQorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZSArIHFOYW1lW2ldCisgICAgICAg
IGkgPSBpICsgMQorICAgIHJldHVybiBtYW5nbGVkTmFtZQorCitidWlsdGlucyA9IFtdCisKK2Jh
c2VOYW1lID0gc3lzLmFyZ3ZbLTFdCitidWlsdGluX2RlZmluaXRpb25zID0gc3lzLmFyZ3ZbMTot
MV0KKyhvdXRwdXRfYmFzZSwgXykgPSBvcy5wYXRoLnNwbGl0ZXh0KHN5cy5hcmd2Wy0xXSkKKwor
Y29weXJpZ2h0cyA9IFtdCitmb3IgZmlsZSBpbiBidWlsdGluX2RlZmluaXRpb25zOgorICAgIGlm
IGZubWF0Y2guZm5tYXRjaChmaWxlLCAnKi5qcycpOgorICAgICAgICAoYmFzZU5hbWUsIGZ1bmN0
aW9ucywgb2JqZWN0Q29weXJpZ2h0cykgPSBnZW5lcmF0ZUNvZGUoZmlsZSkKKyAgICAgICAgY29w
eXJpZ2h0cy5leHRlbmQob2JqZWN0Q29weXJpZ2h0cykKKyAgICAgICAgYnVpbHRpbnMuYXBwZW5k
KChiYXNlTmFtZSwgZnVuY3Rpb25zKSkKKworY29weXJpZ2h0cyA9IGxpc3Qoc2V0KGNvcHlyaWdo
dHMpKQorCitjb3B5cmlnaHRCb2R5ID0gIiIKK2ZvciBjb3B5cmlnaHQgaW4gY29weXJpZ2h0czoK
KyAgICBjb3B5cmlnaHRCb2R5ID0gY29weXJpZ2h0Qm9keSArIiAqIENvcHlyaWdodCAoQykgIiAr
IGNvcHlyaWdodCArICJcbiIKKworYnVpbHRpbnNIZWFkZXIgPSBvcGVuKG91dHB1dF9iYXNlICsg
Ii5oLnRtcCIsICJ3IikKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24gPSBvcGVuKG91dHB1dF9iYXNl
ICsgIi5jcHAudG1wIiwgInciKQorY29weXJpZ2h0VGV4dCA9ICIvKlxuIiArIGNvcHlyaWdodEJv
ZHkgKyBjb3B5cmlnaHRUZXh0CitidWlsdGluc0hlYWRlci53cml0ZSgiIiIlcworJXMKKworI2lm
bmRlZiBKU0NCdWlsdGluc19ICisjZGVmaW5lIEpTQ0J1aWx0aW5zX0gKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIElkZW50aWZpZXI7CitjbGFz
cyBKU0dsb2JhbE9iamVjdDsKK2NsYXNzIFNvdXJjZUNvZGU7CitjbGFzcyBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTsKK2NsYXNzIFZNOworCitGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1
aWx0aW5FeGVjdXRhYmxlKFZNJiwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCBjb25zdCBT
b3VyY2VDb2RlJik7CisKKyIiIiAlIChnZW5lcmF0b3JTdHJpbmcsIGNvcHlyaWdodFRleHQpKQor
Citjb2RlUmVmZXJlbmNlcyA9IFtdCisKK2ZvciAob2JqZWN0TmFtZSwgZnVuY3Rpb25zKSBpbiBi
dWlsdGluczoKKyAgICBwcmludCgiR2VuZXJhdGluZyBiaW5kaW5ncyBmb3IgdGhlICVzIGJ1aWx0
aW4uIiAlIG9iamVjdE5hbWUpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIi8qICVzIGZ1bmN0
aW9ucyAqL1xuIiAlIG9iamVjdE5hbWUpCisgICAgZm9yIChuYW1lLCBpbXBsZW1lbnRhdGlvbiwg
XykgaW4gZnVuY3Rpb25zOgorICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZU5hbWUob2JqZWN0
TmFtZSwgbmFtZSkKKyAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZVswXS5sb3dlcigp
ICsgbWFuZ2xlZE5hbWVbMTpdICsgIkNvZGUiCisgICAgICAgIGNvZGVSZWZlcmVuY2VzLmFwcGVu
ZCgobWFuZ2xlZE5hbWUsIG5hbWUsIGltcGxlbWVudGF0aW9uKSkKKyAgICAgICAgYnVpbHRpbnNI
ZWFkZXIud3JpdGUoImV4dGVybiBjb25zdCBjaGFyKiBzXyVzO1xuIiAlIG1hbmdsZWROYW1lKQor
ICAgICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiZXh0ZXJuIGNvbnN0IGludCBzXyVzTGVuZ3Ro
O1xuIiAlIG1hbmdsZWROYW1lKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJcbiIpCisgICAg
YnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0ZPUkVBQ0hfJXNfQlVJTFRJTihtYWNy
bykgXFxcbiIgJSBvYmplY3ROYW1lLnJlcGxhY2UoIi4iLCAiXyIpLnVwcGVyKCkpCisgICAgZm9y
IChuYW1lLCBpbXBsZW1lbnRhdGlvbiwgYXJndW1lbnRzKSBpbiBmdW5jdGlvbnM6CisgICAgICAg
IG1hbmdsZWROYW1lID0gbWFuZ2xlTmFtZShvYmplY3ROYW1lLCBuYW1lKQorICAgICAgICBidWls
dGluc0hlYWRlci53cml0ZSgiICAgIG1hY3JvKCVzLCAlcywgJWQpIFxcXG4iICUgKG5hbWUsIG1h
bmdsZWROYW1lLCBsZW4oYXJndW1lbnRzKSkpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxu
IikKKyAgICBmb3IgKG5hbWUsIGltcGxlbWVudGF0aW9uLCBhcmd1bWVudHMpIGluIGZ1bmN0aW9u
czoKKyAgICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0JVSUxUSU5fJXMg
MVxuIiAlIG1hbmdsZU5hbWUob2JqZWN0TmFtZSwgbmFtZSkudXBwZXIoKSkKKyAgICBidWlsdGlu
c0hlYWRlci53cml0ZSgiXG5cbiIpCituYW1lcyA9IFtdCitidWlsdGluc0hlYWRlci53cml0ZSgi
I2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOKG1hY3JvKVxcXG4iKQorZm9yIChjb2RlUmVmZXJl
bmNlLCBmdW5jdGlvbk5hbWUsIHNvdXJjZSkgaW4gY29kZVJlZmVyZW5jZXM6CisgICAgYnVpbHRp
bnNIZWFkZXIud3JpdGUoIiAgICBtYWNybyglcywgJXMsIHNfJXNMZW5ndGgpIFxcXG4iICUgKGNv
ZGVSZWZlcmVuY2UsIGZ1bmN0aW9uTmFtZSwgY29kZVJlZmVyZW5jZSkpCisgICAgbmFtZXMuYXBw
ZW5kKGZ1bmN0aW9uTmFtZSkKKworYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuXG4iKQorYnVpbHRp
bnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1F
KG1hY3JvKSBcXFxuIikKK2ZvciBuYW1lIGluIHNvcnRlZChzZXQobmFtZXMpKToKKyAgICBidWls
dGluc0hlYWRlci53cml0ZSgiICAgIG1hY3JvKCVzKSBcXFxuIiAlIG5hbWUpCitidWlsdGluc0hl
YWRlci53cml0ZSgiIiIKKworI2RlZmluZSBKU0NfREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihj
b2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAorICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihWTSYpOworCitKU0NfRk9SRUFDSF9CVUlMVElO
KEpTQ19ERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIEpTQ19ERUNMQVJFX0JVSUxU
SU5fR0VORVJBVE9SCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fRVhJU1RTKG5hbWUpIGRlZmluZWQo
SlNDX0JVSUxUSU5fIyNuYW1lKQorCit9CisKKyNlbmRpZgorCisiIiIpCisKK2J1aWx0aW5zSW1w
bGVtZW50YXRpb24ud3JpdGUoIiIiJXMKKyVzCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lu
Y2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIK
KyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0MgeworCisiIiIgICUgKGdlbmVyYXRvclN0cmlu
ZywgY29weXJpZ2h0VGV4dCkpCisKK2ZvciAoY29kZVJlZmVyZW5jZSwgbmFtZSwgc291cmNlKSBp
biBjb2RlUmVmZXJlbmNlczoKKyAgICBzb3VyY2UgPSAiKGZ1bmN0aW9uICIgKyBzb3VyY2Vbc291
cmNlLmluZGV4KCIoIik6XSArICIpIgorICAgIGxpbmVzID0ganNvbi5kdW1wcyhzb3VyY2UpWzE6
LTFdLnNwbGl0KCJcXG4iKQorICAgIHNvdXJjZUxlbmd0aCA9IGxlbihzb3VyY2UpCisgICAgc291
cmNlID0gIiIKKyAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgc291cmNlID0gc291cmNl
ICsgKCIgICAgXCIlc1xcblwiIFxcXG4iICUgbGluZSkKKyAgICBidWlsdGluc0ltcGxlbWVudGF0
aW9uLndyaXRlKCJjb25zdCBjaGFyKiBzXyVzID1cbiVzO1xuXG4iICUgKGNvZGVSZWZlcmVuY2Us
IHNvdXJjZSkpCisgICAgYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiY29uc3QgaW50IHNf
JXNMZW5ndGggPSAlZDtcblxuIiAlIChjb2RlUmVmZXJlbmNlLCBzb3VyY2VMZW5ndGggKyAxKSkg
IyArIDEgZm9yIFxuCisKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoIiIiCitGdW5jdGlv
bkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKFZNJiB2bSwgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlKQoreworICAgIHVuc2lnbmVkIGxpbmVDb3VudCA9IHVubGlua2VkRXhlY3V0YWJsZS0+bGlu
ZUNvdW50KCk7CisgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSAxOworICAgIHVuc2lnbmVkIHNv
dXJjZUxlbmd0aCA9IHVubGlua2VkRXhlY3V0YWJsZS0+c291cmNlTGVuZ3RoKCk7CisgICAgYm9v
bCBlbmRDb2x1bW5Jc09uU3RhcnRMaW5lID0gIWxpbmVDb3VudDsKKyAgICB1bnNpZ25lZCBlbmRD
b2x1bW5FeGNsdWRpbmdCcmFjZXMgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnVubGlua2VkQm9keUVu
ZENvbHVtbigpICsgKGVuZENvbHVtbklzT25TdGFydExpbmUgPyAwIDogMSk7CisgICAgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnN0YXJ0T2Zmc2V0KCk7CisgICAg
dW5zaWduZWQgc3RhcnRPZmZzZXRFeGNsdWRpbmdPcGVuQnJhY2UgPSBzdGFydE9mZnNldCArIDE7
CisgICAgdW5zaWduZWQgZW5kT2Zmc2V0RXhjbHVkaW5nQ2xvc2VCcmFjZSA9IHN0YXJ0T2Zmc2V0
ICsgc291cmNlTGVuZ3RoIC0gMTsKKyAgICBTb3VyY2VDb2RlIGJvZHlTb3VyY2Uoc291cmNlLnBy
b3ZpZGVyKCksIHN0YXJ0T2Zmc2V0RXhjbHVkaW5nT3BlbkJyYWNlLCBlbmRPZmZzZXRFeGNsdWRp
bmdDbG9zZUJyYWNlLCAwLCBzdGFydENvbHVtbik7CisgICAgcmV0dXJuIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6Y3JlYXRlKHZtLCBib2R5U291cmNlLCB1bmxpbmtlZEV4ZWN1dGFibGUsIDAsIGxpbmVD
b3VudCwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbkV4Y2x1ZGluZ0JyYWNlcywgZmFsc2UpOworfQor
CisjZGVmaW5lIEpTQ19ERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9u
TmFtZSwgYXJndW1lbnRDb3VudCkgXFwKK0Z1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dl
bmVyYXRvcihWTSYgdm0pIFxcCit7IFxcCisgICAgcmV0dXJuIGNyZWF0ZUJ1aWx0aW5FeGVjdXRh
YmxlKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKSwg
dm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IFxcCit9CisKK0pT
Q19GT1JFQUNIX0JVSUxUSU4oSlNDX0RFRklORV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBK
U0NfREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCit9CisKKyIiIikKKworYnVpbHRpbnNIZWFkZXIu
Y2xvc2UoKQorYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi5jbG9zZSgpCisKK2lmIChub3Qgb3MucGF0
aC5leGlzdHMob3V0cHV0X2Jhc2UgKyAiLmgiKSkgb3IgKG5vdCBmaWxlY21wLmNtcChvdXRwdXRf
YmFzZSArICIuaC50bXAiLCBvdXRwdXRfYmFzZSArICIuaCIsIHNoYWxsb3c9RmFsc2UpKToKKyAg
ICBvcy5yZW5hbWUob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmgiKQor
ZWxzZToKKyAgICBvcy5yZW1vdmUob3V0cHV0X2Jhc2UgKyAiLmgudG1wIikKKworaWYgKG5vdCBv
cy5wYXRoLmV4aXN0cyhvdXRwdXRfYmFzZSArICIuY3BwIikpIG9yIChub3QgZmlsZWNtcC5jbXAo
b3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCBvdXRwdXRfYmFzZSArICIuY3BwIiwgc2hhbGxvdz1G
YWxzZSkpOgorICAgIG9zLnJlbmFtZShvdXRwdXRfYmFzZSArICIuY3BwLnRtcCIsIG91dHB1dF9i
YXNlICsgIi5jcHAiKQorZWxzZToKKyAgICBvcy5yZW1vdmUob3V0cHV0X2Jhc2UgKyAiLmNwcC50
bXAiKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hl
ZENhbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgK
aW5kZXggMmNhM2U5Nzk0MGM3YzExMDZjMWJhYmExZjM1NGZlODQ3YjQzODViMy4uMzBjYWQyYTE0
ZmZkYmZiNGQ1N2NmNWExMmZjYjkwMGUyNjRmODc2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgLCBtX2ludGVycHJldGVyKGNhbGxGcmFtZS0+aW50ZXJwcmV0
ZXIoKSkKICAgICAgICAgICAgICwgbV9lbnRyeVNjb3BlKGNhbGxGcmFtZS0+dm0oKSwgZnVuY3Rp
b24tPnNjb3BlKCktPmdsb2JhbE9iamVjdCgpKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NF
UlQoIWZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpKTsKKyAgICAgICAgICAgIEFTU0VSVCghZnVu
Y3Rpb24tPmlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkpOwogICAgICAgICAgICAgaWYgKGNhbGxG
cmFtZS0+dm0oKS5pc1NhZmVUb1JlY3Vyc2UoKSkgewogICAgICAgICAgICAgICAgIG1fYXJndW1l
bnRzLnJlc2l6ZShhcmd1bWVudENvdW50KTsKICAgICAgICAgICAgICAgICBtX2Nsb3N1cmUgPSBt
X2ludGVycHJldGVyLT5wcmVwYXJlRm9yUmVwZWF0Q2FsbChmdW5jdGlvbi0+anNFeGVjdXRhYmxl
KCksIGNhbGxGcmFtZSwgJm1fcHJvdG9DYWxsRnJhbWUsIGZ1bmN0aW9uLCBhcmd1bWVudENvdW50
ICsgMSwgZnVuY3Rpb24tPnNjb3BlKCksIG1fYXJndW1lbnRzLmRhdGEoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCBjYTg5
MGIwNmVhMzNmYTllN2YxZmE1MWEzNWVhMmQ0OGQwMDlhMzhhLi42YzliZjk2YzE1ZjYwOWUyNjVj
ZTI1MGE0NWJmMDg2MWQwNmNkMWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdGFja0lubGluZXMuaCIKICNp
bmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5jbHVkZSAiTExJbnRDTG9vcC5oIgogI2luY2x1ZGUgIkxM
SW50VGh1bmtzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvUHJvdG9DYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L1Byb3RvQ2FsbEZyYW1lLmNwcAppbmRleCBmMGUwMmJhNGU0NzZmOTljYzkxM2IwNDYyYWQyNzk1
MDA2MDlmYTNhLi4xYzI0MGRjZDcxYmU1MjlkODhjYmY0NjFkMTg2OGY1ZWIyYjAyYWQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFt
ZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5oIgogCiAj
aW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNp
bmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGNhN2FkMTFmMmUwYjhhM2I4YjE4NTg5
MWQ3ZTUyMmJhZTQwM2EyMzYuLmNiNTUwN2JlYWM1NWJmOGViMWIzN2VjOTBmY2FiMTkzNGZiNDhl
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
czMyXzY0LmNwcAppbmRleCA5OGQxMGEzZjRkY2IxMmQ4OWYzN2ExMmYyMjYwNGI5NDZlMDhlNjI3
Li5kZDAzNTM3NzllOGJkZjk4ZjQ2NThhMzA3ZTMyZDA2ZTQ3MjQ0MTU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlO
YW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCmluZGV4IDkyOGRkNTBmYjAxNmUyNzE2NDRhNTc1ZTMwYWI1ZjI1MTZlYjUwZWMuLjkwODhi
N2ZiMmZiN2FkMDEzODA2ZWY0OWI1YWY0MjBmYTY0ODQwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNDEsNiArNDEsOCBAQAogI2luY2x1ZGUg
IkpJVC5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbldyYXBwZXJzLmgiCiAjaW5jbHVkZSAiSklU
VG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNH
bG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1
ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggMjZkZDRkMWFmNzQ1YWZhMWZiYzUzYTlj
MDIzYTZlNDc0MWE2NmEwOS4uZGYxYmQzYTljZmE0MDJjNTJhNTIxMWNmMWFjY2U2N2Q1MTIxYjdl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAKQEAgLTI5LDExICsyOSwxMyBAQAogI2luY2x1ZGUgIkpJVC5oIgogCiAjaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJHQ0F3
YXJlSklUU3R1YlJvdXRpbmUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRl
ICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0Fy
cmF5LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpT
VmFyaWFibGVPYmplY3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggNDA3ODRiNDk0MzFmZTAy
ZThlNDUyMmYxNjMwOGM5MDI0NzE2ZDIzNi4uMmY3OTU1NTRiMDkxZGVlYmJjMDNiZjJiZThjNzRm
NDFhZTU0MWVkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNs
dWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcu
aCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgi
CiAjaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCiAjaW5jbHVkZSAiU3RhY2tWaXNpdG9yLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFj
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0
b3IuY3BwCmluZGV4IDYwNGNjMjYzY2Y5N2UwODZmZWQwNmVjOTAzYjBlYzE5ODNlNzgxMzcuLjgx
NjZlN2Y4MWZhODlhN2Q0ZjUwYzVmMWE5NGZhOTY4YzVkNTdlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC0z
NSw3ICszNSw3IEBACiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJKU0FycmF5Lmgi
CiAjaW5jbHVkZSAiSlNDZWxsLmgiCi0jaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUg
IkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IDhlYzFmZDMyYTNhZGEyMmUxMjUyMjk1NzBkY2Y3ZmYy
OGVhYmYxZWQuLjQ2YTdjNzZiMmY5MDFmYzNjYzM2ZDFjZTBjMDczNTNlYjA2YjJmNWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC04ODgsOSArODg4LDkg
QEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24KICAgICBBU1NFUlQoZnVuYy0+aXNEb3RBY2Nlc3Nv
ck5vZGUoKSk7CiAgICAgRG90QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nl
c3Nvck5vZGUqPihmdW5jKTsKICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKiBub2RlOwotICAgIGlm
IChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5jYWxsKQorICAgIGlm
IChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5jYWxsIHx8IGRvdC0+
aWRlbnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmNhbGxQcml2YXRlTmFtZSkKICAg
ICAgICAgbm9kZSA9IG5ldyAobV92bSkgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24s
IGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQs
IGRpdm90RW5kKTsKLSAgICBlbHNlIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5hcHBseSkKKyAgICBlbHNlIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3Zt
LT5wcm9wZXJ0eU5hbWVzLT5hcHBseSB8fCBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5hcHBseVByaXZhdGVOYW1lKQogICAgICAgICBub2RlID0gbmV3IChtX3ZtKSBB
cHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50
aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKICAgICBlbHNlCiAg
ICAgICAgIG5vZGUgPSBuZXcgKG1fdm0pIEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRv
dC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRp
dm90RW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKaW5kZXggY2E0YmI0
ZjBhZGU4ZDZiYzgyNjkxYTZjMDAwMTRjZjE5OGJkODhiZC4uY2NiMDc5ZDk3NWExNDFjNWM0YjJk
N2I2MjMxMzAwMDcwOTc3NzgyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5j
cHAKQEAgLTI1LDEwICsyNSwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxl
eGVyLmgiCiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgorI2luY2x1ZGUgIklkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgotCiAjaW5jbHVkZSAiSlNH
bG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKLSNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiTm9kZUluZm8uaCIKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUgPHd0Zi9kdG9hLmg+
CkBAIC05MCw2ICs5MCw3IEBAIGVudW0gQ2hhcmFjdGVyVHlwZSB7CiAKICAgICAvLyBPdGhlciB0
eXBlcyAob25seSBvbmUgc28gZmFyKQogICAgIENoYXJhY3RlcldoaXRlU3BhY2UsCisgICAgQ2hh
cmFjdGVyUHJpdmF0ZUlkZW50aWZpZXJTdGFydAogfTsKIAogLy8gMjU2IExhdGluLTEgY29kZXMK
QEAgLTE1OCw3ICsxNTksNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgdHlwZXNPZkxh
dGluMUNoYXJhY3RlcnNbMjU2XSA9IHsKIC8qICA2MSAtID0gICAgICAgICAgICAgICAgICAqLyBD
aGFyYWN0ZXJFcXVhbCwKIC8qICA2MiAtID4gICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJH
cmVhdGVyLAogLyogIDYzIC0gPyAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlclF1ZXN0aW9u
LAotLyogIDY0IC0gQCAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlckludmFsaWQsCisvKiAg
NjQgLSBAICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyUHJpdmF0ZUlkZW50aWZpZXJTdGFy
dCwKIC8qICA2NSAtIEEgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3Rh
cnQsCiAvKiAgNjYgLSBCICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0
YXJ0LAogLyogIDY3IC0gQyAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJT
dGFydCwKQEAgLTQ4Niw5ICs0ODcsMTAgQEAgc3RhdGljIGNvbnN0IExDaGFyIHNpbmdsZUNoYXJh
Y3RlckVzY2FwZVZhbHVlc0ZvckFTQ0lJWzEyOF0gPSB7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLUxleGVyPFQ+OjpMZXhlcihWTSogdm0pCitMZXhlcjxUPjo6TGV4ZXIoVk0qIHZtLCBK
U1BhcnNlclN0cmljdG5lc3Mgc3RyaWN0bmVzcykKICAgICA6IG1faXNSZXBhcnNpbmcoZmFsc2Up
CiAgICAgLCBtX3ZtKHZtKQorICAgICwgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKHN0cmljdG5l
c3MgPT0gSlNQYXJzZUJ1aWx0aW4pCiB7CiB9CiAKQEAgLTc1Myw3ICs3NTUsMjcgQEAgaW5saW5l
IHZvaWQgTGV4ZXI8VD46OnJlY29yZDE2KGludCBjKQogICAgIEFTU0VSVChjIDw9IHN0YXRpY19j
YXN0PGludD4oVVNIUlRfTUFYKSk7CiAgICAgbV9idWZmZXIxNi5hcHBlbmQoc3RhdGljX2Nhc3Q8
VUNoYXI+KGMpKTsKIH0KLQorICAgIAorI2lmICFBU1NFUlRfRElTQUJMRUQKK2Jvb2wgaXNTYWZl
SWRlbnRpZmllcihWTSYgdm0sIGNvbnN0IElkZW50aWZpZXIqIGlkZW50KQoreworICAgIGlmICgh
aWRlbnQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIC8qIEp1c3QgYmxvY2sgYW55IHVzZSBv
ZiBzdXNwaWNpb3VzIGlkZW50aWZpZXJzLiAgVGhpcyBpcyBpbnRlbmRlZCB0bworICAgICAqIGJl
IHVzZWQgYXMgYSBzYWZldHkgbmV0IHdoaWxlIGltcGxlbWVudGluZyBidWlsdGlucy4KKyAgICAg
Ki8KKyAgICBpZiAoKmlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmNhbGwpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoKmlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmFwcGx5KQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCppZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVz
LT5ldmFsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCppZGVudCA9PSB2bS5wcm9w
ZXJ0eU5hbWVzLT5GdW5jdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0
cnVlOworfQorI2VuZGlmCisgICAgCiB0ZW1wbGF0ZSA8PgogdGVtcGxhdGUgPGJvb2wgc2hvdWxk
Q3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46
OnBhcnNlSWRlbnRpZmllcihKU1Rva2VuRGF0YSogdG9rZW5EYXRhLCB1bnNpZ25lZCBsZXhlckZs
YWdzLCBib29sIHN0cmljdE1vZGUpCiB7CkBAIC03NjUsNyArNzg3LDExIEBAIHRlbXBsYXRlIDxi
b29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4
ZXI8TENoYXI+OjpwCiAgICAgICAgICAgICByZXR1cm4ga2V5d29yZCA9PSBSRVNFUlZFRF9JRl9T
VFJJQ1QgJiYgIXN0cmljdE1vZGUgPyBJREVOVCA6IGtleXdvcmQ7CiAgICAgICAgIH0KICAgICB9
Ci0KKyAgICAKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJlbnQgPT0gJ0AnICYmIG1f
cGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKKyAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAg
c2hpZnQoKTsKKyAgICAKICAgICBjb25zdCBMQ2hhciogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVu
dFNvdXJjZVB0cigpOwogICAgIHVuc2lnbmVkIGlkZW50aWZpZXJMaW5lU3RhcnQgPSBjdXJyZW50
TGluZVN0YXJ0T2Zmc2V0KCk7CiAgICAgCkBAIC03NzksMTUgKzgwNSwyNiBAQCB0ZW1wbGF0ZSA8
Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExl
eGVyPExDaGFyPjo6cAogCiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAwOwogICAgIAot
ICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyKSB7CisgICAgaWYgKHNob3VsZENyZWF0ZUlk
ZW50aWZpZXIgfHwgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CiAgICAgICAgIGludCBpZGVu
dGlmaWVyTGVuZ3RoID0gY3VycmVudFNvdXJjZVB0cigpIC0gaWRlbnRpZmllclN0YXJ0OwogICAg
ICAgICBpZGVudCA9IG1ha2VJZGVudGlmaWVyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxl
bmd0aCk7Ci0KKyAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgeworICAgICAg
ICAgICAgaWYgKCFpc1NhZmVJZGVudGlmaWVyKCptX3ZtLCBpZGVudCkgJiYgIWlzUHJpdmF0ZU5h
bWUpIHsKKyAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIlRo
ZSB1c2Ugb2YgJyIsIGlkZW50LT5zdHJpbmcoKSwgIicgaXMgZGlzYWxsb3dlZCBpbiBidWlsdGlu
IGZ1bmN0aW9ucy4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgICAgICAgICBp
ZGVudCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPmdldFByaXZhdGVOYW1lKCppZGVudCk7CisgICAg
ICAgICAgICBlbHNlIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVk
S2V5d29yZCkKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gJm1fdm0tPnByb3Bl
cnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmRQcml2YXRlTmFtZTsKKyAgICAgICAgICAgIGlmICgh
aWRlbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSURfUFJJVkFURV9OQU1FX0VSUk9S
VE9LOworICAgICAgICB9CiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBpZGVudDsKICAgICB9
IGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IDA7CiAKLSAgICBpZiAoVU5MSUtFTFko
KHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxhZ3MgJiBMZXhlckZsYWdz
SWdub3JlUmVzZXJ2ZWRXb3JkcykpKSB7CisgICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBt
YXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVk
V29yZHMpKSAmJiAhaXNQcml2YXRlTmFtZSkgewogICAgICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRl
SWRlbnRpZmllcik7CiAgICAgICAgIGlmIChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgewog
ICAgICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IG1fdm0tPmtleXdvcmRzLT5nZXRL
ZXl3b3JkKCppZGVudCk7CkBAIC04MTQsNiArODUxLDEwIEBAIHRlbXBsYXRlIDxib29sIHNob3Vs
ZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+
OjpwCiAgICAgICAgICAgICByZXR1cm4ga2V5d29yZCA9PSBSRVNFUlZFRF9JRl9TVFJJQ1QgJiYg
IXN0cmljdE1vZGUgPyBJREVOVCA6IGtleXdvcmQ7CiAgICAgICAgIH0KICAgICB9CisgICAgCisg
ICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gbV9jdXJyZW50ID09ICdAJyAmJiBtX3BhcnNpbmdCdWls
dGluRnVuY3Rpb247CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgIHNoaWZ0KCk7CiAK
ICAgICBjb25zdCBVQ2hhciogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudFNvdXJjZVB0cigpOwog
ICAgIGludCBpZGVudGlmaWVyTGluZVN0YXJ0ID0gY3VycmVudExpbmVTdGFydE9mZnNldCgpOwpA
QCAtODI2LDYgKzg2Nyw3IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+
IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+OjpwCiAgICAgfQogICAgIAog
ICAgIGlmIChVTkxJS0VMWShtX2N1cnJlbnQgPT0gJ1xcJykpIHsKKyAgICAgICAgQVNTRVJUKCFp
c1ByaXZhdGVOYW1lKTsKICAgICAgICAgc2V0T2Zmc2V0RnJvbVNvdXJjZVB0cihpZGVudGlmaWVy
U3RhcnQsIGlkZW50aWZpZXJMaW5lU3RhcnQpOwogICAgICAgICByZXR1cm4gcGFyc2VJZGVudGlm
aWVyU2xvd0Nhc2U8c2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4odG9rZW5EYXRhLCBsZXhlckZsYWdz
LCBzdHJpY3RNb2RlKTsKICAgICB9CkBAIC04MzcsMTggKzg3OSwyOSBAQCB0ZW1wbGF0ZSA8Ym9v
bCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVy
PFVDaGFyPjo6cAogCiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAwOwogICAgIAotICAg
IGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyKSB7CisgICAgaWYgKHNob3VsZENyZWF0ZUlkZW50
aWZpZXIgfHwgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CiAgICAgICAgIGludCBpZGVudGlm
aWVyTGVuZ3RoID0gY3VycmVudFNvdXJjZVB0cigpIC0gaWRlbnRpZmllclN0YXJ0OwogICAgICAg
ICBpZiAoaXNBbGw4Qml0KQogICAgICAgICAgICAgaWRlbnQgPSBtYWtlSWRlbnRpZmllckxDaGFy
RnJvbVVDaGFyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIGlkZW50ID0gbWFrZUlkZW50aWZpZXIoaWRlbnRpZmllclN0YXJ0LCBp
ZGVudGlmaWVyTGVuZ3RoKTsKLSAgICAgICAgCisgICAgICAgIGlmIChtX3BhcnNpbmdCdWlsdGlu
RnVuY3Rpb24pIHsKKyAgICAgICAgICAgIGlmICghaXNTYWZlSWRlbnRpZmllcigqbV92bSwgaWRl
bnQpICYmICFpc1ByaXZhdGVOYW1lKSB7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3Nh
Z2UgPSBtYWtlU3RyaW5nKCJUaGUgdXNlIG9mICciLCBpZGVudC0+c3RyaW5nKCksICInIGlzIGRp
c2FsbG93ZWQgaW4gYnVpbHRpbiBmdW5jdGlvbnMuIik7CisgICAgICAgICAgICAgICAgcmV0dXJu
IEVSUk9SVE9LOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGlzUHJpdmF0ZU5hbWUp
CisgICAgICAgICAgICAgICAgaWRlbnQgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZXRQcml2YXRl
TmFtZSgqaWRlbnQpOworICAgICAgICAgICAgZWxzZSBpZiAoKmlkZW50ID09IG1fdm0tPnByb3Bl
cnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQpCisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5p
ZGVudCA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkUHJpdmF0ZU5hbWU7
CisgICAgICAgICAgICBpZiAoIWlkZW50KQorICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElE
X1BSSVZBVEVfTkFNRV9FUlJPUlRPSzsKKyAgICAgICAgfQogICAgICAgICB0b2tlbkRhdGEtPmlk
ZW50ID0gaWRlbnQ7CiAgICAgfSBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAwOwog
ICAgIAotICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICEo
bGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkpIHsKKyAgICBpZiAo
VU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxhZ3MgJiBM
ZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpICYmICFpc1ByaXZhdGVOYW1lKSB7CiAgICAg
ICAgIEFTU0VSVChzaG91bGRDcmVhdGVJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKHJlbWFpbmlu
ZyA8IG1heFRva2VuTGVuZ3RoKSB7CiAgICAgICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5
ID0gbV92bS0+a2V5d29yZHMtPmdldEtleXdvcmQoKmlkZW50KTsKQEAgLTE2NTgsNiArMTcxMSw3
IEBAIGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ6CiAgICAgICAgIEFTU0VSVChpc0lkZW50U3Rh
cnQobV9jdXJyZW50KSk7CiAgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2UgQ2hhcmFjdGVy
QmFja1NsYXNoOgorICAgICAgICBwYXJzZUlkZW50OgogICAgICAgICBpZiAobGV4ZXJGbGFncyAm
IExleGV4RmxhZ3NEb250QnVpbGRLZXl3b3JkcykKICAgICAgICAgICAgIHRva2VuID0gcGFyc2VJ
ZGVudGlmaWVyPGZhbHNlPih0b2tlbkRhdGEsIGxleGVyRmxhZ3MsIHN0cmljdE1vZGUpOwogICAg
ICAgICBlbHNlCkBAIC0xNjcwLDYgKzE3MjQsMTEgQEAgaW5OdW1iZXJBZnRlckRlY2ltYWxQb2lu
dDoKICAgICAgICAgbV90ZXJtaW5hdG9yID0gdHJ1ZTsKICAgICAgICAgbV9saW5lU3RhcnQgPSBt
X2NvZGU7CiAgICAgICAgIGdvdG8gc3RhcnQ7CisgICAgY2FzZSBDaGFyYWN0ZXJQcml2YXRlSWRl
bnRpZmllclN0YXJ0OgorICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKQorICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50OworCisgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNh
c2UgQ2hhcmFjdGVySW52YWxpZDoKICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBpbnZhbGlk
Q2hhcmFjdGVyTWVzc2FnZSgpOwogICAgICAgICB0b2tlbiA9IEVSUk9SVE9LOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9MZXhlci5oCmluZGV4IDI4YzYxYmExOThkMmMxNWE0OWJiMTg1MmVkMzBi
ZWZlYjg5MDQwMDguLmI4ODczZTk5NTAyODY0NGJmOGNiYjNkNGMyZGE1NjJlOTNlMGU4ZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKQEAgLTcyLDcgKzcyLDcgQEAgY2xhc3Mg
TGV4ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCiBwdWJsaWM6Ci0gICAgTGV4
ZXIoVk0qKTsKKyAgICBMZXhlcihWTSosIEpTUGFyc2VyU3RyaWN0bmVzcyk7CiAgICAgfkxleGVy
KCk7CiAKICAgICAvLyBDaGFyYWN0ZXIgbWFuaXB1bGF0aW9uIGZ1bmN0aW9ucy4KQEAgLTIzOCw2
ICsyMzgsNyBAQCBwcml2YXRlOgogICAgIElkZW50aWZpZXJBcmVuYSogbV9hcmVuYTsKIAogICAg
IFZNKiBtX3ZtOworICAgIGJvb2wgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uOwogfTsKIAogdGVt
cGxhdGUgPD4KQEAgLTMzNSw2ICszMzYsMTIgQEAgQUxXQVlTX0lOTElORSBjb25zdCBJZGVudGlm
aWVyKiBMZXhlcjxUPjo6bWFrZUxDaGFySWRlbnRpZmllcihjb25zdCBVQ2hhciogY2hhcmEKICAg
ICByZXR1cm4gJm1fYXJlbmEtPm1ha2VJZGVudGlmaWVyTENoYXJGcm9tVUNoYXIobV92bSwgY2hh
cmFjdGVycywgbGVuZ3RoKTsKIH0KIAorI2lmIEFTU0VSVF9ESVNBQkxFRAorQUxXQVlTX0lOTElO
RSBib29sIGlzU2FmZUlkZW50aWZpZXIoVk0mLCBjb25zdCBJZGVudGlmaWVyKikgeyByZXR1cm4g
dHJ1ZTsgfQorI2Vsc2UKK2Jvb2wgaXNTYWZlSWRlbnRpZmllcihWTSYsIGNvbnN0IElkZW50aWZp
ZXIqKTsKKyNlbmRpZgorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIEFMV0FZU19JTkxJTkUgSlNU
b2tlblR5cGUgTGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tlbiogdG9rZW5SZWNv
cmQsIHVuc2lnbmVkIGxleGVyRmxhZ3MsIGJvb2wgc3RyaWN0TW9kZSkKIHsKQEAgLTM3MCwxMCAr
Mzc3LDE1IEBAIEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4cGVjdElk
ZW50aWZpZXIoSlNUb2tlbiogdG9rZW5SZWNvcmQsIHVuCiAgICAgQVNTRVJUKGN1cnJlbnRPZmZz
ZXQoKSA+PSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCkpOwogCiAgICAgLy8gQ3JlYXRlIHRoZSBp
ZGVudGlmaWVyIGlmIG5lZWRlZAotICAgIGlmIChsZXhlckZsYWdzICYgTGV4ZXhGbGFnc0RvbnRC
dWlsZEtleXdvcmRzKQorICAgIGlmIChsZXhlckZsYWdzICYgTGV4ZXhGbGFnc0RvbnRCdWlsZEtl
eXdvcmRzCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICAmJiAhbV9wYXJzaW5nQnVpbHRp
bkZ1bmN0aW9uCisjZW5kaWYKKyAgICAgICAgKQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0g
MDsKICAgICBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBtYWtlTENoYXJJZGVudGlm
aWVyKHN0YXJ0LCBwdHIgLSBzdGFydCk7CisKICAgICB0b2tlbkxvY2F0aW9uLT5saW5lID0gbV9s
aW5lTnVtYmVyOwogICAgIHRva2VuTG9jYXRpb24tPmxpbmVTdGFydE9mZnNldCA9IGN1cnJlbnRM
aW5lU3RhcnRPZmZzZXQoKTsKICAgICB0b2tlbkxvY2F0aW9uLT5zdGFydE9mZnNldCA9IG9mZnNl
dEZyb21Tb3VyY2VQdHIoc3RhcnQpOwpAQCAtMzgxLDYgKzM5MywxMyBAQCBBTFdBWVNfSU5MSU5F
IEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW4qIHRva2Vu
UmVjb3JkLCB1bgogICAgIEFTU0VSVCh0b2tlbkxvY2F0aW9uLT5zdGFydE9mZnNldCA+PSB0b2tl
bkxvY2F0aW9uLT5saW5lU3RhcnRPZmZzZXQpOwogICAgIHRva2VuUmVjb3JkLT5tX3N0YXJ0UG9z
aXRpb24gPSBzdGFydFBvc2l0aW9uOwogICAgIHRva2VuUmVjb3JkLT5tX2VuZFBvc2l0aW9uID0g
Y3VycmVudFBvc2l0aW9uKCk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIGlmIChtX3BhcnNp
bmdCdWlsdGluRnVuY3Rpb24pIHsKKyAgICAgICAgaWYgKCFpc1NhZmVJZGVudGlmaWVyKCptX3Zt
LCB0b2tlbkRhdGEtPmlkZW50KSkKKyAgICAgICAgICAgIHJldHVybiBFUlJPUlRPSzsKKyAgICB9
CisjZW5kaWYKKwogICAgIG1fbGFzdFRva2VuID0gSURFTlQ7CiAgICAgcmV0dXJuIElERU5UOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCBmYzljY2Q5ZjZj
NTc2YzFhZWY1NDdmMjExZmRkNTk2ZjQyZTA1ODA2Li5kOTUyYmE2YTk0ZDJmNmI0MTgyMTU1MDA0
ZDBhOTcwODQyOWJkNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApA
QCAtMTMyLDYgKzEzMiwxMiBAQCBQYXNzUmVmUHRyPFByb2dyYW1Ob2RlPiBQcm9ncmFtTm9kZTo6
Y3JlYXRlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydAogICAgIHJldHVybiBu
b2RlLnJlbGVhc2UoKTsKIH0KIAorCit2b2lkIFByb2dyYW1Ob2RlOjpzZXRDbG9zZWRWYXJpYWJs
ZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJiBjbG9zZWRWYXJpYWJsZXMpCit7
CisgICAgbV9jbG9zZWRWYXJpYWJsZXMgPSBzdGQ6Om1vdmUoY2xvc2VkVmFyaWFibGVzKTsKK30K
KwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV2YWxOb2RlIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKIGlubGluZSBFdmFsTm9kZTo6RXZhbE5vZGUoVk0qIHZtLCBj
b25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqIGNoaWxk
cmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRp
ZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29k
ZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5oCmluZGV4IGQ3NzlhMTc4ZDk1NmZmOTlmZDBiZWQ1ZDVmNDU0YWEzZTZiNTA4
NzkuLjgxNmZmMDAxYWJmMDM3NmM2NDJmMWE5MzhkMGUwYTlmNTI5Y2E2YmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTE0MzEsNiArMTQzMSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBib29sIG5lZWRzQWN0aXZhdGlvbigpIGNvbnN0IHsgcmV0dXJuIChoYXND
YXB0dXJlZFZhcmlhYmxlcygpKSB8fCAobV9mZWF0dXJlcyAmIChFdmFsRmVhdHVyZSB8IFdpdGhG
ZWF0dXJlIHwgQ2F0Y2hGZWF0dXJlKSk7IH0KICAgICAgICAgYm9vbCBoYXNDYXB0dXJlZFZhcmlh
YmxlcygpIGNvbnN0IHsgcmV0dXJuICEhbV9jYXB0dXJlZFZhcmlhYmxlcy5zaXplKCk7IH0KICAg
ICAgICAgc2l6ZV90IGNhcHR1cmVkVmFyaWFibGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fw
dHVyZWRWYXJpYWJsZXMuc2l6ZSgpOyB9CisgICAgICAgIGNvbnN0IElkZW50aWZpZXJTZXQmIGNh
cHR1cmVkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9jYXB0dXJlZFZhcmlhYmxlczsgfQog
ICAgICAgICBib29sIGNhcHR1cmVzKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSB7IHJldHVybiBt
X2NhcHR1cmVkVmFyaWFibGVzLmNvbnRhaW5zKGlkZW50LmltcGwoKSk7IH0KIAogICAgICAgICBW
YXJTdGFjayYgdmFyU3RhY2soKSB7IHJldHVybiBtX3ZhclN0YWNrOyB9CkBAIC0xNDQ2LDYgKzE0
NDcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3Rh
dGVtZW50KCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZGVzdGluYXRpb24pOworICAgICAgICAKKyAg
ICAgICAgdm9pZCBzZXRDbG9zZWRWYXJpYWJsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJ
bXBsPj4mJikgeyB9CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZvaWQgc2V0U291cmNlKGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkgeyBtX3NvdXJjZSA9IHNvdXJjZTsgfQpAQCAtMTQ3NSwx
MSArMTQ3OCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgY29uc3QgYm9v
bCBzY29wZUlzRnVuY3Rpb24gPSBmYWxzZTsKIAorICAgICAgICB2b2lkIHNldENsb3NlZFZhcmlh
Ymxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmKTsKKyAgICAgICAgY29uc3Qg
VmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mIGNsb3NlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0
dXJuIG1fY2xvc2VkVmFyaWFibGVzOyB9CiAgICAgcHJpdmF0ZToKICAgICAgICAgUHJvZ3JhbU5v
ZGUoVk0qLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNl
RWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29u
c3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAg
ICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCkgb3ZlcnJpZGU7Ci0KKyAgICAgICAgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4g
bV9jbG9zZWRWYXJpYWJsZXM7CiAgICAgICAgIHVuc2lnbmVkIG1fc3RhcnRDb2x1bW47CiAgICAg
ICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKaW5kZXggMjk3NjY2ZTcyNmU0NWQwODNlZjEzNDlkZGZmZGYzN2VmODAw
ZGY3YS4uNTBiZWM3OWZlMzhhZGY4ZjNhMDRmNmI0NmNiZDJhNWNiZmNmMjQ2YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjA0LDggKzIwNCw5IEBAIFBhcnNl
cjxMZXhlclR5cGU+OjpQYXJzZXIoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1
bmN0aW9uUGFyYW1ldGVycyoKICAgICAsIG1fbGFzdElkZW50aWZpZXIoMCkKICAgICAsIG1fbGFz
dEZ1bmN0aW9uTmFtZShudWxscHRyKQogICAgICwgbV9zb3VyY2VFbGVtZW50cygwKQorICAgICwg
bV9wYXJzaW5nQnVpbHRpbihzdHJpY3RuZXNzID09IEpTUGFyc2VCdWlsdGluKQogewotICAgIG1f
bGV4ZXIgPSBhZG9wdFB0cihuZXcgTGV4ZXJUeXBlKHZtKSk7CisgICAgbV9sZXhlciA9IGFkb3B0
UHRyKG5ldyBMZXhlclR5cGUodm0sIHN0cmljdG5lc3MpKTsKICAgICBtX2FyZW5hID0gbV92bS0+
cGFyc2VyQXJlbmEuZ2V0KCk7CiAgICAgbV9sZXhlci0+c2V0Q29kZShzb3VyY2UsIG1fYXJlbmEp
OwogICAgIG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lID0gc291cmNlLmZpcnN0TGluZSgpOwpAQCAt
MjU2LDYgKzI1Nyw3IEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcigpCiAg
ICAgSWRlbnRpZmllclNldCBjYXB0dXJlZFZhcmlhYmxlczsKICAgICBib29sIG1vZGlmaWVkUGFy
YW1ldGVyID0gZmFsc2U7CiAgICAgc2NvcGUtPmdldENhcHR1cmVkVmFyaWFibGVzKGNhcHR1cmVk
VmFyaWFibGVzLCBtb2RpZmllZFBhcmFtZXRlcik7CisgICAgCiAgICAgQ29kZUZlYXR1cmVzIGZl
YXR1cmVzID0gY29udGV4dC5mZWF0dXJlcygpOwogICAgIGlmIChzY29wZS0+c3RyaWN0TW9kZSgp
KQogICAgICAgICBmZWF0dXJlcyB8PSBTdHJpY3RNb2RlRmVhdHVyZTsKQEAgLTI2MywyMSArMjY1
LDM2IEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcigpCiAgICAgICAgIGZl
YXR1cmVzIHw9IFNoYWRvd3NBcmd1bWVudHNGZWF0dXJlOwogICAgIGlmIChtb2RpZmllZFBhcmFt
ZXRlcikKICAgICAgICAgZmVhdHVyZXMgfD0gTW9kaWZpZWRQYXJhbWV0ZXJGZWF0dXJlOwotCisg
ICAgCisgICAgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4gY2xvc2VkVmFyaWFibGVzOworICAg
IGlmIChtX3BhcnNpbmdCdWlsdGluKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFjYXB0dXJl
ZFZhcmlhYmxlcy5zaXplKCkpOworICAgICAgICBJZGVudGlmaWVyU2V0IHVzZWRWYXJpYWJsZXM7
CisgICAgICAgIHNjb3BlLT5nZXRVc2VkVmFyaWFibGVzKHVzZWRWYXJpYWJsZXMpOworICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIHZhcmlhYmxlIDogdXNlZFZhcmlhYmxlcykgeworICAgICAgICAg
ICAgaWYgKHNjb3BlLT5oYXNEZWNsYXJlZFZhcmlhYmxlKElkZW50aWZpZXIobV92bSwgdmFyaWFi
bGUuZ2V0KCkpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgaWYgKHNjb3BlLT5oYXNEZWNsYXJlZFBhcmFtZXRlcihJZGVudGlmaWVyKG1fdm0s
IHZhcmlhYmxlLmdldCgpKSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICBjbG9zZWRWYXJpYWJsZXMuYXBwZW5kKHZhcmlhYmxlKTsKKyAgICAgICAgfQorICAgIH0KICAg
ICBkaWRGaW5pc2hQYXJzaW5nKHNvdXJjZUVsZW1lbnRzLCBjb250ZXh0LnZhckRlY2xhcmF0aW9u
cygpLCBjb250ZXh0LmZ1bmNEZWNsYXJhdGlvbnMoKSwgZmVhdHVyZXMsCi0gICAgICAgIGNvbnRl
eHQubnVtQ29uc3RhbnRzKCksIGNhcHR1cmVkVmFyaWFibGVzKTsKKyAgICAgICAgY29udGV4dC5u
dW1Db25zdGFudHMoKSwgY2FwdHVyZWRWYXJpYWJsZXMsIHN0ZDo6bW92ZShjbG9zZWRWYXJpYWJs
ZXMpKTsKIAogICAgIHJldHVybiBwYXJzZUVycm9yOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
TGV4ZXJUeXBlPgogdm9pZCBQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmluaXNoUGFyc2luZyhTb3Vy
Y2VFbGVtZW50cyogc291cmNlRWxlbWVudHMsIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0
YWNrczo6VmFyU3RhY2s+KiB2YXJTdGFjaywgCi0gICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0
aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiogZnVuY1N0YWNrLCBDb2RlRmVhdHVyZXMgZmVhdHVy
ZXMsIGludCBudW1Db25zdGFudHMsIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFycykKKyAgICBQ
YXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KiBmdW5jU3Rh
Y2ssIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cywgSWRlbnRpZmllclNl
dCYgY2FwdHVyZWRWYXJzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmIGNsb3Nl
ZFZhcmlhYmxlcykKIHsKICAgICBtX3NvdXJjZUVsZW1lbnRzID0gc291cmNlRWxlbWVudHM7CiAg
ICAgbV92YXJEZWNsYXJhdGlvbnMgPSB2YXJTdGFjazsKICAgICBtX2Z1bmNEZWNsYXJhdGlvbnMg
PSBmdW5jU3RhY2s7CiAgICAgbV9jYXB0dXJlZFZhcmlhYmxlcy5zd2FwKGNhcHR1cmVkVmFycyk7
CisgICAgbV9jbG9zZWRWYXJpYWJsZXMgPSBjbG9zZWRWYXJpYWJsZXM7CiAgICAgbV9mZWF0dXJl
cyA9IGZlYXR1cmVzOwogICAgIG1fbnVtQ29uc3RhbnRzID0gbnVtQ29uc3RhbnRzOwogfQpAQCAt
MjM0Niw2ICsyMzYzLDEwIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+IHZvaWQgUGFy
c2VyPExleGVyVHlwZT46OnByaW50VW5leHBlY3RlZFRva2VuVGV4dChXCiAgICAgY2FzZSBSRVNF
UlZFRDoKICAgICAgICAgb3V0LnByaW50KCJVbmV4cGVjdGVkIHVzZSBvZiByZXNlcnZlZCB3b3Jk
ICciLCBnZXRUb2tlbigpLCAiJyIpOwogICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIElOVkFM
SURfUFJJVkFURV9OQU1FX0VSUk9SVE9LOgorICAgICAgICBvdXQucHJpbnQoIkludmFsaWQgcHJp
dmF0ZSBuYW1lICciLCBnZXRUb2tlbigpLCAiJyIpOworICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAKICAgICBjYXNlIElERU5UOgogICAgICAgICBvdXQucHJpbnQoIlVuZXhwZWN0ZWQgaWRl
bnRpZmllciAnIiwgZ2V0VG9rZW4oKSwgIiciKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oCmluZGV4IGI2OThlZjkzNjhjYjhjOGYxOTdjY2QwMDBhY2FhNmRmYjExYmEyNDQuLjkw
MzM4NTBjOGM5N2Y1N2UyMWRhNWVlZGIwMmQwNDRmNGM4OTc4ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjMsNiArMjMsNyBAQAogI2lmbmRlZiBQYXJzZXJfaAog
I2RlZmluZSBQYXJzZXJfaAogCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNs
dWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRl
ICJFeGVjdXRhYmxlLmgiCkBAIC0yNTksNiArMjYwLDEwIEBAIHN0cnVjdCBTY29wZSB7CiAgICAg
ICAgIHJldHVybiBpc1ZhbGlkU3RyaWN0TW9kZSA/IEJpbmRpbmdTdWNjZWVkZWQgOiBTdHJpY3RC
aW5kaW5nRmFpbGVkOwogICAgIH0KIAorICAgIHZvaWQgZ2V0VXNlZFZhcmlhYmxlcyhJZGVudGlm
aWVyU2V0JiB1c2VkVmFyaWFibGVzKQorICAgIHsKKyAgICAgICAgdXNlZFZhcmlhYmxlcy5zd2Fw
KG1fdXNlZFZhcmlhYmxlcyk7CisgICAgfQogCiAgICAgdm9pZCB1c2VWYXJpYWJsZShjb25zdCBJ
ZGVudGlmaWVyKiBpZGVudCwgYm9vbCBpc0V2YWwpCiAgICAgewpAQCAtNDE0LDYgKzQxOSw3IEBA
IHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNlckVycm9yJik7
CiAKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCkgY29uc3Qg
eyByZXR1cm4gbV9sZXhlci0+cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOyB9CisgICAgY29u
c3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJiBjbG9zZWRWYXJpYWJsZXMoKSB7IHJldHVy
biBzdGQ6Om1vdmUobV9jbG9zZWRWYXJpYWJsZXMpOyB9CiAKIHByaXZhdGU6CiAgICAgc3RydWN0
IEFsbG93SW5PdmVycmlkZSB7CkBAIC01NDAsNyArNTQ2LDcgQEAgcHJpdmF0ZToKICAgICBTdHJp
bmcgcGFyc2VJbm5lcigpOwogCiAgICAgdm9pZCBkaWRGaW5pc2hQYXJzaW5nKFNvdXJjZUVsZW1l
bnRzKiwgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjaz4qLCAKLSAg
ICAgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPios
IENvZGVGZWF0dXJlcywgaW50LCBJZGVudGlmaWVyU2V0Jik7CisgICAgICAgIFBhcnNlckFyZW5h
RGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qLCBDb2RlRmVhdHVyZXMsIGlu
dCwgSWRlbnRpZmllclNldCYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYpOwog
CiAgICAgLy8gVXNlZCB0byBkZXRlcm1pbmUgdHlwZSBvZiBlcnJvciB0byByZXBvcnQuCiAgICAg
Ym9vbCBpc0Z1bmN0aW9uQm9keU5vZGUoU2NvcGVOb2RlKikgeyByZXR1cm4gZmFsc2U7IH0KQEAg
LTg0MCw5ICs4NDYsMTEgQEAgcHJpdmF0ZToKICAgICBjb25zdCBJZGVudGlmaWVyKiBtX2xhc3RG
dW5jdGlvbk5hbWU7CiAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyQ2FjaGU+IG1fZnVuY3Rpb25D
YWNoZTsKICAgICBTb3VyY2VFbGVtZW50cyogbV9zb3VyY2VFbGVtZW50czsKKyAgICBib29sIG1f
cGFyc2luZ0J1aWx0aW47CiAgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpW
YXJTdGFjaz4qIG1fdmFyRGVjbGFyYXRpb25zOwogICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJh
dGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qIG1fZnVuY0RlY2xhcmF0aW9uczsKICAgICBJZGVu
dGlmaWVyU2V0IG1fY2FwdHVyZWRWYXJpYWJsZXM7CisgICAgVmVjdG9yPFJlZlB0cjxTdHJpbmdJ
bXBsPj4gbV9jbG9zZWRWYXJpYWJsZXM7CiAgICAgQ29kZUZlYXR1cmVzIG1fZmVhdHVyZXM7CiAg
ICAgaW50IG1fbnVtQ29uc3RhbnRzOwogICAgIApAQCAtOTU3LDYgKzk2NSwxMCBAQCBQYXNzUmVm
UHRyPFBhcnNlZE5vZGU+IHBhcnNlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBG
dW5jdGlvblBhcmFtZXRlcgogICAgICAgICBSZWZQdHI8UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFy
c2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yKTsKICAgICAgICAgaWYgKHBvc2l0aW9uQmVmb3Jl
TGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBh
cnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CisgICAgICAgIGlmIChzdHJpY3RuZXNz
ID09IEpTUGFyc2VCdWlsdGluKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQp
OworICAgICAgICAgICAgcmVzdWx0LT5zZXRDbG9zZWRWYXJpYWJsZXMoc3RkOjptb3ZlKHBhcnNl
ci5jbG9zZWRWYXJpYWJsZXMoKSkpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXN1bHQu
cmVsZWFzZSgpOwogICAgIH0KICAgICBQYXJzZXI8TGV4ZXI8VUNoYXI+PiBwYXJzZXIodm0sIHNv
dXJjZSwgcGFyYW1ldGVycywgbmFtZSwgc3RyaWN0bmVzcywgcGFyc2VyTW9kZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKaW5kZXggNGU5YTE3Y2QyMWNhMzQx
NDZiYmQ0ODE1NmEzNzJjZDQwNGRlZjYwYy4uZjdhNzViZjdjMzc4NTdlNDRiNmQ1ZDcxZjQ1Mjli
YjFhYzFjZjVmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMu
aApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51bSBKU1BhcnNlclN0
cmljdG5lc3MgeyBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlU3RyaWN0IH07CitlbnVtIEpTUGFyc2Vy
U3RyaWN0bmVzcyB7IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VCdWlsdGluLCBKU1BhcnNlU3RyaWN0
IH07CiBlbnVtIEpTUGFyc2VyTW9kZSB7IEpTUGFyc2VQcm9ncmFtQ29kZSwgSlNQYXJzZUZ1bmN0
aW9uQ29kZSB9OwogCiBlbnVtIFByb2ZpbGVyTW9kZSB7IFByb2ZpbGVyT2ZmLCBQcm9maWxlck9u
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vu
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAppbmRleCA4
MmEyNjYzOWE3OTIyMGEwODQ0NTZiNDhmMzI4NTJkMTQzYzczOWQwLi44Yzg3YWQ5ZmFkYmRjNGFm
MzlhYzk5ZGIyZDg0NDVlMTNmZmZkMzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyVG9rZW5zLmgKQEAgLTE0OSw2ICsxNDksNyBAQCBlbnVtIEpTVG9rZW5UeXBlIHsK
ICAgICBJTlZBTElEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSyA9IDcgfCBFcnJvclRva2VuRmxh
ZywKICAgICBVTlRFUk1JTkFURURfU1RSSU5HX0xJVEVSQUxfRVJST1JUT0sgPSA4IHwgRXJyb3JU
b2tlbkZsYWcgfCBVbnRlcm1pbmF0ZWRFcnJvclRva2VuRmxhZywKICAgICBJTlZBTElEX1NUUklO
R19MSVRFUkFMX0VSUk9SVE9LID0gOSB8IEVycm9yVG9rZW5GbGFnLAorICAgIElOVkFMSURfUFJJ
VkFURV9OQU1FX0VSUk9SVE9LID0gMTAgfCBFcnJvclRva2VuRmxhZwogfTsKIAogc3RydWN0IEpT
VGV4dFBvc2l0aW9uIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ3VtZW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgK
aW5kZXggMThmMzg5MTcxMzg1MjM2MmM3YTc1YTMwNTNiNDYzMTQxN2JlYjgxYi4uZjE2ZmQzZGU0
MDU1OTcwYmE5ZDljNmYwYWU2MzE4ZjIyMDRiNjU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJndW1lbnRzLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNkZWZpbmUgQXJndW1lbnRz
X2gKIAogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVy
cy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3Bw
CmluZGV4IGRkMDg5NGYxNGEwMjFkNWYxMjY1OGFjYjAxZTcyMWZjZDZkMzQ4Y2MuLjViNGFlODcx
NmIwNTUzYmU0NjIzOTU1ZTk5ZTFiNDNlYmYxOGZlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5j
cHAKQEAgLTI2LDcgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBcmd1
bWVudHNJdGVyYXRvclByb3RvdHlwZS5oIgogCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMu
aCIKICNpbmNsdWRlICJKU0FyZ3VtZW50c0l0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCAyN2FjNmQ0OGE3MWY3OTU1MDJh
MTBjZWE2NDc4NjU0MTM1YTQ2M2EwLi42ZGM3YmU1Njk2OWRlNjdmNjIxMDdiYjNhNTFhMzA4ZmEz
YmE3NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVBy
b3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90
b3R5cGUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAi
SlNBcnJheUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdCdWlsZGVyLmgiCisjaW5jbHVk
ZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdKb2luZXIuaCIKICNpbmNs
dWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKQEAgLTU2LDcgKzU3
LDYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNT
bGljZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFy
cmF5UHJvdG9GdW5jU29ydChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU3BsaWNlKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNVblNoaWZ0KEV4ZWNTdGF0ZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNFdmVy
eShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5
UHJvdG9GdW5jRm9yRWFjaChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU29tZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jSW5kZXhPZihFeGVjU3RhdGUqKTsK
QEAgLTk1NCw2OSArOTU0LDYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVBy
b3RvRnVuY01hcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHRBcnJheSk7CiB9CiAKLS8vIERvY3VtZW50YXRpb24gZm9yIHRoZXNlIHRocmVlIGlzIGF2
YWlsYWJsZSBhdDoKLS8vIGh0dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3ppbGxhLm9yZy9lbi9kb2Nz
L0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6QXJyYXk6ZXZlcnkKLS8vIGh0
dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3ppbGxhLm9yZy9lbi9kb2NzL0NvcmVfSmF2YVNjcmlwdF8x
LjVfUmVmZXJlbmNlOk9iamVjdHM6QXJyYXk6Zm9yRWFjaAotLy8gaHR0cDovL2RldmVsb3Blci10
ZXN0Lm1vemlsbGEub3JnL2VuL2RvY3MvQ29yZV9KYXZhU2NyaXB0XzEuNV9SZWZlcmVuY2U6T2Jq
ZWN0czpBcnJheTpzb21lCi0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b0Z1bmNFdmVyeShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNPYmplY3QqIHRoaXNPYmogPSBl
eGVjLT5ob3N0VGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4
ZWMpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmotPmdldChleGVjLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkubGVuZ3RoKS50b1VJbnQzMihleGVjKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
Ci0KLSAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgQ2FsbERh
dGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlv
biwgY2FsbERhdGEpOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwotCi0gICAgSlNWYWx1ZSBhcHBseVRoaXMg
PSBleGVjLT5hcmd1bWVudCgxKTsKLQotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKHRy
dWUpOwotCi0gICAgdW5zaWduZWQgayA9IDA7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBl
SlMgJiYgaXNKU0FycmF5KHRoaXNPYmopKSB7Ci0gICAgICAgIEpTRnVuY3Rpb24qIGYgPSBqc0Nh
c3Q8SlNGdW5jdGlvbio+KGZ1bmN0aW9uKTsKLSAgICAgICAgSlNBcnJheSogYXJyYXkgPSBhc0Fy
cmF5KHRoaXNPYmopOwotICAgICAgICBDYWNoZWRDYWxsIGNhY2hlZENhbGwoZXhlYywgZiwgMyk7
Ci0gICAgICAgIGZvciAoOyBrIDwgbGVuZ3RoICYmICFleGVjLT5oYWRFeGNlcHRpb24oKTsgKytr
KSB7Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWFycmF5LT5jYW5HZXRJbmRleFF1aWNrbHko
aykpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBj
YWNoZWRDYWxsLnNldFRoaXMoYXBwbHlUaGlzKTsKLSAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0
QXJndW1lbnQoMCwgYXJyYXktPmdldEluZGV4UXVpY2tseShrKSk7Ci0gICAgICAgICAgICBjYWNo
ZWRDYWxsLnNldEFyZ3VtZW50KDEsIGpzTnVtYmVyKGspKTsKLSAgICAgICAgICAgIGNhY2hlZENh
bGwuc2V0QXJndW1lbnQoMiwgdGhpc09iaik7Ci0gICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGNhY2hlZENhbGwuY2FsbCgpOwotICAgICAgICAgICAgaWYgKCFyZXN1bHQudG9Cb29sZWFuKGV4
ZWMpKQotICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZh
bHNlKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZm9yICg7IGsgPCBsZW5ndGggJiYgIWV4ZWMt
PmhhZEV4Y2VwdGlvbigpOyArK2spIHsKLSAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09i
aik7Ci0gICAgICAgIGlmICghdGhpc09iai0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGssIHNsb3Qp
KQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIg
ZWFjaEFyZ3VtZW50czsKLSAgICAgICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQoc2xvdC5nZXRWYWx1
ZShleGVjLCBrKSk7Ci0gICAgICAgIGVhY2hBcmd1bWVudHMuYXBwZW5kKGpzTnVtYmVyKGspKTsK
LSAgICAgICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQodGhpc09iaik7Ci0KLSAgICAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLQotICAgICAgICBib29sIHByZWRpY2F0ZVJlc3VsdCA9IGNhbGwoZXhl
YywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgYXBwbHlUaGlzLCBlYWNoQXJndW1lbnRz
KS50b0Jvb2xlYW4oZXhlYyk7Ci0gICAgICAgIGlmICghcHJlZGljYXRlUmVzdWx0KSB7Ci0gICAg
ICAgICAgICByZXN1bHQgPSBqc0Jvb2xlYW4oZmFsc2UpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci19
Ci0KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNGb3JFYWNoKEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU09iamVjdCogdGhpc09iaiA9IGV4ZWMtPmhvc3RUaGlz
VmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCA1MTBlMzgzZmFlNTc1
YWFkYTgxNzZjMDQ0MWVlNzI1YjQzYTRjNzMyLi5kMzA0ODc3ZmU5Y2RlMWMwOTE5ZmQ0NTk1Zjgx
MWVjYWJjZTc3Mjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNo
ZS5jcHAKQEAgLTE0NCwyNCArMTQ0LDI2IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBD
b2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZNJiB2CiAgICAg
SlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZTsKICAgICBSZWZQdHI8UHJv
Z3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oJnZtLCBzb3VyY2UsIDAsIElk
ZW50aWZpZXIoKSwgSlNQYXJzZU5vcm1hbCwgSlNQYXJzZVByb2dyYW1Db2RlLCBlcnJvciwgJnBv
c2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwogICAgIGlmICghcHJvZ3JhbSkgewotICAgICAgICBB
U1NFUlQoZXJyb3IubV90eXBlICE9IFBhcnNlckVycm9yOjpFcnJvck5vbmUpOworICAgICAgICBS
RUxFQVNFX0FTU0VSVChlcnJvci5tX3R5cGUgIT0gUGFyc2VyRXJyb3I6OkVycm9yTm9uZSk7CiAg
ICAgICAgIG1fc291cmNlQ29kZS5yZW1vdmUoYWRkUmVzdWx0Lml0ZXJhdG9yKTsKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBhc3N1bWVzIGFuIGlucHV0
IHN0cmluZyB0aGF0IHdvdWxkIHJlc3VsdCBpbiBhIHNpbmdsZSBhbm9ueW1vdXMgZnVuY3Rpb24g
ZXhwcmVzc2lvbi4KICAgICBTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVtZW50ID0gcHJvZ3JhbS0+
c2luZ2xlU3RhdGVtZW50KCk7Ci0gICAgQVNTRVJUKGV4cHJTdGF0ZW1lbnQpOwotICAgIEFTU0VS
VChleHByU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQo
ZXhwclN0YXRlbWVudCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudC0+aXNFeHBy
U3RhdGVtZW50KCkpOwogICAgIEV4cHJlc3Npb25Ob2RlKiBmdW5jRXhwciA9IHN0YXRpY19jYXN0
PEV4cHJTdGF0ZW1lbnROb2RlKj4oZXhwclN0YXRlbWVudCktPmV4cHIoKTsKLSAgICBBU1NFUlQo
ZnVuY0V4cHIpOworICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmNFeHByKTsKICAgICBSRUxFQVNFX0FT
U0VSVChmdW5jRXhwci0+aXNGdW5jRXhwck5vZGUoKSk7CiAgICAgRnVuY3Rpb25Cb2R5Tm9kZSog
Ym9keSA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGZ1bmNFeHByKS0+Ym9keSgpOworICAg
IFJFTEVBU0VfQVNTRVJUKCFwcm9ncmFtLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKKyAgICAK
ICAgICBib2R5LT5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKLSAg
ICBBU1NFUlQoYm9keSk7Ci0gICAgQVNTRVJUKGJvZHktPmlkZW50KCkuaXNOdWxsKCkpOworICAg
IFJFTEVBU0VfQVNTRVJUKGJvZHkpOworICAgIFJFTEVBU0VfQVNTRVJUKGJvZHktPmlkZW50KCku
aXNOdWxsKCkpOwogCi0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhl
Y3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2Us
IGJvZHksIHRydWUpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4
ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNl
LCBib2R5LCB0cnVlLCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uKTsKICAgICBmdW5jdGlvbkV4ZWN1
dGFibGUtPm1fbmFtZVZhbHVlLnNldCh2bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBqc1N0cmluZygm
dm0sIG5hbWUuc3RyaW5nKCkpKTsKIAogICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBT
b3VyY2VDb2RlVmFsdWUodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwgbV9zb3VyY2VDb2RlLmFnZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmNwcAppbmRleCAzZjVjNjQ1YzA5OGQ1MjdmYzBjNzI1OWU5NDQ3ZWZiZTg4NjhhMjljLi4y
ZmMyYjcyN2FmY2VlZTFlYzJjNjI1ZGU1Njc1YjNiZTFjZjYwZDc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCkBAIC0yNyw3
ICsyNywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2RlZmluZSBJTklUSUFMSVpFX1BST1BFUlRZ
X05BTUUobmFtZSkgLCBuYW1lKHZtLCAjbmFtZSkKICNkZWZpbmUgSU5JVElBTElaRV9LRVlXT1JE
KG5hbWUpICwgbmFtZSMjS2V5d29yZCh2bSwgI25hbWUpCi0jZGVmaW5lIElOSVRJQUxJWkVfUFJJ
VkFURV9OQU1FKG5hbWUpICwgbmFtZSMjUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbShQcml2
YXRlTmFtZSgpKSkKKyNkZWZpbmUgSU5JVElBTElaRV9QUklWQVRFX05BTUUobmFtZSkgXAorICAg
ICwgbmFtZSMjUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbShQcml2YXRlTmFtZSgpKSkgXAor
ICAgICwgbV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIobmFtZSwgbmFtZSMjUHJpdmF0ZU5hbWUp
IFwKKwogCiBDb21tb25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMoVk0qIHZtKQogICAg
IDogbnVsbElkZW50aWZpZXIoKQpAQCAtMzgsOCArNDEsMjYgQEAgQ29tbW9uSWRlbnRpZmllcnM6
OkNvbW1vbklkZW50aWZpZXJzKFZNKiB2bSkKICAgICAsIGhhc05leHRJZGVudGlmaWVyKHZtLCAi
aGFzTmV4dCIpCiAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQoSU5JVElB
TElaRV9LRVlXT1JEKQogICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9O
QU1FKElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRSkKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZV
TkNUSU9OX05BTUUoSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKQogICAgIEpTQ19DT01NT05fUFJJ
VkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElaRV9QUklWQVRFX05B
TUUpCiB7CiB9CiAKK2NvbnN0IElkZW50aWZpZXIqIENvbW1vbklkZW50aWZpZXJzOjpnZXRQcml2
YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK3sKKyNkZWZpbmUgUkVUVVJO
X0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKG5hbWUpIGlmIChtXyMjbmFtZSMjUHVibGljU3RyaW5n
UGFpci5maXJzdCA9PSBpZGVudCkgcmV0dXJuICZtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpci5z
ZWNvbmQ7CisgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlf
TkFNRShSRVRVUk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMpCisjdW5kZWYgUkVUVVJOX0lGX1BS
SVZBVEVfTkFNRV9NQVRDSEVTCisgICAgcmV0dXJuIDA7Cit9CisKK0lkZW50aWZpZXIgQ29tbW9u
SWRlbnRpZmllcnM6OmdldFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0
Cit7CisjZGVmaW5lIFJFVFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hFUyhuYW1lKSBpZiAobV8j
I25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuc2Vjb25kID09IGlkZW50KSByZXR1cm4gbV8jI25hbWUj
I1B1YmxpY1N0cmluZ1BhaXIuZmlyc3Q7CisgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJ
RVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShSRVRVUk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMpCisj
dW5kZWYgUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTCisgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZW1wdHlJZGVudGlmaWVyOworfQorCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5oCmluZGV4IGU4ZjllZDgyYmM3OTQ2MjAzODI2NmIzMDIwNzgyMjQ3YjFmYTI3
YTMuLjkyNGQzNmFjNjkxMzUwMzU3Y2IzODJiMWVmM2I0MGEwYTA4YzBhYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMjIs
NiArMjIsNyBAQAogI2RlZmluZSBDb21tb25JZGVudGlmaWVyc19oCiAKICNpbmNsdWRlICJJZGVu
dGlmaWVyLmgiCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KIAogLy8gTWFya2VkQXJndW1lbnRCdWZmZXIgb2YgcHJvcGVydHkgbmFtZXMsIHBh
c3NlZCB0byBhIG1hY3JvIHNvIHdlIGNhbiBkbyBzZXQgdGhlbSB1cCB2YXJpb3VzCkBAIC0xMzMs
OCArMTM0LDEwIEBACiAgICAgbWFjcm8ob3NyRXhpdHMpIFwKICAgICBtYWNybyhwYXJzZSkgXAog
ICAgIG1hY3JvKHByb2ZpbGVkQnl0ZWNvZGVzKSBcCisgICAgbWFjcm8ocHJvbWlzZSkgXAogICAg
IG1hY3JvKHByb3BlcnR5SXNFbnVtZXJhYmxlKSBcCiAgICAgbWFjcm8ocHJvdG90eXBlKSBcCisg
ICAgbWFjcm8ocmVzb2x2ZSkgXAogICAgIG1hY3JvKHNldCkgXAogICAgIG1hY3JvKHNpemUpIFwK
ICAgICBtYWNybyhzbGljZSkgXApAQCAtMTU1LDcgKzE1OCwxNCBAQAogICAgIG1hY3JvKHZhbHVl
cykgXAogICAgIG1hY3JvKHZhbHVlT2YpIFwKICAgICBtYWNybyh3aW5kb3cpIFwKLSAgICBtYWNy
byh3cml0YWJsZSkKKyAgICBtYWNybyh3cml0YWJsZSkgXAorICAgIG1hY3JvKGl0ZXJhdG9yKSBc
CisgICAgbWFjcm8oaXRlcmF0b3JOZXh0KSBcCisgICAgbWFjcm8ocmVqZWN0KSBcCisgICAgbWFj
cm8oZnVsZmlsbG1lbnRIYW5kbGVyKSBcCisgICAgbWFjcm8ocmVqZWN0aW9uSGFuZGxlcikgXAor
ICAgIG1hY3JvKGRlZmVycmVkKSBcCisgICAgbWFjcm8oY291bnRkb3duSG9sZGVyKSBcCiAKICNk
ZWZpbmUgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQobWFjcm8pIFwKICAgICBt
YWNybyhicmVhaykgXApAQCAtMjAzLDcgKzIxMyw3IEBACiAgICAgbWFjcm8odm9pZCkgXAogICAg
IG1hY3JvKHdoaWxlKSBcCiAgICAgbWFjcm8od2l0aCkgXAotICAgIG1hY3JvKHlpZWxkKQorICAg
IG1hY3JvKHlpZWxkKSBcCiAKICNkZWZpbmUgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJT
X0VBQ0hfUFJPUEVSVFlfTkFNRShtYWNybykgXAogICAgIG1hY3JvKGl0ZXJhdG9yKSBcCkBAIC0y
MTYsNyArMjI2LDEyIEBACiAgICAgbWFjcm8oaW5kZXgpIFwKICAgICBtYWNybyh2YWx1ZXMpIFwK
ICAgICBtYWNybyhkZWZlcnJlZCkgXAotICAgIG1hY3JvKGNvdW50ZG93bkhvbGRlcikKKyAgICBt
YWNybyhjb3VudGRvd25Ib2xkZXIpIFwKKyAgICBtYWNybyhPYmplY3QpIFwKKyAgICBtYWNybyhU
eXBlRXJyb3IpIFwKKyAgICBtYWNybyh1bmRlZmluZWRLZXl3b3JkKSBcCisgICAgbWFjcm8oY2Fs
bCkgXAorICAgIG1hY3JvKGFwcGx5KQogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMjQwLDExICsy
NTUsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2RlZmluZSBKU0NfSURFTlRJRklF
Ul9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFt
ZTsKICAgICAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSlND
X0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJUWV9OQU1FX0dMT0JBTCkKKyAgICAgICAgSlNDX0ZP
UkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJPUEVS
VFlfTkFNRV9HTE9CQUwpCiAjdW5kZWYgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJUWV9O
QU1FX0dMT0JBTAogCi0jZGVmaW5lIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9Q
RVJUWV9OQU1FX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWUjI1ByaXZhdGVOYW1l
OworI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9H
TE9CQUwobmFtZSkgY29uc3QgSWRlbnRpZmllciBuYW1lIyNQcml2YXRlTmFtZTsgY29uc3Qgc3Rk
OjpwYWlyPElkZW50aWZpZXIsIElkZW50aWZpZXI+IG1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQYWly
OwogICAgICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9O
QU1FKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTCkK
ICN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9C
QUwKKyAgICAgICAgCisgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGdldFByaXZhdGVOYW1lKGNv
bnN0IElkZW50aWZpZXImKSBjb25zdDsKKyAgICAgICAgSWRlbnRpZmllciBnZXRQdWJsaWNOYW1l
KGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
CmluZGV4IDA3NTg3NWZiMjMxNmE1NTU3MDUwYTY2OTBjZDBmOTg4MjQ4NGY1ZjMuLjVhZjkwODc1
NGU3NDdmOGNhZTBjZDA0YWY4ZDQ5MTUwMDQ2OGMyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtNDEsNyArNDEsNyBAQAog
I2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNBY3Rp
dmF0aW9uLmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRl
ICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4
Y2VwdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzRXhjZXB0aW9ucy5jcHAKaW5kZXggNTUzMzRiZTJmOTgwYTk4ZjdmZWE0MmEwNWJlMGYyMGMw
MTlmZjBkZC4uZmE1N2MwMjY4NWU1M2Q1MjUyODgwNTdlMjExZDk4YjEwOTgxZDczZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0
aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzRXhjZXB0aW9ucy5jcHAKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJDYWxsRnJhbWUu
aCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCisj
aW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5l
cy5oIgogI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgQ29tbW9uU2xvd1BhdGhzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggMDVlMTFlMGI4MGEzNDMwYWVhYjIyYjAyMjJh
MjEyZjRhOGUyYzQ5Yi4uMzY0Y2M3MTY2NjA4YjUwMDdkNDc3ZDg3MzkxOGE1ZDY0YjE2ODY1NSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVy
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVy
cy5jcHAKQEAgLTgxLDYgKzgxLDExIEBAIEpTT2JqZWN0KiBjcmVhdGVTdGFja092ZXJmbG93RXJy
b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogSlNPYmplY3QqIGNyZWF0ZVVuZGVm
aW5lZFZhcmlhYmxlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCkKIHsKKyAgICAKKyAgICBpZiAoaWRlbnQuaW1wbCgpLT5pc0VtcHR5VW5pcXVlKCkpIHsKKyAg
ICAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2FuJ3QgZmluZCBwcml2YXRlIHZhcmlh
YmxlOiBAIiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdldFB1YmxpY05hbWUoaWRlbnQpLnN0cmlu
ZygpKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBtZXNzYWdl
KTsKKyAgICB9CiAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2FuJ3QgZmluZCB2YXJp
YWJsZTogIiwgaWRlbnQuc3RyaW5nKCkpKTsKICAgICByZXR1cm4gY3JlYXRlUmVmZXJlbmNlRXJy
b3IoZXhlYywgbWVzc2FnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmgKaW5kZXggMTk4OTc2YmIzZmU2ZTZlOTExNzk4MTJkMWNhZjliOGJmOWJmZDBiYi4u
OGQ1OTBlZjBmZmMwZWI5MGFjOGY5YTgxZDliYzI1NzIxY2QzNWM5MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtNDg0LDcgKzQ4NCw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRh
YmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigp
LCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUlu
Zm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0Fj
dGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSk7IH0K
IAogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29k
ZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mRnVuY3Rpb25E
ZWNscygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9u
RGVjbHMoKTsgfQpAQCAtNTQwLDcgKzU0MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJD
b2RlKCk7CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0
dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmlj
dE1vZGUoKSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBj
b25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwo
KSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSk7IH0KIAogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKQEAgLTYyOCw3ICs2MjgsOCBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2tGb3Ioa2luZCk7CiAgICAgfQot
ICAgICAgICAKKworICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X3VubGlua2VkRXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKTsgfQogICAgIGNvbnN0IElk
ZW50aWZpZXImIG5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZSgpOyB9
CiAgICAgY29uc3QgSWRlbnRpZmllciYgaW5mZXJyZWROYW1lKCkgeyByZXR1cm4gbV91bmxpbmtl
ZEV4ZWN1dGFibGUtPmluZmVycmVkTmFtZSgpOyB9CiAgICAgSlNTdHJpbmcqIG5hbWVWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1lVmFsdWUoKTsgfQpAQCAt
Njc1LDE0ICs2NzYsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9ib2R5SW5jbHVkZXNCcmFjZXM7
CiB9OwogCi1pbmxpbmUgYm9vbCBpc0hvc3RGdW5jdGlvbihKU1ZhbHVlIHZhbHVlLCBOYXRpdmVG
dW5jdGlvbiBuYXRpdmVGdW5jdGlvbikKLXsKLSAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpz
Q2FzdDxKU0Z1bmN0aW9uKj4oZ2V0SlNGdW5jdGlvbih2YWx1ZSkpOwotICAgIGlmICghZnVuY3Rp
b24gfHwgIWZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIGZ1bmN0aW9uLT5uYXRpdmVGdW5jdGlvbigpID09IG5hdGl2ZUZ1bmN0aW9u
OwotfQotCiBpbmxpbmUgdm9pZCBFeGVjdXRhYmxlQmFzZTo6Y2xlYXJDb2RlVmlydHVhbChFeGVj
dXRhYmxlQmFzZSogZXhlY3V0YWJsZSkKIHsKICAgICBzd2l0Y2ggKGV4ZWN1dGFibGUtPnN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCmluZGV4IGMxYjA4YWYyZDgxOGRhZTU3
ZTFiMDBmZGExNzNhODE2MTM3NTI5YjUuLjEyNDkwYzQwZjMzNDE3ZWNhOTIzODUwYTBkYzY2MmRi
YmNkNDBmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvblByb3RvdHlwZS5jcHAKQEAgLTIyLDEyICsyMiwxMyBAQAogI2luY2x1ZGUgIkZ1bmN0aW9u
UHJvdG90eXBlLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJJbnRlcnBy
ZXRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNs
dWRlICJKU1N0cmluZ0J1aWxkZXIuaCIKLSNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1
ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIkxleGVyLmgiCiAjaW5jbHVkZSAiT3Bl
cmF0aW9ucy5oIgogCkBAIC0xMDgsNyArMTA5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVl
LmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZnVu
Y3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KHRoaXNWYWx1ZSk7Ci0gICAgICAgIGlmIChmdW5j
dGlvbi0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RPckJ1
aWx0aW5GdW5jdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01h
a2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJmdW5jdGlvbiAiLCBmdW5jdGlvbi0+bmFtZShleGVj
KSwgIigpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59IikpOwogICAgICAgICBGdW5jdGlvbkV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUgPSBmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCk7CiAgICAgICAgIFN0
cmluZyBzb3VyY2VTdHJpbmcgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS50b1N0cmluZygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKaW5kZXggNzJl
ZDFjNzEyNDA2MTE2OGIwYWRkZDMxMTZmNzU1YTExN2I4ZmI5MC4uYjM3NDk0MzA5OWUyMTU1YTM5
NzcxMzMxMzQ3MDJjMmEyNGFjYzg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FjdGl2YXRpb24uY3BwCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgSlNBY3RpdmF0aW9u
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAKIGlu
bGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50
cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7
CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChw
cm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChlbnRyeS5pc051bGwoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkBAIC03Miw3ICs3Miw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6
c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90CiAK
IGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAgIFN5bWJv
bFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1l
LnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxl
KCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChlbnRyeS5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC04OSw3ICs4OSw3IEBAIGlubGluZSBib29s
IEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBBU1NFUlQoIUhlYXA6
OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwog
ICAgIAotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVH
ZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRy
eSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlm
IChlbnRyeS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChlbnRyeS5p
c1JlYWRPbmx5KCkpIHsKQEAgLTEzNiw3ICsxMzYsNyBAQCBpbmxpbmUgYm9vbCBKU0FjdGl2YXRp
b246OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJv
cAogICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIHJlZzsKICAgICB7CiAgICAgICAgIENv
bmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlKCktPm1fbG9jayk7Ci0gICAgICAg
IFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZSgpLT5maW5kKGxv
Y2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgICAgIFN5bWJvbFRhYmxlOjpN
YXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZSgpLT5maW5kKGxvY2tlciwgcHJvcGVydHlO
YW1lLnVpZCgpKTsKICAgICAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUoKS0+ZW5kKGxvY2tl
cikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkm
IGVudHJ5ID0gaXRlci0+dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwCmluZGV4IDJmY2Y4ODE1YzA1NjgwNTgxMmE3
OTkxYTVmZjA2M2Q2ODczOTcxNjQuLjlhOTI1ODNhYTBlYzkwZGJiMzI4ZWNkNTBkYzMxMzlhZWYw
MjczYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1l
bnRzSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJn
dW1lbnRzSXRlcmF0b3IuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiSlNBcmd1bWVu
dHNJdGVyYXRvci5oIgogCiAjaW5jbHVkZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheS5jcHAKaW5kZXggOTAwN2I1ZjdkM2YxMDNiMWQyMWIxYTM2NWEyNmMy
MTVjMzJiNGQyOC4uYmEwYTJkMzhlOWM1M2UxNTkzN2Q0NmE4OTUxYThjOGM0NTA3OTI2NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAj
aW5jbHVkZSAiSW5kZXhpbmdIZWFkZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKICNpbmNsdWRlICJSZWplY3Qu
aCIKICNpbmNsdWRlIDx3dGYvQVZMVHJlZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKaW5kZXggZDUwNmM0ZWJkMjYyMGVmZDcwNzkz
YTg3M2QwODUyZmJkOTc4Mjg1OS4uY2YzNzA5N2VjMGM2OTI1YTg2N2I4YzAxMGMwZWZjNDA3NDQ4
NWYxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRl
cmF0b3IuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGlu
ZXMuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCmluZGV4IGNj
YTY4ODhiZjk4YTAyODY0NmNhM2RkZGYzNzYyN2NlMGU3ZDkzMDIuLjMzOWE3YWI3ZjU5NTE1ZTk2
YWZiN2VjNGI4NzQxZTdhYThlMTY2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuY3BwCkBAIC0zMiw3ICszMiw5IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNOb3RBbk9iamVj
dC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk51bWJlck9iamVj
dC5oIgorI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCmluZGV4IGY3Yzg0NDY0NTA5MmIyNTA4MDVlNmU4
ZDQ4MzJjOTk4YmRiODliNTQuLmQ3OTVkZDU2YTk3ZGRiNTk3YzA5MGZjMmUwYjdmMzA4ZTMzZWJj
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgK
QEAgLTI3LDggKzI3LDEwIEBACiAjZGVmaW5lIEpTQ2VsbElubGluZXNfaAogCiAjaW5jbHVkZSAi
Q2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJE
ZWZlckdDLmgiCiAjaW5jbHVkZSAiSGFuZGxlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1
ZGUgIkpTU3RyaW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uY3BwCmluZGV4IDI0MTk2NDYxMGJiNDQyN2IxODYzNzMzNDZlMjRmNWE4MmQwY2RjYzQuLmFj
ZTZjMTQ3ZTQ5N2ZlZTIwMjkyZmI1NTM5NzYwZDVkNjk4MjljZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0zNCw3ICszNCw4IEBACiAjaW5j
bHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNp
bmNsdWRlICJKU0FycmF5LmgiCi0jaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiIAorI2luY2x1
ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU05vdEFuT2JqZWN0LmgiCiAj
aW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTEwOSw2ICsxMTAsMTQgQEAgdm9pZCBKU0Z1bmN0
aW9uOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUs
IGludCBsZW5ndGgKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwg
anNOdW1iZXIobGVuZ3RoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQog
CitKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24oVk0mIHZtLCBG
dW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCit7CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjcmVhdGUodm0sIGV4ZWN1dGFibGUs
IGdsb2JhbE9iamVjdCk7CisgICAgZnVuY3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bmFtZSwganNTdHJpbmcoJnZtLCBleGVjdXRhYmxlLT5uYW1lKCkuc3RyaW5nKCkpLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgZnVuY3Rpb24tPnB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcihleGVjdXRhYmxlLT5wYXJh
bWV0ZXJDb3VudCgpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHJl
dHVybiBmdW5jdGlvbjsKK30KKwogT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUqIEpTRnVuY3Rpb246
OmNyZWF0ZUFsbG9jYXRpb25Qcm9maWxlKEV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IGlubGluZUNh
cGFjaXR5KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC0xNDIsNyArMTUxLDcgQEAg
Y29uc3QgU3RyaW5nIEpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgICAgIHJldHVybiBleHBsaWNpdE5hbWU7CiAgICAgCiAgICAgY29uc3QgU3Ry
aW5nIGFjdHVhbE5hbWUgPSBuYW1lKGV4ZWMpOwotICAgIGlmICghYWN0dWFsTmFtZS5pc0VtcHR5
KCkgfHwgaXNIb3N0RnVuY3Rpb24oKSkKKyAgICBpZiAoIWFjdHVhbE5hbWUuaXNFbXB0eSgpIHx8
IGlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBhY3R1YWxOYW1lOwog
ICAgIAogICAgIHJldHVybiBqc0V4ZWN1dGFibGUoKS0+aW5mZXJyZWROYW1lKCkuc3RyaW5nKCk7
CkBAIC0xNTAsMTAgKzE1OSwyMCBAQCBjb25zdCBTdHJpbmcgSlNGdW5jdGlvbjo6Y2FsY3VsYXRl
ZERpc3BsYXlOYW1lKEV4ZWNTdGF0ZSogZXhlYykKIAogY29uc3QgU291cmNlQ29kZSogSlNGdW5j
dGlvbjo6c291cmNlQ29kZSgpIGNvbnN0CiB7Ci0gICAgaWYgKGlzSG9zdEZ1bmN0aW9uKCkpCisg
ICAgaWYgKGlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwogICAg
IHJldHVybiAmanNFeGVjdXRhYmxlKCktPnNvdXJjZSgpOwogfQorICAgIAorYm9vbCBKU0Z1bmN0
aW9uOjppc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzSG9z
dEZ1bmN0aW9uKCkgfHwgaXNCdWlsdGluRnVuY3Rpb24oKTsKK30KKworYm9vbCBKU0Z1bmN0aW9u
Ojppc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuICFpc0hvc3RGdW5jdGlv
bigpICYmIGpzRXhlY3V0YWJsZSgpLT5pc0J1aWx0aW5GdW5jdGlvbigpOworfQogCiB2b2lkIEpT
RnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKIHsKQEAgLTI3Nyw3ICsyOTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Z1bmN0aW9uOjpjYWxs
ZXJHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBzbG90QmFzZQogICAgIGlm
ICghY2FsbGVyLmlzT2JqZWN0KCkgfHwgIWFzT2JqZWN0KGNhbGxlciktPmluaGVyaXRzKEpTRnVu
Y3Rpb246OmluZm8oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbGVyKTsK
ICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2FsbGVyKTsK
LSAgICBpZiAoZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkgfHwgIWZ1bmN0aW9uLT5qc0V4ZWN1
dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RPckJ1aWx0
aW5GdW5jdGlvbigpIHx8ICFmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxlcik7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkZ1bmN0aW9u
LmNhbGxlciB1c2VkIHRvIHJldHJpZXZlIHN0cmljdCBjYWxsZXIiKSkpOwogfQpAQCAtMjk5LDcg
KzMxOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTRnVuY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRl
KiwgRW5jb2RlZEpTVmFsdWUgc2xvdEJhc2UsIEVuY29kCiBib29sIEpTRnVuY3Rpb246OmdldE93
blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1bmN0aW9u
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICh0aGlz
T2JqZWN0LT5pc0hvc3RGdW5jdGlvbigpKQorICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1
aWx0aW5GdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICBpZiAocHJvcGVy
dHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpIHsKQEAgLTM2MSw3ICsz
ODAsNyBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5Tgogdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25O
b25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7
CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0
KTsKLSAgICBpZiAoIXRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkgJiYgKG1vZGUgPT0gSW5j
bHVkZURvbnRFbnVtUHJvcGVydGllcykpIHsKKyAgICBpZiAoIXRoaXNPYmplY3QtPmlzSG9zdE9y
QnVpbHRpbkZ1bmN0aW9uKCkgJiYgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykp
IHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHByb3RvdHlwZSBoYXMgYmVlbiByZWlmaWVkLgogICAg
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0KTsKICAgICAgICAgdGhpc09iamVjdC0+
bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHNsb3QpOwpAQCAtMzc3LDcgKzM5Niw3IEBAIHZv
aWQgSlNGdW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywKIHZvaWQgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2VsbCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdEZ1
bmN0aW9uKCkpIHsKKyAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24o
KSkgewogICAgICAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2xvdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MjUsNyArNDQ0LDcgQEAg
Ym9vbCBKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3AKIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVy
dHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dF
eGNlcHRpb24pCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0
aW9uKj4ob2JqZWN0KTsKLSAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSkKKyAg
ICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgcmV0
dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBk
ZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbik7CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaAppbmRleCA3Y2QxNGI4YzJkODAwZjYxYmRjMTJlZGQyZGYwNGQz
NWZhMDYxOWI2Li45YjU4Yjc0N2NlMWYzZjMzMmQwZjc2MGE1Nzg1YjdhYzE5ZWJlOWY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC02OCw2ICs2OCw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uOwogICAgICAg
ICB9CiAgICAgICAgIAorICAgICAgICBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlQnVpbHRpbkZ1
bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNHbG9iYWxPYmplY3QqKTsKKyAgICAg
ICAgCiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAgIAogICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgbmFtZShFeGVjU3RhdGUqKTsKQEAgLTk3LDcg
Kzk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRh
YmxlKCkgY29uc3QgeyByZXR1cm4gbV9leGVjdXRhYmxlLmdldCgpOyB9CiAKICAgICAgICAgLy8g
VG8gY2FsbCBlaXRoZXIgb2YgdGhlc2UgbWV0aG9kcyBpbmNsdWRlIEV4ZWN1dGFibGUuaAotICAg
ICAgICBpbmxpbmUgYm9vbCBpc0hvc3RGdW5jdGlvbigpIGNvbnN0OworICAgICAgICBib29sIGlz
SG9zdEZ1bmN0aW9uKCkgY29uc3Q7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSoganNFeGVj
dXRhYmxlKCkgY29uc3Q7CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgU291cmNl
Q29kZSogc291cmNlQ29kZSgpIGNvbnN0OwpAQCAtMTQ1LDYgKzE0NywxMCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDsK
ICAgICAgICAgfQogCisgICAgICAgIGJvb2wgaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSBjb25z
dDsKKyAgICAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0OworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CisKICAg
ICBwcm90ZWN0ZWQ6CiAgICAgICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEltcGxlbWVudHNIYXNJbnN0YW5jZSB8
IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNP
YmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCkBAIC0xNjksOCArMTc1LDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKICAgICAgICAgCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNIb3N0RnVu
Y3Rpb25Ob25JbmxpbmUoKSBjb25zdDsKLQogICAgICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
YXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSwgUHJvcGVydHlOYW1lKTsKICAgICAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGNhbGxlckdl
dHRlcihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5
TmFtZSk7CiAgICAgICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKaW5k
ZXggZmU0ZTExNGFkYmMyMzY3NGQzYjYwZTYxZjcxY2I3YTA2Yzk0Nzg0ZC4uNjlmMGQ0ZjM5NmVm
OWMyZGE5ZTBiZjYwOGMyNjQ0MTcxNzk5YmE1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCkBAIC01MywxNiArNTMsMjQgQEAgaW5s
aW5lIGJvb2wgSlNGdW5jdGlvbjo6aXNIb3N0RnVuY3Rpb24oKSBjb25zdAogCiBpbmxpbmUgTmF0
aXZlRnVuY3Rpb24gSlNGdW5jdGlvbjo6bmF0aXZlRnVuY3Rpb24oKQogewotICAgIEFTU0VSVChp
c0hvc3RGdW5jdGlvbigpKTsKKyAgICBBU1NFUlQoaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSk7
CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5hdGl2ZUV4ZWN1dGFibGUqPihtX2V4ZWN1dGFibGUu
Z2V0KCkpLT5mdW5jdGlvbigpOwogfQogCiBpbmxpbmUgTmF0aXZlRnVuY3Rpb24gSlNGdW5jdGlv
bjo6bmF0aXZlQ29uc3RydWN0b3IoKQogewotICAgIEFTU0VSVChpc0hvc3RGdW5jdGlvbigpKTsK
KyAgICBBU1NFUlQoaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSk7CiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PE5hdGl2ZUV4ZWN1dGFibGUqPihtX2V4ZWN1dGFibGUuZ2V0KCkpLT5jb25zdHJ1Y3Rv
cigpOwogfQogCitpbmxpbmUgYm9vbCBpc0hvc3RGdW5jdGlvbihKU1ZhbHVlIHZhbHVlLCBOYXRp
dmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbikKK3sKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9
IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZ2V0SlNGdW5jdGlvbih2YWx1ZSkpOworICAgIGlmICghZnVu
Y3Rpb24gfHwgIWZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIGZ1bmN0aW9uLT5uYXRpdmVGdW5jdGlvbigpID09IG5hdGl2ZUZ1bmN0
aW9uOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTRnVuY3Rpb25Jbmxp
bmVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCmlu
ZGV4IDJkZGMyOWY3MTg5N2JiNTFkMzkwYjA2YjI1YTczODMzODc0YmEwYzEuLmVkZDM0NDljZTQ3
YjE3MzVlOGU1ZGJiMDVmMzE4ZTNkNTVmM2JlNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBKU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lc19oCiAjZGVmaW5lIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzX2gKIAorI2luY2x1ZGUgIkNvbW1vbklk
ZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVy
LmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCA2ZGI4NjI3NGMzYjg3NGFhYWRlNTE1MTg5ODI2
NzI2ZmIxMzZjMTczLi5mMjRlYTczMDNkZjk2OWRiZDJkY2E1MmM4NmQxMWM3OGMwMGRiOWVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBK
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXNfaAogCiAjaW5jbHVkZSAiQXJyYXlCdWZmZXJW
aWV3LmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJEZWZlckdD
LmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oCmluZGV4IDQ1OTk5N2E0
NjRiOTExOTQ3N2IxYmU4NGUzNmM0ZTI5NjZhY2VmODUuLjhlNWZmODI3OTFlNmZmOGQ0ZWI5YzM3
MzY5MWU0MzNlYjdkMTZhZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBl
SW5saW5lcy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG90eXBlSW5saW5lc19oCiAjZGVmaW5lIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJv
dG90eXBlSW5saW5lc19oCiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1
ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkpT
RnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAppbmRleCAyYzI3NGMxYTdkNDgxYzA3ZGYwZDJiZWIzYjI5MzFhMzkwN2E1ZTY2
Li4wNmU1NGM4NGU3N2I5MDMyYmFhMWQyZGY0N2ExYzcyZTgwYjdkZWEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0zNDYsNyAr
MzQ2LDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAK
ICAgICAvLyBDb25zdHJ1Y3RvcnMKIAotICAgIEpTQ2VsbCogb2JqZWN0Q29uc3RydWN0b3IgPSBP
YmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9vYmplY3RQcm90
b3R5cGUuZ2V0KCkpOworICAgIE9iamVjdENvbnN0cnVjdG9yKiBvYmplY3RDb25zdHJ1Y3RvciA9
IE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX29iamVjdFBy
b3RvdHlwZS5nZXQoKSk7CisgICAgbV9vYmplY3RDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIG9i
amVjdENvbnN0cnVjdG9yKTsKICAgICBKU0NlbGwqIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBGdW5j
dGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rpb25Q
cm90b3R5cGUuZ2V0KCkpOwogICAgIEpTQ2VsbCogYXJyYXlDb25zdHJ1Y3RvciA9IEFycmF5Q29u
c3RydWN0b3I6OmNyZWF0ZSh2bSwgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9hcnJheVByb3RvdHlwZS5nZXQo
KSk7CiAKQEAgLTQzMiw3ICs0MzMsMTAgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgR2xvYmFsUHJvcGVydHlJbmZvIHN0YXRpY0dsb2JhbHNbXSA9
IHsKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPk5hTiwganNO
YU4oKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+SW5maW5pdHksIGpzTnVtYmVyKHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PnVuZGVmaW5lZEtleXdvcmQsIGpzVW5kZWZpbmVkKCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5KQorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+
dW5kZWZpbmVkS2V5d29yZCwganNVbmRlZmluZWQoKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwg
UmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+
dW5kZWZpbmVkS2V5d29yZFByaXZhdGVOYW1lLCBqc1VuZGVmaW5lZCgpLCBEb250RW51bSB8IERv
bnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9w
ZXJ0eU5hbWVzLT5PYmplY3RQcml2YXRlTmFtZSwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVt
IHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPlR5cGVFcnJvclByaXZhdGVOYW1lLCBtX3R5cGVFcnJvckNvbnN0cnVj
dG9yLmdldCgpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSkKICAgICB9OwogICAg
IGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFscywgV1RGX0FSUkFZX0xFTkdUSChzdGF0aWNH
bG9iYWxzKSk7CiAgICAgCkBAIC02MDgsNiArNjEyLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5bnRheEVycm9yQ29uc3RydWN0b3IpOwogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3R5cGVFcnJvckNvbnN0cnVjdG9yKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9VUklFcnJvckNvbnN0cnVjdG9yKTsKKyAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9vYmplY3RDb25zdHJ1Y3Rvcik7CiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvbWlzZUNvbnN0cnVjdG9yKTsKIAogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2V2YWxGdW5jdGlvbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBiMGNhZDNkYzU0
NzBmN2M3YTBlNTcwYmRjZDJkZmZhODk1ZTJhYTBjLi4zYTYxNmM2ZjA1ZWRmMWQyOTVhZjg0NDFh
YTY2NTAwZmI5MmE0YTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKQEAgLTY3LDYgKzY3LDcgQEAgY2xhc3MgSlNTdGFjazsKIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIE1pY3JvdGFzazsKIGNsYXNzIE5hdGl2ZUVycm9y
Q29uc3RydWN0b3I7CitjbGFzcyBPYmplY3RDb25zdHJ1Y3RvcjsKIGNsYXNzIFByb2dyYW1Db2Rl
QmxvY2s7CiBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsKIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9y
OwpAQCAtMTU4LDYgKzE1OSw3IEBAIHByb3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8TmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvcj4gbV90eXBlRXJyb3JDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJp
ZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV9VUklFcnJvckNvbnN0cnVjdG9yOwogICAgIFdy
aXRlQmFycmllcjxKU1Byb21pc2VDb25zdHJ1Y3Rvcj4gbV9wcm9taXNlQ29uc3RydWN0b3I7Cisg
ICAgV3JpdGVCYXJyaWVyPE9iamVjdENvbnN0cnVjdG9yPiBtX29iamVjdENvbnN0cnVjdG9yOwog
CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fZXZhbEZ1bmN0aW9uOwogICAgIFdyaXRl
QmFycmllcjxKU0Z1bmN0aW9uPiBtX2NhbGxGdW5jdGlvbjsKQEAgLTMzMCw2ICszMzIsNyBAQCBw
dWJsaWM6CiAgICAgUmVnRXhwQ29uc3RydWN0b3IqIHJlZ0V4cENvbnN0cnVjdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWdFeHBDb25zdHJ1Y3Rvci5nZXQoKTsgfQogCiAgICAgRXJyb3JDb25zdHJ1
Y3RvciogZXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JDb25zdHJ1Y3Rv
ci5nZXQoKTsgfQorICAgIE9iamVjdENvbnN0cnVjdG9yKiBvYmplY3RDb25zdHJ1Y3RvcigpIGNv
bnN0IHsgcmV0dXJuIG1fb2JqZWN0Q29uc3RydWN0b3IuZ2V0KCk7IH0KICAgICBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yKiBldmFsRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXZh
bEVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBy
YW5nZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlRXJyb3JDb25zdHJ1
Y3Rvci5nZXQoKTsgfQogICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHJlZmVyZW5jZUVycm9y
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5jZUVycm9yQ29uc3RydWN0b3Iu
Z2V0KCk7IH0KQEAgLTU4MSw3ICs1ODQsNyBAQCBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6
aGFzT3duUHJvcGVydHlGb3JXcml0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZQogCiBp
bmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6c3ltYm9sVGFibGVIYXNQcm9wZXJ0eShQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1i
b2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3lt
Ym9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5h
bWUudWlkKCkpOwogICAgIHJldHVybiAhZW50cnkuaXNOdWxsKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCAyYjY3YTFkOWVlZDg0ZTk5NTZm
OGJiOTY4Mzg0Yzg0Y2FlYTUzY2ZmLi4yZWEyYzI0ZTZlYWI0Y2QwZDdmZmVkNjY1ZWY0YWU0MWFm
MDc1MGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBA
IC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBnZXRDbGFzc1Byb3BlcnR5TmFtZXMo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzCiAgICAgICAgIGludCBoYXNo
U2l6ZU1hc2sgPSB0YWJsZS0+Y29tcGFjdFNpemUgLSAxOwogICAgICAgICBjb25zdCBIYXNoRW50
cnkqIGVudHJ5ID0gdGFibGUtPnRhYmxlOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8PSBo
YXNoU2l6ZU1hc2s7ICsraSwgKytlbnRyeSkgewotICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXko
KSAmJiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IChtb2RlID09IEluY2x1
ZGVEb250RW51bVByb3BlcnRpZXMpKSAmJiAhKChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rp
b24pICYmIGRpZFJlaWZ5KSkKKyAgICAgICAgICAgIGlmIChlbnRyeS0+a2V5KCkgJiYgKCEoZW50
cnktPmF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKSkgJiYgISgoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9u
KSAmJiBkaWRSZWlmeSkpCiAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZW50cnkt
PmtleSgpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE2MTgsNyArMTYxOCw3IEBAIHZvaWQgSlNP
YmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGVsZXRlKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzKTsKICAg
ICAgICAgZm9yIChIYXNoVGFibGU6OkNvbnN0SXRlcmF0b3IgaXRlciA9IGhhc2hUYWJsZS0+YmVn
aW4odm0pOyBpdGVyICE9IGhhc2hUYWJsZS0+ZW5kKHZtKTsgKytpdGVyKSB7Ci0gICAgICAgICAg
ICBpZiAoaXRlci0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pCisgICAgICAgICAgICBpZiAoaXRl
ci0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pCiAgICAgICAgICAgICAgICAgc2V0
VXBTdGF0aWNGdW5jdGlvblNsb3QoZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgKml0ZXIs
IHRoaXMsIElkZW50aWZpZXIoJnZtLCBpdGVyLT5rZXkoKSksIHNsb3QpOwogICAgICAgICB9CiAg
ICAgfQpAQCAtMjIzNiw2ICsyMjM2LDE2IEBAIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uCiAgICAg
cHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsKIH0KIAor
dm9pZCBKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KQoreworICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOwor
ICAgIGlmICghbmFtZSkKKyAgICAgICAgbmFtZSA9IHZtLnByb3BlcnR5TmFtZXMtPmFub255bW91
cy5pbXBsKCk7CisgICAgQVNTRVJUKG5hbWUpOworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0g
SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlv
bkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBnbG9iYWxPYmplY3QpOworICAgIHB1
dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCBmdW5jdGlvbiwgYXR0cmlidXRlcyk7Cit9CisKIHZv
aWQgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIHBy
b3BlcnR5TmFtZSwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2
ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewog
ICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggMDJiMTM3YjM1MGMyZmE4MzI1
YmQzYjk2NDcxMTJhYmU4NzZmMzgzZi4uZGRlNTk3ZWZmYWVjMGYxYjhkNDRjMjkxMTk1MDMwMWYw
NjAwN2U5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC0y
OSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQnV0dGVyZmx5LmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1l
LmgiCiAjaW5jbHVkZSAiQ2xhc3NJbmZvLmgiCi0jaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMu
aCIKICNpbmNsdWRlICJDb3B5V3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSAiRGVmZXJHQy5oIgog
I2luY2x1ZGUgIkhlYXAuaCIKQEAgLTU4MSw2ICs1ODAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBw
dXREaXJlY3RVbmRlZmluZWQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSB7IGxvY2F0aW9uRm9yT2Zm
c2V0KG9mZnNldCktPnNldFVuZGVmaW5lZCgpOyB9CiAKICAgICB2b2lkIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCB1bnNp
Z25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQg
YXR0cmlidXRlcyk7CisgICAgdm9pZCBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb24oVk0mLCBKU0ds
b2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIHZvaWQgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwg
dW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVm
aW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0
IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCmluZGV4
IDQwMjYxOTYzM2ZhMDZmZDI1NGIzZjJhN2E4Y2M3MWU4MDdhYWY5MTEuLjE3ZDJhYjY1YTg4ZmZi
MTNmYTlhNmM4ZjU4M2NhODQ0YWY4MzIyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKQEAgLTM1LDYgKzM1LDcg
QEAKICNpbmNsdWRlICJKU1Byb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZUZ1
bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpT
U3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk51bWJlck9i
amVjdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmNwcAppbmRleCBjYmM0MmVi
OWZkOTIzMGY0NmU2Zjg0OWZmMWE3OTU5YmQxMDc5YmVjLi40MjcxMGMzMDU0NGExMWM3NTQ3YzNj
Zjg4OGI5NmE0OGM0NjhhMDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb21pc2VEZWZlcnJlZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
SlNQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlQ29uc3RydWN0b3IuaCIKICNpbmNsdWRl
ICJKU1Byb21pc2VGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNp
bmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmNwcApp
bmRleCA5ZGY0NTc4MTdjYTgwM2QzNzMyODI0MmZjMzNlY2E3NDVlZDQwNDMxLi5lNGNhNWE0NmQ5
MWJiODA0MjRiODYyZTkzMjQ5MjM3YmZjNTNlN2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHAKQEAgLTM2LDYgKzM2LDcg
QEAKICNpbmNsdWRlICJKU1Byb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZUZ1
bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZVJlYWN0aW9uLmgiCisjaW5jbHVkZSAiSlNT
dHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWljcm90YXNrLmgiCiAjaW5jbHVkZSAiU3RydWN0
dXJlSW5saW5lcy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb21pc2VSZWFjdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9taXNlUmVhY3Rpb24uaAppbmRleCBmYzcxNDZjNTBlODQ5ZDMzMGQ4OWU2M2ZjMTljYTY0OWQz
YzBlODQ4Li40MmQyNDk2YTFmY2RhYmJjMTFkYzdiYjI3N2RkMTIzZTJhNGRlMjE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VSZWFjdGlvbi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlYWN0aW9uLmgKQEAg
LTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgSlNQcm9taXNlUmVhY3Rpb25faAogCiAjaW5jbHVkZSAi
SlNDZWxsLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0
dXJlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAppbmRleCA2OGE4YmQ4N2Qz
OGFkYmJiOWRkMmFjOWVjNGI0OWQ1ZWY0NTQ5ZDU2Li4yMzdjNDJiYjBkYTBmMTY2NzZlYjExYWRl
ODE4MGE3YjA2ZDk4ZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcApAQCAtMjksNyArMjksOSBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKIAor
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3Qu
aCIKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAppbmRleCBmNDM2MmZmMzU0ZWU2YTUwMjIx
YmI3MzFkMWEyNjExZTZkZDYxYmMwLi5kMDczNzE5ZGUxNjBkMmYyOTIxMTBhNTk2YTEwNWUyZmEy
MTE1ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5oCkBAIC0zMSw3ICszMSw2IEBACiAKICNpbmNsdWRlICJKU09i
amVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgog
I2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCAyYjFjZGRkYzU4NDFkNjBk
MTU3YTJlNjFmNzAyYjBlZTVmYTFkNjc2Li5lMzkzNDE2MGFlYTkyNmVmMTU5MzJmODc5MGUyNGM1
MmFmMDJkMzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKQEAg
LTI0LDcgKzI0LDYgQEAKICNkZWZpbmUgSlNTdHJpbmdfaAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1l
LmgiCi0jaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiUHJvcGVydHlEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlT
bG90LmgiCkBAIC00NzIsMzMgKzQ3MSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGlubGluZSBK
U1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5n
JiBzKSB7IHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoJmV4ZWMtPnZtKCksIHMpOyB9CiAgICAg
aW5saW5lIEpTU3RyaW5nKiBqc093bmVkU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3Ry
aW5nJiBzKSB7IHJldHVybiBqc093bmVkU3RyaW5nKCZleGVjLT52bSgpLCBzKTsgfQogCi0gICAg
QUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
Ci0gICAgewotICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5sZW5ndGgpIHsKLSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udEVudW0gfCBE
b250RGVsZXRlIHwgUmVhZE9ubHksIGpzTnVtYmVyKG1fbGVuZ3RoKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5h
bWUuYXNJbmRleCgpOwotICAgICAgICBpZiAoaSA8IG1fbGVuZ3RoKSB7Ci0gICAgICAgICAgICBB
U1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOyAvLyBObyBuZWVkIGZvciBhbiBl
eHBsaWNpdCBjaGVjaywgdGhlIGFib3ZlIHRlc3Qgd291bGQgYWx3YXlzIGZhaWwhCi0gICAgICAg
ICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnREZWxldGUgfCBSZWFkT25seSwgZ2V0SW5kZXgo
ZXhlYywgaSkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgICAgICAgICAgCi0gICAgQUxXQVlTX0lOTElORSBi
b29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKLSAgICB7Ci0gICAgICAgIGlm
IChwcm9wZXJ0eU5hbWUgPCBtX2xlbmd0aCkgewotICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0
aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIHByb3BlcnR5TmFtZSkp
OwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotCiAgICAgaW5saW5lIGJvb2wgaXNKU1N0cmluZyhKU1ZhbHVlIHYpIHsg
cmV0dXJuIHYuaXNDZWxsKCkgJiYgdi5hc0NlbGwoKS0+Y2xhc3NJbmZvKCkgPT0gSlNTdHJpbmc6
OmluZm8oKTsgfQogCiAgICAgLy8gLS0tIEpTVmFsdWUgaW5saW5lcyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCkBAIC01MjgsMzIgKzUwMCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICByZXR1cm4gdG9XVEZTdHJpbmdTbG93Q2FzZShleGVjKTsKICAgICB9CiAKLSAgICBBTFdBWVNf
SU5MSU5FIFN0cmluZyBpbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcoY29uc3QgSlNWYWx1
ZSYgdmFsdWUsIEV4ZWNTdGF0ZSogZXhlYykKLSAgICB7Ci0gICAgICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpCi0gICAgICAgICAgICByZXR1cm4g
dm0ubnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVlLmFzSW50MzIoKSk7Ci0gICAgICAgIGlmICh2YWx1
ZS5pc0RvdWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuIHZtLm51bWVyaWNTdHJpbmdzLmFkZCh2
YWx1ZS5hc0RvdWJsZSgpKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzVHJ1ZSgpKQotICAgICAgICAg
ICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPnRydWVLZXl3b3JkLnN0cmluZygpOwotICAgICAg
ICBpZiAodmFsdWUuaXNGYWxzZSgpKQotICAgICAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFt
ZXMtPmZhbHNlS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQot
ICAgICAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPm51bGxLZXl3b3JkLnN0cmluZygp
OwotICAgICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgICAgIHJldHVybiB2
bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLnN0cmluZygpOwotICAgICAgICByZXR1
cm4gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwotICAgIH0KLQotICAgIEFMV0FZ
U19JTkxJTkUgU3RyaW5nIEpTVmFsdWU6OnRvV1RGU3RyaW5nSW5saW5lKEV4ZWNTdGF0ZSogZXhl
YykgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChpc1N0cmluZygpKQotICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEpTU3RyaW5nKj4oYXNDZWxsKCkpLT52YWx1ZShleGVjKTsKLQotICAg
ICAgICByZXR1cm4gaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKCp0aGlzLCBleGVjKTsK
LSAgICB9Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gSlNTdHJpbmdfaApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zNzhjMDVmYzgwZDg4ZTg1MzdjOWQyYTVlYWI5ZmYwYmE5YjYwYTc1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgK
QEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgSlNTdHJpbmdJbmxpbmVzX2gKKyNkZWZpbmUgSlNTdHJpbmdJ
bmxpbmVzX2gKKworI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCisjaW5jbHVkZSAiSlND
SlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorCituYW1lc3BhY2UgSlND
IHsKKworQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3Qo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCit7CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
bGVuZ3RoKSB7CisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgUmVhZE9ubHksIGpzTnVtYmVyKG1fbGVuZ3RoKSk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsK
KyAgICBpZiAoaSA8IG1fbGVuZ3RoKSB7CisgICAgICAgIEFTU0VSVChpICE9IFByb3BlcnR5TmFt
ZTo6Tm90QW5JbmRleCk7IC8vIE5vIG5lZWQgZm9yIGFuIGV4cGxpY2l0IGNoZWNrLCB0aGUgYWJv
dmUgdGVzdCB3b3VsZCBhbHdheXMgZmFpbCEKKyAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBE
b250RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIGkpKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKworQUxXQVlTX0lOTElO
RSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBpZiAocHJv
cGVydHlOYW1lIDwgbV9sZW5ndGgpIHsKKyAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250
RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIHByb3BlcnR5TmFtZSkpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCitBTFdB
WVNfSU5MSU5FIFN0cmluZyBpbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcoY29uc3QgSlNW
YWx1ZSYgdmFsdWUsIEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpCisgICAgICAgIHJldHVybiB2bS5udW1lcmljU3Ry
aW5ncy5hZGQodmFsdWUuYXNJbnQzMigpKTsKKyAgICBpZiAodmFsdWUuaXNEb3VibGUoKSkKKyAg
ICAgICAgcmV0dXJuIHZtLm51bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZS5hc0RvdWJsZSgpKTsKKyAg
ICBpZiAodmFsdWUuaXNUcnVlKCkpCisgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT50
cnVlS2V5d29yZC5zdHJpbmcoKTsKKyAgICBpZiAodmFsdWUuaXNGYWxzZSgpKQorICAgICAgICBy
ZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+ZmFsc2VLZXl3b3JkLnN0cmluZygpOworICAgIGlmICh2
YWx1ZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPm51bGxLZXl3
b3JkLnN0cmluZygpOworICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1
cm4gdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZC5zdHJpbmcoKTsKKyAgICByZXR1
cm4gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworfQorICAgIAorQUxXQVlTX0lO
TElORSBTdHJpbmcgSlNWYWx1ZTo6dG9XVEZTdHJpbmdJbmxpbmUoRXhlY1N0YXRlKiBleGVjKSBj
b25zdAoreworICAgIGlmIChpc1N0cmluZygpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
SlNTdHJpbmcqPihhc0NlbGwoKSktPnZhbHVlKGV4ZWMpOworICAgIAorICAgIHJldHVybiBpbmxp
bmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcoKnRoaXMsIGV4ZWMpOworfQorCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJs
ZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxl
T2JqZWN0LmNwcAppbmRleCAyYWMyNTI0YzVkZmRhM2QxMjI0OWQ3NzkwYWRjMzEyOWUzYzBlODcx
Li5mYmM4Yjg5NWVhZTZhZjc4ODgzOWJlYjVlODNkN2I2Yjk3OTI4ZmFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcApA
QCAtNjQsNiArNjQsOCBAQCB2b2lkIEpTU3ltYm9sVGFibGVPYmplY3Q6OmdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdAogICAgICAgICBDb25jdXJy
ZW50SklUTG9ja2VyIGxvY2tlcih0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5tX2xvY2spOwog
ICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBlbmQgPSB0aGlzT2JqZWN0LT5zeW1i
b2xUYWJsZSgpLT5lbmQobG9ja2VyKTsKICAgICAgICAgZm9yIChTeW1ib2xUYWJsZTo6TWFwOjpp
dGVyYXRvciBpdCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmJlZ2luKGxvY2tlcik7IGl0
ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgaWYgKGl0LT5rZXktPmlzRW1wdHlVbmlxdWUo
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmICghKGl0LT52YWx1
ZS5nZXRBdHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVt
UHJvcGVydGllcykpCiAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmll
cihleGVjLCBpdC0+a2V5LmdldCgpKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAppbmRleCBiNWIyMGE4NDVi
NmFiNjQ0MjRiMzdlMzFiMjc3NGVmOTA1MzUzZjdmLi5kMDNiMjQ1MTFjMmRlMTk1OWZiNWY1NmQ2
NDljNjRkMGVmZTA2ODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCkBAIC03Miw3ICs3Miw3IEBAIGlubGluZSBib29sIHN5
bWJvbFRhYmxlR2V0KAogewogICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3Qt
PnN5bWJvbFRhYmxlKCk7CiAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFi
bGUubV9sb2NrKTsKLSAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9s
VGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJv
bFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJv
cGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2Vy
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50
cnkgPSBpdGVyLT52YWx1ZTsKQEAgLTg3LDcgKzg3LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFi
bGVHZXQoCiB7CiAgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9s
VGFibGUoKTsKICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xv
Y2spOwotICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5m
aW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGU6
Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5h
bWUudWlkKCkpOwogICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBlbnRyeSA9IGl0
ZXItPnZhbHVlOwpAQCAtMTA0LDcgKzEwNCw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0
KAogewogICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxl
KCk7CiAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsK
LSAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChs
b2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlOjpNYXA6
Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVp
ZCgpKTsKICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52
YWx1ZTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dCgKICAg
ICB7CiAgICAgICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRh
YmxlKCk7CiAgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRh
YmxlLm1fbG9jaywgZXhlYy0+dm0oKS5oZWFwKTsKLSAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6
aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVi
bGljTmFtZSgpKTsKKyAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5
bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgICAgICBpZiAo
aXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgYm9vbCB3YXNGYXQ7CkBAIC0xNTksNyArMTU5LDcgQEAgaW5saW5lIGJvb2wg
c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcygKICAgICB7CiAgICAgICAgIFN5bWJvbFRhYmxl
JiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgICAgIENvbmN1cnJl
bnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAgICAgIFN5bWJvbFRh
YmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVy
dHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9y
IGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAg
ICAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5ID0gaXRlci0+dmFs
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAppbmRleCBhODA2ZGQw
NTJhMGNiZWU0Y2FjMmNhYTZlMDhjNjcxNjAwNWMyNzBjLi5hOTc2NTIwMWI5ZjUxODY0MTQyM2Rk
ZTBmZTBlMmU1MWE4Y2U3M2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Mb29rdXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1
cC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBIYXNoVGFibGU6OmRlbGV0ZVRhYmxlKCkgY29u
c3QKIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBI
YXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCogdGhpc09iaiwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEFTU0VSVCh0aGlzT2JqLT5nbG9iYWxP
YmplY3QoKSk7Ci0gICAgQVNTRVJUKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbik7Cisg
ICAgQVNTRVJUKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbik7CiAgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCA9IHRoaXNPYmotPmdldERpcmVjdE9mZnNldCh2bSwgcHJvcGVydHlO
YW1lLCBhdHRyaWJ1dGVzKTsKQEAgLTc5LDkgKzc5LDEzIEBAIGJvb2wgc2V0VXBTdGF0aWNGdW5j
dGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVj
dCoKICAgICAgICAgaWYgKHRoaXNPYmotPnN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb24oCi0gICAgICAgICAgICB2bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHBy
b3BlcnR5TmFtZSwgZW50cnktPmZ1bmN0aW9uTGVuZ3RoKCksCi0gICAgICAgICAgICBlbnRyeS0+
ZnVuY3Rpb24oKSwgZW50cnktPmludHJpbnNpYygpLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAg
ICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluKQorICAgICAgICAgICAgdGhp
c09iai0+cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKHZtLCB0aGlzT2JqLT5nbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lLCBlbnRyeS0+YnVpbHRpbkdlbmVyYXRvcigpKHZtKSwgZW50cnktPmF0
dHJpYnV0ZXMoKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhpc09iai0+cHV0RGly
ZWN0TmF0aXZlRnVuY3Rpb24oCisgICAgICAgICAgICAgICAgdm0sIHRoaXNPYmotPmdsb2JhbE9i
amVjdCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5mdW5jdGlvbkxlbmd0aCgpLAorICAgICAgICAg
ICAgICAgIGVudHJ5LT5mdW5jdGlvbigpLCBlbnRyeS0+aW50cmluc2ljKCksIGVudHJ5LT5hdHRy
aWJ1dGVzKCkpOworICAgICAgICB9CiAgICAgICAgIG9mZnNldCA9IHRoaXNPYmotPmdldERpcmVj
dE9mZnNldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKICAgICAgICAgQVNTRVJUKGlz
VmFsaWRPZmZzZXQob2Zmc2V0KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9M
b29rdXAuaAppbmRleCBiZGU4M2Q0YTZmYzM1NTc3ODUwZTMxZTg4YmMzOWZkMDVmN2JjZTUyLi5k
YmEzODllOWUyNDNkZDBlY2IyYmE5OGYzOTRkNDA3OWY5ZGVhOTM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Mb29rdXAuaApAQCAtNDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAvLyBpZS4gdHlwZWRlZiBKU1ZhbHVlICgqR2V0RnVuY3Rpb24pKEV4ZWNTdGF0ZSosIEpT
T2JqZWN0KiBiYXNlT2JqZWN0KQogICAgIHR5cGVkZWYgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmMgR2V0RnVuY3Rpb247CiAgICAgdHlwZWRlZiBQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
YyBQdXRGdW5jdGlvbjsKKyAgICB0eXBlZGVmIEZ1bmN0aW9uRXhlY3V0YWJsZSogKCpCdWlsdGlu
R2VuZXJhdG9yKShWTSYpOwogCiAgICAgY2xhc3MgSGFzaEVudHJ5IHsKICAgICAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC02OCwxMSArNjksMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICByZXR1cm4gbV9pbnRyaW5zaWM7CiAgICAgICAgIH0KIAorICAgICAgICBCdWls
dGluR2VuZXJhdG9yIGJ1aWx0aW5HZW5lcmF0b3IoKSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0
ZXMgJiBCdWlsdGluKTsgcmV0dXJuIG1fdS5idWlsdGluR2VuZXJhdG9yLmdlbmVyYXRvclZhbHVl
OyB9CiAgICAgICAgIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uKCkgY29uc3QgeyBBU1NFUlQobV9h
dHRyaWJ1dGVzICYgRnVuY3Rpb24pOyByZXR1cm4gbV91LmZ1bmN0aW9uLmZ1bmN0aW9uVmFsdWU7
IH0KICAgICAgICAgdW5zaWduZWQgY2hhciBmdW5jdGlvbkxlbmd0aCgpIGNvbnN0IHsgQVNTRVJU
KG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKTsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXI+KG1fdS5mdW5jdGlvbi5sZW5ndGgpOyB9CiAKLSAgICAgICAgR2V0RnVuY3Rpb24gcHJvcGVy
dHlHZXR0ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKSk7IHJl
dHVybiBtX3UucHJvcGVydHkuZ2V0OyB9Ci0gICAgICAgIFB1dEZ1bmN0aW9uIHByb3BlcnR5UHV0
dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBGdW5jdGlvbikpOyByZXR1cm4g
bV91LnByb3BlcnR5LnB1dDsgfQorICAgICAgICBHZXRGdW5jdGlvbiBwcm9wZXJ0eUdldHRlcigp
IGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1dGVzICYgQnVpbHRpbk9yRnVuY3Rpb24pKTsgcmV0
dXJuIG1fdS5wcm9wZXJ0eS5nZXQ7IH0KKyAgICAgICAgUHV0RnVuY3Rpb24gcHJvcGVydHlQdXR0
ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEJ1aWx0aW5PckZ1bmN0aW9uKSk7
IHJldHVybiBtX3UucHJvcGVydHkucHV0OyB9CiAKICAgICAgICAgaW50cHRyX3QgbGV4ZXJWYWx1
ZSgpIGNvbnN0IHsgQVNTRVJUKCFtX2F0dHJpYnV0ZXMpOyByZXR1cm4gbV91LmxleGVyLnZhbHVl
OyB9CiAKQEAgLTk0LDYgKzk2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAg
IGludHB0cl90IGxlbmd0aDsgLy8gbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgZnVuY3Rpb24KICAg
ICAgICAgICAgIH0gZnVuY3Rpb247CiAgICAgICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAg
ICAgIEJ1aWx0aW5HZW5lcmF0b3IgZ2VuZXJhdG9yVmFsdWU7CisgICAgICAgICAgICAgICAgaW50
cHRyX3QgdW51c2VkOworICAgICAgICAgICAgfSBidWlsdGluR2VuZXJhdG9yOworICAgICAgICAg
ICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICBHZXRGdW5jdGlvbiBnZXQ7CiAgICAgICAgICAg
ICAgICAgUHV0RnVuY3Rpb24gcHV0OwogICAgICAgICAgICAgfSBwcm9wZXJ0eTsKQEAgLTIwOSw3
ICsyMTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBBTFdBWVNf
SU5MSU5FIGNvbnN0IEhhc2hFbnRyeSogZW50cnkoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkg
Y29uc3QKICAgICAgICAgewotICAgICAgICAgICAgU3RyaW5nSW1wbCogaW1wbCA9IHByb3BlcnR5
TmFtZS5wdWJsaWNOYW1lKCk7CisgICAgICAgICAgICBTdHJpbmdJbXBsKiBpbXBsID0gcHJvcGVy
dHlOYW1lLnVpZCgpOwogICAgICAgICAgICAgaWYgKCFpbXBsKQogICAgICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICAKQEAgLTI0OSw3ICsyNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgaWYgKCFlbnRyeSkgLy8gbm90IGZvdW5kLCBmb3J3YXJkIHRvIHBhcmVudAogICAgICAg
ICAgICAgcmV0dXJuIFBhcmVudEltcDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmosIGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKLSAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkg
JiBGdW5jdGlvbikKKyAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JG
dW5jdGlvbikKICAgICAgICAgICAgIHJldHVybiBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChleGVj
LCBlbnRyeSwgdGhpc09iaiwgcHJvcGVydHlOYW1lLCBzbG90KTsKIAogICAgICAgICBzbG90LnNl
dENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqLCBlbnRyeS0+YXR0cmlidXRlcygpLCBlbnRyeS0+cHJv
cGVydHlHZXR0ZXIoKSk7CkBAIC0yODYsNyArMjkyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGlmICghZW50cnkpIC8vIG5vdCBmb3VuZCwgZm9yd2FyZCB0byBwYXJlbnQKICAgICAgICAg
ICAgIHJldHVybiBQYXJlbnRJbXA6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogCi0gICAgICAgIEFTU0VSVCghKGVudHJ5LT5hdHRyaWJ1dGVz
KCkgJiBGdW5jdGlvbikpOworICAgICAgICBBU1NFUlQoIShlbnRyeS0+YXR0cmlidXRlcygpICYg
QnVpbHRpbk9yRnVuY3Rpb24pKTsKIAogICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0
aGlzT2JqLCBlbnRyeS0+YXR0cmlidXRlcygpLCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjk1LDcgKzMwMSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIGlubGluZSB2b2lkIHB1dEVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5
KiBlbnRyeSwgSlNPYmplY3QqIGJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKICAgICB7CiAgICAgICAgIC8vIElmIHRo
aXMgaXMgYSBmdW5jdGlvbiBwdXQgaXQgYXMgYW4gb3ZlcnJpZGUgcHJvcGVydHkuCi0gICAgICAg
IGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pIHsKKyAgICAgICAgaWYgKGVudHJ5
LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikgewogICAgICAgICAgICAgaWYgKEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHNsb3QudGhpc1Zh
bHVlKCkpKQogICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgp
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKICAgICAgICAgfSBlbHNlIGlmICghKGVudHJ5LT5hdHRy
aWJ1dGVzKCkgJiBSZWFkT25seSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZDVlNzI4YzJjZDEw
MjBhNDdlNGFkY2Q2NDljZDFmZmZhNWNkNmE4My4uZGNhMmZkOGQxZjZhYzIzYjhmZjgxN2NiYjE4
ZmFhZTdiY2Q1OTcwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTM4LDYgKzM4LDIwIEBAIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3I6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAordm9pZCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0sIG5hbWUpOworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsK
KyAgICAKKyAgICBOYXRpdmVFcnJvclByb3RvdHlwZSogcHJvdG90eXBlID0gTmF0aXZlRXJyb3JQ
cm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5h
bWUsIHRoaXMpOworICAgIAorICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoLCBqc051bWJlcigxKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOyAvLyBF
Q01BIDE1LjExLjcuNQorICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90
eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBt
X2Vycm9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0
dXJlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSkpOworICAgIEFTU0VSVChtX2Vycm9yU3Ry
dWN0dXJlKTsKKyAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZS0+aXNPYmplY3QoKSk7Cit9CisK
IHZvaWQgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcio+KGNlbGwpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ci5oCmluZGV4IDc0MGQzZjkzMzI5MmZkMmFjY2I0Yjk5MDM0NDMxMmI5MzE5YWUxMTAuLjQzOGEz
YWZiOWJiMGY2NDEyYzk3OTMyMjMwYzg4NzEwOTYxZjU0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKQEAgLTUx
LDE5ICs1MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdHJ1Y3R1cmUqIGVycm9yU3Ry
dWN0dXJlKCkgeyByZXR1cm4gbV9lcnJvclN0cnVjdHVyZS5nZXQoKTsgfQogCiAgICAgcHJvdGVj
dGVkOgotICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKLSAgICAgICAgewotICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0s
IG5hbWUpOwotICAgICAgICAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwotCi0gICAgICAg
ICAgICBOYXRpdmVFcnJvclByb3RvdHlwZSogcHJvdG90eXBlID0gTmF0aXZlRXJyb3JQcm90b3R5
cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5hbWUsIHRo
aXMpOwotCi0gICAgICAgICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0
aCwganNOdW1iZXIoMSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsgLy8gRUNN
QSAxNS4xMS43LjUKLSAgICAgICAgICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsK
LSAgICAgICAgICAgIG1fZXJyb3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBFcnJvckluc3RhbmNl
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlKSk7Ci0gICAgICAg
ICAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZSk7Ci0gICAgICAgICAgICBBU1NFUlQobV9lcnJv
clN0cnVjdHVyZS0+aXNPYmplY3QoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1
cmUsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCmluZGV4IGQ5MzhmYTMxNjQ1YWYyNmI3NTg1MTRkYjZi
MjQ3OGYxODNlOWVlZTEuLmNmZTljNGQzMmJhNzY4Yzc0ZTRmZmJiMTkxMzUyNzlkZWJmMTE3NjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCkBAIC00
Miw2ICs0Miw4IEBAIGVudW0gQXR0cmlidXRlIHsKICAgICBGdW5jdGlvbiAgICAgPSAxIDw8IDQs
ICAvLyBwcm9wZXJ0eSBpcyBhIGZ1bmN0aW9uIC0gb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFi
bGVzCiAgICAgQWNjZXNzb3IgICAgID0gMSA8PCA1LCAgLy8gcHJvcGVydHkgaXMgYSBnZXR0ZXIv
c2V0dGVyCiAgICAgQ3VzdG9tQWNjZXNzb3IgPSAxIDw8IDYsCisgICAgQnVpbHRpbiAgICAgICAg
ID0gMSA8PCA3LCAvLyBwcm9wZXJ0eSBpcyBhIGJ1aWx0aW4gZnVuY3Rpb24gLSBvbmx5IHVzZWQg
Ynkgc3RhdGljIGhhc2h0YWJsZXMKKyAgICBCdWlsdGluT3JGdW5jdGlvbiA9IEJ1aWx0aW4gfCBG
dW5jdGlvbiwgLy8gaGVscGVyIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogfTsKIAog
Y2xhc3MgUHJvcGVydHlTbG90IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAppbmRleCBiYzUxNmIwNmQ2NjUxZjBlNjgyYTIwMTdi
ZGY4YjAzYmFiZWQ2ZWEyLi4yYzI0MzRiODdkMDRmNzQ5Y2IxMmU2MDJhYjU0Nzg0OTQ2YTkxZjFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3Ry
dWN0b3IuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiUmVnRXhwQ29uc3RydWN0b3Iu
aCIKIAogI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlJlZ0V4cE1hdGNoZXNBcnJheS5oIgog
I2luY2x1ZGUgIlJlZ0V4cFByb3RvdHlwZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKaW5kZXggODlkN2FjMWI4Y2JmMWRiMGUxMjZm
MWZjNzk2ZGZkNWZjODRiMmU1OS4uOWRkYTBiYThkZTE0MTJlYWY0ZDI5MWRjZjBjNmIzOTY1N2Zi
Njc3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJv
dG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90
b3R5cGUuY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAiQXJyYXlQcm90b3R5cGUuaCIK
ICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKLSNpbmNsdWRlICJKU0NK
U1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCmlu
ZGV4IGIyMDM4ODhkM2MxNmNkYTNjMDAzNTA2MjA4YWUwODY5NWRjNWRhYWEuLmQwMjY2YTU5ZWYz
ZjU1YWEzNjk0ZjVmNzQxOGNmNzhlMGFlMGQ4YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNs
dWRlICJKU1NldC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk1h
cERhdGEuaCIKICNpbmNsdWRlICJTZXRQcm90b3R5cGUuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKaW5kZXggNDQwYTYwOTQyMTkzMzgwMzFl
NTkyN2FmNDZiMjg5ZGJjZmI1YTcyOC4uODBlN2VhYThjNDkxY2I2ZDU0YTgzMjRjZTY0N2E2Y2Ri
N2U4ODc4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmpl
Y3QuY3BwCkBAIC0yMiw3ICsyMiw5IEBACiAjaW5jbHVkZSAiU3RyaW5nT2JqZWN0LmgiCiAKICNp
bmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNs
dWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggMDQyOTFmN2U4
ZGQyNGU4YWIzM2Q3NWFmMWRhNDU2OGYyYmM5OWU2OC4uMWVjYWI4NWMwYmRiMjg2OTg5NDU3N2E3
NDEyNTRlMzY0NDE0OWQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCkBAIC0yNywxMiArMjcsMTggQEAKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKIAog
I2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAj
aW5jbHVkZSAiRHVtcENvbnRleHQuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisj
aW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCisjaW5jbHVk
ZSAiUHJvcGVydHlNYXBIYXNoVGFibGUuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5o
IgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNo
YWluLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVy
ZVJhcmVEYXRhSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKaW5kZXggNTJjY2Y0MjNhMTA0M2UxMDc5ZjJkOGIxODk0MjE5ODkwZTcxZjJiYy4u
MDIwNjk1ZmFjODNlZDRlNTE4NWI3MGU2OTY5OTYzYTJkZTlhMzY3MSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkFyZ0xpc3Qu
aCIKICNpbmNsdWRlICJBcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5oIgogI2luY2x1ZGUgIkFy
cmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5oIgorI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRh
Ymxlcy5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZUlubGluZXMuaCIKICNpbmNsdWRlICJDb2RlQmxv
Y2suaCIKICNpbmNsdWRlICJDb2RlQ2FjaGUuaCIKQEAgLTU1LDcgKzU2LDkgQEAKICNpbmNsdWRl
ICJKU0FQSVZhbHVlV3JhcHBlci5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2luY2x1
ZGUgIkpTQXJyYXkuaCIKLSNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNG
dW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgog
I2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCkBAIC02OCwxMyAr
NzEsMTYgQEAKICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJNYXBEYXRhLmgiCiAjaW5j
bHVkZSAiTm9kZXMuaCIKKyNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRlICJQYXJzZXJBcmVu
YS5oIgorI2luY2x1ZGUgIlByb3BlcnR5TWFwSGFzaFRhYmxlLmgiCiAjaW5jbHVkZSAiUmVnRXhw
Q2FjaGUuaCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRlICJTaW1wbGVUeXBl
ZEFycmF5Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNvdXJjZVByb3ZpZGVyQ2FjaGUuaCIKICNp
bmNsdWRlICJTdHJpY3RFdmFsQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMu
aCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVW5saW5rZWRDb2Rl
QmxvY2suaCIKICNpbmNsdWRlICJXZWFrTWFwRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNz
SUQuaD4KQEAgLTIyNiw2ICsyMzIsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUg
aGVhcFR5cGUpCiAgICAgLCBtX2luRGVmaW5lT3duUHJvcGVydHkoZmFsc2UpCiAgICAgLCBtX2Nv
ZGVDYWNoZShDb2RlQ2FjaGU6OmNyZWF0ZSgpKQogICAgICwgbV9lbmFibGVkUHJvZmlsZXIobnVs
bHB0cikKKyAgICAsIG1fYnVpbHRpbkV4ZWN1dGFibGVzKEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3Jl
YXRlKCp0aGlzKSkKIHsKICAgICBpbnRlcnByZXRlciA9IG5ldyBJbnRlcnByZXRlcigqdGhpcyk7
CiAgICAgU3RhY2tCb3VuZHMgc3RhY2sgPSB3dGZUaHJlYWREYXRhKCkuc3RhY2soKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDVhODQxMDVlYWZiN2FiYmE1ZmE0MzFlZWVkZDU1
ZDdhODlmNTVjZTIuLjY5NThhYzM5M2IxYWVmYzBiZWZiZjZlNGViOGI2ODI1Y2Y3YzlhMGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUg
IlByaXZhdGVOYW1lLmgiCiAjaW5jbHVkZSAiUHJvdG90eXBlTWFwLmgiCiAjaW5jbHVkZSAiU21h
bGxTdHJpbmdzLmgiCisjaW5jbHVkZSAiU291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlN0cm9uZy5o
IgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgogI2luY2x1ZGUgIlR5cGVkQXJyYXlDb250
cm9sbGVyLmgiCkBAIC02OSw2ICs3MCw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzOworICAgIGNsYXNzIEJ1aWx0aW5FeGVjdXRhYmxl
czsKICAgICBjbGFzcyBDb2RlQmxvY2s7CiAgICAgY2xhc3MgQ29kZUNhY2hlOwogICAgIGNsYXNz
IENvbW1vbklkZW50aWZpZXJzOwpAQCAtNDk3LDYgKzQ5OSw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB2b2lkIHJlZ2lzdGVyV2F0Y2hwb2ludEZvckltcHVyZVByb3BlcnR5KGNvbnN0IElk
ZW50aWZpZXImLCBXYXRjaHBvaW50Kik7CiAgICAgICAgIC8vIEZJWE1FOiBVc2UgQXRvbWljU3Ry
aW5nIG9uY2UgaXQgZ290IG1lcmdlZCB3aXRoIElkZW50aWZpZXIuCiAgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgYWRkSW1wdXJlUHJvcGVydHkoY29uc3QgU3RyaW5nJik7CisgICAgICAg
IAorICAgICAgICBCdWlsdGluRXhlY3V0YWJsZXMqIGJ1aWx0aW5FeGVjdXRhYmxlcygpIHsgcmV0
dXJuIG1fYnVpbHRpbkV4ZWN1dGFibGVzLmdldCgpOyB9CiAKICAgICBwcml2YXRlOgogICAgICAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpAQCAtNTM3LDEwICs1NDEsOSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNWYWx1ZSBtX2V4Y2VwdGlvbjsKICAgICAgICAg
Ym9vbCBtX2luRGVmaW5lT3duUHJvcGVydHk7CiAgICAgICAgIE93blB0cjxDb2RlQ2FjaGU+IG1f
Y29kZUNhY2hlOwotICAgICAgICBSZWZDb3VudGVkQXJyYXk8U3RhY2tGcmFtZT4gbV9leGNlcHRp
b25TdGFjazsKLQogICAgICAgICBMZWdhY3lQcm9maWxlciogbV9lbmFibGVkUHJvZmlsZXI7Ci0K
KyAgICAgICAgT3duUHRyPEJ1aWx0aW5FeGVjdXRhYmxlcz4gbV9idWlsdGluRXhlY3V0YWJsZXM7
CisgICAgICAgIFJlZkNvdW50ZWRBcnJheTxTdGFja0ZyYW1lPiBtX2V4Y2VwdGlvblN0YWNrOwog
ICAgICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdhdGNocG9pbnRTZXQ+PiBtX2ltcHVyZVBy
b3BlcnR5V2F0Y2hwb2ludFNldHM7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzBmY2MzODRlOGVkZmMzNGIxNDA4M2I4NjVkMzczODIwZjQxNjVjNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNTdHJp
bmdJbmxpbmVzLmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0pTU3RyaW5n
SW5saW5lc19oCisjZGVmaW5lIFdlYkNvcmVfRldEX0pTU3RyaW5nSW5saW5lc19oCisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdJbmxpbmVzLmg+CisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVw
bGFjZW1lbnQuY3BwCmluZGV4IDJlZGRjZGJiOWYwMDZjYTc2MjY2NTBiNDIwMjc4NjI2YjkyNjE0
MTcuLjNjNGUwZDdiYmIzMWNhYjEyYjVlNmM5NzVjNzRkM2Y0ODRlOWNiMTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdp
blJlcGxhY2VtZW50LmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0FQSUNhc3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTU3RyaW5nSW5saW5lcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFueUN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFueUN1c3RvbS5jcHAKaW5kZXggNTY0
OWM4NWNhMDk1ODc3NDhhM2RhMDZjZGRkMGNhOTk5ZTUwYjhlNy4uM2Y0ZDhlZmFlYjU3ZjMzMDAz
ZTczYTdlNzg0MmU0MmM3M2NlNjQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNJREJBbnlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSURCQW55Q3VzdG9tLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIkpTSURCT2Jq
ZWN0U3RvcmUuaCIKICNpbmNsdWRlICJKU0lEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZ0lubGluZXMu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAppbmRleCA5ZWFlNzU2OWM3MDYwM2E0ZmVk
MGFmMTRjNGY4NzE4Y2RlNjRhNmUxLi5mNDlkZmU5MGI0ZTgyZDM5ZWRjYmY5YmEyOWYyYWU3OTlj
MGRkZjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFi
YXNlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFi
YXNlQ3VzdG9tLmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIklEQk9iamVjdFN0b3Jl
LmgiCiAjaW5jbHVkZSAiSlNJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJy
b3IuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nLmg+CisjaW5jbHVkZSA8cnVudGltZS9K
U1N0cmluZ0lubGluZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcAppbmRl
eCA3NGZkMzU0YjI4NjA3Y2Y3ODIyZjgwNTM0Nzk3MGY1ZDdhYzhjODMyLi41NDM0YjNiN2Q2YzU2
ZWNiMGEwM2EyNzk0YzY3MzZhOWFkZmI3MGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcApAQCAtMzYsNyArMzYsNyBA
QAogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSlNJREJJbmRleC5oIgog
I2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nLmg+
CisjaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZ0lubGluZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmls
dGVyQ29uZGl0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRl
ckNvbmRpdGlvbi5jcHAKaW5kZXggZDFiNDcyMTM1MWViMWIyYmY4Y2UwY2Q0NzNmZWUxNDQ5MTRj
NTNhYi4uZjFkYWE4YTEwNDZiMzNmYTNkMzVhNjZjNTU5ZWUwZmFmMmFkZTY0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uY3Bw
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiTm9kZUZpbHRlci5oIgogI2luY2x1ZGUgPHJ1
bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgorI2luY2x1ZGUgPHJ1
bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDlkMDY2ZjVlMWEwMDRmYmQ0ZDU3NDBlNDk3YzgyOGM5YmU4ZjkwZGEuLjkwOTJlMTcwOWQ2ZmYy
NmRhZTZmMjkyM2M3NTFjYjY4YWUzMzYwNWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxNC0w
MS0yOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgaXQg
cG9zc2libGUgdG8gaW1wbGVtZW50IEpTIGJ1aWx0aW5zIGluIEpTCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc4ODcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIHRoZSB0ZXN0IHJlc3VsdHMg
Zm9yIG5ldyBlcnJvciBtZXNzYWdlcyAobm93IHRoYXQgdGhleSdyZQorICAgICAgICBhY3R1YWxs
eSBoZWxwZnVsKSwgYW5kIGFkZGVkIGEganMtcmVncmVzcyB0ZXN0IHRvIHRyYWNrIHBlcmZvcm1h
bmNlLgorCisgICAgICAgICoganMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGpzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICoganMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBqcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZlcnku
anM6IEFkZGVkLgorICAgICAgICAodGVzdDEpOgorICAgICAgICAodGVzdDIpOgorICAgICAgICAo
dGVzdDMpOgorCiAyMDE0LTAxLTMwICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29t
PgogCiAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXBsdWdpbi1wcml2
YXRlLWJyb3dzaW5nLXRvZ2dsZWQuaHRtbCBpcyBmbGFreSBvbiBXSzIKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Fy
cmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dAppbmRleCA1NDFiOGMzNThmMDY4YTBjZWE4ODJjMTA1MTc1
MzI1MTE0Y2QzM2Y3Li5jY2EzNjNkY2U1OGZiYTk1YTU4Y2U0NmZjYjQ4YzM4YmY1OGFkZjU5IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0CkBAIC0zMCwxMiArMzAsMTIg
QEAgUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KGlzQmlnRW5vdWdoQW5kRXhjZXB0aW9u
KSB0aHJldyBleGNlcHRpb24gZXhjZXB0aW8KIFBBU1MgWzEyLCA1NCwgMTgsIDEzMCwgNDRdLmV2
ZXJ5KGlzQmlnRW5vdWdoQW5kRXhjZXB0aW9uKSB0aHJldyBleGNlcHRpb24gZXhjZXB0aW9uIGZy
b20gZnVuY3Rpb24uCiAKIDUuMCBXcm9uZyBUeXBlIGZvciBDYWxsYmFjayBUZXN0Ci1QQVNTIFsx
MiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoNSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlw
ZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSgnd3JvbmcnKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRd
LmV2ZXJ5KG5ldyBPYmplY3QoKSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJv
ci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShudWxsKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KHVu
ZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEy
LCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUg
ZXJyb3IuCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoNSkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5j
dGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSgnd3JvbmcnKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBh
IGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KG5ldyBPYmplY3QoKSkg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNr
IG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShudWxs
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJh
Y2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KHVu
ZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5
IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5l
dmVyeSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBj
YWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCiAKIDYuMCBFYXJseSBFeGl0ICgiU2hvcnQgQ2ly
Y3VpdGluZyIpCiBQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoaXNCaWdFbm91Z2hTaG9y
dENpcmN1aXQpIGlzIGZhbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vYXJyYXkt
cHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL2Fy
cmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAppbmRleCAyYzJhNjhjYjEwNmRh
MTBmMDg2YjIyYzViZjJiZjVjOGZlNzllMzNlLi41ZDllY2I3NWE4ZGE3OWJhNjU2MDVlN2ViOWNm
OGZjMjVmZTE4YWZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9kb20vYXJyYXktcHJvdG90
eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9hcnJh
eS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQKQEAgLTE1LDcgKzE1LDcgQEAgUEFT
UyBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh1bmRlZmluZWQsIDAsIDEpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IHVuZGUKIFBBU1MgQXJyYXkucHJvdG90eXBlLnNvcnQuY2FsbCh1bmRl
ZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2Jq
ZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUuc29ydC5jYWxsKHVuZGVmaW5lZCknKS4K
IFBBU1MgQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKHVuZGVmaW5lZCwgMCwgMSkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRp
bmcgJ0FycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbCh1bmRlZmluZWQsIDAsIDEpJykuCiBQQVNT
IEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmNhbGwodW5kZWZpbmVkLCB7fSkgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0Fy
cmF5LnByb3RvdHlwZS51bnNoaWZ0LmNhbGwodW5kZWZpbmVkLCB7fSknKS4KLVBBU1MgQXJyYXku
cHJvdG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZykgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5
LnByb3RvdHlwZS5ldmVyeS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpJykuCitQQVNTIEFycmF5
LnByb3RvdHlwZS5ldmVyeS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBu
b3QgYmUgdW5kZWZpbmVkLgogUEFTUyBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHVuZGVm
aW5lZCwgdG9TdHJpbmcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBu
b3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHVu
ZGVmaW5lZCwgdG9TdHJpbmcpJykuCiBQQVNTIEFycmF5LnByb3RvdHlwZS5zb21lLmNhbGwodW5k
ZWZpbmVkLCB0b1N0cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlz
IG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5zb21lLmNhbGwodW5k
ZWZpbmVkLCB0b1N0cmluZyknKS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbCh1
bmRlZmluZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3Qg
YW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKHVuZGVm
aW5lZCwgMCknKS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJv
dG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXkt
cHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMjkwYzBlZWZmOGRlNDIx
ODMzZDkyZDI3ZTk1MjQxOTE3NjA0Yjk2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTAgQEAKK0pTUmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkKKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlNWNjMTcx
YzQ4NzVhMzU4NWJmMTRlNTQxNWY1Y2QwZTU4MWQ1NDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sCkBAIC0wLDAgKzEs
MTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdy
ZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2FycmF5LXBy
b3RvdHlwZS1ldmVyeS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlZ3Jl
c3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuanMg
Yi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZl
cnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjk0YWExNjFjMGNlOThiMmFiMThhM2ExYTFmMGRmYWFjOWQ3ZDJl
MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3Rz
L2FycmF5LXByb3RvdHlwZS1ldmVyeS5qcwpAQCAtMCwwICsxLDI5IEBACit2YXIgcmVzdWx0ID0g
MDsKK2Z1bmN0aW9uIHRlc3QxKGEpIHsKKyAgICByZXN1bHQgPDwgMTsKKyAgICByZXN1bHQrKzsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KK2Z1bmN0aW9uIHRlc3QyKGEsYikgeworICAgIHJlc3VsdCBe
PSAzOworICAgIHJlc3VsdCAqPSAzOworICAgIHJldHVybiB0cnVlOworfQorZnVuY3Rpb24gdGVz
dDMoYSxiLGMpIHsKKyAgICByZXN1bHQgXj0gcmVzdWx0ID4+IDE7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3ZhciByZXN1bHQgPSAwOwordmFyIGFycmF5ID0gW10KK2ZvciAodmFyIGkgPSAwOyBp
IDwgMTAwMDAwOyArK2kpCisgICAgYXJyYXlbaV0gPSAxOworCitmb3IgKHZhciBpID0gMDsgaSA8
IDEwOyBpKyspIHsKKyAgICBhcnJheS5ldmVyeSh0ZXN0MSk7CisgICAgYXJyYXkuZXZlcnkodGVz
dDIpOworICAgIGFycmF5LmV2ZXJ5KHRlc3QzKTsKK30KKworaWYgKHJlc3VsdCAhPSAxNDI4ODEw
NDk2KQorICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKZGlmZiAtLWdp
dCBhL0dOVW1ha2VmaWxlLmFtIGIvR05VbWFrZWZpbGUuYW0KaW5kZXggNzNmYzQ5MjhjNGRkNDli
NTQ5ODY5YjUwNjc4YzZiZGU3NGY0NDc2MC4uMDhjOTExNTQyNjA1MDBkZTNmZjA0YjAyMGNlMGQ2
MGY5OGU4Y2ZlOCAxMDA2NDQKLS0tIGEvR05VbWFrZWZpbGUuYW0KKysrIGIvR05VbWFrZWZpbGUu
YW0KQEAgLTY4LDYgKzY4LDcgQEAgQUxMX01PRklMRVMgOj0KIGRvbV9iaW5kaW5nX2lkbHMgOj0K
IHd0Zl9zb3VyY2VzIDo9CiBqYXZhc2NyaXB0Y29yZV9oX2FwaSA6PQoramF2YXNjcmlwdGNvcmVf
YnVpbHRpbnNfanNfbm9zb3VyY2VzIDo9CiBqYXZhc2NyaXB0Y29yZV9jcHBmbGFnczo9CiBqYXZh
c2NyaXB0Y29yZV9jZmxhZ3MgOj0KIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgOj0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222824</attachid>
            <date>2014-01-31 10:28:21 -0800</date>
            <delta_ts>2014-01-31 11:05:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140131102804.patch</filename>
            <type>text/plain</type>
            <size>204639</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NjgxMzcxYWU2ZDBjYWZlNDJmNWNmN2E1NWI3MjRjMTc5ODExYjBhLi44OWQ0ZmRmOGYwMzA2Y2M5
ZjFiNmM5NDVlZWY3ZDRlMTczOGFhOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
VGhlIHJlc3VsdCBvZiB0aGlzIHJlZmFjdG9yaW5nCisgICAgICAgIGlzIHRoYXQgQ29tbW9uSWRl
bnRpZmllcnMsIGFuZCBhIGZldyBvdGhlciBtaXNjZWxsYW5lb3VzIGhlYWRlcnMgbm93CisgICAg
ICAgIG5lZWQgdG8gYmUgaW5jbHVkZWQgZGlyZWN0bHkgYXMgdGhleSB3ZXJlIGZvcm1lcmx5IGNh
cHR1cmVkIHRocm91Z2ggb3RoZXIKKyAgICAgICAgcGF0aHMuCisKKyAgICAgICAgSW4gYWRkaXRp
b24gdGhpcyBhZGRzIGEgZmxhZyB0byB0aGUgTG9va3VwIHRhYmxlJ3MgaGFzaGVudHJ5IHRvIGlu
ZGljYXRlCisgICAgICAgIHRoYXQgYSBzdGF0aWMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgYmFja2Vk
IGJ5IEpTLiBUaGVyZSBpcyB0aGVuIGEgbG90IG9mCisgICAgICAgIGxvZ2ljIHRvIHRocmVhZCB0
aGUgc3BlY2lhbCBuYXR1cmUgb2YgdGhlIGZ1bmN0b24gdG8gd2hlcmUgaXQgbWF0dGVycy4KKyAg
ICAgICAgVGhpcyBhbGxvd3MgdG9TdHJpbmcoKSwgLmNhbGxlciwgZXRjIHRvIG1pbWljIHRoZSBi
ZWhhdmlvdXIgb2YgYSBob3N0CisgICAgICAgIGZ1bmN0aW9uLgorCisgICAgICAgIE5vdGVzIG9u
IHdyaXRpbmcgYnVpbHRpbnM6CisgICAgICAgICAtIEVhY2ggZnVuY3Rpb24gaXMgY29tcGlsZWQg
aW5kZXBlbmRlbnRseSBvZiB0aGUgb3RoZXJzLCBhbmQgdGhvc2UKKyAgICAgICAgICAgaW1wbGVt
ZW50YXRpb25zIGNhbm5vdCBjdXJyZW50bHkgY2FwdHVyZSBhbGwgZ2xvYmFsIHByb3BlcnRpZXMg
KGFzCisgICAgICAgICAgIHRoYXQgY291bGQgYmUgcG90ZW50aWFsbHkgdW5zYWZlKS4gSWYgYSBm
dW5jdGlvbiBkb2VzIGNhcHR1cmUgYQorICAgICAgICAgICBnbG9iYWwgd2Ugd2lsbCBkZWxpYmVy
YXRlbHkgY3Jhc2guCisgICAgICAgICAtIEZvciB0aG9zZSAiZ2xvYmFsIiBwcm9wZXJ0aWVzIHRo
YXQgd2UgZG8gd2FudCBhY2Nlc3MgdG8sIHdlIHVzZQorICAgICAgICAgICB0aGUgQCBwcmVmaXgs
IGUuZy4gT2JqZWN0KHRoaXMpIGJlY29tZXMgQE9iamVjdCh0aGlzKS4gVGhlIEAgaWRlbnRpZmll
cnMKKyAgICAgICAgICAgYXJlIHByaXZhdGUgbmFtZXMsIGFuZCBiZWhhdmUganVzdCBsaWtlIHJl
Z3VsYXIgcHJvcGVydGllcywgb25seQorICAgICAgICAgICB3aXRob3V0IHRoZSByaXNrIG9mIGFk
dWx0ZXJhdGlvbi4gQWdhaW4sIGluIHRoZSBAT2JqZWN0IGNhc2UsIHdlCisgICAgICAgICAgIGV4
cGxpY2l0bHkgZHVwbGljYXRlIHRoZSBPYmplY3RDb25zdHJ1Y3RvciByZWZlcmVuY2Ugb24gdGhl
IEdsb2JhbE9iamVjdAorICAgICAgICAgICBzbyB0aGF0IHdlIGhhdmUgZ3VhcmFudGVlZCBhY2Nl
c3MgdG8gdGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhlCisgICAgICAgICAgIGNvbnN0cnVjdG9y
LgorICAgICAgICAgLSBjYWxsLCBhcHBseSwgZXZhbCwgYW5kIEZ1bmN0aW9uIGFyZSBhbGwgcmVq
ZWN0ZWQgaWRlbnRpZmllcnMsIGFnYWluCisgICAgICAgICAgIHRvIHByZXZlbnQgYW55dGhpbmcg
ZnJvbSBhY2NpZGVudGFsbHkgdXNpbmcgYW4gYWR1bHRlcmF0ZWQgb2JqZWN0LgorICAgICAgICAg
ICBJbnN0ZWFkIEBjYWxsIGFuZCBAYXBwbHkgYXJlIGF2YWlsYWJsZSwgYW5kIGhhcHBpbHkgdGhl
eSBjb21wbGV0ZWx5CisgICAgICAgICAgIGRyb3AgdGhlIG5lcV9wdHIgaW5zdHJ1Y3Rpb24gYXMg
dGhleSdyZSBkZWZpbmVkIGFzIGFsd2F5cyBiZWluZyB0aGUKKyAgICAgICAgICAgb3JpZ2luYWwg
Y2FsbC9hcHBseSBmdW5jdGlvbnMuCisKKyAgICAgICAgVGhlc2UgcmVzdHJpY3Rpb25zIGFyZSBq
dXN0IGludGVuZGVkIHRvIG1ha2UgaXQgaGFyZGVyIHRvIGFjY2lkZW50YWxseQorICAgICAgICBt
YWtlIGNoYW5nZXMgdGhhdCBhcmUgaW5jb3JyZWN0IChmb3IgaW5zdGFuY2UgY2FsbGluZyB3aGF0
ZXZlciBoYXMgYmVlbgorICAgICAgICBhc3NpZ25lZCB0byBnbG9iYWwuT2JqZWN0LCBpbnN0ZWFk
IG9mIHRoZSBvcmlnaW5hbCBjb25zdHJ1Y3RvciBmdW5jdGlvbikuCisgICAgICAgIEhvd2V2ZXIs
IG1ha2luZyBhIG1pc3Rha2UgbGlrZSB0aGlzIHNob3VsZCByZXN1bHQgaW4gYSBwdXJlbHkgc2Vt
YW50aWMKKyAgICAgICAgZXJyb3IgYXMgZnVuZGFtZW50YWxseSB0aGVzZSBmdW5jdGlvbnMgYXJl
IHRyZWF0ZWQgYXMgdGhvdWdoIHRoZXkgd2VyZQorICAgICAgICByZWd1bGFyIEpTIGNvZGUgaW4g
dGhlIGhvc3QgZ2xvYmFsLCBhbmQgaGF2ZSBubyBtb3JlIHByaXZpbGVnZXMgdGhhbgorICAgICAg
ICBhbnkgb3RoZXIgSlMuCisKKyAgICAgICAgVGhlIGluaXRpYWwgcHJvb2Ygb2YgY29uY2VwdCBp
cyBBcnJheS5wcm90b3R5cGUuZXZlcnksIHRoaXMgc2hvd3MgYSA2NSUKKyAgICAgICAgcGVyZm9y
bWFuY2UgaW1wcm92ZW1lbnQsIGFuZCB0aGF0IGltcHJvdmVtZW50IGlzIHNpZ25pZmljYW50bHkg
aHVydCBieQorICAgICAgICBvdXIgcG9vciBvcHRpbWlzYXRpb24gb2Ygb3BfaW4uCisKKyAgICAg
ICAgQXMgdGhpcyBpcyBzdWNoIGEgbGltaXRlZCBmdW5jdGlvbiwgd2UgaGF2ZSBub3QgeWV0IGV4
cG9ydGVkIGFsbCBzeW1ib2xzCisgICAgICAgIHRoYXQgd2UgY291bGQgcG9zc2libHkgbmVlZCwg
YnV0IGFzIHdlIGltcGxlbWVudCBtb3JlLCB0aGUgbGlrZWxpaG9vZAorICAgICAgICBvZiBlbmNv
dW50ZXJpbmcgbWlzc2luZyBmZWF0dXJlcyB3aWxsIHJlZHVjZS4KKworICAgICAgICBUaGlzIGRp
ZCByZXF1aXJlIGJyZWFraW5nIG91dCBhIEpTU3RyaW5nSW5saW5lcyBoZWFkZXIsIGFuZCByZXF1
aXJlZAorICAgICAgICBmaXhpbmcgYSBmZXcgb2JqZWN0cyB0aGF0IHdlcmUgdHJ5aW5nIHRvIHVz
aW5nIFByb3BlcnR5TmFtZTo6cHVibGljTmFtZQorICAgICAgICByYXRoZXIgdGhhbiBQcm9wZXJ0
eU5hbWU6OnVpZC4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6
CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQpOgorICAg
ICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZSk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGljRnVuY3Rpb25HZXR0
ZXIpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGxiYWNrR2V0
dGVyKToKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy5tYWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
YnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzOgorICAgICAgICAoZXZlcnkpOgorICAgICAgICAq
IGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpC
dWlsdGluRXhlY3V0YWJsZXM6OkJ1aWx0aW5FeGVjdXRhYmxlcyk6CisgICAgICAgIChKU0M6OkJ1
aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ1
aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0
YWJsZXM6OmNyZWF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdX
YXRjaHBvaW50LmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAoSlND
OjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUp
OgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9y
KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToK
KyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpF
eGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OnRvU3RyaWN0bmVzcyk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjppc0J1aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChKU0M6OlVubGlua2Vk
Q29kZUJsb2NrOjppc0J1aWx0aW5GdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzQnVpbHRpbkZ1bmN0aW9u
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Om1ha2VGdW5jdGlvbik6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkNhbGxG
dW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpBcHBseUZ1
bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogY3JlYXRlX2hhc2hf
dGFibGU6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGdlbmVy
YXRlLWpzLWJ1aWx0aW5zOiBBZGRlZC4KKyAgICAgICAgKGdldENvcHlyaWdodCk6CisgICAgICAg
IChnZXRGdW5jdGlvbnMpOgorICAgICAgICAoZ2VuZXJhdGVDb2RlKToKKyAgICAgICAgKG1hbmds
ZU5hbWUpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKElkZW50aWZp
ZXIpOgorICAgICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAgICAgICAoU291cmNlQ29kZSk6Cisg
ICAgICAgIChVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChWTSk6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAqIGludGVycHJldGVy
L1Byb3RvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgICog
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAqIGpzYy5jcHA6CisgICAg
ICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAqIHBhcnNlci9BU1RCdWls
ZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKToK
KyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6TGV4
ZXIpOgorICAgICAgICAoSlNDOjppc1NhZmVJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4
ZXI8TENoYXI+OjpwYXJzZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpMZXhlcjxVQ2hhcj46
OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpsZXgpOgorICAgICAg
ICAqIHBhcnNlci9MZXhlci5oOgorICAgICAgICAoSlNDOjppc1NhZmVJZGVudGlmaWVyKToKKyAg
ICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIpOgorICAgICAgICAqIHBh
cnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpzZXRDbG9zZWRWYXJp
YWJsZXMpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpTY29wZU5v
ZGU6OmNhcHR1cmVkVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6U2NvcGVOb2RlOjpzZXRDbG9z
ZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQcm9ncmFtTm9kZTo6Y2xvc2VkVmFyaWFibGVz
KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OlBhcnNlcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUlubmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmRpZEZpbmlzaFBhcnNp
bmcpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cHJpbnRVbmV4cGVjdGVkVG9r
ZW5UZXh0KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
OjpnZXRVc2VkVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVz
Lmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlclRva2Vucy5oOgorICAgICAgICAqIHJ1bnRpbWUv
QXJnTGlzdC5jcHA6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvQXJndW1lbnRzLmg6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHNJdGVyYXRv
ckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0
RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Q29t
bW9uSWRlbnRpZmllcnMpOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Z2V0UHJp
dmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Z2V0UHVibGljTmFt
ZSk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQ
YXRoc0V4Y2VwdGlvbnMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5j
cHA6CisgICAgICAgIChKU0M6OmNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6
ZXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6ZXhlY3V0
YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1
bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6ZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9K
U0FjdGl2YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxl
R2V0KToKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dCk6CisgICAg
ICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyk6Cisg
ICAgICAgICogcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcDoKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlND
ZWxsSW5saW5lcy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAg
IChKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZSk6CisgICAgICAgIChKU0M6OkpTRnVu
Y3Rpb246OnNvdXJjZUNvZGUpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjppc0hvc3RPckJ1
aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzQnVpbHRpbkZ1bmN0
aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKToKKyAgICAgICAg
KEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVy
dHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmg6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
OjpyZXNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjpvYmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpzeW1ib2xUYWJsZUhhc1Byb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGVsZXRlKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5j
cHA6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAg
ICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90
KToKKyAgICAgICAgKEpTQzo6aW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKToKKyAgICAg
ICAgKEpTQzo6SlNWYWx1ZTo6dG9XVEZTdHJpbmdJbmxpbmUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNTeW1ib2xUYWJsZU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTU3ltYm9sVGFibGVPYmpl
Y3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgICAgIERvbid0IHJlcG9y
dCBwcml2YXRlIG5hbWVzLgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5o
OgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZUdldCk6CisgICAgICAgIChKU0M6OnN5bWJvbFRh
YmxlUHV0KToKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyk6Cisg
ICAgICAgICogcnVudGltZS9Mb29rdXAuY3BwOgorICAgICAgICAoSlNDOjpzZXRVcFN0YXRpY0Z1
bmN0aW9uU2xvdCk6CisgICAgICAgICogcnVudGltZS9Mb29rdXAuaDoKKyAgICAgICAgKEpTQzo6
SGFzaEVudHJ5OjpidWlsdGluR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpw
cm9wZXJ0eUdldHRlcik6CisgICAgICAgIChKU0M6Okhhc2hFbnRyeTo6cHJvcGVydHlQdXR0ZXIp
OgorICAgICAgICAoSlNDOjpIYXNoVGFibGU6OmVudHJ5KToKKyAgICAgICAgKEpTQzo6Z2V0U3Rh
dGljUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6Z2V0U3RhdGljVmFsdWVTbG90KToKKyAg
ICAgICAgKEpTQzo6cHV0RW50cnkpOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaDoK
KyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVn
RXhwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5jcHA6CisgICAgICAgICogcnVudGltZS9T
dHJ1Y3R1cmUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpW
TTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6Vk06OmJ1aWx0
aW5FeGVjdXRhYmxlcyk6CisKIDIwMTQtMDEtMjkgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxl
LmNvbT4KIAogICAgICAgICBGVEwgc2hvdWxkIHN1cHBvcnQgR2V0QnlJZChVbnR5cGVkOikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCAxYWQ2OTc0ODhiMGM0YjhiNGNmYWUyOTEzNTQyNTliNmRhY2ZkYzQ1Li5mM2Mz
ZDcxNzFkMDU0NDgwZWM2MDU0MGMwZDUyNTk5NmVlY2RiOWEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBKUwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRpbmcg
Zm9yIHRoZSBuZXdseSByZXF1aXJlZCBoZWFkZXJzLgorCisgICAgICAgIFRlc3Q6IGpzL3JlZ3Jl
c3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwKKworICAgICAgICAqIEZvcndhcmRpbmdIZWFk
ZXJzL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMv
cGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNJREJBbnlDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCRGF0
YWJhc2VDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVD
dXN0b20uY3BwOgorCiAyMDE0LTAxLTMwICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgV2ViR0wgbG9hZCBwb2xpY3kgc2hvdWxkIGJlIHF1ZXJpZWQgZm9yIHRo
ZSB0b3AgbGV2ZWwgZG9jdW1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCmluZGV4IDViZTA1M2YxZTA4NmI0M2U2ODZj
MzY3NGRhZTdjNTE2MDVhMjg2ZTcuLjBlY2VkNTFmM2UyZDViNjIxZGFkZjA1NzQ5ZjVlNzQ2NmEw
NmY1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09i
amVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdEZ1bmN0aW9ucy5oCkBAIC0xMzYsNyArMTM2LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGUKICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CiAgICAg
UmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0Ns
YXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNz
ID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIC8vIG9wdGlvbmFsIG9wdGlt
aXphdGlvbiB0byBieXBhc3MgZ2V0UHJvcGVydHkgaW4gY2FzZXMgd2hlbiB3ZSBvbmx5IG5lZWQg
dG8ga25vdyBpZiB0aGUgcHJvcGVydHkgZXhpc3RzCiAgICAgICAgICAgICBpZiAoSlNPYmplY3RI
YXNQcm9wZXJ0eUNhbGxiYWNrIGhhc1Byb3BlcnR5ID0ganNDbGFzcy0+aGFzUHJvcGVydHkpIHsK
QEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcAogICAgIFJlZlB0cjxP
cGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwogICAgIEpTVmFsdWVSZWYgdmFsdWVSZWYg
PSB0b1JlZihleGVjLCB2YWx1ZSk7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBw
cm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBw
cm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0
aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50
Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdFNldFByb3BlcnR5Q2FsbGJhY2sgc2V0
UHJvcGVydHkgPSBqc0NsYXNzLT5zZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIGlmICgh
cHJvcGVydHlOYW1lUmVmKQpAQCAtMzQzLDcgKzM0Myw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvCiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmplY3QpOwogICAgIFJl
ZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwogICAgIAotICAgIGlmIChTdHJp
bmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJp
bmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFz
c1JlZiBqc0NsYXNzID0gdGhpc09iamVjdC0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9
IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgICAgICBpZiAoSlNPYmplY3REZWxldGVQ
cm9wZXJ0eUNhbGxiYWNrIGRlbGV0ZVByb3BlcnR5ID0ganNDbGFzcy0+ZGVsZXRlUHJvcGVydHkp
IHsKICAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5TmFtZVJlZikKQEAgLTU2NCw3ICs1NjQs
NyBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0U3RhdGljVmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcAogewogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYg
PSB0b1JlZih0aGlzKTsKICAgICAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5
TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5
TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IGNsYXNzUmVm
KCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAg
ICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZSogc3RhdGljVmFsdWVzID0ganND
bGFzcy0+c3RhdGljVmFsdWVzKGV4ZWMpKSB7CiAgICAgICAgICAgICAgICAgaWYgKFN0YXRpY1Zh
bHVlRW50cnkqIGVudHJ5ID0gc3RhdGljVmFsdWVzLT5nZXQobmFtZSkpIHsKQEAgLTYwMCw3ICs2
MDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1
bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRQogICAgIGlmIChQYXJlbnQ6OmdldE93blBy
b3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QyKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90Mi5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUp
KTsKIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUo
KSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CiAg
ICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iai0+Y2xhc3NSZWYoKTsganND
bGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgICAgICBpZiAo
T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlKiBzdGF0aWNGdW5jdGlvbnMgPSBqc0Ns
YXNzLT5zdGF0aWNGdW5jdGlvbnMoZXhlYykpIHsKICAgICAgICAgICAgICAgICBpZiAoU3RhdGlj
RnVuY3Rpb25FbnRyeSogZW50cnkgPSBzdGF0aWNGdW5jdGlvbnMtPmdldChuYW1lKSkgewpAQCAt
NjI2LDcgKzYyNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6
Y2FsbGJhY2tHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkCiAgICAgSlNPYmplY3RSZWYg
dGhpc1JlZiA9IHRvUmVmKHRoaXNPYmopOwogICAgIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJv
cGVydHlOYW1lUmVmOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlO
YW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlO
YW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iai0+
Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAg
ICAgICAgICAgICBpZiAoSlNPYmplY3RHZXRQcm9wZXJ0eUNhbGxiYWNrIGdldFByb3BlcnR5ID0g
anNDbGFzcy0+Z2V0UHJvcGVydHkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5TmFt
ZVJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAyN2JjNGMxN2YzZGZl
ZWI2MWQyNTIzMjNmZDg3OGM0NDc4MGY3NGM1Li4zY2E4Mzg2NDljOTE0MDczOWQ5NDkyMmFlYzFl
ZDk5NWYwZmE3N2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01LDYg
KzUsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMiCiAgICAgIiR7SkFWQVNDUklQVENP
UkVfRElSfS9hc3NlbWJsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9iaW5kaW5ncyIK
KyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zIgogICAgICIke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vYnl0ZWNvZGUiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9ieXRlY29tcGls
ZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9kZmciCkBAIC01Miw2ICs1Myw4IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcAog
ICAgIGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAogCisgICAgYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcAorCiAgICAgYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAKICAg
ICBieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Js
b2NrLmNwcApAQCAtNzA3LDcgKzcxMCw3IEBAIHNldChIQVNIX0xVVF9HRU5FUkFUT1IgJHtDTUFL
RV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2NyZWF0ZV9oYXNoX3RhYmxlKQogbWFjcm8oR0VORVJBVEVf
SEFTSF9MVVQgX2lucHV0IF9vdXRwdXQpCiAgICAgYWRkX2N1c3RvbV9jb21tYW5kKAogICAgICAg
ICBPVVRQVVQgJHtfb3V0cHV0fQotICAgICAgICBERVBFTkRTICR7SEFTSF9MVVRfR0VORVJBVE9S
fSAke19pbnB1dH0KKyAgICAgICAgREVQRU5EUyAke0hBU0hfTFVUX0dFTkVSQVRPUn0gJHtfaW5w
dXR9ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAog
ICAgICAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke0hBU0hfTFVUX0dFTkVSQVRPUn0g
JHtfaW5wdXR9IC1pID4gJHtfb3V0cHV0fQogICAgICAgICBWRVJCQVRJTSkKICAgICBsaXN0KEFQ
UEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTICR7X291dHB1dH0pCkBAIC04MTUsMTYgKzgxOCwy
NyBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxF
fSAke0phdmFTY3JpcHRDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0vQ29kZUdlbmVyYXRvcklu
c3BlY3Rvci5weSAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3Rv
ckpTLmpzb24gLS1vdXRwdXRfaF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0iIC0tb3V0cHV0X2NwcF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0iIC0tb3V0cHV0X2pzX2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVf
RElSfSIgLS1vdXRwdXRfdHlwZSBKYXZhU2NyaXB0IC0td3JpdGVfYWx3YXlzICYmIG1rZGlyIC1w
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yICYmIGNwICR7
REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlz
cGF0Y2hlcnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3Rv
ckpTRnJvbnRlbmREaXNwYXRjaGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NS
SVBUQ09SRV9ESVJ9L2luc3BlY3RvcgogICAgIFZFUkJBVElNKQogCisjIEpTQ0J1aWx0aW5zCitm
aWxlKEdMT0IgSlNDQnVpbHRpbnNfanNfZmlsZXMgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElS
fS9idWlsdGlucy8qLmpzIikKK2FkZF9jdXN0b21fY29tbWFuZCgKKyAgIE9VVFBVVCAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcCAke0RFUklWRURf
U09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKKyAgIE1BSU5fREVQRU5E
RU5DWSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMKKyAg
IERFUEVORFMgJHtKU0NCdWlsdGluc19qc19maWxlc30KKyAgIENPTU1BTkQgJHtQWVRIT05fRVhF
Q1VUQUJMRX0gJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5z
ICR7SlNDQnVpbHRpbnNfanNfZmlsZXN9ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0vSlNDQnVpbHRpbnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9
L0pTQ0J1aWx0aW5zLmNwcAorICAgVkVSQkFUSU0pCisKIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRD
b3JlX1NPVVJDRVMKICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0lu
c3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcAogICAg
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVp
bGRlcnMuY3BwCisgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NC
dWlsdGlucy5jcHAKICkKIAogbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUwogICAg
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5k
RGlzcGF0Y2hlcnMuaAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0v
SW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmgKICAgICAke0RFUklWRURfU09VUkNFU19K
QVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgKKyAgICAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKICkKIAogYWRkX2N1
c3RvbV9jb21tYW5kKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpp
bmRleCAxMTU2ZTk3ZmQ4ODYyNTU3YzljZjhkM2I2OGJmNGQwM2MzZThiYThmLi5hODNiZGNhZDUx
YjA2Njg4NjY3YTZiNzMyMDU3ZTRjZGM4OTYwYTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjgsOCArMjgsOSBAQCBWUEFUSCA9IFwKICAgICAkKEph
dmFTY3JpcHRDb3JlKSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvcGFyc2VyIFwKICAgICAkKEph
dmFTY3JpcHRDb3JlKS9ydW50aW1lIFwKLSAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnRlcnByZXRl
ciBcCi0gICAgJChKYXZhU2NyaXB0Q29yZSkvaml0IFwKKwkkKEphdmFTY3JpcHRDb3JlKS9pbnRl
cnByZXRlciBcCisJJChKYXZhU2NyaXB0Q29yZSkvaml0IFwKKwkkKEphdmFTY3JpcHRDb3JlKS9i
dWlsdGlucyBcCiAjCiAKIC5QSE9OWSA6IGFsbApAQCAtNTcsOCArNTgsMTggQEAgYWxsIDogXAog
ICAgIFJlZ0V4cE9iamVjdC5sdXQuaCBcCiAgICAgU3RyaW5nQ29uc3RydWN0b3IubHV0LmggXAog
ICAgIHVkaXM4Nl9pdGFiLmggXAorICAgIEpTQ0J1aWx0aW5zIFwKICMKIAorIyBidWlsdGluIGZ1
bmN0aW9ucworLlBIT05ZOiBKU0NCdWlsdGlucworCitKU0NCdWlsdGluczogJChKYXZhU2NyaXB0
Q29yZSkvZ2VuZXJhdGUtanMtYnVpbHRpbnMgSlNDQnVpbHRpbnMuaCBKU0NCdWlsdGlucy5jcHAK
K0pTQ0J1aWx0aW5zLmg6ICQoSmF2YVNjcmlwdENvcmUpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zICQo
SmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zLyouanMKKwlweXRob24gJF4gJEAKKwkJCQkJCQkJCQkJ
CQkJCQkJCQkJIAorSlNDQnVpbHRpbnMuY3BwOiBKU0NCdWlsdGlucy5oCisKICMgbG9va3VwIHRh
YmxlcyBmb3IgY2xhc3NlcwogCiAlLmx1dC5oOiBjcmVhdGVfaGFzaF90YWJsZSAlLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGZlNTQ0OGRkYzFiY2ZhYTRjNzI5YTFj
YzAwZGVhNjI0MzE5MzkwYTIuLjU1NjlmNTAyOGQ4YzNjZGQ1YTA0ZGM5MzY2YTg0YjA0ZWVjNDgx
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTUxLDYgKzUxLDcgQEAg
amF2YXNjcmlwdGNvcmVfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVycyBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2Jp
bmRpbmdzIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMgXAog
CS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZSBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlciBcCiAJLUkkKHNyY2RpcikvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyIFwKQEAgLTExMCwxMiArMTExLDE2IEBAIERlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaDogJChqYXZhc2Ny
aXB0Y29yZV9zb3VyY2VzKSAkCiAJJChBTV9WX0dFTikkKFJVQlkpICQoc3JjZGlyKS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiICQo
c3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20gJEAKIAkkKEFNX1ZfYXQpdG91Y2ggJEAKIAotJChQcm9ncmFtc19MTEludE9mZnNldHNFeHRy
YWN0b3JfT0JKRUNUUyk6IERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJl
ZE9mZnNldHMuaAorJChQcm9ncmFtc19MTEludE9mZnNldHNFeHRyYWN0b3JfT0JKRUNUUyk6IERl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaCAKIAogRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnRBc3NlbWJseS5oOiBQcm9ncmFtcy9MTElu
dE9mZnNldHNFeHRyYWN0b3IkKEVYRUVYVCkKIAkkKEFNX1ZfR0VOKSQoUlVCWSkgJChzcmNkaXIp
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYiAkKHNyY2RpcikvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIFByb2dyYW1zL0xM
SW50T2Zmc2V0c0V4dHJhY3RvciQoRVhFRVhUKSAkQAogCSQoQU1fVl9hdCl0b3VjaCAkQAogCitE
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5oOiBEZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5jcHAKK0Rlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL0pTQ0J1aWx0aW5zLmNwcDogJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9n
ZW5lcmF0ZS1qcy1idWlsdGlucyAkKGphdmFzY3JpcHRjb3JlX2J1aWx0aW5zX2pzX25vc291cmNl
cykKKwkkKEFNX1ZfR0VOKSQoUFlUSE9OKSAkXiAkQAorCiAkKGxpYmphdmFzY3JpcHRjb3JlZ3Rr
X0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJ
T05AX2xhX09CSkVDVFMpOiBEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9MTEludEFzc2Vt
Ymx5LmgKIAoganNjOiAkKGphdmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcykgUHJvZ3JhbXMv
anNjJChFWEVFWFQpCkBAIC0yMTYsNiArMjIxLDcgQEAgRVhUUkFfRElTVCArPSBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL0tleXdvcmRMb29rdXBHZW5lcmF0b3IucHkgXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvS2V5d29yZHMudGFibGUgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9USEFOS1MgXAorCSQoamF2YXNjcmlwdGNvcmVfYnVpbHRpbnNfanNfbm9zb3VyY2VzKSBcCiAJ
JChsbGludF9ub3NvdXJjZXMpIFwKIAkkKG9mZmxpbmVhc21fbm9zb3VyY2VzKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGNkYjU0MjZiMDZiNTJhOTgy
NTZlZTkwNThiYmE4ZjExZWVhNjllZTAuLjk4ZmFhYTdkMTc1YWE2MWYyMDg5NmNlZWIxMzg2M2Uy
N2IyNjZjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC0yMCw2ICsyMCw4IEBAIGphdmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcyArPSBcCiAJRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvRXJyb3JQcm90b3R5cGUubHV0LmggXAogCURlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTRGF0YVZpZXdQcm90b3R5cGUubHV0LmggXAogCURl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0Lmx1dC5oIFwKKwlEZXJp
dmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5jcHAgXAorCURlcml2ZWRTb3Vy
Y2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFT
Y3JpcHRDb3JlL0pTT05PYmplY3QubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9KU1Byb21pc2VQcm90b3R5cGUubHV0LmggXApAQCAtMzUsNiArMzcsOSBAQCBqYXZh
c2NyaXB0Y29yZV9idWlsdF9ub3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvTExJbnRBc3NlbWJseS5oCiAKK2phdmFzY3JpcHRjb3JlX2J1aWx0aW5zX2pzX25vc291
cmNlcyArPSBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlw
ZS5qcworCiBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9BUElDYXN0LmggXApAQCAtMTAyLDYgKzEwNyw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMg
Kz0gXAogICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRPYmplY3QuaCBc
CiAgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcCBcCiAg
ICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmggXAorICAgIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIFwKKyAg
ICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmNw
cCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2Zp
bGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAg
XApAQCAtMTI0MSw3ICsxMjQ4LDkgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJz
LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNGcm9udGVu
ZERpc3BhdGNoZXJzLmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3Rv
ckpTVHlwZUJ1aWxkZXJzLmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5z
cGVjdG9ySlNUeXBlQnVpbGRlcnMuaAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0lu
c3BlY3RvckpTVHlwZUJ1aWxkZXJzLmggXAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3Jl
L0pTQ0J1aWx0aW5zLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNDQnVp
bHRpbnMuaAogCiBsbGludF9ub3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qCmluZGV4IDVlZGVmZGJlODU1Zjk2YTYyNjhkODU3M2JlYzFkMGMzZDg1
OGFhNWMuLmExMmRiMTgzNDg2ZGZiYmNhODNmM2E3OGU5Y2Y5ODYzMWIyNjUzZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtMzA5LDYgKzMwOSw3IEBACiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0T2JqZWN0LmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdFZhbHVlLmNwcCIg
Lz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxl
cy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9j
YXRpb25Qcm9maWxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2Rl
XEFycmF5UHJvZmlsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29k
ZVxCeXRlY29kZUJhc2ljQmxvY2suY3BwIiAvPgpAQCAtNzIxLDYgKzcyMiw3IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNCYWNr
ZW5kRGlzcGF0Y2hlcnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9y
SlNUeXBlQnVpbGRlcnMuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmNwcCIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJ
dGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJj
ZXNcQXJyYXlDb25zdHJ1Y3Rvci5sdXQuaCIgLz4KQEAgLTc1MCw2ICs3NTIsNyBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFJlZ0V4cE9iamVjdC5s
dXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xSZWdFeHBQcm90b3R5cGUubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcU3RyaW5nQ29uc3RydWN0b3IubHV0LmgiIC8+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuaCIg
Lz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxBUElcQVBJQ2FsbGJhY2tGdW5jdGlvbi5oIiAvPgpAQCAtNzk4LDYgKzgwMSw3IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdE9iamVjdC5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0VmFsdWUuaCIgLz4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxlcy5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9u
UHJvZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlQ
cm9maWxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeVZhbElu
Zm8uaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmls
dGVycwppbmRleCA4N2UxMmE0NzE1OGJiNjIyNGQ0OWZkNjIyOTc4YzRhOWM0NDM1YTY1Li44Njlj
MWY1ODliY2I2ODZlYjljZjIwYzA5NmJlMWI4M2E1NTFlMjRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC03LDYgKzcsOSBAQAogICAg
IDxGaWx0ZXIgSW5jbHVkZT0iYmluZGluZ3MiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezBi
YWNlMTIzLTQ1ODItZWViYy05MzE0LTc4MTliMzc2YzE5OH08L1VuaXF1ZUlkZW50aWZpZXI+CiAg
ICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJidWlsdGlucyI+CisgICAgICA8VW5p
cXVlSWRlbnRpZmllcj57M2I5ZDcyYTUtMTM1Yi00M2IzLWE1MjQtYzZkMmI5ZDI5ZDM1fTwvVW5p
cXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KICAgICA8RmlsdGVyIEluY2x1ZGU9ImJ5dGVj
b2RlIj4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns3NjYwODhhMC0xMjE2LTQ4NTQtYWE0My01
NjBjNWUyODM2Njh9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgpAQCAtMTA4LDYg
KzExMSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcTWFjcm9Bc3Nl
bWJsZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAgPC9DbENv
bXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWlsdGluRXhlY3V0
YWJsZXMuY3BwIj4KKyAgICAgIDxGaWx0ZXI+YnVpbHRpbnM8L0ZpbHRlcj4KKyAgICA8L0NsQ29t
cGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlv
blByb2ZpbGUuY3BwIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KQEAgLTEzMjksNiArMTMzNSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwIj4KICAg
ICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRp
bnMuY3BwIj4KKyAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CisgICAgPC9D
bENvbXBpbGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cQVBJXEFQSUNhbGxiYWNrRnVuY3Rpb24uaCI+CkBAIC0xNDU0LDYgKzE0NjMs
OSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXFg4NkFzc2VtYmxlci5o
Ij4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWlsdGluRXhlY3V0YWJsZXMuaCI+
CisgICAgICA8RmlsdGVyPmJ1aWx0aW5zPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmgi
PgogICAgICAgPEZpbHRlcj5ieXRlY29kZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAt
MjU1MCw2ICsyNTYyLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xBcnJheVByb3RvdHlwZS5sdXQuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQg
U291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmgiPgorICAgICAgPEZpbHRl
cj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVk0uaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlQ29tbW9uLnByb3BzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmVD
b21tb24ucHJvcHMKaW5kZXggMzYyMmZmYzU3N2M0M2RkZjcwZGE1MWZmNjhhZDY0NmY2MzA0ZTU2
Ny4uYzU4ODg3MGMyZmQxM2Q2MDc2ZDM4ZjUyY2E2MjI1ZGIyODcyYzc4MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmVDb21tb24ucHJvcHMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmVDb21tb24ucHJvcHMKQEAgLTUsNyArNSw3IEBACiAgIDxQ
cm9wZXJ0eUdyb3VwIC8+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+
Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlw7Li5cdG9vbHNcOy4uXHJ1
bnRpbWVcOy4uXGxsaW50XDsuLlxqaXRcOy4uXGRpc2Fzc2VtYmxlclw7Li5caGVhcFw7Li5cZGVi
dWdnZXJcOy4uXGFzc2VtYmxlclw7Li5ccHJvZmlsZXJcOy4uXHlhcnJcOy4uXGludGVycHJldGVy
XDsuLlxieXRlY29kZVw7Li5cZGZnXDsuLlxieXRlY29tcGlsZXJcOy4uXHBhcnNlclw7Li5cQVBJ
XDsuLlxmdGxcOy4uXGJpbmRpbmdzXDsuLlxpbnNwZWN0b3JcOyQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291
cmNlc1w7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcOyQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
aW5jbHVkZVxwcml2YXRlXDskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGU7JChXZWJLaXRfTGli
cmFyaWVzKVxpbmNsdWRlXHByaXZhdGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwv
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzPi4uXDsuLlx0b29sc1w7Li5ccnVudGltZVw7Li5cbGxpbnRcOy4uXGppdFw7Li5c
ZGlzYXNzZW1ibGVyXDsuLlxoZWFwXDsuLlxkZWJ1Z2dlclw7Li5cYXNzZW1ibGVyXDsuLlxwcm9m
aWxlclw7Li5ceWFyclw7Li5caW50ZXJwcmV0ZXJcOy4uXGJ5dGVjb2RlXDsuLlxidWlsdGluc1w7
Li5cZGZnXDsuLlxieXRlY29tcGlsZXJcOy4uXHBhcnNlclw7Li5cQVBJXDsuLlxmdGxcOy4uXGJp
bmRpbmdzXDsuLlxpbnNwZWN0b3JcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1w7JChDb25maWd1
cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRl
XEphdmFTY3JpcHRDb3JlXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRl
XDskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGU7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRl
XHByaXZhdGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcz4KICAgICAgIDxGb3JjZWRJbmNsdWRlRmlsZXM+SUNVVmVyc2lvbi5oOyUo
Rm9yY2VkSW5jbHVkZUZpbGVzKTwvRm9yY2VkSW5jbHVkZUZpbGVzPgogICAgIDwvQ2xDb21waWxl
PgogICAgIDxMaW5rPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyN2U4NzY3NDBh
OTY0YjAyODk4NGVkNjc4MTYxODIwYTVkY2Y3N2M0Li45MTE1NzNhYjE3ZDMzOTc0YWE3YzlhMDEx
ZGIyMDBiMDlhZjc4YmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTIyLDcg
KzkyMiw2IEBACiAJCUE1MDNGQTE5MTg4RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZy
YW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
MDNGQTEzMTg4RTBGQUYwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLzsgfTsK
IAkJQTUwM0ZBMUExODhFMEZCMDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE0MTg4RTBG
QUYwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggKi87IH07CiAJCUE1MDNGQTFCMTg4
RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTUxODhFMEZCMDAwMTEwRjE0
IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi87IH07Ci0JCUE1MDNGQTFDMTg4RTBGQjAw
MDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE2MTg4RTBGQjAwMDExMEYxNCAvKiBKU0ph
dmFTY3JpcHRDYWxsRnJhbWUuaCAqLzsgfTsKIAkJQTUwM0ZBMUQxODhFMEZCMDAwMTEwRjE0IC8q
IEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNzE4OEUwRkIwMDAxMTBGMTQgLyogSlNK
YXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcCAqLzsgfTsKIAkJQTUwM0ZBMUUxODhFMEZC
MDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTgxODhFMEZCMDAwMTEw
RjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oICovOyB9OwogCQlBNTAzRkEy
MTE4OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0QnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMUYxODhFRkY2ODAwMTEwRjE0IC8q
IFNjcmlwdEJyZWFrcG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTAyNCw2ICsxMDIzLDcgQEAKIAkJQTcwQjA4MzIxN0EwQjc5QjAwREFG
MTRCIC8qIERGR0JpbmFyeVN3aXRjaC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNzBCMDgzMDE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dp
dGNoLmNwcCAqLzsgfTsKIAkJQTcwQjA4MzMxN0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3
aXRjaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcw
QjA4MzExN0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5oICovOyB9OwogCQlBNzEy
MzZFNTExOTVGMzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MTIzNkU0MTE5NUYzM0MwMEJEMjE3
NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3BwICovOyB9OworCQlBNzFEQTgwRjE4ODBEQkFCMDBEMUYy
OTkgLyogSlNTdHJpbmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNzFEQTgwRTE4ODBEQkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxpbmVz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcy
MDI4QjYxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIwMjhCNDE3OTc2MDFFMDA5
ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmNwcCAqLzsgfTsKIAkJQTcyMDI4QjgxNzk3NjAx
RTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyMDI4QjUxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rl
c3RSdW5uZXJVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUE3MjAyOEJBMTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyMDI4Qjkx
Nzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExNTAsNiArMTE1MCwxMCBAQAogCQlB
N0NBM0FFODE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0NBM0FFMjE3REE0MUFFMDA2NTM4QUYgLyog
SlNXZWFrTWFwLmggKi87IH07CiAJCUE3Q0EzQUVCMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFw
RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
N0NBM0FFOTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuY3BwICovOyB9OwogCQlBN0NB
M0FFQzE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0EzQUVBMTdEQTUxNjgwMDY1MzhBRiAvKiBX
ZWFrTWFwRGF0YS5oICovOyB9OworCQlBN0Q4MDFBNDE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRp
bkV4ZWN1dGFibGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3Bw
ICovOyB9OworCQlBN0Q4MDFBNTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4MDFB
MjE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdEODAxQTgxODgwRDZBODAwMjZD
MzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3RDgwMUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAg
Ki87IH07CisJCUE3RDgwMUE5MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTcxODgwRDZB
ODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTdEODlDRjIxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jhc2lj
QmxvY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTdEODlDRTMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jhc2ljQmxvY2suY3BwICovOyB9OwogCQlB
N0Q4OUNGMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODlDRTQxN0EwQjhD
QzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCAqLzsgfTsKIAkJQTdEODlDRjQx
N0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4OUNFNTE3QTBCOENDMDA3NzNBRDgg
LyogREZHQmxvY2tJbnNlcnRpb25TZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMjQ2Miw2ICsyNDY2LDggQEAKIAkJQTcxMjM2RTQxMTk1RjMz
QzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKSVRPcGNvZGVzMzJfNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNzE4RjYxQTExNzU0QTIxMDAyNDY1QTcgLyogUmVnRXhwSml0VGFibGVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEppdFRhYmxlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNzE4RjgyMTExNzhFQjRCMDAyNDY1QTcgLyogY3JlYXRl
X3JlZ2V4X3RhYmxlcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVU
eXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gY3JlYXRl
X3JlZ2V4X3RhYmxlczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcxREE4MEQxODgw
RDcxRjAwRDFGMjk5IC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3Jp
cHQucHl0aG9uOyBwYXRoID0gImdlbmVyYXRlLWpzLWJ1aWx0aW5zIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTcxREE4MEUxODgwREJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5l
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0cmluZ0lubGluZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyMDI4QjQxNzk3NjAxRTAwOTgwMjhDIC8q
IEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0NUZXN0UnVubmVyVXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNzIwMjhCNTE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ1Rlc3RSdW5uZXJVdGlscy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNzIwMjhCOTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5j
dGlvbklubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGdW5jdGlv
bklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1OTAsNiArMjU5Niwx
MSBAQAogCQlBN0NBM0FFMjE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2Vha01hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBN0NBM0FFOTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vha01hcERhdGEuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0NBM0FFQTE3REE1MTY4MDA2NTM4QUYgLyogV2Vh
a01hcERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha01hcERhdGEu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTAxODgwRDY2RTAwMjZDMzlC
IC8qIEFycmF5LnByb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsg
cGF0aCA9IEFycmF5LnByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTdEODAxQTExODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCdWlsdGluRXhlY3V0YWJsZXMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFBMjE4ODBENjZFMDAyNkMzOUIgLyog
QnVpbHRpbkV4ZWN1dGFibGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1
aWx0aW5FeGVjdXRhYmxlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFB
NjE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNDQnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBN0Q4MDFBNzE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTdEODlDRTMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jhc2ljQmxvY2su
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQmFzaWNCbG9jay5j
cHA7IHBhdGggPSBkZmcvREZHQmFzaWNCbG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE3RDg5Q0U0MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdCbG9ja0luc2VydGlv
blNldC5jcHA7IHBhdGggPSBkZmcvREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBN0Q4OUNFNTE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJ
bnNlcnRpb25TZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQmxvY2tJ
bnNlcnRpb25TZXQuaDsgcGF0aCA9IGRmZy9ERkdCbG9ja0luc2VydGlvblNldC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjkyNiw2ICsyOTM3LDcgQEAKIAkJCQk4NjA0RjRGMjE0
M0E2QzQ0MDBCMjk1RjUgLyogQ2hhbmdlTG9nICovLAogCQkJCUY2OTJBODU0MDI1NTU5N0QwMUZG
NjBGNyAvKiBjcmVhdGVfaGFzaF90YWJsZSAqLywKIAkJCQlBNzE4RjgyMTExNzhFQjRCMDAyNDY1
QTcgLyogY3JlYXRlX3JlZ2V4X3RhYmxlcyAqLywKKwkJCQlBNzFEQTgwRDE4ODBENzFGMDBEMUYy
OTkgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMgKi8sCiAJCQkJNDVFMTJEODgwNkE0OUIwRjAwRTlE
Rjg0IC8qIGpzYy5jcHAgKi8sCiAJCQkJRjY4RUJCOEMwMjU1RDRDNjAxRkY2MEY3IC8qIGNvbmZp
Zy5oICovLAogCQkJCUY1QzI5MEU2MDI4NEY5OEUwMTg2MzVDQSAvKiBKYXZhU2NyaXB0Q29yZVBy
ZWZpeC5oICovLApAQCAtMjkzNCw2ICsyOTQ2LDcgQEAKIAkJCQkxNDMyRUJENzBBMzRDQUQ0MDA3
MTdCOUYgLyogQVBJICovLAogCQkJCTk2ODhDQjEyMEVEMTJCNEUwMDFENjQ5RiAvKiBhc3NlbWJs
ZXIgKi8sCiAJCQkJQTU0Q0YyRUExODRFQTczOTAwMjM3RjE5IC8qIGJpbmRpbmdzICovLAorCQkJ
CUE3RDgwMTlGMTg4MEQ2NkUwMDI2QzM5QiAvKiBidWlsdGlucyAqLywKIAkJCQk5NjlBMDc4RjBF
RDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8sCiAJCQkJN0UzOUQ4MUQwRUMzOEVGQTAwM0FG
MTFBIC8qIGJ5dGVjb21waWxlciAqLywKIAkJCQkxQzkwNTEzRTBCQTlFODgzMDA4MUU5RDAgLyog
Q29uZmlndXJhdGlvbnMgKi8sCkBAIC0zNTA5LDYgKzM1MjIsOCBAQAogCQk2NTBGREY4RDA5RDBG
Q0E3MDA3NjlFNTQgLyogRGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlBN0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVp
bHRpbnMuY3BwICovLAorCQkJCUE3RDgwMUE3MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlu
cy5oICovLAogCQkJCUJDMThDNTIzMEUxNkZDOEEwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5s
dXQuaCAqLywKIAkJCQlCQ0QyMDNFNzBFMTcxOEY0MDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5s
dXQuaCAqLywKIAkJCQlBNTEzRTVDNjE4NUY5NDM2MDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHRT
b3VyY2UuaCAqLywKQEAgLTM4MTEsNiArMzgyNiw3IEBACiAJCQkJQTc5MERENkExODJGNDk5NzAw
NTg4ODA3IC8qIEpTU2V0SXRlcmF0b3IuaCAqLywKIAkJCQlCQzAyRTlCNjBFMTg0MkZBMDAwRjky
OTcgLyogSlNTdHJpbmcuY3BwICovLAogCQkJCUY2OTJBODYyMDI1NTU5N0QwMUZGNjBGNyAvKiBK
U1N0cmluZy5oICovLAorCQkJCUE3MURBODBFMTg4MERCQUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lu
bGluZXMuaCAqLywKIAkJCQk4NkU4NTUzODExMUI5OTY4MDAxQUY1MUUgLyogSlNTdHJpbmdCdWls
ZGVyLmggKi8sCiAJCQkJMjYwMEI1QTQxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVy
LmNwcCAqLywKIAkJCQkyNjAwQjVBNTE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIu
aCAqLywKQEAgLTQ1NjEsNiArNDU3NywxNiBAQAogCQkJcGF0aCA9IHJlbW90ZTsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUE3RDgwMTlGMTg4MEQ2NkUwMDI2QzM5QiAvKiBi
dWlsdGlucyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
QTdEODAxQTAxODgwRDY2RTAwMjZDMzlCIC8qIEFycmF5LnByb3RvdHlwZS5qcyAqLywKKwkJCQlB
N0Q4MDFBMTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCAqLywKKwkJ
CQlBN0Q4MDFBMjE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggKi8sCisJ
CQkpOworCQkJcGF0aCA9IGJ1aWx0aW5zOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJ
fTsKIC8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEhlYWRlcnNCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTQ2MDYsMTEgKzQ2MzIsMTEgQEAKIAkJCQk4NkFERDE0NTBG
RERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1
Q0VFRTE1MTg3RjNCQUQwMEU1NUM5OSAvKiBJbnNwZWN0b3JBZ2VudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNjVDMDI4NUQxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5oIGluIEhlYWRl
cnMgKi8sCi0gCQkJCTJBNjgyOTVCMTg3NUY4MDUwMEI2QzNFMiAvKiBDb3B5V3JpdGVCYXJyaWVy
LmggaW4gSGVhZGVycyAqLywKLSAgICAgICAgICAgICAgICAyQTRFQzkwQzE4NjBENkMyMDA5NEY3
ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkyQTY4Mjk1QjE4
NzVGODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MkE0RUM5MEMxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkU1OTMyQTgxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTUzMjQzOTMxODU2OTcwOTAwMkVENjkyIC8qIENvZGVHZW5lcmF0
b3JJbnNwZWN0b3JTdHJpbmdzLnB5IGluIEhlYWRlcnMgKi8sCi0gCQkJCUE1MzI0MzkyMTg1Njk3
MDkwMDJFRDY5MiAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGluIEhlYWRlcnMgKi8sCisJ
CQkJQTUzMjQzOTIxODU2OTcwOTAwMkVENjkyIC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjI0RTU0RjE3RUUyNzQ5MDBBQkIyMTcgLyogVGVtcFJlZ2lz
dGVyU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTBFNEI2NDE4ODA5REQ1MDA2OEE0NkQgLyog
SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFQjU4QzE1
MTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJvckhhbmRsaW5nU2NvcGUuaCBpbiBIZWFkZXJzICovLApA
QCAtNDYyMiw3ICs0NjQ4LDcgQEAKIAkJCQkwRjgzMzVCODE2MzlDMUVBMDAxNDQzQjUgLyogQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMjkxODdDQTVF
NjAwODQzQjEwIC8qIGlubGluZS1hbmQtbWluaWZ5LXN0eWxlc2hlZXRzLWFuZC1zY3JpcHRzLnB5
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMkIxODdDQTc1QjAwODQzQjEwIC8qIGpzbWluLnB5
IGluIEhlYWRlcnMgKi8sCi0gCQkJCUE1MzI0Mzk4MTg1NkE0ODkwMDJFRDY5MiAvKiBJbnNwZWN0
b3JKUy5qc29uIGluIEhlYWRlcnMgKi8sCisJCQkJQTUzMjQzOTgxODU2QTQ4OTAwMkVENjkyIC8q
IEluc3BlY3RvckpTLmpzb24gaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUyQTE4N0NBNzU5MDA4
NDNCMTAgLyogeHhkLnBsIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVBMDg2MjAxODJCN0EwNDAwRjZE
ODUxIC8qIEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjM1MTdBREI1RjMw
MDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC00NzMzLDcgKzQ3NTks
NyBAQAogCQkJCUExQTAwOUMwMTgzMUEyMkQwMENGODcxMSAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDOURDNTEzMjhERjgyMDAyQjJBRDcgLyogREZHQnl0
ZUNvZGVQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDg1MzI4MTg3REZERUMwMDgzQjY4
NyAvKiBGVExBdmFpbGFibGVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8sCi0gICAgICAgICAgICAg
ICAgQTU5M0NGODcxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCBp
biBIZWFkZXJzICovLAorCQkJCUE1OTNDRjg3MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JB
Z2VudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI1NkMzNjE2MjdCMEFEMDA3RjI3
ODMgLyogREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRpZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRkZDOTU4MTRFRjkwQTIwMEM3MjUzMiAvKiBERkdDRkFQaGFz
ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC00ODcyLDYgKzQ4OTgsNyBAQAogCQkJCTBGRUEwQTFEMTcw
OEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RUEwQTFGMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNTk0NTU5MzE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0Q4MDFBOTE4ODBENkE4MDAyNkMz
OUIgLyogSlNDQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTBBMTcwNTEzREIw
MEJCNzIyQyAvKiBGVExDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDg1MzJB
MTg3REZERUMwMDgzQjY4NyAvKiBGVExSZWNvdmVyeU9wY29kZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZFQTBBMjMxNzA5NjA2OTAwQkI3MjJDIC8qIEZUTENvbW1vblZhbHVlcy5oIGluIEhlYWRl
cnMgKi8sCkBAIC00OTQ2LDYgKzQ5NzMsNyBAQAogCQkJCUJDMThDNDBGMEUxNkY1Q0QwMEIzNDQ2
MCAvKiBJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjVGOEJDRTE1NzU0NEE5MDAy
NDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5
OTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUE3RDgwMUE1MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQjdGMzlBMTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ0hlYWRlcklu
bGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzlCMTVFRDhFNDYwMEYxNjdCMiAvKiBJ
bmRleGluZ1R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQ0VGQUIwMTgwNUNBNkQwMDQ3MkNF
NCAvKiBJbml0aWFsaXplTExWTS5oIGluIEhlYWRlcnMgKi8sCkBAIC01MjE4LDYgKzUyNDYsNyBA
QAogCQkJCUE1MzI0Mzg4MTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JKU0JhY2tlbmREaXNw
YXRjaGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NTYwRTE2RjVDRDAwQjM0NDYwIC8q
IFByb3RlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzRDMzNCMTZBQTJEOTUwMDYyRjAxRCAv
KiBQcm90b3R5cGVNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3MURBODBGMTg4MERCQUIwMEQx
RjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMzMkE0MTRD
QTdERDkwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBD
RDRDMjE1RjFBNjA3MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3QzAwOENFNzE4NzYzMUI2MDA5NTVDMjQgLyogTWljcm90YXNrLmggaW4gSGVhZGVy
cyAqLywKQEAgLTU4MzYsNiArNTg2NSw3IEBACiAJCQkJQTdEODlDRjIxN0EwQjhDQzAwNzczQUQ4
IC8qIERGR0Jhc2ljQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcwQjA4MzIxN0EwQjc5
QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q4
OUNGMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQTdEODAxQTQxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxl
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkVDOURDNDEzMjhERjgyMDAyQjJBRDcgLyogREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEODJFMjExNDE3MkNFMzAw
MTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkZGQzk1
NzE0RUY5MEEwMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01
ODUyLDYgKzU4ODIsNyBAQAogCQkJCTBGRkZDOTU5MTRFRjkwQTYwMEM3MjUzMiAvKiBERkdDU0VQ
aGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJGQzc3MjE2RTEyRjcxMDAzOEQ5NzYgLyog
REZHRENFUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4RjJCOTkxNzJGMDRGRjAwN0RC
REE1IC8qIERGR0Rlc2lyZWRJZGVudGlmaWVycy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBN0Q4
MDFBODE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTczRTEzMzAxNzk2MjRDRDAwRTRERUE4IC8qIERGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzJDMEY3Q0QxN0JCRkM1QjAwNDY0RkU0IC8qIERGR0Rl
c2lyZWRUcmFuc2l0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkU4NTM0QjE3MjNDREE1
MDBCNjE4RjUgLyogREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
NTk3Niw3ICs2MDA3LDcgQEAKIAkJCQkwRjZCMUNDNTE4NjJDNDc4MDA4NDVEOTcgLyogRlRMVW53
aW5kSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM5QTE4MDNBREI3MDA3M0MyQkMg
LyogRlRMU3RhY2tNYXBzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEwQTE2MTcwNkJCOTAw
MEJCNzIyQyAvKiBGVExTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKLSAJCQkJN0MwMDhDRDIxODZG
OEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk3QzAwOENEMjE4NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9taXNlRnVuY3Rpb25zLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGNkIxQ0I1MTg1RkM5RTkwMDg0NUQ5NyAvKiBGVExKU0NhbGwuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMzVCRTExNzE3OEUxQzAwNjkwQzdGIC8qIEZUTFRodW5r
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTkzQ0Y3QzE4NDAzNjAzMDBCRkNFMjcgLyogSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
ZWI0MmY1Y2M0MzNmMTYzNjM0M2JmYzk4MmFhMmFhZmIzMzZlOTQ5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcwpAQCAt
MCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworZnVuY3Rpb24gZXZlcnkoY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pIHsKKyAgICAidXNlIHN0
cmljdCI7CisgICAgaWYgKHRoaXMgPT09IG51bGwpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVy
cm9yKCJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51
bGwiKTsKKyAgICAKKyAgICBpZiAodGhpcyA9PT0gdW5kZWZpbmVkKQorICAgICAgICB0aHJvdyBu
ZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8
IG5vdCBiZSB1bmRlZmluZWQiKTsKKyAgICAKKyAgICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMp
OworICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGggPj4+IDA7CisgICAgCisgICAgaWYgKHR5
cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJy
b3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsK
KworICAgIHZhciB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0g
OiB1bmRlZmluZWQ7CisgICAgCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykg
eworICAgICAgICBpZiAoIShpIGluIGFycmF5KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBpZiAoIWNhbGxiYWNrLkBjYWxsKHRoaXNBcmcsIGFycmF5W2ldLCBpLCBhcnJheSkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHJldHVybiB0cnVlOwor
fQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0MWRiYjVmOTIyNWUyOGExMmVkM2QxNzk4ZmYxNzY4
ZTQzNjcxYTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgi
CisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVz
LmgiCisjaW5jbHVkZSAiUGFyc2VyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitCdWlsdGluRXhl
Y3V0YWJsZXM6OkJ1aWx0aW5FeGVjdXRhYmxlcyhWTSYgdm0pCisgICAgOiBtX3ZtKHZtKQorI2Rl
ZmluZSBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1l
LCBsZW5ndGgpICwgbV8jI25hbWUjI1NvdXJjZShtYWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0
ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgpLCBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0
ZXJhbCgiPGJ1aWx0aW4+IikpKQorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4oSU5JVElBTElaRV9C
VUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX1NUUklOR1MKK3sK
K30KKworVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3Jl
YXRlQnVpbHRpbkV4ZWN1dGFibGUoY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lKQoreworICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmU7CisgICAgUGFyc2VyRXJyb3IgZXJyb3I7CisgICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBw
cm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KCZtX3ZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIo
KSwgSlNQYXJzZUJ1aWx0aW4sIEpTUGFyc2VQcm9ncmFtQ29kZSwgZXJyb3IsICZwb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lKTsKKworICAgIGlmICghcHJvZ3JhbSkgeworICAgICAgICBkYXRhTG9n
KCJGYXRhbCBlcnJvciBjb21waWxpbmcgYnVpbHRpbiBmdW5jdGlvbiAnIiwgbmFtZS5zdHJpbmco
KSwgIic6ICIsIGVycm9yLm1fbWVzc2FnZSk7CisgICAgICAgIENSQVNIKCk7CisgICAgfQorCisg
ICAgU3RhdGVtZW50Tm9kZSogZXhwclN0YXRlbWVudCA9IHByb2dyYW0tPnNpbmdsZVN0YXRlbWVu
dCgpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQpOworICAgIFJFTEVBU0VfQVNT
RVJUKGV4cHJTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKKyAgICBFeHByZXNzaW9uTm9k
ZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVtZW50Tm9kZSo+KGV4cHJTdGF0ZW1l
bnQpLT5leHByKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHIpOworICAgIFJFTEVBU0Vf
QVNTRVJUKGZ1bmNFeHByLT5pc0Z1bmNFeHByTm9kZSgpKTsKKyAgICBGdW5jdGlvbkJvZHlOb2Rl
KiBib2R5ID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZnVuY0V4cHIpLT5ib2R5KCk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoIXByb2dyYW0tPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpOworICAg
IAorICAgIGJvZHktPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKGJvZHkpOworICAgIFJFTEVBU0VfQVNTRVJUKGJvZHktPmlkZW50
KCkuaXNOdWxsKCkpOworICAgIAorICAgIC8vIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBhbiBpbnB1
dCBzdHJpbmcgdGhhdCB3b3VsZCByZXN1bHQgaW4gYSBzaW5nbGUgYW5vbnltb3VzIGZ1bmN0aW9u
IGV4cHJlc3Npb24uCisgICAgYm9keS0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keSk7CisgICAgZm9yIChjb25zdCBhdXRv
JiBjbG9zZWRWYXJpYWJsZSA6IHByb2dyYW0tPmNsb3NlZFZhcmlhYmxlcygpKSB7CisgICAgICAg
IGlmIChjbG9zZWRWYXJpYWJsZSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cy5pbXBs
KCkpCisgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgaWYgKGNsb3NlZFZhcmlh
YmxlID09IG1fdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZC5pbXBsKCkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2xvc2VkVmFyaWFibGUt
PmlzRW1wdHlVbmlxdWUoKSk7CisgICAgfQorICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRl
KCZtX3ZtLCBzb3VyY2UsIGJvZHksIHRydWUsIFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uKTsKKyAg
ICBmdW5jdGlvbkV4ZWN1dGFibGUtPm1fbmFtZVZhbHVlLnNldChtX3ZtLCBmdW5jdGlvbkV4ZWN1
dGFibGUsIGpzU3RyaW5nKCZtX3ZtLCBuYW1lLnN0cmluZygpKSk7CisgICAgcmV0dXJuIGZ1bmN0
aW9uRXhlY3V0YWJsZTsKK30KKworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUyhu
YW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IEJ1aWx0aW5FeGVjdXRhYmxlczo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK3tcCisgICAgaWYgKCFt
XyMjbmFtZSMjRXhlY3V0YWJsZSlcCisgICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gY3Jl
YXRlQnVpbHRpbkV4ZWN1dGFibGUobV8jI25hbWUjI1NvdXJjZSwgbV92bS5wcm9wZXJ0eU5hbWVz
LT5mdW5jdGlvbk5hbWUpO1wKKyAgICByZXR1cm4gbV8jI25hbWUjI0V4ZWN1dGFibGUuZ2V0KCk7
XAorfQorSlNDX0ZPUkVBQ0hfQlVJTFRJTihERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1
bmRlZiBFWFBPU0VfQlVJTFRJTl9TT1VSQ0VTCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOWExOWUy
NjE1MDc5NGE2NjllYzk4ZTM5OWJmNjdmN2Y3MTA2NDE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCkBAIC0wLDAg
KzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEJ1aWx0aW5FeGVjdXRhYmxlc19oCisjZGVmaW5lIEJ1aWx0aW5FeGVjdXRhYmxlc19o
CisKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgorI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKKyNp
bmNsdWRlICJXZWFrLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgSWRlbnRp
ZmllcjsKK2NsYXNzIFZNOworCitjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXMgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEJ1aWx0aW5FeGVjdXRhYmxlcz4gY3JlYXRlKFZNJiB2bSkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQnVpbHRpbkV4ZWN1dGFibGVzKHZt
KSk7CisgICAgfQorICAgIAorI2RlZmluZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1l
LCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5h
bWUjI0V4ZWN1dGFibGUoKTsgXAorY29uc3QgU291cmNlQ29kZSYgbmFtZSMjU291cmNlKCkgeyBy
ZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsgfQorICAgIAorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4o
RVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgRVhQT1NFX0JVSUxUSU5fU09VUkNF
UworICAgIAorcHJpdmF0ZToKKyAgICBCdWlsdGluRXhlY3V0YWJsZXMoVk0mKTsKKyAgICBWTSYg
bV92bTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1
dGFibGUoY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImKTsKKyNkZWZpbmUgREVD
TEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKVwK
KyAgICBTb3VyY2VDb2RlIG1fIyNuYW1lIyNTb3VyY2U7IFwKKyAgICBXZWFrPFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlPiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKKyAgICBKU0NfRk9SRUFDSF9C
VUlMVElOKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JV
SUxUSU5fU09VUkNFX01FTUJFUlMKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDI2M2VjN2NhZGY0Zjc5Y2E4MTAy
NDQxZTYyYmYyYTA1YjVkZGMzZjIuLjc1MTUwNjU0MjM3NmQ3ZWRjNTk5YWEwMGY5YjEyNjg1Y2Rh
MzUyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CkBAIC00MywxMSArNDMsMTMgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRTdHVi
cy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgotI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIK
KyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludC5oIgog
I2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJOYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJP
cGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5oIgogI2luY2x1
ZGUgIlJlZHVjZVdoaXRlc3BhY2UuaCIKQEAgLTE1NjksNyArMTU3MSw3IEBAIENvZGVCbG9jazo6
Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2Rl
QmxvY2sqIHVubGluCiAKICAgICBzZXRDb25zdGFudFJlZ2lzdGVycyh1bmxpbmtlZENvZGVCbG9j
ay0+Y29uc3RhbnRSZWdpc3RlcnMoKSk7CiAgICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT51c2Vz
R2xvYmFsT2JqZWN0KCkpCi0gICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnNbdW5saW5rZWRDb2Rl
QmxvY2stPmdsb2JhbE9iamVjdFJlZ2lzdGVyKCkub2Zmc2V0KCldLnNldCgqbV92bSwgb3duZXJF
eGVjdXRhYmxlLCBtX2dsb2JhbE9iamVjdC5nZXQoKSk7CisgICAgICAgIG1fY29uc3RhbnRSZWdp
c3RlcnNbdW5saW5rZWRDb2RlQmxvY2stPmdsb2JhbE9iamVjdFJlZ2lzdGVyKCkudG9Db25zdGFu
dEluZGV4KCldLnNldCgqbV92bSwgb3duZXJFeGVjdXRhYmxlLCBtX2dsb2JhbE9iamVjdC5nZXQo
KSk7CiAgICAgbV9mdW5jdGlvbkRlY2xzLnJlc2l6ZVRvRml0KHVubGlua2VkQ29kZUJsb2NrLT5u
dW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSk7CiAgICAgZm9yIChzaXplX3QgY291bnQgPSB1bmxpbmtl
ZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCksIGkgPSAwOyBpIDwgY291bnQ7ICsr
aSkgewogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRh
YmxlID0gdW5saW5rZWRDb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA2OGJjMDM3OWY1NzQ0YzlhOGY3NDMx
ZGI2NGY4YWI1NGU2ZTEwNTNmLi40OTk1YzUyY2Y4YjJiMWI0ZDYyODA0NTNlZWQyN2M3NzRhNDk1
NThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC01
Niw3ICs1Niw2IEBACiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIKICNpbmNsdWRlICJPYmplY3RB
bGxvY2F0aW9uUHJvZmlsZS5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKLSNpbmNsdWRlICJPcGVy
YXRpb25zLmgiCiAjaW5jbHVkZSAiUHV0UHJvcGVydHlTbG90LmgiCiAjaW5jbHVkZSAiSW5zdHJ1
Y3Rpb24uaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0
dGlzb25pbmdXYXRjaHBvaW50LmNwcAppbmRleCA5ODZlMDNkMGNiYTcxODViMzljZWUwMjNmNGFi
NmJjOWI4Y2NiNmU0Li43MGVmOWI0MjkwMWMwNThiYzcyYzlkYjkyZGNjMzNkNTNkNmJhYWM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxv
Y2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdDb21tb24u
aCIKICNpbmNsdWRlICJERkdFeGl0UHJvZmlsZS5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMu
aCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDFkZmI1YWM2YWQ5MDkzZjhmODEx
MDFlZjdmMmU2MTIzMTFhYzE5MzkuLjQzMzkwZDk2NWZjNTAzNDAxNmY3YmZmZjIzZTY4YmIxZTA1
NDU1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmNwcApAQCAtNDksOSArNDksOSBAQCBjb25zdCBDbGFzc0luZm8gVW5saW5r
ZWRQcm9ncmFtQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2si
LAogY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkRXZhbENvZGVCbG9jazo6c19pbmZvID0geyAiVW5s
aW5rZWRFdmFsQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShVbmxpbmtlZEV2YWxDb2RlQmxvY2spIH07CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayIs
ICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jaykgfTsKIAotc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVy
YXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxl
ck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikKK3N0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKiBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKFZNJiB2bSwgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1v
ZGUgcHJvZmlsZXJNb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBmdW5jdGlvbktpbmQsIFBhcnNl
ckVycm9yJiBlcnJvcikKIHsKLSAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSA9IHBh
cnNlPEZ1bmN0aW9uQm9keU5vZGU+KCZ2bSwgc291cmNlLCBleGVjdXRhYmxlLT5wYXJhbWV0ZXJz
KCksIGV4ZWN1dGFibGUtPm5hbWUoKSwgZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/
IEpTUGFyc2VTdHJpY3QgOiBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlRnVuY3Rpb25Db2RlLCBlcnJv
cik7CisgICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGJvZHkgPSBwYXJzZTxGdW5jdGlvbkJv
ZHlOb2RlPigmdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+cGFyYW1ldGVycygpLCBleGVjdXRhYmxl
LT5uYW1lKCksIGV4ZWN1dGFibGUtPnRvU3RyaWN0bmVzcygpLCBKU1BhcnNlRnVuY3Rpb25Db2Rl
LCBlcnJvcik7CiAKICAgICBpZiAoIWJvZHkpIHsKICAgICAgICAgQVNTRVJUKGVycm9yLm1fdHlw
ZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZt
LCBVbmxpbmtlZEZ1bmMKICAgICBib2R5LT5maW5pc2hQYXJzaW5nKGV4ZWN1dGFibGUtPnBhcmFt
ZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT5mdW5jdGlvbk5hbWVJc0lu
U2NvcGVUb2dnbGUoKSk7CiAgICAgZXhlY3V0YWJsZS0+cmVjb3JkUGFyc2UoYm9keS0+ZmVhdHVy
ZXMoKSwgYm9keS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAgICAgCi0gICAgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3Jl
YXRlKCZ2bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5mbyhib2R5LT5uZWVkc0FjdGl2YXRp
b24oKSwgYm9keS0+dXNlc0V2YWwoKSwgYm9keS0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29k
ZUZvckNvbnN0cnVjdCkpOworICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmdm0sIEZ1bmN0aW9uQ29kZSwgRXhl
Y3V0YWJsZUluZm8oYm9keS0+bmVlZHNBY3RpdmF0aW9uKCksIGJvZHktPnVzZXNFdmFsKCksIGJv
ZHktPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2lu
ZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbikpOwogICAgIE93blB0cjxCeXRlY29kZUdlbmVy
YXRvcj4gZ2VuZXJhdG9yKGFkb3B0UHRyKG5ldyBCeXRlY29kZUdlbmVyYXRvcih2bSwgYm9keS5n
ZXQoKSwgcmVzdWx0LCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSkpKTsKICAgICBlcnJvciA9
IGdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKICAgICBib2R5LT5kZXN0cm95RGF0YSgpOwpAQCAtODIs
MTMgKzgyLDE0IEBAIHVuc2lnbmVkIFVubGlua2VkQ29kZUJsb2NrOjphZGRPckZpbmRDb25zdGFu
dChKU1ZhbHVlIHYpCiAgICAgcmV0dXJuIGFkZENvbnN0YW50KHYpOwogfQogCi1VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlO
b2RlKiBub2RlLCBib29sIGlzRnJvbUdsb2JhbENvZGUpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlLCBi
b29sIGlzRnJvbUdsb2JhbENvZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQpCiAgICAgOiBC
YXNlKCp2bSwgc3RydWN0dXJlKQogICAgICwgbV9udW1DYXB0dXJlZFZhcmlhYmxlcyhub2RlLT5j
YXB0dXJlZFZhcmlhYmxlQ291bnQoKSkKICAgICAsIG1fZm9yY2VVc2VzQXJndW1lbnRzKG5vZGUt
PnVzZXNBcmd1bWVudHMoKSkKICAgICAsIG1faXNJblN0cmljdENvbnRleHQobm9kZS0+aXNTdHJp
Y3RNb2RlKCkpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKG5vZGUtPmhhc0NhcHR1cmVk
VmFyaWFibGVzKCkpCiAgICAgLCBtX2lzRnJvbUdsb2JhbENvZGUoaXNGcm9tR2xvYmFsQ29kZSkK
KyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oa2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlv
bikKICAgICAsIG1fbmFtZShub2RlLT5pZGVudCgpKQogICAgICwgbV9pbmZlcnJlZE5hbWUobm9k
ZS0+aW5mZXJyZWROYW1lKCkpCiAgICAgLCBtX3BhcmFtZXRlcnMobm9kZS0+cGFyYW1ldGVycygp
KQpAQCAtMTY2LDcgKzE2Nyw3IEBAIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tGb3IoVk0mIHZtLCBjb25zCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIAotICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IGdl
bmVyYXRlRnVuY3Rpb25Db2RlQmxvY2sodm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lhbGl6YXRpb25L
aW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3IpOworICAgIFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2sodm0sIHRo
aXMsIHNvdXJjZSwgc3BlY2lhbGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9k
ZSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5r
ZWROb3JtYWxGdW5jdGlvbiwgZXJyb3IpOwogICAgIAogICAgIGlmIChlcnJvci5tX3R5cGUgIT0g
UGFyc2VyRXJyb3I6OkVycm9yTm9uZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMTAsNiArMjEx
LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1faXNTdHJpY3RNb2RlKGluZm8u
bV9pc1N0cmljdE1vZGUpCiAgICAgLCBtX2lzQ29uc3RydWN0b3IoaW5mby5tX2lzQ29uc3RydWN0
b3IpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGZhbHNlKQorICAgICwgbV9pc0J1aWx0
aW5GdW5jdGlvbihpbmZvLm1faXNCdWlsdGluRnVuY3Rpb24pCiAgICAgLCBtX2ZpcnN0TGluZSgw
KQogICAgICwgbV9saW5lQ291bnQoMCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApp
bmRleCBiOWRhZTJkNWM2OWM3OWNlYWFhODAyM2QyYTNhMWYyNmQ0NjA5NDNiLi5hYmY2Y2YzNWI5
MzA2YTRmN2EzMDFhYjBkZjc2NjZlYzYxMmUzNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtNjYsMjYgKzY2LDM1IEBA
IHR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTsKIHR5cGVk
ZWYgdW5zaWduZWQgVW5saW5rZWRMTEludENhbGxMaW5rSW5mbzsKIAogc3RydWN0IEV4ZWN1dGFi
bGVJbmZvIHsKLSAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1
c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvcikKKyAgICBFeGVj
dXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0
cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbikKICAg
ICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2YXRpb24pCiAgICAgICAgICwgbV91
c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0cmljdE1vZGUp
CiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3RydWN0b3IpCisgICAgICAgICwgbV9p
c0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikKICAgICB7CiAgICAgfQotICAgIGJv
b2wgbV9uZWVkc0FjdGl2YXRpb247Ci0gICAgYm9vbCBtX3VzZXNFdmFsOwotICAgIGJvb2wgbV9p
c1N0cmljdE1vZGU7Ci0gICAgYm9vbCBtX2lzQ29uc3RydWN0b3I7CisgICAgYm9vbCBtX25lZWRz
QWN0aXZhdGlvbiA6IDE7CisgICAgYm9vbCBtX3VzZXNFdmFsIDogMTsKKyAgICBib29sIG1faXNT
dHJpY3RNb2RlIDogMTsKKyAgICBib29sIG1faXNDb25zdHJ1Y3RvciA6IDE7CisgICAgYm9vbCBt
X2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKK307CisKK2VudW0gVW5saW5rZWRGdW5jdGlvbktpbmQg
eworICAgIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sCisgICAgVW5saW5rZWRCdWlsdGluRnVuY3Rp
b24sCiB9OwogCiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBKU0Nl
bGwgewogcHVibGljOgorICAgIGZyaWVuZCBjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXM7CiAgICAg
ZnJpZW5kIGNsYXNzIENvZGVDYWNoZTsKKyAgICBmcmllbmQgY2xhc3MgVk07CiAgICAgdHlwZWRl
ZiBKU0NlbGwgQmFzZTsKLSAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNy
ZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSog
bm9kZSwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlID0gZmFsc2UpCisgICAgc3RhdGljIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSwgVW5saW5r
ZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQpCiAgICAgewotICAgICAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhlYXApKSBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJl
LmdldCgpLCBzb3VyY2UsIG5vZGUsIGlzRnJvbUdsb2JhbENvZGUpOworICAgICAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhlYXApKSBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdl
dCgpLCBzb3VyY2UsIG5vZGUsIGlzRnJvbUdsb2JhbENvZGUsIHVubGlua2VkRnVuY3Rpb25LaW5k
KTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2bSk7CiAgICAgICAgIHJldHVy
biBpbnN0YW5jZTsKICAgICB9CkBAIC05OSw2ICsxMDgsMTQgQEAgcHVibGljOgogICAgIH0KICAg
ICBzaXplX3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdDsKICAgICBib29sIGlzSW5TdHJpY3RDb250
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQorICAgIEpTUGFyc2Vy
U3RyaWN0bmVzcyB0b1N0cmljdG5lc3MoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1faXNC
dWlsdGluRnVuY3Rpb24pCisgICAgICAgICAgICByZXR1cm4gSlNQYXJzZUJ1aWx0aW47CisgICAg
ICAgIGlmIChtX2lzSW5TdHJpY3RDb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuIEpTUGFyc2VT
dHJpY3Q7CisgICAgICAgIHJldHVybiBKU1BhcnNlTm9ybWFsOworICAgIH0KICAgICBGdW5jdGlv
bk5hbWVJc0luU2NvcGVUb2dnbGUgZnVuY3Rpb25OYW1lSXNJblNjb3BlVG9nZ2xlKCkgY29uc3Qg
eyByZXR1cm4gbV9mdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGU7IH0KIAogICAgIHVuc2lnbmVk
IGZpcnN0TGluZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RMaW5lT2Zmc2V0OyB9CkBA
IC0xNDIsOCArMTU5LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJbW1v
cnRhbFN0cnVjdHVyZSA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsK
IAorICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRp
bkZ1bmN0aW9uOyB9CisKIHByaXZhdGU6Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUo
Vk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGJv
b2wgaXNGcm9tR2xvYmFsQ29kZSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0q
LCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGJvb2wg
aXNGcm9tR2xvYmFsQ29kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQpOwogICAgIFdyaXRlQmFycmll
cjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX2NvZGVCbG9ja0ZvckNhbGw7CiAgICAgV3Jp
dGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fY29kZUJsb2NrRm9yQ29uc3Ry
dWN0OwogCkBAIC0xNTIsNiArMTcxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNJblN0cmlj
dENvbnRleHQgOiAxOwogICAgIGJvb2wgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAg
Ym9vbCBtX2lzRnJvbUdsb2JhbENvZGUgOiAxOworICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlv
biA6IDE7CiAKICAgICBJZGVudGlmaWVyIG1fbmFtZTsKICAgICBJZGVudGlmaWVyIG1faW5mZXJy
ZWROYW1lOwpAQCAtMzE5LDYgKzMzOSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzTnVtZXJp
Y0NvbXBhcmVGdW5jdGlvbihib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbikgeyBtX2lzTnVt
ZXJpY0NvbXBhcmVGdW5jdGlvbiA9IGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQogICAgIGJv
b2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc051bWVyaWND
b21wYXJlRnVuY3Rpb247IH0KIAorICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisgICAgCiAgICAgdm9pZCBzaHJpbmtUb0Zp
dCgpCiAgICAgewogICAgICAgICBtX2p1bXBUYXJnZXRzLnNocmlua1RvRml0KCk7CkBAIC01MDAs
NiArNTIyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNTdHJpY3RNb2RlIDogMTsKICAgICBi
b29sIG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAgYm9vbCBtX2hhc0NhcHR1cmVkVmFyaWFibGVz
IDogMTsKKyAgICBib29sIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1f
Zmlyc3RMaW5lOwogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50OwogICAgIHVuc2lnbmVkIG1fZW5k
Q29sdW1uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2ODEwYWI4MDAyY2U2YmI4ZDc4ZTdmZjIyMjdm
NGM2ZWE3Yjc1OGMyLi5lYzUyMWI1MzA0NjM5MjNlNzRjMDEwZmEyMThlNTllZDJhOWEzY2FlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcApAQCAtMTc1LDYgKzE3NSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5r
ZWRQCiAjZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAgICAgLCBtX2V4cHJl
c3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihmYWxzZSkKIHsK
ICAgICBpZiAobV9zaG91bGRFbWl0RGVidWdIb29rcykKICAgICAgICAgbV9jb2RlQmxvY2stPnNl
dE5lZWRzRnVsbFNjb3BlQ2hhaW4odHJ1ZSk7CkBAIC0yMjIsNyArMjIzLDEzIEBAIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uQm9keU5vZGUqIGZ1
bmN0aW9uQm9keSwgVW5sCiAjZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAg
ICAgLCBtX2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlv
bihjb2RlQmxvY2stPmlzQnVpbHRpbkZ1bmN0aW9uKCkpCiB7CisgICAgaWYgKG1faXNCdWlsdGlu
RnVuY3Rpb24pIHsKKyAgICAgICAgbV9zaG91bGRFbWl0UHJvZmlsZUhvb2tzID0gZmFsc2U7Cisg
ICAgICAgIG1fc2hvdWxkRW1pdERlYnVnSG9va3MgPSBmYWxzZTsKKyAgICB9CisKICAgICBpZiAo
bV9zaG91bGRFbWl0RGVidWdIb29rcykKICAgICAgICAgbV9jb2RlQmxvY2stPnNldE5lZWRzRnVs
bFNjb3BlQ2hhaW4odHJ1ZSk7CiAKQEAgLTQzOCw2ICs0NDUsNyBAQCBCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2Vk
RXZhbENvZAogI2VuZGlmCiAgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQogICAgICwgbV9l
eHByZXNzaW9uVG9vRGVlcChmYWxzZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oZmFsc2Up
CiB7CiAgICAgbV9jb2RlQmxvY2stPnNldE5lZWRzRnVsbFNjb3BlQ2hhaW4odHJ1ZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAppbmRleCA0ZTlmMjEzYzliZmE2Y2YxOTRiMWExNGZlOTE5ZTgzMzM3YWUzNWQ5Li4x
NTg0Mjc0Yjc4ZWE2YzBiZDBlZmIwYjk4MjVjODE4YmUwZGJjMDY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBA
IC00NjEsNyArNDYxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgc2hvdWxkRW1p
dERlYnVnSG9va3MoKSB7IHJldHVybiBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzOyB9CiAgICAgICAg
IAogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2Nr
LT5pc1N0cmljdE1vZGUoKTsgfQotCisgICAgICAgIAorICAgICAgICBib29sIGlzQnVpbHRpbkZ1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQorICAgICAgICAK
ICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTGFiZWw7CiAgICAgICAgIApAQCAt
NTQzLDcgKzU0NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG1ha2VGdW5jdGlvbihGdW5jdGlvbkJvZHlOb2RlKiBib2R5
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIGJvZHkpOworICAgICAgICAg
ICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29w
ZU5vZGUtPnNvdXJjZSgpLCBib2R5LCBmYWxzZSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlu
a2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbik7CiAgICAgICAgIH0K
IAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SW5pdExhenlSZWdpc3RlcihSZWdpc3RlcklEKik7
CkBAIC02NzcsNiArNjc5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBtX3Vz
ZXNFeGNlcHRpb25zOwogICAgICAgICBib29sIG1fZXhwcmVzc2lvblRvb0RlZXA7CisgICAgICAg
IGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlvbjsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMWZmZDRm
MzExODgyZDBlZTVjNTUxNGY1YjhiMjU5MzlkOTc1ZTM3OS4uNjJlY2EzNmExMGQ3NzA4YTkyOGQ0
M2FjMDNmMmZjODYxNWNlY2E3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjYsMTAgKzI2LDEwIEBACiAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgotI2luY2x1ZGUgIk5vZGVDb25zdHJ1
Y3RvcnMuaCIKIAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ2Fs
bEZyYW1lLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJEZWJ1
Z2dlci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTM4
LDYgKzM4LDcgQEAKICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiTGFiZWxTY29w
ZS5oIgogI2luY2x1ZGUgIkxleGVyLmgiCisjaW5jbHVkZSAiTm9kZUNvbnN0cnVjdG9ycy5oIgog
I2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRlICJQ
cm9wZXJ0eU5hbWVBcnJheS5oIgpAQCAtNTM1LDM2ICs1MzYsMzkgQEAgUmVnaXN0ZXJJRCogQ2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLAogICAgIFJlZlB0cjxMYWJlbD4gZW5kID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9iYXNlKTsK
ICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBz
dWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBE
ZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBtX2lkZW50KTsKKyAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0
aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmNhbGwp
OwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERl
c3RpbmF0aW9uKGRzdCwgZnVuY3Rpb24uZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SnVtcElm
Tm90RnVuY3Rpb25DYWxsKGZ1bmN0aW9uLmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7CisgICAgYm9v
bCBlbWl0Q2FsbENoZWNrID0gIWdlbmVyYXRvci5pc0J1aWx0aW5GdW5jdGlvbigpOworICAgIGlm
IChlbWl0Q2FsbENoZWNrKQorICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9u
Q2FsbChmdW5jdGlvbi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkpOworCiAgICAgewogICAgICAgICBp
ZiAobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKSB7CiAg
ICAgICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2Rl
OwogICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5t
X25leHQ7Ci0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJl
YWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9u
KGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1l
bnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShj
YWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwogICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0
KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0
KCkpOwotCiAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBvbGRMaXN0OwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9
IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2Uu
Z2V0KCkpOwogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRv
ciwgbV9hcmdzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRz
LnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVk
RnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKICAgICAgICAg
fQogICAgIH0KLSAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKLSAgICB7
Ci0gICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7
Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBiYXNlLmdldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdl
dCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBk
aXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIGlmIChlbWl0Q2FsbENoZWNr
KSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKKyAgICAgICAgeworICAgICAgICAgICAg
Q2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNl
LmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQo
KSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgfQorICAgICAgICBnZW5l
cmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFi
ZWwoZW5kLmdldCgpKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWUuZ2V0KCk7CiB9CiAKQEAgLTU4
NSw2NSArNTg5LDY3IEBAIFJlZ2lzdGVySUQqIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgUmVmUHRyPExhYmVs
PiBlbmQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFz
ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVz
c2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Npb25TdGFydCgpLCBzdWJl
eHByZXNzaW9uRW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbiA9IGdlbmVy
YXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0
KCksIG1faWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbjsKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihk
c3QsIGZ1bmN0aW9uLmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9u
QXBwbHkoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKLSAgICB7Ci0gICAgICAgIGlm
IChtYXlCZUNhbGwpIHsKLSAgICAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9h
cmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpIHsKLSAgICAgICAgICAgICAgICBBcmd1bWVudExpc3RO
b2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2RlOwotICAgICAgICAgICAgICAgIGlmICht
X2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCkgewotICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
bV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwci0+aXNTaW1wbGVBcnJheSgpKTsKLSAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9u
ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gc3RhdGljX2Nh
c3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwciktPnRvQXJn
dW1lbnRMaXN0KGdlbmVyYXRvci52bSgpLCAwLCAwKTsKLSAgICAgICAgICAgICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0
b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAgICAgICAgICAg
ICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0
ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRG
dW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBtX2FyZ3Mt
Pm1fbGlzdE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKLSAgICAgICAgICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92
ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAg
ICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3Mp
OwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50
aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5v
RXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbV9hcmdzLT5t
X2xpc3ROb2RlID0gb2xkTGlzdDsKKyAgICBib29sIGVtaXRDYWxsQ2hlY2sgPSAhZ2VuZXJhdG9y
LmlzQnVpbHRpbkZ1bmN0aW9uKCk7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKKyAgICAgICAg
ZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlv
bihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmFwcGx5KTsKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KGZ1bmN0aW9uLmdldCgp
LCByZWFsQ2FsbC5nZXQoKSk7CisgICAgfQorICAgIGlmIChtYXlCZUNhbGwpIHsKKyAgICAgICAg
aWYgKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcikgewor
ICAgICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogb2xkTGlzdCA9IG1fYXJncy0+bV9saXN0Tm9k
ZTsKKyAgICAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCkgeworICAgICAg
ICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByLT5pc1Np
bXBsZUFycmF5KCkpOworICAgICAgICAgICAgICAgIEFTU0VSVCghbV9hcmdzLT5tX2xpc3ROb2Rl
LT5tX25leHQtPm1fbmV4dCk7CisgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0g
c3RhdGljX2Nhc3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhw
ciktPnRvQXJndW1lbnRMaXN0KGdlbmVyYXRvci52bSgpLCAwLCAwKTsKKyAgICAgICAgICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdl
bmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CisgICAgICAgICAgICAg
ICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIo
KSwgb2xkTGlzdC0+bV9leHByKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwo
cmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9u
LCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBt
X2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVz
dGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50
cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAgICAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQo
KSk7CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhp
c1JlZ2lzdGVyKCksIG9sZExpc3QtPm1fZXhwcik7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0
ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9s
ZExpc3Q7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9hcmdzLT5tX2xp
c3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KTsKLSAgICAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBwcm9maWxlSG9va1JlZ2lzdGVyOwotICAgICAgICAgICAgaWYgKGdlbmVy
YXRvci5zaG91bGRFbWl0UHJvZmlsZUhvb2tzKCkpCi0gICAgICAgICAgICAgICAgcHJvZmlsZUhv
b2tSZWdpc3RlciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9y
LnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKLSAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiB0aGlzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9hcmdzLT5tX2xp
c3ROb2RlLT5tX2V4cHIpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFyZ3NSZWdp
c3RlcjsKLSAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MgPSBtX2FyZ3MtPm1fbGlz
dE5vZGUtPm1fbmV4dDsKLSAgICAgICAgICAgIGlmIChhcmdzLT5tX2V4cHItPmlzUmVzb2x2ZU5v
ZGUoKSAmJiBnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50cyhzdGF0aWNfY2FzdDxSZXNv
bHZlTm9kZSo+KGFyZ3MtPm1fZXhwciktPmlkZW50aWZpZXIoKSkpCi0gICAgICAgICAgICAgICAg
YXJnc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLnVuY2hlY2tlZFJlZ2lzdGVyRm9yQXJndW1lbnRzKCk7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJh
dG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7Ci0KLSAgICAgICAgICAgIC8vIEZ1bmN0aW9uLnBy
b3RvdHlwZS5hcHBseSBpZ25vcmVzIGV4dHJhIGFyZ3VtZW50cywgYnV0IHdlIHN0aWxsCi0gICAg
ICAgICAgICAvLyBuZWVkIHRvIGV2YWx1YXRlIHRoZW0gZm9yIHNpZGUgZWZmZWN0cy4KLSAgICAg
ICAgICAgIHdoaWxlICgoYXJncyA9IGFyZ3MtPm1fbmV4dCkpCi0gICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7Ci0KLSAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0Q2FsbFZhcmFyZ3MocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgdGhp
c1JlZ2lzdGVyLmdldCgpLCBhcmdzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKSwgcHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5l
cmF0b3IsIG1fYXJncyk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3Vt
ZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwogICAgICAgICB9Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9h
cmdzLT5tX2xpc3ROb2RlLT5tX25leHQpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJv
ZmlsZUhvb2tSZWdpc3RlcjsKKyAgICAgICAgaWYgKGdlbmVyYXRvci5zaG91bGRFbWl0UHJvZmls
ZUhvb2tzKCkpCisgICAgICAgICAgICBwcm9maWxlSG9va1JlZ2lzdGVyID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0g
Z2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5n
ZXQoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzUmVnaXN0ZXIgPSBnZW5lcmF0
b3IuZW1pdE5vZGUobV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpOworICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gYXJnc1JlZ2lzdGVyOworICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBhcmdz
ID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQ7CisgICAgICAgIGlmIChhcmdzLT5tX2V4cHIt
PmlzUmVzb2x2ZU5vZGUoKSAmJiBnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50cyhzdGF0
aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGFyZ3MtPm1fZXhwciktPmlkZW50aWZpZXIoKSkpCisgICAg
ICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IudW5jaGVja2VkUmVnaXN0ZXJGb3JBcmd1
bWVudHMoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJh
dG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7CisKKyAgICAgICAgLy8gRnVuY3Rpb24ucHJvdG90
eXBlLmFwcGx5IGlnbm9yZXMgZXh0cmEgYXJndW1lbnRzLCBidXQgd2Ugc3RpbGwKKyAgICAgICAg
Ly8gbmVlZCB0byBldmFsdWF0ZSB0aGVtIGZvciBzaWRlIGVmZmVjdHMuCisgICAgICAgIHdoaWxl
ICgoYXJncyA9IGFyZ3MtPm1fbmV4dCkpCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUo
YXJncy0+bV9leHByKTsKKworICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxWYXJhcmdzKHJldHVy
blZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJn
c1JlZ2lzdGVyLmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb2ZpbGVIb29rUmVn
aXN0ZXIuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgfQot
ICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOwotICAgIHsKKyAgICBpZiAo
ZW1pdENhbGxDaGVjaykgeworICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChyZWFsQ2FsbC5nZXQoKSk7CiAgICAgICAgIENh
bGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgIGdl
bmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgp
KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlv
bi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5n
ZXQoKSk7CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICBy
ZXR1cm4gcmV0dXJuVmFsdWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVf
aGFzaF90YWJsZQppbmRleCAzOTc5NzZiMDZjN2E5YjU4MzYzMzI5MDBhNmViYjkzZWM2OGI3NDg2
Li5jYWQ2NWJjNGNjODg4ZTMxNGY4OGQ2NjVkZDRhNmU2NDVhMDlhMzU1IDEwMDc1NQotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlCkBAIC0yODksNyArMjg5LDE3IEBAIHN1YiBvdXRw
dXQoKSB7CiAgICAgICAgICAgICAkaW50cmluc2ljID0gIlJlZ0V4cFRlc3RJbnRyaW5zaWMiIGlm
ICgka2V5IGVxICJ0ZXN0Iik7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoJHZhbHVlc1skaV17
InR5cGUifSBlcSAiRnVuY3Rpb24iKSAgeworICAgICAgICAgICAgbXkgJHRhYmxlSGVhZCA9ICRu
YW1lOworICAgICAgICAgICAgJHRhYmxlSGVhZCA9fiBzL1RhYmxlJC8vOworICAgICAgICAgICAg
cHJpbnQgIiAjaWYgSlNDX0JVSUxUSU5fRVhJU1RTKCIgLiB1YygkdGFibGVIZWFkIC4gJGtleSkg
LiIpXG4iOworICAgICAgICAgICAgcHJpbnQgIiAgIHsgXCIka2V5XCIsICgoJGF0dHJzWyRpXSkg
JiB+RnVuY3Rpb24pIHwgQnVpbHRpbiwgJGludHJpbnNpYywgKGludHB0cl90KXN0YXRpY19jYXN0
PEJ1aWx0aW5HZW5lcmF0b3I+KCIgLiAkdGFibGVIZWFkIC4gdWNmaXJzdCgka2V5KSAuICJDb2Rl
R2VuZXJhdG9yKSwgKGludHB0cl90KSRzZWNvbmRWYWx1ZSB9LFxuIjsKKyAgICAgICAgICAgIHBy
aW50ICIgI2Vsc2VcbiIKKyAgICAgICAgfQogICAgICAgICBwcmludCAiICAgeyBcIiRrZXlcIiwg
JGF0dHJzWyRpXSwgJGludHJpbnNpYywgKGludHB0cl90KSIgLiAkZmlyc3RDYXN0U3RyIC4gIigk
Zmlyc3RWYWx1ZSksIChpbnRwdHJfdCkiIC4gJHNlY29uZENhc3RTdHIgLiAiKCRzZWNvbmRWYWx1
ZSkgfSxcbiI7CisgICAgICAgIGlmICgkdmFsdWVzWyRpXXsidHlwZSJ9IGVxICJGdW5jdGlvbiIp
ICB7CisgICAgICAgICAgICBwcmludCAiICNlbmRpZlxuIgorICAgICAgICB9CiAgICAgICAgICRp
Kys7CiAgICAgfQogICAgIHByaW50ICIgICB7IDAsIDAsIE5vSW50cmluc2ljLCAwLCAwIH1cbiI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWluYXRvcnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb21pbmF0b3JzLmNwcAppbmRleCBhNWFl
NjE0YjkxOWIwZmQ0MzQ4MmQwMTVjYzI5NTA4NDBlNTRiMjYxLi4yMDA5NmU3M2IzNTE1OWM3NDM0
YmQyN2FiNmY2MzMzN2ZlOWRmNGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RvbWluYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9taW5hdG9ycy5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkRGR0RvbWluYXRvcnMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5o
IgogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvZGUuY3BwCmluZGV4IDkzYzQxZmJkZTQ0NzY0YjZhNmZlZTBiMjRiNDg0OWFlZGIxMTc0YzUu
LmQ4NmFjOGI0MTM3MzFjYjhkYmRmNGFkMzNlZmE1ZDc4NTIwNTFhMDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJM
RShERkdfSklUKQogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAyZmYwYzM0MTQ2ZTJj
MGJhMmZmNzZjNGQzZjdjNDZiYTNlMjU1MTQ3Li45MDQ0Y2RjNmI4YzNhZDRhMWU5NDE4OGRkMWQw
ZTIwMGU2OWZiOTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNs
dWRlICJWTS5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiTmFtZUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29u
c3RydWN0b3IuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWVlMWM3YTdjY2RkOTM3NjkyMGU3
NmQ3ZmU4ZDMwYWY5NTVmMzFhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucwpAQCAtMCwwICsxLDMwNCBAQAorIyEvdXNyL2Jpbi9w
eXRob24KKyMgQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorIyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyMg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorIyBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBmaWxlY21wCitpbXBvcnQgZm5tYXRjaAoraW1w
b3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzeXMKK2ltcG9ydCBkYXRl
dGltZQoraW1wb3J0IGpzb24KKworY29weXJpZ2h0VGV4dCA9ICIiIiAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovXG4KKyIiIgorCitnZW5lcmF0b3JTdHJpbmcgPSAiLyog
R2VuZXJhdGVkIGJ5ICVzIGRvIG5vdCBoYW5kIGVkaXQuICovXG4iICUgb3MucGF0aC5iYXNlbmFt
ZShfX2ZpbGVfXykKKworZnVuY3Rpb25IZWFkUmVnRXhwID0gcmUuY29tcGlsZShyImZ1bmN0aW9u
XHMrXHcrXHMqXCguKj9cKSIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitmdW5jdGlvbk5hbWVSZWdF
eHAgPSByZS5jb21waWxlKHIiZnVuY3Rpb25ccysoXHcrKVxzKlwoIiwgcmUuTVVMVElMSU5FIHwg
cmUuUykKK2Z1bmN0aW9uUGFyYW1ldGVyRmluZGVyID0gcmUuY29tcGlsZShyIl5mdW5jdGlvblxz
Kyg/Olx3KylccypcKCgoPzpccypcdyspP1xzKig/OlxzKixccypcdyspKik/XCkiLCByZS5NVUxU
SUxJTkUgfCByZS5TKQorCittdWx0aWxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwv
XCouKj9cKlwvIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK3NpbmdsZUxpbmVDb21tZW50UmVnRXhw
ID0gcmUuY29tcGlsZShyIlwvXC8uKj9cbiIsIHJlLk1VTFRJTElORSB8IHJlLlMpCisKK2RlZiBn
ZXRDb3B5cmlnaHQoc291cmNlKToKKyAgICBjb3B5cmlnaHRCbG9jayA9IG11bHRpbGluZUNvbW1l
bnRSZWdFeHAuZmluZGFsbChzb3VyY2UpWzBdCisgICAgY29weXJpZ2h0QmxvY2sgPSBjb3B5cmln
aHRCbG9ja1s6Y29weXJpZ2h0QmxvY2suaW5kZXgoIlJlZGlzdHJpYnV0aW9uIildCisgICAgY29w
eVJpZ2h0TGluZXMgPSBbXQorCisgICAgZm9yIGxpbmUgaW4gY29weXJpZ2h0QmxvY2suc3BsaXQo
IlxuIik6CisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIi8qIiwgIiIpCisgICAgICAgIGxp
bmUgPSBsaW5lLnJlcGxhY2UoIiovIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2Uo
IioiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiQ29weXJpZ2h0IiwgIiIpCisg
ICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoImNvcHlyaWdodCIsICIiKQorICAgICAgICBsaW5l
ID0gbGluZS5yZXBsYWNlKCIoQykiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgi
KGMpIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgaWYgbGVuKGxp
bmUpID09IDA6CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIGNvcHlSaWdodExpbmVz
LmFwcGVuZChsaW5lKQorICAgIAorICAgIHJldHVybiBsaXN0KHNldChjb3B5UmlnaHRMaW5lcykp
CisKKworCitkZWYgZ2V0RnVuY3Rpb25zKHNvdXJjZSk6CisKKyAgICBzb3VyY2UgPSBtdWx0aWxp
bmVDb21tZW50UmVnRXhwLnN1YigiLyoqLyIsIHNpbmdsZUxpbmVDb21tZW50UmVnRXhwLnN1Yigi
Ly9cbiIsIHNvdXJjZSkpCisKKyAgICBtYXRjaGVzID0gWyBmIGZvciBmIGluIGZ1bmN0aW9uSGVh
ZFJlZ0V4cC5maW5kaXRlcihzb3VyY2UpXQorICAgIGZ1bmN0aW9uQm91bmRzID0gW10KKyAgICBz
dGFydCA9IDAKKyAgICBlbmQgPSAwCisgICAgZm9yIG1hdGNoIGluIG1hdGNoZXM6CisgICAgICAg
IHN0YXJ0ID0gbWF0Y2guc3RhcnQoKQorICAgICAgICBpZiBzdGFydCA8IGVuZDoKKyAgICAgICAg
ICAgIGNvbnRpbnVlCisgICAgICAgIGVuZCA9IG1hdGNoLmVuZCgpCisgICAgICAgIHdoaWxlIHNv
dXJjZVtlbmRdICE9ICd7JzoKKyAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgZGVw
dGggPSAxCisgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgd2hpbGUgZGVwdGggPiAwOgor
ICAgICAgICAgICAgaWYgc291cmNlW2VuZF0gPT0gJ3snOgorICAgICAgICAgICAgICAgIGRlcHRo
ID0gZGVwdGggKyAxCisgICAgICAgICAgICBlbGlmIHNvdXJjZVtlbmRdID09ICd9JzoKKyAgICAg
ICAgICAgICAgICBkZXB0aCA9IGRlcHRoIC0gMQorICAgICAgICAgICAgZW5kID0gZW5kICsgMQor
ICAgICAgICBmdW5jdGlvbkJvdW5kcy5hcHBlbmQoKHN0YXJ0LCBlbmQpKQorCisgICAgZnVuY3Rp
b25zID0gW3NvdXJjZVtzdGFydDplbmRdLnN0cmlwKCkgZm9yIChzdGFydCwgZW5kKSBpbiBmdW5j
dGlvbkJvdW5kc10KKyAgICByZXN1bHQgPSBbXQorICAgIGZvciBmdW5jdGlvbiBpbiBmdW5jdGlv
bnM6CisgICAgICAgIGZ1bmN0aW9uID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5zdWIoIiIsIGZ1
bmN0aW9uKQorICAgICAgICBmdW5jdGlvbk5hbWUgPSBmdW5jdGlvbk5hbWVSZWdFeHAuZmluZGFs
bChmdW5jdGlvbilbMF0KKyAgICAgICAgZnVuY3Rpb25QYXJhbWV0ZXJzID0gZnVuY3Rpb25QYXJh
bWV0ZXJGaW5kZXIuZmluZGFsbChmdW5jdGlvbilbMF0uc3BsaXQoJywnKQorICAgICAgICBpZiBs
ZW4oZnVuY3Rpb25QYXJhbWV0ZXJzWzBdKSA9PSAwOgorICAgICAgICAgICAgZnVuY3Rpb25QYXJh
bWV0ZXJzID0gW10KKyAgICAgICAgICAgIAorICAgICAgICByZXN1bHQuYXBwZW5kKChmdW5jdGlv
bk5hbWUsIGZ1bmN0aW9uLCBmdW5jdGlvblBhcmFtZXRlcnMpKQorICAgIHJldHVybiByZXN1bHQK
KyAgICAgICAgCisKK2RlZiBnZW5lcmF0ZUNvZGUoc291cmNlKToKKyAgICBpbnB1dEZpbGUgPSBv
cGVuKHNvdXJjZSwgInIiKQorICAgIGJhc2VOYW1lID0gb3MucGF0aC5iYXNlbmFtZShzb3VyY2Up
LnJlcGxhY2UoIi5qcyIsICIiKQorICAgIAorICAgIHNvdXJjZSA9ICIiCisgICAgZm9yIGxpbmUg
aW4gaW5wdXRGaWxlOgorICAgICAgICBzb3VyY2UgPSBzb3VyY2UgKyBsaW5lCisgICAgCisgICAg
aWYgc3lzLnBsYXRmb3JtID09ICJjeWd3aW4iOgorICAgICAgICBzb3VyY2UgPSBzb3VyY2UucmVw
bGFjZSgiXHJcbiIsICJcbiIpCisgICAgcmV0dXJuIChiYXNlTmFtZSwgZ2V0RnVuY3Rpb25zKHNv
dXJjZSksIGdldENvcHlyaWdodChzb3VyY2UpKQorCitkZWYgbWFuZ2xlTmFtZShvYmplY3QsIG5h
bWUpOgorICAgIHFOYW1lID0gb2JqZWN0ICsgIi4iICsgbmFtZQorICAgIG1hbmdsZWROYW1lID0g
IiIKKyAgICBpID0gMAorICAgIHdoaWxlIGkgPCBsZW4ocU5hbWUpOgorICAgICAgICBpZiBxTmFt
ZVtpXSA9PSAnLic6CisgICAgICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lICsgcU5h
bWVbaSArIDFdLnVwcGVyKCkKKyAgICAgICAgICAgIGkgPSBpICsgMQorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZSArIHFOYW1lW2ldCisgICAgICAg
IGkgPSBpICsgMQorICAgIHJldHVybiBtYW5nbGVkTmFtZQorCitidWlsdGlucyA9IFtdCisKK2Jh
c2VOYW1lID0gc3lzLmFyZ3ZbLTFdCitidWlsdGluX2RlZmluaXRpb25zID0gc3lzLmFyZ3ZbMTot
MV0KKyhvdXRwdXRfYmFzZSwgXykgPSBvcy5wYXRoLnNwbGl0ZXh0KHN5cy5hcmd2Wy0xXSkKKwor
Y29weXJpZ2h0cyA9IFtdCitmb3IgZmlsZSBpbiBidWlsdGluX2RlZmluaXRpb25zOgorICAgIGlm
IGZubWF0Y2guZm5tYXRjaChmaWxlLCAnKi5qcycpOgorICAgICAgICAoYmFzZU5hbWUsIGZ1bmN0
aW9ucywgb2JqZWN0Q29weXJpZ2h0cykgPSBnZW5lcmF0ZUNvZGUoZmlsZSkKKyAgICAgICAgY29w
eXJpZ2h0cy5leHRlbmQob2JqZWN0Q29weXJpZ2h0cykKKyAgICAgICAgYnVpbHRpbnMuYXBwZW5k
KChiYXNlTmFtZSwgZnVuY3Rpb25zKSkKKworY29weXJpZ2h0cyA9IGxpc3Qoc2V0KGNvcHlyaWdo
dHMpKQorCitjb3B5cmlnaHRCb2R5ID0gIiIKK2ZvciBjb3B5cmlnaHQgaW4gY29weXJpZ2h0czoK
KyAgICBjb3B5cmlnaHRCb2R5ID0gY29weXJpZ2h0Qm9keSArIiAqIENvcHlyaWdodCAoQykgIiAr
IGNvcHlyaWdodCArICJcbiIKKworYnVpbHRpbnNIZWFkZXIgPSBvcGVuKG91dHB1dF9iYXNlICsg
Ii5oLnRtcCIsICJ3IikKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24gPSBvcGVuKG91dHB1dF9iYXNl
ICsgIi5jcHAudG1wIiwgInciKQorY29weXJpZ2h0VGV4dCA9ICIvKlxuIiArIGNvcHlyaWdodEJv
ZHkgKyBjb3B5cmlnaHRUZXh0CitidWlsdGluc0hlYWRlci53cml0ZSgiIiIlcworJXMKKworI2lm
bmRlZiBKU0NCdWlsdGluc19ICisjZGVmaW5lIEpTQ0J1aWx0aW5zX0gKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIElkZW50aWZpZXI7CitjbGFz
cyBKU0dsb2JhbE9iamVjdDsKK2NsYXNzIFNvdXJjZUNvZGU7CitjbGFzcyBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTsKK2NsYXNzIFZNOworCitGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1
aWx0aW5FeGVjdXRhYmxlKFZNJiwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCBjb25zdCBT
b3VyY2VDb2RlJik7CisKKyIiIiAlIChnZW5lcmF0b3JTdHJpbmcsIGNvcHlyaWdodFRleHQpKQor
Citjb2RlUmVmZXJlbmNlcyA9IFtdCisKK2ZvciAob2JqZWN0TmFtZSwgZnVuY3Rpb25zKSBpbiBi
dWlsdGluczoKKyAgICBwcmludCgiR2VuZXJhdGluZyBiaW5kaW5ncyBmb3IgdGhlICVzIGJ1aWx0
aW4uIiAlIG9iamVjdE5hbWUpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIi8qICVzIGZ1bmN0
aW9ucyAqL1xuIiAlIG9iamVjdE5hbWUpCisgICAgZm9yIChuYW1lLCBpbXBsZW1lbnRhdGlvbiwg
XykgaW4gZnVuY3Rpb25zOgorICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZU5hbWUob2JqZWN0
TmFtZSwgbmFtZSkKKyAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZVswXS5sb3dlcigp
ICsgbWFuZ2xlZE5hbWVbMTpdICsgIkNvZGUiCisgICAgICAgIGNvZGVSZWZlcmVuY2VzLmFwcGVu
ZCgobWFuZ2xlZE5hbWUsIG5hbWUsIGltcGxlbWVudGF0aW9uKSkKKyAgICAgICAgYnVpbHRpbnNI
ZWFkZXIud3JpdGUoImV4dGVybiBjb25zdCBjaGFyKiBzXyVzO1xuIiAlIG1hbmdsZWROYW1lKQor
ICAgICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiZXh0ZXJuIGNvbnN0IGludCBzXyVzTGVuZ3Ro
O1xuIiAlIG1hbmdsZWROYW1lKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJcbiIpCisgICAg
YnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0ZPUkVBQ0hfJXNfQlVJTFRJTihtYWNy
bykgXFxcbiIgJSBvYmplY3ROYW1lLnJlcGxhY2UoIi4iLCAiXyIpLnVwcGVyKCkpCisgICAgZm9y
IChuYW1lLCBpbXBsZW1lbnRhdGlvbiwgYXJndW1lbnRzKSBpbiBmdW5jdGlvbnM6CisgICAgICAg
IG1hbmdsZWROYW1lID0gbWFuZ2xlTmFtZShvYmplY3ROYW1lLCBuYW1lKQorICAgICAgICBidWls
dGluc0hlYWRlci53cml0ZSgiICAgIG1hY3JvKCVzLCAlcywgJWQpIFxcXG4iICUgKG5hbWUsIG1h
bmdsZWROYW1lLCBsZW4oYXJndW1lbnRzKSkpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxu
IikKKyAgICBmb3IgKG5hbWUsIGltcGxlbWVudGF0aW9uLCBhcmd1bWVudHMpIGluIGZ1bmN0aW9u
czoKKyAgICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0JVSUxUSU5fJXMg
MVxuIiAlIG1hbmdsZU5hbWUob2JqZWN0TmFtZSwgbmFtZSkudXBwZXIoKSkKKyAgICBidWlsdGlu
c0hlYWRlci53cml0ZSgiXG5cbiIpCituYW1lcyA9IFtdCitidWlsdGluc0hlYWRlci53cml0ZSgi
I2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOKG1hY3JvKVxcXG4iKQorZm9yIChjb2RlUmVmZXJl
bmNlLCBmdW5jdGlvbk5hbWUsIHNvdXJjZSkgaW4gY29kZVJlZmVyZW5jZXM6CisgICAgYnVpbHRp
bnNIZWFkZXIud3JpdGUoIiAgICBtYWNybyglcywgJXMsIHNfJXNMZW5ndGgpIFxcXG4iICUgKGNv
ZGVSZWZlcmVuY2UsIGZ1bmN0aW9uTmFtZSwgY29kZVJlZmVyZW5jZSkpCisgICAgbmFtZXMuYXBw
ZW5kKGZ1bmN0aW9uTmFtZSkKKworYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuXG4iKQorYnVpbHRp
bnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1F
KG1hY3JvKSBcXFxuIikKK2ZvciBuYW1lIGluIHNvcnRlZChzZXQobmFtZXMpKToKKyAgICBidWls
dGluc0hlYWRlci53cml0ZSgiICAgIG1hY3JvKCVzKSBcXFxuIiAlIG5hbWUpCitidWlsdGluc0hl
YWRlci53cml0ZSgiIiIKKworI2RlZmluZSBKU0NfREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihj
b2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAorICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihWTSYpOworCitKU0NfRk9SRUFDSF9CVUlMVElO
KEpTQ19ERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIEpTQ19ERUNMQVJFX0JVSUxU
SU5fR0VORVJBVE9SCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fRVhJU1RTKG5hbWUpIGRlZmluZWQo
SlNDX0JVSUxUSU5fIyNuYW1lKQorCit9CisKKyNlbmRpZgorCisiIiIpCisKK2J1aWx0aW5zSW1w
bGVtZW50YXRpb24ud3JpdGUoIiIiJXMKKyVzCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lu
Y2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIK
KyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0MgeworCisiIiIgICUgKGdlbmVyYXRvclN0cmlu
ZywgY29weXJpZ2h0VGV4dCkpCisKK2ZvciAoY29kZVJlZmVyZW5jZSwgbmFtZSwgc291cmNlKSBp
biBjb2RlUmVmZXJlbmNlczoKKyAgICBzb3VyY2UgPSAiKGZ1bmN0aW9uICIgKyBzb3VyY2Vbc291
cmNlLmluZGV4KCIoIik6XSArICIpIgorICAgIGxpbmVzID0ganNvbi5kdW1wcyhzb3VyY2UpWzE6
LTFdLnNwbGl0KCJcXG4iKQorICAgIHNvdXJjZUxlbmd0aCA9IGxlbihzb3VyY2UpCisgICAgc291
cmNlID0gIiIKKyAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgc291cmNlID0gc291cmNl
ICsgKCIgICAgXCIlc1xcblwiIFxcXG4iICUgbGluZSkKKyAgICBidWlsdGluc0ltcGxlbWVudGF0
aW9uLndyaXRlKCJjb25zdCBjaGFyKiBzXyVzID1cbiVzO1xuXG4iICUgKGNvZGVSZWZlcmVuY2Us
IHNvdXJjZSkpCisgICAgYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiY29uc3QgaW50IHNf
JXNMZW5ndGggPSAlZDtcblxuIiAlIChjb2RlUmVmZXJlbmNlLCBzb3VyY2VMZW5ndGggKyAxKSkg
IyArIDEgZm9yIFxuCisKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoIiIiCitGdW5jdGlv
bkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKFZNJiB2bSwgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlKQoreworICAgIHVuc2lnbmVkIGxpbmVDb3VudCA9IHVubGlua2VkRXhlY3V0YWJsZS0+bGlu
ZUNvdW50KCk7CisgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSAxOworICAgIHVuc2lnbmVkIHNv
dXJjZUxlbmd0aCA9IHVubGlua2VkRXhlY3V0YWJsZS0+c291cmNlTGVuZ3RoKCk7CisgICAgYm9v
bCBlbmRDb2x1bW5Jc09uU3RhcnRMaW5lID0gIWxpbmVDb3VudDsKKyAgICB1bnNpZ25lZCBlbmRD
b2x1bW5FeGNsdWRpbmdCcmFjZXMgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnVubGlua2VkQm9keUVu
ZENvbHVtbigpICsgKGVuZENvbHVtbklzT25TdGFydExpbmUgPyAwIDogMSk7CisgICAgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnN0YXJ0T2Zmc2V0KCk7CisgICAg
dW5zaWduZWQgc3RhcnRPZmZzZXRFeGNsdWRpbmdPcGVuQnJhY2UgPSBzdGFydE9mZnNldCArIDE7
CisgICAgdW5zaWduZWQgZW5kT2Zmc2V0RXhjbHVkaW5nQ2xvc2VCcmFjZSA9IHN0YXJ0T2Zmc2V0
ICsgc291cmNlTGVuZ3RoIC0gMTsKKyAgICBTb3VyY2VDb2RlIGJvZHlTb3VyY2Uoc291cmNlLnBy
b3ZpZGVyKCksIHN0YXJ0T2Zmc2V0RXhjbHVkaW5nT3BlbkJyYWNlLCBlbmRPZmZzZXRFeGNsdWRp
bmdDbG9zZUJyYWNlLCAwLCBzdGFydENvbHVtbik7CisgICAgcmV0dXJuIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6Y3JlYXRlKHZtLCBib2R5U291cmNlLCB1bmxpbmtlZEV4ZWN1dGFibGUsIDAsIGxpbmVD
b3VudCwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbkV4Y2x1ZGluZ0JyYWNlcywgZmFsc2UpOworfQor
CisjZGVmaW5lIEpTQ19ERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9u
TmFtZSwgYXJndW1lbnRDb3VudCkgXFwKK0Z1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dl
bmVyYXRvcihWTSYgdm0pIFxcCit7IFxcCisgICAgcmV0dXJuIGNyZWF0ZUJ1aWx0aW5FeGVjdXRh
YmxlKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKSwg
dm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IFxcCit9CisKK0pT
Q19GT1JFQUNIX0JVSUxUSU4oSlNDX0RFRklORV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBK
U0NfREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCit9CisKKyIiIikKKworYnVpbHRpbnNIZWFkZXIu
Y2xvc2UoKQorYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi5jbG9zZSgpCisKK2lmIChub3Qgb3MucGF0
aC5leGlzdHMob3V0cHV0X2Jhc2UgKyAiLmgiKSkgb3IgKG5vdCBmaWxlY21wLmNtcChvdXRwdXRf
YmFzZSArICIuaC50bXAiLCBvdXRwdXRfYmFzZSArICIuaCIsIHNoYWxsb3c9RmFsc2UpKToKKyAg
ICBvcy5yZW5hbWUob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmgiKQor
ZWxzZToKKyAgICBvcy5yZW1vdmUob3V0cHV0X2Jhc2UgKyAiLmgudG1wIikKKworaWYgKG5vdCBv
cy5wYXRoLmV4aXN0cyhvdXRwdXRfYmFzZSArICIuY3BwIikpIG9yIChub3QgZmlsZWNtcC5jbXAo
b3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCBvdXRwdXRfYmFzZSArICIuY3BwIiwgc2hhbGxvdz1G
YWxzZSkpOgorICAgIG9zLnJlbmFtZShvdXRwdXRfYmFzZSArICIuY3BwLnRtcCIsIG91dHB1dF9i
YXNlICsgIi5jcHAiKQorZWxzZToKKyAgICBvcy5yZW1vdmUob3V0cHV0X2Jhc2UgKyAiLmNwcC50
bXAiKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hl
ZENhbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgK
aW5kZXggMmNhM2U5Nzk0MGM3YzExMDZjMWJhYmExZjM1NGZlODQ3YjQzODViMy4uMzBjYWQyYTE0
ZmZkYmZiNGQ1N2NmNWExMmZjYjkwMGUyNjRmODc2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgLCBtX2ludGVycHJldGVyKGNhbGxGcmFtZS0+aW50ZXJwcmV0
ZXIoKSkKICAgICAgICAgICAgICwgbV9lbnRyeVNjb3BlKGNhbGxGcmFtZS0+dm0oKSwgZnVuY3Rp
b24tPnNjb3BlKCktPmdsb2JhbE9iamVjdCgpKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NF
UlQoIWZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpKTsKKyAgICAgICAgICAgIEFTU0VSVCghZnVu
Y3Rpb24tPmlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkpOwogICAgICAgICAgICAgaWYgKGNhbGxG
cmFtZS0+dm0oKS5pc1NhZmVUb1JlY3Vyc2UoKSkgewogICAgICAgICAgICAgICAgIG1fYXJndW1l
bnRzLnJlc2l6ZShhcmd1bWVudENvdW50KTsKICAgICAgICAgICAgICAgICBtX2Nsb3N1cmUgPSBt
X2ludGVycHJldGVyLT5wcmVwYXJlRm9yUmVwZWF0Q2FsbChmdW5jdGlvbi0+anNFeGVjdXRhYmxl
KCksIGNhbGxGcmFtZSwgJm1fcHJvdG9DYWxsRnJhbWUsIGZ1bmN0aW9uLCBhcmd1bWVudENvdW50
ICsgMSwgZnVuY3Rpb24tPnNjb3BlKCksIG1fYXJndW1lbnRzLmRhdGEoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCBjYTg5
MGIwNmVhMzNmYTllN2YxZmE1MWEzNWVhMmQ0OGQwMDlhMzhhLi42YzliZjk2YzE1ZjYwOWUyNjVj
ZTI1MGE0NWJmMDg2MWQwNmNkMWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdGFja0lubGluZXMuaCIKICNp
bmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5jbHVkZSAiTExJbnRDTG9vcC5oIgogI2luY2x1ZGUgIkxM
SW50VGh1bmtzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvUHJvdG9DYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L1Byb3RvQ2FsbEZyYW1lLmNwcAppbmRleCBmMGUwMmJhNGU0NzZmOTljYzkxM2IwNDYyYWQyNzk1
MDA2MDlmYTNhLi4xYzI0MGRjZDcxYmU1MjlkODhjYmY0NjFkMTg2OGY1ZWIyYjAyYWQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFt
ZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5oIgogCiAj
aW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNp
bmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGNhN2FkMTFmMmUwYjhhM2I4YjE4NTg5
MWQ3ZTUyMmJhZTQwM2EyMzYuLmNiNTUwN2JlYWM1NWJmOGViMWIzN2VjOTBmY2FiMTkzNGZiNDhl
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
czMyXzY0LmNwcAppbmRleCA5OGQxMGEzZjRkY2IxMmQ4OWYzN2ExMmYyMjYwNGI5NDZlMDhlNjI3
Li5kZDAzNTM3NzllOGJkZjk4ZjQ2NThhMzA3ZTMyZDA2ZTQ3MjQ0MTU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlO
YW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCmluZGV4IDkyOGRkNTBmYjAxNmUyNzE2NDRhNTc1ZTMwYWI1ZjI1MTZlYjUwZWMuLjk5ZjVk
YjA3ZTY2YjlkOGM0YjIzNGI5MmFkNTExM2UwOTEyZjU5ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNDEsMTAgKzQxLDEzIEBACiAjaW5jbHVk
ZSAiSklULmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9uV3JhcHBlcnMuaCIKICNpbmNsdWRlICJK
SVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIgorI2luY2x1ZGUgIkpTQ0pTVmFs
dWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5j
bHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTU3RhY2tJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUu
aCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAK
aW5kZXggMjZkZDRkMWFmNzQ1YWZhMWZiYzUzYTljMDIzYTZlNDc0MWE2NmEwOS4uZGYxYmQzYTlj
ZmE0MDJjNTJhNTIxMWNmMWFjY2U2N2Q1MTIxYjdlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTI5LDExICsyOSwxMyBAQAogI2lu
Y2x1ZGUgIkpJVC5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29tbW9u
SWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJHQ0F3YXJlSklUU3R1YlJvdXRpbmUuaCIKICNpbmNs
dWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUg
IkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTVmFyaWFibGVPYmplY3QuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAKaW5kZXggNDA3ODRiNDk0MzFmZTAyZThlNDUyMmYxNjMwOGM5MDI0NzE2ZDIzNi4u
MmY3OTU1NTRiMDkxZGVlYmJjMDNiZjJiZThjNzRmNDFhZTU0MWVkNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJK
U1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGlu
ZXMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgi
CiAjaW5jbHVkZSAiU3RhY2tWaXNpdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCmluZGV4IDYwNGNjMjYzY2Y5N2Uw
ODZmZWQwNmVjOTAzYjBlYzE5ODNlNzgxMzcuLjgxNjZlN2Y4MWZhODlhN2Q0ZjUwYzVmMWE5NGZh
OTY4YzVkNTdlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiSklU
U3R1YnMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCi0jaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5j
bHVkZSAiVk0uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTT2Jq
ZWN0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cAppbmRleCA2NjQ0NGJhYTA4YjU2MmRkNjk3ZTBjY2Q3NzIxZTU1YzE1YmE0OTEzLi44M2M5OGRm
ZDY0YjBlYzlhY2ZhMzk2M2E2MTA3ZjE1NTBkMGNmYzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAKICNpbmNs
dWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJKU1N0YWNrSW5saW5lcy5oIgotI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5j
bHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNs
dWRlICJMTEludENvbW1vbi5oIgogI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCA4ZWMxZmQzMmEzYWRhMjJl
MTI1MjI5NTcwZGNmN2ZmMjhlYWJmMWVkLi40NmE3Yzc2YjJmOTAxZmMzY2MzNmQxY2UwYzA3MzUz
ZWIwNmIyZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1
aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApA
QCAtODg4LDkgKzg4OCw5IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRnVuY3Rp
b25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uCiAgICAgQVNTRVJUKGZ1
bmMtPmlzRG90QWNjZXNzb3JOb2RlKCkpOwogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3Rh
dGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4oZnVuYyk7CiAgICAgRnVuY3Rpb25DYWxsRG90Tm9k
ZSogbm9kZTsKLSAgICBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1l
cy0+Y2FsbCkKKyAgICBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1l
cy0+Y2FsbCB8fCBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5jYWxs
UHJpdmF0ZU5hbWUpCiAgICAgICAgIG5vZGUgPSBuZXcgKG1fdm0pIENhbGxGdW5jdGlvbkNhbGxE
b3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRp
dm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7Ci0gICAgZWxzZSBpZiAoZG90LT5pZGVudGlmaWVy
KCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXBwbHkpCisgICAgZWxzZSBpZiAoZG90LT5pZGVu
dGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXBwbHkgfHwgZG90LT5pZGVudGlmaWVy
KCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXBwbHlQcml2YXRlTmFtZSkKICAgICAgICAgbm9k
ZSA9IG5ldyAobV92bSkgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJh
c2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVu
ZCk7CiAgICAgZWxzZQogICAgICAgICBub2RlID0gbmV3IChtX3ZtKSBGdW5jdGlvbkNhbGxEb3RO
b2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90
LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
Y3BwCmluZGV4IGNhNGJiNGYwYWRlOGQ2YmM4MjY5MWE2YzAwMDE0Y2YxOThiZDg4YmQuLmNjYjA3
OWQ5NzVhMTQxYzVjNGIyZDdiNjIzMTMwMDA3MDk3Nzc4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC0yNSwxMCArMjUsMTAgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJMZXhlci5oIgogCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIK
KyNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIK
LQogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCi0jaW5jbHVkZSAiSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIk5vZGVJbmZvLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNs
dWRlIDx3dGYvZHRvYS5oPgpAQCAtOTAsNiArOTAsNyBAQCBlbnVtIENoYXJhY3RlclR5cGUgewog
CiAgICAgLy8gT3RoZXIgdHlwZXMgKG9ubHkgb25lIHNvIGZhcikKICAgICBDaGFyYWN0ZXJXaGl0
ZVNwYWNlLAorICAgIENoYXJhY3RlclByaXZhdGVJZGVudGlmaWVyU3RhcnQKIH07CiAKIC8vIDI1
NiBMYXRpbi0xIGNvZGVzCkBAIC0xNTgsNyArMTU5LDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IHNob3J0IHR5cGVzT2ZMYXRpbjFDaGFyYWN0ZXJzWzI1Nl0gPSB7CiAvKiAgNjEgLSA9ICAgICAg
ICAgICAgICAgICAgKi8gQ2hhcmFjdGVyRXF1YWwsCiAvKiAgNjIgLSA+ICAgICAgICAgICAgICAg
ICAgKi8gQ2hhcmFjdGVyR3JlYXRlciwKIC8qICA2MyAtID8gICAgICAgICAgICAgICAgICAqLyBD
aGFyYWN0ZXJRdWVzdGlvbiwKLS8qICA2NCAtIEAgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0
ZXJJbnZhbGlkLAorLyogIDY0IC0gQCAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlclByaXZh
dGVJZGVudGlmaWVyU3RhcnQsCiAvKiAgNjUgLSBBICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFj
dGVySWRlbnRpZmllclN0YXJ0LAogLyogIDY2IC0gQiAgICAgICAgICAgICAgICAgICovIENoYXJh
Y3RlcklkZW50aWZpZXJTdGFydCwKIC8qICA2NyAtIEMgICAgICAgICAgICAgICAgICAqLyBDaGFy
YWN0ZXJJZGVudGlmaWVyU3RhcnQsCkBAIC00ODYsOSArNDg3LDEwIEBAIHN0YXRpYyBjb25zdCBM
Q2hhciBzaW5nbGVDaGFyYWN0ZXJFc2NhcGVWYWx1ZXNGb3JBU0NJSVsxMjhdID0gewogfTsKIAog
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1MZXhlcjxUPjo6TGV4ZXIoVk0qIHZtKQorTGV4ZXI8VD46
OkxleGVyKFZNKiB2bSwgSlNQYXJzZXJTdHJpY3RuZXNzIHN0cmljdG5lc3MpCiAgICAgOiBtX2lz
UmVwYXJzaW5nKGZhbHNlKQogICAgICwgbV92bSh2bSkKKyAgICAsIG1fcGFyc2luZ0J1aWx0aW5G
dW5jdGlvbihzdHJpY3RuZXNzID09IEpTUGFyc2VCdWlsdGluKQogewogfQogCkBAIC03NTMsNyAr
NzU1LDI3IEBAIGlubGluZSB2b2lkIExleGVyPFQ+OjpyZWNvcmQxNihpbnQgYykKICAgICBBU1NF
UlQoYyA8PSBzdGF0aWNfY2FzdDxpbnQ+KFVTSFJUX01BWCkpOwogICAgIG1fYnVmZmVyMTYuYXBw
ZW5kKHN0YXRpY19jYXN0PFVDaGFyPihjKSk7CiB9Ci0KKyAgICAKKyNpZiAhQVNTRVJUX0RJU0FC
TEVECitib29sIGlzU2FmZUlkZW50aWZpZXIoVk0mIHZtLCBjb25zdCBJZGVudGlmaWVyKiBpZGVu
dCkKK3sKKyAgICBpZiAoIWlkZW50KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAvKiBKdXN0
IGJsb2NrIGFueSB1c2Ugb2Ygc3VzcGljaW91cyBpZGVudGlmaWVycy4gIFRoaXMgaXMgaW50ZW5k
ZWQgdG8KKyAgICAgKiBiZSB1c2VkIGFzIGEgc2FmZXR5IG5ldCB3aGlsZSBpbXBsZW1lbnRpbmcg
YnVpbHRpbnMuCisgICAgICovCisgICAgaWYgKCppZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5j
YWxsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCppZGVudCA9PSB2bS5wcm9wZXJ0
eU5hbWVzLT5hcHBseSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgqaWRlbnQgPT0g
dm0ucHJvcGVydHlOYW1lcy0+ZXZhbCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgq
aWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+RnVuY3Rpb24pCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorICAgIAogdGVtcGxhdGUgPD4KIHRlbXBs
YXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5
cGUgTGV4ZXI8TENoYXI+OjpwYXJzZUlkZW50aWZpZXIoSlNUb2tlbkRhdGEqIHRva2VuRGF0YSwg
dW5zaWduZWQgbGV4ZXJGbGFncywgYm9vbCBzdHJpY3RNb2RlKQogewpAQCAtNzY1LDcgKzc4Nywx
MSBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5F
IEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAogICAgICAgICAgICAgcmV0dXJuIGtleXdvcmQg
PT0gUkVTRVJWRURfSUZfU1RSSUNUICYmICFzdHJpY3RNb2RlID8gSURFTlQgOiBrZXl3b3JkOwog
ICAgICAgICB9CiAgICAgfQotCisgICAgCisgICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gbV9jdXJy
ZW50ID09ICdAJyAmJiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247CisgICAgaWYgKGlzUHJpdmF0
ZU5hbWUpCisgICAgICAgIHNoaWZ0KCk7CisgICAgCiAgICAgY29uc3QgTENoYXIqIGlkZW50aWZp
ZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTGlu
ZVN0YXJ0ID0gY3VycmVudExpbmVTdGFydE9mZnNldCgpOwogICAgIApAQCAtNzc5LDE1ICs4MDUs
MjYgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElO
RSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKIAogICAgIGNvbnN0IElkZW50aWZpZXIqIGlk
ZW50ID0gMDsKICAgICAKLSAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcikgeworICAgIGlm
IChzaG91bGRDcmVhdGVJZGVudGlmaWVyIHx8IG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgewog
ICAgICAgICBpbnQgaWRlbnRpZmllckxlbmd0aCA9IGN1cnJlbnRTb3VyY2VQdHIoKSAtIGlkZW50
aWZpZXJTdGFydDsKICAgICAgICAgaWRlbnQgPSBtYWtlSWRlbnRpZmllcihpZGVudGlmaWVyU3Rh
cnQsIGlkZW50aWZpZXJMZW5ndGgpOwotCisgICAgICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVu
Y3Rpb24pIHsKKyAgICAgICAgICAgIGlmICghaXNTYWZlSWRlbnRpZmllcigqbV92bSwgaWRlbnQp
ICYmICFpc1ByaXZhdGVOYW1lKSB7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2Ug
PSBtYWtlU3RyaW5nKCJUaGUgdXNlIG9mICciLCBpZGVudC0+c3RyaW5nKCksICInIGlzIGRpc2Fs
bG93ZWQgaW4gYnVpbHRpbiBmdW5jdGlvbnMuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVS
Uk9SVE9LOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisg
ICAgICAgICAgICAgICAgaWRlbnQgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZXRQcml2YXRlTmFt
ZSgqaWRlbnQpOworICAgICAgICAgICAgZWxzZSBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5
TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQpCisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5pZGVu
dCA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkUHJpdmF0ZU5hbWU7Cisg
ICAgICAgICAgICBpZiAoIWlkZW50KQorICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEX1BS
SVZBVEVfTkFNRV9FUlJPUlRPSzsKKyAgICAgICAgfQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50
ID0gaWRlbnQ7CiAgICAgfSBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAwOwogCi0g
ICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZs
YWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMpKSkgeworICAgIGlmIChVTkxJS0VM
WSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICEobGV4ZXJGbGFncyAmIExleGVyRmxh
Z3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsKICAgICAgICAgQVNT
RVJUKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpOwogICAgICAgICBpZiAocmVtYWluaW5nIDwgbWF4
VG9rZW5MZW5ndGgpIHsKICAgICAgICAgICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSBtX3Zt
LT5rZXl3b3Jkcy0+Z2V0S2V5d29yZCgqaWRlbnQpOwpAQCAtODE0LDYgKzg1MSwxMCBAQCB0ZW1w
bGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5U
eXBlIExleGVyPFVDaGFyPjo6cAogICAgICAgICAgICAgcmV0dXJuIGtleXdvcmQgPT0gUkVTRVJW
RURfSUZfU1RSSUNUICYmICFzdHJpY3RNb2RlID8gSURFTlQgOiBrZXl3b3JkOwogICAgICAgICB9
CiAgICAgfQorICAgIAorICAgIGJvb2wgaXNQcml2YXRlTmFtZSA9IG1fY3VycmVudCA9PSAnQCcg
JiYgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uOworICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAg
ICAgICBzaGlmdCgpOwogCiAgICAgY29uc3QgVUNoYXIqIGlkZW50aWZpZXJTdGFydCA9IGN1cnJl
bnRTb3VyY2VQdHIoKTsKICAgICBpbnQgaWRlbnRpZmllckxpbmVTdGFydCA9IGN1cnJlbnRMaW5l
U3RhcnRPZmZzZXQoKTsKQEAgLTgyNiw2ICs4NjcsNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRD
cmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6
cAogICAgIH0KICAgICAKICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50ID09ICdcXCcpKSB7Cisg
ICAgICAgIEFTU0VSVCghaXNQcml2YXRlTmFtZSk7CiAgICAgICAgIHNldE9mZnNldEZyb21Tb3Vy
Y2VQdHIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGluZVN0YXJ0KTsKICAgICAgICAgcmV0
dXJuIHBhcnNlSWRlbnRpZmllclNsb3dDYXNlPHNob3VsZENyZWF0ZUlkZW50aWZpZXI+KHRva2Vu
RGF0YSwgbGV4ZXJGbGFncywgc3RyaWN0TW9kZSk7CiAgICAgfQpAQCAtODM3LDE4ICs4NzksMjkg
QEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBK
U1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAKIAogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50
ID0gMDsKICAgICAKLSAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcikgeworICAgIGlmIChz
aG91bGRDcmVhdGVJZGVudGlmaWVyIHx8IG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgewogICAg
ICAgICBpbnQgaWRlbnRpZmllckxlbmd0aCA9IGN1cnJlbnRTb3VyY2VQdHIoKSAtIGlkZW50aWZp
ZXJTdGFydDsKICAgICAgICAgaWYgKGlzQWxsOEJpdCkKICAgICAgICAgICAgIGlkZW50ID0gbWFr
ZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hhcihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5n
dGgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBpZGVudCA9IG1ha2VJZGVudGlmaWVyKGlk
ZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCk7Ci0gICAgICAgIAorICAgICAgICBpZiAo
bV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CisgICAgICAgICAgICBpZiAoIWlzU2FmZUlkZW50
aWZpZXIoKm1fdm0sIGlkZW50KSAmJiAhaXNQcml2YXRlTmFtZSkgeworICAgICAgICAgICAgICAg
IG1fbGV4RXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZygiVGhlIHVzZSBvZiAnIiwgaWRlbnQtPnN0
cmluZygpLCAiJyBpcyBkaXNhbGxvd2VkIGluIGJ1aWx0aW4gZnVuY3Rpb25zLiIpOworICAgICAg
ICAgICAgICAgIHJldHVybiBFUlJPUlRPSzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
IChpc1ByaXZhdGVOYW1lKQorICAgICAgICAgICAgICAgIGlkZW50ID0gbV92bS0+cHJvcGVydHlO
YW1lcy0+Z2V0UHJpdmF0ZU5hbWUoKmlkZW50KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCppZGVu
dCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkKQorICAgICAgICAgICAg
ICAgIHRva2VuRGF0YS0+aWRlbnQgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5
d29yZFByaXZhdGVOYW1lOworICAgICAgICAgICAgaWYgKCFpZGVudCkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gSU5WQUxJRF9QUklWQVRFX05BTUVfRVJST1JUT0s7CisgICAgICAgIH0KICAgICAg
ICAgdG9rZW5EYXRhLT5pZGVudCA9IGlkZW50OwogICAgIH0gZWxzZQogICAgICAgICB0b2tlbkRh
dGEtPmlkZW50ID0gMDsKICAgICAKLSAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRv
a2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxhZ3MgJiBMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3Jk
cykpKSB7CisgICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYg
IShsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMpKSAmJiAhaXNQcml2
YXRlTmFtZSkgewogICAgICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAg
ICAgIGlmIChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgewogICAgICAgICAgICAgY29uc3Qg
SGFzaEVudHJ5KiBlbnRyeSA9IG1fdm0tPmtleXdvcmRzLT5nZXRLZXl3b3JkKCppZGVudCk7CkBA
IC0xNjU4LDYgKzE3MTEsNyBAQCBpbk51bWJlckFmdGVyRGVjaW1hbFBvaW50OgogICAgICAgICBB
U1NFUlQoaXNJZGVudFN0YXJ0KG1fY3VycmVudCkpOwogICAgICAgICBGQUxMVEhST1VHSDsKICAg
ICBjYXNlIENoYXJhY3RlckJhY2tTbGFzaDoKKyAgICAgICAgcGFyc2VJZGVudDoKICAgICAgICAg
aWYgKGxleGVyRmxhZ3MgJiBMZXhleEZsYWdzRG9udEJ1aWxkS2V5d29yZHMpCiAgICAgICAgICAg
ICB0b2tlbiA9IHBhcnNlSWRlbnRpZmllcjxmYWxzZT4odG9rZW5EYXRhLCBsZXhlckZsYWdzLCBz
dHJpY3RNb2RlKTsKICAgICAgICAgZWxzZQpAQCAtMTY3MCw2ICsxNzI0LDExIEBAIGluTnVtYmVy
QWZ0ZXJEZWNpbWFsUG9pbnQ6CiAgICAgICAgIG1fdGVybWluYXRvciA9IHRydWU7CiAgICAgICAg
IG1fbGluZVN0YXJ0ID0gbV9jb2RlOwogICAgICAgICBnb3RvIHN0YXJ0OworICAgIGNhc2UgQ2hh
cmFjdGVyUHJpdmF0ZUlkZW50aWZpZXJTdGFydDoKKyAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0
aW5GdW5jdGlvbikKKyAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudDsKKworICAgICAgICBGQUxM
VEhST1VHSDsKICAgICBjYXNlIENoYXJhY3RlckludmFsaWQ6CiAgICAgICAgIG1fbGV4RXJyb3JN
ZXNzYWdlID0gaW52YWxpZENoYXJhY3Rlck1lc3NhZ2UoKTsKICAgICAgICAgdG9rZW4gPSBFUlJP
UlRPSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAppbmRleCAyOGM2MWJhMTk4ZDJj
MTVhNDliYjE4NTJlZDMwYmVmZWI4OTA0MDA4Li5iODg3M2U5OTUwMjg2NDRiZjhjYmIzZDRjMmRh
NTYyZTkzZTBlOGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xl
eGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCkBAIC03Miw3
ICs3Miw3IEBAIGNsYXNzIExleGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAog
cHVibGljOgotICAgIExleGVyKFZNKik7CisgICAgTGV4ZXIoVk0qLCBKU1BhcnNlclN0cmljdG5l
c3MpOwogICAgIH5MZXhlcigpOwogCiAgICAgLy8gQ2hhcmFjdGVyIG1hbmlwdWxhdGlvbiBmdW5j
dGlvbnMuCkBAIC0yMzgsNiArMjM4LDcgQEAgcHJpdmF0ZToKICAgICBJZGVudGlmaWVyQXJlbmEq
IG1fYXJlbmE7CiAKICAgICBWTSogbV92bTsKKyAgICBib29sIG1fcGFyc2luZ0J1aWx0aW5GdW5j
dGlvbjsKIH07CiAKIHRlbXBsYXRlIDw+CkBAIC0zMzUsNiArMzM2LDEyIEBAIEFMV0FZU19JTkxJ
TkUgY29uc3QgSWRlbnRpZmllciogTGV4ZXI8VD46Om1ha2VMQ2hhcklkZW50aWZpZXIoY29uc3Qg
VUNoYXIqIGNoYXJhCiAgICAgcmV0dXJuICZtX2FyZW5hLT5tYWtlSWRlbnRpZmllckxDaGFyRnJv
bVVDaGFyKG1fdm0sIGNoYXJhY3RlcnMsIGxlbmd0aCk7CiB9CiAKKyNpZiBBU1NFUlRfRElTQUJM
RUQKK0FMV0FZU19JTkxJTkUgYm9vbCBpc1NhZmVJZGVudGlmaWVyKFZNJiwgY29uc3QgSWRlbnRp
ZmllciopIHsgcmV0dXJuIHRydWU7IH0KKyNlbHNlCitib29sIGlzU2FmZUlkZW50aWZpZXIoVk0m
LCBjb25zdCBJZGVudGlmaWVyKik7CisjZW5kaWYKKwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBB
TFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpT
VG9rZW4qIHRva2VuUmVjb3JkLCB1bnNpZ25lZCBsZXhlckZsYWdzLCBib29sIHN0cmljdE1vZGUp
CiB7CkBAIC0zNzAsMTAgKzM3NywxNSBAQCBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVy
PFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW4qIHRva2VuUmVjb3JkLCB1bgogICAgIEFT
U0VSVChjdXJyZW50T2Zmc2V0KCkgPj0gY3VycmVudExpbmVTdGFydE9mZnNldCgpKTsKIAogICAg
IC8vIENyZWF0ZSB0aGUgaWRlbnRpZmllciBpZiBuZWVkZWQKLSAgICBpZiAobGV4ZXJGbGFncyAm
IExleGV4RmxhZ3NEb250QnVpbGRLZXl3b3JkcykKKyAgICBpZiAobGV4ZXJGbGFncyAmIExleGV4
RmxhZ3NEb250QnVpbGRLZXl3b3JkcworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgJiYg
IW1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbgorI2VuZGlmCisgICAgICAgICkKICAgICAgICAgdG9r
ZW5EYXRhLT5pZGVudCA9IDA7CiAgICAgZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0g
bWFrZUxDaGFySWRlbnRpZmllcihzdGFydCwgcHRyIC0gc3RhcnQpOworCiAgICAgdG9rZW5Mb2Nh
dGlvbi0+bGluZSA9IG1fbGluZU51bWJlcjsKICAgICB0b2tlbkxvY2F0aW9uLT5saW5lU3RhcnRP
ZmZzZXQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CiAgICAgdG9rZW5Mb2NhdGlvbi0+c3Rh
cnRPZmZzZXQgPSBvZmZzZXRGcm9tU291cmNlUHRyKHN0YXJ0KTsKQEAgLTM4MSw2ICszOTMsMTMg
QEAgQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmll
cihKU1Rva2VuKiB0b2tlblJlY29yZCwgdW4KICAgICBBU1NFUlQodG9rZW5Mb2NhdGlvbi0+c3Rh
cnRPZmZzZXQgPj0gdG9rZW5Mb2NhdGlvbi0+bGluZVN0YXJ0T2Zmc2V0KTsKICAgICB0b2tlblJl
Y29yZC0+bV9zdGFydFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbjsKICAgICB0b2tlblJlY29yZC0+
bV9lbmRQb3NpdGlvbiA9IGN1cnJlbnRQb3NpdGlvbigpOworI2lmICFBU1NFUlRfRElTQUJMRUQK
KyAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CisgICAgICAgIGlmICghaXNTYWZl
SWRlbnRpZmllcigqbV92bSwgdG9rZW5EYXRhLT5pZGVudCkpCisgICAgICAgICAgICByZXR1cm4g
RVJST1JUT0s7CisgICAgfQorI2VuZGlmCisKICAgICBtX2xhc3RUb2tlbiA9IElERU5UOwogICAg
IHJldHVybiBJREVOVDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAK
aW5kZXggZmM5Y2NkOWY2YzU3NmMxYWVmNTQ3ZjIxMWZkZDU5NmY0MmUwNTgwNi4uZDk1MmJhNmE5
NGQyZjZiNDE4MjE1NTAwNGQwYTk3MDg0MjliZDc4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5jcHAKQEAgLTEzMiw2ICsxMzIsMTIgQEAgUGFzc1JlZlB0cjxQcm9ncmFtTm9k
ZT4gUHJvZ3JhbU5vZGU6OmNyZWF0ZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3Rh
cnQKICAgICByZXR1cm4gbm9kZS5yZWxlYXNlKCk7CiB9CiAKKwordm9pZCBQcm9ncmFtTm9kZTo6
c2V0Q2xvc2VkVmFyaWFibGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYgY2xv
c2VkVmFyaWFibGVzKQoreworICAgIG1fY2xvc2VkVmFyaWFibGVzID0gc3RkOjptb3ZlKGNsb3Nl
ZFZhcmlhYmxlcyk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFdmFs
Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBpbmxpbmUgRXZhbE5vZGU6OkV2
YWxOb2RlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJj
ZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBm
dW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCBkNzc5YTE3OGQ5NTZmZjk5ZmQwYmVk
NWQ1ZjQ1NGFhM2U2YjUwODc5Li44MTZmZjAwMWFiZjAzNzZjNjQyZjFhOTM4ZDBlMGE5ZjUyOWNh
NmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xNDMxLDYgKzE0MzEs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBuZWVkc0FjdGl2YXRpb24oKSBjb25z
dCB7IHJldHVybiAoaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkgfHwgKG1fZmVhdHVyZXMgJiAoRXZh
bEZlYXR1cmUgfCBXaXRoRmVhdHVyZSB8IENhdGNoRmVhdHVyZSkpOyB9CiAgICAgICAgIGJvb2wg
aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiAhIW1fY2FwdHVyZWRWYXJpYWJs
ZXMuc2l6ZSgpOyB9CiAgICAgICAgIHNpemVfdCBjYXB0dXJlZFZhcmlhYmxlQ291bnQoKSBjb25z
dCB7IHJldHVybiBtX2NhcHR1cmVkVmFyaWFibGVzLnNpemUoKTsgfQorICAgICAgICBjb25zdCBJ
ZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2FwdHVy
ZWRWYXJpYWJsZXM7IH0KICAgICAgICAgYm9vbCBjYXB0dXJlcyhjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCkgeyByZXR1cm4gbV9jYXB0dXJlZFZhcmlhYmxlcy5jb250YWlucyhpZGVudC5pbXBsKCkp
OyB9CiAKICAgICAgICAgVmFyU3RhY2smIHZhclN0YWNrKCkgeyByZXR1cm4gbV92YXJTdGFjazsg
fQpAQCAtMTQ0Niw2ICsxNDQ3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0YXRlbWVu
dE5vZGUqIHNpbmdsZVN0YXRlbWVudCgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgZW1pdFN0YXRl
bWVudHNCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9u
KTsKKyAgICAgICAgCisgICAgICAgIHZvaWQgc2V0Q2xvc2VkVmFyaWFibGVzKGNvbnN0IFZlY3Rv
cjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYpIHsgfQogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2
b2lkIHNldFNvdXJjZShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpIHsgbV9zb3VyY2UgPSBzb3Vy
Y2U7IH0KQEAgLTE0NzUsMTEgKzE0NzgsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
c3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9uID0gZmFsc2U7CiAKKyAgICAgICAgdm9p
ZCBzZXRDbG9zZWRWYXJpYWJsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJik7
CisgICAgICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiBjbG9zZWRWYXJpYWJs
ZXMoKSBjb25zdCB7IHJldHVybiBtX2Nsb3NlZFZhcmlhYmxlczsgfQogICAgIHByaXZhdGU6CiAg
ICAgICAgIFByb2dyYW1Ob2RlKFZNKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBl
bmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRl
bnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25z
dGFudHMpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwotCisgICAgICAgIFZlY3RvcjxSZWZQ
dHI8U3RyaW5nSW1wbD4+IG1fY2xvc2VkVmFyaWFibGVzOwogICAgICAgICB1bnNpZ25lZCBtX3N0
YXJ0Q29sdW1uOwogICAgICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKICAgICB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDI5NzY2NmU3MjZlNDVkMDgzZWYx
MzQ5ZGRmZmRmMzdlZjgwMGRmN2EuLjUwYmVjNzlmZTM4YWRmOGYzYTA0ZjZiNDZjYmQyYTVjYmZj
ZjI0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTIwNCw4
ICsyMDQsOSBAQCBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKFZNKiB2bSwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcnMqCiAgICAgLCBtX2xhc3RJZGVudGlmaWVy
KDApCiAgICAgLCBtX2xhc3RGdW5jdGlvbk5hbWUobnVsbHB0cikKICAgICAsIG1fc291cmNlRWxl
bWVudHMoMCkKKyAgICAsIG1fcGFyc2luZ0J1aWx0aW4oc3RyaWN0bmVzcyA9PSBKU1BhcnNlQnVp
bHRpbikKIHsKLSAgICBtX2xleGVyID0gYWRvcHRQdHIobmV3IExleGVyVHlwZSh2bSkpOworICAg
IG1fbGV4ZXIgPSBhZG9wdFB0cihuZXcgTGV4ZXJUeXBlKHZtLCBzdHJpY3RuZXNzKSk7CiAgICAg
bV9hcmVuYSA9IG1fdm0tPnBhcnNlckFyZW5hLmdldCgpOwogICAgIG1fbGV4ZXItPnNldENvZGUo
c291cmNlLCBtX2FyZW5hKTsKICAgICBtX3Rva2VuLm1fbG9jYXRpb24ubGluZSA9IHNvdXJjZS5m
aXJzdExpbmUoKTsKQEAgLTI1Niw2ICsyNTcsNyBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlSW5uZXIoKQogICAgIElkZW50aWZpZXJTZXQgY2FwdHVyZWRWYXJpYWJsZXM7CiAgICAg
Ym9vbCBtb2RpZmllZFBhcmFtZXRlciA9IGZhbHNlOwogICAgIHNjb3BlLT5nZXRDYXB0dXJlZFZh
cmlhYmxlcyhjYXB0dXJlZFZhcmlhYmxlcywgbW9kaWZpZWRQYXJhbWV0ZXIpOworICAgIAogICAg
IENvZGVGZWF0dXJlcyBmZWF0dXJlcyA9IGNvbnRleHQuZmVhdHVyZXMoKTsKICAgICBpZiAoc2Nv
cGUtPnN0cmljdE1vZGUoKSkKICAgICAgICAgZmVhdHVyZXMgfD0gU3RyaWN0TW9kZUZlYXR1cmU7
CkBAIC0yNjMsMjEgKzI2NSwzNiBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5u
ZXIoKQogICAgICAgICBmZWF0dXJlcyB8PSBTaGFkb3dzQXJndW1lbnRzRmVhdHVyZTsKICAgICBp
ZiAobW9kaWZpZWRQYXJhbWV0ZXIpCiAgICAgICAgIGZlYXR1cmVzIHw9IE1vZGlmaWVkUGFyYW1l
dGVyRmVhdHVyZTsKLQorICAgIAorICAgIFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+IGNsb3Nl
ZFZhcmlhYmxlczsKKyAgICBpZiAobV9wYXJzaW5nQnVpbHRpbikgeworICAgICAgICBSRUxFQVNF
X0FTU0VSVCghY2FwdHVyZWRWYXJpYWJsZXMuc2l6ZSgpKTsKKyAgICAgICAgSWRlbnRpZmllclNl
dCB1c2VkVmFyaWFibGVzOworICAgICAgICBzY29wZS0+Z2V0VXNlZFZhcmlhYmxlcyh1c2VkVmFy
aWFibGVzKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiB2YXJpYWJsZSA6IHVzZWRWYXJpYWJs
ZXMpIHsKKyAgICAgICAgICAgIGlmIChzY29wZS0+aGFzRGVjbGFyZWRWYXJpYWJsZShJZGVudGlm
aWVyKG1fdm0sIHZhcmlhYmxlLmdldCgpKSkpCisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChzY29wZS0+aGFzRGVjbGFyZWRQYXJhbWV0ZXIo
SWRlbnRpZmllcihtX3ZtLCB2YXJpYWJsZS5nZXQoKSkpKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgY2xvc2VkVmFyaWFibGVzLmFwcGVuZCh2YXJpYWJsZSk7CisgICAg
ICAgIH0KKyAgICB9CiAgICAgZGlkRmluaXNoUGFyc2luZyhzb3VyY2VFbGVtZW50cywgY29udGV4
dC52YXJEZWNsYXJhdGlvbnMoKSwgY29udGV4dC5mdW5jRGVjbGFyYXRpb25zKCksIGZlYXR1cmVz
LAotICAgICAgICBjb250ZXh0Lm51bUNvbnN0YW50cygpLCBjYXB0dXJlZFZhcmlhYmxlcyk7Cisg
ICAgICAgIGNvbnRleHQubnVtQ29uc3RhbnRzKCksIGNhcHR1cmVkVmFyaWFibGVzLCBzdGQ6Om1v
dmUoY2xvc2VkVmFyaWFibGVzKSk7CiAKICAgICByZXR1cm4gcGFyc2VFcnJvcjsKIH0KIAogdGVt
cGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHZvaWQgUGFyc2VyPExleGVyVHlwZT46OmRpZEZp
bmlzaFBhcnNpbmcoU291cmNlRWxlbWVudHMqIHNvdXJjZUVsZW1lbnRzLCBQYXJzZXJBcmVuYURh
dGE8RGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrPiogdmFyU3RhY2ssIAotICAgIFBhcnNlckFy
ZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qIGZ1bmNTdGFjaywgQ29k
ZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzLCBJZGVudGlmaWVyU2V0JiBjYXB0
dXJlZFZhcnMpCisgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlv
blN0YWNrPiogZnVuY1N0YWNrLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFu
dHMsIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFycywgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJp
bmdJbXBsPj4mJiBjbG9zZWRWYXJpYWJsZXMpCiB7CiAgICAgbV9zb3VyY2VFbGVtZW50cyA9IHNv
dXJjZUVsZW1lbnRzOwogICAgIG1fdmFyRGVjbGFyYXRpb25zID0gdmFyU3RhY2s7CiAgICAgbV9m
dW5jRGVjbGFyYXRpb25zID0gZnVuY1N0YWNrOwogICAgIG1fY2FwdHVyZWRWYXJpYWJsZXMuc3dh
cChjYXB0dXJlZFZhcnMpOworICAgIG1fY2xvc2VkVmFyaWFibGVzID0gY2xvc2VkVmFyaWFibGVz
OwogICAgIG1fZmVhdHVyZXMgPSBmZWF0dXJlczsKICAgICBtX251bUNvbnN0YW50cyA9IG51bUNv
bnN0YW50czsKIH0KQEAgLTIzNDYsNiArMjM2MywxMCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4
ZXJUeXBlPiB2b2lkIFBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRUb2tlblRleHQo
VwogICAgIGNhc2UgUkVTRVJWRUQ6CiAgICAgICAgIG91dC5wcmludCgiVW5leHBlY3RlZCB1c2Ug
b2YgcmVzZXJ2ZWQgd29yZCAnIiwgZ2V0VG9rZW4oKSwgIiciKTsKICAgICAgICAgcmV0dXJuOwor
CisgICAgY2FzZSBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzoKKyAgICAgICAgb3V0LnBy
aW50KCJJbnZhbGlkIHByaXZhdGUgbmFtZSAnIiwgZ2V0VG9rZW4oKSwgIiciKTsKKyAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgCiAgICAgY2FzZSBJREVOVDoKICAgICAgICAgb3V0LnByaW50
KCJVbmV4cGVjdGVkIGlkZW50aWZpZXIgJyIsIGdldFRva2VuKCksICInIik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBiNjk4ZWY5MzY4Y2I4YzhmMTk3Y2NkMDAwYWNh
YTZkZmIxMWJhMjQ0Li45MDMzODUwYzhjOTdmNTdlMjFkYTVlZWRiMDJkMDQ0ZjRjODk3OGViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTIzLDYgKzIzLDcgQEAKICNp
Zm5kZWYgUGFyc2VyX2gKICNkZWZpbmUgUGFyc2VyX2gKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50
aWZpZXJzLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxw
ZXJzLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgpAQCAtMjU5LDYgKzI2MCwxMCBAQCBzdHJ1
Y3QgU2NvcGUgewogICAgICAgICByZXR1cm4gaXNWYWxpZFN0cmljdE1vZGUgPyBCaW5kaW5nU3Vj
Y2VlZGVkIDogU3RyaWN0QmluZGluZ0ZhaWxlZDsKICAgICB9CiAKKyAgICB2b2lkIGdldFVzZWRW
YXJpYWJsZXMoSWRlbnRpZmllclNldCYgdXNlZFZhcmlhYmxlcykKKyAgICB7CisgICAgICAgIHVz
ZWRWYXJpYWJsZXMuc3dhcChtX3VzZWRWYXJpYWJsZXMpOworICAgIH0KIAogICAgIHZvaWQgdXNl
VmFyaWFibGUoY29uc3QgSWRlbnRpZmllciogaWRlbnQsIGJvb2wgaXNFdmFsKQogICAgIHsKQEAg
LTQxNCw2ICs0MTksNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBwYXJz
ZShQYXJzZXJFcnJvciYpOwogCiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4ZXItPnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xp
bmUoKTsgfQorICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYgY2xvc2VkVmFy
aWFibGVzKCkgeyByZXR1cm4gc3RkOjptb3ZlKG1fY2xvc2VkVmFyaWFibGVzKTsgfQogCiBwcml2
YXRlOgogICAgIHN0cnVjdCBBbGxvd0luT3ZlcnJpZGUgewpAQCAtNTQwLDcgKzU0Niw3IEBAIHBy
aXZhdGU6CiAgICAgU3RyaW5nIHBhcnNlSW5uZXIoKTsKIAogICAgIHZvaWQgZGlkRmluaXNoUGFy
c2luZyhTb3VyY2VFbGVtZW50cyosIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6
VmFyU3RhY2s+KiwgCi0gICAgICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6
RnVuY3Rpb25TdGFjaz4qLCBDb2RlRmVhdHVyZXMsIGludCwgSWRlbnRpZmllclNldCYpOworICAg
ICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+Kiwg
Q29kZUZlYXR1cmVzLCBpbnQsIElkZW50aWZpZXJTZXQmLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0
cmluZ0ltcGw+PiYmKTsKIAogICAgIC8vIFVzZWQgdG8gZGV0ZXJtaW5lIHR5cGUgb2YgZXJyb3Ig
dG8gcmVwb3J0LgogICAgIGJvb2wgaXNGdW5jdGlvbkJvZHlOb2RlKFNjb3BlTm9kZSopIHsgcmV0
dXJuIGZhbHNlOyB9CkBAIC04NDAsOSArODQ2LDExIEBAIHByaXZhdGU6CiAgICAgY29uc3QgSWRl
bnRpZmllciogbV9sYXN0RnVuY3Rpb25OYW1lOwogICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlckNh
Y2hlPiBtX2Z1bmN0aW9uQ2FjaGU7CiAgICAgU291cmNlRWxlbWVudHMqIG1fc291cmNlRWxlbWVu
dHM7CisgICAgYm9vbCBtX3BhcnNpbmdCdWlsdGluOwogICAgIFBhcnNlckFyZW5hRGF0YTxEZWNs
YXJhdGlvblN0YWNrczo6VmFyU3RhY2s+KiBtX3ZhckRlY2xhcmF0aW9uczsKICAgICBQYXJzZXJB
cmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KiBtX2Z1bmNEZWNsYXJh
dGlvbnM7CiAgICAgSWRlbnRpZmllclNldCBtX2NhcHR1cmVkVmFyaWFibGVzOworICAgIFZlY3Rv
cjxSZWZQdHI8U3RyaW5nSW1wbD4+IG1fY2xvc2VkVmFyaWFibGVzOwogICAgIENvZGVGZWF0dXJl
cyBtX2ZlYXR1cmVzOwogICAgIGludCBtX251bUNvbnN0YW50czsKICAgICAKQEAgLTk1Nyw2ICs5
NjUsMTAgQEAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBwYXJzZShWTSogdm0sIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25QYXJhbWV0ZXIKICAgICAgICAgUmVmUHRyPFBhcnNlZE5v
ZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvcik7CiAgICAgICAgIGlm
IChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAgICAgICAgKnBvc2l0aW9uQmVmb3Jl
TGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOworICAgICAg
ICBpZiAoc3RyaWN0bmVzcyA9PSBKU1BhcnNlQnVpbHRpbikgeworICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQocmVzdWx0KTsKKyAgICAgICAgICAgIHJlc3VsdC0+c2V0Q2xvc2VkVmFyaWFibGVz
KHN0ZDo6bW92ZShwYXJzZXIuY2xvc2VkVmFyaWFibGVzKCkpKTsKKyAgICAgICAgfQogICAgICAg
ICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKICAgICB9CiAgICAgUGFyc2VyPExleGVyPFVDaGFy
Pj4gcGFyc2VyKHZtLCBzb3VyY2UsIHBhcmFtZXRlcnMsIG5hbWUsIHN0cmljdG5lc3MsIHBhcnNl
ck1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJN
b2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCmluZGV4
IDRlOWExN2NkMjFjYTM0MTQ2YmJkNDgxNTZhMzcyY2Q0MDRkZWY2MGMuLmY3YTc1YmY3YzM3ODU3
ZTQ0YjZkNWQ3MWY0NTI5YmIxYWMxY2Y1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlck1vZGVzLmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
LWVudW0gSlNQYXJzZXJTdHJpY3RuZXNzIHsgSlNQYXJzZU5vcm1hbCwgSlNQYXJzZVN0cmljdCB9
OworZW51bSBKU1BhcnNlclN0cmljdG5lc3MgeyBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlQnVpbHRp
biwgSlNQYXJzZVN0cmljdCB9OwogZW51bSBKU1BhcnNlck1vZGUgeyBKU1BhcnNlUHJvZ3JhbUNv
ZGUsIEpTUGFyc2VGdW5jdGlvbkNvZGUgfTsKIAogZW51bSBQcm9maWxlck1vZGUgeyBQcm9maWxl
ck9mZiwgUHJvZmlsZXJPbiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXJUb2tlbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
VG9rZW5zLmgKaW5kZXggODJhMjY2MzlhNzkyMjBhMDg0NDU2YjQ4ZjMyODUyZDE0M2M3MzlkMC4u
OGM4N2FkOWZhZGJkYzRhZjM5YWM5OWRiMmQ4NDQ1ZTEzZmZmZDM1YSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCkBAIC0xNDksNiArMTQ5LDcgQEAgZW51
bSBKU1Rva2VuVHlwZSB7CiAgICAgSU5WQUxJRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0sgPSA3
IHwgRXJyb3JUb2tlbkZsYWcsCiAgICAgVU5URVJNSU5BVEVEX1NUUklOR19MSVRFUkFMX0VSUk9S
VE9LID0gOCB8IEVycm9yVG9rZW5GbGFnIHwgVW50ZXJtaW5hdGVkRXJyb3JUb2tlbkZsYWcsCiAg
ICAgSU5WQUxJRF9TVFJJTkdfTElURVJBTF9FUlJPUlRPSyA9IDkgfCBFcnJvclRva2VuRmxhZywK
KyAgICBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSyA9IDEwIHwgRXJyb3JUb2tlbkZsYWcK
IH07CiAKIHN0cnVjdCBKU1RleHRQb3NpdGlvbiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FyZ3VtZW50cy5oCmluZGV4IDE4ZjM4OTE3MTM4NTIzNjJjN2E3NWEzMDUzYjQ2MzE0MTdi
ZWI4MWIuLmYxNmZkM2RlNDA1NTk3MGJhOWQ5YzZmMGFlNjMxOGYyMjA0YjY1NGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCkBAIC0yNSw2ICsyNSw3IEBACiAj
ZGVmaW5lIEFyZ3VtZW50c19oCiAKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCisjaW5jbHVkZSAi
Q29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRl
ICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJv
dG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJh
dG9yUHJvdG90eXBlLmNwcAppbmRleCBkZDA4OTRmMTRhMDIxZDVmMTI2NThhY2IwMWU3MjFmY2Q2
ZDM0OGNjLi41YjRhZTg3MTZiMDU1M2JlNDYyMzk1NWU5OWUxYjQzZWJmMThmZTJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRl
cmF0b3JQcm90b3R5cGUuY3BwCkBAIC0yNiw3ICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuaCIKIAorI2luY2x1ZGUgIkNv
bW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiSlNBcmd1bWVudHNJdGVyYXRvci5oIgorI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggMjdh
YzZkNDhhNzFmNzk1NTAyYTEwY2VhNjQ3ODY1NDEzNWE0NjNhMC4uNmRjN2JlNTY5NjlkZTY3ZjYy
MTA3YmIzYTUxYTMwOGZhM2JhNzZiZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpJ
VC5oIgogI2luY2x1ZGUgIkpTQXJyYXlJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTU3RyaW5nQnVp
bGRlci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTU3RyaW5n
Sm9pbmVyLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBl
LmgiCkBAIC01Niw3ICs1Nyw2IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5UHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NvcnQoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NwbGljZShFeGVjU3RhdGUq
KTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVW5T
aGlmdChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFy
cmF5UHJvdG9GdW5jRXZlcnkoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0ZvckVhY2goRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NvbWUoRXhlY1N0YXRlKik7
CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0luZGV4
T2YoRXhlY1N0YXRlKik7CkBAIC05NTQsNjkgKzk1NCw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNNYXAoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0QXJyYXkpOwogfQogCi0vLyBEb2N1bWVudGF0aW9uIGZvciB0
aGVzZSB0aHJlZSBpcyBhdmFpbGFibGUgYXQ6Ci0vLyBodHRwOi8vZGV2ZWxvcGVyLXRlc3QubW96
aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0phdmFTY3JpcHRfMS41X1JlZmVyZW5jZTpPYmplY3RzOkFy
cmF5OmV2ZXJ5Ci0vLyBodHRwOi8vZGV2ZWxvcGVyLXRlc3QubW96aWxsYS5vcmcvZW4vZG9jcy9D
b3JlX0phdmFTY3JpcHRfMS41X1JlZmVyZW5jZTpPYmplY3RzOkFycmF5OmZvckVhY2gKLS8vIGh0
dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3ppbGxhLm9yZy9lbi9kb2NzL0NvcmVfSmF2YVNjcmlwdF8x
LjVfUmVmZXJlbmNlOk9iamVjdHM6QXJyYXk6c29tZQotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5UHJvdG9GdW5jRXZlcnkoRXhlY1N0YXRlKiBleGVjKQotewotICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RN
b2RlKS50b09iamVjdChleGVjKTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzT2JqLT5nZXQo
ZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkudG9VSW50MzIoZXhlYyk7Ci0gICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotCi0gICAgSlNWYWx1ZSBmdW5jdGlvbiA9IGV4ZWMtPmFyZ3VtZW50
KDApOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0
Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5
cGVOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLQotICAgIEpT
VmFsdWUgYXBwbHlUaGlzID0gZXhlYy0+YXJndW1lbnQoMSk7Ci0KLSAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzQm9vbGVhbih0cnVlKTsKLQotICAgIHVuc2lnbmVkIGsgPSAwOwotICAgIGlmIChjYWxs
VHlwZSA9PSBDYWxsVHlwZUpTICYmIGlzSlNBcnJheSh0aGlzT2JqKSkgewotICAgICAgICBKU0Z1
bmN0aW9uKiBmID0ganNDYXN0PEpTRnVuY3Rpb24qPihmdW5jdGlvbik7Ci0gICAgICAgIEpTQXJy
YXkqIGFycmF5ID0gYXNBcnJheSh0aGlzT2JqKTsKLSAgICAgICAgQ2FjaGVkQ2FsbCBjYWNoZWRD
YWxsKGV4ZWMsIGYsIDMpOwotICAgICAgICBmb3IgKDsgayA8IGxlbmd0aCAmJiAhZXhlYy0+aGFk
RXhjZXB0aW9uKCk7ICsraykgewotICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFhcnJheS0+Y2Fu
R2V0SW5kZXhRdWlja2x5KGspKSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRUaGlzKGFwcGx5VGhpcyk7Ci0gICAgICAgICAg
ICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDAsIGFycmF5LT5nZXRJbmRleFF1aWNrbHkoaykpOwot
ICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudCgxLCBqc051bWJlcihrKSk7Ci0gICAg
ICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDIsIHRoaXNPYmopOwotICAgICAgICAgICAg
SlNWYWx1ZSByZXN1bHQgPSBjYWNoZWRDYWxsLmNhbGwoKTsKLSAgICAgICAgICAgIGlmICghcmVz
dWx0LnRvQm9vbGVhbihleGVjKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbihmYWxzZSkpOwotICAgICAgICB9Ci0gICAgfQotICAgIGZvciAoOyBrIDwg
bGVuZ3RoICYmICFleGVjLT5oYWRFeGNlcHRpb24oKTsgKytrKSB7Ci0gICAgICAgIFByb3BlcnR5
U2xvdCBzbG90KHRoaXNPYmopOwotICAgICAgICBpZiAoIXRoaXNPYmotPmdldFByb3BlcnR5U2xv
dChleGVjLCBrLCBzbG90KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGVhY2hBcmd1bWVudHM7Ci0gICAgICAgIGVhY2hBcmd1bWVudHMuYXBw
ZW5kKHNsb3QuZ2V0VmFsdWUoZXhlYywgaykpOwotICAgICAgICBlYWNoQXJndW1lbnRzLmFwcGVu
ZChqc051bWJlcihrKSk7Ci0gICAgICAgIGVhY2hBcmd1bWVudHMuYXBwZW5kKHRoaXNPYmopOwot
Ci0gICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KLSAgICAgICAgYm9vbCBwcmVkaWNhdGVS
ZXN1bHQgPSBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGFwcGx5VGhp
cywgZWFjaEFyZ3VtZW50cykudG9Cb29sZWFuKGV4ZWMpOwotICAgICAgICBpZiAoIXByZWRpY2F0
ZVJlc3VsdCkgewotICAgICAgICAgICAgcmVzdWx0ID0ganNCb29sZWFuKGZhbHNlKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwotfQotCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJv
dG9GdW5jRm9yRWFjaChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmog
PSBleGVjLT5ob3N0VGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0
KGV4ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNh
Y2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5k
ZXggNTEwZTM4M2ZhZTU3NWFhZGE4MTc2YzA0NDFlZTcyNWI0M2E0YzczMi4uZDMwNDg3N2ZlOWNk
ZTFjMDkxOWZkNDU5NWY4MTFlY2FiY2U3NzI3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC0xNDQsMjQgKzE0NCwyNiBAQCBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFs
Q29kZShWTSYgdgogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmU7
CiAgICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KCZ2
bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VQcm9ncmFt
Q29kZSwgZXJyb3IsICZwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKICAgICBpZiAoIXByb2dy
YW0pIHsKLSAgICAgICAgQVNTRVJUKGVycm9yLm1fdHlwZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JO
b25lKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXJyb3IubV90eXBlICE9IFBhcnNlckVycm9y
OjpFcnJvck5vbmUpOwogICAgICAgICBtX3NvdXJjZUNvZGUucmVtb3ZlKGFkZFJlc3VsdC5pdGVy
YXRvcik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAogICAgIC8vIFRoaXMgZnVuY3Rpb24g
YXNzdW1lcyBhbiBpbnB1dCBzdHJpbmcgdGhhdCB3b3VsZCByZXN1bHQgaW4gYSBzaW5nbGUgYW5v
bnltb3VzIGZ1bmN0aW9uIGV4cHJlc3Npb24uCiAgICAgU3RhdGVtZW50Tm9kZSogZXhwclN0YXRl
bWVudCA9IHByb2dyYW0tPnNpbmdsZVN0YXRlbWVudCgpOwotICAgIEFTU0VSVChleHByU3RhdGVt
ZW50KTsKLSAgICBBU1NFUlQoZXhwclN0YXRlbWVudC0+aXNFeHByU3RhdGVtZW50KCkpOworICAg
IFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJT
dGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKICAgICBFeHByZXNzaW9uTm9kZSogZnVuY0V4
cHIgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVtZW50Tm9kZSo+KGV4cHJTdGF0ZW1lbnQpLT5leHBy
KCk7Ci0gICAgQVNTRVJUKGZ1bmNFeHByKTsKKyAgICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwcik7
CiAgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHItPmlzRnVuY0V4cHJOb2RlKCkpOwogICAgIEZ1
bmN0aW9uQm9keU5vZGUqIGJvZHkgPSBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihmdW5jRXhw
ciktPmJvZHkoKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghcHJvZ3JhbS0+aGFzQ2FwdHVyZWRWYXJp
YWJsZXMoKSk7CisgICAgCiAgICAgYm9keS0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVM
YXN0TmV3bGluZSk7Ci0gICAgQVNTRVJUKGJvZHkpOwotICAgIEFTU0VSVChib2R5LT5pZGVudCgp
LmlzTnVsbCgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5KTsKKyAgICBSRUxFQVNFX0FTU0VS
VChib2R5LT5pZGVudCgpLmlzTnVsbCgpKTsKIAotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3Jl
YXRlKCZ2bSwgc291cmNlLCBib2R5LCB0cnVlKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNy
ZWF0ZSgmdm0sIHNvdXJjZSwgYm9keSwgdHJ1ZSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbik7CiAg
ICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5tX25hbWVWYWx1ZS5zZXQodm0sIGZ1bmN0aW9uRXhlY3V0
YWJsZSwganNTdHJpbmcoJnZtLCBuYW1lLnN0cmluZygpKSk7CiAKICAgICBhZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gU291cmNlQ29kZVZhbHVlKHZtLCBmdW5jdGlvbkV4ZWN1dGFibGUsIG1f
c291cmNlQ29kZS5hZ2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5jcHAKaW5kZXggM2Y1YzY0NWMwOThkNTI3ZmMwYzcyNTllOTQ0
N2VmYmU4ODY4YTI5Yy4uMmZjMmI3MjdhZmNlZWUxZWMyYzYyNWRlNTY3NWIzYmUxY2Y2MGQ3OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmNwcApAQCAtMjcsNyArMjcsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICNkZWZpbmUgSU5J
VElBTElaRV9QUk9QRVJUWV9OQU1FKG5hbWUpICwgbmFtZSh2bSwgI25hbWUpCiAjZGVmaW5lIElO
SVRJQUxJWkVfS0VZV09SRChuYW1lKSAsIG5hbWUjI0tleXdvcmQodm0sICNuYW1lKQotI2RlZmlu
ZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFNRShuYW1lKSAsIG5hbWUjI1ByaXZhdGVOYW1lKElkZW50
aWZpZXI6OmZyb20oUHJpdmF0ZU5hbWUoKSkpCisjZGVmaW5lIElOSVRJQUxJWkVfUFJJVkFURV9O
QU1FKG5hbWUpIFwKKyAgICAsIG5hbWUjI1ByaXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb20oUHJp
dmF0ZU5hbWUoKSkpIFwKKyAgICAsIG1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQYWlyKG5hbWUsIG5h
bWUjI1ByaXZhdGVOYW1lKSBcCisKIAogQ29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZp
ZXJzKFZNKiB2bSkKICAgICA6IG51bGxJZGVudGlmaWVyKCkKQEAgLTM4LDggKzQxLDI2IEBAIENv
bW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyhWTSogdm0pCiAgICAgLCBoYXNOZXh0
SWRlbnRpZmllcih2bSwgImhhc05leHQiKQogICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFD
SF9LRVlXT1JEKElOSVRJQUxJWkVfS0VZV09SRCkKICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJT
X0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpFX1BST1BFUlRZX05BTUUpCisgICAgSlNDX0ZP
UkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRSkKICAg
ICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJ
QUxJWkVfUFJJVkFURV9OQU1FKQogewogfQogCitjb25zdCBJZGVudGlmaWVyKiBDb21tb25JZGVu
dGlmaWVyczo6Z2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0Cit7
CisjZGVmaW5lIFJFVFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hFUyhuYW1lKSBpZiAobV8jI25h
bWUjI1B1YmxpY1N0cmluZ1BhaXIuZmlyc3QgPT0gaWRlbnQpIHJldHVybiAmbV8jI25hbWUjI1B1
YmxpY1N0cmluZ1BhaXIuc2Vjb25kOworICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVS
U19FQUNIX1BST1BFUlRZX05BTUUoUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKQorI3Vu
ZGVmIFJFVFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hFUworICAgIHJldHVybiAwOworfQorCitJ
ZGVudGlmaWVyIENvbW1vbklkZW50aWZpZXJzOjpnZXRQdWJsaWNOYW1lKGNvbnN0IElkZW50aWZp
ZXImIGlkZW50KSBjb25zdAoreworI2RlZmluZSBSRVRVUk5fSUZfUFJJVkFURV9OQU1FX01BVENI
RVMobmFtZSkgaWYgKG1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQYWlyLnNlY29uZCA9PSBpZGVudCkg
cmV0dXJuIG1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQYWlyLmZpcnN0OworICAgIEpTQ19DT01NT05f
UFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoUkVUVVJOX0lGX1BSSVZBVEVf
TkFNRV9NQVRDSEVTKQorI3VuZGVmIFJFVFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hFUworICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGVtcHR5SWRlbnRpZmll
cjsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCBlOGY5ZWQ4MmJjNzk0NjIwMzgyNjZi
MzAyMDc4MjI0N2IxZmEyN2EzLi45MjRkMzZhYzY5MTM1MDM1N2NiMzgyYjFlZjNiNDBhMGEwOGMw
YWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmgKQEAgLTIyLDYgKzIyLDcgQEAKICNkZWZpbmUgQ29tbW9uSWRlbnRpZmllcnNfaAog
CiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIC8vIE1hcmtlZEFyZ3VtZW50QnVmZmVyIG9mIHBy
b3BlcnR5IG5hbWVzLCBwYXNzZWQgdG8gYSBtYWNybyBzbyB3ZSBjYW4gZG8gc2V0IHRoZW0gdXAg
dmFyaW91cwpAQCAtMTMzLDggKzEzNCwxMCBAQAogICAgIG1hY3JvKG9zckV4aXRzKSBcCiAgICAg
bWFjcm8ocGFyc2UpIFwKICAgICBtYWNybyhwcm9maWxlZEJ5dGVjb2RlcykgXAorICAgIG1hY3Jv
KHByb21pc2UpIFwKICAgICBtYWNybyhwcm9wZXJ0eUlzRW51bWVyYWJsZSkgXAogICAgIG1hY3Jv
KHByb3RvdHlwZSkgXAorICAgIG1hY3JvKHJlc29sdmUpIFwKICAgICBtYWNybyhzZXQpIFwKICAg
ICBtYWNybyhzaXplKSBcCiAgICAgbWFjcm8oc2xpY2UpIFwKQEAgLTE1NSw3ICsxNTgsMTQgQEAK
ICAgICBtYWNybyh2YWx1ZXMpIFwKICAgICBtYWNybyh2YWx1ZU9mKSBcCiAgICAgbWFjcm8od2lu
ZG93KSBcCi0gICAgbWFjcm8od3JpdGFibGUpCisgICAgbWFjcm8od3JpdGFibGUpIFwKKyAgICBt
YWNybyhpdGVyYXRvcikgXAorICAgIG1hY3JvKGl0ZXJhdG9yTmV4dCkgXAorICAgIG1hY3JvKHJl
amVjdCkgXAorICAgIG1hY3JvKGZ1bGZpbGxtZW50SGFuZGxlcikgXAorICAgIG1hY3JvKHJlamVj
dGlvbkhhbmRsZXIpIFwKKyAgICBtYWNybyhkZWZlcnJlZCkgXAorICAgIG1hY3JvKGNvdW50ZG93
bkhvbGRlcikgXAogCiAjZGVmaW5lIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JE
KG1hY3JvKSBcCiAgICAgbWFjcm8oYnJlYWspIFwKQEAgLTIwMyw3ICsyMTMsNyBAQAogICAgIG1h
Y3JvKHZvaWQpIFwKICAgICBtYWNybyh3aGlsZSkgXAogICAgIG1hY3JvKHdpdGgpIFwKLSAgICBt
YWNybyh5aWVsZCkKKyAgICBtYWNybyh5aWVsZCkgXAogCiAjZGVmaW5lIEpTQ19DT01NT05fUFJJ
VkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUobWFjcm8pIFwKICAgICBtYWNybyhp
dGVyYXRvcikgXApAQCAtMjE2LDcgKzIyNiwxMiBAQAogICAgIG1hY3JvKGluZGV4KSBcCiAgICAg
bWFjcm8odmFsdWVzKSBcCiAgICAgbWFjcm8oZGVmZXJyZWQpIFwKLSAgICBtYWNybyhjb3VudGRv
d25Ib2xkZXIpCisgICAgbWFjcm8oY291bnRkb3duSG9sZGVyKSBcCisgICAgbWFjcm8oT2JqZWN0
KSBcCisgICAgbWFjcm8oVHlwZUVycm9yKSBcCisgICAgbWFjcm8odW5kZWZpbmVkS2V5d29yZCkg
XAorICAgIG1hY3JvKGNhbGwpIFwKKyAgICBtYWNybyhhcHBseSkKIAogbmFtZXNwYWNlIEpTQyB7
CiAKQEAgLTI0MCwxMSArMjU1LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNkZWZp
bmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJUWV9OQU1FX0dMT0JBTChuYW1lKSBjb25z
dCBJZGVudGlmaWVyIG5hbWU7CiAgICAgICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9Q
Uk9QRVJUWV9OQU1FKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwp
CisgICAgICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShKU0NfSURFTlRJRklF
Ul9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFMKQogI3VuZGVmIEpTQ19JREVOVElGSUVSX0RF
Q0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwKIAotI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNM
QVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwobmFtZSkgY29uc3QgSWRlbnRpZmllciBu
YW1lIyNQcml2YXRlTmFtZTsKKyNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRF
X1BST1BFUlRZX05BTUVfR0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSMjUHJpdmF0
ZU5hbWU7IGNvbnN0IHN0ZDo6cGFpcjxJZGVudGlmaWVyLCBJZGVudGlmaWVyPiBtXyMjbmFtZSMj
UHVibGljU3RyaW5nUGFpcjsKICAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJT
X0VBQ0hfUFJPUEVSVFlfTkFNRShKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVS
VFlfTkFNRV9HTE9CQUwpCiAjdW5kZWYgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BS
T1BFUlRZX05BTUVfR0xPQkFMCisgICAgICAgIAorICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBn
ZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CisgICAgICAgIElkZW50aWZp
ZXIgZ2V0UHVibGljTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcAppbmRleCAwNzU4NzVmYjIzMTZhNTU1NzA1MGE2NjkwY2QwZjk4ODI0
ODRmNWYzLi41YWY5MDg3NTRlNzQ3ZjhjYWUwY2QwNGFmOGQ0OTE1MDA0NjhjMmE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAg
LTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgog
I2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgotI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNs
dWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rp
b25zLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwCmluZGV4IDU1MzM0YmUyZjk4MGE5OGY3
ZmVhNDJhMDViZTBmMjBjMDE5ZmYwZGQuLmZhNTdjMDI2ODVlNTNkNTI1Mjg4MDU3ZTIxMWQ5OGIx
MDk4MWQ3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5j
bHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSklU
RXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAi
SlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJMTEludENvbW1vbi5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIENvbW1vblNsb3dQYXRocyB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IDA1ZTExZTBiODBh
MzQzMGFlYWIyMmIwMjIyYTIxMmY0YThlMmM0OWIuLjM2NGNjNzE2NjYwOGI1MDA3ZDQ3N2Q4NzM5
MThhNWQ2NGIxNjg2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC04MSw2ICs4MSwxMSBAQCBKU09iamVjdCogY3JlYXRl
U3RhY2tPdmVyZmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKIEpTT2Jq
ZWN0KiBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQpCiB7CisgICAgCisgICAgaWYgKGlkZW50LmltcGwoKS0+aXNFbXB0
eVVuaXF1ZSgpKSB7CisgICAgICAgIFN0cmluZyBtZXNzYWdlKG1ha2VTdHJpbmcoIkNhbid0IGZp
bmQgcHJpdmF0ZSB2YXJpYWJsZTogQCIsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZXRQdWJsaWNO
YW1lKGlkZW50KS5zdHJpbmcoKSkpOworICAgICAgICByZXR1cm4gY3JlYXRlUmVmZXJlbmNlRXJy
b3IoZXhlYywgbWVzc2FnZSk7CisgICAgfQogICAgIFN0cmluZyBtZXNzYWdlKG1ha2VTdHJpbmco
IkNhbid0IGZpbmQgdmFyaWFibGU6ICIsIGlkZW50LnN0cmluZygpKSk7CiAgICAgcmV0dXJuIGNy
ZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIG1lc3NhZ2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IDE5ODk3NmJiM2ZlNmU2ZTkxMTc5ODEyZDFj
YWY5YjhiZjliZmQwYmIuLjhkNTkwZWYwZmZjMGViOTBhYzhmOWE4MWQ5YmMyNTcyMWNkMzVjOTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTQ4NCw3
ICs0ODQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyQ29kZSgpOwogCi0gICAgRXhlY3V0
YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhu
ZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlKTsgfQor
ICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0
YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBm
YWxzZSwgZmFsc2UpOyB9CiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJldHVybiBt
X3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNpZ25lZCBu
dW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+
bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KQEAgLTU0MCw3ICs1NDAsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGNsZWFyQ29kZSgpOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUlu
Zm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNl
c0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4
ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0
aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UpOyB9CiAKIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CkBAIC02MjgsNyArNjI4
LDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2NrRm9y
KGtpbmQpOwogICAgIH0KLSAgICAgICAgCisKKyAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCk7
IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1
dGFibGUtPm5hbWUoKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIGluZmVycmVkTmFtZSgpIHsg
cmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pbmZlcnJlZE5hbWUoKTsgfQogICAgIEpTU3Ry
aW5nKiBuYW1lVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFt
ZVZhbHVlKCk7IH0KQEAgLTY3NSwxNCArNjc2LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fYm9k
eUluY2x1ZGVzQnJhY2VzOwogfTsKIAotaW5saW5lIGJvb2wgaXNIb3N0RnVuY3Rpb24oSlNWYWx1
ZSB2YWx1ZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24pCi17Ci0gICAgSlNGdW5jdGlv
biogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGdldEpTRnVuY3Rpb24odmFsdWUpKTsK
LSAgICBpZiAoIWZ1bmN0aW9uIHx8ICFmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBmdW5jdGlvbi0+bmF0aXZlRnVuY3Rpb24oKSA9
PSBuYXRpdmVGdW5jdGlvbjsKLX0KLQogaW5saW5lIHZvaWQgRXhlY3V0YWJsZUJhc2U6OmNsZWFy
Q29kZVZpcnR1YWwoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUpCiB7CiAgICAgc3dpdGNoIChl
eGVjdXRhYmxlLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAppbmRleCBj
MWIwOGFmMmQ4MThkYWU1N2UxYjAwZmRhMTczYTgxNjEzNzUyOWI1Li4xMjQ5MGM0MGYzMzQxN2Vj
YTkyMzg1MGEwZGM2NjJkYmJjZDQwZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC0yMiwxMiArMjIsMTMgQEAKICNp
bmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgogCiAjaW5jbHVkZSAiQXJndW1lbnRzLmgiCisj
aW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAi
SlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
U3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdCdWlsZGVyLmgiCi0jaW5jbHVkZSAiSW50ZXJw
cmV0ZXIuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJMZXhlci5o
IgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIApAQCAtMTA4LDcgKzEwOSw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CiAg
ICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0cyhKU0Z1bmN0aW9uOjppbmZvKCkpKSB7CiAgICAgICAg
IEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPih0aGlzVmFsdWUpOwot
ICAgICAgICBpZiAoZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAgIGlmIChmdW5j
dGlvbi0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiZnVuY3Rpb24gIiwgZnVu
Y3Rpb24tPm5hbWUoZXhlYyksICIoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKTsKICAgICAg
ICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gZnVuY3Rpb24tPmpzRXhlY3V0YWJs
ZSgpOwogICAgICAgICBTdHJpbmcgc291cmNlU3RyaW5nID0gZXhlY3V0YWJsZS0+c291cmNlKCku
dG9TdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRp
b24uY3BwCmluZGV4IDcyZWQxYzcxMjQwNjExNjhiMGFkZGQzMTE2Zjc1NWExMTdiOGZiOTAuLmIz
NzQ5NDMwOTllMjE1NWEzOTc3MTMzMTM0NzAyYzJhMjRhY2M4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcApAQCAtNTgsNyArNTgsNyBAQCB2
b2lkIEpTQWN0aXZhdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogCiBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlR2V0KFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICBTeW1i
b2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFt
ZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJs
ZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoZW50cnkuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzIsNyArNzIsNyBAQCBpbmxpbmUgYm9v
bCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdAogCiBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlR2V0
KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRv
cikKIHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5l
R2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlRW50cnkgZW50
cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBp
ZiAoZW50cnkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtODksNyArODks
NyBAQCBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0KEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TgogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFw
OjpoZWFwKHRoaXMpKTsKICAgICAKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9s
VGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJv
bFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1l
LnVpZCgpKTsKICAgICBpZiAoZW50cnkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAoZW50cnkuaXNSZWFkT25seSgpKSB7CkBAIC0xMzYsNyArMTM2LDcgQEAgaW5saW5l
IGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKFZNJiB2bSwg
UHJvcGVydHlOYW1lIHByb3AKICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiByZWc7CiAg
ICAgewogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZSgpLT5t
X2xvY2spOwotICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9s
VGFibGUoKS0+ZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgICAg
ICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUoKS0+ZmluZChs
b2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgICAgIGlmIChpdGVyID09IHN5bWJvbFRh
YmxlKCktPmVuZChsb2NrZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBT
eW1ib2xUYWJsZUVudHJ5JiBlbnRyeSA9IGl0ZXItPnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcAppbmRleCAyZmNm
ODgxNWMwNTY4MDU4MTJhNzk5MWE1ZmYwNjNkNjg3Mzk3MTY0Li45YTkyNTgzYWEwZWM5MGRiYjMy
OGVjZDUwZGMzMTM5YWVmMDI3M2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2lu
Y2x1ZGUgIkpTQXJndW1lbnRzSXRlcmF0b3IuaCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgor
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCmluZGV4IDkwMDdiNWY3ZDNmMTAz
YjFkMjFiMWEzNjVhMjZjMjE1YzMyYjRkMjguLmJhMGEyZDM4ZTljNTNlMTU5MzdkNDZhODk1MWE4
YzhjNDUwNzkyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3Bw
CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIkdl
dHRlclNldHRlci5oIgogI2luY2x1ZGUgIkluZGV4aW5nSGVhZGVySW5saW5lcy5oIgorI2luY2x1
ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAj
aW5jbHVkZSAiUmVqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL0FWTFRyZWUuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3BwCmluZGV4IGQ1MDZj
NGViZDI2MjBlZmQ3MDc5M2E4NzNkMDg1MmZiZDk3ODI4NTkuLmNmMzcwOTdlYzBjNjkyNWE4Njdi
OGMwMTBjMGVmYzQwNzQ0ODVmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAi
SlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmNwcAppbmRleCBjY2E2ODg4YmY5OGEwMjg2NDZjYTNkZGRmMzc2MjdjZTBlN2Q5MzAyLi4z
MzlhN2FiN2Y1OTUxNWU5NmFmYjdlYzRiODc0MWU3YWE4ZTE2NmY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApAQCAtMzIsNyArMzIsOSBAQAogI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1
ZGUgIkpTTm90QW5PYmplY3QuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNs
dWRlICJOdW1iZXJPYmplY3QuaCIKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSA8
d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAppbmRleCBmN2M4NDQ2
NDUwOTJiMjUwODA1ZTZlOGQ0ODMyYzk5OGJkYjg5YjU0Li5kNzk1ZGQ1NmE5N2RkYjU5N2MwOTBm
YzJlMGI3ZjMwOGUzM2ViY2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGxJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsSW5saW5lcy5oCkBAIC0yNyw4ICsyNywxMCBAQAogI2RlZmluZSBKU0NlbGxJbmxpbmVz
X2gKIAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJz
LmgiCiAjaW5jbHVkZSAiRGVmZXJHQy5oIgogI2luY2x1ZGUgIkhhbmRsZS5oIgorI2luY2x1ZGUg
IkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNP
YmplY3QuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCAyNDE5NjQ2MTBiYjQ0MjdiMTg2MzczMzQ2ZTI0
ZjVhODJkMGNkY2M0Li5hY2U2YzE0N2U0OTdmZWUyMDI5MmZiNTUzOTc2MGQ1ZDY5ODI5Y2U4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtMzQs
NyArMzQsOCBAQAogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2V0
dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgotI2luY2x1ZGUgIkpTQm91bmRGdW5j
dGlvbi5oIiAKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0
aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNO
b3RBbk9iamVjdC5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCkBAIC0xMDksNiArMTEwLDE0
IEBAIHZvaWQgSlNGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBOYXRpdmVFeGVjdXRh
YmxlKiBleGVjdXRhYmxlLCBpbnQgbGVuZ3RoCiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCksIERvbnREZWxldGUgfCBSZWFkT25seSB8
IERvbnRFbnVtKTsKIH0KIAorSlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1
bmN0aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gY3JlYXRl
KHZtLCBleGVjdXRhYmxlLCBnbG9iYWxPYmplY3QpOworICAgIGZ1bmN0aW9uLT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKCZ2bSwgZXhlY3V0YWJsZS0+bmFt
ZSgpLnN0cmluZygpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIGZ1
bmN0aW9uLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIo
ZXhlY3V0YWJsZS0+cGFyYW1ldGVyQ291bnQoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERv
bnRFbnVtKTsKKyAgICByZXR1cm4gZnVuY3Rpb247Cit9CisKIE9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlKiBKU0Z1bmN0aW9uOjpjcmVhdGVBbGxvY2F0aW9uUHJvZmlsZShFeGVjU3RhdGUqIGV4ZWMs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpAQCAt
MTQyLDcgKzE1MSw3IEBAIGNvbnN0IFN0cmluZyBKU0Z1bmN0aW9uOjpjYWxjdWxhdGVkRGlzcGxh
eU5hbWUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gZXhwbGljaXROYW1lOwogICAg
IAogICAgIGNvbnN0IFN0cmluZyBhY3R1YWxOYW1lID0gbmFtZShleGVjKTsKLSAgICBpZiAoIWFj
dHVhbE5hbWUuaXNFbXB0eSgpIHx8IGlzSG9zdEZ1bmN0aW9uKCkpCisgICAgaWYgKCFhY3R1YWxO
YW1lLmlzRW1wdHkoKSB8fCBpc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQogICAgICAgICByZXR1
cm4gYWN0dWFsTmFtZTsKICAgICAKICAgICByZXR1cm4ganNFeGVjdXRhYmxlKCktPmluZmVycmVk
TmFtZSgpLnN0cmluZygpOwpAQCAtMTUwLDEwICsxNTksMjAgQEAgY29uc3QgU3RyaW5nIEpTRnVu
Y3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMpCiAKIGNvbnN0IFNv
dXJjZUNvZGUqIEpTRnVuY3Rpb246OnNvdXJjZUNvZGUoKSBjb25zdAogewotICAgIGlmIChpc0hv
c3RGdW5jdGlvbigpKQorICAgIGlmIChpc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQogICAgICAg
ICByZXR1cm4gMDsKICAgICByZXR1cm4gJmpzRXhlY3V0YWJsZSgpLT5zb3VyY2UoKTsKIH0KKyAg
ICAKK2Jvb2wgSlNGdW5jdGlvbjo6aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSBjb25zdAorewor
ICAgIHJldHVybiBpc0hvc3RGdW5jdGlvbigpIHx8IGlzQnVpbHRpbkZ1bmN0aW9uKCk7Cit9CisK
K2Jvb2wgSlNGdW5jdGlvbjo6aXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdAoreworICAgIHJldHVy
biAhaXNIb3N0RnVuY3Rpb24oKSAmJiBqc0V4ZWN1dGFibGUoKS0+aXNCdWlsdGluRnVuY3Rpb24o
KTsKK30KIAogdm9pZCBKU0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiB7CkBAIC0yNzcsNyArMjk2LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUg
c2xvdEJhc2UKICAgICBpZiAoIWNhbGxlci5pc09iamVjdCgpIHx8ICFhc09iamVjdChjYWxsZXIp
LT5pbmhlcml0cyhKU0Z1bmN0aW9uOjppbmZvKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGNhbGxlcik7CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5j
dGlvbio+KGNhbGxlcik7Ci0gICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpIHx8ICFm
dW5jdGlvbi0+anNFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpKQorICAgIGlmIChmdW5jdGlv
bi0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSB8fCAhZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgp
LT5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsZXIp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJGdW5jdGlvbi5jYWxsZXIgdXNlZCB0byByZXRyaWV2ZSBzdHJpY3QgY2FsbGVyIikp
KTsKIH0KQEAgLTI5OSw3ICszMTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Z1bmN0aW9uOjpuYW1l
R2V0dGVyKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIHNsb3RCYXNlLCBFbmNvZAogYm9vbCBK
U0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0
KTsKLSAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICBpZiAodGhpc09i
amVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIEJhc2U6Omdl
dE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBl
KSB7CkBAIC0zNjEsNyArMzgwLDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KIHZvaWQgSlNG
dW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0
aW9uTW9kZSBtb2RlKQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNG
dW5jdGlvbio+KG9iamVjdCk7Ci0gICAgaWYgKCF0aGlzT2JqZWN0LT5pc0hvc3RGdW5jdGlvbigp
ICYmIChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKSB7CisgICAgaWYgKCF0aGlz
T2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpICYmIChtb2RlID09IEluY2x1ZGVEb250
RW51bVByb3BlcnRpZXMpKSB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFzIGJl
ZW4gcmVpZmllZC4KICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCk7CiAgICAg
ICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2Jq
ZWN0LCBleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBzbG90KTsKQEAgLTM3
Nyw3ICszOTYsNyBAQCB2b2lkIEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1l
cyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsCiB2b2lkIEpTRnVuY3Rpb246OnB1
dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTRnVuY3Rp
b24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNlbGwpOwotICAgIGlmICh0aGlz
T2JqZWN0LT5pc0hvc3RGdW5jdGlvbigpKSB7CisgICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdE9y
QnVpbHRpbkZ1bmN0aW9uKCkpIHsKICAgICAgICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
NDI1LDcgKzQ0NCw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wCiBib29sIEpTRnVuY3Rpb246
OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yLCBib29sIHRocm93RXhjZXB0aW9uKQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzSG9z
dEZ1bmN0aW9uKCkpCisgICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9u
KCkpCiAgICAgICAgIHJldHVybiBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pOwogCiAgICAgaWYgKHBy
b3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggN2NkMTRiOGMyZDgwMGY2
MWJkYzEyZWRkMmRmMDRkMzVmYTA2MTliNi4uOWI1OGI3NDdjZTFmM2YzMzJkMGY3NjBhNTc4NWI3
YWMxOWViZTlmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
aApAQCAtNjgsNiArNjgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBm
dW5jdGlvbjsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgc3RhdGljIEpTRnVuY3Rpb24q
IGNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTR2xvYmFs
T2JqZWN0Kik7CisgICAgICAgIAogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCop
OwogICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG5hbWUoRXhlY1N0
YXRlKik7CkBAIC05Nyw3ICs5OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFeGVjdXRh
YmxlQmFzZSogZXhlY3V0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXhlY3V0YWJsZS5nZXQoKTsg
fQogCiAgICAgICAgIC8vIFRvIGNhbGwgZWl0aGVyIG9mIHRoZXNlIG1ldGhvZHMgaW5jbHVkZSBF
eGVjdXRhYmxlLmgKLSAgICAgICAgaW5saW5lIGJvb2wgaXNIb3N0RnVuY3Rpb24oKSBjb25zdDsK
KyAgICAgICAgYm9vbCBpc0hvc3RGdW5jdGlvbigpIGNvbnN0OwogICAgICAgICBGdW5jdGlvbkV4
ZWN1dGFibGUqIGpzRXhlY3V0YWJsZSgpIGNvbnN0OwogCiAgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIGNvbnN0IFNvdXJjZUNvZGUqIHNvdXJjZUNvZGUoKSBjb25zdDsKQEAgLTE0NSw2ICsxNDcs
MTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbV9hbGxvY2F0aW9uUHJv
ZmlsZVdhdGNocG9pbnQ7CiAgICAgICAgIH0KIAorICAgICAgICBib29sIGlzSG9zdE9yQnVpbHRp
bkZ1bmN0aW9uKCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25z
dDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hvc3RGdW5jdGlvbk5vbklubGlu
ZSgpIGNvbnN0OworCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBjb25zdCBzdGF0aWMgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbXBsZW1l
bnRzSGFzSW5zdGFuY2UgfCBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0UHJv
cGVydHlOYW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIApAQCAtMTY5LDggKzE3NSw2
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7Ci0KICAgICAgICAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIGFyZ3VtZW50c0dldHRlcihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBjYWxsZXJHZXR0ZXIoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgbGVu
Z3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgUHJv
cGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb25JbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uSW5saW5lcy5oCmluZGV4IGZlNGUxMTRhZGJjMjM2NzRkM2I2MGU2MWY3MWNiN2EwNmM5NDc4
NGQuLjY5ZjBkNGYzOTZlZjljMmRhOWUwYmY2MDhjMjY0NDE3MTc5OWJhNTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaApAQCAtNTMs
MTYgKzUzLDI0IEBAIGlubGluZSBib29sIEpTRnVuY3Rpb246OmlzSG9zdEZ1bmN0aW9uKCkgY29u
c3QKIAogaW5saW5lIE5hdGl2ZUZ1bmN0aW9uIEpTRnVuY3Rpb246Om5hdGl2ZUZ1bmN0aW9uKCkK
IHsKLSAgICBBU1NFUlQoaXNIb3N0RnVuY3Rpb24oKSk7CisgICAgQVNTRVJUKGlzSG9zdEZ1bmN0
aW9uTm9uSW5saW5lKCkpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxOYXRpdmVFeGVjdXRhYmxl
Kj4obV9leGVjdXRhYmxlLmdldCgpKS0+ZnVuY3Rpb24oKTsKIH0KIAogaW5saW5lIE5hdGl2ZUZ1
bmN0aW9uIEpTRnVuY3Rpb246Om5hdGl2ZUNvbnN0cnVjdG9yKCkKIHsKLSAgICBBU1NFUlQoaXNI
b3N0RnVuY3Rpb24oKSk7CisgICAgQVNTRVJUKGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkpOwog
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxOYXRpdmVFeGVjdXRhYmxlKj4obV9leGVjdXRhYmxlLmdl
dCgpKS0+Y29uc3RydWN0b3IoKTsKIH0KIAoraW5saW5lIGJvb2wgaXNIb3N0RnVuY3Rpb24oSlNW
YWx1ZSB2YWx1ZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24pCit7CisgICAgSlNGdW5j
dGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGdldEpTRnVuY3Rpb24odmFsdWUp
KTsKKyAgICBpZiAoIWZ1bmN0aW9uIHx8ICFmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBmdW5jdGlvbi0+bmF0aXZlRnVuY3Rpb24o
KSA9PSBuYXRpdmVGdW5jdGlvbjsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAv
LyBKU0Z1bmN0aW9uSW5saW5lc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1
Y3RvcklubGluZXMuaAppbmRleCAyZGRjMjlmNzE4OTdiYjUxZDM5MGIwNmIyNWE3MzgzMzg3NGJh
MGMxLi5lZGQzNDQ5Y2U0N2IxNzM1ZThlNWRiYjA1ZjMxOGUzZDU1ZjNiZTYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0Nv
bnN0cnVjdG9ySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKQEAgLTI2LDYgKzI2LDcg
QEAKICNpZm5kZWYgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXNfaAog
I2RlZmluZSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lc19oCiAKKyNp
bmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVk
ZSAiSlNBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29u
c3RydWN0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggNmRiODYyNzRjM2I4
NzRhYWFkZTUxNTE4OTgyNjcyNmZiMTM2YzE3My4uZjI0ZWE3MzAzZGY5NjlkYmQyZGNhNTJjODZk
MTFjNzhjMDBkYjllYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTI3LDYgKzI3
LDcgQEAKICNkZWZpbmUgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzX2gKIAogI2luY2x1
ZGUgIkFycmF5QnVmZmVyVmlldy5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAj
aW5jbHVkZSAiRGVmZXJHQy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0
aW9uSGVscGVycy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMu
aAppbmRleCA0NTk5OTdhNDY0YjkxMTk0NzdiMWJlODRlMzZjNGUyOTY2YWNlZjg1Li44ZTVmZjgy
NzkxZTZmZjhkNGViOWMzNzM2OTFlNDMzZWI3ZDE2YWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBKU0dl
bmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXNfaAogI2RlZmluZSBKU0dlbmVyaWNU
eXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXNfaAogCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRp
ZmllcnMuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMu
aCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMmMyNzRjMWE3ZDQ4MWMwN2RmMGQyYmVi
M2IyOTMxYTM5MDdhNWU2Ni4uMDZlNTRjODRlNzdiOTAzMmJhYTFkMmRmNDdhMWM3MmU4MGI3ZGVh
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcApAQCAtMzQ2LDcgKzM0Niw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFs
dWUgcHJvdG90eXBlKQogCiAgICAgLy8gQ29uc3RydWN0b3JzCiAKLSAgICBKU0NlbGwqIG9iamVj
dENvbnN0cnVjdG9yID0gT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgT2JqZWN0Q29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQo
KSksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKKyAgICBPYmplY3RDb25zdHJ1Y3Rvciogb2Jq
ZWN0Q29uc3RydWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBPYmplY3RDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdl
dCgpKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOworICAgIG1fb2JqZWN0Q29uc3RydWN0b3Iu
c2V0KHZtLCB0aGlzLCBvYmplY3RDb25zdHJ1Y3Rvcik7CiAgICAgSlNDZWxsKiBmdW5jdGlvbkNv
bnN0cnVjdG9yID0gRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBGdW5jdGlvbkNvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCkpLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKICAgICBKU0NlbGwqIGFycmF5Q29uc3Ry
dWN0b3IgPSBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEFycmF5Q29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fYXJy
YXlQcm90b3R5cGUuZ2V0KCkpOwogCkBAIC00MzIsNyArNDMzLDEwIEBAIHZvaWQgSlNHbG9iYWxP
YmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQogICAgIEdsb2JhbFByb3BlcnR5SW5mbyBz
dGF0aWNHbG9iYWxzW10gPSB7CiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5OYU4sIGpzTmFOKCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwK
ICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPkluZmluaXR5LCBq
c051bWJlcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpLCBEb250RW51
bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2
bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLCBqc1VuZGVmaW5lZCgpLCBEb250RW51
bSB8IERvbnREZWxldGUgfCBSZWFkT25seSkKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQsIGpzVW5kZWZpbmVkKCksIERvbnRFbnVt
IHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmRQcml2YXRlTmFtZSwganNVbmRlZmluZWQo
KSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+T2JqZWN0UHJpdmF0ZU5hbWUsIG9iamVjdENvbnN0
cnVjdG9yLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5UeXBlRXJyb3JQcml2YXRlTmFtZSwgbV90
eXBlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9u
bHkpCiAgICAgfTsKICAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2JhbHMsIFdURl9BUlJB
WV9MRU5HVEgoc3RhdGljR2xvYmFscykpOwogICAgIApAQCAtNjA4LDYgKzYxMiw3IEBAIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zeW50YXhFcnJvckNv
bnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV90eXBlRXJyb3JD
b25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fVVJJRXJyb3JD
b25zdHJ1Y3Rvcik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fb2JqZWN0Q29u
c3RydWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Byb21pc2VDb25z
dHJ1Y3Rvcik7CiAKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9ldmFsRnVuY3Rp
b24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
aW5kZXggYjBjYWQzZGM1NDcwZjdjN2EwZTU3MGJkY2QyZGZmYTg5NWUyYWEwYy4uM2E2MTZjNmYw
NWVkZjFkMjk1YWY4NDQxYWE2NjUwMGZiOTJhNGE0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC02Nyw2ICs2Nyw3IEBAIGNsYXNzIEpT
U3RhY2s7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBNaWNyb3Rhc2s7CiBj
bGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOworY2xhc3MgT2JqZWN0Q29uc3RydWN0b3I7CiBj
bGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7CiBjbGFzcyBS
ZWdFeHBDb25zdHJ1Y3RvcjsKQEAgLTE1OCw2ICsxNTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV3Jp
dGVCYXJyaWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IG1fdHlwZUVycm9yQ29uc3RydWN0b3I7
CiAgICAgV3JpdGVCYXJyaWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IG1fVVJJRXJyb3JDb25z
dHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8SlNQcm9taXNlQ29uc3RydWN0b3I+IG1fcHJvbWlz
ZUNvbnN0cnVjdG9yOworICAgIFdyaXRlQmFycmllcjxPYmplY3RDb25zdHJ1Y3Rvcj4gbV9vYmpl
Y3RDb25zdHJ1Y3RvcjsKIAogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2V2YWxGdW5j
dGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9jYWxsRnVuY3Rpb247CkBAIC0z
MzAsNiArMzMyLDcgQEAgcHVibGljOgogICAgIFJlZ0V4cENvbnN0cnVjdG9yKiByZWdFeHBDb25z
dHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwQ29uc3RydWN0b3IuZ2V0KCk7IH0KIAog
ICAgIEVycm9yQ29uc3RydWN0b3IqIGVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBt
X2Vycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KKyAgICBPYmplY3RDb25zdHJ1Y3Rvciogb2JqZWN0
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX29iamVjdENvbnN0cnVjdG9yLmdldCgpOyB9
CiAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogZXZhbEVycm9yQ29uc3RydWN0b3IoKSBjb25z
dCB7IHJldHVybiBtX2V2YWxFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CiAgICAgTmF0aXZlRXJy
b3JDb25zdHJ1Y3RvciogcmFuZ2VFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9y
YW5nZUVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
KiByZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2VF
cnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CkBAIC01ODEsNyArNTg0LDcgQEAgaW5saW5lIGJvb2wg
SlNHbG9iYWxPYmplY3Q6Omhhc093blByb3BlcnR5Rm9yV3JpdGUoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUKIAogaW5saW5lIGJvb2wgSlNHbG9iYWxPYmplY3Q6OnN5bWJvbFRhYmxlSGFz
UHJvcGVydHkoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICBTeW1ib2xUYWJsZUVu
dHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNO
YW1lKCkpOworICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxp
bmVHZXQocHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICByZXR1cm4gIWVudHJ5LmlzTnVsbCgpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggMmI2
N2ExZDllZWQ4NGU5OTU2ZjhiYjk2ODM4NGM4NGNhZWE1M2NmZi4uMmVhMmMyNGU2ZWFiNGNkMGQ3
ZmZlZDY2NWVmNGFlNDFhZjA3NTBmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2V0Q2xh
c3NQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQ2xhc3NJbmZvKiBjbGFzcwog
ICAgICAgICBpbnQgaGFzaFNpemVNYXNrID0gdGFibGUtPmNvbXBhY3RTaXplIC0gMTsKICAgICAg
ICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IHRhYmxlLT50YWJsZTsKICAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPD0gaGFzaFNpemVNYXNrOyArK2ksICsrZW50cnkpIHsKLSAgICAgICAgICAg
IGlmIChlbnRyeS0+a2V5KCkgJiYgKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8
fCAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgJiYgISgoZW50cnktPmF0dHJp
YnV0ZXMoKSAmIEZ1bmN0aW9uKSAmJiBkaWRSZWlmeSkpCisgICAgICAgICAgICBpZiAoZW50cnkt
PmtleSgpICYmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwgKG1vZGUgPT0g
SW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpICYmICEoKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBC
dWlsdGluT3JGdW5jdGlvbikgJiYgZGlkUmVpZnkpKQogICAgICAgICAgICAgICAgIHByb3BlcnR5
TmFtZXMuYWRkKGVudHJ5LT5rZXkoKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNjE4LDcgKzE2
MTgsNyBAQCB2b2lkIEpTT2JqZWN0OjpyZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlbGV0ZShFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgUHJvcGVydHlTbG90
IHNsb3QodGhpcyk7CiAgICAgICAgIGZvciAoSGFzaFRhYmxlOjpDb25zdEl0ZXJhdG9yIGl0ZXIg
PSBoYXNoVGFibGUtPmJlZ2luKHZtKTsgaXRlciAhPSBoYXNoVGFibGUtPmVuZCh2bSk7ICsraXRl
cikgewotICAgICAgICAgICAgaWYgKGl0ZXItPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKQorICAg
ICAgICAgICAgaWYgKGl0ZXItPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKQogICAg
ICAgICAgICAgICAgIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KGdsb2JhbE9iamVjdCgpLT5nbG9i
YWxFeGVjKCksICppdGVyLCB0aGlzLCBJZGVudGlmaWVyKCZ2bSwgaXRlci0+a2V5KCkpLCBzbG90
KTsKICAgICAgICAgfQogICAgIH0KQEAgLTIyMzYsNiArMjIzNiwxNiBAQCB2b2lkIEpTT2JqZWN0
OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbgogICAgIHB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCBmdW5jdGlvbiwgYXR0
cmlidXRlcyk7CiB9CiAKK3ZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZSYg
cHJvcGVydHlOYW1lLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdW5z
aWduZWQgYXR0cmlidXRlcykKK3sKKyAgICBTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1l
LnB1YmxpY05hbWUoKTsKKyAgICBpZiAoIW5hbWUpCisgICAgICAgIG5hbWUgPSB2bS5wcm9wZXJ0
eU5hbWVzLT5hbm9ueW1vdXMuaW1wbCgpOworICAgIEFTU0VSVChuYW1lKTsKKyAgICBKU0Z1bmN0
aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgc3Rh
dGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRhYmxlKSwgZ2xvYmFs
T2JqZWN0KTsKKyAgICBwdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgZnVuY3Rpb24sIGF0dHJp
YnV0ZXMpOworfQorCiB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
UHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRp
dmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNpYywgdW5zaWduZWQg
YXR0cmlidXRlcykKIHsKICAgICBTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1Ymxp
Y05hbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDAy
YjEzN2IzNTBjMmZhODMyNWJkM2I5NjQ3MTEyYWJlODc2ZjM4M2YuLmRkZTU5N2VmZmFlYzBmMWI4
ZDQ0YzI5MTE5NTAzMDFmMDYwMDdlOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkJ1dHRlcmZseS5oIgogI2lu
Y2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNsYXNzSW5mby5oIgotI2luY2x1ZGUgIkNv
bW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiQ29weVdyaXRlQmFycmllci5oIgogI2luY2x1
ZGUgIkRlZmVyR0MuaCIKICNpbmNsdWRlICJIZWFwLmgiCkBAIC01ODEsNiArNTgwLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcHV0RGlyZWN0VW5kZWZpbmVkKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkg
eyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5zZXRVbmRlZmluZWQoKTsgfQogCiAgICAgdm9p
ZCBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJv
cGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRy
aW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIHZvaWQgcHV0RGlyZWN0QnVpbHRpbkZ1
bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCBGdW5jdGlv
bkV4ZWN1dGFibGUqLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICB2b2lkIHB1dERpcmVjdE5h
dGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwg
SW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0
cnVjdG9yLmNwcAppbmRleCA0MDI2MTk2MzNmYTA2ZmQyNTRiM2YyYTdhOGNjNzFlODA3YWFmOTEx
Li4xN2QyYWI2NWE4OGZmYjEzZmE5YTZjOGY1ODNjYTg0NGFmODMyMjQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3Bw
CkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSlNQcm9taXNlRGVmZXJyZWQuaCIKICNpbmNs
dWRlICJKU1Byb21pc2VGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU1Byb21pc2VQcm90b3R5cGUu
aCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJMb29rdXAuaCIKICNp
bmNsdWRlICJOdW1iZXJPYmplY3QuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VEZWZlcnJl
ZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5j
cHAKaW5kZXggY2JjNDJlYjlmZDkyMzBmNDZlNmY4NDlmZjFhNzk1OWJkMTA3OWJlYy4uNDI3MTBj
MzA1NDRhMTFjNzU0N2MzY2Y4ODhiOTZhNDhjNDY4YTA3MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmNwcApAQCAtMzIsNiArMzIs
NyBAQAogI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZUNvbnN0cnVj
dG9yLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlRnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiSlNTdHJp
bmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9t
aXNlUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlz
ZVByb3RvdHlwZS5jcHAKaW5kZXggOWRmNDU3ODE3Y2E4MDNkMzczMjgyNDJmYzMzZWNhNzQ1ZWQ0
MDQzMS4uZTRjYTVhNDZkOTFiYjgwNDI0Yjg2MmU5MzI0OTIzN2JmYzUzZTdhZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuY3Bw
CkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSlNQcm9taXNlRGVmZXJyZWQuaCIKICNpbmNs
dWRlICJKU1Byb21pc2VGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU1Byb21pc2VSZWFjdGlvbi5o
IgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk1pY3JvdGFzay5oIgog
I2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUmVhY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlYWN0aW9uLmgKaW5kZXggZmM3MTQ2YzUwZTg0OWQzMzBk
ODllNjNmYzE5Y2E2NDlkM2MwZTg0OC4uNDJkMjQ5NmExZmNkYWJiYzExZGM3YmIyNzdkZDEyM2Uy
YTRkZTIxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9t
aXNlUmVhY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21p
c2VSZWFjdGlvbi5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEpTUHJvbWlzZVJlYWN0aW9u
X2gKIAogI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgog
I2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAK
aW5kZXggNjhhOGJkODdkMzhhZGJiYjlkZDJhYzllYzRiNDlkNWVmNDU0OWQ1Ni4uMjM3YzQyYmIw
ZGEwZjE2Njc2ZWIxMWFkZTgxODBhN2IwNmQ5OGViNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKQEAgLTI5
LDcgKzI5LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmgiCiAKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKaW5kZXggZjQz
NjJmZjM1NGVlNmE1MDIyMWJiNzMxZDFhMjYxMWU2ZGQ2MWJjMC4uZDA3MzcxOWRlMTYwZDJmMjky
MTEwYTU5NmExMDVlMmZhMjExNWZmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaApAQCAtMzEsNyArMzEsNiBAQAog
CiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgotI2luY2x1ZGUg
Ik9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1ZGUg
PG1lbW9yeT4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXgg
MmIxY2RkZGM1ODQxZDYwZDE1N2EyZTYxZjcwMmIwZWU1ZmExZDY3Ni4uZTM5MzQxNjBhZWE5MjZl
ZjE1OTMyZjg3OTBlMjRjNTJhZjAyZDM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5oCkBAIC0yNCw3ICsyNCw2IEBACiAjZGVmaW5lIEpTU3RyaW5nX2gKIAogI2lu
Y2x1ZGUgIkNhbGxGcmFtZS5oIgotI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5j
bHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlByb3BlcnR5RGVzY3JpcHRvci5oIgogI2lu
Y2x1ZGUgIlByb3BlcnR5U2xvdC5oIgpAQCAtNDcyLDMzICs0NzEsNiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKCZleGVjLT52
bSgpLCBzKTsgfQogICAgIGlubGluZSBKU1N0cmluZyoganNPd25lZFN0cmluZyhFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4ganNPd25lZFN0cmluZygmZXhlYy0+dm0o
KSwgcyk7IH0KIAotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJv
cGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQotICAgIHsKLSAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7Ci0gICAgICAgICAgICBzbG90LnNldFZhbHVlKHRo
aXMsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBqc051bWJlcihtX2xlbmd0aCkp
OwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICB1bnNpZ25l
ZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKLSAgICAgICAgaWYgKGkgPCBtX2xlbmd0aCkg
ewotICAgICAgICAgICAgQVNTRVJUKGkgIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTsgLy8g
Tm8gbmVlZCBmb3IgYW4gZXhwbGljaXQgY2hlY2ssIHRoZSBhYm92ZSB0ZXN0IHdvdWxkIGFsd2F5
cyBmYWlsIQotICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVh
ZE9ubHksIGdldEluZGV4KGV4ZWMsIGkpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAgICAgICAgIAotICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi0g
ICAgewotICAgICAgICBpZiAocHJvcGVydHlOYW1lIDwgbV9sZW5ndGgpIHsKLSAgICAgICAgICAg
IHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBnZXRJbmRleChleGVj
LCBwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0K
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQogICAgIGlubGluZSBib29sIGlzSlNTdHJp
bmcoSlNWYWx1ZSB2KSB7IHJldHVybiB2LmlzQ2VsbCgpICYmIHYuYXNDZWxsKCktPmNsYXNzSW5m
bygpID09IEpTU3RyaW5nOjppbmZvKCk7IH0KIAogICAgIC8vIC0tLSBKU1ZhbHVlIGlubGluZXMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTI4LDMyICs1MDAsNiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgcmV0dXJuIHRvV1RGU3RyaW5nU2xvd0Nhc2UoZXhlYyk7CiAgICAg
fQogCi0gICAgQUxXQVlTX0lOTElORSBTdHJpbmcgaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3Ry
aW5nKGNvbnN0IEpTVmFsdWUmIHZhbHVlLCBFeGVjU3RhdGUqIGV4ZWMpCi0gICAgewotICAgICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgICAgICBpZiAodmFsdWUuaXNJbnQzMigpKQotICAg
ICAgICAgICAgcmV0dXJuIHZtLm51bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZS5hc0ludDMyKCkpOwot
ICAgICAgICBpZiAodmFsdWUuaXNEb3VibGUoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5udW1l
cmljU3RyaW5ncy5hZGQodmFsdWUuYXNEb3VibGUoKSk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc1Ry
dWUoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT50cnVlS2V5d29yZC5z
dHJpbmcoKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzRmFsc2UoKSkKLSAgICAgICAgICAgIHJldHVy
biB2bS5wcm9wZXJ0eU5hbWVzLT5mYWxzZUtleXdvcmQuc3RyaW5nKCk7Ci0gICAgICAgIGlmICh2
YWx1ZS5pc051bGwoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5udWxs
S2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAg
ICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZC5zdHJpbmco
KTsKLSAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKLSAg
ICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIFN0cmluZyBKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGlu
ZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoaXNTdHJpbmcoKSkK
LSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU1N0cmluZyo+KGFzQ2VsbCgpKS0+dmFs
dWUoZXhlYyk7Ci0KLSAgICAgICAgcmV0dXJuIGlubGluZUpTVmFsdWVOb3RTdHJpbmd0b1N0cmlu
ZygqdGhpcywgZXhlYyk7Ci0gICAgfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8v
IEpTU3RyaW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdJ
bmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMzc4YzA1ZmM4MGQ4OGU4NTM3YzlkMmE1ZWFiOWZmMGJhOWI2
MGE3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nSW5saW5lcy5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTU3RyaW5nSW5saW5lc19oCisj
ZGVmaW5lIEpTU3RyaW5nSW5saW5lc19oCisKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5o
IgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK0FMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3Ry
aW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+
cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgeworICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERv
bnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBqc051bWJlcihtX2xlbmd0aCkpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5
TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGkgPCBtX2xlbmd0aCkgeworICAgICAgICBBU1NFUlQo
aSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOyAvLyBObyBuZWVkIGZvciBhbiBleHBsaWNp
dCBjaGVjaywgdGhlIGFib3ZlIHRlc3Qgd291bGQgYWx3YXlzIGZhaWwhCisgICAgICAgIHNsb3Qu
c2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBnZXRJbmRleChleGVjLCBpKSk7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK0FMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4
ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
Cit7CisgICAgaWYgKHByb3BlcnR5TmFtZSA8IG1fbGVuZ3RoKSB7CisgICAgICAgIHNsb3Quc2V0
VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBnZXRJbmRleChleGVjLCBwcm9wZXJ0
eU5hbWUpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHJldHVybiBm
YWxzZTsKK30KKworQUxXQVlTX0lOTElORSBTdHJpbmcgaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3Rv
U3RyaW5nKGNvbnN0IEpTVmFsdWUmIHZhbHVlLCBFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBpZiAodmFsdWUuaXNJbnQzMigpKQorICAgICAgICByZXR1
cm4gdm0ubnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVlLmFzSW50MzIoKSk7CisgICAgaWYgKHZhbHVl
LmlzRG91YmxlKCkpCisgICAgICAgIHJldHVybiB2bS5udW1lcmljU3RyaW5ncy5hZGQodmFsdWUu
YXNEb3VibGUoKSk7CisgICAgaWYgKHZhbHVlLmlzVHJ1ZSgpKQorICAgICAgICByZXR1cm4gdm0u
cHJvcGVydHlOYW1lcy0+dHJ1ZUtleXdvcmQuc3RyaW5nKCk7CisgICAgaWYgKHZhbHVlLmlzRmFs
c2UoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPmZhbHNlS2V5d29yZC5zdHJp
bmcoKTsKKyAgICBpZiAodmFsdWUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0
eU5hbWVzLT5udWxsS2V5d29yZC5zdHJpbmcoKTsKKyAgICBpZiAodmFsdWUuaXNVbmRlZmluZWQo
KSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQuc3Ry
aW5nKCk7CisgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKK30K
KyAgICAKK0FMV0FZU19JTkxJTkUgU3RyaW5nIEpTVmFsdWU6OnRvV1RGU3RyaW5nSW5saW5lKEV4
ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBpZiAoaXNTdHJpbmcoKSkKKyAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEpTU3RyaW5nKj4oYXNDZWxsKCkpLT52YWx1ZShleGVjKTsKKyAgICAK
KyAgICByZXR1cm4gaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKCp0aGlzLCBleGVjKTsK
K30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKaW5kZXggMmFjMjUyNGM1ZGZkYTNkMTIyNDlkNzc5
MGFkYzMxMjllM2MwZTg3MS4uZmJjOGI4OTVlYWU2YWY3ODg4MzliZWI1ZTgzZDdiNmI5NzkyOGZh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJs
ZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xU
YWJsZU9iamVjdC5jcHAKQEAgLTY0LDYgKzY0LDggQEAgdm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0
OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXQK
ICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIodGhpc09iamVjdC0+c3ltYm9sVGFi
bGUoKS0+bV9sb2NrKTsKICAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgZW5kID0g
dGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+ZW5kKGxvY2tlcik7CiAgICAgICAgIGZvciAoU3lt
Ym9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXQgPSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5i
ZWdpbihsb2NrZXIpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIGlmIChpdC0+a2V5
LT5pc0VtcHR5VW5pcXVlKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICBpZiAoIShpdC0+dmFsdWUuZ2V0QXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IChtb2RlID09
IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKQogICAgICAgICAgICAgICAgIHByb3BlcnR5TmFt
ZXMuYWRkKElkZW50aWZpZXIoZXhlYywgaXQtPmtleS5nZXQoKSkpOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgK
aW5kZXggYjViMjBhODQ1YjZhYjY0NDI0YjM3ZTMxYjI3NzRlZjkwNTM1M2Y3Zi4uZDAzYjI0NTEx
YzJkZTE5NTlmYjVmNTZkNjQ5YzY0ZDBlZmUwNjg1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaApAQCAtNzIsNyArNzIsNyBA
QCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKIHsKICAgICBTeW1ib2xUYWJsZSYgc3ltYm9s
VGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgIENvbmN1cnJlbnRKSVRMb2NrZXIg
bG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0
b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpKTsKKyAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUu
ZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGl0ZXIgPT0gc3ltYm9s
VGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBTeW1ib2xUYWJs
ZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+dmFsdWU7CkBAIC04Nyw3ICs4Nyw3IEBAIGlubGlu
ZSBib29sIHN5bWJvbFRhYmxlR2V0KAogewogICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9
ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIo
c3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVy
ID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwor
ICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxv
Y2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5l
bmQobG9ja2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFN5bWJvbFRhYmxlRW50cnk6
OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1ZTsKQEAgLTEwNCw3ICsxMDQsNyBAQCBpbmxpbmUgYm9v
bCBzeW1ib2xUYWJsZUdldCgKIHsKICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2Jq
ZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJv
bFRhYmxlLm1fbG9jayk7Ci0gICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5
bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBT
eW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIs
IHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxv
Y2tlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0
IGVudHJ5ID0gaXRlci0+dmFsdWU7CkBAIC0xMjYsNyArMTI2LDcgQEAgaW5saW5lIGJvb2wgc3lt
Ym9sVGFibGVQdXQoCiAgICAgewogICAgICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAq
b2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBHQ1NhZmVDb25jdXJyZW50SklUTG9ja2Vy
IGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2ssIGV4ZWMtPnZtKCkuaGVhcCk7Ci0gICAgICAgIFN5
bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwg
cHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0
ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgp
KTsKICAgICAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJvb2wgd2FzRmF0OwpAQCAtMTU5LDcgKzE1OSw3
IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoCiAgICAgewogICAg
ICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwog
ICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2spOwot
ICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmlu
ZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgICAgICBTeW1ib2xUYWJs
ZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5
TmFtZS51aWQoKSk7CiAgICAgICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5JiBl
bnRyeSA9IGl0ZXItPnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTG9va3VwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5j
cHAKaW5kZXggYTgwNmRkMDUyYTBjYmVlNGNhYzJjYWE2ZTA4YzY3MTYwMDVjMjcwYy4uYTk3NjUy
MDFiOWY1MTg2NDE0MjNkZGUwZmUwZTJlNTFhOGNlNzNiYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Mb29rdXAuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgSGFzaFRhYmxlOjpk
ZWxldGVUYWJsZSgpIGNvbnN0CiBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIHRoaXNPYmosIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBBU1NFUlQo
dGhpc09iai0+Z2xvYmFsT2JqZWN0KCkpOwotICAgIEFTU0VSVChlbnRyeS0+YXR0cmlidXRlcygp
ICYgRnVuY3Rpb24pOworICAgIEFTU0VSVChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9y
RnVuY3Rpb24pOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgdW5zaWduZWQgYXR0cmli
dXRlczsKICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSB0aGlzT2JqLT5nZXREaXJlY3RPZmZz
ZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CkBAIC03OSw5ICs3OSwxMyBAQCBib29s
IHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5
KiBlbnRyeSwgSlNPYmplY3QqCiAgICAgICAgIGlmICh0aGlzT2JqLT5zdGF0aWNGdW5jdGlvbnNS
ZWlmaWVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgICAgIHRoaXNP
YmotPnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKAotICAgICAgICAgICAgdm0sIHRoaXNPYmotPmds
b2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5mdW5jdGlvbkxlbmd0aCgpLAotICAg
ICAgICAgICAgZW50cnktPmZ1bmN0aW9uKCksIGVudHJ5LT5pbnRyaW5zaWMoKSwgZW50cnktPmF0
dHJpYnV0ZXMoKSk7CisgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbikK
KyAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbih2bSwgdGhpc09i
ai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZW50cnktPmJ1aWx0aW5HZW5lcmF0b3Io
KSh2bSksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IHRoaXNPYmotPnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKAorICAgICAgICAgICAgICAgIHZtLCB0
aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBlbnRyeS0+ZnVuY3Rpb25MZW5n
dGgoKSwKKyAgICAgICAgICAgICAgICBlbnRyeS0+ZnVuY3Rpb24oKSwgZW50cnktPmludHJpbnNp
YygpLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAgICAgICAgfQogICAgICAgICBvZmZzZXQgPSB0
aGlzT2JqLT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CiAg
ICAgICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKaW5kZXggYmRlODNkNGE2ZmMzNTU3Nzg1MGUzMWU4OGJj
MzlmZDA1ZjdiY2U1Mi4uZGJhMzg5ZTllMjQzZGQwZWNiMmJhOThmMzk0ZDQwNzlmOWRlYTkzNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKQEAgLTQzLDYgKzQzLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgLy8gaWUuIHR5cGVkZWYgSlNWYWx1ZSAoKkdldEZ1bmN0aW9u
KShFeGVjU3RhdGUqLCBKU09iamVjdCogYmFzZU9iamVjdCkKICAgICB0eXBlZGVmIFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jIEdldEZ1bmN0aW9uOwogICAgIHR5cGVkZWYgUHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmMgUHV0RnVuY3Rpb247CisgICAgdHlwZWRlZiBGdW5jdGlvbkV4ZWN1
dGFibGUqICgqQnVpbHRpbkdlbmVyYXRvcikoVk0mKTsKIAogICAgIGNsYXNzIEhhc2hFbnRyeSB7
CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjgsMTEgKzY5LDEyIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1faW50cmluc2ljOwogICAgICAgICB9
CiAKKyAgICAgICAgQnVpbHRpbkdlbmVyYXRvciBidWlsdGluR2VuZXJhdG9yKCkgY29uc3QgeyBB
U1NFUlQobV9hdHRyaWJ1dGVzICYgQnVpbHRpbik7IHJldHVybiBtX3UuYnVpbHRpbkdlbmVyYXRv
ci5nZW5lcmF0b3JWYWx1ZTsgfQogICAgICAgICBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbigpIGNv
bnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKTsgcmV0dXJuIG1fdS5mdW5jdGlv
bi5mdW5jdGlvblZhbHVlOyB9CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgZnVuY3Rpb25MZW5ndGgo
KSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBGdW5jdGlvbik7IHJldHVybiBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyPihtX3UuZnVuY3Rpb24ubGVuZ3RoKTsgfQogCi0gICAgICAgIEdl
dEZ1bmN0aW9uIHByb3BlcnR5R2V0dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMg
JiBGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5LmdldDsgfQotICAgICAgICBQdXRGdW5j
dGlvbiBwcm9wZXJ0eVB1dHRlcigpIGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1dGVzICYgRnVu
Y3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0eS5wdXQ7IH0KKyAgICAgICAgR2V0RnVuY3Rpb24g
cHJvcGVydHlHZXR0ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEJ1aWx0aW5P
ckZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVydHkuZ2V0OyB9CisgICAgICAgIFB1dEZ1bmN0
aW9uIHByb3BlcnR5UHV0dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBCdWls
dGluT3JGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5LnB1dDsgfQogCiAgICAgICAgIGlu
dHB0cl90IGxleGVyVmFsdWUoKSBjb25zdCB7IEFTU0VSVCghbV9hdHRyaWJ1dGVzKTsgcmV0dXJu
IG1fdS5sZXhlci52YWx1ZTsgfQogCkBAIC05NCw2ICs5NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgICAgICBpbnRwdHJfdCBsZW5ndGg7IC8vIG51bWJlciBvZiBhcmd1bWVudHMg
Zm9yIGZ1bmN0aW9uCiAgICAgICAgICAgICB9IGZ1bmN0aW9uOwogICAgICAgICAgICAgc3RydWN0
IHsKKyAgICAgICAgICAgICAgICBCdWlsdGluR2VuZXJhdG9yIGdlbmVyYXRvclZhbHVlOworICAg
ICAgICAgICAgICAgIGludHB0cl90IHVudXNlZDsKKyAgICAgICAgICAgIH0gYnVpbHRpbkdlbmVy
YXRvcjsKKyAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgR2V0RnVuY3Rpb24g
Z2V0OwogICAgICAgICAgICAgICAgIFB1dEZ1bmN0aW9uIHB1dDsKICAgICAgICAgICAgIH0gcHJv
cGVydHk7CkBAIC0yMDksNyArMjE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToK
ICAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBIYXNoRW50cnkqIGVudHJ5KFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cmluZ0ltcGwq
IGltcGwgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOworICAgICAgICAgICAgU3RyaW5nSW1w
bCogaW1wbCA9IHByb3BlcnR5TmFtZS51aWQoKTsKICAgICAgICAgICAgIGlmICghaW1wbCkKICAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgCkBAIC0yNDksNyArMjU1LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIGlmICghZW50cnkpIC8vIG5vdCBmb3VuZCwgZm9yd2FyZCB0
byBwYXJlbnQKICAgICAgICAgICAgIHJldHVybiBQYXJlbnRJbXA6OmdldE93blByb3BlcnR5U2xv
dCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCi0gICAgICAgIGlmIChlbnRy
eS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pCisgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRl
cygpICYgQnVpbHRpbk9yRnVuY3Rpb24pCiAgICAgICAgICAgICByZXR1cm4gc2V0VXBTdGF0aWNG
dW5jdGlvblNsb3QoZXhlYywgZW50cnksIHRoaXNPYmosIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAK
ICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09iaiwgZW50cnktPmF0dHJpYnV0
ZXMoKSwgZW50cnktPnByb3BlcnR5R2V0dGVyKCkpOwpAQCAtMjg2LDcgKzI5Miw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBpZiAoIWVudHJ5KSAvLyBub3QgZm91bmQsIGZvcndhcmQgdG8g
cGFyZW50CiAgICAgICAgICAgICByZXR1cm4gUGFyZW50SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
dGhpc09iaiwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIAotICAgICAgICBBU1NFUlQoIShl
bnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pKTsKKyAgICAgICAgQVNTRVJUKCEoZW50cnkt
PmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSk7CiAKICAgICAgICAgc2xvdC5zZXRD
YWNoZWFibGVDdXN0b20odGhpc09iaiwgZW50cnktPmF0dHJpYnV0ZXMoKSwgZW50cnktPnByb3Bl
cnR5R2V0dGVyKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI5NSw3ICszMDEsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgdm9pZCBwdXRFbnRyeShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0KiBiYXNlLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiAgICAgewog
ICAgICAgICAvLyBJZiB0aGlzIGlzIGEgZnVuY3Rpb24gcHV0IGl0IGFzIGFuIG92ZXJyaWRlIHBy
b3BlcnR5LgotICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKSB7Cisg
ICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pIHsKICAg
ICAgICAgICAgIGlmIChKU09iamVjdCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmpl
Y3QqPihzbG90LnRoaXNWYWx1ZSgpKSkKICAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXRE
aXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CiAgICAgICAgIH0gZWxzZSBp
ZiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgUmVhZE9ubHkpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCmlu
ZGV4IGQ1ZTcyOGMyY2QxMDIwYTQ3ZTRhZGNkNjQ5Y2QxZmZmYTVjZDZhODMuLmRjYTJmZDhkMWY2
YWMyM2I4ZmY4MTdjYmIxOGZhYWU3YmNkNTk3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCkBAIC0zOCw2
ICszOCwyMCBAQCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9y
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiB9CiAKK3ZvaWQgTmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1l
KQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBuYW1lKTsKKyAgICBBU1NFUlQoaW5o
ZXJpdHMoaW5mbygpKSk7CisgICAgCisgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlw
ZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlU3RydWN0dXJlLCBuYW1lLCB0aGlzKTsKKyAgICAKKyAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIERvbnREZWxldGUgfCBSZWFkT25seSB8
IERvbnRFbnVtKTsgLy8gRUNNQSAxNS4xMS43LjUKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBE
b250RW51bSk7CisgICAgbV9lcnJvclN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEVycm9ySW5zdGFu
Y2U6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUpKTsKKyAgICBB
U1NFUlQobV9lcnJvclN0cnVjdHVyZSk7CisgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUtPmlz
T2JqZWN0KCkpOworfQorCiB2b2lkIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PE5hdGl2ZUVycm9yQ29uc3RydWN0b3Iq
PihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUVycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUVycm9yQ29uc3RydWN0b3IuaAppbmRleCA3NDBkM2Y5MzMyOTJmZDJhY2NiNGI5OTAzNDQzMTJi
OTMxOWFlMTEwLi40MzhhM2FmYjliYjBmNjQxMmM5NzkzMjIzMGM4ODcxMDk2MWY1NDY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVj
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvci5oCkBAIC01MSwxOSArNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3Ry
dWN0dXJlKiBlcnJvclN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fZXJyb3JTdHJ1Y3R1cmUuZ2V0KCk7
IH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0
dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtLCBuYW1lKTsKLSAgICAgICAgICAgIEFTU0VSVChpbmhlcml0cyhpbmZv
KCkpKTsKLQotICAgICAgICAgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IE5h
dGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlU3Ry
dWN0dXJlLCBuYW1lLCB0aGlzKTsKLQotICAgICAgICAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBE
b250RW51bSk7IC8vIEVDTUEgMTUuMTEuNy41Ci0gICAgICAgICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RGVsZXRlIHwgUmVhZE9u
bHkgfCBEb250RW51bSk7Ci0gICAgICAgICAgICBtX2Vycm9yU3RydWN0dXJlLnNldCh2bSwgdGhp
cywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSkpOwotICAgICAgICAgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUpOwotICAgICAgICAg
ICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwotICAgICAgICB9CisgICAg
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSog
cHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAppbmRleCBkOTM4ZmEzMTY0
NWFmMjZiNzU4NTE0ZGI2YjI0NzhmMTgzZTllZWUxLi5jZmU5YzRkMzJiYTc2OGM3NGU0ZmZiYjE5
MTM1Mjc5ZGViZjExNzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eVNsb3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eVNsb3QuaApAQCAtNDIsNiArNDIsOCBAQCBlbnVtIEF0dHJpYnV0ZSB7CiAgICAgRnVuY3Rp
b24gICAgID0gMSA8PCA0LCAgLy8gcHJvcGVydHkgaXMgYSBmdW5jdGlvbiAtIG9ubHkgdXNlZCBi
eSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIEFjY2Vzc29yICAgICA9IDEgPDwgNSwgIC8vIHByb3Bl
cnR5IGlzIGEgZ2V0dGVyL3NldHRlcgogICAgIEN1c3RvbUFjY2Vzc29yID0gMSA8PCA2LAorICAg
IEJ1aWx0aW4gICAgICAgICA9IDEgPDwgNywgLy8gcHJvcGVydHkgaXMgYSBidWlsdGluIGZ1bmN0
aW9uIC0gb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCisgICAgQnVpbHRpbk9yRnVuY3Rp
b24gPSBCdWlsdGluIHwgRnVuY3Rpb24sIC8vIGhlbHBlciBvbmx5IHVzZWQgYnkgc3RhdGljIGhh
c2h0YWJsZXMKIH07CiAKIGNsYXNzIFByb3BlcnR5U2xvdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYmM1MTZiMDZk
NjY1MWYwZTY4MmEyMDE3YmRmOGIwM2JhYmVkNmVhMi4uMmMyNDM0Yjg3ZDA0Zjc0OWNiMTJlNjAy
YWI1NDc4NDk0NmE5MWYxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgIlJl
Z0V4cENvbnN0cnVjdG9yLmgiCiAKICNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTU3Ry
aW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJSZWdFeHBN
YXRjaGVzQXJyYXkuaCIKICNpbmNsdWRlICJSZWdFeHBQcm90b3R5cGUuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCmluZGV4IDg5ZDdh
YzFiOGNiZjFkYjBlMTI2ZjFmYzc5NmRmZDVmYzg0YjJlNTkuLjlkZGEwYmE4ZGUxNDEyZWFmNGQy
OTFkY2YwYzZiMzk2NTdmYjY3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcApAQCAtMjQsNyArMjQsNyBAQAogI2luY2x1ZGUgIkFy
cmF5UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJKU0FycmF5Lmgi
Ci0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiSlNTdHJpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NldENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENv
bnN0cnVjdG9yLmNwcAppbmRleCBiMjAzODg4ZDNjMTZjZGEzYzAwMzUwNjIwOGFlMDg2OTVkYzVk
YWFhLi5kMDI2NmE1OWVmM2Y1NWFhMzY5NGY1Zjc0MThjZjc4ZTBhZTBkOGIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFs
T2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTZXQuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMu
aCIKICNpbmNsdWRlICJNYXBEYXRhLmgiCiAjaW5jbHVkZSAiU2V0UHJvdG90eXBlLmgiCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCmluZGV4IDQ0
MGE2MDk0MjE5MzM4MDMxZTU5MjdhZjQ2YjI4OWRiY2ZiNWE3MjguLjgwZTdlYWE4YzQ5MWNiNmQ1
NGE4MzI0Y2U2NDdhNmNkYjdlODg3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAtMjIsNyArMjIsOSBAQAogI2luY2x1ZGUgIlN0cmlu
Z09iamVjdC5oIgogCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFt
ZUFycmF5LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
CmluZGV4IDA0MjkxZjdlOGRkMjRlOGFiMzNkNzVhZjFkYTQ1NjhmMmJjOTllNjguLjFlY2FiODVj
MGJkYjI4Njk4OTQ1NzdhNzQxMjU0ZTM2NDQxNDlkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMjcsMTIgKzI3LDE4IEBACiAjaW5jbHVkZSAi
U3RydWN0dXJlLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJDb21tb25J
ZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkR1bXBDb250ZXh0LmgiCisjaW5jbHVkZSAiSlNDZWxs
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIkxv
b2t1cC5oIgorI2luY2x1ZGUgIlByb3BlcnR5TWFwSGFzaFRhYmxlLmgiCiAjaW5jbHVkZSAiUHJv
cGVydHlOYW1lQXJyYXkuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbmNs
dWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNp
bmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvQ29tbWFQ
cmludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDUyY2NmNDIzYTEwNDNlMTA3OWYyZDhiMTg5
NDIxOTg5MGU3MWYyYmMuLjAyMDY5NWZhYzgzZWQ0ZTUxODViNzBlNjk2OTk2M2EyZGU5YTM2NzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNp
bmNsdWRlICJBcmdMaXN0LmgiCiAjaW5jbHVkZSAiQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3Mu
aCIKICNpbmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaCIKKyNpbmNsdWRl
ICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWVJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29kZUNhY2hlLmgiCkBAIC01NSw3ICs1
Niw5IEBACiAjaW5jbHVkZSAiSlNBUElWYWx1ZVdyYXBwZXIuaCIKICNpbmNsdWRlICJKU0FjdGl2
YXRpb24uaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCi0jaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgor
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5o
IgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU05hbWVTY29w
ZS5oIgpAQCAtNjgsMTMgKzcxLDE2IEBACiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVkZSAi
TWFwRGF0YS5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCisjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5j
bHVkZSAiUGFyc2VyQXJlbmEuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgog
I2luY2x1ZGUgIlJlZ0V4cENhY2hlLmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5j
bHVkZSAiU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTb3VyY2VQcm92
aWRlckNhY2hlLmgiCiAjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKICNpbmNsdWRl
ICJTdHJvbmdJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogI2luY2x1
ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiV2Vha01hcERhdGEuaCIKICNpbmNs
dWRlIDx3dGYvUHJvY2Vzc0lELmg+CkBAIC0yMjYsNiArMjMyLDcgQEAgVk06OlZNKFZNVHlwZSB2
bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9pbkRlZmluZU93blByb3BlcnR5KGZh
bHNlKQogICAgICwgbV9jb2RlQ2FjaGUoQ29kZUNhY2hlOjpjcmVhdGUoKSkKICAgICAsIG1fZW5h
YmxlZFByb2ZpbGVyKG51bGxwdHIpCisgICAgLCBtX2J1aWx0aW5FeGVjdXRhYmxlcyhCdWlsdGlu
RXhlY3V0YWJsZXM6OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgaW50ZXJwcmV0ZXIgPSBuZXcgSW50
ZXJwcmV0ZXIoKnRoaXMpOwogICAgIFN0YWNrQm91bmRzIHN0YWNrID0gd3RmVGhyZWFkRGF0YSgp
LnN0YWNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA1YTg0MTA1ZWFmYjdh
YmJhNWZhNDMxZWVlZGQ1NWQ3YTg5ZjU1Y2UyLi42OTU4YWMzOTNiMWFlZmMwYmVmYmY2ZTRlYjhi
NjgyNWNmN2M5YTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTQ0LDYgKzQ0
LDcgQEAKICNpbmNsdWRlICJQcml2YXRlTmFtZS5oIgogI2luY2x1ZGUgIlByb3RvdHlwZU1hcC5o
IgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgorI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKICNp
bmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKICNpbmNsdWRl
ICJUeXBlZEFycmF5Q29udHJvbGxlci5oIgpAQCAtNjksNiArNzAsNyBAQAogbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBBcml0eUNoZWNrRmFpbFJldHVyblRodW5rczsKKyAgICBjbGFzcyBC
dWlsdGluRXhlY3V0YWJsZXM7CiAgICAgY2xhc3MgQ29kZUJsb2NrOwogICAgIGNsYXNzIENvZGVD
YWNoZTsKICAgICBjbGFzcyBDb21tb25JZGVudGlmaWVyczsKQEAgLTQ5Nyw2ICs0OTksOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCByZWdpc3RlcldhdGNocG9pbnRGb3JJbXB1cmVQ
cm9wZXJ0eShjb25zdCBJZGVudGlmaWVyJiwgV2F0Y2hwb2ludCopOwogICAgICAgICAvLyBGSVhN
RTogVXNlIEF0b21pY1N0cmluZyBvbmNlIGl0IGdvdCBtZXJnZWQgd2l0aCBJZGVudGlmaWVyLgog
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFkZEltcHVyZVByb3BlcnR5KGNvbnN0IFN0
cmluZyYpOworICAgICAgICAKKyAgICAgICAgQnVpbHRpbkV4ZWN1dGFibGVzKiBidWlsdGluRXhl
Y3V0YWJsZXMoKSB7IHJldHVybiBtX2J1aWx0aW5FeGVjdXRhYmxlcy5nZXQoKTsgfQogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKQEAg
LTUzNywxMCArNTQxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWUgbV9leGNl
cHRpb247CiAgICAgICAgIGJvb2wgbV9pbkRlZmluZU93blByb3BlcnR5OwogICAgICAgICBPd25Q
dHI8Q29kZUNhY2hlPiBtX2NvZGVDYWNoZTsKLSAgICAgICAgUmVmQ291bnRlZEFycmF5PFN0YWNr
RnJhbWU+IG1fZXhjZXB0aW9uU3RhY2s7Ci0KICAgICAgICAgTGVnYWN5UHJvZmlsZXIqIG1fZW5h
YmxlZFByb2ZpbGVyOwotCisgICAgICAgIE93blB0cjxCdWlsdGluRXhlY3V0YWJsZXM+IG1fYnVp
bHRpbkV4ZWN1dGFibGVzOworICAgICAgICBSZWZDb3VudGVkQXJyYXk8U3RhY2tGcmFtZT4gbV9l
eGNlcHRpb25TdGFjazsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxXYXRjaHBvaW50
U2V0Pj4gbV9pbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnRTZXRzOwogICAgIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggZjgwMDA1ZjI3OTE2M2JhMDhlMmE1Mzg1ZWUxNDNlYTU0MDI0NjFlNy4u
M2YxMmU2MWE5NzAwZDcwZjkxMTVmYjlmZTljNmMxNDc5ZWE1MWE4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTEwMSw2ICsxMDEsNyBAQCBzZXQoV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVT
CiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9BUEkiCiAgICAgIiR7SkFWQVNDUklQVENPUkVf
RElSfS9hc3NlbWJsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9ieXRlY29kZSIKKyAg
ICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zIgogICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vYnl0ZWNvbXBpbGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGZnIgogICAg
ICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGlzYXNzZW1ibGVyIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzBmY2MzODRlOGVkZmMzNGIxNDA4M2I4NjVkMzczODIwZjQxNjVjNAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUv
SlNTdHJpbmdJbmxpbmVzLmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0pT
U3RyaW5nSW5saW5lc19oCisjZGVmaW5lIFdlYkNvcmVfRldEX0pTU3RyaW5nSW5saW5lc19oCisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdJbmxpbmVzLmg+CisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBs
YWNlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1
Z2luUmVwbGFjZW1lbnQuY3BwCmluZGV4IDJlZGRjZGJiOWYwMDZjYTc2MjY2NTBiNDIwMjc4NjI2
YjkyNjE0MTcuLjNjNGUwZDdiYmIzMWNhYjEyYjVlNmM5NzVjNzRkM2Y0ODRlOWNiMTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBs
YWNlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50LmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0FQSUNhc3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nSW5saW5lcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlND
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFueUN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFueUN1c3RvbS5jcHAKaW5k
ZXggNTY0OWM4NWNhMDk1ODc3NDhhM2RhMDZjZGRkMGNhOTk5ZTUwYjhlNy4uM2Y0ZDhlZmFlYjU3
ZjMzMDAzZTczYTdlNzg0MmU0MmM3M2NlNjQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIkpT
SURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJKU0lEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVk
ZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZ0lu
bGluZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAppbmRleCA5ZWFlNzU2OWM3MDYw
M2E0ZmVkMGFmMTRjNGY4NzE4Y2RlNjRhNmUxLi5mNDlkZmU5MGI0ZTgyZDM5ZWRjYmY5YmEyOWYy
YWU3OTljMGRkZjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lE
QkRhdGFiYXNlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lE
QkRhdGFiYXNlQ3VzdG9tLmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIklEQk9iamVj
dFN0b3JlLmgiCiAjaW5jbHVkZSAiSlNJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgPHJ1bnRp
bWUvRXJyb3IuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nLmg+CisjaW5jbHVkZSA8cnVu
dGltZS9KU1N0cmluZ0lubGluZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNw
cAppbmRleCA3NGZkMzU0YjI4NjA3Y2Y3ODIyZjgwNTM0Nzk3MGY1ZDdhYzhjODMyLi41NDM0YjNi
N2Q2YzU2ZWNiMGEwM2EyNzk0YzY3MzZhOWFkZmI3MGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcApAQCAtMzYsNyAr
MzYsNyBAQAogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSlNJREJJbmRl
eC5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTU3Ry
aW5nLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZ0lubGluZXMuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNO
b2RlRmlsdGVyQ29uZGl0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9k
ZUZpbHRlckNvbmRpdGlvbi5jcHAKaW5kZXggZDFiNDcyMTM1MWViMWIyYmY4Y2UwY2Q0NzNmZWUx
NDQ5MTRjNTNhYi4uZjFkYWE4YTEwNDZiMzNmYTNkMzVhNjZjNTU5ZWUwZmFmMmFkZTY0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRp
b24uY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiTm9kZUZpbHRlci5oIgogI2luY2x1
ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgorI2luY2x1
ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQv
Q01ha2VMaXN0cy50eHQKaW5kZXggZmI0YWQ5NTE4MGQ4ZTU5Mzc4MmY4YmVhNGE4OWZiZTQzMzlm
OWU1Ni4uMWI4NGYyYjY4ZGIzMDNjZDE4YjM3ODA2NDYwMjU2ZDE3Y2E3MTFlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtl
TGlzdHMudHh0CkBAIC02Niw2ICs2Niw3IEBAIHNldChXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklF
UwogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vQVBJIgogICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vYXNzZW1ibGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0ZWNvZGUiCisg
ICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucyIKICAgICAiJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9L2J5dGVjb21waWxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2Rpc2Fzc2Vt
YmxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2RmZyIKQEAgLTc4LDYgKzc5LDcgQEAg
c2V0KFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElS
fS9wcm9maWxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3J1bnRpbWUiCiAgICAgIiR7
V1RGX0RJUn0iCisgICAgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iCiAg
ICAgIiR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfSIKICAgICAiJHtERVJJVkVEX1NPVVJD
RVNfRElSfS9Gb3J3YXJkaW5nSGVhZGVycyIKICAgICAiJHtDTUFLRV9CSU5BUllfRElSfSIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIv
Q01ha2VMaXN0cy50eHQKaW5kZXggNjcxODFjODRmZmIxNjE1M2Y2YzNlNDg5ODVmMDkzZWViNDg1
YWU4Yy4uZGY4ZjEyZTMyZTI4Y2E0YzM3ZDUzNjgxYzMxYjcwMDVkYmVlMzUxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01h
a2VMaXN0cy50eHQKQEAgLTEyMSw2ICsxMjEsNyBAQCBzZXQoV2ViS2l0Ml9JTkNMVURFX0RJUkVD
VE9SSUVTCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9BUEkiCiAgICAgIiR7SkFWQVNDUklQ
VENPUkVfRElSfS9hc3NlbWJsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9ieXRlY29k
ZSIKKyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zIgogICAgICIke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vYnl0ZWNvbXBpbGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vY29s
bGVjdG9yL2hhbmRsZXMiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9kZmciCkBAIC0xMzMs
NiArMTM0LDcgQEAgc2V0KFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pBVkFT
Q1JJUFRDT1JFX0RJUn0vcnVudGltZSIKICAgICAiJHtXVEZfRElSfSIKICAgICAiJHtERVJJVkVE
X1NPVVJDRVNfRElSfSIKKyAgICAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElS
fSIKICAgICAiJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9IgogICAgICIke0RFUklWRURf
U09VUkNFU19XRUJLSVQyX0RJUn0iCiAgICAgIiR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJfRElS
fS9pbmNsdWRlIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDlkMDY2ZjVlMWEwMDRmYmQ0ZDU3NDBlNDk3YzgyOGM5YmU4Zjkw
ZGEuLjkwOTJlMTcwOWQ2ZmYyNmRhZTZmMjkyM2M3NTFjYjY4YWUzMzYwNWUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxNC0wMS0yOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gaW1wbGVtZW50IEpTIGJ1aWx0aW5zIGluIEpT
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc4ODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVk
IHRoZSB0ZXN0IHJlc3VsdHMgZm9yIG5ldyBlcnJvciBtZXNzYWdlcyAobm93IHRoYXQgdGhleSdy
ZQorICAgICAgICBhY3R1YWxseSBoZWxwZnVsKSwgYW5kIGFkZGVkIGEganMtcmVncmVzcyB0ZXN0
IHRvIHRyYWNrIHBlcmZvcm1hbmNlLgorCisgICAgICAgICoganMvYXJyYXktZXZlcnktZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGpzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBl
Y3RlZC50eHQ6CisgICAgICAgICoganMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnktZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1l
dmVyeS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJh
eS1wcm90b3R5cGUtZXZlcnkuanM6IEFkZGVkLgorICAgICAgICAodGVzdDEpOgorICAgICAgICAo
dGVzdDIpOgorICAgICAgICAodGVzdDMpOgorCiAyMDE0LTAxLTMwICBBbGV4ZXkgUHJvc2t1cnlh
a292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mt
b3JpZ2luLXBsdWdpbi1wcml2YXRlLWJyb3dzaW5nLXRvZ2dsZWQuaHRtbCBpcyBmbGFreSBvbiBX
SzIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dAppbmRleCA1NDFiOGMzNThm
MDY4YTBjZWE4ODJjMTA1MTc1MzI1MTE0Y2QzM2Y3Li5jY2EzNjNkY2U1OGZiYTk1YTU4Y2U0NmZj
YjQ4YzM4YmY1OGFkZjU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9hcnJheS1ldmVyeS1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0
CkBAIC0zMCwxMiArMzAsMTIgQEAgUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KGlzQmln
RW5vdWdoQW5kRXhjZXB0aW9uKSB0aHJldyBleGNlcHRpb24gZXhjZXB0aW8KIFBBU1MgWzEyLCA1
NCwgMTgsIDEzMCwgNDRdLmV2ZXJ5KGlzQmlnRW5vdWdoQW5kRXhjZXB0aW9uKSB0aHJldyBleGNl
cHRpb24gZXhjZXB0aW9uIGZyb20gZnVuY3Rpb24uCiAKIDUuMCBXcm9uZyBUeXBlIGZvciBDYWxs
YmFjayBUZXN0Ci1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoNSkgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVy
eSgnd3JvbmcnKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBb
MTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KG5ldyBPYmplY3QoKSkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShudWxs
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgs
IDEzMCwgNDRdLmV2ZXJ5KHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlw
ZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSgpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnko
NSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxi
YWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSgn
d3JvbmcnKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkg
Y2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2
ZXJ5KG5ldyBPYmplY3QoKSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90
eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAx
MzAsIDQ0XS5ldmVyeShudWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90
b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgs
IDEzMCwgNDRdLmV2ZXJ5KHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJy
YXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEy
LCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5
LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCiAKIDYuMCBFYXJs
eSBFeGl0ICgiU2hvcnQgQ2lyY3VpdGluZyIpCiBQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZl
cnkoaXNCaWdFbm91Z2hTaG9ydENpcmN1aXQpIGlzIGZhbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9qcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvanMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApp
bmRleCAyYzJhNjhjYjEwNmRhMTBmMDg2YjIyYzViZjJiZjVjOGZlNzllMzNlLi41ZDllY2I3NWE4
ZGE3OWJhNjU2MDVlN2ViOWNmOGZjMjVmZTE4YWZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9q
cy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2pzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQKQEAg
LTE1LDcgKzE1LDcgQEAgUEFTUyBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh1bmRlZmluZWQs
IDAsIDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGUKIFBBU1MgQXJyYXkucHJvdG90
eXBlLnNvcnQuY2FsbCh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVm
aW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUuc29ydC5j
YWxsKHVuZGVmaW5lZCknKS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKHVuZGVm
aW5lZCwgMCwgMSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBh
biBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbCh1bmRlZmlu
ZWQsIDAsIDEpJykuCiBQQVNTIEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmNhbGwodW5kZWZpbmVk
LCB7fSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmpl
Y3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS51bnNoaWZ0LmNhbGwodW5kZWZpbmVkLCB7
fSknKS4KLVBBU1MgQXJyYXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVkLCB0b1N0cmlu
ZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3Qg
KGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5ldmVyeS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJp
bmcpJykuCitQQVNTIEFycmF5LnByb3RvdHlwZS5ldmVyeS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJp
bmcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1
aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkLgogUEFTUyBBcnJheS5wcm90b3R5cGUu
Zm9yRWFjaC5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5
cGUuZm9yRWFjaC5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpJykuCiBQQVNTIEFycmF5LnByb3Rv
dHlwZS5zb21lLmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3Rv
dHlwZS5zb21lLmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZyknKS4KIFBBU1MgQXJyYXkucHJvdG90
eXBlLmluZGV4T2YuY2FsbCh1bmRlZmluZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUu
aW5kZXhPZi5jYWxsKHVuZGVmaW5lZCwgMCknKS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xMjkwYzBlZWZmOGRlNDIxODMzZDkyZDI3ZTk1MjQxOTE3NjA0Yjk2Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnktZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkK
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93
bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0
bWwgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZlNWNjMTcxYzQ4NzVhMzU4NWJmMTRlNTQxNWY1Y2QwZTU4MWQ1NDQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVy
eS5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2Ny
aXB0LXRlc3RzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJheS1w
cm90b3R5cGUtZXZlcnkuanMgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9h
cnJheS1wcm90b3R5cGUtZXZlcnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjk0YWExNjFjMGNlOThiMmFiMThh
M2ExYTFmMGRmYWFjOWQ3ZDJlMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Jl
Z3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5qcwpAQCAtMCwwICsxLDI5
IEBACit2YXIgcmVzdWx0ID0gMDsKK2Z1bmN0aW9uIHRlc3QxKGEpIHsKKyAgICByZXN1bHQgPDwg
MTsKKyAgICByZXN1bHQrKzsKKyAgICByZXR1cm4gdHJ1ZTsKK30KK2Z1bmN0aW9uIHRlc3QyKGEs
YikgeworICAgIHJlc3VsdCBePSAzOworICAgIHJlc3VsdCAqPSAzOworICAgIHJldHVybiB0cnVl
OworfQorZnVuY3Rpb24gdGVzdDMoYSxiLGMpIHsKKyAgICByZXN1bHQgXj0gcmVzdWx0ID4+IDE7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZhciByZXN1bHQgPSAwOwordmFyIGFycmF5ID0gW10K
K2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpCisgICAgYXJyYXlbaV0gPSAxOworCitm
b3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHsKKyAgICBhcnJheS5ldmVyeSh0ZXN0MSk7Cisg
ICAgYXJyYXkuZXZlcnkodGVzdDIpOworICAgIGFycmF5LmV2ZXJ5KHRlc3QzKTsKK30KKworaWYg
KHJlc3VsdCAhPSAxNDI4ODEwNDk2KQorICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiAr
IHJlc3VsdDsKZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxlLmFtIGIvR05VbWFrZWZpbGUuYW0KaW5k
ZXggNzNmYzQ5MjhjNGRkNDliNTQ5ODY5YjUwNjc4YzZiZGU3NGY0NDc2MC4uMDhjOTExNTQyNjA1
MDBkZTNmZjA0YjAyMGNlMGQ2MGY5OGU4Y2ZlOCAxMDA2NDQKLS0tIGEvR05VbWFrZWZpbGUuYW0K
KysrIGIvR05VbWFrZWZpbGUuYW0KQEAgLTY4LDYgKzY4LDcgQEAgQUxMX01PRklMRVMgOj0KIGRv
bV9iaW5kaW5nX2lkbHMgOj0KIHd0Zl9zb3VyY2VzIDo9CiBqYXZhc2NyaXB0Y29yZV9oX2FwaSA6
PQoramF2YXNjcmlwdGNvcmVfYnVpbHRpbnNfanNfbm9zb3VyY2VzIDo9CiBqYXZhc2NyaXB0Y29y
ZV9jcHBmbGFnczo9CiBqYXZhc2NyaXB0Y29yZV9jZmxhZ3MgOj0KIGphdmFzY3JpcHRjb3JlX3Nv
dXJjZXMgOj0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222828</attachid>
            <date>2014-01-31 11:06:05 -0800</date>
            <delta_ts>2014-01-31 11:45:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140131110603.patch</filename>
            <type>text/plain</type>
            <size>204942</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NjgxMzcxYWU2ZDBjYWZlNDJmNWNmN2E1NWI3MjRjMTc5ODExYjBhLi44OWQ0ZmRmOGYwMzA2Y2M5
ZjFiNmM5NDVlZWY3ZDRlMTczOGFhOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
VGhlIHJlc3VsdCBvZiB0aGlzIHJlZmFjdG9yaW5nCisgICAgICAgIGlzIHRoYXQgQ29tbW9uSWRl
bnRpZmllcnMsIGFuZCBhIGZldyBvdGhlciBtaXNjZWxsYW5lb3VzIGhlYWRlcnMgbm93CisgICAg
ICAgIG5lZWQgdG8gYmUgaW5jbHVkZWQgZGlyZWN0bHkgYXMgdGhleSB3ZXJlIGZvcm1lcmx5IGNh
cHR1cmVkIHRocm91Z2ggb3RoZXIKKyAgICAgICAgcGF0aHMuCisKKyAgICAgICAgSW4gYWRkaXRp
b24gdGhpcyBhZGRzIGEgZmxhZyB0byB0aGUgTG9va3VwIHRhYmxlJ3MgaGFzaGVudHJ5IHRvIGlu
ZGljYXRlCisgICAgICAgIHRoYXQgYSBzdGF0aWMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgYmFja2Vk
IGJ5IEpTLiBUaGVyZSBpcyB0aGVuIGEgbG90IG9mCisgICAgICAgIGxvZ2ljIHRvIHRocmVhZCB0
aGUgc3BlY2lhbCBuYXR1cmUgb2YgdGhlIGZ1bmN0b24gdG8gd2hlcmUgaXQgbWF0dGVycy4KKyAg
ICAgICAgVGhpcyBhbGxvd3MgdG9TdHJpbmcoKSwgLmNhbGxlciwgZXRjIHRvIG1pbWljIHRoZSBi
ZWhhdmlvdXIgb2YgYSBob3N0CisgICAgICAgIGZ1bmN0aW9uLgorCisgICAgICAgIE5vdGVzIG9u
IHdyaXRpbmcgYnVpbHRpbnM6CisgICAgICAgICAtIEVhY2ggZnVuY3Rpb24gaXMgY29tcGlsZWQg
aW5kZXBlbmRlbnRseSBvZiB0aGUgb3RoZXJzLCBhbmQgdGhvc2UKKyAgICAgICAgICAgaW1wbGVt
ZW50YXRpb25zIGNhbm5vdCBjdXJyZW50bHkgY2FwdHVyZSBhbGwgZ2xvYmFsIHByb3BlcnRpZXMg
KGFzCisgICAgICAgICAgIHRoYXQgY291bGQgYmUgcG90ZW50aWFsbHkgdW5zYWZlKS4gSWYgYSBm
dW5jdGlvbiBkb2VzIGNhcHR1cmUgYQorICAgICAgICAgICBnbG9iYWwgd2Ugd2lsbCBkZWxpYmVy
YXRlbHkgY3Jhc2guCisgICAgICAgICAtIEZvciB0aG9zZSAiZ2xvYmFsIiBwcm9wZXJ0aWVzIHRo
YXQgd2UgZG8gd2FudCBhY2Nlc3MgdG8sIHdlIHVzZQorICAgICAgICAgICB0aGUgQCBwcmVmaXgs
IGUuZy4gT2JqZWN0KHRoaXMpIGJlY29tZXMgQE9iamVjdCh0aGlzKS4gVGhlIEAgaWRlbnRpZmll
cnMKKyAgICAgICAgICAgYXJlIHByaXZhdGUgbmFtZXMsIGFuZCBiZWhhdmUganVzdCBsaWtlIHJl
Z3VsYXIgcHJvcGVydGllcywgb25seQorICAgICAgICAgICB3aXRob3V0IHRoZSByaXNrIG9mIGFk
dWx0ZXJhdGlvbi4gQWdhaW4sIGluIHRoZSBAT2JqZWN0IGNhc2UsIHdlCisgICAgICAgICAgIGV4
cGxpY2l0bHkgZHVwbGljYXRlIHRoZSBPYmplY3RDb25zdHJ1Y3RvciByZWZlcmVuY2Ugb24gdGhl
IEdsb2JhbE9iamVjdAorICAgICAgICAgICBzbyB0aGF0IHdlIGhhdmUgZ3VhcmFudGVlZCBhY2Nl
c3MgdG8gdGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhlCisgICAgICAgICAgIGNvbnN0cnVjdG9y
LgorICAgICAgICAgLSBjYWxsLCBhcHBseSwgZXZhbCwgYW5kIEZ1bmN0aW9uIGFyZSBhbGwgcmVq
ZWN0ZWQgaWRlbnRpZmllcnMsIGFnYWluCisgICAgICAgICAgIHRvIHByZXZlbnQgYW55dGhpbmcg
ZnJvbSBhY2NpZGVudGFsbHkgdXNpbmcgYW4gYWR1bHRlcmF0ZWQgb2JqZWN0LgorICAgICAgICAg
ICBJbnN0ZWFkIEBjYWxsIGFuZCBAYXBwbHkgYXJlIGF2YWlsYWJsZSwgYW5kIGhhcHBpbHkgdGhl
eSBjb21wbGV0ZWx5CisgICAgICAgICAgIGRyb3AgdGhlIG5lcV9wdHIgaW5zdHJ1Y3Rpb24gYXMg
dGhleSdyZSBkZWZpbmVkIGFzIGFsd2F5cyBiZWluZyB0aGUKKyAgICAgICAgICAgb3JpZ2luYWwg
Y2FsbC9hcHBseSBmdW5jdGlvbnMuCisKKyAgICAgICAgVGhlc2UgcmVzdHJpY3Rpb25zIGFyZSBq
dXN0IGludGVuZGVkIHRvIG1ha2UgaXQgaGFyZGVyIHRvIGFjY2lkZW50YWxseQorICAgICAgICBt
YWtlIGNoYW5nZXMgdGhhdCBhcmUgaW5jb3JyZWN0IChmb3IgaW5zdGFuY2UgY2FsbGluZyB3aGF0
ZXZlciBoYXMgYmVlbgorICAgICAgICBhc3NpZ25lZCB0byBnbG9iYWwuT2JqZWN0LCBpbnN0ZWFk
IG9mIHRoZSBvcmlnaW5hbCBjb25zdHJ1Y3RvciBmdW5jdGlvbikuCisgICAgICAgIEhvd2V2ZXIs
IG1ha2luZyBhIG1pc3Rha2UgbGlrZSB0aGlzIHNob3VsZCByZXN1bHQgaW4gYSBwdXJlbHkgc2Vt
YW50aWMKKyAgICAgICAgZXJyb3IgYXMgZnVuZGFtZW50YWxseSB0aGVzZSBmdW5jdGlvbnMgYXJl
IHRyZWF0ZWQgYXMgdGhvdWdoIHRoZXkgd2VyZQorICAgICAgICByZWd1bGFyIEpTIGNvZGUgaW4g
dGhlIGhvc3QgZ2xvYmFsLCBhbmQgaGF2ZSBubyBtb3JlIHByaXZpbGVnZXMgdGhhbgorICAgICAg
ICBhbnkgb3RoZXIgSlMuCisKKyAgICAgICAgVGhlIGluaXRpYWwgcHJvb2Ygb2YgY29uY2VwdCBp
cyBBcnJheS5wcm90b3R5cGUuZXZlcnksIHRoaXMgc2hvd3MgYSA2NSUKKyAgICAgICAgcGVyZm9y
bWFuY2UgaW1wcm92ZW1lbnQsIGFuZCB0aGF0IGltcHJvdmVtZW50IGlzIHNpZ25pZmljYW50bHkg
aHVydCBieQorICAgICAgICBvdXIgcG9vciBvcHRpbWlzYXRpb24gb2Ygb3BfaW4uCisKKyAgICAg
ICAgQXMgdGhpcyBpcyBzdWNoIGEgbGltaXRlZCBmdW5jdGlvbiwgd2UgaGF2ZSBub3QgeWV0IGV4
cG9ydGVkIGFsbCBzeW1ib2xzCisgICAgICAgIHRoYXQgd2UgY291bGQgcG9zc2libHkgbmVlZCwg
YnV0IGFzIHdlIGltcGxlbWVudCBtb3JlLCB0aGUgbGlrZWxpaG9vZAorICAgICAgICBvZiBlbmNv
dW50ZXJpbmcgbWlzc2luZyBmZWF0dXJlcyB3aWxsIHJlZHVjZS4KKworICAgICAgICBUaGlzIGRp
ZCByZXF1aXJlIGJyZWFraW5nIG91dCBhIEpTU3RyaW5nSW5saW5lcyBoZWFkZXIsIGFuZCByZXF1
aXJlZAorICAgICAgICBmaXhpbmcgYSBmZXcgb2JqZWN0cyB0aGF0IHdlcmUgdHJ5aW5nIHRvIHVz
aW5nIFByb3BlcnR5TmFtZTo6cHVibGljTmFtZQorICAgICAgICByYXRoZXIgdGhhbiBQcm9wZXJ0
eU5hbWU6OnVpZC4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6
CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQpOgorICAg
ICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZSk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGljRnVuY3Rpb25HZXR0
ZXIpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGxiYWNrR2V0
dGVyKToKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy5tYWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
YnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzOgorICAgICAgICAoZXZlcnkpOgorICAgICAgICAq
IGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpC
dWlsdGluRXhlY3V0YWJsZXM6OkJ1aWx0aW5FeGVjdXRhYmxlcyk6CisgICAgICAgIChKU0M6OkJ1
aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ1
aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0
YWJsZXM6OmNyZWF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdX
YXRjaHBvaW50LmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAoSlND
OjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUp
OgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9y
KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToK
KyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpF
eGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OnRvU3RyaWN0bmVzcyk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjppc0J1aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChKU0M6OlVubGlua2Vk
Q29kZUJsb2NrOjppc0J1aWx0aW5GdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzQnVpbHRpbkZ1bmN0aW9u
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Om1ha2VGdW5jdGlvbik6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkNhbGxG
dW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpBcHBseUZ1
bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogY3JlYXRlX2hhc2hf
dGFibGU6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGdlbmVy
YXRlLWpzLWJ1aWx0aW5zOiBBZGRlZC4KKyAgICAgICAgKGdldENvcHlyaWdodCk6CisgICAgICAg
IChnZXRGdW5jdGlvbnMpOgorICAgICAgICAoZ2VuZXJhdGVDb2RlKToKKyAgICAgICAgKG1hbmds
ZU5hbWUpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKElkZW50aWZp
ZXIpOgorICAgICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAgICAgICAoU291cmNlQ29kZSk6Cisg
ICAgICAgIChVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChWTSk6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAqIGludGVycHJldGVy
L1Byb3RvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgICog
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAqIGpzYy5jcHA6CisgICAg
ICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAqIHBhcnNlci9BU1RCdWls
ZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKToK
KyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6TGV4
ZXIpOgorICAgICAgICAoSlNDOjppc1NhZmVJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4
ZXI8TENoYXI+OjpwYXJzZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpMZXhlcjxVQ2hhcj46
OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpsZXgpOgorICAgICAg
ICAqIHBhcnNlci9MZXhlci5oOgorICAgICAgICAoSlNDOjppc1NhZmVJZGVudGlmaWVyKToKKyAg
ICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIpOgorICAgICAgICAqIHBh
cnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpzZXRDbG9zZWRWYXJp
YWJsZXMpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpTY29wZU5v
ZGU6OmNhcHR1cmVkVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6U2NvcGVOb2RlOjpzZXRDbG9z
ZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQcm9ncmFtTm9kZTo6Y2xvc2VkVmFyaWFibGVz
KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OlBhcnNlcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUlubmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmRpZEZpbmlzaFBhcnNp
bmcpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cHJpbnRVbmV4cGVjdGVkVG9r
ZW5UZXh0KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
OjpnZXRVc2VkVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVz
Lmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlclRva2Vucy5oOgorICAgICAgICAqIHJ1bnRpbWUv
QXJnTGlzdC5jcHA6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvQXJndW1lbnRzLmg6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHNJdGVyYXRv
ckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0
RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Q29t
bW9uSWRlbnRpZmllcnMpOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Z2V0UHJp
dmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Z2V0UHVibGljTmFt
ZSk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQ
YXRoc0V4Y2VwdGlvbnMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5j
cHA6CisgICAgICAgIChKU0M6OmNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6
ZXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6ZXhlY3V0
YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1
bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6ZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9K
U0FjdGl2YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxl
R2V0KToKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dCk6CisgICAg
ICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyk6Cisg
ICAgICAgICogcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcDoKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlND
ZWxsSW5saW5lcy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAg
IChKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZSk6CisgICAgICAgIChKU0M6OkpTRnVu
Y3Rpb246OnNvdXJjZUNvZGUpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjppc0hvc3RPckJ1
aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzQnVpbHRpbkZ1bmN0
aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKToKKyAgICAgICAg
KEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVy
dHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmg6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
OjpyZXNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjpvYmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpzeW1ib2xUYWJsZUhhc1Byb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGVsZXRlKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5j
cHA6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAg
ICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90
KToKKyAgICAgICAgKEpTQzo6aW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKToKKyAgICAg
ICAgKEpTQzo6SlNWYWx1ZTo6dG9XVEZTdHJpbmdJbmxpbmUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNTeW1ib2xUYWJsZU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTU3ltYm9sVGFibGVPYmpl
Y3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgICAgIERvbid0IHJlcG9y
dCBwcml2YXRlIG5hbWVzLgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5o
OgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZUdldCk6CisgICAgICAgIChKU0M6OnN5bWJvbFRh
YmxlUHV0KToKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyk6Cisg
ICAgICAgICogcnVudGltZS9Mb29rdXAuY3BwOgorICAgICAgICAoSlNDOjpzZXRVcFN0YXRpY0Z1
bmN0aW9uU2xvdCk6CisgICAgICAgICogcnVudGltZS9Mb29rdXAuaDoKKyAgICAgICAgKEpTQzo6
SGFzaEVudHJ5OjpidWlsdGluR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpw
cm9wZXJ0eUdldHRlcik6CisgICAgICAgIChKU0M6Okhhc2hFbnRyeTo6cHJvcGVydHlQdXR0ZXIp
OgorICAgICAgICAoSlNDOjpIYXNoVGFibGU6OmVudHJ5KToKKyAgICAgICAgKEpTQzo6Z2V0U3Rh
dGljUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6Z2V0U3RhdGljVmFsdWVTbG90KToKKyAg
ICAgICAgKEpTQzo6cHV0RW50cnkpOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaDoK
KyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVn
RXhwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5jcHA6CisgICAgICAgICogcnVudGltZS9T
dHJ1Y3R1cmUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpW
TTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6Vk06OmJ1aWx0
aW5FeGVjdXRhYmxlcyk6CisKIDIwMTQtMDEtMjkgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxl
LmNvbT4KIAogICAgICAgICBGVEwgc2hvdWxkIHN1cHBvcnQgR2V0QnlJZChVbnR5cGVkOikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCAxYWQ2OTc0ODhiMGM0YjhiNGNmYWUyOTEzNTQyNTliNmRhY2ZkYzQ1Li5mM2Mz
ZDcxNzFkMDU0NDgwZWM2MDU0MGMwZDUyNTk5NmVlY2RiOWEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBKUwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRpbmcg
Zm9yIHRoZSBuZXdseSByZXF1aXJlZCBoZWFkZXJzLgorCisgICAgICAgIFRlc3Q6IGpzL3JlZ3Jl
c3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwKKworICAgICAgICAqIEZvcndhcmRpbmdIZWFk
ZXJzL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMv
cGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNJREJBbnlDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCRGF0
YWJhc2VDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVD
dXN0b20uY3BwOgorCiAyMDE0LTAxLTMwICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgV2ViR0wgbG9hZCBwb2xpY3kgc2hvdWxkIGJlIHF1ZXJpZWQgZm9yIHRo
ZSB0b3AgbGV2ZWwgZG9jdW1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCmluZGV4IDViZTA1M2YxZTA4NmI0M2U2ODZj
MzY3NGRhZTdjNTE2MDVhMjg2ZTcuLjBlY2VkNTFmM2UyZDViNjIxZGFkZjA1NzQ5ZjVlNzQ2NmEw
NmY1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09i
amVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdEZ1bmN0aW9ucy5oCkBAIC0xMzYsNyArMTM2LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGUKICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CiAgICAg
UmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0Ns
YXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNz
ID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIC8vIG9wdGlvbmFsIG9wdGlt
aXphdGlvbiB0byBieXBhc3MgZ2V0UHJvcGVydHkgaW4gY2FzZXMgd2hlbiB3ZSBvbmx5IG5lZWQg
dG8ga25vdyBpZiB0aGUgcHJvcGVydHkgZXhpc3RzCiAgICAgICAgICAgICBpZiAoSlNPYmplY3RI
YXNQcm9wZXJ0eUNhbGxiYWNrIGhhc1Byb3BlcnR5ID0ganNDbGFzcy0+aGFzUHJvcGVydHkpIHsK
QEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcAogICAgIFJlZlB0cjxP
cGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwogICAgIEpTVmFsdWVSZWYgdmFsdWVSZWYg
PSB0b1JlZihleGVjLCB2YWx1ZSk7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBw
cm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBw
cm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0
aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50
Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdFNldFByb3BlcnR5Q2FsbGJhY2sgc2V0
UHJvcGVydHkgPSBqc0NsYXNzLT5zZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIGlmICgh
cHJvcGVydHlOYW1lUmVmKQpAQCAtMzQzLDcgKzM0Myw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvCiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmplY3QpOwogICAgIFJl
ZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwogICAgIAotICAgIGlmIChTdHJp
bmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJp
bmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFz
c1JlZiBqc0NsYXNzID0gdGhpc09iamVjdC0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9
IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgICAgICBpZiAoSlNPYmplY3REZWxldGVQ
cm9wZXJ0eUNhbGxiYWNrIGRlbGV0ZVByb3BlcnR5ID0ganNDbGFzcy0+ZGVsZXRlUHJvcGVydHkp
IHsKICAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5TmFtZVJlZikKQEAgLTU2NCw3ICs1NjQs
NyBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0U3RhdGljVmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcAogewogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYg
PSB0b1JlZih0aGlzKTsKICAgICAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5
TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5
TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IGNsYXNzUmVm
KCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAg
ICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZSogc3RhdGljVmFsdWVzID0ganND
bGFzcy0+c3RhdGljVmFsdWVzKGV4ZWMpKSB7CiAgICAgICAgICAgICAgICAgaWYgKFN0YXRpY1Zh
bHVlRW50cnkqIGVudHJ5ID0gc3RhdGljVmFsdWVzLT5nZXQobmFtZSkpIHsKQEAgLTYwMCw3ICs2
MDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1
bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRQogICAgIGlmIChQYXJlbnQ6OmdldE93blBy
b3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QyKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90Mi5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUp
KTsKIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUo
KSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CiAg
ICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iai0+Y2xhc3NSZWYoKTsganND
bGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgICAgICBpZiAo
T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlKiBzdGF0aWNGdW5jdGlvbnMgPSBqc0Ns
YXNzLT5zdGF0aWNGdW5jdGlvbnMoZXhlYykpIHsKICAgICAgICAgICAgICAgICBpZiAoU3RhdGlj
RnVuY3Rpb25FbnRyeSogZW50cnkgPSBzdGF0aWNGdW5jdGlvbnMtPmdldChuYW1lKSkgewpAQCAt
NjI2LDcgKzYyNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6
Y2FsbGJhY2tHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkCiAgICAgSlNPYmplY3RSZWYg
dGhpc1JlZiA9IHRvUmVmKHRoaXNPYmopOwogICAgIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJv
cGVydHlOYW1lUmVmOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlO
YW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlO
YW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iai0+
Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAg
ICAgICAgICAgICBpZiAoSlNPYmplY3RHZXRQcm9wZXJ0eUNhbGxiYWNrIGdldFByb3BlcnR5ID0g
anNDbGFzcy0+Z2V0UHJvcGVydHkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5TmFt
ZVJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAyN2JjNGMxN2YzZGZl
ZWI2MWQyNTIzMjNmZDg3OGM0NDc4MGY3NGM1Li45OTk2NGY3NmU4ZWU4ZWU5NGZiMzI3NjMxM2Qx
ZjBiMDg1OGFhYzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01LDYg
KzUsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMiCiAgICAgIiR7SkFWQVNDUklQVENP
UkVfRElSfS9hc3NlbWJsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9iaW5kaW5ncyIK
KyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zIgogICAgICIke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vYnl0ZWNvZGUiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9ieXRlY29tcGls
ZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9kZmciCkBAIC01Miw2ICs1Myw4IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcAog
ICAgIGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAogCisgICAgYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcAorCiAgICAgYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAKICAg
ICBieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Js
b2NrLmNwcApAQCAtNzA3LDcgKzcxMCw3IEBAIHNldChIQVNIX0xVVF9HRU5FUkFUT1IgJHtDTUFL
RV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2NyZWF0ZV9oYXNoX3RhYmxlKQogbWFjcm8oR0VORVJBVEVf
SEFTSF9MVVQgX2lucHV0IF9vdXRwdXQpCiAgICAgYWRkX2N1c3RvbV9jb21tYW5kKAogICAgICAg
ICBPVVRQVVQgJHtfb3V0cHV0fQotICAgICAgICBERVBFTkRTICR7SEFTSF9MVVRfR0VORVJBVE9S
fSAke19pbnB1dH0KKyAgICAgICAgREVQRU5EUyAke0hBU0hfTFVUX0dFTkVSQVRPUn0gJHtfaW5w
dXR9ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucwogICAg
ICAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke0hBU0hfTFVUX0dFTkVSQVRPUn0gJHtf
aW5wdXR9IC1pID4gJHtfb3V0cHV0fQogICAgICAgICBWRVJCQVRJTSkKICAgICBsaXN0KEFQUEVO
RCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTICR7X291dHB1dH0pCkBAIC03NjMsOCArNzY2LDExIEBA
IHNldChKYXZhU2NyaXB0Q29yZV9GT1JXQVJESU5HX0hFQURFUlNfRklMRVMKICAgICBhc3NlbWJs
ZXIvTGlua0J1ZmZlci5oCiAgICAgYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKICAgICBhc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgKKyAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmLmgKICAgICBqaXQvR1BSSW5mby5oCiAgICAgcnVudGltZS9WTS5oCisKKyAgICAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKICkKIAog
CkBAIC04MTUsMTYgKzgyMSwyNyBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgQ09NTUFORCAk
e1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJ
Un0vQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBU
Q09SRV9ESVJ9L0luc3BlY3RvckpTLmpzb24gLS1vdXRwdXRfaF9kaXIgIiR7REVSSVZFRF9TT1VS
Q0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0cHV0X2NwcF9kaXIgIiR7REVSSVZFRF9TT1VS
Q0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0cHV0X2pzX2RpciAiJHtERVJJVkVEX1NPVVJD
RVNfSkFWQVNDUklQVENPUkVfRElSfSIgLS1vdXRwdXRfdHlwZSBKYXZhU2NyaXB0IC0td3JpdGVf
YWx3YXlzICYmIG1rZGlyIC1wICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0v
aW5zcGVjdG9yICYmIGNwICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5z
cGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBU
Q09SRV9ESVJ9L0luc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5oICR7REVSSVZFRF9TT1VS
Q0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaCAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3RvcgogICAgIFZFUkJBVElNKQog
CisjIEpTQ0J1aWx0aW5zCitmaWxlKEdMT0IgSlNDQnVpbHRpbnNfanNfZmlsZXMgIiR7Q01BS0Vf
Q1VSUkVOVF9TT1VSQ0VfRElSfS9idWlsdGlucy8qLmpzIikKK2FkZF9jdXN0b21fY29tbWFuZCgK
KyAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0
aW5zLmNwcCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5z
LmgKKyAgIE1BSU5fREVQRU5ERU5DWSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZ2VuZXJh
dGUtanMtYnVpbHRpbnMKKyAgIERFUEVORFMgJHtKU0NCdWlsdGluc19qc19maWxlc30KKyAgIENP
TU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2dl
bmVyYXRlLWpzLWJ1aWx0aW5zICR7SlNDQnVpbHRpbnNfanNfZmlsZXN9ICR7REVSSVZFRF9TT1VS
Q0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaCAke0RFUklWRURfU09VUkNFU19K
QVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcAorICAgVkVSQkFUSU0pCisKIGxpc3Qo
QVBQRU5EIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICAke0RFUklWRURfU09VUkNFU19KQVZB
U0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmNwcAogICAgICR7
REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNGcm9udGVuZERp
c3BhdGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0v
SW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwCisgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVND
UklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5jcHAKICkKIAogbGlzdChBUFBFTkQgSmF2YVNjcmlw
dENvcmVfSEVBREVSUwogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0v
SW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmgKICAgICAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTVHlwZUJ1aWxk
ZXJzLmgKKyAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0
aW5zLmgKICkKIAogYWRkX2N1c3RvbV9jb21tYW5kKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQppbmRleCAxMTU2ZTk3ZmQ4ODYyNTU3YzljZjhkM2I2OGJmNGQwM2Mz
ZThiYThmLi5hODNiZGNhZDUxYjA2Njg4NjY3YTZiNzMyMDU3ZTRjZGM4OTYwYTk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjgsOCArMjgsOSBAQCBW
UEFUSCA9IFwKICAgICAkKEphdmFTY3JpcHRDb3JlKSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkv
cGFyc2VyIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9ydW50aW1lIFwKLSAgICAkKEphdmFTY3Jp
cHRDb3JlKS9pbnRlcnByZXRlciBcCi0gICAgJChKYXZhU2NyaXB0Q29yZSkvaml0IFwKKwkkKEph
dmFTY3JpcHRDb3JlKS9pbnRlcnByZXRlciBcCisJJChKYXZhU2NyaXB0Q29yZSkvaml0IFwKKwkk
KEphdmFTY3JpcHRDb3JlKS9idWlsdGlucyBcCiAjCiAKIC5QSE9OWSA6IGFsbApAQCAtNTcsOCAr
NTgsMTggQEAgYWxsIDogXAogICAgIFJlZ0V4cE9iamVjdC5sdXQuaCBcCiAgICAgU3RyaW5nQ29u
c3RydWN0b3IubHV0LmggXAogICAgIHVkaXM4Nl9pdGFiLmggXAorICAgIEpTQ0J1aWx0aW5zIFwK
ICMKIAorIyBidWlsdGluIGZ1bmN0aW9ucworLlBIT05ZOiBKU0NCdWlsdGlucworCitKU0NCdWls
dGluczogJChKYXZhU2NyaXB0Q29yZSkvZ2VuZXJhdGUtanMtYnVpbHRpbnMgSlNDQnVpbHRpbnMu
aCBKU0NCdWlsdGlucy5jcHAKK0pTQ0J1aWx0aW5zLmg6ICQoSmF2YVNjcmlwdENvcmUpL2dlbmVy
YXRlLWpzLWJ1aWx0aW5zICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zLyouanMKKwlweXRob24g
JF4gJEAKKwkJCQkJCQkJCQkJCQkJCQkJCQkJIAorSlNDQnVpbHRpbnMuY3BwOiBKU0NCdWlsdGlu
cy5oCisKICMgbG9va3VwIHRhYmxlcyBmb3IgY2xhc3NlcwogCiAlLmx1dC5oOiBjcmVhdGVfaGFz
aF90YWJsZSAlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2Vm
aWxlLmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGZlNTQ0
OGRkYzFiY2ZhYTRjNzI5YTFjYzAwZGVhNjI0MzE5MzkwYTIuLjU1NjlmNTAyOGQ4YzNjZGQ1YTA0
ZGM5MzY2YTg0YjA0ZWVjNDgxNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9H
TlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0K
QEAgLTUxLDYgKzUxLDcgQEAgamF2YXNjcmlwdGNvcmVfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNk
aXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVycyBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlciBcCiAJLUkkKHNyY2RpcikvU291cmNl
L0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlciBc
CiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyIFwKQEAgLTExMCwx
MiArMTExLDE2IEBAIERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9m
ZnNldHMuaDogJChqYXZhc2NyaXB0Y29yZV9zb3VyY2VzKSAkCiAJJChBTV9WX0dFTikkKFJVQlkp
ICQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZz
ZXRfZXh0cmFjdG9yLnJiICQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20gJEAKIAkkKEFNX1ZfYXQpdG91Y2ggJEAKIAotJChQcm9ncmFt
c19MTEludE9mZnNldHNFeHRyYWN0b3JfT0JKRUNUUyk6IERlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaAorJChQcm9ncmFtc19MTEludE9mZnNldHNFeHRy
YWN0b3JfT0JKRUNUUyk6IERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJl
ZE9mZnNldHMuaCAKIAogRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnRBc3NlbWJs
eS5oOiBQcm9ncmFtcy9MTEludE9mZnNldHNFeHRyYWN0b3IkKEVYRUVYVCkKIAkkKEFNX1ZfR0VO
KSQoUlVCWSkgJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5y
YiAkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtIFByb2dyYW1zL0xMSW50T2Zmc2V0c0V4dHJhY3RvciQoRVhFRVhUKSAkQAogCSQoQU1f
Vl9hdCl0b3VjaCAkQAogCitEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlu
cy5oOiBEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5jcHAKK0Rlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmNwcDogJChzcmNkaXIpL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucyAkKGphdmFzY3JpcHRjb3JlX2J1
aWx0aW5zX2pzX25vc291cmNlcykKKwkkKEFNX1ZfR0VOKSQoUFlUSE9OKSAkXiAkQAorCiAkKGxp
YmphdmFzY3JpcHRjb3JlZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRH
VEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX09CSkVDVFMpOiBEZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9MTEludEFzc2VtYmx5LmgKIAoganNjOiAkKGphdmFzY3JpcHRjb3JlX2J1aWx0X25v
c291cmNlcykgUHJvZ3JhbXMvanNjJChFWEVFWFQpCkBAIC0yMTYsNiArMjIxLDcgQEAgRVhUUkFf
RElTVCArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL0tleXdvcmRMb29rdXBHZW5lcmF0b3Iu
cHkgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvS2V5d29yZHMudGFibGUgXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9USEFOS1MgXAorCSQoamF2YXNjcmlwdGNvcmVfYnVpbHRpbnNf
anNfbm9zb3VyY2VzKSBcCiAJJChsbGludF9ub3NvdXJjZXMpIFwKIAkkKG9mZmxpbmVhc21fbm9z
b3VyY2VzKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4
IGNkYjU0MjZiMDZiNTJhOTgyNTZlZTkwNThiYmE4ZjExZWVhNjllZTAuLjk4ZmFhYTdkMTc1YWE2
MWYyMDg5NmNlZWIxMzg2M2UyN2IyNjZjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCkBAIC0yMCw2ICsyMCw4IEBAIGphdmFzY3JpcHRjb3JlX2J1aWx0X25v
c291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvRXJyb3JQcm90b3R5
cGUubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTRGF0YVZpZXdQcm90
b3R5cGUubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2Jq
ZWN0Lmx1dC5oIFwKKwlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5j
cHAgXAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmggXAogCURl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTT05PYmplY3QubHV0LmggXAogCURlcml2ZWRT
b3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIFwKIAlEZXJp
dmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU1Byb21pc2VQcm90b3R5cGUubHV0LmggXApAQCAt
MzUsNiArMzcsOSBAQCBqYXZhc2NyaXB0Y29yZV9idWlsdF9ub3NvdXJjZXMgKz0gXAogCURlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaCBcCiAJRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnRBc3NlbWJseS5oCiAKK2phdmFzY3JpcHRjb3Jl
X2J1aWx0aW5zX2pzX25vc291cmNlcyArPSBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0FycmF5LnByb3RvdHlwZS5qcworCiBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmggXApAQCAtMTAyLDYgKzEwNyw4IEBAIGphdmFz
Y3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5n
cy9TY3JpcHRPYmplY3QuaCBcCiAgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Nj
cmlwdFZhbHVlLmNwcCBcCiAgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Njcmlw
dFZhbHVlLmggXAorICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheUFs
bG9jYXRpb25Qcm9maWxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Fy
cmF5QWxsb2NhdGlvblByb2ZpbGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FycmF5UHJvZmlsZS5jcHAgXApAQCAtMTI0MSw3ICsxMjQ4LDkgQEAgamF2YXNjcmlwdGNvcmVf
c291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNG
cm9udGVuZERpc3BhdGNoZXJzLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUv
SW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFT
Y3JpcHRDb3JlL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaAorCURlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmggXAorCURlcml2ZWRTb3Vy
Y2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvSlNDQnVpbHRpbnMuaAogCiBsbGludF9ub3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDVlZGVmZGJlODU1Zjk2YTYy
NjhkODU3M2JlYzFkMGMzZDg1OGFhNWMuLmExMmRiMTgzNDg2ZGZiYmNhODNmM2E3OGU5Y2Y5ODYz
MWIyNjUzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtMzA5
LDYgKzMwOSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRG
dW5jdGlvbkNhbGwuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3Nc
U2NyaXB0T2JqZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdz
XFNjcmlwdFZhbHVlLmNwcCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5z
XEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxi
eXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5UHJvZmlsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxieXRlY29kZVxCeXRlY29kZUJhc2ljQmxvY2suY3BwIiAvPgpAQCAtNzIxLDYg
KzcyMiw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJj
ZXNcSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTRnJvbnRlbmREaXNw
YXRjaGVycy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwIiAvPgorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmNwcCIgLz4KICAg
PC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcQXJyYXlDb25zdHJ1Y3Rvci5sdXQuaCIgLz4KQEAgLTc1MCw2
ICs3NTIsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXFJlZ0V4cE9iamVjdC5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3RO
YW1lKVxEZXJpdmVkU291cmNlc1xSZWdFeHBQcm90b3R5cGUubHV0LmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hp
dGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcU3RyaW5nQ29uc3RydWN0b3Iu
bHV0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJj
ZXNcSlNDQnVpbHRpbnMuaCIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcQVBJQ2FsbGJhY2tGdW5jdGlvbi5oIiAvPgpAQCAt
Nzk4LDYgKzgwMSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3Jp
cHRGdW5jdGlvbkNhbGwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdz
XFNjcmlwdE9iamVjdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3Nc
U2NyaXB0VmFsdWUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1
aWx0aW5FeGVjdXRhYmxlcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNv
ZGVcQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cYnl0ZWNvZGVcQXJyYXlQcm9maWxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxieXRlY29kZVxCeVZhbEluZm8uaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVy
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA4N2UxMmE0NzE1OGJiNjIyNGQ0OWZkNjIyOTc4
YzRhOWM0NDM1YTY1Li44NjljMWY1ODliY2I2ODZlYjljZjIwYzA5NmJlMWI4M2E1NTFlMjRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBA
IC03LDYgKzcsOSBAQAogICAgIDxGaWx0ZXIgSW5jbHVkZT0iYmluZGluZ3MiPgogICAgICAgPFVu
aXF1ZUlkZW50aWZpZXI+ezBiYWNlMTIzLTQ1ODItZWViYy05MzE0LTc4MTliMzc2YzE5OH08L1Vu
aXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJidWls
dGlucyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57M2I5ZDcyYTUtMTM1Yi00M2IzLWE1MjQt
YzZkMmI5ZDI5ZDM1fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KICAgICA8Rmls
dGVyIEluY2x1ZGU9ImJ5dGVjb2RlIj4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns3NjYwODhh
MC0xMjE2LTQ4NTQtYWE0My01NjBjNWUyODM2Njh9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwv
RmlsdGVyPgpAQCAtMTA4LDYgKzExMSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxh
c3NlbWJsZXJcTWFjcm9Bc3NlbWJsZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9G
aWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxidWls
dGluc1xCdWlsdGluRXhlY3V0YWJsZXMuY3BwIj4KKyAgICAgIDxGaWx0ZXI+YnVpbHRpbnM8L0Zp
bHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVj
b2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8
L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTEzMjksNiArMTMzNSw5IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFy
Y2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNUeXBl
QnVpbGRlcnMuY3BwIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CiAg
ICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcSlNDQnVpbHRpbnMuY3BwIj4KKyAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2Vz
PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3Vw
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEFQSUNhbGxiYWNrRnVuY3Rpb24uaCI+
CkBAIC0xNDU0LDYgKzE0NjMsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNzZW1i
bGVyXFg4NkFzc2VtYmxlci5oIj4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAg
ICAgPC9DbEluY2x1ZGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWls
dGluRXhlY3V0YWJsZXMuaCI+CisgICAgICA8RmlsdGVyPmJ1aWx0aW5zPC9GaWx0ZXI+CisgICAg
PC9DbENvbXBpbGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFs
bG9jYXRpb25Qcm9maWxlLmgiPgogICAgICAgPEZpbHRlcj5ieXRlY29kZTwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgpAQCAtMjU1MCw2ICsyNTYyLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xBcnJheVByb3RvdHlwZS5sdXQuaCI+CiAgICAg
ICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZv
cm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5z
LmgiPgorICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5j
bHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVk0uaCI+CiAgICAgICA8
RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
Q29tbW9uLnByb3BzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmVDb21tb24ucHJvcHMKaW5kZXggMzYyMmZmYzU3N2M0M2RkZjcwZGE1
MWZmNjhhZDY0NmY2MzA0ZTU2Ny4uYzU4ODg3MGMyZmQxM2Q2MDc2ZDM4ZjUyY2E2MjI1ZGIyODcy
Yzc4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmVDb21tb24ucHJvcHMKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmVDb21tb24ucHJvcHMKQEAg
LTUsNyArNSw3IEBACiAgIDxQcm9wZXJ0eUdyb3VwIC8+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3Vw
PgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4u
Llw7Li5cdG9vbHNcOy4uXHJ1bnRpbWVcOy4uXGxsaW50XDsuLlxqaXRcOy4uXGRpc2Fzc2VtYmxl
clw7Li5caGVhcFw7Li5cZGVidWdnZXJcOy4uXGFzc2VtYmxlclw7Li5ccHJvZmlsZXJcOy4uXHlh
cnJcOy4uXGludGVycHJldGVyXDsuLlxieXRlY29kZVw7Li5cZGZnXDsuLlxieXRlY29tcGlsZXJc
Oy4uXHBhcnNlclw7Li5cQVBJXDsuLlxmdGxcOy4uXGJpbmRpbmdzXDsuLlxpbnNwZWN0b3JcOyQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVxKYXZhU2Ny
aXB0Q29yZVxEZXJpdmVkU291cmNlc1w7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVc
OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlXDskKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXDskKFdlYktpdF9MaWJyYXJpZXMpXGlu
Y2x1ZGU7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlXHByaXZhdGU7JShBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXDsuLlx0b29sc1w7Li5ccnVudGltZVw7Li5c
bGxpbnRcOy4uXGppdFw7Li5cZGlzYXNzZW1ibGVyXDsuLlxoZWFwXDsuLlxkZWJ1Z2dlclw7Li5c
YXNzZW1ibGVyXDsuLlxwcm9maWxlclw7Li5ceWFyclw7Li5caW50ZXJwcmV0ZXJcOy4uXGJ5dGVj
b2RlXDsuLlxidWlsdGluc1w7Li5cZGZnXDsuLlxieXRlY29tcGlsZXJcOy4uXHBhcnNlclw7Li5c
QVBJXDsuLlxmdGxcOy4uXGJpbmRpbmdzXDsuLlxpbnNwZWN0b3JcOyQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVxKYXZhU2NyaXB0Q29yZVxEZXJpdmVk
U291cmNlc1w7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcOyQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlXDskKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcaW5jbHVkZVxwcml2YXRlXDskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGU7JChXZWJLaXRf
TGlicmFyaWVzKVxpbmNsdWRlXHByaXZhdGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
KTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICAgIDxGb3JjZWRJbmNsdWRlRmls
ZXM+SUNVVmVyc2lvbi5oOyUoRm9yY2VkSW5jbHVkZUZpbGVzKTwvRm9yY2VkSW5jbHVkZUZpbGVz
PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAyN2U4NzY3NDBhOTY0YjAyODk4NGVkNjc4MTYxODIwYTVkY2Y3N2M0Li45MTE1NzNh
YjE3ZDMzOTc0YWE3YzlhMDExZGIyMDBiMDlhZjc4YmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtOTIyLDcgKzkyMiw2IEBACiAJCUE1MDNGQTE5MTg4RTBGQjAwMDExMEYxNCAv
KiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1MDNGQTEzMTg4RTBGQUYwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2Fs
bEZyYW1lLmNwcCAqLzsgfTsKIAkJQTUwM0ZBMUExODhFMEZCMDAwMTEwRjE0IC8qIEphdmFTY3Jp
cHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1MDNGQTE0MTg4RTBGQUYwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggKi87
IH07CiAJCUE1MDNGQTFCMTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZB
MTUxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi87IH07Ci0J
CUE1MDNGQTFDMTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE2MTg4RTBG
QjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCAqLzsgfTsKIAkJQTUwM0ZBMUQx
ODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNzE4OEUw
RkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcCAqLzsgfTsK
IAkJQTUwM0ZBMUUxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUw
M0ZBMTgxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5o
ICovOyB9OwogCQlBNTAzRkEyMTE4OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0QnJlYWtwb2ludC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMUYx
ODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlwdEJyZWFrcG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTAyNCw2ICsxMDIzLDcgQEAKIAkJQTcw
QjA4MzIxN0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzBCMDgzMDE3QTBCNzlCMDBEQUYx
NEIgLyogREZHQmluYXJ5U3dpdGNoLmNwcCAqLzsgfTsKIAkJQTcwQjA4MzMxN0EwQjc5QjAwREFG
MTRCIC8qIERGR0JpbmFyeVN3aXRjaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTcwQjA4MzExN0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRj
aC5oICovOyB9OwogCQlBNzEyMzZFNTExOTVGMzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MTIz
NkU0MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3BwICovOyB9OworCQlBNzFE
QTgwRjE4ODBEQkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzFEQTgwRTE4ODBEQkFCMDBEMUYyOTkg
LyogSlNTdHJpbmdJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQTcyMDI4QjYxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJV
dGlscy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NzIwMjhCNDE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmNwcCAqLzsgfTsK
IAkJQTcyMDI4QjgxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyMDI4QjUxNzk3NjAx
RTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3MjAyOEJBMTc5NzYwM0QwMDk4MDI4QyAvKiBK
U0Z1bmN0aW9uSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTcyMDI4QjkxNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExNTAs
NiArMTE1MCwxMCBAQAogCQlBN0NBM0FFODE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0NBM0FFMjE3
REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmggKi87IH07CiAJCUE3Q0EzQUVCMTdEQTUxNjgw
MDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBN0NBM0FFOTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEu
Y3BwICovOyB9OwogCQlBN0NBM0FFQzE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0EzQUVBMTdE
QTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5oICovOyB9OworCQlBN0Q4MDFBNDE4ODBENjZF
MDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWls
dGluRXhlY3V0YWJsZXMuY3BwICovOyB9OworCQlBN0Q4MDFBNTE4ODBENjZFMDAyNkMzOUIgLyog
QnVpbHRpbkV4ZWN1dGFibGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBN0Q4MDFBMjE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTdE
ODAxQTgxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDgwMUE2MTg4MEQ2QTgwMDI2QzM5QiAv
KiBKU0NCdWlsdGlucy5jcHAgKi87IH07CisJCUE3RDgwMUE5MTg4MEQ2QTgwMDI2QzM5QiAvKiBK
U0NCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTdEODAxQTcxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTdEODlDRjIxN0EwQjhDQzAw
NzczQUQ4IC8qIERGR0Jhc2ljQmxvY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTdEODlDRTMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jhc2ljQmxv
Y2suY3BwICovOyB9OwogCQlBN0Q4OUNGMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNl
cnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTdEODlDRTQxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCAq
LzsgfTsKIAkJQTdEODlDRjQxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4OUNF
NTE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjQ2Miw2ICsyNDY2LDggQEAK
IAkJQTcxMjM2RTQxMTk1RjMzQzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRPcGNvZGVzMzJfNjQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzE4RjYxQTExNzU0QTIxMDAyNDY1QTcgLyogUmVn
RXhwSml0VGFibGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEpp
dFRhYmxlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzE4RjgyMTExNzhFQjRC
MDAyNDY1QTcgLyogY3JlYXRlX3JlZ2V4X3RhYmxlcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBleHBsaWNpdEZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBmaWxlRW5jb2Rpbmcg
PSA0OyBwYXRoID0gY3JlYXRlX3JlZ2V4X3RhYmxlczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTcxREE4MEQxODgwRDcxRjAwRDFGMjk5IC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gImdlbmVyYXRlLWpzLWJ1aWx0aW5z
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcxREE4MEUxODgwREJBQjAwRDFGMjk5
IC8qIEpTU3RyaW5nSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1N0cmluZ0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyMDI4QjQx
Nzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NUZXN0UnVubmVyVXRpbHMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNzIwMjhCNTE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1
bm5lclV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ1Rlc3RSdW5u
ZXJVdGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzIwMjhCOTE3OTc2MDNE
MDA5ODAyOEMgLyogSlNGdW5jdGlvbklubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNGdW5jdGlvbklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTI1OTAsNiArMjU5NiwxMSBAQAogCQlBN0NBM0FFMjE3REE0MUFFMDA2NTM4QUYgLyogSlNX
ZWFrTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2Vha01hcC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0NBM0FFOTE3REE1MTY4MDA2NTM4QUYgLyog
V2Vha01hcERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vh
a01hcERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0NBM0FFQTE3REE1
MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2Vha01hcERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAx
QTAxODgwRDY2RTAwMjZDMzlCIC8qIEFycmF5LnByb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEFycmF5LnByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTExODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVj
dXRhYmxlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCdWlsdGlu
RXhlY3V0YWJsZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFBMjE4
ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEJ1aWx0aW5FeGVjdXRhYmxlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBN0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDQnVpbHRpbnMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFBNzE4ODBENkE4MDAyNkMzOUIgLyogSlND
QnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDQnVpbHRpbnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdEODlDRTMxN0EwQjhDQzAwNzczQUQ4
IC8qIERGR0Jhc2ljQmxvY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gREZHQmFzaWNCbG9jay5jcHA7IHBhdGggPSBkZmcvREZHQmFzaWNCbG9jay5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RDg5Q0U0MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdC
bG9ja0luc2VydGlvblNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBERkdCbG9ja0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHQmxvY2tJbnNlcnRpb25T
ZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0Q4OUNFNTE3QTBCOENDMDA3
NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gREZHQmxvY2tJbnNlcnRpb25TZXQuaDsgcGF0aCA9IGRmZy9ERkdCbG9ja0luc2Vy
dGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjkyNiw2ICsyOTM3LDcg
QEAKIAkJCQk4NjA0RjRGMjE0M0E2QzQ0MDBCMjk1RjUgLyogQ2hhbmdlTG9nICovLAogCQkJCUY2
OTJBODU0MDI1NTU5N0QwMUZGNjBGNyAvKiBjcmVhdGVfaGFzaF90YWJsZSAqLywKIAkJCQlBNzE4
RjgyMTExNzhFQjRCMDAyNDY1QTcgLyogY3JlYXRlX3JlZ2V4X3RhYmxlcyAqLywKKwkJCQlBNzFE
QTgwRDE4ODBENzFGMDBEMUYyOTkgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMgKi8sCiAJCQkJNDVF
MTJEODgwNkE0OUIwRjAwRTlERjg0IC8qIGpzYy5jcHAgKi8sCiAJCQkJRjY4RUJCOEMwMjU1RDRD
NjAxRkY2MEY3IC8qIGNvbmZpZy5oICovLAogCQkJCUY1QzI5MEU2MDI4NEY5OEUwMTg2MzVDQSAv
KiBKYXZhU2NyaXB0Q29yZVByZWZpeC5oICovLApAQCAtMjkzNCw2ICsyOTQ2LDcgQEAKIAkJCQkx
NDMyRUJENzBBMzRDQUQ0MDA3MTdCOUYgLyogQVBJICovLAogCQkJCTk2ODhDQjEyMEVEMTJCNEUw
MDFENjQ5RiAvKiBhc3NlbWJsZXIgKi8sCiAJCQkJQTU0Q0YyRUExODRFQTczOTAwMjM3RjE5IC8q
IGJpbmRpbmdzICovLAorCQkJCUE3RDgwMTlGMTg4MEQ2NkUwMDI2QzM5QiAvKiBidWlsdGlucyAq
LywKIAkJCQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8sCiAJCQkJN0Uz
OUQ4MUQwRUMzOEVGQTAwM0FGMTFBIC8qIGJ5dGVjb21waWxlciAqLywKIAkJCQkxQzkwNTEzRTBC
QTlFODgzMDA4MUU5RDAgLyogQ29uZmlndXJhdGlvbnMgKi8sCkBAIC0zNTA5LDYgKzM1MjIsOCBA
QAogCQk2NTBGREY4RDA5RDBGQ0E3MDA3NjlFNTQgLyogRGVyaXZlZCBTb3VyY2VzICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlBN0Q4MDFBNjE4ODBENkE4
MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwICovLAorCQkJCUE3RDgwMUE3MTg4MEQ2QTgwMDI2
QzM5QiAvKiBKU0NCdWlsdGlucy5oICovLAogCQkJCUJDMThDNTIzMEUxNkZDOEEwMEIzNDQ2MCAv
KiBBcnJheVByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQlCQ0QyMDNFNzBFMTcxOEY0MDAyQzdFODIg
LyogRGF0ZVByb3RvdHlwZS5sdXQuaCAqLywKIAkJCQlBNTEzRTVDNjE4NUY5NDM2MDA3RTk1QUQg
LyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuaCAqLywKQEAgLTM4MTEsNiArMzgyNiw3IEBACiAJCQkJ
QTc5MERENkExODJGNDk5NzAwNTg4ODA3IC8qIEpTU2V0SXRlcmF0b3IuaCAqLywKIAkJCQlCQzAy
RTlCNjBFMTg0MkZBMDAwRjkyOTcgLyogSlNTdHJpbmcuY3BwICovLAogCQkJCUY2OTJBODYyMDI1
NTU5N0QwMUZGNjBGNyAvKiBKU1N0cmluZy5oICovLAorCQkJCUE3MURBODBFMTg4MERCQUIwMEQx
RjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCAqLywKIAkJCQk4NkU4NTUzODExMUI5OTY4MDAxQUY1
MUUgLyogSlNTdHJpbmdCdWlsZGVyLmggKi8sCiAJCQkJMjYwMEI1QTQxNTJCQUFBNzAwOTFFRTVG
IC8qIEpTU3RyaW5nSm9pbmVyLmNwcCAqLywKIAkJCQkyNjAwQjVBNTE1MkJBQUE3MDA5MUVFNUYg
LyogSlNTdHJpbmdKb2luZXIuaCAqLywKQEAgLTQ1NjEsNiArNDU3NywxNiBAQAogCQkJcGF0aCA9
IHJlbW90ZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUE3RDgwMTlGMTg4
MEQ2NkUwMDI2QzM5QiAvKiBidWlsdGlucyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJQTdEODAxQTAxODgwRDY2RTAwMjZDMzlCIC8qIEFycmF5LnByb3Rv
dHlwZS5qcyAqLywKKwkJCQlBN0Q4MDFBMTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcCAqLywKKwkJCQlBN0Q4MDFBMjE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4
ZWN1dGFibGVzLmggKi8sCisJCQkpOworCQkJcGF0aCA9IGJ1aWx0aW5zOworCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIC8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCiAKIC8qIEJl
Z2luIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTQ2MDYsMTEgKzQ2MzIsMTEg
QEAKIAkJCQk4NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1Q0VFRTE1MTg3RjNCQUQwMEU1NUM5OSAvKiBJbnNwZWN0b3JBZ2Vu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVDMDI4NUQxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3
RE9wY29kZS5oIGluIEhlYWRlcnMgKi8sCi0gCQkJCTJBNjgyOTVCMTg3NUY4MDUwMEI2QzNFMiAv
KiBDb3B5V3JpdGVCYXJyaWVyLmggaW4gSGVhZGVycyAqLywKLSAgICAgICAgICAgICAgICAyQTRF
QzkwQzE4NjBENkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQkyQTY4Mjk1QjE4NzVGODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMkE0RUM5MEMxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmll
ckJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU1OTMyQTgxODNDNUEyNjAwQTFFQ0NDIC8q
IFZNRW50cnlTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzMjQzOTMxODU2OTcwOTAwMkVE
NjkyIC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5IGluIEhlYWRlcnMgKi8sCi0g
CQkJCUE1MzI0MzkyMTg1Njk3MDkwMDJFRDY5MiAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5
IGluIEhlYWRlcnMgKi8sCisJCQkJQTUzMjQzOTIxODU2OTcwOTAwMkVENjkyIC8qIENvZGVHZW5l
cmF0b3JJbnNwZWN0b3IucHkgaW4gSGVhZGVycyAqLywKIAkJCQkwRjI0RTU0RjE3RUUyNzQ5MDBB
QkIyMTcgLyogVGVtcFJlZ2lzdGVyU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTBFNEI2NDE4
ODA5REQ1MDA2OEE0NkQgLyogSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZFQjU4QzE1MTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJvckhhbmRsaW5nU2NvcGUu
aCBpbiBIZWFkZXJzICovLApAQCAtNDYyMiw3ICs0NjQ4LDcgQEAKIAkJCQkwRjgzMzVCODE2MzlD
MUVBMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTU4NDBFMjkxODdDQTVFNjAwODQzQjEwIC8qIGlubGluZS1hbmQtbWluaWZ5LXN0eWxlc2hl
ZXRzLWFuZC1zY3JpcHRzLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMkIxODdDQTc1QjAw
ODQzQjEwIC8qIGpzbWluLnB5IGluIEhlYWRlcnMgKi8sCi0gCQkJCUE1MzI0Mzk4MTg1NkE0ODkw
MDJFRDY5MiAvKiBJbnNwZWN0b3JKUy5qc29uIGluIEhlYWRlcnMgKi8sCisJCQkJQTUzMjQzOTgx
ODU2QTQ4OTAwMkVENjkyIC8qIEluc3BlY3RvckpTLmpzb24gaW4gSGVhZGVycyAqLywKIAkJCQlB
NTg0MEUyQTE4N0NBNzU5MDA4NDNCMTAgLyogeHhkLnBsIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVB
MDg2MjAxODJCN0EwNDAwRjZEODUxIC8qIEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3QThBRjM1MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8s
CkBAIC00NzMzLDcgKzQ3NTksNyBAQAogCQkJCUExQTAwOUMwMTgzMUEyMkQwMENGODcxMSAvKiBN
YWNyb0Fzc2VtYmxlckFSTTY0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDOURDNTEzMjhERjgy
MDAyQjJBRDcgLyogREZHQnl0ZUNvZGVQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDg1
MzI4MTg3REZERUMwMDgzQjY4NyAvKiBGVExBdmFpbGFibGVSZWNvdmVyeS5oIGluIEhlYWRlcnMg
Ki8sCi0gICAgICAgICAgICAgICAgQTU5M0NGODcxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3Rv
ckFnZW50UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1OTNDRjg3MTg0MDM4Q0EwMEJG
Q0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI1
NkMzNjE2MjdCMEFEMDA3RjI3ODMgLyogREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5l
cmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBE
RkdDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZDOTU4MTRFRjkwQTIwMEM3
MjUzMiAvKiBERkdDRkFQaGFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC00ODcyLDYgKzQ4OTgsNyBA
QAogCQkJCTBGRUEwQTFEMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRUEwQTFGMTcwOEIwMDcwMEJCNzIyQyAvKiBGVExBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTk0NTU5MzE4MjQ3NDQ3MDBDQzM4
NDMgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0Q4
MDFBOTE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRUEwQTBBMTcwNTEzREIwMEJCNzIyQyAvKiBGVExDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNDg1MzJBMTg3REZERUMwMDgzQjY4NyAvKiBGVExSZWNvdmVyeU9wY29kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMjMxNzA5NjA2OTAwQkI3MjJDIC8qIEZUTENvbW1v
blZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC00OTQ2LDYgKzQ5NzMsNyBAQAogCQkJCUJDMThD
NDBGMEUxNkY1Q0QwMEIzNDQ2MCAvKiBJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
MjVGOEJDRTE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkI3RjM5OTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCUE3RDgwMUE1MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhl
Y3V0YWJsZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzlBMTVFRDhFNDYwMEYxNjdCMiAv
KiBJbmRleGluZ0hlYWRlcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzlCMTVF
RDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ1R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQ0VG
QUIwMTgwNUNBNkQwMDQ3MkNFNCAvKiBJbml0aWFsaXplTExWTS5oIGluIEhlYWRlcnMgKi8sCkBA
IC01MjE4LDYgKzUyNDYsNyBAQAogCQkJCUE1MzI0Mzg4MTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNw
ZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NTYw
RTE2RjVDRDAwQjM0NDYwIC8qIFByb3RlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzRDMzNC
MTZBQTJEOTUwMDYyRjAxRCAvKiBQcm90b3R5cGVNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3
MURBODBGMTg4MERCQUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGOTMzMkE0MTRDQTdERDkwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjBDRDRDMjE1RjFBNjA3MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhN
b2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzAwOENFNzE4NzYzMUI2MDA5NTVDMjQgLyogTWlj
cm90YXNrLmggaW4gSGVhZGVycyAqLywKQEAgLTU4MzYsNiArNTg2NSw3IEBACiAJCQkJQTdEODlD
RjIxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jhc2ljQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTcwQjA4MzIxN0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBN0Q4OUNGMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRp
b25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTdEODAxQTQxODgwRDY2RTAwMjZDMzlCIC8q
IEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkVDOURDNDEzMjhE
RjgyMDAyQjJBRDcgLyogREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZEODJFMjExNDE3MkNFMzAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkZGQzk1NzE0RUY5MEEwMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC01ODUyLDYgKzU4ODIsNyBAQAogCQkJCTBGRkZDOTU5MTRFRjkwQTYw
MEM3MjUzMiAvKiBERkdDU0VQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJGQzc3MjE2
RTEyRjcxMDAzOEQ5NzYgLyogREZHRENFUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4
RjJCOTkxNzJGMDRGRjAwN0RCREE1IC8qIERGR0Rlc2lyZWRJZGVudGlmaWVycy5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlBN0Q4MDFBODE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTczRTEzMzAxNzk2MjRDRDAwRTRERUE4IC8qIERGR0Rlc2ly
ZWRTdHJ1Y3R1cmVDaGFpbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzJDMEY3Q0QxN0JCRkM1
QjAwNDY0RkU0IC8qIERGR0Rlc2lyZWRUcmFuc2l0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkU4NTM0QjE3MjNDREE1MDBCNjE4RjUgLyogREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcCBp
biBTb3VyY2VzICovLApAQCAtNTk3Niw3ICs2MDA3LDcgQEAKIAkJCQkwRjZCMUNDNTE4NjJDNDc4
MDA4NDVEOTcgLyogRlRMVW53aW5kSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM5
QTE4MDNBREI3MDA3M0MyQkMgLyogRlRMU3RhY2tNYXBzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGRUEwQTE2MTcwNkJCOTAwMEJCNzIyQyAvKiBGVExTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywK
LSAJCQkJN0MwMDhDRDIxODZGOEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk3QzAwOENEMjE4NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9taXNl
RnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNkIxQ0I1MTg1RkM5RTkwMDg0NUQ5
NyAvKiBGVExKU0NhbGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMzVCRTExNzE3OEUxQzAw
NjkwQzdGIC8qIEZUTFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTkzQ0Y3QzE4NDAz
NjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXkucHJv
dG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlw
ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zZWI0MmY1Y2M0MzNmMTYzNjM0M2JmYzk4MmFhMmFhZmIzMzZlOTQ5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5
LnByb3RvdHlwZS5qcwpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworZnVuY3Rpb24gZXZlcnkoY2FsbGJhY2sgLyosIHRoaXNBcmcg
Ki8pIHsKKyAgICAidXNlIHN0cmljdCI7CisgICAgaWYgKHRoaXMgPT09IG51bGwpCisgICAgICAg
IHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhh
dCB8dGhpc3wgbm90IGJlIG51bGwiKTsKKyAgICAKKyAgICBpZiAodGhpcyA9PT0gdW5kZWZpbmVk
KQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJl
cXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSB1bmRlZmluZWQiKTsKKyAgICAKKyAgICB2YXIgYXJy
YXkgPSBAT2JqZWN0KHRoaXMpOworICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGggPj4+IDA7
CisgICAgCisgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAg
dGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0
IGJlIGEgZnVuY3Rpb24iKTsKKworICAgIHZhciB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+
IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7CisgICAgCisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoIShpIGluIGFycmF5KSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoIWNhbGxiYWNrLkBjYWxsKHRoaXNBcmcsIGFycmF5
W2ldLCBpLCBhcnJheSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAor
ICAgIHJldHVybiB0cnVlOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0MWRiYjVmOTIyNWUy
OGExMmVkM2QxNzk4ZmYxNzY4ZTQzNjcxYTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApAQCAtMCwwICsxLDk1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisKKyNpbmNs
dWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUg
IkpTRnVuY3Rpb25JbmxpbmVzLmgiCisjaW5jbHVkZSAiUGFyc2VyLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitCdWlsdGluRXhlY3V0YWJsZXM6OkJ1aWx0aW5FeGVjdXRhYmxlcyhWTSYgdm0pCisg
ICAgOiBtX3ZtKHZtKQorI2RlZmluZSBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMo
bmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpICwgbV8jI25hbWUjI1NvdXJjZShtYWtlU291cmNl
KFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgpLCBTdHJpbmdJ
bXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiPGJ1aWx0aW4+IikpKQorICAgIEpTQ19GT1JFQUNIX0JV
SUxUSU4oSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIEVYUE9TRV9C
VUlMVElOX1NUUklOR1MKK3sKK30KKworVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0
aW5FeGVjdXRhYmxlczo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUoY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKQoreworICAgIEpTVGV4dFBvc2l0aW9uIHBv
c2l0aW9uQmVmb3JlTGFzdE5ld2xpbmU7CisgICAgUGFyc2VyRXJyb3IgZXJyb3I7CisgICAgUmVm
UHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KCZtX3ZtLCBzb3Vy
Y2UsIDAsIElkZW50aWZpZXIoKSwgSlNQYXJzZUJ1aWx0aW4sIEpTUGFyc2VQcm9ncmFtQ29kZSwg
ZXJyb3IsICZwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKKworICAgIGlmICghcHJvZ3JhbSkg
eworICAgICAgICBkYXRhTG9nKCJGYXRhbCBlcnJvciBjb21waWxpbmcgYnVpbHRpbiBmdW5jdGlv
biAnIiwgbmFtZS5zdHJpbmcoKSwgIic6ICIsIGVycm9yLm1fbWVzc2FnZSk7CisgICAgICAgIENS
QVNIKCk7CisgICAgfQorCisgICAgU3RhdGVtZW50Tm9kZSogZXhwclN0YXRlbWVudCA9IHByb2dy
YW0tPnNpbmdsZVN0YXRlbWVudCgpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQp
OworICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsK
KyAgICBFeHByZXNzaW9uTm9kZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVtZW50
Tm9kZSo+KGV4cHJTdGF0ZW1lbnQpLT5leHByKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4
cHIpOworICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmNFeHByLT5pc0Z1bmNFeHByTm9kZSgpKTsKKyAg
ICBGdW5jdGlvbkJvZHlOb2RlKiBib2R5ID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZnVu
Y0V4cHIpLT5ib2R5KCk7CisgICAgUkVMRUFTRV9BU1NFUlQoIXByb2dyYW0tPmhhc0NhcHR1cmVk
VmFyaWFibGVzKCkpOworICAgIAorICAgIGJvZHktPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVm
b3JlTGFzdE5ld2xpbmUpOworICAgIFJFTEVBU0VfQVNTRVJUKGJvZHkpOworICAgIFJFTEVBU0Vf
QVNTRVJUKGJvZHktPmlkZW50KCkuaXNOdWxsKCkpOworICAgIAorICAgIC8vIFRoaXMgZnVuY3Rp
b24gYXNzdW1lcyBhbiBpbnB1dCBzdHJpbmcgdGhhdCB3b3VsZCByZXN1bHQgaW4gYSBzaW5nbGUg
YW5vbnltb3VzIGZ1bmN0aW9uIGV4cHJlc3Npb24uCisgICAgYm9keS0+c2V0RW5kUG9zaXRpb24o
cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keSk7Cisg
ICAgZm9yIChjb25zdCBhdXRvJiBjbG9zZWRWYXJpYWJsZSA6IHByb2dyYW0tPmNsb3NlZFZhcmlh
YmxlcygpKSB7CisgICAgICAgIGlmIChjbG9zZWRWYXJpYWJsZSA9PSBtX3ZtLnByb3BlcnR5TmFt
ZXMtPmFyZ3VtZW50cy5pbXBsKCkpCisgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAg
ICAgaWYgKGNsb3NlZFZhcmlhYmxlID09IG1fdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5
d29yZC5pbXBsKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQoY2xvc2VkVmFyaWFibGUtPmlzRW1wdHlVbmlxdWUoKSk7CisgICAgfQorICAgIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6Y3JlYXRlKCZtX3ZtLCBzb3VyY2UsIGJvZHksIHRydWUsIFVubGlua2VkQnVp
bHRpbkZ1bmN0aW9uKTsKKyAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPm1fbmFtZVZhbHVlLnNldCht
X3ZtLCBmdW5jdGlvbkV4ZWN1dGFibGUsIGpzU3RyaW5nKCZtX3ZtLCBuYW1lLnN0cmluZygpKSk7
CisgICAgcmV0dXJuIGZ1bmN0aW9uRXhlY3V0YWJsZTsKK30KKworI2RlZmluZSBERUZJTkVfQlVJ
TFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6bmFtZSMjRXhlY3V0YWJsZSgp
IFwKK3tcCisgICAgaWYgKCFtXyMjbmFtZSMjRXhlY3V0YWJsZSlcCisgICAgICAgIG1fIyNuYW1l
IyNFeGVjdXRhYmxlID0gY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUobV8jI25hbWUjI1NvdXJjZSwg
bV92bS5wcm9wZXJ0eU5hbWVzLT5mdW5jdGlvbk5hbWUpO1wKKyAgICByZXR1cm4gbV8jI25hbWUj
I0V4ZWN1dGFibGUuZ2V0KCk7XAorfQorSlNDX0ZPUkVBQ0hfQlVJTFRJTihERUZJTkVfQlVJTFRJ
Tl9FWEVDVVRBQkxFUykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJTl9TT1VSQ0VTCisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kOWExOWUyNjE1MDc5NGE2NjllYzk4ZTM5OWJmNjdmN2Y3MTA2NDE5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEJ1aWx0aW5FeGVjdXRhYmxlc19oCisjZGVmaW5lIEJ1
aWx0aW5FeGVjdXRhYmxlc19oCisKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgorI2luY2x1ZGUg
IlNvdXJjZUNvZGUuaCIKKyNpbmNsdWRlICJXZWFrLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOworY2xhc3MgSWRlbnRpZmllcjsKK2NsYXNzIFZNOworCitjbGFzcyBCdWlsdGluRXhlY3V0
YWJsZXMgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEJ1aWx0aW5FeGVjdXRhYmxl
cz4gY3JlYXRlKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQnVp
bHRpbkV4ZWN1dGFibGVzKHZtKSk7CisgICAgfQorICAgIAorI2RlZmluZSBFWFBPU0VfQlVJTFRJ
Tl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIG5hbWUjI0V4ZWN1dGFibGUoKTsgXAorY29uc3QgU291cmNlQ29kZSYg
bmFtZSMjU291cmNlKCkgeyByZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsgfQorICAgIAorICAgIEpT
Q19GT1JFQUNIX0JVSUxUSU4oRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgRVhQ
T1NFX0JVSUxUSU5fU09VUkNFUworICAgIAorcHJpdmF0ZToKKyAgICBCdWlsdGluRXhlY3V0YWJs
ZXMoVk0mKTsKKyAgICBWTSYgbV92bTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUoY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZp
ZXImKTsKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0
aW9uTmFtZSwgbGVuZ3RoKVwKKyAgICBTb3VyY2VDb2RlIG1fIyNuYW1lIyNTb3VyY2U7IFwKKyAg
ICBXZWFrPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsK
KyAgICBKU0NfRk9SRUFDSF9CVUlMVElOKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykK
KyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKK307CisKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDI2
M2VjN2NhZGY0Zjc5Y2E4MTAyNDQxZTYyYmYyYTA1YjVkZGMzZjIuLjc1MTUwNjU0MjM3NmQ3ZWRj
NTk5YWEwMGY5YjEyNjg1Y2RhMzUyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCkBAIC00MywxMSArNDMsMTMgQEAKICNpbmNsdWRlICJKSVQuaCIK
ICNpbmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgotI2luY2x1
ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkxM
SW50RW50cnlwb2ludC5oIgogI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNs
dWRlICJOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUG9seW1vcnBoaWNQdXRC
eUlkTGlzdC5oIgogI2luY2x1ZGUgIlJlZHVjZVdoaXRlc3BhY2UuaCIKQEAgLTE1NjksNyArMTU3
MSw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0
YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGluCiAKICAgICBzZXRDb25zdGFudFJlZ2lzdGVy
cyh1bmxpbmtlZENvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcnMoKSk7CiAgICAgaWYgKHVubGlu
a2VkQ29kZUJsb2NrLT51c2VzR2xvYmFsT2JqZWN0KCkpCi0gICAgICAgIG1fY29uc3RhbnRSZWdp
c3RlcnNbdW5saW5rZWRDb2RlQmxvY2stPmdsb2JhbE9iamVjdFJlZ2lzdGVyKCkub2Zmc2V0KCld
LnNldCgqbV92bSwgb3duZXJFeGVjdXRhYmxlLCBtX2dsb2JhbE9iamVjdC5nZXQoKSk7CisgICAg
ICAgIG1fY29uc3RhbnRSZWdpc3RlcnNbdW5saW5rZWRDb2RlQmxvY2stPmdsb2JhbE9iamVjdFJl
Z2lzdGVyKCkudG9Db25zdGFudEluZGV4KCldLnNldCgqbV92bSwgb3duZXJFeGVjdXRhYmxlLCBt
X2dsb2JhbE9iamVjdC5nZXQoKSk7CiAgICAgbV9mdW5jdGlvbkRlY2xzLnJlc2l6ZVRvRml0KHVu
bGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSk7CiAgICAgZm9yIChzaXpl
X3QgY291bnQgPSB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCksIGkg
PSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogdW5saW5rZWRFeGVjdXRhYmxlID0gdW5saW5rZWRDb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA2OGJj
MDM3OWY1NzQ0YzlhOGY3NDMxZGI2NGY4YWI1NGU2ZTEwNTNmLi40OTk1YzUyY2Y4YjJiMWI0ZDYy
ODA0NTNlZWQyN2M3NzRhNDk1NThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oCkBAIC01Niw3ICs1Niw2IEBACiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIK
ICNpbmNsdWRlICJPYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oIgogI2luY2x1ZGUgIk9wdGlvbnMu
aCIKLSNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHV0UHJvcGVydHlTbG90Lmgi
CiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0
aXNvbmluZ1dhdGNocG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1By
b2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcAppbmRleCA5ODZlMDNkMGNi
YTcxODViMzljZWUwMjNmNGFiNmJjOWI4Y2NiNmU0Li43MGVmOWI0MjkwMWMwNThiYzcyYzlkYjky
ZGNjMzNkNTNkNmJhYWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0
Y2hwb2ludC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNp
bmNsdWRlICJERkdDb21tb24uaCIKICNpbmNsdWRlICJERkdFeGl0UHJvZmlsZS5oIgorI2luY2x1
ZGUgIkpTQ2VsbElubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDFk
ZmI1YWM2YWQ5MDkzZjhmODExMDFlZjdmMmU2MTIzMTFhYzE5MzkuLjQzMzkwZDk2NWZjNTAzNDAx
NmY3YmZmZjIzZTY4YmIxZTA1NDU1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNDksOSArNDksOSBAQCBjb25z
dCBDbGFzc0luZm8gVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtl
ZFByb2dyYW1Db2RlQmxvY2siLAogY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkRXZhbENvZGVCbG9j
azo6c19pbmZvID0geyAiVW5saW5rZWRFdmFsQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgMCwg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZEV2YWxDb2RlQmxvY2spIH07CiBjb25zdCBD
bGFzc0luZm8gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaykgfTsKIAotc3RhdGljIFVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2sqIGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZtLCBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFBy
b2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikKK3N0YXRpYyBVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKFZNJiB2bSwg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdn
ZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBm
dW5jdGlvbktpbmQsIFBhcnNlckVycm9yJiBlcnJvcikKIHsKLSAgICBSZWZQdHI8RnVuY3Rpb25C
b2R5Tm9kZT4gYm9keSA9IHBhcnNlPEZ1bmN0aW9uQm9keU5vZGU+KCZ2bSwgc291cmNlLCBleGVj
dXRhYmxlLT5wYXJhbWV0ZXJzKCksIGV4ZWN1dGFibGUtPm5hbWUoKSwgZXhlY3V0YWJsZS0+aXNJ
blN0cmljdENvbnRleHQoKSA/IEpTUGFyc2VTdHJpY3QgOiBKU1BhcnNlTm9ybWFsLCBKU1BhcnNl
RnVuY3Rpb25Db2RlLCBlcnJvcik7CisgICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGJvZHkg
PSBwYXJzZTxGdW5jdGlvbkJvZHlOb2RlPigmdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+cGFyYW1l
dGVycygpLCBleGVjdXRhYmxlLT5uYW1lKCksIGV4ZWN1dGFibGUtPnRvU3RyaWN0bmVzcygpLCBK
U1BhcnNlRnVuY3Rpb25Db2RlLCBlcnJvcik7CiAKICAgICBpZiAoIWJvZHkpIHsKICAgICAgICAg
QVNTRVJUKGVycm9yLm1fdHlwZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKQEAgLTYzLDcg
KzYzLDcgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlRnVuY3Rp
b25Db2RlQmxvY2soVk0mIHZtLCBVbmxpbmtlZEZ1bmMKICAgICBib2R5LT5maW5pc2hQYXJzaW5n
KGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxl
LT5mdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGUoKSk7CiAgICAgZXhlY3V0YWJsZS0+cmVjb3Jk
UGFyc2UoYm9keS0+ZmVhdHVyZXMoKSwgYm9keS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CiAg
ICAgCi0gICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5mbyhi
b2R5LT5uZWVkc0FjdGl2YXRpb24oKSwgYm9keS0+dXNlc0V2YWwoKSwgYm9keS0+aXNTdHJpY3RN
b2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCkpOworICAgIFVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2sqIHJlc3VsdCA9IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmdm0s
IEZ1bmN0aW9uQ29kZSwgRXhlY3V0YWJsZUluZm8oYm9keS0+bmVlZHNBY3RpdmF0aW9uKCksIGJv
ZHktPnVzZXNFdmFsKCksIGJvZHktPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25z
dHJ1Y3QsIGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbikpOwogICAgIE93
blB0cjxCeXRlY29kZUdlbmVyYXRvcj4gZ2VuZXJhdG9yKGFkb3B0UHRyKG5ldyBCeXRlY29kZUdl
bmVyYXRvcih2bSwgYm9keS5nZXQoKSwgcmVzdWx0LCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9k
ZSkpKTsKICAgICBlcnJvciA9IGdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKICAgICBib2R5LT5kZXN0
cm95RGF0YSgpOwpAQCAtODIsMTMgKzgyLDE0IEBAIHVuc2lnbmVkIFVubGlua2VkQ29kZUJsb2Nr
OjphZGRPckZpbmRDb25zdGFudChKU1ZhbHVlIHYpCiAgICAgcmV0dXJuIGFkZENvbnN0YW50KHYp
OwogfQogCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlLCBib29sIGlzRnJvbUdsb2JhbENvZGUpCitVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlv
bkJvZHlOb2RlKiBub2RlLCBib29sIGlzRnJvbUdsb2JhbENvZGUsIFVubGlua2VkRnVuY3Rpb25L
aW5kIGtpbmQpCiAgICAgOiBCYXNlKCp2bSwgc3RydWN0dXJlKQogICAgICwgbV9udW1DYXB0dXJl
ZFZhcmlhYmxlcyhub2RlLT5jYXB0dXJlZFZhcmlhYmxlQ291bnQoKSkKICAgICAsIG1fZm9yY2VV
c2VzQXJndW1lbnRzKG5vZGUtPnVzZXNBcmd1bWVudHMoKSkKICAgICAsIG1faXNJblN0cmljdENv
bnRleHQobm9kZS0+aXNTdHJpY3RNb2RlKCkpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVz
KG5vZGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpCiAgICAgLCBtX2lzRnJvbUdsb2JhbENvZGUo
aXNGcm9tR2xvYmFsQ29kZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oa2luZCA9PSBVbmxp
bmtlZEJ1aWx0aW5GdW5jdGlvbikKICAgICAsIG1fbmFtZShub2RlLT5pZGVudCgpKQogICAgICwg
bV9pbmZlcnJlZE5hbWUobm9kZS0+aW5mZXJyZWROYW1lKCkpCiAgICAgLCBtX3BhcmFtZXRlcnMo
bm9kZS0+cGFyYW1ldGVycygpKQpAQCAtMTY2LDcgKzE2Nyw3IEBAIFVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2sqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tGb3IoVk0mIHZt
LCBjb25zCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIFVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2sqIHJlc3VsdCA9IGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2sodm0sIHRoaXMsIHNvdXJj
ZSwgc3BlY2lhbGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXJyb3Ip
OworICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IGdlbmVyYXRlRnVuY3Rp
b25Db2RlQmxvY2sodm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lhbGl6YXRpb25LaW5kLCBkZWJ1Z2dl
ck1vZGUsIHByb2ZpbGVyTW9kZSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRp
bkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgZXJyb3IpOwogICAgIAogICAgIGlm
IChlcnJvci5tX3R5cGUgIT0gUGFyc2VyRXJyb3I6OkVycm9yTm9uZSkKICAgICAgICAgcmV0dXJu
IDA7CkBAIC0yMTAsNiArMjExLDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJs
b2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1f
aXNTdHJpY3RNb2RlKGluZm8ubV9pc1N0cmljdE1vZGUpCiAgICAgLCBtX2lzQ29uc3RydWN0b3Io
aW5mby5tX2lzQ29uc3RydWN0b3IpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGZhbHNl
KQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpbmZvLm1faXNCdWlsdGluRnVuY3Rpb24pCiAg
ICAgLCBtX2ZpcnN0TGluZSgwKQogICAgICwgbV9saW5lQ291bnQoMCkKICAgICAsIG1fZW5kQ29s
dW1uKFVJTlRfTUFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAppbmRleCBiOWRhZTJkNWM2OWM3OWNlYWFhODAyM2QyYTNhMWYyNmQ0
NjA5NDNiLi5hYmY2Y2YzNWI5MzA2YTRmN2EzMDFhYjBkZjc2NjZlYzYxMmUzNzljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApA
QCAtNjYsMjYgKzY2LDM1IEBAIHR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRPYmplY3RBbGxvY2F0
aW9uUHJvZmlsZTsKIHR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRMTEludENhbGxMaW5rSW5mbzsK
IAogc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKLSAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRz
QWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25z
dHJ1Y3RvcikKKyAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1
c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1
aWx0aW5GdW5jdGlvbikKICAgICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2YXRp
b24pCiAgICAgICAgICwgbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3RyaWN0
TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9yKGlzQ29uc3RydWN0
b3IpCisgICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5GdW5jdGlvbikKICAg
ICB7CiAgICAgfQotICAgIGJvb2wgbV9uZWVkc0FjdGl2YXRpb247Ci0gICAgYm9vbCBtX3VzZXNF
dmFsOwotICAgIGJvb2wgbV9pc1N0cmljdE1vZGU7Ci0gICAgYm9vbCBtX2lzQ29uc3RydWN0b3I7
CisgICAgYm9vbCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CisgICAgYm9vbCBtX3VzZXNFdmFsIDog
MTsKKyAgICBib29sIG1faXNTdHJpY3RNb2RlIDogMTsKKyAgICBib29sIG1faXNDb25zdHJ1Y3Rv
ciA6IDE7CisgICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKK307CisKK2VudW0gVW5s
aW5rZWRGdW5jdGlvbktpbmQgeworICAgIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sCisgICAgVW5s
aW5rZWRCdWlsdGluRnVuY3Rpb24sCiB9OwogCiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgorICAgIGZyaWVuZCBjbGFzcyBCdWlsdGlu
RXhlY3V0YWJsZXM7CiAgICAgZnJpZW5kIGNsYXNzIENvZGVDYWNoZTsKKyAgICBmcmllbmQgY2xh
c3MgVk07CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKLSAgICBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
RnVuY3Rpb25Cb2R5Tm9kZSogbm9kZSwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlID0gZmFsc2UpCisg
ICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9t
R2xvYmFsQ29kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQpCiAg
ICAgewotICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhl
YXApKSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIG5vZGUsIGlzRnJvbUdsb2JhbENvZGUp
OworICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhlYXAp
KSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIG5vZGUsIGlzRnJvbUdsb2JhbENvZGUsIHVu
bGlua2VkRnVuY3Rpb25LaW5kKTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2
bSk7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CkBAIC05OSw2ICsxMDgsMTQgQEAg
cHVibGljOgogICAgIH0KICAgICBzaXplX3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdDsKICAgICBi
b29sIGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4
dDsgfQorICAgIEpTUGFyc2VyU3RyaWN0bmVzcyB0b1N0cmljdG5lc3MoKSBjb25zdAorICAgIHsK
KyAgICAgICAgaWYgKG1faXNCdWlsdGluRnVuY3Rpb24pCisgICAgICAgICAgICByZXR1cm4gSlNQ
YXJzZUJ1aWx0aW47CisgICAgICAgIGlmIChtX2lzSW5TdHJpY3RDb250ZXh0KQorICAgICAgICAg
ICAgcmV0dXJuIEpTUGFyc2VTdHJpY3Q7CisgICAgICAgIHJldHVybiBKU1BhcnNlTm9ybWFsOwor
ICAgIH0KICAgICBGdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGUgZnVuY3Rpb25OYW1lSXNJblNj
b3BlVG9nZ2xlKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGU7
IH0KIAogICAgIHVuc2lnbmVkIGZpcnN0TGluZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZmly
c3RMaW5lT2Zmc2V0OyB9CkBAIC0xNDIsOCArMTU5LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBoYXNJbW1vcnRhbFN0cnVjdHVyZSA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQg
ZGVzdHJveShKU0NlbGwqKTsKIAorICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisKIHByaXZhdGU6Ci0gICAgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVu
Y3Rpb25Cb2R5Tm9kZSosIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSk7CisgICAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rp
b25Cb2R5Tm9kZSosIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQp
OwogICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX2NvZGVCbG9j
a0ZvckNhbGw7CiAgICAgV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1f
Y29kZUJsb2NrRm9yQ29uc3RydWN0OwogCkBAIC0xNTIsNiArMTcxLDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1faXNJblN0cmljdENvbnRleHQgOiAxOwogICAgIGJvb2wgbV9oYXNDYXB0dXJlZFZh
cmlhYmxlcyA6IDE7CiAgICAgYm9vbCBtX2lzRnJvbUdsb2JhbENvZGUgOiAxOworICAgIGJvb2wg
bV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CiAKICAgICBJZGVudGlmaWVyIG1fbmFtZTsKICAgICBJ
ZGVudGlmaWVyIG1faW5mZXJyZWROYW1lOwpAQCAtMzE5LDYgKzMzOSw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldElzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbihib29sIGlzTnVtZXJpY0NvbXBhcmVG
dW5jdGlvbikgeyBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbiA9IGlzTnVtZXJpY0NvbXBhcmVG
dW5jdGlvbjsgfQogICAgIGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb247IH0KIAorICAgIGJvb2wgaXNCdWlsdGlu
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisgICAgCiAg
ICAgdm9pZCBzaHJpbmtUb0ZpdCgpCiAgICAgewogICAgICAgICBtX2p1bXBUYXJnZXRzLnNocmlu
a1RvRml0KCk7CkBAIC01MDAsNiArNTIyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNTdHJp
Y3RNb2RlIDogMTsKICAgICBib29sIG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAgYm9vbCBtX2hh
c0NhcHR1cmVkVmFyaWFibGVzIDogMTsKKyAgICBib29sIG1faXNCdWlsdGluRnVuY3Rpb24gOiAx
OwogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50Owog
ICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2ODEwYWI4MDAy
Y2U2YmI4ZDc4ZTdmZjIyMjdmNGM2ZWE3Yjc1OGMyLi5lYzUyMWI1MzA0NjM5MjNlNzRjMDEwZmEy
MThlNTllZDJhOWEzY2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTc1LDYgKzE3NSw3IEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBw
cm9ncmFtTm9kZSwgVW5saW5rZWRQCiAjZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFs
c2UpCiAgICAgLCBtX2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5G
dW5jdGlvbihmYWxzZSkKIHsKICAgICBpZiAobV9zaG91bGRFbWl0RGVidWdIb29rcykKICAgICAg
ICAgbV9jb2RlQmxvY2stPnNldE5lZWRzRnVsbFNjb3BlQ2hhaW4odHJ1ZSk7CkBAIC0yMjIsNyAr
MjIzLDEzIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1
bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9uQm9keSwgVW5sCiAjZW5kaWYKICAgICAsIG1fdXNlc0V4
Y2VwdGlvbnMoZmFsc2UpCiAgICAgLCBtX2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwg
bV9pc0J1aWx0aW5GdW5jdGlvbihjb2RlQmxvY2stPmlzQnVpbHRpbkZ1bmN0aW9uKCkpCiB7Cisg
ICAgaWYgKG1faXNCdWlsdGluRnVuY3Rpb24pIHsKKyAgICAgICAgbV9zaG91bGRFbWl0UHJvZmls
ZUhvb2tzID0gZmFsc2U7CisgICAgICAgIG1fc2hvdWxkRW1pdERlYnVnSG9va3MgPSBmYWxzZTsK
KyAgICB9CisKICAgICBpZiAobV9zaG91bGRFbWl0RGVidWdIb29rcykKICAgICAgICAgbV9jb2Rl
QmxvY2stPnNldE5lZWRzRnVsbFNjb3BlQ2hhaW4odHJ1ZSk7CiAKQEAgLTQzOCw2ICs0NDUsNyBA
QCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSog
ZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZAogI2VuZGlmCiAgICAgLCBtX3VzZXNFeGNlcHRpb25z
KGZhbHNlKQogICAgICwgbV9leHByZXNzaW9uVG9vRGVlcChmYWxzZSkKKyAgICAsIG1faXNCdWls
dGluRnVuY3Rpb24oZmFsc2UpCiB7CiAgICAgbV9jb2RlQmxvY2stPnNldE5lZWRzRnVsbFNjb3Bl
Q2hhaW4odHJ1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA0ZTlmMjEzYzliZmE2Y2YxOTRiMWExNGZl
OTE5ZTgzMzM3YWUzNWQ5Li4xNTg0Mjc0Yjc4ZWE2YzBiZDBlZmIwYjk4MjVjODE4YmUwZGJjMDY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCkBAIC00NjEsNyArNDYxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGJvb2wgc2hvdWxkRW1pdERlYnVnSG9va3MoKSB7IHJldHVybiBtX3Nob3VsZEVtaXREZWJ1
Z0hvb2tzOyB9CiAgICAgICAgIAogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKTsgfQotCisgICAgICAgIAorICAgICAg
ICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5j
dGlvbjsgfQorICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTGFi
ZWw7CiAgICAgICAgIApAQCAtNTQzLDcgKzU0NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAKICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG1ha2VGdW5jdGlvbihGdW5j
dGlvbkJvZHlOb2RlKiBib2R5KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCks
IGJvZHkpOworICAgICAgICAgICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
cmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCBib2R5LCBmYWxzZSwgaXNCdWlsdGlu
RnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5j
dGlvbik7CiAgICAgICAgIH0KIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SW5pdExhenlSZWdp
c3RlcihSZWdpc3RlcklEKik7CkBAIC02NzcsNiArNjc5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgYm9vbCBtX3VzZXNFeGNlcHRpb25zOwogICAgICAgICBib29sIG1fZXhwcmVzc2lv
blRvb0RlZXA7CisgICAgICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlvbjsKICAgICB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAKaW5kZXggMWZmZDRmMzExODgyZDBlZTVjNTUxNGY1YjhiMjU5MzlkOTc1ZTM3OS4uNjJl
Y2EzNmExMGQ3NzA4YTkyOGQ0M2FjMDNmMmZjODYxNWNlY2E3OCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjYsMTAg
KzI2LDEwIEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgotI2lu
Y2x1ZGUgIk5vZGVDb25zdHJ1Y3RvcnMuaCIKIAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9y
LmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMu
aCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpT
RnVuY3Rpb24uaCIKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAj
aW5jbHVkZSAiTGFiZWxTY29wZS5oIgogI2luY2x1ZGUgIkxleGVyLmgiCisjaW5jbHVkZSAiTm9k
ZUNvbnN0cnVjdG9ycy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQYXJz
ZXIuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgpAQCAtNTM1LDM2ICs1MzYsMzkg
QEAgUmVnaXN0ZXJJRCogQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLAogICAgIFJlZlB0cjxMYWJlbD4gZW5kID0gZ2VuZXJh
dG9yLm5ld0xhYmVsKCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3Iu
ZW1pdE5vZGUobV9iYXNlKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4
cHJlc3Npb25EaXZvdCgpLCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgp
KTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5
SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBtX2lkZW50KTsK
KyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQo
Z2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IucHJv
cGVydHlOYW1lcygpLmNhbGwpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9
IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuY3Rpb24uZ2V0KCkpOwotICAgIGdl
bmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKGZ1bmN0aW9uLmdldCgpLCByZWFsQ2Fs
bC5nZXQoKSk7CisgICAgYm9vbCBlbWl0Q2FsbENoZWNrID0gIWdlbmVyYXRvci5pc0J1aWx0aW5G
dW5jdGlvbigpOworICAgIGlmIChlbWl0Q2FsbENoZWNrKQorICAgICAgICBnZW5lcmF0b3IuZW1p
dEp1bXBJZk5vdEZ1bmN0aW9uQ2FsbChmdW5jdGlvbi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkpOwor
CiAgICAgewogICAgICAgICBpZiAobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0
Tm9kZS0+bV9leHByKSB7CiAgICAgICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBvbGRMaXN0ID0g
bV9hcmdzLT5tX2xpc3ROb2RlOwogICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gbV9h
cmdzLT5tX2xpc3ROb2RlLT5tX25leHQ7Ci0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0
b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgQ2FsbEFy
Z3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5t
X2V4cHIpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgp
LCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywg
ZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0SnVtcChlbmQuZ2V0KCkpOwotCiAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUg
PSBvbGRMaXN0OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3Rp
bmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxs
QXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKICAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9u
LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5k
LmdldCgpKTsKICAgICAgICAgfQogICAgIH0KLSAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHJlYWxD
YWxsLmdldCgpKTsKLSAgICB7Ci0gICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhn
ZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1l
bnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRD
YWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9u
LCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAg
IGlmIChlbWl0Q2FsbENoZWNrKSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0
KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKKyAgICAg
ICAgeworICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwg
bV9hcmdzKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRo
aXNSZWdpc3RlcigpLCBiYXNlLmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2Fs
bChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwg
Y2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAg
ICAgfQorICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAgfQotICAg
IGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWUu
Z2V0KCk7CiB9CiAKQEAgLTU4NSw2NSArNTg5LDY3IEBAIFJlZ2lzdGVySUQqIEFwcGx5RnVuY3Rp
b25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
CiAgICAgUmVmUHRyPExhYmVsPiBlbmQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwogICAgIGdl
bmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJl
c3Npb25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0
aW9uKGRzdCksIGJhc2UuZ2V0KCksIG1faWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBm
dW5jdGlvbjsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3Iu
ZmluYWxEZXN0aW5hdGlvbihkc3QsIGZ1bmN0aW9uLmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1p
dEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHkoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsK
LSAgICB7Ci0gICAgICAgIGlmIChtYXlCZUNhbGwpIHsKLSAgICAgICAgICAgIGlmIChtX2FyZ3Mt
Pm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpIHsKLSAgICAgICAgICAg
ICAgICBBcmd1bWVudExpc3ROb2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2RlOwotICAg
ICAgICAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCkgewotICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQobV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwci0+aXNT
aW1wbGVBcnJheSgpKTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlz
dE5vZGUtPm1fbmV4dC0+bV9uZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xp
c3ROb2RlID0gc3RhdGljX2Nhc3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25l
eHQtPm1fZXhwciktPnRvQXJndW1lbnRMaXN0KGdlbmVyYXRvci52bSgpLCAwLCAwKTsKLSAgICAg
ICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRv
ci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwot
ICAgICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9y
LCBtX2FyZ3MpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFy
Z3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24u
Z2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4
dDsKLSAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9
IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2Uu
Z2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMo
Z2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5v
ZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKLSAgICAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFs
RnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3Qo
KSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gb2xkTGlzdDsKKyAgICBib29sIGVtaXRDYWxs
Q2hlY2sgPSAhZ2VuZXJhdG9yLmlzQnVpbHRpbkZ1bmN0aW9uKCk7CisgICAgaWYgKGVtaXRDYWxs
Q2hlY2spIHsKKyAgICAgICAgZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJh
dG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlO
YW1lcygpLmFwcGx5KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFw
cGx5KGZ1bmN0aW9uLmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7CisgICAgfQorICAgIGlmIChtYXlC
ZUNhbGwpIHsKKyAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlz
dE5vZGUtPm1fZXhwcikgeworICAgICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogb2xkTGlzdCA9
IG1fYXJncy0+bV9saXN0Tm9kZTsKKyAgICAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUt
Pm1fbmV4dCkgeworICAgICAgICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1f
bmV4dC0+bV9leHByLT5pc1NpbXBsZUFycmF5KCkpOworICAgICAgICAgICAgICAgIEFTU0VSVCgh
bV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fbmV4dCk7CisgICAgICAgICAgICAgICAgbV9h
cmdzLT5tX2xpc3ROb2RlID0gc3RhdGljX2Nhc3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xpc3RO
b2RlLT5tX25leHQtPm1fZXhwciktPnRvQXJndW1lbnRMaXN0KGdlbmVyYXRvci52bSgpLCAwLCAw
KTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2Vu
ZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQo
KSk7CisgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRv
ciwgbV9hcmdzKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3Vt
ZW50cy50aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKKyAgICAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwg
Tm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCks
IGRpdm90RW5kKCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtX2Fy
Z3MtPm1fbGlzdE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKICAgICAgICAgICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3Zl
KGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAg
ICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAg
ICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0
ZXIoKSwganNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2Rl
KGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG9sZExpc3QtPm1fZXhwcik7CiAgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rp
b24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fYXJn
cy0+bV9saXN0Tm9kZSA9IG9sZExpc3Q7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBB
U1NFUlQobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KTsK
LSAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9maWxlSG9va1JlZ2lzdGVyOwotICAg
ICAgICAgICAgaWYgKGdlbmVyYXRvci5zaG91bGRFbWl0UHJvZmlsZUhvb2tzKCkpCi0gICAgICAg
ICAgICAgICAgcHJvZmlsZUhvb2tSZWdpc3RlciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsK
ICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3Iu
ZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKLSAg
ICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1p
dE5vZGUobV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpOwotICAgICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IGFyZ3NSZWdpc3RlcjsKLSAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIGFy
Z3MgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKLSAgICAgICAgICAgIGlmIChhcmdzLT5t
X2V4cHItPmlzUmVzb2x2ZU5vZGUoKSAmJiBnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50
cyhzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGFyZ3MtPm1fZXhwciktPmlkZW50aWZpZXIoKSkp
Ci0gICAgICAgICAgICAgICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLnVuY2hlY2tlZFJlZ2lz
dGVyRm9yQXJndW1lbnRzKCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXJn
c1JlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7Ci0KLSAgICAgICAg
ICAgIC8vIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseSBpZ25vcmVzIGV4dHJhIGFyZ3VtZW50cywg
YnV0IHdlIHN0aWxsCi0gICAgICAgICAgICAvLyBuZWVkIHRvIGV2YWx1YXRlIHRoZW0gZm9yIHNp
ZGUgZWZmZWN0cy4KLSAgICAgICAgICAgIHdoaWxlICgoYXJncyA9IGFyZ3MtPm1fbmV4dCkpCi0g
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7Ci0KLSAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbFZhcmFyZ3MocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxG
dW5jdGlvbi5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBhcmdzUmVnaXN0ZXIuZ2V0KCksIGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQoKSwgZGl2b3Qo
KSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMg
Y2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CisgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7Cisg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5j
dGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICB9Ci0gICAgICAgIGdlbmVyYXRvci5l
bWl0SnVtcChlbmQuZ2V0KCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChtX2FyZ3Mt
Pm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQpOworICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcHJvZmlsZUhvb2tSZWdpc3RlcjsKKyAgICAgICAgaWYgKGdlbmVyYXRv
ci5zaG91bGRFbWl0UHJvZmlsZUhvb2tzKCkpCisgICAgICAgICAgICBwcm9maWxlSG9va1JlZ2lz
dGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGlu
YXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlz
UmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIp
OworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXJnc1JlZ2lzdGVyOworICAgICAgICBBcmd1
bWVudExpc3ROb2RlKiBhcmdzID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQ7CisgICAgICAg
IGlmIChhcmdzLT5tX2V4cHItPmlzUmVzb2x2ZU5vZGUoKSAmJiBnZW5lcmF0b3Iud2lsbFJlc29s
dmVUb0FyZ3VtZW50cyhzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGFyZ3MtPm1fZXhwciktPmlk
ZW50aWZpZXIoKSkpCisgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IudW5jaGVj
a2VkUmVnaXN0ZXJGb3JBcmd1bWVudHMoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXJn
c1JlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7CisKKyAgICAgICAg
Ly8gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5IGlnbm9yZXMgZXh0cmEgYXJndW1lbnRzLCBidXQg
d2Ugc3RpbGwKKyAgICAgICAgLy8gbmVlZCB0byBldmFsdWF0ZSB0aGVtIGZvciBzaWRlIGVmZmVj
dHMuCisgICAgICAgIHdoaWxlICgoYXJncyA9IGFyZ3MtPm1fbmV4dCkpCisgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKKworICAgICAgICBnZW5lcmF0b3IuZW1p
dENhbGxWYXJhcmdzKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNS
ZWdpc3Rlci5nZXQoKSwgYXJnc1JlZ2lzdGVyLmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCksIHByb2ZpbGVIb29rUmVnaXN0ZXIuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkp
OwotICAgIHsKKyAgICBpZiAoZW1pdENhbGxDaGVjaykgeworICAgICAgICBnZW5lcmF0b3IuZW1p
dEp1bXAoZW5kLmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChyZWFsQ2FsbC5n
ZXQoKSk7CiAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1f
YXJncyk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdp
c3RlcigpLCBiYXNlLmdldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZh
bHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1l
bnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICBnZW5lcmF0
b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFiZWwo
ZW5kLmdldCgpKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZQppbmRleCAzOTc5NzZiMDZjN2E5YjU4MzYzMzI5
MDBhNmViYjkzZWM2OGI3NDg2Li5jYWQ2NWJjNGNjODg4ZTMxNGY4OGQ2NjVkZDRhNmU2NDVhMDlh
MzU1IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlCkBAIC0yODksNyAr
Mjg5LDE3IEBAIHN1YiBvdXRwdXQoKSB7CiAgICAgICAgICAgICAkaW50cmluc2ljID0gIlJlZ0V4
cFRlc3RJbnRyaW5zaWMiIGlmICgka2V5IGVxICJ0ZXN0Iik7CiAgICAgICAgIH0KIAorICAgICAg
ICBpZiAoJHZhbHVlc1skaV17InR5cGUifSBlcSAiRnVuY3Rpb24iKSAgeworICAgICAgICAgICAg
bXkgJHRhYmxlSGVhZCA9ICRuYW1lOworICAgICAgICAgICAgJHRhYmxlSGVhZCA9fiBzL1RhYmxl
JC8vOworICAgICAgICAgICAgcHJpbnQgIiAjaWYgSlNDX0JVSUxUSU5fRVhJU1RTKCIgLiB1Yygk
dGFibGVIZWFkIC4gJGtleSkgLiIpXG4iOworICAgICAgICAgICAgcHJpbnQgIiAgIHsgXCIka2V5
XCIsICgoJGF0dHJzWyRpXSkgJiB+RnVuY3Rpb24pIHwgQnVpbHRpbiwgJGludHJpbnNpYywgKGlu
dHB0cl90KXN0YXRpY19jYXN0PEJ1aWx0aW5HZW5lcmF0b3I+KCIgLiAkdGFibGVIZWFkIC4gdWNm
aXJzdCgka2V5KSAuICJDb2RlR2VuZXJhdG9yKSwgKGludHB0cl90KSRzZWNvbmRWYWx1ZSB9LFxu
IjsKKyAgICAgICAgICAgIHByaW50ICIgI2Vsc2VcbiIKKyAgICAgICAgfQogICAgICAgICBwcmlu
dCAiICAgeyBcIiRrZXlcIiwgJGF0dHJzWyRpXSwgJGludHJpbnNpYywgKGludHB0cl90KSIgLiAk
Zmlyc3RDYXN0U3RyIC4gIigkZmlyc3RWYWx1ZSksIChpbnRwdHJfdCkiIC4gJHNlY29uZENhc3RT
dHIgLiAiKCRzZWNvbmRWYWx1ZSkgfSxcbiI7CisgICAgICAgIGlmICgkdmFsdWVzWyRpXXsidHlw
ZSJ9IGVxICJGdW5jdGlvbiIpICB7CisgICAgICAgICAgICBwcmludCAiICNlbmRpZlxuIgorICAg
ICAgICB9CiAgICAgICAgICRpKys7CiAgICAgfQogICAgIHByaW50ICIgICB7IDAsIDAsIE5vSW50
cmluc2ljLCAwLCAwIH1cbiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvbWluYXRvcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb21pbmF0
b3JzLmNwcAppbmRleCBhNWFlNjE0YjkxOWIwZmQ0MzQ4MmQwMTVjYzI5NTA4NDBlNTRiMjYxLi4y
MDA5NmU3M2IzNTE1OWM3NDM0YmQyN2FiNmY2MzMzN2ZlOWRmNGFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWluYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRG9taW5hdG9ycy5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRGR0RvbWluYXRvcnMuaCIKKyNpbmNsdWRlICJK
U0Z1bmN0aW9uSW5saW5lcy5oIgogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCmluZGV4IDkzYzQxZmJkZTQ0NzY0YjZhNmZlZTBi
MjRiNDg0OWFlZGIxMTc0YzUuLmQ4NmFjOGI0MTM3MzFjYjhkYmRmNGFkMzNlZmE1ZDc4NTIwNTFh
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcApAQCAtMjksNiAr
MjksNyBAQAogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisj
aW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApp
bmRleCAyZmYwYzM0MTQ2ZTJjMGJhMmZmNzZjNGQzZjdjNDZiYTNlMjU1MTQ3Li45MDQ0Y2RjNmI4
YzNhZDRhMWU5NDE4OGRkMWQwZTIwMGU2OWZiOTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJKU0Fj
dGl2YXRpb24uaCIKICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCisj
aW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTmFtZUluc3RhbmNlLmgiCiAj
aW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWVl
MWM3YTdjY2RkOTM3NjkyMGU3NmQ3ZmU4ZDMwYWY5NTVmMzFhNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucwpAQCAtMCwwICsxLDMw
NCBAQAorIyEvdXNyL2Jpbi9weXRob24KKyMgQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
IyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyMgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
IyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBmaWxlY21wCitp
bXBvcnQgZm5tYXRjaAoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzaHV0aWwKK2ltcG9y
dCBzeXMKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IGpzb24KKworY29weXJpZ2h0VGV4dCA9ICIi
IiAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovXG4KKyIiIgorCitnZW5l
cmF0b3JTdHJpbmcgPSAiLyogR2VuZXJhdGVkIGJ5ICVzIGRvIG5vdCBoYW5kIGVkaXQuICovXG4i
ICUgb3MucGF0aC5iYXNlbmFtZShfX2ZpbGVfXykKKworZnVuY3Rpb25IZWFkUmVnRXhwID0gcmUu
Y29tcGlsZShyImZ1bmN0aW9uXHMrXHcrXHMqXCguKj9cKSIsIHJlLk1VTFRJTElORSB8IHJlLlMp
CitmdW5jdGlvbk5hbWVSZWdFeHAgPSByZS5jb21waWxlKHIiZnVuY3Rpb25ccysoXHcrKVxzKlwo
IiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK2Z1bmN0aW9uUGFyYW1ldGVyRmluZGVyID0gcmUuY29t
cGlsZShyIl5mdW5jdGlvblxzKyg/Olx3KylccypcKCgoPzpccypcdyspP1xzKig/OlxzKixccypc
dyspKik/XCkiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorCittdWx0aWxpbmVDb21tZW50UmVnRXhw
ID0gcmUuY29tcGlsZShyIlwvXCouKj9cKlwvIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK3Npbmds
ZUxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwvXC8uKj9cbiIsIHJlLk1VTFRJTElO
RSB8IHJlLlMpCisKK2RlZiBnZXRDb3B5cmlnaHQoc291cmNlKToKKyAgICBjb3B5cmlnaHRCbG9j
ayA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAuZmluZGFsbChzb3VyY2UpWzBdCisgICAgY29weXJp
Z2h0QmxvY2sgPSBjb3B5cmlnaHRCbG9ja1s6Y29weXJpZ2h0QmxvY2suaW5kZXgoIlJlZGlzdHJp
YnV0aW9uIildCisgICAgY29weVJpZ2h0TGluZXMgPSBbXQorCisgICAgZm9yIGxpbmUgaW4gY29w
eXJpZ2h0QmxvY2suc3BsaXQoIlxuIik6CisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIi8q
IiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIiovIiwgIiIpCisgICAgICAgIGxp
bmUgPSBsaW5lLnJlcGxhY2UoIioiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgi
Q29weXJpZ2h0IiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoImNvcHlyaWdodCIs
ICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIoQykiLCAiIikKKyAgICAgICAgbGlu
ZSA9IGxpbmUucmVwbGFjZSgiKGMpIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkK
KyAgICAgICAgaWYgbGVuKGxpbmUpID09IDA6CisgICAgICAgICAgICBjb250aW51ZQorCisgICAg
ICAgIGNvcHlSaWdodExpbmVzLmFwcGVuZChsaW5lKQorICAgIAorICAgIHJldHVybiBsaXN0KHNl
dChjb3B5UmlnaHRMaW5lcykpCisKKworCitkZWYgZ2V0RnVuY3Rpb25zKHNvdXJjZSk6CisKKyAg
ICBzb3VyY2UgPSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLnN1YigiLyoqLyIsIHNpbmdsZUxpbmVD
b21tZW50UmVnRXhwLnN1YigiLy9cbiIsIHNvdXJjZSkpCisKKyAgICBtYXRjaGVzID0gWyBmIGZv
ciBmIGluIGZ1bmN0aW9uSGVhZFJlZ0V4cC5maW5kaXRlcihzb3VyY2UpXQorICAgIGZ1bmN0aW9u
Qm91bmRzID0gW10KKyAgICBzdGFydCA9IDAKKyAgICBlbmQgPSAwCisgICAgZm9yIG1hdGNoIGlu
IG1hdGNoZXM6CisgICAgICAgIHN0YXJ0ID0gbWF0Y2guc3RhcnQoKQorICAgICAgICBpZiBzdGFy
dCA8IGVuZDoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGVuZCA9IG1hdGNoLmVuZCgp
CisgICAgICAgIHdoaWxlIHNvdXJjZVtlbmRdICE9ICd7JzoKKyAgICAgICAgICAgIGVuZCA9IGVu
ZCArIDEKKyAgICAgICAgZGVwdGggPSAxCisgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAg
d2hpbGUgZGVwdGggPiAwOgorICAgICAgICAgICAgaWYgc291cmNlW2VuZF0gPT0gJ3snOgorICAg
ICAgICAgICAgICAgIGRlcHRoID0gZGVwdGggKyAxCisgICAgICAgICAgICBlbGlmIHNvdXJjZVtl
bmRdID09ICd9JzoKKyAgICAgICAgICAgICAgICBkZXB0aCA9IGRlcHRoIC0gMQorICAgICAgICAg
ICAgZW5kID0gZW5kICsgMQorICAgICAgICBmdW5jdGlvbkJvdW5kcy5hcHBlbmQoKHN0YXJ0LCBl
bmQpKQorCisgICAgZnVuY3Rpb25zID0gW3NvdXJjZVtzdGFydDplbmRdLnN0cmlwKCkgZm9yIChz
dGFydCwgZW5kKSBpbiBmdW5jdGlvbkJvdW5kc10KKyAgICByZXN1bHQgPSBbXQorICAgIGZvciBm
dW5jdGlvbiBpbiBmdW5jdGlvbnM6CisgICAgICAgIGZ1bmN0aW9uID0gbXVsdGlsaW5lQ29tbWVu
dFJlZ0V4cC5zdWIoIiIsIGZ1bmN0aW9uKQorICAgICAgICBmdW5jdGlvbk5hbWUgPSBmdW5jdGlv
bk5hbWVSZWdFeHAuZmluZGFsbChmdW5jdGlvbilbMF0KKyAgICAgICAgZnVuY3Rpb25QYXJhbWV0
ZXJzID0gZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIuZmluZGFsbChmdW5jdGlvbilbMF0uc3BsaXQo
JywnKQorICAgICAgICBpZiBsZW4oZnVuY3Rpb25QYXJhbWV0ZXJzWzBdKSA9PSAwOgorICAgICAg
ICAgICAgZnVuY3Rpb25QYXJhbWV0ZXJzID0gW10KKyAgICAgICAgICAgIAorICAgICAgICByZXN1
bHQuYXBwZW5kKChmdW5jdGlvbk5hbWUsIGZ1bmN0aW9uLCBmdW5jdGlvblBhcmFtZXRlcnMpKQor
ICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgCisKK2RlZiBnZW5lcmF0ZUNvZGUoc291cmNlKToK
KyAgICBpbnB1dEZpbGUgPSBvcGVuKHNvdXJjZSwgInIiKQorICAgIGJhc2VOYW1lID0gb3MucGF0
aC5iYXNlbmFtZShzb3VyY2UpLnJlcGxhY2UoIi5qcyIsICIiKQorICAgIAorICAgIHNvdXJjZSA9
ICIiCisgICAgZm9yIGxpbmUgaW4gaW5wdXRGaWxlOgorICAgICAgICBzb3VyY2UgPSBzb3VyY2Ug
KyBsaW5lCisgICAgCisgICAgaWYgc3lzLnBsYXRmb3JtID09ICJjeWd3aW4iOgorICAgICAgICBz
b3VyY2UgPSBzb3VyY2UucmVwbGFjZSgiXHJcbiIsICJcbiIpCisgICAgcmV0dXJuIChiYXNlTmFt
ZSwgZ2V0RnVuY3Rpb25zKHNvdXJjZSksIGdldENvcHlyaWdodChzb3VyY2UpKQorCitkZWYgbWFu
Z2xlTmFtZShvYmplY3QsIG5hbWUpOgorICAgIHFOYW1lID0gb2JqZWN0ICsgIi4iICsgbmFtZQor
ICAgIG1hbmdsZWROYW1lID0gIiIKKyAgICBpID0gMAorICAgIHdoaWxlIGkgPCBsZW4ocU5hbWUp
OgorICAgICAgICBpZiBxTmFtZVtpXSA9PSAnLic6CisgICAgICAgICAgICBtYW5nbGVkTmFtZSA9
IG1hbmdsZWROYW1lICsgcU5hbWVbaSArIDFdLnVwcGVyKCkKKyAgICAgICAgICAgIGkgPSBpICsg
MQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZSAr
IHFOYW1lW2ldCisgICAgICAgIGkgPSBpICsgMQorICAgIHJldHVybiBtYW5nbGVkTmFtZQorCiti
dWlsdGlucyA9IFtdCisKK2Jhc2VOYW1lID0gc3lzLmFyZ3ZbLTFdCitidWlsdGluX2RlZmluaXRp
b25zID0gc3lzLmFyZ3ZbMTotMV0KKyhvdXRwdXRfYmFzZSwgXykgPSBvcy5wYXRoLnNwbGl0ZXh0
KHN5cy5hcmd2Wy0xXSkKKworY29weXJpZ2h0cyA9IFtdCitmb3IgZmlsZSBpbiBidWlsdGluX2Rl
ZmluaXRpb25zOgorICAgIGlmIGZubWF0Y2guZm5tYXRjaChmaWxlLCAnKi5qcycpOgorICAgICAg
ICAoYmFzZU5hbWUsIGZ1bmN0aW9ucywgb2JqZWN0Q29weXJpZ2h0cykgPSBnZW5lcmF0ZUNvZGUo
ZmlsZSkKKyAgICAgICAgY29weXJpZ2h0cy5leHRlbmQob2JqZWN0Q29weXJpZ2h0cykKKyAgICAg
ICAgYnVpbHRpbnMuYXBwZW5kKChiYXNlTmFtZSwgZnVuY3Rpb25zKSkKKworY29weXJpZ2h0cyA9
IGxpc3Qoc2V0KGNvcHlyaWdodHMpKQorCitjb3B5cmlnaHRCb2R5ID0gIiIKK2ZvciBjb3B5cmln
aHQgaW4gY29weXJpZ2h0czoKKyAgICBjb3B5cmlnaHRCb2R5ID0gY29weXJpZ2h0Qm9keSArIiAq
IENvcHlyaWdodCAoQykgIiArIGNvcHlyaWdodCArICJcbiIKKworYnVpbHRpbnNIZWFkZXIgPSBv
cGVuKG91dHB1dF9iYXNlICsgIi5oLnRtcCIsICJ3IikKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24g
PSBvcGVuKG91dHB1dF9iYXNlICsgIi5jcHAudG1wIiwgInciKQorY29weXJpZ2h0VGV4dCA9ICIv
KlxuIiArIGNvcHlyaWdodEJvZHkgKyBjb3B5cmlnaHRUZXh0CitidWlsdGluc0hlYWRlci53cml0
ZSgiIiIlcworJXMKKworI2lmbmRlZiBKU0NCdWlsdGluc19ICisjZGVmaW5lIEpTQ0J1aWx0aW5z
X0gKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNz
IElkZW50aWZpZXI7CitjbGFzcyBKU0dsb2JhbE9iamVjdDsKK2NsYXNzIFNvdXJjZUNvZGU7Citj
bGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIFZNOworCitGdW5jdGlvbkV4
ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKFZNJiwgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CisKKyIiIiAlIChnZW5lcmF0b3JTdHJpbmcs
IGNvcHlyaWdodFRleHQpKQorCitjb2RlUmVmZXJlbmNlcyA9IFtdCisKK2ZvciAob2JqZWN0TmFt
ZSwgZnVuY3Rpb25zKSBpbiBidWlsdGluczoKKyAgICBwcmludCgiR2VuZXJhdGluZyBiaW5kaW5n
cyBmb3IgdGhlICVzIGJ1aWx0aW4uIiAlIG9iamVjdE5hbWUpCisgICAgYnVpbHRpbnNIZWFkZXIu
d3JpdGUoIi8qICVzIGZ1bmN0aW9ucyAqL1xuIiAlIG9iamVjdE5hbWUpCisgICAgZm9yIChuYW1l
LCBpbXBsZW1lbnRhdGlvbiwgXykgaW4gZnVuY3Rpb25zOgorICAgICAgICBtYW5nbGVkTmFtZSA9
IG1hbmdsZU5hbWUob2JqZWN0TmFtZSwgbmFtZSkKKyAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5n
bGVkTmFtZVswXS5sb3dlcigpICsgbWFuZ2xlZE5hbWVbMTpdICsgIkNvZGUiCisgICAgICAgIGNv
ZGVSZWZlcmVuY2VzLmFwcGVuZCgobWFuZ2xlZE5hbWUsIG5hbWUsIGltcGxlbWVudGF0aW9uKSkK
KyAgICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoImV4dGVybiBjb25zdCBjaGFyKiBzXyVzO1xu
IiAlIG1hbmdsZWROYW1lKQorICAgICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiZXh0ZXJuIGNv
bnN0IGludCBzXyVzTGVuZ3RoO1xuIiAlIG1hbmdsZWROYW1lKQorICAgIGJ1aWx0aW5zSGVhZGVy
LndyaXRlKCJcbiIpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0ZPUkVB
Q0hfJXNfQlVJTFRJTihtYWNybykgXFxcbiIgJSBvYmplY3ROYW1lLnJlcGxhY2UoIi4iLCAiXyIp
LnVwcGVyKCkpCisgICAgZm9yIChuYW1lLCBpbXBsZW1lbnRhdGlvbiwgYXJndW1lbnRzKSBpbiBm
dW5jdGlvbnM6CisgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlTmFtZShvYmplY3ROYW1lLCBu
YW1lKQorICAgICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiICAgIG1hY3JvKCVzLCAlcywgJWQp
IFxcXG4iICUgKG5hbWUsIG1hbmdsZWROYW1lLCBsZW4oYXJndW1lbnRzKSkpCisgICAgYnVpbHRp
bnNIZWFkZXIud3JpdGUoIlxuIikKKyAgICBmb3IgKG5hbWUsIGltcGxlbWVudGF0aW9uLCBhcmd1
bWVudHMpIGluIGZ1bmN0aW9uczoKKyAgICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZp
bmUgSlNDX0JVSUxUSU5fJXMgMVxuIiAlIG1hbmdsZU5hbWUob2JqZWN0TmFtZSwgbmFtZSkudXBw
ZXIoKSkKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiXG5cbiIpCituYW1lcyA9IFtdCitidWls
dGluc0hlYWRlci53cml0ZSgiI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOKG1hY3JvKVxcXG4i
KQorZm9yIChjb2RlUmVmZXJlbmNlLCBmdW5jdGlvbk5hbWUsIHNvdXJjZSkgaW4gY29kZVJlZmVy
ZW5jZXM6CisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiAgICBtYWNybyglcywgJXMsIHNfJXNM
ZW5ndGgpIFxcXG4iICUgKGNvZGVSZWZlcmVuY2UsIGZ1bmN0aW9uTmFtZSwgY29kZVJlZmVyZW5j
ZSkpCisgICAgbmFtZXMuYXBwZW5kKGZ1bmN0aW9uTmFtZSkKKworYnVpbHRpbnNIZWFkZXIud3Jp
dGUoIlxuXG4iKQorYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJ
TFRJTl9GVU5DVElPTl9OQU1FKG1hY3JvKSBcXFxuIikKK2ZvciBuYW1lIGluIHNvcnRlZChzZXQo
bmFtZXMpKToKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiICAgIG1hY3JvKCVzKSBcXFxuIiAl
IG5hbWUpCitidWlsdGluc0hlYWRlci53cml0ZSgiIiIKKworI2RlZmluZSBKU0NfREVDTEFSRV9C
VUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBc
XAorICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihWTSYpOworCitK
U0NfRk9SRUFDSF9CVUlMVElOKEpTQ19ERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVm
IEpTQ19ERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fRVhJ
U1RTKG5hbWUpIGRlZmluZWQoSlNDX0JVSUxUSU5fIyNuYW1lKQorCit9CisKKyNlbmRpZgorCisi
IiIpCisKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoIiIiJXMKKyVzCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisKKyNpbmNsdWRlICJCdWls
dGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSlND
ZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0MgeworCisiIiIg
ICUgKGdlbmVyYXRvclN0cmluZywgY29weXJpZ2h0VGV4dCkpCisKK2ZvciAoY29kZVJlZmVyZW5j
ZSwgbmFtZSwgc291cmNlKSBpbiBjb2RlUmVmZXJlbmNlczoKKyAgICBzb3VyY2UgPSAiKGZ1bmN0
aW9uICIgKyBzb3VyY2Vbc291cmNlLmluZGV4KCIoIik6XSArICIpIgorICAgIGxpbmVzID0ganNv
bi5kdW1wcyhzb3VyY2UpWzE6LTFdLnNwbGl0KCJcXG4iKQorICAgIHNvdXJjZUxlbmd0aCA9IGxl
bihzb3VyY2UpCisgICAgc291cmNlID0gIiIKKyAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAg
ICAgc291cmNlID0gc291cmNlICsgKCIgICAgXCIlc1xcblwiIFxcXG4iICUgbGluZSkKKyAgICBi
dWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCJjb25zdCBjaGFyKiBzXyVzID1cbiVzO1xuXG4i
ICUgKGNvZGVSZWZlcmVuY2UsIHNvdXJjZSkpCisgICAgYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53
cml0ZSgiY29uc3QgaW50IHNfJXNMZW5ndGggPSAlZDtcblxuIiAlIChjb2RlUmVmZXJlbmNlLCBz
b3VyY2VMZW5ndGggKyAxKSkgIyArIDEgZm9yIFxuCisKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24u
d3JpdGUoIiIiCitGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKFZN
JiB2bSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlKQoreworICAgIHVuc2lnbmVkIGxpbmVDb3VudCA9IHVubGlu
a2VkRXhlY3V0YWJsZS0+bGluZUNvdW50KCk7CisgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSAx
OworICAgIHVuc2lnbmVkIHNvdXJjZUxlbmd0aCA9IHVubGlua2VkRXhlY3V0YWJsZS0+c291cmNl
TGVuZ3RoKCk7CisgICAgYm9vbCBlbmRDb2x1bW5Jc09uU3RhcnRMaW5lID0gIWxpbmVDb3VudDsK
KyAgICB1bnNpZ25lZCBlbmRDb2x1bW5FeGNsdWRpbmdCcmFjZXMgPSB1bmxpbmtlZEV4ZWN1dGFi
bGUtPnVubGlua2VkQm9keUVuZENvbHVtbigpICsgKGVuZENvbHVtbklzT25TdGFydExpbmUgPyAw
IDogMSk7CisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnN0
YXJ0T2Zmc2V0KCk7CisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXRFeGNsdWRpbmdPcGVuQnJhY2Ug
PSBzdGFydE9mZnNldCArIDE7CisgICAgdW5zaWduZWQgZW5kT2Zmc2V0RXhjbHVkaW5nQ2xvc2VC
cmFjZSA9IHN0YXJ0T2Zmc2V0ICsgc291cmNlTGVuZ3RoIC0gMTsKKyAgICBTb3VyY2VDb2RlIGJv
ZHlTb3VyY2Uoc291cmNlLnByb3ZpZGVyKCksIHN0YXJ0T2Zmc2V0RXhjbHVkaW5nT3BlbkJyYWNl
LCBlbmRPZmZzZXRFeGNsdWRpbmdDbG9zZUJyYWNlLCAwLCBzdGFydENvbHVtbik7CisgICAgcmV0
dXJuIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBib2R5U291cmNlLCB1bmxpbmtlZEV4
ZWN1dGFibGUsIDAsIGxpbmVDb3VudCwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbkV4Y2x1ZGluZ0Jy
YWNlcywgZmFsc2UpOworfQorCisjZGVmaW5lIEpTQ19ERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1Io
Y29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKK0Z1bmN0aW9uRXhlY3V0
YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihWTSYgdm0pIFxcCit7IFxcCisgICAgcmV0dXJuIGNy
ZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5h
bWUjI0V4ZWN1dGFibGUoKSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3Vy
Y2UoKSk7IFxcCit9CisKK0pTQ19GT1JFQUNIX0JVSUxUSU4oSlNDX0RFRklORV9CVUlMVElOX0dF
TkVSQVRPUikKKyN1bmRlZiBKU0NfREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCit9CisKKyIiIikK
KworYnVpbHRpbnNIZWFkZXIuY2xvc2UoKQorYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi5jbG9zZSgp
CisKK2lmIChub3Qgb3MucGF0aC5leGlzdHMob3V0cHV0X2Jhc2UgKyAiLmgiKSkgb3IgKG5vdCBm
aWxlY21wLmNtcChvdXRwdXRfYmFzZSArICIuaC50bXAiLCBvdXRwdXRfYmFzZSArICIuaCIsIHNo
YWxsb3c9RmFsc2UpKToKKyAgICBvcy5yZW5hbWUob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgb3V0
cHV0X2Jhc2UgKyAiLmgiKQorZWxzZToKKyAgICBvcy5yZW1vdmUob3V0cHV0X2Jhc2UgKyAiLmgu
dG1wIikKKworaWYgKG5vdCBvcy5wYXRoLmV4aXN0cyhvdXRwdXRfYmFzZSArICIuY3BwIikpIG9y
IChub3QgZmlsZWNtcC5jbXAob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCBvdXRwdXRfYmFzZSAr
ICIuY3BwIiwgc2hhbGxvdz1GYWxzZSkpOgorICAgIG9zLnJlbmFtZShvdXRwdXRfYmFzZSArICIu
Y3BwLnRtcCIsIG91dHB1dF9iYXNlICsgIi5jcHAiKQorZWxzZToKKyAgICBvcy5yZW1vdmUob3V0
cHV0X2Jhc2UgKyAiLmNwcC50bXAiKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0NhY2hlZENhbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9DYWNoZWRDYWxsLmgKaW5kZXggMmNhM2U5Nzk0MGM3YzExMDZjMWJhYmExZjM1NGZlODQ3
YjQzODViMy4uMzBjYWQyYTE0ZmZkYmZiNGQ1N2NmNWExMmZjYjkwMGUyNjRmODc2YiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oCkBAIC00Myw3
ICs0Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLCBtX2ludGVycHJldGVyKGNh
bGxGcmFtZS0+aW50ZXJwcmV0ZXIoKSkKICAgICAgICAgICAgICwgbV9lbnRyeVNjb3BlKGNhbGxG
cmFtZS0+dm0oKSwgZnVuY3Rpb24tPnNjb3BlKCktPmdsb2JhbE9iamVjdCgpKQogICAgICAgICB7
Ci0gICAgICAgICAgICBBU1NFUlQoIWZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpKTsKKyAgICAg
ICAgICAgIEFTU0VSVCghZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkpOwogICAg
ICAgICAgICAgaWYgKGNhbGxGcmFtZS0+dm0oKS5pc1NhZmVUb1JlY3Vyc2UoKSkgewogICAgICAg
ICAgICAgICAgIG1fYXJndW1lbnRzLnJlc2l6ZShhcmd1bWVudENvdW50KTsKICAgICAgICAgICAg
ICAgICBtX2Nsb3N1cmUgPSBtX2ludGVycHJldGVyLT5wcmVwYXJlRm9yUmVwZWF0Q2FsbChmdW5j
dGlvbi0+anNFeGVjdXRhYmxlKCksIGNhbGxGcmFtZSwgJm1fcHJvdG9DYWxsRnJhbWUsIGZ1bmN0
aW9uLCBhcmd1bWVudENvdW50ICsgMSwgZnVuY3Rpb24tPnNjb3BlKCksIG1fYXJndW1lbnRzLmRh
dGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcAppbmRleCBjYTg5MGIwNmVhMzNmYTllN2YxZmE1MWEzNWVhMmQ0OGQwMDlhMzhhLi42
YzliZjk2YzE1ZjYwOWUyNjVjZTI1MGE0NWJmMDg2MWQwNmNkMWYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTUxLDYgKzUx
LDcgQEAKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNT
dGFja0lubGluZXMuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTU3RyaW5n
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5jbHVkZSAiTExJbnRDTG9v
cC5oIgogI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcAppbmRleCBmMGUwMmJhNGU0NzZm
OTljYzkxM2IwNDYyYWQyNzk1MDA2MDlmYTNhLi4xYzI0MGRjZDcxYmU1MjlkODhjYmY0NjFkMTg2
OGY1ZWIyYjAyYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvUHJvdG9DYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJQcm90
b0NhbGxGcmFtZS5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogCiBuYW1lc3BhY2Ug
SlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGNhN2Fk
MTFmMmUwYjhhM2I4YjE4NTg5MWQ3ZTUyMmJhZTQwM2EyMzYuLmNiNTUwN2JlYWM1NWJmOGViMWIz
N2VjOTBmY2FiMTkzNGZiNDhlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJK
SVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCA5OGQxMGEzZjRkY2IxMmQ4OWYzN2Ex
MmYyMjYwNGI5NDZlMDhlNjI3Li5kZDAzNTM3NzllOGJkZjk4ZjQ2NThhMzA3ZTMyZDA2ZTQ3MjQ0
MTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3Bw
CkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJKSVRJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDkyOGRkNTBmYjAxNmUyNzE2NDRhNTc1ZTMwYWI1
ZjI1MTZlYjUwZWMuLjk5ZjVkYjA3ZTY2YjlkOGM0YjIzNGI5MmFkNTExM2UwOTEyZjU5ZGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNDEsMTAg
KzQxLDEzIEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9uV3JhcHBl
cnMuaCIKICNpbmNsdWRlICJKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIgor
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpT
TmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogI2luY2x1
ZGUgIkpTU3RhY2tJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2lu
Y2x1ZGUgIk9wZXJhdGlvbnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggMjZkZDRkMWFmNzQ1YWZhMWZiYzUzYTljMDIzYTZlNDc0
MWE2NmEwOS4uZGYxYmQzYTljZmE0MDJjNTJhNTIxMWNmMWFjY2U2N2Q1MTIxYjdlZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTI5
LDExICsyOSwxMyBAQAogI2luY2x1ZGUgIkpJVC5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJHQ0F3YXJlSklUU3R1
YlJvdXRpbmUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJJbnRlcnBy
ZXRlci5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisj
aW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTVmFyaWFibGVP
YmplY3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggNDA3ODRiNDk0MzFmZTAyZThlNDUyMmYx
NjMwOGM5MDI0NzE2ZDIzNi4uMmY3OTU1NTRiMDkxZGVlYmJjMDNiZjJiZThjNzRmNDFhZTU0MWVk
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJKU0xv
Y2suaCIKICNpbmNsdWRlICJKU1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNs
dWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVk
ZSAiU2FtcGxpbmdUb29sLmgiCiAjaW5jbHVkZSAiU3RhY2tWaXNpdG9yLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCmlu
ZGV4IDYwNGNjMjYzY2Y5N2UwODZmZWQwNmVjOTAzYjBlYzE5ODNlNzgxMzcuLjgxNjZlN2Y4MWZh
ODlhN2Q0ZjUwYzVmMWE5NGZhOTY4YzVkNTdlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC0zNSw3ICszNSw3
IEBACiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVk
ZSAiSlNDZWxsLmgiCi0jaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rp
b25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5o
IgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA2NjQ0NGJhYTA4YjU2MmRkNjk3ZTBjY2Q3NzIxZTU1
YzE1YmE0OTEzLi44M2M5OGRmZDY0YjBlYzlhY2ZhMzk2M2E2MTA3ZjE1NTBkMGNmYzg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTQ1
LDcgKzQ1LDcgQEAKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1N0YWNrSW5saW5lcy5oIgotI2luY2x1ZGUg
IkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNX
aXRoU2NvcGUuaCIKICNpbmNsdWRlICJMTEludENvbW1vbi5oIgogI2luY2x1ZGUgIkxMSW50RXhj
ZXB0aW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RC
dWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRl
eCA4ZWMxZmQzMmEzYWRhMjJlMTI1MjI5NTcwZGNmN2ZmMjhlYWJmMWVkLi40NmE3Yzc2YjJmOTAx
ZmMzY2MzNmQxY2UwYzA3MzUzZWIwNmIyZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0FTVEJ1aWxkZXIuaApAQCAtODg4LDkgKzg4OCw5IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RC
dWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uCiAgICAgQVNTRVJUKGZ1bmMtPmlzRG90QWNjZXNzb3JOb2RlKCkpOwogICAgIERvdEFjY2Vz
c29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4oZnVuYyk7CiAgICAg
RnVuY3Rpb25DYWxsRG90Tm9kZSogbm9kZTsKLSAgICBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0g
bV92bS0+cHJvcGVydHlOYW1lcy0+Y2FsbCkKKyAgICBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0g
bV92bS0+cHJvcGVydHlOYW1lcy0+Y2FsbCB8fCBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5jYWxsUHJpdmF0ZU5hbWUpCiAgICAgICAgIG5vZGUgPSBuZXcgKG1fdm0p
IENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVu
dGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7Ci0gICAgZWxzZSBp
ZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXBwbHkpCisgICAg
ZWxzZSBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXBwbHkg
fHwgZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXBwbHlQcml2YXRl
TmFtZSkKICAgICAgICAgbm9kZSA9IG5ldyAobV92bSkgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2Rl
KGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBk
aXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiAgICAgZWxzZQogICAgICAgICBub2RlID0gbmV3IChtX3Zt
KSBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlm
aWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IGNhNGJiNGYwYWRlOGQ2YmM4MjY5MWE2YzAwMDE0
Y2YxOThiZDg4YmQuLmNjYjA3OWQ5NzVhMTQxYzVjNGIyZDdiNjIzMTMwMDA3MDk3Nzc4MjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC0yNSwxMCArMjUsMTAgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMZXhlci5oIgogCisjaW5jbHVkZSAiQ29t
bW9uSWRlbnRpZmllcnMuaCIKKyNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNG
dW5jdGlvbklubGluZXMuaCIKLQogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgi
Ci0jaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk5vZGVJbmZvLmgiCiAjaW5jbHVk
ZSAiTm9kZXMuaCIKICNpbmNsdWRlIDx3dGYvZHRvYS5oPgpAQCAtOTAsNiArOTAsNyBAQCBlbnVt
IENoYXJhY3RlclR5cGUgewogCiAgICAgLy8gT3RoZXIgdHlwZXMgKG9ubHkgb25lIHNvIGZhcikK
ICAgICBDaGFyYWN0ZXJXaGl0ZVNwYWNlLAorICAgIENoYXJhY3RlclByaXZhdGVJZGVudGlmaWVy
U3RhcnQKIH07CiAKIC8vIDI1NiBMYXRpbi0xIGNvZGVzCkBAIC0xNTgsNyArMTU5LDcgQEAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IHR5cGVzT2ZMYXRpbjFDaGFyYWN0ZXJzWzI1Nl0gPSB7
CiAvKiAgNjEgLSA9ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyRXF1YWwsCiAvKiAgNjIg
LSA+ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyR3JlYXRlciwKIC8qICA2MyAtID8gICAg
ICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJRdWVzdGlvbiwKLS8qICA2NCAtIEAgICAgICAgICAg
ICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyogIDY0IC0gQCAgICAgICAgICAgICAgICAg
ICovIENoYXJhY3RlclByaXZhdGVJZGVudGlmaWVyU3RhcnQsCiAvKiAgNjUgLSBBICAgICAgICAg
ICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAogLyogIDY2IC0gQiAgICAgICAg
ICAgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKIC8qICA2NyAtIEMgICAgICAg
ICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCkBAIC00ODYsOSArNDg3LDEw
IEBAIHN0YXRpYyBjb25zdCBMQ2hhciBzaW5nbGVDaGFyYWN0ZXJFc2NhcGVWYWx1ZXNGb3JBU0NJ
SVsxMjhdID0gewogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1MZXhlcjxUPjo6TGV4ZXIo
Vk0qIHZtKQorTGV4ZXI8VD46OkxleGVyKFZNKiB2bSwgSlNQYXJzZXJTdHJpY3RuZXNzIHN0cmlj
dG5lc3MpCiAgICAgOiBtX2lzUmVwYXJzaW5nKGZhbHNlKQogICAgICwgbV92bSh2bSkKKyAgICAs
IG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbihzdHJpY3RuZXNzID09IEpTUGFyc2VCdWlsdGluKQog
ewogfQogCkBAIC03NTMsNyArNzU1LDI3IEBAIGlubGluZSB2b2lkIExleGVyPFQ+OjpyZWNvcmQx
NihpbnQgYykKICAgICBBU1NFUlQoYyA8PSBzdGF0aWNfY2FzdDxpbnQ+KFVTSFJUX01BWCkpOwog
ICAgIG1fYnVmZmVyMTYuYXBwZW5kKHN0YXRpY19jYXN0PFVDaGFyPihjKSk7CiB9Ci0KKyAgICAK
KyNpZiAhQVNTRVJUX0RJU0FCTEVECitib29sIGlzU2FmZUlkZW50aWZpZXIoVk0mIHZtLCBjb25z
dCBJZGVudGlmaWVyKiBpZGVudCkKK3sKKyAgICBpZiAoIWlkZW50KQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAvKiBKdXN0IGJsb2NrIGFueSB1c2Ugb2Ygc3VzcGljaW91cyBpZGVudGlmaWVy
cy4gIFRoaXMgaXMgaW50ZW5kZWQgdG8KKyAgICAgKiBiZSB1c2VkIGFzIGEgc2FmZXR5IG5ldCB3
aGlsZSBpbXBsZW1lbnRpbmcgYnVpbHRpbnMuCisgICAgICovCisgICAgaWYgKCppZGVudCA9PSB2
bS5wcm9wZXJ0eU5hbWVzLT5jYWxsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCpp
ZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5hcHBseSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmICgqaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+ZXZhbCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+RnVuY3Rpb24pCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorICAgIAog
dGVtcGxhdGUgPD4KIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZ
U19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwYXJzZUlkZW50aWZpZXIoSlNUb2tl
bkRhdGEqIHRva2VuRGF0YSwgdW5zaWduZWQgbGV4ZXJGbGFncywgYm9vbCBzdHJpY3RNb2RlKQog
ewpAQCAtNzY1LDcgKzc4NywxMSBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlm
aWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAogICAgICAgICAg
ICAgcmV0dXJuIGtleXdvcmQgPT0gUkVTRVJWRURfSUZfU1RSSUNUICYmICFzdHJpY3RNb2RlID8g
SURFTlQgOiBrZXl3b3JkOwogICAgICAgICB9CiAgICAgfQotCisgICAgCisgICAgYm9vbCBpc1By
aXZhdGVOYW1lID0gbV9jdXJyZW50ID09ICdAJyAmJiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247
CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgIHNoaWZ0KCk7CisgICAgCiAgICAgY29u
c3QgTENoYXIqIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKICAgICB1bnNp
Z25lZCBpZGVudGlmaWVyTGluZVN0YXJ0ID0gY3VycmVudExpbmVTdGFydE9mZnNldCgpOwogICAg
IApAQCAtNzc5LDE1ICs4MDUsMjYgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRp
Zmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKIAogICAgIGNv
bnN0IElkZW50aWZpZXIqIGlkZW50ID0gMDsKICAgICAKLSAgICBpZiAoc2hvdWxkQ3JlYXRlSWRl
bnRpZmllcikgeworICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyIHx8IG1fcGFyc2luZ0J1
aWx0aW5GdW5jdGlvbikgewogICAgICAgICBpbnQgaWRlbnRpZmllckxlbmd0aCA9IGN1cnJlbnRT
b3VyY2VQdHIoKSAtIGlkZW50aWZpZXJTdGFydDsKICAgICAgICAgaWRlbnQgPSBtYWtlSWRlbnRp
ZmllcihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwotCisgICAgICAgIGlmICht
X3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKKyAgICAgICAgICAgIGlmICghaXNTYWZlSWRlbnRp
ZmllcigqbV92bSwgaWRlbnQpICYmICFpc1ByaXZhdGVOYW1lKSB7CisgICAgICAgICAgICAgICAg
bV9sZXhFcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJUaGUgdXNlIG9mICciLCBpZGVudC0+c3Ry
aW5nKCksICInIGlzIGRpc2FsbG93ZWQgaW4gYnVpbHRpbiBmdW5jdGlvbnMuIik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIEVSUk9SVE9LOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KGlzUHJpdmF0ZU5hbWUpCisgICAgICAgICAgICAgICAgaWRlbnQgPSBtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5nZXRQcml2YXRlTmFtZSgqaWRlbnQpOworICAgICAgICAgICAgZWxzZSBpZiAoKmlkZW50
ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQpCisgICAgICAgICAgICAg
ICAgdG9rZW5EYXRhLT5pZGVudCA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3
b3JkUHJpdmF0ZU5hbWU7CisgICAgICAgICAgICBpZiAoIWlkZW50KQorICAgICAgICAgICAgICAg
IHJldHVybiBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzsKKyAgICAgICAgfQogICAgICAg
ICB0b2tlbkRhdGEtPmlkZW50ID0gaWRlbnQ7CiAgICAgfSBlbHNlCiAgICAgICAgIHRva2VuRGF0
YS0+aWRlbnQgPSAwOwogCi0gICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxl
bmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMpKSkg
eworICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICEobGV4
ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlzUHJpdmF0ZU5h
bWUpIHsKICAgICAgICAgQVNTRVJUKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpOwogICAgICAgICBp
ZiAocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHsKICAgICAgICAgICAgIGNvbnN0IEhhc2hF
bnRyeSogZW50cnkgPSBtX3ZtLT5rZXl3b3Jkcy0+Z2V0S2V5d29yZCgqaWRlbnQpOwpAQCAtODE0
LDYgKzg1MSwxMCBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdB
WVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAgICAgICAgICAgcmV0dXJu
IGtleXdvcmQgPT0gUkVTRVJWRURfSUZfU1RSSUNUICYmICFzdHJpY3RNb2RlID8gSURFTlQgOiBr
ZXl3b3JkOwogICAgICAgICB9CiAgICAgfQorICAgIAorICAgIGJvb2wgaXNQcml2YXRlTmFtZSA9
IG1fY3VycmVudCA9PSAnQCcgJiYgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uOworICAgIGlmIChp
c1ByaXZhdGVOYW1lKQorICAgICAgICBzaGlmdCgpOwogCiAgICAgY29uc3QgVUNoYXIqIGlkZW50
aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKICAgICBpbnQgaWRlbnRpZmllckxpbmVT
dGFydCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKQEAgLTgyNiw2ICs4NjcsNyBAQCB0ZW1w
bGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5U
eXBlIExleGVyPFVDaGFyPjo6cAogICAgIH0KICAgICAKICAgICBpZiAoVU5MSUtFTFkobV9jdXJy
ZW50ID09ICdcXCcpKSB7CisgICAgICAgIEFTU0VSVCghaXNQcml2YXRlTmFtZSk7CiAgICAgICAg
IHNldE9mZnNldEZyb21Tb3VyY2VQdHIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGluZVN0
YXJ0KTsKICAgICAgICAgcmV0dXJuIHBhcnNlSWRlbnRpZmllclNsb3dDYXNlPHNob3VsZENyZWF0
ZUlkZW50aWZpZXI+KHRva2VuRGF0YSwgbGV4ZXJGbGFncywgc3RyaWN0TW9kZSk7CiAgICAgfQpA
QCAtODM3LDE4ICs4NzksMjkgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmll
cj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAKIAogICAgIGNvbnN0
IElkZW50aWZpZXIqIGlkZW50ID0gMDsKICAgICAKLSAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRp
ZmllcikgeworICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyIHx8IG1fcGFyc2luZ0J1aWx0
aW5GdW5jdGlvbikgewogICAgICAgICBpbnQgaWRlbnRpZmllckxlbmd0aCA9IGN1cnJlbnRTb3Vy
Y2VQdHIoKSAtIGlkZW50aWZpZXJTdGFydDsKICAgICAgICAgaWYgKGlzQWxsOEJpdCkKICAgICAg
ICAgICAgIGlkZW50ID0gbWFrZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hhcihpZGVudGlmaWVyU3Rh
cnQsIGlkZW50aWZpZXJMZW5ndGgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBpZGVudCA9
IG1ha2VJZGVudGlmaWVyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCk7Ci0gICAg
ICAgIAorICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CisgICAgICAgICAg
ICBpZiAoIWlzU2FmZUlkZW50aWZpZXIoKm1fdm0sIGlkZW50KSAmJiAhaXNQcml2YXRlTmFtZSkg
eworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZygiVGhlIHVz
ZSBvZiAnIiwgaWRlbnQtPnN0cmluZygpLCAiJyBpcyBkaXNhbGxvd2VkIGluIGJ1aWx0aW4gZnVu
Y3Rpb25zLiIpOworICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPSzsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICAgICAgICAgIGlkZW50
ID0gbV92bS0+cHJvcGVydHlOYW1lcy0+Z2V0UHJpdmF0ZU5hbWUoKmlkZW50KTsKKyAgICAgICAg
ICAgIGVsc2UgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3
b3JkKQorICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAmbV92bS0+cHJvcGVydHlO
YW1lcy0+dW5kZWZpbmVkS2V5d29yZFByaXZhdGVOYW1lOworICAgICAgICAgICAgaWYgKCFpZGVu
dCkKKyAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9QUklWQVRFX05BTUVfRVJST1JUT0s7
CisgICAgICAgIH0KICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IGlkZW50OwogICAgIH0gZWxz
ZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gMDsKICAgICAKLSAgICBpZiAoVU5MSUtFTFko
KHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxhZ3MgJiBMZXhlckZsYWdz
SWdub3JlUmVzZXJ2ZWRXb3JkcykpKSB7CisgICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBt
YXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVk
V29yZHMpKSAmJiAhaXNQcml2YXRlTmFtZSkgewogICAgICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRl
SWRlbnRpZmllcik7CiAgICAgICAgIGlmIChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgewog
ICAgICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IG1fdm0tPmtleXdvcmRzLT5nZXRL
ZXl3b3JkKCppZGVudCk7CkBAIC0xNjU4LDYgKzE3MTEsNyBAQCBpbk51bWJlckFmdGVyRGVjaW1h
bFBvaW50OgogICAgICAgICBBU1NFUlQoaXNJZGVudFN0YXJ0KG1fY3VycmVudCkpOwogICAgICAg
ICBGQUxMVEhST1VHSDsKICAgICBjYXNlIENoYXJhY3RlckJhY2tTbGFzaDoKKyAgICAgICAgcGFy
c2VJZGVudDoKICAgICAgICAgaWYgKGxleGVyRmxhZ3MgJiBMZXhleEZsYWdzRG9udEJ1aWxkS2V5
d29yZHMpCiAgICAgICAgICAgICB0b2tlbiA9IHBhcnNlSWRlbnRpZmllcjxmYWxzZT4odG9rZW5E
YXRhLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKTsKICAgICAgICAgZWxzZQpAQCAtMTY3MCw2ICsx
NzI0LDExIEBAIGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ6CiAgICAgICAgIG1fdGVybWluYXRv
ciA9IHRydWU7CiAgICAgICAgIG1fbGluZVN0YXJ0ID0gbV9jb2RlOwogICAgICAgICBnb3RvIHN0
YXJ0OworICAgIGNhc2UgQ2hhcmFjdGVyUHJpdmF0ZUlkZW50aWZpZXJTdGFydDoKKyAgICAgICAg
aWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikKKyAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVu
dDsKKworICAgICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNlIENoYXJhY3RlckludmFsaWQ6CiAg
ICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gaW52YWxpZENoYXJhY3Rlck1lc3NhZ2UoKTsKICAg
ICAgICAgdG9rZW4gPSBFUlJPUlRPSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTGV4ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaApp
bmRleCAyOGM2MWJhMTk4ZDJjMTVhNDliYjE4NTJlZDMwYmVmZWI4OTA0MDA4Li5iODg3M2U5OTUw
Mjg2NDRiZjhjYmIzZDRjMmRhNTYyZTkzZTBlOGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0xleGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9MZXhlci5oCkBAIC03Miw3ICs3Miw3IEBAIGNsYXNzIExleGVyIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIAogcHVibGljOgotICAgIExleGVyKFZNKik7CisgICAgTGV4ZXIoVk0q
LCBKU1BhcnNlclN0cmljdG5lc3MpOwogICAgIH5MZXhlcigpOwogCiAgICAgLy8gQ2hhcmFjdGVy
IG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMuCkBAIC0yMzgsNiArMjM4LDcgQEAgcHJpdmF0ZToKICAg
ICBJZGVudGlmaWVyQXJlbmEqIG1fYXJlbmE7CiAKICAgICBWTSogbV92bTsKKyAgICBib29sIG1f
cGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKIH07CiAKIHRlbXBsYXRlIDw+CkBAIC0zMzUsNiArMzM2
LDEyIEBAIEFMV0FZU19JTkxJTkUgY29uc3QgSWRlbnRpZmllciogTGV4ZXI8VD46Om1ha2VMQ2hh
cklkZW50aWZpZXIoY29uc3QgVUNoYXIqIGNoYXJhCiAgICAgcmV0dXJuICZtX2FyZW5hLT5tYWtl
SWRlbnRpZmllckxDaGFyRnJvbVVDaGFyKG1fdm0sIGNoYXJhY3RlcnMsIGxlbmd0aCk7CiB9CiAK
KyNpZiBBU1NFUlRfRElTQUJMRUQKK0FMV0FZU19JTkxJTkUgYm9vbCBpc1NhZmVJZGVudGlmaWVy
KFZNJiwgY29uc3QgSWRlbnRpZmllciopIHsgcmV0dXJuIHRydWU7IH0KKyNlbHNlCitib29sIGlz
U2FmZUlkZW50aWZpZXIoVk0mLCBjb25zdCBJZGVudGlmaWVyKik7CisjZW5kaWYKKwogdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhF
eHBlY3RJZGVudGlmaWVyKEpTVG9rZW4qIHRva2VuUmVjb3JkLCB1bnNpZ25lZCBsZXhlckZsYWdz
LCBib29sIHN0cmljdE1vZGUpCiB7CkBAIC0zNzAsMTAgKzM3NywxNSBAQCBBTFdBWVNfSU5MSU5F
IEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW4qIHRva2Vu
UmVjb3JkLCB1bgogICAgIEFTU0VSVChjdXJyZW50T2Zmc2V0KCkgPj0gY3VycmVudExpbmVTdGFy
dE9mZnNldCgpKTsKIAogICAgIC8vIENyZWF0ZSB0aGUgaWRlbnRpZmllciBpZiBuZWVkZWQKLSAg
ICBpZiAobGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250QnVpbGRLZXl3b3JkcykKKyAgICBpZiAo
bGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250QnVpbGRLZXl3b3JkcworI2lmICFBU1NFUlRfRElT
QUJMRUQKKyAgICAgICAgJiYgIW1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbgorI2VuZGlmCisgICAg
ICAgICkKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IDA7CiAgICAgZWxzZQogICAgICAgICB0
b2tlbkRhdGEtPmlkZW50ID0gbWFrZUxDaGFySWRlbnRpZmllcihzdGFydCwgcHRyIC0gc3RhcnQp
OworCiAgICAgdG9rZW5Mb2NhdGlvbi0+bGluZSA9IG1fbGluZU51bWJlcjsKICAgICB0b2tlbkxv
Y2F0aW9uLT5saW5lU3RhcnRPZmZzZXQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CiAgICAg
dG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZzZXQgPSBvZmZzZXRGcm9tU291cmNlUHRyKHN0YXJ0KTsK
QEAgLTM4MSw2ICszOTMsMTMgQEAgQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6
bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rva2VuKiB0b2tlblJlY29yZCwgdW4KICAgICBBU1NFUlQo
dG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZzZXQgPj0gdG9rZW5Mb2NhdGlvbi0+bGluZVN0YXJ0T2Zm
c2V0KTsKICAgICB0b2tlblJlY29yZC0+bV9zdGFydFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbjsK
ICAgICB0b2tlblJlY29yZC0+bV9lbmRQb3NpdGlvbiA9IGN1cnJlbnRQb3NpdGlvbigpOworI2lm
ICFBU1NFUlRfRElTQUJMRUQKKyAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7Cisg
ICAgICAgIGlmICghaXNTYWZlSWRlbnRpZmllcigqbV92bSwgdG9rZW5EYXRhLT5pZGVudCkpCisg
ICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7CisgICAgfQorI2VuZGlmCisKICAgICBtX2xhc3RU
b2tlbiA9IElERU5UOwogICAgIHJldHVybiBJREVOVDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggZmM5Y2NkOWY2YzU3NmMxYWVmNTQ3ZjIxMWZkZDU5NmY0
MmUwNTgwNi4uZDk1MmJhNmE5NGQyZjZiNDE4MjE1NTAwNGQwYTk3MDg0MjliZDc4YSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTEzMiw2ICsxMzIsMTIgQEAgUGFz
c1JlZlB0cjxQcm9ncmFtTm9kZT4gUHJvZ3JhbU5vZGU6OmNyZWF0ZShWTSogdm0sIGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgc3RhcnQKICAgICByZXR1cm4gbm9kZS5yZWxlYXNlKCk7CiB9CiAKKwor
dm9pZCBQcm9ncmFtTm9kZTo6c2V0Q2xvc2VkVmFyaWFibGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8
U3RyaW5nSW1wbD4+JiYgY2xvc2VkVmFyaWFibGVzKQoreworICAgIG1fY2xvc2VkVmFyaWFibGVz
ID0gc3RkOjptb3ZlKGNsb3NlZFZhcmlhYmxlcyk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBFdmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBp
bmxpbmUgRXZhbE5vZGU6OkV2YWxOb2RlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBz
dGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25l
ZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNr
LCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFi
bGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50
IG51bUNvbnN0YW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCBkNzc5
YTE3OGQ5NTZmZjk5ZmQwYmVkNWQ1ZjQ1NGFhM2U2YjUwODc5Li44MTZmZjAwMWFiZjAzNzZjNjQy
ZjFhOTM4ZDBlMGE5ZjUyOWNhNmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5o
CkBAIC0xNDMxLDYgKzE0MzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBuZWVk
c0FjdGl2YXRpb24oKSBjb25zdCB7IHJldHVybiAoaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkgfHwg
KG1fZmVhdHVyZXMgJiAoRXZhbEZlYXR1cmUgfCBXaXRoRmVhdHVyZSB8IENhdGNoRmVhdHVyZSkp
OyB9CiAgICAgICAgIGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiAh
IW1fY2FwdHVyZWRWYXJpYWJsZXMuc2l6ZSgpOyB9CiAgICAgICAgIHNpemVfdCBjYXB0dXJlZFZh
cmlhYmxlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2NhcHR1cmVkVmFyaWFibGVzLnNpemUoKTsg
fQorICAgICAgICBjb25zdCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcygpIGNvbnN0
IHsgcmV0dXJuIG1fY2FwdHVyZWRWYXJpYWJsZXM7IH0KICAgICAgICAgYm9vbCBjYXB0dXJlcyhj
b25zdCBJZGVudGlmaWVyJiBpZGVudCkgeyByZXR1cm4gbV9jYXB0dXJlZFZhcmlhYmxlcy5jb250
YWlucyhpZGVudC5pbXBsKCkpOyB9CiAKICAgICAgICAgVmFyU3RhY2smIHZhclN0YWNrKCkgeyBy
ZXR1cm4gbV92YXJTdGFjazsgfQpAQCAtMTQ0Niw2ICsxNDQ3LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCgpIGNvbnN0OwogCiAgICAg
ICAgIHZvaWQgZW1pdFN0YXRlbWVudHNCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqIGRlc3RpbmF0aW9uKTsKKyAgICAgICAgCisgICAgICAgIHZvaWQgc2V0Q2xvc2VkVmFy
aWFibGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYpIHsgfQogCiAgICAgcHJv
dGVjdGVkOgogICAgICAgICB2b2lkIHNldFNvdXJjZShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Up
IHsgbV9zb3VyY2UgPSBzb3VyY2U7IH0KQEAgLTE0NzUsMTEgKzE0NzgsMTMgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9uID0gZmFs
c2U7CiAKKyAgICAgICAgdm9pZCBzZXRDbG9zZWRWYXJpYWJsZXMoY29uc3QgVmVjdG9yPFJlZlB0
cjxTdHJpbmdJbXBsPj4mJik7CisgICAgICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1w
bD4+JiBjbG9zZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2Nsb3NlZFZhcmlhYmxlczsg
fQogICAgIHByaXZhdGU6CiAgICAgICAgIFByb2dyYW1Ob2RlKFZNKiwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0
Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBG
dW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVh
dHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwotCisg
ICAgICAgIFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+IG1fY2xvc2VkVmFyaWFibGVzOwogICAg
ICAgICB1bnNpZ25lZCBtX3N0YXJ0Q29sdW1uOwogICAgICAgICB1bnNpZ25lZCBtX2VuZENvbHVt
bjsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDI5
NzY2NmU3MjZlNDVkMDgzZWYxMzQ5ZGRmZmRmMzdlZjgwMGRmN2EuLjUwYmVjNzlmZTM4YWRmOGYz
YTA0ZjZiNDZjYmQyYTVjYmZjZjI0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKQEAgLTIwNCw4ICsyMDQsOSBAQCBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKFZN
KiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcnMqCiAgICAg
LCBtX2xhc3RJZGVudGlmaWVyKDApCiAgICAgLCBtX2xhc3RGdW5jdGlvbk5hbWUobnVsbHB0cikK
ICAgICAsIG1fc291cmNlRWxlbWVudHMoMCkKKyAgICAsIG1fcGFyc2luZ0J1aWx0aW4oc3RyaWN0
bmVzcyA9PSBKU1BhcnNlQnVpbHRpbikKIHsKLSAgICBtX2xleGVyID0gYWRvcHRQdHIobmV3IExl
eGVyVHlwZSh2bSkpOworICAgIG1fbGV4ZXIgPSBhZG9wdFB0cihuZXcgTGV4ZXJUeXBlKHZtLCBz
dHJpY3RuZXNzKSk7CiAgICAgbV9hcmVuYSA9IG1fdm0tPnBhcnNlckFyZW5hLmdldCgpOwogICAg
IG1fbGV4ZXItPnNldENvZGUoc291cmNlLCBtX2FyZW5hKTsKICAgICBtX3Rva2VuLm1fbG9jYXRp
b24ubGluZSA9IHNvdXJjZS5maXJzdExpbmUoKTsKQEAgLTI1Niw2ICsyNTcsNyBAQCBTdHJpbmcg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoKQogICAgIElkZW50aWZpZXJTZXQgY2FwdHVy
ZWRWYXJpYWJsZXM7CiAgICAgYm9vbCBtb2RpZmllZFBhcmFtZXRlciA9IGZhbHNlOwogICAgIHNj
b3BlLT5nZXRDYXB0dXJlZFZhcmlhYmxlcyhjYXB0dXJlZFZhcmlhYmxlcywgbW9kaWZpZWRQYXJh
bWV0ZXIpOworICAgIAogICAgIENvZGVGZWF0dXJlcyBmZWF0dXJlcyA9IGNvbnRleHQuZmVhdHVy
ZXMoKTsKICAgICBpZiAoc2NvcGUtPnN0cmljdE1vZGUoKSkKICAgICAgICAgZmVhdHVyZXMgfD0g
U3RyaWN0TW9kZUZlYXR1cmU7CkBAIC0yNjMsMjEgKzI2NSwzNiBAQCBTdHJpbmcgUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlSW5uZXIoKQogICAgICAgICBmZWF0dXJlcyB8PSBTaGFkb3dzQXJndW1l
bnRzRmVhdHVyZTsKICAgICBpZiAobW9kaWZpZWRQYXJhbWV0ZXIpCiAgICAgICAgIGZlYXR1cmVz
IHw9IE1vZGlmaWVkUGFyYW1ldGVyRmVhdHVyZTsKLQorICAgIAorICAgIFZlY3RvcjxSZWZQdHI8
U3RyaW5nSW1wbD4+IGNsb3NlZFZhcmlhYmxlczsKKyAgICBpZiAobV9wYXJzaW5nQnVpbHRpbikg
eworICAgICAgICBSRUxFQVNFX0FTU0VSVCghY2FwdHVyZWRWYXJpYWJsZXMuc2l6ZSgpKTsKKyAg
ICAgICAgSWRlbnRpZmllclNldCB1c2VkVmFyaWFibGVzOworICAgICAgICBzY29wZS0+Z2V0VXNl
ZFZhcmlhYmxlcyh1c2VkVmFyaWFibGVzKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiB2YXJp
YWJsZSA6IHVzZWRWYXJpYWJsZXMpIHsKKyAgICAgICAgICAgIGlmIChzY29wZS0+aGFzRGVjbGFy
ZWRWYXJpYWJsZShJZGVudGlmaWVyKG1fdm0sIHZhcmlhYmxlLmdldCgpKSkpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChzY29wZS0+aGFz
RGVjbGFyZWRQYXJhbWV0ZXIoSWRlbnRpZmllcihtX3ZtLCB2YXJpYWJsZS5nZXQoKSkpKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgY2xvc2VkVmFyaWFibGVzLmFwcGVu
ZCh2YXJpYWJsZSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgZGlkRmluaXNoUGFyc2luZyhzb3Vy
Y2VFbGVtZW50cywgY29udGV4dC52YXJEZWNsYXJhdGlvbnMoKSwgY29udGV4dC5mdW5jRGVjbGFy
YXRpb25zKCksIGZlYXR1cmVzLAotICAgICAgICBjb250ZXh0Lm51bUNvbnN0YW50cygpLCBjYXB0
dXJlZFZhcmlhYmxlcyk7CisgICAgICAgIGNvbnRleHQubnVtQ29uc3RhbnRzKCksIGNhcHR1cmVk
VmFyaWFibGVzLCBzdGQ6Om1vdmUoY2xvc2VkVmFyaWFibGVzKSk7CiAKICAgICByZXR1cm4gcGFy
c2VFcnJvcjsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHZvaWQgUGFyc2Vy
PExleGVyVHlwZT46OmRpZEZpbmlzaFBhcnNpbmcoU291cmNlRWxlbWVudHMqIHNvdXJjZUVsZW1l
bnRzLCBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrPiogdmFyU3Rh
Y2ssIAotICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFj
az4qIGZ1bmNTdGFjaywgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzLCBJ
ZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcnMpCisgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0
aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiogZnVuY1N0YWNrLCBDb2RlRmVhdHVyZXMgZmVhdHVy
ZXMsIGludCBudW1Db25zdGFudHMsIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFycywgY29uc3Qg
VmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJiBjbG9zZWRWYXJpYWJsZXMpCiB7CiAgICAgbV9z
b3VyY2VFbGVtZW50cyA9IHNvdXJjZUVsZW1lbnRzOwogICAgIG1fdmFyRGVjbGFyYXRpb25zID0g
dmFyU3RhY2s7CiAgICAgbV9mdW5jRGVjbGFyYXRpb25zID0gZnVuY1N0YWNrOwogICAgIG1fY2Fw
dHVyZWRWYXJpYWJsZXMuc3dhcChjYXB0dXJlZFZhcnMpOworICAgIG1fY2xvc2VkVmFyaWFibGVz
ID0gY2xvc2VkVmFyaWFibGVzOwogICAgIG1fZmVhdHVyZXMgPSBmZWF0dXJlczsKICAgICBtX251
bUNvbnN0YW50cyA9IG51bUNvbnN0YW50czsKIH0KQEAgLTIzNDYsNiArMjM2MywxMCBAQCB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPiB2b2lkIFBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVu
ZXhwZWN0ZWRUb2tlblRleHQoVwogICAgIGNhc2UgUkVTRVJWRUQ6CiAgICAgICAgIG91dC5wcmlu
dCgiVW5leHBlY3RlZCB1c2Ugb2YgcmVzZXJ2ZWQgd29yZCAnIiwgZ2V0VG9rZW4oKSwgIiciKTsK
ICAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRP
SzoKKyAgICAgICAgb3V0LnByaW50KCJJbnZhbGlkIHByaXZhdGUgbmFtZSAnIiwgZ2V0VG9rZW4o
KSwgIiciKTsKKyAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAgICAgY2FzZSBJREVOVDoK
ICAgICAgICAgb3V0LnByaW50KCJVbmV4cGVjdGVkIGlkZW50aWZpZXIgJyIsIGdldFRva2VuKCks
ICInIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBiNjk4ZWY5MzY4
Y2I4YzhmMTk3Y2NkMDAwYWNhYTZkZmIxMWJhMjQ0Li45MDMzODUwYzhjOTdmNTdlMjFkYTVlZWRi
MDJkMDQ0ZjRjODk3OGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAg
LTIzLDYgKzIzLDcgQEAKICNpZm5kZWYgUGFyc2VyX2gKICNkZWZpbmUgUGFyc2VyX2gKIAorI2lu
Y2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNs
dWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgpAQCAtMjU5
LDYgKzI2MCwxMCBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICByZXR1cm4gaXNWYWxpZFN0cmlj
dE1vZGUgPyBCaW5kaW5nU3VjY2VlZGVkIDogU3RyaWN0QmluZGluZ0ZhaWxlZDsKICAgICB9CiAK
KyAgICB2b2lkIGdldFVzZWRWYXJpYWJsZXMoSWRlbnRpZmllclNldCYgdXNlZFZhcmlhYmxlcykK
KyAgICB7CisgICAgICAgIHVzZWRWYXJpYWJsZXMuc3dhcChtX3VzZWRWYXJpYWJsZXMpOworICAg
IH0KIAogICAgIHZvaWQgdXNlVmFyaWFibGUoY29uc3QgSWRlbnRpZmllciogaWRlbnQsIGJvb2wg
aXNFdmFsKQogICAgIHsKQEAgLTQxNCw2ICs0MTksNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0
cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYpOwogCiAgICAgSlNUZXh0UG9zaXRpb24g
cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4ZXItPnBvc2l0
aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsgfQorICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5n
SW1wbD4+JiYgY2xvc2VkVmFyaWFibGVzKCkgeyByZXR1cm4gc3RkOjptb3ZlKG1fY2xvc2VkVmFy
aWFibGVzKTsgfQogCiBwcml2YXRlOgogICAgIHN0cnVjdCBBbGxvd0luT3ZlcnJpZGUgewpAQCAt
NTQwLDcgKzU0Niw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIHBhcnNlSW5uZXIoKTsKIAogICAg
IHZvaWQgZGlkRmluaXNoUGFyc2luZyhTb3VyY2VFbGVtZW50cyosIFBhcnNlckFyZW5hRGF0YTxE
ZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+KiwgCi0gICAgICAgIFBhcnNlckFyZW5hRGF0YTxE
ZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qLCBDb2RlRmVhdHVyZXMsIGludCwgSWRl
bnRpZmllclNldCYpOworICAgICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6
OkZ1bmN0aW9uU3RhY2s+KiwgQ29kZUZlYXR1cmVzLCBpbnQsIElkZW50aWZpZXJTZXQmLCBjb25z
dCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmKTsKIAogICAgIC8vIFVzZWQgdG8gZGV0ZXJt
aW5lIHR5cGUgb2YgZXJyb3IgdG8gcmVwb3J0LgogICAgIGJvb2wgaXNGdW5jdGlvbkJvZHlOb2Rl
KFNjb3BlTm9kZSopIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC04NDAsOSArODQ2LDExIEBAIHByaXZh
dGU6CiAgICAgY29uc3QgSWRlbnRpZmllciogbV9sYXN0RnVuY3Rpb25OYW1lOwogICAgIFJlZlB0
cjxTb3VyY2VQcm92aWRlckNhY2hlPiBtX2Z1bmN0aW9uQ2FjaGU7CiAgICAgU291cmNlRWxlbWVu
dHMqIG1fc291cmNlRWxlbWVudHM7CisgICAgYm9vbCBtX3BhcnNpbmdCdWlsdGluOwogICAgIFBh
cnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+KiBtX3ZhckRlY2xhcmF0
aW9uczsKICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3Rh
Y2s+KiBtX2Z1bmNEZWNsYXJhdGlvbnM7CiAgICAgSWRlbnRpZmllclNldCBtX2NhcHR1cmVkVmFy
aWFibGVzOworICAgIFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+IG1fY2xvc2VkVmFyaWFibGVz
OwogICAgIENvZGVGZWF0dXJlcyBtX2ZlYXR1cmVzOwogICAgIGludCBtX251bUNvbnN0YW50czsK
ICAgICAKQEAgLTk1Nyw2ICs5NjUsMTAgQEAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBwYXJzZShW
TSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25QYXJhbWV0ZXIKICAgICAg
ICAgUmVmUHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihl
cnJvcik7CiAgICAgICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAgICAg
ICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZSgpOworICAgICAgICBpZiAoc3RyaWN0bmVzcyA9PSBKU1BhcnNlQnVpbHRpbikgewor
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKKyAgICAgICAgICAgIHJlc3VsdC0+
c2V0Q2xvc2VkVmFyaWFibGVzKHN0ZDo6bW92ZShwYXJzZXIuY2xvc2VkVmFyaWFibGVzKCkpKTsK
KyAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKICAgICB9CiAgICAg
UGFyc2VyPExleGVyPFVDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIHBhcmFtZXRlcnMsIG5hbWUs
IHN0cmljdG5lc3MsIHBhcnNlck1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJNb2Rlcy5oCmluZGV4IDRlOWExN2NkMjFjYTM0MTQ2YmJkNDgxNTZhMzcyY2Q0MDRkZWY2
MGMuLmY3YTc1YmY3YzM3ODU3ZTQ0YjZkNWQ3MWY0NTI5YmIxYWMxY2Y1ZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKQEAgLTI5LDcgKzI5LDcgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gSlNQYXJzZXJTdHJpY3RuZXNzIHsgSlNQYXJzZU5vcm1h
bCwgSlNQYXJzZVN0cmljdCB9OworZW51bSBKU1BhcnNlclN0cmljdG5lc3MgeyBKU1BhcnNlTm9y
bWFsLCBKU1BhcnNlQnVpbHRpbiwgSlNQYXJzZVN0cmljdCB9OwogZW51bSBKU1BhcnNlck1vZGUg
eyBKU1BhcnNlUHJvZ3JhbUNvZGUsIEpTUGFyc2VGdW5jdGlvbkNvZGUgfTsKIAogZW51bSBQcm9m
aWxlck1vZGUgeyBQcm9maWxlck9mZiwgUHJvZmlsZXJPbiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXggODJhMjY2MzlhNzkyMjBhMDg0NDU2YjQ4
ZjMyODUyZDE0M2M3MzlkMC4uOGM4N2FkOWZhZGJkYzRhZjM5YWM5OWRiMmQ4NDQ1ZTEzZmZmZDM1
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCkBAIC0x
NDksNiArMTQ5LDcgQEAgZW51bSBKU1Rva2VuVHlwZSB7CiAgICAgSU5WQUxJRF9OVU1FUklDX0xJ
VEVSQUxfRVJST1JUT0sgPSA3IHwgRXJyb3JUb2tlbkZsYWcsCiAgICAgVU5URVJNSU5BVEVEX1NU
UklOR19MSVRFUkFMX0VSUk9SVE9LID0gOCB8IEVycm9yVG9rZW5GbGFnIHwgVW50ZXJtaW5hdGVk
RXJyb3JUb2tlbkZsYWcsCiAgICAgSU5WQUxJRF9TVFJJTkdfTElURVJBTF9FUlJPUlRPSyA9IDkg
fCBFcnJvclRva2VuRmxhZywKKyAgICBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSyA9IDEw
IHwgRXJyb3JUb2tlbkZsYWcKIH07CiAKIHN0cnVjdCBKU1RleHRQb3NpdGlvbiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCmluZGV4IDE4ZjM4OTE3MTM4NTIzNjJj
N2E3NWEzMDUzYjQ2MzE0MTdiZWI4MWIuLmYxNmZkM2RlNDA1NTk3MGJhOWQ5YzZmMGFlNjMxOGYy
MjA0YjY1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3Vt
ZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCkBA
IC0yNSw2ICsyNSw3IEBACiAjZGVmaW5lIEFyZ3VtZW50c19oCiAKICNpbmNsdWRlICJDb2RlT3Jp
Z2luLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJKU0FjdGl2
YXRpb24uaCIKICNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgogI2luY2x1ZGUgIkpT
RnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
Z3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcAppbmRleCBkZDA4OTRmMTRhMDIxZDVm
MTI2NThhY2IwMWU3MjFmY2Q2ZDM0OGNjLi41YjRhZTg3MTZiMDU1M2JlNDYyMzk1NWU5OWUxYjQz
ZWJmMThmZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1
bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCkBAIC0yNiw3ICsyNiw5IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUu
aCIKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiSlNBcmd1bWVu
dHNJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5jcHAKaW5kZXggMjdhYzZkNDhhNzFmNzk1NTAyYTEwY2VhNjQ3ODY1NDEzNWE0NjNhMC4u
NmRjN2JlNTY5NjlkZTY3ZjYyMTA3YmIzYTUxYTMwOGZhM2JhNzZiZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTQXJyYXlJdGVyYXRvci5oIgogI2lu
Y2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTU3RyaW5nSm9pbmVyLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVk
ZSAiT2JqZWN0UHJvdG90eXBlLmgiCkBAIC01Niw3ICs1Nyw2IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKik7CiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NvcnQoRXhlY1N0
YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y1NwbGljZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5UHJvdG9GdW5jVW5TaGlmdChFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRXZlcnkoRXhlY1N0YXRlKik7CiBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0ZvckVhY2goRXhlY1N0
YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y1NvbWUoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvRnVuY0luZGV4T2YoRXhlY1N0YXRlKik7CkBAIC05NTQsNjkgKzk1NCw2IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNNYXAoRXhlY1N0YXRlKiBl
eGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0QXJyYXkpOwogfQogCi0vLyBE
b2N1bWVudGF0aW9uIGZvciB0aGVzZSB0aHJlZSBpcyBhdmFpbGFibGUgYXQ6Ci0vLyBodHRwOi8v
ZGV2ZWxvcGVyLXRlc3QubW96aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0phdmFTY3JpcHRfMS41X1Jl
ZmVyZW5jZTpPYmplY3RzOkFycmF5OmV2ZXJ5Ci0vLyBodHRwOi8vZGV2ZWxvcGVyLXRlc3QubW96
aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0phdmFTY3JpcHRfMS41X1JlZmVyZW5jZTpPYmplY3RzOkFy
cmF5OmZvckVhY2gKLS8vIGh0dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3ppbGxhLm9yZy9lbi9kb2Nz
L0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6QXJyYXk6c29tZQotCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRXZlcnkoRXhlY1N0YXRlKiBl
eGVjKQotewotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpLnRv
VGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKLSAgICB1bnNpZ25lZCBsZW5n
dGggPSB0aGlzT2JqLT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkudG9V
SW50MzIoZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCi0gICAgSlNWYWx1ZSBmdW5jdGlv
biA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxU
eXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBpZiAo
Y2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjKTsKLQotICAgIEpTVmFsdWUgYXBwbHlUaGlzID0gZXhlYy0+YXJndW1lbnQoMSk7Ci0K
LSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbih0cnVlKTsKLQotICAgIHVuc2lnbmVkIGsg
PSAwOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUpTICYmIGlzSlNBcnJheSh0aGlzT2Jq
KSkgewotICAgICAgICBKU0Z1bmN0aW9uKiBmID0ganNDYXN0PEpTRnVuY3Rpb24qPihmdW5jdGlv
bik7Ci0gICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh0aGlzT2JqKTsKLSAgICAgICAg
Q2FjaGVkQ2FsbCBjYWNoZWRDYWxsKGV4ZWMsIGYsIDMpOwotICAgICAgICBmb3IgKDsgayA8IGxl
bmd0aCAmJiAhZXhlYy0+aGFkRXhjZXB0aW9uKCk7ICsraykgewotICAgICAgICAgICAgaWYgKFVO
TElLRUxZKCFhcnJheS0+Y2FuR2V0SW5kZXhRdWlja2x5KGspKSkKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRUaGlzKGFwcGx5
VGhpcyk7Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDAsIGFycmF5LT5nZXRJ
bmRleFF1aWNrbHkoaykpOwotICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudCgxLCBq
c051bWJlcihrKSk7Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDIsIHRoaXNP
YmopOwotICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWNoZWRDYWxsLmNhbGwoKTsKLSAg
ICAgICAgICAgIGlmICghcmVzdWx0LnRvQm9vbGVhbihleGVjKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwotICAgICAgICB9Ci0gICAg
fQotICAgIGZvciAoOyBrIDwgbGVuZ3RoICYmICFleGVjLT5oYWRFeGNlcHRpb24oKTsgKytrKSB7
Ci0gICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmopOwotICAgICAgICBpZiAoIXRoaXNP
YmotPmdldFByb3BlcnR5U2xvdChleGVjLCBrLCBzbG90KSkKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotCi0gICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGVhY2hBcmd1bWVudHM7Ci0gICAgICAg
IGVhY2hBcmd1bWVudHMuYXBwZW5kKHNsb3QuZ2V0VmFsdWUoZXhlYywgaykpOwotICAgICAgICBl
YWNoQXJndW1lbnRzLmFwcGVuZChqc051bWJlcihrKSk7Ci0gICAgICAgIGVhY2hBcmd1bWVudHMu
YXBwZW5kKHRoaXNPYmopOwotCi0gICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KLSAgICAg
ICAgYm9vbCBwcmVkaWNhdGVSZXN1bHQgPSBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwg
Y2FsbERhdGEsIGFwcGx5VGhpcywgZWFjaEFyZ3VtZW50cykudG9Cb29sZWFuKGV4ZWMpOwotICAg
ICAgICBpZiAoIXByZWRpY2F0ZVJlc3VsdCkgewotICAgICAgICAgICAgcmVzdWx0ID0ganNCb29s
ZWFuKGZhbHNlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotfQotCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRm9yRWFjaChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAg
SlNPYmplY3QqIHRoaXNPYmogPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0
cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvZGVDYWNoZS5jcHAKaW5kZXggNTEwZTM4M2ZhZTU3NWFhZGE4MTc2YzA0NDFlZTcyNWI0M2E0
YzczMi4uZDMwNDg3N2ZlOWNkZTFjMDkxOWZkNDU5NWY4MTFlY2FiY2U3NzI3NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC0xNDQsMjQgKzE0NCwy
NiBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4
ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShWTSYgdgogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9u
QmVmb3JlTGFzdE5ld2xpbmU7CiAgICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtID0gcGFy
c2U8UHJvZ3JhbU5vZGU+KCZ2bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIEpTUGFyc2VOb3Jt
YWwsIEpTUGFyc2VQcm9ncmFtQ29kZSwgZXJyb3IsICZwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5l
KTsKICAgICBpZiAoIXByb2dyYW0pIHsKLSAgICAgICAgQVNTRVJUKGVycm9yLm1fdHlwZSAhPSBQ
YXJzZXJFcnJvcjo6RXJyb3JOb25lKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXJyb3IubV90
eXBlICE9IFBhcnNlckVycm9yOjpFcnJvck5vbmUpOwogICAgICAgICBtX3NvdXJjZUNvZGUucmVt
b3ZlKGFkZFJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAogICAg
IC8vIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBhbiBpbnB1dCBzdHJpbmcgdGhhdCB3b3VsZCByZXN1
bHQgaW4gYSBzaW5nbGUgYW5vbnltb3VzIGZ1bmN0aW9uIGV4cHJlc3Npb24uCiAgICAgU3RhdGVt
ZW50Tm9kZSogZXhwclN0YXRlbWVudCA9IHByb2dyYW0tPnNpbmdsZVN0YXRlbWVudCgpOwotICAg
IEFTU0VSVChleHByU3RhdGVtZW50KTsKLSAgICBBU1NFUlQoZXhwclN0YXRlbWVudC0+aXNFeHBy
U3RhdGVtZW50KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQpOworICAgIFJF
TEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKICAgICBFeHBy
ZXNzaW9uTm9kZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVtZW50Tm9kZSo+KGV4
cHJTdGF0ZW1lbnQpLT5leHByKCk7Ci0gICAgQVNTRVJUKGZ1bmNFeHByKTsKKyAgICBSRUxFQVNF
X0FTU0VSVChmdW5jRXhwcik7CiAgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHItPmlzRnVuY0V4
cHJOb2RlKCkpOwogICAgIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkgPSBzdGF0aWNfY2FzdDxGdW5j
RXhwck5vZGUqPihmdW5jRXhwciktPmJvZHkoKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghcHJvZ3Jh
bS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CisgICAgCiAgICAgYm9keS0+c2V0RW5kUG9zaXRp
b24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7Ci0gICAgQVNTRVJUKGJvZHkpOwotICAgIEFT
U0VSVChib2R5LT5pZGVudCgpLmlzTnVsbCgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5KTsK
KyAgICBSRUxFQVNFX0FTU0VSVChib2R5LT5pZGVudCgpLmlzTnVsbCgpKTsKIAotICAgIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBib2R5LCB0cnVlKTsKKyAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgYm9keSwgdHJ1ZSwgVW5saW5rZWRO
b3JtYWxGdW5jdGlvbik7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5tX25hbWVWYWx1ZS5zZXQo
dm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwganNTdHJpbmcoJnZtLCBuYW1lLnN0cmluZygpKSk7CiAK
ICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gU291cmNlQ29kZVZhbHVlKHZtLCBmdW5j
dGlvbkV4ZWN1dGFibGUsIG1fc291cmNlQ29kZS5hZ2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKaW5kZXggM2Y1YzY0NWMw
OThkNTI3ZmMwYzcyNTllOTQ0N2VmYmU4ODY4YTI5Yy4uMmZjMmI3MjdhZmNlZWUxZWMyYzYyNWRl
NTY3NWIzYmUxY2Y2MGQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcApAQCAtMjcsNyArMjcsMTAgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICNkZWZpbmUgSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKG5hbWUpICwgbmFtZSh2bSwg
I25hbWUpCiAjZGVmaW5lIElOSVRJQUxJWkVfS0VZV09SRChuYW1lKSAsIG5hbWUjI0tleXdvcmQo
dm0sICNuYW1lKQotI2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFNRShuYW1lKSAsIG5hbWUj
I1ByaXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb20oUHJpdmF0ZU5hbWUoKSkpCisjZGVmaW5lIElO
SVRJQUxJWkVfUFJJVkFURV9OQU1FKG5hbWUpIFwKKyAgICAsIG5hbWUjI1ByaXZhdGVOYW1lKElk
ZW50aWZpZXI6OmZyb20oUHJpdmF0ZU5hbWUoKSkpIFwKKyAgICAsIG1fIyNuYW1lIyNQdWJsaWNT
dHJpbmdQYWlyKG5hbWUsIG5hbWUjI1ByaXZhdGVOYW1lKSBcCisKIAogQ29tbW9uSWRlbnRpZmll
cnM6OkNvbW1vbklkZW50aWZpZXJzKFZNKiB2bSkKICAgICA6IG51bGxJZGVudGlmaWVyKCkKQEAg
LTM4LDggKzQxLDI2IEBAIENvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyhWTSog
dm0pCiAgICAgLCBoYXNOZXh0SWRlbnRpZmllcih2bSwgImhhc05leHQiKQogICAgIEpTQ19DT01N
T05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKElOSVRJQUxJWkVfS0VZV09SRCkKICAgICBKU0Nf
Q09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpFX1BST1BFUlRZ
X05BTUUpCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJWkVf
UFJPUEVSVFlfTkFNRSkKICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9Q
Uk9QRVJUWV9OQU1FKElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKQogewogfQogCitjb25zdCBJZGVu
dGlmaWVyKiBDb21tb25JZGVudGlmaWVyczo6Z2V0UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQpIGNvbnN0Cit7CisjZGVmaW5lIFJFVFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hF
UyhuYW1lKSBpZiAobV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuZmlyc3QgPT0gaWRlbnQpIHJl
dHVybiAmbV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuc2Vjb25kOworICAgIEpTQ19DT01NT05f
UFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoUkVUVVJOX0lGX1BSSVZBVEVf
TkFNRV9NQVRDSEVTKQorI3VuZGVmIFJFVFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hFUworICAg
IHJldHVybiAwOworfQorCitJZGVudGlmaWVyIENvbW1vbklkZW50aWZpZXJzOjpnZXRQdWJsaWNO
YW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAoreworI2RlZmluZSBSRVRVUk5fSUZf
UFJJVkFURV9OQU1FX01BVENIRVMobmFtZSkgaWYgKG1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQYWly
LnNlY29uZCA9PSBpZGVudCkgcmV0dXJuIG1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQYWlyLmZpcnN0
OworICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUo
UkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKQorI3VuZGVmIFJFVFVSTl9JRl9QUklWQVRF
X05BTUVfTUFUQ0hFUworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIGVtcHR5SWRlbnRpZmllcjsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCBlOGY5
ZWQ4MmJjNzk0NjIwMzgyNjZiMzAyMDc4MjI0N2IxZmEyN2EzLi45MjRkMzZhYzY5MTM1MDM1N2Ni
MzgyYjFlZjNiNDBhMGEwOGMwYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTIyLDYgKzIyLDcgQEAKICNkZWZpbmUgQ29t
bW9uSWRlbnRpZmllcnNfaAogCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIkpT
Q0J1aWx0aW5zLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIC8vIE1hcmtlZEFy
Z3VtZW50QnVmZmVyIG9mIHByb3BlcnR5IG5hbWVzLCBwYXNzZWQgdG8gYSBtYWNybyBzbyB3ZSBj
YW4gZG8gc2V0IHRoZW0gdXAgdmFyaW91cwpAQCAtMTMzLDggKzEzNCwxMCBAQAogICAgIG1hY3Jv
KG9zckV4aXRzKSBcCiAgICAgbWFjcm8ocGFyc2UpIFwKICAgICBtYWNybyhwcm9maWxlZEJ5dGVj
b2RlcykgXAorICAgIG1hY3JvKHByb21pc2UpIFwKICAgICBtYWNybyhwcm9wZXJ0eUlzRW51bWVy
YWJsZSkgXAogICAgIG1hY3JvKHByb3RvdHlwZSkgXAorICAgIG1hY3JvKHJlc29sdmUpIFwKICAg
ICBtYWNybyhzZXQpIFwKICAgICBtYWNybyhzaXplKSBcCiAgICAgbWFjcm8oc2xpY2UpIFwKQEAg
LTE1NSw3ICsxNTgsMTQgQEAKICAgICBtYWNybyh2YWx1ZXMpIFwKICAgICBtYWNybyh2YWx1ZU9m
KSBcCiAgICAgbWFjcm8od2luZG93KSBcCi0gICAgbWFjcm8od3JpdGFibGUpCisgICAgbWFjcm8o
d3JpdGFibGUpIFwKKyAgICBtYWNybyhpdGVyYXRvcikgXAorICAgIG1hY3JvKGl0ZXJhdG9yTmV4
dCkgXAorICAgIG1hY3JvKHJlamVjdCkgXAorICAgIG1hY3JvKGZ1bGZpbGxtZW50SGFuZGxlcikg
XAorICAgIG1hY3JvKHJlamVjdGlvbkhhbmRsZXIpIFwKKyAgICBtYWNybyhkZWZlcnJlZCkgXAor
ICAgIG1hY3JvKGNvdW50ZG93bkhvbGRlcikgXAogCiAjZGVmaW5lIEpTQ19DT01NT05fSURFTlRJ
RklFUlNfRUFDSF9LRVlXT1JEKG1hY3JvKSBcCiAgICAgbWFjcm8oYnJlYWspIFwKQEAgLTIwMyw3
ICsyMTMsNyBAQAogICAgIG1hY3JvKHZvaWQpIFwKICAgICBtYWNybyh3aGlsZSkgXAogICAgIG1h
Y3JvKHdpdGgpIFwKLSAgICBtYWNybyh5aWVsZCkKKyAgICBtYWNybyh5aWVsZCkgXAogCiAjZGVm
aW5lIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUobWFj
cm8pIFwKICAgICBtYWNybyhpdGVyYXRvcikgXApAQCAtMjE2LDcgKzIyNiwxMiBAQAogICAgIG1h
Y3JvKGluZGV4KSBcCiAgICAgbWFjcm8odmFsdWVzKSBcCiAgICAgbWFjcm8oZGVmZXJyZWQpIFwK
LSAgICBtYWNybyhjb3VudGRvd25Ib2xkZXIpCisgICAgbWFjcm8oY291bnRkb3duSG9sZGVyKSBc
CisgICAgbWFjcm8oT2JqZWN0KSBcCisgICAgbWFjcm8oVHlwZUVycm9yKSBcCisgICAgbWFjcm8o
dW5kZWZpbmVkS2V5d29yZCkgXAorICAgIG1hY3JvKGNhbGwpIFwKKyAgICBtYWNybyhhcHBseSkK
IAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTI0MCwxMSArMjU1LDE1IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAKICNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJUWV9OQU1F
X0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWU7CiAgICAgICAgIEpTQ19DT01NT05f
SURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJP
UEVSVFlfTkFNRV9HTE9CQUwpCisgICAgICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05f
TkFNRShKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFMKQogI3VuZGVm
IEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwKIAotI2RlZmluZSBK
U0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwobmFtZSkg
Y29uc3QgSWRlbnRpZmllciBuYW1lIyNQcml2YXRlTmFtZTsKKyNkZWZpbmUgSlNDX0lERU5USUZJ
RVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMKG5hbWUpIGNvbnN0IElkZW50
aWZpZXIgbmFtZSMjUHJpdmF0ZU5hbWU7IGNvbnN0IHN0ZDo6cGFpcjxJZGVudGlmaWVyLCBJZGVu
dGlmaWVyPiBtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpcjsKICAgICAgICAgSlNDX0NPTU1PTl9Q
UklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShKU0NfSURFTlRJRklFUl9ERUNM
QVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwpCiAjdW5kZWYgSlNDX0lERU5USUZJRVJf
REVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMCisgICAgICAgIAorICAgICAgICBj
b25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7
CisgICAgICAgIElkZW50aWZpZXIgZ2V0UHVibGljTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29u
c3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCAwNzU4NzVmYjIzMTZhNTU1
NzA1MGE2NjkwY2QwZjk4ODI0ODRmNWYzLi41YWY5MDg3NTRlNzQ3ZjhjYWUwY2QwNGFmOGQ0OTE1
MDA0NjhjMmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNs
dWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgotI2luY2x1ZGUgIkpT
Q0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNs
dWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwCmluZGV4
IDU1MzM0YmUyZjk4MGE5OGY3ZmVhNDJhMDViZTBmMjBjMDE5ZmYwZGQuLmZhNTdjMDI2ODVlNTNk
NTI1Mjg4MDU3ZTIxMWQ5OGIxMDk4MWQ3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwCkBAIC0y
OSw2ICsyOSw4IEBACiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2Nr
LmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxp
bmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJMTEludENv
bW1vbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIENvbW1vblNsb3dQYXRocyB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3Bw
CmluZGV4IDA1ZTExZTBiODBhMzQzMGFlYWIyMmIwMjIyYTIxMmY0YThlMmM0OWIuLjM2NGNjNzE2
NjYwOGI1MDA3ZDQ3N2Q4NzM5MThhNWQ2NGIxNjg2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC04MSw2ICs4MSwxMSBA
QCBKU09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCiAKIEpTT2JqZWN0KiBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7CisgICAgCisgICAgaWYgKGlk
ZW50LmltcGwoKS0+aXNFbXB0eVVuaXF1ZSgpKSB7CisgICAgICAgIFN0cmluZyBtZXNzYWdlKG1h
a2VTdHJpbmcoIkNhbid0IGZpbmQgcHJpdmF0ZSB2YXJpYWJsZTogQCIsIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5nZXRQdWJsaWNOYW1lKGlkZW50KS5zdHJpbmcoKSkpOworICAgICAgICByZXR1cm4g
Y3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgbWVzc2FnZSk7CisgICAgfQogICAgIFN0cmluZyBt
ZXNzYWdlKG1ha2VTdHJpbmcoIkNhbid0IGZpbmQgdmFyaWFibGU6ICIsIGlkZW50LnN0cmluZygp
KSk7CiAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIG1lc3NhZ2UpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IDE5ODk3NmJi
M2ZlNmU2ZTkxMTc5ODEyZDFjYWY5YjhiZjliZmQwYmIuLjhkNTkwZWYwZmZjMGViOTBhYzhmOWE4
MWQ5YmMyNTcyMWNkMzVjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmgKQEAgLTQ4NCw3ICs0ODQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyQ29k
ZSgpOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVy
biBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RN
b2RlKCksIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29u
c3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCks
IGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UpOyB9CiAKICAgICB1bnNpZ25lZCBudW1WYXJp
YWJsZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7
IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3VubGlu
a2VkRXZhbENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KQEAgLTU0MCw3ICs1
NDAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyQ29kZSgpOwogCi0gICAgRXhlY3V0YWJs
ZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVk
c0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlKTsgfQorICAg
IEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJs
ZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxz
ZSwgZmFsc2UpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFi
bGU7CkBAIC02MjgsNyArNjI4LDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGJh
c2VsaW5lQ29kZUJsb2NrRm9yKGtpbmQpOwogICAgIH0KLSAgICAgICAgCisKKyAgICBib29sIGlz
QnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlz
QnVpbHRpbkZ1bmN0aW9uKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lKCkgeyByZXR1
cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWUoKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXIm
IGluZmVycmVkTmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pbmZlcnJlZE5h
bWUoKTsgfQogICAgIEpTU3RyaW5nKiBuYW1lVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3VubGlu
a2VkRXhlY3V0YWJsZS0+bmFtZVZhbHVlKCk7IH0KQEAgLTY3NSwxNCArNjc2LDYgQEAgcHJpdmF0
ZToKICAgICBib29sIG1fYm9keUluY2x1ZGVzQnJhY2VzOwogfTsKIAotaW5saW5lIGJvb2wgaXNI
b3N0RnVuY3Rpb24oSlNWYWx1ZSB2YWx1ZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24p
Ci17Ci0gICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGdldEpT
RnVuY3Rpb24odmFsdWUpKTsKLSAgICBpZiAoIWZ1bmN0aW9uIHx8ICFmdW5jdGlvbi0+aXNIb3N0
RnVuY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBmdW5jdGlvbi0+
bmF0aXZlRnVuY3Rpb24oKSA9PSBuYXRpdmVGdW5jdGlvbjsKLX0KLQogaW5saW5lIHZvaWQgRXhl
Y3V0YWJsZUJhc2U6OmNsZWFyQ29kZVZpcnR1YWwoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUp
CiB7CiAgICAgc3dpdGNoIChleGVjdXRhYmxlLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBl
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJv
dG90eXBlLmNwcAppbmRleCBjMWIwOGFmMmQ4MThkYWU1N2UxYjAwZmRhMTczYTgxNjEzNzUyOWI1
Li4xMjQ5MGM0MGYzMzQxN2VjYTkyMzg1MGEwZGM2NjJkYmJjZDQwZjMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC0y
MiwxMiArMjIsMTMgQEAKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgogCiAjaW5jbHVk
ZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0Fy
cmF5LmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdCdWlsZGVyLmgi
Ci0jaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIK
ICNpbmNsdWRlICJMZXhlci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIApAQCAtMTA4LDcg
KzEwOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNU
b1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5o
b3N0VGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0cyhKU0Z1bmN0aW9uOjpp
bmZvKCkpKSB7CiAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rp
b24qPih0aGlzVmFsdWUpOwotICAgICAgICBpZiAoZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkp
CisgICAgICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVj
LCAiZnVuY3Rpb24gIiwgZnVuY3Rpb24tPm5hbWUoZXhlYyksICIoKSB7XG4gICAgW25hdGl2ZSBj
b2RlXVxufSIpKTsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gZnVu
Y3Rpb24tPmpzRXhlY3V0YWJsZSgpOwogICAgICAgICBTdHJpbmcgc291cmNlU3RyaW5nID0gZXhl
Y3V0YWJsZS0+c291cmNlKCkudG9TdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FjdGl2YXRpb24uY3BwCmluZGV4IDcyZWQxYzcxMjQwNjExNjhiMGFkZGQzMTE2
Zjc1NWExMTdiOGZiOTAuLmIzNzQ5NDMwOTllMjE1NWEzOTc3MTMzMTM0NzAyYzJhMjRhY2M4NmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcApA
QCAtNTgsNyArNTgsNyBAQCB2b2lkIEpTQWN0aXZhdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogCiBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246
OnN5bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5s
aW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlRW50cnkg
ZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnVpZCgpKTsKICAg
ICBpZiAoZW50cnkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzIsNyAr
NzIsNyBAQCBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlR2V0KFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdAogCiBpbmxpbmUgYm9vbCBKU0FjdGl2YXRp
b246OnN5bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikKIHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3lt
Ym9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5
bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlO
YW1lLnVpZCgpKTsKICAgICBpZiAoZW50cnkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApAQCAtODksNyArODksNyBAQCBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRh
YmxlUHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TgogICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpo
ZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMpKTsKICAgICAKLSAgICBTeW1ib2xUYWJsZUVu
dHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNO
YW1lKCkpOworICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxp
bmVHZXQocHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoZW50cnkuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoZW50cnkuaXNSZWFkT25seSgpKSB7CkBAIC0xMzYs
NyArMTM2LDcgQEAgaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhB
dHRyaWJ1dGVzKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3AKICAgICBXcml0ZUJhcnJpZXJCYXNl
PFVua25vd24+KiByZWc7CiAgICAgewogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tl
cihzeW1ib2xUYWJsZSgpLT5tX2xvY2spOwotICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVy
YXRvciBpdGVyID0gc3ltYm9sVGFibGUoKS0+ZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJs
aWNOYW1lKCkpOworICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3lt
Ym9sVGFibGUoKS0+ZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgICAgIGlm
IChpdGVyID09IHN5bWJvbFRhYmxlKCktPmVuZChsb2NrZXIpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5JiBlbnRyeSA9IGl0ZXItPnZhbHVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVy
YXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJh
dG9yLmNwcAppbmRleCAyZmNmODgxNWMwNTY4MDU4MTJhNzk5MWE1ZmYwNjNkNjg3Mzk3MTY0Li45
YTkyNTgzYWEwZWM5MGRiYjMyOGVjZDUwZGMzMTM5YWVmMDI3M2I1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcApAQCAt
MjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkpTQXJndW1lbnRzSXRlcmF0b3IuaCIKIAogI2luY2x1
ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAKIG5hbWVz
cGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCmlu
ZGV4IDkwMDdiNWY3ZDNmMTAzYjFkMjFiMWEzNjVhMjZjMjE1YzMyYjRkMjguLmJhMGEyZDM4ZTlj
NTNlMTU5MzdkNDZhODk1MWE4YzhjNDUwNzkyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRXhlY3V0YWJs
ZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkluZGV4aW5nSGVhZGVy
SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIlByb3Bl
cnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSAiUmVqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL0FWTFRy
ZWUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJ
dGVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0
b3IuY3BwCmluZGV4IGQ1MDZjNGViZDI2MjBlZmQ3MDc5M2E4NzNkMDg1MmZiZDk3ODI4NTkuLmNm
MzcwOTdlYzBjNjkyNWE4NjdiOGMwMTBjMGVmYzQwNzQ0ODVmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcApAQCAtMjgsNiArMjgs
NyBAQAogCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGxJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU2xvdFZp
c2l0b3JJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAppbmRleCBjY2E2ODg4YmY5OGEwMjg2NDZjYTNkZGRm
Mzc2MjdjZTBlN2Q5MzAyLi4zMzlhN2FiN2Y1OTUxNWU5NmFmYjdlYzRiODc0MWU3YWE4ZTE2NmY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApAQCAt
MzIsNyArMzIsOSBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTm90QW5PYmplY3QuaCIKKyNpbmNsdWRlICJKU1N0cmlu
Z0lubGluZXMuaCIKICNpbmNsdWRlICJOdW1iZXJPYmplY3QuaCIKKyNpbmNsdWRlICJPcGVyYXRp
b25zLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5n
RXh0cmFzLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGlu
ZXMuaAppbmRleCBmN2M4NDQ2NDUwOTJiMjUwODA1ZTZlOGQ0ODMyYzk5OGJkYjg5YjU0Li5kNzk1
ZGQ1NmE5N2RkYjU5N2MwOTBmYzJlMGI3ZjMwOGUzM2ViY2E1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCkBAIC0yNyw4ICsyNywxMCBAQAogI2Rl
ZmluZSBKU0NlbGxJbmxpbmVzX2gKIAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUg
IkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRGVmZXJHQy5oIgogI2luY2x1ZGUgIkhh
bmRsZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxs
LmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCAyNDE5NjQ2MTBi
YjQ0MjdiMTg2MzczMzQ2ZTI0ZjVhODJkMGNkY2M0Li5hY2U2YzE0N2U0OTdmZWUyMDI5MmZiNTUz
OTc2MGQ1ZDY5ODI5Y2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcApAQCAtMzQsNyArMzQsOCBAQAogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBl
LmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgotI2lu
Y2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIiAKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIK
KyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0
LmgiCiAjaW5jbHVkZSAiSlNOb3RBbk9iamVjdC5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgi
CkBAIC0xMDksNiArMTEwLDE0IEBAIHZvaWQgSlNGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBpbnQgbGVuZ3RoCiAgICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCksIERvbnRE
ZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KIAorSlNGdW5jdGlvbiogSlNGdW5jdGlv
bjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVj
dXRhYmxlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIEpTRnVuY3Rpb24q
IGZ1bmN0aW9uID0gY3JlYXRlKHZtLCBleGVjdXRhYmxlLCBnbG9iYWxPYmplY3QpOworICAgIGZ1
bmN0aW9uLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKCZ2
bSwgZXhlY3V0YWJsZS0+bmFtZSgpLnN0cmluZygpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwg
RG9udEVudW0pOworICAgIGZ1bmN0aW9uLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoZXhlY3V0YWJsZS0+cGFyYW1ldGVyQ291bnQoKSksIERvbnREZWxl
dGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICByZXR1cm4gZnVuY3Rpb247Cit9CisKIE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlKiBKU0Z1bmN0aW9uOjpjcmVhdGVBbGxvY2F0aW9uUHJvZmls
ZShFeGVjU3RhdGUqIGV4ZWMsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSkKIHsKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwpAQCAtMTQyLDcgKzE1MSw3IEBAIGNvbnN0IFN0cmluZyBKU0Z1bmN0aW9u
OjpjYWxjdWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4g
ZXhwbGljaXROYW1lOwogICAgIAogICAgIGNvbnN0IFN0cmluZyBhY3R1YWxOYW1lID0gbmFtZShl
eGVjKTsKLSAgICBpZiAoIWFjdHVhbE5hbWUuaXNFbXB0eSgpIHx8IGlzSG9zdEZ1bmN0aW9uKCkp
CisgICAgaWYgKCFhY3R1YWxOYW1lLmlzRW1wdHkoKSB8fCBpc0hvc3RPckJ1aWx0aW5GdW5jdGlv
bigpKQogICAgICAgICByZXR1cm4gYWN0dWFsTmFtZTsKICAgICAKICAgICByZXR1cm4ganNFeGVj
dXRhYmxlKCktPmluZmVycmVkTmFtZSgpLnN0cmluZygpOwpAQCAtMTUwLDEwICsxNTksMjAgQEAg
Y29uc3QgU3RyaW5nIEpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUq
IGV4ZWMpCiAKIGNvbnN0IFNvdXJjZUNvZGUqIEpTRnVuY3Rpb246OnNvdXJjZUNvZGUoKSBjb25z
dAogewotICAgIGlmIChpc0hvc3RGdW5jdGlvbigpKQorICAgIGlmIChpc0hvc3RPckJ1aWx0aW5G
dW5jdGlvbigpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gJmpzRXhlY3V0YWJsZSgp
LT5zb3VyY2UoKTsKIH0KKyAgICAKK2Jvb2wgSlNGdW5jdGlvbjo6aXNIb3N0T3JCdWlsdGluRnVu
Y3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBpc0hvc3RGdW5jdGlvbigpIHx8IGlzQnVpbHRp
bkZ1bmN0aW9uKCk7Cit9CisKK2Jvb2wgSlNGdW5jdGlvbjo6aXNCdWlsdGluRnVuY3Rpb24oKSBj
b25zdAoreworICAgIHJldHVybiAhaXNIb3N0RnVuY3Rpb24oKSAmJiBqc0V4ZWN1dGFibGUoKS0+
aXNCdWlsdGluRnVuY3Rpb24oKTsKK30KIAogdm9pZCBKU0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CkBAIC0yNzcsNyArMjk2LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUgc2xvdEJhc2UKICAgICBpZiAoIWNhbGxlci5pc09iamVjdCgpIHx8
ICFhc09iamVjdChjYWxsZXIpLT5pbmhlcml0cyhKU0Z1bmN0aW9uOjppbmZvKCkpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxlcik7CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rp
b24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxlcik7Ci0gICAgaWYgKGZ1bmN0aW9uLT5pc0hv
c3RGdW5jdGlvbigpIHx8ICFmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgp
KQorICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSB8fCAhZnVuY3Rp
b24tPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShjYWxsZXIpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJGdW5jdGlvbi5jYWxsZXIgdXNlZCB0byByZXRyaWV2
ZSBzdHJpY3QgY2FsbGVyIikpKTsKIH0KQEAgLTI5OSw3ICszMTgsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0Z1bmN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIHNsb3RC
YXNlLCBFbmNvZAogYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U0Z1bmN0aW9uKj4ob2JqZWN0KTsKLSAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24o
KSkKKyAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAg
ICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkucHJvdG90eXBlKSB7CkBAIC0zNjEsNyArMzgwLDcgQEAgYm9vbCBKU0Z1bmN0aW9u
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU4KIHZvaWQgSlNGdW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3Bl
cnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdCk7Ci0gICAgaWYgKCF0aGlzT2JqZWN0
LT5pc0hvc3RGdW5jdGlvbigpICYmIChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMp
KSB7CisgICAgaWYgKCF0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpICYmICht
b2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKSB7CiAgICAgICAgIC8vIE1ha2Ugc3Vy
ZSBwcm90b3R5cGUgaGFzIGJlZW4gcmVpZmllZC4KICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qo
dGhpc09iamVjdCk7CiAgICAgICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blBy
b3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90
eXBlLCBzbG90KTsKQEAgLTM3Nyw3ICszOTYsNyBAQCB2b2lkIEpTRnVuY3Rpb246OmdldE93bk5v
bkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsCiB2
b2lkIEpTRnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNl
bGwpOwotICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RGdW5jdGlvbigpKSB7CisgICAgaWYgKHRo
aXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpIHsKICAgICAgICAgQmFzZTo6cHV0
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtNDI1LDcgKzQ0NCw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
CiBib29sIEpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQogewogICAgIEpTRnVu
Y3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdCk7Ci0gICAgaWYg
KHRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgaWYgKHRoaXNPYmplY3QtPmlzSG9z
dE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBCYXNlOjpkZWZpbmVPd25Qcm9w
ZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRp
b24pOwogCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJv
dG90eXBlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5k
ZXggN2NkMTRiOGMyZDgwMGY2MWJkYzEyZWRkMmRmMDRkMzVmYTA2MTliNi4uOWI1OGI3NDdjZTFm
M2YzMzJkMGY3NjBhNTc4NWI3YWMxOWViZTlmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaApAQCAtNjgsNiArNjgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIHJldHVybiBmdW5jdGlvbjsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAg
c3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhl
Y3V0YWJsZSosIEpTR2xvYmFsT2JqZWN0Kik7CisgICAgICAgIAogICAgICAgICBzdGF0aWMgdm9p
ZCBkZXN0cm95KEpTQ2VsbCopOwogICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
U3RyaW5nIG5hbWUoRXhlY1N0YXRlKik7CkBAIC05Nyw3ICs5OSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZXhlY3V0YWJsZS5nZXQoKTsgfQogCiAgICAgICAgIC8vIFRvIGNhbGwgZWl0aGVyIG9mIHRoZXNl
IG1ldGhvZHMgaW5jbHVkZSBFeGVjdXRhYmxlLmgKLSAgICAgICAgaW5saW5lIGJvb2wgaXNIb3N0
RnVuY3Rpb24oKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc0hvc3RGdW5jdGlvbigpIGNvbnN0Owog
ICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGpzRXhlY3V0YWJsZSgpIGNvbnN0OwogCiAgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IFNvdXJjZUNvZGUqIHNvdXJjZUNvZGUoKSBjb25z
dDsKQEAgLTE0NSw2ICsxNDcsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1
cm4gbV9hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ7CiAgICAgICAgIH0KIAorICAgICAgICBi
b29sIGlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNCdWls
dGluRnVuY3Rpb24oKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hv
c3RGdW5jdGlvbk5vbklubGluZSgpIGNvbnN0OworCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBj
b25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9w
ZXJ0eVNsb3QgfCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBPdmVycmlkZXNWaXNpdENoaWxkcmVu
IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsK
IApAQCAtMTY5LDggKzE3NSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAg
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIAotICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7
Ci0KICAgICAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGFyZ3VtZW50c0dldHRlcihFeGVjU3Rh
dGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CiAgICAg
ICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjYWxsZXJHZXR0ZXIoRXhlY1N0YXRlKiwgRW5jb2Rl
ZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgbGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCmluZGV4IGZlNGUxMTRhZGJjMjM2NzRkM2I2
MGU2MWY3MWNiN2EwNmM5NDc4NGQuLjY5ZjBkNGYzOTZlZjljMmRhOWUwYmY2MDhjMjY0NDE3MTc5
OWJhNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b25JbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bklubGluZXMuaApAQCAtNTMsMTYgKzUzLDI0IEBAIGlubGluZSBib29sIEpTRnVuY3Rpb246Omlz
SG9zdEZ1bmN0aW9uKCkgY29uc3QKIAogaW5saW5lIE5hdGl2ZUZ1bmN0aW9uIEpTRnVuY3Rpb246
Om5hdGl2ZUZ1bmN0aW9uKCkKIHsKLSAgICBBU1NFUlQoaXNIb3N0RnVuY3Rpb24oKSk7CisgICAg
QVNTRVJUKGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkpOwogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxOYXRpdmVFeGVjdXRhYmxlKj4obV9leGVjdXRhYmxlLmdldCgpKS0+ZnVuY3Rpb24oKTsKIH0K
IAogaW5saW5lIE5hdGl2ZUZ1bmN0aW9uIEpTRnVuY3Rpb246Om5hdGl2ZUNvbnN0cnVjdG9yKCkK
IHsKLSAgICBBU1NFUlQoaXNIb3N0RnVuY3Rpb24oKSk7CisgICAgQVNTRVJUKGlzSG9zdEZ1bmN0
aW9uTm9uSW5saW5lKCkpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxOYXRpdmVFeGVjdXRhYmxl
Kj4obV9leGVjdXRhYmxlLmdldCgpKS0+Y29uc3RydWN0b3IoKTsKIH0KIAoraW5saW5lIGJvb2wg
aXNIb3N0RnVuY3Rpb24oSlNWYWx1ZSB2YWx1ZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rp
b24pCit7CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGdl
dEpTRnVuY3Rpb24odmFsdWUpKTsKKyAgICBpZiAoIWZ1bmN0aW9uIHx8ICFmdW5jdGlvbi0+aXNI
b3N0RnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBmdW5jdGlv
bi0+bmF0aXZlRnVuY3Rpb24oKSA9PSBuYXRpdmVGdW5jdGlvbjsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgSlNDCiAKICNlbmRpZiAvLyBKU0Z1bmN0aW9uSW5saW5lc19oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVj
dG9ySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAppbmRleCAyZGRjMjlmNzE4OTdiYjUxZDM5
MGIwNmIyNWE3MzgzMzg3NGJhMGMxLi5lZGQzNDQ5Y2U0N2IxNzM1ZThlNWRiYjA1ZjMxOGUzZDU1
ZjNiZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVz
LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25z
dHJ1Y3RvcklubGluZXNfaAogI2RlZmluZSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVj
dG9ySW5saW5lc19oCiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUg
IkVycm9yLmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgK
aW5kZXggNmRiODYyNzRjM2I4NzRhYWFkZTUxNTE4OTgyNjcyNmZiMTM2YzE3My4uZjI0ZWE3MzAz
ZGY5NjlkYmQyZGNhNTJjODZkMTFjNzhjMDBkYjllYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxp
bmVzLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJ
bmxpbmVzX2gKIAogI2luY2x1ZGUgIkFycmF5QnVmZmVyVmlldy5oIgorI2luY2x1ZGUgIkNvbW1v
bklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRGVmZXJHQy5oIgogI2luY2x1ZGUgIkVycm9yLmgi
CiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZUlubGluZXMuaAppbmRleCA0NTk5OTdhNDY0YjkxMTk0NzdiMWJlODRlMzZjNGUy
OTY2YWNlZjg1Li44ZTVmZjgyNzkxZTZmZjhkNGViOWMzNzM2OTFlNDMzZWI3ZDE2YWVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlld1Byb3RvdHlwZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaApAQCAtMjYsNiArMjYs
NyBAQAogI2lmbmRlZiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXNfaAog
I2RlZmluZSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXNfaAogCisjaW5j
bHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUg
IkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMmMyNzRj
MWE3ZDQ4MWMwN2RmMGQyYmViM2IyOTMxYTM5MDdhNWU2Ni4uMDZlNTRjODRlNzdiOTAzMmJhYTFk
MmRmNDdhMWM3MmU4MGI3ZGVhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMzQ2LDcgKzM0Niw4IEBAIHZvaWQgSlNHbG9iYWxP
YmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQogCiAgICAgLy8gQ29uc3RydWN0b3JzCiAK
LSAgICBKU0NlbGwqIG9iamVjdENvbnN0cnVjdG9yID0gT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0
ZSh2bSwgT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5j
dGlvblByb3RvdHlwZS5nZXQoKSksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKKyAgICBPYmpl
Y3RDb25zdHJ1Y3Rvciogb2JqZWN0Q29uc3RydWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlKHZtLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1
bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOworICAgIG1f
b2JqZWN0Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBvYmplY3RDb25zdHJ1Y3Rvcik7CiAgICAg
SlNDZWxsKiBmdW5jdGlvbkNvbnN0cnVjdG9yID0gRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRl
KHZtLCBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVu
Y3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKICAgICBK
U0NlbGwqIGFycmF5Q29uc3RydWN0b3IgPSBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEFy
cmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3Rv
dHlwZS5nZXQoKSksIG1fYXJyYXlQcm90b3R5cGUuZ2V0KCkpOwogCkBAIC00MzIsNyArNDMzLDEw
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQogICAgIEds
b2JhbFByb3BlcnR5SW5mbyBzdGF0aWNHbG9iYWxzW10gPSB7CiAgICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5OYU4sIGpzTmFOKCksIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPkluZmluaXR5LCBqc051bWJlcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Omlu
ZmluaXR5KCkpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCi0gICAgICAgIEds
b2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLCBqc1Vu
ZGVmaW5lZCgpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSkKKyAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQsIGpzVW5k
ZWZpbmVkKCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmRQcml2YXRl
TmFtZSwganNVbmRlZmluZWQoKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAor
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+T2JqZWN0UHJpdmF0
ZU5hbWUsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25s
eSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5UeXBlRXJy
b3JQcml2YXRlTmFtZSwgbV90eXBlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0gfCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpCiAgICAgfTsKICAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRp
Y0dsb2JhbHMsIFdURl9BUlJBWV9MRU5HVEgoc3RhdGljR2xvYmFscykpOwogICAgIApAQCAtNjA4
LDYgKzYxMiw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9zeW50YXhFcnJvckNvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV90eXBlRXJyb3JDb25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fVVJJRXJyb3JDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fb2JqZWN0Q29uc3RydWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX3Byb21pc2VDb25zdHJ1Y3Rvcik7CiAKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9ldmFsRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggYjBjYWQzZGM1NDcwZjdjN2EwZTU3MGJkY2QyZGZmYTg5
NWUyYWEwYy4uM2E2MTZjNmYwNWVkZjFkMjk1YWY4NDQxYWE2NjUwMGZiOTJhNGE0MyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC02Nyw2
ICs2Nyw3IEBAIGNsYXNzIEpTU3RhY2s7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBj
bGFzcyBNaWNyb3Rhc2s7CiBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOworY2xhc3MgT2Jq
ZWN0Q29uc3RydWN0b3I7CiBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgUHJvZ3JhbUV4
ZWN1dGFibGU7CiBjbGFzcyBSZWdFeHBDb25zdHJ1Y3RvcjsKQEAgLTE1OCw2ICsxNTksNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgV3JpdGVCYXJyaWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IG1fdHlw
ZUVycm9yQ29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0
b3I+IG1fVVJJRXJyb3JDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8SlNQcm9taXNlQ29u
c3RydWN0b3I+IG1fcHJvbWlzZUNvbnN0cnVjdG9yOworICAgIFdyaXRlQmFycmllcjxPYmplY3RD
b25zdHJ1Y3Rvcj4gbV9vYmplY3RDb25zdHJ1Y3RvcjsKIAogICAgIFdyaXRlQmFycmllcjxKU0Z1
bmN0aW9uPiBtX2V2YWxGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9j
YWxsRnVuY3Rpb247CkBAIC0zMzAsNiArMzMyLDcgQEAgcHVibGljOgogICAgIFJlZ0V4cENvbnN0
cnVjdG9yKiByZWdFeHBDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwQ29uc3Ry
dWN0b3IuZ2V0KCk7IH0KIAogICAgIEVycm9yQ29uc3RydWN0b3IqIGVycm9yQ29uc3RydWN0b3Io
KSBjb25zdCB7IHJldHVybiBtX2Vycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KKyAgICBPYmplY3RD
b25zdHJ1Y3Rvciogb2JqZWN0Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX29iamVjdENv
bnN0cnVjdG9yLmdldCgpOyB9CiAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogZXZhbEVycm9y
Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2V2YWxFcnJvckNvbnN0cnVjdG9yLmdldCgp
OyB9CiAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogcmFuZ2VFcnJvckNvbnN0cnVjdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9yYW5nZUVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KICAgICBOYXRp
dmVFcnJvckNvbnN0cnVjdG9yKiByZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CkBAIC01ODEsNyArNTg0
LDcgQEAgaW5saW5lIGJvb2wgSlNHbG9iYWxPYmplY3Q6Omhhc093blByb3BlcnR5Rm9yV3JpdGUo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUKIAogaW5saW5lIGJvb2wgSlNHbG9iYWxPYmpl
Y3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVydHkoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsK
LSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHBy
b3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBz
eW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICByZXR1cm4g
IWVudHJ5LmlzTnVsbCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5jcHAKaW5kZXggMmI2N2ExZDllZWQ4NGU5OTU2ZjhiYjk2ODM4NGM4NGNhZWE1M2NmZi4u
MmVhMmMyNGU2ZWFiNGNkMGQ3ZmZlZDY2NWVmNGFlNDFhZjA3NTBmMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMg
aW5saW5lIHZvaWQgZ2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
Q2xhc3NJbmZvKiBjbGFzcwogICAgICAgICBpbnQgaGFzaFNpemVNYXNrID0gdGFibGUtPmNvbXBh
Y3RTaXplIC0gMTsKICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IHRhYmxlLT50YWJs
ZTsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gaGFzaFNpemVNYXNrOyArK2ksICsrZW50
cnkpIHsKLSAgICAgICAgICAgIGlmIChlbnRyeS0+a2V5KCkgJiYgKCEoZW50cnktPmF0dHJpYnV0
ZXMoKSAmIERvbnRFbnVtKSB8fCAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkg
JiYgISgoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKSAmJiBkaWRSZWlmeSkpCisgICAg
ICAgICAgICBpZiAoZW50cnktPmtleSgpICYmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBEb250
RW51bSkgfHwgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpICYmICEoKGVudHJ5
LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikgJiYgZGlkUmVpZnkpKQogICAgICAg
ICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGVudHJ5LT5rZXkoKSk7CiAgICAgICAgIH0KICAg
ICB9CkBAIC0xNjE4LDcgKzE2MTgsNyBAQCB2b2lkIEpTT2JqZWN0OjpyZWlmeVN0YXRpY0Z1bmN0
aW9uc0ZvckRlbGV0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpcyk7CiAgICAgICAgIGZvciAoSGFzaFRhYmxlOjpD
b25zdEl0ZXJhdG9yIGl0ZXIgPSBoYXNoVGFibGUtPmJlZ2luKHZtKTsgaXRlciAhPSBoYXNoVGFi
bGUtPmVuZCh2bSk7ICsraXRlcikgewotICAgICAgICAgICAgaWYgKGl0ZXItPmF0dHJpYnV0ZXMo
KSAmIEZ1bmN0aW9uKQorICAgICAgICAgICAgaWYgKGl0ZXItPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0
aW5PckZ1bmN0aW9uKQogICAgICAgICAgICAgICAgIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KGds
b2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksICppdGVyLCB0aGlzLCBJZGVudGlmaWVyKCZ2bSwg
aXRlci0+a2V5KCkpLCBzbG90KTsKICAgICAgICAgfQogICAgIH0KQEAgLTIyMzYsNiArMjIzNiwx
NiBAQCB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbgogICAgIHB1dERpcmVjdCh2bSwgcHJvcGVydHlO
YW1lLCBmdW5jdGlvbiwgYXR0cmlidXRlcyk7CiB9CiAKK3ZvaWQgSlNPYmplY3Q6OnB1dERpcmVj
dEJ1aWx0aW5GdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0
aW9uRXhlY3V0YWJsZSwgdW5zaWduZWQgYXR0cmlidXRlcykKK3sKKyAgICBTdHJpbmdJbXBsKiBu
YW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsKKyAgICBpZiAoIW5hbWUpCisgICAgICAg
IG5hbWUgPSB2bS5wcm9wZXJ0eU5hbWVzLT5hbm9ueW1vdXMuaW1wbCgpOworICAgIEFTU0VSVChu
YW1lKTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0
aW5GdW5jdGlvbih2bSwgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25F
eGVjdXRhYmxlKSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBwdXREaXJlY3Qodm0sIHByb3BlcnR5TmFt
ZSwgZnVuY3Rpb24sIGF0dHJpYnV0ZXMpOworfQorCiB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RO
YXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGZ1
bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGlu
dHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBTdHJpbmdJbXBsKiBuYW1lID0g
cHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCmluZGV4IDAyYjEzN2IzNTBjMmZhODMyNWJkM2I5NjQ3MTEyYWJlODc2ZjM4M2Yu
LmRkZTU5N2VmZmFlYzBmMWI4ZDQ0YzI5MTE5NTAzMDFmMDYwMDdlOTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUg
IkJ1dHRlcmZseS5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNsYXNzSW5m
by5oIgotI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiQ29weVdyaXRl
QmFycmllci5oIgogI2luY2x1ZGUgIkRlZmVyR0MuaCIKICNpbmNsdWRlICJIZWFwLmgiCkBAIC01
ODEsNiArNTgwLDcgQEAgcHVibGljOgogICAgIHZvaWQgcHV0RGlyZWN0VW5kZWZpbmVkKFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCkgeyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5zZXRVbmRlZmlu
ZWQoKTsgfQogCiAgICAgdm9pZCBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYsIEpTR2xvYmFs
T2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5h
dGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIHZvaWQg
cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9w
ZXJ0eU5hbWUmLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAg
ICB2b2lkIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oVk0mLCBKU0ds
b2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3Ro
LCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBi
b29sIHNob3VsZFRocm93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAppbmRleCA0MDI2MTk2MzNmYTA2ZmQyNTRiM2Yy
YTdhOGNjNzFlODA3YWFmOTExLi4xN2QyYWI2NWE4OGZmYjEzZmE5YTZjOGY1ODNjYTg0NGFmODMy
MjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9t
aXNlQ29uc3RydWN0b3IuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSlNQcm9taXNl
RGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU1Byb21pc2VGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJK
U1Byb21pc2VQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNs
dWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJOdW1iZXJPYmplY3QuaCIKICNpbmNsdWRlICJTdHJ1
Y3R1cmVJbmxpbmVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb21pc2VEZWZlcnJlZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb21pc2VEZWZlcnJlZC5jcHAKaW5kZXggY2JjNDJlYjlmZDkyMzBmNDZlNmY4NDlmZjFhNzk1
OWJkMTA3OWJlYy4uNDI3MTBjMzA1NDRhMTFjNzU0N2MzY2Y4ODhiOTZhNDhjNDY4YTA3MiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVk
LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgogI2luY2x1ZGUg
IkpTUHJvbWlzZUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlRnVuY3Rpb25zLmgi
CisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxp
bmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHAKaW5kZXggOWRmNDU3ODE3Y2E4MDNkMzcz
MjgyNDJmYzMzZWNhNzQ1ZWQ0MDQzMS4uZTRjYTVhNDZkOTFiYjgwNDI0Yjg2MmU5MzI0OTIzN2Jm
YzUzZTdhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9t
aXNlUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2VQcm90b3R5cGUuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSlNQcm9taXNl
RGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU1Byb21pc2VGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJK
U1Byb21pc2VSZWFjdGlvbi5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1
ZGUgIk1pY3JvdGFzay5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUmVhY3Rpb24uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlYWN0aW9uLmgKaW5kZXgg
ZmM3MTQ2YzUwZTg0OWQzMzBkODllNjNmYzE5Y2E2NDlkM2MwZTg0OC4uNDJkMjQ5NmExZmNkYWJi
YzExZGM3YmIyNzdkZDEyM2UyYTRkZTIxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9taXNlUmVhY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb21pc2VSZWFjdGlvbi5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5l
IEpTUHJvbWlzZVJlYWN0aW9uX2gKIAogI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIkpT
U3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogCiBuYW1lc3BhY2UgSlND
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlO
YW1lSXRlcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5jcHAKaW5kZXggNjhhOGJkODdkMzhhZGJiYjlkZDJhYzllYzRiNDlkNWVm
NDU0OWQ1Ni4uMjM3YzQyYmIwZGEwZjE2Njc2ZWIxMWFkZTgxODBhN2IwNmQ5OGViNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5jcHAKQEAgLTI5LDcgKzI5LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiT3BlcmF0aW9u
cy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmgKaW5kZXggZjQzNjJmZjM1NGVlNmE1MDIyMWJiNzMxZDFhMjYxMWU2ZGQ2MWJjMC4u
ZDA3MzcxOWRlMTYwZDJmMjkyMTEwYTU5NmExMDVlMmZhMjExNWZmYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaApA
QCAtMzEsNyArMzEsNiBAQAogCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU1N0
cmluZy5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVB
cnJheS5oIgogI2luY2x1ZGUgPG1lbW9yeT4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmgKaW5kZXggMmIxY2RkZGM1ODQxZDYwZDE1N2EyZTYxZjcwMmIwZWU1ZmExZDY3
Ni4uZTM5MzQxNjBhZWE5MjZlZjE1OTMyZjg3OTBlMjRjNTJhZjAyZDM1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC0yNCw3ICsyNCw2IEBACiAjZGVmaW5l
IEpTU3RyaW5nX2gKIAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgotI2luY2x1ZGUgIkNvbW1vbklk
ZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlByb3BlcnR5
RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgpAQCAtNDcyLDMzICs0NzEs
NiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0
cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4ganNOb250cml2
aWFsU3RyaW5nKCZleGVjLT52bSgpLCBzKTsgfQogICAgIGlubGluZSBKU1N0cmluZyoganNPd25l
ZFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4ganNPd25l
ZFN0cmluZygmZXhlYy0+dm0oKSwgcyk7IH0KIAotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0
cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQotICAgIHsKLSAgICAgICAgaWYgKHBy
b3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7Ci0gICAgICAgICAg
ICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBq
c051bWJlcihtX2xlbmd0aCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0K
LQotICAgICAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKLSAgICAgICAg
aWYgKGkgPCBtX2xlbmd0aCkgewotICAgICAgICAgICAgQVNTRVJUKGkgIT0gUHJvcGVydHlOYW1l
OjpOb3RBbkluZGV4KTsgLy8gTm8gbmVlZCBmb3IgYW4gZXhwbGljaXQgY2hlY2ssIHRoZSBhYm92
ZSB0ZXN0IHdvdWxkIGFsd2F5cyBmYWlsIQotICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlz
LCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIGkpKTsKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LSAgICAgICAgICAgIAotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5n
UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCi0gICAgewotICAgICAgICBpZiAocHJvcGVydHlOYW1lIDwgbV9sZW5n
dGgpIHsKLSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRP
bmx5LCBnZXRJbmRleChleGVjLCBwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQogICAgIGlu
bGluZSBib29sIGlzSlNTdHJpbmcoSlNWYWx1ZSB2KSB7IHJldHVybiB2LmlzQ2VsbCgpICYmIHYu
YXNDZWxsKCktPmNsYXNzSW5mbygpID09IEpTU3RyaW5nOjppbmZvKCk7IH0KIAogICAgIC8vIC0t
LSBKU1ZhbHVlIGlubGluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTI4LDMy
ICs1MDAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIHRvV1RGU3RyaW5nU2xv
d0Nhc2UoZXhlYyk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBTdHJpbmcgaW5saW5lSlNW
YWx1ZU5vdFN0cmluZ3RvU3RyaW5nKGNvbnN0IEpTVmFsdWUmIHZhbHVlLCBFeGVjU3RhdGUqIGV4
ZWMpCi0gICAgewotICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgICAgICBpZiAodmFs
dWUuaXNJbnQzMigpKQotICAgICAgICAgICAgcmV0dXJuIHZtLm51bWVyaWNTdHJpbmdzLmFkZCh2
YWx1ZS5hc0ludDMyKCkpOwotICAgICAgICBpZiAodmFsdWUuaXNEb3VibGUoKSkKLSAgICAgICAg
ICAgIHJldHVybiB2bS5udW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNEb3VibGUoKSk7Ci0gICAg
ICAgIGlmICh2YWx1ZS5pc1RydWUoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5h
bWVzLT50cnVlS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzRmFsc2UoKSkK
LSAgICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5mYWxzZUtleXdvcmQuc3RyaW5n
KCk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5w
cm9wZXJ0eU5hbWVzLT5udWxsS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHZhbHVlLmlz
VW5kZWZpbmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZp
bmVkS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIFN0cmluZyBKU1ZhbHVl
Ojp0b1dURlN0cmluZ0lubGluZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci0gICAgewotICAgICAg
ICBpZiAoaXNTdHJpbmcoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU1N0cmlu
Zyo+KGFzQ2VsbCgpKS0+dmFsdWUoZXhlYyk7Ci0KLSAgICAgICAgcmV0dXJuIGlubGluZUpTVmFs
dWVOb3RTdHJpbmd0b1N0cmluZygqdGhpcywgZXhlYyk7Ci0gICAgfQotCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIAogI2VuZGlmIC8vIEpTU3RyaW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzc4YzA1ZmM4MGQ4OGU4NTM3
YzlkMmE1ZWFiOWZmMGJhOWI2MGE3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpT
U3RyaW5nSW5saW5lc19oCisjZGVmaW5lIEpTU3RyaW5nSW5saW5lc19oCisKKyNpbmNsdWRlICJD
b21tb25JZGVudGlmaWVycy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNTdHJpbmcuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0FMV0FZU19JTkxJTkUgYm9v
bCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGlmIChwcm9w
ZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgeworICAgICAgICBzbG90
LnNldFZhbHVlKHRoaXMsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBqc051bWJl
cihtX2xlbmd0aCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgdW5z
aWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7CisgICAgaWYgKGkgPCBtX2xlbmd0aCkg
eworICAgICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOyAvLyBObyBu
ZWVkIGZvciBhbiBleHBsaWNpdCBjaGVjaywgdGhlIGFib3ZlIHRlc3Qgd291bGQgYWx3YXlzIGZh
aWwhCisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBn
ZXRJbmRleChleGVjLCBpKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK0FMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3Ry
aW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgaWYgKHByb3BlcnR5TmFtZSA8IG1fbGVuZ3RoKSB7
CisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBnZXRJ
bmRleChleGVjLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKworQUxXQVlTX0lOTElORSBTdHJpbmcgaW5saW5l
SlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKGNvbnN0IEpTVmFsdWUmIHZhbHVlLCBFeGVjU3RhdGUq
IGV4ZWMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBpZiAodmFsdWUuaXNJbnQz
MigpKQorICAgICAgICByZXR1cm4gdm0ubnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVlLmFzSW50MzIo
KSk7CisgICAgaWYgKHZhbHVlLmlzRG91YmxlKCkpCisgICAgICAgIHJldHVybiB2bS5udW1lcmlj
U3RyaW5ncy5hZGQodmFsdWUuYXNEb3VibGUoKSk7CisgICAgaWYgKHZhbHVlLmlzVHJ1ZSgpKQor
ICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+dHJ1ZUtleXdvcmQuc3RyaW5nKCk7Cisg
ICAgaWYgKHZhbHVlLmlzRmFsc2UoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMt
PmZhbHNlS2V5d29yZC5zdHJpbmcoKTsKKyAgICBpZiAodmFsdWUuaXNOdWxsKCkpCisgICAgICAg
IHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5udWxsS2V5d29yZC5zdHJpbmcoKTsKKyAgICBpZiAo
dmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPnVu
ZGVmaW5lZEtleXdvcmQuc3RyaW5nKCk7CisgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKTsKK30KKyAgICAKK0FMV0FZU19JTkxJTkUgU3RyaW5nIEpTVmFsdWU6OnRv
V1RGU3RyaW5nSW5saW5lKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBpZiAoaXNTdHJp
bmcoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTU3RyaW5nKj4oYXNDZWxsKCkpLT52
YWx1ZShleGVjKTsKKyAgICAKKyAgICByZXR1cm4gaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3Ry
aW5nKCp0aGlzLCBleGVjKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKaW5kZXggMmFjMjUy
NGM1ZGZkYTNkMTIyNDlkNzc5MGFkYzMxMjllM2MwZTg3MS4uZmJjOGI4OTVlYWU2YWY3ODg4Mzli
ZWI1ZTgzZDdiNmI5NzkyOGZhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKQEAgLTY0LDYgKzY0LDggQEAgdm9pZCBK
U1N5bWJvbFRhYmxlT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXQKICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIodGhp
c09iamVjdC0+c3ltYm9sVGFibGUoKS0+bV9sb2NrKTsKICAgICAgICAgU3ltYm9sVGFibGU6Ok1h
cDo6aXRlcmF0b3IgZW5kID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+ZW5kKGxvY2tlcik7
CiAgICAgICAgIGZvciAoU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXQgPSB0aGlzT2JqZWN0
LT5zeW1ib2xUYWJsZSgpLT5iZWdpbihsb2NrZXIpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAg
ICAgICAgIGlmIChpdC0+a2V5LT5pc0VtcHR5VW5pcXVlKCkpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICBpZiAoIShpdC0+dmFsdWUuZ2V0QXR0cmlidXRlcygpICYgRG9u
dEVudW0pIHx8IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKQogICAgICAgICAg
ICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgaXQtPmtleS5nZXQoKSkp
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N5bWJvbFRhYmxlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5
bWJvbFRhYmxlT2JqZWN0LmgKaW5kZXggYjViMjBhODQ1YjZhYjY0NDI0YjM3ZTMxYjI3NzRlZjkw
NTM1M2Y3Zi4uZDAzYjI0NTExYzJkZTE5NTlmYjVmNTZkNjQ5YzY0ZDBlZmUwNjg1NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3Qu
aApAQCAtNzIsNyArNzIsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKIHsKICAgICBT
eW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgIENv
bmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAgU3ltYm9s
VGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9w
ZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBp
dGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAg
aWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+dmFsdWU7CkBAIC04
Nyw3ICs4Nyw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogewogICAgIFN5bWJvbFRh
YmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgQ29uY3VycmVu
dEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICBTeW1ib2xUYWJsZTo6
TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFt
ZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBz
eW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoaXRl
ciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1ZTsKQEAgLTEwNCw3ICsx
MDQsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKIHsKICAgICBTeW1ib2xUYWJsZSYg
c3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgIENvbmN1cnJlbnRKSVRM
b2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAgU3ltYm9sVGFibGU6Ok1hcDo6
aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVi
bGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9s
VGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGl0ZXIgPT0g
c3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBTeW1i
b2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+dmFsdWU7CkBAIC0xMjYsNyArMTI2LDcg
QEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoCiAgICAgewogICAgICAgICBTeW1ib2xUYWJs
ZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBHQ1NhZmVD
b25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2ssIGV4ZWMtPnZtKCku
aGVhcCk7Ci0gICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xU
YWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgICAgIFN5
bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwg
cHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5k
KGxvY2tlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJvb2wgd2FzRmF0
OwpAQCAtMTU5LDcgKzE1OSw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJp
YnV0ZXMoCiAgICAgewogICAgICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0
LT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1i
b2xUYWJsZS5tX2xvY2spOwotICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVy
ID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwor
ICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmlu
ZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgICAgIGlmIChpdGVyID09IHN5bWJv
bFRhYmxlLmVuZChsb2NrZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBT
eW1ib2xUYWJsZUVudHJ5JiBlbnRyeSA9IGl0ZXItPnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0xvb2t1cC5jcHAKaW5kZXggYTgwNmRkMDUyYTBjYmVlNGNhYzJjYWE2ZTA4YzY3
MTYwMDVjMjcwYy4uYTk3NjUyMDFiOWY1MTg2NDE0MjNkZGUwZmUwZTJlNTFhOGNlNzNiYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCkBAIC02OCw3ICs2OCw3IEBA
IHZvaWQgSGFzaFRhYmxlOjpkZWxldGVUYWJsZSgpIGNvbnN0CiBib29sIHNldFVwU3RhdGljRnVu
Y3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmpl
Y3QqIHRoaXNPYmosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgICBBU1NFUlQodGhpc09iai0+Z2xvYmFsT2JqZWN0KCkpOwotICAgIEFTU0VSVChl
bnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pOworICAgIEFTU0VSVChlbnRyeS0+YXR0cmli
dXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSB0aGlz
T2JqLT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CkBAIC03
OSw5ICs3OSwxMyBAQCBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqCiAgICAgICAgIGlmICh0aGlzT2Jq
LT5zdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgCi0gICAgICAgIHRoaXNPYmotPnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKAotICAgICAgICAg
ICAgdm0sIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5mdW5j
dGlvbkxlbmd0aCgpLAotICAgICAgICAgICAgZW50cnktPmZ1bmN0aW9uKCksIGVudHJ5LT5pbnRy
aW5zaWMoKSwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAgICAgIGlmIChlbnRyeS0+YXR0cmli
dXRlcygpICYgQnVpbHRpbikKKyAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdEJ1aWx0aW5G
dW5jdGlvbih2bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZW50cnkt
PmJ1aWx0aW5HZW5lcmF0b3IoKSh2bSksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKAorICAg
ICAgICAgICAgICAgIHZtLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBl
bnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSwKKyAgICAgICAgICAgICAgICBlbnRyeS0+ZnVuY3Rpb24o
KSwgZW50cnktPmludHJpbnNpYygpLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAgICAgICAgfQog
ICAgICAgICBvZmZzZXQgPSB0aGlzT2JqLT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFt
ZSwgYXR0cmlidXRlcyk7CiAgICAgICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKaW5kZXggYmRlODNkNGE2
ZmMzNTU3Nzg1MGUzMWU4OGJjMzlmZDA1ZjdiY2U1Mi4uZGJhMzg5ZTllMjQzZGQwZWNiMmJhOThm
Mzk0ZDQwNzlmOWRlYTkzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTG9va3VwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgK
QEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgLy8gaWUuIHR5cGVkZWYgSlNW
YWx1ZSAoKkdldEZ1bmN0aW9uKShFeGVjU3RhdGUqLCBKU09iamVjdCogYmFzZU9iamVjdCkKICAg
ICB0eXBlZGVmIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIEdldEZ1bmN0aW9uOwogICAgIHR5
cGVkZWYgUHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmMgUHV0RnVuY3Rpb247CisgICAgdHlw
ZWRlZiBGdW5jdGlvbkV4ZWN1dGFibGUqICgqQnVpbHRpbkdlbmVyYXRvcikoVk0mKTsKIAogICAg
IGNsYXNzIEhhc2hFbnRyeSB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAt
NjgsMTEgKzY5LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1faW50
cmluc2ljOwogICAgICAgICB9CiAKKyAgICAgICAgQnVpbHRpbkdlbmVyYXRvciBidWlsdGluR2Vu
ZXJhdG9yKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgQnVpbHRpbik7IHJldHVybiBt
X3UuYnVpbHRpbkdlbmVyYXRvci5nZW5lcmF0b3JWYWx1ZTsgfQogICAgICAgICBOYXRpdmVGdW5j
dGlvbiBmdW5jdGlvbigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKTsg
cmV0dXJuIG1fdS5mdW5jdGlvbi5mdW5jdGlvblZhbHVlOyB9CiAgICAgICAgIHVuc2lnbmVkIGNo
YXIgZnVuY3Rpb25MZW5ndGgoKSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBGdW5jdGlv
bik7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihtX3UuZnVuY3Rpb24ubGVuZ3Ro
KTsgfQogCi0gICAgICAgIEdldEZ1bmN0aW9uIHByb3BlcnR5R2V0dGVyKCkgY29uc3QgeyBBU1NF
UlQoIShtX2F0dHJpYnV0ZXMgJiBGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5LmdldDsg
fQotICAgICAgICBQdXRGdW5jdGlvbiBwcm9wZXJ0eVB1dHRlcigpIGNvbnN0IHsgQVNTRVJUKCEo
bV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0eS5wdXQ7IH0KKyAg
ICAgICAgR2V0RnVuY3Rpb24gcHJvcGVydHlHZXR0ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1fYXR0
cmlidXRlcyAmIEJ1aWx0aW5PckZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVydHkuZ2V0OyB9
CisgICAgICAgIFB1dEZ1bmN0aW9uIHByb3BlcnR5UHV0dGVyKCkgY29uc3QgeyBBU1NFUlQoISht
X2F0dHJpYnV0ZXMgJiBCdWlsdGluT3JGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5LnB1
dDsgfQogCiAgICAgICAgIGludHB0cl90IGxleGVyVmFsdWUoKSBjb25zdCB7IEFTU0VSVCghbV9h
dHRyaWJ1dGVzKTsgcmV0dXJuIG1fdS5sZXhlci52YWx1ZTsgfQogCkBAIC05NCw2ICs5NiwxMCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBpbnRwdHJfdCBsZW5ndGg7IC8vIG51
bWJlciBvZiBhcmd1bWVudHMgZm9yIGZ1bmN0aW9uCiAgICAgICAgICAgICB9IGZ1bmN0aW9uOwog
ICAgICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICBCdWlsdGluR2VuZXJhdG9yIGdl
bmVyYXRvclZhbHVlOworICAgICAgICAgICAgICAgIGludHB0cl90IHVudXNlZDsKKyAgICAgICAg
ICAgIH0gYnVpbHRpbkdlbmVyYXRvcjsKKyAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAg
ICAgICAgR2V0RnVuY3Rpb24gZ2V0OwogICAgICAgICAgICAgICAgIFB1dEZ1bmN0aW9uIHB1dDsK
ICAgICAgICAgICAgIH0gcHJvcGVydHk7CkBAIC0yMDksNyArMjE1LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgQUxXQVlTX0lOTElORSBjb25zdCBIYXNoRW50cnkq
IGVudHJ5KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIFN0cmluZ0ltcGwqIGltcGwgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOworICAg
ICAgICAgICAgU3RyaW5nSW1wbCogaW1wbCA9IHByb3BlcnR5TmFtZS51aWQoKTsKICAgICAgICAg
ICAgIGlmICghaW1wbCkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgCkBAIC0y
NDksNyArMjU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGlmICghZW50cnkpIC8vIG5v
dCBmb3VuZCwgZm9yd2FyZCB0byBwYXJlbnQKICAgICAgICAgICAgIHJldHVybiBQYXJlbnRJbXA6
OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
Ci0gICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pCisgICAgICAgIGlm
IChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pCiAgICAgICAgICAgICBy
ZXR1cm4gc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoZXhlYywgZW50cnksIHRoaXNPYmosIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiAKICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09i
aiwgZW50cnktPmF0dHJpYnV0ZXMoKSwgZW50cnktPnByb3BlcnR5R2V0dGVyKCkpOwpAQCAtMjg2
LDcgKzI5Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpZiAoIWVudHJ5KSAvLyBub3Qg
Zm91bmQsIGZvcndhcmQgdG8gcGFyZW50CiAgICAgICAgICAgICByZXR1cm4gUGFyZW50SW1wOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iaiwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIAot
ICAgICAgICBBU1NFUlQoIShlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pKTsKKyAgICAg
ICAgQVNTRVJUKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSk7CiAK
ICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09iaiwgZW50cnktPmF0dHJpYnV0
ZXMoKSwgZW50cnktPnByb3BlcnR5R2V0dGVyKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTI5NSw3ICszMDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgdm9pZCBwdXRFbnRy
eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0KiBiYXNl
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCiAgICAgewogICAgICAgICAvLyBJZiB0aGlzIGlzIGEgZnVuY3Rpb24gcHV0IGl0
IGFzIGFuIG92ZXJyaWRlIHByb3BlcnR5LgotICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMo
KSAmIEZ1bmN0aW9uKSB7CisgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRp
bk9yRnVuY3Rpb24pIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdCogdGhpc09iamVjdCA9IGpz
RHluYW1pY0Nhc3Q8SlNPYmplY3QqPihzbG90LnRoaXNWYWx1ZSgpKSkKICAgICAgICAgICAgICAg
ICB0aGlzT2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7
CiAgICAgICAgIH0gZWxzZSBpZiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgUmVhZE9ubHkpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9y
Q29uc3RydWN0b3IuY3BwCmluZGV4IGQ1ZTcyOGMyY2QxMDIwYTQ3ZTRhZGNkNjQ5Y2QxZmZmYTVj
ZDZhODMuLmRjYTJmZDhkMWY2YWMyM2I4ZmY4MTdjYmIxOGZhYWU3YmNkNTk3MDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IuY3BwCkBAIC0zOCw2ICszOCwyMCBAQCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpOYXRp
dmVFcnJvckNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiB9CiAK
K3ZvaWQgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwg
Y29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBuYW1l
KTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAgCisgICAgTmF0aXZlRXJyb3JQ
cm90b3R5cGUqIHByb3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1lLCB0aGlzKTsKKyAgICAKKyAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIERvbnRE
ZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsgLy8gRUNNQSAxNS4xMS43LjUKKyAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgbV9lcnJvclN0cnVjdHVyZS5zZXQodm0s
IHRoaXMsIEVycm9ySW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUpKTsKKyAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZSk7CisgICAgQVNTRVJUKG1f
ZXJyb3JTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOworfQorCiB2b2lkIE5hdGl2ZUVycm9yQ29uc3Ry
dWN0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
IHsKICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PE5hdGl2
ZUVycm9yQ29uc3RydWN0b3IqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAppbmRleCA3NDBkM2Y5MzMyOTJm
ZDJhY2NiNGI5OTAzNDQzMTJiOTMxOWFlMTEwLi40MzhhM2FmYjliYjBmNjQxMmM5NzkzMjIzMGM4
ODcxMDk2MWY1NDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
YXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCkBAIC01MSwxOSArNTEsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fZXJy
b3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBuYW1lKTsKLSAgICAgICAgICAgIEFT
U0VSVChpbmhlcml0cyhpbmZvKCkpKTsKLQotICAgICAgICAgICAgTmF0aXZlRXJyb3JQcm90b3R5
cGUqIHByb3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1lLCB0aGlzKTsKLQotICAgICAgICAgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7IC8vIEVDTUEgMTUuMTEuNy41Ci0gICAgICAgICAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Ci0gICAgICAgICAgICBtX2Vycm9yU3Ry
dWN0dXJlLnNldCh2bSwgdGhpcywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSkpOwotICAgICAgICAgICAgQVNTRVJUKG1fZXJyb3JTdHJ1
Y3R1cmUpOwotICAgICAgICAgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkp
OwotICAgICAgICB9CisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUp
OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihWTSYsIFN0
cnVjdHVyZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlTbG90LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3Qu
aAppbmRleCBkOTM4ZmEzMTY0NWFmMjZiNzU4NTE0ZGI2YjI0NzhmMTgzZTllZWUxLi5jZmU5YzRk
MzJiYTc2OGM3NGU0ZmZiYjE5MTM1Mjc5ZGViZjExNzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaApAQCAtNDIsNiArNDIsOCBAQCBlbnVtIEF0dHJp
YnV0ZSB7CiAgICAgRnVuY3Rpb24gICAgID0gMSA8PCA0LCAgLy8gcHJvcGVydHkgaXMgYSBmdW5j
dGlvbiAtIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogICAgIEFjY2Vzc29yICAgICA9
IDEgPDwgNSwgIC8vIHByb3BlcnR5IGlzIGEgZ2V0dGVyL3NldHRlcgogICAgIEN1c3RvbUFjY2Vz
c29yID0gMSA8PCA2LAorICAgIEJ1aWx0aW4gICAgICAgICA9IDEgPDwgNywgLy8gcHJvcGVydHkg
aXMgYSBidWlsdGluIGZ1bmN0aW9uIC0gb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCisg
ICAgQnVpbHRpbk9yRnVuY3Rpb24gPSBCdWlsdGluIHwgRnVuY3Rpb24sIC8vIGhlbHBlciBvbmx5
IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKIH07CiAKIGNsYXNzIFByb3BlcnR5U2xvdCB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5j
cHAKaW5kZXggYmM1MTZiMDZkNjY1MWYwZTY4MmEyMDE3YmRmOGIwM2JhYmVkNmVhMi4uMmMyNDM0
Yjg3ZDA0Zjc0OWNiMTJlNjAyYWI1NDc4NDk0NmE5MWYxZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcApAQCAtMjMsNiArMjMs
NyBAQAogI2luY2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgiCiAKICNpbmNsdWRlICJFcnJvci5o
IgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIK
ICNpbmNsdWRlICJSZWdFeHBNYXRjaGVzQXJyYXkuaCIKICNpbmNsdWRlICJSZWdFeHBQcm90b3R5
cGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5
cGUuY3BwCmluZGV4IDg5ZDdhYzFiOGNiZjFkYjBlMTI2ZjFmYzc5NmRmZDVmYzg0YjJlNTkuLjlk
ZGEwYmE4ZGUxNDEyZWFmNGQyOTFkY2YwYzZiMzk2NTdmYjY3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcApAQCAtMjQsNyArMjQs
NyBAQAogI2luY2x1ZGUgIkFycmF5UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNp
bmNsdWRlICJKU0FycmF5LmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpT
Q0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
T2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAppbmRleCBiMjAzODg4ZDNjMTZjZGEzYzAw
MzUwNjIwOGFlMDg2OTVkYzVkYWFhLi5kMDI2NmE1OWVmM2Y1NWFhMzY5NGY1Zjc0MThjZjc4ZTBh
ZTBkOGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3Ry
dWN0b3IuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTZXQuaCIKKyNpbmNsdWRl
ICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJNYXBEYXRhLmgiCiAjaW5jbHVkZSAiU2V0
UHJvdG90eXBlLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdP
YmplY3QuY3BwCmluZGV4IDQ0MGE2MDk0MjE5MzM4MDMxZTU5MjdhZjQ2YjI4OWRiY2ZiNWE3Mjgu
LjgwZTdlYWE4YzQ5MWNiNmQ1NGE4MzI0Y2U2NDdhNmNkYjdlODg3ODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAtMjIsNyArMjIsOSBA
QAogI2luY2x1ZGUgIlN0cmluZ09iamVjdC5oIgogCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNs
dWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisj
aW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2lu
Y2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDA0MjkxZjdlOGRkMjRlOGFiMzNkNzVhZjFkYTQ1Njhm
MmJjOTllNjguLjFlY2FiODVjMGJkYjI4Njk4OTQ1NzdhNzQxMjU0ZTM2NDQxNDlkODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMjcsMTIgKzI3
LDE4IEBACiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIK
KyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkR1bXBDb250ZXh0Lmgi
CisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5l
cy5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgorI2luY2x1ZGUgIlByb3BlcnR5TWFwSGFzaFRhYmxl
LmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRv
cklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgorI2luY2x1ZGUgIlN0cnVj
dHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCIKICNp
bmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFr
Q291bnRlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDUyY2NmNDIz
YTEwNDNlMTA3OWYyZDhiMTg5NDIxOTg5MGU3MWYyYmMuLjAyMDY5NWZhYzgzZWQ0ZTUxODViNzBl
Njk2OTk2M2EyZGU5YTM2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAg
LTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJBcmdMaXN0LmgiCiAjaW5jbHVkZSAiQXJpdHlDaGVj
a0ZhaWxSZXR1cm5UaHVua3MuaCIKICNpbmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNo
cG9pbnQuaCIKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKICNpbmNsdWRlICJDYWxs
RnJhbWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29kZUNh
Y2hlLmgiCkBAIC01NSw3ICs1Niw5IEBACiAjaW5jbHVkZSAiSlNBUElWYWx1ZVdyYXBwZXIuaCIK
ICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCi0jaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNp
bmNsdWRlICJKU05hbWVTY29wZS5oIgpAQCAtNjgsMTMgKzcxLDE2IEBACiAjaW5jbHVkZSAiTG9v
a3VwLmgiCiAjaW5jbHVkZSAiTWFwRGF0YS5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCisjaW5jbHVk
ZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiUGFyc2VyQXJlbmEuaCIKKyNpbmNsdWRlICJQcm9wZXJ0
eU1hcEhhc2hUYWJsZS5oIgogI2luY2x1ZGUgIlJlZ0V4cENhY2hlLmgiCiAjaW5jbHVkZSAiUmVn
RXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJTb3VyY2VQcm92aWRlckNhY2hlLmgiCiAjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2
YXRpb24uaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJl
SW5saW5lcy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiV2Vh
a01hcERhdGEuaCIKICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CkBAIC0yMjYsNiArMjMyLDcg
QEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9pbkRl
ZmluZU93blByb3BlcnR5KGZhbHNlKQogICAgICwgbV9jb2RlQ2FjaGUoQ29kZUNhY2hlOjpjcmVh
dGUoKSkKICAgICAsIG1fZW5hYmxlZFByb2ZpbGVyKG51bGxwdHIpCisgICAgLCBtX2J1aWx0aW5F
eGVjdXRhYmxlcyhCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgaW50
ZXJwcmV0ZXIgPSBuZXcgSW50ZXJwcmV0ZXIoKnRoaXMpOwogICAgIFN0YWNrQm91bmRzIHN0YWNr
ID0gd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApp
bmRleCA1YTg0MTA1ZWFmYjdhYmJhNWZhNDMxZWVlZGQ1NWQ3YTg5ZjU1Y2UyLi42OTU4YWMzOTNi
MWFlZmMwYmVmYmY2ZTRlYjhiNjgyNWNmN2M5YTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJQcml2YXRlTmFtZS5oIgogI2luY2x1
ZGUgIlByb3RvdHlwZU1hcC5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgorI2luY2x1ZGUg
IlNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJUaHVua0dlbmVy
YXRvcnMuaCIKICNpbmNsdWRlICJUeXBlZEFycmF5Q29udHJvbGxlci5oIgpAQCAtNjksNiArNzAs
NyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcml0eUNoZWNrRmFpbFJldHVyblRo
dW5rczsKKyAgICBjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXM7CiAgICAgY2xhc3MgQ29kZUJsb2Nr
OwogICAgIGNsYXNzIENvZGVDYWNoZTsKICAgICBjbGFzcyBDb21tb25JZGVudGlmaWVyczsKQEAg
LTQ5Nyw2ICs0OTksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCByZWdpc3Rlcldh
dGNocG9pbnRGb3JJbXB1cmVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyJiwgV2F0Y2hwb2ludCop
OwogICAgICAgICAvLyBGSVhNRTogVXNlIEF0b21pY1N0cmluZyBvbmNlIGl0IGdvdCBtZXJnZWQg
d2l0aCBJZGVudGlmaWVyLgogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFkZEltcHVy
ZVByb3BlcnR5KGNvbnN0IFN0cmluZyYpOworICAgICAgICAKKyAgICAgICAgQnVpbHRpbkV4ZWN1
dGFibGVzKiBidWlsdGluRXhlY3V0YWJsZXMoKSB7IHJldHVybiBtX2J1aWx0aW5FeGVjdXRhYmxl
cy5nZXQoKTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKQEAgLTUzNywxMCArNTQxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIEpTVmFsdWUgbV9leGNlcHRpb247CiAgICAgICAgIGJvb2wgbV9pbkRlZmluZU93blByb3Bl
cnR5OwogICAgICAgICBPd25QdHI8Q29kZUNhY2hlPiBtX2NvZGVDYWNoZTsKLSAgICAgICAgUmVm
Q291bnRlZEFycmF5PFN0YWNrRnJhbWU+IG1fZXhjZXB0aW9uU3RhY2s7Ci0KICAgICAgICAgTGVn
YWN5UHJvZmlsZXIqIG1fZW5hYmxlZFByb2ZpbGVyOwotCisgICAgICAgIE93blB0cjxCdWlsdGlu
RXhlY3V0YWJsZXM+IG1fYnVpbHRpbkV4ZWN1dGFibGVzOworICAgICAgICBSZWZDb3VudGVkQXJy
YXk8U3RhY2tGcmFtZT4gbV9leGNlcHRpb25TdGFjazsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcs
IFJlZlB0cjxXYXRjaHBvaW50U2V0Pj4gbV9pbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnRTZXRzOwog
ICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZjgwMDA1ZjI3OTE2M2JhMDhlMmE1Mzg1
ZWUxNDNlYTU0MDI0NjFlNy4uM2YxMmU2MWE5NzAwZDcwZjkxMTVmYjlmZTljNmMxNDc5ZWE1MWE4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEwMSw2ICsxMDEsNyBAQCBzZXQoV2ViQ29yZV9J
TkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9BUEkiCiAgICAg
IiR7SkFWQVNDUklQVENPUkVfRElSfS9hc3NlbWJsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVf
RElSfS9ieXRlY29kZSIKKyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zIgogICAg
ICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0ZWNvbXBpbGVyIgogICAgICIke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vZGZnIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGlzYXNzZW1ibGVyIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU1N0
cmluZ0lubGluZXMuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUv
SlNTdHJpbmdJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBmY2MzODRlOGVkZmMzNGIxNDA4M2I4NjVk
MzczODIwZjQxNjVjNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgKQEAgLTAsMCArMSw0IEBACisjaWZu
ZGVmIFdlYkNvcmVfRldEX0pTU3RyaW5nSW5saW5lc19oCisjZGVmaW5lIFdlYkNvcmVfRldEX0pT
U3RyaW5nSW5saW5lc19oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdJbmxpbmVz
Lmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9R
dWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bs
dWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwCmluZGV4IDJlZGRjZGJiOWYwMDZj
YTc2MjY2NTBiNDIwMjc4NjI2YjkyNjE0MTcuLjNjNGUwZDdiYmIzMWNhYjEyYjVlNmM5NzVjNzRk
M2Y0ODRlOWNiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9R
dWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcApAQCAtNDYsNiArNDYsNyBA
QAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0Jhc2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlSW5s
aW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nSW5saW5lcy5oPgogCiB1
c2luZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0lEQkFueUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lE
QkFueUN1c3RvbS5jcHAKaW5kZXggNTY0OWM4NWNhMDk1ODc3NDhhM2RhMDZjZGRkMGNhOTk5ZTUw
YjhlNy4uM2Y0ZDhlZmFlYjU3ZjMzMDAzZTczYTdlNzg0MmU0MmM3M2NlNjQ5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcApAQCAtNDcsNiArNDcs
NyBAQAogI2luY2x1ZGUgIkpTSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJKU0lEQlRyYW5z
YWN0aW9uLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8
cnVudGltZS9KU1N0cmluZ0lubGluZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcApp
bmRleCA5ZWFlNzU2OWM3MDYwM2E0ZmVkMGFmMTRjNGY4NzE4Y2RlNjRhNmUxLi5mNDlkZmU5MGI0
ZTgyZDM5ZWRjYmY5YmEyOWYyYWU3OTljMGRkZjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcApAQCAtMzcsNyArMzcsNyBAQAog
I2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSlNJREJPYmplY3RTdG9yZS5o
IgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5n
Lmg+CisjaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZ0lubGluZXMuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIEpTQzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJP
YmplY3RTdG9yZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9i
amVjdFN0b3JlQ3VzdG9tLmNwcAppbmRleCA3NGZkMzU0YjI4NjA3Y2Y3ODIyZjgwNTM0Nzk3MGY1
ZDdhYzhjODMyLi41NDM0YjNiN2Q2YzU2ZWNiMGEwM2EyNzk0YzY3MzZhOWFkZmI3MGUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3Vz
dG9tLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCiAj
aW5jbHVkZSAiSlNJREJJbmRleC5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KLSNpbmNs
dWRlIDxydW50aW1lL0pTU3RyaW5nLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZ0lubGlu
ZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAKaW5kZXggZDFiNDcyMTM1MWVi
MWIyYmY4Y2UwY2Q0NzNmZWUxNDQ5MTRjNTNhYi4uZjFkYWE4YTEwNDZiMzNmYTNkMzVhNjZjNTU5
ZWUwZmFmMmFkZTY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNO
b2RlRmlsdGVyQ29uZGl0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U05vZGVGaWx0ZXJDb25kaXRpb24uY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiTm9k
ZUZpbHRlci5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDxydW50aW1l
L0pTTG9jay5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggZmI0YWQ5NTE4MGQ4ZTU5Mzc4
MmY4YmVhNGE4OWZiZTQzMzlmOWU1Ni4uMWI4NGYyYjY4ZGIzMDNjZDE4YjM3ODA2NDYwMjU2ZDE3
Y2E3MTFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC02Niw2ICs2Niw3IEBAIHNldChXZWJLaXRf
SU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vQVBJIgogICAg
ICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYXNzZW1ibGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vYnl0ZWNvZGUiCisgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucyIKICAg
ICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J5dGVjb21waWxlciIKICAgICAiJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2Rpc2Fzc2VtYmxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2RmZyIK
QEAgLTc4LDYgKzc5LDcgQEAgc2V0KFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7
SkFWQVNDUklQVENPUkVfRElSfS9wcm9maWxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L3J1bnRpbWUiCiAgICAgIiR7V1RGX0RJUn0iCisgICAgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFT
Q1JJUFRDT1JFX0RJUn0iCiAgICAgIiR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfSIKICAg
ICAiJHtERVJJVkVEX1NPVVJDRVNfRElSfS9Gb3J3YXJkaW5nSGVhZGVycyIKICAgICAiJHtDTUFL
RV9CSU5BUllfRElSfSIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXggNjcxODFjODRmZmIxNjE1M2Y2
YzNlNDg5ODVmMDkzZWViNDg1YWU4Yy4uZGY4ZjEyZTMyZTI4Y2E0YzM3ZDUzNjgxYzMxYjcwMDVk
YmVlMzUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTEyMSw2ICsxMjEsNyBAQCBzZXQoV2Vi
S2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9BUEki
CiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9hc3NlbWJsZXIiCiAgICAgIiR7SkFWQVNDUklQ
VENPUkVfRElSfS9ieXRlY29kZSIKKyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5z
IgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0ZWNvbXBpbGVyIgogICAgICIke0pBVkFT
Q1JJUFRDT1JFX0RJUn0vY29sbGVjdG9yL2hhbmRsZXMiCiAgICAgIiR7SkFWQVNDUklQVENPUkVf
RElSfS9kZmciCkBAIC0xMzMsNiArMTM0LDcgQEAgc2V0KFdlYktpdDJfSU5DTFVERV9ESVJFQ1RP
UklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcnVudGltZSIKICAgICAiJHtXVEZfRElS
fSIKICAgICAiJHtERVJJVkVEX1NPVVJDRVNfRElSfSIKKyAgICAiJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfSIKICAgICAiJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9
IgogICAgICIke0RFUklWRURfU09VUkNFU19XRUJLSVQyX0RJUn0iCiAgICAgIiR7REVSSVZFRF9T
T1VSQ0VTX1dFQktJVDJfRElSfS9pbmNsdWRlIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDlkMDY2ZjVlMWEwMDRmYmQ0ZDU3
NDBlNDk3YzgyOGM5YmU4ZjkwZGEuLjkwOTJlMTcwOWQ2ZmYyNmRhZTZmMjkyM2M3NTFjYjY4YWUz
MzYwNWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxNC0wMS0yOSAgT2xpdmVyIEh1bnQgIDxv
bGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gaW1wbGVtZW50
IEpTIGJ1aWx0aW5zIGluIEpTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjc4ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVcGRhdGVkIHRoZSB0ZXN0IHJlc3VsdHMgZm9yIG5ldyBlcnJvciBtZXNzYWdl
cyAobm93IHRoYXQgdGhleSdyZQorICAgICAgICBhY3R1YWxseSBoZWxwZnVsKSwgYW5kIGFkZGVk
IGEganMtcmVncmVzcyB0ZXN0IHRvIHRyYWNrIHBlcmZvcm1hbmNlLgorCisgICAgICAgICoganMv
YXJyYXktZXZlcnktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL2RvbS9hcnJheS1wcm90b3R5
cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvcmVncmVzcy9hcnJheS1w
cm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNz
L2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNz
L3NjcmlwdC10ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuanM6IEFkZGVkLgorICAgICAgICAo
dGVzdDEpOgorICAgICAgICAodGVzdDIpOgorICAgICAgICAodGVzdDMpOgorCiAyMDE0LTAxLTMw
ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHAvdGVz
dHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXBsdWdpbi1wcml2YXRlLWJyb3dzaW5nLXRvZ2dsZWQu
aHRtbCBpcyBmbGFreSBvbiBXSzIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2FycmF5LWV2
ZXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4
dAppbmRleCA1NDFiOGMzNThmMDY4YTBjZWE4ODJjMTA1MTc1MzI1MTE0Y2QzM2Y3Li5jY2EzNjNk
Y2U1OGZiYTk1YTU4Y2U0NmZjYjQ4YzM4YmY1OGFkZjU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9qcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyYXkt
ZXZlcnktZXhwZWN0ZWQudHh0CkBAIC0zMCwxMiArMzAsMTIgQEAgUEFTUyBbMTIsIDUsIDgsIDEz
MCwgNDRdLmV2ZXJ5KGlzQmlnRW5vdWdoQW5kRXhjZXB0aW9uKSB0aHJldyBleGNlcHRpb24gZXhj
ZXB0aW8KIFBBU1MgWzEyLCA1NCwgMTgsIDEzMCwgNDRdLmV2ZXJ5KGlzQmlnRW5vdWdoQW5kRXhj
ZXB0aW9uKSB0aHJldyBleGNlcHRpb24gZXhjZXB0aW9uIGZyb20gZnVuY3Rpb24uCiAKIDUuMCBX
cm9uZyBUeXBlIGZvciBDYWxsYmFjayBUZXN0Ci1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZl
cnkoNSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1
LCA4LCAxMzAsIDQ0XS5ldmVyeSgnd3JvbmcnKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBU
eXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KG5ldyBPYmplY3QoKSkg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAx
MzAsIDQ0XS5ldmVyeShudWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9y
LgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVy
eSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIFsxMiwgNSwg
OCwgMTMwLCA0NF0uZXZlcnkoNSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJv
dG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4
LCAxMzAsIDQ0XS5ldmVyeSgnd3JvbmcnKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJh
eS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIs
IDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KG5ldyBPYmplY3QoKSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4K
K1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShudWxsKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9u
LgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBm
dW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSgpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVu
Y3Rpb24uCiAKIDYuMCBFYXJseSBFeGl0ICgiU2hvcnQgQ2lyY3VpdGluZyIpCiBQQVNTIFsxMiwg
NSwgOCwgMTMwLCA0NF0uZXZlcnkoaXNCaWdFbm91Z2hTaG9ydENpcmN1aXQpIGlzIGZhbHNlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0
aWVzLWV4cGVjdGVkLnR4dAppbmRleCAyYzJhNjhjYjEwNmRhMTBmMDg2YjIyYzViZjJiZjVjOGZl
NzllMzNlLi41ZDllY2I3NWE4ZGE3OWJhNjU2MDVlN2ViOWNmOGZjMjVmZTE4YWZiIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9qcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGll
cy1leHBlY3RlZC50eHQKQEAgLTE1LDcgKzE1LDcgQEAgUEFTUyBBcnJheS5wcm90b3R5cGUuc2xp
Y2UuY2FsbCh1bmRlZmluZWQsIDAsIDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGUK
IFBBU1MgQXJyYXkucHJvdG90eXBlLnNvcnQuY2FsbCh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJh
eS5wcm90b3R5cGUuc29ydC5jYWxsKHVuZGVmaW5lZCknKS4KIFBBU1MgQXJyYXkucHJvdG90eXBl
LnNwbGljZS5jYWxsKHVuZGVmaW5lZCwgMCwgMSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
dW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5z
cGxpY2UuY2FsbCh1bmRlZmluZWQsIDAsIDEpJykuCiBQQVNTIEFycmF5LnByb3RvdHlwZS51bnNo
aWZ0LmNhbGwodW5kZWZpbmVkLCB7fSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZp
bmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS51bnNoaWZ0
LmNhbGwodW5kZWZpbmVkLCB7fSknKS4KLVBBU1MgQXJyYXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwo
dW5kZWZpbmVkLCB0b1N0cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVk
IGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5ldmVyeS5jYWxs
KHVuZGVmaW5lZCwgdG9TdHJpbmcpJykuCitQQVNTIEFycmF5LnByb3RvdHlwZS5ldmVyeS5jYWxs
KHVuZGVmaW5lZCwgdG9TdHJpbmcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnBy
b3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkLgogUEFT
UyBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0
aW5nICdBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpJyku
CiBQQVNTIEFycmF5LnByb3RvdHlwZS5zb21lLmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZykgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1
YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5zb21lLmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZyknKS4K
IFBBU1MgQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbCh1bmRlZmluZWQsIDApIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5n
ICdBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKHVuZGVmaW5lZCwgMCknKS4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xMjkwYzBlZWZmOGRlNDIxODMzZDkyZDI3ZTk1MjQxOTE3NjA0
Yjk2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90
b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9hcnJh
eS1wcm90b3R5cGUtZXZlcnkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
bm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXkt
cHJvdG90eXBlLWV2ZXJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3Rv
dHlwZS1ldmVyeS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlNWNjMTcxYzQ4NzVhMzU4NWJmMTRlNTQxNWY1
Y2QwZTU4MWQ1NDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fy
cmF5LXByb3RvdHlwZS1ldmVyeS5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuanMgYi9MYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL3NjcmlwdC10ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjk0
YWExNjFjMGNlOThiMmFiMThhM2ExYTFmMGRmYWFjOWQ3ZDJlMgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5LXByb3RvdHlwZS1ldmVy
eS5qcwpAQCAtMCwwICsxLDI5IEBACit2YXIgcmVzdWx0ID0gMDsKK2Z1bmN0aW9uIHRlc3QxKGEp
IHsKKyAgICByZXN1bHQgPDwgMTsKKyAgICByZXN1bHQrKzsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
K2Z1bmN0aW9uIHRlc3QyKGEsYikgeworICAgIHJlc3VsdCBePSAzOworICAgIHJlc3VsdCAqPSAz
OworICAgIHJldHVybiB0cnVlOworfQorZnVuY3Rpb24gdGVzdDMoYSxiLGMpIHsKKyAgICByZXN1
bHQgXj0gcmVzdWx0ID4+IDE7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZhciByZXN1bHQgPSAw
OwordmFyIGFycmF5ID0gW10KK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpCisgICAg
YXJyYXlbaV0gPSAxOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHsKKyAgICBhcnJh
eS5ldmVyeSh0ZXN0MSk7CisgICAgYXJyYXkuZXZlcnkodGVzdDIpOworICAgIGFycmF5LmV2ZXJ5
KHRlc3QzKTsKK30KKworaWYgKHJlc3VsdCAhPSAxNDI4ODEwNDk2KQorICAgIHRocm93ICJFcnJv
cjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxlLmFtIGIv
R05VbWFrZWZpbGUuYW0KaW5kZXggNzNmYzQ5MjhjNGRkNDliNTQ5ODY5YjUwNjc4YzZiZGU3NGY0
NDc2MC4uMDhjOTExNTQyNjA1MDBkZTNmZjA0YjAyMGNlMGQ2MGY5OGU4Y2ZlOCAxMDA2NDQKLS0t
IGEvR05VbWFrZWZpbGUuYW0KKysrIGIvR05VbWFrZWZpbGUuYW0KQEAgLTY4LDYgKzY4LDcgQEAg
QUxMX01PRklMRVMgOj0KIGRvbV9iaW5kaW5nX2lkbHMgOj0KIHd0Zl9zb3VyY2VzIDo9CiBqYXZh
c2NyaXB0Y29yZV9oX2FwaSA6PQoramF2YXNjcmlwdGNvcmVfYnVpbHRpbnNfanNfbm9zb3VyY2Vz
IDo9CiBqYXZhc2NyaXB0Y29yZV9jcHBmbGFnczo9CiBqYXZhc2NyaXB0Y29yZV9jZmxhZ3MgOj0K
IGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgOj0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222832</attachid>
            <date>2014-01-31 11:45:52 -0800</date>
            <delta_ts>2014-01-31 12:05:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140131114549.patch</filename>
            <type>text/plain</type>
            <size>206234</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NjgxMzcxYWU2ZDBjYWZlNDJmNWNmN2E1NWI3MjRjMTc5ODExYjBhLi44OWQ0ZmRmOGYwMzA2Y2M5
ZjFiNmM5NDVlZWY3ZDRlMTczOGFhOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
VGhlIHJlc3VsdCBvZiB0aGlzIHJlZmFjdG9yaW5nCisgICAgICAgIGlzIHRoYXQgQ29tbW9uSWRl
bnRpZmllcnMsIGFuZCBhIGZldyBvdGhlciBtaXNjZWxsYW5lb3VzIGhlYWRlcnMgbm93CisgICAg
ICAgIG5lZWQgdG8gYmUgaW5jbHVkZWQgZGlyZWN0bHkgYXMgdGhleSB3ZXJlIGZvcm1lcmx5IGNh
cHR1cmVkIHRocm91Z2ggb3RoZXIKKyAgICAgICAgcGF0aHMuCisKKyAgICAgICAgSW4gYWRkaXRp
b24gdGhpcyBhZGRzIGEgZmxhZyB0byB0aGUgTG9va3VwIHRhYmxlJ3MgaGFzaGVudHJ5IHRvIGlu
ZGljYXRlCisgICAgICAgIHRoYXQgYSBzdGF0aWMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgYmFja2Vk
IGJ5IEpTLiBUaGVyZSBpcyB0aGVuIGEgbG90IG9mCisgICAgICAgIGxvZ2ljIHRvIHRocmVhZCB0
aGUgc3BlY2lhbCBuYXR1cmUgb2YgdGhlIGZ1bmN0b24gdG8gd2hlcmUgaXQgbWF0dGVycy4KKyAg
ICAgICAgVGhpcyBhbGxvd3MgdG9TdHJpbmcoKSwgLmNhbGxlciwgZXRjIHRvIG1pbWljIHRoZSBi
ZWhhdmlvdXIgb2YgYSBob3N0CisgICAgICAgIGZ1bmN0aW9uLgorCisgICAgICAgIE5vdGVzIG9u
IHdyaXRpbmcgYnVpbHRpbnM6CisgICAgICAgICAtIEVhY2ggZnVuY3Rpb24gaXMgY29tcGlsZWQg
aW5kZXBlbmRlbnRseSBvZiB0aGUgb3RoZXJzLCBhbmQgdGhvc2UKKyAgICAgICAgICAgaW1wbGVt
ZW50YXRpb25zIGNhbm5vdCBjdXJyZW50bHkgY2FwdHVyZSBhbGwgZ2xvYmFsIHByb3BlcnRpZXMg
KGFzCisgICAgICAgICAgIHRoYXQgY291bGQgYmUgcG90ZW50aWFsbHkgdW5zYWZlKS4gSWYgYSBm
dW5jdGlvbiBkb2VzIGNhcHR1cmUgYQorICAgICAgICAgICBnbG9iYWwgd2Ugd2lsbCBkZWxpYmVy
YXRlbHkgY3Jhc2guCisgICAgICAgICAtIEZvciB0aG9zZSAiZ2xvYmFsIiBwcm9wZXJ0aWVzIHRo
YXQgd2UgZG8gd2FudCBhY2Nlc3MgdG8sIHdlIHVzZQorICAgICAgICAgICB0aGUgQCBwcmVmaXgs
IGUuZy4gT2JqZWN0KHRoaXMpIGJlY29tZXMgQE9iamVjdCh0aGlzKS4gVGhlIEAgaWRlbnRpZmll
cnMKKyAgICAgICAgICAgYXJlIHByaXZhdGUgbmFtZXMsIGFuZCBiZWhhdmUganVzdCBsaWtlIHJl
Z3VsYXIgcHJvcGVydGllcywgb25seQorICAgICAgICAgICB3aXRob3V0IHRoZSByaXNrIG9mIGFk
dWx0ZXJhdGlvbi4gQWdhaW4sIGluIHRoZSBAT2JqZWN0IGNhc2UsIHdlCisgICAgICAgICAgIGV4
cGxpY2l0bHkgZHVwbGljYXRlIHRoZSBPYmplY3RDb25zdHJ1Y3RvciByZWZlcmVuY2Ugb24gdGhl
IEdsb2JhbE9iamVjdAorICAgICAgICAgICBzbyB0aGF0IHdlIGhhdmUgZ3VhcmFudGVlZCBhY2Nl
c3MgdG8gdGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhlCisgICAgICAgICAgIGNvbnN0cnVjdG9y
LgorICAgICAgICAgLSBjYWxsLCBhcHBseSwgZXZhbCwgYW5kIEZ1bmN0aW9uIGFyZSBhbGwgcmVq
ZWN0ZWQgaWRlbnRpZmllcnMsIGFnYWluCisgICAgICAgICAgIHRvIHByZXZlbnQgYW55dGhpbmcg
ZnJvbSBhY2NpZGVudGFsbHkgdXNpbmcgYW4gYWR1bHRlcmF0ZWQgb2JqZWN0LgorICAgICAgICAg
ICBJbnN0ZWFkIEBjYWxsIGFuZCBAYXBwbHkgYXJlIGF2YWlsYWJsZSwgYW5kIGhhcHBpbHkgdGhl
eSBjb21wbGV0ZWx5CisgICAgICAgICAgIGRyb3AgdGhlIG5lcV9wdHIgaW5zdHJ1Y3Rpb24gYXMg
dGhleSdyZSBkZWZpbmVkIGFzIGFsd2F5cyBiZWluZyB0aGUKKyAgICAgICAgICAgb3JpZ2luYWwg
Y2FsbC9hcHBseSBmdW5jdGlvbnMuCisKKyAgICAgICAgVGhlc2UgcmVzdHJpY3Rpb25zIGFyZSBq
dXN0IGludGVuZGVkIHRvIG1ha2UgaXQgaGFyZGVyIHRvIGFjY2lkZW50YWxseQorICAgICAgICBt
YWtlIGNoYW5nZXMgdGhhdCBhcmUgaW5jb3JyZWN0IChmb3IgaW5zdGFuY2UgY2FsbGluZyB3aGF0
ZXZlciBoYXMgYmVlbgorICAgICAgICBhc3NpZ25lZCB0byBnbG9iYWwuT2JqZWN0LCBpbnN0ZWFk
IG9mIHRoZSBvcmlnaW5hbCBjb25zdHJ1Y3RvciBmdW5jdGlvbikuCisgICAgICAgIEhvd2V2ZXIs
IG1ha2luZyBhIG1pc3Rha2UgbGlrZSB0aGlzIHNob3VsZCByZXN1bHQgaW4gYSBwdXJlbHkgc2Vt
YW50aWMKKyAgICAgICAgZXJyb3IgYXMgZnVuZGFtZW50YWxseSB0aGVzZSBmdW5jdGlvbnMgYXJl
IHRyZWF0ZWQgYXMgdGhvdWdoIHRoZXkgd2VyZQorICAgICAgICByZWd1bGFyIEpTIGNvZGUgaW4g
dGhlIGhvc3QgZ2xvYmFsLCBhbmQgaGF2ZSBubyBtb3JlIHByaXZpbGVnZXMgdGhhbgorICAgICAg
ICBhbnkgb3RoZXIgSlMuCisKKyAgICAgICAgVGhlIGluaXRpYWwgcHJvb2Ygb2YgY29uY2VwdCBp
cyBBcnJheS5wcm90b3R5cGUuZXZlcnksIHRoaXMgc2hvd3MgYSA2NSUKKyAgICAgICAgcGVyZm9y
bWFuY2UgaW1wcm92ZW1lbnQsIGFuZCB0aGF0IGltcHJvdmVtZW50IGlzIHNpZ25pZmljYW50bHkg
aHVydCBieQorICAgICAgICBvdXIgcG9vciBvcHRpbWlzYXRpb24gb2Ygb3BfaW4uCisKKyAgICAg
ICAgQXMgdGhpcyBpcyBzdWNoIGEgbGltaXRlZCBmdW5jdGlvbiwgd2UgaGF2ZSBub3QgeWV0IGV4
cG9ydGVkIGFsbCBzeW1ib2xzCisgICAgICAgIHRoYXQgd2UgY291bGQgcG9zc2libHkgbmVlZCwg
YnV0IGFzIHdlIGltcGxlbWVudCBtb3JlLCB0aGUgbGlrZWxpaG9vZAorICAgICAgICBvZiBlbmNv
dW50ZXJpbmcgbWlzc2luZyBmZWF0dXJlcyB3aWxsIHJlZHVjZS4KKworICAgICAgICBUaGlzIGRp
ZCByZXF1aXJlIGJyZWFraW5nIG91dCBhIEpTU3RyaW5nSW5saW5lcyBoZWFkZXIsIGFuZCByZXF1
aXJlZAorICAgICAgICBmaXhpbmcgYSBmZXcgb2JqZWN0cyB0aGF0IHdlcmUgdHJ5aW5nIHRvIHVz
aW5nIFByb3BlcnR5TmFtZTo6cHVibGljTmFtZQorICAgICAgICByYXRoZXIgdGhhbiBQcm9wZXJ0
eU5hbWU6OnVpZC4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6
CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQpOgorICAg
ICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZSk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGljRnVuY3Rpb25HZXR0
ZXIpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGxiYWNrR2V0
dGVyKToKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy5tYWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
YnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzOgorICAgICAgICAoZXZlcnkpOgorICAgICAgICAq
IGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpC
dWlsdGluRXhlY3V0YWJsZXM6OkJ1aWx0aW5FeGVjdXRhYmxlcyk6CisgICAgICAgIChKU0M6OkJ1
aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ1
aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0
YWJsZXM6OmNyZWF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdX
YXRjaHBvaW50LmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAoSlND
OjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUp
OgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9y
KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToK
KyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpF
eGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OnRvU3RyaWN0bmVzcyk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjppc0J1aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChKU0M6OlVubGlua2Vk
Q29kZUJsb2NrOjppc0J1aWx0aW5GdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzQnVpbHRpbkZ1bmN0aW9u
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Om1ha2VGdW5jdGlvbik6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkNhbGxG
dW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpBcHBseUZ1
bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogY3JlYXRlX2hhc2hf
dGFibGU6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGdlbmVy
YXRlLWpzLWJ1aWx0aW5zOiBBZGRlZC4KKyAgICAgICAgKGdldENvcHlyaWdodCk6CisgICAgICAg
IChnZXRGdW5jdGlvbnMpOgorICAgICAgICAoZ2VuZXJhdGVDb2RlKToKKyAgICAgICAgKG1hbmds
ZU5hbWUpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKElkZW50aWZp
ZXIpOgorICAgICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAgICAgICAoU291cmNlQ29kZSk6Cisg
ICAgICAgIChVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChWTSk6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAqIGludGVycHJldGVy
L1Byb3RvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgICog
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAqIGpzYy5jcHA6CisgICAg
ICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAqIHBhcnNlci9BU1RCdWls
ZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKToK
KyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6TGV4
ZXIpOgorICAgICAgICAoSlNDOjppc1NhZmVJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4
ZXI8TENoYXI+OjpwYXJzZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpMZXhlcjxVQ2hhcj46
OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpsZXgpOgorICAgICAg
ICAqIHBhcnNlci9MZXhlci5oOgorICAgICAgICAoSlNDOjppc1NhZmVJZGVudGlmaWVyKToKKyAg
ICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIpOgorICAgICAgICAqIHBh
cnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpzZXRDbG9zZWRWYXJp
YWJsZXMpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpTY29wZU5v
ZGU6OmNhcHR1cmVkVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6U2NvcGVOb2RlOjpzZXRDbG9z
ZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQcm9ncmFtTm9kZTo6Y2xvc2VkVmFyaWFibGVz
KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OlBhcnNlcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUlubmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmRpZEZpbmlzaFBhcnNp
bmcpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cHJpbnRVbmV4cGVjdGVkVG9r
ZW5UZXh0KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
OjpnZXRVc2VkVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVz
Lmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlclRva2Vucy5oOgorICAgICAgICAqIHJ1bnRpbWUv
QXJnTGlzdC5jcHA6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvQXJndW1lbnRzLmg6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHNJdGVyYXRv
ckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0
RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Q29t
bW9uSWRlbnRpZmllcnMpOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Z2V0UHJp
dmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Z2V0UHVibGljTmFt
ZSk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQ
YXRoc0V4Y2VwdGlvbnMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5j
cHA6CisgICAgICAgIChKU0M6OmNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6
ZXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6ZXhlY3V0
YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1
bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6ZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9K
U0FjdGl2YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxl
R2V0KToKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dCk6CisgICAg
ICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyk6Cisg
ICAgICAgICogcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcDoKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlND
ZWxsSW5saW5lcy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAg
IChKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZSk6CisgICAgICAgIChKU0M6OkpTRnVu
Y3Rpb246OnNvdXJjZUNvZGUpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjppc0hvc3RPckJ1
aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzQnVpbHRpbkZ1bmN0
aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKToKKyAgICAgICAg
KEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVy
dHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmg6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
OjpyZXNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjpvYmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpzeW1ib2xUYWJsZUhhc1Byb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGVsZXRlKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5j
cHA6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAg
ICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90
KToKKyAgICAgICAgKEpTQzo6aW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKToKKyAgICAg
ICAgKEpTQzo6SlNWYWx1ZTo6dG9XVEZTdHJpbmdJbmxpbmUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNTeW1ib2xUYWJsZU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTU3ltYm9sVGFibGVPYmpl
Y3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgICAgIERvbid0IHJlcG9y
dCBwcml2YXRlIG5hbWVzLgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5o
OgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZUdldCk6CisgICAgICAgIChKU0M6OnN5bWJvbFRh
YmxlUHV0KToKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyk6Cisg
ICAgICAgICogcnVudGltZS9Mb29rdXAuY3BwOgorICAgICAgICAoSlNDOjpzZXRVcFN0YXRpY0Z1
bmN0aW9uU2xvdCk6CisgICAgICAgICogcnVudGltZS9Mb29rdXAuaDoKKyAgICAgICAgKEpTQzo6
SGFzaEVudHJ5OjpidWlsdGluR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpw
cm9wZXJ0eUdldHRlcik6CisgICAgICAgIChKU0M6Okhhc2hFbnRyeTo6cHJvcGVydHlQdXR0ZXIp
OgorICAgICAgICAoSlNDOjpIYXNoVGFibGU6OmVudHJ5KToKKyAgICAgICAgKEpTQzo6Z2V0U3Rh
dGljUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6Z2V0U3RhdGljVmFsdWVTbG90KToKKyAg
ICAgICAgKEpTQzo6cHV0RW50cnkpOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaDoK
KyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVn
RXhwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5jcHA6CisgICAgICAgICogcnVudGltZS9T
dHJ1Y3R1cmUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpW
TTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6Vk06OmJ1aWx0
aW5FeGVjdXRhYmxlcyk6CisKIDIwMTQtMDEtMjkgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxl
LmNvbT4KIAogICAgICAgICBGVEwgc2hvdWxkIHN1cHBvcnQgR2V0QnlJZChVbnR5cGVkOikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCAxYWQ2OTc0ODhiMGM0YjhiNGNmYWUyOTEzNTQyNTliNmRhY2ZkYzQ1Li5mM2Mz
ZDcxNzFkMDU0NDgwZWM2MDU0MGMwZDUyNTk5NmVlY2RiOWEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBKUwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRpbmcg
Zm9yIHRoZSBuZXdseSByZXF1aXJlZCBoZWFkZXJzLgorCisgICAgICAgIFRlc3Q6IGpzL3JlZ3Jl
c3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwKKworICAgICAgICAqIEZvcndhcmRpbmdIZWFk
ZXJzL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMv
cGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNJREJBbnlDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCRGF0
YWJhc2VDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVD
dXN0b20uY3BwOgorCiAyMDE0LTAxLTMwICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgV2ViR0wgbG9hZCBwb2xpY3kgc2hvdWxkIGJlIHF1ZXJpZWQgZm9yIHRo
ZSB0b3AgbGV2ZWwgZG9jdW1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCmluZGV4IDViZTA1M2YxZTA4NmI0M2U2ODZj
MzY3NGRhZTdjNTE2MDVhMjg2ZTcuLjBlY2VkNTFmM2UyZDViNjIxZGFkZjA1NzQ5ZjVlNzQ2NmEw
NmY1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09i
amVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdEZ1bmN0aW9ucy5oCkBAIC0xMzYsNyArMTM2LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGUKICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CiAgICAg
UmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0Ns
YXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNz
ID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIC8vIG9wdGlvbmFsIG9wdGlt
aXphdGlvbiB0byBieXBhc3MgZ2V0UHJvcGVydHkgaW4gY2FzZXMgd2hlbiB3ZSBvbmx5IG5lZWQg
dG8ga25vdyBpZiB0aGUgcHJvcGVydHkgZXhpc3RzCiAgICAgICAgICAgICBpZiAoSlNPYmplY3RI
YXNQcm9wZXJ0eUNhbGxiYWNrIGhhc1Byb3BlcnR5ID0ganNDbGFzcy0+aGFzUHJvcGVydHkpIHsK
QEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcAogICAgIFJlZlB0cjxP
cGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwogICAgIEpTVmFsdWVSZWYgdmFsdWVSZWYg
PSB0b1JlZihleGVjLCB2YWx1ZSk7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBw
cm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBw
cm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0
aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50
Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdFNldFByb3BlcnR5Q2FsbGJhY2sgc2V0
UHJvcGVydHkgPSBqc0NsYXNzLT5zZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIGlmICgh
cHJvcGVydHlOYW1lUmVmKQpAQCAtMzQzLDcgKzM0Myw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvCiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmplY3QpOwogICAgIFJl
ZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwogICAgIAotICAgIGlmIChTdHJp
bmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJp
bmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFz
c1JlZiBqc0NsYXNzID0gdGhpc09iamVjdC0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9
IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgICAgICBpZiAoSlNPYmplY3REZWxldGVQ
cm9wZXJ0eUNhbGxiYWNrIGRlbGV0ZVByb3BlcnR5ID0ganNDbGFzcy0+ZGVsZXRlUHJvcGVydHkp
IHsKICAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5TmFtZVJlZikKQEAgLTU2NCw3ICs1NjQs
NyBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0U3RhdGljVmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcAogewogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYg
PSB0b1JlZih0aGlzKTsKICAgICAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5
TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5
TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IGNsYXNzUmVm
KCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAg
ICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZSogc3RhdGljVmFsdWVzID0ganND
bGFzcy0+c3RhdGljVmFsdWVzKGV4ZWMpKSB7CiAgICAgICAgICAgICAgICAgaWYgKFN0YXRpY1Zh
bHVlRW50cnkqIGVudHJ5ID0gc3RhdGljVmFsdWVzLT5nZXQobmFtZSkpIHsKQEAgLTYwMCw3ICs2
MDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1
bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRQogICAgIGlmIChQYXJlbnQ6OmdldE93blBy
b3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QyKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90Mi5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUp
KTsKIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUo
KSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CiAg
ICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iai0+Y2xhc3NSZWYoKTsganND
bGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgICAgICBpZiAo
T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlKiBzdGF0aWNGdW5jdGlvbnMgPSBqc0Ns
YXNzLT5zdGF0aWNGdW5jdGlvbnMoZXhlYykpIHsKICAgICAgICAgICAgICAgICBpZiAoU3RhdGlj
RnVuY3Rpb25FbnRyeSogZW50cnkgPSBzdGF0aWNGdW5jdGlvbnMtPmdldChuYW1lKSkgewpAQCAt
NjI2LDcgKzYyNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6
Y2FsbGJhY2tHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkCiAgICAgSlNPYmplY3RSZWYg
dGhpc1JlZiA9IHRvUmVmKHRoaXNPYmopOwogICAgIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJv
cGVydHlOYW1lUmVmOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlO
YW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlO
YW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iai0+
Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAg
ICAgICAgICAgICBpZiAoSlNPYmplY3RHZXRQcm9wZXJ0eUNhbGxiYWNrIGdldFByb3BlcnR5ID0g
anNDbGFzcy0+Z2V0UHJvcGVydHkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5TmFt
ZVJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAyN2JjNGMxN2YzZGZl
ZWI2MWQyNTIzMjNmZDg3OGM0NDc4MGY3NGM1Li5iNDNlMDVjODJiYjk4ZDU4ZWZiYjhjNThhYjlh
ODNmMWE3NjUxNzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01LDYg
KzUsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMiCiAgICAgIiR7SkFWQVNDUklQVENP
UkVfRElSfS9hc3NlbWJsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9iaW5kaW5ncyIK
KyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zIgogICAgICIke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vYnl0ZWNvZGUiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9ieXRlY29tcGls
ZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9kZmciCkBAIC01Miw2ICs1Myw4IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcAog
ICAgIGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAogCisgICAgYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcAorCiAgICAgYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAKICAg
ICBieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Js
b2NrLmNwcApAQCAtNzA3LDcgKzcxMCw3IEBAIHNldChIQVNIX0xVVF9HRU5FUkFUT1IgJHtDTUFL
RV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2NyZWF0ZV9oYXNoX3RhYmxlKQogbWFjcm8oR0VORVJBVEVf
SEFTSF9MVVQgX2lucHV0IF9vdXRwdXQpCiAgICAgYWRkX2N1c3RvbV9jb21tYW5kKAogICAgICAg
ICBPVVRQVVQgJHtfb3V0cHV0fQotICAgICAgICBERVBFTkRTICR7SEFTSF9MVVRfR0VORVJBVE9S
fSAke19pbnB1dH0KKyAgICAgICAgREVQRU5EUyAke0hBU0hfTFVUX0dFTkVSQVRPUn0gJHtfaW5w
dXR9ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucwogICAg
ICAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke0hBU0hfTFVUX0dFTkVSQVRPUn0gJHtf
aW5wdXR9IC1pID4gJHtfb3V0cHV0fQogICAgICAgICBWRVJCQVRJTSkKICAgICBsaXN0KEFQUEVO
RCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTICR7X291dHB1dH0pCkBAIC03MzYsNiArNzM5LDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX0ZPUldBUkRJTkdfSEVBREVSU19ESVJFQ1RPUklFUwogICAgIHlh
cnIKIAogICAgIGNvbGxlY3Rvci9oYW5kbGVzCisgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVND
UklQVENPUkVfRElSfQogKQogCiBzZXQoSmF2YVNjcmlwdENvcmVfRk9SV0FSRElOR19IRUFERVJT
X0ZJTEVTCkBAIC03NjMsOCArNzY3LDExIEBAIHNldChKYXZhU2NyaXB0Q29yZV9GT1JXQVJESU5H
X0hFQURFUlNfRklMRVMKICAgICBhc3NlbWJsZXIvTGlua0J1ZmZlci5oCiAgICAgYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyLmgKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgK
KyAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgKICAgICBqaXQvR1BSSW5mby5o
CiAgICAgcnVudGltZS9WTS5oCisKKyAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09S
RV9ESVJ9L0pTQ0J1aWx0aW5zLmgKICkKIAogCkBAIC04MTUsMTYgKzgyMiwyNyBAQCBhZGRfY3Vz
dG9tX2NvbW1hbmQoCiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3Jp
cHRDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0vQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTLmpzb24gLS1v
dXRwdXRfaF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0
cHV0X2NwcF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0
cHV0X2pzX2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIgLS1vdXRw
dXRfdHlwZSBKYXZhU2NyaXB0IC0td3JpdGVfYWx3YXlzICYmIG1rZGlyIC1wICR7REVSSVZFRF9T
T1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yICYmIGNwICR7REVSSVZFRF9TT1VS
Q0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTRnJvbnRlbmRE
aXNwYXRjaGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVj
dG9ySlNUeXBlQnVpbGRlcnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9
L2luc3BlY3RvcgogICAgIFZFUkJBVElNKQogCisjIEpTQ0J1aWx0aW5zCitmaWxlKEdMT0IgSlND
QnVpbHRpbnNfanNfZmlsZXMgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9idWlsdGlucy8q
LmpzIikKK2FkZF9jdXN0b21fY29tbWFuZCgKKyAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19K
QVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcCAke0RFUklWRURfU09VUkNFU19KQVZB
U0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKKyAgIE1BSU5fREVQRU5ERU5DWSAke0NNQUtF
X0NVUlJFTlRfU09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMKKyAgIERFUEVORFMgJHtK
U0NCdWlsdGluc19qc19maWxlc30KKyAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtD
TUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zICR7SlNDQnVpbHRp
bnNfanNfZmlsZXN9ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVp
bHRpbnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5z
LmNwcAorICAgVkVSQkFUSU0pCisKIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMK
ICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTQmFj
a2VuZERpc3BhdGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0vSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9T
T1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwCisg
ICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5jcHAK
ICkKIAogbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUwogICAgICR7REVSSVZFRF9T
T1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMu
aAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNG
cm9udGVuZERpc3BhdGNoZXJzLmgKICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09S
RV9ESVJ9L0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgKKyAgICAke0RFUklWRURfU09VUkNFU19K
QVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKICkKIAogYWRkX2N1c3RvbV9jb21tYW5k
KApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2Ug
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAxMTU2ZTk3
ZmQ4ODYyNTU3YzljZjhkM2I2OGJmNGQwM2MzZThiYThmLi5hODNiZGNhZDUxYjA2Njg4NjY3YTZi
NzMyMDU3ZTRjZGM4OTYwYTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQpAQCAtMjgsOCArMjgsOSBAQCBWUEFUSCA9IFwKICAgICAkKEphdmFTY3JpcHRDb3Jl
KSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvcGFyc2VyIFwKICAgICAkKEphdmFTY3JpcHRDb3Jl
KS9ydW50aW1lIFwKLSAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnRlcnByZXRlciBcCi0gICAgJChK
YXZhU2NyaXB0Q29yZSkvaml0IFwKKwkkKEphdmFTY3JpcHRDb3JlKS9pbnRlcnByZXRlciBcCisJ
JChKYXZhU2NyaXB0Q29yZSkvaml0IFwKKwkkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucyBcCiAj
CiAKIC5QSE9OWSA6IGFsbApAQCAtNTcsOCArNTgsMTggQEAgYWxsIDogXAogICAgIFJlZ0V4cE9i
amVjdC5sdXQuaCBcCiAgICAgU3RyaW5nQ29uc3RydWN0b3IubHV0LmggXAogICAgIHVkaXM4Nl9p
dGFiLmggXAorICAgIEpTQ0J1aWx0aW5zIFwKICMKIAorIyBidWlsdGluIGZ1bmN0aW9ucworLlBI
T05ZOiBKU0NCdWlsdGlucworCitKU0NCdWlsdGluczogJChKYXZhU2NyaXB0Q29yZSkvZ2VuZXJh
dGUtanMtYnVpbHRpbnMgSlNDQnVpbHRpbnMuaCBKU0NCdWlsdGlucy5jcHAKK0pTQ0J1aWx0aW5z
Lmg6ICQoSmF2YVNjcmlwdENvcmUpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zICQoSmF2YVNjcmlwdENv
cmUpL2J1aWx0aW5zLyouanMKKwlweXRob24gJF4gJEAKKwkJCQkJCQkJCQkJCQkJCQkJCQkJIAor
SlNDQnVpbHRpbnMuY3BwOiBKU0NCdWlsdGlucy5oCisKICMgbG9va3VwIHRhYmxlcyBmb3IgY2xh
c3NlcwogCiAlLmx1dC5oOiBjcmVhdGVfaGFzaF90YWJsZSAlLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0dOVW1ha2VmaWxlLmFtCmluZGV4IGZlNTQ0OGRkYzFiY2ZhYTRjNzI5YTFjYzAwZGVhNjI0MzE5
MzkwYTIuLjU1NjlmNTAyOGQ4YzNjZGQ1YTA0ZGM5MzY2YTg0YjA0ZWVjNDgxNTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTUxLDYgKzUxLDcgQEAgamF2YXNjcmlwdGNv
cmVfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Gb3J3
YXJkaW5nSGVhZGVycyBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
YmxlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzIFwKKwkt
SSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMgXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyIFwKQEAgLTExMCwxMiArMTExLDE2IEBAIERlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaDogJChqYXZhc2NyaXB0Y29yZV9zb3Vy
Y2VzKSAkCiAJJChBTV9WX0dFTikkKFJVQlkpICQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiICQoc3JjZGlyKS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gJEAKIAkkKEFN
X1ZfYXQpdG91Y2ggJEAKIAotJChQcm9ncmFtc19MTEludE9mZnNldHNFeHRyYWN0b3JfT0JKRUNU
Uyk6IERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaAor
JChQcm9ncmFtc19MTEludE9mZnNldHNFeHRyYWN0b3JfT0JKRUNUUyk6IERlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaCAKIAogRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvTExJbnRBc3NlbWJseS5oOiBQcm9ncmFtcy9MTEludE9mZnNldHNFeHRy
YWN0b3IkKEVYRUVYVCkKIAkkKEFNX1ZfR0VOKSQoUlVCWSkgJChzcmNkaXIpL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYiAkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIFByb2dyYW1zL0xMSW50T2Zmc2V0c0V4
dHJhY3RvciQoRVhFRVhUKSAkQAogCSQoQU1fVl9hdCl0b3VjaCAkQAogCitEZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5oOiBEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0
Q29yZS9KU0NCdWlsdGlucy5jcHAKK0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1
aWx0aW5zLmNwcDogJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1qcy1i
dWlsdGlucyAkKGphdmFzY3JpcHRjb3JlX2J1aWx0aW5zX2pzX25vc291cmNlcykKKwkkKEFNX1Zf
R0VOKSQoUFlUSE9OKSAkXiAkQAorCiAkKGxpYmphdmFzY3JpcHRjb3JlZ3RrX0BXRUJLSVRHVEtf
QVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX09CSkVD
VFMpOiBEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9MTEludEFzc2VtYmx5LmgKIAoganNj
OiAkKGphdmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcykgUHJvZ3JhbXMvanNjJChFWEVFWFQp
CkBAIC0yMTYsNiArMjIxLDcgQEAgRVhUUkFfRElTVCArPSBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL0tleXdvcmRMb29rdXBHZW5lcmF0b3IucHkgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvS2V5d29yZHMudGFibGUgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9USEFOS1MgXAor
CSQoamF2YXNjcmlwdGNvcmVfYnVpbHRpbnNfanNfbm9zb3VyY2VzKSBcCiAJJChsbGludF9ub3Nv
dXJjZXMpIFwKIAkkKG9mZmxpbmVhc21fbm9zb3VyY2VzKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGNkYjU0MjZiMDZiNTJhOTgyNTZlZTkwNThiYmE4
ZjExZWVhNjllZTAuLjk4ZmFhYTdkMTc1YWE2MWYyMDg5NmNlZWIxMzg2M2UyN2IyNjZjZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yMCw2ICsyMCw4
IEBAIGphdmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvRXJyb3JQcm90b3R5cGUubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL0pTRGF0YVZpZXdQcm90b3R5cGUubHV0LmggXAogCURlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0Lmx1dC5oIFwKKwlEZXJpdmVkU291cmNlcy9K
YXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5jcHAgXAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL0pTQ0J1aWx0aW5zLmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pT
T05PYmplY3QubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTUHJvbWlz
ZUNvbnN0cnVjdG9yLmx1dC5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU1By
b21pc2VQcm90b3R5cGUubHV0LmggXApAQCAtMzUsNiArMzcsOSBAQCBqYXZhc2NyaXB0Y29yZV9i
dWlsdF9ub3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50
RGVzaXJlZE9mZnNldHMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnRB
c3NlbWJseS5oCiAKK2phdmFzY3JpcHRjb3JlX2J1aWx0aW5zX2pzX25vc291cmNlcyArPSBcCisJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcworCiBqYXZh
c2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNh
bGxiYWNrRnVuY3Rpb24uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0Lmgg
XApAQCAtMTAyLDYgKzEwNyw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogICAgIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRPYmplY3QuaCBcCiAgICAgU291cmNl
L0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcCBcCiAgICAgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmggXAorICAgIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIFwKKyAgICBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAgXApAQCAtMTI0MSw3
ICsxMjQ4LDkgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcCBcCiAJRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJz
LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpTVHlwZUJ1aWxk
ZXJzLmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNUeXBl
QnVpbGRlcnMuaAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpTVHlw
ZUJ1aWxkZXJzLmggXAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5z
LmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNDQnVpbHRpbnMuaAogCiBs
bGludF9ub3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qCmluZGV4IDVlZGVmZGJlODU1Zjk2YTYyNjhkODU3M2JlYzFkMGMzZDg1OGFhNWMuLmExMmRi
MTgzNDg2ZGZiYmNhODNmM2E3OGU5Y2Y5ODYzMWIyNjUzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvagpAQCAtMzA5LDYgKzMwOSw3IEBACiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0T2JqZWN0LmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdFZhbHVlLmNwcCIgLz4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxl
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5UHJvZmls
ZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeXRlY29kZUJh
c2ljQmxvY2suY3BwIiAvPgpAQCAtNzIxLDYgKzcyMiw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hl
cnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEluc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNUeXBlQnVpbGRl
cnMuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEpTQ0J1aWx0aW5zLmNwcCIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcQXJyYXlDb25z
dHJ1Y3Rvci5sdXQuaCIgLz4KQEAgLTc1MCw2ICs3NTIsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFJlZ0V4cE9iamVjdC5sdXQuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xSZWdFeHBQcm90
b3R5cGUubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcU3RyaW5nQ29uc3RydWN0b3IubHV0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuaCIgLz4KICAgPC9JdGVt
R3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcQVBJ
Q2FsbGJhY2tGdW5jdGlvbi5oIiAvPgpAQCAtNzk4LDYgKzgwMSw3IEBACiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdE9iamVjdC5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0VmFsdWUuaCIgLz4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxlcy5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlQcm9maWxlLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeVZhbEluZm8uaCIgLz4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA4
N2UxMmE0NzE1OGJiNjIyNGQ0OWZkNjIyOTc4YzRhOWM0NDM1YTY1Li44NjljMWY1ODliY2I2ODZl
YjljZjIwYzA5NmJlMWI4M2E1NTFlMjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC03LDYgKzcsOSBAQAogICAgIDxGaWx0ZXIgSW5j
bHVkZT0iYmluZGluZ3MiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezBiYWNlMTIzLTQ1ODIt
ZWViYy05MzE0LTc4MTliMzc2YzE5OH08L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+
CisgICAgPEZpbHRlciBJbmNsdWRlPSJidWlsdGlucyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmll
cj57M2I5ZDcyYTUtMTM1Yi00M2IzLWE1MjQtYzZkMmI5ZDI5ZDM1fTwvVW5pcXVlSWRlbnRpZmll
cj4KKyAgICA8L0ZpbHRlcj4KICAgICA8RmlsdGVyIEluY2x1ZGU9ImJ5dGVjb2RlIj4KICAgICAg
IDxVbmlxdWVJZGVudGlmaWVyPns3NjYwODhhMC0xMjE2LTQ4NTQtYWE0My01NjBjNWUyODM2Njh9
PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgpAQCAtMTA4LDYgKzExMSw5IEBACiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcTWFjcm9Bc3NlbWJsZXIuY3BwIj4K
ICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWlsdGluRXhlY3V0YWJsZXMuY3BwIj4K
KyAgICAgIDxGaWx0ZXI+YnVpbHRpbnM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3Bw
Ij4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAg
LTEzMjksNiArMTMzNSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwIj4KICAgICAgIDxGaWx0ZXI+
RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuY3BwIj4KKyAg
ICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAg
IDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
QVBJXEFQSUNhbGxiYWNrRnVuY3Rpb24uaCI+CkBAIC0xNDU0LDYgKzE0NjMsOSBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXFg4NkFzc2VtYmxlci5oIj4KICAgICAgIDxG
aWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWlsdGluRXhlY3V0YWJsZXMuaCI+CisgICAgICA8Rmls
dGVyPmJ1aWx0aW5zPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmgiPgogICAgICAgPEZp
bHRlcj5ieXRlY29kZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMjU1MCw2ICsyNTYy
LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xB
cnJheVByb3RvdHlwZS5sdXQuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmls
dGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmgiPgorICAgICAgPEZpbHRlcj5EZXJpdmVkIFNv
dXJjZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcVk0uaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlQ29tbW9uLnByb3BzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmVDb21tb24ucHJvcHMK
aW5kZXggMzYyMmZmYzU3N2M0M2RkZjcwZGE1MWZmNjhhZDY0NmY2MzA0ZTU2Ny4uYzU4ODg3MGMy
ZmQxM2Q2MDc2ZDM4ZjUyY2E2MjI1ZGIyODcyYzc4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmVDb21tb24ucHJv
cHMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmVDb21tb24ucHJvcHMKQEAgLTUsNyArNSw3IEBACiAgIDxQcm9wZXJ0eUdyb3Vw
IC8+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlw7Li5cdG9vbHNcOy4uXHJ1bnRpbWVcOy4uXGxs
aW50XDsuLlxqaXRcOy4uXGRpc2Fzc2VtYmxlclw7Li5caGVhcFw7Li5cZGVidWdnZXJcOy4uXGFz
c2VtYmxlclw7Li5ccHJvZmlsZXJcOy4uXHlhcnJcOy4uXGludGVycHJldGVyXDsuLlxieXRlY29k
ZVw7Li5cZGZnXDsuLlxieXRlY29tcGlsZXJcOy4uXHBhcnNlclw7Li5cQVBJXDsuLlxmdGxcOy4u
XGJpbmRpbmdzXDsuLlxpbnNwZWN0b3JcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBs
YXRmb3JtQXJjaGl0ZWN0dXJlKVxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1w7JChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNs
dWRlXEphdmFTY3JpcHRDb3JlXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2
YXRlXDskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGU7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNs
dWRlXHByaXZhdGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4u
XDsuLlx0b29sc1w7Li5ccnVudGltZVw7Li5cbGxpbnRcOy4uXGppdFw7Li5cZGlzYXNzZW1ibGVy
XDsuLlxoZWFwXDsuLlxkZWJ1Z2dlclw7Li5cYXNzZW1ibGVyXDsuLlxwcm9maWxlclw7Li5ceWFy
clw7Li5caW50ZXJwcmV0ZXJcOy4uXGJ5dGVjb2RlXDsuLlxidWlsdGluc1w7Li5cZGZnXDsuLlxi
eXRlY29tcGlsZXJcOy4uXHBhcnNlclw7Li5cQVBJXDsuLlxmdGxcOy4uXGJpbmRpbmdzXDsuLlxp
bnNwZWN0b3JcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1w7JChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXGluY2x1ZGVcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRD
b3JlXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXDskKFdlYktpdF9M
aWJyYXJpZXMpXGluY2x1ZGU7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlXHByaXZhdGU7JShB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cz4KICAgICAgIDxGb3JjZWRJbmNsdWRlRmlsZXM+SUNVVmVyc2lvbi5oOyUoRm9yY2VkSW5jbHVk
ZUZpbGVzKTwvRm9yY2VkSW5jbHVkZUZpbGVzPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5r
PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovY29weS1maWxlcy5jbWQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9jb3B5LWZpbGVzLmNtZAppbmRleCA5NDMzNDNhNTY4ZTNlMjk5ODE2YmY2NmYyZWRi
NTI0MzU4ZmM1NGU4Li5lMGMxZjI5NjYxOTZiZGEzMDAzNTk1YzVkZjAzZWVlMDhhMGRhNzhmIDEw
MDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9j
b3B5LWZpbGVzLmNtZAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9jb3B5LWZpbGVzLmNtZApAQCAtNDIsNiArNDIsNyBAQCBmb3IgJSVkIGluICgKICAg
ICBhc3NlbWJsZXINCiAgICAgYmluZGluZ3MNCiAgICAgYnl0ZWNvZGUNCisgICAgYnVpbHRpbnMN
CiAgICAgZGZnDQogICAgIGRpc2Fzc2VtYmxlcg0KICAgICBoZWFwDQpAQCAtNzIsNiArNzMsOSBA
QCB4Y29weSAveSAiJURlcml2ZWRTb3VyY2VzRGlyZWN0b3J5JVxJbnNwZWN0b3JKU1R5cGVCdWls
ZGVycy5oIiAiJVByaXZhdGVIZWFkZXJzRAogeGNvcHkgL3kgIiVEZXJpdmVkU291cmNlc0RpcmVj
dG9yeSVcSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCIgIiVQcml2YXRlSGVhZGVyc0Rp
cmVjdG9yeSUiID5OVUwNCiB4Y29weSAveSAiJURlcml2ZWRTb3VyY2VzRGlyZWN0b3J5JVxJbnNw
ZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuaCIgIiVQcml2YXRlSGVhZGVyc0RpcmVjdG9yeSUi
ID5OVUwNCiANCitlY2hvIENvcHlpbmcgYnVpbHRpbnMgaGVhZGVyIGFzIGlmIGl0IHdlcmUgYSBw
cml2YXRlIGhlYWRlci4uLg0KK3hjb3B5IC95ICIlRGVyaXZlZFNvdXJjZXNEaXJlY3RvcnklXEpT
Q0J1aWx0aW5zLmgiICIlUHJpdmF0ZUhlYWRlcnNEaXJlY3RvcnklIiA+TlVMDQorDQogZWNobyBD
b3B5aW5nIHJlc291cmNlcy4uLg0KIG1rZGlyICIlUmVzb3VyY2VzRGlyZWN0b3J5JSIgMj5OVUwN
CiB4Y29weSAveSAvZCBKYXZhU2NyaXB0Q29yZS5yZXNvdXJjZXNcKiAiJVJlc291cmNlc0RpcmVj
dG9yeSUiID5OVUwNCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI3ZTg3Njc0MGE5
NjRiMDI4OTg0ZWQ2NzgxNjE4MjBhNWRjZjc3YzQuLjkxMTU3M2FiMTdkMzM5NzRhYTdjOWEwMTFk
YjIwMGIwOWFmNzhiZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MjIsNyAr
OTIyLDYgQEAKIAkJQTUwM0ZBMTkxODhFMEZCMDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJh
bWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUw
M0ZBMTMxODhFMEZBRjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwICovOyB9Owog
CQlBNTAzRkExQTE4OEUwRkIwMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTQxODhFMEZB
RjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCAqLzsgfTsKIAkJQTUwM0ZBMUIxODhF
MEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNTE4OEUwRkIwMDAxMTBGMTQg
LyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLzsgfTsKLQkJQTUwM0ZBMUMxODhFMEZCMDAw
MTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTYxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2
YVNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQlBNTAzRkExRDE4OEUwRkIwMDAxMTBGMTQgLyog
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE3MTg4RTBGQjAwMDExMEYxNCAvKiBKU0ph
dmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwICovOyB9OwogCQlBNTAzRkExRTE4OEUwRkIw
MDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExODE4OEUwRkIwMDAxMTBG
MTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggKi87IH07CiAJCUE1MDNGQTIx
MTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExRjE4OEVGRjY4MDAxMTBGMTQgLyog
U2NyaXB0QnJlYWtwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0xMDI0LDYgKzEwMjMsNyBAQAogCQlBNzBCMDgzMjE3QTBCNzlCMDBEQUYx
NEIgLyogREZHQmluYXJ5U3dpdGNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3MEIwODMwMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0
Y2guY3BwICovOyB9OwogCQlBNzBCMDgzMzE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dp
dGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzBC
MDgzMTE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmggKi87IH07CiAJCUE3MTIz
NkU1MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxMjM2RTQxMTk1RjMzQzAwQkQyMTc0
IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgKi87IH07CisJCUE3MURBODBGMTg4MERCQUIwMEQxRjI5
OSAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3MURBODBFMTg4MERCQUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzIw
MjhCNjE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjAyOEI0MTc5NzYwMUUwMDk4
MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwICovOyB9OwogCQlBNzIwMjhCODE3OTc2MDFF
MDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIwMjhCNTE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVz
dFJ1bm5lclV0aWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQTcyMDI4QkExNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIwMjhCOTE3
OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTE1MCw2ICsxMTUwLDEwIEBACiAJCUE3
Q0EzQUU4MTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0EzQUUyMTdEQTQxQUUwMDY1MzhBRiAvKiBK
U1dlYWtNYXAuaCAqLzsgfTsKIAkJQTdDQTNBRUIxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBE
YXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
Q0EzQUU5MTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5jcHAgKi87IH07CiAJCUE3Q0Ez
QUVDMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDQTNBRUExN0RBNTE2ODAwNjUzOEFGIC8qIFdl
YWtNYXBEYXRhLmggKi87IH07CisJCUE3RDgwMUE0MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGlu
RXhlY3V0YWJsZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTdEODAxQTExODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAg
Ki87IH07CisJCUE3RDgwMUE1MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDgwMUEy
MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBN0Q4MDFBODE4ODBENkE4MDAyNkMz
OUIgLyogSlNDQnVpbHRpbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTdEODAxQTYxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCAq
LzsgfTsKKwkJQTdEODAxQTkxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4MDFBNzE4ODBENkE4
MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlBN0Q4OUNGMjE3QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNC
bG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
N0Q4OUNFMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgKi87IH07CiAJCUE3
RDg5Q0YzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4OUNFNDE3QTBCOEND
MDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwICovOyB9OwogCQlBN0Q4OUNGNDE3
QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDg5Q0U1MTdBMEI4Q0MwMDc3M0FEOCAv
KiBERkdCbG9ja0luc2VydGlvblNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0yNDYyLDYgKzI0NjYsOCBAQAogCQlBNzEyMzZFNDExOTVGMzND
MDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpJVE9wY29kZXMzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE3MThGNjFBMTE3NTRBMjEwMDI0NjVBNyAvKiBSZWdFeHBKaXRUYWJsZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwSml0VGFibGVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MThGODIxMTE3OEVCNEIwMDI0NjVBNyAvKiBjcmVhdGVf
cmVnZXhfdGFibGVzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5
cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBjcmVhdGVf
cmVnZXhfdGFibGVzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzFEQTgwRDE4ODBE
NzFGMDBEMUYyOTkgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlw
dC5weXRob247IHBhdGggPSAiZ2VuZXJhdGUtanMtYnVpbHRpbnMiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBNzFEQTgwRTE4ODBEQkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxpbmVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nSW5saW5lcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzIwMjhCNDE3OTc2MDFFMDA5ODAyOEMgLyog
SlNDVGVzdFJ1bm5lclV0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE3MjAyOEI1MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDVGVzdFJ1bm5lclV0aWxzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI5MTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0
aW9uSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Z1bmN0aW9u
SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU5MCw2ICsyNTk2LDEx
IEBACiAJCUE3Q0EzQUUyMTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWFrTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE3Q0EzQUU5MTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrTWFwRGF0YS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Q0EzQUVBMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFr
TWFwRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrTWFwRGF0YS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFBMDE4ODBENjZFMDAyNkMzOUIg
LyogQXJyYXkucHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBw
YXRoID0gQXJyYXkucHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
N0Q4MDFBMTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBC
dWlsdGluRXhlY3V0YWJsZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVp
bHRpbkV4ZWN1dGFibGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUE2
MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0NCdWlsdGlucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUE3RDgwMUE3MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBN0Q4OUNFMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdCYXNpY0Jsb2NrLmNw
cDsgcGF0aCA9IGRmZy9ERkdCYXNpY0Jsb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTdEODlDRTQxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Jsb2NrSW5zZXJ0aW9u
U2V0LmNwcDsgcGF0aCA9IGRmZy9ERkdCbG9ja0luc2VydGlvblNldC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE3RDg5Q0U1MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0lu
c2VydGlvblNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCbG9ja0lu
c2VydGlvblNldC5oOyBwYXRoID0gZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTI2LDYgKzI5MzcsNyBAQAogCQkJCTg2MDRGNEYyMTQz
QTZDNDQwMEIyOTVGNSAvKiBDaGFuZ2VMb2cgKi8sCiAJCQkJRjY5MkE4NTQwMjU1NTk3RDAxRkY2
MEY3IC8qIGNyZWF0ZV9oYXNoX3RhYmxlICovLAogCQkJCUE3MThGODIxMTE3OEVCNEIwMDI0NjVB
NyAvKiBjcmVhdGVfcmVnZXhfdGFibGVzICovLAorCQkJCUE3MURBODBEMTg4MEQ3MUYwMEQxRjI5
OSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAqLywKIAkJCQk0NUUxMkQ4ODA2QTQ5QjBGMDBFOURG
ODQgLyoganNjLmNwcCAqLywKIAkJCQlGNjhFQkI4QzAyNTVENEM2MDFGRjYwRjcgLyogY29uZmln
LmggKi8sCiAJCQkJRjVDMjkwRTYwMjg0Rjk4RTAxODYzNUNBIC8qIEphdmFTY3JpcHRDb3JlUHJl
Zml4LmggKi8sCkBAIC0yOTM0LDYgKzI5NDYsNyBAQAogCQkJCTE0MzJFQkQ3MEEzNENBRDQwMDcx
N0I5RiAvKiBBUEkgKi8sCiAJCQkJOTY4OENCMTIwRUQxMkI0RTAwMUQ2NDlGIC8qIGFzc2VtYmxl
ciAqLywKIAkJCQlBNTRDRjJFQTE4NEVBNzM5MDAyMzdGMTkgLyogYmluZGluZ3MgKi8sCisJCQkJ
QTdEODAxOUYxODgwRDY2RTAwMjZDMzlCIC8qIGJ1aWx0aW5zICovLAogCQkJCTk2OUEwNzhGMEVE
MUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLywKIAkJCQk3RTM5RDgxRDBFQzM4RUZBMDAzQUYx
MUEgLyogYnl0ZWNvbXBpbGVyICovLAogCQkJCTFDOTA1MTNFMEJBOUU4ODMwMDgxRTlEMCAvKiBD
b25maWd1cmF0aW9ucyAqLywKQEAgLTM1MDksNiArMzUyMiw4IEBACiAJCTY1MEZERjhEMDlEMEZD
QTcwMDc2OUU1NCAvKiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCUE3RDgwMUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWls
dGlucy5jcHAgKi8sCisJCQkJQTdEODAxQTcxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5z
LmggKi8sCiAJCQkJQkMxOEM1MjMwRTE2RkM4QTAwQjM0NDYwIC8qIEFycmF5UHJvdG90eXBlLmx1
dC5oICovLAogCQkJCUJDRDIwM0U3MEUxNzE4RjQwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmx1
dC5oICovLAogCQkJCUE1MTNFNUM2MTg1Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNv
dXJjZS5oICovLApAQCAtMzgxMSw2ICszODI2LDcgQEAKIAkJCQlBNzkwREQ2QTE4MkY0OTk3MDA1
ODg4MDcgLyogSlNTZXRJdGVyYXRvci5oICovLAogCQkJCUJDMDJFOUI2MEUxODQyRkEwMDBGOTI5
NyAvKiBKU1N0cmluZy5jcHAgKi8sCiAJCQkJRjY5MkE4NjIwMjU1NTk3RDAxRkY2MEY3IC8qIEpT
U3RyaW5nLmggKi8sCisJCQkJQTcxREE4MEUxODgwREJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5s
aW5lcy5oICovLAogCQkJCTg2RTg1NTM4MTExQjk5NjgwMDFBRjUxRSAvKiBKU1N0cmluZ0J1aWxk
ZXIuaCAqLywKIAkJCQkyNjAwQjVBNDE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIu
Y3BwICovLAogCQkJCTI2MDBCNUE1MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5o
ICovLApAQCAtNDU2MSw2ICs0NTc3LDE2IEBACiAJCQlwYXRoID0gcmVtb3RlOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQTdEODAxOUYxODgwRDY2RTAwMjZDMzlCIC8qIGJ1
aWx0aW5zICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlB
N0Q4MDFBMDE4ODBENjZFMDAyNkMzOUIgLyogQXJyYXkucHJvdG90eXBlLmpzICovLAorCQkJCUE3
RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwICovLAorCQkJ
CUE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCAqLywKKwkJ
CSk7CisJCQlwYXRoID0gYnVpbHRpbnM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OwogLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYSGVhZGVyc0J1aWxk
UGhhc2Ugc2VjdGlvbiAqLwpAQCAtNDYwNiwxMSArNDYzMiwxMSBAQAogCQkJCTg2QUREMTQ1MEZE
REVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVD
RUVFMTUxODdGM0JBRDAwRTU1Qzk5IC8qIEluc3BlY3RvckFnZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk2NUMwMjg1RDE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmggaW4gSGVhZGVy
cyAqLywKLSAJCQkJMkE2ODI5NUIxODc1RjgwNTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIu
aCBpbiBIZWFkZXJzICovLAotICAgICAgICAgICAgICAgIDJBNEVDOTBDMTg2MEQ2QzIwMDk0Rjc4
MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTJBNjgyOTVCMTg3
NUY4MDUwMEI2QzNFMiAvKiBDb3B5V3JpdGVCYXJyaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQky
QTRFQzkwQzE4NjBENkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRTU5MzJBODE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNTMyNDM5MzE4NTY5NzA5MDAyRUQ2OTIgLyogQ29kZUdlbmVyYXRv
ckluc3BlY3RvclN0cmluZ3MucHkgaW4gSGVhZGVycyAqLywKLSAJCQkJQTUzMjQzOTIxODU2OTcw
OTAwMkVENjkyIC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkgaW4gSGVhZGVycyAqLywKKwkJ
CQlBNTMyNDM5MjE4NTY5NzA5MDAyRUQ2OTIgLyogQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSBp
biBIZWFkZXJzICovLAogCQkJCTBGMjRFNTRGMTdFRTI3NDkwMEFCQjIxNyAvKiBUZW1wUmVnaXN0
ZXJTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MEU0QjY0MTg4MDlERDUwMDY4QTQ2RCAvKiBK
U0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVCNThDMTUx
ODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC00NjIyLDcgKzQ2NDgsNyBAQAogCQkJCTBGODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJh
eUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUyOTE4N0NBNUU2
MDA4NDNCMTAgLyogaW5saW5lLWFuZC1taW5pZnktc3R5bGVzaGVldHMtYW5kLXNjcmlwdHMucHkg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUyQjE4N0NBNzVCMDA4NDNCMTAgLyoganNtaW4ucHkg
aW4gSGVhZGVycyAqLywKLSAJCQkJQTUzMjQzOTgxODU2QTQ4OTAwMkVENjkyIC8qIEluc3BlY3Rv
ckpTLmpzb24gaW4gSGVhZGVycyAqLywKKwkJCQlBNTMyNDM5ODE4NTZBNDg5MDAyRUQ2OTIgLyog
SW5zcGVjdG9ySlMuanNvbiBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwRTJBMTg3Q0E3NTkwMDg0
M0IxMCAvKiB4eGQucGwgaW4gSGVhZGVycyAqLywKIAkJCQlGRUEwODYyMDE4MkI3QTA0MDBGNkQ4
NTEgLyogQnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzUxN0FEQjVGMzAw
NUFCMTc0IC8qIEFycmF5QnVmZmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTQ3MzMsNyArNDc1OSw3
IEBACiAJCQkJQTFBMDA5QzAxODMxQTIyRDAwQ0Y4NzExIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUM5REM1MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRl
Q29kZVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0ODUzMjgxODdERkRFQzAwODNCNjg3
IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5LmggaW4gSGVhZGVycyAqLywKLSAgICAgICAgICAgICAg
ICBBNTkzQ0Y4NzE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTU5M0NGODcxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFn
ZW50UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjU2QzM2MTYyN0IwQUQwMDdGMjc4
MyAvKiBERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY3QjI5NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERGR0NhcGFiaWxpdGllcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NTgxNEVGOTBBMjAwQzcyNTMyIC8qIERGR0NGQVBoYXNl
LmggaW4gSGVhZGVycyAqLywKQEAgLTQ4NzIsNiArNDg5OCw3IEBACiAJCQkJMEZFQTBBMUQxNzA4
QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZF
QTBBMUYxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1OTQ1NTkzMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVj
dERlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3RDgwMUE5MTg4MEQ2QTgwMDI2QzM5
QiAvKiBKU0NCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMEExNzA1MTNEQjAw
QkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0ODUzMkEx
ODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292ZXJ5T3Bjb2RlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkVBMEEyMzE3MDk2MDY5MDBCQjcyMkMgLyogRlRMQ29tbW9uVmFsdWVzLmggaW4gSGVhZGVy
cyAqLywKQEAgLTQ5NDYsNiArNDk3Myw3IEBACiAJCQkJQkMxOEM0MEYwRTE2RjVDRDAwQjM0NDYw
IC8qIElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyNUY4QkNFMTU3NTQ0QTkwMDI0
NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk5
MTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ0hlYWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QTdEODAxQTUxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZCN0YzOUExNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nSGVhZGVySW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOUIxNUVEOEU0NjAwRjE2N0IyIC8qIElu
ZGV4aW5nVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDRUZBQjAxODA1Q0E2RDAwNDcyQ0U0
IC8qIEluaXRpYWxpemVMTFZNLmggaW4gSGVhZGVycyAqLywKQEAgLTUyMTgsNiArNTI0Niw3IEBA
CiAJCQkJQTUzMjQzODgxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckpTQmFja2VuZERpc3Bh
dGNoZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1NjBFMTZGNUNEMDBCMzQ0NjAgLyog
UHJvdGVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3NEMzM0IxNkFBMkQ5NTAwNjJGMDFEIC8q
IFByb3RvdHlwZU1hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTcxREE4MEYxODgwREJBQjAwRDFG
Mjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQxNENB
N0REOTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMENE
NEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTdDMDA4Q0U3MTg3NjMxQjYwMDk1NUMyNCAvKiBNaWNyb3Rhc2suaCBpbiBIZWFkZXJz
ICovLApAQCAtNTgzNiw2ICs1ODY1LDcgQEAKIAkJCQlBN0Q4OUNGMjE3QTBCOENDMDA3NzNBRDgg
LyogREZHQmFzaWNCbG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzBCMDgzMjE3QTBCNzlC
MDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDg5
Q0YzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlBN0Q4MDFBNDE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUM5REM0MTMyOERGODIwMDJCMkFENyAvKiBERkdC
eXRlQ29kZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4MkUyMTE0MTcyQ0UzMDAx
NzlDOTQgLyogREZHQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRkZDOTU3
MTRFRjkwQTAwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU4
NTIsNiArNTg4Miw3IEBACiAJCQkJMEZGRkM5NTkxNEVGOTBBNjAwQzcyNTMyIC8qIERGR0NTRVBo
YXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkZDNzcyMTZFMTJGNzEwMDM4RDk3NiAvKiBE
RkdEQ0VQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhGMkI5OTE3MkYwNEZGMDA3REJE
QTUgLyogREZHRGVzaXJlZElkZW50aWZpZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3RDgw
MUE4MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBNzNFMTMzMDE3OTYyNENEMDBFNERFQTggLyogREZHRGVzaXJlZFN0cnVjdHVyZUNoYWlucy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkMwRjdDRDE3QkJGQzVCMDA0NjRGRTQgLyogREZHRGVz
aXJlZFRyYW5zaXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRTg1MzRCMTcyM0NEQTUw
MEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01
OTc2LDcgKzYwMDcsNyBAQAogCQkJCTBGNkIxQ0M1MTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExVbndp
bmRJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOUQzMzlBMTgwM0FEQjcwMDczQzJCQyAv
KiBGVExTdGFja01hcHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMTYxNzA2QkI5MDAw
QkI3MjJDIC8qIEZUTFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAotIAkJCQk3QzAwOENEMjE4NkY4
QTkzMDA5NTVDMjQgLyogSlNQcm9taXNlRnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTdDMDA4Q0QyMTg2RjhBOTMwMDk1NUMyNCAvKiBKU1Byb21pc2VGdW5jdGlvbnMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY2QjFDQjUxODVGQzlFOTAwODQ1RDk3IC8qIEZUTEpTQ2FsbC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJFMTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMVGh1bmtz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1OTNDRjdDMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNl
YjQyZjVjYzQzM2YxNjM2MzQzYmZjOTgyYWEyYWFmYjMzNmU5NDkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzCkBAIC0w
LDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CitmdW5jdGlvbiBldmVyeShjYWxsYmFjayAvKiwgdGhpc0FyZyAqLykgeworICAgICJ1c2Ugc3Ry
aWN0IjsKKyAgICBpZiAodGhpcyA9PT0gbnVsbCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJy
b3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVs
bCIpOworICAgIAorICAgIGlmICh0aGlzID09PSB1bmRlZmluZWQpCisgICAgICAgIHRocm93IG5l
dyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wg
bm90IGJlIHVuZGVmaW5lZCIpOworICAgIAorICAgIHZhciBhcnJheSA9IEBPYmplY3QodGhpcyk7
CisgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCA+Pj4gMDsKKyAgICAKKyAgICBpZiAodHlw
ZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJv
cigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOwor
CisgICAgdmFyIHRoaXNBcmcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6
IHVuZGVmaW5lZDsKKyAgICAKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7
CisgICAgICAgIGlmICghKGkgaW4gYXJyYXkpKQorICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIGlmICghY2FsbGJhY2suQGNhbGwodGhpc0FyZywgYXJyYXlbaV0sIGksIGFycmF5KSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQxZGJiNWY5MjI1ZTI4YTEyZWQzZDE3OThmZjE3Njhl
NDM2NzFhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKworI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIK
KyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMu
aCIKKyNpbmNsdWRlICJQYXJzZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0J1aWx0aW5FeGVj
dXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKFZNJiB2bSkKKyAgICA6IG1fdm0odm0pCisjZGVm
aW5lIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUs
IGxlbmd0aCkgLCBtXyMjbmFtZSMjU291cmNlKG1ha2VTb3VyY2UoU3RyaW5nSW1wbDo6Y3JlYXRl
RnJvbUxpdGVyYWwoc18jI25hbWUsIGxlbmd0aCksIFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRl
cmFsKCI8YnVpbHRpbj4iKSkpCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTihJTklUSUFMSVpFX0JV
SUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgRVhQT1NFX0JVSUxUSU5fU1RSSU5HUworewor
fQorCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVh
dGVCdWlsdGluRXhlY3V0YWJsZShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGNvbnN0IElkZW50
aWZpZXImIG5hbWUpCit7CisgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZTsKKyAgICBQYXJzZXJFcnJvciBlcnJvcjsKKyAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHBy
b2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oJm1fdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigp
LCBKU1BhcnNlQnVpbHRpbiwgSlNQYXJzZVByb2dyYW1Db2RlLCBlcnJvciwgJnBvc2l0aW9uQmVm
b3JlTGFzdE5ld2xpbmUpOworCisgICAgaWYgKCFwcm9ncmFtKSB7CisgICAgICAgIGRhdGFMb2co
IkZhdGFsIGVycm9yIGNvbXBpbGluZyBidWlsdGluIGZ1bmN0aW9uICciLCBuYW1lLnN0cmluZygp
LCAiJzogIiwgZXJyb3IubV9tZXNzYWdlKTsKKyAgICAgICAgQ1JBU0goKTsKKyAgICB9CisKKyAg
ICBTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVtZW50ID0gcHJvZ3JhbS0+c2luZ2xlU3RhdGVtZW50
KCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudCk7CisgICAgUkVMRUFTRV9BU1NF
UlQoZXhwclN0YXRlbWVudC0+aXNFeHByU3RhdGVtZW50KCkpOworICAgIEV4cHJlc3Npb25Ob2Rl
KiBmdW5jRXhwciA9IHN0YXRpY19jYXN0PEV4cHJTdGF0ZW1lbnROb2RlKj4oZXhwclN0YXRlbWVu
dCktPmV4cHIoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwcik7CisgICAgUkVMRUFTRV9B
U1NFUlQoZnVuY0V4cHItPmlzRnVuY0V4cHJOb2RlKCkpOworICAgIEZ1bmN0aW9uQm9keU5vZGUq
IGJvZHkgPSBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihmdW5jRXhwciktPmJvZHkoKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVCghcHJvZ3JhbS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CisgICAg
CisgICAgYm9keS0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoYm9keSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keS0+aWRlbnQo
KS5pc051bGwoKSk7CisgICAgCisgICAgLy8gVGhpcyBmdW5jdGlvbiBhc3N1bWVzIGFuIGlucHV0
IHN0cmluZyB0aGF0IHdvdWxkIHJlc3VsdCBpbiBhIHNpbmdsZSBhbm9ueW1vdXMgZnVuY3Rpb24g
ZXhwcmVzc2lvbi4KKyAgICBib2R5LT5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3RO
ZXdsaW5lKTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5KTsKKyAgICBmb3IgKGNvbnN0IGF1dG8m
IGNsb3NlZFZhcmlhYmxlIDogcHJvZ3JhbS0+Y2xvc2VkVmFyaWFibGVzKCkpIHsKKyAgICAgICAg
aWYgKGNsb3NlZFZhcmlhYmxlID09IG1fdm0ucHJvcGVydHlOYW1lcy0+YXJndW1lbnRzLmltcGwo
KSkKKyAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBpZiAoY2xvc2VkVmFyaWFi
bGUgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLmltcGwoKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBSRUxFQVNFX0FTU0VSVChjbG9zZWRWYXJpYWJsZS0+
aXNFbXB0eVVuaXF1ZSgpKTsKKyAgICB9CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUo
Jm1fdm0sIHNvdXJjZSwgYm9keSwgdHJ1ZSwgVW5saW5rZWRCdWlsdGluRnVuY3Rpb24pOworICAg
IGZ1bmN0aW9uRXhlY3V0YWJsZS0+bV9uYW1lVmFsdWUuc2V0KG1fdm0sIGZ1bmN0aW9uRXhlY3V0
YWJsZSwganNTdHJpbmcoJm1fdm0sIG5hbWUuc3RyaW5nKCkpKTsKKyAgICByZXR1cm4gZnVuY3Rp
b25FeGVjdXRhYmxlOworfQorCisjZGVmaW5lIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKG5h
bWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
QnVpbHRpbkV4ZWN1dGFibGVzOjpuYW1lIyNFeGVjdXRhYmxlKCkgXAore1wKKyAgICBpZiAoIW1f
IyNuYW1lIyNFeGVjdXRhYmxlKVwKKyAgICAgICAgbV8jI25hbWUjI0V4ZWN1dGFibGUgPSBjcmVh
dGVCdWlsdGluRXhlY3V0YWJsZShtXyMjbmFtZSMjU291cmNlLCBtX3ZtLnByb3BlcnR5TmFtZXMt
PmZ1bmN0aW9uTmFtZSk7XAorICAgIHJldHVybiBtXyMjbmFtZSMjRXhlY3V0YWJsZS5nZXQoKTtc
Cit9CitKU0NfRk9SRUFDSF9CVUlMVElOKERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3Vu
ZGVmIEVYUE9TRV9CVUlMVElOX1NPVVJDRVMKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5YTE5ZTI2
MTUwNzk0YTY2OWVjOThlMzk5YmY2N2Y3ZjcxMDY0MTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKQEAgLTAsMCAr
MSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgQnVpbHRpbkV4ZWN1dGFibGVzX2gKKyNkZWZpbmUgQnVpbHRpbkV4ZWN1dGFibGVzX2gK
KworI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisjaW5jbHVkZSAiU291cmNlQ29kZS5oIgorI2lu
Y2x1ZGUgIldlYWsuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7CitjbGFzcyBJZGVudGlm
aWVyOworY2xhc3MgVk07CisKK2NsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlcyB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NPd25QdHI8QnVpbHRpbkV4ZWN1dGFibGVzPiBjcmVhdGUoVk0mIHZtKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBCdWlsdGluRXhlY3V0YWJsZXModm0p
KTsKKyAgICB9CisgICAgCisjZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUs
IGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFt
ZSMjRXhlY3V0YWJsZSgpOyBcCitjb25zdCBTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSB7IHJl
dHVybiBtXyMjbmFtZSMjU291cmNlOyB9CisgICAgCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTihF
WFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJTl9TT1VSQ0VT
CisgICAgCitwcml2YXRlOgorICAgIEJ1aWx0aW5FeGVjdXRhYmxlcyhWTSYpOworICAgIFZNJiBt
X3ZtOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVCdWlsdGluRXhlY3V0
YWJsZShjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYpOworI2RlZmluZSBERUNM
QVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpXAor
ICAgIFNvdXJjZUNvZGUgbV8jI25hbWUjI1NvdXJjZTsgXAorICAgIFdlYWs8VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU+IG1fIyNuYW1lIyNFeGVjdXRhYmxlOworICAgIEpTQ19GT1JFQUNIX0JV
SUxUSU4oREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIERFQ0xBUkVfQlVJ
TFRJTl9TT1VSQ0VfTUVNQkVSUworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMjYzZWM3Y2FkZjRmNzljYTgxMDI0
NDFlNjJiZjJhMDViNWRkYzNmMi4uNzUxNTA2NTQyMzc2ZDdlZGM1OTlhYTAwZjliMTI2ODVjZGEz
NTJjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
QEAgLTQzLDExICs0MywxMyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVFN0dWJz
LmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgor
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50LmgiCiAj
aW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk5hdGl2ZUVycm9yQ29u
c3RydWN0b3IuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9w
ZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmgiCiAjaW5jbHVk
ZSAiUmVkdWNlV2hpdGVzcGFjZS5oIgpAQCAtMTU2OSw3ICsxNTcxLDcgQEAgQ29kZUJsb2NrOjpD
b2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVC
bG9jayogdW5saW4KIAogICAgIHNldENvbnN0YW50UmVnaXN0ZXJzKHVubGlua2VkQ29kZUJsb2Nr
LT5jb25zdGFudFJlZ2lzdGVycygpKTsKICAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPnVzZXNH
bG9iYWxPYmplY3QoKSkKLSAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1t1bmxpbmtlZENvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0UmVnaXN0ZXIoKS5vZmZzZXQoKV0uc2V0KCptX3ZtLCBvd25lckV4
ZWN1dGFibGUsIG1fZ2xvYmFsT2JqZWN0LmdldCgpKTsKKyAgICAgICAgbV9jb25zdGFudFJlZ2lz
dGVyc1t1bmxpbmtlZENvZGVCbG9jay0+Z2xvYmFsT2JqZWN0UmVnaXN0ZXIoKS50b0NvbnN0YW50
SW5kZXgoKV0uc2V0KCptX3ZtLCBvd25lckV4ZWN1dGFibGUsIG1fZ2xvYmFsT2JqZWN0LmdldCgp
KTsKICAgICBtX2Z1bmN0aW9uRGVjbHMucmVzaXplVG9GaXQodW5saW5rZWRDb2RlQmxvY2stPm51
bWJlck9mRnVuY3Rpb25EZWNscygpKTsKICAgICBmb3IgKHNpemVfdCBjb3VudCA9IHVubGlua2Vk
Q29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSwgaSA9IDA7IGkgPCBjb3VudDsgKytp
KSB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFi
bGUgPSB1bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDY4YmMwMzc5ZjU3NDRjOWE4Zjc0MzFk
YjY0ZjhhYjU0ZTZlMTA1M2YuLjQ5OTVjNTJjZjhiMmIxYjRkNjI4MDQ1M2VlZDI3Yzc3NGE0OTU1
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTU2
LDcgKzU2LDYgQEAKICNpbmNsdWRlICJIYW5kbGVySW5mby5oIgogI2luY2x1ZGUgIk9iamVjdEFs
bG9jYXRpb25Qcm9maWxlLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgotI2luY2x1ZGUgIk9wZXJh
dGlvbnMuaCIKICNpbmNsdWRlICJQdXRQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJJbnN0cnVj
dGlvbi5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0
aXNvbmluZ1dhdGNocG9pbnQuY3BwCmluZGV4IDk4NmUwM2QwY2JhNzE4NWIzOWNlZTAyM2Y0YWI2
YmM5YjhjY2I2ZTQuLjcwZWY5YjQyOTAxYzA1OGJjNzJjOWRiOTJkY2MzM2Q1M2Q2YmFhYzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9j
a0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcApAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbi5o
IgogI2luY2x1ZGUgIkRGR0V4aXRQcm9maWxlLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5o
IgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggMWRmYjVhYzZhZDkwOTNmOGY4MTEw
MWVmN2YyZTYxMjMxMWFjMTkzOS4uNDMzOTBkOTY1ZmM1MDM0MDE2ZjdiZmZmMjNlNjhiYjFlMDU0
NTUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suY3BwCkBAIC00OSw5ICs0OSw5IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtl
ZFByb2dyYW1Db2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayIs
CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRFdmFsQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxp
bmtlZEV2YWxDb2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKFVubGlua2VkRXZhbENvZGVCbG9jaykgfTsKIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrIiwg
JkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrKSB9OwogCi1zdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJh
dGVGdW5jdGlvbkNvZGVCbG9jayhWTSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVy
TW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2sqIGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIGtpbmQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9k
ZSBwcm9maWxlck1vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2Vy
RXJyb3ImIGVycm9yKQogewotICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBib2R5ID0gcGFy
c2U8RnVuY3Rpb25Cb2R5Tm9kZT4oJnZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMo
KSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpID8g
SlNQYXJzZVN0cmljdCA6IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VGdW5jdGlvbkNvZGUsIGVycm9y
KTsKKyAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSA9IHBhcnNlPEZ1bmN0aW9uQm9k
eU5vZGU+KCZ2bSwgc291cmNlLCBleGVjdXRhYmxlLT5wYXJhbWV0ZXJzKCksIGV4ZWN1dGFibGUt
Pm5hbWUoKSwgZXhlY3V0YWJsZS0+dG9TdHJpY3RuZXNzKCksIEpTUGFyc2VGdW5jdGlvbkNvZGUs
IGVycm9yKTsKIAogICAgIGlmICghYm9keSkgewogICAgICAgICBBU1NFUlQoZXJyb3IubV90eXBl
ICE9IFBhcnNlckVycm9yOjpFcnJvck5vbmUpOwpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhWTSYgdm0s
IFVubGlua2VkRnVuYwogICAgIGJvZHktPmZpbmlzaFBhcnNpbmcoZXhlY3V0YWJsZS0+cGFyYW1l
dGVycygpLCBleGVjdXRhYmxlLT5uYW1lKCksIGV4ZWN1dGFibGUtPmZ1bmN0aW9uTmFtZUlzSW5T
Y29wZVRvZ2dsZSgpKTsKICAgICBleGVjdXRhYmxlLT5yZWNvcmRQYXJzZShib2R5LT5mZWF0dXJl
cygpLCBib2R5LT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKICAgICAKLSAgICBVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVh
dGUoJnZtLCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFibGVJbmZvKGJvZHktPm5lZWRzQWN0aXZhdGlv
bigpLCBib2R5LT51c2VzRXZhbCgpLCBib2R5LT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2Rl
Rm9yQ29uc3RydWN0KSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0g
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLCBFeGVj
dXRhYmxlSW5mbyhib2R5LT5uZWVkc0FjdGl2YXRpb24oKSwgYm9keS0+dXNlc0V2YWwoKSwgYm9k
eS0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5k
ID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uKSk7CiAgICAgT3duUHRyPEJ5dGVjb2RlR2VuZXJh
dG9yPiBnZW5lcmF0b3IoYWRvcHRQdHIobmV3IEJ5dGVjb2RlR2VuZXJhdG9yKHZtLCBib2R5Lmdl
dCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlKSkpOwogICAgIGVycm9yID0g
Z2VuZXJhdG9yLT5nZW5lcmF0ZSgpOwogICAgIGJvZHktPmRlc3Ryb3lEYXRhKCk7CkBAIC04Miwx
MyArODIsMTQgQEAgdW5zaWduZWQgVW5saW5rZWRDb2RlQmxvY2s6OmFkZE9yRmluZENvbnN0YW50
KEpTVmFsdWUgdikKICAgICByZXR1cm4gYWRkQ29uc3RhbnQodik7CiB9CiAKLVVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5v
ZGUqIG5vZGUsIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSkKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJv
b2wgaXNGcm9tR2xvYmFsQ29kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCkKICAgICA6IEJh
c2UoKnZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX251bUNhcHR1cmVkVmFyaWFibGVzKG5vZGUtPmNh
cHR1cmVkVmFyaWFibGVDb3VudCgpKQogICAgICwgbV9mb3JjZVVzZXNBcmd1bWVudHMobm9kZS0+
dXNlc0FyZ3VtZW50cygpKQogICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChub2RlLT5pc1N0cmlj
dE1vZGUoKSkKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMobm9kZS0+aGFzQ2FwdHVyZWRW
YXJpYWJsZXMoKSkKICAgICAsIG1faXNGcm9tR2xvYmFsQ29kZShpc0Zyb21HbG9iYWxDb2RlKQor
ICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihraW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9u
KQogICAgICwgbV9uYW1lKG5vZGUtPmlkZW50KCkpCiAgICAgLCBtX2luZmVycmVkTmFtZShub2Rl
LT5pbmZlcnJlZE5hbWUoKSkKICAgICAsIG1fcGFyYW1ldGVycyhub2RlLT5wYXJhbWV0ZXJzKCkp
CkBAIC0xNjYsNyArMTY3LDcgQEAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OmNvZGVCbG9ja0ZvcihWTSYgdm0sIGNvbnMKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCi0gICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2Vu
ZXJhdGVGdW5jdGlvbkNvZGVCbG9jayh2bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktp
bmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CisgICAgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayh2bSwgdGhp
cywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2Rl
LCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtl
ZE5vcm1hbEZ1bmN0aW9uLCBlcnJvcik7CiAgICAgCiAgICAgaWYgKGVycm9yLm1fdHlwZSAhPSBQ
YXJzZXJFcnJvcjo6RXJyb3JOb25lKQogICAgICAgICByZXR1cm4gMDsKQEAgLTIxMCw2ICsyMTEs
NyBAQCBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgQ29kZVR5cGUgY29kZQogICAgICwgbV9pc1N0cmljdE1vZGUoaW5mby5t
X2lzU3RyaWN0TW9kZSkKICAgICAsIG1faXNDb25zdHJ1Y3RvcihpbmZvLm1faXNDb25zdHJ1Y3Rv
cikKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRp
bkZ1bmN0aW9uKGluZm8ubV9pc0J1aWx0aW5GdW5jdGlvbikKICAgICAsIG1fZmlyc3RMaW5lKDAp
CiAgICAgLCBtX2xpbmVDb3VudCgwKQogICAgICwgbV9lbmRDb2x1bW4oVUlOVF9NQVgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmlu
ZGV4IGI5ZGFlMmQ1YzY5Yzc5Y2VhYWE4MDIzZDJhM2ExZjI2ZDQ2MDk0M2IuLmFiZjZjZjM1Yjkz
MDZhNGY3YTMwMWFiMGRmNzY2NmVjNjEyZTM3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC02NiwyNiArNjYsMzUgQEAg
dHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOwogdHlwZWRl
ZiB1bnNpZ25lZCBVbmxpbmtlZExMSW50Q2FsbExpbmtJbmZvOwogCiBzdHJ1Y3QgRXhlY3V0YWJs
ZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVz
ZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yKQorICAgIEV4ZWN1
dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3Ry
aWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKQogICAg
ICAgICA6IG1fbmVlZHNBY3RpdmF0aW9uKG5lZWRzQWN0aXZhdGlvbikKICAgICAgICAgLCBtX3Vz
ZXNFdmFsKHVzZXNFdmFsKQogICAgICAgICAsIG1faXNTdHJpY3RNb2RlKGlzU3RyaWN0TW9kZSkK
ICAgICAgICAgLCBtX2lzQ29uc3RydWN0b3IoaXNDb25zdHJ1Y3RvcikKKyAgICAgICAgLCBtX2lz
QnVpbHRpbkZ1bmN0aW9uKGlzQnVpbHRpbkZ1bmN0aW9uKQogICAgIHsKICAgICB9Ci0gICAgYm9v
bCBtX25lZWRzQWN0aXZhdGlvbjsKLSAgICBib29sIG1fdXNlc0V2YWw7Ci0gICAgYm9vbCBtX2lz
U3RyaWN0TW9kZTsKLSAgICBib29sIG1faXNDb25zdHJ1Y3RvcjsKKyAgICBib29sIG1fbmVlZHNB
Y3RpdmF0aW9uIDogMTsKKyAgICBib29sIG1fdXNlc0V2YWwgOiAxOworICAgIGJvb2wgbV9pc1N0
cmljdE1vZGUgOiAxOworICAgIGJvb2wgbV9pc0NvbnN0cnVjdG9yIDogMTsKKyAgICBib29sIG1f
aXNCdWlsdGluRnVuY3Rpb24gOiAxOworfTsKKworZW51bSBVbmxpbmtlZEZ1bmN0aW9uS2luZCB7
CisgICAgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwKKyAgICBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlv
biwKIH07CiAKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGljIEpTQ2Vs
bCB7CiBwdWJsaWM6CisgICAgZnJpZW5kIGNsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlczsKICAgICBm
cmllbmQgY2xhc3MgQ29kZUNhY2hlOworICAgIGZyaWVuZCBjbGFzcyBWTTsKICAgICB0eXBlZGVm
IEpTQ2VsbCBCYXNlOwotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3Jl
YXRlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlOb2RlKiBu
b2RlLCBib29sIGlzRnJvbUdsb2JhbENvZGUgPSBmYWxzZSkKKyAgICBzdGF0aWMgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgRnVuY3Rpb25Cb2R5Tm9kZSogbm9kZSwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlLCBVbmxpbmtl
ZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCkKICAgICB7Ci0gICAgICAgIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVhcCkpIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUu
Z2V0KCksIHNvdXJjZSwgbm9kZSwgaXNGcm9tR2xvYmFsQ29kZSk7CisgICAgICAgIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVhcCkpIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0
KCksIHNvdXJjZSwgbm9kZSwgaXNGcm9tR2xvYmFsQ29kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQp
OwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oKnZtKTsKICAgICAgICAgcmV0dXJu
IGluc3RhbmNlOwogICAgIH0KQEAgLTk5LDYgKzEwOCwxNCBAQCBwdWJsaWM6CiAgICAgfQogICAg
IHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0OwogICAgIGJvb2wgaXNJblN0cmljdENvbnRl
eHQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0OyB9CisgICAgSlNQYXJzZXJT
dHJpY3RuZXNzIHRvU3RyaWN0bmVzcygpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9pc0J1
aWx0aW5GdW5jdGlvbikKKyAgICAgICAgICAgIHJldHVybiBKU1BhcnNlQnVpbHRpbjsKKyAgICAg
ICAgaWYgKG1faXNJblN0cmljdENvbnRleHQpCisgICAgICAgICAgICByZXR1cm4gSlNQYXJzZVN0
cmljdDsKKyAgICAgICAgcmV0dXJuIEpTUGFyc2VOb3JtYWw7CisgICAgfQogICAgIEZ1bmN0aW9u
TmFtZUlzSW5TY29wZVRvZ2dsZSBmdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGUoKSBjb25zdCB7
IHJldHVybiBtX2Z1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZTsgfQogCiAgICAgdW5zaWduZWQg
Zmlyc3RMaW5lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdExpbmVPZmZzZXQ7IH0KQEAg
LTE0Miw4ICsxNTksMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0ltbW9y
dGFsU3RydWN0dXJlID0gdHJ1ZTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwog
CisgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGlu
RnVuY3Rpb247IH0KKwogcHJpdmF0ZToKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShW
TSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbkJvZHlOb2RlKiwgYm9v
bCBpc0Zyb21HbG9iYWxDb2RlKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSos
IFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbkJvZHlOb2RlKiwgYm9vbCBp
c0Zyb21HbG9iYWxDb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCk7CiAgICAgV3JpdGVCYXJyaWVy
PFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fY29kZUJsb2NrRm9yQ2FsbDsKICAgICBXcml0
ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV9jb2RlQmxvY2tGb3JDb25zdHJ1
Y3Q7CiAKQEAgLTE1Miw2ICsxNzEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0luU3RyaWN0
Q29udGV4dCA6IDE7CiAgICAgYm9vbCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIDogMTsKICAgICBi
b29sIG1faXNGcm9tR2xvYmFsQ29kZSA6IDE7CisgICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9u
IDogMTsKIAogICAgIElkZW50aWZpZXIgbV9uYW1lOwogICAgIElkZW50aWZpZXIgbV9pbmZlcnJl
ZE5hbWU7CkBAIC0zMTksNiArMzM5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNOdW1lcmlj
Q29tcGFyZUZ1bmN0aW9uKGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKSB7IG1faXNOdW1l
cmljQ29tcGFyZUZ1bmN0aW9uID0gaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CiAgICAgYm9v
bCBpc051bWVyaWNDb21wYXJlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzTnVtZXJpY0Nv
bXBhcmVGdW5jdGlvbjsgfQogCisgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KKyAgICAKICAgICB2b2lkIHNocmlua1RvRml0
KCkKICAgICB7CiAgICAgICAgIG1fanVtcFRhcmdldHMuc2hyaW5rVG9GaXQoKTsKQEAgLTUwMCw2
ICs1MjIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1N0cmljdE1vZGUgOiAxOwogICAgIGJv
b2wgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICBib29sIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMg
OiAxOworICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CiAgICAgdW5zaWduZWQgbV9m
aXJzdExpbmU7CiAgICAgdW5zaWduZWQgbV9saW5lQ291bnQ7CiAgICAgdW5zaWduZWQgbV9lbmRD
b2x1bW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDY4MTBhYjgwMDJjZTZiYjhkNzhlN2ZmMjIyN2Y0
YzZlYTdiNzU4YzIuLmVjNTIxYjUzMDQ2MzkyM2U3NGMwMTBmYTIxOGU1OWVkMmE5YTNjYWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCkBAIC0xNzUsNiArMTc1LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtl
ZFAKICNlbmRpZgogICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKICAgICAsIG1fZXhwcmVz
c2lvblRvb0RlZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGZhbHNlKQogewog
ICAgIGlmIChtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKQogICAgICAgICBtX2NvZGVCbG9jay0+c2V0
TmVlZHNGdWxsU2NvcGVDaGFpbih0cnVlKTsKQEAgLTIyMiw3ICsyMjMsMTMgQEAgQnl0ZWNvZGVH
ZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Cb2R5Tm9kZSogZnVu
Y3Rpb25Cb2R5LCBVbmwKICNlbmRpZgogICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKICAg
ICAsIG1fZXhwcmVzc2lvblRvb0RlZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9u
KGNvZGVCbG9jay0+aXNCdWlsdGluRnVuY3Rpb24oKSkKIHsKKyAgICBpZiAobV9pc0J1aWx0aW5G
dW5jdGlvbikgeworICAgICAgICBtX3Nob3VsZEVtaXRQcm9maWxlSG9va3MgPSBmYWxzZTsKKyAg
ICAgICAgbV9zaG91bGRFbWl0RGVidWdIb29rcyA9IGZhbHNlOworICAgIH0KKwogICAgIGlmICht
X3Nob3VsZEVtaXREZWJ1Z0hvb2tzKQogICAgICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNGdWxs
U2NvcGVDaGFpbih0cnVlKTsKIApAQCAtNDM4LDYgKzQ0NSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRF
dmFsQ29kCiAjZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAgICAgLCBtX2V4
cHJlc3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihmYWxzZSkK
IHsKICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNGdWxsU2NvcGVDaGFpbih0cnVlKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCmluZGV4IDRlOWYyMTNjOWJmYTZjZjE5NGIxYTE0ZmU5MTllODMzMzdhZTM1ZDkuLjE1
ODQyNzRiNzhlYTZjMGJkMGVmYjBiOTgyNWM4MThiZTBkYmMwNjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAg
LTQ2MSw3ICs0NjEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBzaG91bGRFbWl0
RGVidWdIb29rcygpIHsgcmV0dXJuIG1fc2hvdWxkRW1pdERlYnVnSG9va3M7IH0KICAgICAgICAg
CiAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2st
PmlzU3RyaWN0TW9kZSgpOyB9Ci0KKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNCdWlsdGluRnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisgICAgICAgIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMYWJlbDsKICAgICAgICAgCkBAIC01
NDMsNyArNTQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogbWFrZUZ1bmN0aW9uKEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgYm9keSk7CisgICAgICAgICAg
ICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3Bl
Tm9kZS0+c291cmNlKCksIGJvZHksIGZhbHNlLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5r
ZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uKTsKICAgICAgICAgfQog
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbml0TGF6eVJlZ2lzdGVyKFJlZ2lzdGVySUQqKTsK
QEAgLTY3Nyw2ICs2NzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIG1fdXNl
c0V4Y2VwdGlvbnM7CiAgICAgICAgIGJvb2wgbV9leHByZXNzaW9uVG9vRGVlcDsKKyAgICAgICAg
Ym9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9uOwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAxZmZkNGYz
MTE4ODJkMGVlNWM1NTE0ZjViOGIyNTkzOWQ5NzVlMzc5Li42MmVjYTM2YTEwZDc3MDhhOTI4ZDQz
YWMwM2YyZmM4NjE1Y2VjYTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0yNiwxMCArMjYsMTAgQEAKIAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCi0jaW5jbHVkZSAiTm9kZUNvbnN0cnVj
dG9ycy5oIgogCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJDYWxs
RnJhbWUuaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkRlYnVn
Z2VyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtMzgs
NiArMzgsNyBAQAogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJMYWJlbFNjb3Bl
LmgiCiAjaW5jbHVkZSAiTGV4ZXIuaCIKKyNpbmNsdWRlICJOb2RlQ29uc3RydWN0b3JzLmgiCiAj
aW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlBy
b3BlcnR5TmFtZUFycmF5LmgiCkBAIC01MzUsMzYgKzUzNiwzOSBAQCBSZWdpc3RlcklEKiBDYWxs
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsCiAgICAgUmVmUHRyPExhYmVsPiBlbmQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwog
ICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1
YmV4cHJlc3Npb25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwotICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERl
c3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIG1faWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3Rp
bmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuY2FsbCk7
CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0LCBmdW5jdGlvbi5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZO
b3RGdW5jdGlvbkNhbGwoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKKyAgICBib29s
IGVtaXRDYWxsQ2hlY2sgPSAhZ2VuZXJhdG9yLmlzQnVpbHRpbkZ1bmN0aW9uKCk7CisgICAgaWYg
KGVtaXRDYWxsQ2hlY2spCisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25D
YWxsKGZ1bmN0aW9uLmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7CisKICAgICB7CiAgICAgICAgIGlm
IChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpIHsKICAg
ICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIG9sZExpc3QgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7
CiAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1f
bmV4dDsKLQorICAgICAgICAgICAgCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVh
bEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24o
ZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVu
dHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNh
bGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG9sZExpc3QtPm1fZXhwcik7CiAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQo
KSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQo
KSk7Ci0KICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9sZExpc3Q7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0g
Z2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5n
ZXQoKSk7CiAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9y
LCBtX2FyZ3MpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMu
dGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRG
dW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOwogICAgICAgICB9
CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOwotICAgIHsK
LSAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsK
LSAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCks
IGJhc2UuZ2V0KCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0
KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRp
dm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2sp
IHsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CisgICAgICAgIGdlbmVy
YXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOworICAgICAgICB7CisgICAgICAgICAgICBD
YWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2Uu
Z2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgp
LCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZv
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICB9CisgICAgICAgIGdlbmVy
YXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJl
bChlbmQuZ2V0KCkpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZS5nZXQoKTsKIH0KIApAQCAtNTg1
LDY1ICs1ODksNjcgQEAgUmVnaXN0ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICBSZWZQdHI8TGFiZWw+
IGVuZCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNl
ID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYmFzZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNz
aW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4
cHJlc3Npb25FbmQoKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uID0gZ2VuZXJh
dG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQo
KSwgbV9pZGVudCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uOwogICAgIFJlZlB0
cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRz
dCwgZnVuY3Rpb24uZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25B
cHBseShmdW5jdGlvbi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkpOwotICAgIHsKLSAgICAgICAgaWYg
KG1heUJlQ2FsbCkgewotICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2Fy
Z3MtPm1fbGlzdE5vZGUtPm1fZXhwcikgewotICAgICAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5v
ZGUqIG9sZExpc3QgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7Ci0gICAgICAgICAgICAgICAgaWYgKG1f
YXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCht
X2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByLT5pc1NpbXBsZUFycmF5KCkpOwotICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX25l
eHQpOwotICAgICAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBzdGF0aWNfY2Fz
dDxBcnJheU5vZGUqPihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByKS0+dG9Bcmd1
bWVudExpc3QoZ2VuZXJhdG9yLnZtKCksIDAsIDApOwotICAgICAgICAgICAgICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRv
ci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAg
IENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAgICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rl
cigpLCBvbGRMaXN0LT5tX2V4cHIpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1
bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fYXJncy0+
bV9saXN0Tm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwotICAgICAgICAgICAgICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3Zl
KGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7
Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRo
aXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwotICAgICAgICAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9F
eHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtX2FyZ3MtPm1f
bGlzdE5vZGUgPSBvbGRMaXN0OworICAgIGJvb2wgZW1pdENhbGxDaGVjayA9ICFnZW5lcmF0b3Iu
aXNCdWlsdGluRnVuY3Rpb24oKTsKKyAgICBpZiAoZW1pdENhbGxDaGVjaykgeworICAgICAgICBm
dW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9u
KGRzdCksIGJhc2UuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYXBwbHkpOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHkoZnVuY3Rpb24uZ2V0KCks
IHJlYWxDYWxsLmdldCgpKTsKKyAgICB9CisgICAgaWYgKG1heUJlQ2FsbCkgeworICAgICAgICBp
ZiAobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKSB7Cisg
ICAgICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2Rl
OworICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KSB7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHItPmlzU2lt
cGxlQXJyYXkoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5vZGUt
Pm1fbmV4dC0+bV9uZXh0KTsKKyAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBz
dGF0aWNfY2FzdDxBcnJheU5vZGUqPihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHBy
KS0+dG9Bcmd1bWVudExpc3QoZ2VuZXJhdG9yLnZtKCksIDAsIDApOworICAgICAgICAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2Vu
ZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKKyAgICAgICAgICAgICAg
ICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBvbGRMaXN0LT5tX2V4cHIpOworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChy
ZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24s
IGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG1f
YXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwogICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0
aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRz
IGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgp
KTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlz
UmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3Rl
ZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gb2xk
TGlzdDsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlz
dE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQpOwotICAgICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHByb2ZpbGVIb29rUmVnaXN0ZXI7Ci0gICAgICAgICAgICBpZiAoZ2VuZXJh
dG9yLnNob3VsZEVtaXRQcm9maWxlSG9va3MoKSkKLSAgICAgICAgICAgICAgICBwcm9maWxlSG9v
a1JlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3Iu
dGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHRoaXNSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2FyZ3MtPm1fbGlz
dE5vZGUtPm1fZXhwcik7Ci0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXJnc1JlZ2lz
dGVyOwotICAgICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogYXJncyA9IG1fYXJncy0+bV9saXN0
Tm9kZS0+bV9uZXh0OwotICAgICAgICAgICAgaWYgKGFyZ3MtPm1fZXhwci0+aXNSZXNvbHZlTm9k
ZSgpICYmIGdlbmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHN0YXRpY19jYXN0PFJlc29s
dmVOb2RlKj4oYXJncy0+bV9leHByKS0+aWRlbnRpZmllcigpKSkKLSAgICAgICAgICAgICAgICBh
cmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IudW5jaGVja2VkUmVnaXN0ZXJGb3JBcmd1bWVudHMoKTsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0
b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKLQotICAgICAgICAgICAgLy8gRnVuY3Rpb24ucHJv
dG90eXBlLmFwcGx5IGlnbm9yZXMgZXh0cmEgYXJndW1lbnRzLCBidXQgd2Ugc3RpbGwKLSAgICAg
ICAgICAgIC8vIG5lZWQgdG8gZXZhbHVhdGUgdGhlbSBmb3Igc2lkZSBlZmZlY3RzLgotICAgICAg
ICAgICAgd2hpbGUgKChhcmdzID0gYXJncy0+bV9uZXh0KSkKLSAgICAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKLQotICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRDYWxsVmFyYXJncyhyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCB0aGlz
UmVnaXN0ZXIuZ2V0KCksIGFyZ3NSZWdpc3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpLCBwcm9maWxlSG9va1JlZ2lzdGVyLmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOworICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVy
YXRvciwgbV9hcmdzKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1l
bnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVj
dGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RF
bmQoKSk7CiAgICAgICAgIH0KLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2Fy
Z3MtPm1fbGlzdE5vZGUtPm1fbmV4dCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9m
aWxlSG9va1JlZ2lzdGVyOworICAgICAgICBpZiAoZ2VuZXJhdG9yLnNob3VsZEVtaXRQcm9maWxl
SG9va3MoKSkKKyAgICAgICAgICAgIHByb2ZpbGVIb29rUmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBn
ZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdl
dCgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNSZWdpc3RlciA9IGdlbmVyYXRv
ci5lbWl0Tm9kZShtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcik7CisgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBhcmdzUmVnaXN0ZXI7CisgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3Mg
PSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKKyAgICAgICAgaWYgKGFyZ3MtPm1fZXhwci0+
aXNSZXNvbHZlTm9kZSgpICYmIGdlbmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHN0YXRp
Y19jYXN0PFJlc29sdmVOb2RlKj4oYXJncy0+bV9leHByKS0+aWRlbnRpZmllcigpKSkKKyAgICAg
ICAgICAgIGFyZ3NSZWdpc3RlciA9IGdlbmVyYXRvci51bmNoZWNrZWRSZWdpc3RlckZvckFyZ3Vt
ZW50cygpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0
b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKKworICAgICAgICAvLyBGdW5jdGlvbi5wcm90b3R5
cGUuYXBwbHkgaWdub3JlcyBleHRyYSBhcmd1bWVudHMsIGJ1dCB3ZSBzdGlsbAorICAgICAgICAv
LyBuZWVkIHRvIGV2YWx1YXRlIHRoZW0gZm9yIHNpZGUgZWZmZWN0cy4KKyAgICAgICAgd2hpbGUg
KChhcmdzID0gYXJncy0+bV9uZXh0KSkKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShh
cmdzLT5tX2V4cHIpOworCisgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbFZhcmFyZ3MocmV0dXJu
VmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBhcmdz
UmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcHJvZmlsZUhvb2tSZWdp
c3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICB9Ci0g
ICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChyZWFsQ2FsbC5nZXQoKSk7Ci0gICAgeworICAgIGlmIChl
bWl0Q2FsbENoZWNrKSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOwor
ICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKICAgICAgICAgQ2Fs
bEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkp
OwogICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9u
LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdl
dCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0KCkpOwogICAgIHJl
dHVybiByZXR1cm5WYWx1ZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9o
YXNoX3RhYmxlCmluZGV4IDM5Nzk3NmIwNmM3YTliNTgzNjMzMjkwMGE2ZWJiOTNlYzY4Yjc0ODYu
LmNhZDY1YmM0Y2M4ODhlMzE0Zjg4ZDY2NWRkNGE2ZTY0NWEwOWEzNTUgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUKQEAgLTI4OSw3ICsyODksMTcgQEAgc3ViIG91dHB1
dCgpIHsKICAgICAgICAgICAgICRpbnRyaW5zaWMgPSAiUmVnRXhwVGVzdEludHJpbnNpYyIgaWYg
KCRrZXkgZXEgInRlc3QiKTsKICAgICAgICAgfQogCisgICAgICAgIGlmICgkdmFsdWVzWyRpXXsi
dHlwZSJ9IGVxICJGdW5jdGlvbiIpICB7CisgICAgICAgICAgICBteSAkdGFibGVIZWFkID0gJG5h
bWU7CisgICAgICAgICAgICAkdGFibGVIZWFkID1+IHMvVGFibGUkLy87CisgICAgICAgICAgICBw
cmludCAiICNpZiBKU0NfQlVJTFRJTl9FWElTVFMoIiAuIHVjKCR0YWJsZUhlYWQgLiAka2V5KSAu
IilcbiI7CisgICAgICAgICAgICBwcmludCAiICAgeyBcIiRrZXlcIiwgKCgkYXR0cnNbJGldKSAm
IH5GdW5jdGlvbikgfCBCdWlsdGluLCAkaW50cmluc2ljLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
QnVpbHRpbkdlbmVyYXRvcj4oIiAuICR0YWJsZUhlYWQgLiB1Y2ZpcnN0KCRrZXkpIC4gIkNvZGVH
ZW5lcmF0b3IpLCAoaW50cHRyX3QpJHNlY29uZFZhbHVlIH0sXG4iOworICAgICAgICAgICAgcHJp
bnQgIiAjZWxzZVxuIgorICAgICAgICB9CiAgICAgICAgIHByaW50ICIgICB7IFwiJGtleVwiLCAk
YXR0cnNbJGldLCAkaW50cmluc2ljLCAoaW50cHRyX3QpIiAuICRmaXJzdENhc3RTdHIgLiAiKCRm
aXJzdFZhbHVlKSwgKGludHB0cl90KSIgLiAkc2Vjb25kQ2FzdFN0ciAuICIoJHNlY29uZFZhbHVl
KSB9LFxuIjsKKyAgICAgICAgaWYgKCR2YWx1ZXNbJGldeyJ0eXBlIn0gZXEgIkZ1bmN0aW9uIikg
IHsKKyAgICAgICAgICAgIHByaW50ICIgI2VuZGlmXG4iCisgICAgICAgIH0KICAgICAgICAgJGkr
KzsKICAgICB9CiAgICAgcHJpbnQgIiAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIDAsIDAgfVxuIjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9taW5hdG9ycy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWluYXRvcnMuY3BwCmluZGV4IGE1YWU2
MTRiOTE5YjBmZDQzNDgyZDAxNWNjMjk1MDg0MGU1NGIyNjEuLjIwMDk2ZTczYjM1MTU5Yzc0MzRi
ZDI3YWI2ZjYzMzM3ZmU5ZGY0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9taW5hdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b21pbmF0b3JzLmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiREZHRG9taW5hdG9ycy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgi
CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29kZS5jcHAKaW5kZXggOTNjNDFmYmRlNDQ3NjRiNmE2ZmVlMGIyNGI0ODQ5YWVkYjExNzRjNS4u
ZDg2YWM4YjQxMzczMWNiOGRiZGY0YWQzM2VmYTVkNzg1MjA1MWEwMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxF
KERGR19KSVQpCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDJmZjBjMzQxNDZlMmMw
YmEyZmY3NmM0ZDNmN2M0NmJhM2UyNTUxNDcuLjkwNDRjZGM2YjhjM2FkNGExZTk0MTg4ZGQxZDBl
MjAwZTY5ZmI5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2luY2x1
ZGUgIlZNLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lu
bGluZXMuaCIKICNpbmNsdWRlICJOYW1lSW5zdGFuY2UuaCIKICNpbmNsdWRlICJPYmplY3RDb25z
dHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9nZW5lcmF0ZS1qcy1idWlsdGlucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZWUxYzdhN2NjZGQ5Mzc2OTIwZTc2
ZDdmZThkMzBhZjk1NWYzMWE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5zCkBAIC0wLDAgKzEsMzA0IEBACisjIS91c3IvYmluL3B5
dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisjIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorIyBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorIyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisjIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGZpbGVjbXAKK2ltcG9ydCBmbm1hdGNoCitpbXBv
cnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHNodXRpbAoraW1wb3J0IHN5cworaW1wb3J0IGRhdGV0
aW1lCitpbXBvcnQganNvbgorCitjb3B5cmlnaHRUZXh0ID0gIiIiICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi9cbgorIiIiCisKK2dlbmVyYXRvclN0cmluZyA9ICIvKiBH
ZW5lcmF0ZWQgYnkgJXMgZG8gbm90IGhhbmQgZWRpdC4gKi9cbiIgJSBvcy5wYXRoLmJhc2VuYW1l
KF9fZmlsZV9fKQorCitmdW5jdGlvbkhlYWRSZWdFeHAgPSByZS5jb21waWxlKHIiZnVuY3Rpb25c
cytcdytccypcKC4qP1wpIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK2Z1bmN0aW9uTmFtZVJlZ0V4
cCA9IHJlLmNvbXBpbGUociJmdW5jdGlvblxzKyhcdyspXHMqXCgiLCByZS5NVUxUSUxJTkUgfCBy
ZS5TKQorZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIgPSByZS5jb21waWxlKHIiXmZ1bmN0aW9uXHMr
KD86XHcrKVxzKlwoKCg/OlxzKlx3Kyk/XHMqKD86XHMqLFxzKlx3KykqKT9cKSIsIHJlLk1VTFRJ
TElORSB8IHJlLlMpCisKK211bHRpbGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9c
Ki4qP1wqXC8iLCByZS5NVUxUSUxJTkUgfCByZS5TKQorc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAg
PSByZS5jb21waWxlKHIiXC9cLy4qP1xuIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKKworZGVmIGdl
dENvcHlyaWdodChzb3VyY2UpOgorICAgIGNvcHlyaWdodEJsb2NrID0gbXVsdGlsaW5lQ29tbWVu
dFJlZ0V4cC5maW5kYWxsKHNvdXJjZSlbMF0KKyAgICBjb3B5cmlnaHRCbG9jayA9IGNvcHlyaWdo
dEJsb2NrWzpjb3B5cmlnaHRCbG9jay5pbmRleCgiUmVkaXN0cmlidXRpb24iKV0KKyAgICBjb3B5
UmlnaHRMaW5lcyA9IFtdCisKKyAgICBmb3IgbGluZSBpbiBjb3B5cmlnaHRCbG9jay5zcGxpdCgi
XG4iKToKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiLyoiLCAiIikKKyAgICAgICAgbGlu
ZSA9IGxpbmUucmVwbGFjZSgiKi8iLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgi
KiIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCJDb3B5cmlnaHQiLCAiIikKKyAg
ICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiY29weXJpZ2h0IiwgIiIpCisgICAgICAgIGxpbmUg
PSBsaW5lLnJlcGxhY2UoIihDKSIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIo
YykiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgICAgICBpZiBsZW4obGlu
ZSkgPT0gMDoKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgY29weVJpZ2h0TGluZXMu
YXBwZW5kKGxpbmUpCisgICAgCisgICAgcmV0dXJuIGxpc3Qoc2V0KGNvcHlSaWdodExpbmVzKSkK
KworCisKK2RlZiBnZXRGdW5jdGlvbnMoc291cmNlKToKKworICAgIHNvdXJjZSA9IG11bHRpbGlu
ZUNvbW1lbnRSZWdFeHAuc3ViKCIvKiovIiwgc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAuc3ViKCIv
L1xuIiwgc291cmNlKSkKKworICAgIG1hdGNoZXMgPSBbIGYgZm9yIGYgaW4gZnVuY3Rpb25IZWFk
UmVnRXhwLmZpbmRpdGVyKHNvdXJjZSldCisgICAgZnVuY3Rpb25Cb3VuZHMgPSBbXQorICAgIHN0
YXJ0ID0gMAorICAgIGVuZCA9IDAKKyAgICBmb3IgbWF0Y2ggaW4gbWF0Y2hlczoKKyAgICAgICAg
c3RhcnQgPSBtYXRjaC5zdGFydCgpCisgICAgICAgIGlmIHN0YXJ0IDwgZW5kOgorICAgICAgICAg
ICAgY29udGludWUKKyAgICAgICAgZW5kID0gbWF0Y2guZW5kKCkKKyAgICAgICAgd2hpbGUgc291
cmNlW2VuZF0gIT0gJ3snOgorICAgICAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICBkZXB0
aCA9IDEKKyAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICB3aGlsZSBkZXB0aCA+IDA6Cisg
ICAgICAgICAgICBpZiBzb3VyY2VbZW5kXSA9PSAneyc6CisgICAgICAgICAgICAgICAgZGVwdGgg
PSBkZXB0aCArIDEKKyAgICAgICAgICAgIGVsaWYgc291cmNlW2VuZF0gPT0gJ30nOgorICAgICAg
ICAgICAgICAgIGRlcHRoID0gZGVwdGggLSAxCisgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisg
ICAgICAgIGZ1bmN0aW9uQm91bmRzLmFwcGVuZCgoc3RhcnQsIGVuZCkpCisKKyAgICBmdW5jdGlv
bnMgPSBbc291cmNlW3N0YXJ0OmVuZF0uc3RyaXAoKSBmb3IgKHN0YXJ0LCBlbmQpIGluIGZ1bmN0
aW9uQm91bmRzXQorICAgIHJlc3VsdCA9IFtdCisgICAgZm9yIGZ1bmN0aW9uIGluIGZ1bmN0aW9u
czoKKyAgICAgICAgZnVuY3Rpb24gPSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLnN1YigiIiwgZnVu
Y3Rpb24pCisgICAgICAgIGZ1bmN0aW9uTmFtZSA9IGZ1bmN0aW9uTmFtZVJlZ0V4cC5maW5kYWxs
KGZ1bmN0aW9uKVswXQorICAgICAgICBmdW5jdGlvblBhcmFtZXRlcnMgPSBmdW5jdGlvblBhcmFt
ZXRlckZpbmRlci5maW5kYWxsKGZ1bmN0aW9uKVswXS5zcGxpdCgnLCcpCisgICAgICAgIGlmIGxl
bihmdW5jdGlvblBhcmFtZXRlcnNbMF0pID09IDA6CisgICAgICAgICAgICBmdW5jdGlvblBhcmFt
ZXRlcnMgPSBbXQorICAgICAgICAgICAgCisgICAgICAgIHJlc3VsdC5hcHBlbmQoKGZ1bmN0aW9u
TmFtZSwgZnVuY3Rpb24sIGZ1bmN0aW9uUGFyYW1ldGVycykpCisgICAgcmV0dXJuIHJlc3VsdAor
ICAgICAgICAKKworZGVmIGdlbmVyYXRlQ29kZShzb3VyY2UpOgorICAgIGlucHV0RmlsZSA9IG9w
ZW4oc291cmNlLCAiciIpCisgICAgYmFzZU5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHNvdXJjZSku
cmVwbGFjZSgiLmpzIiwgIiIpCisgICAgCisgICAgc291cmNlID0gIiIKKyAgICBmb3IgbGluZSBp
biBpbnB1dEZpbGU6CisgICAgICAgIHNvdXJjZSA9IHNvdXJjZSArIGxpbmUKKyAgICAKKyAgICBp
ZiBzeXMucGxhdGZvcm0gPT0gImN5Z3dpbiI6CisgICAgICAgIHNvdXJjZSA9IHNvdXJjZS5yZXBs
YWNlKCJcclxuIiwgIlxuIikKKyAgICByZXR1cm4gKGJhc2VOYW1lLCBnZXRGdW5jdGlvbnMoc291
cmNlKSwgZ2V0Q29weXJpZ2h0KHNvdXJjZSkpCisKK2RlZiBtYW5nbGVOYW1lKG9iamVjdCwgbmFt
ZSk6CisgICAgcU5hbWUgPSBvYmplY3QgKyAiLiIgKyBuYW1lCisgICAgbWFuZ2xlZE5hbWUgPSAi
IgorICAgIGkgPSAwCisgICAgd2hpbGUgaSA8IGxlbihxTmFtZSk6CisgICAgICAgIGlmIHFOYW1l
W2ldID09ICcuJzoKKyAgICAgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWUgKyBxTmFt
ZVtpICsgMV0udXBwZXIoKQorICAgICAgICAgICAgaSA9IGkgKyAxCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lICsgcU5hbWVbaV0KKyAgICAgICAg
aSA9IGkgKyAxCisgICAgcmV0dXJuIG1hbmdsZWROYW1lCisKK2J1aWx0aW5zID0gW10KKworYmFz
ZU5hbWUgPSBzeXMuYXJndlstMV0KK2J1aWx0aW5fZGVmaW5pdGlvbnMgPSBzeXMuYXJndlsxOi0x
XQorKG91dHB1dF9iYXNlLCBfKSA9IG9zLnBhdGguc3BsaXRleHQoc3lzLmFyZ3ZbLTFdKQorCitj
b3B5cmlnaHRzID0gW10KK2ZvciBmaWxlIGluIGJ1aWx0aW5fZGVmaW5pdGlvbnM6CisgICAgaWYg
Zm5tYXRjaC5mbm1hdGNoKGZpbGUsICcqLmpzJyk6CisgICAgICAgIChiYXNlTmFtZSwgZnVuY3Rp
b25zLCBvYmplY3RDb3B5cmlnaHRzKSA9IGdlbmVyYXRlQ29kZShmaWxlKQorICAgICAgICBjb3B5
cmlnaHRzLmV4dGVuZChvYmplY3RDb3B5cmlnaHRzKQorICAgICAgICBidWlsdGlucy5hcHBlbmQo
KGJhc2VOYW1lLCBmdW5jdGlvbnMpKQorCitjb3B5cmlnaHRzID0gbGlzdChzZXQoY29weXJpZ2h0
cykpCisKK2NvcHlyaWdodEJvZHkgPSAiIgorZm9yIGNvcHlyaWdodCBpbiBjb3B5cmlnaHRzOgor
ICAgIGNvcHlyaWdodEJvZHkgPSBjb3B5cmlnaHRCb2R5ICsiICogQ29weXJpZ2h0IChDKSAiICsg
Y29weXJpZ2h0ICsgIlxuIgorCitidWlsdGluc0hlYWRlciA9IG9wZW4ob3V0cHV0X2Jhc2UgKyAi
LmgudG1wIiwgInciKQorYnVpbHRpbnNJbXBsZW1lbnRhdGlvbiA9IG9wZW4ob3V0cHV0X2Jhc2Ug
KyAiLmNwcC50bXAiLCAidyIpCitjb3B5cmlnaHRUZXh0ID0gIi8qXG4iICsgY29weXJpZ2h0Qm9k
eSArIGNvcHlyaWdodFRleHQKK2J1aWx0aW5zSGVhZGVyLndyaXRlKCIiIiVzCislcworCisjaWZu
ZGVmIEpTQ0J1aWx0aW5zX0gKKyNkZWZpbmUgSlNDQnVpbHRpbnNfSAorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgSWRlbnRpZmllcjsKK2NsYXNz
IEpTR2xvYmFsT2JqZWN0OworY2xhc3MgU291cmNlQ29kZTsKK2NsYXNzIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOworY2xhc3MgVk07CisKK0Z1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVp
bHRpbkV4ZWN1dGFibGUoVk0mLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSosIGNvbnN0IFNv
dXJjZUNvZGUmKTsKKworIiIiICUgKGdlbmVyYXRvclN0cmluZywgY29weXJpZ2h0VGV4dCkpCisK
K2NvZGVSZWZlcmVuY2VzID0gW10KKworZm9yIChvYmplY3ROYW1lLCBmdW5jdGlvbnMpIGluIGJ1
aWx0aW5zOgorICAgIHByaW50KCJHZW5lcmF0aW5nIGJpbmRpbmdzIGZvciB0aGUgJXMgYnVpbHRp
bi4iICUgb2JqZWN0TmFtZSkKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiLyogJXMgZnVuY3Rp
b25zICovXG4iICUgb2JqZWN0TmFtZSkKKyAgICBmb3IgKG5hbWUsIGltcGxlbWVudGF0aW9uLCBf
KSBpbiBmdW5jdGlvbnM6CisgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlTmFtZShvYmplY3RO
YW1lLCBuYW1lKQorICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lWzBdLmxvd2VyKCkg
KyBtYW5nbGVkTmFtZVsxOl0gKyAiQ29kZSIKKyAgICAgICAgY29kZVJlZmVyZW5jZXMuYXBwZW5k
KChtYW5nbGVkTmFtZSwgbmFtZSwgaW1wbGVtZW50YXRpb24pKQorICAgICAgICBidWlsdGluc0hl
YWRlci53cml0ZSgiZXh0ZXJuIGNvbnN0IGNoYXIqIHNfJXM7XG4iICUgbWFuZ2xlZE5hbWUpCisg
ICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJleHRlcm4gY29uc3QgaW50IHNfJXNMZW5ndGg7
XG4iICUgbWFuZ2xlZE5hbWUpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuIikKKyAgICBi
dWlsdGluc0hlYWRlci53cml0ZSgiI2RlZmluZSBKU0NfRk9SRUFDSF8lc19CVUlMVElOKG1hY3Jv
KSBcXFxuIiAlIG9iamVjdE5hbWUucmVwbGFjZSgiLiIsICJfIikudXBwZXIoKSkKKyAgICBmb3Ig
KG5hbWUsIGltcGxlbWVudGF0aW9uLCBhcmd1bWVudHMpIGluIGZ1bmN0aW9uczoKKyAgICAgICAg
bWFuZ2xlZE5hbWUgPSBtYW5nbGVOYW1lKG9iamVjdE5hbWUsIG5hbWUpCisgICAgICAgIGJ1aWx0
aW5zSGVhZGVyLndyaXRlKCIgICAgbWFjcm8oJXMsICVzLCAlZCkgXFxcbiIgJSAobmFtZSwgbWFu
Z2xlZE5hbWUsIGxlbihhcmd1bWVudHMpKSkKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiXG4i
KQorICAgIGZvciAobmFtZSwgaW1wbGVtZW50YXRpb24sIGFyZ3VtZW50cykgaW4gZnVuY3Rpb25z
OgorICAgICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiI2RlZmluZSBKU0NfQlVJTFRJTl8lcyAx
XG4iICUgbWFuZ2xlTmFtZShvYmplY3ROYW1lLCBuYW1lKS51cHBlcigpKQorICAgIGJ1aWx0aW5z
SGVhZGVyLndyaXRlKCJcblxuIikKK25hbWVzID0gW10KK2J1aWx0aW5zSGVhZGVyLndyaXRlKCIj
ZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU4obWFjcm8pXFxcbiIpCitmb3IgKGNvZGVSZWZlcmVu
Y2UsIGZ1bmN0aW9uTmFtZSwgc291cmNlKSBpbiBjb2RlUmVmZXJlbmNlczoKKyAgICBidWlsdGlu
c0hlYWRlci53cml0ZSgiICAgIG1hY3JvKCVzLCAlcywgc18lc0xlbmd0aCkgXFxcbiIgJSAoY29k
ZVJlZmVyZW5jZSwgZnVuY3Rpb25OYW1lLCBjb2RlUmVmZXJlbmNlKSkKKyAgICBuYW1lcy5hcHBl
bmQoZnVuY3Rpb25OYW1lKQorCitidWlsdGluc0hlYWRlci53cml0ZSgiXG5cbiIpCitidWlsdGlu
c0hlYWRlci53cml0ZSgiI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUo
bWFjcm8pIFxcXG4iKQorZm9yIG5hbWUgaW4gc29ydGVkKHNldChuYW1lcykpOgorICAgIGJ1aWx0
aW5zSGVhZGVyLndyaXRlKCIgICAgbWFjcm8oJXMpIFxcXG4iICUgbmFtZSkKK2J1aWx0aW5zSGVh
ZGVyLndyaXRlKCIiIgorCisjZGVmaW5lIEpTQ19ERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNv
ZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCisgICAgRnVuY3Rpb25FeGVj
dXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKFZNJik7CisKK0pTQ19GT1JFQUNIX0JVSUxUSU4o
SlNDX0RFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgSlNDX0RFQ0xBUkVfQlVJTFRJ
Tl9HRU5FUkFUT1IKKworI2RlZmluZSBKU0NfQlVJTFRJTl9FWElTVFMobmFtZSkgZGVmaW5lZChK
U0NfQlVJTFRJTl8jI25hbWUpCisKK30KKworI2VuZGlmCisKKyIiIikKKworYnVpbHRpbnNJbXBs
ZW1lbnRhdGlvbi53cml0ZSgiIiIlcworJXMKKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5j
bHVkZSAiSlNDQnVpbHRpbnMuaCIKKworI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgor
I2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5j
bHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKKyIiIiAgJSAoZ2VuZXJhdG9yU3RyaW5n
LCBjb3B5cmlnaHRUZXh0KSkKKworZm9yIChjb2RlUmVmZXJlbmNlLCBuYW1lLCBzb3VyY2UpIGlu
IGNvZGVSZWZlcmVuY2VzOgorICAgIHNvdXJjZSA9ICIoZnVuY3Rpb24gIiArIHNvdXJjZVtzb3Vy
Y2UuaW5kZXgoIigiKTpdICsgIikiCisgICAgbGluZXMgPSBqc29uLmR1bXBzKHNvdXJjZSlbMTot
MV0uc3BsaXQoIlxcbiIpCisgICAgc291cmNlTGVuZ3RoID0gbGVuKHNvdXJjZSkKKyAgICBzb3Vy
Y2UgPSAiIgorICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICBzb3VyY2UgPSBzb3VyY2Ug
KyAoIiAgICBcIiVzXFxuXCIgXFxcbiIgJSBsaW5lKQorICAgIGJ1aWx0aW5zSW1wbGVtZW50YXRp
b24ud3JpdGUoImNvbnN0IGNoYXIqIHNfJXMgPVxuJXM7XG5cbiIgJSAoY29kZVJlZmVyZW5jZSwg
c291cmNlKSkKKyAgICBidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCJjb25zdCBpbnQgc18l
c0xlbmd0aCA9ICVkO1xuXG4iICUgKGNvZGVSZWZlcmVuY2UsIHNvdXJjZUxlbmd0aCArIDEpKSAj
ICsgMSBmb3IgXG4KKworYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiIiIKK0Z1bmN0aW9u
RXhlY3V0YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUoVk0mIHZtLCBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UpCit7CisgICAgdW5zaWduZWQgbGluZUNvdW50ID0gdW5saW5rZWRFeGVjdXRhYmxlLT5saW5l
Q291bnQoKTsKKyAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IDE7CisgICAgdW5zaWduZWQgc291
cmNlTGVuZ3RoID0gdW5saW5rZWRFeGVjdXRhYmxlLT5zb3VyY2VMZW5ndGgoKTsKKyAgICBib29s
IGVuZENvbHVtbklzT25TdGFydExpbmUgPSAhbGluZUNvdW50OworICAgIHVuc2lnbmVkIGVuZENv
bHVtbkV4Y2x1ZGluZ0JyYWNlcyA9IHVubGlua2VkRXhlY3V0YWJsZS0+dW5saW5rZWRCb2R5RW5k
Q29sdW1uKCkgKyAoZW5kQ29sdW1uSXNPblN0YXJ0TGluZSA/IDAgOiAxKTsKKyAgICB1bnNpZ25l
ZCBzdGFydE9mZnNldCA9IHVubGlua2VkRXhlY3V0YWJsZS0+c3RhcnRPZmZzZXQoKTsKKyAgICB1
bnNpZ25lZCBzdGFydE9mZnNldEV4Y2x1ZGluZ09wZW5CcmFjZSA9IHN0YXJ0T2Zmc2V0ICsgMTsK
KyAgICB1bnNpZ25lZCBlbmRPZmZzZXRFeGNsdWRpbmdDbG9zZUJyYWNlID0gc3RhcnRPZmZzZXQg
KyBzb3VyY2VMZW5ndGggLSAxOworICAgIFNvdXJjZUNvZGUgYm9keVNvdXJjZShzb3VyY2UucHJv
dmlkZXIoKSwgc3RhcnRPZmZzZXRFeGNsdWRpbmdPcGVuQnJhY2UsIGVuZE9mZnNldEV4Y2x1ZGlu
Z0Nsb3NlQnJhY2UsIDAsIHN0YXJ0Q29sdW1uKTsKKyAgICByZXR1cm4gRnVuY3Rpb25FeGVjdXRh
YmxlOjpjcmVhdGUodm0sIGJvZHlTb3VyY2UsIHVubGlua2VkRXhlY3V0YWJsZSwgMCwgbGluZUNv
dW50LCBzdGFydENvbHVtbiwgZW5kQ29sdW1uRXhjbHVkaW5nQnJhY2VzLCBmYWxzZSk7Cit9CisK
KyNkZWZpbmUgSlNDX0RFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25O
YW1lLCBhcmd1bWVudENvdW50KSBcXAorRnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2Vu
ZXJhdG9yKFZNJiB2bSkgXFwKK3sgXFwKKyAgICByZXR1cm4gY3JlYXRlQnVpbHRpbkV4ZWN1dGFi
bGUodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLCB2
bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpKTsgXFwKK30KKworSlND
X0ZPUkVBQ0hfQlVJTFRJTihKU0NfREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIEpT
Q19ERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKK30KKworIiIiKQorCitidWlsdGluc0hlYWRlci5j
bG9zZSgpCitidWlsdGluc0ltcGxlbWVudGF0aW9uLmNsb3NlKCkKKworaWYgKG5vdCBvcy5wYXRo
LmV4aXN0cyhvdXRwdXRfYmFzZSArICIuaCIpKSBvciAobm90IGZpbGVjbXAuY21wKG91dHB1dF9i
YXNlICsgIi5oLnRtcCIsIG91dHB1dF9iYXNlICsgIi5oIiwgc2hhbGxvdz1GYWxzZSkpOgorICAg
IG9zLnJlbmFtZShvdXRwdXRfYmFzZSArICIuaC50bXAiLCBvdXRwdXRfYmFzZSArICIuaCIpCitl
bHNlOgorICAgIG9zLnJlbW92ZShvdXRwdXRfYmFzZSArICIuaC50bXAiKQorCitpZiAobm90IG9z
LnBhdGguZXhpc3RzKG91dHB1dF9iYXNlICsgIi5jcHAiKSkgb3IgKG5vdCBmaWxlY21wLmNtcChv
dXRwdXRfYmFzZSArICIuY3BwLnRtcCIsIG91dHB1dF9iYXNlICsgIi5jcHAiLCBzaGFsbG93PUZh
bHNlKSk6CisgICAgb3MucmVuYW1lKG91dHB1dF9iYXNlICsgIi5jcHAudG1wIiwgb3V0cHV0X2Jh
c2UgKyAiLmNwcCIpCitlbHNlOgorICAgIG9zLnJlbW92ZShvdXRwdXRfYmFzZSArICIuY3BwLnRt
cCIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVk
Q2FsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaApp
bmRleCAyY2EzZTk3OTQwYzdjMTEwNmMxYmFiYTFmMzU0ZmU4NDdiNDM4NWIzLi4zMGNhZDJhMTRm
ZmRiZmI0ZDU3Y2Y1YTEyZmNiOTAwZTI2NGY4NzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICAsIG1faW50ZXJwcmV0ZXIoY2FsbEZyYW1lLT5pbnRlcnByZXRl
cigpKQogICAgICAgICAgICAgLCBtX2VudHJ5U2NvcGUoY2FsbEZyYW1lLT52bSgpLCBmdW5jdGlv
bi0+c2NvcGUoKS0+Z2xvYmFsT2JqZWN0KCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VS
VCghZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkpOworICAgICAgICAgICAgQVNTRVJUKCFmdW5j
dGlvbi0+aXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSk7CiAgICAgICAgICAgICBpZiAoY2FsbEZy
YW1lLT52bSgpLmlzU2FmZVRvUmVjdXJzZSgpKSB7CiAgICAgICAgICAgICAgICAgbV9hcmd1bWVu
dHMucmVzaXplKGFyZ3VtZW50Q291bnQpOwogICAgICAgICAgICAgICAgIG1fY2xvc3VyZSA9IG1f
aW50ZXJwcmV0ZXItPnByZXBhcmVGb3JSZXBlYXRDYWxsKGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUo
KSwgY2FsbEZyYW1lLCAmbV9wcm90b0NhbGxGcmFtZSwgZnVuY3Rpb24sIGFyZ3VtZW50Q291bnQg
KyAxLCBmdW5jdGlvbi0+c2NvcGUoKSwgbV9hcmd1bWVudHMuZGF0YSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGNhODkw
YjA2ZWEzM2ZhOWU3ZjFmYTUxYTM1ZWEyZDQ4ZDAwOWEzOGEuLjZjOWJmOTZjMTVmNjA5ZTI2NWNl
MjUwYTQ1YmYwODYxZDA2Y2QxZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIkpT
UHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1N0YWNrSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNsdWRlICJMTEludENMb29wLmgiCiAjaW5jbHVkZSAiTExJ
bnRUaHVua3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9Qcm90b0NhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
UHJvdG9DYWxsRnJhbWUuY3BwCmluZGV4IGYwZTAyYmE0ZTQ3NmY5OWNjOTEzYjA0NjJhZDI3OTUw
MDYwOWZhM2EuLjFjMjQwZGNkNzFiZTUyOWQ4OGNiZjQ2MWQxODY4ZjVlYjJiMDJhZDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1l
LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCiAKICNp
bmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggY2E3YWQxMWYyZTBiOGEzYjhiMTg1ODkx
ZDdlNTIyYmFlNDAzYTIzNi4uY2I1NTA3YmVhYzU1YmY4ZWIxYjM3ZWM5MGZjYWIxOTM0ZmI0OGVh
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNs
dWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRl
ICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
MzJfNjQuY3BwCmluZGV4IDk4ZDEwYTNmNGRjYjEyZDg5ZjM3YTEyZjIyNjA0Yjk0NmUwOGU2Mjcu
LmRkMDM1Mzc3OWU4YmRmOThmNDY1OGEzMDdlMzJkMDZlNDcyNDQxNTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRl
ICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJK
U0NlbGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAKaW5kZXggOTI4ZGQ1MGZiMDE2ZTI3MTY0NGE1NzVlMzBhYjVmMjUxNmViNTBlYy4uOTlmNWRi
MDdlNjZiOWQ4YzRiMjM0YjkyYWQ1MTEzZTA5MTJmNTlkZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC00MSwxMCArNDEsMTMgQEAKICNpbmNsdWRl
ICJKSVQuaCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25XcmFwcGVycy5oIgogI2luY2x1ZGUgIkpJ
VFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNs
dWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdGFja0lubGluZXMu
aCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJKU1dpdGhTY29wZS5o
IgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApp
bmRleCAyNmRkNGQxYWY3NDVhZmExZmJjNTNhOWMwMjNhNmU0NzQxYTY2YTA5Li5kZjFiZDNhOWNm
YTQwMmM1MmE1MjExY2YxYWNjZTY3ZDUxMjFiN2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMjksMTEgKzI5LDEzIEBACiAjaW5j
bHVkZSAiSklULmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJDb21tb25J
ZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkdDQXdhcmVKSVRTdHViUm91dGluZS5oIgogI2luY2x1
ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAi
SklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNWYXJpYWJsZU9iamVjdC5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcAppbmRleCA0MDc4NGI0OTQzMWZlMDJlOGU0NTIyZjE2MzA4YzkwMjQ3MTZkMjM2Li4y
Zjc5NTU1NGIwOTFkZWViYmMwM2JmMmJlOGM3NGY0MWFlNTQxZWQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpT
UHJveHkuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5l
cy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIK
ICNpbmNsdWRlICJTdGFja1Zpc2l0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggNjA0Y2MyNjNjZjk3ZTA4
NmZlZDA2ZWM5MDNiMGVjMTk4M2U3ODEzNy4uODE2NmU3ZjgxZmE4OWE3ZDRmNTBjNWYxYTk0ZmE5
NjhjNWQ1N2UxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJKSVRT
dHVicy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKLSNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNs
dWRlICJWTS5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNPYmpl
Y3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
CmluZGV4IDY2NDQ0YmFhMDhiNTYyZGQ2OTdlMGNjZDc3MjFlNTVjMTViYTQ5MTMuLjgzYzk4ZGZk
NjRiMGVjOWFjZmEzOTYzYTYxMDdmMTU1MGQwY2ZjODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtNDUsNyArNDUsNyBAQAogI2luY2x1
ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgog
I2luY2x1ZGUgIkpTU3RhY2tJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNs
dWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgogI2luY2x1
ZGUgIkxMSW50Q29tbW9uLmgiCiAjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25zLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IDhlYzFmZDMyYTNhZGEyMmUx
MjUyMjk1NzBkY2Y3ZmYyOGVhYmYxZWQuLjQ2YTdjNzZiMmY5MDFmYzNjYzM2ZDFjZTBjMDczNTNl
YjA2YjJmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVp
bGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBA
IC04ODgsOSArODg4LDkgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlv
bkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24KICAgICBBU1NFUlQoZnVu
Yy0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CiAgICAgRG90QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0
aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihmdW5jKTsKICAgICBGdW5jdGlvbkNhbGxEb3ROb2Rl
KiBub2RlOwotICAgIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5jYWxsKQorICAgIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5jYWxsIHx8IGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmNhbGxQ
cml2YXRlTmFtZSkKICAgICAgICAgbm9kZSA9IG5ldyAobV92bSkgQ2FsbEZ1bmN0aW9uQ2FsbERv
dE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2
b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKLSAgICBlbHNlIGlmIChkb3QtPmlkZW50aWZpZXIo
KSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcHBseSkKKyAgICBlbHNlIGlmIChkb3QtPmlkZW50
aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcHBseSB8fCBkb3QtPmlkZW50aWZpZXIo
KSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcHBseVByaXZhdGVOYW1lKQogICAgICAgICBub2Rl
ID0gbmV3IChtX3ZtKSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFz
ZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5k
KTsKICAgICBlbHNlCiAgICAgICAgIG5vZGUgPSBuZXcgKG1fdm0pIEZ1bmN0aW9uQ2FsbERvdE5v
ZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3Qs
IGRpdm90U3RhcnQsIGRpdm90RW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTGV4ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5j
cHAKaW5kZXggY2E0YmI0ZjBhZGU4ZDZiYzgyNjkxYTZjMDAwMTRjZjE5OGJkODhiZC4uY2NiMDc5
ZDk3NWExNDFjNWM0YjJkN2I2MjMxMzAwMDcwOTc3NzgyOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9MZXhlci5jcHAKQEAgLTI1LDEwICsyNSwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkxleGVyLmgiCiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgor
I2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgot
CiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKLSNpbmNsdWRlICJJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSAiTm9kZUluZm8uaCIKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1
ZGUgPHd0Zi9kdG9hLmg+CkBAIC05MCw2ICs5MCw3IEBAIGVudW0gQ2hhcmFjdGVyVHlwZSB7CiAK
ICAgICAvLyBPdGhlciB0eXBlcyAob25seSBvbmUgc28gZmFyKQogICAgIENoYXJhY3RlcldoaXRl
U3BhY2UsCisgICAgQ2hhcmFjdGVyUHJpdmF0ZUlkZW50aWZpZXJTdGFydAogfTsKIAogLy8gMjU2
IExhdGluLTEgY29kZXMKQEAgLTE1OCw3ICsxNTksNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQg
c2hvcnQgdHlwZXNPZkxhdGluMUNoYXJhY3RlcnNbMjU2XSA9IHsKIC8qICA2MSAtID0gICAgICAg
ICAgICAgICAgICAqLyBDaGFyYWN0ZXJFcXVhbCwKIC8qICA2MiAtID4gICAgICAgICAgICAgICAg
ICAqLyBDaGFyYWN0ZXJHcmVhdGVyLAogLyogIDYzIC0gPyAgICAgICAgICAgICAgICAgICovIENo
YXJhY3RlclF1ZXN0aW9uLAotLyogIDY0IC0gQCAgICAgICAgICAgICAgICAgICovIENoYXJhY3Rl
ckludmFsaWQsCisvKiAgNjQgLSBAICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyUHJpdmF0
ZUlkZW50aWZpZXJTdGFydCwKIC8qICA2NSAtIEEgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0
ZXJJZGVudGlmaWVyU3RhcnQsCiAvKiAgNjYgLSBCICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFj
dGVySWRlbnRpZmllclN0YXJ0LAogLyogIDY3IC0gQyAgICAgICAgICAgICAgICAgICovIENoYXJh
Y3RlcklkZW50aWZpZXJTdGFydCwKQEAgLTQ4Niw5ICs0ODcsMTAgQEAgc3RhdGljIGNvbnN0IExD
aGFyIHNpbmdsZUNoYXJhY3RlckVzY2FwZVZhbHVlc0ZvckFTQ0lJWzEyOF0gPSB7CiB9OwogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUxleGVyPFQ+OjpMZXhlcihWTSogdm0pCitMZXhlcjxUPjo6
TGV4ZXIoVk0qIHZtLCBKU1BhcnNlclN0cmljdG5lc3Mgc3RyaWN0bmVzcykKICAgICA6IG1faXNS
ZXBhcnNpbmcoZmFsc2UpCiAgICAgLCBtX3ZtKHZtKQorICAgICwgbV9wYXJzaW5nQnVpbHRpbkZ1
bmN0aW9uKHN0cmljdG5lc3MgPT0gSlNQYXJzZUJ1aWx0aW4pCiB7CiB9CiAKQEAgLTc1Myw3ICs3
NTUsMjcgQEAgaW5saW5lIHZvaWQgTGV4ZXI8VD46OnJlY29yZDE2KGludCBjKQogICAgIEFTU0VS
VChjIDw9IHN0YXRpY19jYXN0PGludD4oVVNIUlRfTUFYKSk7CiAgICAgbV9idWZmZXIxNi5hcHBl
bmQoc3RhdGljX2Nhc3Q8VUNoYXI+KGMpKTsKIH0KLQorICAgIAorI2lmICFBU1NFUlRfRElTQUJM
RUQKK2Jvb2wgaXNTYWZlSWRlbnRpZmllcihWTSYgdm0sIGNvbnN0IElkZW50aWZpZXIqIGlkZW50
KQoreworICAgIGlmICghaWRlbnQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIC8qIEp1c3Qg
YmxvY2sgYW55IHVzZSBvZiBzdXNwaWNpb3VzIGlkZW50aWZpZXJzLiAgVGhpcyBpcyBpbnRlbmRl
ZCB0bworICAgICAqIGJlIHVzZWQgYXMgYSBzYWZldHkgbmV0IHdoaWxlIGltcGxlbWVudGluZyBi
dWlsdGlucy4KKyAgICAgKi8KKyAgICBpZiAoKmlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmNh
bGwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKmlkZW50ID09IHZtLnByb3BlcnR5
TmFtZXMtPmFwcGx5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCppZGVudCA9PSB2
bS5wcm9wZXJ0eU5hbWVzLT5ldmFsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCpp
ZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5GdW5jdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisgICAgCiB0ZW1wbGF0ZSA8PgogdGVtcGxh
dGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlw
ZSBMZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcihKU1Rva2VuRGF0YSogdG9rZW5EYXRhLCB1
bnNpZ25lZCBsZXhlckZsYWdzLCBib29sIHN0cmljdE1vZGUpCiB7CkBAIC03NjUsNyArNzg3LDEx
IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUg
SlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAgICAgICAgICAgICByZXR1cm4ga2V5d29yZCA9
PSBSRVNFUlZFRF9JRl9TVFJJQ1QgJiYgIXN0cmljdE1vZGUgPyBJREVOVCA6IGtleXdvcmQ7CiAg
ICAgICAgIH0KICAgICB9Ci0KKyAgICAKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJl
bnQgPT0gJ0AnICYmIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKKyAgICBpZiAoaXNQcml2YXRl
TmFtZSkKKyAgICAgICAgc2hpZnQoKTsKKyAgICAKICAgICBjb25zdCBMQ2hhciogaWRlbnRpZmll
clN0YXJ0ID0gY3VycmVudFNvdXJjZVB0cigpOwogICAgIHVuc2lnbmVkIGlkZW50aWZpZXJMaW5l
U3RhcnQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CiAgICAgCkBAIC03NzksMTUgKzgwNSwy
NiBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5F
IEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAogCiAgICAgY29uc3QgSWRlbnRpZmllciogaWRl
bnQgPSAwOwogICAgIAotICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyKSB7CisgICAgaWYg
KHNob3VsZENyZWF0ZUlkZW50aWZpZXIgfHwgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CiAg
ICAgICAgIGludCBpZGVudGlmaWVyTGVuZ3RoID0gY3VycmVudFNvdXJjZVB0cigpIC0gaWRlbnRp
ZmllclN0YXJ0OwogICAgICAgICBpZGVudCA9IG1ha2VJZGVudGlmaWVyKGlkZW50aWZpZXJTdGFy
dCwgaWRlbnRpZmllckxlbmd0aCk7Ci0KKyAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5j
dGlvbikgeworICAgICAgICAgICAgaWYgKCFpc1NhZmVJZGVudGlmaWVyKCptX3ZtLCBpZGVudCkg
JiYgIWlzUHJpdmF0ZU5hbWUpIHsKKyAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9
IG1ha2VTdHJpbmcoIlRoZSB1c2Ugb2YgJyIsIGlkZW50LT5zdHJpbmcoKSwgIicgaXMgZGlzYWxs
b3dlZCBpbiBidWlsdGluIGZ1bmN0aW9ucy4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRVJS
T1JUT0s7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAg
ICAgICAgICAgICAgICBpZGVudCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPmdldFByaXZhdGVOYW1l
KCppZGVudCk7CisgICAgICAgICAgICBlbHNlIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlO
YW1lcy0+dW5kZWZpbmVkS2V5d29yZCkKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmlkZW50
ID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmRQcml2YXRlTmFtZTsKKyAg
ICAgICAgICAgIGlmICghaWRlbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSURfUFJJ
VkFURV9OQU1FX0VSUk9SVE9LOworICAgICAgICB9CiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQg
PSBpZGVudDsKICAgICB9IGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IDA7CiAKLSAg
ICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxh
Z3MgJiBMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpKSB7CisgICAgaWYgKFVOTElLRUxZ
KChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFn
c0lnbm9yZVJlc2VydmVkV29yZHMpKSAmJiAhaXNQcml2YXRlTmFtZSkgewogICAgICAgICBBU1NF
UlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChyZW1haW5pbmcgPCBtYXhU
b2tlbkxlbmd0aCkgewogICAgICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IG1fdm0t
PmtleXdvcmRzLT5nZXRLZXl3b3JkKCppZGVudCk7CkBAIC04MTQsNiArODUxLDEwIEBAIHRlbXBs
YXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5
cGUgTGV4ZXI8VUNoYXI+OjpwCiAgICAgICAgICAgICByZXR1cm4ga2V5d29yZCA9PSBSRVNFUlZF
RF9JRl9TVFJJQ1QgJiYgIXN0cmljdE1vZGUgPyBJREVOVCA6IGtleXdvcmQ7CiAgICAgICAgIH0K
ICAgICB9CisgICAgCisgICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gbV9jdXJyZW50ID09ICdAJyAm
JiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAg
ICAgIHNoaWZ0KCk7CiAKICAgICBjb25zdCBVQ2hhciogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVu
dFNvdXJjZVB0cigpOwogICAgIGludCBpZGVudGlmaWVyTGluZVN0YXJ0ID0gY3VycmVudExpbmVT
dGFydE9mZnNldCgpOwpAQCAtODI2LDYgKzg2Nyw3IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENy
ZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+Ojpw
CiAgICAgfQogICAgIAogICAgIGlmIChVTkxJS0VMWShtX2N1cnJlbnQgPT0gJ1xcJykpIHsKKyAg
ICAgICAgQVNTRVJUKCFpc1ByaXZhdGVOYW1lKTsKICAgICAgICAgc2V0T2Zmc2V0RnJvbVNvdXJj
ZVB0cihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMaW5lU3RhcnQpOwogICAgICAgICByZXR1
cm4gcGFyc2VJZGVudGlmaWVyU2xvd0Nhc2U8c2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4odG9rZW5E
YXRhLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKTsKICAgICB9CkBAIC04MzcsMTggKzg3OSwyOSBA
QCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpT
VG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogCiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQg
PSAwOwogICAgIAotICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyKSB7CisgICAgaWYgKHNo
b3VsZENyZWF0ZUlkZW50aWZpZXIgfHwgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CiAgICAg
ICAgIGludCBpZGVudGlmaWVyTGVuZ3RoID0gY3VycmVudFNvdXJjZVB0cigpIC0gaWRlbnRpZmll
clN0YXJ0OwogICAgICAgICBpZiAoaXNBbGw4Qml0KQogICAgICAgICAgICAgaWRlbnQgPSBtYWtl
SWRlbnRpZmllckxDaGFyRnJvbVVDaGFyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0
aCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGlkZW50ID0gbWFrZUlkZW50aWZpZXIoaWRl
bnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVuZ3RoKTsKLSAgICAgICAgCisgICAgICAgIGlmICht
X3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKKyAgICAgICAgICAgIGlmICghaXNTYWZlSWRlbnRp
ZmllcigqbV92bSwgaWRlbnQpICYmICFpc1ByaXZhdGVOYW1lKSB7CisgICAgICAgICAgICAgICAg
bV9sZXhFcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJUaGUgdXNlIG9mICciLCBpZGVudC0+c3Ry
aW5nKCksICInIGlzIGRpc2FsbG93ZWQgaW4gYnVpbHRpbiBmdW5jdGlvbnMuIik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIEVSUk9SVE9LOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KGlzUHJpdmF0ZU5hbWUpCisgICAgICAgICAgICAgICAgaWRlbnQgPSBtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5nZXRQcml2YXRlTmFtZSgqaWRlbnQpOworICAgICAgICAgICAgZWxzZSBpZiAoKmlkZW50
ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQpCisgICAgICAgICAgICAg
ICAgdG9rZW5EYXRhLT5pZGVudCA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3
b3JkUHJpdmF0ZU5hbWU7CisgICAgICAgICAgICBpZiAoIWlkZW50KQorICAgICAgICAgICAgICAg
IHJldHVybiBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzsKKyAgICAgICAgfQogICAgICAg
ICB0b2tlbkRhdGEtPmlkZW50ID0gaWRlbnQ7CiAgICAgfSBlbHNlCiAgICAgICAgIHRva2VuRGF0
YS0+aWRlbnQgPSAwOwogICAgIAotICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9r
ZW5MZW5ndGgpICYmICEobGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRz
KSkpIHsKKyAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAh
KGxleGVyRmxhZ3MgJiBMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpICYmICFpc1ByaXZh
dGVOYW1lKSB7CiAgICAgICAgIEFTU0VSVChzaG91bGRDcmVhdGVJZGVudGlmaWVyKTsKICAgICAg
ICAgaWYgKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSB7CiAgICAgICAgICAgICBjb25zdCBI
YXNoRW50cnkqIGVudHJ5ID0gbV92bS0+a2V5d29yZHMtPmdldEtleXdvcmQoKmlkZW50KTsKQEAg
LTE2NTgsNiArMTcxMSw3IEBAIGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ6CiAgICAgICAgIEFT
U0VSVChpc0lkZW50U3RhcnQobV9jdXJyZW50KSk7CiAgICAgICAgIEZBTExUSFJPVUdIOwogICAg
IGNhc2UgQ2hhcmFjdGVyQmFja1NsYXNoOgorICAgICAgICBwYXJzZUlkZW50OgogICAgICAgICBp
ZiAobGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250QnVpbGRLZXl3b3JkcykKICAgICAgICAgICAg
IHRva2VuID0gcGFyc2VJZGVudGlmaWVyPGZhbHNlPih0b2tlbkRhdGEsIGxleGVyRmxhZ3MsIHN0
cmljdE1vZGUpOwogICAgICAgICBlbHNlCkBAIC0xNjcwLDYgKzE3MjQsMTEgQEAgaW5OdW1iZXJB
ZnRlckRlY2ltYWxQb2ludDoKICAgICAgICAgbV90ZXJtaW5hdG9yID0gdHJ1ZTsKICAgICAgICAg
bV9saW5lU3RhcnQgPSBtX2NvZGU7CiAgICAgICAgIGdvdG8gc3RhcnQ7CisgICAgY2FzZSBDaGFy
YWN0ZXJQcml2YXRlSWRlbnRpZmllclN0YXJ0OgorICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRp
bkZ1bmN0aW9uKQorICAgICAgICAgICAgZ290byBwYXJzZUlkZW50OworCisgICAgICAgIEZBTExU
SFJPVUdIOwogICAgIGNhc2UgQ2hhcmFjdGVySW52YWxpZDoKICAgICAgICAgbV9sZXhFcnJvck1l
c3NhZ2UgPSBpbnZhbGlkQ2hhcmFjdGVyTWVzc2FnZSgpOwogICAgICAgICB0b2tlbiA9IEVSUk9S
VE9LOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCmluZGV4IDI4YzYxYmExOThkMmMx
NWE0OWJiMTg1MmVkMzBiZWZlYjg5MDQwMDguLmI4ODczZTk5NTAyODY0NGJmOGNiYjNkNGMyZGE1
NjJlOTNlMGU4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKQEAgLTcyLDcg
KzcyLDcgQEAgY2xhc3MgTGV4ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCiBw
dWJsaWM6Ci0gICAgTGV4ZXIoVk0qKTsKKyAgICBMZXhlcihWTSosIEpTUGFyc2VyU3RyaWN0bmVz
cyk7CiAgICAgfkxleGVyKCk7CiAKICAgICAvLyBDaGFyYWN0ZXIgbWFuaXB1bGF0aW9uIGZ1bmN0
aW9ucy4KQEAgLTIzOCw2ICsyMzgsNyBAQCBwcml2YXRlOgogICAgIElkZW50aWZpZXJBcmVuYSog
bV9hcmVuYTsKIAogICAgIFZNKiBtX3ZtOworICAgIGJvb2wgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0
aW9uOwogfTsKIAogdGVtcGxhdGUgPD4KQEAgLTMzNSw2ICszMzYsMTIgQEAgQUxXQVlTX0lOTElO
RSBjb25zdCBJZGVudGlmaWVyKiBMZXhlcjxUPjo6bWFrZUxDaGFySWRlbnRpZmllcihjb25zdCBV
Q2hhciogY2hhcmEKICAgICByZXR1cm4gJm1fYXJlbmEtPm1ha2VJZGVudGlmaWVyTENoYXJGcm9t
VUNoYXIobV92bSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKIH0KIAorI2lmIEFTU0VSVF9ESVNBQkxF
RAorQUxXQVlTX0lOTElORSBib29sIGlzU2FmZUlkZW50aWZpZXIoVk0mLCBjb25zdCBJZGVudGlm
aWVyKikgeyByZXR1cm4gdHJ1ZTsgfQorI2Vsc2UKK2Jvb2wgaXNTYWZlSWRlbnRpZmllcihWTSYs
IGNvbnN0IElkZW50aWZpZXIqKTsKKyNlbmRpZgorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIEFM
V0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNU
b2tlbiogdG9rZW5SZWNvcmQsIHVuc2lnbmVkIGxleGVyRmxhZ3MsIGJvb2wgc3RyaWN0TW9kZSkK
IHsKQEAgLTM3MCwxMCArMzc3LDE1IEBAIEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8
VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tlbiogdG9rZW5SZWNvcmQsIHVuCiAgICAgQVNT
RVJUKGN1cnJlbnRPZmZzZXQoKSA+PSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCkpOwogCiAgICAg
Ly8gQ3JlYXRlIHRoZSBpZGVudGlmaWVyIGlmIG5lZWRlZAotICAgIGlmIChsZXhlckZsYWdzICYg
TGV4ZXhGbGFnc0RvbnRCdWlsZEtleXdvcmRzKQorICAgIGlmIChsZXhlckZsYWdzICYgTGV4ZXhG
bGFnc0RvbnRCdWlsZEtleXdvcmRzCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICAmJiAh
bV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uCisjZW5kaWYKKyAgICAgICAgKQogICAgICAgICB0b2tl
bkRhdGEtPmlkZW50ID0gMDsKICAgICBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBt
YWtlTENoYXJJZGVudGlmaWVyKHN0YXJ0LCBwdHIgLSBzdGFydCk7CisKICAgICB0b2tlbkxvY2F0
aW9uLT5saW5lID0gbV9saW5lTnVtYmVyOwogICAgIHRva2VuTG9jYXRpb24tPmxpbmVTdGFydE9m
ZnNldCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKICAgICB0b2tlbkxvY2F0aW9uLT5zdGFy
dE9mZnNldCA9IG9mZnNldEZyb21Tb3VyY2VQdHIoc3RhcnQpOwpAQCAtMzgxLDYgKzM5MywxMyBA
QCBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVy
KEpTVG9rZW4qIHRva2VuUmVjb3JkLCB1bgogICAgIEFTU0VSVCh0b2tlbkxvY2F0aW9uLT5zdGFy
dE9mZnNldCA+PSB0b2tlbkxvY2F0aW9uLT5saW5lU3RhcnRPZmZzZXQpOwogICAgIHRva2VuUmVj
b3JkLT5tX3N0YXJ0UG9zaXRpb24gPSBzdGFydFBvc2l0aW9uOwogICAgIHRva2VuUmVjb3JkLT5t
X2VuZFBvc2l0aW9uID0gY3VycmVudFBvc2l0aW9uKCk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAor
ICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKKyAgICAgICAgaWYgKCFpc1NhZmVJ
ZGVudGlmaWVyKCptX3ZtLCB0b2tlbkRhdGEtPmlkZW50KSkKKyAgICAgICAgICAgIHJldHVybiBF
UlJPUlRPSzsKKyAgICB9CisjZW5kaWYKKwogICAgIG1fbGFzdFRva2VuID0gSURFTlQ7CiAgICAg
cmV0dXJuIElERU5UOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApp
bmRleCBmYzljY2Q5ZjZjNTc2YzFhZWY1NDdmMjExZmRkNTk2ZjQyZTA1ODA2Li5kOTUyYmE2YTk0
ZDJmNmI0MTgyMTU1MDA0ZDBhOTcwODQyOWJkNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVzLmNwcApAQCAtMTMyLDYgKzEzMiwxMiBAQCBQYXNzUmVmUHRyPFByb2dyYW1Ob2Rl
PiBQcm9ncmFtTm9kZTo6Y3JlYXRlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFy
dAogICAgIHJldHVybiBub2RlLnJlbGVhc2UoKTsKIH0KIAorCit2b2lkIFByb2dyYW1Ob2RlOjpz
ZXRDbG9zZWRWYXJpYWJsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJiBjbG9z
ZWRWYXJpYWJsZXMpCit7CisgICAgbV9jbG9zZWRWYXJpYWJsZXMgPSBzdGQ6Om1vdmUoY2xvc2Vk
VmFyaWFibGVzKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV2YWxO
b2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGlubGluZSBFdmFsTm9kZTo6RXZh
bE5vZGUoVk0qIHZtLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNl
RWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1
bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IGQ3NzlhMTc4ZDk1NmZmOTlmZDBiZWQ1
ZDVmNDU0YWEzZTZiNTA4NzkuLjgxNmZmMDAxYWJmMDM3NmM2NDJmMWE5MzhkMGUwYTlmNTI5Y2E2
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTE0MzEsNiArMTQzMSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG5lZWRzQWN0aXZhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIChoYXNDYXB0dXJlZFZhcmlhYmxlcygpKSB8fCAobV9mZWF0dXJlcyAmIChFdmFs
RmVhdHVyZSB8IFdpdGhGZWF0dXJlIHwgQ2F0Y2hGZWF0dXJlKSk7IH0KICAgICAgICAgYm9vbCBo
YXNDYXB0dXJlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuICEhbV9jYXB0dXJlZFZhcmlhYmxl
cy5zaXplKCk7IH0KICAgICAgICAgc2l6ZV90IGNhcHR1cmVkVmFyaWFibGVDb3VudCgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FwdHVyZWRWYXJpYWJsZXMuc2l6ZSgpOyB9CisgICAgICAgIGNvbnN0IElk
ZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9jYXB0dXJl
ZFZhcmlhYmxlczsgfQogICAgICAgICBib29sIGNhcHR1cmVzKGNvbnN0IElkZW50aWZpZXImIGlk
ZW50KSB7IHJldHVybiBtX2NhcHR1cmVkVmFyaWFibGVzLmNvbnRhaW5zKGlkZW50LmltcGwoKSk7
IH0KIAogICAgICAgICBWYXJTdGFjayYgdmFyU3RhY2soKSB7IHJldHVybiBtX3ZhclN0YWNrOyB9
CkBAIC0xNDQ2LDYgKzE0NDcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RhdGVtZW50
Tm9kZSogc2luZ2xlU3RhdGVtZW50KCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBlbWl0U3RhdGVt
ZW50c0J5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZGVzdGluYXRpb24p
OworICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRDbG9zZWRWYXJpYWJsZXMoY29uc3QgVmVjdG9y
PFJlZlB0cjxTdHJpbmdJbXBsPj4mJikgeyB9CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZv
aWQgc2V0U291cmNlKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkgeyBtX3NvdXJjZSA9IHNvdXJj
ZTsgfQpAQCAtMTQ3NSwxMSArMTQ3OCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBz
dGF0aWMgY29uc3QgYm9vbCBzY29wZUlzRnVuY3Rpb24gPSBmYWxzZTsKIAorICAgICAgICB2b2lk
IHNldENsb3NlZFZhcmlhYmxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmKTsK
KyAgICAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mIGNsb3NlZFZhcmlhYmxl
cygpIGNvbnN0IHsgcmV0dXJuIG1fY2xvc2VkVmFyaWFibGVzOyB9CiAgICAgcHJpdmF0ZToKICAg
ICAgICAgUHJvZ3JhbU5vZGUoVk0qLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVu
ZENvbHVtbiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVu
dGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0
YW50cyk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7Ci0KKyAgICAgICAgVmVjdG9yPFJlZlB0
cjxTdHJpbmdJbXBsPj4gbV9jbG9zZWRWYXJpYWJsZXM7CiAgICAgICAgIHVuc2lnbmVkIG1fc3Rh
cnRDb2x1bW47CiAgICAgICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwogICAgIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggMjk3NjY2ZTcyNmU0NWQwODNlZjEz
NDlkZGZmZGYzN2VmODAwZGY3YS4uNTBiZWM3OWZlMzhhZGY4ZjNhMDRmNmI0NmNiZDJhNWNiZmNm
MjQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjA0LDgg
KzIwNCw5IEBAIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIoVk0qIHZtLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIEZ1bmN0aW9uUGFyYW1ldGVycyoKICAgICAsIG1fbGFzdElkZW50aWZpZXIo
MCkKICAgICAsIG1fbGFzdEZ1bmN0aW9uTmFtZShudWxscHRyKQogICAgICwgbV9zb3VyY2VFbGVt
ZW50cygwKQorICAgICwgbV9wYXJzaW5nQnVpbHRpbihzdHJpY3RuZXNzID09IEpTUGFyc2VCdWls
dGluKQogewotICAgIG1fbGV4ZXIgPSBhZG9wdFB0cihuZXcgTGV4ZXJUeXBlKHZtKSk7CisgICAg
bV9sZXhlciA9IGFkb3B0UHRyKG5ldyBMZXhlclR5cGUodm0sIHN0cmljdG5lc3MpKTsKICAgICBt
X2FyZW5hID0gbV92bS0+cGFyc2VyQXJlbmEuZ2V0KCk7CiAgICAgbV9sZXhlci0+c2V0Q29kZShz
b3VyY2UsIG1fYXJlbmEpOwogICAgIG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lID0gc291cmNlLmZp
cnN0TGluZSgpOwpAQCAtMjU2LDYgKzI1Nyw3IEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VJbm5lcigpCiAgICAgSWRlbnRpZmllclNldCBjYXB0dXJlZFZhcmlhYmxlczsKICAgICBi
b29sIG1vZGlmaWVkUGFyYW1ldGVyID0gZmFsc2U7CiAgICAgc2NvcGUtPmdldENhcHR1cmVkVmFy
aWFibGVzKGNhcHR1cmVkVmFyaWFibGVzLCBtb2RpZmllZFBhcmFtZXRlcik7CisgICAgCiAgICAg
Q29kZUZlYXR1cmVzIGZlYXR1cmVzID0gY29udGV4dC5mZWF0dXJlcygpOwogICAgIGlmIChzY29w
ZS0+c3RyaWN0TW9kZSgpKQogICAgICAgICBmZWF0dXJlcyB8PSBTdHJpY3RNb2RlRmVhdHVyZTsK
QEAgLTI2MywyMSArMjY1LDM2IEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5l
cigpCiAgICAgICAgIGZlYXR1cmVzIHw9IFNoYWRvd3NBcmd1bWVudHNGZWF0dXJlOwogICAgIGlm
IChtb2RpZmllZFBhcmFtZXRlcikKICAgICAgICAgZmVhdHVyZXMgfD0gTW9kaWZpZWRQYXJhbWV0
ZXJGZWF0dXJlOwotCisgICAgCisgICAgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4gY2xvc2Vk
VmFyaWFibGVzOworICAgIGlmIChtX3BhcnNpbmdCdWlsdGluKSB7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCFjYXB0dXJlZFZhcmlhYmxlcy5zaXplKCkpOworICAgICAgICBJZGVudGlmaWVyU2V0
IHVzZWRWYXJpYWJsZXM7CisgICAgICAgIHNjb3BlLT5nZXRVc2VkVmFyaWFibGVzKHVzZWRWYXJp
YWJsZXMpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHZhcmlhYmxlIDogdXNlZFZhcmlhYmxl
cykgeworICAgICAgICAgICAgaWYgKHNjb3BlLT5oYXNEZWNsYXJlZFZhcmlhYmxlKElkZW50aWZp
ZXIobV92bSwgdmFyaWFibGUuZ2V0KCkpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHNjb3BlLT5oYXNEZWNsYXJlZFBhcmFtZXRlcihJ
ZGVudGlmaWVyKG1fdm0sIHZhcmlhYmxlLmdldCgpKSkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICBjbG9zZWRWYXJpYWJsZXMuYXBwZW5kKHZhcmlhYmxlKTsKKyAgICAg
ICAgfQorICAgIH0KICAgICBkaWRGaW5pc2hQYXJzaW5nKHNvdXJjZUVsZW1lbnRzLCBjb250ZXh0
LnZhckRlY2xhcmF0aW9ucygpLCBjb250ZXh0LmZ1bmNEZWNsYXJhdGlvbnMoKSwgZmVhdHVyZXMs
Ci0gICAgICAgIGNvbnRleHQubnVtQ29uc3RhbnRzKCksIGNhcHR1cmVkVmFyaWFibGVzKTsKKyAg
ICAgICAgY29udGV4dC5udW1Db25zdGFudHMoKSwgY2FwdHVyZWRWYXJpYWJsZXMsIHN0ZDo6bW92
ZShjbG9zZWRWYXJpYWJsZXMpKTsKIAogICAgIHJldHVybiBwYXJzZUVycm9yOwogfQogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdm9pZCBQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmlu
aXNoUGFyc2luZyhTb3VyY2VFbGVtZW50cyogc291cmNlRWxlbWVudHMsIFBhcnNlckFyZW5hRGF0
YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+KiB2YXJTdGFjaywgCi0gICAgUGFyc2VyQXJl
bmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiogZnVuY1N0YWNrLCBDb2Rl
RmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMsIElkZW50aWZpZXJTZXQmIGNhcHR1
cmVkVmFycykKKyAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9u
U3RhY2s+KiBmdW5jU3RhY2ssIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50
cywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmlu
Z0ltcGw+PiYmIGNsb3NlZFZhcmlhYmxlcykKIHsKICAgICBtX3NvdXJjZUVsZW1lbnRzID0gc291
cmNlRWxlbWVudHM7CiAgICAgbV92YXJEZWNsYXJhdGlvbnMgPSB2YXJTdGFjazsKICAgICBtX2Z1
bmNEZWNsYXJhdGlvbnMgPSBmdW5jU3RhY2s7CiAgICAgbV9jYXB0dXJlZFZhcmlhYmxlcy5zd2Fw
KGNhcHR1cmVkVmFycyk7CisgICAgbV9jbG9zZWRWYXJpYWJsZXMgPSBjbG9zZWRWYXJpYWJsZXM7
CiAgICAgbV9mZWF0dXJlcyA9IGZlYXR1cmVzOwogICAgIG1fbnVtQ29uc3RhbnRzID0gbnVtQ29u
c3RhbnRzOwogfQpAQCAtMjM0Niw2ICsyMzYzLDEwIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhl
clR5cGU+IHZvaWQgUGFyc2VyPExleGVyVHlwZT46OnByaW50VW5leHBlY3RlZFRva2VuVGV4dChX
CiAgICAgY2FzZSBSRVNFUlZFRDoKICAgICAgICAgb3V0LnByaW50KCJVbmV4cGVjdGVkIHVzZSBv
ZiByZXNlcnZlZCB3b3JkICciLCBnZXRUb2tlbigpLCAiJyIpOwogICAgICAgICByZXR1cm47CisK
KyAgICBjYXNlIElOVkFMSURfUFJJVkFURV9OQU1FX0VSUk9SVE9LOgorICAgICAgICBvdXQucHJp
bnQoIkludmFsaWQgcHJpdmF0ZSBuYW1lICciLCBnZXRUb2tlbigpLCAiJyIpOworICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICAKICAgICBjYXNlIElERU5UOgogICAgICAgICBvdXQucHJpbnQo
IlVuZXhwZWN0ZWQgaWRlbnRpZmllciAnIiwgZ2V0VG9rZW4oKSwgIiciKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGI2OThlZjkzNjhjYjhjOGYxOTdjY2QwMDBhY2Fh
NmRmYjExYmEyNDQuLjkwMzM4NTBjOGM5N2Y1N2UyMWRhNWVlZGIwMmQwNDRmNGM4OTc4ZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjMsNiArMjMsNyBAQAogI2lm
bmRlZiBQYXJzZXJfaAogI2RlZmluZSBQYXJzZXJfaAogCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRp
ZmllcnMuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBl
cnMuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCkBAIC0yNTksNiArMjYwLDEwIEBAIHN0cnVj
dCBTY29wZSB7CiAgICAgICAgIHJldHVybiBpc1ZhbGlkU3RyaWN0TW9kZSA/IEJpbmRpbmdTdWNj
ZWVkZWQgOiBTdHJpY3RCaW5kaW5nRmFpbGVkOwogICAgIH0KIAorICAgIHZvaWQgZ2V0VXNlZFZh
cmlhYmxlcyhJZGVudGlmaWVyU2V0JiB1c2VkVmFyaWFibGVzKQorICAgIHsKKyAgICAgICAgdXNl
ZFZhcmlhYmxlcy5zd2FwKG1fdXNlZFZhcmlhYmxlcyk7CisgICAgfQogCiAgICAgdm9pZCB1c2VW
YXJpYWJsZShjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgYm9vbCBpc0V2YWwpCiAgICAgewpAQCAt
NDE0LDYgKzQxOSw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IHBhcnNl
KFBhcnNlckVycm9yJik7CiAKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3RO
ZXdsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+cG9zaXRpb25CZWZvcmVMYXN0TmV3bGlu
ZSgpOyB9CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJiBjbG9zZWRWYXJp
YWJsZXMoKSB7IHJldHVybiBzdGQ6Om1vdmUobV9jbG9zZWRWYXJpYWJsZXMpOyB9CiAKIHByaXZh
dGU6CiAgICAgc3RydWN0IEFsbG93SW5PdmVycmlkZSB7CkBAIC01NDAsNyArNTQ2LDcgQEAgcHJp
dmF0ZToKICAgICBTdHJpbmcgcGFyc2VJbm5lcigpOwogCiAgICAgdm9pZCBkaWRGaW5pc2hQYXJz
aW5nKFNvdXJjZUVsZW1lbnRzKiwgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpW
YXJTdGFjaz4qLCAKLSAgICAgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpG
dW5jdGlvblN0YWNrPiosIENvZGVGZWF0dXJlcywgaW50LCBJZGVudGlmaWVyU2V0Jik7CisgICAg
ICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qLCBD
b2RlRmVhdHVyZXMsIGludCwgSWRlbnRpZmllclNldCYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3Ry
aW5nSW1wbD4+JiYpOwogCiAgICAgLy8gVXNlZCB0byBkZXRlcm1pbmUgdHlwZSBvZiBlcnJvciB0
byByZXBvcnQuCiAgICAgYm9vbCBpc0Z1bmN0aW9uQm9keU5vZGUoU2NvcGVOb2RlKikgeyByZXR1
cm4gZmFsc2U7IH0KQEAgLTg0MCw5ICs4NDYsMTEgQEAgcHJpdmF0ZToKICAgICBjb25zdCBJZGVu
dGlmaWVyKiBtX2xhc3RGdW5jdGlvbk5hbWU7CiAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyQ2Fj
aGU+IG1fZnVuY3Rpb25DYWNoZTsKICAgICBTb3VyY2VFbGVtZW50cyogbV9zb3VyY2VFbGVtZW50
czsKKyAgICBib29sIG1fcGFyc2luZ0J1aWx0aW47CiAgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xh
cmF0aW9uU3RhY2tzOjpWYXJTdGFjaz4qIG1fdmFyRGVjbGFyYXRpb25zOwogICAgIFBhcnNlckFy
ZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qIG1fZnVuY0RlY2xhcmF0
aW9uczsKICAgICBJZGVudGlmaWVyU2V0IG1fY2FwdHVyZWRWYXJpYWJsZXM7CisgICAgVmVjdG9y
PFJlZlB0cjxTdHJpbmdJbXBsPj4gbV9jbG9zZWRWYXJpYWJsZXM7CiAgICAgQ29kZUZlYXR1cmVz
IG1fZmVhdHVyZXM7CiAgICAgaW50IG1fbnVtQ29uc3RhbnRzOwogICAgIApAQCAtOTU3LDYgKzk2
NSwxMCBAQCBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IHBhcnNlKFZNKiB2bSwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcgogICAgICAgICBSZWZQdHI8UGFyc2VkTm9k
ZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yKTsKICAgICAgICAgaWYg
KHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVM
YXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CisgICAgICAg
IGlmIChzdHJpY3RuZXNzID09IEpTUGFyc2VCdWlsdGluKSB7CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChyZXN1bHQpOworICAgICAgICAgICAgcmVzdWx0LT5zZXRDbG9zZWRWYXJpYWJsZXMo
c3RkOjptb3ZlKHBhcnNlci5jbG9zZWRWYXJpYWJsZXMoKSkpOworICAgICAgICB9CiAgICAgICAg
IHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogICAgIH0KICAgICBQYXJzZXI8TGV4ZXI8VUNoYXI+
PiBwYXJzZXIodm0sIHNvdXJjZSwgcGFyYW1ldGVycywgbmFtZSwgc3RyaWN0bmVzcywgcGFyc2Vy
TW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1v
ZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKaW5kZXgg
NGU5YTE3Y2QyMWNhMzQxNDZiYmQ0ODE1NmEzNzJjZDQwNGRlZjYwYy4uZjdhNzViZjdjMzc4NTdl
NDRiNmQ1ZDcxZjQ1MjliYjFhYzFjZjVmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyTW9kZXMuaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
ZW51bSBKU1BhcnNlclN0cmljdG5lc3MgeyBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlU3RyaWN0IH07
CitlbnVtIEpTUGFyc2VyU3RyaWN0bmVzcyB7IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VCdWlsdGlu
LCBKU1BhcnNlU3RyaWN0IH07CiBlbnVtIEpTUGFyc2VyTW9kZSB7IEpTUGFyc2VQcm9ncmFtQ29k
ZSwgSlNQYXJzZUZ1bmN0aW9uQ29kZSB9OwogCiBlbnVtIFByb2ZpbGVyTW9kZSB7IFByb2ZpbGVy
T2ZmLCBQcm9maWxlck9uIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlclRva2Vucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJU
b2tlbnMuaAppbmRleCA4MmEyNjYzOWE3OTIyMGEwODQ0NTZiNDhmMzI4NTJkMTQzYzczOWQwLi44
Yzg3YWQ5ZmFkYmRjNGFmMzlhYzk5ZGIyZDg0NDVlMTNmZmZkMzVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKQEAgLTE0OSw2ICsxNDksNyBAQCBlbnVt
IEpTVG9rZW5UeXBlIHsKICAgICBJTlZBTElEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSyA9IDcg
fCBFcnJvclRva2VuRmxhZywKICAgICBVTlRFUk1JTkFURURfU1RSSU5HX0xJVEVSQUxfRVJST1JU
T0sgPSA4IHwgRXJyb3JUb2tlbkZsYWcgfCBVbnRlcm1pbmF0ZWRFcnJvclRva2VuRmxhZywKICAg
ICBJTlZBTElEX1NUUklOR19MSVRFUkFMX0VSUk9SVE9LID0gOSB8IEVycm9yVG9rZW5GbGFnLAor
ICAgIElOVkFMSURfUFJJVkFURV9OQU1FX0VSUk9SVE9LID0gMTAgfCBFcnJvclRva2VuRmxhZwog
fTsKIAogc3RydWN0IEpTVGV4dFBvc2l0aW9uIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJndW1lbnRzLmgKaW5kZXggMThmMzg5MTcxMzg1MjM2MmM3YTc1YTMwNTNiNDYzMTQxN2Jl
YjgxYi4uZjE2ZmQzZGU0MDU1OTcwYmE5ZDljNmYwYWU2MzE4ZjIyMDRiNjU0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNk
ZWZpbmUgQXJndW1lbnRzX2gKIAogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJD
b21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUg
IkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0
b3JQcm90b3R5cGUuY3BwCmluZGV4IGRkMDg5NGYxNGEwMjFkNWYxMjY1OGFjYjAxZTcyMWZjZDZk
MzQ4Y2MuLjViNGFlODcxNmIwNTUzYmU0NjIzOTU1ZTk5ZTFiNDNlYmYxOGZlMmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVy
YXRvclByb3RvdHlwZS5jcHAKQEAgLTI2LDcgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5oIgogCisjaW5jbHVkZSAiQ29t
bW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJKU0FyZ3VtZW50c0l0ZXJhdG9yLmgiCisjaW5j
bHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCAyN2Fj
NmQ0OGE3MWY3OTU1MDJhMTBjZWE2NDc4NjU0MTM1YTQ2M2EwLi42ZGM3YmU1Njk2OWRlNjdmNjIx
MDdiYjNhNTFhMzA4ZmEzYmE3NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSklU
LmgiCiAjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdCdWls
ZGVyLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdK
b2luZXIuaCIKICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUu
aCIKQEAgLTU2LDcgKzU3LDYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU29ydChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU3BsaWNlKEV4ZWNTdGF0ZSop
Owogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNVblNo
aWZ0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJy
YXlQcm90b0Z1bmNFdmVyeShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRm9yRWFjaChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU29tZShFeGVjU3RhdGUqKTsK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jSW5kZXhP
ZihFeGVjU3RhdGUqKTsKQEAgLTk1NCw2OSArOTU0LDYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheVByb3RvRnVuY01hcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHRBcnJheSk7CiB9CiAKLS8vIERvY3VtZW50YXRpb24gZm9yIHRo
ZXNlIHRocmVlIGlzIGF2YWlsYWJsZSBhdDoKLS8vIGh0dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3pp
bGxhLm9yZy9lbi9kb2NzL0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6QXJy
YXk6ZXZlcnkKLS8vIGh0dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3ppbGxhLm9yZy9lbi9kb2NzL0Nv
cmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6QXJyYXk6Zm9yRWFjaAotLy8gaHR0
cDovL2RldmVsb3Blci10ZXN0Lm1vemlsbGEub3JnL2VuL2RvY3MvQ29yZV9KYXZhU2NyaXB0XzEu
NV9SZWZlcmVuY2U6T2JqZWN0czpBcnJheTpzb21lCi0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b0Z1bmNFdmVyeShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNPYmpl
Y3QqIHRoaXNPYmogPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1v
ZGUpLnRvT2JqZWN0KGV4ZWMpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmotPmdldChl
eGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKS50b1VJbnQzMihleGVjKTsKLSAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7Ci0KLSAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gZXhlYy0+YXJndW1lbnQo
MCk7Ci0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRD
YWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlw
ZU5vbmUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwotCi0gICAgSlNW
YWx1ZSBhcHBseVRoaXMgPSBleGVjLT5hcmd1bWVudCgxKTsKLQotICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNCb29sZWFuKHRydWUpOwotCi0gICAgdW5zaWduZWQgayA9IDA7Ci0gICAgaWYgKGNhbGxU
eXBlID09IENhbGxUeXBlSlMgJiYgaXNKU0FycmF5KHRoaXNPYmopKSB7Ci0gICAgICAgIEpTRnVu
Y3Rpb24qIGYgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGZ1bmN0aW9uKTsKLSAgICAgICAgSlNBcnJh
eSogYXJyYXkgPSBhc0FycmF5KHRoaXNPYmopOwotICAgICAgICBDYWNoZWRDYWxsIGNhY2hlZENh
bGwoZXhlYywgZiwgMyk7Ci0gICAgICAgIGZvciAoOyBrIDwgbGVuZ3RoICYmICFleGVjLT5oYWRF
eGNlcHRpb24oKTsgKytrKSB7Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWFycmF5LT5jYW5H
ZXRJbmRleFF1aWNrbHkoaykpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldFRoaXMoYXBwbHlUaGlzKTsKLSAgICAgICAgICAg
IGNhY2hlZENhbGwuc2V0QXJndW1lbnQoMCwgYXJyYXktPmdldEluZGV4UXVpY2tseShrKSk7Ci0g
ICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDEsIGpzTnVtYmVyKGspKTsKLSAgICAg
ICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoMiwgdGhpc09iaik7Ci0gICAgICAgICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGNhY2hlZENhbGwuY2FsbCgpOwotICAgICAgICAgICAgaWYgKCFyZXN1
bHQudG9Cb29sZWFuKGV4ZWMpKQotICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNCb29sZWFuKGZhbHNlKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZm9yICg7IGsgPCBs
ZW5ndGggJiYgIWV4ZWMtPmhhZEV4Y2VwdGlvbigpOyArK2spIHsKLSAgICAgICAgUHJvcGVydHlT
bG90IHNsb3QodGhpc09iaik7Ci0gICAgICAgIGlmICghdGhpc09iai0+Z2V0UHJvcGVydHlTbG90
KGV4ZWMsIGssIHNsb3QpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgTWFya2Vk
QXJndW1lbnRCdWZmZXIgZWFjaEFyZ3VtZW50czsKLSAgICAgICAgZWFjaEFyZ3VtZW50cy5hcHBl
bmQoc2xvdC5nZXRWYWx1ZShleGVjLCBrKSk7Ci0gICAgICAgIGVhY2hBcmd1bWVudHMuYXBwZW5k
KGpzTnVtYmVyKGspKTsKLSAgICAgICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQodGhpc09iaik7Ci0K
LSAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQotICAgICAgICBib29sIHByZWRpY2F0ZVJl
c3VsdCA9IGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgYXBwbHlUaGlz
LCBlYWNoQXJndW1lbnRzKS50b0Jvb2xlYW4oZXhlYyk7Ci0gICAgICAgIGlmICghcHJlZGljYXRl
UmVzdWx0KSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBqc0Jvb2xlYW4oZmFsc2UpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7Ci19Ci0KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b0Z1bmNGb3JFYWNoKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU09iamVjdCogdGhpc09iaiA9
IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3Qo
ZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2Fj
aGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRl
eCA1MTBlMzgzZmFlNTc1YWFkYTgxNzZjMDQ0MWVlNzI1YjQzYTRjNzMyLi5kMzA0ODc3ZmU5Y2Rl
MWMwOTE5ZmQ0NTk1ZjgxMWVjYWJjZTc3Mjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTE0NCwyNCArMTQ0LDI2IEBAIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxD
b2RlKFZNJiB2CiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZTsK
ICAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oJnZt
LCBzb3VyY2UsIDAsIElkZW50aWZpZXIoKSwgSlNQYXJzZU5vcm1hbCwgSlNQYXJzZVByb2dyYW1D
b2RlLCBlcnJvciwgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwogICAgIGlmICghcHJvZ3Jh
bSkgewotICAgICAgICBBU1NFUlQoZXJyb3IubV90eXBlICE9IFBhcnNlckVycm9yOjpFcnJvck5v
bmUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChlcnJvci5tX3R5cGUgIT0gUGFyc2VyRXJyb3I6
OkVycm9yTm9uZSk7CiAgICAgICAgIG1fc291cmNlQ29kZS5yZW1vdmUoYWRkUmVzdWx0Lml0ZXJh
dG9yKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBh
c3N1bWVzIGFuIGlucHV0IHN0cmluZyB0aGF0IHdvdWxkIHJlc3VsdCBpbiBhIHNpbmdsZSBhbm9u
eW1vdXMgZnVuY3Rpb24gZXhwcmVzc2lvbi4KICAgICBTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVt
ZW50ID0gcHJvZ3JhbS0+c2luZ2xlU3RhdGVtZW50KCk7Ci0gICAgQVNTRVJUKGV4cHJTdGF0ZW1l
bnQpOwotICAgIEFTU0VSVChleHByU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CisgICAg
UkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0
YXRlbWVudC0+aXNFeHByU3RhdGVtZW50KCkpOwogICAgIEV4cHJlc3Npb25Ob2RlKiBmdW5jRXhw
ciA9IHN0YXRpY19jYXN0PEV4cHJTdGF0ZW1lbnROb2RlKj4oZXhwclN0YXRlbWVudCktPmV4cHIo
KTsKLSAgICBBU1NFUlQoZnVuY0V4cHIpOworICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmNFeHByKTsK
ICAgICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwci0+aXNGdW5jRXhwck5vZGUoKSk7CiAgICAgRnVu
Y3Rpb25Cb2R5Tm9kZSogYm9keSA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGZ1bmNFeHBy
KS0+Ym9keSgpOworICAgIFJFTEVBU0VfQVNTRVJUKCFwcm9ncmFtLT5oYXNDYXB0dXJlZFZhcmlh
YmxlcygpKTsKKyAgICAKICAgICBib2R5LT5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZUxh
c3ROZXdsaW5lKTsKLSAgICBBU1NFUlQoYm9keSk7Ci0gICAgQVNTRVJUKGJvZHktPmlkZW50KCku
aXNOdWxsKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGJvZHkpOworICAgIFJFTEVBU0VfQVNTRVJU
KGJvZHktPmlkZW50KCkuaXNOdWxsKCkpOwogCi0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVh
dGUoJnZtLCBzb3VyY2UsIGJvZHksIHRydWUpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3Jl
YXRlKCZ2bSwgc291cmNlLCBib2R5LCB0cnVlLCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uKTsKICAg
ICBmdW5jdGlvbkV4ZWN1dGFibGUtPm1fbmFtZVZhbHVlLnNldCh2bSwgZnVuY3Rpb25FeGVjdXRh
YmxlLCBqc1N0cmluZygmdm0sIG5hbWUuc3RyaW5nKCkpKTsKIAogICAgIGFkZFJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgPSBTb3VyY2VDb2RlVmFsdWUodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwgbV9z
b3VyY2VDb2RlLmFnZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmNwcAppbmRleCAzZjVjNjQ1YzA5OGQ1MjdmYzBjNzI1OWU5NDQ3
ZWZiZTg4NjhhMjljLi4yZmMyYjcyN2FmY2VlZTFlYzJjNjI1ZGU1Njc1YjNiZTFjZjYwZDc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuY3BwCkBAIC0yNyw3ICsyNywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2RlZmluZSBJTklU
SUFMSVpFX1BST1BFUlRZX05BTUUobmFtZSkgLCBuYW1lKHZtLCAjbmFtZSkKICNkZWZpbmUgSU5J
VElBTElaRV9LRVlXT1JEKG5hbWUpICwgbmFtZSMjS2V5d29yZCh2bSwgI25hbWUpCi0jZGVmaW5l
IElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKG5hbWUpICwgbmFtZSMjUHJpdmF0ZU5hbWUoSWRlbnRp
Zmllcjo6ZnJvbShQcml2YXRlTmFtZSgpKSkKKyNkZWZpbmUgSU5JVElBTElaRV9QUklWQVRFX05B
TUUobmFtZSkgXAorICAgICwgbmFtZSMjUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbShQcml2
YXRlTmFtZSgpKSkgXAorICAgICwgbV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIobmFtZSwgbmFt
ZSMjUHJpdmF0ZU5hbWUpIFwKKwogCiBDb21tb25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmll
cnMoVk0qIHZtKQogICAgIDogbnVsbElkZW50aWZpZXIoKQpAQCAtMzgsOCArNDEsMjYgQEAgQ29t
bW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZNKiB2bSkKICAgICAsIGhhc05leHRJ
ZGVudGlmaWVyKHZtLCAiaGFzTmV4dCIpCiAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNI
X0tFWVdPUkQoSU5JVElBTElaRV9LRVlXT1JEKQogICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNf
RUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRSkKKyAgICBKU0NfRk9S
RUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKQogICAg
IEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElB
TElaRV9QUklWQVRFX05BTUUpCiB7CiB9CiAKK2NvbnN0IElkZW50aWZpZXIqIENvbW1vbklkZW50
aWZpZXJzOjpnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK3sK
KyNkZWZpbmUgUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKG5hbWUpIGlmIChtXyMjbmFt
ZSMjUHVibGljU3RyaW5nUGFpci5maXJzdCA9PSBpZGVudCkgcmV0dXJuICZtXyMjbmFtZSMjUHVi
bGljU3RyaW5nUGFpci5zZWNvbmQ7CisgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJT
X0VBQ0hfUFJPUEVSVFlfTkFNRShSRVRVUk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMpCisjdW5k
ZWYgUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTCisgICAgcmV0dXJuIDA7Cit9CisKK0lk
ZW50aWZpZXIgQ29tbW9uSWRlbnRpZmllcnM6OmdldFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQpIGNvbnN0Cit7CisjZGVmaW5lIFJFVFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hF
UyhuYW1lKSBpZiAobV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuc2Vjb25kID09IGlkZW50KSBy
ZXR1cm4gbV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuZmlyc3Q7CisgICAgSlNDX0NPTU1PTl9Q
UklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShSRVRVUk5fSUZfUFJJVkFURV9O
QU1FX01BVENIRVMpCisjdW5kZWYgUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTCisgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZW1wdHlJZGVudGlmaWVy
OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IGU4ZjllZDgyYmM3OTQ2MjAzODI2NmIz
MDIwNzgyMjQ3YjFmYTI3YTMuLjkyNGQzNmFjNjkxMzUwMzU3Y2IzODJiMWVmM2I0MGEwYTA4YzBh
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaApAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBDb21tb25JZGVudGlmaWVyc19oCiAK
ICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogLy8gTWFya2VkQXJndW1lbnRCdWZmZXIgb2YgcHJv
cGVydHkgbmFtZXMsIHBhc3NlZCB0byBhIG1hY3JvIHNvIHdlIGNhbiBkbyBzZXQgdGhlbSB1cCB2
YXJpb3VzCkBAIC0xMzMsOCArMTM0LDEwIEBACiAgICAgbWFjcm8ob3NyRXhpdHMpIFwKICAgICBt
YWNybyhwYXJzZSkgXAogICAgIG1hY3JvKHByb2ZpbGVkQnl0ZWNvZGVzKSBcCisgICAgbWFjcm8o
cHJvbWlzZSkgXAogICAgIG1hY3JvKHByb3BlcnR5SXNFbnVtZXJhYmxlKSBcCiAgICAgbWFjcm8o
cHJvdG90eXBlKSBcCisgICAgbWFjcm8ocmVzb2x2ZSkgXAogICAgIG1hY3JvKHNldCkgXAogICAg
IG1hY3JvKHNpemUpIFwKICAgICBtYWNybyhzbGljZSkgXApAQCAtMTU1LDcgKzE1OCwxNCBAQAog
ICAgIG1hY3JvKHZhbHVlcykgXAogICAgIG1hY3JvKHZhbHVlT2YpIFwKICAgICBtYWNybyh3aW5k
b3cpIFwKLSAgICBtYWNybyh3cml0YWJsZSkKKyAgICBtYWNybyh3cml0YWJsZSkgXAorICAgIG1h
Y3JvKGl0ZXJhdG9yKSBcCisgICAgbWFjcm8oaXRlcmF0b3JOZXh0KSBcCisgICAgbWFjcm8ocmVq
ZWN0KSBcCisgICAgbWFjcm8oZnVsZmlsbG1lbnRIYW5kbGVyKSBcCisgICAgbWFjcm8ocmVqZWN0
aW9uSGFuZGxlcikgXAorICAgIG1hY3JvKGRlZmVycmVkKSBcCisgICAgbWFjcm8oY291bnRkb3du
SG9sZGVyKSBcCiAKICNkZWZpbmUgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQo
bWFjcm8pIFwKICAgICBtYWNybyhicmVhaykgXApAQCAtMjAzLDcgKzIxMyw3IEBACiAgICAgbWFj
cm8odm9pZCkgXAogICAgIG1hY3JvKHdoaWxlKSBcCiAgICAgbWFjcm8od2l0aCkgXAotICAgIG1h
Y3JvKHlpZWxkKQorICAgIG1hY3JvKHlpZWxkKSBcCiAKICNkZWZpbmUgSlNDX0NPTU1PTl9QUklW
QVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShtYWNybykgXAogICAgIG1hY3JvKGl0
ZXJhdG9yKSBcCkBAIC0yMTYsNyArMjI2LDEyIEBACiAgICAgbWFjcm8oaW5kZXgpIFwKICAgICBt
YWNybyh2YWx1ZXMpIFwKICAgICBtYWNybyhkZWZlcnJlZCkgXAotICAgIG1hY3JvKGNvdW50ZG93
bkhvbGRlcikKKyAgICBtYWNybyhjb3VudGRvd25Ib2xkZXIpIFwKKyAgICBtYWNybyhPYmplY3Qp
IFwKKyAgICBtYWNybyhUeXBlRXJyb3IpIFwKKyAgICBtYWNybyh1bmRlZmluZWRLZXl3b3JkKSBc
CisgICAgbWFjcm8oY2FsbCkgXAorICAgIG1hY3JvKGFwcGx5KQogCiBuYW1lc3BhY2UgSlNDIHsK
IApAQCAtMjQwLDExICsyNTUsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2RlZmlu
ZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFMKG5hbWUpIGNvbnN0
IElkZW50aWZpZXIgbmFtZTsKICAgICAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BS
T1BFUlRZX05BTUUoSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJUWV9OQU1FX0dMT0JBTCkK
KyAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKEpTQ19JREVOVElGSUVS
X0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwpCiAjdW5kZWYgSlNDX0lERU5USUZJRVJfREVD
TEFSRV9QUk9QRVJUWV9OQU1FX0dMT0JBTAogCi0jZGVmaW5lIEpTQ19JREVOVElGSUVSX0RFQ0xB
UkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5h
bWUjI1ByaXZhdGVOYW1lOworI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVf
UFJPUEVSVFlfTkFNRV9HTE9CQUwobmFtZSkgY29uc3QgSWRlbnRpZmllciBuYW1lIyNQcml2YXRl
TmFtZTsgY29uc3Qgc3RkOjpwYWlyPElkZW50aWZpZXIsIElkZW50aWZpZXI+IG1fIyNuYW1lIyNQ
dWJsaWNTdHJpbmdQYWlyOwogICAgICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNf
RUFDSF9QUk9QRVJUWV9OQU1FKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJU
WV9OQU1FX0dMT0JBTCkKICN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJP
UEVSVFlfTkFNRV9HTE9CQUwKKyAgICAgICAgCisgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGdl
dFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKKyAgICAgICAgSWRlbnRpZmll
ciBnZXRQdWJsaWNOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKICAgICB9OwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCmluZGV4IDA3NTg3NWZiMjMxNmE1NTU3MDUwYTY2OTBjZDBmOTg4MjQ4
NGY1ZjMuLjVhZjkwODc1NGU3NDdmOGNhZTBjZDA0YWY4ZDQ5MTUwMDQ2OGMyYTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAt
NDEsNyArNDEsNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAj
aW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1
ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlv
bnMuaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1l
SXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAKaW5kZXggNTUzMzRiZTJmOTgwYTk4Zjdm
ZWE0MmEwNWJlMGYyMGMwMTlmZjBkZC4uZmE1N2MwMjY4NWU1M2Q1MjUyODgwNTdlMjExZDk4YjEw
OTgxZDczZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNs
dWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJKSVRF
eGNlcHRpb25zLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJK
U0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgQ29tbW9uU2xvd1BhdGhzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggMDVlMTFlMGI4MGEz
NDMwYWVhYjIyYjAyMjJhMjEyZjRhOGUyYzQ5Yi4uMzY0Y2M3MTY2NjA4YjUwMDdkNDc3ZDg3Mzkx
OGE1ZDY0YjE2ODY1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uSGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uSGVscGVycy5jcHAKQEAgLTgxLDYgKzgxLDExIEBAIEpTT2JqZWN0KiBjcmVhdGVT
dGFja092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogSlNPYmpl
Y3QqIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCkKIHsKKyAgICAKKyAgICBpZiAoaWRlbnQuaW1wbCgpLT5pc0VtcHR5
VW5pcXVlKCkpIHsKKyAgICAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2FuJ3QgZmlu
ZCBwcml2YXRlIHZhcmlhYmxlOiBAIiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdldFB1YmxpY05h
bWUoaWRlbnQpLnN0cmluZygpKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJv
cihleGVjLCBtZXNzYWdlKTsKKyAgICB9CiAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygi
Q2FuJ3QgZmluZCB2YXJpYWJsZTogIiwgaWRlbnQuc3RyaW5nKCkpKTsKICAgICByZXR1cm4gY3Jl
YXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgbWVzc2FnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggMTk4OTc2YmIzZmU2ZTZlOTExNzk4MTJkMWNh
ZjliOGJmOWJmZDBiYi4uOGQ1OTBlZjBmZmMwZWI5MGFjOGY5YTgxZDliYzI1NzIxY2QzNWM5MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtNDg0LDcg
KzQ4NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAKLSAgICBFeGVjdXRh
YmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5l
ZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UpOyB9Cisg
ICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRh
YmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZh
bHNlLCBmYWxzZSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1f
dW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQogICAgIHVuc2lnbmVkIG51
bWJlck9mRnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5u
dW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsgfQpAQCAtNTQwLDcgKzU0MCw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5m
bygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2Vz
RXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhl
Y3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRp
b24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSk7IH0KIAogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKQEAgLTYyOCw3ICs2Mjgs
OCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2tGb3Io
a2luZCk7CiAgICAgfQotICAgICAgICAKKworICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKTsg
fQogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0
YWJsZS0+bmFtZSgpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgaW5mZXJyZWROYW1lKCkgeyBy
ZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmluZmVycmVkTmFtZSgpOyB9CiAgICAgSlNTdHJp
bmcqIG5hbWVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1l
VmFsdWUoKTsgfQpAQCAtNjc1LDE0ICs2NzYsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9ib2R5
SW5jbHVkZXNCcmFjZXM7CiB9OwogCi1pbmxpbmUgYm9vbCBpc0hvc3RGdW5jdGlvbihKU1ZhbHVl
IHZhbHVlLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbikKLXsKLSAgICBKU0Z1bmN0aW9u
KiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZ2V0SlNGdW5jdGlvbih2YWx1ZSkpOwot
ICAgIGlmICghZnVuY3Rpb24gfHwgIWZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uLT5uYXRpdmVGdW5jdGlvbigpID09
IG5hdGl2ZUZ1bmN0aW9uOwotfQotCiBpbmxpbmUgdm9pZCBFeGVjdXRhYmxlQmFzZTo6Y2xlYXJD
b2RlVmlydHVhbChFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSkKIHsKICAgICBzd2l0Y2ggKGV4
ZWN1dGFibGUtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCmluZGV4IGMx
YjA4YWYyZDgxOGRhZTU3ZTFiMDBmZGExNzNhODE2MTM3NTI5YjUuLjEyNDkwYzQwZjMzNDE3ZWNh
OTIzODUwYTBkYzY2MmRiYmNkNDBmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKQEAgLTIyLDEyICsyMiwxMyBAQAogI2lu
Y2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNp
bmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJK
U0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNT
dHJpbmcuaCIKICNpbmNsdWRlICJKU1N0cmluZ0J1aWxkZXIuaCIKLSNpbmNsdWRlICJJbnRlcnBy
ZXRlci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIkxleGVyLmgi
CiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCkBAIC0xMDgsNyArMTA5LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAg
ICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkpIHsKICAgICAgICAg
SlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KHRoaXNWYWx1ZSk7Ci0g
ICAgICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICAgICAgaWYgKGZ1bmN0
aW9uLT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJmdW5jdGlvbiAiLCBmdW5j
dGlvbi0+bmFtZShleGVjKSwgIigpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59IikpOwogICAgICAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBmdW5jdGlvbi0+anNFeGVjdXRhYmxl
KCk7CiAgICAgICAgIFN0cmluZyBzb3VyY2VTdHJpbmcgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS50
b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
Y3RpdmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlv
bi5jcHAKaW5kZXggNzJlZDFjNzEyNDA2MTE2OGIwYWRkZDMxMTZmNzU1YTExN2I4ZmI5MC4uYjM3
NDk0MzA5OWUyMTU1YTM5NzcxMzMxMzQ3MDJjMmEyNGFjYzg2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCkBAIC01OCw3ICs1OCw3IEBAIHZv
aWQgSlNBY3RpdmF0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiAKIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQoUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewotICAgIFN5bWJv
bFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1l
LnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxl
KCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChlbnRyeS5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC03Miw3ICs3Miw3IEBAIGlubGluZSBib29s
IEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90CiAKIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQo
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
KQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVH
ZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRy
eSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlm
IChlbnRyeS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC04OSw3ICs4OSw3
IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXQoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6
OmhlYXAodGhpcykpOwogICAgIAotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xU
YWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9s
VGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUu
dWlkKCkpOwogICAgIGlmIChlbnRyeS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGlmIChlbnRyeS5pc1JlYWRPbmx5KCkpIHsKQEAgLTEzNiw3ICsxMzYsNyBAQCBpbmxpbmUg
Ym9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoVk0mIHZtLCBQ
cm9wZXJ0eU5hbWUgcHJvcAogICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIHJlZzsKICAg
ICB7CiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlKCktPm1f
bG9jayk7Ci0gICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xU
YWJsZSgpLT5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgICAg
IFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZSgpLT5maW5kKGxv
Y2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFi
bGUoKS0+ZW5kKGxvY2tlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIFN5
bWJvbFRhYmxlRW50cnkmIGVudHJ5ID0gaXRlci0+dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwCmluZGV4IDJmY2Y4
ODE1YzA1NjgwNTgxMmE3OTkxYTVmZjA2M2Q2ODczOTcxNjQuLjlhOTI1ODNhYTBlYzkwZGJiMzI4
ZWNkNTBkYzMxMzlhZWYwMjczYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5j
bHVkZSAiSlNBcmd1bWVudHNJdGVyYXRvci5oIgogCiAjaW5jbHVkZSAiQXJndW1lbnRzLmgiCisj
aW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKaW5kZXggOTAwN2I1ZjdkM2YxMDNi
MWQyMWIxYTM2NWEyNmMyMTVjMzJiNGQyOC4uYmEwYTJkMzhlOWM1M2UxNTkzN2Q0NmE4OTUxYThj
OGM0NTA3OTI2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiR2V0
dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSW5kZXhpbmdIZWFkZXJJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKICNp
bmNsdWRlICJSZWplY3QuaCIKICNpbmNsdWRlIDx3dGYvQVZMVHJlZS5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKaW5kZXggZDUwNmM0
ZWJkMjYyMGVmZDcwNzkzYTg3M2QwODUyZmJkOTc4Mjg1OS4uY2YzNzA5N2VjMGM2OTI1YTg2N2I4
YzAxMGMwZWZjNDA3NDQ4NWYxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5SXRlcmF0b3IuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJK
U0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRl
ICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWUuY3BwCmluZGV4IGNjYTY4ODhiZjk4YTAyODY0NmNhM2RkZGYzNzYyN2NlMGU3ZDkzMDIuLjMz
OWE3YWI3ZjU5NTE1ZTk2YWZiN2VjNGI4NzQxZTdhYThlMTY2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCkBAIC0zMiw3ICszMiw5IEBACiAjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiSlNOb3RBbk9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1
ZGUgIk51bWJlck9iamVjdC5oIgorI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlIDx3
dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCmluZGV4IGY3Yzg0NDY0
NTA5MmIyNTA4MDVlNmU4ZDQ4MzJjOTk4YmRiODliNTQuLmQ3OTVkZDU2YTk3ZGRiNTk3YzA5MGZj
MmUwYjdmMzA4ZTMzZWJjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGxJbmxpbmVzLmgKQEAgLTI3LDggKzI3LDEwIEBACiAjZGVmaW5lIEpTQ2VsbElubGluZXNf
aAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMu
aCIKICNpbmNsdWRlICJEZWZlckdDLmgiCiAjaW5jbHVkZSAiSGFuZGxlLmgiCisjaW5jbHVkZSAi
SlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09i
amVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDI0MTk2NDYxMGJiNDQyN2IxODYzNzMzNDZlMjRm
NWE4MmQwY2RjYzQuLmFjZTZjMTQ3ZTQ5N2ZlZTIwMjkyZmI1NTM5NzYwZDVkNjk4MjljZTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0zNCw3
ICszNCw4IEBACiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJHZXR0
ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCi0jaW5jbHVkZSAiSlNCb3VuZEZ1bmN0
aW9uLmgiIAorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rp
b25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU05v
dEFuT2JqZWN0LmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTEwOSw2ICsxMTAsMTQg
QEAgdm9pZCBKU0Z1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIE5hdGl2ZUV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUsIGludCBsZW5ndGgKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmxlbmd0aCwganNOdW1iZXIobGVuZ3RoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwg
RG9udEVudW0pOwogfQogCitKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVu
Y3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjcmVhdGUo
dm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCk7CisgICAgZnVuY3Rpb24tPnB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoJnZtLCBleGVjdXRhYmxlLT5uYW1l
KCkuc3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgZnVu
Y3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcihl
eGVjdXRhYmxlLT5wYXJhbWV0ZXJDb3VudCgpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9u
dEVudW0pOworICAgIHJldHVybiBmdW5jdGlvbjsKK30KKwogT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGUqIEpTRnVuY3Rpb246OmNyZWF0ZUFsbG9jYXRpb25Qcm9maWxlKEV4ZWNTdGF0ZSogZXhlYywg
c2l6ZV90IGlubGluZUNhcGFjaXR5KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC0x
NDIsNyArMTUxLDcgQEAgY29uc3QgU3RyaW5nIEpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5
TmFtZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBleHBsaWNpdE5hbWU7CiAgICAg
CiAgICAgY29uc3QgU3RyaW5nIGFjdHVhbE5hbWUgPSBuYW1lKGV4ZWMpOwotICAgIGlmICghYWN0
dWFsTmFtZS5pc0VtcHR5KCkgfHwgaXNIb3N0RnVuY3Rpb24oKSkKKyAgICBpZiAoIWFjdHVhbE5h
bWUuaXNFbXB0eSgpIHx8IGlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVy
biBhY3R1YWxOYW1lOwogICAgIAogICAgIHJldHVybiBqc0V4ZWN1dGFibGUoKS0+aW5mZXJyZWRO
YW1lKCkuc3RyaW5nKCk7CkBAIC0xNTAsMTAgKzE1OSwyMCBAQCBjb25zdCBTdHJpbmcgSlNGdW5j
dGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKEV4ZWNTdGF0ZSogZXhlYykKIAogY29uc3QgU291
cmNlQ29kZSogSlNGdW5jdGlvbjo6c291cmNlQ29kZSgpIGNvbnN0CiB7Ci0gICAgaWYgKGlzSG9z
dEZ1bmN0aW9uKCkpCisgICAgaWYgKGlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAg
IHJldHVybiAwOwogICAgIHJldHVybiAmanNFeGVjdXRhYmxlKCktPnNvdXJjZSgpOwogfQorICAg
IAorYm9vbCBKU0Z1bmN0aW9uOjppc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGlzSG9zdEZ1bmN0aW9uKCkgfHwgaXNCdWlsdGluRnVuY3Rpb24oKTsKK30KKwor
Ym9vbCBKU0Z1bmN0aW9uOjppc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJu
ICFpc0hvc3RGdW5jdGlvbigpICYmIGpzRXhlY3V0YWJsZSgpLT5pc0J1aWx0aW5GdW5jdGlvbigp
OworfQogCiB2b2lkIEpTRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKIHsKQEAgLTI3Nyw3ICsyOTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBz
bG90QmFzZQogICAgIGlmICghY2FsbGVyLmlzT2JqZWN0KCkgfHwgIWFzT2JqZWN0KGNhbGxlcikt
PmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoY2FsbGVyKTsKICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0
aW9uKj4oY2FsbGVyKTsKLSAgICBpZiAoZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkgfHwgIWZ1
bmN0aW9uLT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgaWYgKGZ1bmN0aW9u
LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpIHx8ICFmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCkt
PmlzU3RyaWN0TW9kZSgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxlcik7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIkZ1bmN0aW9uLmNhbGxlciB1c2VkIHRvIHJldHJpZXZlIHN0cmljdCBjYWxsZXIiKSkp
OwogfQpAQCAtMjk5LDcgKzMxOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTRnVuY3Rpb246Om5hbWVH
ZXR0ZXIoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgc2xvdEJhc2UsIEVuY29kCiBib29sIEpT
RnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3Qp
OwotICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RGdW5jdGlvbigpKQorICAgIGlmICh0aGlzT2Jq
ZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gQmFzZTo6Z2V0
T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAK
ICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUp
IHsKQEAgLTM2MSw3ICszODAsNyBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xv
dChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5Tgogdm9pZCBKU0Z1
bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRp
b25Nb2RlIG1vZGUpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1
bmN0aW9uKj4ob2JqZWN0KTsKLSAgICBpZiAoIXRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkg
JiYgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpIHsKKyAgICBpZiAoIXRoaXNP
YmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgJiYgKG1vZGUgPT0gSW5jbHVkZURvbnRF
bnVtUHJvcGVydGllcykpIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHByb3RvdHlwZSBoYXMgYmVl
biByZWlmaWVkLgogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0KTsKICAgICAg
ICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmpl
Y3QsIGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHNsb3QpOwpAQCAtMzc3
LDcgKzM5Niw3IEBAIHZvaWQgSlNGdW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywKIHZvaWQgSlNGdW5jdGlvbjo6cHV0
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNGdW5jdGlv
biogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2VsbCk7Ci0gICAgaWYgKHRoaXNP
YmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkpIHsKKyAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JC
dWlsdGluRnVuY3Rpb24oKSkgewogICAgICAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00
MjUsNyArNDQ0LDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3AKIGJvb2wgSlNGdW5jdGlvbjo6
ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsKLSAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0
RnVuY3Rpb24oKSkKKyAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24o
KSkKICAgICAgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbik7CiAKICAgICBpZiAocHJv
cGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAppbmRleCA3Y2QxNGI4YzJkODAwZjYx
YmRjMTJlZGQyZGYwNGQzNWZhMDYxOWI2Li45YjU4Yjc0N2NlMWYzZjMzMmQwZjc2MGE1Nzg1Yjdh
YzE5ZWJlOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5o
CkBAIC02OCw2ICs2OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBzdGF0aWMgSlNGdW5jdGlvbiog
Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNHbG9iYWxP
YmplY3QqKTsKKyAgICAgICAgCiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7
CiAgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgbmFtZShFeGVjU3Rh
dGUqKTsKQEAgLTk3LDcgKzk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4ZWN1dGFi
bGVCYXNlKiBleGVjdXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9leGVjdXRhYmxlLmdldCgpOyB9
CiAKICAgICAgICAgLy8gVG8gY2FsbCBlaXRoZXIgb2YgdGhlc2UgbWV0aG9kcyBpbmNsdWRlIEV4
ZWN1dGFibGUuaAotICAgICAgICBpbmxpbmUgYm9vbCBpc0hvc3RGdW5jdGlvbigpIGNvbnN0Owor
ICAgICAgICBib29sIGlzSG9zdEZ1bmN0aW9uKCkgY29uc3Q7CiAgICAgICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSoganNFeGVjdXRhYmxlKCkgY29uc3Q7CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgY29uc3QgU291cmNlQ29kZSogc291cmNlQ29kZSgpIGNvbnN0OwpAQCAtMTQ1LDYgKzE0Nywx
MCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2FsbG9jYXRpb25Qcm9m
aWxlV2F0Y2hwb2ludDsKICAgICAgICAgfQogCisgICAgICAgIGJvb2wgaXNIb3N0T3JCdWlsdGlu
RnVuY3Rpb24oKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5l
KCkgY29uc3Q7CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEltcGxlbWVu
dHNIYXNJbnN0YW5jZSB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9w
ZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCkBAIC0xNjksOCArMTc1LDYg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAgCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsKLQogICAgICAgICBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKICAgICAgICAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIGNhbGxlckdldHRlcihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIFByb3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBsZW5n
dGhHZXR0ZXIoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b25JbmxpbmVzLmgKaW5kZXggZmU0ZTExNGFkYmMyMzY3NGQzYjYwZTYxZjcxY2I3YTA2Yzk0Nzg0
ZC4uNjlmMGQ0ZjM5NmVmOWMyZGE5ZTBiZjYwOGMyNjQ0MTcxNzk5YmE1MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCkBAIC01Mywx
NiArNTMsMjQgQEAgaW5saW5lIGJvb2wgSlNGdW5jdGlvbjo6aXNIb3N0RnVuY3Rpb24oKSBjb25z
dAogCiBpbmxpbmUgTmF0aXZlRnVuY3Rpb24gSlNGdW5jdGlvbjo6bmF0aXZlRnVuY3Rpb24oKQog
ewotICAgIEFTU0VSVChpc0hvc3RGdW5jdGlvbigpKTsKKyAgICBBU1NFUlQoaXNIb3N0RnVuY3Rp
b25Ob25JbmxpbmUoKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5hdGl2ZUV4ZWN1dGFibGUq
PihtX2V4ZWN1dGFibGUuZ2V0KCkpLT5mdW5jdGlvbigpOwogfQogCiBpbmxpbmUgTmF0aXZlRnVu
Y3Rpb24gSlNGdW5jdGlvbjo6bmF0aXZlQ29uc3RydWN0b3IoKQogewotICAgIEFTU0VSVChpc0hv
c3RGdW5jdGlvbigpKTsKKyAgICBBU1NFUlQoaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSk7CiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PE5hdGl2ZUV4ZWN1dGFibGUqPihtX2V4ZWN1dGFibGUuZ2V0
KCkpLT5jb25zdHJ1Y3RvcigpOwogfQogCitpbmxpbmUgYm9vbCBpc0hvc3RGdW5jdGlvbihKU1Zh
bHVlIHZhbHVlLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbikKK3sKKyAgICBKU0Z1bmN0
aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZ2V0SlNGdW5jdGlvbih2YWx1ZSkp
OworICAgIGlmICghZnVuY3Rpb24gfHwgIWZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGZ1bmN0aW9uLT5uYXRpdmVGdW5jdGlvbigp
ID09IG5hdGl2ZUZ1bmN0aW9uOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8v
IEpTRnVuY3Rpb25JbmxpbmVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVj
dG9ySW5saW5lcy5oCmluZGV4IDJkZGMyOWY3MTg5N2JiNTFkMzkwYjA2YjI1YTczODMzODc0YmEw
YzEuLmVkZDM0NDljZTQ3YjE3MzVlOGU1ZGJiMDVmMzE4ZTNkNTVmM2JlNjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29u
c3RydWN0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaApAQCAtMjYsNiArMjYsNyBA
QAogI2lmbmRlZiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lc19oCiAj
ZGVmaW5lIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzX2gKIAorI2lu
Y2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRl
ICJKU0FycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25z
dHJ1Y3Rvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCA2ZGI4NjI3NGMzYjg3
NGFhYWRlNTE1MTg5ODI2NzI2ZmIxMzZjMTczLi5mMjRlYTczMDNkZjk2OWRiZDJkY2E1MmM4NmQx
MWM3OGMwMGRiOWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtMjcsNiArMjcs
NyBAQAogI2RlZmluZSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXNfaAogCiAjaW5jbHVk
ZSAiQXJyYXlCdWZmZXJWaWV3LmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNp
bmNsdWRlICJEZWZlckdDLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25IZWxwZXJzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5o
CmluZGV4IDQ1OTk5N2E0NjRiOTExOTQ3N2IxYmU4NGUzNmM0ZTI5NjZhY2VmODUuLjhlNWZmODI3
OTFlNmZmOGQ0ZWI5YzM3MzY5MWU0MzNlYjdkMTZhZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJvdG90eXBlSW5saW5lcy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lc19oCiAjZGVmaW5lIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lc19oCiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlm
aWVycy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5o
IgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAyYzI3NGMxYTdkNDgxYzA3ZGYwZDJiZWIz
YjI5MzFhMzkwN2E1ZTY2Li4wNmU1NGM4NGU3N2I5MDMyYmFhMWQyZGY0N2ExYzcyZTgwYjdkZWEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCkBAIC0zNDYsNyArMzQ2LDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1
ZSBwcm90b3R5cGUpCiAKICAgICAvLyBDb25zdHJ1Y3RvcnMKIAotICAgIEpTQ2VsbCogb2JqZWN0
Q29uc3RydWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBPYmplY3RDb25zdHJ1
Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgp
KSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOworICAgIE9iamVjdENvbnN0cnVjdG9yKiBvYmpl
Y3RDb25zdHJ1Y3RvciA9IE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIE9iamVjdENvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCkpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9vYmplY3RDb25zdHJ1Y3Rvci5z
ZXQodm0sIHRoaXMsIG9iamVjdENvbnN0cnVjdG9yKTsKICAgICBKU0NlbGwqIGZ1bmN0aW9uQ29u
c3RydWN0b3IgPSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQo
KSksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwogICAgIEpTQ2VsbCogYXJyYXlDb25zdHJ1
Y3RvciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9hcnJh
eVByb3RvdHlwZS5nZXQoKSk7CiAKQEAgLTQzMiw3ICs0MzMsMTAgQEAgdm9pZCBKU0dsb2JhbE9i
amVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgR2xvYmFsUHJvcGVydHlJbmZvIHN0
YXRpY0dsb2JhbHNbXSA9IHsKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPk5hTiwganNOYU4oKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAog
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+SW5maW5pdHksIGpz
TnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSksIERvbnRFbnVt
IHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQsIGpzVW5kZWZpbmVkKCksIERvbnRFbnVt
IHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KQorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCwganNVbmRlZmluZWQoKSwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZFByaXZhdGVOYW1lLCBqc1VuZGVmaW5lZCgp
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5PYmplY3RQcml2YXRlTmFtZSwgb2JqZWN0Q29uc3Ry
dWN0b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPlR5cGVFcnJvclByaXZhdGVOYW1lLCBtX3R5
cGVFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25s
eSkKICAgICB9OwogICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFscywgV1RGX0FSUkFZ
X0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CiAgICAgCkBAIC02MDgsNiArNjEyLDcgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5bnRheEVycm9yQ29u
c3RydWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3R5cGVFcnJvckNv
bnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9VUklFcnJvckNv
bnN0cnVjdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9vYmplY3RDb25z
dHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvbWlzZUNvbnN0
cnVjdG9yKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2V2YWxGdW5jdGlv
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApp
bmRleCBiMGNhZDNkYzU0NzBmN2M3YTBlNTcwYmRjZDJkZmZhODk1ZTJhYTBjLi4zYTYxNmM2ZjA1
ZWRmMWQyOTVhZjg0NDFhYTY2NTAwZmI5MmE0YTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTY3LDYgKzY3LDcgQEAgY2xhc3MgSlNT
dGFjazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIE1pY3JvdGFzazsKIGNs
YXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I7CitjbGFzcyBPYmplY3RDb25zdHJ1Y3RvcjsKIGNs
YXNzIFByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsKIGNsYXNzIFJl
Z0V4cENvbnN0cnVjdG9yOwpAQCAtMTU4LDYgKzE1OSw3IEBAIHByb3RlY3RlZDoKICAgICBXcml0
ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV90eXBlRXJyb3JDb25zdHJ1Y3RvcjsK
ICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV9VUklFcnJvckNvbnN0
cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VDb25zdHJ1Y3Rvcj4gbV9wcm9taXNl
Q29uc3RydWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPE9iamVjdENvbnN0cnVjdG9yPiBtX29iamVj
dENvbnN0cnVjdG9yOwogCiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fZXZhbEZ1bmN0
aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2NhbGxGdW5jdGlvbjsKQEAgLTMz
MCw2ICszMzIsNyBAQCBwdWJsaWM6CiAgICAgUmVnRXhwQ29uc3RydWN0b3IqIHJlZ0V4cENvbnN0
cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBDb25zdHJ1Y3Rvci5nZXQoKTsgfQogCiAg
ICAgRXJyb3JDb25zdHJ1Y3RvciogZXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1f
ZXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQorICAgIE9iamVjdENvbnN0cnVjdG9yKiBvYmplY3RD
b25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0Q29uc3RydWN0b3IuZ2V0KCk7IH0K
ICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBldmFsRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1fZXZhbEVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KICAgICBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yKiByYW5nZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3Jh
bmdlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3Iq
IHJlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5jZUVy
cm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KQEAgLTU4MSw3ICs1ODQsNyBAQCBpbmxpbmUgYm9vbCBK
U0dsb2JhbE9iamVjdDo6aGFzT3duUHJvcGVydHlGb3JXcml0ZShFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZQogCiBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6c3ltYm9sVGFibGVIYXNQ
cm9wZXJ0eShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIFN5bWJvbFRhYmxlRW50
cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05h
bWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGlu
ZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIHJldHVybiAhZW50cnkuaXNOdWxsKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCAyYjY3
YTFkOWVlZDg0ZTk5NTZmOGJiOTY4Mzg0Yzg0Y2FlYTUzY2ZmLi4yZWEyYzI0ZTZlYWI0Y2QwZDdm
ZmVkNjY1ZWY0YWU0MWFmMDc1MGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBnZXRDbGFz
c1Byb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzCiAg
ICAgICAgIGludCBoYXNoU2l6ZU1hc2sgPSB0YWJsZS0+Y29tcGFjdFNpemUgLSAxOwogICAgICAg
ICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gdGFibGUtPnRhYmxlOwogICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8PSBoYXNoU2l6ZU1hc2s7ICsraSwgKytlbnRyeSkgewotICAgICAgICAgICAg
aWYgKGVudHJ5LT5rZXkoKSAmJiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8
IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKSAmJiAhKChlbnRyeS0+YXR0cmli
dXRlcygpICYgRnVuY3Rpb24pICYmIGRpZFJlaWZ5KSkKKyAgICAgICAgICAgIGlmIChlbnRyeS0+
a2V5KCkgJiYgKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCAobW9kZSA9PSBJ
bmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgJiYgISgoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1
aWx0aW5PckZ1bmN0aW9uKSAmJiBkaWRSZWlmeSkpCiAgICAgICAgICAgICAgICAgcHJvcGVydHlO
YW1lcy5hZGQoZW50cnktPmtleSgpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE2MTgsNyArMTYx
OCw3IEBAIHZvaWQgSlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGVsZXRlKEV4ZWNT
dGF0ZSogZXhlYykKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBQcm9wZXJ0eVNsb3Qg
c2xvdCh0aGlzKTsKICAgICAgICAgZm9yIChIYXNoVGFibGU6OkNvbnN0SXRlcmF0b3IgaXRlciA9
IGhhc2hUYWJsZS0+YmVnaW4odm0pOyBpdGVyICE9IGhhc2hUYWJsZS0+ZW5kKHZtKTsgKytpdGVy
KSB7Ci0gICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pCisgICAg
ICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pCiAgICAg
ICAgICAgICAgICAgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoZ2xvYmFsT2JqZWN0KCktPmdsb2Jh
bEV4ZWMoKSwgKml0ZXIsIHRoaXMsIElkZW50aWZpZXIoJnZtLCBpdGVyLT5rZXkoKSksIHNsb3Qp
OwogICAgICAgICB9CiAgICAgfQpAQCAtMjIzNiw2ICsyMjM2LDE2IEBAIHZvaWQgSlNPYmplY3Q6
OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uCiAgICAgcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRy
aWJ1dGVzKTsKIH0KIAordm9pZCBKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBw
cm9wZXJ0eU5hbWUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzKQoreworICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUu
cHVibGljTmFtZSgpOworICAgIGlmICghbmFtZSkKKyAgICAgICAgbmFtZSA9IHZtLnByb3BlcnR5
TmFtZXMtPmFub255bW91cy5pbXBsKCk7CisgICAgQVNTRVJUKG5hbWUpOworICAgIEpTRnVuY3Rp
b24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBzdGF0
aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBnbG9iYWxP
YmplY3QpOworICAgIHB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCBmdW5jdGlvbiwgYXR0cmli
dXRlcyk7Cit9CisKIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQ
cm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2
ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKQogewogICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGlj
TmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggMDJi
MTM3YjM1MGMyZmE4MzI1YmQzYjk2NDcxMTJhYmU4NzZmMzgzZi4uZGRlNTk3ZWZmYWVjMGYxYjhk
NDRjMjkxMTk1MDMwMWYwNjAwN2U5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQnV0dGVyZmx5LmgiCiAjaW5j
bHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ2xhc3NJbmZvLmgiCi0jaW5jbHVkZSAiQ29t
bW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJDb3B5V3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVk
ZSAiRGVmZXJHQy5oIgogI2luY2x1ZGUgIkhlYXAuaCIKQEAgLTU4MSw2ICs1ODAsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBwdXREaXJlY3RVbmRlZmluZWQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSB7
IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNldFVuZGVmaW5lZCgpOyB9CiAKICAgICB2b2lk
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9w
ZXJ0eU5hbWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24sIEludHJp
bnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgdm9pZCBwdXREaXJlY3RCdWlsdGluRnVu
Y3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEZ1bmN0aW9u
RXhlY3V0YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIHZvaWQgcHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3Qg
UHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJ
bnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3Ry
dWN0b3IuY3BwCmluZGV4IDQwMjYxOTYzM2ZhMDZmZDI1NGIzZjJhN2E4Y2M3MWU4MDdhYWY5MTEu
LjE3ZDJhYjY1YTg4ZmZiMTNmYTlhNmM4ZjU4M2NhODQ0YWY4MzIyNDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJKU1Byb21pc2VEZWZlcnJlZC5oIgogI2luY2x1
ZGUgIkpTUHJvbWlzZUZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZVByb3RvdHlwZS5o
IgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2lu
Y2x1ZGUgIk51bWJlck9iamVjdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVk
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmNw
cAppbmRleCBjYmM0MmViOWZkOTIzMGY0NmU2Zjg0OWZmMWE3OTU5YmQxMDc5YmVjLi40MjcxMGMz
MDU0NGExMWM3NTQ3YzNjZjg4OGI5NmE0OGM0NjhhMDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuY3BwCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSAiSlNQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlQ29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJKU1Byb21pc2VGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJKU1N0cmlu
Z0lubGluZXMuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21p
c2VQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNl
UHJvdG90eXBlLmNwcAppbmRleCA5ZGY0NTc4MTdjYTgwM2QzNzMyODI0MmZjMzNlY2E3NDVlZDQw
NDMxLi5lNGNhNWE0NmQ5MWJiODA0MjRiODYyZTkzMjQ5MjM3YmZjNTNlN2FmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHAK
QEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJKU1Byb21pc2VEZWZlcnJlZC5oIgogI2luY2x1
ZGUgIkpTUHJvbWlzZUZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZVJlYWN0aW9uLmgi
CisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWljcm90YXNrLmgiCiAj
aW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VSZWFjdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9taXNlUmVhY3Rpb24uaAppbmRleCBmYzcxNDZjNTBlODQ5ZDMzMGQ4
OWU2M2ZjMTljYTY0OWQzYzBlODQ4Li40MmQyNDk2YTFmY2RhYmJjMTFkYzdiYjI3N2RkMTIzZTJh
NGRlMjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21p
c2VSZWFjdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlz
ZVJlYWN0aW9uLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgSlNQcm9taXNlUmVhY3Rpb25f
aAogCiAjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiU3RydWN0dXJlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcApp
bmRleCA2OGE4YmQ4N2QzOGFkYmJiOWRkMmFjOWVjNGI0OWQ1ZWY0NTQ5ZDU2Li4yMzdjNDJiYjBk
YTBmMTY2NzZlYjExYWRlODE4MGE3YjA2ZDk4ZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcApAQCAtMjks
NyArMjksOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1l
SXRlcmF0b3IuaCIKIAorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAppbmRleCBmNDM2
MmZmMzU0ZWU2YTUwMjIxYmI3MzFkMWEyNjExZTZkZDYxYmMwLi5kMDczNzE5ZGUxNjBkMmYyOTIx
MTBhNTk2YTEwNWUyZmEyMTE1ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCkBAIC0zMSw3ICszMSw2IEBACiAK
ICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCi0jaW5jbHVkZSAi
T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSA8
bWVtb3J5PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCAy
YjFjZGRkYzU4NDFkNjBkMTU3YTJlNjFmNzAyYjBlZTVmYTFkNjc2Li5lMzkzNDE2MGFlYTkyNmVm
MTU5MzJmODc5MGUyNGM1MmFmMDJkMzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmgKQEAgLTI0LDcgKzI0LDYgQEAKICNkZWZpbmUgSlNTdHJpbmdfaAogCiAjaW5j
bHVkZSAiQ2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNs
dWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlEZXNjcmlwdG9yLmgiCiAjaW5j
bHVkZSAiUHJvcGVydHlTbG90LmgiCkBAIC00NzIsMzMgKzQ3MSw2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIGlubGluZSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoJmV4ZWMtPnZt
KCksIHMpOyB9CiAgICAgaW5saW5lIEpTU3RyaW5nKiBqc093bmVkU3RyaW5nKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBqc093bmVkU3RyaW5nKCZleGVjLT52bSgp
LCBzKTsgfQogCi0gICAgQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9w
ZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCi0gICAgewotICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKLSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhp
cywgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGpzTnVtYmVyKG1fbGVuZ3RoKSk7
Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHVuc2lnbmVk
IGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOwotICAgICAgICBpZiAoaSA8IG1fbGVuZ3RoKSB7
Ci0gICAgICAgICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOyAvLyBO
byBuZWVkIGZvciBhbiBleHBsaWNpdCBjaGVjaywgdGhlIGFib3ZlIHRlc3Qgd291bGQgYWx3YXlz
IGZhaWwhCi0gICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnREZWxldGUgfCBSZWFk
T25seSwgZ2V0SW5kZXgoZXhlYywgaSkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgIH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgICAgICAgICAgCi0gICAg
QUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0
YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKLSAg
ICB7Ci0gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPCBtX2xlbmd0aCkgewotICAgICAgICAgICAg
c2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMs
IHByb3BlcnR5TmFtZSkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCiAgICAgaW5saW5lIGJvb2wgaXNKU1N0cmlu
ZyhKU1ZhbHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxsKCkgJiYgdi5hc0NlbGwoKS0+Y2xhc3NJbmZv
KCkgPT0gSlNTdHJpbmc6OmluZm8oKTsgfQogCiAgICAgLy8gLS0tIEpTVmFsdWUgaW5saW5lcyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC01MjgsMzIgKzUwMCw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICByZXR1cm4gdG9XVEZTdHJpbmdTbG93Q2FzZShleGVjKTsKICAgICB9
CiAKLSAgICBBTFdBWVNfSU5MSU5FIFN0cmluZyBpbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJp
bmcoY29uc3QgSlNWYWx1ZSYgdmFsdWUsIEV4ZWNTdGF0ZSogZXhlYykKLSAgICB7Ci0gICAgICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpCi0gICAg
ICAgICAgICByZXR1cm4gdm0ubnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVlLmFzSW50MzIoKSk7Ci0g
ICAgICAgIGlmICh2YWx1ZS5pc0RvdWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuIHZtLm51bWVy
aWNTdHJpbmdzLmFkZCh2YWx1ZS5hc0RvdWJsZSgpKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzVHJ1
ZSgpKQotICAgICAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPnRydWVLZXl3b3JkLnN0
cmluZygpOwotICAgICAgICBpZiAodmFsdWUuaXNGYWxzZSgpKQotICAgICAgICAgICAgcmV0dXJu
IHZtLnByb3BlcnR5TmFtZXMtPmZhbHNlS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHZh
bHVlLmlzTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPm51bGxL
ZXl3b3JkLnN0cmluZygpOwotICAgICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAg
ICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLnN0cmluZygp
OwotICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwotICAg
IH0KLQotICAgIEFMV0FZU19JTkxJTkUgU3RyaW5nIEpTVmFsdWU6OnRvV1RGU3RyaW5nSW5saW5l
KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChpc1N0cmluZygpKQot
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTU3RyaW5nKj4oYXNDZWxsKCkpLT52YWx1
ZShleGVjKTsKLQotICAgICAgICByZXR1cm4gaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5n
KCp0aGlzLCBleGVjKTsKLSAgICB9Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8g
SlNTdHJpbmdfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0lu
bGluZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zNzhjMDVmYzgwZDg4ZTg1MzdjOWQyYTVlYWI5ZmYwYmE5YjYw
YTc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmdJbmxpbmVzLmgKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNTdHJpbmdJbmxpbmVzX2gKKyNk
ZWZpbmUgSlNTdHJpbmdJbmxpbmVzX2gKKworI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgi
CisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJp
bmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGpzTnVtYmVyKG1fbGVuZ3RoKSk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlO
YW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaSA8IG1fbGVuZ3RoKSB7CisgICAgICAgIEFTU0VSVChp
ICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCk7IC8vIE5vIG5lZWQgZm9yIGFuIGV4cGxpY2l0
IGNoZWNrLCB0aGUgYWJvdmUgdGVzdCB3b3VsZCBhbHdheXMgZmFpbCEKKyAgICAgICAgc2xvdC5z
ZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIGkpKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30K
KworQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhl
Y1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
K3sKKyAgICBpZiAocHJvcGVydHlOYW1lIDwgbV9sZW5ndGgpIHsKKyAgICAgICAgc2xvdC5zZXRW
YWx1ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIHByb3BlcnR5
TmFtZSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGZh
bHNlOworfQorCitBTFdBWVNfSU5MSU5FIFN0cmluZyBpbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9T
dHJpbmcoY29uc3QgSlNWYWx1ZSYgdmFsdWUsIEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpCisgICAgICAgIHJldHVy
biB2bS5udW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNJbnQzMigpKTsKKyAgICBpZiAodmFsdWUu
aXNEb3VibGUoKSkKKyAgICAgICAgcmV0dXJuIHZtLm51bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZS5h
c0RvdWJsZSgpKTsKKyAgICBpZiAodmFsdWUuaXNUcnVlKCkpCisgICAgICAgIHJldHVybiB2bS5w
cm9wZXJ0eU5hbWVzLT50cnVlS2V5d29yZC5zdHJpbmcoKTsKKyAgICBpZiAodmFsdWUuaXNGYWxz
ZSgpKQorICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+ZmFsc2VLZXl3b3JkLnN0cmlu
ZygpOworICAgIGlmICh2YWx1ZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5
TmFtZXMtPm51bGxLZXl3b3JkLnN0cmluZygpOworICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZCgp
KQorICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZC5zdHJp
bmcoKTsKKyAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworfQor
ICAgIAorQUxXQVlTX0lOTElORSBTdHJpbmcgSlNWYWx1ZTo6dG9XVEZTdHJpbmdJbmxpbmUoRXhl
Y1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIGlmIChpc1N0cmluZygpKQorICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8SlNTdHJpbmcqPihhc0NlbGwoKSktPnZhbHVlKGV4ZWMpOworICAgIAor
ICAgIHJldHVybiBpbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcoKnRoaXMsIGV4ZWMpOwor
fQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAppbmRleCAyYWMyNTI0YzVkZmRhM2QxMjI0OWQ3Nzkw
YWRjMzEyOWUzYzBlODcxLi5mYmM4Yjg5NWVhZTZhZjc4ODgzOWJlYjVlODNkN2I2Yjk3OTI4ZmFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxl
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRh
YmxlT2JqZWN0LmNwcApAQCAtNjQsNiArNjQsOCBAQCB2b2lkIEpTU3ltYm9sVGFibGVPYmplY3Q6
OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdAog
ICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcih0aGlzT2JqZWN0LT5zeW1ib2xUYWJs
ZSgpLT5tX2xvY2spOwogICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBlbmQgPSB0
aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5lbmQobG9ja2VyKTsKICAgICAgICAgZm9yIChTeW1i
b2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmJl
Z2luKGxvY2tlcik7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgaWYgKGl0LT5rZXkt
PmlzRW1wdHlVbmlxdWUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IGlmICghKGl0LT52YWx1ZS5nZXRBdHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwgKG1vZGUgPT0g
SW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpCiAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1l
cy5hZGQoSWRlbnRpZmllcihleGVjLCBpdC0+a2V5LmdldCgpKSk7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3Qu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaApp
bmRleCBiNWIyMGE4NDViNmFiNjQ0MjRiMzdlMzFiMjc3NGVmOTA1MzUzZjdmLi5kMDNiMjQ1MTFj
MmRlMTk1OWZiNWY1NmQ2NDljNjRkMGVmZTA2ODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCkBAIC03Miw3ICs3Miw3IEBA
IGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogewogICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xU
YWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgQ29uY3VycmVudEpJVExvY2tlciBs
b2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRv
ciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1l
KCkpOworICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5m
aW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoaXRlciA9PSBzeW1ib2xU
YWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFN5bWJvbFRhYmxl
RW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1ZTsKQEAgLTg3LDcgKzg3LDcgQEAgaW5saW5l
IGJvb2wgc3ltYm9sVGFibGVHZXQoCiB7CiAgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0g
Km9iamVjdC0+c3ltYm9sVGFibGUoKTsKICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihz
eW1ib2xUYWJsZS5tX2xvY2spOwotICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIg
PSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7Cisg
ICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9j
a2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVu
ZChsb2NrZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgU3ltYm9sVGFibGVFbnRyeTo6
RmFzdCBlbnRyeSA9IGl0ZXItPnZhbHVlOwpAQCAtMTA0LDcgKzEwNCw3IEBAIGlubGluZSBib29s
IHN5bWJvbFRhYmxlR2V0KAogewogICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmpl
Y3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9s
VGFibGUubV9sb2NrKTsKLSAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3lt
Ym9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5
bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwg
cHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9j
a2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3Qg
ZW50cnkgPSBpdGVyLT52YWx1ZTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBpbmxpbmUgYm9vbCBzeW1i
b2xUYWJsZVB1dCgKICAgICB7CiAgICAgICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpv
YmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKSVRMb2NrZXIg
bG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jaywgZXhlYy0+dm0oKS5oZWFwKTsKLSAgICAgICAgU3lt
Ym9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBw
cm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRl
cmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkp
OwogICAgICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYm9vbCB3YXNGYXQ7CkBAIC0xNTksNyArMTU5LDcg
QEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcygKICAgICB7CiAgICAg
ICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAg
ICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0g
ICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5k
KGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgICAgIFN5bWJvbFRhYmxl
OjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlO
YW1lLnVpZCgpKTsKICAgICAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkmIGVu
dHJ5ID0gaXRlci0+dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Mb29rdXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNw
cAppbmRleCBhODA2ZGQwNTJhMGNiZWU0Y2FjMmNhYTZlMDhjNjcxNjAwNWMyNzBjLi5hOTc2NTIw
MWI5ZjUxODY0MTQyM2RkZTBmZTBlMmU1MWE4Y2U3M2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0xvb2t1cC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBIYXNoVGFibGU6OmRl
bGV0ZVRhYmxlKCkgY29uc3QKIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCogdGhpc09iaiwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEFTU0VSVCh0
aGlzT2JqLT5nbG9iYWxPYmplY3QoKSk7Ci0gICAgQVNTRVJUKGVudHJ5LT5hdHRyaWJ1dGVzKCkg
JiBGdW5jdGlvbik7CisgICAgQVNTRVJUKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JG
dW5jdGlvbik7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICB1bnNpZ25lZCBhdHRyaWJ1
dGVzOwogICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHRoaXNPYmotPmdldERpcmVjdE9mZnNl
dCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKQEAgLTc5LDkgKzc5LDEzIEBAIGJvb2wg
c2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoRW50cnkq
IGVudHJ5LCBKU09iamVjdCoKICAgICAgICAgaWYgKHRoaXNPYmotPnN0YXRpY0Z1bmN0aW9uc1Jl
aWZpZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICAgICAgdGhpc09i
ai0+cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oCi0gICAgICAgICAgICB2bSwgdGhpc09iai0+Z2xv
YmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZW50cnktPmZ1bmN0aW9uTGVuZ3RoKCksCi0gICAg
ICAgICAgICBlbnRyeS0+ZnVuY3Rpb24oKSwgZW50cnktPmludHJpbnNpYygpLCBlbnRyeS0+YXR0
cmlidXRlcygpKTsKKyAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluKQor
ICAgICAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKHZtLCB0aGlzT2Jq
LT5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBlbnRyeS0+YnVpbHRpbkdlbmVyYXRvcigp
KHZtKSwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
dGhpc09iai0+cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oCisgICAgICAgICAgICAgICAgdm0sIHRo
aXNPYmotPmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5mdW5jdGlvbkxlbmd0
aCgpLAorICAgICAgICAgICAgICAgIGVudHJ5LT5mdW5jdGlvbigpLCBlbnRyeS0+aW50cmluc2lj
KCksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAgICAgICB9CiAgICAgICAgIG9mZnNldCA9IHRo
aXNPYmotPmdldERpcmVjdE9mZnNldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKICAg
ICAgICAgQVNTRVJUKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Mb29rdXAuaAppbmRleCBiZGU4M2Q0YTZmYzM1NTc3ODUwZTMxZTg4YmMz
OWZkMDVmN2JjZTUyLi5kYmEzODllOWUyNDNkZDBlY2IyYmE5OGYzOTRkNDA3OWY5ZGVhOTM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaApAQCAtNDMsNiArNDMsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAvLyBpZS4gdHlwZWRlZiBKU1ZhbHVlICgqR2V0RnVuY3Rpb24p
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBiYXNlT2JqZWN0KQogICAgIHR5cGVkZWYgUHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmMgR2V0RnVuY3Rpb247CiAgICAgdHlwZWRlZiBQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYyBQdXRGdW5jdGlvbjsKKyAgICB0eXBlZGVmIEZ1bmN0aW9uRXhlY3V0
YWJsZSogKCpCdWlsdGluR2VuZXJhdG9yKShWTSYpOwogCiAgICAgY2xhc3MgSGFzaEVudHJ5IHsK
ICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC02OCwxMSArNjksMTIgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbV9pbnRyaW5zaWM7CiAgICAgICAgIH0K
IAorICAgICAgICBCdWlsdGluR2VuZXJhdG9yIGJ1aWx0aW5HZW5lcmF0b3IoKSBjb25zdCB7IEFT
U0VSVChtX2F0dHJpYnV0ZXMgJiBCdWlsdGluKTsgcmV0dXJuIG1fdS5idWlsdGluR2VuZXJhdG9y
LmdlbmVyYXRvclZhbHVlOyB9CiAgICAgICAgIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uKCkgY29u
c3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pOyByZXR1cm4gbV91LmZ1bmN0aW9u
LmZ1bmN0aW9uVmFsdWU7IH0KICAgICAgICAgdW5zaWduZWQgY2hhciBmdW5jdGlvbkxlbmd0aCgp
IGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKTsgcmV0dXJuIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXI+KG1fdS5mdW5jdGlvbi5sZW5ndGgpOyB9CiAKLSAgICAgICAgR2V0
RnVuY3Rpb24gcHJvcGVydHlHZXR0ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAm
IEZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVydHkuZ2V0OyB9Ci0gICAgICAgIFB1dEZ1bmN0
aW9uIHByb3BlcnR5UHV0dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBGdW5j
dGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5LnB1dDsgfQorICAgICAgICBHZXRGdW5jdGlvbiBw
cm9wZXJ0eUdldHRlcigpIGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1dGVzICYgQnVpbHRpbk9y
RnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0eS5nZXQ7IH0KKyAgICAgICAgUHV0RnVuY3Rp
b24gcHJvcGVydHlQdXR0ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEJ1aWx0
aW5PckZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVydHkucHV0OyB9CiAKICAgICAgICAgaW50
cHRyX3QgbGV4ZXJWYWx1ZSgpIGNvbnN0IHsgQVNTRVJUKCFtX2F0dHJpYnV0ZXMpOyByZXR1cm4g
bV91LmxleGVyLnZhbHVlOyB9CiAKQEAgLTk0LDYgKzk2LDEwIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgICAgIGludHB0cl90IGxlbmd0aDsgLy8gbnVtYmVyIG9mIGFyZ3VtZW50cyBm
b3IgZnVuY3Rpb24KICAgICAgICAgICAgIH0gZnVuY3Rpb247CiAgICAgICAgICAgICBzdHJ1Y3Qg
eworICAgICAgICAgICAgICAgIEJ1aWx0aW5HZW5lcmF0b3IgZ2VuZXJhdG9yVmFsdWU7CisgICAg
ICAgICAgICAgICAgaW50cHRyX3QgdW51c2VkOworICAgICAgICAgICAgfSBidWlsdGluR2VuZXJh
dG9yOworICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICBHZXRGdW5jdGlvbiBn
ZXQ7CiAgICAgICAgICAgICAgICAgUHV0RnVuY3Rpb24gcHV0OwogICAgICAgICAgICAgfSBwcm9w
ZXJ0eTsKQEAgLTIwOSw3ICsyMTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgog
ICAgICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IEhhc2hFbnRyeSogZW50cnkoUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgU3RyaW5nSW1wbCog
aW1wbCA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CisgICAgICAgICAgICBTdHJpbmdJbXBs
KiBpbXBsID0gcHJvcGVydHlOYW1lLnVpZCgpOwogICAgICAgICAgICAgaWYgKCFpbXBsKQogICAg
ICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAKQEAgLTI0OSw3ICsyNTUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgaWYgKCFlbnRyeSkgLy8gbm90IGZvdW5kLCBmb3J3YXJkIHRv
IHBhcmVudAogICAgICAgICAgICAgcmV0dXJuIFBhcmVudEltcDo6Z2V0T3duUHJvcGVydHlTbG90
KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKLSAgICAgICAgaWYgKGVudHJ5
LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikKKyAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVz
KCkgJiBCdWlsdGluT3JGdW5jdGlvbikKICAgICAgICAgICAgIHJldHVybiBzZXRVcFN0YXRpY0Z1
bmN0aW9uU2xvdChleGVjLCBlbnRyeSwgdGhpc09iaiwgcHJvcGVydHlOYW1lLCBzbG90KTsKIAog
ICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqLCBlbnRyeS0+YXR0cmlidXRl
cygpLCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSk7CkBAIC0yODYsNyArMjkyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIGlmICghZW50cnkpIC8vIG5vdCBmb3VuZCwgZm9yd2FyZCB0byBw
YXJlbnQKICAgICAgICAgICAgIHJldHVybiBQYXJlbnRJbXA6OmdldE93blByb3BlcnR5U2xvdCh0
aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCi0gICAgICAgIEFTU0VSVCghKGVu
dHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikpOworICAgICAgICBBU1NFUlQoIShlbnRyeS0+
YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pKTsKIAogICAgICAgICBzbG90LnNldENh
Y2hlYWJsZUN1c3RvbSh0aGlzT2JqLCBlbnRyeS0+YXR0cmlidXRlcygpLCBlbnRyeS0+cHJvcGVy
dHlHZXR0ZXIoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjk1LDcgKzMwMSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIGlubGluZSB2b2lkIHB1dEVudHJ5KEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIGJhc2UsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKICAgICB7CiAg
ICAgICAgIC8vIElmIHRoaXMgaXMgYSBmdW5jdGlvbiBwdXQgaXQgYXMgYW4gb3ZlcnJpZGUgcHJv
cGVydHkuCi0gICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pIHsKKyAg
ICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikgewogICAg
ICAgICAgICAgaWYgKEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVj
dCo+KHNsb3QudGhpc1ZhbHVlKCkpKQogICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERp
cmVjdChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKICAgICAgICAgfSBlbHNlIGlm
ICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBSZWFkT25seSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5k
ZXggZDVlNzI4YzJjZDEwMjBhNDdlNGFkY2Q2NDljZDFmZmZhNWNkNmE4My4uZGNhMmZkOGQxZjZh
YzIzYjhmZjgxN2NiYjE4ZmFhZTdiY2Q1OTcwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTM4LDYg
KzM4LDIwIEBAIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3Io
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAordm9pZCBOYXRpdmVFcnJvckNv
bnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUp
Cit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIG5hbWUpOworICAgIEFTU0VSVChpbmhl
cml0cyhpbmZvKCkpKTsKKyAgICAKKyAgICBOYXRpdmVFcnJvclByb3RvdHlwZSogcHJvdG90eXBl
ID0gTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGVTdHJ1Y3R1cmUsIG5hbWUsIHRoaXMpOworICAgIAorICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwg
RG9udEVudW0pOyAvLyBFQ01BIDE1LjExLjcuNQorICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBSZWFkT25seSB8IERv
bnRFbnVtKTsKKyAgICBtX2Vycm9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgRXJyb3JJbnN0YW5j
ZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSkpOworICAgIEFT
U0VSVChtX2Vycm9yU3RydWN0dXJlKTsKKyAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZS0+aXNP
YmplY3QoKSk7Cit9CisKIHZvaWQgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIE5hdGl2ZUVycm9y
Q29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcio+
KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvci5oCmluZGV4IDc0MGQzZjkzMzI5MmZkMmFjY2I0Yjk5MDM0NDMxMmI5
MzE5YWUxMTAuLjQzOGEzYWZiOWJiMGY2NDEyYzk3OTMyMjMwYzg4NzEwOTYxZjU0NjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0
b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0
cnVjdG9yLmgKQEAgLTUxLDE5ICs1MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdHJ1
Y3R1cmUqIGVycm9yU3RydWN0dXJlKCkgeyByZXR1cm4gbV9lcnJvclN0cnVjdHVyZS5nZXQoKTsg
fQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1
cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkKLSAgICAgICAgewotICAgICAgICAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0sIG5hbWUpOwotICAgICAgICAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8o
KSkpOwotCi0gICAgICAgICAgICBOYXRpdmVFcnJvclByb3RvdHlwZSogcHJvdG90eXBlID0gTmF0
aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVTdHJ1
Y3R1cmUsIG5hbWUsIHRoaXMpOwotCi0gICAgICAgICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERv
bnRFbnVtKTsgLy8gRUNNQSAxNS4xMS43LjUKLSAgICAgICAgICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBSZWFkT25s
eSB8IERvbnRFbnVtKTsKLSAgICAgICAgICAgIG1fZXJyb3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlz
LCBFcnJvckluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlKSk7Ci0gICAgICAgICAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZSk7Ci0gICAgICAgICAg
ICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZS0+aXNPYmplY3QoKSk7Ci0gICAgICAgIH0KKyAgICAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBw
cm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCmluZGV4IGQ5MzhmYTMxNjQ1
YWYyNmI3NTg1MTRkYjZiMjQ3OGYxODNlOWVlZTEuLmNmZTljNGQzMmJhNzY4Yzc0ZTRmZmJiMTkx
MzUyNzlkZWJmMTE3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5U2xvdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5U2xvdC5oCkBAIC00Miw2ICs0Miw4IEBAIGVudW0gQXR0cmlidXRlIHsKICAgICBGdW5jdGlv
biAgICAgPSAxIDw8IDQsICAvLyBwcm9wZXJ0eSBpcyBhIGZ1bmN0aW9uIC0gb25seSB1c2VkIGJ5
IHN0YXRpYyBoYXNodGFibGVzCiAgICAgQWNjZXNzb3IgICAgID0gMSA8PCA1LCAgLy8gcHJvcGVy
dHkgaXMgYSBnZXR0ZXIvc2V0dGVyCiAgICAgQ3VzdG9tQWNjZXNzb3IgPSAxIDw8IDYsCisgICAg
QnVpbHRpbiAgICAgICAgID0gMSA8PCA3LCAvLyBwcm9wZXJ0eSBpcyBhIGJ1aWx0aW4gZnVuY3Rp
b24gLSBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKKyAgICBCdWlsdGluT3JGdW5jdGlv
biA9IEJ1aWx0aW4gfCBGdW5jdGlvbiwgLy8gaGVscGVyIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFz
aHRhYmxlcwogfTsKIAogY2xhc3MgUHJvcGVydHlTbG90IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAppbmRleCBiYzUxNmIwNmQ2
NjUxZjBlNjgyYTIwMTdiZGY4YjAzYmFiZWQ2ZWEyLi4yYzI0MzRiODdkMDRmNzQ5Y2IxMmU2MDJh
YjU0Nzg0OTQ2YTkxZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiUmVn
RXhwQ29uc3RydWN0b3IuaCIKIAogI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNTdHJp
bmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlJlZ0V4cE1h
dGNoZXNBcnJheS5oIgogI2luY2x1ZGUgIlJlZ0V4cFByb3RvdHlwZS5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKaW5kZXggODlkN2Fj
MWI4Y2JmMWRiMGUxMjZmMWZjNzk2ZGZkNWZjODRiMmU1OS4uOWRkYTBiYThkZTE0MTJlYWY0ZDI5
MWRjZjBjNmIzOTY1N2ZiNjc3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAiQXJy
YXlQcm90b3R5cGUuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIK
LSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
ICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRl
ICJKU1N0cmluZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2V0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29u
c3RydWN0b3IuY3BwCmluZGV4IGIyMDM4ODhkM2MxNmNkYTNjMDAzNTA2MjA4YWUwODY5NWRjNWRh
YWEuLmQwMjY2YTU5ZWYzZjU1YWEzNjk0ZjVmNzQxOGNmNzhlMGFlMGQ4YjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAKQEAgLTMxLDYg
KzMxLDcgQEAKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxP
YmplY3QuaCIKICNpbmNsdWRlICJKU1NldC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5o
IgogI2luY2x1ZGUgIk1hcERhdGEuaCIKICNpbmNsdWRlICJTZXRQcm90b3R5cGUuaCIKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKaW5kZXggNDQw
YTYwOTQyMTkzMzgwMzFlNTkyN2FmNDZiMjg5ZGJjZmI1YTcyOC4uODBlN2VhYThjNDkxY2I2ZDU0
YTgzMjRjZTY0N2E2Y2RiN2U4ODc4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdPYmplY3QuY3BwCkBAIC0yMiw3ICsyMiw5IEBACiAjaW5jbHVkZSAiU3RyaW5n
T2JqZWN0LmgiCiAKICNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lu
bGluZXMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1l
QXJyYXkuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAK
aW5kZXggMDQyOTFmN2U4ZGQyNGU4YWIzM2Q3NWFmMWRhNDU2OGYyYmM5OWU2OC4uMWVjYWI4NWMw
YmRiMjg2OTg5NDU3N2E3NDEyNTRlMzY0NDE0OWQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0yNywxMiArMjcsMTggQEAKICNpbmNsdWRlICJT
dHJ1Y3R1cmUuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkNvbW1vbklk
ZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRHVtcENvbnRleHQuaCIKKyNpbmNsdWRlICJKU0NlbGxJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTG9v
a3VwLmgiCisjaW5jbHVkZSAiUHJvcGVydHlNYXBIYXNoVGFibGUuaCIKICNpbmNsdWRlICJQcm9w
ZXJ0eU5hbWVBcnJheS5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZUNoYWluLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIlN0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9Db21tYVBy
aW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNTJjY2Y0MjNhMTA0M2UxMDc5ZjJkOGIxODk0
MjE5ODkwZTcxZjJiYy4uMDIwNjk1ZmFjODNlZDRlNTE4NWI3MGU2OTY5OTYzYTJkZTlhMzY3MSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkFyZ0xpc3QuaCIKICNpbmNsdWRlICJBcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5o
IgogI2luY2x1ZGUgIkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5oIgorI2luY2x1ZGUg
IkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZUlubGluZXMuaCIKICNp
bmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2RlQ2FjaGUuaCIKQEAgLTU1LDcgKzU2
LDkgQEAKICNpbmNsdWRlICJKU0FQSVZhbHVlV3JhcHBlci5oIgogI2luY2x1ZGUgIkpTQWN0aXZh
dGlvbi5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKLSNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisj
aW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgi
CisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3Bl
LmgiCkBAIC02OCwxMyArNzEsMTYgQEAKICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJN
YXBEYXRhLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKKyNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNs
dWRlICJQYXJzZXJBcmVuYS5oIgorI2luY2x1ZGUgIlByb3BlcnR5TWFwSGFzaFRhYmxlLmgiCiAj
aW5jbHVkZSAiUmVnRXhwQ2FjaGUuaCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNs
dWRlICJTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNvdXJjZVByb3Zp
ZGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTdHJpY3RFdmFsQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUg
IlN0cm9uZ0lubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKICNpbmNsdWRlICJXZWFrTWFwRGF0YS5oIgogI2luY2x1
ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KQEAgLTIyNiw2ICsyMzIsNyBAQCBWTTo6Vk0oVk1UeXBlIHZt
VHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2luRGVmaW5lT3duUHJvcGVydHkoZmFs
c2UpCiAgICAgLCBtX2NvZGVDYWNoZShDb2RlQ2FjaGU6OmNyZWF0ZSgpKQogICAgICwgbV9lbmFi
bGVkUHJvZmlsZXIobnVsbHB0cikKKyAgICAsIG1fYnVpbHRpbkV4ZWN1dGFibGVzKEJ1aWx0aW5F
eGVjdXRhYmxlczo6Y3JlYXRlKCp0aGlzKSkKIHsKICAgICBpbnRlcnByZXRlciA9IG5ldyBJbnRl
cnByZXRlcigqdGhpcyk7CiAgICAgU3RhY2tCb3VuZHMgc3RhY2sgPSB3dGZUaHJlYWREYXRhKCku
c3RhY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDVhODQxMDVlYWZiN2Fi
YmE1ZmE0MzFlZWVkZDU1ZDdhODlmNTVjZTIuLjY5NThhYzM5M2IxYWVmYzBiZWZiZjZlNGViOGI2
ODI1Y2Y3YzlhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNDQsNiArNDQs
NyBAQAogI2luY2x1ZGUgIlByaXZhdGVOYW1lLmgiCiAjaW5jbHVkZSAiUHJvdG90eXBlTWFwLmgi
CiAjaW5jbHVkZSAiU21hbGxTdHJpbmdzLmgiCisjaW5jbHVkZSAiU291cmNlQ29kZS5oIgogI2lu
Y2x1ZGUgIlN0cm9uZy5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgogI2luY2x1ZGUg
IlR5cGVkQXJyYXlDb250cm9sbGVyLmgiCkBAIC02OSw2ICs3MCw3IEBACiBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzOworICAgIGNsYXNzIEJ1
aWx0aW5FeGVjdXRhYmxlczsKICAgICBjbGFzcyBDb2RlQmxvY2s7CiAgICAgY2xhc3MgQ29kZUNh
Y2hlOwogICAgIGNsYXNzIENvbW1vbklkZW50aWZpZXJzOwpAQCAtNDk3LDYgKzQ5OSw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHJlZ2lzdGVyV2F0Y2hwb2ludEZvckltcHVyZVBy
b3BlcnR5KGNvbnN0IElkZW50aWZpZXImLCBXYXRjaHBvaW50Kik7CiAgICAgICAgIC8vIEZJWE1F
OiBVc2UgQXRvbWljU3RyaW5nIG9uY2UgaXQgZ290IG1lcmdlZCB3aXRoIElkZW50aWZpZXIuCiAg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkSW1wdXJlUHJvcGVydHkoY29uc3QgU3Ry
aW5nJik7CisgICAgICAgIAorICAgICAgICBCdWlsdGluRXhlY3V0YWJsZXMqIGJ1aWx0aW5FeGVj
dXRhYmxlcygpIHsgcmV0dXJuIG1fYnVpbHRpbkV4ZWN1dGFibGVzLmdldCgpOyB9CiAKICAgICBw
cml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpAQCAt
NTM3LDEwICs1NDEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNWYWx1ZSBtX2V4Y2Vw
dGlvbjsKICAgICAgICAgYm9vbCBtX2luRGVmaW5lT3duUHJvcGVydHk7CiAgICAgICAgIE93blB0
cjxDb2RlQ2FjaGU+IG1fY29kZUNhY2hlOwotICAgICAgICBSZWZDb3VudGVkQXJyYXk8U3RhY2tG
cmFtZT4gbV9leGNlcHRpb25TdGFjazsKLQogICAgICAgICBMZWdhY3lQcm9maWxlciogbV9lbmFi
bGVkUHJvZmlsZXI7Ci0KKyAgICAgICAgT3duUHRyPEJ1aWx0aW5FeGVjdXRhYmxlcz4gbV9idWls
dGluRXhlY3V0YWJsZXM7CisgICAgICAgIFJlZkNvdW50ZWRBcnJheTxTdGFja0ZyYW1lPiBtX2V4
Y2VwdGlvblN0YWNrOwogICAgICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdhdGNocG9pbnRT
ZXQ+PiBtX2ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludFNldHM7CiAgICAgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCBmODAwMDVmMjc5MTYzYmEwOGUyYTUzODVlZTE0M2VhNTQwMjQ2MWU3Li4z
ZjEyZTYxYTk3MDBkNzBmOTExNWZiOWZlOWM2YzE0NzllYTUxYThkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dApAQCAtMTAxLDYgKzEwMSw3IEBAIHNldChXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMK
ICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L0FQSSIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L2Fzc2VtYmxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J5dGVjb2RlIgorICAg
ICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMiCiAgICAgIiR7SkFWQVNDUklQVENPUkVf
RElSfS9ieXRlY29tcGlsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9kZmciCiAgICAg
IiR7SkFWQVNDUklQVENPUkVfRElSfS9kaXNhc3NlbWJsZXIiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oIGIvU291
cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43MGZjYzM4NGU4ZWRmYzM0YjE0MDgzYjg2NWQzNzM4MjBmNDE2NWM0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9K
U1N0cmluZ0lubGluZXMuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSlNT
dHJpbmdJbmxpbmVzX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfSlNTdHJpbmdJbmxpbmVzX2gKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ0lubGluZXMuaD4KKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxh
Y2VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudC5jcHAKaW5kZXggMmVkZGNkYmI5ZjAwNmNhNzYyNjY1MGI0MjAyNzg2MjZi
OTI2MTQxNy4uM2M0ZTBkN2JiYjMxY2FiMTJiNWU2Yzk3NWM3NGQzZjQ4NGU5Y2IxNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxh
Y2VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnQuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcAppbmRl
eCA1NjQ5Yzg1Y2EwOTU4Nzc0OGEzZGEwNmNkZGQwY2E5OTllNTBiOGU3Li4zZjRkOGVmYWViNTdm
MzMwMDNlNzNhN2U3ODQyZTQyYzczY2U2NDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0lEQkFueUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNJREJBbnlDdXN0b20uY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiSlNJ
REJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIkpTSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRl
ICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nSW5s
aW5lcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwCmluZGV4IDllYWU3NTY5YzcwNjAz
YTRmZWQwYWYxNGM0Zjg3MThjZGU2NGE2ZTEuLmY0OWRmZTkwYjRlODJkMzllZGNiZjliYTI5ZjJh
ZTc5OWMwZGRmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURC
RGF0YWJhc2VDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURC
RGF0YWJhc2VDdXN0b20uY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiSURCT2JqZWN0
U3RvcmUuaCIKICNpbmNsdWRlICJKU0lEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSA8cnVudGlt
ZS9FcnJvci5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmcuaD4KKyNpbmNsdWRlIDxydW50
aW1lL0pTU3RyaW5nSW5saW5lcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3Bw
CmluZGV4IDc0ZmQzNTRiMjg2MDdjZjc4MjJmODA1MzQ3OTcwZjVkN2FjOGM4MzIuLjU0MzRiM2I3
ZDZjNTZlY2IwYTAzYTI3OTRjNjczNmE5YWRmYjcwZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwCkBAIC0zNiw3ICsz
Niw3IEBACiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJKU0lEQkluZGV4
LmgiCiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJp
bmcuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oPgogCiB1c2luZyBuYW1l
c3BhY2UgSlNDOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05v
ZGVGaWx0ZXJDb25kaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2Rl
RmlsdGVyQ29uZGl0aW9uLmNwcAppbmRleCBkMWI0NzIxMzUxZWIxYjJiZjhjZTBjZDQ3M2ZlZTE0
NDkxNGM1M2FiLi5mMWRhYThhMTA0NmIzM2ZhM2QzNWE2NmM1NTllZTBmYWYyYWRlNjQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlv
bi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJOb2RlRmlsdGVyLmgiCiAjaW5jbHVk
ZSA8cnVudGltZS9FcnJvci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CisjaW5jbHVk
ZSA8cnVudGltZS9KU1N0cmluZ0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9D
TWFrZUxpc3RzLnR4dAppbmRleCBmYjRhZDk1MTgwZDhlNTkzNzgyZjhiZWE0YTg5ZmJlNDMzOWY5
ZTU2Li4xYjg0ZjJiNjhkYjMwM2NkMThiMzc4MDY0NjAyNTZkMTdjYTcxMWU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VM
aXN0cy50eHQKQEAgLTY2LDYgKzY2LDcgQEAgc2V0KFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVT
CiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9BUEkiCiAgICAgIiR7SkFWQVNDUklQVENPUkVf
RElSfS9hc3NlbWJsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9ieXRlY29kZSIKKyAg
ICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zIgogICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vYnl0ZWNvbXBpbGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGlzYXNzZW1i
bGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGZnIgpAQCAtNzgsNiArNzksNyBAQCBz
ZXQoV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L3Byb2ZpbGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcnVudGltZSIKICAgICAiJHtX
VEZfRElSfSIKKyAgICAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIKICAg
ICAiJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9IgogICAgICIke0RFUklWRURfU09VUkNF
U19ESVJ9L0ZvcndhcmRpbmdIZWFkZXJzIgogICAgICIke0NNQUtFX0JJTkFSWV9ESVJ9IgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9D
TWFrZUxpc3RzLnR4dAppbmRleCA2NzE4MWM4NGZmYjE2MTUzZjZjM2U0ODk4NWYwOTNlZWI0ODVh
ZThjLi5kZjhmMTJlMzJlMjhjYTRjMzdkNTM2ODFjMzFiNzAwNWRiZWUzNTFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFr
ZUxpc3RzLnR4dApAQCAtMTIxLDYgKzEyMSw3IEBAIHNldChXZWJLaXQyX0lOQ0xVREVfRElSRUNU
T1JJRVMKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L0FQSSIKICAgICAiJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2Fzc2VtYmxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J5dGVjb2Rl
IgorICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMiCiAgICAgIiR7SkFWQVNDUklQ
VENPUkVfRElSfS9ieXRlY29tcGlsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9jb2xs
ZWN0b3IvaGFuZGxlcyIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2RmZyIKQEAgLTEzMyw2
ICsxMzQsNyBAQCBzZXQoV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7SkFWQVND
UklQVENPUkVfRElSfS9ydW50aW1lIgogICAgICIke1dURl9ESVJ9IgogICAgICIke0RFUklWRURf
U09VUkNFU19ESVJ9IgorICAgICIke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9
IgogICAgICIke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0iCiAgICAgIiR7REVSSVZFRF9T
T1VSQ0VTX1dFQktJVDJfRElSfSIKICAgICAiJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMl9ESVJ9
L2luY2x1ZGUiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggOWQwNjZmNWUxYTAwNGZiZDRkNTc0MGU0OTdjODI4YzliZThmOTBk
YS4uOTA5MmUxNzA5ZDZmZjI2ZGFlNmYyOTIzYzc1MWNiNjhhZTMzNjA1ZSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIyIEBACisyMDE0LTAxLTI5ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBpbXBsZW1lbnQgSlMgYnVpbHRpbnMgaW4gSlMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzg4Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQg
dGhlIHRlc3QgcmVzdWx0cyBmb3IgbmV3IGVycm9yIG1lc3NhZ2VzIChub3cgdGhhdCB0aGV5J3Jl
CisgICAgICAgIGFjdHVhbGx5IGhlbHBmdWwpLCBhbmQgYWRkZWQgYSBqcy1yZWdyZXNzIHRlc3Qg
dG8gdHJhY2sgcGVyZm9ybWFuY2UuCisKKyAgICAgICAgKiBqcy9hcnJheS1ldmVyeS1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICoganMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBqcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2
ZXJ5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5
LXByb3RvdHlwZS1ldmVyeS5qczogQWRkZWQuCisgICAgICAgICh0ZXN0MSk6CisgICAgICAgICh0
ZXN0Mik6CisgICAgICAgICh0ZXN0Myk6CisKIDIwMTQtMDEtMzAgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1v
cmlnaW4tcGx1Z2luLXByaXZhdGUtYnJvd3NpbmctdG9nZ2xlZC5odG1sIGlzIGZsYWt5IG9uIFdL
MgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0CmluZGV4IDU0MWI4YzM1OGYw
NjhhMGNlYTg4MmMxMDUxNzUzMjUxMTRjZDMzZjcuLmNjYTM2M2RjZTU4ZmJhOTVhNThjZTQ2ZmNi
NDhjMzhiZjU4YWRmNTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5LWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQK
QEAgLTMwLDEyICszMCwxMiBAQCBQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoaXNCaWdF
bm91Z2hBbmRFeGNlcHRpb24pIHRocmV3IGV4Y2VwdGlvbiBleGNlcHRpbwogUEFTUyBbMTIsIDU0
LCAxOCwgMTMwLCA0NF0uZXZlcnkoaXNCaWdFbm91Z2hBbmRFeGNlcHRpb24pIHRocmV3IGV4Y2Vw
dGlvbiBleGNlcHRpb24gZnJvbSBmdW5jdGlvbi4KIAogNS4wIFdyb25nIFR5cGUgZm9yIENhbGxi
YWNrIFRlc3QKLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSg1KSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5
KCd3cm9uZycpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsx
MiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkobmV3IE9iamVjdCgpKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KG51bGwp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwg
MTMwLCA0NF0uZXZlcnkodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBl
IGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSg1
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJh
Y2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCd3
cm9uZycpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBj
YWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZl
cnkobmV3IE9iamVjdCgpKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5
cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEz
MCwgNDRdLmV2ZXJ5KG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3Rv
dHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwg
MTMwLCA0NF0uZXZlcnkodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJh
eS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIs
IDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXku
cHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KIAogNi4wIEVhcmx5
IEV4aXQgKCJTaG9ydCBDaXJjdWl0aW5nIikKIFBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVy
eShpc0JpZ0Vub3VnaFNob3J0Q2lyY3VpdCkgaXMgZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2pzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9qcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDJjMmE2OGNiMTA2ZGExMGYwODZiMjJjNWJmMmJmNWM4ZmU3OWUzM2UuLjVkOWVjYjc1YThk
YTc5YmE2NTYwNWU3ZWI5Y2Y4ZmMyNWZlMThhZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pz
L2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvanMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApAQCAt
MTUsNyArMTUsNyBAQCBQQVNTIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHVuZGVmaW5lZCwg
MCwgMSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZQogUEFTUyBBcnJheS5wcm90b3R5
cGUuc29ydC5jYWxsKHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZp
bmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5zb3J0LmNh
bGwodW5kZWZpbmVkKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwodW5kZWZp
bmVkLCAwLCAxKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFu
IG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKHVuZGVmaW5l
ZCwgMCwgMSknKS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuY2FsbCh1bmRlZmluZWQs
IHt9KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVj
dCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuY2FsbCh1bmRlZmluZWQsIHt9
KScpLgotUEFTUyBBcnJheS5wcm90b3R5cGUuZXZlcnkuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5n
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAo
ZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVkLCB0b1N0cmlu
ZyknKS4KK1BBU1MgQXJyYXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVkLCB0b1N0cmlu
ZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVp
cmVzIHRoYXQgfHRoaXN8IG5vdCBiZSB1bmRlZmluZWQuCiBQQVNTIEFycmF5LnByb3RvdHlwZS5m
b3JFYWNoLmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlw
ZS5mb3JFYWNoLmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZyknKS4KIFBBU1MgQXJyYXkucHJvdG90
eXBlLnNvbWUuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90
eXBlLnNvbWUuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKScpLgogUEFTUyBBcnJheS5wcm90b3R5
cGUuaW5kZXhPZi5jYWxsKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
dW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5p
bmRleE9mLmNhbGwodW5kZWZpbmVkLCAwKScpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjEyOTBjMGVlZmY4ZGU0MjE4MzNkOTJkMjdlOTUyNDE5MTc2MDRiOTYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeQor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3du
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRt
bCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU1Y2MxNzFjNDg3NWEzNTg1YmYxNGU1NDE1ZjVjZDBlNTgxZDU0NAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5
Lmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3Jp
cHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5LXBy
b3RvdHlwZS1ldmVyeS5qcyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Fy
cmF5LXByb3RvdHlwZS1ldmVyeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTRhYTE2MWMwY2U5OGIyYWIxOGEz
YTFhMWYwZGZhYWM5ZDdkMmUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzCkBAIC0wLDAgKzEsMjkg
QEAKK3ZhciByZXN1bHQgPSAwOworZnVuY3Rpb24gdGVzdDEoYSkgeworICAgIHJlc3VsdCA8PCAx
OworICAgIHJlc3VsdCsrOworICAgIHJldHVybiB0cnVlOworfQorZnVuY3Rpb24gdGVzdDIoYSxi
KSB7CisgICAgcmVzdWx0IF49IDM7CisgICAgcmVzdWx0ICo9IDM7CisgICAgcmV0dXJuIHRydWU7
Cit9CitmdW5jdGlvbiB0ZXN0MyhhLGIsYykgeworICAgIHJlc3VsdCBePSByZXN1bHQgPj4gMTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwordmFyIHJlc3VsdCA9IDA7Cit2YXIgYXJyYXkgPSBbXQor
Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkKKyAgICBhcnJheVtpXSA9IDE7CisKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgMTA7IGkrKykgeworICAgIGFycmF5LmV2ZXJ5KHRlc3QxKTsKKyAg
ICBhcnJheS5ldmVyeSh0ZXN0Mik7CisgICAgYXJyYXkuZXZlcnkodGVzdDMpOworfQorCitpZiAo
cmVzdWx0ICE9IDE0Mjg4MTA0OTYpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsg
cmVzdWx0OwpkaWZmIC0tZ2l0IGEvR05VbWFrZWZpbGUuYW0gYi9HTlVtYWtlZmlsZS5hbQppbmRl
eCA3M2ZjNDkyOGM0ZGQ0OWI1NDk4NjliNTA2NzhjNmJkZTc0ZjQ0NzYwLi4wOGM5MTE1NDI2MDUw
MGRlM2ZmMDRiMDIwY2UwZDYwZjk4ZThjZmU4IDEwMDY0NAotLS0gYS9HTlVtYWtlZmlsZS5hbQor
KysgYi9HTlVtYWtlZmlsZS5hbQpAQCAtNjgsNiArNjgsNyBAQCBBTExfTU9GSUxFUyA6PQogZG9t
X2JpbmRpbmdfaWRscyA6PQogd3RmX3NvdXJjZXMgOj0KIGphdmFzY3JpcHRjb3JlX2hfYXBpIDo9
CitqYXZhc2NyaXB0Y29yZV9idWlsdGluc19qc19ub3NvdXJjZXMgOj0KIGphdmFzY3JpcHRjb3Jl
X2NwcGZsYWdzOj0KIGphdmFzY3JpcHRjb3JlX2NmbGFncyA6PQogamF2YXNjcmlwdGNvcmVfc291
cmNlcyA6PQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222833</attachid>
            <date>2014-01-31 12:05:15 -0800</date>
            <delta_ts>2014-01-31 12:07:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140131120507.patch</filename>
            <type>text/plain</type>
            <size>208380</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NjgxMzcxYWU2ZDBjYWZlNDJmNWNmN2E1NWI3MjRjMTc5ODExYjBhLi44OWQ0ZmRmOGYwMzA2Y2M5
ZjFiNmM5NDVlZWY3ZDRlMTczOGFhOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
VGhlIHJlc3VsdCBvZiB0aGlzIHJlZmFjdG9yaW5nCisgICAgICAgIGlzIHRoYXQgQ29tbW9uSWRl
bnRpZmllcnMsIGFuZCBhIGZldyBvdGhlciBtaXNjZWxsYW5lb3VzIGhlYWRlcnMgbm93CisgICAg
ICAgIG5lZWQgdG8gYmUgaW5jbHVkZWQgZGlyZWN0bHkgYXMgdGhleSB3ZXJlIGZvcm1lcmx5IGNh
cHR1cmVkIHRocm91Z2ggb3RoZXIKKyAgICAgICAgcGF0aHMuCisKKyAgICAgICAgSW4gYWRkaXRp
b24gdGhpcyBhZGRzIGEgZmxhZyB0byB0aGUgTG9va3VwIHRhYmxlJ3MgaGFzaGVudHJ5IHRvIGlu
ZGljYXRlCisgICAgICAgIHRoYXQgYSBzdGF0aWMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgYmFja2Vk
IGJ5IEpTLiBUaGVyZSBpcyB0aGVuIGEgbG90IG9mCisgICAgICAgIGxvZ2ljIHRvIHRocmVhZCB0
aGUgc3BlY2lhbCBuYXR1cmUgb2YgdGhlIGZ1bmN0b24gdG8gd2hlcmUgaXQgbWF0dGVycy4KKyAg
ICAgICAgVGhpcyBhbGxvd3MgdG9TdHJpbmcoKSwgLmNhbGxlciwgZXRjIHRvIG1pbWljIHRoZSBi
ZWhhdmlvdXIgb2YgYSBob3N0CisgICAgICAgIGZ1bmN0aW9uLgorCisgICAgICAgIE5vdGVzIG9u
IHdyaXRpbmcgYnVpbHRpbnM6CisgICAgICAgICAtIEVhY2ggZnVuY3Rpb24gaXMgY29tcGlsZWQg
aW5kZXBlbmRlbnRseSBvZiB0aGUgb3RoZXJzLCBhbmQgdGhvc2UKKyAgICAgICAgICAgaW1wbGVt
ZW50YXRpb25zIGNhbm5vdCBjdXJyZW50bHkgY2FwdHVyZSBhbGwgZ2xvYmFsIHByb3BlcnRpZXMg
KGFzCisgICAgICAgICAgIHRoYXQgY291bGQgYmUgcG90ZW50aWFsbHkgdW5zYWZlKS4gSWYgYSBm
dW5jdGlvbiBkb2VzIGNhcHR1cmUgYQorICAgICAgICAgICBnbG9iYWwgd2Ugd2lsbCBkZWxpYmVy
YXRlbHkgY3Jhc2guCisgICAgICAgICAtIEZvciB0aG9zZSAiZ2xvYmFsIiBwcm9wZXJ0aWVzIHRo
YXQgd2UgZG8gd2FudCBhY2Nlc3MgdG8sIHdlIHVzZQorICAgICAgICAgICB0aGUgQCBwcmVmaXgs
IGUuZy4gT2JqZWN0KHRoaXMpIGJlY29tZXMgQE9iamVjdCh0aGlzKS4gVGhlIEAgaWRlbnRpZmll
cnMKKyAgICAgICAgICAgYXJlIHByaXZhdGUgbmFtZXMsIGFuZCBiZWhhdmUganVzdCBsaWtlIHJl
Z3VsYXIgcHJvcGVydGllcywgb25seQorICAgICAgICAgICB3aXRob3V0IHRoZSByaXNrIG9mIGFk
dWx0ZXJhdGlvbi4gQWdhaW4sIGluIHRoZSBAT2JqZWN0IGNhc2UsIHdlCisgICAgICAgICAgIGV4
cGxpY2l0bHkgZHVwbGljYXRlIHRoZSBPYmplY3RDb25zdHJ1Y3RvciByZWZlcmVuY2Ugb24gdGhl
IEdsb2JhbE9iamVjdAorICAgICAgICAgICBzbyB0aGF0IHdlIGhhdmUgZ3VhcmFudGVlZCBhY2Nl
c3MgdG8gdGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhlCisgICAgICAgICAgIGNvbnN0cnVjdG9y
LgorICAgICAgICAgLSBjYWxsLCBhcHBseSwgZXZhbCwgYW5kIEZ1bmN0aW9uIGFyZSBhbGwgcmVq
ZWN0ZWQgaWRlbnRpZmllcnMsIGFnYWluCisgICAgICAgICAgIHRvIHByZXZlbnQgYW55dGhpbmcg
ZnJvbSBhY2NpZGVudGFsbHkgdXNpbmcgYW4gYWR1bHRlcmF0ZWQgb2JqZWN0LgorICAgICAgICAg
ICBJbnN0ZWFkIEBjYWxsIGFuZCBAYXBwbHkgYXJlIGF2YWlsYWJsZSwgYW5kIGhhcHBpbHkgdGhl
eSBjb21wbGV0ZWx5CisgICAgICAgICAgIGRyb3AgdGhlIG5lcV9wdHIgaW5zdHJ1Y3Rpb24gYXMg
dGhleSdyZSBkZWZpbmVkIGFzIGFsd2F5cyBiZWluZyB0aGUKKyAgICAgICAgICAgb3JpZ2luYWwg
Y2FsbC9hcHBseSBmdW5jdGlvbnMuCisKKyAgICAgICAgVGhlc2UgcmVzdHJpY3Rpb25zIGFyZSBq
dXN0IGludGVuZGVkIHRvIG1ha2UgaXQgaGFyZGVyIHRvIGFjY2lkZW50YWxseQorICAgICAgICBt
YWtlIGNoYW5nZXMgdGhhdCBhcmUgaW5jb3JyZWN0IChmb3IgaW5zdGFuY2UgY2FsbGluZyB3aGF0
ZXZlciBoYXMgYmVlbgorICAgICAgICBhc3NpZ25lZCB0byBnbG9iYWwuT2JqZWN0LCBpbnN0ZWFk
IG9mIHRoZSBvcmlnaW5hbCBjb25zdHJ1Y3RvciBmdW5jdGlvbikuCisgICAgICAgIEhvd2V2ZXIs
IG1ha2luZyBhIG1pc3Rha2UgbGlrZSB0aGlzIHNob3VsZCByZXN1bHQgaW4gYSBwdXJlbHkgc2Vt
YW50aWMKKyAgICAgICAgZXJyb3IgYXMgZnVuZGFtZW50YWxseSB0aGVzZSBmdW5jdGlvbnMgYXJl
IHRyZWF0ZWQgYXMgdGhvdWdoIHRoZXkgd2VyZQorICAgICAgICByZWd1bGFyIEpTIGNvZGUgaW4g
dGhlIGhvc3QgZ2xvYmFsLCBhbmQgaGF2ZSBubyBtb3JlIHByaXZpbGVnZXMgdGhhbgorICAgICAg
ICBhbnkgb3RoZXIgSlMuCisKKyAgICAgICAgVGhlIGluaXRpYWwgcHJvb2Ygb2YgY29uY2VwdCBp
cyBBcnJheS5wcm90b3R5cGUuZXZlcnksIHRoaXMgc2hvd3MgYSA2NSUKKyAgICAgICAgcGVyZm9y
bWFuY2UgaW1wcm92ZW1lbnQsIGFuZCB0aGF0IGltcHJvdmVtZW50IGlzIHNpZ25pZmljYW50bHkg
aHVydCBieQorICAgICAgICBvdXIgcG9vciBvcHRpbWlzYXRpb24gb2Ygb3BfaW4uCisKKyAgICAg
ICAgQXMgdGhpcyBpcyBzdWNoIGEgbGltaXRlZCBmdW5jdGlvbiwgd2UgaGF2ZSBub3QgeWV0IGV4
cG9ydGVkIGFsbCBzeW1ib2xzCisgICAgICAgIHRoYXQgd2UgY291bGQgcG9zc2libHkgbmVlZCwg
YnV0IGFzIHdlIGltcGxlbWVudCBtb3JlLCB0aGUgbGlrZWxpaG9vZAorICAgICAgICBvZiBlbmNv
dW50ZXJpbmcgbWlzc2luZyBmZWF0dXJlcyB3aWxsIHJlZHVjZS4KKworICAgICAgICBUaGlzIGRp
ZCByZXF1aXJlIGJyZWFraW5nIG91dCBhIEpTU3RyaW5nSW5saW5lcyBoZWFkZXIsIGFuZCByZXF1
aXJlZAorICAgICAgICBmaXhpbmcgYSBmZXcgb2JqZWN0cyB0aGF0IHdlcmUgdHJ5aW5nIHRvIHVz
aW5nIFByb3BlcnR5TmFtZTo6cHVibGljTmFtZQorICAgICAgICByYXRoZXIgdGhhbiBQcm9wZXJ0
eU5hbWU6OnVpZC4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6
CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQpOgorICAg
ICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZSk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGljRnVuY3Rpb25HZXR0
ZXIpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGxiYWNrR2V0
dGVyKToKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy5tYWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
YnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzOgorICAgICAgICAoZXZlcnkpOgorICAgICAgICAq
IGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpC
dWlsdGluRXhlY3V0YWJsZXM6OkJ1aWx0aW5FeGVjdXRhYmxlcyk6CisgICAgICAgIChKU0M6OkJ1
aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ1
aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0
YWJsZXM6OmNyZWF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdX
YXRjaHBvaW50LmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAoSlND
OjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUp
OgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9y
KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToK
KyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpF
eGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OnRvU3RyaWN0bmVzcyk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjppc0J1aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChKU0M6OlVubGlua2Vk
Q29kZUJsb2NrOjppc0J1aWx0aW5GdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzQnVpbHRpbkZ1bmN0aW9u
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Om1ha2VGdW5jdGlvbik6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkNhbGxG
dW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpBcHBseUZ1
bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogY3JlYXRlX2hhc2hf
dGFibGU6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGdlbmVy
YXRlLWpzLWJ1aWx0aW5zOiBBZGRlZC4KKyAgICAgICAgKGdldENvcHlyaWdodCk6CisgICAgICAg
IChnZXRGdW5jdGlvbnMpOgorICAgICAgICAoZ2VuZXJhdGVDb2RlKToKKyAgICAgICAgKG1hbmds
ZU5hbWUpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKElkZW50aWZp
ZXIpOgorICAgICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAgICAgICAoU291cmNlQ29kZSk6Cisg
ICAgICAgIChVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChWTSk6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAqIGludGVycHJldGVy
L1Byb3RvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgICog
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAqIGpzYy5jcHA6CisgICAg
ICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAqIHBhcnNlci9BU1RCdWls
ZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKToK
KyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6TGV4
ZXIpOgorICAgICAgICAoSlNDOjppc1NhZmVJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4
ZXI8TENoYXI+OjpwYXJzZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpMZXhlcjxVQ2hhcj46
OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpsZXgpOgorICAgICAg
ICAqIHBhcnNlci9MZXhlci5oOgorICAgICAgICAoSlNDOjppc1NhZmVJZGVudGlmaWVyKToKKyAg
ICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIpOgorICAgICAgICAqIHBh
cnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpzZXRDbG9zZWRWYXJp
YWJsZXMpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpTY29wZU5v
ZGU6OmNhcHR1cmVkVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6U2NvcGVOb2RlOjpzZXRDbG9z
ZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQcm9ncmFtTm9kZTo6Y2xvc2VkVmFyaWFibGVz
KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OlBhcnNlcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUlubmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmRpZEZpbmlzaFBhcnNp
bmcpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cHJpbnRVbmV4cGVjdGVkVG9r
ZW5UZXh0KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
OjpnZXRVc2VkVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVz
Lmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlclRva2Vucy5oOgorICAgICAgICAqIHJ1bnRpbWUv
QXJnTGlzdC5jcHA6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvQXJndW1lbnRzLmg6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHNJdGVyYXRv
ckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0
RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Q29t
bW9uSWRlbnRpZmllcnMpOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Z2V0UHJp
dmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Z2V0UHVibGljTmFt
ZSk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQ
YXRoc0V4Y2VwdGlvbnMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5j
cHA6CisgICAgICAgIChKU0M6OmNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6
ZXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6ZXhlY3V0
YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1
bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6ZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9K
U0FjdGl2YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxl
R2V0KToKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dCk6CisgICAg
ICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyk6Cisg
ICAgICAgICogcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcDoKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlND
ZWxsSW5saW5lcy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAg
IChKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZSk6CisgICAgICAgIChKU0M6OkpTRnVu
Y3Rpb246OnNvdXJjZUNvZGUpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjppc0hvc3RPckJ1
aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzQnVpbHRpbkZ1bmN0
aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKToKKyAgICAgICAg
KEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVy
dHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmg6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
OjpyZXNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjpvYmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpzeW1ib2xUYWJsZUhhc1Byb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGVsZXRlKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5j
cHA6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAg
ICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90
KToKKyAgICAgICAgKEpTQzo6aW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKToKKyAgICAg
ICAgKEpTQzo6SlNWYWx1ZTo6dG9XVEZTdHJpbmdJbmxpbmUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNTeW1ib2xUYWJsZU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTU3ltYm9sVGFibGVPYmpl
Y3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgICAgIERvbid0IHJlcG9y
dCBwcml2YXRlIG5hbWVzLgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5o
OgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZUdldCk6CisgICAgICAgIChKU0M6OnN5bWJvbFRh
YmxlUHV0KToKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyk6Cisg
ICAgICAgICogcnVudGltZS9Mb29rdXAuY3BwOgorICAgICAgICAoSlNDOjpzZXRVcFN0YXRpY0Z1
bmN0aW9uU2xvdCk6CisgICAgICAgICogcnVudGltZS9Mb29rdXAuaDoKKyAgICAgICAgKEpTQzo6
SGFzaEVudHJ5OjpidWlsdGluR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpw
cm9wZXJ0eUdldHRlcik6CisgICAgICAgIChKU0M6Okhhc2hFbnRyeTo6cHJvcGVydHlQdXR0ZXIp
OgorICAgICAgICAoSlNDOjpIYXNoVGFibGU6OmVudHJ5KToKKyAgICAgICAgKEpTQzo6Z2V0U3Rh
dGljUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6Z2V0U3RhdGljVmFsdWVTbG90KToKKyAg
ICAgICAgKEpTQzo6cHV0RW50cnkpOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaDoK
KyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVn
RXhwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5jcHA6CisgICAgICAgICogcnVudGltZS9T
dHJ1Y3R1cmUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpW
TTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6Vk06OmJ1aWx0
aW5FeGVjdXRhYmxlcyk6CisKIDIwMTQtMDEtMjkgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxl
LmNvbT4KIAogICAgICAgICBGVEwgc2hvdWxkIHN1cHBvcnQgR2V0QnlJZChVbnR5cGVkOikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCAxYWQ2OTc0ODhiMGM0YjhiNGNmYWUyOTEzNTQyNTliNmRhY2ZkYzQ1Li5mM2Mz
ZDcxNzFkMDU0NDgwZWM2MDU0MGMwZDUyNTk5NmVlY2RiOWEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBKUwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRpbmcg
Zm9yIHRoZSBuZXdseSByZXF1aXJlZCBoZWFkZXJzLgorCisgICAgICAgIFRlc3Q6IGpzL3JlZ3Jl
c3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwKKworICAgICAgICAqIEZvcndhcmRpbmdIZWFk
ZXJzL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMv
cGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNJREJBbnlDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCRGF0
YWJhc2VDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVD
dXN0b20uY3BwOgorCiAyMDE0LTAxLTMwICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgV2ViR0wgbG9hZCBwb2xpY3kgc2hvdWxkIGJlIHF1ZXJpZWQgZm9yIHRo
ZSB0b3AgbGV2ZWwgZG9jdW1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCmluZGV4IDViZTA1M2YxZTA4NmI0M2U2ODZj
MzY3NGRhZTdjNTE2MDVhMjg2ZTcuLjBlY2VkNTFmM2UyZDViNjIxZGFkZjA1NzQ5ZjVlNzQ2NmEw
NmY1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09i
amVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdEZ1bmN0aW9ucy5oCkBAIC0xMzYsNyArMTM2LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGUKICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CiAgICAg
UmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0Ns
YXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNz
ID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIC8vIG9wdGlvbmFsIG9wdGlt
aXphdGlvbiB0byBieXBhc3MgZ2V0UHJvcGVydHkgaW4gY2FzZXMgd2hlbiB3ZSBvbmx5IG5lZWQg
dG8ga25vdyBpZiB0aGUgcHJvcGVydHkgZXhpc3RzCiAgICAgICAgICAgICBpZiAoSlNPYmplY3RI
YXNQcm9wZXJ0eUNhbGxiYWNrIGhhc1Byb3BlcnR5ID0ganNDbGFzcy0+aGFzUHJvcGVydHkpIHsK
QEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcAogICAgIFJlZlB0cjxP
cGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwogICAgIEpTVmFsdWVSZWYgdmFsdWVSZWYg
PSB0b1JlZihleGVjLCB2YWx1ZSk7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBw
cm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBw
cm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0
aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50
Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdFNldFByb3BlcnR5Q2FsbGJhY2sgc2V0
UHJvcGVydHkgPSBqc0NsYXNzLT5zZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIGlmICgh
cHJvcGVydHlOYW1lUmVmKQpAQCAtMzQzLDcgKzM0Myw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvCiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmplY3QpOwogICAgIFJl
ZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwogICAgIAotICAgIGlmIChTdHJp
bmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJp
bmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFz
c1JlZiBqc0NsYXNzID0gdGhpc09iamVjdC0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9
IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgICAgICBpZiAoSlNPYmplY3REZWxldGVQ
cm9wZXJ0eUNhbGxiYWNrIGRlbGV0ZVByb3BlcnR5ID0ganNDbGFzcy0+ZGVsZXRlUHJvcGVydHkp
IHsKICAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5TmFtZVJlZikKQEAgLTU2NCw3ICs1NjQs
NyBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0U3RhdGljVmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcAogewogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYg
PSB0b1JlZih0aGlzKTsKICAgICAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5
TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5
TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IGNsYXNzUmVm
KCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAg
ICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZSogc3RhdGljVmFsdWVzID0ganND
bGFzcy0+c3RhdGljVmFsdWVzKGV4ZWMpKSB7CiAgICAgICAgICAgICAgICAgaWYgKFN0YXRpY1Zh
bHVlRW50cnkqIGVudHJ5ID0gc3RhdGljVmFsdWVzLT5nZXQobmFtZSkpIHsKQEAgLTYwMCw3ICs2
MDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1
bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRQogICAgIGlmIChQYXJlbnQ6OmdldE93blBy
b3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QyKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90Mi5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUp
KTsKIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUo
KSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CiAg
ICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iai0+Y2xhc3NSZWYoKTsganND
bGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgICAgICBpZiAo
T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlKiBzdGF0aWNGdW5jdGlvbnMgPSBqc0Ns
YXNzLT5zdGF0aWNGdW5jdGlvbnMoZXhlYykpIHsKICAgICAgICAgICAgICAgICBpZiAoU3RhdGlj
RnVuY3Rpb25FbnRyeSogZW50cnkgPSBzdGF0aWNGdW5jdGlvbnMtPmdldChuYW1lKSkgewpAQCAt
NjI2LDcgKzYyNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6
Y2FsbGJhY2tHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkCiAgICAgSlNPYmplY3RSZWYg
dGhpc1JlZiA9IHRvUmVmKHRoaXNPYmopOwogICAgIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJv
cGVydHlOYW1lUmVmOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlO
YW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlO
YW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iai0+
Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAg
ICAgICAgICAgICBpZiAoSlNPYmplY3RHZXRQcm9wZXJ0eUNhbGxiYWNrIGdldFByb3BlcnR5ID0g
anNDbGFzcy0+Z2V0UHJvcGVydHkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5TmFt
ZVJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAyN2JjNGMxN2YzZGZl
ZWI2MWQyNTIzMjNmZDg3OGM0NDc4MGY3NGM1Li5iNDNlMDVjODJiYjk4ZDU4ZWZiYjhjNThhYjlh
ODNmMWE3NjUxNzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01LDYg
KzUsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMiCiAgICAgIiR7SkFWQVNDUklQVENP
UkVfRElSfS9hc3NlbWJsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9iaW5kaW5ncyIK
KyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zIgogICAgICIke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vYnl0ZWNvZGUiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9ieXRlY29tcGls
ZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9kZmciCkBAIC01Miw2ICs1Myw4IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcAog
ICAgIGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAogCisgICAgYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcAorCiAgICAgYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAKICAg
ICBieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Js
b2NrLmNwcApAQCAtNzA3LDcgKzcxMCw3IEBAIHNldChIQVNIX0xVVF9HRU5FUkFUT1IgJHtDTUFL
RV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2NyZWF0ZV9oYXNoX3RhYmxlKQogbWFjcm8oR0VORVJBVEVf
SEFTSF9MVVQgX2lucHV0IF9vdXRwdXQpCiAgICAgYWRkX2N1c3RvbV9jb21tYW5kKAogICAgICAg
ICBPVVRQVVQgJHtfb3V0cHV0fQotICAgICAgICBERVBFTkRTICR7SEFTSF9MVVRfR0VORVJBVE9S
fSAke19pbnB1dH0KKyAgICAgICAgREVQRU5EUyAke0hBU0hfTFVUX0dFTkVSQVRPUn0gJHtfaW5w
dXR9ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucwogICAg
ICAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke0hBU0hfTFVUX0dFTkVSQVRPUn0gJHtf
aW5wdXR9IC1pID4gJHtfb3V0cHV0fQogICAgICAgICBWRVJCQVRJTSkKICAgICBsaXN0KEFQUEVO
RCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTICR7X291dHB1dH0pCkBAIC03MzYsNiArNzM5LDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX0ZPUldBUkRJTkdfSEVBREVSU19ESVJFQ1RPUklFUwogICAgIHlh
cnIKIAogICAgIGNvbGxlY3Rvci9oYW5kbGVzCisgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVND
UklQVENPUkVfRElSfQogKQogCiBzZXQoSmF2YVNjcmlwdENvcmVfRk9SV0FSRElOR19IRUFERVJT
X0ZJTEVTCkBAIC03NjMsOCArNzY3LDExIEBAIHNldChKYXZhU2NyaXB0Q29yZV9GT1JXQVJESU5H
X0hFQURFUlNfRklMRVMKICAgICBhc3NlbWJsZXIvTGlua0J1ZmZlci5oCiAgICAgYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyLmgKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgK
KyAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgKICAgICBqaXQvR1BSSW5mby5o
CiAgICAgcnVudGltZS9WTS5oCisKKyAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09S
RV9ESVJ9L0pTQ0J1aWx0aW5zLmgKICkKIAogCkBAIC04MTUsMTYgKzgyMiwyNyBAQCBhZGRfY3Vz
dG9tX2NvbW1hbmQoCiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3Jp
cHRDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0vQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTLmpzb24gLS1v
dXRwdXRfaF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0
cHV0X2NwcF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0
cHV0X2pzX2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIgLS1vdXRw
dXRfdHlwZSBKYXZhU2NyaXB0IC0td3JpdGVfYWx3YXlzICYmIG1rZGlyIC1wICR7REVSSVZFRF9T
T1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yICYmIGNwICR7REVSSVZFRF9TT1VS
Q0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTRnJvbnRlbmRE
aXNwYXRjaGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVj
dG9ySlNUeXBlQnVpbGRlcnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9
L2luc3BlY3RvcgogICAgIFZFUkJBVElNKQogCisjIEpTQ0J1aWx0aW5zCitmaWxlKEdMT0IgSlND
QnVpbHRpbnNfanNfZmlsZXMgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9idWlsdGlucy8q
LmpzIikKK2FkZF9jdXN0b21fY29tbWFuZCgKKyAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19K
QVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcCAke0RFUklWRURfU09VUkNFU19KQVZB
U0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKKyAgIE1BSU5fREVQRU5ERU5DWSAke0NNQUtF
X0NVUlJFTlRfU09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMKKyAgIERFUEVORFMgJHtK
U0NCdWlsdGluc19qc19maWxlc30KKyAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtD
TUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zICR7SlNDQnVpbHRp
bnNfanNfZmlsZXN9ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVp
bHRpbnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5z
LmNwcAorICAgVkVSQkFUSU0pCisKIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMK
ICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTQmFj
a2VuZERpc3BhdGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0vSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9T
T1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwCisg
ICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5jcHAK
ICkKIAogbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUwogICAgICR7REVSSVZFRF9T
T1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMu
aAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNG
cm9udGVuZERpc3BhdGNoZXJzLmgKICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09S
RV9ESVJ9L0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgKKyAgICAke0RFUklWRURfU09VUkNFU19K
QVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKICkKIAogYWRkX2N1c3RvbV9jb21tYW5k
KApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2Ug
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAxMTU2ZTk3
ZmQ4ODYyNTU3YzljZjhkM2I2OGJmNGQwM2MzZThiYThmLi5hODNiZGNhZDUxYjA2Njg4NjY3YTZi
NzMyMDU3ZTRjZGM4OTYwYTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQpAQCAtMjgsOCArMjgsOSBAQCBWUEFUSCA9IFwKICAgICAkKEphdmFTY3JpcHRDb3Jl
KSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvcGFyc2VyIFwKICAgICAkKEphdmFTY3JpcHRDb3Jl
KS9ydW50aW1lIFwKLSAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnRlcnByZXRlciBcCi0gICAgJChK
YXZhU2NyaXB0Q29yZSkvaml0IFwKKwkkKEphdmFTY3JpcHRDb3JlKS9pbnRlcnByZXRlciBcCisJ
JChKYXZhU2NyaXB0Q29yZSkvaml0IFwKKwkkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucyBcCiAj
CiAKIC5QSE9OWSA6IGFsbApAQCAtNTcsOCArNTgsMTggQEAgYWxsIDogXAogICAgIFJlZ0V4cE9i
amVjdC5sdXQuaCBcCiAgICAgU3RyaW5nQ29uc3RydWN0b3IubHV0LmggXAogICAgIHVkaXM4Nl9p
dGFiLmggXAorICAgIEpTQ0J1aWx0aW5zIFwKICMKIAorIyBidWlsdGluIGZ1bmN0aW9ucworLlBI
T05ZOiBKU0NCdWlsdGlucworCitKU0NCdWlsdGluczogJChKYXZhU2NyaXB0Q29yZSkvZ2VuZXJh
dGUtanMtYnVpbHRpbnMgSlNDQnVpbHRpbnMuaCBKU0NCdWlsdGlucy5jcHAKK0pTQ0J1aWx0aW5z
Lmg6ICQoSmF2YVNjcmlwdENvcmUpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zICQoSmF2YVNjcmlwdENv
cmUpL2J1aWx0aW5zLyouanMKKwlweXRob24gJF4gJEAKKwkJCQkJCQkJCQkJCQkJCQkJCQkJIAor
SlNDQnVpbHRpbnMuY3BwOiBKU0NCdWlsdGlucy5oCisKICMgbG9va3VwIHRhYmxlcyBmb3IgY2xh
c3NlcwogCiAlLmx1dC5oOiBjcmVhdGVfaGFzaF90YWJsZSAlLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0dOVW1ha2VmaWxlLmFtCmluZGV4IGZlNTQ0OGRkYzFiY2ZhYTRjNzI5YTFjYzAwZGVhNjI0MzE5
MzkwYTIuLjU1NjlmNTAyOGQ4YzNjZGQ1YTA0ZGM5MzY2YTg0YjA0ZWVjNDgxNTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTUxLDYgKzUxLDcgQEAgamF2YXNjcmlwdGNv
cmVfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Gb3J3
YXJkaW5nSGVhZGVycyBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
YmxlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzIFwKKwkt
SSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMgXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyIFwKQEAgLTExMCwxMiArMTExLDE2IEBAIERlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaDogJChqYXZhc2NyaXB0Y29yZV9zb3Vy
Y2VzKSAkCiAJJChBTV9WX0dFTikkKFJVQlkpICQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiICQoc3JjZGlyKS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gJEAKIAkkKEFN
X1ZfYXQpdG91Y2ggJEAKIAotJChQcm9ncmFtc19MTEludE9mZnNldHNFeHRyYWN0b3JfT0JKRUNU
Uyk6IERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaAor
JChQcm9ncmFtc19MTEludE9mZnNldHNFeHRyYWN0b3JfT0JKRUNUUyk6IERlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaCAKIAogRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvTExJbnRBc3NlbWJseS5oOiBQcm9ncmFtcy9MTEludE9mZnNldHNFeHRy
YWN0b3IkKEVYRUVYVCkKIAkkKEFNX1ZfR0VOKSQoUlVCWSkgJChzcmNkaXIpL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYiAkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIFByb2dyYW1zL0xMSW50T2Zmc2V0c0V4
dHJhY3RvciQoRVhFRVhUKSAkQAogCSQoQU1fVl9hdCl0b3VjaCAkQAogCitEZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5oOiBEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0
Q29yZS9KU0NCdWlsdGlucy5jcHAKK0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1
aWx0aW5zLmNwcDogJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1qcy1i
dWlsdGlucyAkKGphdmFzY3JpcHRjb3JlX2J1aWx0aW5zX2pzX25vc291cmNlcykKKwkkKEFNX1Zf
R0VOKSQoUFlUSE9OKSAkXiAkQAorCiAkKGxpYmphdmFzY3JpcHRjb3JlZ3RrX0BXRUJLSVRHVEtf
QVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX09CSkVD
VFMpOiBEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9MTEludEFzc2VtYmx5LmgKIAoganNj
OiAkKGphdmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcykgUHJvZ3JhbXMvanNjJChFWEVFWFQp
CkBAIC0yMTYsNiArMjIxLDcgQEAgRVhUUkFfRElTVCArPSBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL0tleXdvcmRMb29rdXBHZW5lcmF0b3IucHkgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvS2V5d29yZHMudGFibGUgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9USEFOS1MgXAor
CSQoamF2YXNjcmlwdGNvcmVfYnVpbHRpbnNfanNfbm9zb3VyY2VzKSBcCiAJJChsbGludF9ub3Nv
dXJjZXMpIFwKIAkkKG9mZmxpbmVhc21fbm9zb3VyY2VzKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGNkYjU0MjZiMDZiNTJhOTgyNTZlZTkwNThiYmE4
ZjExZWVhNjllZTAuLjk4ZmFhYTdkMTc1YWE2MWYyMDg5NmNlZWIxMzg2M2UyN2IyNjZjZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yMCw2ICsyMCw4
IEBAIGphdmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvRXJyb3JQcm90b3R5cGUubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL0pTRGF0YVZpZXdQcm90b3R5cGUubHV0LmggXAogCURlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0Lmx1dC5oIFwKKwlEZXJpdmVkU291cmNlcy9K
YXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5jcHAgXAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL0pTQ0J1aWx0aW5zLmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pT
T05PYmplY3QubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTUHJvbWlz
ZUNvbnN0cnVjdG9yLmx1dC5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU1By
b21pc2VQcm90b3R5cGUubHV0LmggXApAQCAtMzUsNiArMzcsOSBAQCBqYXZhc2NyaXB0Y29yZV9i
dWlsdF9ub3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50
RGVzaXJlZE9mZnNldHMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnRB
c3NlbWJseS5oCiAKK2phdmFzY3JpcHRjb3JlX2J1aWx0aW5zX2pzX25vc291cmNlcyArPSBcCisJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcworCiBqYXZh
c2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNh
bGxiYWNrRnVuY3Rpb24uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0Lmgg
XApAQCAtMTAyLDYgKzEwNyw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogICAgIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRPYmplY3QuaCBcCiAgICAgU291cmNl
L0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcCBcCiAgICAgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmggXAorICAgIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIFwKKyAgICBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAgXApAQCAtMTI0MSw3
ICsxMjQ4LDkgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcCBcCiAJRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJz
LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpTVHlwZUJ1aWxk
ZXJzLmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNUeXBl
QnVpbGRlcnMuaAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpTVHlw
ZUJ1aWxkZXJzLmggXAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5z
LmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNDQnVpbHRpbnMuaAogCiBs
bGludF9ub3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qCmluZGV4IDVlZGVmZGJlODU1Zjk2YTYyNjhkODU3M2JlYzFkMGMzZDg1OGFhNWMuLmExMmRi
MTgzNDg2ZGZiYmNhODNmM2E3OGU5Y2Y5ODYzMWIyNjUzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvagpAQCAtMzA5LDYgKzMwOSw3IEBACiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0T2JqZWN0LmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdFZhbHVlLmNwcCIgLz4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxl
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5UHJvZmls
ZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeXRlY29kZUJh
c2ljQmxvY2suY3BwIiAvPgpAQCAtNzIxLDYgKzcyMiw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hl
cnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEluc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNUeXBlQnVpbGRl
cnMuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEpTQ0J1aWx0aW5zLmNwcCIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcQXJyYXlDb25z
dHJ1Y3Rvci5sdXQuaCIgLz4KQEAgLTc1MCw2ICs3NTIsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFJlZ0V4cE9iamVjdC5sdXQuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xSZWdFeHBQcm90
b3R5cGUubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcU3RyaW5nQ29uc3RydWN0b3IubHV0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuaCIgLz4KICAgPC9JdGVt
R3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcQVBJ
Q2FsbGJhY2tGdW5jdGlvbi5oIiAvPgpAQCAtNzk4LDYgKzgwMSw3IEBACiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdE9iamVjdC5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0VmFsdWUuaCIgLz4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxlcy5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlQcm9maWxlLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeVZhbEluZm8uaCIgLz4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA4
N2UxMmE0NzE1OGJiNjIyNGQ0OWZkNjIyOTc4YzRhOWM0NDM1YTY1Li44NjljMWY1ODliY2I2ODZl
YjljZjIwYzA5NmJlMWI4M2E1NTFlMjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC03LDYgKzcsOSBAQAogICAgIDxGaWx0ZXIgSW5j
bHVkZT0iYmluZGluZ3MiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezBiYWNlMTIzLTQ1ODIt
ZWViYy05MzE0LTc4MTliMzc2YzE5OH08L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+
CisgICAgPEZpbHRlciBJbmNsdWRlPSJidWlsdGlucyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmll
cj57M2I5ZDcyYTUtMTM1Yi00M2IzLWE1MjQtYzZkMmI5ZDI5ZDM1fTwvVW5pcXVlSWRlbnRpZmll
cj4KKyAgICA8L0ZpbHRlcj4KICAgICA8RmlsdGVyIEluY2x1ZGU9ImJ5dGVjb2RlIj4KICAgICAg
IDxVbmlxdWVJZGVudGlmaWVyPns3NjYwODhhMC0xMjE2LTQ4NTQtYWE0My01NjBjNWUyODM2Njh9
PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgpAQCAtMTA4LDYgKzExMSw5IEBACiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcTWFjcm9Bc3NlbWJsZXIuY3BwIj4K
ICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWlsdGluRXhlY3V0YWJsZXMuY3BwIj4K
KyAgICAgIDxGaWx0ZXI+YnVpbHRpbnM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3Bw
Ij4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAg
LTEzMjksNiArMTMzNSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwIj4KICAgICAgIDxGaWx0ZXI+
RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuY3BwIj4KKyAg
ICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAg
IDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
QVBJXEFQSUNhbGxiYWNrRnVuY3Rpb24uaCI+CkBAIC0xNDU0LDYgKzE0NjMsOSBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXFg4NkFzc2VtYmxlci5oIj4KICAgICAgIDxG
aWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWlsdGluRXhlY3V0YWJsZXMuaCI+CisgICAgICA8Rmls
dGVyPmJ1aWx0aW5zPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmgiPgogICAgICAgPEZp
bHRlcj5ieXRlY29kZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMjU1MCw2ICsyNTYy
LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xB
cnJheVByb3RvdHlwZS5sdXQuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmls
dGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmgiPgorICAgICAgPEZpbHRlcj5EZXJpdmVkIFNv
dXJjZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcVk0uaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlQ29tbW9uLnByb3BzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmVDb21tb24ucHJvcHMK
aW5kZXggMzYyMmZmYzU3N2M0M2RkZjcwZGE1MWZmNjhhZDY0NmY2MzA0ZTU2Ny4uYzU4ODg3MGMy
ZmQxM2Q2MDc2ZDM4ZjUyY2E2MjI1ZGIyODcyYzc4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmVDb21tb24ucHJv
cHMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmVDb21tb24ucHJvcHMKQEAgLTUsNyArNSw3IEBACiAgIDxQcm9wZXJ0eUdyb3Vw
IC8+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlw7Li5cdG9vbHNcOy4uXHJ1bnRpbWVcOy4uXGxs
aW50XDsuLlxqaXRcOy4uXGRpc2Fzc2VtYmxlclw7Li5caGVhcFw7Li5cZGVidWdnZXJcOy4uXGFz
c2VtYmxlclw7Li5ccHJvZmlsZXJcOy4uXHlhcnJcOy4uXGludGVycHJldGVyXDsuLlxieXRlY29k
ZVw7Li5cZGZnXDsuLlxieXRlY29tcGlsZXJcOy4uXHBhcnNlclw7Li5cQVBJXDsuLlxmdGxcOy4u
XGJpbmRpbmdzXDsuLlxpbnNwZWN0b3JcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBs
YXRmb3JtQXJjaGl0ZWN0dXJlKVxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1w7JChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNs
dWRlXEphdmFTY3JpcHRDb3JlXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2
YXRlXDskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGU7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNs
dWRlXHByaXZhdGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4u
XDsuLlx0b29sc1w7Li5ccnVudGltZVw7Li5cbGxpbnRcOy4uXGppdFw7Li5cZGlzYXNzZW1ibGVy
XDsuLlxoZWFwXDsuLlxkZWJ1Z2dlclw7Li5cYXNzZW1ibGVyXDsuLlxwcm9maWxlclw7Li5ceWFy
clw7Li5caW50ZXJwcmV0ZXJcOy4uXGJ5dGVjb2RlXDsuLlxidWlsdGluc1w7Li5cZGZnXDsuLlxi
eXRlY29tcGlsZXJcOy4uXHBhcnNlclw7Li5cQVBJXDsuLlxmdGxcOy4uXGJpbmRpbmdzXDsuLlxp
bnNwZWN0b3JcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1w7JChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXGluY2x1ZGVcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRD
b3JlXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXDskKFdlYktpdF9M
aWJyYXJpZXMpXGluY2x1ZGU7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlXHByaXZhdGU7JShB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cz4KICAgICAgIDxGb3JjZWRJbmNsdWRlRmlsZXM+SUNVVmVyc2lvbi5oOyUoRm9yY2VkSW5jbHVk
ZUZpbGVzKTwvRm9yY2VkSW5jbHVkZUZpbGVzPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5r
PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovY29weS1maWxlcy5jbWQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9jb3B5LWZpbGVzLmNtZAppbmRleCA5NDMzNDNhNTY4ZTNlMjk5ODE2YmY2NmYyZWRi
NTI0MzU4ZmM1NGU4Li5lMGMxZjI5NjYxOTZiZGEzMDAzNTk1YzVkZjAzZWVlMDhhMGRhNzhmIDEw
MDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9j
b3B5LWZpbGVzLmNtZAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9jb3B5LWZpbGVzLmNtZApAQCAtNDIsNiArNDIsNyBAQCBmb3IgJSVkIGluICgKICAg
ICBhc3NlbWJsZXINCiAgICAgYmluZGluZ3MNCiAgICAgYnl0ZWNvZGUNCisgICAgYnVpbHRpbnMN
CiAgICAgZGZnDQogICAgIGRpc2Fzc2VtYmxlcg0KICAgICBoZWFwDQpAQCAtNzIsNiArNzMsOSBA
QCB4Y29weSAveSAiJURlcml2ZWRTb3VyY2VzRGlyZWN0b3J5JVxJbnNwZWN0b3JKU1R5cGVCdWls
ZGVycy5oIiAiJVByaXZhdGVIZWFkZXJzRAogeGNvcHkgL3kgIiVEZXJpdmVkU291cmNlc0RpcmVj
dG9yeSVcSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCIgIiVQcml2YXRlSGVhZGVyc0Rp
cmVjdG9yeSUiID5OVUwNCiB4Y29weSAveSAiJURlcml2ZWRTb3VyY2VzRGlyZWN0b3J5JVxJbnNw
ZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuaCIgIiVQcml2YXRlSGVhZGVyc0RpcmVjdG9yeSUi
ID5OVUwNCiANCitlY2hvIENvcHlpbmcgYnVpbHRpbnMgaGVhZGVyIGFzIGlmIGl0IHdlcmUgYSBw
cml2YXRlIGhlYWRlci4uLg0KK3hjb3B5IC95ICIlRGVyaXZlZFNvdXJjZXNEaXJlY3RvcnklXEpT
Q0J1aWx0aW5zLmgiICIlUHJpdmF0ZUhlYWRlcnNEaXJlY3RvcnklIiA+TlVMDQorDQogZWNobyBD
b3B5aW5nIHJlc291cmNlcy4uLg0KIG1rZGlyICIlUmVzb3VyY2VzRGlyZWN0b3J5JSIgMj5OVUwN
CiB4Y29weSAveSAvZCBKYXZhU2NyaXB0Q29yZS5yZXNvdXJjZXNcKiAiJVJlc291cmNlc0RpcmVj
dG9yeSUiID5OVUwNCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI3ZTg3Njc0MGE5
NjRiMDI4OTg0ZWQ2NzgxNjE4MjBhNWRjZjc3YzQuLjkxMTU3M2FiMTdkMzM5NzRhYTdjOWEwMTFk
YjIwMGIwOWFmNzhiZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MjIsNyAr
OTIyLDYgQEAKIAkJQTUwM0ZBMTkxODhFMEZCMDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJh
bWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUw
M0ZBMTMxODhFMEZBRjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwICovOyB9Owog
CQlBNTAzRkExQTE4OEUwRkIwMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTQxODhFMEZB
RjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCAqLzsgfTsKIAkJQTUwM0ZBMUIxODhF
MEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNTE4OEUwRkIwMDAxMTBGMTQg
LyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLzsgfTsKLQkJQTUwM0ZBMUMxODhFMEZCMDAw
MTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTYxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2
YVNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQlBNTAzRkExRDE4OEUwRkIwMDAxMTBGMTQgLyog
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE3MTg4RTBGQjAwMDExMEYxNCAvKiBKU0ph
dmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwICovOyB9OwogCQlBNTAzRkExRTE4OEUwRkIw
MDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExODE4OEUwRkIwMDAxMTBG
MTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggKi87IH07CiAJCUE1MDNGQTIx
MTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExRjE4OEVGRjY4MDAxMTBGMTQgLyog
U2NyaXB0QnJlYWtwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0xMDI0LDYgKzEwMjMsNyBAQAogCQlBNzBCMDgzMjE3QTBCNzlCMDBEQUYx
NEIgLyogREZHQmluYXJ5U3dpdGNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3MEIwODMwMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0
Y2guY3BwICovOyB9OwogCQlBNzBCMDgzMzE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dp
dGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzBC
MDgzMTE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmggKi87IH07CiAJCUE3MTIz
NkU1MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxMjM2RTQxMTk1RjMzQzAwQkQyMTc0
IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgKi87IH07CisJCUE3MURBODBGMTg4MERCQUIwMEQxRjI5
OSAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3MURBODBFMTg4MERCQUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzIw
MjhCNjE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjAyOEI0MTc5NzYwMUUwMDk4
MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwICovOyB9OwogCQlBNzIwMjhCODE3OTc2MDFF
MDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIwMjhCNTE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVz
dFJ1bm5lclV0aWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQTcyMDI4QkExNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIwMjhCOTE3
OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTE1MCw2ICsxMTUwLDEwIEBACiAJCUE3
Q0EzQUU4MTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0EzQUUyMTdEQTQxQUUwMDY1MzhBRiAvKiBK
U1dlYWtNYXAuaCAqLzsgfTsKIAkJQTdDQTNBRUIxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBE
YXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
Q0EzQUU5MTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5jcHAgKi87IH07CiAJCUE3Q0Ez
QUVDMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDQTNBRUExN0RBNTE2ODAwNjUzOEFGIC8qIFdl
YWtNYXBEYXRhLmggKi87IH07CisJCUE3RDgwMUE0MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGlu
RXhlY3V0YWJsZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTdEODAxQTExODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAg
Ki87IH07CisJCUE3RDgwMUE1MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDgwMUEy
MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBN0Q4MDFBODE4ODBENkE4MDAyNkMz
OUIgLyogSlNDQnVpbHRpbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTdEODAxQTYxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCAq
LzsgfTsKKwkJQTdEODAxQTkxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4MDFBNzE4ODBENkE4
MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlBN0Q4OUNGMjE3QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNC
bG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
N0Q4OUNFMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgKi87IH07CiAJCUE3
RDg5Q0YzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4OUNFNDE3QTBCOEND
MDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwICovOyB9OwogCQlBN0Q4OUNGNDE3
QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDg5Q0U1MTdBMEI4Q0MwMDc3M0FEOCAv
KiBERkdCbG9ja0luc2VydGlvblNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0yNDYyLDYgKzI0NjYsOCBAQAogCQlBNzEyMzZFNDExOTVGMzND
MDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpJVE9wY29kZXMzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE3MThGNjFBMTE3NTRBMjEwMDI0NjVBNyAvKiBSZWdFeHBKaXRUYWJsZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwSml0VGFibGVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MThGODIxMTE3OEVCNEIwMDI0NjVBNyAvKiBjcmVhdGVf
cmVnZXhfdGFibGVzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5
cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBjcmVhdGVf
cmVnZXhfdGFibGVzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzFEQTgwRDE4ODBE
NzFGMDBEMUYyOTkgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlw
dC5weXRob247IHBhdGggPSAiZ2VuZXJhdGUtanMtYnVpbHRpbnMiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBNzFEQTgwRTE4ODBEQkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxpbmVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nSW5saW5lcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzIwMjhCNDE3OTc2MDFFMDA5ODAyOEMgLyog
SlNDVGVzdFJ1bm5lclV0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE3MjAyOEI1MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDVGVzdFJ1bm5lclV0aWxzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI5MTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0
aW9uSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Z1bmN0aW9u
SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU5MCw2ICsyNTk2LDEx
IEBACiAJCUE3Q0EzQUUyMTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWFrTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE3Q0EzQUU5MTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrTWFwRGF0YS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Q0EzQUVBMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFr
TWFwRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrTWFwRGF0YS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFBMDE4ODBENjZFMDAyNkMzOUIg
LyogQXJyYXkucHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBw
YXRoID0gQXJyYXkucHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
N0Q4MDFBMTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBC
dWlsdGluRXhlY3V0YWJsZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVp
bHRpbkV4ZWN1dGFibGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUE2
MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0NCdWlsdGlucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUE3RDgwMUE3MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBN0Q4OUNFMzE3QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdCYXNpY0Jsb2NrLmNw
cDsgcGF0aCA9IGRmZy9ERkdCYXNpY0Jsb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTdEODlDRTQxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Jsb2NrSW5zZXJ0aW9u
U2V0LmNwcDsgcGF0aCA9IGRmZy9ERkdCbG9ja0luc2VydGlvblNldC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE3RDg5Q0U1MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0lu
c2VydGlvblNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCbG9ja0lu
c2VydGlvblNldC5oOyBwYXRoID0gZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTI2LDYgKzI5MzcsNyBAQAogCQkJCTg2MDRGNEYyMTQz
QTZDNDQwMEIyOTVGNSAvKiBDaGFuZ2VMb2cgKi8sCiAJCQkJRjY5MkE4NTQwMjU1NTk3RDAxRkY2
MEY3IC8qIGNyZWF0ZV9oYXNoX3RhYmxlICovLAogCQkJCUE3MThGODIxMTE3OEVCNEIwMDI0NjVB
NyAvKiBjcmVhdGVfcmVnZXhfdGFibGVzICovLAorCQkJCUE3MURBODBEMTg4MEQ3MUYwMEQxRjI5
OSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAqLywKIAkJCQk0NUUxMkQ4ODA2QTQ5QjBGMDBFOURG
ODQgLyoganNjLmNwcCAqLywKIAkJCQlGNjhFQkI4QzAyNTVENEM2MDFGRjYwRjcgLyogY29uZmln
LmggKi8sCiAJCQkJRjVDMjkwRTYwMjg0Rjk4RTAxODYzNUNBIC8qIEphdmFTY3JpcHRDb3JlUHJl
Zml4LmggKi8sCkBAIC0yOTM0LDYgKzI5NDYsNyBAQAogCQkJCTE0MzJFQkQ3MEEzNENBRDQwMDcx
N0I5RiAvKiBBUEkgKi8sCiAJCQkJOTY4OENCMTIwRUQxMkI0RTAwMUQ2NDlGIC8qIGFzc2VtYmxl
ciAqLywKIAkJCQlBNTRDRjJFQTE4NEVBNzM5MDAyMzdGMTkgLyogYmluZGluZ3MgKi8sCisJCQkJ
QTdEODAxOUYxODgwRDY2RTAwMjZDMzlCIC8qIGJ1aWx0aW5zICovLAogCQkJCTk2OUEwNzhGMEVE
MUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLywKIAkJCQk3RTM5RDgxRDBFQzM4RUZBMDAzQUYx
MUEgLyogYnl0ZWNvbXBpbGVyICovLAogCQkJCTFDOTA1MTNFMEJBOUU4ODMwMDgxRTlEMCAvKiBD
b25maWd1cmF0aW9ucyAqLywKQEAgLTM1MDksNiArMzUyMiw4IEBACiAJCTY1MEZERjhEMDlEMEZD
QTcwMDc2OUU1NCAvKiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCUE3RDgwMUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWls
dGlucy5jcHAgKi8sCisJCQkJQTdEODAxQTcxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5z
LmggKi8sCiAJCQkJQkMxOEM1MjMwRTE2RkM4QTAwQjM0NDYwIC8qIEFycmF5UHJvdG90eXBlLmx1
dC5oICovLAogCQkJCUJDRDIwM0U3MEUxNzE4RjQwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmx1
dC5oICovLAogCQkJCUE1MTNFNUM2MTg1Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNv
dXJjZS5oICovLApAQCAtMzgxMSw2ICszODI2LDcgQEAKIAkJCQlBNzkwREQ2QTE4MkY0OTk3MDA1
ODg4MDcgLyogSlNTZXRJdGVyYXRvci5oICovLAogCQkJCUJDMDJFOUI2MEUxODQyRkEwMDBGOTI5
NyAvKiBKU1N0cmluZy5jcHAgKi8sCiAJCQkJRjY5MkE4NjIwMjU1NTk3RDAxRkY2MEY3IC8qIEpT
U3RyaW5nLmggKi8sCisJCQkJQTcxREE4MEUxODgwREJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5s
aW5lcy5oICovLAogCQkJCTg2RTg1NTM4MTExQjk5NjgwMDFBRjUxRSAvKiBKU1N0cmluZ0J1aWxk
ZXIuaCAqLywKIAkJCQkyNjAwQjVBNDE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIu
Y3BwICovLAogCQkJCTI2MDBCNUE1MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5o
ICovLApAQCAtNDU2MSw2ICs0NTc3LDE2IEBACiAJCQlwYXRoID0gcmVtb3RlOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQTdEODAxOUYxODgwRDY2RTAwMjZDMzlCIC8qIGJ1
aWx0aW5zICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlB
N0Q4MDFBMDE4ODBENjZFMDAyNkMzOUIgLyogQXJyYXkucHJvdG90eXBlLmpzICovLAorCQkJCUE3
RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwICovLAorCQkJ
CUE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCAqLywKKwkJ
CSk7CisJCQlwYXRoID0gYnVpbHRpbnM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OwogLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYSGVhZGVyc0J1aWxk
UGhhc2Ugc2VjdGlvbiAqLwpAQCAtNDYwNiwxMSArNDYzMiwxMSBAQAogCQkJCTg2QUREMTQ1MEZE
REVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVD
RUVFMTUxODdGM0JBRDAwRTU1Qzk5IC8qIEluc3BlY3RvckFnZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk2NUMwMjg1RDE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmggaW4gSGVhZGVy
cyAqLywKLSAJCQkJMkE2ODI5NUIxODc1RjgwNTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIu
aCBpbiBIZWFkZXJzICovLAotICAgICAgICAgICAgICAgIDJBNEVDOTBDMTg2MEQ2QzIwMDk0Rjc4
MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTJBNjgyOTVCMTg3
NUY4MDUwMEI2QzNFMiAvKiBDb3B5V3JpdGVCYXJyaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQky
QTRFQzkwQzE4NjBENkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVyQnVmZmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRTU5MzJBODE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNTMyNDM5MzE4NTY5NzA5MDAyRUQ2OTIgLyogQ29kZUdlbmVyYXRv
ckluc3BlY3RvclN0cmluZ3MucHkgaW4gSGVhZGVycyAqLywKLSAJCQkJQTUzMjQzOTIxODU2OTcw
OTAwMkVENjkyIC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkgaW4gSGVhZGVycyAqLywKKwkJ
CQlBNTMyNDM5MjE4NTY5NzA5MDAyRUQ2OTIgLyogQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSBp
biBIZWFkZXJzICovLAogCQkJCTBGMjRFNTRGMTdFRTI3NDkwMEFCQjIxNyAvKiBUZW1wUmVnaXN0
ZXJTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MEU0QjY0MTg4MDlERDUwMDY4QTQ2RCAvKiBK
U0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVCNThDMTUx
ODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC00NjIyLDcgKzQ2NDgsNyBAQAogCQkJCTBGODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJh
eUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUyOTE4N0NBNUU2
MDA4NDNCMTAgLyogaW5saW5lLWFuZC1taW5pZnktc3R5bGVzaGVldHMtYW5kLXNjcmlwdHMucHkg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUyQjE4N0NBNzVCMDA4NDNCMTAgLyoganNtaW4ucHkg
aW4gSGVhZGVycyAqLywKLSAJCQkJQTUzMjQzOTgxODU2QTQ4OTAwMkVENjkyIC8qIEluc3BlY3Rv
ckpTLmpzb24gaW4gSGVhZGVycyAqLywKKwkJCQlBNTMyNDM5ODE4NTZBNDg5MDAyRUQ2OTIgLyog
SW5zcGVjdG9ySlMuanNvbiBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwRTJBMTg3Q0E3NTkwMDg0
M0IxMCAvKiB4eGQucGwgaW4gSGVhZGVycyAqLywKIAkJCQlGRUEwODYyMDE4MkI3QTA0MDBGNkQ4
NTEgLyogQnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzUxN0FEQjVGMzAw
NUFCMTc0IC8qIEFycmF5QnVmZmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTQ3MzMsNyArNDc1OSw3
IEBACiAJCQkJQTFBMDA5QzAxODMxQTIyRDAwQ0Y4NzExIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUM5REM1MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRl
Q29kZVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0ODUzMjgxODdERkRFQzAwODNCNjg3
IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5LmggaW4gSGVhZGVycyAqLywKLSAgICAgICAgICAgICAg
ICBBNTkzQ0Y4NzE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTU5M0NGODcxODQwMzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFn
ZW50UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjU2QzM2MTYyN0IwQUQwMDdGMjc4
MyAvKiBERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY3QjI5NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERGR0NhcGFiaWxpdGllcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NTgxNEVGOTBBMjAwQzcyNTMyIC8qIERGR0NGQVBoYXNl
LmggaW4gSGVhZGVycyAqLywKQEAgLTQ4NzIsNiArNDg5OCw3IEBACiAJCQkJMEZFQTBBMUQxNzA4
QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZF
QTBBMUYxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1OTQ1NTkzMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVj
dERlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3RDgwMUE5MTg4MEQ2QTgwMDI2QzM5
QiAvKiBKU0NCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMEExNzA1MTNEQjAw
QkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0ODUzMkEx
ODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292ZXJ5T3Bjb2RlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkVBMEEyMzE3MDk2MDY5MDBCQjcyMkMgLyogRlRMQ29tbW9uVmFsdWVzLmggaW4gSGVhZGVy
cyAqLywKQEAgLTQ5NDYsNiArNDk3Myw3IEBACiAJCQkJQkMxOEM0MEYwRTE2RjVDRDAwQjM0NDYw
IC8qIElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyNUY4QkNFMTU3NTQ0QTkwMDI0
NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk5
MTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ0hlYWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QTdEODAxQTUxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZCN0YzOUExNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nSGVhZGVySW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOUIxNUVEOEU0NjAwRjE2N0IyIC8qIElu
ZGV4aW5nVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDRUZBQjAxODA1Q0E2RDAwNDcyQ0U0
IC8qIEluaXRpYWxpemVMTFZNLmggaW4gSGVhZGVycyAqLywKQEAgLTUyMTgsNiArNTI0Niw3IEBA
CiAJCQkJQTUzMjQzODgxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckpTQmFja2VuZERpc3Bh
dGNoZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1NjBFMTZGNUNEMDBCMzQ0NjAgLyog
UHJvdGVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3NEMzM0IxNkFBMkQ5NTAwNjJGMDFEIC8q
IFByb3RvdHlwZU1hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTcxREE4MEYxODgwREJBQjAwRDFG
Mjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQxNENB
N0REOTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMENE
NEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTdDMDA4Q0U3MTg3NjMxQjYwMDk1NUMyNCAvKiBNaWNyb3Rhc2suaCBpbiBIZWFkZXJz
ICovLApAQCAtNTgzNiw2ICs1ODY1LDcgQEAKIAkJCQlBN0Q4OUNGMjE3QTBCOENDMDA3NzNBRDgg
LyogREZHQmFzaWNCbG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzBCMDgzMjE3QTBCNzlC
MDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDg5
Q0YzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlBN0Q4MDFBNDE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUM5REM0MTMyOERGODIwMDJCMkFENyAvKiBERkdC
eXRlQ29kZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4MkUyMTE0MTcyQ0UzMDAx
NzlDOTQgLyogREZHQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRkZDOTU3
MTRFRjkwQTAwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU4
NTIsNiArNTg4Miw3IEBACiAJCQkJMEZGRkM5NTkxNEVGOTBBNjAwQzcyNTMyIC8qIERGR0NTRVBo
YXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkZDNzcyMTZFMTJGNzEwMDM4RDk3NiAvKiBE
RkdEQ0VQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhGMkI5OTE3MkYwNEZGMDA3REJE
QTUgLyogREZHRGVzaXJlZElkZW50aWZpZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3RDgw
MUE4MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBNzNFMTMzMDE3OTYyNENEMDBFNERFQTggLyogREZHRGVzaXJlZFN0cnVjdHVyZUNoYWlucy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkMwRjdDRDE3QkJGQzVCMDA0NjRGRTQgLyogREZHRGVz
aXJlZFRyYW5zaXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRTg1MzRCMTcyM0NEQTUw
MEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01
OTc2LDcgKzYwMDcsNyBAQAogCQkJCTBGNkIxQ0M1MTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExVbndp
bmRJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOUQzMzlBMTgwM0FEQjcwMDczQzJCQyAv
KiBGVExTdGFja01hcHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMTYxNzA2QkI5MDAw
QkI3MjJDIC8qIEZUTFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAotIAkJCQk3QzAwOENEMjE4NkY4
QTkzMDA5NTVDMjQgLyogSlNQcm9taXNlRnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTdDMDA4Q0QyMTg2RjhBOTMwMDk1NUMyNCAvKiBKU1Byb21pc2VGdW5jdGlvbnMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY2QjFDQjUxODVGQzlFOTAwODQ1RDk3IC8qIEZUTEpTQ2FsbC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJFMTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMVGh1bmtz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1OTNDRjdDMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNl
YjQyZjVjYzQzM2YxNjM2MzQzYmZjOTgyYWEyYWFmYjMzNmU5NDkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzCkBAIC0w
LDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CitmdW5jdGlvbiBldmVyeShjYWxsYmFjayAvKiwgdGhpc0FyZyAqLykgeworICAgICJ1c2Ugc3Ry
aWN0IjsKKyAgICBpZiAodGhpcyA9PT0gbnVsbCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJy
b3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVs
bCIpOworICAgIAorICAgIGlmICh0aGlzID09PSB1bmRlZmluZWQpCisgICAgICAgIHRocm93IG5l
dyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wg
bm90IGJlIHVuZGVmaW5lZCIpOworICAgIAorICAgIHZhciBhcnJheSA9IEBPYmplY3QodGhpcyk7
CisgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCA+Pj4gMDsKKyAgICAKKyAgICBpZiAodHlw
ZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJv
cigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOwor
CisgICAgdmFyIHRoaXNBcmcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6
IHVuZGVmaW5lZDsKKyAgICAKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7
CisgICAgICAgIGlmICghKGkgaW4gYXJyYXkpKQorICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIGlmICghY2FsbGJhY2suQGNhbGwodGhpc0FyZywgYXJyYXlbaV0sIGksIGFycmF5KSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQxZGJiNWY5MjI1ZTI4YTEyZWQzZDE3OThmZjE3Njhl
NDM2NzFhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKworI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIK
KyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMu
aCIKKyNpbmNsdWRlICJQYXJzZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0J1aWx0aW5FeGVj
dXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKFZNJiB2bSkKKyAgICA6IG1fdm0odm0pCisjZGVm
aW5lIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUs
IGxlbmd0aCkgLCBtXyMjbmFtZSMjU291cmNlKG1ha2VTb3VyY2UoU3RyaW5nSW1wbDo6Y3JlYXRl
RnJvbUxpdGVyYWwoc18jI25hbWUsIGxlbmd0aCksIFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRl
cmFsKCI8YnVpbHRpbj4iKSkpCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTihJTklUSUFMSVpFX0JV
SUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgRVhQT1NFX0JVSUxUSU5fU1RSSU5HUworewor
fQorCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVh
dGVCdWlsdGluRXhlY3V0YWJsZShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGNvbnN0IElkZW50
aWZpZXImIG5hbWUpCit7CisgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZTsKKyAgICBQYXJzZXJFcnJvciBlcnJvcjsKKyAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHBy
b2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oJm1fdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigp
LCBKU1BhcnNlQnVpbHRpbiwgSlNQYXJzZVByb2dyYW1Db2RlLCBlcnJvciwgJnBvc2l0aW9uQmVm
b3JlTGFzdE5ld2xpbmUpOworCisgICAgaWYgKCFwcm9ncmFtKSB7CisgICAgICAgIGRhdGFMb2co
IkZhdGFsIGVycm9yIGNvbXBpbGluZyBidWlsdGluIGZ1bmN0aW9uICciLCBuYW1lLnN0cmluZygp
LCAiJzogIiwgZXJyb3IubV9tZXNzYWdlKTsKKyAgICAgICAgQ1JBU0goKTsKKyAgICB9CisKKyAg
ICBTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVtZW50ID0gcHJvZ3JhbS0+c2luZ2xlU3RhdGVtZW50
KCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudCk7CisgICAgUkVMRUFTRV9BU1NF
UlQoZXhwclN0YXRlbWVudC0+aXNFeHByU3RhdGVtZW50KCkpOworICAgIEV4cHJlc3Npb25Ob2Rl
KiBmdW5jRXhwciA9IHN0YXRpY19jYXN0PEV4cHJTdGF0ZW1lbnROb2RlKj4oZXhwclN0YXRlbWVu
dCktPmV4cHIoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwcik7CisgICAgUkVMRUFTRV9B
U1NFUlQoZnVuY0V4cHItPmlzRnVuY0V4cHJOb2RlKCkpOworICAgIEZ1bmN0aW9uQm9keU5vZGUq
IGJvZHkgPSBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihmdW5jRXhwciktPmJvZHkoKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVCghcHJvZ3JhbS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7CisgICAg
CisgICAgYm9keS0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoYm9keSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keS0+aWRlbnQo
KS5pc051bGwoKSk7CisgICAgCisgICAgLy8gVGhpcyBmdW5jdGlvbiBhc3N1bWVzIGFuIGlucHV0
IHN0cmluZyB0aGF0IHdvdWxkIHJlc3VsdCBpbiBhIHNpbmdsZSBhbm9ueW1vdXMgZnVuY3Rpb24g
ZXhwcmVzc2lvbi4KKyAgICBib2R5LT5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3RO
ZXdsaW5lKTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5KTsKKyAgICBmb3IgKGNvbnN0IGF1dG8m
IGNsb3NlZFZhcmlhYmxlIDogcHJvZ3JhbS0+Y2xvc2VkVmFyaWFibGVzKCkpIHsKKyAgICAgICAg
aWYgKGNsb3NlZFZhcmlhYmxlID09IG1fdm0ucHJvcGVydHlOYW1lcy0+YXJndW1lbnRzLmltcGwo
KSkKKyAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBpZiAoY2xvc2VkVmFyaWFi
bGUgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLmltcGwoKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBSRUxFQVNFX0FTU0VSVChjbG9zZWRWYXJpYWJsZS0+
aXNFbXB0eVVuaXF1ZSgpKTsKKyAgICB9CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUo
Jm1fdm0sIHNvdXJjZSwgYm9keSwgdHJ1ZSwgVW5saW5rZWRCdWlsdGluRnVuY3Rpb24pOworICAg
IGZ1bmN0aW9uRXhlY3V0YWJsZS0+bV9uYW1lVmFsdWUuc2V0KG1fdm0sIGZ1bmN0aW9uRXhlY3V0
YWJsZSwganNTdHJpbmcoJm1fdm0sIG5hbWUuc3RyaW5nKCkpKTsKKyAgICByZXR1cm4gZnVuY3Rp
b25FeGVjdXRhYmxlOworfQorCisjZGVmaW5lIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKG5h
bWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
QnVpbHRpbkV4ZWN1dGFibGVzOjpuYW1lIyNFeGVjdXRhYmxlKCkgXAore1wKKyAgICBpZiAoIW1f
IyNuYW1lIyNFeGVjdXRhYmxlKVwKKyAgICAgICAgbV8jI25hbWUjI0V4ZWN1dGFibGUgPSBjcmVh
dGVCdWlsdGluRXhlY3V0YWJsZShtXyMjbmFtZSMjU291cmNlLCBtX3ZtLnByb3BlcnR5TmFtZXMt
PmZ1bmN0aW9uTmFtZSk7XAorICAgIHJldHVybiBtXyMjbmFtZSMjRXhlY3V0YWJsZS5nZXQoKTtc
Cit9CitKU0NfRk9SRUFDSF9CVUlMVElOKERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3Vu
ZGVmIEVYUE9TRV9CVUlMVElOX1NPVVJDRVMKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5YTE5ZTI2
MTUwNzk0YTY2OWVjOThlMzk5YmY2N2Y3ZjcxMDY0MTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKQEAgLTAsMCAr
MSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgQnVpbHRpbkV4ZWN1dGFibGVzX2gKKyNkZWZpbmUgQnVpbHRpbkV4ZWN1dGFibGVzX2gK
KworI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisjaW5jbHVkZSAiU291cmNlQ29kZS5oIgorI2lu
Y2x1ZGUgIldlYWsuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7CitjbGFzcyBJZGVudGlm
aWVyOworY2xhc3MgVk07CisKK2NsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlcyB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NPd25QdHI8QnVpbHRpbkV4ZWN1dGFibGVzPiBjcmVhdGUoVk0mIHZtKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBCdWlsdGluRXhlY3V0YWJsZXModm0p
KTsKKyAgICB9CisgICAgCisjZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUs
IGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFt
ZSMjRXhlY3V0YWJsZSgpOyBcCitjb25zdCBTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSB7IHJl
dHVybiBtXyMjbmFtZSMjU291cmNlOyB9CisgICAgCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTihF
WFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJTl9TT1VSQ0VT
CisgICAgCitwcml2YXRlOgorICAgIEJ1aWx0aW5FeGVjdXRhYmxlcyhWTSYpOworICAgIFZNJiBt
X3ZtOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVCdWlsdGluRXhlY3V0
YWJsZShjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYpOworI2RlZmluZSBERUNM
QVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpXAor
ICAgIFNvdXJjZUNvZGUgbV8jI25hbWUjI1NvdXJjZTsgXAorICAgIFdlYWs8VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU+IG1fIyNuYW1lIyNFeGVjdXRhYmxlOworICAgIEpTQ19GT1JFQUNIX0JV
SUxUSU4oREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIERFQ0xBUkVfQlVJ
TFRJTl9TT1VSQ0VfTUVNQkVSUworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMjYzZWM3Y2FkZjRmNzljYTgxMDI0
NDFlNjJiZjJhMDViNWRkYzNmMi4uNzUxNTA2NTQyMzc2ZDdlZGM1OTlhYTAwZjliMTI2ODVjZGEz
NTJjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
QEAgLTQzLDExICs0MywxMyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVFN0dWJz
LmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgor
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50LmgiCiAj
aW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk5hdGl2ZUVycm9yQ29u
c3RydWN0b3IuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9w
ZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmgiCiAjaW5jbHVk
ZSAiUmVkdWNlV2hpdGVzcGFjZS5oIgpAQCAtMTU2OSw3ICsxNTcxLDcgQEAgQ29kZUJsb2NrOjpD
b2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVC
bG9jayogdW5saW4KIAogICAgIHNldENvbnN0YW50UmVnaXN0ZXJzKHVubGlua2VkQ29kZUJsb2Nr
LT5jb25zdGFudFJlZ2lzdGVycygpKTsKICAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPnVzZXNH
bG9iYWxPYmplY3QoKSkKLSAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1t1bmxpbmtlZENvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0UmVnaXN0ZXIoKS5vZmZzZXQoKV0uc2V0KCptX3ZtLCBvd25lckV4
ZWN1dGFibGUsIG1fZ2xvYmFsT2JqZWN0LmdldCgpKTsKKyAgICAgICAgbV9jb25zdGFudFJlZ2lz
dGVyc1t1bmxpbmtlZENvZGVCbG9jay0+Z2xvYmFsT2JqZWN0UmVnaXN0ZXIoKS50b0NvbnN0YW50
SW5kZXgoKV0uc2V0KCptX3ZtLCBvd25lckV4ZWN1dGFibGUsIG1fZ2xvYmFsT2JqZWN0LmdldCgp
KTsKICAgICBtX2Z1bmN0aW9uRGVjbHMucmVzaXplVG9GaXQodW5saW5rZWRDb2RlQmxvY2stPm51
bWJlck9mRnVuY3Rpb25EZWNscygpKTsKICAgICBmb3IgKHNpemVfdCBjb3VudCA9IHVubGlua2Vk
Q29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSwgaSA9IDA7IGkgPCBjb3VudDsgKytp
KSB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFi
bGUgPSB1bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDY4YmMwMzc5ZjU3NDRjOWE4Zjc0MzFk
YjY0ZjhhYjU0ZTZlMTA1M2YuLjQ5OTVjNTJjZjhiMmIxYjRkNjI4MDQ1M2VlZDI3Yzc3NGE0OTU1
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTU2
LDcgKzU2LDYgQEAKICNpbmNsdWRlICJIYW5kbGVySW5mby5oIgogI2luY2x1ZGUgIk9iamVjdEFs
bG9jYXRpb25Qcm9maWxlLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgotI2luY2x1ZGUgIk9wZXJh
dGlvbnMuaCIKICNpbmNsdWRlICJQdXRQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJJbnN0cnVj
dGlvbi5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0
aXNvbmluZ1dhdGNocG9pbnQuY3BwCmluZGV4IDk4NmUwM2QwY2JhNzE4NWIzOWNlZTAyM2Y0YWI2
YmM5YjhjY2I2ZTQuLjcwZWY5YjQyOTAxYzA1OGJjNzJjOWRiOTJkY2MzM2Q1M2Q2YmFhYzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9j
a0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcApAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbi5o
IgogI2luY2x1ZGUgIkRGR0V4aXRQcm9maWxlLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5o
IgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggMWRmYjVhYzZhZDkwOTNmOGY4MTEw
MWVmN2YyZTYxMjMxMWFjMTkzOS4uNDMzOTBkOTY1ZmM1MDM0MDE2ZjdiZmZmMjNlNjhiYjFlMDU0
NTUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suY3BwCkBAIC00OSw5ICs0OSw5IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtl
ZFByb2dyYW1Db2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayIs
CiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRFdmFsQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxp
bmtlZEV2YWxDb2RlQmxvY2siLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKFVubGlua2VkRXZhbENvZGVCbG9jaykgfTsKIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrIiwg
JkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrKSB9OwogCi1zdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJh
dGVGdW5jdGlvbkNvZGVCbG9jayhWTSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVy
TW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2sqIGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2soVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIGtpbmQsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9k
ZSBwcm9maWxlck1vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2Vy
RXJyb3ImIGVycm9yKQogewotICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBib2R5ID0gcGFy
c2U8RnVuY3Rpb25Cb2R5Tm9kZT4oJnZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMo
KSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpID8g
SlNQYXJzZVN0cmljdCA6IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VGdW5jdGlvbkNvZGUsIGVycm9y
KTsKKyAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSA9IHBhcnNlPEZ1bmN0aW9uQm9k
eU5vZGU+KCZ2bSwgc291cmNlLCBleGVjdXRhYmxlLT5wYXJhbWV0ZXJzKCksIGV4ZWN1dGFibGUt
Pm5hbWUoKSwgZXhlY3V0YWJsZS0+dG9TdHJpY3RuZXNzKCksIEpTUGFyc2VGdW5jdGlvbkNvZGUs
IGVycm9yKTsKIAogICAgIGlmICghYm9keSkgewogICAgICAgICBBU1NFUlQoZXJyb3IubV90eXBl
ICE9IFBhcnNlckVycm9yOjpFcnJvck5vbmUpOwpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhWTSYgdm0s
IFVubGlua2VkRnVuYwogICAgIGJvZHktPmZpbmlzaFBhcnNpbmcoZXhlY3V0YWJsZS0+cGFyYW1l
dGVycygpLCBleGVjdXRhYmxlLT5uYW1lKCksIGV4ZWN1dGFibGUtPmZ1bmN0aW9uTmFtZUlzSW5T
Y29wZVRvZ2dsZSgpKTsKICAgICBleGVjdXRhYmxlLT5yZWNvcmRQYXJzZShib2R5LT5mZWF0dXJl
cygpLCBib2R5LT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKICAgICAKLSAgICBVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVh
dGUoJnZtLCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFibGVJbmZvKGJvZHktPm5lZWRzQWN0aXZhdGlv
bigpLCBib2R5LT51c2VzRXZhbCgpLCBib2R5LT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2Rl
Rm9yQ29uc3RydWN0KSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0g
VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLCBFeGVj
dXRhYmxlSW5mbyhib2R5LT5uZWVkc0FjdGl2YXRpb24oKSwgYm9keS0+dXNlc0V2YWwoKSwgYm9k
eS0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5k
ID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uKSk7CiAgICAgT3duUHRyPEJ5dGVjb2RlR2VuZXJh
dG9yPiBnZW5lcmF0b3IoYWRvcHRQdHIobmV3IEJ5dGVjb2RlR2VuZXJhdG9yKHZtLCBib2R5Lmdl
dCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlKSkpOwogICAgIGVycm9yID0g
Z2VuZXJhdG9yLT5nZW5lcmF0ZSgpOwogICAgIGJvZHktPmRlc3Ryb3lEYXRhKCk7CkBAIC04Miwx
MyArODIsMTQgQEAgdW5zaWduZWQgVW5saW5rZWRDb2RlQmxvY2s6OmFkZE9yRmluZENvbnN0YW50
KEpTVmFsdWUgdikKICAgICByZXR1cm4gYWRkQ29uc3RhbnQodik7CiB9CiAKLVVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5v
ZGUqIG5vZGUsIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSkKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJv
b2wgaXNGcm9tR2xvYmFsQ29kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCkKICAgICA6IEJh
c2UoKnZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX251bUNhcHR1cmVkVmFyaWFibGVzKG5vZGUtPmNh
cHR1cmVkVmFyaWFibGVDb3VudCgpKQogICAgICwgbV9mb3JjZVVzZXNBcmd1bWVudHMobm9kZS0+
dXNlc0FyZ3VtZW50cygpKQogICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChub2RlLT5pc1N0cmlj
dE1vZGUoKSkKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMobm9kZS0+aGFzQ2FwdHVyZWRW
YXJpYWJsZXMoKSkKICAgICAsIG1faXNGcm9tR2xvYmFsQ29kZShpc0Zyb21HbG9iYWxDb2RlKQor
ICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihraW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9u
KQogICAgICwgbV9uYW1lKG5vZGUtPmlkZW50KCkpCiAgICAgLCBtX2luZmVycmVkTmFtZShub2Rl
LT5pbmZlcnJlZE5hbWUoKSkKICAgICAsIG1fcGFyYW1ldGVycyhub2RlLT5wYXJhbWV0ZXJzKCkp
CkBAIC0xNjYsNyArMTY3LDcgQEAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OmNvZGVCbG9ja0ZvcihWTSYgdm0sIGNvbnMKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCi0gICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2Vu
ZXJhdGVGdW5jdGlvbkNvZGVCbG9jayh2bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktp
bmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CisgICAgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayh2bSwgdGhp
cywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2Rl
LCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtl
ZE5vcm1hbEZ1bmN0aW9uLCBlcnJvcik7CiAgICAgCiAgICAgaWYgKGVycm9yLm1fdHlwZSAhPSBQ
YXJzZXJFcnJvcjo6RXJyb3JOb25lKQogICAgICAgICByZXR1cm4gMDsKQEAgLTIxMCw2ICsyMTEs
NyBAQCBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgQ29kZVR5cGUgY29kZQogICAgICwgbV9pc1N0cmljdE1vZGUoaW5mby5t
X2lzU3RyaWN0TW9kZSkKICAgICAsIG1faXNDb25zdHJ1Y3RvcihpbmZvLm1faXNDb25zdHJ1Y3Rv
cikKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRp
bkZ1bmN0aW9uKGluZm8ubV9pc0J1aWx0aW5GdW5jdGlvbikKICAgICAsIG1fZmlyc3RMaW5lKDAp
CiAgICAgLCBtX2xpbmVDb3VudCgwKQogICAgICwgbV9lbmRDb2x1bW4oVUlOVF9NQVgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmlu
ZGV4IGI5ZGFlMmQ1YzY5Yzc5Y2VhYWE4MDIzZDJhM2ExZjI2ZDQ2MDk0M2IuLmFiZjZjZjM1Yjkz
MDZhNGY3YTMwMWFiMGRmNzY2NmVjNjEyZTM3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC02NiwyNiArNjYsMzUgQEAg
dHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOwogdHlwZWRl
ZiB1bnNpZ25lZCBVbmxpbmtlZExMSW50Q2FsbExpbmtJbmZvOwogCiBzdHJ1Y3QgRXhlY3V0YWJs
ZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVz
ZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yKQorICAgIEV4ZWN1
dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3Ry
aWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKQogICAg
ICAgICA6IG1fbmVlZHNBY3RpdmF0aW9uKG5lZWRzQWN0aXZhdGlvbikKICAgICAgICAgLCBtX3Vz
ZXNFdmFsKHVzZXNFdmFsKQogICAgICAgICAsIG1faXNTdHJpY3RNb2RlKGlzU3RyaWN0TW9kZSkK
ICAgICAgICAgLCBtX2lzQ29uc3RydWN0b3IoaXNDb25zdHJ1Y3RvcikKKyAgICAgICAgLCBtX2lz
QnVpbHRpbkZ1bmN0aW9uKGlzQnVpbHRpbkZ1bmN0aW9uKQogICAgIHsKICAgICB9Ci0gICAgYm9v
bCBtX25lZWRzQWN0aXZhdGlvbjsKLSAgICBib29sIG1fdXNlc0V2YWw7Ci0gICAgYm9vbCBtX2lz
U3RyaWN0TW9kZTsKLSAgICBib29sIG1faXNDb25zdHJ1Y3RvcjsKKyAgICBib29sIG1fbmVlZHNB
Y3RpdmF0aW9uIDogMTsKKyAgICBib29sIG1fdXNlc0V2YWwgOiAxOworICAgIGJvb2wgbV9pc1N0
cmljdE1vZGUgOiAxOworICAgIGJvb2wgbV9pc0NvbnN0cnVjdG9yIDogMTsKKyAgICBib29sIG1f
aXNCdWlsdGluRnVuY3Rpb24gOiAxOworfTsKKworZW51bSBVbmxpbmtlZEZ1bmN0aW9uS2luZCB7
CisgICAgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwKKyAgICBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlv
biwKIH07CiAKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGljIEpTQ2Vs
bCB7CiBwdWJsaWM6CisgICAgZnJpZW5kIGNsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlczsKICAgICBm
cmllbmQgY2xhc3MgQ29kZUNhY2hlOworICAgIGZyaWVuZCBjbGFzcyBWTTsKICAgICB0eXBlZGVm
IEpTQ2VsbCBCYXNlOwotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3Jl
YXRlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbkJvZHlOb2RlKiBu
b2RlLCBib29sIGlzRnJvbUdsb2JhbENvZGUgPSBmYWxzZSkKKyAgICBzdGF0aWMgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgRnVuY3Rpb25Cb2R5Tm9kZSogbm9kZSwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlLCBVbmxpbmtl
ZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCkKICAgICB7Ci0gICAgICAgIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVhcCkpIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUu
Z2V0KCksIHNvdXJjZSwgbm9kZSwgaXNGcm9tR2xvYmFsQ29kZSk7CisgICAgICAgIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVhcCkpIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0
KCksIHNvdXJjZSwgbm9kZSwgaXNGcm9tR2xvYmFsQ29kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQp
OwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oKnZtKTsKICAgICAgICAgcmV0dXJu
IGluc3RhbmNlOwogICAgIH0KQEAgLTk5LDYgKzEwOCwxNCBAQCBwdWJsaWM6CiAgICAgfQogICAg
IHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0OwogICAgIGJvb2wgaXNJblN0cmljdENvbnRl
eHQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0OyB9CisgICAgSlNQYXJzZXJT
dHJpY3RuZXNzIHRvU3RyaWN0bmVzcygpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9pc0J1
aWx0aW5GdW5jdGlvbikKKyAgICAgICAgICAgIHJldHVybiBKU1BhcnNlQnVpbHRpbjsKKyAgICAg
ICAgaWYgKG1faXNJblN0cmljdENvbnRleHQpCisgICAgICAgICAgICByZXR1cm4gSlNQYXJzZVN0
cmljdDsKKyAgICAgICAgcmV0dXJuIEpTUGFyc2VOb3JtYWw7CisgICAgfQogICAgIEZ1bmN0aW9u
TmFtZUlzSW5TY29wZVRvZ2dsZSBmdW5jdGlvbk5hbWVJc0luU2NvcGVUb2dnbGUoKSBjb25zdCB7
IHJldHVybiBtX2Z1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZTsgfQogCiAgICAgdW5zaWduZWQg
Zmlyc3RMaW5lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdExpbmVPZmZzZXQ7IH0KQEAg
LTE0Miw4ICsxNTksMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0ltbW9y
dGFsU3RydWN0dXJlID0gdHJ1ZTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwog
CisgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGlu
RnVuY3Rpb247IH0KKwogcHJpdmF0ZToKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShW
TSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbkJvZHlOb2RlKiwgYm9v
bCBpc0Zyb21HbG9iYWxDb2RlKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSos
IFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbkJvZHlOb2RlKiwgYm9vbCBp
c0Zyb21HbG9iYWxDb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCk7CiAgICAgV3JpdGVCYXJyaWVy
PFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fY29kZUJsb2NrRm9yQ2FsbDsKICAgICBXcml0
ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV9jb2RlQmxvY2tGb3JDb25zdHJ1
Y3Q7CiAKQEAgLTE1Miw2ICsxNzEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0luU3RyaWN0
Q29udGV4dCA6IDE7CiAgICAgYm9vbCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIDogMTsKICAgICBi
b29sIG1faXNGcm9tR2xvYmFsQ29kZSA6IDE7CisgICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9u
IDogMTsKIAogICAgIElkZW50aWZpZXIgbV9uYW1lOwogICAgIElkZW50aWZpZXIgbV9pbmZlcnJl
ZE5hbWU7CkBAIC0zMTksNiArMzM5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNOdW1lcmlj
Q29tcGFyZUZ1bmN0aW9uKGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKSB7IG1faXNOdW1l
cmljQ29tcGFyZUZ1bmN0aW9uID0gaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CiAgICAgYm9v
bCBpc051bWVyaWNDb21wYXJlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzTnVtZXJpY0Nv
bXBhcmVGdW5jdGlvbjsgfQogCisgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KKyAgICAKICAgICB2b2lkIHNocmlua1RvRml0
KCkKICAgICB7CiAgICAgICAgIG1fanVtcFRhcmdldHMuc2hyaW5rVG9GaXQoKTsKQEAgLTUwMCw2
ICs1MjIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1N0cmljdE1vZGUgOiAxOwogICAgIGJv
b2wgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICBib29sIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMg
OiAxOworICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CiAgICAgdW5zaWduZWQgbV9m
aXJzdExpbmU7CiAgICAgdW5zaWduZWQgbV9saW5lQ291bnQ7CiAgICAgdW5zaWduZWQgbV9lbmRD
b2x1bW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDY4MTBhYjgwMDJjZTZiYjhkNzhlN2ZmMjIyN2Y0
YzZlYTdiNzU4YzIuLmVjNTIxYjUzMDQ2MzkyM2U3NGMwMTBmYTIxOGU1OWVkMmE5YTNjYWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCkBAIC0xNzUsNiArMTc1LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtl
ZFAKICNlbmRpZgogICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKICAgICAsIG1fZXhwcmVz
c2lvblRvb0RlZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGZhbHNlKQogewog
ICAgIGlmIChtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKQogICAgICAgICBtX2NvZGVCbG9jay0+c2V0
TmVlZHNGdWxsU2NvcGVDaGFpbih0cnVlKTsKQEAgLTIyMiw3ICsyMjMsMTMgQEAgQnl0ZWNvZGVH
ZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Cb2R5Tm9kZSogZnVu
Y3Rpb25Cb2R5LCBVbmwKICNlbmRpZgogICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKICAg
ICAsIG1fZXhwcmVzc2lvblRvb0RlZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9u
KGNvZGVCbG9jay0+aXNCdWlsdGluRnVuY3Rpb24oKSkKIHsKKyAgICBpZiAobV9pc0J1aWx0aW5G
dW5jdGlvbikgeworICAgICAgICBtX3Nob3VsZEVtaXRQcm9maWxlSG9va3MgPSBmYWxzZTsKKyAg
ICAgICAgbV9zaG91bGRFbWl0RGVidWdIb29rcyA9IGZhbHNlOworICAgIH0KKwogICAgIGlmICht
X3Nob3VsZEVtaXREZWJ1Z0hvb2tzKQogICAgICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNGdWxs
U2NvcGVDaGFpbih0cnVlKTsKIApAQCAtNDM4LDYgKzQ0NSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRF
dmFsQ29kCiAjZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAgICAgLCBtX2V4
cHJlc3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihmYWxzZSkK
IHsKICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNGdWxsU2NvcGVDaGFpbih0cnVlKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCmluZGV4IDRlOWYyMTNjOWJmYTZjZjE5NGIxYTE0ZmU5MTllODMzMzdhZTM1ZDkuLjE1
ODQyNzRiNzhlYTZjMGJkMGVmYjBiOTgyNWM4MThiZTBkYmMwNjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAg
LTQ2MSw3ICs0NjEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBzaG91bGRFbWl0
RGVidWdIb29rcygpIHsgcmV0dXJuIG1fc2hvdWxkRW1pdERlYnVnSG9va3M7IH0KICAgICAgICAg
CiAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2st
PmlzU3RyaWN0TW9kZSgpOyB9Ci0KKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNCdWlsdGluRnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisgICAgICAgIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMYWJlbDsKICAgICAgICAgCkBAIC01
NDMsNyArNTQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogbWFrZUZ1bmN0aW9uKEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgYm9keSk7CisgICAgICAgICAg
ICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3Bl
Tm9kZS0+c291cmNlKCksIGJvZHksIGZhbHNlLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5r
ZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uKTsKICAgICAgICAgfQog
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbml0TGF6eVJlZ2lzdGVyKFJlZ2lzdGVySUQqKTsK
QEAgLTY3Nyw2ICs2NzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIG1fdXNl
c0V4Y2VwdGlvbnM7CiAgICAgICAgIGJvb2wgbV9leHByZXNzaW9uVG9vRGVlcDsKKyAgICAgICAg
Ym9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9uOwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAxZmZkNGYz
MTE4ODJkMGVlNWM1NTE0ZjViOGIyNTkzOWQ5NzVlMzc5Li42MmVjYTM2YTEwZDc3MDhhOTI4ZDQz
YWMwM2YyZmM4NjE1Y2VjYTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0yNiwxMCArMjYsMTAgQEAKIAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCi0jaW5jbHVkZSAiTm9kZUNvbnN0cnVj
dG9ycy5oIgogCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJDYWxs
RnJhbWUuaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkRlYnVn
Z2VyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtMzgs
NiArMzgsNyBAQAogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJMYWJlbFNjb3Bl
LmgiCiAjaW5jbHVkZSAiTGV4ZXIuaCIKKyNpbmNsdWRlICJOb2RlQ29uc3RydWN0b3JzLmgiCiAj
aW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlBy
b3BlcnR5TmFtZUFycmF5LmgiCkBAIC01MzUsMzYgKzUzNiwzOSBAQCBSZWdpc3RlcklEKiBDYWxs
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsCiAgICAgUmVmUHRyPExhYmVsPiBlbmQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwog
ICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1
YmV4cHJlc3Npb25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwotICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERl
c3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIG1faWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3Rp
bmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuY2FsbCk7
CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0LCBmdW5jdGlvbi5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZO
b3RGdW5jdGlvbkNhbGwoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKKyAgICBib29s
IGVtaXRDYWxsQ2hlY2sgPSAhZ2VuZXJhdG9yLmlzQnVpbHRpbkZ1bmN0aW9uKCk7CisgICAgaWYg
KGVtaXRDYWxsQ2hlY2spCisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25D
YWxsKGZ1bmN0aW9uLmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7CisKICAgICB7CiAgICAgICAgIGlm
IChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpIHsKICAg
ICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIG9sZExpc3QgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7
CiAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1f
bmV4dDsKLQorICAgICAgICAgICAgCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVh
bEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24o
ZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVu
dHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNh
bGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG9sZExpc3QtPm1fZXhwcik7CiAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQo
KSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQo
KSk7Ci0KICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9sZExpc3Q7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0g
Z2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5n
ZXQoKSk7CiAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9y
LCBtX2FyZ3MpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMu
dGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRG
dW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOwogICAgICAgICB9
CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOwotICAgIHsK
LSAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsK
LSAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCks
IGJhc2UuZ2V0KCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0
KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRp
dm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2sp
IHsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CisgICAgICAgIGdlbmVy
YXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOworICAgICAgICB7CisgICAgICAgICAgICBD
YWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2Uu
Z2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgp
LCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZv
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICB9CisgICAgICAgIGdlbmVy
YXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJl
bChlbmQuZ2V0KCkpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZS5nZXQoKTsKIH0KIApAQCAtNTg1
LDY1ICs1ODksNjcgQEAgUmVnaXN0ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICBSZWZQdHI8TGFiZWw+
IGVuZCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNl
ID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYmFzZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNz
aW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4
cHJlc3Npb25FbmQoKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uID0gZ2VuZXJh
dG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQo
KSwgbV9pZGVudCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uOwogICAgIFJlZlB0
cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRz
dCwgZnVuY3Rpb24uZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25B
cHBseShmdW5jdGlvbi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkpOwotICAgIHsKLSAgICAgICAgaWYg
KG1heUJlQ2FsbCkgewotICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2Fy
Z3MtPm1fbGlzdE5vZGUtPm1fZXhwcikgewotICAgICAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5v
ZGUqIG9sZExpc3QgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7Ci0gICAgICAgICAgICAgICAgaWYgKG1f
YXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCht
X2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByLT5pc1NpbXBsZUFycmF5KCkpOwotICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX25l
eHQpOwotICAgICAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBzdGF0aWNfY2Fz
dDxBcnJheU5vZGUqPihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByKS0+dG9Bcmd1
bWVudExpc3QoZ2VuZXJhdG9yLnZtKCksIDAsIDApOwotICAgICAgICAgICAgICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRv
ci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAg
IENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAgICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rl
cigpLCBvbGRMaXN0LT5tX2V4cHIpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1
bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fYXJncy0+
bV9saXN0Tm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwotICAgICAgICAgICAgICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3Zl
KGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7
Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRo
aXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwotICAgICAgICAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9F
eHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtX2FyZ3MtPm1f
bGlzdE5vZGUgPSBvbGRMaXN0OworICAgIGJvb2wgZW1pdENhbGxDaGVjayA9ICFnZW5lcmF0b3Iu
aXNCdWlsdGluRnVuY3Rpb24oKTsKKyAgICBpZiAoZW1pdENhbGxDaGVjaykgeworICAgICAgICBm
dW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9u
KGRzdCksIGJhc2UuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYXBwbHkpOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHkoZnVuY3Rpb24uZ2V0KCks
IHJlYWxDYWxsLmdldCgpKTsKKyAgICB9CisgICAgaWYgKG1heUJlQ2FsbCkgeworICAgICAgICBp
ZiAobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKSB7Cisg
ICAgICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2Rl
OworICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KSB7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHItPmlzU2lt
cGxlQXJyYXkoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5vZGUt
Pm1fbmV4dC0+bV9uZXh0KTsKKyAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBz
dGF0aWNfY2FzdDxBcnJheU5vZGUqPihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHBy
KS0+dG9Bcmd1bWVudExpc3QoZ2VuZXJhdG9yLnZtKCksIDAsIDApOworICAgICAgICAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2Vu
ZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKKyAgICAgICAgICAgICAg
ICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBvbGRMaXN0LT5tX2V4cHIpOworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChy
ZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24s
IGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG1f
YXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwogICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0
aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRz
IGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgp
KTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlz
UmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3Rl
ZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gb2xk
TGlzdDsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlz
dE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQpOwotICAgICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHByb2ZpbGVIb29rUmVnaXN0ZXI7Ci0gICAgICAgICAgICBpZiAoZ2VuZXJh
dG9yLnNob3VsZEVtaXRQcm9maWxlSG9va3MoKSkKLSAgICAgICAgICAgICAgICBwcm9maWxlSG9v
a1JlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3Iu
dGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHRoaXNSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2FyZ3MtPm1fbGlz
dE5vZGUtPm1fZXhwcik7Ci0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXJnc1JlZ2lz
dGVyOwotICAgICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogYXJncyA9IG1fYXJncy0+bV9saXN0
Tm9kZS0+bV9uZXh0OwotICAgICAgICAgICAgaWYgKGFyZ3MtPm1fZXhwci0+aXNSZXNvbHZlTm9k
ZSgpICYmIGdlbmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHN0YXRpY19jYXN0PFJlc29s
dmVOb2RlKj4oYXJncy0+bV9leHByKS0+aWRlbnRpZmllcigpKSkKLSAgICAgICAgICAgICAgICBh
cmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IudW5jaGVja2VkUmVnaXN0ZXJGb3JBcmd1bWVudHMoKTsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0
b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKLQotICAgICAgICAgICAgLy8gRnVuY3Rpb24ucHJv
dG90eXBlLmFwcGx5IGlnbm9yZXMgZXh0cmEgYXJndW1lbnRzLCBidXQgd2Ugc3RpbGwKLSAgICAg
ICAgICAgIC8vIG5lZWQgdG8gZXZhbHVhdGUgdGhlbSBmb3Igc2lkZSBlZmZlY3RzLgotICAgICAg
ICAgICAgd2hpbGUgKChhcmdzID0gYXJncy0+bV9uZXh0KSkKLSAgICAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKLQotICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRDYWxsVmFyYXJncyhyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCB0aGlz
UmVnaXN0ZXIuZ2V0KCksIGFyZ3NSZWdpc3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpLCBwcm9maWxlSG9va1JlZ2lzdGVyLmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOworICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVy
YXRvciwgbV9hcmdzKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1l
bnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVj
dGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RF
bmQoKSk7CiAgICAgICAgIH0KLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2Fy
Z3MtPm1fbGlzdE5vZGUtPm1fbmV4dCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9m
aWxlSG9va1JlZ2lzdGVyOworICAgICAgICBpZiAoZ2VuZXJhdG9yLnNob3VsZEVtaXRQcm9maWxl
SG9va3MoKSkKKyAgICAgICAgICAgIHByb2ZpbGVIb29rUmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBn
ZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdl
dCgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNSZWdpc3RlciA9IGdlbmVyYXRv
ci5lbWl0Tm9kZShtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcik7CisgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBhcmdzUmVnaXN0ZXI7CisgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3Mg
PSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKKyAgICAgICAgaWYgKGFyZ3MtPm1fZXhwci0+
aXNSZXNvbHZlTm9kZSgpICYmIGdlbmVyYXRvci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHN0YXRp
Y19jYXN0PFJlc29sdmVOb2RlKj4oYXJncy0+bV9leHByKS0+aWRlbnRpZmllcigpKSkKKyAgICAg
ICAgICAgIGFyZ3NSZWdpc3RlciA9IGdlbmVyYXRvci51bmNoZWNrZWRSZWdpc3RlckZvckFyZ3Vt
ZW50cygpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0
b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKKworICAgICAgICAvLyBGdW5jdGlvbi5wcm90b3R5
cGUuYXBwbHkgaWdub3JlcyBleHRyYSBhcmd1bWVudHMsIGJ1dCB3ZSBzdGlsbAorICAgICAgICAv
LyBuZWVkIHRvIGV2YWx1YXRlIHRoZW0gZm9yIHNpZGUgZWZmZWN0cy4KKyAgICAgICAgd2hpbGUg
KChhcmdzID0gYXJncy0+bV9uZXh0KSkKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShh
cmdzLT5tX2V4cHIpOworCisgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbFZhcmFyZ3MocmV0dXJu
VmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBhcmdz
UmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcHJvZmlsZUhvb2tSZWdp
c3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICB9Ci0g
ICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChyZWFsQ2FsbC5nZXQoKSk7Ci0gICAgeworICAgIGlmIChl
bWl0Q2FsbENoZWNrKSB7CisgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOwor
ICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKICAgICAgICAgQ2Fs
bEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkp
OwogICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9u
LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdl
dCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0KCkpOwogICAgIHJl
dHVybiByZXR1cm5WYWx1ZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9o
YXNoX3RhYmxlCmluZGV4IDM5Nzk3NmIwNmM3YTliNTgzNjMzMjkwMGE2ZWJiOTNlYzY4Yjc0ODYu
LmNhZDY1YmM0Y2M4ODhlMzE0Zjg4ZDY2NWRkNGE2ZTY0NWEwOWEzNTUgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUKQEAgLTI4OSw3ICsyODksMTcgQEAgc3ViIG91dHB1
dCgpIHsKICAgICAgICAgICAgICRpbnRyaW5zaWMgPSAiUmVnRXhwVGVzdEludHJpbnNpYyIgaWYg
KCRrZXkgZXEgInRlc3QiKTsKICAgICAgICAgfQogCisgICAgICAgIGlmICgkdmFsdWVzWyRpXXsi
dHlwZSJ9IGVxICJGdW5jdGlvbiIpICB7CisgICAgICAgICAgICBteSAkdGFibGVIZWFkID0gJG5h
bWU7CisgICAgICAgICAgICAkdGFibGVIZWFkID1+IHMvVGFibGUkLy87CisgICAgICAgICAgICBw
cmludCAiICNpZiBKU0NfQlVJTFRJTl9FWElTVFMoIiAuIHVjKCR0YWJsZUhlYWQgLiAka2V5KSAu
IilcbiI7CisgICAgICAgICAgICBwcmludCAiICAgeyBcIiRrZXlcIiwgKCgkYXR0cnNbJGldKSAm
IH5GdW5jdGlvbikgfCBCdWlsdGluLCAkaW50cmluc2ljLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
QnVpbHRpbkdlbmVyYXRvcj4oIiAuICR0YWJsZUhlYWQgLiB1Y2ZpcnN0KCRrZXkpIC4gIkNvZGVH
ZW5lcmF0b3IpLCAoaW50cHRyX3QpJHNlY29uZFZhbHVlIH0sXG4iOworICAgICAgICAgICAgcHJp
bnQgIiAjZWxzZVxuIgorICAgICAgICB9CiAgICAgICAgIHByaW50ICIgICB7IFwiJGtleVwiLCAk
YXR0cnNbJGldLCAkaW50cmluc2ljLCAoaW50cHRyX3QpIiAuICRmaXJzdENhc3RTdHIgLiAiKCRm
aXJzdFZhbHVlKSwgKGludHB0cl90KSIgLiAkc2Vjb25kQ2FzdFN0ciAuICIoJHNlY29uZFZhbHVl
KSB9LFxuIjsKKyAgICAgICAgaWYgKCR2YWx1ZXNbJGldeyJ0eXBlIn0gZXEgIkZ1bmN0aW9uIikg
IHsKKyAgICAgICAgICAgIHByaW50ICIgI2VuZGlmXG4iCisgICAgICAgIH0KICAgICAgICAgJGkr
KzsKICAgICB9CiAgICAgcHJpbnQgIiAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIDAsIDAgfVxuIjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9taW5hdG9ycy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWluYXRvcnMuY3BwCmluZGV4IGE1YWU2
MTRiOTE5YjBmZDQzNDgyZDAxNWNjMjk1MDg0MGU1NGIyNjEuLjIwMDk2ZTczYjM1MTU5Yzc0MzRi
ZDI3YWI2ZjYzMzM3ZmU5ZGY0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9taW5hdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b21pbmF0b3JzLmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiREZHRG9taW5hdG9ycy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgi
CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29kZS5jcHAKaW5kZXggOTNjNDFmYmRlNDQ3NjRiNmE2ZmVlMGIyNGI0ODQ5YWVkYjExNzRjNS4u
ZDg2YWM4YjQxMzczMWNiOGRiZGY0YWQzM2VmYTVkNzg1MjA1MWEwMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxF
KERGR19KSVQpCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDJmZjBjMzQxNDZlMmMw
YmEyZmY3NmM0ZDNmN2M0NmJhM2UyNTUxNDcuLjkwNDRjZGM2YjhjM2FkNGExZTk0MTg4ZGQxZDBl
MjAwZTY5ZmI5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2luY2x1
ZGUgIlZNLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lu
bGluZXMuaCIKICNpbmNsdWRlICJOYW1lSW5zdGFuY2UuaCIKICNpbmNsdWRlICJPYmplY3RDb25z
dHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9nZW5lcmF0ZS1qcy1idWlsdGlucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZWUxYzdhN2NjZGQ5Mzc2OTIwZTc2
ZDdmZThkMzBhZjk1NWYzMWE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5zCkBAIC0wLDAgKzEsMzA0IEBACisjIS91c3IvYmluL3B5
dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisjIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorIyBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorIyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisjIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGZpbGVjbXAKK2ltcG9ydCBmbm1hdGNoCitpbXBv
cnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHNodXRpbAoraW1wb3J0IHN5cworaW1wb3J0IGRhdGV0
aW1lCitpbXBvcnQganNvbgorCitjb3B5cmlnaHRUZXh0ID0gIiIiICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi9cbgorIiIiCisKK2dlbmVyYXRvclN0cmluZyA9ICIvKiBH
ZW5lcmF0ZWQgYnkgJXMgZG8gbm90IGhhbmQgZWRpdC4gKi9cbiIgJSBvcy5wYXRoLmJhc2VuYW1l
KF9fZmlsZV9fKQorCitmdW5jdGlvbkhlYWRSZWdFeHAgPSByZS5jb21waWxlKHIiZnVuY3Rpb25c
cytcdytccypcKC4qP1wpIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK2Z1bmN0aW9uTmFtZVJlZ0V4
cCA9IHJlLmNvbXBpbGUociJmdW5jdGlvblxzKyhcdyspXHMqXCgiLCByZS5NVUxUSUxJTkUgfCBy
ZS5TKQorZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIgPSByZS5jb21waWxlKHIiXmZ1bmN0aW9uXHMr
KD86XHcrKVxzKlwoKCg/OlxzKlx3Kyk/XHMqKD86XHMqLFxzKlx3KykqKT9cKSIsIHJlLk1VTFRJ
TElORSB8IHJlLlMpCisKK211bHRpbGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9c
Ki4qP1wqXC8iLCByZS5NVUxUSUxJTkUgfCByZS5TKQorc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAg
PSByZS5jb21waWxlKHIiXC9cLy4qP1xuIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKKworZGVmIGdl
dENvcHlyaWdodChzb3VyY2UpOgorICAgIGNvcHlyaWdodEJsb2NrID0gbXVsdGlsaW5lQ29tbWVu
dFJlZ0V4cC5maW5kYWxsKHNvdXJjZSlbMF0KKyAgICBjb3B5cmlnaHRCbG9jayA9IGNvcHlyaWdo
dEJsb2NrWzpjb3B5cmlnaHRCbG9jay5pbmRleCgiUmVkaXN0cmlidXRpb24iKV0KKyAgICBjb3B5
UmlnaHRMaW5lcyA9IFtdCisKKyAgICBmb3IgbGluZSBpbiBjb3B5cmlnaHRCbG9jay5zcGxpdCgi
XG4iKToKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiLyoiLCAiIikKKyAgICAgICAgbGlu
ZSA9IGxpbmUucmVwbGFjZSgiKi8iLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgi
KiIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCJDb3B5cmlnaHQiLCAiIikKKyAg
ICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiY29weXJpZ2h0IiwgIiIpCisgICAgICAgIGxpbmUg
PSBsaW5lLnJlcGxhY2UoIihDKSIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIo
YykiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgICAgICBpZiBsZW4obGlu
ZSkgPT0gMDoKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgY29weVJpZ2h0TGluZXMu
YXBwZW5kKGxpbmUpCisgICAgCisgICAgcmV0dXJuIGxpc3Qoc2V0KGNvcHlSaWdodExpbmVzKSkK
KworCisKK2RlZiBnZXRGdW5jdGlvbnMoc291cmNlKToKKworICAgIHNvdXJjZSA9IG11bHRpbGlu
ZUNvbW1lbnRSZWdFeHAuc3ViKCIvKiovIiwgc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAuc3ViKCIv
L1xuIiwgc291cmNlKSkKKworICAgIG1hdGNoZXMgPSBbIGYgZm9yIGYgaW4gZnVuY3Rpb25IZWFk
UmVnRXhwLmZpbmRpdGVyKHNvdXJjZSldCisgICAgZnVuY3Rpb25Cb3VuZHMgPSBbXQorICAgIHN0
YXJ0ID0gMAorICAgIGVuZCA9IDAKKyAgICBmb3IgbWF0Y2ggaW4gbWF0Y2hlczoKKyAgICAgICAg
c3RhcnQgPSBtYXRjaC5zdGFydCgpCisgICAgICAgIGlmIHN0YXJ0IDwgZW5kOgorICAgICAgICAg
ICAgY29udGludWUKKyAgICAgICAgZW5kID0gbWF0Y2guZW5kKCkKKyAgICAgICAgd2hpbGUgc291
cmNlW2VuZF0gIT0gJ3snOgorICAgICAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICBkZXB0
aCA9IDEKKyAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICB3aGlsZSBkZXB0aCA+IDA6Cisg
ICAgICAgICAgICBpZiBzb3VyY2VbZW5kXSA9PSAneyc6CisgICAgICAgICAgICAgICAgZGVwdGgg
PSBkZXB0aCArIDEKKyAgICAgICAgICAgIGVsaWYgc291cmNlW2VuZF0gPT0gJ30nOgorICAgICAg
ICAgICAgICAgIGRlcHRoID0gZGVwdGggLSAxCisgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisg
ICAgICAgIGZ1bmN0aW9uQm91bmRzLmFwcGVuZCgoc3RhcnQsIGVuZCkpCisKKyAgICBmdW5jdGlv
bnMgPSBbc291cmNlW3N0YXJ0OmVuZF0uc3RyaXAoKSBmb3IgKHN0YXJ0LCBlbmQpIGluIGZ1bmN0
aW9uQm91bmRzXQorICAgIHJlc3VsdCA9IFtdCisgICAgZm9yIGZ1bmN0aW9uIGluIGZ1bmN0aW9u
czoKKyAgICAgICAgZnVuY3Rpb24gPSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLnN1YigiIiwgZnVu
Y3Rpb24pCisgICAgICAgIGZ1bmN0aW9uTmFtZSA9IGZ1bmN0aW9uTmFtZVJlZ0V4cC5maW5kYWxs
KGZ1bmN0aW9uKVswXQorICAgICAgICBmdW5jdGlvblBhcmFtZXRlcnMgPSBmdW5jdGlvblBhcmFt
ZXRlckZpbmRlci5maW5kYWxsKGZ1bmN0aW9uKVswXS5zcGxpdCgnLCcpCisgICAgICAgIGlmIGxl
bihmdW5jdGlvblBhcmFtZXRlcnNbMF0pID09IDA6CisgICAgICAgICAgICBmdW5jdGlvblBhcmFt
ZXRlcnMgPSBbXQorICAgICAgICAgICAgCisgICAgICAgIHJlc3VsdC5hcHBlbmQoKGZ1bmN0aW9u
TmFtZSwgZnVuY3Rpb24sIGZ1bmN0aW9uUGFyYW1ldGVycykpCisgICAgcmV0dXJuIHJlc3VsdAor
ICAgICAgICAKKworZGVmIGdlbmVyYXRlQ29kZShzb3VyY2UpOgorICAgIGlucHV0RmlsZSA9IG9w
ZW4oc291cmNlLCAiciIpCisgICAgYmFzZU5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHNvdXJjZSku
cmVwbGFjZSgiLmpzIiwgIiIpCisgICAgCisgICAgc291cmNlID0gIiIKKyAgICBmb3IgbGluZSBp
biBpbnB1dEZpbGU6CisgICAgICAgIHNvdXJjZSA9IHNvdXJjZSArIGxpbmUKKyAgICAKKyAgICBp
ZiBzeXMucGxhdGZvcm0gPT0gImN5Z3dpbiI6CisgICAgICAgIHNvdXJjZSA9IHNvdXJjZS5yZXBs
YWNlKCJcclxuIiwgIlxuIikKKyAgICByZXR1cm4gKGJhc2VOYW1lLCBnZXRGdW5jdGlvbnMoc291
cmNlKSwgZ2V0Q29weXJpZ2h0KHNvdXJjZSkpCisKK2RlZiBtYW5nbGVOYW1lKG9iamVjdCwgbmFt
ZSk6CisgICAgcU5hbWUgPSBvYmplY3QgKyAiLiIgKyBuYW1lCisgICAgbWFuZ2xlZE5hbWUgPSAi
IgorICAgIGkgPSAwCisgICAgd2hpbGUgaSA8IGxlbihxTmFtZSk6CisgICAgICAgIGlmIHFOYW1l
W2ldID09ICcuJzoKKyAgICAgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWUgKyBxTmFt
ZVtpICsgMV0udXBwZXIoKQorICAgICAgICAgICAgaSA9IGkgKyAxCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lICsgcU5hbWVbaV0KKyAgICAgICAg
aSA9IGkgKyAxCisgICAgcmV0dXJuIG1hbmdsZWROYW1lCisKK2J1aWx0aW5zID0gW10KKworYmFz
ZU5hbWUgPSBzeXMuYXJndlstMV0KK2J1aWx0aW5fZGVmaW5pdGlvbnMgPSBzeXMuYXJndlsxOi0x
XQorKG91dHB1dF9iYXNlLCBfKSA9IG9zLnBhdGguc3BsaXRleHQoc3lzLmFyZ3ZbLTFdKQorCitj
b3B5cmlnaHRzID0gW10KK2ZvciBmaWxlIGluIGJ1aWx0aW5fZGVmaW5pdGlvbnM6CisgICAgaWYg
Zm5tYXRjaC5mbm1hdGNoKGZpbGUsICcqLmpzJyk6CisgICAgICAgIChiYXNlTmFtZSwgZnVuY3Rp
b25zLCBvYmplY3RDb3B5cmlnaHRzKSA9IGdlbmVyYXRlQ29kZShmaWxlKQorICAgICAgICBjb3B5
cmlnaHRzLmV4dGVuZChvYmplY3RDb3B5cmlnaHRzKQorICAgICAgICBidWlsdGlucy5hcHBlbmQo
KGJhc2VOYW1lLCBmdW5jdGlvbnMpKQorCitjb3B5cmlnaHRzID0gbGlzdChzZXQoY29weXJpZ2h0
cykpCisKK2NvcHlyaWdodEJvZHkgPSAiIgorZm9yIGNvcHlyaWdodCBpbiBjb3B5cmlnaHRzOgor
ICAgIGNvcHlyaWdodEJvZHkgPSBjb3B5cmlnaHRCb2R5ICsiICogQ29weXJpZ2h0IChDKSAiICsg
Y29weXJpZ2h0ICsgIlxuIgorCitidWlsdGluc0hlYWRlciA9IG9wZW4ob3V0cHV0X2Jhc2UgKyAi
LmgudG1wIiwgInciKQorYnVpbHRpbnNJbXBsZW1lbnRhdGlvbiA9IG9wZW4ob3V0cHV0X2Jhc2Ug
KyAiLmNwcC50bXAiLCAidyIpCitjb3B5cmlnaHRUZXh0ID0gIi8qXG4iICsgY29weXJpZ2h0Qm9k
eSArIGNvcHlyaWdodFRleHQKK2J1aWx0aW5zSGVhZGVyLndyaXRlKCIiIiVzCislcworCisjaWZu
ZGVmIEpTQ0J1aWx0aW5zX0gKKyNkZWZpbmUgSlNDQnVpbHRpbnNfSAorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgSWRlbnRpZmllcjsKK2NsYXNz
IEpTR2xvYmFsT2JqZWN0OworY2xhc3MgU291cmNlQ29kZTsKK2NsYXNzIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOworY2xhc3MgVk07CisKK0Z1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVp
bHRpbkV4ZWN1dGFibGUoVk0mLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSosIGNvbnN0IFNv
dXJjZUNvZGUmKTsKKworIiIiICUgKGdlbmVyYXRvclN0cmluZywgY29weXJpZ2h0VGV4dCkpCisK
K2NvZGVSZWZlcmVuY2VzID0gW10KKworZm9yIChvYmplY3ROYW1lLCBmdW5jdGlvbnMpIGluIGJ1
aWx0aW5zOgorICAgIHByaW50KCJHZW5lcmF0aW5nIGJpbmRpbmdzIGZvciB0aGUgJXMgYnVpbHRp
bi4iICUgb2JqZWN0TmFtZSkKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiLyogJXMgZnVuY3Rp
b25zICovXG4iICUgb2JqZWN0TmFtZSkKKyAgICBmb3IgKG5hbWUsIGltcGxlbWVudGF0aW9uLCBf
KSBpbiBmdW5jdGlvbnM6CisgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlTmFtZShvYmplY3RO
YW1lLCBuYW1lKQorICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lWzBdLmxvd2VyKCkg
KyBtYW5nbGVkTmFtZVsxOl0gKyAiQ29kZSIKKyAgICAgICAgY29kZVJlZmVyZW5jZXMuYXBwZW5k
KChtYW5nbGVkTmFtZSwgbmFtZSwgaW1wbGVtZW50YXRpb24pKQorICAgICAgICBidWlsdGluc0hl
YWRlci53cml0ZSgiZXh0ZXJuIGNvbnN0IGNoYXIqIHNfJXM7XG4iICUgbWFuZ2xlZE5hbWUpCisg
ICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJleHRlcm4gY29uc3QgaW50IHNfJXNMZW5ndGg7
XG4iICUgbWFuZ2xlZE5hbWUpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuIikKKyAgICBi
dWlsdGluc0hlYWRlci53cml0ZSgiI2RlZmluZSBKU0NfRk9SRUFDSF8lc19CVUlMVElOKG1hY3Jv
KSBcXFxuIiAlIG9iamVjdE5hbWUucmVwbGFjZSgiLiIsICJfIikudXBwZXIoKSkKKyAgICBmb3Ig
KG5hbWUsIGltcGxlbWVudGF0aW9uLCBhcmd1bWVudHMpIGluIGZ1bmN0aW9uczoKKyAgICAgICAg
bWFuZ2xlZE5hbWUgPSBtYW5nbGVOYW1lKG9iamVjdE5hbWUsIG5hbWUpCisgICAgICAgIGJ1aWx0
aW5zSGVhZGVyLndyaXRlKCIgICAgbWFjcm8oJXMsICVzLCAlZCkgXFxcbiIgJSAobmFtZSwgbWFu
Z2xlZE5hbWUsIGxlbihhcmd1bWVudHMpKSkKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiXG4i
KQorICAgIGZvciAobmFtZSwgaW1wbGVtZW50YXRpb24sIGFyZ3VtZW50cykgaW4gZnVuY3Rpb25z
OgorICAgICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiI2RlZmluZSBKU0NfQlVJTFRJTl8lcyAx
XG4iICUgbWFuZ2xlTmFtZShvYmplY3ROYW1lLCBuYW1lKS51cHBlcigpKQorICAgIGJ1aWx0aW5z
SGVhZGVyLndyaXRlKCJcblxuIikKK25hbWVzID0gW10KK2J1aWx0aW5zSGVhZGVyLndyaXRlKCIj
ZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU4obWFjcm8pXFxcbiIpCitmb3IgKGNvZGVSZWZlcmVu
Y2UsIGZ1bmN0aW9uTmFtZSwgc291cmNlKSBpbiBjb2RlUmVmZXJlbmNlczoKKyAgICBidWlsdGlu
c0hlYWRlci53cml0ZSgiICAgIG1hY3JvKCVzLCAlcywgc18lc0xlbmd0aCkgXFxcbiIgJSAoY29k
ZVJlZmVyZW5jZSwgZnVuY3Rpb25OYW1lLCBjb2RlUmVmZXJlbmNlKSkKKyAgICBuYW1lcy5hcHBl
bmQoZnVuY3Rpb25OYW1lKQorCitidWlsdGluc0hlYWRlci53cml0ZSgiXG5cbiIpCitidWlsdGlu
c0hlYWRlci53cml0ZSgiI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUo
bWFjcm8pIFxcXG4iKQorZm9yIG5hbWUgaW4gc29ydGVkKHNldChuYW1lcykpOgorICAgIGJ1aWx0
aW5zSGVhZGVyLndyaXRlKCIgICAgbWFjcm8oJXMpIFxcXG4iICUgbmFtZSkKK2J1aWx0aW5zSGVh
ZGVyLndyaXRlKCIiIgorCisjZGVmaW5lIEpTQ19ERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNv
ZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCisgICAgRnVuY3Rpb25FeGVj
dXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKFZNJik7CisKK0pTQ19GT1JFQUNIX0JVSUxUSU4o
SlNDX0RFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgSlNDX0RFQ0xBUkVfQlVJTFRJ
Tl9HRU5FUkFUT1IKKworI2RlZmluZSBKU0NfQlVJTFRJTl9FWElTVFMobmFtZSkgZGVmaW5lZChK
U0NfQlVJTFRJTl8jI25hbWUpCisKK30KKworI2VuZGlmCisKKyIiIikKKworYnVpbHRpbnNJbXBs
ZW1lbnRhdGlvbi53cml0ZSgiIiIlcworJXMKKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5j
bHVkZSAiSlNDQnVpbHRpbnMuaCIKKworI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgor
I2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5j
bHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKKyIiIiAgJSAoZ2VuZXJhdG9yU3RyaW5n
LCBjb3B5cmlnaHRUZXh0KSkKKworZm9yIChjb2RlUmVmZXJlbmNlLCBuYW1lLCBzb3VyY2UpIGlu
IGNvZGVSZWZlcmVuY2VzOgorICAgIHNvdXJjZSA9ICIoZnVuY3Rpb24gIiArIHNvdXJjZVtzb3Vy
Y2UuaW5kZXgoIigiKTpdICsgIikiCisgICAgbGluZXMgPSBqc29uLmR1bXBzKHNvdXJjZSlbMTot
MV0uc3BsaXQoIlxcbiIpCisgICAgc291cmNlTGVuZ3RoID0gbGVuKHNvdXJjZSkKKyAgICBzb3Vy
Y2UgPSAiIgorICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICBzb3VyY2UgPSBzb3VyY2Ug
KyAoIiAgICBcIiVzXFxuXCIgXFxcbiIgJSBsaW5lKQorICAgIGJ1aWx0aW5zSW1wbGVtZW50YXRp
b24ud3JpdGUoImNvbnN0IGNoYXIqIHNfJXMgPVxuJXM7XG5cbiIgJSAoY29kZVJlZmVyZW5jZSwg
c291cmNlKSkKKyAgICBidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCJjb25zdCBpbnQgc18l
c0xlbmd0aCA9ICVkO1xuXG4iICUgKGNvZGVSZWZlcmVuY2UsIHNvdXJjZUxlbmd0aCArIDEpKSAj
ICsgMSBmb3IgXG4KKworYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiIiIKK0Z1bmN0aW9u
RXhlY3V0YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUoVk0mIHZtLCBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UpCit7CisgICAgdW5zaWduZWQgbGluZUNvdW50ID0gdW5saW5rZWRFeGVjdXRhYmxlLT5saW5l
Q291bnQoKTsKKyAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IDE7CisgICAgdW5zaWduZWQgc291
cmNlTGVuZ3RoID0gdW5saW5rZWRFeGVjdXRhYmxlLT5zb3VyY2VMZW5ndGgoKTsKKyAgICBib29s
IGVuZENvbHVtbklzT25TdGFydExpbmUgPSAhbGluZUNvdW50OworICAgIHVuc2lnbmVkIGVuZENv
bHVtbkV4Y2x1ZGluZ0JyYWNlcyA9IHVubGlua2VkRXhlY3V0YWJsZS0+dW5saW5rZWRCb2R5RW5k
Q29sdW1uKCkgKyAoZW5kQ29sdW1uSXNPblN0YXJ0TGluZSA/IDAgOiAxKTsKKyAgICB1bnNpZ25l
ZCBzdGFydE9mZnNldCA9IHVubGlua2VkRXhlY3V0YWJsZS0+c3RhcnRPZmZzZXQoKTsKKyAgICB1
bnNpZ25lZCBzdGFydE9mZnNldEV4Y2x1ZGluZ09wZW5CcmFjZSA9IHN0YXJ0T2Zmc2V0ICsgMTsK
KyAgICB1bnNpZ25lZCBlbmRPZmZzZXRFeGNsdWRpbmdDbG9zZUJyYWNlID0gc3RhcnRPZmZzZXQg
KyBzb3VyY2VMZW5ndGggLSAxOworICAgIFNvdXJjZUNvZGUgYm9keVNvdXJjZShzb3VyY2UucHJv
dmlkZXIoKSwgc3RhcnRPZmZzZXRFeGNsdWRpbmdPcGVuQnJhY2UsIGVuZE9mZnNldEV4Y2x1ZGlu
Z0Nsb3NlQnJhY2UsIDAsIHN0YXJ0Q29sdW1uKTsKKyAgICByZXR1cm4gRnVuY3Rpb25FeGVjdXRh
YmxlOjpjcmVhdGUodm0sIGJvZHlTb3VyY2UsIHVubGlua2VkRXhlY3V0YWJsZSwgMCwgbGluZUNv
dW50LCBzdGFydENvbHVtbiwgZW5kQ29sdW1uRXhjbHVkaW5nQnJhY2VzLCBmYWxzZSk7Cit9CisK
KyNkZWZpbmUgSlNDX0RFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25O
YW1lLCBhcmd1bWVudENvdW50KSBcXAorRnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2Vu
ZXJhdG9yKFZNJiB2bSkgXFwKK3sgXFwKKyAgICByZXR1cm4gY3JlYXRlQnVpbHRpbkV4ZWN1dGFi
bGUodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLCB2
bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpKTsgXFwKK30KKworSlND
X0ZPUkVBQ0hfQlVJTFRJTihKU0NfREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIEpT
Q19ERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKK30KKworIiIiKQorCitidWlsdGluc0hlYWRlci5j
bG9zZSgpCitidWlsdGluc0ltcGxlbWVudGF0aW9uLmNsb3NlKCkKKworaWYgKG5vdCBvcy5wYXRo
LmV4aXN0cyhvdXRwdXRfYmFzZSArICIuaCIpKSBvciAobm90IGZpbGVjbXAuY21wKG91dHB1dF9i
YXNlICsgIi5oLnRtcCIsIG91dHB1dF9iYXNlICsgIi5oIiwgc2hhbGxvdz1GYWxzZSkpOgorICAg
IG9zLnJlbmFtZShvdXRwdXRfYmFzZSArICIuaC50bXAiLCBvdXRwdXRfYmFzZSArICIuaCIpCitl
bHNlOgorICAgIG9zLnJlbW92ZShvdXRwdXRfYmFzZSArICIuaC50bXAiKQorCitpZiAobm90IG9z
LnBhdGguZXhpc3RzKG91dHB1dF9iYXNlICsgIi5jcHAiKSkgb3IgKG5vdCBmaWxlY21wLmNtcChv
dXRwdXRfYmFzZSArICIuY3BwLnRtcCIsIG91dHB1dF9iYXNlICsgIi5jcHAiLCBzaGFsbG93PUZh
bHNlKSk6CisgICAgb3MucmVuYW1lKG91dHB1dF9iYXNlICsgIi5jcHAudG1wIiwgb3V0cHV0X2Jh
c2UgKyAiLmNwcCIpCitlbHNlOgorICAgIG9zLnJlbW92ZShvdXRwdXRfYmFzZSArICIuY3BwLnRt
cCIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVk
Q2FsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaApp
bmRleCAyY2EzZTk3OTQwYzdjMTEwNmMxYmFiYTFmMzU0ZmU4NDdiNDM4NWIzLi4zMGNhZDJhMTRm
ZmRiZmI0ZDU3Y2Y1YTEyZmNiOTAwZTI2NGY4NzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICAsIG1faW50ZXJwcmV0ZXIoY2FsbEZyYW1lLT5pbnRlcnByZXRl
cigpKQogICAgICAgICAgICAgLCBtX2VudHJ5U2NvcGUoY2FsbEZyYW1lLT52bSgpLCBmdW5jdGlv
bi0+c2NvcGUoKS0+Z2xvYmFsT2JqZWN0KCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VS
VCghZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkpOworICAgICAgICAgICAgQVNTRVJUKCFmdW5j
dGlvbi0+aXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSk7CiAgICAgICAgICAgICBpZiAoY2FsbEZy
YW1lLT52bSgpLmlzU2FmZVRvUmVjdXJzZSgpKSB7CiAgICAgICAgICAgICAgICAgbV9hcmd1bWVu
dHMucmVzaXplKGFyZ3VtZW50Q291bnQpOwogICAgICAgICAgICAgICAgIG1fY2xvc3VyZSA9IG1f
aW50ZXJwcmV0ZXItPnByZXBhcmVGb3JSZXBlYXRDYWxsKGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUo
KSwgY2FsbEZyYW1lLCAmbV9wcm90b0NhbGxGcmFtZSwgZnVuY3Rpb24sIGFyZ3VtZW50Q291bnQg
KyAxLCBmdW5jdGlvbi0+c2NvcGUoKSwgbV9hcmd1bWVudHMuZGF0YSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGNhODkw
YjA2ZWEzM2ZhOWU3ZjFmYTUxYTM1ZWEyZDQ4ZDAwOWEzOGEuLjZjOWJmOTZjMTVmNjA5ZTI2NWNl
MjUwYTQ1YmYwODYxZDA2Y2QxZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIkpT
UHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1N0YWNrSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNsdWRlICJMTEludENMb29wLmgiCiAjaW5jbHVkZSAiTExJ
bnRUaHVua3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9Qcm90b0NhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
UHJvdG9DYWxsRnJhbWUuY3BwCmluZGV4IGYwZTAyYmE0ZTQ3NmY5OWNjOTEzYjA0NjJhZDI3OTUw
MDYwOWZhM2EuLjFjMjQwZGNkNzFiZTUyOWQ4OGNiZjQ2MWQxODY4ZjVlYjJiMDJhZDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1l
LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCiAKICNp
bmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggY2E3YWQxMWYyZTBiOGEzYjhiMTg1ODkx
ZDdlNTIyYmFlNDAzYTIzNi4uY2I1NTA3YmVhYzU1YmY4ZWIxYjM3ZWM5MGZjYWIxOTM0ZmI0OGVh
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNs
dWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRl
ICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
MzJfNjQuY3BwCmluZGV4IDk4ZDEwYTNmNGRjYjEyZDg5ZjM3YTEyZjIyNjA0Yjk0NmUwOGU2Mjcu
LmRkMDM1Mzc3OWU4YmRmOThmNDY1OGEzMDdlMzJkMDZlNDcyNDQxNTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRl
ICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJK
U0NlbGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAKaW5kZXggOTI4ZGQ1MGZiMDE2ZTI3MTY0NGE1NzVlMzBhYjVmMjUxNmViNTBlYy4uOTlmNWRi
MDdlNjZiOWQ4YzRiMjM0YjkyYWQ1MTEzZTA5MTJmNTlkZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC00MSwxMCArNDEsMTMgQEAKICNpbmNsdWRl
ICJKSVQuaCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25XcmFwcGVycy5oIgogI2luY2x1ZGUgIkpJ
VFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNs
dWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdGFja0lubGluZXMu
aCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJKU1dpdGhTY29wZS5o
IgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApp
bmRleCAyNmRkNGQxYWY3NDVhZmExZmJjNTNhOWMwMjNhNmU0NzQxYTY2YTA5Li5kZjFiZDNhOWNm
YTQwMmM1MmE1MjExY2YxYWNjZTY3ZDUxMjFiN2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMjksMTEgKzI5LDEzIEBACiAjaW5j
bHVkZSAiSklULmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJDb21tb25J
ZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkdDQXdhcmVKSVRTdHViUm91dGluZS5oIgogI2luY2x1
ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAi
SklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNWYXJpYWJsZU9iamVjdC5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcAppbmRleCA0MDc4NGI0OTQzMWZlMDJlOGU0NTIyZjE2MzA4YzkwMjQ3MTZkMjM2Li4y
Zjc5NTU1NGIwOTFkZWViYmMwM2JmMmJlOGM3NGY0MWFlNTQxZWQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpT
UHJveHkuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5l
cy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIK
ICNpbmNsdWRlICJTdGFja1Zpc2l0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggNjA0Y2MyNjNjZjk3ZTA4
NmZlZDA2ZWM5MDNiMGVjMTk4M2U3ODEzNy4uODE2NmU3ZjgxZmE4OWE3ZDRmNTBjNWYxYTk0ZmE5
NjhjNWQ1N2UxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJKSVRT
dHVicy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKLSNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNs
dWRlICJWTS5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNPYmpl
Y3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
CmluZGV4IDY2NDQ0YmFhMDhiNTYyZGQ2OTdlMGNjZDc3MjFlNTVjMTViYTQ5MTMuLjgzYzk4ZGZk
NjRiMGVjOWFjZmEzOTYzYTYxMDdmMTU1MGQwY2ZjODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtNDUsNyArNDUsNyBAQAogI2luY2x1
ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgog
I2luY2x1ZGUgIkpTU3RhY2tJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNs
dWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgogI2luY2x1
ZGUgIkxMSW50Q29tbW9uLmgiCiAjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25zLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IDhlYzFmZDMyYTNhZGEyMmUx
MjUyMjk1NzBkY2Y3ZmYyOGVhYmYxZWQuLjQ2YTdjNzZiMmY5MDFmYzNjYzM2ZDFjZTBjMDczNTNl
YjA2YjJmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVp
bGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBA
IC04ODgsOSArODg4LDkgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlv
bkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24KICAgICBBU1NFUlQoZnVu
Yy0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CiAgICAgRG90QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0
aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihmdW5jKTsKICAgICBGdW5jdGlvbkNhbGxEb3ROb2Rl
KiBub2RlOwotICAgIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5jYWxsKQorICAgIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5jYWxsIHx8IGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmNhbGxQ
cml2YXRlTmFtZSkKICAgICAgICAgbm9kZSA9IG5ldyAobV92bSkgQ2FsbEZ1bmN0aW9uQ2FsbERv
dE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2
b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKLSAgICBlbHNlIGlmIChkb3QtPmlkZW50aWZpZXIo
KSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcHBseSkKKyAgICBlbHNlIGlmIChkb3QtPmlkZW50
aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcHBseSB8fCBkb3QtPmlkZW50aWZpZXIo
KSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcHBseVByaXZhdGVOYW1lKQogICAgICAgICBub2Rl
ID0gbmV3IChtX3ZtKSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFz
ZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5k
KTsKICAgICBlbHNlCiAgICAgICAgIG5vZGUgPSBuZXcgKG1fdm0pIEZ1bmN0aW9uQ2FsbERvdE5v
ZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3Qs
IGRpdm90U3RhcnQsIGRpdm90RW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTGV4ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5j
cHAKaW5kZXggY2E0YmI0ZjBhZGU4ZDZiYzgyNjkxYTZjMDAwMTRjZjE5OGJkODhiZC4uY2NiMDc5
ZDk3NWExNDFjNWM0YjJkN2I2MjMxMzAwMDcwOTc3NzgyOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9MZXhlci5jcHAKQEAgLTI1LDEwICsyNSwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkxleGVyLmgiCiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgor
I2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgot
CiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKLSNpbmNsdWRlICJJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSAiTm9kZUluZm8uaCIKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1
ZGUgPHd0Zi9kdG9hLmg+CkBAIC05MCw2ICs5MCw3IEBAIGVudW0gQ2hhcmFjdGVyVHlwZSB7CiAK
ICAgICAvLyBPdGhlciB0eXBlcyAob25seSBvbmUgc28gZmFyKQogICAgIENoYXJhY3RlcldoaXRl
U3BhY2UsCisgICAgQ2hhcmFjdGVyUHJpdmF0ZUlkZW50aWZpZXJTdGFydAogfTsKIAogLy8gMjU2
IExhdGluLTEgY29kZXMKQEAgLTE1OCw3ICsxNTksNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQg
c2hvcnQgdHlwZXNPZkxhdGluMUNoYXJhY3RlcnNbMjU2XSA9IHsKIC8qICA2MSAtID0gICAgICAg
ICAgICAgICAgICAqLyBDaGFyYWN0ZXJFcXVhbCwKIC8qICA2MiAtID4gICAgICAgICAgICAgICAg
ICAqLyBDaGFyYWN0ZXJHcmVhdGVyLAogLyogIDYzIC0gPyAgICAgICAgICAgICAgICAgICovIENo
YXJhY3RlclF1ZXN0aW9uLAotLyogIDY0IC0gQCAgICAgICAgICAgICAgICAgICovIENoYXJhY3Rl
ckludmFsaWQsCisvKiAgNjQgLSBAICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyUHJpdmF0
ZUlkZW50aWZpZXJTdGFydCwKIC8qICA2NSAtIEEgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0
ZXJJZGVudGlmaWVyU3RhcnQsCiAvKiAgNjYgLSBCICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFj
dGVySWRlbnRpZmllclN0YXJ0LAogLyogIDY3IC0gQyAgICAgICAgICAgICAgICAgICovIENoYXJh
Y3RlcklkZW50aWZpZXJTdGFydCwKQEAgLTQ4Niw5ICs0ODcsMTAgQEAgc3RhdGljIGNvbnN0IExD
aGFyIHNpbmdsZUNoYXJhY3RlckVzY2FwZVZhbHVlc0ZvckFTQ0lJWzEyOF0gPSB7CiB9OwogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUxleGVyPFQ+OjpMZXhlcihWTSogdm0pCitMZXhlcjxUPjo6
TGV4ZXIoVk0qIHZtLCBKU1BhcnNlclN0cmljdG5lc3Mgc3RyaWN0bmVzcykKICAgICA6IG1faXNS
ZXBhcnNpbmcoZmFsc2UpCiAgICAgLCBtX3ZtKHZtKQorICAgICwgbV9wYXJzaW5nQnVpbHRpbkZ1
bmN0aW9uKHN0cmljdG5lc3MgPT0gSlNQYXJzZUJ1aWx0aW4pCiB7CiB9CiAKQEAgLTc1Myw3ICs3
NTUsMjcgQEAgaW5saW5lIHZvaWQgTGV4ZXI8VD46OnJlY29yZDE2KGludCBjKQogICAgIEFTU0VS
VChjIDw9IHN0YXRpY19jYXN0PGludD4oVVNIUlRfTUFYKSk7CiAgICAgbV9idWZmZXIxNi5hcHBl
bmQoc3RhdGljX2Nhc3Q8VUNoYXI+KGMpKTsKIH0KLQorICAgIAorI2lmICFBU1NFUlRfRElTQUJM
RUQKK2Jvb2wgaXNTYWZlSWRlbnRpZmllcihWTSYgdm0sIGNvbnN0IElkZW50aWZpZXIqIGlkZW50
KQoreworICAgIGlmICghaWRlbnQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIC8qIEp1c3Qg
YmxvY2sgYW55IHVzZSBvZiBzdXNwaWNpb3VzIGlkZW50aWZpZXJzLiAgVGhpcyBpcyBpbnRlbmRl
ZCB0bworICAgICAqIGJlIHVzZWQgYXMgYSBzYWZldHkgbmV0IHdoaWxlIGltcGxlbWVudGluZyBi
dWlsdGlucy4KKyAgICAgKi8KKyAgICBpZiAoKmlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmNh
bGwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKmlkZW50ID09IHZtLnByb3BlcnR5
TmFtZXMtPmFwcGx5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCppZGVudCA9PSB2
bS5wcm9wZXJ0eU5hbWVzLT5ldmFsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCpp
ZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5GdW5jdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisgICAgCiB0ZW1wbGF0ZSA8PgogdGVtcGxh
dGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlw
ZSBMZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcihKU1Rva2VuRGF0YSogdG9rZW5EYXRhLCB1
bnNpZ25lZCBsZXhlckZsYWdzLCBib29sIHN0cmljdE1vZGUpCiB7CkBAIC03NjUsNyArNzg3LDEx
IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUg
SlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAgICAgICAgICAgICByZXR1cm4ga2V5d29yZCA9
PSBSRVNFUlZFRF9JRl9TVFJJQ1QgJiYgIXN0cmljdE1vZGUgPyBJREVOVCA6IGtleXdvcmQ7CiAg
ICAgICAgIH0KICAgICB9Ci0KKyAgICAKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJl
bnQgPT0gJ0AnICYmIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKKyAgICBpZiAoaXNQcml2YXRl
TmFtZSkKKyAgICAgICAgc2hpZnQoKTsKKyAgICAKICAgICBjb25zdCBMQ2hhciogaWRlbnRpZmll
clN0YXJ0ID0gY3VycmVudFNvdXJjZVB0cigpOwogICAgIHVuc2lnbmVkIGlkZW50aWZpZXJMaW5l
U3RhcnQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CiAgICAgCkBAIC03NzksMTUgKzgwNSwy
NiBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5F
IEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAogCiAgICAgY29uc3QgSWRlbnRpZmllciogaWRl
bnQgPSAwOwogICAgIAotICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyKSB7CisgICAgaWYg
KHNob3VsZENyZWF0ZUlkZW50aWZpZXIgfHwgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CiAg
ICAgICAgIGludCBpZGVudGlmaWVyTGVuZ3RoID0gY3VycmVudFNvdXJjZVB0cigpIC0gaWRlbnRp
ZmllclN0YXJ0OwogICAgICAgICBpZGVudCA9IG1ha2VJZGVudGlmaWVyKGlkZW50aWZpZXJTdGFy
dCwgaWRlbnRpZmllckxlbmd0aCk7Ci0KKyAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5j
dGlvbikgeworICAgICAgICAgICAgaWYgKCFpc1NhZmVJZGVudGlmaWVyKCptX3ZtLCBpZGVudCkg
JiYgIWlzUHJpdmF0ZU5hbWUpIHsKKyAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9
IG1ha2VTdHJpbmcoIlRoZSB1c2Ugb2YgJyIsIGlkZW50LT5zdHJpbmcoKSwgIicgaXMgZGlzYWxs
b3dlZCBpbiBidWlsdGluIGZ1bmN0aW9ucy4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRVJS
T1JUT0s7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAg
ICAgICAgICAgICAgICBpZGVudCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPmdldFByaXZhdGVOYW1l
KCppZGVudCk7CisgICAgICAgICAgICBlbHNlIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlO
YW1lcy0+dW5kZWZpbmVkS2V5d29yZCkKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmlkZW50
ID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmRQcml2YXRlTmFtZTsKKyAg
ICAgICAgICAgIGlmICghaWRlbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSURfUFJJ
VkFURV9OQU1FX0VSUk9SVE9LOworICAgICAgICB9CiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQg
PSBpZGVudDsKICAgICB9IGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IDA7CiAKLSAg
ICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxh
Z3MgJiBMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpKSB7CisgICAgaWYgKFVOTElLRUxZ
KChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFn
c0lnbm9yZVJlc2VydmVkV29yZHMpKSAmJiAhaXNQcml2YXRlTmFtZSkgewogICAgICAgICBBU1NF
UlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChyZW1haW5pbmcgPCBtYXhU
b2tlbkxlbmd0aCkgewogICAgICAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IG1fdm0t
PmtleXdvcmRzLT5nZXRLZXl3b3JkKCppZGVudCk7CkBAIC04MTQsNiArODUxLDEwIEBAIHRlbXBs
YXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5
cGUgTGV4ZXI8VUNoYXI+OjpwCiAgICAgICAgICAgICByZXR1cm4ga2V5d29yZCA9PSBSRVNFUlZF
RF9JRl9TVFJJQ1QgJiYgIXN0cmljdE1vZGUgPyBJREVOVCA6IGtleXdvcmQ7CiAgICAgICAgIH0K
ICAgICB9CisgICAgCisgICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gbV9jdXJyZW50ID09ICdAJyAm
JiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAg
ICAgIHNoaWZ0KCk7CiAKICAgICBjb25zdCBVQ2hhciogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVu
dFNvdXJjZVB0cigpOwogICAgIGludCBpZGVudGlmaWVyTGluZVN0YXJ0ID0gY3VycmVudExpbmVT
dGFydE9mZnNldCgpOwpAQCAtODI2LDYgKzg2Nyw3IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENy
ZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+Ojpw
CiAgICAgfQogICAgIAogICAgIGlmIChVTkxJS0VMWShtX2N1cnJlbnQgPT0gJ1xcJykpIHsKKyAg
ICAgICAgQVNTRVJUKCFpc1ByaXZhdGVOYW1lKTsKICAgICAgICAgc2V0T2Zmc2V0RnJvbVNvdXJj
ZVB0cihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMaW5lU3RhcnQpOwogICAgICAgICByZXR1
cm4gcGFyc2VJZGVudGlmaWVyU2xvd0Nhc2U8c2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4odG9rZW5E
YXRhLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKTsKICAgICB9CkBAIC04MzcsMTggKzg3OSwyOSBA
QCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpT
VG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogCiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQg
PSAwOwogICAgIAotICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyKSB7CisgICAgaWYgKHNo
b3VsZENyZWF0ZUlkZW50aWZpZXIgfHwgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CiAgICAg
ICAgIGludCBpZGVudGlmaWVyTGVuZ3RoID0gY3VycmVudFNvdXJjZVB0cigpIC0gaWRlbnRpZmll
clN0YXJ0OwogICAgICAgICBpZiAoaXNBbGw4Qml0KQogICAgICAgICAgICAgaWRlbnQgPSBtYWtl
SWRlbnRpZmllckxDaGFyRnJvbVVDaGFyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0
aCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGlkZW50ID0gbWFrZUlkZW50aWZpZXIoaWRl
bnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVuZ3RoKTsKLSAgICAgICAgCisgICAgICAgIGlmICht
X3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKKyAgICAgICAgICAgIGlmICghaXNTYWZlSWRlbnRp
ZmllcigqbV92bSwgaWRlbnQpICYmICFpc1ByaXZhdGVOYW1lKSB7CisgICAgICAgICAgICAgICAg
bV9sZXhFcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJUaGUgdXNlIG9mICciLCBpZGVudC0+c3Ry
aW5nKCksICInIGlzIGRpc2FsbG93ZWQgaW4gYnVpbHRpbiBmdW5jdGlvbnMuIik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIEVSUk9SVE9LOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KGlzUHJpdmF0ZU5hbWUpCisgICAgICAgICAgICAgICAgaWRlbnQgPSBtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5nZXRQcml2YXRlTmFtZSgqaWRlbnQpOworICAgICAgICAgICAgZWxzZSBpZiAoKmlkZW50
ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQpCisgICAgICAgICAgICAg
ICAgdG9rZW5EYXRhLT5pZGVudCA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3
b3JkUHJpdmF0ZU5hbWU7CisgICAgICAgICAgICBpZiAoIWlkZW50KQorICAgICAgICAgICAgICAg
IHJldHVybiBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzsKKyAgICAgICAgfQogICAgICAg
ICB0b2tlbkRhdGEtPmlkZW50ID0gaWRlbnQ7CiAgICAgfSBlbHNlCiAgICAgICAgIHRva2VuRGF0
YS0+aWRlbnQgPSAwOwogICAgIAotICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9r
ZW5MZW5ndGgpICYmICEobGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRz
KSkpIHsKKyAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAh
KGxleGVyRmxhZ3MgJiBMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpICYmICFpc1ByaXZh
dGVOYW1lKSB7CiAgICAgICAgIEFTU0VSVChzaG91bGRDcmVhdGVJZGVudGlmaWVyKTsKICAgICAg
ICAgaWYgKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSB7CiAgICAgICAgICAgICBjb25zdCBI
YXNoRW50cnkqIGVudHJ5ID0gbV92bS0+a2V5d29yZHMtPmdldEtleXdvcmQoKmlkZW50KTsKQEAg
LTE2NTgsNiArMTcxMSw3IEBAIGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ6CiAgICAgICAgIEFT
U0VSVChpc0lkZW50U3RhcnQobV9jdXJyZW50KSk7CiAgICAgICAgIEZBTExUSFJPVUdIOwogICAg
IGNhc2UgQ2hhcmFjdGVyQmFja1NsYXNoOgorICAgICAgICBwYXJzZUlkZW50OgogICAgICAgICBp
ZiAobGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250QnVpbGRLZXl3b3JkcykKICAgICAgICAgICAg
IHRva2VuID0gcGFyc2VJZGVudGlmaWVyPGZhbHNlPih0b2tlbkRhdGEsIGxleGVyRmxhZ3MsIHN0
cmljdE1vZGUpOwogICAgICAgICBlbHNlCkBAIC0xNjcwLDYgKzE3MjQsMTEgQEAgaW5OdW1iZXJB
ZnRlckRlY2ltYWxQb2ludDoKICAgICAgICAgbV90ZXJtaW5hdG9yID0gdHJ1ZTsKICAgICAgICAg
bV9saW5lU3RhcnQgPSBtX2NvZGU7CiAgICAgICAgIGdvdG8gc3RhcnQ7CisgICAgY2FzZSBDaGFy
YWN0ZXJQcml2YXRlSWRlbnRpZmllclN0YXJ0OgorICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRp
bkZ1bmN0aW9uKQorICAgICAgICAgICAgZ290byBwYXJzZUlkZW50OworCisgICAgICAgIEZBTExU
SFJPVUdIOwogICAgIGNhc2UgQ2hhcmFjdGVySW52YWxpZDoKICAgICAgICAgbV9sZXhFcnJvck1l
c3NhZ2UgPSBpbnZhbGlkQ2hhcmFjdGVyTWVzc2FnZSgpOwogICAgICAgICB0b2tlbiA9IEVSUk9S
VE9LOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCmluZGV4IDI4YzYxYmExOThkMmMx
NWE0OWJiMTg1MmVkMzBiZWZlYjg5MDQwMDguLmI4ODczZTk5NTAyODY0NGJmOGNiYjNkNGMyZGE1
NjJlOTNlMGU4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKQEAgLTcyLDcg
KzcyLDcgQEAgY2xhc3MgTGV4ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCiBw
dWJsaWM6Ci0gICAgTGV4ZXIoVk0qKTsKKyAgICBMZXhlcihWTSosIEpTUGFyc2VyU3RyaWN0bmVz
cyk7CiAgICAgfkxleGVyKCk7CiAKICAgICAvLyBDaGFyYWN0ZXIgbWFuaXB1bGF0aW9uIGZ1bmN0
aW9ucy4KQEAgLTIzOCw2ICsyMzgsNyBAQCBwcml2YXRlOgogICAgIElkZW50aWZpZXJBcmVuYSog
bV9hcmVuYTsKIAogICAgIFZNKiBtX3ZtOworICAgIGJvb2wgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0
aW9uOwogfTsKIAogdGVtcGxhdGUgPD4KQEAgLTMzNSw2ICszMzYsMTIgQEAgQUxXQVlTX0lOTElO
RSBjb25zdCBJZGVudGlmaWVyKiBMZXhlcjxUPjo6bWFrZUxDaGFySWRlbnRpZmllcihjb25zdCBV
Q2hhciogY2hhcmEKICAgICByZXR1cm4gJm1fYXJlbmEtPm1ha2VJZGVudGlmaWVyTENoYXJGcm9t
VUNoYXIobV92bSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKIH0KIAorI2lmIEFTU0VSVF9ESVNBQkxF
RAorQUxXQVlTX0lOTElORSBib29sIGlzU2FmZUlkZW50aWZpZXIoVk0mLCBjb25zdCBJZGVudGlm
aWVyKikgeyByZXR1cm4gdHJ1ZTsgfQorI2Vsc2UKK2Jvb2wgaXNTYWZlSWRlbnRpZmllcihWTSYs
IGNvbnN0IElkZW50aWZpZXIqKTsKKyNlbmRpZgorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIEFM
V0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNU
b2tlbiogdG9rZW5SZWNvcmQsIHVuc2lnbmVkIGxleGVyRmxhZ3MsIGJvb2wgc3RyaWN0TW9kZSkK
IHsKQEAgLTM3MCwxMCArMzc3LDE1IEBAIEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8
VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tlbiogdG9rZW5SZWNvcmQsIHVuCiAgICAgQVNT
RVJUKGN1cnJlbnRPZmZzZXQoKSA+PSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCkpOwogCiAgICAg
Ly8gQ3JlYXRlIHRoZSBpZGVudGlmaWVyIGlmIG5lZWRlZAotICAgIGlmIChsZXhlckZsYWdzICYg
TGV4ZXhGbGFnc0RvbnRCdWlsZEtleXdvcmRzKQorICAgIGlmIChsZXhlckZsYWdzICYgTGV4ZXhG
bGFnc0RvbnRCdWlsZEtleXdvcmRzCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICAmJiAh
bV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uCisjZW5kaWYKKyAgICAgICAgKQogICAgICAgICB0b2tl
bkRhdGEtPmlkZW50ID0gMDsKICAgICBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBt
YWtlTENoYXJJZGVudGlmaWVyKHN0YXJ0LCBwdHIgLSBzdGFydCk7CisKICAgICB0b2tlbkxvY2F0
aW9uLT5saW5lID0gbV9saW5lTnVtYmVyOwogICAgIHRva2VuTG9jYXRpb24tPmxpbmVTdGFydE9m
ZnNldCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKICAgICB0b2tlbkxvY2F0aW9uLT5zdGFy
dE9mZnNldCA9IG9mZnNldEZyb21Tb3VyY2VQdHIoc3RhcnQpOwpAQCAtMzgxLDYgKzM5MywxMyBA
QCBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVy
KEpTVG9rZW4qIHRva2VuUmVjb3JkLCB1bgogICAgIEFTU0VSVCh0b2tlbkxvY2F0aW9uLT5zdGFy
dE9mZnNldCA+PSB0b2tlbkxvY2F0aW9uLT5saW5lU3RhcnRPZmZzZXQpOwogICAgIHRva2VuUmVj
b3JkLT5tX3N0YXJ0UG9zaXRpb24gPSBzdGFydFBvc2l0aW9uOwogICAgIHRva2VuUmVjb3JkLT5t
X2VuZFBvc2l0aW9uID0gY3VycmVudFBvc2l0aW9uKCk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAor
ICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKKyAgICAgICAgaWYgKCFpc1NhZmVJ
ZGVudGlmaWVyKCptX3ZtLCB0b2tlbkRhdGEtPmlkZW50KSkKKyAgICAgICAgICAgIHJldHVybiBF
UlJPUlRPSzsKKyAgICB9CisjZW5kaWYKKwogICAgIG1fbGFzdFRva2VuID0gSURFTlQ7CiAgICAg
cmV0dXJuIElERU5UOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApp
bmRleCBmYzljY2Q5ZjZjNTc2YzFhZWY1NDdmMjExZmRkNTk2ZjQyZTA1ODA2Li5kOTUyYmE2YTk0
ZDJmNmI0MTgyMTU1MDA0ZDBhOTcwODQyOWJkNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVzLmNwcApAQCAtMTMyLDYgKzEzMiwxMiBAQCBQYXNzUmVmUHRyPFByb2dyYW1Ob2Rl
PiBQcm9ncmFtTm9kZTo6Y3JlYXRlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFy
dAogICAgIHJldHVybiBub2RlLnJlbGVhc2UoKTsKIH0KIAorCit2b2lkIFByb2dyYW1Ob2RlOjpz
ZXRDbG9zZWRWYXJpYWJsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJiBjbG9z
ZWRWYXJpYWJsZXMpCit7CisgICAgbV9jbG9zZWRWYXJpYWJsZXMgPSBzdGQ6Om1vdmUoY2xvc2Vk
VmFyaWFibGVzKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV2YWxO
b2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGlubGluZSBFdmFsTm9kZTo6RXZh
bE5vZGUoVk0qIHZtLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNl
RWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1
bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IGQ3NzlhMTc4ZDk1NmZmOTlmZDBiZWQ1
ZDVmNDU0YWEzZTZiNTA4NzkuLjgxNmZmMDAxYWJmMDM3NmM2NDJmMWE5MzhkMGUwYTlmNTI5Y2E2
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTE0MzEsNiArMTQzMSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG5lZWRzQWN0aXZhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIChoYXNDYXB0dXJlZFZhcmlhYmxlcygpKSB8fCAobV9mZWF0dXJlcyAmIChFdmFs
RmVhdHVyZSB8IFdpdGhGZWF0dXJlIHwgQ2F0Y2hGZWF0dXJlKSk7IH0KICAgICAgICAgYm9vbCBo
YXNDYXB0dXJlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuICEhbV9jYXB0dXJlZFZhcmlhYmxl
cy5zaXplKCk7IH0KICAgICAgICAgc2l6ZV90IGNhcHR1cmVkVmFyaWFibGVDb3VudCgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FwdHVyZWRWYXJpYWJsZXMuc2l6ZSgpOyB9CisgICAgICAgIGNvbnN0IElk
ZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9jYXB0dXJl
ZFZhcmlhYmxlczsgfQogICAgICAgICBib29sIGNhcHR1cmVzKGNvbnN0IElkZW50aWZpZXImIGlk
ZW50KSB7IHJldHVybiBtX2NhcHR1cmVkVmFyaWFibGVzLmNvbnRhaW5zKGlkZW50LmltcGwoKSk7
IH0KIAogICAgICAgICBWYXJTdGFjayYgdmFyU3RhY2soKSB7IHJldHVybiBtX3ZhclN0YWNrOyB9
CkBAIC0xNDQ2LDYgKzE0NDcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RhdGVtZW50
Tm9kZSogc2luZ2xlU3RhdGVtZW50KCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBlbWl0U3RhdGVt
ZW50c0J5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZGVzdGluYXRpb24p
OworICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRDbG9zZWRWYXJpYWJsZXMoY29uc3QgVmVjdG9y
PFJlZlB0cjxTdHJpbmdJbXBsPj4mJikgeyB9CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZv
aWQgc2V0U291cmNlKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkgeyBtX3NvdXJjZSA9IHNvdXJj
ZTsgfQpAQCAtMTQ3NSwxMSArMTQ3OCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBz
dGF0aWMgY29uc3QgYm9vbCBzY29wZUlzRnVuY3Rpb24gPSBmYWxzZTsKIAorICAgICAgICB2b2lk
IHNldENsb3NlZFZhcmlhYmxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmKTsK
KyAgICAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mIGNsb3NlZFZhcmlhYmxl
cygpIGNvbnN0IHsgcmV0dXJuIG1fY2xvc2VkVmFyaWFibGVzOyB9CiAgICAgcHJpdmF0ZToKICAg
ICAgICAgUHJvZ3JhbU5vZGUoVk0qLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVu
ZENvbHVtbiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVu
dGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0
YW50cyk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7Ci0KKyAgICAgICAgVmVjdG9yPFJlZlB0
cjxTdHJpbmdJbXBsPj4gbV9jbG9zZWRWYXJpYWJsZXM7CiAgICAgICAgIHVuc2lnbmVkIG1fc3Rh
cnRDb2x1bW47CiAgICAgICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwogICAgIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggMjk3NjY2ZTcyNmU0NWQwODNlZjEz
NDlkZGZmZGYzN2VmODAwZGY3YS4uNTBiZWM3OWZlMzhhZGY4ZjNhMDRmNmI0NmNiZDJhNWNiZmNm
MjQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjA0LDgg
KzIwNCw5IEBAIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIoVk0qIHZtLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIEZ1bmN0aW9uUGFyYW1ldGVycyoKICAgICAsIG1fbGFzdElkZW50aWZpZXIo
MCkKICAgICAsIG1fbGFzdEZ1bmN0aW9uTmFtZShudWxscHRyKQogICAgICwgbV9zb3VyY2VFbGVt
ZW50cygwKQorICAgICwgbV9wYXJzaW5nQnVpbHRpbihzdHJpY3RuZXNzID09IEpTUGFyc2VCdWls
dGluKQogewotICAgIG1fbGV4ZXIgPSBhZG9wdFB0cihuZXcgTGV4ZXJUeXBlKHZtKSk7CisgICAg
bV9sZXhlciA9IGFkb3B0UHRyKG5ldyBMZXhlclR5cGUodm0sIHN0cmljdG5lc3MpKTsKICAgICBt
X2FyZW5hID0gbV92bS0+cGFyc2VyQXJlbmEuZ2V0KCk7CiAgICAgbV9sZXhlci0+c2V0Q29kZShz
b3VyY2UsIG1fYXJlbmEpOwogICAgIG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lID0gc291cmNlLmZp
cnN0TGluZSgpOwpAQCAtMjU2LDYgKzI1Nyw3IEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VJbm5lcigpCiAgICAgSWRlbnRpZmllclNldCBjYXB0dXJlZFZhcmlhYmxlczsKICAgICBi
b29sIG1vZGlmaWVkUGFyYW1ldGVyID0gZmFsc2U7CiAgICAgc2NvcGUtPmdldENhcHR1cmVkVmFy
aWFibGVzKGNhcHR1cmVkVmFyaWFibGVzLCBtb2RpZmllZFBhcmFtZXRlcik7CisgICAgCiAgICAg
Q29kZUZlYXR1cmVzIGZlYXR1cmVzID0gY29udGV4dC5mZWF0dXJlcygpOwogICAgIGlmIChzY29w
ZS0+c3RyaWN0TW9kZSgpKQogICAgICAgICBmZWF0dXJlcyB8PSBTdHJpY3RNb2RlRmVhdHVyZTsK
QEAgLTI2MywyMSArMjY1LDM2IEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5l
cigpCiAgICAgICAgIGZlYXR1cmVzIHw9IFNoYWRvd3NBcmd1bWVudHNGZWF0dXJlOwogICAgIGlm
IChtb2RpZmllZFBhcmFtZXRlcikKICAgICAgICAgZmVhdHVyZXMgfD0gTW9kaWZpZWRQYXJhbWV0
ZXJGZWF0dXJlOwotCisgICAgCisgICAgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4gY2xvc2Vk
VmFyaWFibGVzOworICAgIGlmIChtX3BhcnNpbmdCdWlsdGluKSB7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCFjYXB0dXJlZFZhcmlhYmxlcy5zaXplKCkpOworICAgICAgICBJZGVudGlmaWVyU2V0
IHVzZWRWYXJpYWJsZXM7CisgICAgICAgIHNjb3BlLT5nZXRVc2VkVmFyaWFibGVzKHVzZWRWYXJp
YWJsZXMpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHZhcmlhYmxlIDogdXNlZFZhcmlhYmxl
cykgeworICAgICAgICAgICAgaWYgKHNjb3BlLT5oYXNEZWNsYXJlZFZhcmlhYmxlKElkZW50aWZp
ZXIobV92bSwgdmFyaWFibGUuZ2V0KCkpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHNjb3BlLT5oYXNEZWNsYXJlZFBhcmFtZXRlcihJ
ZGVudGlmaWVyKG1fdm0sIHZhcmlhYmxlLmdldCgpKSkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICBjbG9zZWRWYXJpYWJsZXMuYXBwZW5kKHZhcmlhYmxlKTsKKyAgICAg
ICAgfQorICAgIH0KICAgICBkaWRGaW5pc2hQYXJzaW5nKHNvdXJjZUVsZW1lbnRzLCBjb250ZXh0
LnZhckRlY2xhcmF0aW9ucygpLCBjb250ZXh0LmZ1bmNEZWNsYXJhdGlvbnMoKSwgZmVhdHVyZXMs
Ci0gICAgICAgIGNvbnRleHQubnVtQ29uc3RhbnRzKCksIGNhcHR1cmVkVmFyaWFibGVzKTsKKyAg
ICAgICAgY29udGV4dC5udW1Db25zdGFudHMoKSwgY2FwdHVyZWRWYXJpYWJsZXMsIHN0ZDo6bW92
ZShjbG9zZWRWYXJpYWJsZXMpKTsKIAogICAgIHJldHVybiBwYXJzZUVycm9yOwogfQogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdm9pZCBQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmlu
aXNoUGFyc2luZyhTb3VyY2VFbGVtZW50cyogc291cmNlRWxlbWVudHMsIFBhcnNlckFyZW5hRGF0
YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+KiB2YXJTdGFjaywgCi0gICAgUGFyc2VyQXJl
bmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiogZnVuY1N0YWNrLCBDb2Rl
RmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMsIElkZW50aWZpZXJTZXQmIGNhcHR1
cmVkVmFycykKKyAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9u
U3RhY2s+KiBmdW5jU3RhY2ssIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50
cywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmlu
Z0ltcGw+PiYmIGNsb3NlZFZhcmlhYmxlcykKIHsKICAgICBtX3NvdXJjZUVsZW1lbnRzID0gc291
cmNlRWxlbWVudHM7CiAgICAgbV92YXJEZWNsYXJhdGlvbnMgPSB2YXJTdGFjazsKICAgICBtX2Z1
bmNEZWNsYXJhdGlvbnMgPSBmdW5jU3RhY2s7CiAgICAgbV9jYXB0dXJlZFZhcmlhYmxlcy5zd2Fw
KGNhcHR1cmVkVmFycyk7CisgICAgbV9jbG9zZWRWYXJpYWJsZXMgPSBjbG9zZWRWYXJpYWJsZXM7
CiAgICAgbV9mZWF0dXJlcyA9IGZlYXR1cmVzOwogICAgIG1fbnVtQ29uc3RhbnRzID0gbnVtQ29u
c3RhbnRzOwogfQpAQCAtMjM0Niw2ICsyMzYzLDEwIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhl
clR5cGU+IHZvaWQgUGFyc2VyPExleGVyVHlwZT46OnByaW50VW5leHBlY3RlZFRva2VuVGV4dChX
CiAgICAgY2FzZSBSRVNFUlZFRDoKICAgICAgICAgb3V0LnByaW50KCJVbmV4cGVjdGVkIHVzZSBv
ZiByZXNlcnZlZCB3b3JkICciLCBnZXRUb2tlbigpLCAiJyIpOwogICAgICAgICByZXR1cm47CisK
KyAgICBjYXNlIElOVkFMSURfUFJJVkFURV9OQU1FX0VSUk9SVE9LOgorICAgICAgICBvdXQucHJp
bnQoIkludmFsaWQgcHJpdmF0ZSBuYW1lICciLCBnZXRUb2tlbigpLCAiJyIpOworICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICAKICAgICBjYXNlIElERU5UOgogICAgICAgICBvdXQucHJpbnQo
IlVuZXhwZWN0ZWQgaWRlbnRpZmllciAnIiwgZ2V0VG9rZW4oKSwgIiciKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGI2OThlZjkzNjhjYjhjOGYxOTdjY2QwMDBhY2Fh
NmRmYjExYmEyNDQuLjkwMzM4NTBjOGM5N2Y1N2UyMWRhNWVlZGIwMmQwNDRmNGM4OTc4ZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjMsNiArMjMsNyBAQAogI2lm
bmRlZiBQYXJzZXJfaAogI2RlZmluZSBQYXJzZXJfaAogCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRp
ZmllcnMuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBl
cnMuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCkBAIC0yNTksNiArMjYwLDEwIEBAIHN0cnVj
dCBTY29wZSB7CiAgICAgICAgIHJldHVybiBpc1ZhbGlkU3RyaWN0TW9kZSA/IEJpbmRpbmdTdWNj
ZWVkZWQgOiBTdHJpY3RCaW5kaW5nRmFpbGVkOwogICAgIH0KIAorICAgIHZvaWQgZ2V0VXNlZFZh
cmlhYmxlcyhJZGVudGlmaWVyU2V0JiB1c2VkVmFyaWFibGVzKQorICAgIHsKKyAgICAgICAgdXNl
ZFZhcmlhYmxlcy5zd2FwKG1fdXNlZFZhcmlhYmxlcyk7CisgICAgfQogCiAgICAgdm9pZCB1c2VW
YXJpYWJsZShjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgYm9vbCBpc0V2YWwpCiAgICAgewpAQCAt
NDE0LDYgKzQxOSw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IHBhcnNl
KFBhcnNlckVycm9yJik7CiAKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3RO
ZXdsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+cG9zaXRpb25CZWZvcmVMYXN0TmV3bGlu
ZSgpOyB9CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJiBjbG9zZWRWYXJp
YWJsZXMoKSB7IHJldHVybiBzdGQ6Om1vdmUobV9jbG9zZWRWYXJpYWJsZXMpOyB9CiAKIHByaXZh
dGU6CiAgICAgc3RydWN0IEFsbG93SW5PdmVycmlkZSB7CkBAIC01NDAsNyArNTQ2LDcgQEAgcHJp
dmF0ZToKICAgICBTdHJpbmcgcGFyc2VJbm5lcigpOwogCiAgICAgdm9pZCBkaWRGaW5pc2hQYXJz
aW5nKFNvdXJjZUVsZW1lbnRzKiwgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpW
YXJTdGFjaz4qLCAKLSAgICAgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpG
dW5jdGlvblN0YWNrPiosIENvZGVGZWF0dXJlcywgaW50LCBJZGVudGlmaWVyU2V0Jik7CisgICAg
ICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qLCBD
b2RlRmVhdHVyZXMsIGludCwgSWRlbnRpZmllclNldCYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3Ry
aW5nSW1wbD4+JiYpOwogCiAgICAgLy8gVXNlZCB0byBkZXRlcm1pbmUgdHlwZSBvZiBlcnJvciB0
byByZXBvcnQuCiAgICAgYm9vbCBpc0Z1bmN0aW9uQm9keU5vZGUoU2NvcGVOb2RlKikgeyByZXR1
cm4gZmFsc2U7IH0KQEAgLTg0MCw5ICs4NDYsMTEgQEAgcHJpdmF0ZToKICAgICBjb25zdCBJZGVu
dGlmaWVyKiBtX2xhc3RGdW5jdGlvbk5hbWU7CiAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyQ2Fj
aGU+IG1fZnVuY3Rpb25DYWNoZTsKICAgICBTb3VyY2VFbGVtZW50cyogbV9zb3VyY2VFbGVtZW50
czsKKyAgICBib29sIG1fcGFyc2luZ0J1aWx0aW47CiAgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xh
cmF0aW9uU3RhY2tzOjpWYXJTdGFjaz4qIG1fdmFyRGVjbGFyYXRpb25zOwogICAgIFBhcnNlckFy
ZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qIG1fZnVuY0RlY2xhcmF0
aW9uczsKICAgICBJZGVudGlmaWVyU2V0IG1fY2FwdHVyZWRWYXJpYWJsZXM7CisgICAgVmVjdG9y
PFJlZlB0cjxTdHJpbmdJbXBsPj4gbV9jbG9zZWRWYXJpYWJsZXM7CiAgICAgQ29kZUZlYXR1cmVz
IG1fZmVhdHVyZXM7CiAgICAgaW50IG1fbnVtQ29uc3RhbnRzOwogICAgIApAQCAtOTU3LDYgKzk2
NSwxMCBAQCBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IHBhcnNlKFZNKiB2bSwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcgogICAgICAgICBSZWZQdHI8UGFyc2VkTm9k
ZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yKTsKICAgICAgICAgaWYg
KHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVM
YXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CisgICAgICAg
IGlmIChzdHJpY3RuZXNzID09IEpTUGFyc2VCdWlsdGluKSB7CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChyZXN1bHQpOworICAgICAgICAgICAgcmVzdWx0LT5zZXRDbG9zZWRWYXJpYWJsZXMo
c3RkOjptb3ZlKHBhcnNlci5jbG9zZWRWYXJpYWJsZXMoKSkpOworICAgICAgICB9CiAgICAgICAg
IHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogICAgIH0KICAgICBQYXJzZXI8TGV4ZXI8VUNoYXI+
PiBwYXJzZXIodm0sIHNvdXJjZSwgcGFyYW1ldGVycywgbmFtZSwgc3RyaWN0bmVzcywgcGFyc2Vy
TW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1v
ZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKaW5kZXgg
NGU5YTE3Y2QyMWNhMzQxNDZiYmQ0ODE1NmEzNzJjZDQwNGRlZjYwYy4uZjdhNzViZjdjMzc4NTdl
NDRiNmQ1ZDcxZjQ1MjliYjFhYzFjZjVmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyTW9kZXMuaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
ZW51bSBKU1BhcnNlclN0cmljdG5lc3MgeyBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlU3RyaWN0IH07
CitlbnVtIEpTUGFyc2VyU3RyaWN0bmVzcyB7IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VCdWlsdGlu
LCBKU1BhcnNlU3RyaWN0IH07CiBlbnVtIEpTUGFyc2VyTW9kZSB7IEpTUGFyc2VQcm9ncmFtQ29k
ZSwgSlNQYXJzZUZ1bmN0aW9uQ29kZSB9OwogCiBlbnVtIFByb2ZpbGVyTW9kZSB7IFByb2ZpbGVy
T2ZmLCBQcm9maWxlck9uIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlclRva2Vucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJU
b2tlbnMuaAppbmRleCA4MmEyNjYzOWE3OTIyMGEwODQ0NTZiNDhmMzI4NTJkMTQzYzczOWQwLi44
Yzg3YWQ5ZmFkYmRjNGFmMzlhYzk5ZGIyZDg0NDVlMTNmZmZkMzVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKQEAgLTE0OSw2ICsxNDksNyBAQCBlbnVt
IEpTVG9rZW5UeXBlIHsKICAgICBJTlZBTElEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSyA9IDcg
fCBFcnJvclRva2VuRmxhZywKICAgICBVTlRFUk1JTkFURURfU1RSSU5HX0xJVEVSQUxfRVJST1JU
T0sgPSA4IHwgRXJyb3JUb2tlbkZsYWcgfCBVbnRlcm1pbmF0ZWRFcnJvclRva2VuRmxhZywKICAg
ICBJTlZBTElEX1NUUklOR19MSVRFUkFMX0VSUk9SVE9LID0gOSB8IEVycm9yVG9rZW5GbGFnLAor
ICAgIElOVkFMSURfUFJJVkFURV9OQU1FX0VSUk9SVE9LID0gMTAgfCBFcnJvclRva2VuRmxhZwog
fTsKIAogc3RydWN0IEpTVGV4dFBvc2l0aW9uIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJndW1lbnRzLmgKaW5kZXggMThmMzg5MTcxMzg1MjM2MmM3YTc1YTMwNTNiNDYzMTQxN2Jl
YjgxYi4uZjE2ZmQzZGU0MDU1OTcwYmE5ZDljNmYwYWU2MzE4ZjIyMDRiNjU0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNk
ZWZpbmUgQXJndW1lbnRzX2gKIAogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJD
b21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUg
IkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0
b3JQcm90b3R5cGUuY3BwCmluZGV4IGRkMDg5NGYxNGEwMjFkNWYxMjY1OGFjYjAxZTcyMWZjZDZk
MzQ4Y2MuLjViNGFlODcxNmIwNTUzYmU0NjIzOTU1ZTk5ZTFiNDNlYmYxOGZlMmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVy
YXRvclByb3RvdHlwZS5jcHAKQEAgLTI2LDcgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5oIgogCisjaW5jbHVkZSAiQ29t
bW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJKU0FyZ3VtZW50c0l0ZXJhdG9yLmgiCisjaW5j
bHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCAyN2Fj
NmQ0OGE3MWY3OTU1MDJhMTBjZWE2NDc4NjU0MTM1YTQ2M2EwLi42ZGM3YmU1Njk2OWRlNjdmNjIx
MDdiYjNhNTFhMzA4ZmEzYmE3NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSklU
LmgiCiAjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdCdWls
ZGVyLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdK
b2luZXIuaCIKICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUu
aCIKQEAgLTU2LDcgKzU3LDYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU29ydChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU3BsaWNlKEV4ZWNTdGF0ZSop
Owogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNVblNo
aWZ0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJy
YXlQcm90b0Z1bmNFdmVyeShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRm9yRWFjaChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU29tZShFeGVjU3RhdGUqKTsK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jSW5kZXhP
ZihFeGVjU3RhdGUqKTsKQEAgLTk1NCw2OSArOTU0LDYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheVByb3RvRnVuY01hcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHRBcnJheSk7CiB9CiAKLS8vIERvY3VtZW50YXRpb24gZm9yIHRo
ZXNlIHRocmVlIGlzIGF2YWlsYWJsZSBhdDoKLS8vIGh0dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3pp
bGxhLm9yZy9lbi9kb2NzL0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6QXJy
YXk6ZXZlcnkKLS8vIGh0dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3ppbGxhLm9yZy9lbi9kb2NzL0Nv
cmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6QXJyYXk6Zm9yRWFjaAotLy8gaHR0
cDovL2RldmVsb3Blci10ZXN0Lm1vemlsbGEub3JnL2VuL2RvY3MvQ29yZV9KYXZhU2NyaXB0XzEu
NV9SZWZlcmVuY2U6T2JqZWN0czpBcnJheTpzb21lCi0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b0Z1bmNFdmVyeShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNPYmpl
Y3QqIHRoaXNPYmogPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1v
ZGUpLnRvT2JqZWN0KGV4ZWMpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmotPmdldChl
eGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKS50b1VJbnQzMihleGVjKTsKLSAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7Ci0KLSAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gZXhlYy0+YXJndW1lbnQo
MCk7Ci0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRD
YWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlw
ZU5vbmUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwotCi0gICAgSlNW
YWx1ZSBhcHBseVRoaXMgPSBleGVjLT5hcmd1bWVudCgxKTsKLQotICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNCb29sZWFuKHRydWUpOwotCi0gICAgdW5zaWduZWQgayA9IDA7Ci0gICAgaWYgKGNhbGxU
eXBlID09IENhbGxUeXBlSlMgJiYgaXNKU0FycmF5KHRoaXNPYmopKSB7Ci0gICAgICAgIEpTRnVu
Y3Rpb24qIGYgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGZ1bmN0aW9uKTsKLSAgICAgICAgSlNBcnJh
eSogYXJyYXkgPSBhc0FycmF5KHRoaXNPYmopOwotICAgICAgICBDYWNoZWRDYWxsIGNhY2hlZENh
bGwoZXhlYywgZiwgMyk7Ci0gICAgICAgIGZvciAoOyBrIDwgbGVuZ3RoICYmICFleGVjLT5oYWRF
eGNlcHRpb24oKTsgKytrKSB7Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWFycmF5LT5jYW5H
ZXRJbmRleFF1aWNrbHkoaykpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldFRoaXMoYXBwbHlUaGlzKTsKLSAgICAgICAgICAg
IGNhY2hlZENhbGwuc2V0QXJndW1lbnQoMCwgYXJyYXktPmdldEluZGV4UXVpY2tseShrKSk7Ci0g
ICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDEsIGpzTnVtYmVyKGspKTsKLSAgICAg
ICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoMiwgdGhpc09iaik7Ci0gICAgICAgICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGNhY2hlZENhbGwuY2FsbCgpOwotICAgICAgICAgICAgaWYgKCFyZXN1
bHQudG9Cb29sZWFuKGV4ZWMpKQotICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNCb29sZWFuKGZhbHNlKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZm9yICg7IGsgPCBs
ZW5ndGggJiYgIWV4ZWMtPmhhZEV4Y2VwdGlvbigpOyArK2spIHsKLSAgICAgICAgUHJvcGVydHlT
bG90IHNsb3QodGhpc09iaik7Ci0gICAgICAgIGlmICghdGhpc09iai0+Z2V0UHJvcGVydHlTbG90
KGV4ZWMsIGssIHNsb3QpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgTWFya2Vk
QXJndW1lbnRCdWZmZXIgZWFjaEFyZ3VtZW50czsKLSAgICAgICAgZWFjaEFyZ3VtZW50cy5hcHBl
bmQoc2xvdC5nZXRWYWx1ZShleGVjLCBrKSk7Ci0gICAgICAgIGVhY2hBcmd1bWVudHMuYXBwZW5k
KGpzTnVtYmVyKGspKTsKLSAgICAgICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQodGhpc09iaik7Ci0K
LSAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQotICAgICAgICBib29sIHByZWRpY2F0ZVJl
c3VsdCA9IGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgYXBwbHlUaGlz
LCBlYWNoQXJndW1lbnRzKS50b0Jvb2xlYW4oZXhlYyk7Ci0gICAgICAgIGlmICghcHJlZGljYXRl
UmVzdWx0KSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBqc0Jvb2xlYW4oZmFsc2UpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7Ci19Ci0KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b0Z1bmNGb3JFYWNoKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU09iamVjdCogdGhpc09iaiA9
IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3Qo
ZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2Fj
aGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRl
eCA1MTBlMzgzZmFlNTc1YWFkYTgxNzZjMDQ0MWVlNzI1YjQzYTRjNzMyLi5kMzA0ODc3ZmU5Y2Rl
MWMwOTE5ZmQ0NTk1ZjgxMWVjYWJjZTc3Mjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTE0NCwyNCArMTQ0LDI2IEBAIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxD
b2RlKFZNJiB2CiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZTsK
ICAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oJnZt
LCBzb3VyY2UsIDAsIElkZW50aWZpZXIoKSwgSlNQYXJzZU5vcm1hbCwgSlNQYXJzZVByb2dyYW1D
b2RlLCBlcnJvciwgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwogICAgIGlmICghcHJvZ3Jh
bSkgewotICAgICAgICBBU1NFUlQoZXJyb3IubV90eXBlICE9IFBhcnNlckVycm9yOjpFcnJvck5v
bmUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChlcnJvci5tX3R5cGUgIT0gUGFyc2VyRXJyb3I6
OkVycm9yTm9uZSk7CiAgICAgICAgIG1fc291cmNlQ29kZS5yZW1vdmUoYWRkUmVzdWx0Lml0ZXJh
dG9yKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBh
c3N1bWVzIGFuIGlucHV0IHN0cmluZyB0aGF0IHdvdWxkIHJlc3VsdCBpbiBhIHNpbmdsZSBhbm9u
eW1vdXMgZnVuY3Rpb24gZXhwcmVzc2lvbi4KICAgICBTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVt
ZW50ID0gcHJvZ3JhbS0+c2luZ2xlU3RhdGVtZW50KCk7Ci0gICAgQVNTRVJUKGV4cHJTdGF0ZW1l
bnQpOwotICAgIEFTU0VSVChleHByU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CisgICAg
UkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0
YXRlbWVudC0+aXNFeHByU3RhdGVtZW50KCkpOwogICAgIEV4cHJlc3Npb25Ob2RlKiBmdW5jRXhw
ciA9IHN0YXRpY19jYXN0PEV4cHJTdGF0ZW1lbnROb2RlKj4oZXhwclN0YXRlbWVudCktPmV4cHIo
KTsKLSAgICBBU1NFUlQoZnVuY0V4cHIpOworICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmNFeHByKTsK
ICAgICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwci0+aXNGdW5jRXhwck5vZGUoKSk7CiAgICAgRnVu
Y3Rpb25Cb2R5Tm9kZSogYm9keSA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGZ1bmNFeHBy
KS0+Ym9keSgpOworICAgIFJFTEVBU0VfQVNTRVJUKCFwcm9ncmFtLT5oYXNDYXB0dXJlZFZhcmlh
YmxlcygpKTsKKyAgICAKICAgICBib2R5LT5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZUxh
c3ROZXdsaW5lKTsKLSAgICBBU1NFUlQoYm9keSk7Ci0gICAgQVNTRVJUKGJvZHktPmlkZW50KCku
aXNOdWxsKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGJvZHkpOworICAgIFJFTEVBU0VfQVNTRVJU
KGJvZHktPmlkZW50KCkuaXNOdWxsKCkpOwogCi0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVh
dGUoJnZtLCBzb3VyY2UsIGJvZHksIHRydWUpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3Jl
YXRlKCZ2bSwgc291cmNlLCBib2R5LCB0cnVlLCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uKTsKICAg
ICBmdW5jdGlvbkV4ZWN1dGFibGUtPm1fbmFtZVZhbHVlLnNldCh2bSwgZnVuY3Rpb25FeGVjdXRh
YmxlLCBqc1N0cmluZygmdm0sIG5hbWUuc3RyaW5nKCkpKTsKIAogICAgIGFkZFJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgPSBTb3VyY2VDb2RlVmFsdWUodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwgbV9z
b3VyY2VDb2RlLmFnZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmNwcAppbmRleCAzZjVjNjQ1YzA5OGQ1MjdmYzBjNzI1OWU5NDQ3
ZWZiZTg4NjhhMjljLi4yZmMyYjcyN2FmY2VlZTFlYzJjNjI1ZGU1Njc1YjNiZTFjZjYwZDc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuY3BwCkBAIC0yNyw3ICsyNywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2RlZmluZSBJTklU
SUFMSVpFX1BST1BFUlRZX05BTUUobmFtZSkgLCBuYW1lKHZtLCAjbmFtZSkKICNkZWZpbmUgSU5J
VElBTElaRV9LRVlXT1JEKG5hbWUpICwgbmFtZSMjS2V5d29yZCh2bSwgI25hbWUpCi0jZGVmaW5l
IElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKG5hbWUpICwgbmFtZSMjUHJpdmF0ZU5hbWUoSWRlbnRp
Zmllcjo6ZnJvbShQcml2YXRlTmFtZSgpKSkKKyNkZWZpbmUgSU5JVElBTElaRV9QUklWQVRFX05B
TUUobmFtZSkgXAorICAgICwgbmFtZSMjUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbShQcml2
YXRlTmFtZSgpKSkgXAorICAgICwgbV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIobmFtZSwgbmFt
ZSMjUHJpdmF0ZU5hbWUpIFwKKwogCiBDb21tb25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmll
cnMoVk0qIHZtKQogICAgIDogbnVsbElkZW50aWZpZXIoKQpAQCAtMzgsOCArNDEsMjYgQEAgQ29t
bW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZNKiB2bSkKICAgICAsIGhhc05leHRJ
ZGVudGlmaWVyKHZtLCAiaGFzTmV4dCIpCiAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNI
X0tFWVdPUkQoSU5JVElBTElaRV9LRVlXT1JEKQogICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNf
RUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRSkKKyAgICBKU0NfRk9S
RUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKQogICAg
IEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElB
TElaRV9QUklWQVRFX05BTUUpCiB7CiB9CiAKK2NvbnN0IElkZW50aWZpZXIqIENvbW1vbklkZW50
aWZpZXJzOjpnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK3sK
KyNkZWZpbmUgUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKG5hbWUpIGlmIChtXyMjbmFt
ZSMjUHVibGljU3RyaW5nUGFpci5maXJzdCA9PSBpZGVudCkgcmV0dXJuICZtXyMjbmFtZSMjUHVi
bGljU3RyaW5nUGFpci5zZWNvbmQ7CisgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJT
X0VBQ0hfUFJPUEVSVFlfTkFNRShSRVRVUk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMpCisjdW5k
ZWYgUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTCisgICAgcmV0dXJuIDA7Cit9CisKK0lk
ZW50aWZpZXIgQ29tbW9uSWRlbnRpZmllcnM6OmdldFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQpIGNvbnN0Cit7CisjZGVmaW5lIFJFVFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hF
UyhuYW1lKSBpZiAobV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuc2Vjb25kID09IGlkZW50KSBy
ZXR1cm4gbV8jI25hbWUjI1B1YmxpY1N0cmluZ1BhaXIuZmlyc3Q7CisgICAgSlNDX0NPTU1PTl9Q
UklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShSRVRVUk5fSUZfUFJJVkFURV9O
QU1FX01BVENIRVMpCisjdW5kZWYgUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTCisgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZW1wdHlJZGVudGlmaWVy
OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IGU4ZjllZDgyYmM3OTQ2MjAzODI2NmIz
MDIwNzgyMjQ3YjFmYTI3YTMuLjkyNGQzNmFjNjkxMzUwMzU3Y2IzODJiMWVmM2I0MGEwYTA4YzBh
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaApAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBDb21tb25JZGVudGlmaWVyc19oCiAK
ICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogLy8gTWFya2VkQXJndW1lbnRCdWZmZXIgb2YgcHJv
cGVydHkgbmFtZXMsIHBhc3NlZCB0byBhIG1hY3JvIHNvIHdlIGNhbiBkbyBzZXQgdGhlbSB1cCB2
YXJpb3VzCkBAIC0xMzMsOCArMTM0LDEwIEBACiAgICAgbWFjcm8ob3NyRXhpdHMpIFwKICAgICBt
YWNybyhwYXJzZSkgXAogICAgIG1hY3JvKHByb2ZpbGVkQnl0ZWNvZGVzKSBcCisgICAgbWFjcm8o
cHJvbWlzZSkgXAogICAgIG1hY3JvKHByb3BlcnR5SXNFbnVtZXJhYmxlKSBcCiAgICAgbWFjcm8o
cHJvdG90eXBlKSBcCisgICAgbWFjcm8ocmVzb2x2ZSkgXAogICAgIG1hY3JvKHNldCkgXAogICAg
IG1hY3JvKHNpemUpIFwKICAgICBtYWNybyhzbGljZSkgXApAQCAtMTU1LDcgKzE1OCwxNCBAQAog
ICAgIG1hY3JvKHZhbHVlcykgXAogICAgIG1hY3JvKHZhbHVlT2YpIFwKICAgICBtYWNybyh3aW5k
b3cpIFwKLSAgICBtYWNybyh3cml0YWJsZSkKKyAgICBtYWNybyh3cml0YWJsZSkgXAorICAgIG1h
Y3JvKGl0ZXJhdG9yKSBcCisgICAgbWFjcm8oaXRlcmF0b3JOZXh0KSBcCisgICAgbWFjcm8ocmVq
ZWN0KSBcCisgICAgbWFjcm8oZnVsZmlsbG1lbnRIYW5kbGVyKSBcCisgICAgbWFjcm8ocmVqZWN0
aW9uSGFuZGxlcikgXAorICAgIG1hY3JvKGRlZmVycmVkKSBcCisgICAgbWFjcm8oY291bnRkb3du
SG9sZGVyKSBcCiAKICNkZWZpbmUgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQo
bWFjcm8pIFwKICAgICBtYWNybyhicmVhaykgXApAQCAtMjAzLDcgKzIxMyw3IEBACiAgICAgbWFj
cm8odm9pZCkgXAogICAgIG1hY3JvKHdoaWxlKSBcCiAgICAgbWFjcm8od2l0aCkgXAotICAgIG1h
Y3JvKHlpZWxkKQorICAgIG1hY3JvKHlpZWxkKSBcCiAKICNkZWZpbmUgSlNDX0NPTU1PTl9QUklW
QVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShtYWNybykgXAogICAgIG1hY3JvKGl0
ZXJhdG9yKSBcCkBAIC0yMTYsNyArMjI2LDEyIEBACiAgICAgbWFjcm8oaW5kZXgpIFwKICAgICBt
YWNybyh2YWx1ZXMpIFwKICAgICBtYWNybyhkZWZlcnJlZCkgXAotICAgIG1hY3JvKGNvdW50ZG93
bkhvbGRlcikKKyAgICBtYWNybyhjb3VudGRvd25Ib2xkZXIpIFwKKyAgICBtYWNybyhPYmplY3Qp
IFwKKyAgICBtYWNybyhUeXBlRXJyb3IpIFwKKyAgICBtYWNybyh1bmRlZmluZWRLZXl3b3JkKSBc
CisgICAgbWFjcm8oY2FsbCkgXAorICAgIG1hY3JvKGFwcGx5KQogCiBuYW1lc3BhY2UgSlNDIHsK
IApAQCAtMjQwLDExICsyNTUsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2RlZmlu
ZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFMKG5hbWUpIGNvbnN0
IElkZW50aWZpZXIgbmFtZTsKICAgICAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BS
T1BFUlRZX05BTUUoSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJUWV9OQU1FX0dMT0JBTCkK
KyAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKEpTQ19JREVOVElGSUVS
X0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwpCiAjdW5kZWYgSlNDX0lERU5USUZJRVJfREVD
TEFSRV9QUk9QRVJUWV9OQU1FX0dMT0JBTAogCi0jZGVmaW5lIEpTQ19JREVOVElGSUVSX0RFQ0xB
UkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5h
bWUjI1ByaXZhdGVOYW1lOworI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVf
UFJPUEVSVFlfTkFNRV9HTE9CQUwobmFtZSkgY29uc3QgSWRlbnRpZmllciBuYW1lIyNQcml2YXRl
TmFtZTsgY29uc3Qgc3RkOjpwYWlyPElkZW50aWZpZXIsIElkZW50aWZpZXI+IG1fIyNuYW1lIyNQ
dWJsaWNTdHJpbmdQYWlyOwogICAgICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNf
RUFDSF9QUk9QRVJUWV9OQU1FKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJU
WV9OQU1FX0dMT0JBTCkKICN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJP
UEVSVFlfTkFNRV9HTE9CQUwKKyAgICAgICAgCisgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGdl
dFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKKyAgICAgICAgSWRlbnRpZmll
ciBnZXRQdWJsaWNOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKICAgICB9OwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCmluZGV4IDA3NTg3NWZiMjMxNmE1NTU3MDUwYTY2OTBjZDBmOTg4MjQ4
NGY1ZjMuLjVhZjkwODc1NGU3NDdmOGNhZTBjZDA0YWY4ZDQ5MTUwMDQ2OGMyYTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAt
NDEsNyArNDEsNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAj
aW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1
ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlv
bnMuaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1l
SXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAKaW5kZXggNTUzMzRiZTJmOTgwYTk4Zjdm
ZWE0MmEwNWJlMGYyMGMwMTlmZjBkZC4uZmE1N2MwMjY4NWU1M2Q1MjUyODgwNTdlMjExZDk4YjEw
OTgxZDczZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNs
dWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJKSVRF
eGNlcHRpb25zLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJK
U0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgQ29tbW9uU2xvd1BhdGhzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggMDVlMTFlMGI4MGEz
NDMwYWVhYjIyYjAyMjJhMjEyZjRhOGUyYzQ5Yi4uMzY0Y2M3MTY2NjA4YjUwMDdkNDc3ZDg3Mzkx
OGE1ZDY0YjE2ODY1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uSGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uSGVscGVycy5jcHAKQEAgLTgxLDYgKzgxLDExIEBAIEpTT2JqZWN0KiBjcmVhdGVT
dGFja092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogSlNPYmpl
Y3QqIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCkKIHsKKyAgICAKKyAgICBpZiAoaWRlbnQuaW1wbCgpLT5pc0VtcHR5
VW5pcXVlKCkpIHsKKyAgICAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2FuJ3QgZmlu
ZCBwcml2YXRlIHZhcmlhYmxlOiBAIiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdldFB1YmxpY05h
bWUoaWRlbnQpLnN0cmluZygpKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJv
cihleGVjLCBtZXNzYWdlKTsKKyAgICB9CiAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygi
Q2FuJ3QgZmluZCB2YXJpYWJsZTogIiwgaWRlbnQuc3RyaW5nKCkpKTsKICAgICByZXR1cm4gY3Jl
YXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgbWVzc2FnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggMTk4OTc2YmIzZmU2ZTZlOTExNzk4MTJkMWNh
ZjliOGJmOWJmZDBiYi4uOGQ1OTBlZjBmZmMwZWI5MGFjOGY5YTgxZDliYzI1NzIxY2QzNWM5MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtNDg0LDcg
KzQ4NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAKLSAgICBFeGVjdXRh
YmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5l
ZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UpOyB9Cisg
ICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRh
YmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZh
bHNlLCBmYWxzZSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1f
dW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQogICAgIHVuc2lnbmVkIG51
bWJlck9mRnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5u
dW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsgfQpAQCAtNTQwLDcgKzU0MCw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5m
bygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2Vz
RXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhl
Y3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRp
b24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSk7IH0KIAogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKQEAgLTYyOCw3ICs2Mjgs
OCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2tGb3Io
a2luZCk7CiAgICAgfQotICAgICAgICAKKworICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKTsg
fQogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0
YWJsZS0+bmFtZSgpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgaW5mZXJyZWROYW1lKCkgeyBy
ZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmluZmVycmVkTmFtZSgpOyB9CiAgICAgSlNTdHJp
bmcqIG5hbWVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1l
VmFsdWUoKTsgfQpAQCAtNjc1LDE0ICs2NzYsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9ib2R5
SW5jbHVkZXNCcmFjZXM7CiB9OwogCi1pbmxpbmUgYm9vbCBpc0hvc3RGdW5jdGlvbihKU1ZhbHVl
IHZhbHVlLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbikKLXsKLSAgICBKU0Z1bmN0aW9u
KiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZ2V0SlNGdW5jdGlvbih2YWx1ZSkpOwot
ICAgIGlmICghZnVuY3Rpb24gfHwgIWZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uLT5uYXRpdmVGdW5jdGlvbigpID09
IG5hdGl2ZUZ1bmN0aW9uOwotfQotCiBpbmxpbmUgdm9pZCBFeGVjdXRhYmxlQmFzZTo6Y2xlYXJD
b2RlVmlydHVhbChFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSkKIHsKICAgICBzd2l0Y2ggKGV4
ZWN1dGFibGUtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCmluZGV4IGMx
YjA4YWYyZDgxOGRhZTU3ZTFiMDBmZGExNzNhODE2MTM3NTI5YjUuLjEyNDkwYzQwZjMzNDE3ZWNh
OTIzODUwYTBkYzY2MmRiYmNkNDBmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKQEAgLTIyLDEyICsyMiwxMyBAQAogI2lu
Y2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNp
bmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJK
U0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNT
dHJpbmcuaCIKICNpbmNsdWRlICJKU1N0cmluZ0J1aWxkZXIuaCIKLSNpbmNsdWRlICJJbnRlcnBy
ZXRlci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIkxleGVyLmgi
CiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCkBAIC0xMDgsNyArMTA5LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAg
ICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkpIHsKICAgICAgICAg
SlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KHRoaXNWYWx1ZSk7Ci0g
ICAgICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICAgICAgaWYgKGZ1bmN0
aW9uLT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJmdW5jdGlvbiAiLCBmdW5j
dGlvbi0+bmFtZShleGVjKSwgIigpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59IikpOwogICAgICAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBmdW5jdGlvbi0+anNFeGVjdXRhYmxl
KCk7CiAgICAgICAgIFN0cmluZyBzb3VyY2VTdHJpbmcgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS50
b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
Y3RpdmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlv
bi5jcHAKaW5kZXggNzJlZDFjNzEyNDA2MTE2OGIwYWRkZDMxMTZmNzU1YTExN2I4ZmI5MC4uYjM3
NDk0MzA5OWUyMTU1YTM5NzcxMzMxMzQ3MDJjMmEyNGFjYzg2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCkBAIC01OCw3ICs1OCw3IEBAIHZv
aWQgSlNBY3RpdmF0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiAKIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQoUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewotICAgIFN5bWJv
bFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1l
LnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxl
KCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChlbnRyeS5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC03Miw3ICs3Miw3IEBAIGlubGluZSBib29s
IEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90CiAKIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQo
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
KQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVH
ZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRy
eSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlm
IChlbnRyeS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC04OSw3ICs4OSw3
IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXQoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6
OmhlYXAodGhpcykpOwogICAgIAotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xU
YWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9s
VGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUu
dWlkKCkpOwogICAgIGlmIChlbnRyeS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGlmIChlbnRyeS5pc1JlYWRPbmx5KCkpIHsKQEAgLTEzNiw3ICsxMzYsNyBAQCBpbmxpbmUg
Ym9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoVk0mIHZtLCBQ
cm9wZXJ0eU5hbWUgcHJvcAogICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIHJlZzsKICAg
ICB7CiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlKCktPm1f
bG9jayk7Ci0gICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xU
YWJsZSgpLT5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgICAg
IFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZSgpLT5maW5kKGxv
Y2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFi
bGUoKS0+ZW5kKGxvY2tlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIFN5
bWJvbFRhYmxlRW50cnkmIGVudHJ5ID0gaXRlci0+dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwCmluZGV4IDJmY2Y4
ODE1YzA1NjgwNTgxMmE3OTkxYTVmZjA2M2Q2ODczOTcxNjQuLjlhOTI1ODNhYTBlYzkwZGJiMzI4
ZWNkNTBkYzMxMzlhZWYwMjczYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5j
bHVkZSAiSlNBcmd1bWVudHNJdGVyYXRvci5oIgogCiAjaW5jbHVkZSAiQXJndW1lbnRzLmgiCisj
aW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKaW5kZXggOTAwN2I1ZjdkM2YxMDNi
MWQyMWIxYTM2NWEyNmMyMTVjMzJiNGQyOC4uYmEwYTJkMzhlOWM1M2UxNTkzN2Q0NmE4OTUxYThj
OGM0NTA3OTI2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiR2V0
dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSW5kZXhpbmdIZWFkZXJJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKICNp
bmNsdWRlICJSZWplY3QuaCIKICNpbmNsdWRlIDx3dGYvQVZMVHJlZS5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKaW5kZXggZDUwNmM0
ZWJkMjYyMGVmZDcwNzkzYTg3M2QwODUyZmJkOTc4Mjg1OS4uY2YzNzA5N2VjMGM2OTI1YTg2N2I4
YzAxMGMwZWZjNDA3NDQ4NWYxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5SXRlcmF0b3IuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJK
U0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRl
ICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWUuY3BwCmluZGV4IGNjYTY4ODhiZjk4YTAyODY0NmNhM2RkZGYzNzYyN2NlMGU3ZDkzMDIuLjMz
OWE3YWI3ZjU5NTE1ZTk2YWZiN2VjNGI4NzQxZTdhYThlMTY2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCkBAIC0zMiw3ICszMiw5IEBACiAjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiSlNOb3RBbk9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1
ZGUgIk51bWJlck9iamVjdC5oIgorI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlIDx3
dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCmluZGV4IGY3Yzg0NDY0
NTA5MmIyNTA4MDVlNmU4ZDQ4MzJjOTk4YmRiODliNTQuLmQ3OTVkZDU2YTk3ZGRiNTk3YzA5MGZj
MmUwYjdmMzA4ZTMzZWJjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGxJbmxpbmVzLmgKQEAgLTI3LDggKzI3LDEwIEBACiAjZGVmaW5lIEpTQ2VsbElubGluZXNf
aAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMu
aCIKICNpbmNsdWRlICJEZWZlckdDLmgiCiAjaW5jbHVkZSAiSGFuZGxlLmgiCisjaW5jbHVkZSAi
SlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09i
amVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDI0MTk2NDYxMGJiNDQyN2IxODYzNzMzNDZlMjRm
NWE4MmQwY2RjYzQuLmFjZTZjMTQ3ZTQ5N2ZlZTIwMjkyZmI1NTM5NzYwZDVkNjk4MjljZTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0zNCw3
ICszNCw4IEBACiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJHZXR0
ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCi0jaW5jbHVkZSAiSlNCb3VuZEZ1bmN0
aW9uLmgiIAorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rp
b25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU05v
dEFuT2JqZWN0LmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTEwOSw2ICsxMTAsMTQg
QEAgdm9pZCBKU0Z1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIE5hdGl2ZUV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUsIGludCBsZW5ndGgKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmxlbmd0aCwganNOdW1iZXIobGVuZ3RoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwg
RG9udEVudW0pOwogfQogCitKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVu
Y3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjcmVhdGUo
dm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCk7CisgICAgZnVuY3Rpb24tPnB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoJnZtLCBleGVjdXRhYmxlLT5uYW1l
KCkuc3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgZnVu
Y3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcihl
eGVjdXRhYmxlLT5wYXJhbWV0ZXJDb3VudCgpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9u
dEVudW0pOworICAgIHJldHVybiBmdW5jdGlvbjsKK30KKwogT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGUqIEpTRnVuY3Rpb246OmNyZWF0ZUFsbG9jYXRpb25Qcm9maWxlKEV4ZWNTdGF0ZSogZXhlYywg
c2l6ZV90IGlubGluZUNhcGFjaXR5KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC0x
NDIsNyArMTUxLDcgQEAgY29uc3QgU3RyaW5nIEpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5
TmFtZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBleHBsaWNpdE5hbWU7CiAgICAg
CiAgICAgY29uc3QgU3RyaW5nIGFjdHVhbE5hbWUgPSBuYW1lKGV4ZWMpOwotICAgIGlmICghYWN0
dWFsTmFtZS5pc0VtcHR5KCkgfHwgaXNIb3N0RnVuY3Rpb24oKSkKKyAgICBpZiAoIWFjdHVhbE5h
bWUuaXNFbXB0eSgpIHx8IGlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVy
biBhY3R1YWxOYW1lOwogICAgIAogICAgIHJldHVybiBqc0V4ZWN1dGFibGUoKS0+aW5mZXJyZWRO
YW1lKCkuc3RyaW5nKCk7CkBAIC0xNTAsMTAgKzE1OSwyMCBAQCBjb25zdCBTdHJpbmcgSlNGdW5j
dGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKEV4ZWNTdGF0ZSogZXhlYykKIAogY29uc3QgU291
cmNlQ29kZSogSlNGdW5jdGlvbjo6c291cmNlQ29kZSgpIGNvbnN0CiB7Ci0gICAgaWYgKGlzSG9z
dEZ1bmN0aW9uKCkpCisgICAgaWYgKGlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAg
IHJldHVybiAwOwogICAgIHJldHVybiAmanNFeGVjdXRhYmxlKCktPnNvdXJjZSgpOwogfQorICAg
IAorYm9vbCBKU0Z1bmN0aW9uOjppc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGlzSG9zdEZ1bmN0aW9uKCkgfHwgaXNCdWlsdGluRnVuY3Rpb24oKTsKK30KKwor
Ym9vbCBKU0Z1bmN0aW9uOjppc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJu
ICFpc0hvc3RGdW5jdGlvbigpICYmIGpzRXhlY3V0YWJsZSgpLT5pc0J1aWx0aW5GdW5jdGlvbigp
OworfQogCiB2b2lkIEpTRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKIHsKQEAgLTI3Nyw3ICsyOTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBz
bG90QmFzZQogICAgIGlmICghY2FsbGVyLmlzT2JqZWN0KCkgfHwgIWFzT2JqZWN0KGNhbGxlcikt
PmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoY2FsbGVyKTsKICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0
aW9uKj4oY2FsbGVyKTsKLSAgICBpZiAoZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkgfHwgIWZ1
bmN0aW9uLT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgaWYgKGZ1bmN0aW9u
LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpIHx8ICFmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCkt
PmlzU3RyaWN0TW9kZSgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxlcik7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIkZ1bmN0aW9uLmNhbGxlciB1c2VkIHRvIHJldHJpZXZlIHN0cmljdCBjYWxsZXIiKSkp
OwogfQpAQCAtMjk5LDcgKzMxOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTRnVuY3Rpb246Om5hbWVH
ZXR0ZXIoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgc2xvdEJhc2UsIEVuY29kCiBib29sIEpT
RnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
ICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3Qp
OwotICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RGdW5jdGlvbigpKQorICAgIGlmICh0aGlzT2Jq
ZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gQmFzZTo6Z2V0
T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAK
ICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUp
IHsKQEAgLTM2MSw3ICszODAsNyBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xv
dChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5Tgogdm9pZCBKU0Z1
bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRp
b25Nb2RlIG1vZGUpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1
bmN0aW9uKj4ob2JqZWN0KTsKLSAgICBpZiAoIXRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkg
JiYgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpIHsKKyAgICBpZiAoIXRoaXNP
YmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgJiYgKG1vZGUgPT0gSW5jbHVkZURvbnRF
bnVtUHJvcGVydGllcykpIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHByb3RvdHlwZSBoYXMgYmVl
biByZWlmaWVkLgogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0KTsKICAgICAg
ICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmpl
Y3QsIGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHNsb3QpOwpAQCAtMzc3
LDcgKzM5Niw3IEBAIHZvaWQgSlNGdW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywKIHZvaWQgSlNGdW5jdGlvbjo6cHV0
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNGdW5jdGlv
biogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2VsbCk7Ci0gICAgaWYgKHRoaXNP
YmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkpIHsKKyAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JC
dWlsdGluRnVuY3Rpb24oKSkgewogICAgICAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00
MjUsNyArNDQ0LDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3AKIGJvb2wgSlNGdW5jdGlvbjo6
ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsKLSAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0
RnVuY3Rpb24oKSkKKyAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24o
KSkKICAgICAgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbik7CiAKICAgICBpZiAocHJv
cGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAppbmRleCA3Y2QxNGI4YzJkODAwZjYx
YmRjMTJlZGQyZGYwNGQzNWZhMDYxOWI2Li45YjU4Yjc0N2NlMWYzZjMzMmQwZjc2MGE1Nzg1Yjdh
YzE5ZWJlOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5o
CkBAIC02OCw2ICs2OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBzdGF0aWMgSlNGdW5jdGlvbiog
Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNHbG9iYWxP
YmplY3QqKTsKKyAgICAgICAgCiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7
CiAgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgbmFtZShFeGVjU3Rh
dGUqKTsKQEAgLTk3LDcgKzk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4ZWN1dGFi
bGVCYXNlKiBleGVjdXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9leGVjdXRhYmxlLmdldCgpOyB9
CiAKICAgICAgICAgLy8gVG8gY2FsbCBlaXRoZXIgb2YgdGhlc2UgbWV0aG9kcyBpbmNsdWRlIEV4
ZWN1dGFibGUuaAotICAgICAgICBpbmxpbmUgYm9vbCBpc0hvc3RGdW5jdGlvbigpIGNvbnN0Owor
ICAgICAgICBib29sIGlzSG9zdEZ1bmN0aW9uKCkgY29uc3Q7CiAgICAgICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSoganNFeGVjdXRhYmxlKCkgY29uc3Q7CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgY29uc3QgU291cmNlQ29kZSogc291cmNlQ29kZSgpIGNvbnN0OwpAQCAtMTQ1LDYgKzE0Nywx
MCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2FsbG9jYXRpb25Qcm9m
aWxlV2F0Y2hwb2ludDsKICAgICAgICAgfQogCisgICAgICAgIGJvb2wgaXNIb3N0T3JCdWlsdGlu
RnVuY3Rpb24oKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5l
KCkgY29uc3Q7CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEltcGxlbWVu
dHNIYXNJbnN0YW5jZSB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9w
ZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCkBAIC0xNjksOCArMTc1LDYg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAgCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsKLQogICAgICAgICBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKICAgICAgICAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIGNhbGxlckdldHRlcihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIFByb3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBsZW5n
dGhHZXR0ZXIoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b25JbmxpbmVzLmgKaW5kZXggZmU0ZTExNGFkYmMyMzY3NGQzYjYwZTYxZjcxY2I3YTA2Yzk0Nzg0
ZC4uNjlmMGQ0ZjM5NmVmOWMyZGE5ZTBiZjYwOGMyNjQ0MTcxNzk5YmE1MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCkBAIC01Mywx
NiArNTMsMjQgQEAgaW5saW5lIGJvb2wgSlNGdW5jdGlvbjo6aXNIb3N0RnVuY3Rpb24oKSBjb25z
dAogCiBpbmxpbmUgTmF0aXZlRnVuY3Rpb24gSlNGdW5jdGlvbjo6bmF0aXZlRnVuY3Rpb24oKQog
ewotICAgIEFTU0VSVChpc0hvc3RGdW5jdGlvbigpKTsKKyAgICBBU1NFUlQoaXNIb3N0RnVuY3Rp
b25Ob25JbmxpbmUoKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5hdGl2ZUV4ZWN1dGFibGUq
PihtX2V4ZWN1dGFibGUuZ2V0KCkpLT5mdW5jdGlvbigpOwogfQogCiBpbmxpbmUgTmF0aXZlRnVu
Y3Rpb24gSlNGdW5jdGlvbjo6bmF0aXZlQ29uc3RydWN0b3IoKQogewotICAgIEFTU0VSVChpc0hv
c3RGdW5jdGlvbigpKTsKKyAgICBBU1NFUlQoaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSk7CiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PE5hdGl2ZUV4ZWN1dGFibGUqPihtX2V4ZWN1dGFibGUuZ2V0
KCkpLT5jb25zdHJ1Y3RvcigpOwogfQogCitpbmxpbmUgYm9vbCBpc0hvc3RGdW5jdGlvbihKU1Zh
bHVlIHZhbHVlLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbikKK3sKKyAgICBKU0Z1bmN0
aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZ2V0SlNGdW5jdGlvbih2YWx1ZSkp
OworICAgIGlmICghZnVuY3Rpb24gfHwgIWZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGZ1bmN0aW9uLT5uYXRpdmVGdW5jdGlvbigp
ID09IG5hdGl2ZUZ1bmN0aW9uOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8v
IEpTRnVuY3Rpb25JbmxpbmVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVj
dG9ySW5saW5lcy5oCmluZGV4IDJkZGMyOWY3MTg5N2JiNTFkMzkwYjA2YjI1YTczODMzODc0YmEw
YzEuLmVkZDM0NDljZTQ3YjE3MzVlOGU1ZGJiMDVmMzE4ZTNkNTVmM2JlNjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29u
c3RydWN0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaApAQCAtMjYsNiArMjYsNyBA
QAogI2lmbmRlZiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lc19oCiAj
ZGVmaW5lIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzX2gKIAorI2lu
Y2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRl
ICJKU0FycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25z
dHJ1Y3Rvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCA2ZGI4NjI3NGMzYjg3
NGFhYWRlNTE1MTg5ODI2NzI2ZmIxMzZjMTczLi5mMjRlYTczMDNkZjk2OWRiZDJkY2E1MmM4NmQx
MWM3OGMwMGRiOWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtMjcsNiArMjcs
NyBAQAogI2RlZmluZSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXNfaAogCiAjaW5jbHVk
ZSAiQXJyYXlCdWZmZXJWaWV3LmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNp
bmNsdWRlICJEZWZlckdDLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25IZWxwZXJzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5o
CmluZGV4IDQ1OTk5N2E0NjRiOTExOTQ3N2IxYmU4NGUzNmM0ZTI5NjZhY2VmODUuLjhlNWZmODI3
OTFlNmZmOGQ0ZWI5YzM3MzY5MWU0MzNlYjdkMTZhZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJvdG90eXBlSW5saW5lcy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lc19oCiAjZGVmaW5lIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lc19oCiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlm
aWVycy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5o
IgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAyYzI3NGMxYTdkNDgxYzA3ZGYwZDJiZWIz
YjI5MzFhMzkwN2E1ZTY2Li4wNmU1NGM4NGU3N2I5MDMyYmFhMWQyZGY0N2ExYzcyZTgwYjdkZWEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCkBAIC0zNDYsNyArMzQ2LDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1
ZSBwcm90b3R5cGUpCiAKICAgICAvLyBDb25zdHJ1Y3RvcnMKIAotICAgIEpTQ2VsbCogb2JqZWN0
Q29uc3RydWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBPYmplY3RDb25zdHJ1
Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgp
KSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOworICAgIE9iamVjdENvbnN0cnVjdG9yKiBvYmpl
Y3RDb25zdHJ1Y3RvciA9IE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIE9iamVjdENvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0
KCkpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9vYmplY3RDb25zdHJ1Y3Rvci5z
ZXQodm0sIHRoaXMsIG9iamVjdENvbnN0cnVjdG9yKTsKICAgICBKU0NlbGwqIGZ1bmN0aW9uQ29u
c3RydWN0b3IgPSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQo
KSksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwogICAgIEpTQ2VsbCogYXJyYXlDb25zdHJ1
Y3RvciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9hcnJh
eVByb3RvdHlwZS5nZXQoKSk7CiAKQEAgLTQzMiw3ICs0MzMsMTAgQEAgdm9pZCBKU0dsb2JhbE9i
amVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgR2xvYmFsUHJvcGVydHlJbmZvIHN0
YXRpY0dsb2JhbHNbXSA9IHsKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPk5hTiwganNOYU4oKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAog
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+SW5maW5pdHksIGpz
TnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSksIERvbnRFbnVt
IHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQsIGpzVW5kZWZpbmVkKCksIERvbnRFbnVt
IHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KQorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCwganNVbmRlZmluZWQoKSwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZFByaXZhdGVOYW1lLCBqc1VuZGVmaW5lZCgp
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5PYmplY3RQcml2YXRlTmFtZSwgb2JqZWN0Q29uc3Ry
dWN0b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPlR5cGVFcnJvclByaXZhdGVOYW1lLCBtX3R5
cGVFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25s
eSkKICAgICB9OwogICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFscywgV1RGX0FSUkFZ
X0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CiAgICAgCkBAIC02MDgsNiArNjEyLDcgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5bnRheEVycm9yQ29u
c3RydWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3R5cGVFcnJvckNv
bnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9VUklFcnJvckNv
bnN0cnVjdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9vYmplY3RDb25z
dHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvbWlzZUNvbnN0
cnVjdG9yKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2V2YWxGdW5jdGlv
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApp
bmRleCBiMGNhZDNkYzU0NzBmN2M3YTBlNTcwYmRjZDJkZmZhODk1ZTJhYTBjLi4zYTYxNmM2ZjA1
ZWRmMWQyOTVhZjg0NDFhYTY2NTAwZmI5MmE0YTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTY3LDYgKzY3LDcgQEAgY2xhc3MgSlNT
dGFjazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIE1pY3JvdGFzazsKIGNs
YXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I7CitjbGFzcyBPYmplY3RDb25zdHJ1Y3RvcjsKIGNs
YXNzIFByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsKIGNsYXNzIFJl
Z0V4cENvbnN0cnVjdG9yOwpAQCAtMTU4LDYgKzE1OSw3IEBAIHByb3RlY3RlZDoKICAgICBXcml0
ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV90eXBlRXJyb3JDb25zdHJ1Y3RvcjsK
ICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV9VUklFcnJvckNvbnN0
cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VDb25zdHJ1Y3Rvcj4gbV9wcm9taXNl
Q29uc3RydWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPE9iamVjdENvbnN0cnVjdG9yPiBtX29iamVj
dENvbnN0cnVjdG9yOwogCiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fZXZhbEZ1bmN0
aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2NhbGxGdW5jdGlvbjsKQEAgLTMz
MCw2ICszMzIsNyBAQCBwdWJsaWM6CiAgICAgUmVnRXhwQ29uc3RydWN0b3IqIHJlZ0V4cENvbnN0
cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBDb25zdHJ1Y3Rvci5nZXQoKTsgfQogCiAg
ICAgRXJyb3JDb25zdHJ1Y3RvciogZXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1f
ZXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQorICAgIE9iamVjdENvbnN0cnVjdG9yKiBvYmplY3RD
b25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0Q29uc3RydWN0b3IuZ2V0KCk7IH0K
ICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBldmFsRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1fZXZhbEVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KICAgICBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yKiByYW5nZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3Jh
bmdlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3Iq
IHJlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5jZUVy
cm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KQEAgLTU4MSw3ICs1ODQsNyBAQCBpbmxpbmUgYm9vbCBK
U0dsb2JhbE9iamVjdDo6aGFzT3duUHJvcGVydHlGb3JXcml0ZShFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZQogCiBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6c3ltYm9sVGFibGVIYXNQ
cm9wZXJ0eShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIFN5bWJvbFRhYmxlRW50
cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05h
bWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGlu
ZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIHJldHVybiAhZW50cnkuaXNOdWxsKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCAyYjY3
YTFkOWVlZDg0ZTk5NTZmOGJiOTY4Mzg0Yzg0Y2FlYTUzY2ZmLi4yZWEyYzI0ZTZlYWI0Y2QwZDdm
ZmVkNjY1ZWY0YWU0MWFmMDc1MGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBnZXRDbGFz
c1Byb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzCiAg
ICAgICAgIGludCBoYXNoU2l6ZU1hc2sgPSB0YWJsZS0+Y29tcGFjdFNpemUgLSAxOwogICAgICAg
ICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gdGFibGUtPnRhYmxlOwogICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8PSBoYXNoU2l6ZU1hc2s7ICsraSwgKytlbnRyeSkgewotICAgICAgICAgICAg
aWYgKGVudHJ5LT5rZXkoKSAmJiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8
IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKSAmJiAhKChlbnRyeS0+YXR0cmli
dXRlcygpICYgRnVuY3Rpb24pICYmIGRpZFJlaWZ5KSkKKyAgICAgICAgICAgIGlmIChlbnRyeS0+
a2V5KCkgJiYgKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCAobW9kZSA9PSBJ
bmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgJiYgISgoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1
aWx0aW5PckZ1bmN0aW9uKSAmJiBkaWRSZWlmeSkpCiAgICAgICAgICAgICAgICAgcHJvcGVydHlO
YW1lcy5hZGQoZW50cnktPmtleSgpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE2MTgsNyArMTYx
OCw3IEBAIHZvaWQgSlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGVsZXRlKEV4ZWNT
dGF0ZSogZXhlYykKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBQcm9wZXJ0eVNsb3Qg
c2xvdCh0aGlzKTsKICAgICAgICAgZm9yIChIYXNoVGFibGU6OkNvbnN0SXRlcmF0b3IgaXRlciA9
IGhhc2hUYWJsZS0+YmVnaW4odm0pOyBpdGVyICE9IGhhc2hUYWJsZS0+ZW5kKHZtKTsgKytpdGVy
KSB7Ci0gICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pCisgICAg
ICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pCiAgICAg
ICAgICAgICAgICAgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoZ2xvYmFsT2JqZWN0KCktPmdsb2Jh
bEV4ZWMoKSwgKml0ZXIsIHRoaXMsIElkZW50aWZpZXIoJnZtLCBpdGVyLT5rZXkoKSksIHNsb3Qp
OwogICAgICAgICB9CiAgICAgfQpAQCAtMjIzNiw2ICsyMjM2LDE2IEBAIHZvaWQgSlNPYmplY3Q6
OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uCiAgICAgcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRy
aWJ1dGVzKTsKIH0KIAordm9pZCBKU09iamVjdDo6cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBw
cm9wZXJ0eU5hbWUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzKQoreworICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUu
cHVibGljTmFtZSgpOworICAgIGlmICghbmFtZSkKKyAgICAgICAgbmFtZSA9IHZtLnByb3BlcnR5
TmFtZXMtPmFub255bW91cy5pbXBsKCk7CisgICAgQVNTRVJUKG5hbWUpOworICAgIEpTRnVuY3Rp
b24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBzdGF0
aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBnbG9iYWxP
YmplY3QpOworICAgIHB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCBmdW5jdGlvbiwgYXR0cmli
dXRlcyk7Cit9CisKIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQ
cm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2
ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKQogewogICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGlj
TmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggMDJi
MTM3YjM1MGMyZmE4MzI1YmQzYjk2NDcxMTJhYmU4NzZmMzgzZi4uZGRlNTk3ZWZmYWVjMGYxYjhk
NDRjMjkxMTk1MDMwMWYwNjAwN2U5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQnV0dGVyZmx5LmgiCiAjaW5j
bHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ2xhc3NJbmZvLmgiCi0jaW5jbHVkZSAiQ29t
bW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJDb3B5V3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVk
ZSAiRGVmZXJHQy5oIgogI2luY2x1ZGUgIkhlYXAuaCIKQEAgLTU4MSw2ICs1ODAsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBwdXREaXJlY3RVbmRlZmluZWQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSB7
IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNldFVuZGVmaW5lZCgpOyB9CiAKICAgICB2b2lk
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9w
ZXJ0eU5hbWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24sIEludHJp
bnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgdm9pZCBwdXREaXJlY3RCdWlsdGluRnVu
Y3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEZ1bmN0aW9u
RXhlY3V0YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIHZvaWQgcHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3Qg
UHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJ
bnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3Ry
dWN0b3IuY3BwCmluZGV4IDQwMjYxOTYzM2ZhMDZmZDI1NGIzZjJhN2E4Y2M3MWU4MDdhYWY5MTEu
LjE3ZDJhYjY1YTg4ZmZiMTNmYTlhNmM4ZjU4M2NhODQ0YWY4MzIyNDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJKU1Byb21pc2VEZWZlcnJlZC5oIgogI2luY2x1
ZGUgIkpTUHJvbWlzZUZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZVByb3RvdHlwZS5o
IgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2lu
Y2x1ZGUgIk51bWJlck9iamVjdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVk
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmNw
cAppbmRleCBjYmM0MmViOWZkOTIzMGY0NmU2Zjg0OWZmMWE3OTU5YmQxMDc5YmVjLi40MjcxMGMz
MDU0NGExMWM3NTQ3YzNjZjg4OGI5NmE0OGM0NjhhMDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuY3BwCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSAiSlNQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlQ29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJKU1Byb21pc2VGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJKU1N0cmlu
Z0lubGluZXMuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21p
c2VQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNl
UHJvdG90eXBlLmNwcAppbmRleCA5ZGY0NTc4MTdjYTgwM2QzNzMyODI0MmZjMzNlY2E3NDVlZDQw
NDMxLi5lNGNhNWE0NmQ5MWJiODA0MjRiODYyZTkzMjQ5MjM3YmZjNTNlN2FmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHAK
QEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJKU1Byb21pc2VEZWZlcnJlZC5oIgogI2luY2x1
ZGUgIkpTUHJvbWlzZUZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZVJlYWN0aW9uLmgi
CisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWljcm90YXNrLmgiCiAj
aW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VSZWFjdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9taXNlUmVhY3Rpb24uaAppbmRleCBmYzcxNDZjNTBlODQ5ZDMzMGQ4
OWU2M2ZjMTljYTY0OWQzYzBlODQ4Li40MmQyNDk2YTFmY2RhYmJjMTFkYzdiYjI3N2RkMTIzZTJh
NGRlMjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21p
c2VSZWFjdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlz
ZVJlYWN0aW9uLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgSlNQcm9taXNlUmVhY3Rpb25f
aAogCiAjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiU3RydWN0dXJlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcApp
bmRleCA2OGE4YmQ4N2QzOGFkYmJiOWRkMmFjOWVjNGI0OWQ1ZWY0NTQ5ZDU2Li4yMzdjNDJiYjBk
YTBmMTY2NzZlYjExYWRlODE4MGE3YjA2ZDk4ZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcApAQCAtMjks
NyArMjksOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1l
SXRlcmF0b3IuaCIKIAorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAppbmRleCBmNDM2
MmZmMzU0ZWU2YTUwMjIxYmI3MzFkMWEyNjExZTZkZDYxYmMwLi5kMDczNzE5ZGUxNjBkMmYyOTIx
MTBhNTk2YTEwNWUyZmEyMTE1ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCkBAIC0zMSw3ICszMSw2IEBACiAK
ICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCi0jaW5jbHVkZSAi
T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSA8
bWVtb3J5PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCAy
YjFjZGRkYzU4NDFkNjBkMTU3YTJlNjFmNzAyYjBlZTVmYTFkNjc2Li5lMzkzNDE2MGFlYTkyNmVm
MTU5MzJmODc5MGUyNGM1MmFmMDJkMzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmgKQEAgLTI0LDcgKzI0LDYgQEAKICNkZWZpbmUgSlNTdHJpbmdfaAogCiAjaW5j
bHVkZSAiQ2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNs
dWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlEZXNjcmlwdG9yLmgiCiAjaW5j
bHVkZSAiUHJvcGVydHlTbG90LmgiCkBAIC00NzIsMzMgKzQ3MSw2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIGlubGluZSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoJmV4ZWMtPnZt
KCksIHMpOyB9CiAgICAgaW5saW5lIEpTU3RyaW5nKiBqc093bmVkU3RyaW5nKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBqc093bmVkU3RyaW5nKCZleGVjLT52bSgp
LCBzKTsgfQogCi0gICAgQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9w
ZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCi0gICAgewotICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKLSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhp
cywgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGpzTnVtYmVyKG1fbGVuZ3RoKSk7
Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHVuc2lnbmVk
IGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOwotICAgICAgICBpZiAoaSA8IG1fbGVuZ3RoKSB7
Ci0gICAgICAgICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOyAvLyBO
byBuZWVkIGZvciBhbiBleHBsaWNpdCBjaGVjaywgdGhlIGFib3ZlIHRlc3Qgd291bGQgYWx3YXlz
IGZhaWwhCi0gICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnREZWxldGUgfCBSZWFk
T25seSwgZ2V0SW5kZXgoZXhlYywgaSkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgIH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgICAgICAgICAgCi0gICAg
QUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0
YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKLSAg
ICB7Ci0gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPCBtX2xlbmd0aCkgewotICAgICAgICAgICAg
c2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMs
IHByb3BlcnR5TmFtZSkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCiAgICAgaW5saW5lIGJvb2wgaXNKU1N0cmlu
ZyhKU1ZhbHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxsKCkgJiYgdi5hc0NlbGwoKS0+Y2xhc3NJbmZv
KCkgPT0gSlNTdHJpbmc6OmluZm8oKTsgfQogCiAgICAgLy8gLS0tIEpTVmFsdWUgaW5saW5lcyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC01MjgsMzIgKzUwMCw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICByZXR1cm4gdG9XVEZTdHJpbmdTbG93Q2FzZShleGVjKTsKICAgICB9
CiAKLSAgICBBTFdBWVNfSU5MSU5FIFN0cmluZyBpbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJp
bmcoY29uc3QgSlNWYWx1ZSYgdmFsdWUsIEV4ZWNTdGF0ZSogZXhlYykKLSAgICB7Ci0gICAgICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpCi0gICAg
ICAgICAgICByZXR1cm4gdm0ubnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVlLmFzSW50MzIoKSk7Ci0g
ICAgICAgIGlmICh2YWx1ZS5pc0RvdWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuIHZtLm51bWVy
aWNTdHJpbmdzLmFkZCh2YWx1ZS5hc0RvdWJsZSgpKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzVHJ1
ZSgpKQotICAgICAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPnRydWVLZXl3b3JkLnN0
cmluZygpOwotICAgICAgICBpZiAodmFsdWUuaXNGYWxzZSgpKQotICAgICAgICAgICAgcmV0dXJu
IHZtLnByb3BlcnR5TmFtZXMtPmZhbHNlS2V5d29yZC5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHZh
bHVlLmlzTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPm51bGxL
ZXl3b3JkLnN0cmluZygpOwotICAgICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAg
ICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLnN0cmluZygp
OwotICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwotICAg
IH0KLQotICAgIEFMV0FZU19JTkxJTkUgU3RyaW5nIEpTVmFsdWU6OnRvV1RGU3RyaW5nSW5saW5l
KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChpc1N0cmluZygpKQot
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTU3RyaW5nKj4oYXNDZWxsKCkpLT52YWx1
ZShleGVjKTsKLQotICAgICAgICByZXR1cm4gaW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5n
KCp0aGlzLCBleGVjKTsKLSAgICB9Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8g
SlNTdHJpbmdfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0lu
bGluZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zNzhjMDVmYzgwZDg4ZTg1MzdjOWQyYTVlYWI5ZmYwYmE5YjYw
YTc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmdJbmxpbmVzLmgKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNTdHJpbmdJbmxpbmVzX2gKKyNk
ZWZpbmUgSlNTdHJpbmdJbmxpbmVzX2gKKworI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgi
CisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJp
bmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGpzTnVtYmVyKG1fbGVuZ3RoKSk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlO
YW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaSA8IG1fbGVuZ3RoKSB7CisgICAgICAgIEFTU0VSVChp
ICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCk7IC8vIE5vIG5lZWQgZm9yIGFuIGV4cGxpY2l0
IGNoZWNrLCB0aGUgYWJvdmUgdGVzdCB3b3VsZCBhbHdheXMgZmFpbCEKKyAgICAgICAgc2xvdC5z
ZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIGkpKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30K
KworQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhl
Y1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
K3sKKyAgICBpZiAocHJvcGVydHlOYW1lIDwgbV9sZW5ndGgpIHsKKyAgICAgICAgc2xvdC5zZXRW
YWx1ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIHByb3BlcnR5
TmFtZSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGZh
bHNlOworfQorCitBTFdBWVNfSU5MSU5FIFN0cmluZyBpbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9T
dHJpbmcoY29uc3QgSlNWYWx1ZSYgdmFsdWUsIEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpCisgICAgICAgIHJldHVy
biB2bS5udW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNJbnQzMigpKTsKKyAgICBpZiAodmFsdWUu
aXNEb3VibGUoKSkKKyAgICAgICAgcmV0dXJuIHZtLm51bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZS5h
c0RvdWJsZSgpKTsKKyAgICBpZiAodmFsdWUuaXNUcnVlKCkpCisgICAgICAgIHJldHVybiB2bS5w
cm9wZXJ0eU5hbWVzLT50cnVlS2V5d29yZC5zdHJpbmcoKTsKKyAgICBpZiAodmFsdWUuaXNGYWxz
ZSgpKQorICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+ZmFsc2VLZXl3b3JkLnN0cmlu
ZygpOworICAgIGlmICh2YWx1ZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5
TmFtZXMtPm51bGxLZXl3b3JkLnN0cmluZygpOworICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZCgp
KQorICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZC5zdHJp
bmcoKTsKKyAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworfQor
ICAgIAorQUxXQVlTX0lOTElORSBTdHJpbmcgSlNWYWx1ZTo6dG9XVEZTdHJpbmdJbmxpbmUoRXhl
Y1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIGlmIChpc1N0cmluZygpKQorICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8SlNTdHJpbmcqPihhc0NlbGwoKSktPnZhbHVlKGV4ZWMpOworICAgIAor
ICAgIHJldHVybiBpbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcoKnRoaXMsIGV4ZWMpOwor
fQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAppbmRleCAyYWMyNTI0YzVkZmRhM2QxMjI0OWQ3Nzkw
YWRjMzEyOWUzYzBlODcxLi5mYmM4Yjg5NWVhZTZhZjc4ODgzOWJlYjVlODNkN2I2Yjk3OTI4ZmFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxl
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRh
YmxlT2JqZWN0LmNwcApAQCAtNjQsNiArNjQsOCBAQCB2b2lkIEpTU3ltYm9sVGFibGVPYmplY3Q6
OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdAog
ICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcih0aGlzT2JqZWN0LT5zeW1ib2xUYWJs
ZSgpLT5tX2xvY2spOwogICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBlbmQgPSB0
aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5lbmQobG9ja2VyKTsKICAgICAgICAgZm9yIChTeW1i
b2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdCA9IHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmJl
Z2luKGxvY2tlcik7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgaWYgKGl0LT5rZXkt
PmlzRW1wdHlVbmlxdWUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IGlmICghKGl0LT52YWx1ZS5nZXRBdHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwgKG1vZGUgPT0g
SW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpCiAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1l
cy5hZGQoSWRlbnRpZmllcihleGVjLCBpdC0+a2V5LmdldCgpKSk7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3Qu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaApp
bmRleCBiNWIyMGE4NDViNmFiNjQ0MjRiMzdlMzFiMjc3NGVmOTA1MzUzZjdmLi5kMDNiMjQ1MTFj
MmRlMTk1OWZiNWY1NmQ2NDljNjRkMGVmZTA2ODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCkBAIC03Miw3ICs3Miw3IEBA
IGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogewogICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xU
YWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgQ29uY3VycmVudEpJVExvY2tlciBs
b2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRv
ciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1l
KCkpOworICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5m
aW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoaXRlciA9PSBzeW1ib2xU
YWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFN5bWJvbFRhYmxl
RW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1ZTsKQEAgLTg3LDcgKzg3LDcgQEAgaW5saW5l
IGJvb2wgc3ltYm9sVGFibGVHZXQoCiB7CiAgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0g
Km9iamVjdC0+c3ltYm9sVGFibGUoKTsKICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihz
eW1ib2xUYWJsZS5tX2xvY2spOwotICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIg
PSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7Cisg
ICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9j
a2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVu
ZChsb2NrZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgU3ltYm9sVGFibGVFbnRyeTo6
RmFzdCBlbnRyeSA9IGl0ZXItPnZhbHVlOwpAQCAtMTA0LDcgKzEwNCw3IEBAIGlubGluZSBib29s
IHN5bWJvbFRhYmxlR2V0KAogewogICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmpl
Y3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9s
VGFibGUubV9sb2NrKTsKLSAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3lt
Ym9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5
bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwg
cHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9j
a2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3Qg
ZW50cnkgPSBpdGVyLT52YWx1ZTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBpbmxpbmUgYm9vbCBzeW1i
b2xUYWJsZVB1dCgKICAgICB7CiAgICAgICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpv
YmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKSVRMb2NrZXIg
bG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jaywgZXhlYy0+dm0oKS5oZWFwKTsKLSAgICAgICAgU3lt
Ym9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBw
cm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRl
cmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkp
OwogICAgICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYm9vbCB3YXNGYXQ7CkBAIC0xNTksNyArMTU5LDcg
QEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcygKICAgICB7CiAgICAg
ICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAg
ICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0g
ICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5k
KGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgICAgIFN5bWJvbFRhYmxl
OjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlO
YW1lLnVpZCgpKTsKICAgICAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkmIGVu
dHJ5ID0gaXRlci0+dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Mb29rdXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNw
cAppbmRleCBhODA2ZGQwNTJhMGNiZWU0Y2FjMmNhYTZlMDhjNjcxNjAwNWMyNzBjLi5hOTc2NTIw
MWI5ZjUxODY0MTQyM2RkZTBmZTBlMmU1MWE4Y2U3M2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0xvb2t1cC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBIYXNoVGFibGU6OmRl
bGV0ZVRhYmxlKCkgY29uc3QKIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCogdGhpc09iaiwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEFTU0VSVCh0
aGlzT2JqLT5nbG9iYWxPYmplY3QoKSk7Ci0gICAgQVNTRVJUKGVudHJ5LT5hdHRyaWJ1dGVzKCkg
JiBGdW5jdGlvbik7CisgICAgQVNTRVJUKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JG
dW5jdGlvbik7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICB1bnNpZ25lZCBhdHRyaWJ1
dGVzOwogICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHRoaXNPYmotPmdldERpcmVjdE9mZnNl
dCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKQEAgLTc5LDkgKzc5LDEzIEBAIGJvb2wg
c2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoRW50cnkq
IGVudHJ5LCBKU09iamVjdCoKICAgICAgICAgaWYgKHRoaXNPYmotPnN0YXRpY0Z1bmN0aW9uc1Jl
aWZpZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICAgICAgdGhpc09i
ai0+cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oCi0gICAgICAgICAgICB2bSwgdGhpc09iai0+Z2xv
YmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZW50cnktPmZ1bmN0aW9uTGVuZ3RoKCksCi0gICAg
ICAgICAgICBlbnRyeS0+ZnVuY3Rpb24oKSwgZW50cnktPmludHJpbnNpYygpLCBlbnRyeS0+YXR0
cmlidXRlcygpKTsKKyAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluKQor
ICAgICAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKHZtLCB0aGlzT2Jq
LT5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBlbnRyeS0+YnVpbHRpbkdlbmVyYXRvcigp
KHZtKSwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
dGhpc09iai0+cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oCisgICAgICAgICAgICAgICAgdm0sIHRo
aXNPYmotPmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5mdW5jdGlvbkxlbmd0
aCgpLAorICAgICAgICAgICAgICAgIGVudHJ5LT5mdW5jdGlvbigpLCBlbnRyeS0+aW50cmluc2lj
KCksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAgICAgICB9CiAgICAgICAgIG9mZnNldCA9IHRo
aXNPYmotPmdldERpcmVjdE9mZnNldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKICAg
ICAgICAgQVNTRVJUKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Mb29rdXAuaAppbmRleCBiZGU4M2Q0YTZmYzM1NTc3ODUwZTMxZTg4YmMz
OWZkMDVmN2JjZTUyLi5kYmEzODllOWUyNDNkZDBlY2IyYmE5OGYzOTRkNDA3OWY5ZGVhOTM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaApAQCAtNDMsNiArNDMsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAvLyBpZS4gdHlwZWRlZiBKU1ZhbHVlICgqR2V0RnVuY3Rpb24p
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBiYXNlT2JqZWN0KQogICAgIHR5cGVkZWYgUHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmMgR2V0RnVuY3Rpb247CiAgICAgdHlwZWRlZiBQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYyBQdXRGdW5jdGlvbjsKKyAgICB0eXBlZGVmIEZ1bmN0aW9uRXhlY3V0
YWJsZSogKCpCdWlsdGluR2VuZXJhdG9yKShWTSYpOwogCiAgICAgY2xhc3MgSGFzaEVudHJ5IHsK
ICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC02OCwxMSArNjksMTIgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbV9pbnRyaW5zaWM7CiAgICAgICAgIH0K
IAorICAgICAgICBCdWlsdGluR2VuZXJhdG9yIGJ1aWx0aW5HZW5lcmF0b3IoKSBjb25zdCB7IEFT
U0VSVChtX2F0dHJpYnV0ZXMgJiBCdWlsdGluKTsgcmV0dXJuIG1fdS5idWlsdGluR2VuZXJhdG9y
LmdlbmVyYXRvclZhbHVlOyB9CiAgICAgICAgIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uKCkgY29u
c3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pOyByZXR1cm4gbV91LmZ1bmN0aW9u
LmZ1bmN0aW9uVmFsdWU7IH0KICAgICAgICAgdW5zaWduZWQgY2hhciBmdW5jdGlvbkxlbmd0aCgp
IGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKTsgcmV0dXJuIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXI+KG1fdS5mdW5jdGlvbi5sZW5ndGgpOyB9CiAKLSAgICAgICAgR2V0
RnVuY3Rpb24gcHJvcGVydHlHZXR0ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAm
IEZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVydHkuZ2V0OyB9Ci0gICAgICAgIFB1dEZ1bmN0
aW9uIHByb3BlcnR5UHV0dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBGdW5j
dGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5LnB1dDsgfQorICAgICAgICBHZXRGdW5jdGlvbiBw
cm9wZXJ0eUdldHRlcigpIGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1dGVzICYgQnVpbHRpbk9y
RnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0eS5nZXQ7IH0KKyAgICAgICAgUHV0RnVuY3Rp
b24gcHJvcGVydHlQdXR0ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEJ1aWx0
aW5PckZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVydHkucHV0OyB9CiAKICAgICAgICAgaW50
cHRyX3QgbGV4ZXJWYWx1ZSgpIGNvbnN0IHsgQVNTRVJUKCFtX2F0dHJpYnV0ZXMpOyByZXR1cm4g
bV91LmxleGVyLnZhbHVlOyB9CiAKQEAgLTk0LDYgKzk2LDEwIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgICAgIGludHB0cl90IGxlbmd0aDsgLy8gbnVtYmVyIG9mIGFyZ3VtZW50cyBm
b3IgZnVuY3Rpb24KICAgICAgICAgICAgIH0gZnVuY3Rpb247CiAgICAgICAgICAgICBzdHJ1Y3Qg
eworICAgICAgICAgICAgICAgIEJ1aWx0aW5HZW5lcmF0b3IgZ2VuZXJhdG9yVmFsdWU7CisgICAg
ICAgICAgICAgICAgaW50cHRyX3QgdW51c2VkOworICAgICAgICAgICAgfSBidWlsdGluR2VuZXJh
dG9yOworICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICBHZXRGdW5jdGlvbiBn
ZXQ7CiAgICAgICAgICAgICAgICAgUHV0RnVuY3Rpb24gcHV0OwogICAgICAgICAgICAgfSBwcm9w
ZXJ0eTsKQEAgLTIwOSw3ICsyMTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgog
ICAgICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IEhhc2hFbnRyeSogZW50cnkoUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgU3RyaW5nSW1wbCog
aW1wbCA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CisgICAgICAgICAgICBTdHJpbmdJbXBs
KiBpbXBsID0gcHJvcGVydHlOYW1lLnVpZCgpOwogICAgICAgICAgICAgaWYgKCFpbXBsKQogICAg
ICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAKQEAgLTI0OSw3ICsyNTUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgaWYgKCFlbnRyeSkgLy8gbm90IGZvdW5kLCBmb3J3YXJkIHRv
IHBhcmVudAogICAgICAgICAgICAgcmV0dXJuIFBhcmVudEltcDo6Z2V0T3duUHJvcGVydHlTbG90
KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKLSAgICAgICAgaWYgKGVudHJ5
LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikKKyAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVz
KCkgJiBCdWlsdGluT3JGdW5jdGlvbikKICAgICAgICAgICAgIHJldHVybiBzZXRVcFN0YXRpY0Z1
bmN0aW9uU2xvdChleGVjLCBlbnRyeSwgdGhpc09iaiwgcHJvcGVydHlOYW1lLCBzbG90KTsKIAog
ICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqLCBlbnRyeS0+YXR0cmlidXRl
cygpLCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSk7CkBAIC0yODYsNyArMjkyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIGlmICghZW50cnkpIC8vIG5vdCBmb3VuZCwgZm9yd2FyZCB0byBw
YXJlbnQKICAgICAgICAgICAgIHJldHVybiBQYXJlbnRJbXA6OmdldE93blByb3BlcnR5U2xvdCh0
aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCi0gICAgICAgIEFTU0VSVCghKGVu
dHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikpOworICAgICAgICBBU1NFUlQoIShlbnRyeS0+
YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pKTsKIAogICAgICAgICBzbG90LnNldENh
Y2hlYWJsZUN1c3RvbSh0aGlzT2JqLCBlbnRyeS0+YXR0cmlidXRlcygpLCBlbnRyeS0+cHJvcGVy
dHlHZXR0ZXIoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjk1LDcgKzMwMSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIGlubGluZSB2b2lkIHB1dEVudHJ5KEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIGJhc2UsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKICAgICB7CiAg
ICAgICAgIC8vIElmIHRoaXMgaXMgYSBmdW5jdGlvbiBwdXQgaXQgYXMgYW4gb3ZlcnJpZGUgcHJv
cGVydHkuCi0gICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pIHsKKyAg
ICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikgewogICAg
ICAgICAgICAgaWYgKEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVj
dCo+KHNsb3QudGhpc1ZhbHVlKCkpKQogICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERp
cmVjdChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKICAgICAgICAgfSBlbHNlIGlm
ICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBSZWFkT25seSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5k
ZXggZDVlNzI4YzJjZDEwMjBhNDdlNGFkY2Q2NDljZDFmZmZhNWNkNmE4My4uZGNhMmZkOGQxZjZh
YzIzYjhmZjgxN2NiYjE4ZmFhZTdiY2Q1OTcwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTM4LDYg
KzM4LDIwIEBAIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3Io
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAordm9pZCBOYXRpdmVFcnJvckNv
bnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUp
Cit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIG5hbWUpOworICAgIEFTU0VSVChpbmhl
cml0cyhpbmZvKCkpKTsKKyAgICAKKyAgICBOYXRpdmVFcnJvclByb3RvdHlwZSogcHJvdG90eXBl
ID0gTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGVTdHJ1Y3R1cmUsIG5hbWUsIHRoaXMpOworICAgIAorICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwg
RG9udEVudW0pOyAvLyBFQ01BIDE1LjExLjcuNQorICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBSZWFkT25seSB8IERv
bnRFbnVtKTsKKyAgICBtX2Vycm9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgRXJyb3JJbnN0YW5j
ZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSkpOworICAgIEFT
U0VSVChtX2Vycm9yU3RydWN0dXJlKTsKKyAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZS0+aXNP
YmplY3QoKSk7Cit9CisKIHZvaWQgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIE5hdGl2ZUVycm9y
Q29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcio+
KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvci5oCmluZGV4IDc0MGQzZjkzMzI5MmZkMmFjY2I0Yjk5MDM0NDMxMmI5
MzE5YWUxMTAuLjQzOGEzYWZiOWJiMGY2NDEyYzk3OTMyMjMwYzg4NzEwOTYxZjU0NjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0
b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0
cnVjdG9yLmgKQEAgLTUxLDE5ICs1MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdHJ1
Y3R1cmUqIGVycm9yU3RydWN0dXJlKCkgeyByZXR1cm4gbV9lcnJvclN0cnVjdHVyZS5nZXQoKTsg
fQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1
cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkKLSAgICAgICAgewotICAgICAgICAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0sIG5hbWUpOwotICAgICAgICAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8o
KSkpOwotCi0gICAgICAgICAgICBOYXRpdmVFcnJvclByb3RvdHlwZSogcHJvdG90eXBlID0gTmF0
aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVTdHJ1
Y3R1cmUsIG5hbWUsIHRoaXMpOwotCi0gICAgICAgICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERv
bnRFbnVtKTsgLy8gRUNNQSAxNS4xMS43LjUKLSAgICAgICAgICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBSZWFkT25s
eSB8IERvbnRFbnVtKTsKLSAgICAgICAgICAgIG1fZXJyb3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlz
LCBFcnJvckluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlKSk7Ci0gICAgICAgICAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZSk7Ci0gICAgICAgICAg
ICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZS0+aXNPYmplY3QoKSk7Ci0gICAgICAgIH0KKyAgICAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBw
cm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCmluZGV4IGQ5MzhmYTMxNjQ1
YWYyNmI3NTg1MTRkYjZiMjQ3OGYxODNlOWVlZTEuLmNmZTljNGQzMmJhNzY4Yzc0ZTRmZmJiMTkx
MzUyNzlkZWJmMTE3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5U2xvdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5U2xvdC5oCkBAIC00Miw2ICs0Miw4IEBAIGVudW0gQXR0cmlidXRlIHsKICAgICBGdW5jdGlv
biAgICAgPSAxIDw8IDQsICAvLyBwcm9wZXJ0eSBpcyBhIGZ1bmN0aW9uIC0gb25seSB1c2VkIGJ5
IHN0YXRpYyBoYXNodGFibGVzCiAgICAgQWNjZXNzb3IgICAgID0gMSA8PCA1LCAgLy8gcHJvcGVy
dHkgaXMgYSBnZXR0ZXIvc2V0dGVyCiAgICAgQ3VzdG9tQWNjZXNzb3IgPSAxIDw8IDYsCisgICAg
QnVpbHRpbiAgICAgICAgID0gMSA8PCA3LCAvLyBwcm9wZXJ0eSBpcyBhIGJ1aWx0aW4gZnVuY3Rp
b24gLSBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKKyAgICBCdWlsdGluT3JGdW5jdGlv
biA9IEJ1aWx0aW4gfCBGdW5jdGlvbiwgLy8gaGVscGVyIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFz
aHRhYmxlcwogfTsKIAogY2xhc3MgUHJvcGVydHlTbG90IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAppbmRleCBiYzUxNmIwNmQ2
NjUxZjBlNjgyYTIwMTdiZGY4YjAzYmFiZWQ2ZWEyLi4yYzI0MzRiODdkMDRmNzQ5Y2IxMmU2MDJh
YjU0Nzg0OTQ2YTkxZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiUmVn
RXhwQ29uc3RydWN0b3IuaCIKIAogI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNTdHJp
bmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlJlZ0V4cE1h
dGNoZXNBcnJheS5oIgogI2luY2x1ZGUgIlJlZ0V4cFByb3RvdHlwZS5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKaW5kZXggODlkN2Fj
MWI4Y2JmMWRiMGUxMjZmMWZjNzk2ZGZkNWZjODRiMmU1OS4uOWRkYTBiYThkZTE0MTJlYWY0ZDI5
MWRjZjBjNmIzOTY1N2ZiNjc3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAiQXJy
YXlQcm90b3R5cGUuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIK
LSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
ICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRl
ICJKU1N0cmluZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2V0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29u
c3RydWN0b3IuY3BwCmluZGV4IGIyMDM4ODhkM2MxNmNkYTNjMDAzNTA2MjA4YWUwODY5NWRjNWRh
YWEuLmQwMjY2YTU5ZWYzZjU1YWEzNjk0ZjVmNzQxOGNmNzhlMGFlMGQ4YjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAKQEAgLTMxLDYg
KzMxLDcgQEAKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxP
YmplY3QuaCIKICNpbmNsdWRlICJKU1NldC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5o
IgogI2luY2x1ZGUgIk1hcERhdGEuaCIKICNpbmNsdWRlICJTZXRQcm90b3R5cGUuaCIKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKaW5kZXggNDQw
YTYwOTQyMTkzMzgwMzFlNTkyN2FmNDZiMjg5ZGJjZmI1YTcyOC4uODBlN2VhYThjNDkxY2I2ZDU0
YTgzMjRjZTY0N2E2Y2RiN2U4ODc4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdPYmplY3QuY3BwCkBAIC0yMiw3ICsyMiw5IEBACiAjaW5jbHVkZSAiU3RyaW5n
T2JqZWN0LmgiCiAKICNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lu
bGluZXMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1l
QXJyYXkuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAK
aW5kZXggMDQyOTFmN2U4ZGQyNGU4YWIzM2Q3NWFmMWRhNDU2OGYyYmM5OWU2OC4uMWVjYWI4NWMw
YmRiMjg2OTg5NDU3N2E3NDEyNTRlMzY0NDE0OWQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0yNywxMiArMjcsMTggQEAKICNpbmNsdWRlICJT
dHJ1Y3R1cmUuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkNvbW1vbklk
ZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRHVtcENvbnRleHQuaCIKKyNpbmNsdWRlICJKU0NlbGxJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTG9v
a3VwLmgiCisjaW5jbHVkZSAiUHJvcGVydHlNYXBIYXNoVGFibGUuaCIKICNpbmNsdWRlICJQcm9w
ZXJ0eU5hbWVBcnJheS5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZUNoYWluLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIlN0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9Db21tYVBy
aW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNTJjY2Y0MjNhMTA0M2UxMDc5ZjJkOGIxODk0
MjE5ODkwZTcxZjJiYy4uMDIwNjk1ZmFjODNlZDRlNTE4NWI3MGU2OTY5OTYzYTJkZTlhMzY3MSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkFyZ0xpc3QuaCIKICNpbmNsdWRlICJBcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5o
IgogI2luY2x1ZGUgIkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5oIgorI2luY2x1ZGUg
IkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZUlubGluZXMuaCIKICNp
bmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2RlQ2FjaGUuaCIKQEAgLTU1LDcgKzU2
LDkgQEAKICNpbmNsdWRlICJKU0FQSVZhbHVlV3JhcHBlci5oIgogI2luY2x1ZGUgIkpTQWN0aXZh
dGlvbi5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKLSNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisj
aW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgi
CisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3Bl
LmgiCkBAIC02OCwxMyArNzEsMTYgQEAKICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJN
YXBEYXRhLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKKyNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNs
dWRlICJQYXJzZXJBcmVuYS5oIgorI2luY2x1ZGUgIlByb3BlcnR5TWFwSGFzaFRhYmxlLmgiCiAj
aW5jbHVkZSAiUmVnRXhwQ2FjaGUuaCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNs
dWRlICJTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNvdXJjZVByb3Zp
ZGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTdHJpY3RFdmFsQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUg
IlN0cm9uZ0lubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKICNpbmNsdWRlICJXZWFrTWFwRGF0YS5oIgogI2luY2x1
ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KQEAgLTIyNiw2ICsyMzIsNyBAQCBWTTo6Vk0oVk1UeXBlIHZt
VHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2luRGVmaW5lT3duUHJvcGVydHkoZmFs
c2UpCiAgICAgLCBtX2NvZGVDYWNoZShDb2RlQ2FjaGU6OmNyZWF0ZSgpKQogICAgICwgbV9lbmFi
bGVkUHJvZmlsZXIobnVsbHB0cikKKyAgICAsIG1fYnVpbHRpbkV4ZWN1dGFibGVzKEJ1aWx0aW5F
eGVjdXRhYmxlczo6Y3JlYXRlKCp0aGlzKSkKIHsKICAgICBpbnRlcnByZXRlciA9IG5ldyBJbnRl
cnByZXRlcigqdGhpcyk7CiAgICAgU3RhY2tCb3VuZHMgc3RhY2sgPSB3dGZUaHJlYWREYXRhKCku
c3RhY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDVhODQxMDVlYWZiN2Fi
YmE1ZmE0MzFlZWVkZDU1ZDdhODlmNTVjZTIuLjY5NThhYzM5M2IxYWVmYzBiZWZiZjZlNGViOGI2
ODI1Y2Y3YzlhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNDQsNiArNDQs
NyBAQAogI2luY2x1ZGUgIlByaXZhdGVOYW1lLmgiCiAjaW5jbHVkZSAiUHJvdG90eXBlTWFwLmgi
CiAjaW5jbHVkZSAiU21hbGxTdHJpbmdzLmgiCisjaW5jbHVkZSAiU291cmNlQ29kZS5oIgogI2lu
Y2x1ZGUgIlN0cm9uZy5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgogI2luY2x1ZGUg
IlR5cGVkQXJyYXlDb250cm9sbGVyLmgiCkBAIC02OSw2ICs3MCw3IEBACiBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzOworICAgIGNsYXNzIEJ1
aWx0aW5FeGVjdXRhYmxlczsKICAgICBjbGFzcyBDb2RlQmxvY2s7CiAgICAgY2xhc3MgQ29kZUNh
Y2hlOwogICAgIGNsYXNzIENvbW1vbklkZW50aWZpZXJzOwpAQCAtNDk3LDYgKzQ5OSw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHJlZ2lzdGVyV2F0Y2hwb2ludEZvckltcHVyZVBy
b3BlcnR5KGNvbnN0IElkZW50aWZpZXImLCBXYXRjaHBvaW50Kik7CiAgICAgICAgIC8vIEZJWE1F
OiBVc2UgQXRvbWljU3RyaW5nIG9uY2UgaXQgZ290IG1lcmdlZCB3aXRoIElkZW50aWZpZXIuCiAg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkSW1wdXJlUHJvcGVydHkoY29uc3QgU3Ry
aW5nJik7CisgICAgICAgIAorICAgICAgICBCdWlsdGluRXhlY3V0YWJsZXMqIGJ1aWx0aW5FeGVj
dXRhYmxlcygpIHsgcmV0dXJuIG1fYnVpbHRpbkV4ZWN1dGFibGVzLmdldCgpOyB9CiAKICAgICBw
cml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpAQCAt
NTM3LDEwICs1NDEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNWYWx1ZSBtX2V4Y2Vw
dGlvbjsKICAgICAgICAgYm9vbCBtX2luRGVmaW5lT3duUHJvcGVydHk7CiAgICAgICAgIE93blB0
cjxDb2RlQ2FjaGU+IG1fY29kZUNhY2hlOwotICAgICAgICBSZWZDb3VudGVkQXJyYXk8U3RhY2tG
cmFtZT4gbV9leGNlcHRpb25TdGFjazsKLQogICAgICAgICBMZWdhY3lQcm9maWxlciogbV9lbmFi
bGVkUHJvZmlsZXI7Ci0KKyAgICAgICAgT3duUHRyPEJ1aWx0aW5FeGVjdXRhYmxlcz4gbV9idWls
dGluRXhlY3V0YWJsZXM7CisgICAgICAgIFJlZkNvdW50ZWRBcnJheTxTdGFja0ZyYW1lPiBtX2V4
Y2VwdGlvblN0YWNrOwogICAgICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdhdGNocG9pbnRT
ZXQ+PiBtX2ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludFNldHM7CiAgICAgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCBmODAwMDVmMjc5MTYzYmEwOGUyYTUzODVlZTE0M2VhNTQwMjQ2MWU3Li4z
ZjEyZTYxYTk3MDBkNzBmOTExNWZiOWZlOWM2YzE0NzllYTUxYThkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dApAQCAtMTAxLDYgKzEwMSw3IEBAIHNldChXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMK
ICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L0FQSSIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L2Fzc2VtYmxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J5dGVjb2RlIgorICAg
ICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMiCiAgICAgIiR7SkFWQVNDUklQVENPUkVf
RElSfS9ieXRlY29tcGlsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9kZmciCiAgICAg
IiR7SkFWQVNDUklQVENPUkVfRElSfS9kaXNhc3NlbWJsZXIiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oIGIvU291
cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43MGZjYzM4NGU4ZWRmYzM0YjE0MDgzYjg2NWQzNzM4MjBmNDE2NWM0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9K
U1N0cmluZ0lubGluZXMuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSlNT
dHJpbmdJbmxpbmVzX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfSlNTdHJpbmdJbmxpbmVzX2gKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ0lubGluZXMuaD4KKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxh
Y2VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudC5jcHAKaW5kZXggMmVkZGNkYmI5ZjAwNmNhNzYyNjY1MGI0MjAyNzg2MjZi
OTI2MTQxNy4uM2M0ZTBkN2JiYjMxY2FiMTJiNWU2Yzk3NWM3NGQzZjQ4NGU5Y2IxNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxh
Y2VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnQuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcAppbmRl
eCA1NjQ5Yzg1Y2EwOTU4Nzc0OGEzZGEwNmNkZGQwY2E5OTllNTBiOGU3Li4zZjRkOGVmYWViNTdm
MzMwMDNlNzNhN2U3ODQyZTQyYzczY2U2NDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0lEQkFueUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNJREJBbnlDdXN0b20uY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiSlNJ
REJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIkpTSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRl
ICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nSW5s
aW5lcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwCmluZGV4IDllYWU3NTY5YzcwNjAz
YTRmZWQwYWYxNGM0Zjg3MThjZGU2NGE2ZTEuLmY0OWRmZTkwYjRlODJkMzllZGNiZjliYTI5ZjJh
ZTc5OWMwZGRmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURC
RGF0YWJhc2VDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURC
RGF0YWJhc2VDdXN0b20uY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiSURCT2JqZWN0
U3RvcmUuaCIKICNpbmNsdWRlICJKU0lEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSA8cnVudGlt
ZS9FcnJvci5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmcuaD4KKyNpbmNsdWRlIDxydW50
aW1lL0pTU3RyaW5nSW5saW5lcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3Bw
CmluZGV4IDc0ZmQzNTRiMjg2MDdjZjc4MjJmODA1MzQ3OTcwZjVkN2FjOGM4MzIuLjU0MzRiM2I3
ZDZjNTZlY2IwYTAzYTI3OTRjNjczNmE5YWRmYjcwZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwCkBAIC0zNiw3ICsz
Niw3IEBACiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJKU0lEQkluZGV4
LmgiCiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJp
bmcuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oPgogCiB1c2luZyBuYW1l
c3BhY2UgSlNDOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05v
ZGVGaWx0ZXJDb25kaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2Rl
RmlsdGVyQ29uZGl0aW9uLmNwcAppbmRleCBkMWI0NzIxMzUxZWIxYjJiZjhjZTBjZDQ3M2ZlZTE0
NDkxNGM1M2FiLi5mMWRhYThhMTA0NmIzM2ZhM2QzNWE2NmM1NTllZTBmYWYyYWRlNjQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlv
bi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJOb2RlRmlsdGVyLmgiCiAjaW5jbHVk
ZSA8cnVudGltZS9FcnJvci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CisjaW5jbHVk
ZSA8cnVudGltZS9KU1N0cmluZ0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9D
TWFrZUxpc3RzLnR4dAppbmRleCBmYjRhZDk1MTgwZDhlNTkzNzgyZjhiZWE0YTg5ZmJlNDMzOWY5
ZTU2Li4xYjg0ZjJiNjhkYjMwM2NkMThiMzc4MDY0NjAyNTZkMTdjYTcxMWU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VM
aXN0cy50eHQKQEAgLTY2LDYgKzY2LDcgQEAgc2V0KFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVT
CiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9BUEkiCiAgICAgIiR7SkFWQVNDUklQVENPUkVf
RElSfS9hc3NlbWJsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9ieXRlY29kZSIKKyAg
ICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zIgogICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vYnl0ZWNvbXBpbGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGlzYXNzZW1i
bGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGZnIgpAQCAtNzgsNiArNzksNyBAQCBz
ZXQoV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L3Byb2ZpbGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcnVudGltZSIKICAgICAiJHtX
VEZfRElSfSIKKyAgICAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIKICAg
ICAiJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9IgogICAgICIke0RFUklWRURfU09VUkNF
U19ESVJ9L0ZvcndhcmRpbmdIZWFkZXJzIgogICAgICIke0NNQUtFX0JJTkFSWV9ESVJ9IgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9D
TWFrZUxpc3RzLnR4dAppbmRleCA2NzE4MWM4NGZmYjE2MTUzZjZjM2U0ODk4NWYwOTNlZWI0ODVh
ZThjLi5kZjhmMTJlMzJlMjhjYTRjMzdkNTM2ODFjMzFiNzAwNWRiZWUzNTFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFr
ZUxpc3RzLnR4dApAQCAtMTIxLDYgKzEyMSw3IEBAIHNldChXZWJLaXQyX0lOQ0xVREVfRElSRUNU
T1JJRVMKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L0FQSSIKICAgICAiJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2Fzc2VtYmxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J5dGVjb2Rl
IgorICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMiCiAgICAgIiR7SkFWQVNDUklQ
VENPUkVfRElSfS9ieXRlY29tcGlsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9jb2xs
ZWN0b3IvaGFuZGxlcyIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2RmZyIKQEAgLTEzMyw2
ICsxMzQsNyBAQCBzZXQoV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7SkFWQVND
UklQVENPUkVfRElSfS9ydW50aW1lIgogICAgICIke1dURl9ESVJ9IgogICAgICIke0RFUklWRURf
U09VUkNFU19ESVJ9IgorICAgICIke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9
IgogICAgICIke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0iCiAgICAgIiR7REVSSVZFRF9T
T1VSQ0VTX1dFQktJVDJfRElSfSIKICAgICAiJHtERVJJVkVEX1NPVVJDRVNfV0VCS0lUMl9ESVJ9
L2luY2x1ZGUiCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvZ3Rlc3QvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvY21ha2UvZ3Rlc3QvQ01ha2VMaXN0cy50eHQKaW5kZXggNTZiZjQ0NzgyNTE4Njg3
NmYyNTcxMTg2MDlmNDM1MjE4MzRlYzk1OS4uN2Y1MjFhODk4Yjg5ZDhkZWIzMDljNmUwZmJhMDhh
MzNmNjVlYjVkNSAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL2d0ZXN0L0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9jbWFrZS9ndGVzdC9DTWFrZUxpc3RzLnR4dApAQCAtNiw2ICs2LDcgQEAK
IGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtUSElSRFBBUlRZX0RJUn0vZ3Rlc3QKICAgICAke1RISVJE
UEFSVFlfRElSfS9ndGVzdC9pbmNsdWRlCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9CisgICAg
JHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfQogICAgICR7V1RGX0RJUn0KICkK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQ01ha2VMaXN0cy50eHQgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dAppbmRleCA3YjhhYTE4NDk2YWIxOTdjNmQ4
ZGU5M2ExYjdiOWU0NDM4MDliYmYxLi41ZDM2OGFhNjE5Y2FmNDIyOTlkZDQ3NzU2MzFiNTQ3MjRl
MmYyY2Y4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dApAQCAtNTgsNiArNTgsNyBA
QCBzZXQoRHVtcFJlbmRlclRyZWVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICR7SkFWQVNDUklQ
VENPUkVfRElSfS9wcm9maWxlcgogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9ydW50aW1lCiAg
ICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L0ZvcndhcmRpbmdIZWFkZXJzCisgICAgIntERVJJVkVE
X1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfQogICAgICR7VE9PTFNfRElSfS9EdW1wUmVuZGVy
VHJlZQogICAgICR7V1RGX0RJUn0KICAgICAke0NNQUtFX1NPVVJDRV9ESVJ9L1NvdXJjZQpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQKaW5kZXggNWEzNDZkNzQwNTNkMTU5NTIzMzEw
YWQ5NmYyNzA2YWViNDc1MDM5ZS4uY2I0YjE5MTgxMzcwOGNhNGEyYTc4ZDczMjc4MTY2NzgwNTE0
YzI5MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0CkBAIC0yOCw2ICsyOCw3
IEBAIHNldChXZWJLaXRUZXN0UnVubmVyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAke1dFQktJ
VF9URVNUUlVOTkVSX0RJUn0vSW5qZWN0ZWRCdW5kbGUvYXRrCiAgICAgJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L0ZvcndhcmRpbmdIZWFkZXJzCisgICAg
JHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfQogICAgICR7V0VCQ09SRV9ESVJ9
L2VkaXRpbmcKICAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybQogICAgICR7V0VCQ09SRV9ESVJ9
L3BsYXRmb3JtL2dyYXBoaWNzCmRpZmYgLS1naXQgYS9Ub29scy9XaW5DRUxhdW5jaGVyL0NNYWtl
TGlzdHMudHh0IGIvVG9vbHMvV2luQ0VMYXVuY2hlci9DTWFrZUxpc3RzLnR4dAppbmRleCA5MTRi
YjJiZGM5NmIwYjU4ZTU4ZjJmM2U1YjMzNjNmOGQzNGYzMzVkLi5iMTlmYzYxZDQwNDU3NDM1ODkx
MzZhOGYwZTFlYmM1YjBhYTI5MWU1IDEwMDY0NAotLS0gYS9Ub29scy9XaW5DRUxhdW5jaGVyL0NN
YWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1dpbkNFTGF1bmNoZXIvQ01ha2VMaXN0cy50eHQKQEAg
LTYsNiArNiw3IEBAIHNldChXaW5DRUxhdW5jaGVyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAi
JHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yayIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxh
dGZvcm0vdGV4dCIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9IgorICAgICIke0RFUklWRURf
U09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9IgogICAgICIke1dURl9ESVJ9IgogICAgICIke0RF
UklWRURfU09VUkNFU19ESVJ9IgogICAgICIke0NNQUtFX0JJTkFSWV9ESVJ9IgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDlk
MDY2ZjVlMWEwMDRmYmQ0ZDU3NDBlNDk3YzgyOGM5YmU4ZjkwZGEuLjkwOTJlMTcwOWQ2ZmYyNmRh
ZTZmMjkyM2M3NTFjYjY4YWUzMzYwNWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxNC0wMS0y
OSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgaXQgcG9z
c2libGUgdG8gaW1wbGVtZW50IEpTIGJ1aWx0aW5zIGluIEpTCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc4ODcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIHRoZSB0ZXN0IHJlc3VsdHMgZm9y
IG5ldyBlcnJvciBtZXNzYWdlcyAobm93IHRoYXQgdGhleSdyZQorICAgICAgICBhY3R1YWxseSBo
ZWxwZnVsKSwgYW5kIGFkZGVkIGEganMtcmVncmVzcyB0ZXN0IHRvIHRyYWNrIHBlcmZvcm1hbmNl
LgorCisgICAgICAgICoganMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpz
L2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
anMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBqcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuanM6
IEFkZGVkLgorICAgICAgICAodGVzdDEpOgorICAgICAgICAodGVzdDIpOgorICAgICAgICAodGVz
dDMpOgorCiAyMDE0LTAxLTMwICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgog
CiAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXBsdWdpbi1wcml2YXRl
LWJyb3dzaW5nLXRvZ2dsZWQuaHRtbCBpcyBmbGFreSBvbiBXSzIKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2FycmF5
LWV2ZXJ5LWV4cGVjdGVkLnR4dAppbmRleCA1NDFiOGMzNThmMDY4YTBjZWE4ODJjMTA1MTc1MzI1
MTE0Y2QzM2Y3Li5jY2EzNjNkY2U1OGZiYTk1YTU4Y2U0NmZjYjQ4YzM4YmY1OGFkZjU5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0CkBAIC0zMCwxMiArMzAsMTIgQEAg
UEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KGlzQmlnRW5vdWdoQW5kRXhjZXB0aW9uKSB0
aHJldyBleGNlcHRpb24gZXhjZXB0aW8KIFBBU1MgWzEyLCA1NCwgMTgsIDEzMCwgNDRdLmV2ZXJ5
KGlzQmlnRW5vdWdoQW5kRXhjZXB0aW9uKSB0aHJldyBleGNlcHRpb24gZXhjZXB0aW9uIGZyb20g
ZnVuY3Rpb24uCiAKIDUuMCBXcm9uZyBUeXBlIGZvciBDYWxsYmFjayBUZXN0Ci1QQVNTIFsxMiwg
NSwgOCwgMTMwLCA0NF0uZXZlcnkoNSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBl
cnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSgnd3JvbmcnKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2
ZXJ5KG5ldyBPYmplY3QoKSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4K
LVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShudWxsKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KHVuZGVm
aW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1
LCA4LCAxMzAsIDQ0XS5ldmVyeSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJy
b3IuCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoNSkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlv
bi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSgnd3JvbmcnKSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1
bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KG5ldyBPYmplY3QoKSkgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11
c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShudWxsKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sg
bXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KHVuZGVm
aW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNh
bGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVy
eSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxs
YmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCiAKIDYuMCBFYXJseSBFeGl0ICgiU2hvcnQgQ2lyY3Vp
dGluZyIpCiBQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoaXNCaWdFbm91Z2hTaG9ydENp
cmN1aXQpIGlzIGZhbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vYXJyYXktcHJv
dG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL2FycmF5
LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAppbmRleCAyYzJhNjhjYjEwNmRhMTBm
MDg2YjIyYzViZjJiZjVjOGZlNzllMzNlLi41ZDllY2I3NWE4ZGE3OWJhNjU2MDVlN2ViOWNmOGZj
MjVmZTE4YWZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9kb20vYXJyYXktcHJvdG90eXBl
LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9hcnJheS1w
cm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQKQEAgLTE1LDcgKzE1LDcgQEAgUEFTUyBB
cnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh1bmRlZmluZWQsIDAsIDEpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IHVuZGUKIFBBU1MgQXJyYXkucHJvdG90eXBlLnNvcnQuY2FsbCh1bmRlZmlu
ZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0
IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUuc29ydC5jYWxsKHVuZGVmaW5lZCknKS4KIFBB
U1MgQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKHVuZGVmaW5lZCwgMCwgMSkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcg
J0FycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbCh1bmRlZmluZWQsIDAsIDEpJykuCiBQQVNTIEFy
cmF5LnByb3RvdHlwZS51bnNoaWZ0LmNhbGwodW5kZWZpbmVkLCB7fSkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5
LnByb3RvdHlwZS51bnNoaWZ0LmNhbGwodW5kZWZpbmVkLCB7fSknKS4KLVBBU1MgQXJyYXkucHJv
dG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnBy
b3RvdHlwZS5ldmVyeS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpJykuCitQQVNTIEFycmF5LnBy
b3RvdHlwZS5ldmVyeS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3Qg
YmUgdW5kZWZpbmVkLgogUEFTUyBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHVuZGVmaW5l
ZCwgdG9TdHJpbmcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3Qg
YW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHVuZGVm
aW5lZCwgdG9TdHJpbmcpJykuCiBQQVNTIEFycmF5LnByb3RvdHlwZS5zb21lLmNhbGwodW5kZWZp
bmVkLCB0b1N0cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5v
dCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5zb21lLmNhbGwodW5kZWZp
bmVkLCB0b1N0cmluZyknKS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbCh1bmRl
ZmluZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4g
b2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKHVuZGVmaW5l
ZCwgMCknKS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90
eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJv
dG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMjkwYzBlZWZmOGRlNDIxODMz
ZDkyZDI3ZTk1MjQxOTE3NjA0Yjk2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAg
QEAKK0pTUmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkKKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlNWNjMTcxYzQ4
NzVhMzU4NWJmMTRlNTQxNWY1Y2QwZTU4MWQ1NDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sCkBAIC0wLDAgKzEsMTIg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNz
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2FycmF5LXByb3Rv
dHlwZS1ldmVyeS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlZ3Jlc3Mt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuanMgYi9M
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZlcnku
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjk0YWExNjFjMGNlOThiMmFiMThhM2ExYTFmMGRmYWFjOWQ3ZDJlMgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Fy
cmF5LXByb3RvdHlwZS1ldmVyeS5qcwpAQCAtMCwwICsxLDI5IEBACit2YXIgcmVzdWx0ID0gMDsK
K2Z1bmN0aW9uIHRlc3QxKGEpIHsKKyAgICByZXN1bHQgPDwgMTsKKyAgICByZXN1bHQrKzsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KK2Z1bmN0aW9uIHRlc3QyKGEsYikgeworICAgIHJlc3VsdCBePSAz
OworICAgIHJlc3VsdCAqPSAzOworICAgIHJldHVybiB0cnVlOworfQorZnVuY3Rpb24gdGVzdDMo
YSxiLGMpIHsKKyAgICByZXN1bHQgXj0gcmVzdWx0ID4+IDE7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3ZhciByZXN1bHQgPSAwOwordmFyIGFycmF5ID0gW10KK2ZvciAodmFyIGkgPSAwOyBpIDwg
MTAwMDAwOyArK2kpCisgICAgYXJyYXlbaV0gPSAxOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEw
OyBpKyspIHsKKyAgICBhcnJheS5ldmVyeSh0ZXN0MSk7CisgICAgYXJyYXkuZXZlcnkodGVzdDIp
OworICAgIGFycmF5LmV2ZXJ5KHRlc3QzKTsKK30KKworaWYgKHJlc3VsdCAhPSAxNDI4ODEwNDk2
KQorICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBh
L0dOVW1ha2VmaWxlLmFtIGIvR05VbWFrZWZpbGUuYW0KaW5kZXggNzNmYzQ5MjhjNGRkNDliNTQ5
ODY5YjUwNjc4YzZiZGU3NGY0NDc2MC4uMDhjOTExNTQyNjA1MDBkZTNmZjA0YjAyMGNlMGQ2MGY5
OGU4Y2ZlOCAxMDA2NDQKLS0tIGEvR05VbWFrZWZpbGUuYW0KKysrIGIvR05VbWFrZWZpbGUuYW0K
QEAgLTY4LDYgKzY4LDcgQEAgQUxMX01PRklMRVMgOj0KIGRvbV9iaW5kaW5nX2lkbHMgOj0KIHd0
Zl9zb3VyY2VzIDo9CiBqYXZhc2NyaXB0Y29yZV9oX2FwaSA6PQoramF2YXNjcmlwdGNvcmVfYnVp
bHRpbnNfanNfbm9zb3VyY2VzIDo9CiBqYXZhc2NyaXB0Y29yZV9jcHBmbGFnczo9CiBqYXZhc2Ny
aXB0Y29yZV9jZmxhZ3MgOj0KIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgOj0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222834</attachid>
            <date>2014-01-31 12:08:10 -0800</date>
            <delta_ts>2014-01-31 12:28:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140131120802.patch</filename>
            <type>text/plain</type>
            <size>208328</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
Yzc1MjcwNTQ1OWY5NmM5ODMwYzk3NTQxZmIyZjliMTU2MjJjY2I0Li4yNzhkZmE3Njg0NTQ2NjRi
NGM4M2M5N2QyZWUwOTdiZjIzYzA2NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
VGhlIHJlc3VsdCBvZiB0aGlzIHJlZmFjdG9yaW5nCisgICAgICAgIGlzIHRoYXQgQ29tbW9uSWRl
bnRpZmllcnMsIGFuZCBhIGZldyBvdGhlciBtaXNjZWxsYW5lb3VzIGhlYWRlcnMgbm93CisgICAg
ICAgIG5lZWQgdG8gYmUgaW5jbHVkZWQgZGlyZWN0bHkgYXMgdGhleSB3ZXJlIGZvcm1lcmx5IGNh
cHR1cmVkIHRocm91Z2ggb3RoZXIKKyAgICAgICAgcGF0aHMuCisKKyAgICAgICAgSW4gYWRkaXRp
b24gdGhpcyBhZGRzIGEgZmxhZyB0byB0aGUgTG9va3VwIHRhYmxlJ3MgaGFzaGVudHJ5IHRvIGlu
ZGljYXRlCisgICAgICAgIHRoYXQgYSBzdGF0aWMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgYmFja2Vk
IGJ5IEpTLiBUaGVyZSBpcyB0aGVuIGEgbG90IG9mCisgICAgICAgIGxvZ2ljIHRvIHRocmVhZCB0
aGUgc3BlY2lhbCBuYXR1cmUgb2YgdGhlIGZ1bmN0b24gdG8gd2hlcmUgaXQgbWF0dGVycy4KKyAg
ICAgICAgVGhpcyBhbGxvd3MgdG9TdHJpbmcoKSwgLmNhbGxlciwgZXRjIHRvIG1pbWljIHRoZSBi
ZWhhdmlvdXIgb2YgYSBob3N0CisgICAgICAgIGZ1bmN0aW9uLgorCisgICAgICAgIE5vdGVzIG9u
IHdyaXRpbmcgYnVpbHRpbnM6CisgICAgICAgICAtIEVhY2ggZnVuY3Rpb24gaXMgY29tcGlsZWQg
aW5kZXBlbmRlbnRseSBvZiB0aGUgb3RoZXJzLCBhbmQgdGhvc2UKKyAgICAgICAgICAgaW1wbGVt
ZW50YXRpb25zIGNhbm5vdCBjdXJyZW50bHkgY2FwdHVyZSBhbGwgZ2xvYmFsIHByb3BlcnRpZXMg
KGFzCisgICAgICAgICAgIHRoYXQgY291bGQgYmUgcG90ZW50aWFsbHkgdW5zYWZlKS4gSWYgYSBm
dW5jdGlvbiBkb2VzIGNhcHR1cmUgYQorICAgICAgICAgICBnbG9iYWwgd2Ugd2lsbCBkZWxpYmVy
YXRlbHkgY3Jhc2guCisgICAgICAgICAtIEZvciB0aG9zZSAiZ2xvYmFsIiBwcm9wZXJ0aWVzIHRo
YXQgd2UgZG8gd2FudCBhY2Nlc3MgdG8sIHdlIHVzZQorICAgICAgICAgICB0aGUgQCBwcmVmaXgs
IGUuZy4gT2JqZWN0KHRoaXMpIGJlY29tZXMgQE9iamVjdCh0aGlzKS4gVGhlIEAgaWRlbnRpZmll
cnMKKyAgICAgICAgICAgYXJlIHByaXZhdGUgbmFtZXMsIGFuZCBiZWhhdmUganVzdCBsaWtlIHJl
Z3VsYXIgcHJvcGVydGllcywgb25seQorICAgICAgICAgICB3aXRob3V0IHRoZSByaXNrIG9mIGFk
dWx0ZXJhdGlvbi4gQWdhaW4sIGluIHRoZSBAT2JqZWN0IGNhc2UsIHdlCisgICAgICAgICAgIGV4
cGxpY2l0bHkgZHVwbGljYXRlIHRoZSBPYmplY3RDb25zdHJ1Y3RvciByZWZlcmVuY2Ugb24gdGhl
IEdsb2JhbE9iamVjdAorICAgICAgICAgICBzbyB0aGF0IHdlIGhhdmUgZ3VhcmFudGVlZCBhY2Nl
c3MgdG8gdGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhlCisgICAgICAgICAgIGNvbnN0cnVjdG9y
LgorICAgICAgICAgLSBjYWxsLCBhcHBseSwgZXZhbCwgYW5kIEZ1bmN0aW9uIGFyZSBhbGwgcmVq
ZWN0ZWQgaWRlbnRpZmllcnMsIGFnYWluCisgICAgICAgICAgIHRvIHByZXZlbnQgYW55dGhpbmcg
ZnJvbSBhY2NpZGVudGFsbHkgdXNpbmcgYW4gYWR1bHRlcmF0ZWQgb2JqZWN0LgorICAgICAgICAg
ICBJbnN0ZWFkIEBjYWxsIGFuZCBAYXBwbHkgYXJlIGF2YWlsYWJsZSwgYW5kIGhhcHBpbHkgdGhl
eSBjb21wbGV0ZWx5CisgICAgICAgICAgIGRyb3AgdGhlIG5lcV9wdHIgaW5zdHJ1Y3Rpb24gYXMg
dGhleSdyZSBkZWZpbmVkIGFzIGFsd2F5cyBiZWluZyB0aGUKKyAgICAgICAgICAgb3JpZ2luYWwg
Y2FsbC9hcHBseSBmdW5jdGlvbnMuCisKKyAgICAgICAgVGhlc2UgcmVzdHJpY3Rpb25zIGFyZSBq
dXN0IGludGVuZGVkIHRvIG1ha2UgaXQgaGFyZGVyIHRvIGFjY2lkZW50YWxseQorICAgICAgICBt
YWtlIGNoYW5nZXMgdGhhdCBhcmUgaW5jb3JyZWN0IChmb3IgaW5zdGFuY2UgY2FsbGluZyB3aGF0
ZXZlciBoYXMgYmVlbgorICAgICAgICBhc3NpZ25lZCB0byBnbG9iYWwuT2JqZWN0LCBpbnN0ZWFk
IG9mIHRoZSBvcmlnaW5hbCBjb25zdHJ1Y3RvciBmdW5jdGlvbikuCisgICAgICAgIEhvd2V2ZXIs
IG1ha2luZyBhIG1pc3Rha2UgbGlrZSB0aGlzIHNob3VsZCByZXN1bHQgaW4gYSBwdXJlbHkgc2Vt
YW50aWMKKyAgICAgICAgZXJyb3IgYXMgZnVuZGFtZW50YWxseSB0aGVzZSBmdW5jdGlvbnMgYXJl
IHRyZWF0ZWQgYXMgdGhvdWdoIHRoZXkgd2VyZQorICAgICAgICByZWd1bGFyIEpTIGNvZGUgaW4g
dGhlIGhvc3QgZ2xvYmFsLCBhbmQgaGF2ZSBubyBtb3JlIHByaXZpbGVnZXMgdGhhbgorICAgICAg
ICBhbnkgb3RoZXIgSlMuCisKKyAgICAgICAgVGhlIGluaXRpYWwgcHJvb2Ygb2YgY29uY2VwdCBp
cyBBcnJheS5wcm90b3R5cGUuZXZlcnksIHRoaXMgc2hvd3MgYSA2NSUKKyAgICAgICAgcGVyZm9y
bWFuY2UgaW1wcm92ZW1lbnQsIGFuZCB0aGF0IGltcHJvdmVtZW50IGlzIHNpZ25pZmljYW50bHkg
aHVydCBieQorICAgICAgICBvdXIgcG9vciBvcHRpbWlzYXRpb24gb2Ygb3BfaW4uCisKKyAgICAg
ICAgQXMgdGhpcyBpcyBzdWNoIGEgbGltaXRlZCBmdW5jdGlvbiwgd2UgaGF2ZSBub3QgeWV0IGV4
cG9ydGVkIGFsbCBzeW1ib2xzCisgICAgICAgIHRoYXQgd2UgY291bGQgcG9zc2libHkgbmVlZCwg
YnV0IGFzIHdlIGltcGxlbWVudCBtb3JlLCB0aGUgbGlrZWxpaG9vZAorICAgICAgICBvZiBlbmNv
dW50ZXJpbmcgbWlzc2luZyBmZWF0dXJlcyB3aWxsIHJlZHVjZS4KKworICAgICAgICBUaGlzIGRp
ZCByZXF1aXJlIGJyZWFraW5nIG91dCBhIEpTU3RyaW5nSW5saW5lcyBoZWFkZXIsIGFuZCByZXF1
aXJlZAorICAgICAgICBmaXhpbmcgYSBmZXcgb2JqZWN0cyB0aGF0IHdlcmUgdHJ5aW5nIHRvIHVz
aW5nIFByb3BlcnR5TmFtZTo6cHVibGljTmFtZQorICAgICAgICByYXRoZXIgdGhhbiBQcm9wZXJ0
eU5hbWU6OnVpZC4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6
CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQpOgorICAg
ICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZSk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGljRnVuY3Rpb25HZXR0
ZXIpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGxiYWNrR2V0
dGVyKToKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy5tYWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
YnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzOgorICAgICAgICAoZXZlcnkpOgorICAgICAgICAq
IGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpC
dWlsdGluRXhlY3V0YWJsZXM6OkJ1aWx0aW5FeGVjdXRhYmxlcyk6CisgICAgICAgIChKU0M6OkJ1
aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ1
aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0
YWJsZXM6OmNyZWF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdX
YXRjaHBvaW50LmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAoSlND
OjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUp
OgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9y
KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToK
KyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpF
eGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OnRvU3RyaWN0bmVzcyk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjppc0J1aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChKU0M6OlVubGlua2Vk
Q29kZUJsb2NrOjppc0J1aWx0aW5GdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzQnVpbHRpbkZ1bmN0aW9u
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Om1ha2VGdW5jdGlvbik6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkNhbGxG
dW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpBcHBseUZ1
bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogY3JlYXRlX2hhc2hf
dGFibGU6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGdlbmVy
YXRlLWpzLWJ1aWx0aW5zOiBBZGRlZC4KKyAgICAgICAgKGdldENvcHlyaWdodCk6CisgICAgICAg
IChnZXRGdW5jdGlvbnMpOgorICAgICAgICAoZ2VuZXJhdGVDb2RlKToKKyAgICAgICAgKG1hbmds
ZU5hbWUpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKElkZW50aWZp
ZXIpOgorICAgICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAgICAgICAoU291cmNlQ29kZSk6Cisg
ICAgICAgIChVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChWTSk6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAqIGludGVycHJldGVy
L1Byb3RvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgICog
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAqIGpzYy5jcHA6CisgICAg
ICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAqIHBhcnNlci9BU1RCdWls
ZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKToK
KyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6TGV4
ZXIpOgorICAgICAgICAoSlNDOjppc1NhZmVJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4
ZXI8TENoYXI+OjpwYXJzZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpMZXhlcjxVQ2hhcj46
OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpsZXgpOgorICAgICAg
ICAqIHBhcnNlci9MZXhlci5oOgorICAgICAgICAoSlNDOjppc1NhZmVJZGVudGlmaWVyKToKKyAg
ICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIpOgorICAgICAgICAqIHBh
cnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpzZXRDbG9zZWRWYXJp
YWJsZXMpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpTY29wZU5v
ZGU6OmNhcHR1cmVkVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6U2NvcGVOb2RlOjpzZXRDbG9z
ZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQcm9ncmFtTm9kZTo6Y2xvc2VkVmFyaWFibGVz
KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OlBhcnNlcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUlubmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmRpZEZpbmlzaFBhcnNp
bmcpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cHJpbnRVbmV4cGVjdGVkVG9r
ZW5UZXh0KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
OjpnZXRVc2VkVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVz
Lmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlclRva2Vucy5oOgorICAgICAgICAqIHJ1bnRpbWUv
QXJnTGlzdC5jcHA6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvQXJndW1lbnRzLmg6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHNJdGVyYXRv
ckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0
RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Q29t
bW9uSWRlbnRpZmllcnMpOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Z2V0UHJp
dmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Z2V0UHVibGljTmFt
ZSk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQ
YXRoc0V4Y2VwdGlvbnMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5j
cHA6CisgICAgICAgIChKU0M6OmNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6
ZXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6ZXhlY3V0
YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1
bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6ZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9K
U0FjdGl2YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxl
R2V0KToKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dCk6CisgICAg
ICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyk6Cisg
ICAgICAgICogcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcDoKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlND
ZWxsSW5saW5lcy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAg
IChKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZSk6CisgICAgICAgIChKU0M6OkpTRnVu
Y3Rpb246OnNvdXJjZUNvZGUpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjppc0hvc3RPckJ1
aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzQnVpbHRpbkZ1bmN0
aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKToKKyAgICAgICAg
KEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVy
dHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmg6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
OjpyZXNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjpvYmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpzeW1ib2xUYWJsZUhhc1Byb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGVsZXRlKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5j
cHA6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAg
ICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90
KToKKyAgICAgICAgKEpTQzo6aW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKToKKyAgICAg
ICAgKEpTQzo6SlNWYWx1ZTo6dG9XVEZTdHJpbmdJbmxpbmUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNTeW1ib2xUYWJsZU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTU3ltYm9sVGFibGVPYmpl
Y3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgICAgIERvbid0IHJlcG9y
dCBwcml2YXRlIG5hbWVzLgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5o
OgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZUdldCk6CisgICAgICAgIChKU0M6OnN5bWJvbFRh
YmxlUHV0KToKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyk6Cisg
ICAgICAgICogcnVudGltZS9Mb29rdXAuY3BwOgorICAgICAgICAoSlNDOjpzZXRVcFN0YXRpY0Z1
bmN0aW9uU2xvdCk6CisgICAgICAgICogcnVudGltZS9Mb29rdXAuaDoKKyAgICAgICAgKEpTQzo6
SGFzaEVudHJ5OjpidWlsdGluR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpw
cm9wZXJ0eUdldHRlcik6CisgICAgICAgIChKU0M6Okhhc2hFbnRyeTo6cHJvcGVydHlQdXR0ZXIp
OgorICAgICAgICAoSlNDOjpIYXNoVGFibGU6OmVudHJ5KToKKyAgICAgICAgKEpTQzo6Z2V0U3Rh
dGljUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6Z2V0U3RhdGljVmFsdWVTbG90KToKKyAg
ICAgICAgKEpTQzo6cHV0RW50cnkpOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaDoK
KyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVn
RXhwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5jcHA6CisgICAgICAgICogcnVudGltZS9T
dHJ1Y3R1cmUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpW
TTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6Vk06OmJ1aWx0
aW5FeGVjdXRhYmxlcyk6CisKIDIwMTQtMDEtMzEgIEdhYm9yIFJhcGNzYW55aSAgPHJnYWJvckB3
ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCB0aGUgQVJNIFRodW1iMiBidWlsZCBhZnRlciBqc0NT
dGFjayBicmFuY2ggbWVyZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzYTNhMTczNTg5ZTJhZTMyMzk1ZWNlOTdj
MmU3N2UwMjk1YWI3OGY1Li5mOTBlZGEyYzI3YTRiMjFhYWIxNmE1NTBlZWE5YmU3NDI3MTg1MTU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8
b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVu
dCBKUyBidWlsdGlucyBpbiBKUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI3ODg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRpbmcgZm9yIHRoZSBuZXdseSByZXF1aXJlZCBoZWFkZXJzLgorCisg
ICAgICAgIFRlc3Q6IGpzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwKKworICAg
ICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg6IEFkZGVk
LgorICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5j
cHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwOgorCiAyMDE0LTAxLTMxICBIYW5zIE11bGxl
ciAgPGhtdWxsZXJAYWRvYmUuY29tPgogCiAgICAgICAgIFtDU1MgU2hhcGVzXSBJbWFnZSB2YWx1
ZWQgc2hhcGUgY2FuIGZhaWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggNWJlMDUzZjFlMDg2YjQzZTY4NmMzNjc0
ZGFlN2M1MTYwNWEyODZlNy4uMGVjZWQ1MWYzZTJkNWI2MjFkYWRmMDU3NDlmNWU3NDY2YTA2ZjUy
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0RnVuY3Rpb25zLmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8
UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZQogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKICAgICBSZWZQ
dHI8T3BhcXVlSlNTdHJpbmc+IHByb3BlcnR5TmFtZVJlZjsKICAgICAKLSAgICBpZiAoU3RyaW5n
SW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5n
SW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NS
ZWYganNDbGFzcyA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBq
c0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgLy8gb3B0aW9uYWwgb3B0aW1pemF0
aW9uIHRvIGJ5cGFzcyBnZXRQcm9wZXJ0eSBpbiBjYXNlcyB3aGVuIHdlIG9ubHkgbmVlZCB0byBr
bm93IGlmIHRoZSBwcm9wZXJ0eSBleGlzdHMKICAgICAgICAgICAgIGlmIChKU09iamVjdEhhc1By
b3BlcnR5Q2FsbGJhY2sgaGFzUHJvcGVydHkgPSBqc0NsYXNzLT5oYXNQcm9wZXJ0eSkgewpAQCAt
MjI4LDcgKzIyOCw3IEBAIHZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiAgICAgUmVmUHRyPE9wYXF1
ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgSlNWYWx1ZVJlZiB2YWx1ZVJlZiA9IHRv
UmVmKGV4ZWMsIHZhbHVlKTsKICAgICAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3Bl
cnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3Bl
cnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IHRoaXNP
YmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFz
cykgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBzZXRQcm9w
ZXJ0eSA9IGpzQ2xhc3MtPnNldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9w
ZXJ0eU5hbWVSZWYpCkBAIC0zNDMsNyArMzQzLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBh
cmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm8K
ICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CiAgICAgUmVmUHRy
PE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0cmluZ0lt
cGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0lt
cGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVm
IGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganND
bGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdERlbGV0ZVByb3Bl
cnR5Q2FsbGJhY2sgZGVsZXRlUHJvcGVydHkgPSBqc0NsYXNzLT5kZWxldGVQcm9wZXJ0eSkgewog
ICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lUmVmKQpAQCAtNTY0LDcgKzU2NCw3IEBA
IEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZShFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiB7CiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRv
UmVmKHRoaXMpOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1l
LnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1l
LnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gY2xhc3NSZWYoKTsg
anNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgICAgICBp
ZiAoT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXMgPSBqc0NsYXNz
LT5zdGF0aWNWYWx1ZXMoZXhlYykpIHsKICAgICAgICAgICAgICAgICBpZiAoU3RhdGljVmFsdWVF
bnRyeSogZW50cnkgPSBzdGF0aWNWYWx1ZXMtPmdldChuYW1lKSkgewpAQCAtNjAwLDcgKzYwMCw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGljRnVuY3Rp
b25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFCiAgICAgaWYgKFBhcmVudDo6Z2V0T3duUHJvcGVy
dHlTbG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdDIpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QyLmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSkpOwog
Ci0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7
CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAg
ICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqLT5jbGFzc1JlZigpOyBqc0NsYXNz
OyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChPcGFx
dWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGUqIHN0YXRpY0Z1bmN0aW9ucyA9IGpzQ2xhc3Mt
PnN0YXRpY0Z1bmN0aW9ucyhleGVjKSkgewogICAgICAgICAgICAgICAgIGlmIChTdGF0aWNGdW5j
dGlvbkVudHJ5KiBlbnRyeSA9IHN0YXRpY0Z1bmN0aW9ucy0+Z2V0KG5hbWUpKSB7CkBAIC02MjYs
NyArNjI2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjYWxs
YmFja0dldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWQKICAgICBKU09iamVjdFJlZiB0aGlz
UmVmID0gdG9SZWYodGhpc09iaik7CiAgICAgUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0
eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUu
cHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUu
dWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqLT5jbGFz
c1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAg
ICAgICAgIGlmIChKU09iamVjdEdldFByb3BlcnR5Q2FsbGJhY2sgZ2V0UHJvcGVydHkgPSBqc0Ns
YXNzLT5nZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lUmVm
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDI3YmM0YzE3ZjNkZmVlYjYx
ZDI1MjMyM2ZkODc4YzQ0NzgwZjc0YzUuLmI0M2UwNWM4MmJiOThkNThlZmJiOGM1OGFiOWE4M2Yx
YTc2NTE3NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUsNiArNSw3
IEBAIHNldChKYXZhU2NyaXB0Q29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7SkFWQVND
UklQVENPUkVfRElSfS9Gb3J3YXJkaW5nSGVhZGVycyIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L2Fzc2VtYmxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2JpbmRpbmdzIgorICAg
ICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMiCiAgICAgIiR7SkFWQVNDUklQVENPUkVf
RElSfS9ieXRlY29kZSIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J5dGVjb21waWxlciIK
ICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2RmZyIKQEAgLTUyLDYgKzUzLDggQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9TY3JpcHRPYmplY3QuY3BwCiAgICAg
YmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCiAKKyAgICBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJs
ZXMuY3BwCisKICAgICBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcAogICAgIGJ5
dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2su
Y3BwCkBAIC03MDcsNyArNzEwLDcgQEAgc2V0KEhBU0hfTFVUX0dFTkVSQVRPUiAke0NNQUtFX0NV
UlJFTlRfU09VUkNFX0RJUn0vY3JlYXRlX2hhc2hfdGFibGUpCiBtYWNybyhHRU5FUkFURV9IQVNI
X0xVVCBfaW5wdXQgX291dHB1dCkKICAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgICAgIE9V
VFBVVCAke19vdXRwdXR9Ci0gICAgICAgIERFUEVORFMgJHtIQVNIX0xVVF9HRU5FUkFUT1J9ICR7
X2lucHV0fQorICAgICAgICBERVBFTkRTICR7SEFTSF9MVVRfR0VORVJBVE9SfSAke19pbnB1dH0g
JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zCiAgICAgICAg
IENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7SEFTSF9MVVRfR0VORVJBVE9SfSAke19pbnB1
dH0gLWkgPiAke19vdXRwdXR9CiAgICAgICAgIFZFUkJBVElNKQogICAgIGxpc3QoQVBQRU5EIEph
dmFTY3JpcHRDb3JlX0hFQURFUlMgJHtfb3V0cHV0fSkKQEAgLTczNiw2ICs3MzksNyBAQCBzZXQo
SmF2YVNjcmlwdENvcmVfRk9SV0FSRElOR19IRUFERVJTX0RJUkVDVE9SSUVTCiAgICAgeWFycgog
CiAgICAgY29sbGVjdG9yL2hhbmRsZXMKKyAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBU
Q09SRV9ESVJ9CiApCiAKIHNldChKYXZhU2NyaXB0Q29yZV9GT1JXQVJESU5HX0hFQURFUlNfRklM
RVMKQEAgLTc2Myw4ICs3NjcsMTEgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0ZPUldBUkRJTkdfSEVB
REVSU19GSUxFUwogICAgIGFzc2VtYmxlci9MaW5rQnVmZmVyLmgKICAgICBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXIuaAogICAgIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAorICAg
IGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAogICAgIGppdC9HUFJJbmZvLmgKICAg
ICBydW50aW1lL1ZNLmgKKworICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vSlNDQnVpbHRpbnMuaAogKQogCiAKQEAgLTgxNSwxNiArODIyLDI3IEBAIGFkZF9jdXN0b21f
Y29tbWFuZCgKICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENv
cmVfSU5TUEVDVE9SX1NDUklQVFNfRElSfS9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5ICR7REVS
SVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlMuanNvbiAtLW91dHB1
dF9oX2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIgLS1vdXRwdXRf
Y3BwX2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIgLS1vdXRwdXRf
anNfZGlyICIke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9IiAtLW91dHB1dF90
eXBlIEphdmFTY3JpcHQgLS13cml0ZV9hbHdheXMgJiYgbWtkaXIgLXAgJHtERVJJVkVEX1NPVVJD
RVNfSkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IgJiYgY3AgJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oICR7REVS
SVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNGcm9udGVuZERpc3Bh
dGNoZXJzLmggJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JK
U1R5cGVCdWlsZGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5z
cGVjdG9yCiAgICAgVkVSQkFUSU0pCiAKKyMgSlNDQnVpbHRpbnMKK2ZpbGUoR0xPQiBKU0NCdWls
dGluc19qc19maWxlcyAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2J1aWx0aW5zLyouanMi
KQorYWRkX2N1c3RvbV9jb21tYW5kKAorICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFT
Q1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuY3BwICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAorICAgTUFJTl9ERVBFTkRFTkNZICR7Q01BS0VfQ1VS
UkVOVF9TT1VSQ0VfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucworICAgREVQRU5EUyAke0pTQ0J1
aWx0aW5zX2pzX2ZpbGVzfQorICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtF
X0NVUlJFTlRfU09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMgJHtKU0NCdWlsdGluc19q
c19maWxlc30gJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlu
cy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuY3Bw
CisgICBWRVJCQVRJTSkKKwogbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAg
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5k
RGlzcGF0Y2hlcnMuY3BwCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElS
fS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuY3BwCiAgICAgJHtERVJJVkVEX1NPVVJD
RVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAKKyAgICAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcAogKQog
CiBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTCiAgICAgJHtERVJJVkVEX1NPVVJD
RVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oCiAg
ICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0Zyb250
ZW5kRGlzcGF0Y2hlcnMuaAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaAorICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFT
Q1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAogKQogCiBhZGRfY3VzdG9tX2NvbW1hbmQoCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDExNTZlOTdmZDg4
NjI1NTdjOWNmOGQzYjY4YmY0ZDAzYzNlOGJhOGYuLmE4M2JkY2FkNTFiMDY2ODg2NjdhNmI3MzIw
NTdlNGNkYzg5NjBhOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCkBAIC0yOCw4ICsyOCw5IEBAIFZQQVRIID0gXAogICAgICQoSmF2YVNjcmlwdENvcmUpIFwK
ICAgICAkKEphdmFTY3JpcHRDb3JlKS9wYXJzZXIgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL3J1
bnRpbWUgXAotICAgICQoSmF2YVNjcmlwdENvcmUpL2ludGVycHJldGVyIFwKLSAgICAkKEphdmFT
Y3JpcHRDb3JlKS9qaXQgXAorCSQoSmF2YVNjcmlwdENvcmUpL2ludGVycHJldGVyIFwKKwkkKEph
dmFTY3JpcHRDb3JlKS9qaXQgXAorCSQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zIFwKICMKIAog
LlBIT05ZIDogYWxsCkBAIC01Nyw4ICs1OCwxOCBAQCBhbGwgOiBcCiAgICAgUmVnRXhwT2JqZWN0
Lmx1dC5oIFwKICAgICBTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgdWRpczg2X2l0YWIu
aCBcCisgICAgSlNDQnVpbHRpbnMgXAogIwogCisjIGJ1aWx0aW4gZnVuY3Rpb25zCisuUEhPTlk6
IEpTQ0J1aWx0aW5zCisKK0pTQ0J1aWx0aW5zOiAkKEphdmFTY3JpcHRDb3JlKS9nZW5lcmF0ZS1q
cy1idWlsdGlucyBKU0NCdWlsdGlucy5oIEpTQ0J1aWx0aW5zLmNwcAorSlNDQnVpbHRpbnMuaDog
JChKYXZhU2NyaXB0Q29yZSkvZ2VuZXJhdGUtanMtYnVpbHRpbnMgJChKYXZhU2NyaXB0Q29yZSkv
YnVpbHRpbnMvKi5qcworCXB5dGhvbiAkXiAkQAorCQkJCQkJCQkJCQkJCQkJCQkJCQkgCitKU0NC
dWlsdGlucy5jcHA6IEpTQ0J1aWx0aW5zLmgKKwogIyBsb29rdXAgdGFibGVzIGZvciBjbGFzc2Vz
CiAKICUubHV0Lmg6IGNyZWF0ZV9oYXNoX3RhYmxlICUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05V
bWFrZWZpbGUuYW0KaW5kZXggZmU1NDQ4ZGRjMWJjZmFhNGM3MjlhMWNjMDBkZWE2MjQzMTkzOTBh
Mi4uNTU2OWY1MDI4ZDhjM2NkZDVhMDRkYzkzNjZhODRiMDRlZWM0ODE1MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtNTEsNiArNTEsNyBAQCBqYXZhc2NyaXB0Y29yZV9j
cHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MgXAorCS1JJChz
cmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucyBcCiAJLUkkKHNyY2RpcikvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIgXApAQCAtMTEwLDEyICsxMTEsMTYgQEAgRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvTExJbnREZXNpcmVkT2Zmc2V0cy5oOiAkKGphdmFzY3JpcHRjb3JlX3NvdXJjZXMp
ICQKIAkkKEFNX1ZfR0VOKSQoUlVCWSkgJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIgJChzcmNkaXIpL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSAkQAogCSQoQU1fVl9h
dCl0b3VjaCAkQAogCi0kKFByb2dyYW1zX0xMSW50T2Zmc2V0c0V4dHJhY3Rvcl9PQkpFQ1RTKTog
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnREZXNpcmVkT2Zmc2V0cy5oCiskKFBy
b2dyYW1zX0xMSW50T2Zmc2V0c0V4dHJhY3Rvcl9PQkpFQ1RTKTogRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvTExJbnREZXNpcmVkT2Zmc2V0cy5oIAogCiBEZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9MTEludEFzc2VtYmx5Lmg6IFByb2dyYW1zL0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ciQoRVhFRVhUKQogCSQoQU1fVl9HRU4pJChSVUJZKSAkKHNyY2RpcikvU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vYXNtLnJiICQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gUHJvZ3JhbXMvTExJbnRPZmZzZXRzRXh0cmFj
dG9yJChFWEVFWFQpICRACiAJJChBTV9WX2F0KXRvdWNoICRACiAKK0Rlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmg6IERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3Jl
L0pTQ0J1aWx0aW5zLmNwcAorRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNDQnVpbHRp
bnMuY3BwOiAkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0
aW5zICQoamF2YXNjcmlwdGNvcmVfYnVpbHRpbnNfanNfbm9zb3VyY2VzKQorCSQoQU1fVl9HRU4p
JChQWVRIT04pICReICRACisKICQobGliamF2YXNjcmlwdGNvcmVndGtfQFdFQktJVEdUS19BUElf
TUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfT0JKRUNUUyk6
IERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50QXNzZW1ibHkuaAogCiBqc2M6ICQo
amF2YXNjcmlwdGNvcmVfYnVpbHRfbm9zb3VyY2VzKSBQcm9ncmFtcy9qc2MkKEVYRUVYVCkKQEAg
LTIxNiw2ICsyMjEsNyBAQCBFWFRSQV9ESVNUICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
S2V5d29yZExvb2t1cEdlbmVyYXRvci5weSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9LZXl3b3Jkcy50YWJsZSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL1RIQU5LUyBcCisJJChq
YXZhc2NyaXB0Y29yZV9idWlsdGluc19qc19ub3NvdXJjZXMpIFwKIAkkKGxsaW50X25vc291cmNl
cykgXAogCSQob2ZmbGluZWFzbV9ub3NvdXJjZXMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggY2RiNTQyNmIwNmI1MmE5ODI1NmVlOTA1OGJiYThmMTFl
ZWE2OWVlMC4uOThmYWFhN2QxNzVhYTYxZjIwODk2Y2VlYjEzODYzZTI3YjI2NmNlOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTIwLDYgKzIwLDggQEAg
amF2YXNjcmlwdGNvcmVfYnVpbHRfbm9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9FcnJvclByb3RvdHlwZS5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvSlNEYXRhVmlld1Byb3RvdHlwZS5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3QubHV0LmggXAorCURlcml2ZWRTb3VyY2VzL0phdmFT
Y3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvSlNDQnVpbHRpbnMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNPTk9i
amVjdC5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNQcm9taXNlQ29u
c3RydWN0b3IubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTUHJvbWlz
ZVByb3RvdHlwZS5sdXQuaCBcCkBAIC0zNSw2ICszNyw5IEBAIGphdmFzY3JpcHRjb3JlX2J1aWx0
X25vc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnREZXNp
cmVkT2Zmc2V0cy5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9MTEludEFzc2Vt
Ymx5LmgKIAoramF2YXNjcmlwdGNvcmVfYnVpbHRpbnNfanNfbm9zb3VyY2VzICs9IFwKKwlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzCisKIGphdmFzY3Jp
cHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJh
Y2tGdW5jdGlvbi5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhc3QuaCBcCkBA
IC0xMDIsNiArMTA3LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAgICAgU291cmNl
L0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5oIFwKICAgICBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwIFwKICAgICBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuaCBcCisgICAgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAgXAorICAgIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcCBcCkBAIC0xMjQxLDcgKzEy
NDgsOSBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuY3BwIFwKIAlEZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuaCBc
CiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMu
Y3BwIFwKLQlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JKU1R5cGVCdWls
ZGVycy5oCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNUeXBlQnVp
bGRlcnMuaCBcCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNDQnVpbHRpbnMuY3Bw
IFwKKwlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5oCiAKIGxsaW50
X25vc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc20gXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oK
aW5kZXggNWVkZWZkYmU4NTVmOTZhNjI2OGQ4NTczYmVjMWQwYzNkODU4YWE1Yy4uYTEyZGIxODM0
ODZkZmJiY2E4M2YzYTc4ZTljZjk4NjMxYjI2NTNkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qCkBAIC0zMDksNiArMzA5LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRPYmplY3QuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0VmFsdWUuY3BwIiAvPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cYnVpbHRpbnNcQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlQcm9maWxlLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEJ5dGVjb2RlQmFzaWNC
bG9jay5jcHAiIC8+CkBAIC03MjEsNiArNzIyLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
SW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5j
cHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
SlNDQnVpbHRpbnMuY3BwIiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3Jt
QXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xBcnJheUNvbnN0cnVj
dG9yLmx1dC5oIiAvPgpAQCAtNzUwLDYgKzc1Miw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcUmVnRXhwT2JqZWN0Lmx1dC5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFJlZ0V4cFByb3RvdHlw
ZS5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NCdWlsdGlucy5oIiAvPgogICA8L0l0ZW1Hcm91
cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxBUElDYWxs
YmFja0Z1bmN0aW9uLmgiIC8+CkBAIC03OTgsNiArODAxLDcgQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdEZ1bmN0aW9uQ2FsbC5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0T2JqZWN0LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRWYWx1ZS5oIiAvPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cYnVpbHRpbnNcQnVpbHRpbkV4ZWN1dGFibGVzLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheVByb2ZpbGUuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEJ5VmFsSW5mby5oIiAvPgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDg3ZTEy
YTQ3MTU4YmI2MjI0ZDQ5ZmQ2MjI5NzhjNGE5YzQ0MzVhNjUuLjg2OWMxZjU4OWJjYjY4NmViOWNm
MjBjMDk2YmUxYjgzYTU1MWUyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycworKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTcsNiArNyw5IEBACiAgICAgPEZpbHRlciBJbmNsdWRl
PSJiaW5kaW5ncyI+CiAgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MGJhY2UxMjMtNDU4Mi1lZWJj
LTkzMTQtNzgxOWIzNzZjMTk4fTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8L0ZpbHRlcj4KKyAg
ICA8RmlsdGVyIEluY2x1ZGU9ImJ1aWx0aW5zIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnsz
YjlkNzJhNS0xMzViLTQzYjMtYTUyNC1jNmQyYjlkMjlkMzV9PC9VbmlxdWVJZGVudGlmaWVyPgor
ICAgIDwvRmlsdGVyPgogICAgIDxGaWx0ZXIgSW5jbHVkZT0iYnl0ZWNvZGUiPgogICAgICAgPFVu
aXF1ZUlkZW50aWZpZXI+ezc2NjA4OGEwLTEyMTYtNDg1NC1hYTQzLTU2MGM1ZTI4MzY2OH08L1Vu
aXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CkBAIC0xMDgsNiArMTExLDkgQEAKICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxNYWNyb0Fzc2VtYmxlci5jcHAiPgogICAg
ICAgPEZpbHRlcj5hc3NlbWJsZXI8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAiPgorICAg
ICAgPEZpbHRlcj5idWlsdGluczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAiPgog
ICAgICAgPEZpbHRlcj5ieXRlY29kZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMTMy
OSw2ICsxMzM1LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xJbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAiPgogICAgICAgPEZpbHRlcj5EZXJp
dmVkIFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NCdWlsdGlucy5jcHAiPgorICAgICAg
PEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgPC9J
dGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElc
QVBJQ2FsbGJhY2tGdW5jdGlvbi5oIj4KQEAgLTE0NTQsNiArMTQ2Myw5IEBACiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcWDg2QXNzZW1ibGVyLmgiPgogICAgICAgPEZpbHRl
cj5hc3NlbWJsZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxlcy5oIj4KKyAgICAgIDxGaWx0ZXI+
YnVpbHRpbnM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCI+CiAgICAgICA8RmlsdGVy
PmJ5dGVjb2RlPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0yNTUwLDYgKzI1NjIsOSBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEFycmF5
UHJvdG90eXBlLmx1dC5oIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuaCI+CisgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNl
czwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxWTS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJ
bmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmVDb21tb24ucHJvcHMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZUNvbW1vbi5wcm9wcwppbmRl
eCAzNjIyZmZjNTc3YzQzZGRmNzBkYTUxZmY2OGFkNjQ2ZjYzMDRlNTY3Li5jNTg4ODcwYzJmZDEz
ZDYwNzZkMzhmNTJjYTYyMjVkYjI4NzJjNzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZUNvbW1vbi5wcm9wcwor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZUNvbW1vbi5wcm9wcwpAQCAtNSw3ICs1LDcgQEAKICAgPFByb3BlcnR5R3JvdXAgLz4K
ICAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXDsuLlx0b29sc1w7Li5ccnVudGltZVw7Li5cbGxpbnRc
Oy4uXGppdFw7Li5cZGlzYXNzZW1ibGVyXDsuLlxoZWFwXDsuLlxkZWJ1Z2dlclw7Li5cYXNzZW1i
bGVyXDsuLlxwcm9maWxlclw7Li5ceWFyclw7Li5caW50ZXJwcmV0ZXJcOy4uXGJ5dGVjb2RlXDsu
LlxkZmdcOy4uXGJ5dGVjb21waWxlclw7Li5ccGFyc2VyXDsuLlxBUElcOy4uXGZ0bFw7Li5cYmlu
ZGluZ3NcOy4uXGluc3BlY3Rvclw7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZv
cm1BcmNoaXRlY3R1cmUpXEphdmFTY3JpcHRDb3JlXERlcml2ZWRTb3VyY2VzXDskKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcaW5jbHVkZVw7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVc
SmF2YVNjcmlwdENvcmVcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVc
OyQoV2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZTskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGVc
cHJpdmF0ZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cOy4u
XHRvb2xzXDsuLlxydW50aW1lXDsuLlxsbGludFw7Li5caml0XDsuLlxkaXNhc3NlbWJsZXJcOy4u
XGhlYXBcOy4uXGRlYnVnZ2VyXDsuLlxhc3NlbWJsZXJcOy4uXHByb2ZpbGVyXDsuLlx5YXJyXDsu
LlxpbnRlcnByZXRlclw7Li5cYnl0ZWNvZGVcOy4uXGJ1aWx0aW5zXDsuLlxkZmdcOy4uXGJ5dGVj
b21waWxlclw7Li5ccGFyc2VyXDsuLlxBUElcOy4uXGZ0bFw7Li5cYmluZGluZ3NcOy4uXGluc3Bl
Y3Rvclw7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XEphdmFTY3JpcHRDb3JlXERlcml2ZWRTb3VyY2VzXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
aW5jbHVkZVw7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmVc
OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcOyQoV2ViS2l0X0xpYnJh
cmllcylcaW5jbHVkZTskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGVccHJpdmF0ZTslKEFkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgog
ICAgICAgPEZvcmNlZEluY2x1ZGVGaWxlcz5JQ1VWZXJzaW9uLmg7JShGb3JjZWRJbmNsdWRlRmls
ZXMpPC9Gb3JjZWRJbmNsdWRlRmlsZXM+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPExpbms+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9j
b3B5LWZpbGVzLmNtZCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL2NvcHktZmlsZXMuY21kCmluZGV4IDk0MzM0M2E1NjhlM2UyOTk4MTZiZjY2ZjJlZGI1MjQz
NThmYzU0ZTguLmUwYzFmMjk2NjE5NmJkYTMwMDM1OTVjNWRmMDNlZWUwOGEwZGE3OGYgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL2NvcHkt
ZmlsZXMuY21kCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL2NvcHktZmlsZXMuY21kCkBAIC00Miw2ICs0Miw3IEBAIGZvciAlJWQgaW4gKAogICAgIGFz
c2VtYmxlcg0KICAgICBiaW5kaW5ncw0KICAgICBieXRlY29kZQ0KKyAgICBidWlsdGlucw0KICAg
ICBkZmcNCiAgICAgZGlzYXNzZW1ibGVyDQogICAgIGhlYXANCkBAIC03Miw2ICs3Myw5IEBAIHhj
b3B5IC95ICIlRGVyaXZlZFNvdXJjZXNEaXJlY3RvcnklXEluc3BlY3RvckpTVHlwZUJ1aWxkZXJz
LmgiICIlUHJpdmF0ZUhlYWRlcnNECiB4Y29weSAveSAiJURlcml2ZWRTb3VyY2VzRGlyZWN0b3J5
JVxJbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oIiAiJVByaXZhdGVIZWFkZXJzRGlyZWN0
b3J5JSIgPk5VTA0KIHhjb3B5IC95ICIlRGVyaXZlZFNvdXJjZXNEaXJlY3RvcnklXEluc3BlY3Rv
ckpTRnJvbnRlbmREaXNwYXRjaGVycy5oIiAiJVByaXZhdGVIZWFkZXJzRGlyZWN0b3J5JSIgPk5V
TA0KIA0KK2VjaG8gQ29weWluZyBidWlsdGlucyBoZWFkZXIgYXMgaWYgaXQgd2VyZSBhIHByaXZh
dGUgaGVhZGVyLi4uDQoreGNvcHkgL3kgIiVEZXJpdmVkU291cmNlc0RpcmVjdG9yeSVcSlNDQnVp
bHRpbnMuaCIgIiVQcml2YXRlSGVhZGVyc0RpcmVjdG9yeSUiID5OVUwNCisNCiBlY2hvIENvcHlp
bmcgcmVzb3VyY2VzLi4uDQogbWtkaXIgIiVSZXNvdXJjZXNEaXJlY3RvcnklIiAyPk5VTA0KIHhj
b3B5IC95IC9kIEphdmFTY3JpcHRDb3JlLnJlc291cmNlc1wqICIlUmVzb3VyY2VzRGlyZWN0b3J5
JSIgPk5VTA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjdlODc2NzQwYTk2NGIw
Mjg5ODRlZDY3ODE2MTgyMGE1ZGNmNzdjNC4uOTExNTczYWIxN2QzMzk3NGFhN2M5YTAxMWRiMjAw
YjA5YWY3OGJmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkyMiw3ICs5MjIs
NiBAQAogCQlBNTAzRkExOTE4OEUwRkIwMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkEx
MzE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi87IH07CiAJCUE1
MDNGQTFBMTg4RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNDE4OEUwRkFGMDAx
MTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQlBNTAzRkExQjE4OEUwRkIw
MDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE1MTg4RTBGQjAwMDExMEYxNCAvKiBK
U0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwICovOyB9OwotCQlBNTAzRkExQzE4OEUwRkIwMDAxMTBG
MTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNjE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lLmggKi87IH07CiAJCUE1MDNGQTFEMTg4RTBGQjAwMDExMEYxNCAvKiBKU0ph
dmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTcxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNj
cmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAgKi87IH07CiAJCUE1MDNGQTFFMTg4RTBGQjAwMDEx
MEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE4MTg4RTBGQjAwMDExMEYxNCAv
KiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaCAqLzsgfTsKIAkJQTUwM0ZBMjExODhF
RkY2ODAwMTEwRjE0IC8qIFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTFGMTg4RUZGNjgwMDExMEYxNCAvKiBTY3Jp
cHRCcmVha3BvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTEwMjQsNiArMTAyMyw3IEBACiAJCUE3MEIwODMyMTdBMEI3OUIwMERBRjE0QiAv
KiBERkdCaW5hcnlTd2l0Y2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTcwQjA4MzAxN0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5j
cHAgKi87IH07CiAJCUE3MEIwODMzMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2gu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MEIwODMx
MTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guaCAqLzsgfTsKIAkJQTcxMjM2RTUx
MTk1RjMzQzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzEyMzZFNDExOTVGMzNDMDBCRDIxNzQgLyog
SklUT3Bjb2RlczMyXzY0LmNwcCAqLzsgfTsKKwkJQTcxREE4MEYxODgwREJBQjAwRDFGMjk5IC8q
IEpTU3RyaW5nSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTcxREE4MEUxODgwREJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3MjAyOEI2
MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyMDI4QjQxNzk3NjAxRTAwOTgwMjhD
IC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAgKi87IH07CiAJCUE3MjAyOEI4MTc5NzYwMUUwMDk4
MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjAyOEI1MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVu
bmVyVXRpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlBNzIwMjhCQTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklubGluZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjAyOEI5MTc5NzYw
M0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTUwLDYgKzExNTAsMTAgQEAKIAkJQTdDQTNB
RTgxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDQTNBRTIxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vh
a01hcC5oICovOyB9OwogCQlBN0NBM0FFQjE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDQTNB
RTkxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCAqLzsgfTsKIAkJQTdDQTNBRUMx
N0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0NBM0FFQTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01h
cERhdGEuaCAqLzsgfTsKKwkJQTdEODAxQTQxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVj
dXRhYmxlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBN0Q4MDFBMTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCAqLzsg
fTsKKwkJQTdEODAxQTUxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTIxODgw
RDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3RDgwMUE4MTg4MEQ2QTgwMDI2QzM5QiAv
KiBKU0NCdWlsdGlucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBN0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwICovOyB9
OworCQlBN0Q4MDFBOTE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDgwMUE3MTg4MEQ2QTgwMDI2
QzM5QiAvKiBKU0NCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUE3RDg5Q0YyMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2Nr
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDg5
Q0UzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNwcCAqLzsgfTsKIAkJQTdEODlD
RjMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDg5Q0U0MTdBMEI4Q0MwMDc3
M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5jcHAgKi87IH07CiAJCUE3RDg5Q0Y0MTdBMEI4
Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODlDRTUxN0EwQjhDQzAwNzczQUQ4IC8qIERG
R0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTI0NjIsNiArMjQ2Niw4IEBACiAJCUE3MTIzNkU0MTE5NUYzM0MwMEJE
MjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSklUT3Bjb2RlczMyXzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTcxOEY2MUExMTc1NEEyMTAwMjQ2NUE3IC8qIFJlZ0V4cEppdFRhYmxlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBKaXRUYWJsZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTcxOEY4MjExMTc4RUI0QjAwMjQ2NUE3IC8qIGNyZWF0ZV9yZWdl
eF90YWJsZXMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9
IHRleHQuc2NyaXB0LnB5dGhvbjsgZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IGNyZWF0ZV9yZWdl
eF90YWJsZXM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MURBODBEMTg4MEQ3MUYw
MEQxRjI5OSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5
dGhvbjsgcGF0aCA9ICJnZW5lcmF0ZS1qcy1idWlsdGlucyI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE3MURBODBFMTg4MERCQUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdJbmxpbmVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI0MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NU
ZXN0UnVubmVyVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNDVGVzdFJ1bm5lclV0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcy
MDI4QjUxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NUZXN0UnVubmVyVXRpbHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTcyMDI4QjkxNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25J
bmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRnVuY3Rpb25Jbmxp
bmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTkwLDYgKzI1OTYsMTEgQEAK
IAkJQTdDQTNBRTIxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYWtNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTdDQTNBRTkxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYWtNYXBEYXRhLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdDQTNBRUExN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBE
YXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtNYXBEYXRhLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUEwMTg4MEQ2NkUwMDI2QzM5QiAvKiBB
cnJheS5wcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGgg
PSBBcnJheS5wcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgw
MUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTIxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0
aW5FeGVjdXRhYmxlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdWlsdGlu
RXhlY3V0YWJsZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTYxODgw
RDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTQ0J1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTdEODAxQTcxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ0J1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE3RDg5Q0UzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Jhc2ljQmxvY2suY3BwOyBw
YXRoID0gZGZnL0RGR0Jhc2ljQmxvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBN0Q4OUNFNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQmxvY2tJbnNlcnRpb25TZXQu
Y3BwOyBwYXRoID0gZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTdEODlDRTUxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0
aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Jsb2NrSW5zZXJ0
aW9uU2V0Lmg7IHBhdGggPSBkZmcvREZHQmxvY2tJbnNlcnRpb25TZXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTI5MjYsNiArMjkzNyw3IEBACiAJCQkJODYwNEY0RjIxNDNBNkM0
NDAwQjI5NUY1IC8qIENoYW5nZUxvZyAqLywKIAkJCQlGNjkyQTg1NDAyNTU1OTdEMDFGRjYwRjcg
LyogY3JlYXRlX2hhc2hfdGFibGUgKi8sCiAJCQkJQTcxOEY4MjExMTc4RUI0QjAwMjQ2NUE3IC8q
IGNyZWF0ZV9yZWdleF90YWJsZXMgKi8sCisJCQkJQTcxREE4MEQxODgwRDcxRjAwRDFGMjk5IC8q
IGdlbmVyYXRlLWpzLWJ1aWx0aW5zICovLAogCQkJCTQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4NCAv
KiBqc2MuY3BwICovLAogCQkJCUY2OEVCQjhDMDI1NUQ0QzYwMUZGNjBGNyAvKiBjb25maWcuaCAq
LywKIAkJCQlGNUMyOTBFNjAyODRGOThFMDE4NjM1Q0EgLyogSmF2YVNjcmlwdENvcmVQcmVmaXgu
aCAqLywKQEAgLTI5MzQsNiArMjk0Niw3IEBACiAJCQkJMTQzMkVCRDcwQTM0Q0FENDAwNzE3QjlG
IC8qIEFQSSAqLywKIAkJCQk5Njg4Q0IxMjBFRDEyQjRFMDAxRDY0OUYgLyogYXNzZW1ibGVyICov
LAogCQkJCUE1NENGMkVBMTg0RUE3MzkwMDIzN0YxOSAvKiBiaW5kaW5ncyAqLywKKwkJCQlBN0Q4
MDE5RjE4ODBENjZFMDAyNkMzOUIgLyogYnVpbHRpbnMgKi8sCiAJCQkJOTY5QTA3OEYwRUQxRDNB
RTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovLAogCQkJCTdFMzlEODFEMEVDMzhFRkEwMDNBRjExQSAv
KiBieXRlY29tcGlsZXIgKi8sCiAJCQkJMUM5MDUxM0UwQkE5RTg4MzAwODFFOUQwIC8qIENvbmZp
Z3VyYXRpb25zICovLApAQCAtMzUwOSw2ICszNTIyLDggQEAKIAkJNjUwRkRGOEQwOUQwRkNBNzAw
NzY5RTU0IC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJQTdEODAxQTYxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5z
LmNwcCAqLywKKwkJCQlBN0Q4MDFBNzE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCAq
LywKIAkJCQlCQzE4QzUyMzBFMTZGQzhBMDBCMzQ0NjAgLyogQXJyYXlQcm90b3R5cGUubHV0Lmgg
Ki8sCiAJCQkJQkNEMjAzRTcwRTE3MThGNDAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUubHV0Lmgg
Ki8sCiAJCQkJQTUxM0U1QzYxODVGOTQzNjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNl
LmggKi8sCkBAIC0zODExLDYgKzM4MjYsNyBAQAogCQkJCUE3OTBERDZBMTgyRjQ5OTcwMDU4ODgw
NyAvKiBKU1NldEl0ZXJhdG9yLmggKi8sCiAJCQkJQkMwMkU5QjYwRTE4NDJGQTAwMEY5Mjk3IC8q
IEpTU3RyaW5nLmNwcCAqLywKIAkJCQlGNjkyQTg2MjAyNTU1OTdEMDFGRjYwRjcgLyogSlNTdHJp
bmcuaCAqLywKKwkJCQlBNzFEQTgwRTE4ODBEQkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxpbmVz
LmggKi8sCiAJCQkJODZFODU1MzgxMTFCOTk2ODAwMUFGNTFFIC8qIEpTU3RyaW5nQnVpbGRlci5o
ICovLAogCQkJCTI2MDBCNUE0MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5jcHAg
Ki8sCiAJCQkJMjYwMEI1QTUxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVyLmggKi8s
CkBAIC00NTYxLDYgKzQ1NzcsMTYgQEAKIAkJCXBhdGggPSByZW1vdGU7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwogCQl9OworCQlBN0Q4MDE5RjE4ODBENjZFMDAyNkMzOUIgLyogYnVpbHRp
bnMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUE3RDgw
MUEwMTg4MEQ2NkUwMDI2QzM5QiAvKiBBcnJheS5wcm90b3R5cGUuanMgKi8sCisJCQkJQTdEODAx
QTExODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi8sCisJCQkJQTdE
ODAxQTIxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oICovLAorCQkJKTsK
KwkJCXBhdGggPSBidWlsdGluczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAv
KiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhIZWFkZXJzQnVpbGRQaGFz
ZSBzZWN0aW9uICovCkBAIC00NjA2LDExICs0NjMyLDExIEBACiAJCQkJODZBREQxNDUwRkRERUE5
ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUNFRUUx
NTE4N0YzQkFEMDBFNTVDOTkgLyogSW5zcGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTY1QzAyODVEMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuaCBpbiBIZWFkZXJzICov
LAotIAkJCQkyQTY4Mjk1QjE4NzVGODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5oIGlu
IEhlYWRlcnMgKi8sCi0gICAgICAgICAgICAgICAgMkE0RUM5MEMxODYwRDZDMjAwOTRGNzgyIC8q
IFdyaXRlQmFycmllckJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkE2ODI5NUIxODc1Rjgw
NTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTJBNEVD
OTBDMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUZFNTkzMkE4MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1MzI0MzkzMTg1Njk3MDkwMDJFRDY5MiAvKiBDb2RlR2VuZXJhdG9ySW5z
cGVjdG9yU3RyaW5ncy5weSBpbiBIZWFkZXJzICovLAotIAkJCQlBNTMyNDM5MjE4NTY5NzA5MDAy
RUQ2OTIgLyogQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSBpbiBIZWFkZXJzICovLAorCQkJCUE1
MzI0MzkyMTg1Njk3MDkwMDJFRDY5MiAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYyNEU1NEYxN0VFMjc0OTAwQUJCMjE3IC8qIFRlbXBSZWdpc3RlclNl
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwRTRCNjQxODgwOURENTAwNjhBNDZEIC8qIEpTR2xv
YmFsT2JqZWN0UnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUI1OEMxNTE4N0I4
QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLywKQEAgLTQ2
MjIsNyArNDY0OCw3IEBACiAJCQkJMEY4MzM1QjgxNjM5QzFFQTAwMTQ0M0I1IC8qIEFycmF5QWxs
b2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwRTI5MTg3Q0E1RTYwMDg0
M0IxMCAvKiBpbmxpbmUtYW5kLW1pbmlmeS1zdHlsZXNoZWV0cy1hbmQtc2NyaXB0cy5weSBpbiBI
ZWFkZXJzICovLAogCQkJCUE1ODQwRTJCMTg3Q0E3NUIwMDg0M0IxMCAvKiBqc21pbi5weSBpbiBI
ZWFkZXJzICovLAotIAkJCQlBNTMyNDM5ODE4NTZBNDg5MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlMu
anNvbiBpbiBIZWFkZXJzICovLAorCQkJCUE1MzI0Mzk4MTg1NkE0ODkwMDJFRDY5MiAvKiBJbnNw
ZWN0b3JKUy5qc29uIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMkExODdDQTc1OTAwODQzQjEw
IC8qIHh4ZC5wbCBpbiBIZWFkZXJzICovLAogCQkJCUZFQTA4NjIwMTgyQjdBMDQwMEY2RDg1MSAv
KiBCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzNTE3QURCNUYzMDA1QUIx
NzQgLyogQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNDczMyw3ICs0NzU5LDcgQEAK
IAkJCQlBMUEwMDlDMDE4MzFBMjJEMDBDRjg3MTEgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODZFQzlEQzUxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVDb2Rl
UGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyODE4N0RGREVDMDA4M0I2ODcgLyog
RlRMQXZhaWxhYmxlUmVjb3ZlcnkuaCBpbiBIZWFkZXJzICovLAotICAgICAgICAgICAgICAgIEE1
OTNDRjg3MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggaW4gSGVh
ZGVycyAqLywKKwkJCQlBNTkzQ0Y4NzE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRS
ZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNTZDMzYxNjI3QjBBRDAwN0YyNzgzIC8q
IERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0aWVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkZGQzk1ODE0RUY5MEEyMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCBp
biBIZWFkZXJzICovLApAQCAtNDg3Miw2ICs0ODk4LDcgQEAKIAkJCQkwRkVBMEExRDE3MDhCMDA3
MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEEx
RjE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTU5NDU1OTMxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVi
dWdnYWJsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdEODAxQTkxODgwRDZBODAwMjZDMzlCIC8q
IEpTQ0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEEwQTE3MDUxM0RCMDBCQjcy
MkMgLyogRlRMQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyQTE4N0RG
REVDMDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RUEwQTIzMTcwOTYwNjkwMEJCNzIyQyAvKiBGVExDb21tb25WYWx1ZXMuaCBpbiBIZWFkZXJzICov
LApAQCAtNDk0Niw2ICs0OTczLDcgQEAKIAkJCQlCQzE4QzQwRjBFMTZGNUNEMDBCMzQ0NjAgLyog
SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzI1RjhCQ0UxNTc1NDRBOTAwMjQ1Qjcx
IC8qIEluY3JlbWVudGFsU3dlZXBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTkxNUVE
OEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nSGVhZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0Q4
MDFBNTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkI3RjM5QTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXJJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5QjE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhp
bmdUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNFRkFCMDE4MDVDQTZEMDA0NzJDRTQgLyog
SW5pdGlhbGl6ZUxMVk0uaCBpbiBIZWFkZXJzICovLApAQCAtNTIxOCw2ICs1MjQ2LDcgQEAKIAkJ
CQlBNTMyNDM4ODE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hl
cnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDU2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBQcm90
ZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc0QzMzQjE2QUEyRDk1MDA2MkYwMUQgLyogUHJv
dG90eXBlTWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzFEQTgwRjE4ODBEQkFCMDBEMUYyOTkg
LyogSlNTdHJpbmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMzJBNDE0Q0E3REQ5
MDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQ0Q0QzIx
NUYxQTYwNzAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJN0MwMDhDRTcxODc2MzFCNjAwOTU1QzI0IC8qIE1pY3JvdGFzay5oIGluIEhlYWRlcnMgKi8s
CkBAIC01ODM2LDYgKzU4NjUsNyBAQAogCQkJCUE3RDg5Q0YyMTdBMEI4Q0MwMDc3M0FEOCAvKiBE
RkdCYXNpY0Jsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MEIwODMyMTdBMEI3OUIwMERB
RjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlDRjMx
N0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUE3RDgwMUE0MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJODZFQzlEQzQxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVD
b2RlUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDgyRTIxMTQxNzJDRTMwMDE3OUM5
NCAvKiBERkdDYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGRkM5NTcxNEVG
OTBBMDAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTg1Miw2
ICs1ODgyLDcgQEAKIAkJCQkwRkZGQzk1OTE0RUY5MEE2MDBDNzI1MzIgLyogREZHQ1NFUGhhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyRkM3NzIxNkUxMkY3MTAwMzhEOTc2IC8qIERGR0RD
RVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEYyQjk5MTcyRjA0RkYwMDdEQkRBNSAv
KiBERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTdEODAxQTgx
ODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3
M0UxMzMwMTc5NjI0Q0QwMEU0REVBOCAvKiBERkdEZXNpcmVkU3RydWN0dXJlQ2hhaW5zLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUMyQzBGN0NEMTdCQkZDNUIwMDQ2NEZFNCAvKiBERkdEZXNpcmVk
VHJhbnNpdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFODUzNEIxNzIzQ0RBNTAwQjYx
OEY1IC8qIERGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU5NzYs
NyArNjAwNyw3IEBACiAJCQkJMEY2QjFDQzUxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVud2luZElu
Zm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5RDMzOUExODAzQURCNzAwNzNDMkJDIC8qIEZU
TFN0YWNrTWFwcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEExNjE3MDZCQjkwMDBCQjcy
MkMgLyogRlRMU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCi0gCQkJCTdDMDA4Q0QyMTg2RjhBOTMw
MDk1NUMyNCAvKiBKU1Byb21pc2VGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0Mw
MDhDRDIxODZGOEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjZCMUNCNTE4NUZDOUU5MDA4NDVEOTcgLyogRlRMSlNDYWxsLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGMjM1QkUxMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExUaHVua3MuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5M0NGN0MxODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ViNDJm
NWNjNDMzZjE2MzYzNDNiZmM5ODJhYTJhYWZiMzM2ZTk0OQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMKQEAgLTAsMCAr
MSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1
bmN0aW9uIGV2ZXJ5KGNhbGxiYWNrIC8qLCB0aGlzQXJnICovKSB7CisgICAgInVzZSBzdHJpY3Qi
OworICAgIGlmICh0aGlzID09PSBudWxsKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigi
QXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIik7
CisgICAgCisgICAgaWYgKHRoaXMgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgdGhyb3cgbmV3IEBU
eXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3Qg
YmUgdW5kZWZpbmVkIik7CisgICAgCisgICAgdmFyIGFycmF5ID0gQE9iamVjdCh0aGlzKTsKKyAg
ICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoID4+PiAwOworICAgIAorICAgIGlmICh0eXBlb2Yg
Y2FsbGJhY2sgIT09ICJmdW5jdGlvbiIpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJB
cnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7CisKKyAg
ICB2YXIgdGhpc0FyZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5k
ZWZpbmVkOworICAgIAorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAg
ICAgICAgaWYgKCEoaSBpbiBhcnJheSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
aWYgKCFjYWxsYmFjay5AY2FsbCh0aGlzQXJnLCBhcnJheVtpXSwgaSwgYXJyYXkpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRh
Ymxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFi
bGVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zNDFkYmI1ZjkyMjVlMjhhMTJlZDNkMTc5OGZmMTc2OGU0MzY3
MWE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1
aWx0aW5FeGVjdXRhYmxlcy5jcHAKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2lu
Y2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgor
I2luY2x1ZGUgIlBhcnNlci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworQnVpbHRpbkV4ZWN1dGFi
bGVzOjpCdWlsdGluRXhlY3V0YWJsZXMoVk0mIHZtKQorICAgIDogbV92bSh2bSkKKyNkZWZpbmUg
SU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVu
Z3RoKSAsIG1fIyNuYW1lIyNTb3VyY2UobWFrZVNvdXJjZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9t
TGl0ZXJhbChzXyMjbmFtZSwgbGVuZ3RoKSwgU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwo
IjxidWlsdGluPiIpKSkKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOKElOSVRJQUxJWkVfQlVJTFRJ
Tl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJTl9TVFJJTkdTCit7Cit9CisK
K1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUJ1
aWx0aW5FeGVjdXRhYmxlKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgSWRlbnRpZmll
ciYgbmFtZSkKK3sKKyAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5l
OworICAgIFBhcnNlckVycm9yIGVycm9yOworICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4gcHJvZ3Jh
bSA9IHBhcnNlPFByb2dyYW1Ob2RlPigmbV92bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIEpT
UGFyc2VCdWlsdGluLCBKU1BhcnNlUHJvZ3JhbUNvZGUsIGVycm9yLCAmcG9zaXRpb25CZWZvcmVM
YXN0TmV3bGluZSk7CisKKyAgICBpZiAoIXByb2dyYW0pIHsKKyAgICAgICAgZGF0YUxvZygiRmF0
YWwgZXJyb3IgY29tcGlsaW5nIGJ1aWx0aW4gZnVuY3Rpb24gJyIsIG5hbWUuc3RyaW5nKCksICIn
OiAiLCBlcnJvci5tX21lc3NhZ2UpOworICAgICAgICBDUkFTSCgpOworICAgIH0KKworICAgIFN0
YXRlbWVudE5vZGUqIGV4cHJTdGF0ZW1lbnQgPSBwcm9ncmFtLT5zaW5nbGVTdGF0ZW1lbnQoKTsK
KyAgICBSRUxFQVNFX0FTU0VSVChleHByU3RhdGVtZW50KTsKKyAgICBSRUxFQVNFX0FTU0VSVChl
eHByU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CisgICAgRXhwcmVzc2lvbk5vZGUqIGZ1
bmNFeHByID0gc3RhdGljX2Nhc3Q8RXhwclN0YXRlbWVudE5vZGUqPihleHByU3RhdGVtZW50KS0+
ZXhwcigpOworICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmNFeHByKTsKKyAgICBSRUxFQVNFX0FTU0VS
VChmdW5jRXhwci0+aXNGdW5jRXhwck5vZGUoKSk7CisgICAgRnVuY3Rpb25Cb2R5Tm9kZSogYm9k
eSA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGZ1bmNFeHByKS0+Ym9keSgpOworICAgIFJF
TEVBU0VfQVNTRVJUKCFwcm9ncmFtLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKKyAgICAKKyAg
ICBib2R5LT5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKKyAgICBS
RUxFQVNFX0FTU0VSVChib2R5KTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5LT5pZGVudCgpLmlz
TnVsbCgpKTsKKyAgICAKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgYW4gaW5wdXQgc3Ry
aW5nIHRoYXQgd291bGQgcmVzdWx0IGluIGEgc2luZ2xlIGFub255bW91cyBmdW5jdGlvbiBleHBy
ZXNzaW9uLgorICAgIGJvZHktPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xp
bmUpOworICAgIFJFTEVBU0VfQVNTRVJUKGJvZHkpOworICAgIGZvciAoY29uc3QgYXV0byYgY2xv
c2VkVmFyaWFibGUgOiBwcm9ncmFtLT5jbG9zZWRWYXJpYWJsZXMoKSkgeworICAgICAgICBpZiAo
Y2xvc2VkVmFyaWFibGUgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMuaW1wbCgpKQor
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAgIGlmIChjbG9zZWRWYXJpYWJsZSA9
PSBtX3ZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQuaW1wbCgpKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNsb3NlZFZhcmlhYmxlLT5pc0Vt
cHR5VW5pcXVlKCkpOworICAgIH0KKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVu
Y3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmbV92
bSwgc291cmNlLCBib2R5LCB0cnVlLCBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbik7CisgICAgZnVu
Y3Rpb25FeGVjdXRhYmxlLT5tX25hbWVWYWx1ZS5zZXQobV92bSwgZnVuY3Rpb25FeGVjdXRhYmxl
LCBqc1N0cmluZygmbV92bSwgbmFtZS5zdHJpbmcoKSkpOworICAgIHJldHVybiBmdW5jdGlvbkV4
ZWN1dGFibGU7Cit9CisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwg
ZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWls
dGluRXhlY3V0YWJsZXM6Om5hbWUjI0V4ZWN1dGFibGUoKSBcCit7XAorICAgIGlmICghbV8jI25h
bWUjI0V4ZWN1dGFibGUpXAorICAgICAgICBtXyMjbmFtZSMjRXhlY3V0YWJsZSA9IGNyZWF0ZUJ1
aWx0aW5FeGVjdXRhYmxlKG1fIyNuYW1lIyNTb3VyY2UsIG1fdm0ucHJvcGVydHlOYW1lcy0+ZnVu
Y3Rpb25OYW1lKTtcCisgICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1wKK30K
K0pTQ19GT1JFQUNIX0JVSUxUSU4oREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYg
RVhQT1NFX0JVSUxUSU5fU09VUkNFUworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDlhMTllMjYxNTA3
OTRhNjY5ZWM5OGUzOTliZjY3ZjdmNzEwNjQxOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaApAQCAtMCwwICsxLDY3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBCdWlsdGluRXhlY3V0YWJsZXNfaAorI2RlZmluZSBCdWlsdGluRXhlY3V0YWJsZXNfaAorCisj
aW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKKyNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCisjaW5jbHVk
ZSAiV2Vhay5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIElkZW50aWZpZXI7
CitjbGFzcyBWTTsKKworY2xhc3MgQnVpbHRpbkV4ZWN1dGFibGVzIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc093blB0cjxCdWlsdGluRXhlY3V0YWJsZXM+IGNyZWF0ZShWTSYgdm0pCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEJ1aWx0aW5FeGVjdXRhYmxlcyh2bSkpOwor
ICAgIH0KKyAgICAKKyNkZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVu
Y3Rpb25OYW1lLCBsZW5ndGgpIFwKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuYW1lIyNF
eGVjdXRhYmxlKCk7IFwKK2NvbnN0IFNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIHsgcmV0dXJu
IG1fIyNuYW1lIyNTb3VyY2U7IH0KKyAgICAKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOKEVYUE9T
RV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX1NPVVJDRVMKKyAg
ICAKK3ByaXZhdGU6CisgICAgQnVpbHRpbkV4ZWN1dGFibGVzKFZNJik7CisgICAgVk0mIG1fdm07
CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxl
KGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJik7CisjZGVmaW5lIERFQ0xBUkVf
QlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aClcCisgICAg
U291cmNlQ29kZSBtXyMjbmFtZSMjU291cmNlOyBcCisgICAgV2VhazxVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZT4gbV8jI25hbWUjI0V4ZWN1dGFibGU7CisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJ
TihERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgREVDTEFSRV9CVUlMVElO
X1NPVVJDRV9NRU1CRVJTCit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBjYjBkYzZmYmYxMzhlZGUzZTdkYmYzNDU1
YzM5YjUxMTJmMzM3YTdhLi44NjAwZjE5YWMyNDdiYWMyYzM1YjFlMGY5NTFiZDkzMDFlYzdkODRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAt
NDMsMTEgKzQzLDEzIEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIK
ICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5j
bHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5j
bHVkZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNsdWRlICJMTEludEVudHJ5cG9pbnQuaCIKICNpbmNs
dWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisjaW5jbHVkZSAiTmF0aXZlRXJyb3JDb25zdHJ1
Y3Rvci5oIgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3BlcmF0
aW9ucy5oIgogI2luY2x1ZGUgIlBvbHltb3JwaGljUHV0QnlJZExpc3QuaCIKICNpbmNsdWRlICJS
ZWR1Y2VXaGl0ZXNwYWNlLmgiCkBAIC0xNTY5LDcgKzE1NzEsNyBAQCBDb2RlQmxvY2s6OkNvZGVC
bG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2Nr
KiB1bmxpbgogCiAgICAgc2V0Q29uc3RhbnRSZWdpc3RlcnModW5saW5rZWRDb2RlQmxvY2stPmNv
bnN0YW50UmVnaXN0ZXJzKCkpOwogICAgIGlmICh1bmxpbmtlZENvZGVCbG9jay0+dXNlc0dsb2Jh
bE9iamVjdCgpKQotICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW3VubGlua2VkQ29kZUJsb2Nr
LT5nbG9iYWxPYmplY3RSZWdpc3RlcigpLm9mZnNldCgpXS5zZXQoKm1fdm0sIG93bmVyRXhlY3V0
YWJsZSwgbV9nbG9iYWxPYmplY3QuZ2V0KCkpOworICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJz
W3VubGlua2VkQ29kZUJsb2NrLT5nbG9iYWxPYmplY3RSZWdpc3RlcigpLnRvQ29uc3RhbnRJbmRl
eCgpXS5zZXQoKm1fdm0sIG93bmVyRXhlY3V0YWJsZSwgbV9nbG9iYWxPYmplY3QuZ2V0KCkpOwog
ICAgIG1fZnVuY3Rpb25EZWNscy5yZXNpemVUb0ZpdCh1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVy
T2ZGdW5jdGlvbkRlY2xzKCkpOwogICAgIGZvciAoc2l6ZV90IGNvdW50ID0gdW5saW5rZWRDb2Rl
QmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpLCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsK
ICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSA9
IHVubGlua2VkQ29kZUJsb2NrLT5mdW5jdGlvbkRlY2woaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggNjhiYzAzNzlmNTc0NGM5YThmNzQzMWRiNjRm
OGFiNTRlNmUxMDUzZi4uNDk5NWM1MmNmOGIyYjFiNGQ2MjgwNDUzZWVkMjdjNzc0YTQ5NTU4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtNTYsNyAr
NTYsNiBAQAogI2luY2x1ZGUgIkhhbmRsZXJJbmZvLmgiCiAjaW5jbHVkZSAiT2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGUuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9u
cy5oIgogI2luY2x1ZGUgIlB1dFByb3BlcnR5U2xvdC5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9u
LmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29u
aW5nV2F0Y2hwb2ludC5jcHAKaW5kZXggOTg2ZTAzZDBjYmE3MTg1YjM5Y2VlMDIzZjRhYjZiYzli
OGNjYjZlNC4uNzBlZjliNDI5MDFjMDU4YmM3MmM5ZGI5MmRjYzMzZDUzZDZiYWFjOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0
dGlzb25pbmdXYXRjaHBvaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uLmgiCiAj
aW5jbHVkZSAiREZHRXhpdFByb2ZpbGUuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCAxZGZiNWFjNmFkOTA5M2Y4ZjgxMTAxZWY3
ZjJlNjEyMzExYWMxOTM5Li40MzM5MGQ5NjVmYzUwMzQwMTZmN2JmZmYyM2U2OGJiMWUwNTQ1NTJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5jcHAKQEAgLTQ5LDkgKzQ5LDkgQEAgY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkUHJv
Z3JhbUNvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrIiwKIGNv
bnN0IENsYXNzSW5mbyBVbmxpbmtlZEV2YWxDb2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2Vk
RXZhbENvZGVCbG9jayIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
VW5saW5rZWRFdmFsQ29kZUJsb2NrKSB9OwogY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2siLCAmQmFz
ZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2spIH07CiAKLXN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1
bmN0aW9uQ29kZUJsb2NrKFZNJiB2bSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2Rl
LCBQYXJzZXJFcnJvciYgZXJyb3IpCitzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayog
Z2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhWTSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHBy
b2ZpbGVyTW9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgZnVuY3Rpb25LaW5kLCBQYXJzZXJFcnJv
ciYgZXJyb3IpCiB7Ci0gICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGJvZHkgPSBwYXJzZTxG
dW5jdGlvbkJvZHlOb2RlPigmdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+cGFyYW1ldGVycygpLCBl
eGVjdXRhYmxlLT5uYW1lKCksIGV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCkgPyBKU1Bh
cnNlU3RyaWN0IDogSlNQYXJzZU5vcm1hbCwgSlNQYXJzZUZ1bmN0aW9uQ29kZSwgZXJyb3IpOwor
ICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBib2R5ID0gcGFyc2U8RnVuY3Rpb25Cb2R5Tm9k
ZT4oJnZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFt
ZSgpLCBleGVjdXRhYmxlLT50b1N0cmljdG5lc3MoKSwgSlNQYXJzZUZ1bmN0aW9uQ29kZSwgZXJy
b3IpOwogCiAgICAgaWYgKCFib2R5KSB7CiAgICAgICAgIEFTU0VSVChlcnJvci5tX3R5cGUgIT0g
UGFyc2VyRXJyb3I6OkVycm9yTm9uZSk7CkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKFZNJiB2bSwgVW5s
aW5rZWRGdW5jCiAgICAgYm9keS0+ZmluaXNoUGFyc2luZyhleGVjdXRhYmxlLT5wYXJhbWV0ZXJz
KCksIGV4ZWN1dGFibGUtPm5hbWUoKSwgZXhlY3V0YWJsZS0+ZnVuY3Rpb25OYW1lSXNJblNjb3Bl
VG9nZ2xlKCkpOwogICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGJvZHktPmZlYXR1cmVzKCks
IGJvZHktPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpOwogICAgIAotICAgIFVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2sqIHJlc3VsdCA9IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgm
dm0sIEZ1bmN0aW9uQ29kZSwgRXhlY3V0YWJsZUluZm8oYm9keS0+bmVlZHNBY3RpdmF0aW9uKCks
IGJvZHktPnVzZXNFdmFsKCksIGJvZHktPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JD
b25zdHJ1Y3QpKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUoJnZtLCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFi
bGVJbmZvKGJvZHktPm5lZWRzQWN0aXZhdGlvbigpLCBib2R5LT51c2VzRXZhbCgpLCBib2R5LT5p
c1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0g
VW5saW5rZWRCdWlsdGluRnVuY3Rpb24pKTsKICAgICBPd25QdHI8Qnl0ZWNvZGVHZW5lcmF0b3I+
IGdlbmVyYXRvcihhZG9wdFB0cihuZXcgQnl0ZWNvZGVHZW5lcmF0b3Iodm0sIGJvZHkuZ2V0KCks
IHJlc3VsdCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUpKSk7CiAgICAgZXJyb3IgPSBnZW5l
cmF0b3ItPmdlbmVyYXRlKCk7CiAgICAgYm9keS0+ZGVzdHJveURhdGEoKTsKQEAgLTgyLDEzICs4
MiwxNCBAQCB1bnNpZ25lZCBVbmxpbmtlZENvZGVCbG9jazo6YWRkT3JGaW5kQ29uc3RhbnQoSlNW
YWx1ZSB2KQogICAgIHJldHVybiBhZGRDb25zdGFudCh2KTsKIH0KIAotVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSog
bm9kZSwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlKQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSogbm9kZSwgYm9vbCBp
c0Zyb21HbG9iYWxDb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kKQogICAgIDogQmFzZSgq
dm0sIHN0cnVjdHVyZSkKICAgICAsIG1fbnVtQ2FwdHVyZWRWYXJpYWJsZXMobm9kZS0+Y2FwdHVy
ZWRWYXJpYWJsZUNvdW50KCkpCiAgICAgLCBtX2ZvcmNlVXNlc0FyZ3VtZW50cyhub2RlLT51c2Vz
QXJndW1lbnRzKCkpCiAgICAgLCBtX2lzSW5TdHJpY3RDb250ZXh0KG5vZGUtPmlzU3RyaWN0TW9k
ZSgpKQogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhub2RlLT5oYXNDYXB0dXJlZFZhcmlh
YmxlcygpKQogICAgICwgbV9pc0Zyb21HbG9iYWxDb2RlKGlzRnJvbUdsb2JhbENvZGUpCisgICAg
LCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGtpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24pCiAg
ICAgLCBtX25hbWUobm9kZS0+aWRlbnQoKSkKICAgICAsIG1faW5mZXJyZWROYW1lKG5vZGUtPmlu
ZmVycmVkTmFtZSgpKQogICAgICwgbV9wYXJhbWV0ZXJzKG5vZGUtPnBhcmFtZXRlcnMoKSkKQEAg
LTE2Niw3ICsxNjcsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9yKFZNJiB2bSwgY29ucwogICAgICAgICBicmVhazsK
ICAgICB9CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBnZW5lcmF0
ZUZ1bmN0aW9uQ29kZUJsb2NrKHZtLCB0aGlzLCBzb3VyY2UsIHNwZWNpYWxpemF0aW9uS2luZCwg
ZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrKiByZXN1bHQgPSBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKHZtLCB0aGlzLCBz
b3VyY2UsIHNwZWNpYWxpemF0aW9uS2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGlz
QnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9y
bWFsRnVuY3Rpb24sIGVycm9yKTsKICAgICAKICAgICBpZiAoZXJyb3IubV90eXBlICE9IFBhcnNl
ckVycm9yOjpFcnJvck5vbmUpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjEwLDYgKzIxMSw3IEBA
IFVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBDb2RlVHlwZSBjb2RlCiAgICAgLCBtX2lzU3RyaWN0TW9kZShpbmZvLm1faXNT
dHJpY3RNb2RlKQogICAgICwgbV9pc0NvbnN0cnVjdG9yKGluZm8ubV9pc0NvbnN0cnVjdG9yKQog
ICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhmYWxzZSkKKyAgICAsIG1faXNCdWlsdGluRnVu
Y3Rpb24oaW5mby5tX2lzQnVpbHRpbkZ1bmN0aW9uKQogICAgICwgbV9maXJzdExpbmUoMCkKICAg
ICAsIG1fbGluZUNvdW50KDApCiAgICAgLCBtX2VuZENvbHVtbihVSU5UX01BWCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXgg
YjlkYWUyZDVjNjljNzljZWFhYTgwMjNkMmEzYTFmMjZkNDYwOTQzYi4uYWJmNmNmMzViOTMwNmE0
ZjdhMzAxYWIwZGY3NjY2ZWM2MTJlMzc5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTY2LDI2ICs2NiwzNSBAQCB0eXBl
ZGVmIHVuc2lnbmVkIFVubGlua2VkT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7CiB0eXBlZGVmIHVu
c2lnbmVkIFVubGlua2VkTExJbnRDYWxsTGlua0luZm87CiAKIHN0cnVjdCBFeGVjdXRhYmxlSW5m
byB7Ci0gICAgRXhlY3V0YWJsZUluZm8oYm9vbCBuZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2
YWwsIGJvb2wgaXNTdHJpY3RNb2RlLCBib29sIGlzQ29uc3RydWN0b3IpCisgICAgRXhlY3V0YWJs
ZUluZm8oYm9vbCBuZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJpY3RN
b2RlLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24pCiAgICAgICAg
IDogbV9uZWVkc0FjdGl2YXRpb24obmVlZHNBY3RpdmF0aW9uKQogICAgICAgICAsIG1fdXNlc0V2
YWwodXNlc0V2YWwpCiAgICAgICAgICwgbV9pc1N0cmljdE1vZGUoaXNTdHJpY3RNb2RlKQogICAg
ICAgICAsIG1faXNDb25zdHJ1Y3Rvcihpc0NvbnN0cnVjdG9yKQorICAgICAgICAsIG1faXNCdWls
dGluRnVuY3Rpb24oaXNCdWlsdGluRnVuY3Rpb24pCiAgICAgewogICAgIH0KLSAgICBib29sIG1f
bmVlZHNBY3RpdmF0aW9uOwotICAgIGJvb2wgbV91c2VzRXZhbDsKLSAgICBib29sIG1faXNTdHJp
Y3RNb2RlOwotICAgIGJvb2wgbV9pc0NvbnN0cnVjdG9yOworICAgIGJvb2wgbV9uZWVkc0FjdGl2
YXRpb24gOiAxOworICAgIGJvb2wgbV91c2VzRXZhbCA6IDE7CisgICAgYm9vbCBtX2lzU3RyaWN0
TW9kZSA6IDE7CisgICAgYm9vbCBtX2lzQ29uc3RydWN0b3IgOiAxOworICAgIGJvb2wgbV9pc0J1
aWx0aW5GdW5jdGlvbiA6IDE7Cit9OworCitlbnVtIFVubGlua2VkRnVuY3Rpb25LaW5kIHsKKyAg
ICBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLAorICAgIFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLAog
fTsKIAogY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgOiBwdWJsaWMgSlNDZWxsIHsK
IHB1YmxpYzoKKyAgICBmcmllbmQgY2xhc3MgQnVpbHRpbkV4ZWN1dGFibGVzOwogICAgIGZyaWVu
ZCBjbGFzcyBDb2RlQ2FjaGU7CisgICAgZnJpZW5kIGNsYXNzIFZNOwogICAgIHR5cGVkZWYgSlND
ZWxsIEJhc2U7Ci0gICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUo
Vk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUs
IGJvb2wgaXNGcm9tR2xvYmFsQ29kZSA9IGZhbHNlKQorICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBG
dW5jdGlvbkJvZHlOb2RlKiBub2RlLCBib29sIGlzRnJvbUdsb2JhbENvZGUsIFVubGlua2VkRnVu
Y3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25LaW5kKQogICAgIHsKLSAgICAgICAgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLT5oZWFwKSkgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUodm0sIHZtLT51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQo
KSwgc291cmNlLCBub2RlLCBpc0Zyb21HbG9iYWxDb2RlKTsKKyAgICAgICAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLT5oZWFwKSkgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUodm0sIHZtLT51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwg
c291cmNlLCBub2RlLCBpc0Zyb21HbG9iYWxDb2RlLCB1bmxpbmtlZEZ1bmN0aW9uS2luZCk7CiAg
ICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbigqdm0pOwogICAgICAgICByZXR1cm4gaW5z
dGFuY2U7CiAgICAgfQpAQCAtOTksNiArMTA4LDE0IEBAIHB1YmxpYzoKICAgICB9CiAgICAgc2l6
ZV90IHBhcmFtZXRlckNvdW50KCkgY29uc3Q7CiAgICAgYm9vbCBpc0luU3RyaWN0Q29udGV4dCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNJblN0cmljdENvbnRleHQ7IH0KKyAgICBKU1BhcnNlclN0cmlj
dG5lc3MgdG9TdHJpY3RuZXNzKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2lzQnVpbHRp
bkZ1bmN0aW9uKQorICAgICAgICAgICAgcmV0dXJuIEpTUGFyc2VCdWlsdGluOworICAgICAgICBp
ZiAobV9pc0luU3RyaWN0Q29udGV4dCkKKyAgICAgICAgICAgIHJldHVybiBKU1BhcnNlU3RyaWN0
OworICAgICAgICByZXR1cm4gSlNQYXJzZU5vcm1hbDsKKyAgICB9CiAgICAgRnVuY3Rpb25OYW1l
SXNJblNjb3BlVG9nZ2xlIGZ1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZnVuY3Rpb25OYW1lSXNJblNjb3BlVG9nZ2xlOyB9CiAKICAgICB1bnNpZ25lZCBmaXJz
dExpbmVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0TGluZU9mZnNldDsgfQpAQCAtMTQy
LDggKzE1OSwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSW1tb3J0YWxT
dHJ1Y3R1cmUgPSB0cnVlOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKKyAg
ICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5j
dGlvbjsgfQorCiBwcml2YXRlOgotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwg
U3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIEZ1bmN0aW9uQm9keU5vZGUqLCBib29sIGlz
RnJvbUdsb2JhbENvZGUpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwgU3Ry
dWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIEZ1bmN0aW9uQm9keU5vZGUqLCBib29sIGlzRnJv
bUdsb2JhbENvZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kKTsKICAgICBXcml0ZUJhcnJpZXI8VW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV9jb2RlQmxvY2tGb3JDYWxsOwogICAgIFdyaXRlQmFy
cmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdDsK
IApAQCAtMTUyLDYgKzE3MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzSW5TdHJpY3RDb250
ZXh0IDogMTsKICAgICBib29sIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgOiAxOwogICAgIGJvb2wg
bV9pc0Zyb21HbG9iYWxDb2RlIDogMTsKKyAgICBib29sIG1faXNCdWlsdGluRnVuY3Rpb24gOiAx
OwogCiAgICAgSWRlbnRpZmllciBtX25hbWU7CiAgICAgSWRlbnRpZmllciBtX2luZmVycmVkTmFt
ZTsKQEAgLTMxOSw2ICszMzksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc051bWVyaWNDb21w
YXJlRnVuY3Rpb24oYm9vbCBpc051bWVyaWNDb21wYXJlRnVuY3Rpb24pIHsgbV9pc051bWVyaWND
b21wYXJlRnVuY3Rpb24gPSBpc051bWVyaWNDb21wYXJlRnVuY3Rpb247IH0KICAgICBib29sIGlz
TnVtZXJpY0NvbXBhcmVGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNOdW1lcmljQ29tcGFy
ZUZ1bmN0aW9uOyB9CiAKKyAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQorICAgIAogICAgIHZvaWQgc2hyaW5rVG9GaXQoKQog
ICAgIHsKICAgICAgICAgbV9qdW1wVGFyZ2V0cy5zaHJpbmtUb0ZpdCgpOwpAQCAtNTAwLDYgKzUy
Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzU3RyaWN0TW9kZSA6IDE7CiAgICAgYm9vbCBt
X2lzQ29uc3RydWN0b3IgOiAxOwogICAgIGJvb2wgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7
CisgICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2ZpcnN0
TGluZTsKICAgICB1bnNpZ25lZCBtX2xpbmVDb3VudDsKICAgICB1bnNpZ25lZCBtX2VuZENvbHVt
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAKaW5kZXggNjgxMGFiODAwMmNlNmJiOGQ3OGU3ZmYyMjI3ZjRjNmVh
N2I3NThjMi4uZWM1MjFiNTMwNDYzOTIzZTc0YzAxMGZhMjE4ZTU5ZWQyYTlhM2NhZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKQEAgLTE3NSw2ICsxNzUsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUAog
I2VuZGlmCiAgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQogICAgICwgbV9leHByZXNzaW9u
VG9vRGVlcChmYWxzZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oZmFsc2UpCiB7CiAgICAg
aWYgKG1fc2hvdWxkRW1pdERlYnVnSG9va3MpCiAgICAgICAgIG1fY29kZUJsb2NrLT5zZXROZWVk
c0Z1bGxTY29wZUNoYWluKHRydWUpOwpAQCAtMjIyLDcgKzIyMywxMyBAQCBCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlv
bkJvZHksIFVubAogI2VuZGlmCiAgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQogICAgICwg
bV9leHByZXNzaW9uVG9vRGVlcChmYWxzZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oY29k
ZUJsb2NrLT5pc0J1aWx0aW5GdW5jdGlvbigpKQogeworICAgIGlmIChtX2lzQnVpbHRpbkZ1bmN0
aW9uKSB7CisgICAgICAgIG1fc2hvdWxkRW1pdFByb2ZpbGVIb29rcyA9IGZhbHNlOworICAgICAg
ICBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzID0gZmFsc2U7CisgICAgfQorCiAgICAgaWYgKG1fc2hv
dWxkRW1pdERlYnVnSG9va3MpCiAgICAgICAgIG1fY29kZUJsb2NrLT5zZXROZWVkc0Z1bGxTY29w
ZUNoYWluKHRydWUpOwogCkBAIC00MzgsNiArNDQ1LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxD
b2QKICNlbmRpZgogICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKICAgICAsIG1fZXhwcmVz
c2lvblRvb0RlZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGZhbHNlKQogewog
ICAgIG1fY29kZUJsb2NrLT5zZXROZWVkc0Z1bGxTY29wZUNoYWluKHRydWUpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKaW5kZXggNGU5ZjIxM2M5YmZhNmNmMTk0YjFhMTRmZTkxOWU4MzMzN2FlMzVkOS4uMTU4NDI3
NGI3OGVhNmMwYmQwZWZiMGI5ODI1YzgxOGJlMGRiYzA2OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNDYx
LDcgKzQ2MSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIHNob3VsZEVtaXREZWJ1
Z0hvb2tzKCkgeyByZXR1cm4gbV9zaG91bGRFbWl0RGVidWdIb29rczsgfQogICAgICAgICAKICAg
ICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNT
dHJpY3RNb2RlKCk7IH0KLQorICAgICAgICAKKyAgICAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KKyAgICAgICAgCiAgICAg
cHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExhYmVsOwogICAgICAgICAKQEAgLTU0Myw3
ICs1NDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBtYWtlRnVuY3Rpb24oRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSkKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
cmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCBib2R5KTsKKyAgICAgICAgICAgIHJl
dHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2Rl
LT5zb3VyY2UoKSwgYm9keSwgZmFsc2UsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1
aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24pOwogICAgICAgICB9CiAKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdEluaXRMYXp5UmVnaXN0ZXIoUmVnaXN0ZXJJRCopOwpAQCAt
Njc3LDYgKzY3OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wgbV91c2VzRXhj
ZXB0aW9uczsKICAgICAgICAgYm9vbCBtX2V4cHJlc3Npb25Ub29EZWVwOworICAgICAgICBib29s
IG1faXNCdWlsdGluRnVuY3Rpb247CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDFmZmQ0ZjMxMTg4
MmQwZWU1YzU1MTRmNWI4YjI1OTM5ZDk3NWUzNzkuLjYyZWNhMzZhMTBkNzcwOGE5MjhkNDNhYzAz
ZjJmYzg2MTVjZWNhNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTI2LDEwICsyNiwxMCBAQAogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKLSNpbmNsdWRlICJOb2RlQ29uc3RydWN0b3Jz
LmgiCiAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkNhbGxGcmFt
ZS5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIu
aCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC0zOCw2ICsz
OCw3IEBACiAjaW5jbHVkZSAiSlNPTk9iamVjdC5oIgogI2luY2x1ZGUgIkxhYmVsU2NvcGUuaCIK
ICNpbmNsdWRlICJMZXhlci5oIgorI2luY2x1ZGUgIk5vZGVDb25zdHJ1Y3RvcnMuaCIKICNpbmNs
dWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiUHJvcGVy
dHlOYW1lQXJyYXkuaCIKQEAgLTUzNSwzNiArNTM2LDM5IEBAIFJlZ2lzdGVySUQqIENhbGxGdW5j
dGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwKICAgICBSZWZQdHI8TGFiZWw+IGVuZCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYmFzZSk7CiAgICAg
Z2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhw
cmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGlu
YXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRp
b24oZHN0KSwgYmFzZS5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5jYWxsKTsKICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5h
dGlvbihkc3QsIGZ1bmN0aW9uLmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1
bmN0aW9uQ2FsbChmdW5jdGlvbi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkpOworICAgIGJvb2wgZW1p
dENhbGxDaGVjayA9ICFnZW5lcmF0b3IuaXNCdWlsdGluRnVuY3Rpb24oKTsKKyAgICBpZiAoZW1p
dENhbGxDaGVjaykKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkNhbGwo
ZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKKwogICAgIHsKICAgICAgICAgaWYgKG1f
YXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcikgewogICAgICAg
ICAgICAgQXJndW1lbnRMaXN0Tm9kZSogb2xkTGlzdCA9IG1fYXJncy0+bV9saXN0Tm9kZTsKICAg
ICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0
OwotCisgICAgICAgICAgICAKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVu
Y3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3Qp
LCBiYXNlLmdldCgpKTsKICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhn
ZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFy
Z3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKICAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBO
b0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsK
LQogICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gb2xkTGlzdDsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5l
cmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgp
KTsKICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1f
YXJncyk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlz
UmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENh
bGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0
aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwot
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChyZWFsQ2FsbC5nZXQoKSk7Ci0gICAgewotICAg
ICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAg
ICAgICBnZW5lcmF0b3IuZW1pdE1vdmUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgYmFz
ZS5nZXQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwg
ZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3Qo
KSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICBpZiAoZW1pdENhbGxDaGVjaykgewor
ICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9y
LmVtaXRMYWJlbChyZWFsQ2FsbC5nZXQoKSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIENhbGxB
cmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CisgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdE1vdmUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQo
KSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1
bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCks
IGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIH0KKyAgICAgICAgZ2VuZXJhdG9y
LmVtaXRMYWJlbChlbmQuZ2V0KCkpOwogICAgIH0KLSAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVu
ZC5nZXQoKSk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlLmdldCgpOwogfQogCkBAIC01ODUsNjUg
KzU4OSw2NyBAQCBSZWdpc3RlcklEKiBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLAogICAgIFJlZlB0cjxMYWJlbD4gZW5k
ID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBn
ZW5lcmF0b3IuZW1pdE5vZGUobV9iYXNlKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25J
bmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVz
c2lvbkVuZCgpKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3Iu
ZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBt
X2lkZW50KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuY3Rpb247CiAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBm
dW5jdGlvbi5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5
KGZ1bmN0aW9uLmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7Ci0gICAgewotICAgICAgICBpZiAobWF5
QmVDYWxsKSB7Ci0gICAgICAgICAgICBpZiAobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+
bV9saXN0Tm9kZS0+bV9leHByKSB7Ci0gICAgICAgICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSog
b2xkTGlzdCA9IG1fYXJncy0+bV9saXN0Tm9kZTsKLSAgICAgICAgICAgICAgICBpZiAobV9hcmdz
LT5tX2xpc3ROb2RlLT5tX25leHQpIHsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fYXJn
cy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHItPmlzU2ltcGxlQXJyYXkoKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIEFTU0VSVCghbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fbmV4dCk7
Ci0gICAgICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IHN0YXRpY19jYXN0PEFy
cmF5Tm9kZSo+KG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHIpLT50b0FyZ3VtZW50
TGlzdChnZW5lcmF0b3Iudm0oKSwgMCwgMCk7Ci0gICAgICAgICAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRl
bXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKLSAgICAgICAgICAgICAgICAgICAgQ2Fs
bEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAgICAgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCks
IG9sZExpc3QtPm1fZXhwcik7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2Fs
bChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rp
b24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0g
ICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xp
c3ROb2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQ7Ci0gICAgICAgICAgICAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2Vu
ZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1Jl
Z2lzdGVyKCksIG9sZExpc3QtPm1fZXhwcik7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVj
dGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RF
bmQoKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0
Tm9kZSA9IG9sZExpc3Q7CisgICAgYm9vbCBlbWl0Q2FsbENoZWNrID0gIWdlbmVyYXRvci5pc0J1
aWx0aW5GdW5jdGlvbigpOworICAgIGlmIChlbWl0Q2FsbENoZWNrKSB7CisgICAgICAgIGZ1bmN0
aW9uID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0
KSwgYmFzZS5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5hcHBseSk7CisgICAgICAg
IGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25BcHBseShmdW5jdGlvbi5nZXQoKSwgcmVh
bENhbGwuZ2V0KCkpOworICAgIH0KKyAgICBpZiAobWF5QmVDYWxsKSB7CisgICAgICAgIGlmICht
X2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpIHsKKyAgICAg
ICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIG9sZExpc3QgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7Cisg
ICAgICAgICAgICBpZiAobV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQpIHsKKyAgICAgICAgICAg
ICAgICBBU1NFUlQobV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwci0+aXNTaW1wbGVB
cnJheSgpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIW1fYXJncy0+bV9saXN0Tm9kZS0+bV9u
ZXh0LT5tX25leHQpOworICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IHN0YXRp
Y19jYXN0PEFycmF5Tm9kZSo+KG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHIpLT50
b0FyZ3VtZW50TGlzdChnZW5lcmF0b3Iudm0oKSwgMCwgMCk7CisgICAgICAgICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0
b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOworICAgICAgICAgICAgICAgIENh
bGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CisgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG9s
ZExpc3QtPm1fZXhwcik7CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVy
blZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2Fs
bEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gbV9hcmdz
LT5tX2xpc3ROb2RlLT5tX25leHQ7CiAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0
aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2Fs
bEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwor
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdp
c3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVu
Y3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBvbGRMaXN0
OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9k
ZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCk7Ci0gICAgICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcHJvZmlsZUhvb2tSZWdpc3RlcjsKLSAgICAgICAgICAgIGlmIChnZW5lcmF0b3Iu
c2hvdWxkRW1pdFByb2ZpbGVIb29rcygpKQotICAgICAgICAgICAgICAgIHByb2ZpbGVIb29rUmVn
aXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1w
RGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gdGhpc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYXJncy0+bV9saXN0Tm9k
ZS0+bV9leHByKTsKLSAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhcmdzUmVnaXN0ZXI7
Ci0gICAgICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBhcmdzID0gbV9hcmdzLT5tX2xpc3ROb2Rl
LT5tX25leHQ7Ci0gICAgICAgICAgICBpZiAoYXJncy0+bV9leHByLT5pc1Jlc29sdmVOb2RlKCkg
JiYgZ2VuZXJhdG9yLndpbGxSZXNvbHZlVG9Bcmd1bWVudHMoc3RhdGljX2Nhc3Q8UmVzb2x2ZU5v
ZGUqPihhcmdzLT5tX2V4cHIpLT5pZGVudGlmaWVyKCkpKQotICAgICAgICAgICAgICAgIGFyZ3NS
ZWdpc3RlciA9IGdlbmVyYXRvci51bmNoZWNrZWRSZWdpc3RlckZvckFyZ3VtZW50cygpOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGFyZ3NSZWdpc3RlciA9IGdlbmVyYXRvci5l
bWl0Tm9kZShhcmdzLT5tX2V4cHIpOwotCi0gICAgICAgICAgICAvLyBGdW5jdGlvbi5wcm90b3R5
cGUuYXBwbHkgaWdub3JlcyBleHRyYSBhcmd1bWVudHMsIGJ1dCB3ZSBzdGlsbAotICAgICAgICAg
ICAgLy8gbmVlZCB0byBldmFsdWF0ZSB0aGVtIGZvciBzaWRlIGVmZmVjdHMuCi0gICAgICAgICAg
ICB3aGlsZSAoKGFyZ3MgPSBhcmdzLT5tX25leHQpKQotICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0Tm9kZShhcmdzLT5tX2V4cHIpOwotCi0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENh
bGxWYXJhcmdzKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdp
c3Rlci5nZXQoKSwgYXJnc1JlZ2lzdGVyLmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCks
IHByb2ZpbGVIb29rUmVnaXN0ZXIuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RF
bmQoKSk7CisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9y
LCBtX2FyZ3MpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMu
dGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRG
dW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKICAgICAgICAgfQotICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBBU1NFUlQobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+
bV9saXN0Tm9kZS0+bV9uZXh0KTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb2ZpbGVI
b29rUmVnaXN0ZXI7CisgICAgICAgIGlmIChnZW5lcmF0b3Iuc2hvdWxkRW1pdFByb2ZpbGVIb29r
cygpKQorICAgICAgICAgICAgcHJvZmlsZUhvb2tSZWdpc3RlciA9IGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVy
YXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkp
OworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLmVt
aXROb2RlKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGFyZ3NSZWdpc3RlcjsKKyAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogYXJncyA9IG1f
YXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OworICAgICAgICBpZiAoYXJncy0+bV9leHByLT5pc1Jl
c29sdmVOb2RlKCkgJiYgZ2VuZXJhdG9yLndpbGxSZXNvbHZlVG9Bcmd1bWVudHMoc3RhdGljX2Nh
c3Q8UmVzb2x2ZU5vZGUqPihhcmdzLT5tX2V4cHIpLT5pZGVudGlmaWVyKCkpKQorICAgICAgICAg
ICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLnVuY2hlY2tlZFJlZ2lzdGVyRm9yQXJndW1lbnRz
KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFyZ3NSZWdpc3RlciA9IGdlbmVyYXRvci5l
bWl0Tm9kZShhcmdzLT5tX2V4cHIpOworCisgICAgICAgIC8vIEZ1bmN0aW9uLnByb3RvdHlwZS5h
cHBseSBpZ25vcmVzIGV4dHJhIGFyZ3VtZW50cywgYnV0IHdlIHN0aWxsCisgICAgICAgIC8vIG5l
ZWQgdG8gZXZhbHVhdGUgdGhlbSBmb3Igc2lkZSBlZmZlY3RzLgorICAgICAgICB3aGlsZSAoKGFy
Z3MgPSBhcmdzLT5tX25leHQpKQorICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGFyZ3Mt
Pm1fZXhwcik7CisKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsVmFyYXJncyhyZXR1cm5WYWx1
ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCB0aGlzUmVnaXN0ZXIuZ2V0KCksIGFyZ3NSZWdp
c3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm9maWxlSG9va1JlZ2lzdGVy
LmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIH0KLSAgICBn
ZW5lcmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKLSAgICB7CisgICAgaWYgKGVtaXRD
YWxsQ2hlY2spIHsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CisgICAg
ICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOwogICAgICAgICBDYWxsQXJn
dW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICBnZW5lcmF0
b3IuZW1pdE1vdmUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7CiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0
KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0KCkp
OwogICAgIH0KLSAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAgcmV0dXJu
IHJldHVyblZhbHVlLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvY3JlYXRlX2hhc2hfdGFibGUgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hf
dGFibGUKaW5kZXggMzk3OTc2YjA2YzdhOWI1ODM2MzMyOTAwYTZlYmI5M2VjNjhiNzQ4Ni4uY2Fk
NjViYzRjYzg4OGUzMTRmODhkNjY1ZGQ0YTZlNjQ1YTA5YTM1NSAxMDA3NTUKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9jcmVhdGVfaGFzaF90YWJsZQpAQCAtMjg5LDcgKzI4OSwxNyBAQCBzdWIgb3V0cHV0KCkg
ewogICAgICAgICAgICAgJGludHJpbnNpYyA9ICJSZWdFeHBUZXN0SW50cmluc2ljIiBpZiAoJGtl
eSBlcSAidGVzdCIpOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKCR2YWx1ZXNbJGldeyJ0eXBl
In0gZXEgIkZ1bmN0aW9uIikgIHsKKyAgICAgICAgICAgIG15ICR0YWJsZUhlYWQgPSAkbmFtZTsK
KyAgICAgICAgICAgICR0YWJsZUhlYWQgPX4gcy9UYWJsZSQvLzsKKyAgICAgICAgICAgIHByaW50
ICIgI2lmIEpTQ19CVUlMVElOX0VYSVNUUygiIC4gdWMoJHRhYmxlSGVhZCAuICRrZXkpIC4iKVxu
IjsKKyAgICAgICAgICAgIHByaW50ICIgICB7IFwiJGtleVwiLCAoKCRhdHRyc1skaV0pICYgfkZ1
bmN0aW9uKSB8IEJ1aWx0aW4sICRpbnRyaW5zaWMsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxCdWls
dGluR2VuZXJhdG9yPigiIC4gJHRhYmxlSGVhZCAuIHVjZmlyc3QoJGtleSkgLiAiQ29kZUdlbmVy
YXRvciksIChpbnRwdHJfdCkkc2Vjb25kVmFsdWUgfSxcbiI7CisgICAgICAgICAgICBwcmludCAi
ICNlbHNlXG4iCisgICAgICAgIH0KICAgICAgICAgcHJpbnQgIiAgIHsgXCIka2V5XCIsICRhdHRy
c1skaV0sICRpbnRyaW5zaWMsIChpbnRwdHJfdCkiIC4gJGZpcnN0Q2FzdFN0ciAuICIoJGZpcnN0
VmFsdWUpLCAoaW50cHRyX3QpIiAuICRzZWNvbmRDYXN0U3RyIC4gIigkc2Vjb25kVmFsdWUpIH0s
XG4iOworICAgICAgICBpZiAoJHZhbHVlc1skaV17InR5cGUifSBlcSAiRnVuY3Rpb24iKSAgewor
ICAgICAgICAgICAgcHJpbnQgIiAjZW5kaWZcbiIKKyAgICAgICAgfQogICAgICAgICAkaSsrOwog
ICAgIH0KICAgICBwcmludCAiICAgeyAwLCAwLCBOb0ludHJpbnNpYywgMCwgMCB9XG4iOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb21pbmF0b3JzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9taW5hdG9ycy5jcHAKaW5kZXggYTVhZTYxNGI5
MTliMGZkNDM0ODJkMDE1Y2MyOTUwODQwZTU0YjI2MS4uMjAwOTZlNzNiMzUxNTljNzQzNGJkMjdh
YjZmNjMzMzdmZTlkZjRhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb21pbmF0b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWlu
YXRvcnMuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJERkdEb21pbmF0b3JzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKIAog
I2lmIEVOQUJMRShERkdfSklUKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2Rl
LmNwcAppbmRleCA5M2M0MWZiZGU0NDc2NGI2YTZmZWUwYjI0YjQ4NDlhZWRiMTE3NGM1Li5kODZh
YzhiNDEzNzMxY2I4ZGJkZjRhZDMzZWZhNWQ3ODUyMDUxYTAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29kZS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoREZH
X0pJVCkKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxp
bmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggMmZmMGMzNDE0NmUyYzBiYTJm
Zjc2YzRkM2Y3YzQ2YmEzZTI1NTE0Ny4uOTA0NGNkYzZiOGMzYWQ0YTFlOTQxODhkZDFkMGUyMDBl
NjlmYjk5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAi
Vk0uaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5l
cy5oIgogI2luY2x1ZGUgIk5hbWVJbnN0YW5jZS5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVj
dG9yLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5zIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dl
bmVyYXRlLWpzLWJ1aWx0aW5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlZTFjN2E3Y2NkZDkzNzY5MjBlNzZkN2Zl
OGQzMGFmOTU1ZjMxYTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Z2VuZXJhdGUtanMtYnVpbHRpbnMKQEAgLTAsMCArMSwzMDQgQEAKKyMhL3Vzci9iaW4vcHl0aG9u
CisjIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisjIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisjIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyMgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCitpbXBvcnQgZmlsZWNtcAoraW1wb3J0IGZubWF0Y2gKK2ltcG9ydCBv
cworaW1wb3J0IHJlCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3lzCitpbXBvcnQgZGF0ZXRpbWUK
K2ltcG9ydCBqc29uCisKK2NvcHlyaWdodFRleHQgPSAiIiIgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqL1xuCisiIiIKKworZ2VuZXJhdG9yU3RyaW5nID0gIi8qIEdlbmVy
YXRlZCBieSAlcyBkbyBub3QgaGFuZCBlZGl0LiAqL1xuIiAlIG9zLnBhdGguYmFzZW5hbWUoX19m
aWxlX18pCisKK2Z1bmN0aW9uSGVhZFJlZ0V4cCA9IHJlLmNvbXBpbGUociJmdW5jdGlvblxzK1x3
K1xzKlwoLio/XCkiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorZnVuY3Rpb25OYW1lUmVnRXhwID0g
cmUuY29tcGlsZShyImZ1bmN0aW9uXHMrKFx3KylccypcKCIsIHJlLk1VTFRJTElORSB8IHJlLlMp
CitmdW5jdGlvblBhcmFtZXRlckZpbmRlciA9IHJlLmNvbXBpbGUociJeZnVuY3Rpb25ccysoPzpc
dyspXHMqXCgoKD86XHMqXHcrKT9ccyooPzpccyosXHMqXHcrKSopP1wpIiwgcmUuTVVMVElMSU5F
IHwgcmUuUykKKworbXVsdGlsaW5lQ29tbWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJcL1wqLio/
XCpcLyIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitzaW5nbGVMaW5lQ29tbWVudFJlZ0V4cCA9IHJl
LmNvbXBpbGUociJcL1wvLio/XG4iLCByZS5NVUxUSUxJTkUgfCByZS5TKQorCitkZWYgZ2V0Q29w
eXJpZ2h0KHNvdXJjZSk6CisgICAgY29weXJpZ2h0QmxvY2sgPSBtdWx0aWxpbmVDb21tZW50UmVn
RXhwLmZpbmRhbGwoc291cmNlKVswXQorICAgIGNvcHlyaWdodEJsb2NrID0gY29weXJpZ2h0Qmxv
Y2tbOmNvcHlyaWdodEJsb2NrLmluZGV4KCJSZWRpc3RyaWJ1dGlvbiIpXQorICAgIGNvcHlSaWdo
dExpbmVzID0gW10KKworICAgIGZvciBsaW5lIGluIGNvcHlyaWdodEJsb2NrLnNwbGl0KCJcbiIp
OgorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIvKiIsICIiKQorICAgICAgICBsaW5lID0g
bGluZS5yZXBsYWNlKCIqLyIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIqIiwg
IiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIkNvcHlyaWdodCIsICIiKQorICAgICAg
ICBsaW5lID0gbGluZS5yZXBsYWNlKCJjb3B5cmlnaHQiLCAiIikKKyAgICAgICAgbGluZSA9IGxp
bmUucmVwbGFjZSgiKEMpIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIihjKSIs
ICIiKQorICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgIGlmIGxlbihsaW5lKSA9
PSAwOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBjb3B5UmlnaHRMaW5lcy5hcHBl
bmQobGluZSkKKyAgICAKKyAgICByZXR1cm4gbGlzdChzZXQoY29weVJpZ2h0TGluZXMpKQorCisK
KworZGVmIGdldEZ1bmN0aW9ucyhzb3VyY2UpOgorCisgICAgc291cmNlID0gbXVsdGlsaW5lQ29t
bWVudFJlZ0V4cC5zdWIoIi8qKi8iLCBzaW5nbGVMaW5lQ29tbWVudFJlZ0V4cC5zdWIoIi8vXG4i
LCBzb3VyY2UpKQorCisgICAgbWF0Y2hlcyA9IFsgZiBmb3IgZiBpbiBmdW5jdGlvbkhlYWRSZWdF
eHAuZmluZGl0ZXIoc291cmNlKV0KKyAgICBmdW5jdGlvbkJvdW5kcyA9IFtdCisgICAgc3RhcnQg
PSAwCisgICAgZW5kID0gMAorICAgIGZvciBtYXRjaCBpbiBtYXRjaGVzOgorICAgICAgICBzdGFy
dCA9IG1hdGNoLnN0YXJ0KCkKKyAgICAgICAgaWYgc3RhcnQgPCBlbmQ6CisgICAgICAgICAgICBj
b250aW51ZQorICAgICAgICBlbmQgPSBtYXRjaC5lbmQoKQorICAgICAgICB3aGlsZSBzb3VyY2Vb
ZW5kXSAhPSAneyc6CisgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgIGRlcHRoID0g
MQorICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgIHdoaWxlIGRlcHRoID4gMDoKKyAgICAg
ICAgICAgIGlmIHNvdXJjZVtlbmRdID09ICd7JzoKKyAgICAgICAgICAgICAgICBkZXB0aCA9IGRl
cHRoICsgMQorICAgICAgICAgICAgZWxpZiBzb3VyY2VbZW5kXSA9PSAnfSc6CisgICAgICAgICAg
ICAgICAgZGVwdGggPSBkZXB0aCAtIDEKKyAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAg
ICAgZnVuY3Rpb25Cb3VuZHMuYXBwZW5kKChzdGFydCwgZW5kKSkKKworICAgIGZ1bmN0aW9ucyA9
IFtzb3VyY2Vbc3RhcnQ6ZW5kXS5zdHJpcCgpIGZvciAoc3RhcnQsIGVuZCkgaW4gZnVuY3Rpb25C
b3VuZHNdCisgICAgcmVzdWx0ID0gW10KKyAgICBmb3IgZnVuY3Rpb24gaW4gZnVuY3Rpb25zOgor
ICAgICAgICBmdW5jdGlvbiA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAuc3ViKCIiLCBmdW5jdGlv
bikKKyAgICAgICAgZnVuY3Rpb25OYW1lID0gZnVuY3Rpb25OYW1lUmVnRXhwLmZpbmRhbGwoZnVu
Y3Rpb24pWzBdCisgICAgICAgIGZ1bmN0aW9uUGFyYW1ldGVycyA9IGZ1bmN0aW9uUGFyYW1ldGVy
RmluZGVyLmZpbmRhbGwoZnVuY3Rpb24pWzBdLnNwbGl0KCcsJykKKyAgICAgICAgaWYgbGVuKGZ1
bmN0aW9uUGFyYW1ldGVyc1swXSkgPT0gMDoKKyAgICAgICAgICAgIGZ1bmN0aW9uUGFyYW1ldGVy
cyA9IFtdCisgICAgICAgICAgICAKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgoZnVuY3Rpb25OYW1l
LCBmdW5jdGlvbiwgZnVuY3Rpb25QYXJhbWV0ZXJzKSkKKyAgICByZXR1cm4gcmVzdWx0CisgICAg
ICAgIAorCitkZWYgZ2VuZXJhdGVDb2RlKHNvdXJjZSk6CisgICAgaW5wdXRGaWxlID0gb3Blbihz
b3VyY2UsICJyIikKKyAgICBiYXNlTmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoc291cmNlKS5yZXBs
YWNlKCIuanMiLCAiIikKKyAgICAKKyAgICBzb3VyY2UgPSAiIgorICAgIGZvciBsaW5lIGluIGlu
cHV0RmlsZToKKyAgICAgICAgc291cmNlID0gc291cmNlICsgbGluZQorICAgIAorICAgIGlmIHN5
cy5wbGF0Zm9ybSA9PSAiY3lnd2luIjoKKyAgICAgICAgc291cmNlID0gc291cmNlLnJlcGxhY2Uo
IlxyXG4iLCAiXG4iKQorICAgIHJldHVybiAoYmFzZU5hbWUsIGdldEZ1bmN0aW9ucyhzb3VyY2Up
LCBnZXRDb3B5cmlnaHQoc291cmNlKSkKKworZGVmIG1hbmdsZU5hbWUob2JqZWN0LCBuYW1lKToK
KyAgICBxTmFtZSA9IG9iamVjdCArICIuIiArIG5hbWUKKyAgICBtYW5nbGVkTmFtZSA9ICIiCisg
ICAgaSA9IDAKKyAgICB3aGlsZSBpIDwgbGVuKHFOYW1lKToKKyAgICAgICAgaWYgcU5hbWVbaV0g
PT0gJy4nOgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZSArIHFOYW1lW2kg
KyAxXS51cHBlcigpCisgICAgICAgICAgICBpID0gaSArIDEKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWUgKyBxTmFtZVtpXQorICAgICAgICBpID0g
aSArIDEKKyAgICByZXR1cm4gbWFuZ2xlZE5hbWUKKworYnVpbHRpbnMgPSBbXQorCitiYXNlTmFt
ZSA9IHN5cy5hcmd2Wy0xXQorYnVpbHRpbl9kZWZpbml0aW9ucyA9IHN5cy5hcmd2WzE6LTFdCiso
b3V0cHV0X2Jhc2UsIF8pID0gb3MucGF0aC5zcGxpdGV4dChzeXMuYXJndlstMV0pCisKK2NvcHly
aWdodHMgPSBbXQorZm9yIGZpbGUgaW4gYnVpbHRpbl9kZWZpbml0aW9uczoKKyAgICBpZiBmbm1h
dGNoLmZubWF0Y2goZmlsZSwgJyouanMnKToKKyAgICAgICAgKGJhc2VOYW1lLCBmdW5jdGlvbnMs
IG9iamVjdENvcHlyaWdodHMpID0gZ2VuZXJhdGVDb2RlKGZpbGUpCisgICAgICAgIGNvcHlyaWdo
dHMuZXh0ZW5kKG9iamVjdENvcHlyaWdodHMpCisgICAgICAgIGJ1aWx0aW5zLmFwcGVuZCgoYmFz
ZU5hbWUsIGZ1bmN0aW9ucykpCisKK2NvcHlyaWdodHMgPSBsaXN0KHNldChjb3B5cmlnaHRzKSkK
KworY29weXJpZ2h0Qm9keSA9ICIiCitmb3IgY29weXJpZ2h0IGluIGNvcHlyaWdodHM6CisgICAg
Y29weXJpZ2h0Qm9keSA9IGNvcHlyaWdodEJvZHkgKyIgKiBDb3B5cmlnaHQgKEMpICIgKyBjb3B5
cmlnaHQgKyAiXG4iCisKK2J1aWx0aW5zSGVhZGVyID0gb3BlbihvdXRwdXRfYmFzZSArICIuaC50
bXAiLCAidyIpCitidWlsdGluc0ltcGxlbWVudGF0aW9uID0gb3BlbihvdXRwdXRfYmFzZSArICIu
Y3BwLnRtcCIsICJ3IikKK2NvcHlyaWdodFRleHQgPSAiLypcbiIgKyBjb3B5cmlnaHRCb2R5ICsg
Y29weXJpZ2h0VGV4dAorYnVpbHRpbnNIZWFkZXIud3JpdGUoIiIiJXMKKyVzCisKKyNpZm5kZWYg
SlNDQnVpbHRpbnNfSAorI2RlZmluZSBKU0NCdWlsdGluc19ICisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CitjbGFzcyBJZGVudGlmaWVyOworY2xhc3MgSlNH
bG9iYWxPYmplY3Q7CitjbGFzcyBTb3VyY2VDb2RlOworY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU7CitjbGFzcyBWTTsKKworRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVCdWlsdGlu
RXhlY3V0YWJsZShWTSYsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwgY29uc3QgU291cmNl
Q29kZSYpOworCisiIiIgJSAoZ2VuZXJhdG9yU3RyaW5nLCBjb3B5cmlnaHRUZXh0KSkKKworY29k
ZVJlZmVyZW5jZXMgPSBbXQorCitmb3IgKG9iamVjdE5hbWUsIGZ1bmN0aW9ucykgaW4gYnVpbHRp
bnM6CisgICAgcHJpbnQoIkdlbmVyYXRpbmcgYmluZGluZ3MgZm9yIHRoZSAlcyBidWlsdGluLiIg
JSBvYmplY3ROYW1lKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIvKiAlcyBmdW5jdGlvbnMg
Ki9cbiIgJSBvYmplY3ROYW1lKQorICAgIGZvciAobmFtZSwgaW1wbGVtZW50YXRpb24sIF8pIGlu
IGZ1bmN0aW9uczoKKyAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVOYW1lKG9iamVjdE5hbWUs
IG5hbWUpCisgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWVbMF0ubG93ZXIoKSArIG1h
bmdsZWROYW1lWzE6XSArICJDb2RlIgorICAgICAgICBjb2RlUmVmZXJlbmNlcy5hcHBlbmQoKG1h
bmdsZWROYW1lLCBuYW1lLCBpbXBsZW1lbnRhdGlvbikpCisgICAgICAgIGJ1aWx0aW5zSGVhZGVy
LndyaXRlKCJleHRlcm4gY29uc3QgY2hhciogc18lcztcbiIgJSBtYW5nbGVkTmFtZSkKKyAgICAg
ICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoImV4dGVybiBjb25zdCBpbnQgc18lc0xlbmd0aDtcbiIg
JSBtYW5nbGVkTmFtZSkKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiXG4iKQorICAgIGJ1aWx0
aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19GT1JFQUNIXyVzX0JVSUxUSU4obWFjcm8pIFxc
XG4iICUgb2JqZWN0TmFtZS5yZXBsYWNlKCIuIiwgIl8iKS51cHBlcigpKQorICAgIGZvciAobmFt
ZSwgaW1wbGVtZW50YXRpb24sIGFyZ3VtZW50cykgaW4gZnVuY3Rpb25zOgorICAgICAgICBtYW5n
bGVkTmFtZSA9IG1hbmdsZU5hbWUob2JqZWN0TmFtZSwgbmFtZSkKKyAgICAgICAgYnVpbHRpbnNI
ZWFkZXIud3JpdGUoIiAgICBtYWNybyglcywgJXMsICVkKSBcXFxuIiAlIChuYW1lLCBtYW5nbGVk
TmFtZSwgbGVuKGFyZ3VtZW50cykpKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJcbiIpCisg
ICAgZm9yIChuYW1lLCBpbXBsZW1lbnRhdGlvbiwgYXJndW1lbnRzKSBpbiBmdW5jdGlvbnM6Cisg
ICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19CVUlMVElOXyVzIDFcbiIg
JSBtYW5nbGVOYW1lKG9iamVjdE5hbWUsIG5hbWUpLnVwcGVyKCkpCisgICAgYnVpbHRpbnNIZWFk
ZXIud3JpdGUoIlxuXG4iKQorbmFtZXMgPSBbXQorYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZp
bmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTihtYWNybylcXFxuIikKK2ZvciAoY29kZVJlZmVyZW5jZSwg
ZnVuY3Rpb25OYW1lLCBzb3VyY2UpIGluIGNvZGVSZWZlcmVuY2VzOgorICAgIGJ1aWx0aW5zSGVh
ZGVyLndyaXRlKCIgICAgbWFjcm8oJXMsICVzLCBzXyVzTGVuZ3RoKSBcXFxuIiAlIChjb2RlUmVm
ZXJlbmNlLCBmdW5jdGlvbk5hbWUsIGNvZGVSZWZlcmVuY2UpKQorICAgIG5hbWVzLmFwcGVuZChm
dW5jdGlvbk5hbWUpCisKK2J1aWx0aW5zSGVhZGVyLndyaXRlKCJcblxuIikKK2J1aWx0aW5zSGVh
ZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNy
bykgXFxcbiIpCitmb3IgbmFtZSBpbiBzb3J0ZWQoc2V0KG5hbWVzKSk6CisgICAgYnVpbHRpbnNI
ZWFkZXIud3JpdGUoIiAgICBtYWNybyglcykgXFxcbiIgJSBuYW1lKQorYnVpbHRpbnNIZWFkZXIu
d3JpdGUoIiIiCisKKyNkZWZpbmUgSlNDX0RFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5h
bWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKKyAgICBGdW5jdGlvbkV4ZWN1dGFi
bGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoVk0mKTsKKworSlNDX0ZPUkVBQ0hfQlVJTFRJTihKU0Nf
REVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBKU0NfREVDTEFSRV9CVUlMVElOX0dF
TkVSQVRPUgorCisjZGVmaW5lIEpTQ19CVUlMVElOX0VYSVNUUyhuYW1lKSBkZWZpbmVkKEpTQ19C
VUlMVElOXyMjbmFtZSkKKworfQorCisjZW5kaWYKKworIiIiKQorCitidWlsdGluc0ltcGxlbWVu
dGF0aW9uLndyaXRlKCIiIiVzCislcworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRl
ICJKU0NCdWlsdGlucy5oIgorCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5j
bHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRl
ICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworIiIiICAlIChnZW5lcmF0b3JTdHJpbmcsIGNv
cHlyaWdodFRleHQpKQorCitmb3IgKGNvZGVSZWZlcmVuY2UsIG5hbWUsIHNvdXJjZSkgaW4gY29k
ZVJlZmVyZW5jZXM6CisgICAgc291cmNlID0gIihmdW5jdGlvbiAiICsgc291cmNlW3NvdXJjZS5p
bmRleCgiKCIpOl0gKyAiKSIKKyAgICBsaW5lcyA9IGpzb24uZHVtcHMoc291cmNlKVsxOi0xXS5z
cGxpdCgiXFxuIikKKyAgICBzb3VyY2VMZW5ndGggPSBsZW4oc291cmNlKQorICAgIHNvdXJjZSA9
ICIiCisgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgIHNvdXJjZSA9IHNvdXJjZSArICgi
ICAgIFwiJXNcXG5cIiBcXFxuIiAlIGxpbmUpCisgICAgYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53
cml0ZSgiY29uc3QgY2hhciogc18lcyA9XG4lcztcblxuIiAlIChjb2RlUmVmZXJlbmNlLCBzb3Vy
Y2UpKQorICAgIGJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoImNvbnN0IGludCBzXyVzTGVu
Z3RoID0gJWQ7XG5cbiIgJSAoY29kZVJlZmVyZW5jZSwgc291cmNlTGVuZ3RoICsgMSkpICMgKyAx
IGZvciBcbgorCitidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIgorRnVuY3Rpb25FeGVj
dXRhYmxlKiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShWTSYgdm0sIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkK
K3sKKyAgICB1bnNpZ25lZCBsaW5lQ291bnQgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPmxpbmVDb3Vu
dCgpOworICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gMTsKKyAgICB1bnNpZ25lZCBzb3VyY2VM
ZW5ndGggPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnNvdXJjZUxlbmd0aCgpOworICAgIGJvb2wgZW5k
Q29sdW1uSXNPblN0YXJ0TGluZSA9ICFsaW5lQ291bnQ7CisgICAgdW5zaWduZWQgZW5kQ29sdW1u
RXhjbHVkaW5nQnJhY2VzID0gdW5saW5rZWRFeGVjdXRhYmxlLT51bmxpbmtlZEJvZHlFbmRDb2x1
bW4oKSArIChlbmRDb2x1bW5Jc09uU3RhcnRMaW5lID8gMCA6IDEpOworICAgIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0ID0gdW5saW5rZWRFeGVjdXRhYmxlLT5zdGFydE9mZnNldCgpOworICAgIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0RXhjbHVkaW5nT3BlbkJyYWNlID0gc3RhcnRPZmZzZXQgKyAxOworICAg
IHVuc2lnbmVkIGVuZE9mZnNldEV4Y2x1ZGluZ0Nsb3NlQnJhY2UgPSBzdGFydE9mZnNldCArIHNv
dXJjZUxlbmd0aCAtIDE7CisgICAgU291cmNlQ29kZSBib2R5U291cmNlKHNvdXJjZS5wcm92aWRl
cigpLCBzdGFydE9mZnNldEV4Y2x1ZGluZ09wZW5CcmFjZSwgZW5kT2Zmc2V0RXhjbHVkaW5nQ2xv
c2VCcmFjZSwgMCwgc3RhcnRDb2x1bW4pOworICAgIHJldHVybiBGdW5jdGlvbkV4ZWN1dGFibGU6
OmNyZWF0ZSh2bSwgYm9keVNvdXJjZSwgdW5saW5rZWRFeGVjdXRhYmxlLCAwLCBsaW5lQ291bnQs
IHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW5FeGNsdWRpbmdCcmFjZXMsIGZhbHNlKTsKK30KKworI2Rl
ZmluZSBKU0NfREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUs
IGFyZ3VtZW50Q291bnQpIFxcCitGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0
b3IoVk0mIHZtKSBcXAoreyBcXAorICAgIHJldHVybiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSh2
bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCksIHZtLmJ1
aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyBcXAorfQorCitKU0NfRk9S
RUFDSF9CVUlMVElOKEpTQ19ERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgSlNDX0RF
RklORV9CVUlMVElOX0dFTkVSQVRPUgorfQorCisiIiIpCisKK2J1aWx0aW5zSGVhZGVyLmNsb3Nl
KCkKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24uY2xvc2UoKQorCitpZiAobm90IG9zLnBhdGguZXhp
c3RzKG91dHB1dF9iYXNlICsgIi5oIikpIG9yIChub3QgZmlsZWNtcC5jbXAob3V0cHV0X2Jhc2Ug
KyAiLmgudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmgiLCBzaGFsbG93PUZhbHNlKSk6CisgICAgb3Mu
cmVuYW1lKG91dHB1dF9iYXNlICsgIi5oLnRtcCIsIG91dHB1dF9iYXNlICsgIi5oIikKK2Vsc2U6
CisgICAgb3MucmVtb3ZlKG91dHB1dF9iYXNlICsgIi5oLnRtcCIpCisKK2lmIChub3Qgb3MucGF0
aC5leGlzdHMob3V0cHV0X2Jhc2UgKyAiLmNwcCIpKSBvciAobm90IGZpbGVjbXAuY21wKG91dHB1
dF9iYXNlICsgIi5jcHAudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmNwcCIsIHNoYWxsb3c9RmFsc2Up
KToKKyAgICBvcy5yZW5hbWUob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCBvdXRwdXRfYmFzZSAr
ICIuY3BwIikKK2Vsc2U6CisgICAgb3MucmVtb3ZlKG91dHB1dF9iYXNlICsgIi5jcHAudG1wIikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxs
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oCmluZGV4
IDJjYTNlOTc5NDBjN2MxMTA2YzFiYWJhMWYzNTRmZTg0N2I0Mzg1YjMuLjMwY2FkMmExNGZmZGJm
YjRkNTdjZjVhMTJmY2I5MDBlMjY0Zjg3NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0NhY2hlZENhbGwuaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgICwgbV9pbnRlcnByZXRlcihjYWxsRnJhbWUtPmludGVycHJldGVyKCkp
CiAgICAgICAgICAgICAsIG1fZW50cnlTY29wZShjYWxsRnJhbWUtPnZtKCksIGZ1bmN0aW9uLT5z
Y29wZSgpLT5nbG9iYWxPYmplY3QoKSkKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKCFm
dW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSk7CisgICAgICAgICAgICBBU1NFUlQoIWZ1bmN0aW9u
LT5pc0hvc3RGdW5jdGlvbk5vbklubGluZSgpKTsKICAgICAgICAgICAgIGlmIChjYWxsRnJhbWUt
PnZtKCkuaXNTYWZlVG9SZWN1cnNlKCkpIHsKICAgICAgICAgICAgICAgICBtX2FyZ3VtZW50cy5y
ZXNpemUoYXJndW1lbnRDb3VudCk7CiAgICAgICAgICAgICAgICAgbV9jbG9zdXJlID0gbV9pbnRl
cnByZXRlci0+cHJlcGFyZUZvclJlcGVhdENhbGwoZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLCBj
YWxsRnJhbWUsICZtX3Byb3RvQ2FsbEZyYW1lLCBmdW5jdGlvbiwgYXJndW1lbnRDb3VudCArIDEs
IGZ1bmN0aW9uLT5zY29wZSgpLCBtX2FyZ3VtZW50cy5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggZmE4OGUwZjJm
NDFhMDk4ZDhmZWM0YjdmYjUzNzRhNDVhMzQyYmM2ZS4uOWQyYzVkNTAwMzhkNGIzNjQ5YjJmMmU5
NmNmMTE4ZDViODMxYTEwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTU3RhY2tJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJK
U1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIkxMSW50Q0xvb3AuaCIKICNpbmNsdWRlICJMTEludFRo
dW5rcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1By
b3RvQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90
b0NhbGxGcmFtZS5jcHAKaW5kZXggZjBlMDJiYTRlNDc2Zjk5Y2M5MTNiMDQ2MmFkMjc5NTAwNjA5
ZmEzYS4uMWMyNDBkY2Q3MWJlNTI5ZDg4Y2JmNDYxZDE4NjhmNWViMmIwMmFkNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuY3Bw
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKIAogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiU3RhY2tBbGlnbm1lbnQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCBjYTdhZDExZjJlMGI4YTNiOGIxODU4OTFkN2U1
MjJiYWU0MDNhMjM2Li5jYjU1MDdiZWFjNTViZjhlYjFiMzdlYzkwZmNhYjE5MzRmYjQ4ZWEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
Q2VsbC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82
NC5jcHAKaW5kZXggOThkMTBhM2Y0ZGNiMTJkODlmMzdhMTJmMjI2MDRiOTQ2ZTA4ZTYyNy4uZGQw
MzUzNzc5ZThiZGY5OGY0NjU4YTMwN2UzMmQwNmU0NzI0NDE1OCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
QXJyYXkuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2Vs
bC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApp
bmRleCA5MjhkZDUwZmIwMTZlMjcxNjQ0YTU3NWUzMGFiNWYyNTE2ZWI1MGVjLi45OWY1ZGIwN2U2
NmI5ZDhjNGIyMzRiOTJhZDUxMTNlMDkxMmY1OWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTQxLDEwICs0MSwxMyBAQAogI2luY2x1ZGUgIkpJ
VC5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbldyYXBwZXJzLmgiCiAjaW5jbHVkZSAiSklUVG9E
RkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5s
aW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUg
IkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1N0YWNrSW5saW5lcy5oIgor
I2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAj
aW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4
IDI2ZGQ0ZDFhZjc0NWFmYTFmYmM1M2E5YzAyM2E2ZTQ3NDFhNjZhMDkuLmRmMWJkM2E5Y2ZhNDAy
YzUyYTUyMTFjZjFhY2NlNjdkNTEyMWI3ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0yOSwxMSArMjksMTMgQEAKICNpbmNsdWRl
ICJKSVQuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50
aWZpZXJzLmgiCiAjaW5jbHVkZSAiR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgiCiAjaW5jbHVkZSAi
R2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVRJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1l
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1ZhcmlhYmxlT2JqZWN0LmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwCmluZGV4IDQwNzg0YjQ5NDMxZmUwMmU4ZTQ1MjJmMTYzMDhjOTAyNDcxNmQyMzYuLjJmNzk1
NTU0YjA5MWRlZWJiYzAzYmYyYmU4Yzc0ZjQxYWU1NDFlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNQcm94
eS5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgogI2lu
Y2x1ZGUgIlN0YWNrVmlzaXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCA2MDRjYzI2M2NmOTdlMDg2ZmVk
MDZlYzkwM2IwZWMxOTgzZTc4MTM3Li44MTY2ZTdmODFmYTg5YTdkNGY1MGM1ZjFhOTRmYTk2OGM1
ZDU3ZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZz
ZXRzRXh0cmFjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRP
ZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkpJVFN0dWJz
LmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgotI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUg
IlZNLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU09iamVjdC5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5k
ZXggNjY0NDRiYWEwOGI1NjJkZDY5N2UwY2NkNzcyMWU1NWMxNWJhNDkxMy4uODNjOThkZmQ2NGIw
ZWM5YWNmYTM5NjNhNjEwN2YxNTUwZDBjZmM4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC00NSw3ICs0NSw3IEBACiAjaW5jbHVkZSAi
SlNOYW1lU2NvcGUuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5j
bHVkZSAiSlNTdGFja0lubGluZXMuaCIKLSNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUg
IkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5jbHVkZSAi
TExJbnRDb21tb24uaCIKICNpbmNsdWRlICJMTEludEV4Y2VwdGlvbnMuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggOGVjMWZkMzJhM2FkYTIyZTEyNTIy
OTU3MGRjZjdmZjI4ZWFiZjFlZC4uNDZhN2M3NmIyZjkwMWZjM2NjMzZkMWNlMGMwNzM1M2ViMDZi
MmY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTg4
OCw5ICs4ODgsOSBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2Fs
bE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbgogICAgIEFTU0VSVChmdW5jLT5p
c0RvdEFjY2Vzc29yTm9kZSgpKTsKICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRpY19j
YXN0PERvdEFjY2Vzc29yTm9kZSo+KGZ1bmMpOwogICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUqIG5v
ZGU7Ci0gICAgaWYgKGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmNh
bGwpCisgICAgaWYgKGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmNh
bGwgfHwgZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y2FsbFByaXZh
dGVOYW1lKQogICAgICAgICBub2RlID0gbmV3IChtX3ZtKSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9k
ZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwg
ZGl2b3RTdGFydCwgZGl2b3RFbmQpOwotICAgIGVsc2UgaWYgKGRvdC0+aWRlbnRpZmllcigpID09
IG1fdm0tPnByb3BlcnR5TmFtZXMtPmFwcGx5KQorICAgIGVsc2UgaWYgKGRvdC0+aWRlbnRpZmll
cigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmFwcGx5IHx8IGRvdC0+aWRlbnRpZmllcigpID09
IG1fdm0tPnByb3BlcnR5TmFtZXMtPmFwcGx5UHJpdmF0ZU5hbWUpCiAgICAgICAgIG5vZGUgPSBu
ZXcgKG1fdm0pIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCks
IGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwog
ICAgIGVsc2UKICAgICAgICAgbm9kZSA9IG5ldyAobV92bSkgRnVuY3Rpb25DYWxsRG90Tm9kZShs
b2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2
b3RTdGFydCwgZGl2b3RFbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9MZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApp
bmRleCBjYTRiYjRmMGFkZThkNmJjODI2OTFhNmMwMDAxNGNmMTk4YmQ4OGJkLi5jY2IwNzlkOTc1
YTE0MWM1YzRiMmQ3YjYyMzEzMDAwNzA5Nzc3ODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0xleGVyLmNwcApAQCAtMjUsMTAgKzI1LDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiTGV4ZXIuaCIKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCisjaW5j
bHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCi0KICNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgotI2luY2x1ZGUgIklkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJOb2RlSW5mby5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSA8
d3RmL2R0b2EuaD4KQEAgLTkwLDYgKzkwLDcgQEAgZW51bSBDaGFyYWN0ZXJUeXBlIHsKIAogICAg
IC8vIE90aGVyIHR5cGVzIChvbmx5IG9uZSBzbyBmYXIpCiAgICAgQ2hhcmFjdGVyV2hpdGVTcGFj
ZSwKKyAgICBDaGFyYWN0ZXJQcml2YXRlSWRlbnRpZmllclN0YXJ0CiB9OwogCiAvLyAyNTYgTGF0
aW4tMSBjb2RlcwpAQCAtMTU4LDcgKzE1OSw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9y
dCB0eXBlc09mTGF0aW4xQ2hhcmFjdGVyc1syNTZdID0gewogLyogIDYxIC0gPSAgICAgICAgICAg
ICAgICAgICovIENoYXJhY3RlckVxdWFsLAogLyogIDYyIC0gPiAgICAgICAgICAgICAgICAgICov
IENoYXJhY3RlckdyZWF0ZXIsCiAvKiAgNjMgLSA/ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFj
dGVyUXVlc3Rpb24sCi0vKiAgNjQgLSBAICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySW52
YWxpZCwKKy8qICA2NCAtIEAgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJQcml2YXRlSWRl
bnRpZmllclN0YXJ0LAogLyogIDY1IC0gQSAgICAgICAgICAgICAgICAgICovIENoYXJhY3Rlcklk
ZW50aWZpZXJTdGFydCwKIC8qICA2NiAtIEIgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJ
ZGVudGlmaWVyU3RhcnQsCiAvKiAgNjcgLSBDICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVy
SWRlbnRpZmllclN0YXJ0LApAQCAtNDg2LDkgKzQ4NywxMCBAQCBzdGF0aWMgY29uc3QgTENoYXIg
c2luZ2xlQ2hhcmFjdGVyRXNjYXBlVmFsdWVzRm9yQVNDSUlbMTI4XSA9IHsKIH07CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotTGV4ZXI8VD46OkxleGVyKFZNKiB2bSkKK0xleGVyPFQ+OjpMZXhl
cihWTSogdm0sIEpTUGFyc2VyU3RyaWN0bmVzcyBzdHJpY3RuZXNzKQogICAgIDogbV9pc1JlcGFy
c2luZyhmYWxzZSkKICAgICAsIG1fdm0odm0pCisgICAgLCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rp
b24oc3RyaWN0bmVzcyA9PSBKU1BhcnNlQnVpbHRpbikKIHsKIH0KIApAQCAtNzUzLDcgKzc1NSwy
NyBAQCBpbmxpbmUgdm9pZCBMZXhlcjxUPjo6cmVjb3JkMTYoaW50IGMpCiAgICAgQVNTRVJUKGMg
PD0gc3RhdGljX2Nhc3Q8aW50PihVU0hSVF9NQVgpKTsKICAgICBtX2J1ZmZlcjE2LmFwcGVuZChz
dGF0aWNfY2FzdDxVQ2hhcj4oYykpOwogfQotCisgICAgCisjaWYgIUFTU0VSVF9ESVNBQkxFRAor
Ym9vbCBpc1NhZmVJZGVudGlmaWVyKFZNJiB2bSwgY29uc3QgSWRlbnRpZmllciogaWRlbnQpCit7
CisgICAgaWYgKCFpZGVudCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgLyogSnVzdCBibG9j
ayBhbnkgdXNlIG9mIHN1c3BpY2lvdXMgaWRlbnRpZmllcnMuICBUaGlzIGlzIGludGVuZGVkIHRv
CisgICAgICogYmUgdXNlZCBhcyBhIHNhZmV0eSBuZXQgd2hpbGUgaW1wbGVtZW50aW5nIGJ1aWx0
aW5zLgorICAgICAqLworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+Y2FsbCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1l
cy0+YXBwbHkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKmlkZW50ID09IHZtLnBy
b3BlcnR5TmFtZXMtPmV2YWwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKmlkZW50
ID09IHZtLnByb3BlcnR5TmFtZXMtPkZ1bmN0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKyAgICAKIHRlbXBsYXRlIDw+CiB0ZW1wbGF0ZSA8
Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExl
eGVyPExDaGFyPjo6cGFyc2VJZGVudGlmaWVyKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEsIHVuc2ln
bmVkIGxleGVyRmxhZ3MsIGJvb2wgc3RyaWN0TW9kZSkKIHsKQEAgLTc2NSw3ICs3ODcsMTEgQEAg
dGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rv
a2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKICAgICAgICAgICAgIHJldHVybiBrZXl3b3JkID09IFJF
U0VSVkVEX0lGX1NUUklDVCAmJiAhc3RyaWN0TW9kZSA/IElERU5UIDoga2V5d29yZDsKICAgICAg
ICAgfQogICAgIH0KLQorICAgIAorICAgIGJvb2wgaXNQcml2YXRlTmFtZSA9IG1fY3VycmVudCA9
PSAnQCcgJiYgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uOworICAgIGlmIChpc1ByaXZhdGVOYW1l
KQorICAgICAgICBzaGlmdCgpOworICAgIAogICAgIGNvbnN0IExDaGFyKiBpZGVudGlmaWVyU3Rh
cnQgPSBjdXJyZW50U291cmNlUHRyKCk7CiAgICAgdW5zaWduZWQgaWRlbnRpZmllckxpbmVTdGFy
dCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKICAgICAKQEAgLTc3OSwxNSArODA1LDI2IEBA
IHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNU
b2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9
IDA7CiAgICAgCi0gICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpIHsKKyAgICBpZiAoc2hv
dWxkQ3JlYXRlSWRlbnRpZmllciB8fCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKICAgICAg
ICAgaW50IGlkZW50aWZpZXJMZW5ndGggPSBjdXJyZW50U291cmNlUHRyKCkgLSBpZGVudGlmaWVy
U3RhcnQ7CiAgICAgICAgIGlkZW50ID0gbWFrZUlkZW50aWZpZXIoaWRlbnRpZmllclN0YXJ0LCBp
ZGVudGlmaWVyTGVuZ3RoKTsKLQorICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9u
KSB7CisgICAgICAgICAgICBpZiAoIWlzU2FmZUlkZW50aWZpZXIoKm1fdm0sIGlkZW50KSAmJiAh
aXNQcml2YXRlTmFtZSkgeworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gbWFr
ZVN0cmluZygiVGhlIHVzZSBvZiAnIiwgaWRlbnQtPnN0cmluZygpLCAiJyBpcyBkaXNhbGxvd2Vk
IGluIGJ1aWx0aW4gZnVuY3Rpb25zLiIpOworICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRP
SzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAg
ICAgICAgICAgIGlkZW50ID0gbV92bS0+cHJvcGVydHlOYW1lcy0+Z2V0UHJpdmF0ZU5hbWUoKmlk
ZW50KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT51bmRlZmluZWRLZXl3b3JkKQorICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAm
bV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZFByaXZhdGVOYW1lOworICAgICAg
ICAgICAgaWYgKCFpZGVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9QUklWQVRF
X05BTUVfRVJST1JUT0s7CisgICAgICAgIH0KICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IGlk
ZW50OwogICAgIH0gZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gMDsKIAotICAgIGlm
IChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICEobGV4ZXJGbGFncyAm
IExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkpIHsKKyAgICBpZiAoVU5MSUtFTFkoKHJl
bWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxhZ3MgJiBMZXhlckZsYWdzSWdu
b3JlUmVzZXJ2ZWRXb3JkcykpICYmICFpc1ByaXZhdGVOYW1lKSB7CiAgICAgICAgIEFTU0VSVChz
aG91bGRDcmVhdGVJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKHJlbWFpbmluZyA8IG1heFRva2Vu
TGVuZ3RoKSB7CiAgICAgICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gbV92bS0+a2V5
d29yZHMtPmdldEtleXdvcmQoKmlkZW50KTsKQEAgLTgxNCw2ICs4NTEsMTAgQEAgdGVtcGxhdGUg
PGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBM
ZXhlcjxVQ2hhcj46OnAKICAgICAgICAgICAgIHJldHVybiBrZXl3b3JkID09IFJFU0VSVkVEX0lG
X1NUUklDVCAmJiAhc3RyaWN0TW9kZSA/IElERU5UIDoga2V5d29yZDsKICAgICAgICAgfQogICAg
IH0KKyAgICAKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJlbnQgPT0gJ0AnICYmIG1f
cGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKKyAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAg
c2hpZnQoKTsKIAogICAgIGNvbnN0IFVDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50U291
cmNlUHRyKCk7CiAgICAgaW50IGlkZW50aWZpZXJMaW5lU3RhcnQgPSBjdXJyZW50TGluZVN0YXJ0
T2Zmc2V0KCk7CkBAIC04MjYsNiArODY3LDcgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRl
SWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAKICAg
ICB9CiAgICAgCiAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudCA9PSAnXFwnKSkgeworICAgICAg
ICBBU1NFUlQoIWlzUHJpdmF0ZU5hbWUpOwogICAgICAgICBzZXRPZmZzZXRGcm9tU291cmNlUHRy
KGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxpbmVTdGFydCk7CiAgICAgICAgIHJldHVybiBw
YXJzZUlkZW50aWZpZXJTbG93Q2FzZTxzaG91bGRDcmVhdGVJZGVudGlmaWVyPih0b2tlbkRhdGEs
IGxleGVyRmxhZ3MsIHN0cmljdE1vZGUpOwogICAgIH0KQEAgLTgzNywxOCArODc5LDI5IEBAIHRl
bXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tl
blR5cGUgTGV4ZXI8VUNoYXI+OjpwCiAKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IDA7
CiAgICAgCi0gICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpIHsKKyAgICBpZiAoc2hvdWxk
Q3JlYXRlSWRlbnRpZmllciB8fCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKICAgICAgICAg
aW50IGlkZW50aWZpZXJMZW5ndGggPSBjdXJyZW50U291cmNlUHRyKCkgLSBpZGVudGlmaWVyU3Rh
cnQ7CiAgICAgICAgIGlmIChpc0FsbDhCaXQpCiAgICAgICAgICAgICBpZGVudCA9IG1ha2VJZGVu
dGlmaWVyTENoYXJGcm9tVUNoYXIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVuZ3RoKTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgaWRlbnQgPSBtYWtlSWRlbnRpZmllcihpZGVudGlm
aWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwotICAgICAgICAKKyAgICAgICAgaWYgKG1fcGFy
c2luZ0J1aWx0aW5GdW5jdGlvbikgeworICAgICAgICAgICAgaWYgKCFpc1NhZmVJZGVudGlmaWVy
KCptX3ZtLCBpZGVudCkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsKKyAgICAgICAgICAgICAgICBtX2xl
eEVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIlRoZSB1c2Ugb2YgJyIsIGlkZW50LT5zdHJpbmco
KSwgIicgaXMgZGlzYWxsb3dlZCBpbiBidWlsdGluIGZ1bmN0aW9ucy4iKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gRVJST1JUT0s7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaXNQ
cml2YXRlTmFtZSkKKyAgICAgICAgICAgICAgICBpZGVudCA9IG1fdm0tPnByb3BlcnR5TmFtZXMt
PmdldFByaXZhdGVOYW1lKCppZGVudCk7CisgICAgICAgICAgICBlbHNlIGlmICgqaWRlbnQgPT0g
bV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCkKKyAgICAgICAgICAgICAgICB0
b2tlbkRhdGEtPmlkZW50ID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmRQ
cml2YXRlTmFtZTsKKyAgICAgICAgICAgIGlmICghaWRlbnQpCisgICAgICAgICAgICAgICAgcmV0
dXJuIElOVkFMSURfUFJJVkFURV9OQU1FX0VSUk9SVE9LOworICAgICAgICB9CiAgICAgICAgIHRv
a2VuRGF0YS0+aWRlbnQgPSBpZGVudDsKICAgICB9IGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5p
ZGVudCA9IDA7CiAgICAgCi0gICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxl
bmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMpKSkg
eworICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICEobGV4
ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlzUHJpdmF0ZU5h
bWUpIHsKICAgICAgICAgQVNTRVJUKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpOwogICAgICAgICBp
ZiAocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHsKICAgICAgICAgICAgIGNvbnN0IEhhc2hF
bnRyeSogZW50cnkgPSBtX3ZtLT5rZXl3b3Jkcy0+Z2V0S2V5d29yZCgqaWRlbnQpOwpAQCAtMTY1
OCw2ICsxNzExLDcgQEAgaW5OdW1iZXJBZnRlckRlY2ltYWxQb2ludDoKICAgICAgICAgQVNTRVJU
KGlzSWRlbnRTdGFydChtX2N1cnJlbnQpKTsKICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2Fz
ZSBDaGFyYWN0ZXJCYWNrU2xhc2g6CisgICAgICAgIHBhcnNlSWRlbnQ6CiAgICAgICAgIGlmIChs
ZXhlckZsYWdzICYgTGV4ZXhGbGFnc0RvbnRCdWlsZEtleXdvcmRzKQogICAgICAgICAgICAgdG9r
ZW4gPSBwYXJzZUlkZW50aWZpZXI8ZmFsc2U+KHRva2VuRGF0YSwgbGV4ZXJGbGFncywgc3RyaWN0
TW9kZSk7CiAgICAgICAgIGVsc2UKQEAgLTE2NzAsNiArMTcyNCwxMSBAQCBpbk51bWJlckFmdGVy
RGVjaW1hbFBvaW50OgogICAgICAgICBtX3Rlcm1pbmF0b3IgPSB0cnVlOwogICAgICAgICBtX2xp
bmVTdGFydCA9IG1fY29kZTsKICAgICAgICAgZ290byBzdGFydDsKKyAgICBjYXNlIENoYXJhY3Rl
clByaXZhdGVJZGVudGlmaWVyU3RhcnQ6CisgICAgICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVu
Y3Rpb24pCisgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnQ7CisKKyAgICAgICAgRkFMTFRIUk9V
R0g7CiAgICAgY2FzZSBDaGFyYWN0ZXJJbnZhbGlkOgogICAgICAgICBtX2xleEVycm9yTWVzc2Fn
ZSA9IGludmFsaWRDaGFyYWN0ZXJNZXNzYWdlKCk7CiAgICAgICAgIHRva2VuID0gRVJST1JUT0s7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKaW5kZXggMjhjNjFiYTE5OGQyYzE1YTQ5
YmIxODUyZWQzMGJlZmViODkwNDAwOC4uYjg4NzNlOTk1MDI4NjQ0YmY4Y2JiM2Q0YzJkYTU2MmU5
M2UwZThlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaApAQCAtNzIsNyArNzIs
NyBAQCBjbGFzcyBMZXhlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKIHB1Ymxp
YzoKLSAgICBMZXhlcihWTSopOworICAgIExleGVyKFZNKiwgSlNQYXJzZXJTdHJpY3RuZXNzKTsK
ICAgICB+TGV4ZXIoKTsKIAogICAgIC8vIENoYXJhY3RlciBtYW5pcHVsYXRpb24gZnVuY3Rpb25z
LgpAQCAtMjM4LDYgKzIzOCw3IEBAIHByaXZhdGU6CiAgICAgSWRlbnRpZmllckFyZW5hKiBtX2Fy
ZW5hOwogCiAgICAgVk0qIG1fdm07CisgICAgYm9vbCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247
CiB9OwogCiB0ZW1wbGF0ZSA8PgpAQCAtMzM1LDYgKzMzNiwxMiBAQCBBTFdBWVNfSU5MSU5FIGNv
bnN0IElkZW50aWZpZXIqIExleGVyPFQ+OjptYWtlTENoYXJJZGVudGlmaWVyKGNvbnN0IFVDaGFy
KiBjaGFyYQogICAgIHJldHVybiAmbV9hcmVuYS0+bWFrZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hh
cihtX3ZtLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOwogfQogCisjaWYgQVNTRVJUX0RJU0FCTEVECitB
TFdBWVNfSU5MSU5FIGJvb2wgaXNTYWZlSWRlbnRpZmllcihWTSYsIGNvbnN0IElkZW50aWZpZXIq
KSB7IHJldHVybiB0cnVlOyB9CisjZWxzZQorYm9vbCBpc1NhZmVJZGVudGlmaWVyKFZNJiwgY29u
c3QgSWRlbnRpZmllciopOworI2VuZGlmCisKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogQUxXQVlT
X0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rva2Vu
KiB0b2tlblJlY29yZCwgdW5zaWduZWQgbGV4ZXJGbGFncywgYm9vbCBzdHJpY3RNb2RlKQogewpA
QCAtMzcwLDEwICszNzcsMTUgQEAgQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6
bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rva2VuKiB0b2tlblJlY29yZCwgdW4KICAgICBBU1NFUlQo
Y3VycmVudE9mZnNldCgpID49IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKSk7CiAKICAgICAvLyBD
cmVhdGUgdGhlIGlkZW50aWZpZXIgaWYgbmVlZGVkCi0gICAgaWYgKGxleGVyRmxhZ3MgJiBMZXhl
eEZsYWdzRG9udEJ1aWxkS2V5d29yZHMpCisgICAgaWYgKGxleGVyRmxhZ3MgJiBMZXhleEZsYWdz
RG9udEJ1aWxkS2V5d29yZHMKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgICYmICFtX3Bh
cnNpbmdCdWlsdGluRnVuY3Rpb24KKyNlbmRpZgorICAgICAgICApCiAgICAgICAgIHRva2VuRGF0
YS0+aWRlbnQgPSAwOwogICAgIGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG1ha2VM
Q2hhcklkZW50aWZpZXIoc3RhcnQsIHB0ciAtIHN0YXJ0KTsKKwogICAgIHRva2VuTG9jYXRpb24t
PmxpbmUgPSBtX2xpbmVOdW1iZXI7CiAgICAgdG9rZW5Mb2NhdGlvbi0+bGluZVN0YXJ0T2Zmc2V0
ID0gY3VycmVudExpbmVTdGFydE9mZnNldCgpOwogICAgIHRva2VuTG9jYXRpb24tPnN0YXJ0T2Zm
c2V0ID0gb2Zmc2V0RnJvbVNvdXJjZVB0cihzdGFydCk7CkBAIC0zODEsNiArMzkzLDEzIEBAIEFM
V0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNU
b2tlbiogdG9rZW5SZWNvcmQsIHVuCiAgICAgQVNTRVJUKHRva2VuTG9jYXRpb24tPnN0YXJ0T2Zm
c2V0ID49IHRva2VuTG9jYXRpb24tPmxpbmVTdGFydE9mZnNldCk7CiAgICAgdG9rZW5SZWNvcmQt
Pm1fc3RhcnRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb247CiAgICAgdG9rZW5SZWNvcmQtPm1fZW5k
UG9zaXRpb24gPSBjdXJyZW50UG9zaXRpb24oKTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAg
aWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgeworICAgICAgICBpZiAoIWlzU2FmZUlkZW50
aWZpZXIoKm1fdm0sIHRva2VuRGF0YS0+aWRlbnQpKQorICAgICAgICAgICAgcmV0dXJuIEVSUk9S
VE9LOworICAgIH0KKyNlbmRpZgorCiAgICAgbV9sYXN0VG9rZW4gPSBJREVOVDsKICAgICByZXR1
cm4gSURFTlQ7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4
IGZjOWNjZDlmNmM1NzZjMWFlZjU0N2YyMTFmZGQ1OTZmNDJlMDU4MDYuLmQ5NTJiYTZhOTRkMmY2
YjQxODIxNTUwMDRkMGE5NzA4NDI5YmQ3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZXMuY3BwCkBAIC0xMzIsNiArMTMyLDEyIEBAIFBhc3NSZWZQdHI8UHJvZ3JhbU5vZGU+IFBy
b2dyYW1Ob2RlOjpjcmVhdGUoVk0qIHZtLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0CiAg
ICAgcmV0dXJuIG5vZGUucmVsZWFzZSgpOwogfQogCisKK3ZvaWQgUHJvZ3JhbU5vZGU6OnNldENs
b3NlZFZhcmlhYmxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmIGNsb3NlZFZh
cmlhYmxlcykKK3sKKyAgICBtX2Nsb3NlZFZhcmlhYmxlcyA9IHN0ZDo6bW92ZShjbG9zZWRWYXJp
YWJsZXMpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXZhbE5vZGUg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogaW5saW5lIEV2YWxOb2RlOjpFdmFsTm9k
ZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVt
ZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0
YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggZDc3OWExNzhkOTU2ZmY5OWZkMGJlZDVkNWY0
NTRhYTNlNmI1MDg3OS4uODE2ZmYwMDFhYmYwMzc2YzY0MmYxYTkzOGQwZTBhOWY1MjljYTZiYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTQzMSw2ICsxNDMxLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbmVlZHNBY3RpdmF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gKGhhc0NhcHR1cmVkVmFyaWFibGVzKCkpIHx8IChtX2ZlYXR1cmVzICYgKEV2YWxGZWF0
dXJlIHwgV2l0aEZlYXR1cmUgfCBDYXRjaEZlYXR1cmUpKTsgfQogICAgICAgICBib29sIGhhc0Nh
cHR1cmVkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gISFtX2NhcHR1cmVkVmFyaWFibGVzLnNp
emUoKTsgfQogICAgICAgICBzaXplX3QgY2FwdHVyZWRWYXJpYWJsZUNvdW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9jYXB0dXJlZFZhcmlhYmxlcy5zaXplKCk7IH0KKyAgICAgICAgY29uc3QgSWRlbnRp
ZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2NhcHR1cmVkVmFy
aWFibGVzOyB9CiAgICAgICAgIGJvb2wgY2FwdHVyZXMoY29uc3QgSWRlbnRpZmllciYgaWRlbnQp
IHsgcmV0dXJuIG1fY2FwdHVyZWRWYXJpYWJsZXMuY29udGFpbnMoaWRlbnQuaW1wbCgpKTsgfQog
CiAgICAgICAgIFZhclN0YWNrJiB2YXJTdGFjaygpIHsgcmV0dXJuIG1fdmFyU3RhY2s7IH0KQEAg
LTE0NDYsNiArMTQ0Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdGF0ZW1lbnROb2Rl
KiBzaW5nbGVTdGF0ZW1lbnQoKSBjb25zdDsKIAogICAgICAgICB2b2lkIGVtaXRTdGF0ZW1lbnRz
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkZXN0aW5hdGlvbik7Cisg
ICAgICAgIAorICAgICAgICB2b2lkIHNldENsb3NlZFZhcmlhYmxlcyhjb25zdCBWZWN0b3I8UmVm
UHRyPFN0cmluZ0ltcGw+PiYmKSB7IH0KIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgdm9pZCBz
ZXRTb3VyY2UoY29uc3QgU291cmNlQ29kZSYgc291cmNlKSB7IG1fc291cmNlID0gc291cmNlOyB9
CkBAIC0xNDc1LDExICsxNDc4LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRp
YyBjb25zdCBib29sIHNjb3BlSXNGdW5jdGlvbiA9IGZhbHNlOwogCisgICAgICAgIHZvaWQgc2V0
Q2xvc2VkVmFyaWFibGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYpOworICAg
ICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYgY2xvc2VkVmFyaWFibGVzKCkg
Y29uc3QgeyByZXR1cm4gbV9jbG9zZWRWYXJpYWJsZXM7IH0KICAgICBwcml2YXRlOgogICAgICAg
ICBQcm9ncmFtTm9kZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29s
dW1uLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZp
ZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRz
KTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKLQorICAgICAgICBWZWN0b3I8UmVmUHRyPFN0
cmluZ0ltcGw+PiBtX2Nsb3NlZFZhcmlhYmxlczsKICAgICAgICAgdW5zaWduZWQgbV9zdGFydENv
bHVtbjsKICAgICAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CiAgICAgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCAyOTc2NjZlNzI2ZTQ1ZDA4M2VmMTM0OWRk
ZmZkZjM3ZWY4MDBkZjdhLi41MGJlYzc5ZmUzOGFkZjhmM2EwNGY2YjQ2Y2JkMmE1Y2JmY2YyNDZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yMDQsOCArMjA0
LDkgQEAgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlcihWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgRnVuY3Rpb25QYXJhbWV0ZXJzKgogICAgICwgbV9sYXN0SWRlbnRpZmllcigwKQog
ICAgICwgbV9sYXN0RnVuY3Rpb25OYW1lKG51bGxwdHIpCiAgICAgLCBtX3NvdXJjZUVsZW1lbnRz
KDApCisgICAgLCBtX3BhcnNpbmdCdWlsdGluKHN0cmljdG5lc3MgPT0gSlNQYXJzZUJ1aWx0aW4p
CiB7Ci0gICAgbV9sZXhlciA9IGFkb3B0UHRyKG5ldyBMZXhlclR5cGUodm0pKTsKKyAgICBtX2xl
eGVyID0gYWRvcHRQdHIobmV3IExleGVyVHlwZSh2bSwgc3RyaWN0bmVzcykpOwogICAgIG1fYXJl
bmEgPSBtX3ZtLT5wYXJzZXJBcmVuYS5nZXQoKTsKICAgICBtX2xleGVyLT5zZXRDb2RlKHNvdXJj
ZSwgbV9hcmVuYSk7CiAgICAgbV90b2tlbi5tX2xvY2F0aW9uLmxpbmUgPSBzb3VyY2UuZmlyc3RM
aW5lKCk7CkBAIC0yNTYsNiArMjU3LDcgQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUlubmVyKCkKICAgICBJZGVudGlmaWVyU2V0IGNhcHR1cmVkVmFyaWFibGVzOwogICAgIGJvb2wg
bW9kaWZpZWRQYXJhbWV0ZXIgPSBmYWxzZTsKICAgICBzY29wZS0+Z2V0Q2FwdHVyZWRWYXJpYWJs
ZXMoY2FwdHVyZWRWYXJpYWJsZXMsIG1vZGlmaWVkUGFyYW1ldGVyKTsKKyAgICAKICAgICBDb2Rl
RmVhdHVyZXMgZmVhdHVyZXMgPSBjb250ZXh0LmZlYXR1cmVzKCk7CiAgICAgaWYgKHNjb3BlLT5z
dHJpY3RNb2RlKCkpCiAgICAgICAgIGZlYXR1cmVzIHw9IFN0cmljdE1vZGVGZWF0dXJlOwpAQCAt
MjYzLDIxICsyNjUsMzYgQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKCkK
ICAgICAgICAgZmVhdHVyZXMgfD0gU2hhZG93c0FyZ3VtZW50c0ZlYXR1cmU7CiAgICAgaWYgKG1v
ZGlmaWVkUGFyYW1ldGVyKQogICAgICAgICBmZWF0dXJlcyB8PSBNb2RpZmllZFBhcmFtZXRlckZl
YXR1cmU7Ci0KKyAgICAKKyAgICBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiBjbG9zZWRWYXJp
YWJsZXM7CisgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW4pIHsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQoIWNhcHR1cmVkVmFyaWFibGVzLnNpemUoKSk7CisgICAgICAgIElkZW50aWZpZXJTZXQgdXNl
ZFZhcmlhYmxlczsKKyAgICAgICAgc2NvcGUtPmdldFVzZWRWYXJpYWJsZXModXNlZFZhcmlhYmxl
cyk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgdmFyaWFibGUgOiB1c2VkVmFyaWFibGVzKSB7
CisgICAgICAgICAgICBpZiAoc2NvcGUtPmhhc0RlY2xhcmVkVmFyaWFibGUoSWRlbnRpZmllciht
X3ZtLCB2YXJpYWJsZS5nZXQoKSkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBpZiAoc2NvcGUtPmhhc0RlY2xhcmVkUGFyYW1ldGVyKElkZW50
aWZpZXIobV92bSwgdmFyaWFibGUuZ2V0KCkpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIGNsb3NlZFZhcmlhYmxlcy5hcHBlbmQodmFyaWFibGUpOworICAgICAgICB9
CisgICAgfQogICAgIGRpZEZpbmlzaFBhcnNpbmcoc291cmNlRWxlbWVudHMsIGNvbnRleHQudmFy
RGVjbGFyYXRpb25zKCksIGNvbnRleHQuZnVuY0RlY2xhcmF0aW9ucygpLCBmZWF0dXJlcywKLSAg
ICAgICAgY29udGV4dC5udW1Db25zdGFudHMoKSwgY2FwdHVyZWRWYXJpYWJsZXMpOworICAgICAg
ICBjb250ZXh0Lm51bUNvbnN0YW50cygpLCBjYXB0dXJlZFZhcmlhYmxlcywgc3RkOjptb3ZlKGNs
b3NlZFZhcmlhYmxlcykpOwogCiAgICAgcmV0dXJuIHBhcnNlRXJyb3I7CiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+CiB2b2lkIFBhcnNlcjxMZXhlclR5cGU+OjpkaWRGaW5pc2hQ
YXJzaW5nKFNvdXJjZUVsZW1lbnRzKiBzb3VyY2VFbGVtZW50cywgUGFyc2VyQXJlbmFEYXRhPERl
Y2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjaz4qIHZhclN0YWNrLCAKLSAgICBQYXJzZXJBcmVuYURh
dGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KiBmdW5jU3RhY2ssIENvZGVGZWF0
dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRW
YXJzKQorICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFj
az4qIGZ1bmNTdGFjaywgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzLCBJ
ZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcnMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1w
bD4+JiYgY2xvc2VkVmFyaWFibGVzKQogewogICAgIG1fc291cmNlRWxlbWVudHMgPSBzb3VyY2VF
bGVtZW50czsKICAgICBtX3ZhckRlY2xhcmF0aW9ucyA9IHZhclN0YWNrOwogICAgIG1fZnVuY0Rl
Y2xhcmF0aW9ucyA9IGZ1bmNTdGFjazsKICAgICBtX2NhcHR1cmVkVmFyaWFibGVzLnN3YXAoY2Fw
dHVyZWRWYXJzKTsKKyAgICBtX2Nsb3NlZFZhcmlhYmxlcyA9IGNsb3NlZFZhcmlhYmxlczsKICAg
ICBtX2ZlYXR1cmVzID0gZmVhdHVyZXM7CiAgICAgbV9udW1Db25zdGFudHMgPSBudW1Db25zdGFu
dHM7CiB9CkBAIC0yMzQ2LDYgKzIzNjMsMTAgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlw
ZT4gdm9pZCBQYXJzZXI8TGV4ZXJUeXBlPjo6cHJpbnRVbmV4cGVjdGVkVG9rZW5UZXh0KFcKICAg
ICBjYXNlIFJFU0VSVkVEOgogICAgICAgICBvdXQucHJpbnQoIlVuZXhwZWN0ZWQgdXNlIG9mIHJl
c2VydmVkIHdvcmQgJyIsIGdldFRva2VuKCksICInIik7CiAgICAgICAgIHJldHVybjsKKworICAg
IGNhc2UgSU5WQUxJRF9QUklWQVRFX05BTUVfRVJST1JUT0s6CisgICAgICAgIG91dC5wcmludCgi
SW52YWxpZCBwcml2YXRlIG5hbWUgJyIsIGdldFRva2VuKCksICInIik7CisgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIAogICAgIGNhc2UgSURFTlQ6CiAgICAgICAgIG91dC5wcmludCgiVW5l
eHBlY3RlZCBpZGVudGlmaWVyICciLCBnZXRUb2tlbigpLCAiJyIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggYjY5OGVmOTM2OGNiOGM4ZjE5N2NjZDAwMGFjYWE2ZGZi
MTFiYTI0NC4uOTAzMzg1MGM4Yzk3ZjU3ZTIxZGE1ZWVkYjAyZDA0NGY0Yzg5NzhlYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0yMyw2ICsyMyw3IEBACiAjaWZuZGVm
IFBhcnNlcl9oCiAjZGVmaW5lIFBhcnNlcl9oCiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVy
cy5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5o
IgogI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKQEAgLTI1OSw2ICsyNjAsMTAgQEAgc3RydWN0IFNj
b3BlIHsKICAgICAgICAgcmV0dXJuIGlzVmFsaWRTdHJpY3RNb2RlID8gQmluZGluZ1N1Y2NlZWRl
ZCA6IFN0cmljdEJpbmRpbmdGYWlsZWQ7CiAgICAgfQogCisgICAgdm9pZCBnZXRVc2VkVmFyaWFi
bGVzKElkZW50aWZpZXJTZXQmIHVzZWRWYXJpYWJsZXMpCisgICAgeworICAgICAgICB1c2VkVmFy
aWFibGVzLnN3YXAobV91c2VkVmFyaWFibGVzKTsKKyAgICB9CiAKICAgICB2b2lkIHVzZVZhcmlh
YmxlKGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBib29sIGlzRXZhbCkKICAgICB7CkBAIC00MTQs
NiArNDE5LDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFy
c2VyRXJyb3ImKTsKIAogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xp
bmUoKSBjb25zdCB7IHJldHVybiBtX2xleGVyLT5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7
IH0KKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmIGNsb3NlZFZhcmlhYmxl
cygpIHsgcmV0dXJuIHN0ZDo6bW92ZShtX2Nsb3NlZFZhcmlhYmxlcyk7IH0KIAogcHJpdmF0ZToK
ICAgICBzdHJ1Y3QgQWxsb3dJbk92ZXJyaWRlIHsKQEAgLTU0MCw3ICs1NDYsNyBAQCBwcml2YXRl
OgogICAgIFN0cmluZyBwYXJzZUlubmVyKCk7CiAKICAgICB2b2lkIGRpZEZpbmlzaFBhcnNpbmco
U291cmNlRWxlbWVudHMqLCBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OlZhclN0
YWNrPiosIAotICAgICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0
aW9uU3RhY2s+KiwgQ29kZUZlYXR1cmVzLCBpbnQsIElkZW50aWZpZXJTZXQmKTsKKyAgICAgICAg
UGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiosIENvZGVG
ZWF0dXJlcywgaW50LCBJZGVudGlmaWVyU2V0JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJ
bXBsPj4mJik7CiAKICAgICAvLyBVc2VkIHRvIGRldGVybWluZSB0eXBlIG9mIGVycm9yIHRvIHJl
cG9ydC4KICAgICBib29sIGlzRnVuY3Rpb25Cb2R5Tm9kZShTY29wZU5vZGUqKSB7IHJldHVybiBm
YWxzZTsgfQpAQCAtODQwLDkgKzg0NiwxMSBAQCBwcml2YXRlOgogICAgIGNvbnN0IElkZW50aWZp
ZXIqIG1fbGFzdEZ1bmN0aW9uTmFtZTsKICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXJDYWNoZT4g
bV9mdW5jdGlvbkNhY2hlOwogICAgIFNvdXJjZUVsZW1lbnRzKiBtX3NvdXJjZUVsZW1lbnRzOwor
ICAgIGJvb2wgbV9wYXJzaW5nQnVpbHRpbjsKICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRp
b25TdGFja3M6OlZhclN0YWNrPiogbV92YXJEZWNsYXJhdGlvbnM7CiAgICAgUGFyc2VyQXJlbmFE
YXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiogbV9mdW5jRGVjbGFyYXRpb25z
OwogICAgIElkZW50aWZpZXJTZXQgbV9jYXB0dXJlZFZhcmlhYmxlczsKKyAgICBWZWN0b3I8UmVm
UHRyPFN0cmluZ0ltcGw+PiBtX2Nsb3NlZFZhcmlhYmxlczsKICAgICBDb2RlRmVhdHVyZXMgbV9m
ZWF0dXJlczsKICAgICBpbnQgbV9udW1Db25zdGFudHM7CiAgICAgCkBAIC05NTcsNiArOTY1LDEw
IEBAIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gcGFyc2UoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIEZ1bmN0aW9uUGFyYW1ldGVyCiAgICAgICAgIFJlZlB0cjxQYXJzZWROb2RlPiBy
ZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IpOwogICAgICAgICBpZiAocG9z
aXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3RO
ZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKKyAgICAgICAgaWYg
KHN0cmljdG5lc3MgPT0gSlNQYXJzZUJ1aWx0aW4pIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKHJlc3VsdCk7CisgICAgICAgICAgICByZXN1bHQtPnNldENsb3NlZFZhcmlhYmxlcyhzdGQ6
Om1vdmUocGFyc2VyLmNsb3NlZFZhcmlhYmxlcygpKSk7CisgICAgICAgIH0KICAgICAgICAgcmV0
dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiAgICAgfQogICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBh
cnNlcih2bSwgc291cmNlLCBwYXJhbWV0ZXJzLCBuYW1lLCBzdHJpY3RuZXNzLCBwYXJzZXJNb2Rl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAppbmRleCA0ZTlh
MTdjZDIxY2EzNDE0NmJiZDQ4MTU2YTM3MmNkNDA0ZGVmNjBjLi5mN2E3NWJmN2MzNzg1N2U0NGI2
ZDVkNzFmNDUyOWJiMWFjMWNmNWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlck1vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJNb2Rlcy5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1lbnVt
IEpTUGFyc2VyU3RyaWN0bmVzcyB7IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VTdHJpY3QgfTsKK2Vu
dW0gSlNQYXJzZXJTdHJpY3RuZXNzIHsgSlNQYXJzZU5vcm1hbCwgSlNQYXJzZUJ1aWx0aW4sIEpT
UGFyc2VTdHJpY3QgfTsKIGVudW0gSlNQYXJzZXJNb2RlIHsgSlNQYXJzZVByb2dyYW1Db2RlLCBK
U1BhcnNlRnVuY3Rpb25Db2RlIH07CiAKIGVudW0gUHJvZmlsZXJNb2RlIHsgUHJvZmlsZXJPZmYs
IFByb2ZpbGVyT24gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyVG9rZW5zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vu
cy5oCmluZGV4IDgyYTI2NjM5YTc5MjIwYTA4NDQ1NmI0OGYzMjg1MmQxNDNjNzM5ZDAuLjhjODdh
ZDlmYWRiZGM0YWYzOWFjOTlkYjJkODQ0NWUxM2ZmZmQzNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaApAQCAtMTQ5LDYgKzE0OSw3IEBAIGVudW0gSlNU
b2tlblR5cGUgewogICAgIElOVkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LID0gNyB8IEVy
cm9yVG9rZW5GbGFnLAogICAgIFVOVEVSTUlOQVRFRF9TVFJJTkdfTElURVJBTF9FUlJPUlRPSyA9
IDggfCBFcnJvclRva2VuRmxhZyB8IFVudGVybWluYXRlZEVycm9yVG9rZW5GbGFnLAogICAgIElO
VkFMSURfU1RSSU5HX0xJVEVSQUxfRVJST1JUT0sgPSA5IHwgRXJyb3JUb2tlbkZsYWcsCisgICAg
SU5WQUxJRF9QUklWQVRFX05BTUVfRVJST1JUT0sgPSAxMCB8IEVycm9yVG9rZW5GbGFnCiB9Owog
CiBzdHJ1Y3QgSlNUZXh0UG9zaXRpb24gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cmd1bWVudHMuaAppbmRleCAxOGYzODkxNzEzODUyMzYyYzdhNzVhMzA1M2I0NjMxNDE3YmViODFi
Li5mMTZmZDNkZTQwNTU5NzBiYTlkOWM2ZjBhZTYzMThmMjIwNGI2NTRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaApAQCAtMjUsNiArMjUsNyBAQAogI2RlZmlu
ZSBBcmd1bWVudHNfaAogCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgorI2luY2x1ZGUgIkNvbW1v
bklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNE
ZXN0cnVjdGlibGVPYmplY3QuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclBy
b3RvdHlwZS5jcHAKaW5kZXggZGQwODk0ZjE0YTAyMWQ1ZjEyNjU4YWNiMDFlNzIxZmNkNmQzNDhj
Yy4uNWI0YWU4NzE2YjA1NTNiZTQ2MjM5NTVlOTllMWI0M2ViZjE4ZmUyYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9y
UHJvdG90eXBlLmNwcApAQCAtMjYsNyArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmgiCiAKKyNpbmNsdWRlICJDb21tb25J
ZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkpTQXJndW1lbnRzSXRlcmF0b3IuaCIKKyNpbmNsdWRl
ICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IDI3YWM2ZDQ4
YTcxZjc5NTUwMmExMGNlYTY0Nzg2NTQxMzVhNDYzYTAuLjZkYzdiZTU2OTY5ZGU2N2Y2MjEwN2Ji
M2E1MWEzMDhmYTNiYTc2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKSVQuaCIK
ICNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1N0cmluZ0J1aWxkZXIu
aCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJKU1N0cmluZ0pvaW5l
ci5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgpA
QCAtNTYsNyArNTcsNiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJh
eVByb3RvRnVuY1NsaWNlKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTb3J0KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTcGxpY2UoRXhlY1N0YXRlKik7CiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1VuU2hpZnQo
RXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVBy
b3RvRnVuY0V2ZXJ5KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b0Z1bmNGb3JFYWNoKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTb21lKEV4ZWNTdGF0ZSopOwogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNJbmRleE9mKEV4
ZWNTdGF0ZSopOwpAQCAtOTU0LDY5ICs5NTQsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGFycmF5UHJvdG9GdW5jTWFwKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdEFycmF5KTsKIH0KIAotLy8gRG9jdW1lbnRhdGlvbiBmb3IgdGhlc2Ug
dGhyZWUgaXMgYXZhaWxhYmxlIGF0OgotLy8gaHR0cDovL2RldmVsb3Blci10ZXN0Lm1vemlsbGEu
b3JnL2VuL2RvY3MvQ29yZV9KYXZhU2NyaXB0XzEuNV9SZWZlcmVuY2U6T2JqZWN0czpBcnJheTpl
dmVyeQotLy8gaHR0cDovL2RldmVsb3Blci10ZXN0Lm1vemlsbGEub3JnL2VuL2RvY3MvQ29yZV9K
YXZhU2NyaXB0XzEuNV9SZWZlcmVuY2U6T2JqZWN0czpBcnJheTpmb3JFYWNoCi0vLyBodHRwOi8v
ZGV2ZWxvcGVyLXRlc3QubW96aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0phdmFTY3JpcHRfMS41X1Jl
ZmVyZW5jZTpPYmplY3RzOkFycmF5OnNvbWUKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvRnVuY0V2ZXJ5KEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBKU09iamVjdCog
dGhpc09iaiA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSku
dG9PYmplY3QoZXhlYyk7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpc09iai0+Z2V0KGV4ZWMs
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpLnRvVUludDMyKGV4ZWMpOwotICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKLQotICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBleGVjLT5hcmd1bWVudCgwKTsK
LSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxE
YXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9u
ZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0KLSAgICBKU1ZhbHVl
IGFwcGx5VGhpcyA9IGV4ZWMtPmFyZ3VtZW50KDEpOwotCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBq
c0Jvb2xlYW4odHJ1ZSk7Ci0KLSAgICB1bnNpZ25lZCBrID0gMDsKLSAgICBpZiAoY2FsbFR5cGUg
PT0gQ2FsbFR5cGVKUyAmJiBpc0pTQXJyYXkodGhpc09iaikpIHsKLSAgICAgICAgSlNGdW5jdGlv
biogZiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZnVuY3Rpb24pOwotICAgICAgICBKU0FycmF5KiBh
cnJheSA9IGFzQXJyYXkodGhpc09iaik7Ci0gICAgICAgIENhY2hlZENhbGwgY2FjaGVkQ2FsbChl
eGVjLCBmLCAzKTsKLSAgICAgICAgZm9yICg7IGsgPCBsZW5ndGggJiYgIWV4ZWMtPmhhZEV4Y2Vw
dGlvbigpOyArK2spIHsKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWSghYXJyYXktPmNhbkdldElu
ZGV4UXVpY2tseShrKSkpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIGNhY2hlZENhbGwuc2V0VGhpcyhhcHBseVRoaXMpOwotICAgICAgICAgICAgY2Fj
aGVkQ2FsbC5zZXRBcmd1bWVudCgwLCBhcnJheS0+Z2V0SW5kZXhRdWlja2x5KGspKTsKLSAgICAg
ICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoMSwganNOdW1iZXIoaykpOwotICAgICAgICAg
ICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudCgyLCB0aGlzT2JqKTsKLSAgICAgICAgICAgIEpTVmFs
dWUgcmVzdWx0ID0gY2FjaGVkQ2FsbC5jYWxsKCk7Ci0gICAgICAgICAgICBpZiAoIXJlc3VsdC50
b0Jvb2xlYW4oZXhlYykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4oZmFsc2UpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBmb3IgKDsgayA8IGxlbmd0
aCAmJiAhZXhlYy0+aGFkRXhjZXB0aW9uKCk7ICsraykgewotICAgICAgICBQcm9wZXJ0eVNsb3Qg
c2xvdCh0aGlzT2JqKTsKLSAgICAgICAgaWYgKCF0aGlzT2JqLT5nZXRQcm9wZXJ0eVNsb3QoZXhl
Yywgaywgc2xvdCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBNYXJrZWRBcmd1
bWVudEJ1ZmZlciBlYWNoQXJndW1lbnRzOwotICAgICAgICBlYWNoQXJndW1lbnRzLmFwcGVuZChz
bG90LmdldFZhbHVlKGV4ZWMsIGspKTsKLSAgICAgICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQoanNO
dW1iZXIoaykpOwotICAgICAgICBlYWNoQXJndW1lbnRzLmFwcGVuZCh0aGlzT2JqKTsKLQotICAg
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCi0gICAgICAgIGJvb2wgcHJlZGljYXRlUmVzdWx0
ID0gY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBhcHBseVRoaXMsIGVh
Y2hBcmd1bWVudHMpLnRvQm9vbGVhbihleGVjKTsKLSAgICAgICAgaWYgKCFwcmVkaWNhdGVSZXN1
bHQpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGpzQm9vbGVhbihmYWxzZSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKLX0KLQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y0ZvckVhY2goRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhl
Yy0+aG9zdFRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVj
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IDUx
MGUzODNmYWU1NzVhYWRhODE3NmMwNDQxZWU3MjViNDNhNGM3MzIuLmQzMDQ4NzdmZTljZGUxYzA5
MTlmZDQ1OTVmODExZWNhYmNlNzcyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29kZUNhY2hlLmNwcApAQCAtMTQ0LDI0ICsxNDQsMjYgQEAgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIENvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUo
Vk0mIHYKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lOwogICAg
IFJlZlB0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9IHBhcnNlPFByb2dyYW1Ob2RlPigmdm0sIHNv
dXJjZSwgMCwgSWRlbnRpZmllcigpLCBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlUHJvZ3JhbUNvZGUs
IGVycm9yLCAmcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CiAgICAgaWYgKCFwcm9ncmFtKSB7
Ci0gICAgICAgIEFTU0VSVChlcnJvci5tX3R5cGUgIT0gUGFyc2VyRXJyb3I6OkVycm9yTm9uZSk7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVycm9yLm1fdHlwZSAhPSBQYXJzZXJFcnJvcjo6RXJy
b3JOb25lKTsKICAgICAgICAgbV9zb3VyY2VDb2RlLnJlbW92ZShhZGRSZXN1bHQuaXRlcmF0b3Ip
OwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGFzc3Vt
ZXMgYW4gaW5wdXQgc3RyaW5nIHRoYXQgd291bGQgcmVzdWx0IGluIGEgc2luZ2xlIGFub255bW91
cyBmdW5jdGlvbiBleHByZXNzaW9uLgogICAgIFN0YXRlbWVudE5vZGUqIGV4cHJTdGF0ZW1lbnQg
PSBwcm9ncmFtLT5zaW5nbGVTdGF0ZW1lbnQoKTsKLSAgICBBU1NFUlQoZXhwclN0YXRlbWVudCk7
Ci0gICAgQVNTRVJUKGV4cHJTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKKyAgICBSRUxF
QVNFX0FTU0VSVChleHByU3RhdGVtZW50KTsKKyAgICBSRUxFQVNFX0FTU0VSVChleHByU3RhdGVt
ZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CiAgICAgRXhwcmVzc2lvbk5vZGUqIGZ1bmNFeHByID0g
c3RhdGljX2Nhc3Q8RXhwclN0YXRlbWVudE5vZGUqPihleHByU3RhdGVtZW50KS0+ZXhwcigpOwot
ICAgIEFTU0VSVChmdW5jRXhwcik7CisgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHIpOwogICAg
IFJFTEVBU0VfQVNTRVJUKGZ1bmNFeHByLT5pc0Z1bmNFeHByTm9kZSgpKTsKICAgICBGdW5jdGlv
bkJvZHlOb2RlKiBib2R5ID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZnVuY0V4cHIpLT5i
b2R5KCk7CisgICAgUkVMRUFTRV9BU1NFUlQoIXByb2dyYW0tPmhhc0NhcHR1cmVkVmFyaWFibGVz
KCkpOworICAgIAogICAgIGJvZHktPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmUpOwotICAgIEFTU0VSVChib2R5KTsKLSAgICBBU1NFUlQoYm9keS0+aWRlbnQoKS5pc051
bGwoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9k
eS0+aWRlbnQoKS5pc051bGwoKSk7CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgm
dm0sIHNvdXJjZSwgYm9keSwgdHJ1ZSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUo
JnZtLCBzb3VyY2UsIGJvZHksIHRydWUsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24pOwogICAgIGZ1
bmN0aW9uRXhlY3V0YWJsZS0+bV9uYW1lVmFsdWUuc2V0KHZtLCBmdW5jdGlvbkV4ZWN1dGFibGUs
IGpzU3RyaW5nKCZ2bSwgbmFtZS5zdHJpbmcoKSkpOwogCiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9IFNvdXJjZUNvZGVWYWx1ZSh2bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBtX3NvdXJj
ZUNvZGUuYWdlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuY3BwCmluZGV4IDNmNWM2NDVjMDk4ZDUyN2ZjMGM3MjU5ZTk0NDdlZmJl
ODg2OGEyOWMuLjJmYzJiNzI3YWZjZWVlMWVjMmM2MjVkZTU2NzViM2JlMWNmNjBkNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5j
cHAKQEAgLTI3LDcgKzI3LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAjZGVmaW5lIElOSVRJQUxJ
WkVfUFJPUEVSVFlfTkFNRShuYW1lKSAsIG5hbWUodm0sICNuYW1lKQogI2RlZmluZSBJTklUSUFM
SVpFX0tFWVdPUkQobmFtZSkgLCBuYW1lIyNLZXl3b3JkKHZtLCAjbmFtZSkKLSNkZWZpbmUgSU5J
VElBTElaRV9QUklWQVRFX05BTUUobmFtZSkgLCBuYW1lIyNQcml2YXRlTmFtZShJZGVudGlmaWVy
Ojpmcm9tKFByaXZhdGVOYW1lKCkpKQorI2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFNRShu
YW1lKSBcCisgICAgLCBuYW1lIyNQcml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tKFByaXZhdGVO
YW1lKCkpKSBcCisgICAgLCBtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpcihuYW1lLCBuYW1lIyNQ
cml2YXRlTmFtZSkgXAorCiAKIENvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyhW
TSogdm0pCiAgICAgOiBudWxsSWRlbnRpZmllcigpCkBAIC0zOCw4ICs0MSwyNiBAQCBDb21tb25J
ZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMoVk0qIHZtKQogICAgICwgaGFzTmV4dElkZW50
aWZpZXIodm0sICJoYXNOZXh0IikKICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZ
V09SRChJTklUSUFMSVpFX0tFWVdPUkQpCiAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNI
X1BST1BFUlRZX05BTUUoSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKQorICAgIEpTQ19GT1JFQUNI
X0JVSUxUSU5fRlVOQ1RJT05fTkFNRShJTklUSUFMSVpFX1BST1BFUlRZX05BTUUpCiAgICAgSlND
X0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpF
X1BSSVZBVEVfTkFNRSkKIHsKIH0KIAorY29uc3QgSWRlbnRpZmllciogQ29tbW9uSWRlbnRpZmll
cnM6OmdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAoreworI2Rl
ZmluZSBSRVRVUk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMobmFtZSkgaWYgKG1fIyNuYW1lIyNQ
dWJsaWNTdHJpbmdQYWlyLmZpcnN0ID09IGlkZW50KSByZXR1cm4gJm1fIyNuYW1lIyNQdWJsaWNT
dHJpbmdQYWlyLnNlY29uZDsKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFD
SF9QUk9QRVJUWV9OQU1FKFJFVFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hFUykKKyN1bmRlZiBS
RVRVUk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMKKyAgICByZXR1cm4gMDsKK30KKworSWRlbnRp
ZmllciBDb21tb25JZGVudGlmaWVyczo6Z2V0UHVibGljTmFtZShjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCkgY29uc3QKK3sKKyNkZWZpbmUgUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKG5h
bWUpIGlmIChtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpci5zZWNvbmQgPT0gaWRlbnQpIHJldHVy
biBtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpci5maXJzdDsKKyAgICBKU0NfQ09NTU9OX1BSSVZB
VEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKFJFVFVSTl9JRl9QUklWQVRFX05BTUVf
TUFUQ0hFUykKKyN1bmRlZiBSRVRVUk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMKKyAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBlbXB0eUlkZW50aWZpZXI7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggZThmOWVkODJiYzc5NDYyMDM4MjY2YjMwMjA3
ODIyNDdiMWZhMjdhMy4uOTI0ZDM2YWM2OTEzNTAzNTdjYjM4MmIxZWYzYjQwYTBhMDhjMGFiYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oCkBAIC0yMiw2ICsyMiw3IEBACiAjZGVmaW5lIENvbW1vbklkZW50aWZpZXJzX2gKIAogI2lu
Y2x1ZGUgIklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgogCiAvLyBNYXJrZWRBcmd1bWVudEJ1ZmZlciBvZiBwcm9wZXJ0
eSBuYW1lcywgcGFzc2VkIHRvIGEgbWFjcm8gc28gd2UgY2FuIGRvIHNldCB0aGVtIHVwIHZhcmlv
dXMKQEAgLTEzMyw4ICsxMzQsMTAgQEAKICAgICBtYWNybyhvc3JFeGl0cykgXAogICAgIG1hY3Jv
KHBhcnNlKSBcCiAgICAgbWFjcm8ocHJvZmlsZWRCeXRlY29kZXMpIFwKKyAgICBtYWNybyhwcm9t
aXNlKSBcCiAgICAgbWFjcm8ocHJvcGVydHlJc0VudW1lcmFibGUpIFwKICAgICBtYWNybyhwcm90
b3R5cGUpIFwKKyAgICBtYWNybyhyZXNvbHZlKSBcCiAgICAgbWFjcm8oc2V0KSBcCiAgICAgbWFj
cm8oc2l6ZSkgXAogICAgIG1hY3JvKHNsaWNlKSBcCkBAIC0xNTUsNyArMTU4LDE0IEBACiAgICAg
bWFjcm8odmFsdWVzKSBcCiAgICAgbWFjcm8odmFsdWVPZikgXAogICAgIG1hY3JvKHdpbmRvdykg
XAotICAgIG1hY3JvKHdyaXRhYmxlKQorICAgIG1hY3JvKHdyaXRhYmxlKSBcCisgICAgbWFjcm8o
aXRlcmF0b3IpIFwKKyAgICBtYWNybyhpdGVyYXRvck5leHQpIFwKKyAgICBtYWNybyhyZWplY3Qp
IFwKKyAgICBtYWNybyhmdWxmaWxsbWVudEhhbmRsZXIpIFwKKyAgICBtYWNybyhyZWplY3Rpb25I
YW5kbGVyKSBcCisgICAgbWFjcm8oZGVmZXJyZWQpIFwKKyAgICBtYWNybyhjb3VudGRvd25Ib2xk
ZXIpIFwKIAogI2RlZmluZSBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZV09SRChtYWNy
bykgXAogICAgIG1hY3JvKGJyZWFrKSBcCkBAIC0yMDMsNyArMjEzLDcgQEAKICAgICBtYWNybyh2
b2lkKSBcCiAgICAgbWFjcm8od2hpbGUpIFwKICAgICBtYWNybyh3aXRoKSBcCi0gICAgbWFjcm8o
eWllbGQpCisgICAgbWFjcm8oeWllbGQpIFwKIAogI2RlZmluZSBKU0NfQ09NTU9OX1BSSVZBVEVf
SURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKG1hY3JvKSBcCiAgICAgbWFjcm8oaXRlcmF0
b3IpIFwKQEAgLTIxNiw3ICsyMjYsMTIgQEAKICAgICBtYWNybyhpbmRleCkgXAogICAgIG1hY3Jv
KHZhbHVlcykgXAogICAgIG1hY3JvKGRlZmVycmVkKSBcCi0gICAgbWFjcm8oY291bnRkb3duSG9s
ZGVyKQorICAgIG1hY3JvKGNvdW50ZG93bkhvbGRlcikgXAorICAgIG1hY3JvKE9iamVjdCkgXAor
ICAgIG1hY3JvKFR5cGVFcnJvcikgXAorICAgIG1hY3JvKHVuZGVmaW5lZEtleXdvcmQpIFwKKyAg
ICBtYWNybyhjYWxsKSBcCisgICAgbWFjcm8oYXBwbHkpCiAKIG5hbWVzcGFjZSBKU0MgewogCkBA
IC0yNDAsMTEgKzI1NSwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjZGVmaW5lIEpT
Q19JREVOVElGSUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwobmFtZSkgY29uc3QgSWRl
bnRpZmllciBuYW1lOwogICAgICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVS
VFlfTkFNRShKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFMKQorICAg
ICAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoSlNDX0lERU5USUZJRVJfREVD
TEFSRV9QUk9QRVJUWV9OQU1FX0dMT0JBTCkKICN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJF
X1BST1BFUlRZX05BTUVfR0xPQkFMCiAKLSNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9Q
UklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSMj
UHJpdmF0ZU5hbWU7CisjZGVmaW5lIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9Q
RVJUWV9OQU1FX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWUjI1ByaXZhdGVOYW1l
OyBjb25zdCBzdGQ6OnBhaXI8SWRlbnRpZmllciwgSWRlbnRpZmllcj4gbV8jI25hbWUjI1B1Ymxp
Y1N0cmluZ1BhaXI7CiAgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNI
X1BST1BFUlRZX05BTUUoSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05B
TUVfR0xPQkFMKQogI3VuZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJU
WV9OQU1FX0dMT0JBTAorICAgICAgICAKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciogZ2V0UHJp
dmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OworICAgICAgICBJZGVudGlmaWVyIGdl
dFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogICAgIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKaW5kZXggMDc1ODc1ZmIyMzE2YTU1NTcwNTBhNjY5MGNkMGY5ODgyNDg0ZjVm
My4uNWFmOTA4NzU0ZTc0N2Y4Y2FlMGNkMDRhZjhkNDkxNTAwNDY4YzJhNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC00MSw3
ICs0MSw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNs
dWRlICJKU0FjdGl2YXRpb24uaCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAi
SlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5o
IgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcAppbmRleCA1NTMzNGJlMmY5ODBhOThmN2ZlYTQy
YTA1YmUwZjIwYzAxOWZmMGRkLi5mYTU3YzAyNjg1ZTUzZDUyNTI4ODA1N2UyMTFkOThiMTA5ODFk
NzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHNFeGNlcHRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcApAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUg
IkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkpJVEV4Y2Vw
dGlvbnMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVu
Y3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKIAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBDb21tb25TbG93UGF0aHMgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCAwNWUxMWUwYjgwYTM0MzBh
ZWFiMjJiMDIyMmEyMTJmNGE4ZTJjNDliLi4zNjRjYzcxNjY2MDhiNTAwN2Q0NzdkODczOTE4YTVk
NjRiMTY4NjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb25IZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb25IZWxwZXJzLmNwcApAQCAtODEsNiArODEsMTEgQEAgSlNPYmplY3QqIGNyZWF0ZVN0YWNr
T3ZlcmZsb3dFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiBKU09iamVjdCog
Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50KQogeworICAgIAorICAgIGlmIChpZGVudC5pbXBsKCktPmlzRW1wdHlVbmlx
dWUoKSkgeworICAgICAgICBTdHJpbmcgbWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBmaW5kIHBy
aXZhdGUgdmFyaWFibGU6IEAiLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2V0UHVibGljTmFtZShp
ZGVudCkuc3RyaW5nKCkpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4
ZWMsIG1lc3NhZ2UpOworICAgIH0KICAgICBTdHJpbmcgbWVzc2FnZShtYWtlU3RyaW5nKCJDYW4n
dCBmaW5kIHZhcmlhYmxlOiAiLCBpZGVudC5zdHJpbmcoKSkpOwogICAgIHJldHVybiBjcmVhdGVS
ZWZlcmVuY2VFcnJvcihleGVjLCBtZXNzYWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCAxOTg5NzZiYjNmZTZlNmU5MTE3OTgxMmQxY2FmOWI4
YmY5YmZkMGJiLi44ZDU5MGVmMGZmYzBlYjkwYWM4ZjlhODFkOWJjMjU3MjFjZDM1YzkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC00ODQsNyArNDg0
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckNvZGUoKTsKIAotICAgIEV4ZWN1dGFibGVJ
bmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNB
Y3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSk7IH0KKyAgICBF
eGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJ
bmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2Us
IGZhbHNlKTsgfQogCiAgICAgdW5zaWduZWQgbnVtVmFyaWFibGVzKCkgeyByZXR1cm4gbV91bmxp
bmtlZEV2YWxDb2RlQmxvY2stPm51bVZhcmlhYmxlcygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVy
T2ZGdW5jdGlvbkRlY2xzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bWJl
ck9mRnVuY3Rpb25EZWNscygpOyB9CkBAIC01NDAsNyArNTQwLDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBjbGVhckNvZGUoKTsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkg
Y29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFs
KCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRh
YmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigp
LCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlKTsgfQogCiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwpAQCAtNjI4LDcgKzYyOCw4IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBiYXNlbGluZUNvZGVCbG9ja0ZvcihraW5k
KTsKICAgICB9Ci0gICAgICAgIAorCisgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpOyB9CiAg
ICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxl
LT5uYW1lKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBpbmZlcnJlZE5hbWUoKSB7IHJldHVy
biBtX3VubGlua2VkRXhlY3V0YWJsZS0+aW5mZXJyZWROYW1lKCk7IH0KICAgICBKU1N0cmluZyog
bmFtZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWVWYWx1
ZSgpOyB9CkBAIC02NzUsMTQgKzY3Niw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2JvZHlJbmNs
dWRlc0JyYWNlczsKIH07CiAKLWlubGluZSBib29sIGlzSG9zdEZ1bmN0aW9uKEpTVmFsdWUgdmFs
dWUsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uKQotewotICAgIEpTRnVuY3Rpb24qIGZ1
bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihnZXRKU0Z1bmN0aW9uKHZhbHVlKSk7Ci0gICAg
aWYgKCFmdW5jdGlvbiB8fCAhZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICByZXR1cm4gZnVuY3Rpb24tPm5hdGl2ZUZ1bmN0aW9uKCkgPT0gbmF0
aXZlRnVuY3Rpb247Ci19Ci0KIGlubGluZSB2b2lkIEV4ZWN1dGFibGVCYXNlOjpjbGVhckNvZGVW
aXJ0dWFsKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKQogewogICAgIHN3aXRjaCAoZXhlY3V0
YWJsZS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKaW5kZXggYzFiMDhh
ZjJkODE4ZGFlNTdlMWIwMGZkYTE3M2E4MTYxMzc1MjliNS4uMTI0OTBjNDBmMzM0MTdlY2E5MjM4
NTBhMGRjNjYyZGJiY2Q0MGYzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcApAQCAtMjIsMTIgKzIyLDEzIEBACiAjaW5jbHVk
ZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1
ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQm91
bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1N0cmlu
Zy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5oIgotI2luY2x1ZGUgIkludGVycHJldGVy
LmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTGV4ZXIuaCIKICNp
bmNsdWRlICJPcGVyYXRpb25zLmgiCiAKQEAgLTEwOCw3ICsxMDksNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVj
KQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlm
ICh0aGlzVmFsdWUuaW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkgewogICAgICAgICBKU0Z1
bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4odGhpc1ZhbHVlKTsKLSAgICAg
ICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpKQorICAgICAgICBpZiAoZnVuY3Rpb24t
PmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgImZ1bmN0aW9uICIsIGZ1bmN0aW9u
LT5uYW1lKGV4ZWMpLCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iKSk7CiAgICAgICAgIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKTsK
ICAgICAgICAgU3RyaW5nIHNvdXJjZVN0cmluZyA9IGV4ZWN1dGFibGUtPnNvdXJjZSgpLnRvU3Ry
aW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2
YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNw
cAppbmRleCA3MmVkMWM3MTI0MDYxMTY4YjBhZGRkMzExNmY3NTVhMTE3YjhmYjkwLi5iMzc0OTQz
MDk5ZTIxNTVhMzk3NzEzMzEzNDcwMmMyYTI0YWNjODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBK
U0FjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKIAogaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZUdldChQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgU3ltYm9sVGFi
bGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVi
bGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+
aW5saW5lR2V0KHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGVudHJ5LmlzTnVsbCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTcyLDcgKzcyLDcgQEAgaW5saW5lIGJvb2wgSlNB
Y3RpdmF0aW9uOjpzeW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QKIAogaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZUdldChQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7
Ci0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChw
cm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0g
c3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGVu
dHJ5LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTg5LDcgKzg5LDcgQEAg
aW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dChFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU4KICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEFT
U0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVh
cCh0aGlzKSk7CiAgICAgCi0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxl
KCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJs
ZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS51aWQo
KSk7CiAgICAgaWYgKGVudHJ5LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aWYgKGVudHJ5LmlzUmVhZE9ubHkoKSkgewpAQCAtMTM2LDcgKzEzNiw3IEBAIGlubGluZSBib29s
IEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyhWTSYgdm0sIFByb3Bl
cnR5TmFtZSBwcm9wCiAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogcmVnOwogICAgIHsK
ICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUoKS0+bV9sb2Nr
KTsKLSAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxl
KCktPmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICAgICAgU3lt
Ym9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlKCktPmZpbmQobG9ja2Vy
LCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZSgp
LT5lbmQobG9ja2VyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgU3ltYm9s
VGFibGVFbnRyeSYgZW50cnkgPSBpdGVyLT52YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5jcHAKaW5kZXggMmZjZjg4MTVj
MDU2ODA1ODEyYTc5OTFhNWZmMDYzZDY4NzM5NzE2NC4uOWE5MjU4M2FhMGVjOTBkYmIzMjhlY2Q1
MGRjMzEzOWFlZjAyNzNiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcmd1bWVudHNJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRl
ICJKU0FyZ3VtZW50c0l0ZXJhdG9yLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNpbmNs
dWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCA5MDA3YjVmN2QzZjEwM2IxZDIx
YjFhMzY1YTI2YzIxNWMzMmI0ZDI4Li5iYTBhMmQzOGU5YzUzZTE1OTM3ZDQ2YTg5NTFhOGM4YzQ1
MDc5MjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAt
MzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJHZXR0ZXJT
ZXR0ZXIuaCIKICNpbmNsdWRlICJJbmRleGluZ0hlYWRlcklubGluZXMuaCIKKyNpbmNsdWRlICJK
U1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1
ZGUgIlJlamVjdC5oIgogI2luY2x1ZGUgPHd0Zi9BVkxUcmVlLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcAppbmRleCBkNTA2YzRlYmQy
NjIwZWZkNzA3OTNhODczZDA4NTJmYmQ5NzgyODU5Li5jZjM3MDk3ZWMwYzY5MjVhODY3YjhjMDEw
YzBlZmM0MDc0NDg1ZjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlJdGVyYXRvci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkpTQ0pT
VmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpT
U3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5j
cHAKaW5kZXggY2NhNjg4OGJmOThhMDI4NjQ2Y2EzZGRkZjM3NjI3Y2UwZTdkOTMwMi4uMzM5YTdh
YjdmNTk1MTVlOTZhZmI3ZWM0Yjg3NDFlN2FhOGUxNjZmOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAgLTMyLDcgKzMyLDkgQEAKICNpbmNsdWRl
ICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJK
U05vdEFuT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
TnVtYmVyT2JqZWN0LmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9N
YXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKaW5kZXggZjdjODQ0NjQ1MDky
YjI1MDgwNWU2ZThkNDgzMmM5OThiZGI4OWI1NC4uZDc5NWRkNTZhOTdkZGI1OTdjMDkwZmMyZTBi
N2YzMDhlMzNlYmNhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bElubGluZXMuaApAQCAtMjcsOCArMjcsMTAgQEAKICNkZWZpbmUgSlNDZWxsSW5saW5lc19oCiAK
ICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgog
I2luY2x1ZGUgIkRlZmVyR0MuaCIKICNpbmNsdWRlICJIYW5kbGUuaCIKKyNpbmNsdWRlICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggMjQxOTY0NjEwYmI0NDI3YjE4NjM3MzM0NmUyNGY1YTgy
ZDBjZGNjNC4uYWNlNmMxNDdlNDk3ZmVlMjAyOTJmYjU1Mzk3NjBkNWQ2OTgyOWNlOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTM0LDcgKzM0
LDggQEAKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdldHRlclNl
dHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKLSNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24u
aCIgCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklu
bGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTm90QW5P
YmplY3QuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtMTA5LDYgKzExMCwxNCBAQCB2
b2lkIEpTRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgTmF0aXZlRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSwgaW50IGxlbmd0aAogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250
RW51bSk7CiB9CiAKK0pTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlv
bihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKK3sKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNyZWF0ZSh2bSwg
ZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBmdW5jdGlvbi0+cHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZygmdm0sIGV4ZWN1dGFibGUtPm5hbWUoKS5z
dHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBmdW5jdGlv
bi0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKGV4ZWN1
dGFibGUtPnBhcmFtZXRlckNvdW50KCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51
bSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uOworfQorCiBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSog
SlNGdW5jdGlvbjo6Y3JlYXRlQWxsb2NhdGlvblByb2ZpbGUoRXhlY1N0YXRlKiBleGVjLCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHkpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTE0Miw3
ICsxNTEsNyBAQCBjb25zdCBTdHJpbmcgSlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1l
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIGV4cGxpY2l0TmFtZTsKICAgICAKICAg
ICBjb25zdCBTdHJpbmcgYWN0dWFsTmFtZSA9IG5hbWUoZXhlYyk7Ci0gICAgaWYgKCFhY3R1YWxO
YW1lLmlzRW1wdHkoKSB8fCBpc0hvc3RGdW5jdGlvbigpKQorICAgIGlmICghYWN0dWFsTmFtZS5p
c0VtcHR5KCkgfHwgaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIGFj
dHVhbE5hbWU7CiAgICAgCiAgICAgcmV0dXJuIGpzRXhlY3V0YWJsZSgpLT5pbmZlcnJlZE5hbWUo
KS5zdHJpbmcoKTsKQEAgLTE1MCwxMCArMTU5LDIwIEBAIGNvbnN0IFN0cmluZyBKU0Z1bmN0aW9u
OjpjYWxjdWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQogCiBjb25zdCBTb3VyY2VD
b2RlKiBKU0Z1bmN0aW9uOjpzb3VyY2VDb2RlKCkgY29uc3QKIHsKLSAgICBpZiAoaXNIb3N0RnVu
Y3Rpb24oKSkKKyAgICBpZiAoaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgcmV0dXJuICZqc0V4ZWN1dGFibGUoKS0+c291cmNlKCk7CiB9CisgICAgCiti
b29sIEpTRnVuY3Rpb246OmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gaXNIb3N0RnVuY3Rpb24oKSB8fCBpc0J1aWx0aW5GdW5jdGlvbigpOworfQorCitib29s
IEpTRnVuY3Rpb246OmlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWlz
SG9zdEZ1bmN0aW9uKCkgJiYganNFeGVjdXRhYmxlKCktPmlzQnVpbHRpbkZ1bmN0aW9uKCk7Cit9
CiAKIHZvaWQgSlNGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogewpAQCAtMjc3LDcgKzI5Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTRnVu
Y3Rpb246OmNhbGxlckdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHNsb3RC
YXNlCiAgICAgaWYgKCFjYWxsZXIuaXNPYmplY3QoKSB8fCAhYXNPYmplY3QoY2FsbGVyKS0+aW5o
ZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjYWxsZXIpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24q
PihjYWxsZXIpOwotICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSB8fCAhZnVuY3Rp
b24tPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkKKyAgICBpZiAoZnVuY3Rpb24tPmlz
SG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgfHwgIWZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKS0+aXNT
dHJpY3RNb2RlKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbGVyKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiRnVuY3Rpb24uY2FsbGVyIHVzZWQgdG8gcmV0cmlldmUgc3RyaWN0IGNhbGxlciIpKSk7CiB9
CkBAIC0yOTksNyArMzE4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNGdW5jdGlvbjo6bmFtZUdldHRl
cihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBzbG90QmFzZSwgRW5jb2QKIGJvb2wgSlNGdW5j
dGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdCk7Ci0g
ICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgaWYgKHRoaXNPYmplY3Qt
PmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBCYXNlOjpnZXRPd25Q
cm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIAogICAg
IGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSkgewpA
QCAtMzYxLDcgKzM4MCw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiB2b2lkIEpTRnVuY3Rp
b246OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1v
ZGUgbW9kZSkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rp
b24qPihvYmplY3QpOwotICAgIGlmICghdGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSAmJiAo
bW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgeworICAgIGlmICghdGhpc09iamVj
dC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSAmJiAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKSkgewogICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90eXBlIGhhcyBiZWVuIHJl
aWZpZWQuCiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QpOwogICAgICAgICB0
aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwg
ZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgc2xvdCk7CkBAIC0zNzcsNyAr
Mzk2LDcgQEAgdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLAogdm9pZCBKU0Z1bmN0aW9uOjpwdXQoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1bmN0aW9uKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKLSAgICBpZiAodGhpc09iamVj
dC0+aXNIb3N0RnVuY3Rpb24oKSkgeworICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0
aW5GdW5jdGlvbigpKSB7CiAgICAgICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQyNSw3
ICs0NDQsNyBAQCBib29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcAogYm9vbCBKU0Z1bmN0aW9uOjpkZWZp
bmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwg
Ym9vbCB0aHJvd0V4Y2VwdGlvbikKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RGdW5j
dGlvbigpKQorICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQog
ICAgICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKTsKIAogICAgIGlmIChwcm9wZXJ0
eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDdjZDE0YjhjMmQ4MDBmNjFiZGMx
MmVkZDJkZjA0ZDM1ZmEwNjE5YjYuLjliNThiNzQ3Y2UxZjNmMzMyZDBmNzYwYTU3ODViN2FjMTll
YmU5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAg
LTY4LDYgKzY4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rp
b247CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVh
dGVCdWlsdGluRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0dsb2JhbE9iamVj
dCopOworICAgICAgICAKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAg
ICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBuYW1lKEV4ZWNTdGF0ZSop
OwpAQCAtOTcsNyArOTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhlY3V0YWJsZUJh
c2UqIGV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtX2V4ZWN1dGFibGUuZ2V0KCk7IH0KIAog
ICAgICAgICAvLyBUbyBjYWxsIGVpdGhlciBvZiB0aGVzZSBtZXRob2RzIGluY2x1ZGUgRXhlY3V0
YWJsZS5oCi0gICAgICAgIGlubGluZSBib29sIGlzSG9zdEZ1bmN0aW9uKCkgY29uc3Q7CisgICAg
ICAgIGJvb2wgaXNIb3N0RnVuY3Rpb24oKSBjb25zdDsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRh
YmxlKiBqc0V4ZWN1dGFibGUoKSBjb25zdDsKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBj
b25zdCBTb3VyY2VDb2RlKiBzb3VyY2VDb2RlKCkgY29uc3Q7CkBAIC0xNDUsNiArMTQ3LDEwIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1fYWxsb2NhdGlvblByb2ZpbGVX
YXRjaHBvaW50OwogICAgICAgICB9CiAKKyAgICAgICAgYm9vbCBpc0hvc3RPckJ1aWx0aW5GdW5j
dGlvbigpIGNvbnN0OworICAgICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3Q7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBj
b25zdDsKKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW1wbGVtZW50c0hh
c0luc3RhbmNlIHwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3BlcnR5
TmFtZXMgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKQEAgLTE2OSw4ICsxNzUsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9v
bCBpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpIGNvbnN0OwotCiAgICAgICAgIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBhcmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgY2FsbGVyR2V0dGVyKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSwgUHJvcGVydHlOYW1lKTsKICAgICAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGxlbmd0aEdl
dHRlcihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5
TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklu
bGluZXMuaAppbmRleCBmZTRlMTE0YWRiYzIzNjc0ZDNiNjBlNjFmNzFjYjdhMDZjOTQ3ODRkLi42
OWYwZDRmMzk2ZWY5YzJkYTllMGJmNjA4YzI2NDQxNzE3OTliYTUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKQEAgLTUzLDE2ICs1
MywyNCBAQCBpbmxpbmUgYm9vbCBKU0Z1bmN0aW9uOjppc0hvc3RGdW5jdGlvbigpIGNvbnN0CiAK
IGlubGluZSBOYXRpdmVGdW5jdGlvbiBKU0Z1bmN0aW9uOjpuYXRpdmVGdW5jdGlvbigpCiB7Ci0g
ICAgQVNTRVJUKGlzSG9zdEZ1bmN0aW9uKCkpOworICAgIEFTU0VSVChpc0hvc3RGdW5jdGlvbk5v
bklubGluZSgpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TmF0aXZlRXhlY3V0YWJsZSo+KG1f
ZXhlY3V0YWJsZS5nZXQoKSktPmZ1bmN0aW9uKCk7CiB9CiAKIGlubGluZSBOYXRpdmVGdW5jdGlv
biBKU0Z1bmN0aW9uOjpuYXRpdmVDb25zdHJ1Y3RvcigpCiB7Ci0gICAgQVNTRVJUKGlzSG9zdEZ1
bmN0aW9uKCkpOworICAgIEFTU0VSVChpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpKTsKICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8TmF0aXZlRXhlY3V0YWJsZSo+KG1fZXhlY3V0YWJsZS5nZXQoKSkt
PmNvbnN0cnVjdG9yKCk7CiB9CiAKK2lubGluZSBib29sIGlzSG9zdEZ1bmN0aW9uKEpTVmFsdWUg
dmFsdWUsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uKQoreworICAgIEpTRnVuY3Rpb24q
IGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihnZXRKU0Z1bmN0aW9uKHZhbHVlKSk7Cisg
ICAgaWYgKCFmdW5jdGlvbiB8fCAhZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gZnVuY3Rpb24tPm5hdGl2ZUZ1bmN0aW9uKCkgPT0g
bmF0aXZlRnVuY3Rpb247Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gSlNG
dW5jdGlvbklubGluZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJ
bmxpbmVzLmgKaW5kZXggMmRkYzI5ZjcxODk3YmI1MWQzOTBiMDZiMjVhNzM4MzM4NzRiYTBjMS4u
ZWRkMzQ0OWNlNDdiMTczNWU4ZTVkYmIwNWYzMThlM2Q1NWYzYmU2MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1
Y3RvcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCkBAIC0yNiw2ICsyNiw3IEBACiAj
aWZuZGVmIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzX2gKICNkZWZp
bmUgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXNfaAogCisjaW5jbHVk
ZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkpT
QXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVj
dG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IDZkYjg2Mjc0YzNiODc0YWFh
ZGU1MTUxODk4MjY3MjZmYjEzNmMxNzMuLmYyNGVhNzMwM2RmOTY5ZGJkMmRjYTUyYzg2ZDExYzc4
YzAwZGI5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0yNyw2ICsyNyw3IEBA
CiAjZGVmaW5lIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lc19oCiAKICNpbmNsdWRlICJB
cnJheUJ1ZmZlclZpZXcuaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1
ZGUgIkRlZmVyR0MuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhl
bHBlcnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmgKaW5k
ZXggNDU5OTk3YTQ2NGI5MTE5NDc3YjFiZTg0ZTM2YzRlMjk2NmFjZWY4NS4uOGU1ZmY4Mjc5MWU2
ZmY4ZDRlYjljMzczNjkxZTQzM2ViN2QxNmFlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdQcm90b3R5cGVJbmxpbmVzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzX2gKICNkZWZpbmUgSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdQcm90b3R5cGVJbmxpbmVzX2gKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJz
LmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDJjMjc0YzFhN2Q0ODFjMDdkZjBkMmJlYjNiMjkz
MWEzOTA3YTVlNjYuLjA2ZTU0Yzg0ZTc3YjkwMzJiYWExZDJkZjQ3YTFjNzJlODBiN2RlYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
QEAgLTM0Niw3ICszNDYsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHBy
b3RvdHlwZSkKIAogICAgIC8vIENvbnN0cnVjdG9ycwogCi0gICAgSlNDZWxsKiBvYmplY3RDb25z
dHJ1Y3RvciA9IE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIE9iamVjdENvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBt
X29iamVjdFByb3RvdHlwZS5nZXQoKSk7CisgICAgT2JqZWN0Q29uc3RydWN0b3IqIG9iamVjdENv
bnN0cnVjdG9yID0gT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgT2JqZWN0Q29uc3RydWN0
b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSks
IG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKKyAgICBtX29iamVjdENvbnN0cnVjdG9yLnNldCh2
bSwgdGhpcywgb2JqZWN0Q29uc3RydWN0b3IpOwogICAgIEpTQ2VsbCogZnVuY3Rpb25Db25zdHJ1
Y3RvciA9IEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgRnVuY3Rpb25Db25zdHJ1Y3Rv
cjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwg
bV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CiAgICAgSlNDZWxsKiBhcnJheUNvbnN0cnVjdG9y
ID0gQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2FycmF5UHJv
dG90eXBlLmdldCgpKTsKIApAQCAtNDMyLDcgKzQzMywxMCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
OjpyZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKICAgICBHbG9iYWxQcm9wZXJ0eUluZm8gc3RhdGlj
R2xvYmFsc1tdID0gewogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+TmFOLCBqc05hTigpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5JbmZpbml0eSwganNOdW1i
ZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSwgRG9udEVudW0gfCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCwganNVbmRlZmluZWQoKSwgRG9udEVudW0gfCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9w
ZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLCBqc1VuZGVmaW5lZCgpLCBEb250RW51bSB8IERv
bnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9w
ZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkUHJpdmF0ZU5hbWUsIGpzVW5kZWZpbmVkKCksIERv
bnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJ
bmZvKHZtLnByb3BlcnR5TmFtZXMtPk9iamVjdFByaXZhdGVOYW1lLCBvYmplY3RDb25zdHJ1Y3Rv
ciwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+VHlwZUVycm9yUHJpdmF0ZU5hbWUsIG1fdHlwZUVy
cm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KQog
ICAgIH07CiAgICAgYWRkU3RhdGljR2xvYmFscyhzdGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVO
R1RIKHN0YXRpY0dsb2JhbHMpKTsKICAgICAKQEAgLTYwOCw2ICs2MTIsNyBAQCB2b2lkIEpTR2xv
YmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3ludGF4RXJyb3JDb25zdHJ1
Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdHlwZUVycm9yQ29uc3Ry
dWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX1VSSUVycm9yQ29uc3Ry
dWN0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX29iamVjdENvbnN0cnVj
dG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcm9taXNlQ29uc3RydWN0
b3IpOwogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZXZhbEZ1bmN0aW9uKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4
IGIwY2FkM2RjNTQ3MGY3YzdhMGU1NzBiZGNkMmRmZmE4OTVlMmFhMGMuLjNhNjE2YzZmMDVlZGYx
ZDI5NWFmODQ0MWFhNjY1MDBmYjkyYTRhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNjcsNiArNjcsNyBAQCBjbGFzcyBKU1N0YWNr
OwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgTWljcm90YXNrOwogY2xhc3Mg
TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjsKK2NsYXNzIE9iamVjdENvbnN0cnVjdG9yOwogY2xhc3Mg
UHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwogY2xhc3MgUmVnRXhw
Q29uc3RydWN0b3I7CkBAIC0xNTgsNiArMTU5LDcgQEAgcHJvdGVjdGVkOgogICAgIFdyaXRlQmFy
cmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX3R5cGVFcnJvckNvbnN0cnVjdG9yOwogICAg
IFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX1VSSUVycm9yQ29uc3RydWN0
b3I7CiAgICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlzZUNvbnN0cnVjdG9yPiBtX3Byb21pc2VDb25z
dHJ1Y3RvcjsKKyAgICBXcml0ZUJhcnJpZXI8T2JqZWN0Q29uc3RydWN0b3I+IG1fb2JqZWN0Q29u
c3RydWN0b3I7CiAKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9ldmFsRnVuY3Rpb247
CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fY2FsbEZ1bmN0aW9uOwpAQCAtMzMwLDYg
KzMzMiw3IEBAIHB1YmxpYzoKICAgICBSZWdFeHBDb25zdHJ1Y3RvciogcmVnRXhwQ29uc3RydWN0
b3IoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cENvbnN0cnVjdG9yLmdldCgpOyB9CiAKICAgICBF
cnJvckNvbnN0cnVjdG9yKiBlcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJv
ckNvbnN0cnVjdG9yLmdldCgpOyB9CisgICAgT2JqZWN0Q29uc3RydWN0b3IqIG9iamVjdENvbnN0
cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAg
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGV2YWxFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9ldmFsRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgIE5hdGl2ZUVycm9yQ29u
c3RydWN0b3IqIHJhbmdlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2VF
cnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CiAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogcmVm
ZXJlbmNlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlRXJyb3JD
b25zdHJ1Y3Rvci5nZXQoKTsgfQpAQCAtNTgxLDcgKzU4NCw3IEBAIGlubGluZSBib29sIEpTR2xv
YmFsT2JqZWN0OjpoYXNPd25Qcm9wZXJ0eUZvcldyaXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lCiAKIGlubGluZSBib29sIEpTR2xvYmFsT2JqZWN0OjpzeW1ib2xUYWJsZUhhc1Byb3Bl
cnR5KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgU3ltYm9sVGFibGVFbnRyeSBl
bnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgp
KTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0
KHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgcmV0dXJuICFlbnRyeS5pc051bGwoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IDJiNjdhMWQ5
ZWVkODRlOTk1NmY4YmI5NjgzODRjODRjYWVhNTNjZmYuLjJlYTJjMjRlNmVhYjRjZDBkN2ZmZWQ2
NjVlZjRhZTQxYWYwNzUwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGdldENsYXNzUHJv
cGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENsYXNzSW5mbyogY2xhc3MKICAgICAg
ICAgaW50IGhhc2hTaXplTWFzayA9IHRhYmxlLT5jb21wYWN0U2l6ZSAtIDE7CiAgICAgICAgIGNv
bnN0IEhhc2hFbnRyeSogZW50cnkgPSB0YWJsZS0+dGFibGU7CiAgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDw9IGhhc2hTaXplTWFzazsgKytpLCArK2VudHJ5KSB7Ci0gICAgICAgICAgICBpZiAo
ZW50cnktPmtleSgpICYmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwgKG1v
ZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpICYmICEoKGVudHJ5LT5hdHRyaWJ1dGVz
KCkgJiBGdW5jdGlvbikgJiYgZGlkUmVpZnkpKQorICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXko
KSAmJiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IChtb2RlID09IEluY2x1
ZGVEb250RW51bVByb3BlcnRpZXMpKSAmJiAhKChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRp
bk9yRnVuY3Rpb24pICYmIGRpZFJlaWZ5KSkKICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVz
LmFkZChlbnRyeS0+a2V5KCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTYxOCw3ICsxNjE4LDcg
QEAgdm9pZCBKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUoRXhlY1N0YXRl
KiBleGVjKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90
KHRoaXMpOwogICAgICAgICBmb3IgKEhhc2hUYWJsZTo6Q29uc3RJdGVyYXRvciBpdGVyID0gaGFz
aFRhYmxlLT5iZWdpbih2bSk7IGl0ZXIgIT0gaGFzaFRhYmxlLT5lbmQodm0pOyArK2l0ZXIpIHsK
LSAgICAgICAgICAgIGlmIChpdGVyLT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikKKyAgICAgICAg
ICAgIGlmIChpdGVyLT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikKICAgICAgICAg
ICAgICAgICBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhl
YygpLCAqaXRlciwgdGhpcywgSWRlbnRpZmllcigmdm0sIGl0ZXItPmtleSgpKSwgc2xvdCk7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0yMjM2LDYgKzIyMzYsMTYgQEAgdm9pZCBKU09iamVjdDo6cHV0
RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBjb24KICAgICBwdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgZnVuY3Rpb24sIGF0dHJpYnV0
ZXMpOwogfQogCit2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RCdWlsdGluRnVuY3Rpb24oVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3Bl
cnR5TmFtZSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpCit7CisgICAgU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJs
aWNOYW1lKCk7CisgICAgaWYgKCFuYW1lKQorICAgICAgICBuYW1lID0gdm0ucHJvcGVydHlOYW1l
cy0+YW5vbnltb3VzLmltcGwoKTsKKyAgICBBU1NFUlQobmFtZSk7CisgICAgSlNGdW5jdGlvbiog
ZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHN0YXRpY19j
YXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIGdsb2JhbE9iamVj
dCk7CisgICAgcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1dGVz
KTsKK30KKwogdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3Bl
cnR5TmFtZSYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVu
Y3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpCiB7CiAgICAgU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1l
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCAwMmIxMzdi
MzUwYzJmYTgzMjViZDNiOTY0NzExMmFiZTg3NmYzODNmLi5kZGU1OTdlZmZhZWMwZjFiOGQ0NGMy
OTExOTUwMzAxZjA2MDA3ZTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJCdXR0ZXJmbHkuaCIKICNpbmNsdWRl
ICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKLSNpbmNsdWRlICJDb21tb25J
ZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkNvcHlXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlICJE
ZWZlckdDLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgpAQCAtNTgxLDYgKzU4MCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHB1dERpcmVjdFVuZGVmaW5lZChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpIHsgbG9j
YXRpb25Gb3JPZmZzZXQob2Zmc2V0KS0+c2V0VW5kZWZpbmVkKCk7IH0KIAogICAgIHZvaWQgcHV0
RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5
TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2lj
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICB2b2lkIHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlv
bihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgRnVuY3Rpb25FeGVj
dXRhYmxlKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgdm9pZCBwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9w
ZXJ0eU5hbWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24sIEludHJp
bnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rv
ci5jcHAKaW5kZXggNDAyNjE5NjMzZmEwNmZkMjU0YjNmMmE3YThjYzcxZTgwN2FhZjkxMS4uMTdk
MmFiNjVhODhmZmIxM2ZhOWE2YzhmNTgzY2E4NDRhZjgzMjI0MiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcApAQCAt
MzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkpTUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAi
SlNQcm9taXNlRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlUHJvdG90eXBlLmgiCisj
aW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVk
ZSAiTnVtYmVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuY3BwCmlu
ZGV4IGNiYzQyZWI5ZmQ5MjMwZjQ2ZTZmODQ5ZmYxYTc5NTliZDEwNzliZWMuLjQyNzEwYzMwNTQ0
YTExYzc1NDdjM2NmODg4Yjk2YTQ4YzQ2OGEwNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlICJKU1Byb21pc2UuaCIKICNpbmNsdWRlICJKU1Byb21pc2VDb25zdHJ1Y3Rvci5o
IgogI2luY2x1ZGUgIkpTUHJvbWlzZUZ1bmN0aW9ucy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5s
aW5lcy5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlND
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90
b3R5cGUuY3BwCmluZGV4IDlkZjQ1NzgxN2NhODAzZDM3MzI4MjQyZmMzM2VjYTc0NWVkNDA0MzEu
LmU0Y2E1YTQ2ZDkxYmI4MDQyNGI4NjJlOTMyNDkyMzdiZmM1M2U3YWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmNwcApAQCAt
MzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkpTUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAi
SlNQcm9taXNlRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlUmVhY3Rpb24uaCIKKyNp
bmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJNaWNyb3Rhc2suaCIKICNpbmNs
dWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlYWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb21pc2VSZWFjdGlvbi5oCmluZGV4IGZjNzE0NmM1MGU4NDlkMzMwZDg5ZTYz
ZmMxOWNhNjQ5ZDNjMGU4NDguLjQyZDI0OTZhMWZjZGFiYmMxMWRjN2JiMjc3ZGQxMjNlMmE0ZGUy
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJl
YWN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUmVh
Y3Rpb24uaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBKU1Byb21pc2VSZWFjdGlvbl9oCiAK
ICNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNs
dWRlICJTdHJ1Y3R1cmUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCmluZGV4
IDY4YThiZDg3ZDM4YWRiYmI5ZGQyYWM5ZWM0YjQ5ZDVlZjQ1NDlkNTYuLjIzN2M0MmJiMGRhMGYx
NjY3NmViMTFhZGU4MTgwYTdiMDZkOThlYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCkBAIC0yOSw3ICsy
OSw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oIgogCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCmluZGV4IGY0MzYyZmYz
NTRlZTZhNTAyMjFiYjczMWQxYTI2MTFlNmRkNjFiYzAuLmQwNzM3MTlkZTE2MGQyZjI5MjExMGE1
OTZhMTA1ZTJmYTIxMTVmZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKQEAgLTMxLDcgKzMxLDYgQEAKIAogI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKLSNpbmNsdWRlICJPcGVy
YXRpb25zLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKICNpbmNsdWRlIDxtZW1v
cnk+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCmluZGV4IDJiMWNk
ZGRjNTg0MWQ2MGQxNTdhMmU2MWY3MDJiMGVlNWZhMWQ2NzYuLmUzOTM0MTYwYWVhOTI2ZWYxNTkz
MmY4NzkwZTI0YzUyYWYwMmQzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuaApAQCAtMjQsNyArMjQsNiBAQAogI2RlZmluZSBKU1N0cmluZ19oCiAKICNpbmNsdWRl
ICJDYWxsRnJhbWUuaCIKLSNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUg
IklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQcm9wZXJ0eURlc2NyaXB0b3IuaCIKICNpbmNsdWRl
ICJQcm9wZXJ0eVNsb3QuaCIKQEAgLTQ3MiwzMyArNDcxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgaW5saW5lIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBTdHJpbmcmIHMpIHsgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZygmZXhlYy0+dm0oKSwg
cyk7IH0KICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBTdHJpbmcmIHMpIHsgcmV0dXJuIGpzT3duZWRTdHJpbmcoJmV4ZWMtPnZtKCksIHMp
OyB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgSlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5
U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKLSAgICB7Ci0gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJv
cGVydHlOYW1lcygpLmxlbmd0aCkgewotICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBE
b250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSwganNOdW1iZXIobV9sZW5ndGgpKTsKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgdW5zaWduZWQgaSA9
IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7Ci0gICAgICAgIGlmIChpIDwgbV9sZW5ndGgpIHsKLSAg
ICAgICAgICAgIEFTU0VSVChpICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCk7IC8vIE5vIG5l
ZWQgZm9yIGFuIGV4cGxpY2l0IGNoZWNrLCB0aGUgYWJvdmUgdGVzdCB3b3VsZCBhbHdheXMgZmFp
bCEKLSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5
LCBnZXRJbmRleChleGVjLCBpKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
fQotCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgICAgICAgICAKLSAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgSlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQotICAgIHsK
LSAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA8IG1fbGVuZ3RoKSB7Ci0gICAgICAgICAgICBzbG90
LnNldFZhbHVlKHRoaXMsIERvbnREZWxldGUgfCBSZWFkT25seSwgZ2V0SW5kZXgoZXhlYywgcHJv
cGVydHlOYW1lKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KICAgICBpbmxpbmUgYm9vbCBpc0pTU3RyaW5nKEpT
VmFsdWUgdikgeyByZXR1cm4gdi5pc0NlbGwoKSAmJiB2LmFzQ2VsbCgpLT5jbGFzc0luZm8oKSA9
PSBKU1N0cmluZzo6aW5mbygpOyB9CiAKICAgICAvLyAtLS0gSlNWYWx1ZSBpbmxpbmVzIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTUyOCwzMiArNTAwLDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHJldHVybiB0b1dURlN0cmluZ1Nsb3dDYXNlKGV4ZWMpOwogICAgIH0KIAot
ICAgIEFMV0FZU19JTkxJTkUgU3RyaW5nIGlubGluZUpTVmFsdWVOb3RTdHJpbmd0b1N0cmluZyhj
b25zdCBKU1ZhbHVlJiB2YWx1ZSwgRXhlY1N0YXRlKiBleGVjKQotICAgIHsKLSAgICAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzSW50MzIoKSkKLSAgICAgICAg
ICAgIHJldHVybiB2bS5udW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNJbnQzMigpKTsKLSAgICAg
ICAgaWYgKHZhbHVlLmlzRG91YmxlKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0ubnVtZXJpY1N0
cmluZ3MuYWRkKHZhbHVlLmFzRG91YmxlKCkpOwotICAgICAgICBpZiAodmFsdWUuaXNUcnVlKCkp
Ci0gICAgICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+dHJ1ZUtleXdvcmQuc3RyaW5n
KCk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc0ZhbHNlKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0u
cHJvcGVydHlOYW1lcy0+ZmFsc2VLZXl3b3JkLnN0cmluZygpOwotICAgICAgICBpZiAodmFsdWUu
aXNOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+bnVsbEtleXdv
cmQuc3RyaW5nKCk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICAg
ICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQuc3RyaW5nKCk7Ci0g
ICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7Ci0gICAgfQot
Ci0gICAgQUxXQVlTX0lOTElORSBTdHJpbmcgSlNWYWx1ZTo6dG9XVEZTdHJpbmdJbmxpbmUoRXhl
Y1N0YXRlKiBleGVjKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGlzU3RyaW5nKCkpCi0gICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNTdHJpbmcqPihhc0NlbGwoKSktPnZhbHVlKGV4
ZWMpOwotCi0gICAgICAgIHJldHVybiBpbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcoKnRo
aXMsIGV4ZWMpOwotICAgIH0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBKU1N0
cmluZ19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Z0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSW5saW5l
cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM3OGMwNWZjODBkODhlODUzN2M5ZDJhNWVhYjlmZjBiYTliNjBhNzUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Z0lubGluZXMuaApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU1N0cmluZ0lubGluZXNfaAorI2RlZmlu
ZSBKU1N0cmluZ0lubGluZXNfaAorCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKKyNp
bmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitBTFdBWVNfSU5MSU5FIGJvb2wgSlNTdHJpbmc6OmdldFN0cmluZ1By
b3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5sZW5ndGgpIHsKKyAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RW51
bSB8IERvbnREZWxldGUgfCBSZWFkT25seSwganNOdW1iZXIobV9sZW5ndGgpKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUu
YXNJbmRleCgpOworICAgIGlmIChpIDwgbV9sZW5ndGgpIHsKKyAgICAgICAgQVNTRVJUKGkgIT0g
UHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTsgLy8gTm8gbmVlZCBmb3IgYW4gZXhwbGljaXQgY2hl
Y2ssIHRoZSBhYm92ZSB0ZXN0IHdvdWxkIGFsd2F5cyBmYWlsIQorICAgICAgICBzbG90LnNldFZh
bHVlKHRoaXMsIERvbnREZWxldGUgfCBSZWFkT25seSwgZ2V0SW5kZXgoZXhlYywgaSkpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCitB
TFdBWVNfSU5MSU5FIGJvb2wgSlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3Rh
dGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorewor
ICAgIGlmIChwcm9wZXJ0eU5hbWUgPCBtX2xlbmd0aCkgeworICAgICAgICBzbG90LnNldFZhbHVl
KHRoaXMsIERvbnREZWxldGUgfCBSZWFkT25seSwgZ2V0SW5kZXgoZXhlYywgcHJvcGVydHlOYW1l
KSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK0FMV0FZU19JTkxJTkUgU3RyaW5nIGlubGluZUpTVmFsdWVOb3RTdHJpbmd0b1N0cmlu
Zyhjb25zdCBKU1ZhbHVlJiB2YWx1ZSwgRXhlY1N0YXRlKiBleGVjKQoreworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgaWYgKHZhbHVlLmlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIHZt
Lm51bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZS5hc0ludDMyKCkpOworICAgIGlmICh2YWx1ZS5pc0Rv
dWJsZSgpKQorICAgICAgICByZXR1cm4gdm0ubnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVlLmFzRG91
YmxlKCkpOworICAgIGlmICh2YWx1ZS5pc1RydWUoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3Bl
cnR5TmFtZXMtPnRydWVLZXl3b3JkLnN0cmluZygpOworICAgIGlmICh2YWx1ZS5pc0ZhbHNlKCkp
CisgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5mYWxzZUtleXdvcmQuc3RyaW5nKCk7
CisgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1l
cy0+bnVsbEtleXdvcmQuc3RyaW5nKCk7CisgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkKCkpCisg
ICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLnN0cmluZygp
OworICAgIHJldHVybiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7Cit9CisgICAg
CitBTFdBWVNfSU5MSU5FIFN0cmluZyBKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZShFeGVjU3Rh
dGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgaWYgKGlzU3RyaW5nKCkpCisgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxKU1N0cmluZyo+KGFzQ2VsbCgpKS0+dmFsdWUoZXhlYyk7CisgICAgCisgICAg
cmV0dXJuIGlubGluZUpTVmFsdWVOb3RTdHJpbmd0b1N0cmluZygqdGhpcywgZXhlYyk7Cit9CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N5bWJvbFRhYmxlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3ltYm9sVGFibGVPYmplY3QuY3BwCmluZGV4IDJhYzI1MjRjNWRmZGEzZDEyMjQ5ZDc3OTBhZGMz
MTI5ZTNjMGU4NzEuLmZiYzhiODk1ZWFlNmFmNzg4ODM5YmViNWU4M2Q3YjZiOTc5MjhmYWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVP
YmplY3QuY3BwCkBAIC02NCw2ICs2NCw4IEBAIHZvaWQgSlNTeW1ib2xUYWJsZU9iamVjdDo6Z2V0
T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0CiAgICAg
ICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCkt
Pm1fbG9jayk7CiAgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGVuZCA9IHRoaXNP
YmplY3QtPnN5bWJvbFRhYmxlKCktPmVuZChsb2NrZXIpOwogICAgICAgICBmb3IgKFN5bWJvbFRh
YmxlOjpNYXA6Oml0ZXJhdG9yIGl0ID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+YmVnaW4o
bG9ja2VyKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBpZiAoaXQtPmtleS0+aXNF
bXB0eVVuaXF1ZSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYg
KCEoaXQtPnZhbHVlLmdldEF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCAobW9kZSA9PSBJbmNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkKICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFk
ZChJZGVudGlmaWVyKGV4ZWMsIGl0LT5rZXkuZ2V0KCkpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCmluZGV4
IGI1YjIwYTg0NWI2YWI2NDQyNGIzN2UzMWIyNzc0ZWY5MDUzNTNmN2YuLmQwM2IyNDUxMWMyZGUx
OTU5ZmI1ZjU2ZDY0OWM2NGQwZWZlMDY4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKQEAgLTcyLDcgKzcyLDcgQEAgaW5s
aW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiB7CiAgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxl
ID0gKm9iamVjdC0+c3ltYm9sVGFibGUoKTsKICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tl
cihzeW1ib2xUYWJsZS5tX2xvY2spOwotICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0
ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7
CisgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQo
bG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxl
LmVuZChsb2NrZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgU3ltYm9sVGFibGVFbnRy
eTo6RmFzdCBlbnRyeSA9IGl0ZXItPnZhbHVlOwpAQCAtODcsNyArODcsNyBAQCBpbmxpbmUgYm9v
bCBzeW1ib2xUYWJsZUdldCgKIHsKICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2Jq
ZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJv
bFRhYmxlLm1fbG9jayk7Ci0gICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5
bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBT
eW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIs
IHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxv
Y2tlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0
IGVudHJ5ID0gaXRlci0+dmFsdWU7CkBAIC0xMDQsNyArMTA0LDcgQEAgaW5saW5lIGJvb2wgc3lt
Ym9sVGFibGVHZXQoCiB7CiAgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gKm9iamVjdC0+
c3ltYm9sVGFibGUoKTsKICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJs
ZS5tX2xvY2spOwotICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xU
YWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9s
VGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9w
ZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBlbnRy
eSA9IGl0ZXItPnZhbHVlOwpAQCAtMTI2LDcgKzEyNiw3IEBAIGlubGluZSBib29sIHN5bWJvbFRh
YmxlUHV0KAogICAgIHsKICAgICAgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gKm9iamVj
dC0+c3ltYm9sVGFibGUoKTsKICAgICAgICAgR0NTYWZlQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIoc3ltYm9sVGFibGUubV9sb2NrLCBleGVjLT52bSgpLmhlYXApOwotICAgICAgICBTeW1ib2xU
YWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3Bl
cnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRv
ciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAg
ICAgICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBib29sIHdhc0ZhdDsKQEAgLTE1OSw3ICsxNTksNyBAQCBp
bmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKAogICAgIHsKICAgICAgICAg
U3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9sVGFibGUoKTsKICAgICAg
ICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICAg
ICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9j
a2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICAgICAgU3ltYm9sVGFibGU6Ok1h
cDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUu
dWlkKCkpOwogICAgICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSYgZW50cnkg
PSBpdGVyLT52YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0xvb2t1cC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCmlu
ZGV4IGE4MDZkZDA1MmEwY2JlZTRjYWMyY2FhNmUwOGM2NzE2MDA1YzI3MGMuLmE5NzY1MjAxYjlm
NTE4NjQxNDIzZGRlMGZlMGUyZTUxYThjZTczYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTG9va3VwLmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIEhhc2hUYWJsZTo6ZGVsZXRl
VGFibGUoKSBjb25zdAogYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0KiB0aGlzT2JqLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgQVNTRVJUKHRoaXNP
YmotPmdsb2JhbE9iamVjdCgpKTsKLSAgICBBU1NFUlQoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEZ1
bmN0aW9uKTsKKyAgICBBU1NFUlQoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0
aW9uKTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7
CiAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gdGhpc09iai0+Z2V0RGlyZWN0T2Zmc2V0KHZt
LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwpAQCAtNzksOSArNzksMTMgQEAgYm9vbCBzZXRV
cFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50
cnksIEpTT2JqZWN0KgogICAgICAgICBpZiAodGhpc09iai0+c3RhdGljRnVuY3Rpb25zUmVpZmll
ZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgICAgICB0aGlzT2JqLT5w
dXREaXJlY3ROYXRpdmVGdW5jdGlvbigKLSAgICAgICAgICAgIHZtLCB0aGlzT2JqLT5nbG9iYWxP
YmplY3QoKSwgcHJvcGVydHlOYW1lLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSwKLSAgICAgICAg
ICAgIGVudHJ5LT5mdW5jdGlvbigpLCBlbnRyeS0+aW50cmluc2ljKCksIGVudHJ5LT5hdHRyaWJ1
dGVzKCkpOworICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW4pCisgICAg
ICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3RCdWlsdGluRnVuY3Rpb24odm0sIHRoaXNPYmotPmds
b2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5idWlsdGluR2VuZXJhdG9yKCkodm0p
LCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aGlz
T2JqLT5wdXREaXJlY3ROYXRpdmVGdW5jdGlvbigKKyAgICAgICAgICAgICAgICB2bSwgdGhpc09i
ai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZW50cnktPmZ1bmN0aW9uTGVuZ3RoKCks
CisgICAgICAgICAgICAgICAgZW50cnktPmZ1bmN0aW9uKCksIGVudHJ5LT5pbnRyaW5zaWMoKSwg
ZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAgICAgIH0KICAgICAgICAgb2Zmc2V0ID0gdGhpc09i
ai0+Z2V0RGlyZWN0T2Zmc2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwogICAgICAg
ICBBU1NFUlQoaXNWYWxpZE9mZnNldChvZmZzZXQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0xvb2t1cC5oCmluZGV4IGJkZTgzZDRhNmZjMzU1Nzc4NTBlMzFlODhiYzM5ZmQw
NWY3YmNlNTIuLmRiYTM4OWU5ZTI0M2RkMGVjYjJiYTk4ZjM5NGQ0MDc5ZjlkZWE5MzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIC8vIGllLiB0eXBlZGVmIEpTVmFsdWUgKCpHZXRGdW5jdGlvbikoRXhl
Y1N0YXRlKiwgSlNPYmplY3QqIGJhc2VPYmplY3QpCiAgICAgdHlwZWRlZiBQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYyBHZXRGdW5jdGlvbjsKICAgICB0eXBlZGVmIFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jIFB1dEZ1bmN0aW9uOworICAgIHR5cGVkZWYgRnVuY3Rpb25FeGVjdXRhYmxl
KiAoKkJ1aWx0aW5HZW5lcmF0b3IpKFZNJik7CiAKICAgICBjbGFzcyBIYXNoRW50cnkgewogICAg
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTY4LDExICs2OSwxMiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2ludHJpbnNpYzsKICAgICAgICAgfQogCisg
ICAgICAgIEJ1aWx0aW5HZW5lcmF0b3IgYnVpbHRpbkdlbmVyYXRvcigpIGNvbnN0IHsgQVNTRVJU
KG1fYXR0cmlidXRlcyAmIEJ1aWx0aW4pOyByZXR1cm4gbV91LmJ1aWx0aW5HZW5lcmF0b3IuZ2Vu
ZXJhdG9yVmFsdWU7IH0KICAgICAgICAgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24oKSBjb25zdCB7
IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBGdW5jdGlvbik7IHJldHVybiBtX3UuZnVuY3Rpb24uZnVu
Y3Rpb25WYWx1ZTsgfQogICAgICAgICB1bnNpZ25lZCBjaGFyIGZ1bmN0aW9uTGVuZ3RoKCkgY29u
c3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pOyByZXR1cm4gc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcj4obV91LmZ1bmN0aW9uLmxlbmd0aCk7IH0KIAotICAgICAgICBHZXRGdW5j
dGlvbiBwcm9wZXJ0eUdldHRlcigpIGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1dGVzICYgRnVu
Y3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0eS5nZXQ7IH0KLSAgICAgICAgUHV0RnVuY3Rpb24g
cHJvcGVydHlQdXR0ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9u
KSk7IHJldHVybiBtX3UucHJvcGVydHkucHV0OyB9CisgICAgICAgIEdldEZ1bmN0aW9uIHByb3Bl
cnR5R2V0dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBCdWlsdGluT3JGdW5j
dGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5LmdldDsgfQorICAgICAgICBQdXRGdW5jdGlvbiBw
cm9wZXJ0eVB1dHRlcigpIGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1dGVzICYgQnVpbHRpbk9y
RnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0eS5wdXQ7IH0KIAogICAgICAgICBpbnRwdHJf
dCBsZXhlclZhbHVlKCkgY29uc3QgeyBBU1NFUlQoIW1fYXR0cmlidXRlcyk7IHJldHVybiBtX3Uu
bGV4ZXIudmFsdWU7IH0KIApAQCAtOTQsNiArOTYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICAgICAgaW50cHRyX3QgbGVuZ3RoOyAvLyBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBm
dW5jdGlvbgogICAgICAgICAgICAgfSBmdW5jdGlvbjsKICAgICAgICAgICAgIHN0cnVjdCB7Cisg
ICAgICAgICAgICAgICAgQnVpbHRpbkdlbmVyYXRvciBnZW5lcmF0b3JWYWx1ZTsKKyAgICAgICAg
ICAgICAgICBpbnRwdHJfdCB1bnVzZWQ7CisgICAgICAgICAgICB9IGJ1aWx0aW5HZW5lcmF0b3I7
CisgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgIEdldEZ1bmN0aW9uIGdldDsK
ICAgICAgICAgICAgICAgICBQdXRGdW5jdGlvbiBwdXQ7CiAgICAgICAgICAgICB9IHByb3BlcnR5
OwpAQCAtMjA5LDcgKzIxNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAg
ICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSGFzaEVudHJ5KiBlbnRyeShQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICBTdHJpbmdJbXBsKiBpbXBs
ID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsKKyAgICAgICAgICAgIFN0cmluZ0ltcGwqIGlt
cGwgPSBwcm9wZXJ0eU5hbWUudWlkKCk7CiAgICAgICAgICAgICBpZiAoIWltcGwpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIApAQCAtMjQ5LDcgKzI1NSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBpZiAoIWVudHJ5KSAvLyBub3QgZm91bmQsIGZvcndhcmQgdG8gcGFy
ZW50CiAgICAgICAgICAgICByZXR1cm4gUGFyZW50SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhp
c09iaiwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIAotICAgICAgICBpZiAoZW50cnktPmF0
dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKQorICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAm
IEJ1aWx0aW5PckZ1bmN0aW9uKQogICAgICAgICAgICAgcmV0dXJuIHNldFVwU3RhdGljRnVuY3Rp
b25TbG90KGV4ZWMsIGVudHJ5LCB0aGlzT2JqLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCiAgICAg
ICAgIHNsb3Quc2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXNPYmosIGVudHJ5LT5hdHRyaWJ1dGVzKCks
IGVudHJ5LT5wcm9wZXJ0eUdldHRlcigpKTsKQEAgLTI4Niw3ICsyOTIsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgaWYgKCFlbnRyeSkgLy8gbm90IGZvdW5kLCBmb3J3YXJkIHRvIHBhcmVu
dAogICAgICAgICAgICAgcmV0dXJuIFBhcmVudEltcDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNP
YmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKLSAgICAgICAgQVNTRVJUKCEoZW50cnkt
PmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKSk7CisgICAgICAgIEFTU0VSVCghKGVudHJ5LT5hdHRy
aWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikpOwogCiAgICAgICAgIHNsb3Quc2V0Q2FjaGVh
YmxlQ3VzdG9tKHRoaXNPYmosIGVudHJ5LT5hdHRyaWJ1dGVzKCksIGVudHJ5LT5wcm9wZXJ0eUdl
dHRlcigpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yOTUsNyArMzAxLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgaW5saW5lIHZvaWQgcHV0RW50cnkoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCogYmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogICAgIHsKICAgICAg
ICAgLy8gSWYgdGhpcyBpcyBhIGZ1bmN0aW9uIHB1dCBpdCBhcyBhbiBvdmVycmlkZSBwcm9wZXJ0
eS4KLSAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikgeworICAgICAg
ICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSB7CiAgICAgICAg
ICAgICBpZiAoSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4o
c2xvdC50aGlzVmFsdWUoKSkpCiAgICAgICAgICAgICAgICAgdGhpc09iamVjdC0+cHV0RGlyZWN0
KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUpOwogICAgICAgICB9IGVsc2UgaWYgKCEo
ZW50cnktPmF0dHJpYnV0ZXMoKSAmIFJlYWRPbmx5KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAppbmRleCBk
NWU3MjhjMmNkMTAyMGE0N2U0YWRjZDY0OWNkMWZmZmE1Y2Q2YTgzLi5kY2EyZmQ4ZDFmNmFjMjNi
OGZmODE3Y2JiMThmYWFlN2JjZDU5NzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtMzgsNiArMzgs
MjAgQEAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogfQogCit2b2lkIE5hdGl2ZUVycm9yQ29uc3Ry
dWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sK
KyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgbmFtZSk7CisgICAgQVNTRVJUKGluaGVyaXRz
KGluZm8oKSkpOworICAgIAorICAgIE5hdGl2ZUVycm9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBO
YXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZVN0
cnVjdHVyZSwgbmFtZSwgdGhpcyk7CisgICAgCisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250
RW51bSk7IC8vIEVDTUEgMTUuMTEuNy41CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVu
dW0pOworICAgIG1fZXJyb3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBFcnJvckluc3RhbmNlOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlKSk7CisgICAgQVNTRVJU
KG1fZXJyb3JTdHJ1Y3R1cmUpOworICAgIEFTU0VSVChtX2Vycm9yU3RydWN0dXJlLT5pc09iamVj
dCgpKTsKK30KKwogdm9pZCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgTmF0aXZlRXJyb3JDb25z
dHJ1Y3RvciogdGhpc09iamVjdCA9IGpzQ2FzdDxOYXRpdmVFcnJvckNvbnN0cnVjdG9yKj4oY2Vs
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJv
ckNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJv
ckNvbnN0cnVjdG9yLmgKaW5kZXggNzQwZDNmOTMzMjkyZmQyYWNjYjRiOTkwMzQ0MzEyYjkzMTlh
ZTExMC4uNDM4YTNhZmI5YmIwZjY0MTJjOTc5MzIyMzBjODg3MTA5NjFmNTQ2NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0
b3IuaApAQCAtNTEsMTkgKzUxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0cnVjdHVy
ZSogZXJyb3JTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2Vycm9yU3RydWN0dXJlLmdldCgpOyB9CiAK
ICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwg
Y29uc3QgU3RyaW5nJiBuYW1lKQotICAgICAgICB7Ci0gICAgICAgICAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSwgbmFtZSk7Ci0gICAgICAgICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7
Ci0KLSAgICAgICAgICAgIE5hdGl2ZUVycm9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBOYXRpdmVF
cnJvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZVN0cnVjdHVy
ZSwgbmFtZSwgdGhpcyk7Ci0KLSAgICAgICAgICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVu
dW0pOyAvLyBFQ01BIDE1LjExLjcuNQotICAgICAgICAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwg
RG9udEVudW0pOwotICAgICAgICAgICAgbV9lcnJvclN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEVy
cm9ySW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUp
KTsKLSAgICAgICAgICAgIEFTU0VSVChtX2Vycm9yU3RydWN0dXJlKTsKLSAgICAgICAgICAgIEFT
U0VSVChtX2Vycm9yU3RydWN0dXJlLT5pc09iamVjdCgpKTsKLSAgICAgICAgfQorICAgICAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHByb3Rv
dHlwZVN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKaW5kZXggZDkzOGZhMzE2NDVhZjI2
Yjc1ODUxNGRiNmIyNDc4ZjE4M2U5ZWVlMS4uY2ZlOWM0ZDMyYmE3NjhjNzRlNGZmYmIxOTEzNTI3
OWRlYmYxMTc2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlTbG90LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlT
bG90LmgKQEAgLTQyLDYgKzQyLDggQEAgZW51bSBBdHRyaWJ1dGUgewogICAgIEZ1bmN0aW9uICAg
ICA9IDEgPDwgNCwgIC8vIHByb3BlcnR5IGlzIGEgZnVuY3Rpb24gLSBvbmx5IHVzZWQgYnkgc3Rh
dGljIGhhc2h0YWJsZXMKICAgICBBY2Nlc3NvciAgICAgPSAxIDw8IDUsICAvLyBwcm9wZXJ0eSBp
cyBhIGdldHRlci9zZXR0ZXIKICAgICBDdXN0b21BY2Nlc3NvciA9IDEgPDwgNiwKKyAgICBCdWls
dGluICAgICAgICAgPSAxIDw8IDcsIC8vIHByb3BlcnR5IGlzIGEgYnVpbHRpbiBmdW5jdGlvbiAt
IG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcworICAgIEJ1aWx0aW5PckZ1bmN0aW9uID0g
QnVpbHRpbiB8IEZ1bmN0aW9uLCAvLyBoZWxwZXIgb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFi
bGVzCiB9OwogCiBjbGFzcyBQcm9wZXJ0eVNsb3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCmluZGV4IGJjNTE2YjA2ZDY2NTFm
MGU2ODJhMjAxN2JkZjhiMDNiYWJlZDZlYTIuLjJjMjQzNGI4N2QwNGY3NDljYjEyZTYwMmFiNTQ3
ODQ5NDZhOTFmMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBDb25zdHJ1Y3Rvci5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJSZWdFeHBD
b25zdHJ1Y3Rvci5oIgogCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lu
bGluZXMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUmVnRXhwTWF0Y2hl
c0FycmF5LmgiCiAjaW5jbHVkZSAiUmVnRXhwUHJvdG90eXBlLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAppbmRleCA4OWQ3YWMxYjhj
YmYxZGIwZTEyNmYxZmM3OTZkZmQ1ZmM4NGIyZTU5Li45ZGRhMGJhOGRlMTQxMmVhZjRkMjkxZGNm
MGM2YjM5NjU3ZmI2NzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cFByb3RvdHlwZS5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJBcnJheVBy
b3RvdHlwZS5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgotI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpT
U3RyaW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1
Y3Rvci5jcHAKaW5kZXggYjIwMzg4OGQzYzE2Y2RhM2MwMDM1MDYyMDhhZTA4Njk1ZGM1ZGFhYS4u
ZDAyNjZhNTllZjNmNTVhYTM2OTRmNWY3NDE4Y2Y3OGUwYWUwZDhiMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dC5oIgogI2luY2x1ZGUgIkpTU2V0LmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiTWFwRGF0YS5oIgogI2luY2x1ZGUgIlNldFByb3RvdHlwZS5oIgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAppbmRleCA0NDBhNjA5
NDIxOTMzODAzMWU1OTI3YWY0NmIyODlkYmNmYjVhNzI4Li44MGU3ZWFhOGM0OTFjYjZkNTRhODMy
NGNlNjQ3YTZjZGI3ZTg4NzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ09iamVjdC5jcHAKQEAgLTIyLDcgKzIyLDkgQEAKICNpbmNsdWRlICJTdHJpbmdPYmpl
Y3QuaCIKIAogI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5l
cy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJh
eS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRl
eCAwNDI5MWY3ZThkZDI0ZThhYjMzZDc1YWYxZGE0NTY4ZjJiYzk5ZTY4Li4xZWNhYjg1YzBiZGIy
ODY5ODk0NTc3YTc0MTI1NGUzNjQ0MTQ5ZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTI3LDEyICsyNywxOCBAQAogI2luY2x1ZGUgIlN0cnVj
dHVyZS5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRp
ZmllcnMuaCIKICNpbmNsdWRlICJEdW1wQ29udGV4dC5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGlu
ZXMuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRl
cmF0b3IuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJMb29rdXAu
aCIKKyNpbmNsdWRlICJQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5
TmFtZUFycmF5LmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
U3RydWN0dXJlQ2hhaW4uaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRl
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA1MmNjZjQyM2ExMDQzZTEwNzlmMmQ4YjE4OTQyMTk4
OTBlNzFmMmJjLi4wMjA2OTVmYWM4M2VkNGU1MTg1YjcwZTY5Njk5NjNhMmRlOWEzNjcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiQXJnTGlzdC5oIgogI2luY2x1ZGUgIkFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmgiCiAj
aW5jbHVkZSAiQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgiCisjaW5jbHVkZSAiQnVp
bHRpbkV4ZWN1dGFibGVzLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lSW5saW5lcy5oIgogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVDYWNoZS5oIgpAQCAtNTUsNyArNTYsOSBA
QAogI2luY2x1ZGUgIkpTQVBJVmFsdWVXcmFwcGVyLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9u
LmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgotI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNs
dWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNp
bmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVu
Y3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIK
QEAgLTY4LDEzICs3MSwxNiBAQAogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk1hcERh
dGEuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgorI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUg
IlBhcnNlckFyZW5hLmgiCisjaW5jbHVkZSAiUHJvcGVydHlNYXBIYXNoVGFibGUuaCIKICNpbmNs
dWRlICJSZWdFeHBDYWNoZS5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUg
IlNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU291cmNlUHJvdmlkZXJD
YWNoZS5oIgogI2luY2x1ZGUgIlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiU3Ry
b25nSW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJV
bmxpbmtlZENvZGVCbG9jay5oIgogI2luY2x1ZGUgIldlYWtNYXBEYXRhLmgiCiAjaW5jbHVkZSA8
d3RmL1Byb2Nlc3NJRC5oPgpAQCAtMjI2LDYgKzIzMiw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBl
LCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1faW5EZWZpbmVPd25Qcm9wZXJ0eShmYWxzZSkK
ICAgICAsIG1fY29kZUNhY2hlKENvZGVDYWNoZTo6Y3JlYXRlKCkpCiAgICAgLCBtX2VuYWJsZWRQ
cm9maWxlcihudWxscHRyKQorICAgICwgbV9idWlsdGluRXhlY3V0YWJsZXMoQnVpbHRpbkV4ZWN1
dGFibGVzOjpjcmVhdGUoKnRoaXMpKQogewogICAgIGludGVycHJldGVyID0gbmV3IEludGVycHJl
dGVyKCp0aGlzKTsKICAgICBTdGFja0JvdW5kcyBzdGFjayA9IHd0ZlRocmVhZERhdGEoKS5zdGFj
aygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggNWE4NDEwNWVhZmI3YWJiYTVm
YTQzMWVlZWRkNTVkN2E4OWY1NWNlMi4uNjk1OGFjMzkzYjFhZWZjMGJlZmJmNmU0ZWI4YjY4MjVj
ZjdjOWEwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC00NCw2ICs0NCw3IEBA
CiAjaW5jbHVkZSAiUHJpdmF0ZU5hbWUuaCIKICNpbmNsdWRlICJQcm90b3R5cGVNYXAuaCIKICNp
bmNsdWRlICJTbWFsbFN0cmluZ3MuaCIKKyNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCiAjaW5jbHVk
ZSAiU3Ryb25nLmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAjaW5jbHVkZSAiVHlw
ZWRBcnJheUNvbnRyb2xsZXIuaCIKQEAgLTY5LDYgKzcwLDcgQEAKIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3M7CisgICAgY2xhc3MgQnVpbHRp
bkV4ZWN1dGFibGVzOwogICAgIGNsYXNzIENvZGVCbG9jazsKICAgICBjbGFzcyBDb2RlQ2FjaGU7
CiAgICAgY2xhc3MgQ29tbW9uSWRlbnRpZmllcnM7CkBAIC00OTcsNiArNDk5LDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcmVnaXN0ZXJXYXRjaHBvaW50Rm9ySW1wdXJlUHJvcGVy
dHkoY29uc3QgSWRlbnRpZmllciYsIFdhdGNocG9pbnQqKTsKICAgICAgICAgLy8gRklYTUU6IFVz
ZSBBdG9taWNTdHJpbmcgb25jZSBpdCBnb3QgbWVyZ2VkIHdpdGggSWRlbnRpZmllci4KICAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRJbXB1cmVQcm9wZXJ0eShjb25zdCBTdHJpbmcm
KTsKKyAgICAgICAgCisgICAgICAgIEJ1aWx0aW5FeGVjdXRhYmxlcyogYnVpbHRpbkV4ZWN1dGFi
bGVzKCkgeyByZXR1cm4gbV9idWlsdGluRXhlY3V0YWJsZXMuZ2V0KCk7IH0KIAogICAgIHByaXZh
dGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CkBAIC01Mzcs
MTAgKzU0MSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU1ZhbHVlIG1fZXhjZXB0aW9u
OwogICAgICAgICBib29sIG1faW5EZWZpbmVPd25Qcm9wZXJ0eTsKICAgICAgICAgT3duUHRyPENv
ZGVDYWNoZT4gbV9jb2RlQ2FjaGU7Ci0gICAgICAgIFJlZkNvdW50ZWRBcnJheTxTdGFja0ZyYW1l
PiBtX2V4Y2VwdGlvblN0YWNrOwotCiAgICAgICAgIExlZ2FjeVByb2ZpbGVyKiBtX2VuYWJsZWRQ
cm9maWxlcjsKLQorICAgICAgICBPd25QdHI8QnVpbHRpbkV4ZWN1dGFibGVzPiBtX2J1aWx0aW5F
eGVjdXRhYmxlczsKKyAgICAgICAgUmVmQ291bnRlZEFycmF5PFN0YWNrRnJhbWU+IG1fZXhjZXB0
aW9uU3RhY2s7CiAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8V2F0Y2hwb2ludFNldD4+
IG1faW1wdXJlUHJvcGVydHlXYXRjaHBvaW50U2V0czsKICAgICB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDdjYzY0ODM2YTUwNTEzZDhhZjI4MzllMTJkZDdiODRmNTg1NmIzZDUuLmY2ZGU2
OTM3MzBhMTc0M2EyNDM2NjQxMmYwMTRlODc3OWE3ODE3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC0xMDEsNiArMTAxLDcgQEAgc2V0KFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAg
ICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vQVBJIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
YXNzZW1ibGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0ZWNvZGUiCisgICAgIiR7
SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucyIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L2J5dGVjb21waWxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2RmZyIKICAgICAiJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L2Rpc2Fzc2VtYmxlciIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjcwZmNjMzg0ZThlZGZjMzRiMTQwODNiODY1ZDM3MzgyMGY0MTY1YzQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3Ry
aW5nSW5saW5lcy5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9KU1N0cmlu
Z0lubGluZXNfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9KU1N0cmluZ0lubGluZXNfaAorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nSW5saW5lcy5oPgorI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJl
cGxhY2VtZW50LmNwcAppbmRleCAyZWRkY2RiYjlmMDA2Y2E3NjI2NjUwYjQyMDI3ODYyNmI5MjYx
NDE3Li4zYzRlMGQ3YmJiMzFjYWIxMmI1ZTZjOTc1Yzc0ZDNmNDg0ZTljYjE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudC5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZUlubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU1N0cmluZ0lubGluZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwCmluZGV4IDU2
NDljODVjYTA5NTg3NzQ4YTNkYTA2Y2RkZDBjYTk5OWU1MGI4ZTcuLjNmNGQ4ZWZhZWI1N2YzMzAw
M2U3M2E3ZTc4NDJlNDJjNzNjZTY0OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0lEQkFueUN1c3RvbS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJKU0lEQk9i
amVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSlNJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVz
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKaW5kZXggOWVhZTc1NjljNzA2MDNhNGZl
ZDBhZjE0YzRmODcxOGNkZTY0YTZlMS4uZjQ5ZGZlOTBiNGU4MmQzOWVkY2JmOWJhMjlmMmFlNzk5
YzBkZGYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRh
YmFzZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRh
YmFzZUN1c3RvbS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJJREJPYmplY3RTdG9y
ZS5oIgogI2luY2x1ZGUgIkpTSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vy
cm9yLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUv
SlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAKaW5k
ZXggNzRmZDM1NGIyODYwN2NmNzgyMmY4MDUzNDc5NzBmNWQ3YWM4YzgzMi4uNTQzNGIzYjdkNmM1
NmVjYjBhMDNhMjc5NGM2NzM2YTlhZGZiNzBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAKQEAgLTM2LDcgKzM2LDcg
QEAKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIkpTSURCSW5kZXguaCIK
ICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5o
PgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZp
bHRlckNvbmRpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0
ZXJDb25kaXRpb24uY3BwCmluZGV4IGQxYjQ3MjEzNTFlYjFiMmJmOGNlMGNkNDczZmVlMTQ0OTE0
YzUzYWIuLmYxZGFhOGExMDQ2YjMzZmEzZDM1YTY2YzU1OWVlMGZhZjJhZGU2NDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNw
cApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIk5vZGVGaWx0ZXIuaCIKICNpbmNsdWRlIDxy
dW50aW1lL0Vycm9yLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KKyNpbmNsdWRlIDxy
dW50aW1lL0pTU3RyaW5nSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtl
TGlzdHMudHh0CmluZGV4IGZiNGFkOTUxODBkOGU1OTM3ODJmOGJlYTRhODlmYmU0MzM5ZjllNTYu
LjFiODRmMmI2OGRiMzAzY2QxOGIzNzgwNjQ2MDI1NmQxN2NhNzExZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3Rz
LnR4dApAQCAtNjYsNiArNjYsNyBAQCBzZXQoV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKICAg
ICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L0FQSSIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L2Fzc2VtYmxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J5dGVjb2RlIgorICAgICIk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElS
fS9ieXRlY29tcGlsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9kaXNhc3NlbWJsZXIi
CiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9kZmciCkBAIC03OCw2ICs3OSw3IEBAIHNldChX
ZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcHJv
ZmlsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9ydW50aW1lIgogICAgICIke1dURl9E
SVJ9IgorICAgICIke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9IgogICAgICIk
e0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0iCiAgICAgIiR7REVSSVZFRF9TT1VSQ0VTX0RJ
Un0vRm9yd2FyZGluZ0hlYWRlcnMiCiAgICAgIiR7Q01BS0VfQklOQVJZX0RJUn0iCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtl
TGlzdHMudHh0CmluZGV4IDY3MTgxYzg0ZmZiMTYxNTNmNmMzZTQ4OTg1ZjA5M2VlYjQ4NWFlOGMu
LmRmOGYxMmUzMmUyOGNhNGMzN2Q1MzY4MWMzMWI3MDA1ZGJlZTM1MWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlz
dHMudHh0CkBAIC0xMjEsNiArMTIxLDcgQEAgc2V0KFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklF
UwogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vQVBJIgogICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vYXNzZW1ibGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0ZWNvZGUiCisg
ICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucyIKICAgICAiJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9L2J5dGVjb21waWxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2NvbGxlY3Rv
ci9oYW5kbGVzIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGZnIgpAQCAtMTMzLDYgKzEz
NCw3IEBAIHNldChXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L3J1bnRpbWUiCiAgICAgIiR7V1RGX0RJUn0iCiAgICAgIiR7REVSSVZFRF9TT1VS
Q0VTX0RJUn0iCisgICAgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iCiAg
ICAgIiR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfSIKICAgICAiJHtERVJJVkVEX1NPVVJD
RVNfV0VCS0lUMl9ESVJ9IgogICAgICIke0RFUklWRURfU09VUkNFU19XRUJLSVQyX0RJUn0vaW5j
bHVkZSIKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9ndGVzdC9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9jbWFrZS9ndGVzdC9DTWFrZUxpc3RzLnR4dAppbmRleCA1NmJmNDQ3ODI1MTg2ODc2ZjI1
NzExODYwOWY0MzUyMTgzNGVjOTU5Li43ZjUyMWE4OThiODlkOGRlYjMwOWM2ZTBmYmEwOGEzM2Y2
NWViNWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvZ3Rlc3QvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL2NtYWtlL2d0ZXN0L0NNYWtlTGlzdHMudHh0CkBAIC02LDYgKzYsNyBAQAogaW5j
bHVkZV9kaXJlY3Rvcmllcygke1RISVJEUEFSVFlfRElSfS9ndGVzdAogICAgICR7VEhJUkRQQVJU
WV9ESVJ9L2d0ZXN0L2luY2x1ZGUKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0KKyAgICAke0RF
UklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9CiAgICAgJHtXVEZfRElSfQogKQogCmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0NNYWtlTGlzdHMudHh0CmluZGV4IDdiOGFhMTg0OTZhYjE5N2M2ZDhkZTkz
YTFiN2I5ZTQ0MzgwOWJiZjEuLjVkMzY4YWE2MTljYWY0MjI5OWRkNDc3NTYzMWI1NDcyNGUyZjJj
ZjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0NNYWtlTGlzdHMudHh0CkBAIC01OCw2ICs1OCw3IEBAIHNl
dChEdW1wUmVuZGVyVHJlZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9L3Byb2ZpbGVyCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3J1bnRpbWUKICAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMKKyAgICAie0RFUklWRURfU09V
UkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9CiAgICAgJHtUT09MU19ESVJ9L0R1bXBSZW5kZXJUcmVl
CiAgICAgJHtXVEZfRElSfQogICAgICR7Q01BS0VfU09VUkNFX0RJUn0vU291cmNlCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dAppbmRleCA1YTM0NmQ3NDA1M2QxNTk1MjMzMTBhZDk2
ZjI3MDZhZWI0NzUwMzllLi5jYjRiMTkxODEzNzA4Y2E0YTJhNzhkNzMyNzgxNjY3ODA1MTRjMjkz
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0CisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQKQEAgLTI4LDYgKzI4LDcgQEAg
c2V0KFdlYktpdFRlc3RSdW5uZXJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICR7V0VCS0lUX1RF
U1RSVU5ORVJfRElSfS9JbmplY3RlZEJ1bmRsZS9hdGsKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0KICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMKKyAgICAke0RF
UklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9CiAgICAgJHtXRUJDT1JFX0RJUn0vZWRp
dGluZwogICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtCiAgICAgJHtXRUJDT1JFX0RJUn0vcGxh
dGZvcm0vZ3JhcGhpY3MKZGlmZiAtLWdpdCBhL1Rvb2xzL1dpbkNFTGF1bmNoZXIvQ01ha2VMaXN0
cy50eHQgYi9Ub29scy9XaW5DRUxhdW5jaGVyL0NNYWtlTGlzdHMudHh0CmluZGV4IDkxNGJiMmJk
Yzk2YjBiNThlNThmMmYzZTViMzM2M2Y4ZDM0ZjMzNWQuLmIxOWZjNjFkNDA0NTc0MzU4OTEzNmE4
ZjBlMWViYzViMGFhMjkxZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dpbkNFTGF1bmNoZXIvQ01ha2VM
aXN0cy50eHQKKysrIGIvVG9vbHMvV2luQ0VMYXVuY2hlci9DTWFrZUxpc3RzLnR4dApAQCAtNiw2
ICs2LDcgQEAgc2V0KFdpbkNFTGF1bmNoZXJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dF
QkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3b3JrIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9y
bS90ZXh0IgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0iCisgICAgIiR7REVSSVZFRF9TT1VS
Q0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iCiAgICAgIiR7V1RGX0RJUn0iCiAgICAgIiR7REVSSVZF
RF9TT1VSQ0VTX0RJUn0iCiAgICAgIiR7Q01BS0VfQklOQVJZX0RJUn0iCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODZiNzU2
ZTlhZWZjODJjNWEzZjliYjk5MGViNzEwMDRhZTZlYTNhZi4uOWJiYzQwZTM2ZTIyOTFmYTRiYTlh
ZThjNzc5YTRkZDRiNmU4MDc1NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE0LTAxLTI5ICBP
bGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJs
ZSB0byBpbXBsZW1lbnQgSlMgYnVpbHRpbnMgaW4gSlMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzg4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgdGhlIHRlc3QgcmVzdWx0cyBmb3IgbmV3
IGVycm9yIG1lc3NhZ2VzIChub3cgdGhhdCB0aGV5J3JlCisgICAgICAgIGFjdHVhbGx5IGhlbHBm
dWwpLCBhbmQgYWRkZWQgYSBqcy1yZWdyZXNzIHRlc3QgdG8gdHJhY2sgcGVyZm9ybWFuY2UuCisK
KyAgICAgICAgKiBqcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvZG9t
L2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9y
ZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGpzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5qczogQWRk
ZWQuCisgICAgICAgICh0ZXN0MSk6CisgICAgICAgICh0ZXN0Mik6CisgICAgICAgICh0ZXN0Myk6
CisKIDIwMTQtMDEtMzEgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CiAKICAgICAg
ICAgW0NTUyBTaGFwZXNdIEltYWdlIHZhbHVlZCBzaGFwZSBjYW4gZmFpbApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMv
YXJyYXktZXZlcnktZXhwZWN0ZWQudHh0CmluZGV4IDU0MWI4YzM1OGYwNjhhMGNlYTg4MmMxMDUx
NzUzMjUxMTRjZDMzZjcuLmNjYTM2M2RjZTU4ZmJhOTVhNThjZTQ2ZmNiNDhjMzhiZjU4YWRmNTkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9qcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQKQEAgLTMwLDEyICszMCwx
MiBAQCBQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoaXNCaWdFbm91Z2hBbmRFeGNlcHRp
b24pIHRocmV3IGV4Y2VwdGlvbiBleGNlcHRpbwogUEFTUyBbMTIsIDU0LCAxOCwgMTMwLCA0NF0u
ZXZlcnkoaXNCaWdFbm91Z2hBbmRFeGNlcHRpb24pIHRocmV3IGV4Y2VwdGlvbiBleGNlcHRpb24g
ZnJvbSBmdW5jdGlvbi4KIAogNS4wIFdyb25nIFR5cGUgZm9yIENhbGxiYWNrIFRlc3QKLVBBU1Mg
WzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSg1KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBU
eXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCd3cm9uZycpIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0
NF0uZXZlcnkobmV3IE9iamVjdCgpKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVy
cm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KG51bGwpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnko
dW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBb
MTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlw
ZSBlcnJvci4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSg1KSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1
bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCd3cm9uZycpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJl
IGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkobmV3IE9iamVjdCgp
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJh
Y2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KG51
bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxs
YmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnko
dW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZl
cnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRd
LmV2ZXJ5KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5
IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KIAogNi4wIEVhcmx5IEV4aXQgKCJTaG9ydCBD
aXJjdWl0aW5nIikKIFBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShpc0JpZ0Vub3VnaFNo
b3J0Q2lyY3VpdCkgaXMgZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9hcnJh
eS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20v
YXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CmluZGV4IDJjMmE2OGNiMTA2
ZGExMGYwODZiMjJjNWJmMmJmNWM4ZmU3OWUzM2UuLjVkOWVjYjc1YThkYTc5YmE2NTYwNWU3ZWI5
Y2Y4ZmMyNWZlMThhZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2RvbS9hcnJheS1wcm90
b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2Fy
cmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApAQCAtMTUsNyArMTUsNyBAQCBQ
QVNTIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHVuZGVmaW5lZCwgMCwgMSkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogdW5kZQogUEFTUyBBcnJheS5wcm90b3R5cGUuc29ydC5jYWxsKHVu
ZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBv
YmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5zb3J0LmNhbGwodW5kZWZpbmVkKScp
LgogUEFTUyBBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwodW5kZWZpbmVkLCAwLCAxKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVh
dGluZyAnQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKHVuZGVmaW5lZCwgMCwgMSknKS4KIFBB
U1MgQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuY2FsbCh1bmRlZmluZWQsIHt9KSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAn
QXJyYXkucHJvdG90eXBlLnVuc2hpZnQuY2FsbCh1bmRlZmluZWQsIHt9KScpLgotUEFTUyBBcnJh
eS5wcm90b3R5cGUuZXZlcnkuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJy
YXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZyknKS4KK1BBU1MgQXJy
YXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZykgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8
IG5vdCBiZSB1bmRlZmluZWQuCiBQQVNTIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwodW5k
ZWZpbmVkLCB0b1N0cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlz
IG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwo
dW5kZWZpbmVkLCB0b1N0cmluZyknKS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLnNvbWUuY2FsbCh1
bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQg
aXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnNvbWUuY2FsbCh1
bmRlZmluZWQsIHRvU3RyaW5nKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxs
KHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5v
dCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwodW5k
ZWZpbmVkLCAwKScpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1w
cm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJh
eS1wcm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyOTBjMGVlZmY4ZGU0
MjE4MzNkOTJkMjdlOTUyNDE5MTc2MDRiOTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMCBAQAorSlNSZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeQorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbCBiL0xheW91dFRlc3Rz
L2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU1Y2Mx
NzFjNDg3NWEzNTg1YmYxNGU1NDE1ZjVjZDBlNTgxZDU0NAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwKQEAgLTAsMCAr
MSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Jl
Z3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyYXkt
cHJvdG90eXBlLWV2ZXJ5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVn
cmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5q
cyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5LXByb3RvdHlwZS1l
dmVyeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yOTRhYTE2MWMwY2U5OGIyYWIxOGEzYTFhMWYwZGZhYWM5ZDdk
MmUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVz
dHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzCkBAIC0wLDAgKzEsMjkgQEAKK3ZhciByZXN1bHQg
PSAwOworZnVuY3Rpb24gdGVzdDEoYSkgeworICAgIHJlc3VsdCA8PCAxOworICAgIHJlc3VsdCsr
OworICAgIHJldHVybiB0cnVlOworfQorZnVuY3Rpb24gdGVzdDIoYSxiKSB7CisgICAgcmVzdWx0
IF49IDM7CisgICAgcmVzdWx0ICo9IDM7CisgICAgcmV0dXJuIHRydWU7Cit9CitmdW5jdGlvbiB0
ZXN0MyhhLGIsYykgeworICAgIHJlc3VsdCBePSByZXN1bHQgPj4gMTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwordmFyIHJlc3VsdCA9IDA7Cit2YXIgYXJyYXkgPSBbXQorZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDAwMDA7ICsraSkKKyAgICBhcnJheVtpXSA9IDE7CisKK2ZvciAodmFyIGkgPSAwOyBp
IDwgMTA7IGkrKykgeworICAgIGFycmF5LmV2ZXJ5KHRlc3QxKTsKKyAgICBhcnJheS5ldmVyeSh0
ZXN0Mik7CisgICAgYXJyYXkuZXZlcnkodGVzdDMpOworfQorCitpZiAocmVzdWx0ICE9IDE0Mjg4
MTA0OTYpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OwpkaWZmIC0t
Z2l0IGEvR05VbWFrZWZpbGUuYW0gYi9HTlVtYWtlZmlsZS5hbQppbmRleCA3M2ZjNDkyOGM0ZGQ0
OWI1NDk4NjliNTA2NzhjNmJkZTc0ZjQ0NzYwLi4wOGM5MTE1NDI2MDUwMGRlM2ZmMDRiMDIwY2Uw
ZDYwZjk4ZThjZmU4IDEwMDY0NAotLS0gYS9HTlVtYWtlZmlsZS5hbQorKysgYi9HTlVtYWtlZmls
ZS5hbQpAQCAtNjgsNiArNjgsNyBAQCBBTExfTU9GSUxFUyA6PQogZG9tX2JpbmRpbmdfaWRscyA6
PQogd3RmX3NvdXJjZXMgOj0KIGphdmFzY3JpcHRjb3JlX2hfYXBpIDo9CitqYXZhc2NyaXB0Y29y
ZV9idWlsdGluc19qc19ub3NvdXJjZXMgOj0KIGphdmFzY3JpcHRjb3JlX2NwcGZsYWdzOj0KIGph
dmFzY3JpcHRjb3JlX2NmbGFncyA6PQogamF2YXNjcmlwdGNvcmVfc291cmNlcyA6PQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222835</attachid>
            <date>2014-01-31 12:28:49 -0800</date>
            <delta_ts>2014-01-31 12:50:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140131122845.patch</filename>
            <type>text/plain</type>
            <size>208328</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
Yzc1MjcwNTQ1OWY5NmM5ODMwYzk3NTQxZmIyZjliMTU2MjJjY2I0Li4yNzhkZmE3Njg0NTQ2NjRi
NGM4M2M5N2QyZWUwOTdiZjIzYzA2NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
VGhlIHJlc3VsdCBvZiB0aGlzIHJlZmFjdG9yaW5nCisgICAgICAgIGlzIHRoYXQgQ29tbW9uSWRl
bnRpZmllcnMsIGFuZCBhIGZldyBvdGhlciBtaXNjZWxsYW5lb3VzIGhlYWRlcnMgbm93CisgICAg
ICAgIG5lZWQgdG8gYmUgaW5jbHVkZWQgZGlyZWN0bHkgYXMgdGhleSB3ZXJlIGZvcm1lcmx5IGNh
cHR1cmVkIHRocm91Z2ggb3RoZXIKKyAgICAgICAgcGF0aHMuCisKKyAgICAgICAgSW4gYWRkaXRp
b24gdGhpcyBhZGRzIGEgZmxhZyB0byB0aGUgTG9va3VwIHRhYmxlJ3MgaGFzaGVudHJ5IHRvIGlu
ZGljYXRlCisgICAgICAgIHRoYXQgYSBzdGF0aWMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgYmFja2Vk
IGJ5IEpTLiBUaGVyZSBpcyB0aGVuIGEgbG90IG9mCisgICAgICAgIGxvZ2ljIHRvIHRocmVhZCB0
aGUgc3BlY2lhbCBuYXR1cmUgb2YgdGhlIGZ1bmN0b24gdG8gd2hlcmUgaXQgbWF0dGVycy4KKyAg
ICAgICAgVGhpcyBhbGxvd3MgdG9TdHJpbmcoKSwgLmNhbGxlciwgZXRjIHRvIG1pbWljIHRoZSBi
ZWhhdmlvdXIgb2YgYSBob3N0CisgICAgICAgIGZ1bmN0aW9uLgorCisgICAgICAgIE5vdGVzIG9u
IHdyaXRpbmcgYnVpbHRpbnM6CisgICAgICAgICAtIEVhY2ggZnVuY3Rpb24gaXMgY29tcGlsZWQg
aW5kZXBlbmRlbnRseSBvZiB0aGUgb3RoZXJzLCBhbmQgdGhvc2UKKyAgICAgICAgICAgaW1wbGVt
ZW50YXRpb25zIGNhbm5vdCBjdXJyZW50bHkgY2FwdHVyZSBhbGwgZ2xvYmFsIHByb3BlcnRpZXMg
KGFzCisgICAgICAgICAgIHRoYXQgY291bGQgYmUgcG90ZW50aWFsbHkgdW5zYWZlKS4gSWYgYSBm
dW5jdGlvbiBkb2VzIGNhcHR1cmUgYQorICAgICAgICAgICBnbG9iYWwgd2Ugd2lsbCBkZWxpYmVy
YXRlbHkgY3Jhc2guCisgICAgICAgICAtIEZvciB0aG9zZSAiZ2xvYmFsIiBwcm9wZXJ0aWVzIHRo
YXQgd2UgZG8gd2FudCBhY2Nlc3MgdG8sIHdlIHVzZQorICAgICAgICAgICB0aGUgQCBwcmVmaXgs
IGUuZy4gT2JqZWN0KHRoaXMpIGJlY29tZXMgQE9iamVjdCh0aGlzKS4gVGhlIEAgaWRlbnRpZmll
cnMKKyAgICAgICAgICAgYXJlIHByaXZhdGUgbmFtZXMsIGFuZCBiZWhhdmUganVzdCBsaWtlIHJl
Z3VsYXIgcHJvcGVydGllcywgb25seQorICAgICAgICAgICB3aXRob3V0IHRoZSByaXNrIG9mIGFk
dWx0ZXJhdGlvbi4gQWdhaW4sIGluIHRoZSBAT2JqZWN0IGNhc2UsIHdlCisgICAgICAgICAgIGV4
cGxpY2l0bHkgZHVwbGljYXRlIHRoZSBPYmplY3RDb25zdHJ1Y3RvciByZWZlcmVuY2Ugb24gdGhl
IEdsb2JhbE9iamVjdAorICAgICAgICAgICBzbyB0aGF0IHdlIGhhdmUgZ3VhcmFudGVlZCBhY2Nl
c3MgdG8gdGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhlCisgICAgICAgICAgIGNvbnN0cnVjdG9y
LgorICAgICAgICAgLSBjYWxsLCBhcHBseSwgZXZhbCwgYW5kIEZ1bmN0aW9uIGFyZSBhbGwgcmVq
ZWN0ZWQgaWRlbnRpZmllcnMsIGFnYWluCisgICAgICAgICAgIHRvIHByZXZlbnQgYW55dGhpbmcg
ZnJvbSBhY2NpZGVudGFsbHkgdXNpbmcgYW4gYWR1bHRlcmF0ZWQgb2JqZWN0LgorICAgICAgICAg
ICBJbnN0ZWFkIEBjYWxsIGFuZCBAYXBwbHkgYXJlIGF2YWlsYWJsZSwgYW5kIGhhcHBpbHkgdGhl
eSBjb21wbGV0ZWx5CisgICAgICAgICAgIGRyb3AgdGhlIG5lcV9wdHIgaW5zdHJ1Y3Rpb24gYXMg
dGhleSdyZSBkZWZpbmVkIGFzIGFsd2F5cyBiZWluZyB0aGUKKyAgICAgICAgICAgb3JpZ2luYWwg
Y2FsbC9hcHBseSBmdW5jdGlvbnMuCisKKyAgICAgICAgVGhlc2UgcmVzdHJpY3Rpb25zIGFyZSBq
dXN0IGludGVuZGVkIHRvIG1ha2UgaXQgaGFyZGVyIHRvIGFjY2lkZW50YWxseQorICAgICAgICBt
YWtlIGNoYW5nZXMgdGhhdCBhcmUgaW5jb3JyZWN0IChmb3IgaW5zdGFuY2UgY2FsbGluZyB3aGF0
ZXZlciBoYXMgYmVlbgorICAgICAgICBhc3NpZ25lZCB0byBnbG9iYWwuT2JqZWN0LCBpbnN0ZWFk
IG9mIHRoZSBvcmlnaW5hbCBjb25zdHJ1Y3RvciBmdW5jdGlvbikuCisgICAgICAgIEhvd2V2ZXIs
IG1ha2luZyBhIG1pc3Rha2UgbGlrZSB0aGlzIHNob3VsZCByZXN1bHQgaW4gYSBwdXJlbHkgc2Vt
YW50aWMKKyAgICAgICAgZXJyb3IgYXMgZnVuZGFtZW50YWxseSB0aGVzZSBmdW5jdGlvbnMgYXJl
IHRyZWF0ZWQgYXMgdGhvdWdoIHRoZXkgd2VyZQorICAgICAgICByZWd1bGFyIEpTIGNvZGUgaW4g
dGhlIGhvc3QgZ2xvYmFsLCBhbmQgaGF2ZSBubyBtb3JlIHByaXZpbGVnZXMgdGhhbgorICAgICAg
ICBhbnkgb3RoZXIgSlMuCisKKyAgICAgICAgVGhlIGluaXRpYWwgcHJvb2Ygb2YgY29uY2VwdCBp
cyBBcnJheS5wcm90b3R5cGUuZXZlcnksIHRoaXMgc2hvd3MgYSA2NSUKKyAgICAgICAgcGVyZm9y
bWFuY2UgaW1wcm92ZW1lbnQsIGFuZCB0aGF0IGltcHJvdmVtZW50IGlzIHNpZ25pZmljYW50bHkg
aHVydCBieQorICAgICAgICBvdXIgcG9vciBvcHRpbWlzYXRpb24gb2Ygb3BfaW4uCisKKyAgICAg
ICAgQXMgdGhpcyBpcyBzdWNoIGEgbGltaXRlZCBmdW5jdGlvbiwgd2UgaGF2ZSBub3QgeWV0IGV4
cG9ydGVkIGFsbCBzeW1ib2xzCisgICAgICAgIHRoYXQgd2UgY291bGQgcG9zc2libHkgbmVlZCwg
YnV0IGFzIHdlIGltcGxlbWVudCBtb3JlLCB0aGUgbGlrZWxpaG9vZAorICAgICAgICBvZiBlbmNv
dW50ZXJpbmcgbWlzc2luZyBmZWF0dXJlcyB3aWxsIHJlZHVjZS4KKworICAgICAgICBUaGlzIGRp
ZCByZXF1aXJlIGJyZWFraW5nIG91dCBhIEpTU3RyaW5nSW5saW5lcyBoZWFkZXIsIGFuZCByZXF1
aXJlZAorICAgICAgICBmaXhpbmcgYSBmZXcgb2JqZWN0cyB0aGF0IHdlcmUgdHJ5aW5nIHRvIHVz
aW5nIFByb3BlcnR5TmFtZTo6cHVibGljTmFtZQorICAgICAgICByYXRoZXIgdGhhbiBQcm9wZXJ0
eU5hbWU6OnVpZC4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6
CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQpOgorICAg
ICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZSk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGljRnVuY3Rpb25HZXR0
ZXIpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGxiYWNrR2V0
dGVyKToKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy5tYWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
YnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzOgorICAgICAgICAoZXZlcnkpOgorICAgICAgICAq
IGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpC
dWlsdGluRXhlY3V0YWJsZXM6OkJ1aWx0aW5FeGVjdXRhYmxlcyk6CisgICAgICAgIChKU0M6OkJ1
aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ1
aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0
YWJsZXM6OmNyZWF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdX
YXRjaHBvaW50LmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAoSlND
OjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUp
OgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9y
KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToK
KyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpF
eGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OnRvU3RyaWN0bmVzcyk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjppc0J1aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChKU0M6OlVubGlua2Vk
Q29kZUJsb2NrOjppc0J1aWx0aW5GdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzQnVpbHRpbkZ1bmN0aW9u
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Om1ha2VGdW5jdGlvbik6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkNhbGxG
dW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpBcHBseUZ1
bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogY3JlYXRlX2hhc2hf
dGFibGU6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGdlbmVy
YXRlLWpzLWJ1aWx0aW5zOiBBZGRlZC4KKyAgICAgICAgKGdldENvcHlyaWdodCk6CisgICAgICAg
IChnZXRGdW5jdGlvbnMpOgorICAgICAgICAoZ2VuZXJhdGVDb2RlKToKKyAgICAgICAgKG1hbmds
ZU5hbWUpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKElkZW50aWZp
ZXIpOgorICAgICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAgICAgICAoU291cmNlQ29kZSk6Cisg
ICAgICAgIChVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChWTSk6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAqIGludGVycHJldGVy
L1Byb3RvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgICog
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAqIGpzYy5jcHA6CisgICAg
ICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAqIHBhcnNlci9BU1RCdWls
ZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKToK
KyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6TGV4
ZXIpOgorICAgICAgICAoSlNDOjppc1NhZmVJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4
ZXI8TENoYXI+OjpwYXJzZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpMZXhlcjxVQ2hhcj46
OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpsZXgpOgorICAgICAg
ICAqIHBhcnNlci9MZXhlci5oOgorICAgICAgICAoSlNDOjppc1NhZmVJZGVudGlmaWVyKToKKyAg
ICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIpOgorICAgICAgICAqIHBh
cnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpzZXRDbG9zZWRWYXJp
YWJsZXMpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpTY29wZU5v
ZGU6OmNhcHR1cmVkVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6U2NvcGVOb2RlOjpzZXRDbG9z
ZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQcm9ncmFtTm9kZTo6Y2xvc2VkVmFyaWFibGVz
KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OlBhcnNlcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUlubmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmRpZEZpbmlzaFBhcnNp
bmcpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cHJpbnRVbmV4cGVjdGVkVG9r
ZW5UZXh0KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
OjpnZXRVc2VkVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVz
Lmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlclRva2Vucy5oOgorICAgICAgICAqIHJ1bnRpbWUv
QXJnTGlzdC5jcHA6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvQXJndW1lbnRzLmg6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHNJdGVyYXRv
ckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0
RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Q29t
bW9uSWRlbnRpZmllcnMpOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Z2V0UHJp
dmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Z2V0UHVibGljTmFt
ZSk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQ
YXRoc0V4Y2VwdGlvbnMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5j
cHA6CisgICAgICAgIChKU0M6OmNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6
ZXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6ZXhlY3V0
YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1
bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6ZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9K
U0FjdGl2YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxl
R2V0KToKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dCk6CisgICAg
ICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyk6Cisg
ICAgICAgICogcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcDoKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlND
ZWxsSW5saW5lcy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAg
IChKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZSk6CisgICAgICAgIChKU0M6OkpTRnVu
Y3Rpb246OnNvdXJjZUNvZGUpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjppc0hvc3RPckJ1
aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzQnVpbHRpbkZ1bmN0
aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKToKKyAgICAgICAg
KEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVy
dHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmg6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
OjpyZXNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjpvYmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpzeW1ib2xUYWJsZUhhc1Byb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGVsZXRlKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5j
cHA6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAg
ICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90
KToKKyAgICAgICAgKEpTQzo6aW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKToKKyAgICAg
ICAgKEpTQzo6SlNWYWx1ZTo6dG9XVEZTdHJpbmdJbmxpbmUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNTeW1ib2xUYWJsZU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTU3ltYm9sVGFibGVPYmpl
Y3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgICAgIERvbid0IHJlcG9y
dCBwcml2YXRlIG5hbWVzLgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5o
OgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZUdldCk6CisgICAgICAgIChKU0M6OnN5bWJvbFRh
YmxlUHV0KToKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyk6Cisg
ICAgICAgICogcnVudGltZS9Mb29rdXAuY3BwOgorICAgICAgICAoSlNDOjpzZXRVcFN0YXRpY0Z1
bmN0aW9uU2xvdCk6CisgICAgICAgICogcnVudGltZS9Mb29rdXAuaDoKKyAgICAgICAgKEpTQzo6
SGFzaEVudHJ5OjpidWlsdGluR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpw
cm9wZXJ0eUdldHRlcik6CisgICAgICAgIChKU0M6Okhhc2hFbnRyeTo6cHJvcGVydHlQdXR0ZXIp
OgorICAgICAgICAoSlNDOjpIYXNoVGFibGU6OmVudHJ5KToKKyAgICAgICAgKEpTQzo6Z2V0U3Rh
dGljUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6Z2V0U3RhdGljVmFsdWVTbG90KToKKyAg
ICAgICAgKEpTQzo6cHV0RW50cnkpOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaDoK
KyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVn
RXhwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5jcHA6CisgICAgICAgICogcnVudGltZS9T
dHJ1Y3R1cmUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpW
TTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6Vk06OmJ1aWx0
aW5FeGVjdXRhYmxlcyk6CisKIDIwMTQtMDEtMzEgIEdhYm9yIFJhcGNzYW55aSAgPHJnYWJvckB3
ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCB0aGUgQVJNIFRodW1iMiBidWlsZCBhZnRlciBqc0NT
dGFjayBicmFuY2ggbWVyZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzYTNhMTczNTg5ZTJhZTMyMzk1ZWNlOTdj
MmU3N2UwMjk1YWI3OGY1Li5mOTBlZGEyYzI3YTRiMjFhYWIxNmE1NTBlZWE5YmU3NDI3MTg1MTU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8
b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVu
dCBKUyBidWlsdGlucyBpbiBKUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI3ODg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRpbmcgZm9yIHRoZSBuZXdseSByZXF1aXJlZCBoZWFkZXJzLgorCisg
ICAgICAgIFRlc3Q6IGpzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwKKworICAg
ICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg6IEFkZGVk
LgorICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5j
cHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwOgorCiAyMDE0LTAxLTMxICBIYW5zIE11bGxl
ciAgPGhtdWxsZXJAYWRvYmUuY29tPgogCiAgICAgICAgIFtDU1MgU2hhcGVzXSBJbWFnZSB2YWx1
ZWQgc2hhcGUgY2FuIGZhaWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggNWJlMDUzZjFlMDg2YjQzZTY4NmMzNjc0
ZGFlN2M1MTYwNWEyODZlNy4uMGVjZWQ1MWYzZTJkNWI2MjFkYWRmMDU3NDlmNWU3NDY2YTA2ZjUy
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0RnVuY3Rpb25zLmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8
UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZQogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKICAgICBSZWZQ
dHI8T3BhcXVlSlNTdHJpbmc+IHByb3BlcnR5TmFtZVJlZjsKICAgICAKLSAgICBpZiAoU3RyaW5n
SW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5n
SW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NS
ZWYganNDbGFzcyA9IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBq
c0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgLy8gb3B0aW9uYWwgb3B0aW1pemF0
aW9uIHRvIGJ5cGFzcyBnZXRQcm9wZXJ0eSBpbiBjYXNlcyB3aGVuIHdlIG9ubHkgbmVlZCB0byBr
bm93IGlmIHRoZSBwcm9wZXJ0eSBleGlzdHMKICAgICAgICAgICAgIGlmIChKU09iamVjdEhhc1By
b3BlcnR5Q2FsbGJhY2sgaGFzUHJvcGVydHkgPSBqc0NsYXNzLT5oYXNQcm9wZXJ0eSkgewpAQCAt
MjI4LDcgKzIyOCw3IEBAIHZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiAgICAgUmVmUHRyPE9wYXF1
ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgSlNWYWx1ZVJlZiB2YWx1ZVJlZiA9IHRv
UmVmKGV4ZWMsIHZhbHVlKTsKICAgICAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3Bl
cnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3Bl
cnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IHRoaXNP
YmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFz
cykgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0U2V0UHJvcGVydHlDYWxsYmFjayBzZXRQcm9w
ZXJ0eSA9IGpzQ2xhc3MtPnNldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9w
ZXJ0eU5hbWVSZWYpCkBAIC0zNDMsNyArMzQzLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBh
cmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm8K
ICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CiAgICAgUmVmUHRy
PE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0cmluZ0lt
cGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0lt
cGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVm
IGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganND
bGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdERlbGV0ZVByb3Bl
cnR5Q2FsbGJhY2sgZGVsZXRlUHJvcGVydHkgPSBqc0NsYXNzLT5kZWxldGVQcm9wZXJ0eSkgewog
ICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lUmVmKQpAQCAtNTY0LDcgKzU2NCw3IEBA
IEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZShFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwCiB7CiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRv
UmVmKHRoaXMpOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1l
LnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1l
LnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gY2xhc3NSZWYoKTsg
anNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgICAgICBp
ZiAoT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXMgPSBqc0NsYXNz
LT5zdGF0aWNWYWx1ZXMoZXhlYykpIHsKICAgICAgICAgICAgICAgICBpZiAoU3RhdGljVmFsdWVF
bnRyeSogZW50cnkgPSBzdGF0aWNWYWx1ZXMtPmdldChuYW1lKSkgewpAQCAtNjAwLDcgKzYwMCw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGljRnVuY3Rp
b25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFCiAgICAgaWYgKFBhcmVudDo6Z2V0T3duUHJvcGVy
dHlTbG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdDIpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QyLmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSkpOwog
Ci0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7
CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAg
ICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqLT5jbGFzc1JlZigpOyBqc0NsYXNz
OyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChPcGFx
dWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGUqIHN0YXRpY0Z1bmN0aW9ucyA9IGpzQ2xhc3Mt
PnN0YXRpY0Z1bmN0aW9ucyhleGVjKSkgewogICAgICAgICAgICAgICAgIGlmIChTdGF0aWNGdW5j
dGlvbkVudHJ5KiBlbnRyeSA9IHN0YXRpY0Z1bmN0aW9ucy0+Z2V0KG5hbWUpKSB7CkBAIC02MjYs
NyArNjI2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjYWxs
YmFja0dldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWQKICAgICBKU09iamVjdFJlZiB0aGlz
UmVmID0gdG9SZWYodGhpc09iaik7CiAgICAgUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0
eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUu
cHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUu
dWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqLT5jbGFz
c1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAg
ICAgICAgIGlmIChKU09iamVjdEdldFByb3BlcnR5Q2FsbGJhY2sgZ2V0UHJvcGVydHkgPSBqc0Ns
YXNzLT5nZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lUmVm
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDI3YmM0YzE3ZjNkZmVlYjYx
ZDI1MjMyM2ZkODc4YzQ0NzgwZjc0YzUuLmI0M2UwNWM4MmJiOThkNThlZmJiOGM1OGFiOWE4M2Yx
YTc2NTE3NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUsNiArNSw3
IEBAIHNldChKYXZhU2NyaXB0Q29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7SkFWQVND
UklQVENPUkVfRElSfS9Gb3J3YXJkaW5nSGVhZGVycyIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L2Fzc2VtYmxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2JpbmRpbmdzIgorICAg
ICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMiCiAgICAgIiR7SkFWQVNDUklQVENPUkVf
RElSfS9ieXRlY29kZSIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J5dGVjb21waWxlciIK
ICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2RmZyIKQEAgLTUyLDYgKzUzLDggQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9TY3JpcHRPYmplY3QuY3BwCiAgICAg
YmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCiAKKyAgICBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJs
ZXMuY3BwCisKICAgICBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcAogICAgIGJ5
dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2su
Y3BwCkBAIC03MDcsNyArNzEwLDcgQEAgc2V0KEhBU0hfTFVUX0dFTkVSQVRPUiAke0NNQUtFX0NV
UlJFTlRfU09VUkNFX0RJUn0vY3JlYXRlX2hhc2hfdGFibGUpCiBtYWNybyhHRU5FUkFURV9IQVNI
X0xVVCBfaW5wdXQgX291dHB1dCkKICAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgICAgIE9V
VFBVVCAke19vdXRwdXR9Ci0gICAgICAgIERFUEVORFMgJHtIQVNIX0xVVF9HRU5FUkFUT1J9ICR7
X2lucHV0fQorICAgICAgICBERVBFTkRTICR7SEFTSF9MVVRfR0VORVJBVE9SfSAke19pbnB1dH0g
JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zCiAgICAgICAg
IENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7SEFTSF9MVVRfR0VORVJBVE9SfSAke19pbnB1
dH0gLWkgPiAke19vdXRwdXR9CiAgICAgICAgIFZFUkJBVElNKQogICAgIGxpc3QoQVBQRU5EIEph
dmFTY3JpcHRDb3JlX0hFQURFUlMgJHtfb3V0cHV0fSkKQEAgLTczNiw2ICs3MzksNyBAQCBzZXQo
SmF2YVNjcmlwdENvcmVfRk9SV0FSRElOR19IRUFERVJTX0RJUkVDVE9SSUVTCiAgICAgeWFycgog
CiAgICAgY29sbGVjdG9yL2hhbmRsZXMKKyAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBU
Q09SRV9ESVJ9CiApCiAKIHNldChKYXZhU2NyaXB0Q29yZV9GT1JXQVJESU5HX0hFQURFUlNfRklM
RVMKQEAgLTc2Myw4ICs3NjcsMTEgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0ZPUldBUkRJTkdfSEVB
REVSU19GSUxFUwogICAgIGFzc2VtYmxlci9MaW5rQnVmZmVyLmgKICAgICBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXIuaAogICAgIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAorICAg
IGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAogICAgIGppdC9HUFJJbmZvLmgKICAg
ICBydW50aW1lL1ZNLmgKKworICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vSlNDQnVpbHRpbnMuaAogKQogCiAKQEAgLTgxNSwxNiArODIyLDI3IEBAIGFkZF9jdXN0b21f
Y29tbWFuZCgKICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENv
cmVfSU5TUEVDVE9SX1NDUklQVFNfRElSfS9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5ICR7REVS
SVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlMuanNvbiAtLW91dHB1
dF9oX2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIgLS1vdXRwdXRf
Y3BwX2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIgLS1vdXRwdXRf
anNfZGlyICIke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9IiAtLW91dHB1dF90
eXBlIEphdmFTY3JpcHQgLS13cml0ZV9hbHdheXMgJiYgbWtkaXIgLXAgJHtERVJJVkVEX1NPVVJD
RVNfSkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IgJiYgY3AgJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oICR7REVS
SVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNGcm9udGVuZERpc3Bh
dGNoZXJzLmggJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JK
U1R5cGVCdWlsZGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5z
cGVjdG9yCiAgICAgVkVSQkFUSU0pCiAKKyMgSlNDQnVpbHRpbnMKK2ZpbGUoR0xPQiBKU0NCdWls
dGluc19qc19maWxlcyAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2J1aWx0aW5zLyouanMi
KQorYWRkX2N1c3RvbV9jb21tYW5kKAorICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFT
Q1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuY3BwICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAorICAgTUFJTl9ERVBFTkRFTkNZICR7Q01BS0VfQ1VS
UkVOVF9TT1VSQ0VfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucworICAgREVQRU5EUyAke0pTQ0J1
aWx0aW5zX2pzX2ZpbGVzfQorICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtF
X0NVUlJFTlRfU09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMgJHtKU0NCdWlsdGluc19q
c19maWxlc30gJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlu
cy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuY3Bw
CisgICBWRVJCQVRJTSkKKwogbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAg
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5k
RGlzcGF0Y2hlcnMuY3BwCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElS
fS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuY3BwCiAgICAgJHtERVJJVkVEX1NPVVJD
RVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAKKyAgICAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcAogKQog
CiBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTCiAgICAgJHtERVJJVkVEX1NPVVJD
RVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oCiAg
ICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9JbnNwZWN0b3JKU0Zyb250
ZW5kRGlzcGF0Y2hlcnMuaAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaAorICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFT
Q1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAogKQogCiBhZGRfY3VzdG9tX2NvbW1hbmQoCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDExNTZlOTdmZDg4
NjI1NTdjOWNmOGQzYjY4YmY0ZDAzYzNlOGJhOGYuLmE4M2JkY2FkNTFiMDY2ODg2NjdhNmI3MzIw
NTdlNGNkYzg5NjBhOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCkBAIC0yOCw4ICsyOCw5IEBAIFZQQVRIID0gXAogICAgICQoSmF2YVNjcmlwdENvcmUpIFwK
ICAgICAkKEphdmFTY3JpcHRDb3JlKS9wYXJzZXIgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL3J1
bnRpbWUgXAotICAgICQoSmF2YVNjcmlwdENvcmUpL2ludGVycHJldGVyIFwKLSAgICAkKEphdmFT
Y3JpcHRDb3JlKS9qaXQgXAorCSQoSmF2YVNjcmlwdENvcmUpL2ludGVycHJldGVyIFwKKwkkKEph
dmFTY3JpcHRDb3JlKS9qaXQgXAorCSQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zIFwKICMKIAog
LlBIT05ZIDogYWxsCkBAIC01Nyw4ICs1OCwxOCBAQCBhbGwgOiBcCiAgICAgUmVnRXhwT2JqZWN0
Lmx1dC5oIFwKICAgICBTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgdWRpczg2X2l0YWIu
aCBcCisgICAgSlNDQnVpbHRpbnMgXAogIwogCisjIGJ1aWx0aW4gZnVuY3Rpb25zCisuUEhPTlk6
IEpTQ0J1aWx0aW5zCisKK0pTQ0J1aWx0aW5zOiAkKEphdmFTY3JpcHRDb3JlKS9nZW5lcmF0ZS1q
cy1idWlsdGlucyBKU0NCdWlsdGlucy5oIEpTQ0J1aWx0aW5zLmNwcAorSlNDQnVpbHRpbnMuaDog
JChKYXZhU2NyaXB0Q29yZSkvZ2VuZXJhdGUtanMtYnVpbHRpbnMgJChKYXZhU2NyaXB0Q29yZSkv
YnVpbHRpbnMvKi5qcworCXB5dGhvbiAkXiAkQAorCQkJCQkJCQkJCQkJCQkJCQkJCQkgCitKU0NC
dWlsdGlucy5jcHA6IEpTQ0J1aWx0aW5zLmgKKwogIyBsb29rdXAgdGFibGVzIGZvciBjbGFzc2Vz
CiAKICUubHV0Lmg6IGNyZWF0ZV9oYXNoX3RhYmxlICUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05V
bWFrZWZpbGUuYW0KaW5kZXggZmU1NDQ4ZGRjMWJjZmFhNGM3MjlhMWNjMDBkZWE2MjQzMTkzOTBh
Mi4uNTU2OWY1MDI4ZDhjM2NkZDVhMDRkYzkzNjZhODRiMDRlZWM0ODE1MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtNTEsNiArNTEsNyBAQCBqYXZhc2NyaXB0Y29yZV9j
cHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MgXAorCS1JJChz
cmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucyBcCiAJLUkkKHNyY2RpcikvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIgXApAQCAtMTEwLDEyICsxMTEsMTYgQEAgRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvTExJbnREZXNpcmVkT2Zmc2V0cy5oOiAkKGphdmFzY3JpcHRjb3JlX3NvdXJjZXMp
ICQKIAkkKEFNX1ZfR0VOKSQoUlVCWSkgJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIgJChzcmNkaXIpL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSAkQAogCSQoQU1fVl9h
dCl0b3VjaCAkQAogCi0kKFByb2dyYW1zX0xMSW50T2Zmc2V0c0V4dHJhY3Rvcl9PQkpFQ1RTKTog
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnREZXNpcmVkT2Zmc2V0cy5oCiskKFBy
b2dyYW1zX0xMSW50T2Zmc2V0c0V4dHJhY3Rvcl9PQkpFQ1RTKTogRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvTExJbnREZXNpcmVkT2Zmc2V0cy5oIAogCiBEZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9MTEludEFzc2VtYmx5Lmg6IFByb2dyYW1zL0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ciQoRVhFRVhUKQogCSQoQU1fVl9HRU4pJChSVUJZKSAkKHNyY2RpcikvU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vYXNtLnJiICQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gUHJvZ3JhbXMvTExJbnRPZmZzZXRzRXh0cmFj
dG9yJChFWEVFWFQpICRACiAJJChBTV9WX2F0KXRvdWNoICRACiAKK0Rlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmg6IERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3Jl
L0pTQ0J1aWx0aW5zLmNwcAorRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNDQnVpbHRp
bnMuY3BwOiAkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0
aW5zICQoamF2YXNjcmlwdGNvcmVfYnVpbHRpbnNfanNfbm9zb3VyY2VzKQorCSQoQU1fVl9HRU4p
JChQWVRIT04pICReICRACisKICQobGliamF2YXNjcmlwdGNvcmVndGtfQFdFQktJVEdUS19BUElf
TUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfT0JKRUNUUyk6
IERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50QXNzZW1ibHkuaAogCiBqc2M6ICQo
amF2YXNjcmlwdGNvcmVfYnVpbHRfbm9zb3VyY2VzKSBQcm9ncmFtcy9qc2MkKEVYRUVYVCkKQEAg
LTIxNiw2ICsyMjEsNyBAQCBFWFRSQV9ESVNUICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
S2V5d29yZExvb2t1cEdlbmVyYXRvci5weSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9LZXl3b3Jkcy50YWJsZSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL1RIQU5LUyBcCisJJChq
YXZhc2NyaXB0Y29yZV9idWlsdGluc19qc19ub3NvdXJjZXMpIFwKIAkkKGxsaW50X25vc291cmNl
cykgXAogCSQob2ZmbGluZWFzbV9ub3NvdXJjZXMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggY2RiNTQyNmIwNmI1MmE5ODI1NmVlOTA1OGJiYThmMTFl
ZWE2OWVlMC4uOThmYWFhN2QxNzVhYTYxZjIwODk2Y2VlYjEzODYzZTI3YjI2NmNlOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTIwLDYgKzIwLDggQEAg
amF2YXNjcmlwdGNvcmVfYnVpbHRfbm9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9FcnJvclByb3RvdHlwZS5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvSlNEYXRhVmlld1Byb3RvdHlwZS5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3QubHV0LmggXAorCURlcml2ZWRTb3VyY2VzL0phdmFT
Y3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvSlNDQnVpbHRpbnMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNPTk9i
amVjdC5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNQcm9taXNlQ29u
c3RydWN0b3IubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTUHJvbWlz
ZVByb3RvdHlwZS5sdXQuaCBcCkBAIC0zNSw2ICszNyw5IEBAIGphdmFzY3JpcHRjb3JlX2J1aWx0
X25vc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnREZXNp
cmVkT2Zmc2V0cy5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9MTEludEFzc2Vt
Ymx5LmgKIAoramF2YXNjcmlwdGNvcmVfYnVpbHRpbnNfanNfbm9zb3VyY2VzICs9IFwKKwlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzCisKIGphdmFzY3Jp
cHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJh
Y2tGdW5jdGlvbi5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhc3QuaCBcCkBA
IC0xMDIsNiArMTA3LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAgICAgU291cmNl
L0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdE9iamVjdC5oIFwKICAgICBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwIFwKICAgICBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuaCBcCisgICAgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAgXAorICAgIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcCBcCkBAIC0xMjQxLDcgKzEy
NDgsOSBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuY3BwIFwKIAlEZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuaCBc
CiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMu
Y3BwIFwKLQlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JKU1R5cGVCdWls
ZGVycy5oCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNUeXBlQnVp
bGRlcnMuaCBcCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNDQnVpbHRpbnMuY3Bw
IFwKKwlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5oCiAKIGxsaW50
X25vc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc20gXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oK
aW5kZXggNWVkZWZkYmU4NTVmOTZhNjI2OGQ4NTczYmVjMWQwYzNkODU4YWE1Yy4uYTEyZGIxODM0
ODZkZmJiY2E4M2YzYTc4ZTljZjk4NjMxYjI2NTNkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qCkBAIC0zMDksNiArMzA5LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRPYmplY3QuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0VmFsdWUuY3BwIiAvPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cYnVpbHRpbnNcQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlQcm9maWxlLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEJ5dGVjb2RlQmFzaWNC
bG9jay5jcHAiIC8+CkBAIC03MjEsNiArNzIyLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
SW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5j
cHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
SlNDQnVpbHRpbnMuY3BwIiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3Jt
QXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xBcnJheUNvbnN0cnVj
dG9yLmx1dC5oIiAvPgpAQCAtNzUwLDYgKzc1Miw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcUmVnRXhwT2JqZWN0Lmx1dC5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFJlZ0V4cFByb3RvdHlw
ZS5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NCdWlsdGlucy5oIiAvPgogICA8L0l0ZW1Hcm91
cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxBUElDYWxs
YmFja0Z1bmN0aW9uLmgiIC8+CkBAIC03OTgsNiArODAxLDcgQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdEZ1bmN0aW9uQ2FsbC5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0T2JqZWN0LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRWYWx1ZS5oIiAvPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cYnVpbHRpbnNcQnVpbHRpbkV4ZWN1dGFibGVzLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheVByb2ZpbGUuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEJ5VmFsSW5mby5oIiAvPgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDg3ZTEy
YTQ3MTU4YmI2MjI0ZDQ5ZmQ2MjI5NzhjNGE5YzQ0MzVhNjUuLjg2OWMxZjU4OWJjYjY4NmViOWNm
MjBjMDk2YmUxYjgzYTU1MWUyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycworKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTcsNiArNyw5IEBACiAgICAgPEZpbHRlciBJbmNsdWRl
PSJiaW5kaW5ncyI+CiAgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MGJhY2UxMjMtNDU4Mi1lZWJj
LTkzMTQtNzgxOWIzNzZjMTk4fTwvVW5pcXVlSWRlbnRpZmllcj4KICAgICA8L0ZpbHRlcj4KKyAg
ICA8RmlsdGVyIEluY2x1ZGU9ImJ1aWx0aW5zIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnsz
YjlkNzJhNS0xMzViLTQzYjMtYTUyNC1jNmQyYjlkMjlkMzV9PC9VbmlxdWVJZGVudGlmaWVyPgor
ICAgIDwvRmlsdGVyPgogICAgIDxGaWx0ZXIgSW5jbHVkZT0iYnl0ZWNvZGUiPgogICAgICAgPFVu
aXF1ZUlkZW50aWZpZXI+ezc2NjA4OGEwLTEyMTYtNDg1NC1hYTQzLTU2MGM1ZTI4MzY2OH08L1Vu
aXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CkBAIC0xMDgsNiArMTExLDkgQEAKICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxNYWNyb0Fzc2VtYmxlci5jcHAiPgogICAg
ICAgPEZpbHRlcj5hc3NlbWJsZXI8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAiPgorICAg
ICAgPEZpbHRlcj5idWlsdGluczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAiPgog
ICAgICAgPEZpbHRlcj5ieXRlY29kZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMTMy
OSw2ICsxMzM1LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xJbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5jcHAiPgogICAgICAgPEZpbHRlcj5EZXJp
dmVkIFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJl
KVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NCdWlsdGlucy5jcHAiPgorICAgICAg
PEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgPC9J
dGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElc
QVBJQ2FsbGJhY2tGdW5jdGlvbi5oIj4KQEAgLTE0NTQsNiArMTQ2Myw5IEBACiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcWDg2QXNzZW1ibGVyLmgiPgogICAgICAgPEZpbHRl
cj5hc3NlbWJsZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxlcy5oIj4KKyAgICAgIDxGaWx0ZXI+
YnVpbHRpbnM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCI+CiAgICAgICA8RmlsdGVy
PmJ5dGVjb2RlPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0yNTUwLDYgKzI1NjIsOSBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEFycmF5
UHJvdG90eXBlLmx1dC5oIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuaCI+CisgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNl
czwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxWTS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJ
bmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmVDb21tb24ucHJvcHMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZUNvbW1vbi5wcm9wcwppbmRl
eCAzNjIyZmZjNTc3YzQzZGRmNzBkYTUxZmY2OGFkNjQ2ZjYzMDRlNTY3Li5jNTg4ODcwYzJmZDEz
ZDYwNzZkMzhmNTJjYTYyMjVkYjI4NzJjNzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZUNvbW1vbi5wcm9wcwor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZUNvbW1vbi5wcm9wcwpAQCAtNSw3ICs1LDcgQEAKICAgPFByb3BlcnR5R3JvdXAgLz4K
ICAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXDsuLlx0b29sc1w7Li5ccnVudGltZVw7Li5cbGxpbnRc
Oy4uXGppdFw7Li5cZGlzYXNzZW1ibGVyXDsuLlxoZWFwXDsuLlxkZWJ1Z2dlclw7Li5cYXNzZW1i
bGVyXDsuLlxwcm9maWxlclw7Li5ceWFyclw7Li5caW50ZXJwcmV0ZXJcOy4uXGJ5dGVjb2RlXDsu
LlxkZmdcOy4uXGJ5dGVjb21waWxlclw7Li5ccGFyc2VyXDsuLlxBUElcOy4uXGZ0bFw7Li5cYmlu
ZGluZ3NcOy4uXGluc3BlY3Rvclw7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZv
cm1BcmNoaXRlY3R1cmUpXEphdmFTY3JpcHRDb3JlXERlcml2ZWRTb3VyY2VzXDskKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcaW5jbHVkZVw7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVc
SmF2YVNjcmlwdENvcmVcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVc
OyQoV2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZTskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGVc
cHJpdmF0ZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cOy4u
XHRvb2xzXDsuLlxydW50aW1lXDsuLlxsbGludFw7Li5caml0XDsuLlxkaXNhc3NlbWJsZXJcOy4u
XGhlYXBcOy4uXGRlYnVnZ2VyXDsuLlxhc3NlbWJsZXJcOy4uXHByb2ZpbGVyXDsuLlx5YXJyXDsu
LlxpbnRlcnByZXRlclw7Li5cYnl0ZWNvZGVcOy4uXGJ1aWx0aW5zXDsuLlxkZmdcOy4uXGJ5dGVj
b21waWxlclw7Li5ccGFyc2VyXDsuLlxBUElcOy4uXGZ0bFw7Li5cYmluZGluZ3NcOy4uXGluc3Bl
Y3Rvclw7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XEphdmFTY3JpcHRDb3JlXERlcml2ZWRTb3VyY2VzXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
aW5jbHVkZVw7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmVc
OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGVcOyQoV2ViS2l0X0xpYnJh
cmllcylcaW5jbHVkZTskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGVccHJpdmF0ZTslKEFkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgog
ICAgICAgPEZvcmNlZEluY2x1ZGVGaWxlcz5JQ1VWZXJzaW9uLmg7JShGb3JjZWRJbmNsdWRlRmls
ZXMpPC9Gb3JjZWRJbmNsdWRlRmlsZXM+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPExpbms+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9j
b3B5LWZpbGVzLmNtZCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL2NvcHktZmlsZXMuY21kCmluZGV4IDk0MzM0M2E1NjhlM2UyOTk4MTZiZjY2ZjJlZGI1MjQz
NThmYzU0ZTguLmUwYzFmMjk2NjE5NmJkYTMwMDM1OTVjNWRmMDNlZWUwOGEwZGE3OGYgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL2NvcHkt
ZmlsZXMuY21kCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL2NvcHktZmlsZXMuY21kCkBAIC00Miw2ICs0Miw3IEBAIGZvciAlJWQgaW4gKAogICAgIGFz
c2VtYmxlcg0KICAgICBiaW5kaW5ncw0KICAgICBieXRlY29kZQ0KKyAgICBidWlsdGlucw0KICAg
ICBkZmcNCiAgICAgZGlzYXNzZW1ibGVyDQogICAgIGhlYXANCkBAIC03Miw2ICs3Myw5IEBAIHhj
b3B5IC95ICIlRGVyaXZlZFNvdXJjZXNEaXJlY3RvcnklXEluc3BlY3RvckpTVHlwZUJ1aWxkZXJz
LmgiICIlUHJpdmF0ZUhlYWRlcnNECiB4Y29weSAveSAiJURlcml2ZWRTb3VyY2VzRGlyZWN0b3J5
JVxJbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oIiAiJVByaXZhdGVIZWFkZXJzRGlyZWN0
b3J5JSIgPk5VTA0KIHhjb3B5IC95ICIlRGVyaXZlZFNvdXJjZXNEaXJlY3RvcnklXEluc3BlY3Rv
ckpTRnJvbnRlbmREaXNwYXRjaGVycy5oIiAiJVByaXZhdGVIZWFkZXJzRGlyZWN0b3J5JSIgPk5V
TA0KIA0KK2VjaG8gQ29weWluZyBidWlsdGlucyBoZWFkZXIgYXMgaWYgaXQgd2VyZSBhIHByaXZh
dGUgaGVhZGVyLi4uDQoreGNvcHkgL3kgIiVEZXJpdmVkU291cmNlc0RpcmVjdG9yeSVcSlNDQnVp
bHRpbnMuaCIgIiVQcml2YXRlSGVhZGVyc0RpcmVjdG9yeSUiID5OVUwNCisNCiBlY2hvIENvcHlp
bmcgcmVzb3VyY2VzLi4uDQogbWtkaXIgIiVSZXNvdXJjZXNEaXJlY3RvcnklIiAyPk5VTA0KIHhj
b3B5IC95IC9kIEphdmFTY3JpcHRDb3JlLnJlc291cmNlc1wqICIlUmVzb3VyY2VzRGlyZWN0b3J5
JSIgPk5VTA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjdlODc2NzQwYTk2NGIw
Mjg5ODRlZDY3ODE2MTgyMGE1ZGNmNzdjNC4uOTExNTczYWIxN2QzMzk3NGFhN2M5YTAxMWRiMjAw
YjA5YWY3OGJmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkyMiw3ICs5MjIs
NiBAQAogCQlBNTAzRkExOTE4OEUwRkIwMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkEx
MzE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgKi87IH07CiAJCUE1
MDNGQTFBMTg4RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNDE4OEUwRkFGMDAx
MTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQlBNTAzRkExQjE4OEUwRkIw
MDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE1MTg4RTBGQjAwMDExMEYxNCAvKiBK
U0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwICovOyB9OwotCQlBNTAzRkExQzE4OEUwRkIwMDAxMTBG
MTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNjE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lLmggKi87IH07CiAJCUE1MDNGQTFEMTg4RTBGQjAwMDExMEYxNCAvKiBKU0ph
dmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTcxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNj
cmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAgKi87IH07CiAJCUE1MDNGQTFFMTg4RTBGQjAwMDEx
MEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE4MTg4RTBGQjAwMDExMEYxNCAv
KiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaCAqLzsgfTsKIAkJQTUwM0ZBMjExODhF
RkY2ODAwMTEwRjE0IC8qIFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTFGMTg4RUZGNjgwMDExMEYxNCAvKiBTY3Jp
cHRCcmVha3BvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTEwMjQsNiArMTAyMyw3IEBACiAJCUE3MEIwODMyMTdBMEI3OUIwMERBRjE0QiAv
KiBERkdCaW5hcnlTd2l0Y2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTcwQjA4MzAxN0EwQjc5QjAwREFGMTRCIC8qIERGR0JpbmFyeVN3aXRjaC5j
cHAgKi87IH07CiAJCUE3MEIwODMzMTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2gu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MEIwODMx
MTdBMEI3OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guaCAqLzsgfTsKIAkJQTcxMjM2RTUx
MTk1RjMzQzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzEyMzZFNDExOTVGMzNDMDBCRDIxNzQgLyog
SklUT3Bjb2RlczMyXzY0LmNwcCAqLzsgfTsKKwkJQTcxREE4MEYxODgwREJBQjAwRDFGMjk5IC8q
IEpTU3RyaW5nSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTcxREE4MEUxODgwREJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3MjAyOEI2
MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyMDI4QjQxNzk3NjAxRTAwOTgwMjhD
IC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAgKi87IH07CiAJCUE3MjAyOEI4MTc5NzYwMUUwMDk4
MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjAyOEI1MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVu
bmVyVXRpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlBNzIwMjhCQTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklubGluZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjAyOEI5MTc5NzYw
M0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTUwLDYgKzExNTAsMTAgQEAKIAkJQTdDQTNB
RTgxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDQTNBRTIxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vh
a01hcC5oICovOyB9OwogCQlBN0NBM0FFQjE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01hcERhdGEu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDQTNB
RTkxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCAqLzsgfTsKIAkJQTdDQTNBRUMx
N0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0NBM0FFQTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01h
cERhdGEuaCAqLzsgfTsKKwkJQTdEODAxQTQxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVj
dXRhYmxlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBN0Q4MDFBMTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCAqLzsg
fTsKKwkJQTdEODAxQTUxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTIxODgw
RDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3RDgwMUE4MTg4MEQ2QTgwMDI2QzM5QiAv
KiBKU0NCdWlsdGlucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBN0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwICovOyB9
OworCQlBN0Q4MDFBOTE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDgwMUE3MTg4MEQ2QTgwMDI2
QzM5QiAvKiBKU0NCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUE3RDg5Q0YyMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2Nr
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDg5
Q0UzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNwcCAqLzsgfTsKIAkJQTdEODlD
RjMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDg5Q0U0MTdBMEI4Q0MwMDc3
M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5jcHAgKi87IH07CiAJCUE3RDg5Q0Y0MTdBMEI4
Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODlDRTUxN0EwQjhDQzAwNzczQUQ4IC8qIERG
R0Jsb2NrSW5zZXJ0aW9uU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTI0NjIsNiArMjQ2Niw4IEBACiAJCUE3MTIzNkU0MTE5NUYzM0MwMEJE
MjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSklUT3Bjb2RlczMyXzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTcxOEY2MUExMTc1NEEyMTAwMjQ2NUE3IC8qIFJlZ0V4cEppdFRhYmxlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBKaXRUYWJsZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTcxOEY4MjExMTc4RUI0QjAwMjQ2NUE3IC8qIGNyZWF0ZV9yZWdl
eF90YWJsZXMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9
IHRleHQuc2NyaXB0LnB5dGhvbjsgZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IGNyZWF0ZV9yZWdl
eF90YWJsZXM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MURBODBEMTg4MEQ3MUYw
MEQxRjI5OSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5
dGhvbjsgcGF0aCA9ICJnZW5lcmF0ZS1qcy1idWlsdGlucyI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE3MURBODBFMTg4MERCQUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdJbmxpbmVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI0MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NU
ZXN0UnVubmVyVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNDVGVzdFJ1bm5lclV0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcy
MDI4QjUxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NUZXN0UnVubmVyVXRpbHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTcyMDI4QjkxNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25J
bmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRnVuY3Rpb25Jbmxp
bmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTkwLDYgKzI1OTYsMTEgQEAK
IAkJQTdDQTNBRTIxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYWtNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTdDQTNBRTkxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYWtNYXBEYXRhLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdDQTNBRUExN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBE
YXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtNYXBEYXRhLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUEwMTg4MEQ2NkUwMDI2QzM5QiAvKiBB
cnJheS5wcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGgg
PSBBcnJheS5wcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgw
MUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTIxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0
aW5FeGVjdXRhYmxlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdWlsdGlu
RXhlY3V0YWJsZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTYxODgw
RDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTQ0J1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTdEODAxQTcxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ0J1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE3RDg5Q0UzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCYXNpY0Jsb2NrLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Jhc2ljQmxvY2suY3BwOyBw
YXRoID0gZGZnL0RGR0Jhc2ljQmxvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBN0Q4OUNFNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQmxvY2tJbnNlcnRpb25TZXQu
Y3BwOyBwYXRoID0gZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTdEODlDRTUxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0
aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Jsb2NrSW5zZXJ0
aW9uU2V0Lmg7IHBhdGggPSBkZmcvREZHQmxvY2tJbnNlcnRpb25TZXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTI5MjYsNiArMjkzNyw3IEBACiAJCQkJODYwNEY0RjIxNDNBNkM0
NDAwQjI5NUY1IC8qIENoYW5nZUxvZyAqLywKIAkJCQlGNjkyQTg1NDAyNTU1OTdEMDFGRjYwRjcg
LyogY3JlYXRlX2hhc2hfdGFibGUgKi8sCiAJCQkJQTcxOEY4MjExMTc4RUI0QjAwMjQ2NUE3IC8q
IGNyZWF0ZV9yZWdleF90YWJsZXMgKi8sCisJCQkJQTcxREE4MEQxODgwRDcxRjAwRDFGMjk5IC8q
IGdlbmVyYXRlLWpzLWJ1aWx0aW5zICovLAogCQkJCTQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4NCAv
KiBqc2MuY3BwICovLAogCQkJCUY2OEVCQjhDMDI1NUQ0QzYwMUZGNjBGNyAvKiBjb25maWcuaCAq
LywKIAkJCQlGNUMyOTBFNjAyODRGOThFMDE4NjM1Q0EgLyogSmF2YVNjcmlwdENvcmVQcmVmaXgu
aCAqLywKQEAgLTI5MzQsNiArMjk0Niw3IEBACiAJCQkJMTQzMkVCRDcwQTM0Q0FENDAwNzE3QjlG
IC8qIEFQSSAqLywKIAkJCQk5Njg4Q0IxMjBFRDEyQjRFMDAxRDY0OUYgLyogYXNzZW1ibGVyICov
LAogCQkJCUE1NENGMkVBMTg0RUE3MzkwMDIzN0YxOSAvKiBiaW5kaW5ncyAqLywKKwkJCQlBN0Q4
MDE5RjE4ODBENjZFMDAyNkMzOUIgLyogYnVpbHRpbnMgKi8sCiAJCQkJOTY5QTA3OEYwRUQxRDNB
RTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovLAogCQkJCTdFMzlEODFEMEVDMzhFRkEwMDNBRjExQSAv
KiBieXRlY29tcGlsZXIgKi8sCiAJCQkJMUM5MDUxM0UwQkE5RTg4MzAwODFFOUQwIC8qIENvbmZp
Z3VyYXRpb25zICovLApAQCAtMzUwOSw2ICszNTIyLDggQEAKIAkJNjUwRkRGOEQwOUQwRkNBNzAw
NzY5RTU0IC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJQTdEODAxQTYxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5z
LmNwcCAqLywKKwkJCQlBN0Q4MDFBNzE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCAq
LywKIAkJCQlCQzE4QzUyMzBFMTZGQzhBMDBCMzQ0NjAgLyogQXJyYXlQcm90b3R5cGUubHV0Lmgg
Ki8sCiAJCQkJQkNEMjAzRTcwRTE3MThGNDAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUubHV0Lmgg
Ki8sCiAJCQkJQTUxM0U1QzYxODVGOTQzNjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNl
LmggKi8sCkBAIC0zODExLDYgKzM4MjYsNyBAQAogCQkJCUE3OTBERDZBMTgyRjQ5OTcwMDU4ODgw
NyAvKiBKU1NldEl0ZXJhdG9yLmggKi8sCiAJCQkJQkMwMkU5QjYwRTE4NDJGQTAwMEY5Mjk3IC8q
IEpTU3RyaW5nLmNwcCAqLywKIAkJCQlGNjkyQTg2MjAyNTU1OTdEMDFGRjYwRjcgLyogSlNTdHJp
bmcuaCAqLywKKwkJCQlBNzFEQTgwRTE4ODBEQkFCMDBEMUYyOTkgLyogSlNTdHJpbmdJbmxpbmVz
LmggKi8sCiAJCQkJODZFODU1MzgxMTFCOTk2ODAwMUFGNTFFIC8qIEpTU3RyaW5nQnVpbGRlci5o
ICovLAogCQkJCTI2MDBCNUE0MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5jcHAg
Ki8sCiAJCQkJMjYwMEI1QTUxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVyLmggKi8s
CkBAIC00NTYxLDYgKzQ1NzcsMTYgQEAKIAkJCXBhdGggPSByZW1vdGU7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwogCQl9OworCQlBN0Q4MDE5RjE4ODBENjZFMDAyNkMzOUIgLyogYnVpbHRp
bnMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUE3RDgw
MUEwMTg4MEQ2NkUwMDI2QzM5QiAvKiBBcnJheS5wcm90b3R5cGUuanMgKi8sCisJCQkJQTdEODAx
QTExODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi8sCisJCQkJQTdE
ODAxQTIxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oICovLAorCQkJKTsK
KwkJCXBhdGggPSBidWlsdGluczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAv
KiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhIZWFkZXJzQnVpbGRQaGFz
ZSBzZWN0aW9uICovCkBAIC00NjA2LDExICs0NjMyLDExIEBACiAJCQkJODZBREQxNDUwRkRERUE5
ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUNFRUUx
NTE4N0YzQkFEMDBFNTVDOTkgLyogSW5zcGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTY1QzAyODVEMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuaCBpbiBIZWFkZXJzICov
LAotIAkJCQkyQTY4Mjk1QjE4NzVGODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5oIGlu
IEhlYWRlcnMgKi8sCi0gICAgICAgICAgICAgICAgMkE0RUM5MEMxODYwRDZDMjAwOTRGNzgyIC8q
IFdyaXRlQmFycmllckJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkE2ODI5NUIxODc1Rjgw
NTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTJBNEVD
OTBDMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUZFNTkzMkE4MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1MzI0MzkzMTg1Njk3MDkwMDJFRDY5MiAvKiBDb2RlR2VuZXJhdG9ySW5z
cGVjdG9yU3RyaW5ncy5weSBpbiBIZWFkZXJzICovLAotIAkJCQlBNTMyNDM5MjE4NTY5NzA5MDAy
RUQ2OTIgLyogQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSBpbiBIZWFkZXJzICovLAorCQkJCUE1
MzI0MzkyMTg1Njk3MDkwMDJFRDY5MiAvKiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYyNEU1NEYxN0VFMjc0OTAwQUJCMjE3IC8qIFRlbXBSZWdpc3RlclNl
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwRTRCNjQxODgwOURENTAwNjhBNDZEIC8qIEpTR2xv
YmFsT2JqZWN0UnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUI1OEMxNTE4N0I4
QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLywKQEAgLTQ2
MjIsNyArNDY0OCw3IEBACiAJCQkJMEY4MzM1QjgxNjM5QzFFQTAwMTQ0M0I1IC8qIEFycmF5QWxs
b2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwRTI5MTg3Q0E1RTYwMDg0
M0IxMCAvKiBpbmxpbmUtYW5kLW1pbmlmeS1zdHlsZXNoZWV0cy1hbmQtc2NyaXB0cy5weSBpbiBI
ZWFkZXJzICovLAogCQkJCUE1ODQwRTJCMTg3Q0E3NUIwMDg0M0IxMCAvKiBqc21pbi5weSBpbiBI
ZWFkZXJzICovLAotIAkJCQlBNTMyNDM5ODE4NTZBNDg5MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlMu
anNvbiBpbiBIZWFkZXJzICovLAorCQkJCUE1MzI0Mzk4MTg1NkE0ODkwMDJFRDY5MiAvKiBJbnNw
ZWN0b3JKUy5qc29uIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMkExODdDQTc1OTAwODQzQjEw
IC8qIHh4ZC5wbCBpbiBIZWFkZXJzICovLAogCQkJCUZFQTA4NjIwMTgyQjdBMDQwMEY2RDg1MSAv
KiBCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzNTE3QURCNUYzMDA1QUIx
NzQgLyogQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNDczMyw3ICs0NzU5LDcgQEAK
IAkJCQlBMUEwMDlDMDE4MzFBMjJEMDBDRjg3MTEgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODZFQzlEQzUxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVDb2Rl
UGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyODE4N0RGREVDMDA4M0I2ODcgLyog
RlRMQXZhaWxhYmxlUmVjb3ZlcnkuaCBpbiBIZWFkZXJzICovLAotICAgICAgICAgICAgICAgIEE1
OTNDRjg3MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmggaW4gSGVh
ZGVycyAqLywKKwkJCQlBNTkzQ0Y4NzE4NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRS
ZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNTZDMzYxNjI3QjBBRDAwN0YyNzgzIC8q
IERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0aWVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkZGQzk1ODE0RUY5MEEyMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCBp
biBIZWFkZXJzICovLApAQCAtNDg3Miw2ICs0ODk4LDcgQEAKIAkJCQkwRkVBMEExRDE3MDhCMDA3
MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEEx
RjE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTU5NDU1OTMxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVi
dWdnYWJsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdEODAxQTkxODgwRDZBODAwMjZDMzlCIC8q
IEpTQ0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEEwQTE3MDUxM0RCMDBCQjcy
MkMgLyogRlRMQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyQTE4N0RG
REVDMDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RUEwQTIzMTcwOTYwNjkwMEJCNzIyQyAvKiBGVExDb21tb25WYWx1ZXMuaCBpbiBIZWFkZXJzICov
LApAQCAtNDk0Niw2ICs0OTczLDcgQEAKIAkJCQlCQzE4QzQwRjBFMTZGNUNEMDBCMzQ0NjAgLyog
SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzI1RjhCQ0UxNTc1NDRBOTAwMjQ1Qjcx
IC8qIEluY3JlbWVudGFsU3dlZXBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTkxNUVE
OEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nSGVhZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0Q4
MDFBNTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkI3RjM5QTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXJJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5QjE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhp
bmdUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNFRkFCMDE4MDVDQTZEMDA0NzJDRTQgLyog
SW5pdGlhbGl6ZUxMVk0uaCBpbiBIZWFkZXJzICovLApAQCAtNTIxOCw2ICs1MjQ2LDcgQEAKIAkJ
CQlBNTMyNDM4ODE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hl
cnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDU2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBQcm90
ZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc0QzMzQjE2QUEyRDk1MDA2MkYwMUQgLyogUHJv
dG90eXBlTWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzFEQTgwRjE4ODBEQkFCMDBEMUYyOTkg
LyogSlNTdHJpbmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMzJBNDE0Q0E3REQ5
MDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQ0Q0QzIx
NUYxQTYwNzAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJN0MwMDhDRTcxODc2MzFCNjAwOTU1QzI0IC8qIE1pY3JvdGFzay5oIGluIEhlYWRlcnMgKi8s
CkBAIC01ODM2LDYgKzU4NjUsNyBAQAogCQkJCUE3RDg5Q0YyMTdBMEI4Q0MwMDc3M0FEOCAvKiBE
RkdCYXNpY0Jsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MEIwODMyMTdBMEI3OUIwMERB
RjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlDRjMx
N0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUE3RDgwMUE0MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJODZFQzlEQzQxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVD
b2RlUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDgyRTIxMTQxNzJDRTMwMDE3OUM5
NCAvKiBERkdDYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGRkM5NTcxNEVG
OTBBMDAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTg1Miw2
ICs1ODgyLDcgQEAKIAkJCQkwRkZGQzk1OTE0RUY5MEE2MDBDNzI1MzIgLyogREZHQ1NFUGhhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyRkM3NzIxNkUxMkY3MTAwMzhEOTc2IC8qIERGR0RD
RVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEYyQjk5MTcyRjA0RkYwMDdEQkRBNSAv
KiBERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTdEODAxQTgx
ODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3
M0UxMzMwMTc5NjI0Q0QwMEU0REVBOCAvKiBERkdEZXNpcmVkU3RydWN0dXJlQ2hhaW5zLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUMyQzBGN0NEMTdCQkZDNUIwMDQ2NEZFNCAvKiBERkdEZXNpcmVk
VHJhbnNpdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFODUzNEIxNzIzQ0RBNTAwQjYx
OEY1IC8qIERGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU5NzYs
NyArNjAwNyw3IEBACiAJCQkJMEY2QjFDQzUxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVud2luZElu
Zm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5RDMzOUExODAzQURCNzAwNzNDMkJDIC8qIEZU
TFN0YWNrTWFwcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEExNjE3MDZCQjkwMDBCQjcy
MkMgLyogRlRMU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCi0gCQkJCTdDMDA4Q0QyMTg2RjhBOTMw
MDk1NUMyNCAvKiBKU1Byb21pc2VGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0Mw
MDhDRDIxODZGOEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjZCMUNCNTE4NUZDOUU5MDA4NDVEOTcgLyogRlRMSlNDYWxsLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGMjM1QkUxMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExUaHVua3MuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5M0NGN0MxODQwMzYwMzAwQkZDRTI3IC8qIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ViNDJm
NWNjNDMzZjE2MzYzNDNiZmM5ODJhYTJhYWZiMzM2ZTk0OQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMKQEAgLTAsMCAr
MSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1
bmN0aW9uIGV2ZXJ5KGNhbGxiYWNrIC8qLCB0aGlzQXJnICovKSB7CisgICAgInVzZSBzdHJpY3Qi
OworICAgIGlmICh0aGlzID09PSBudWxsKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigi
QXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIik7
CisgICAgCisgICAgaWYgKHRoaXMgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgdGhyb3cgbmV3IEBU
eXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3Qg
YmUgdW5kZWZpbmVkIik7CisgICAgCisgICAgdmFyIGFycmF5ID0gQE9iamVjdCh0aGlzKTsKKyAg
ICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoID4+PiAwOworICAgIAorICAgIGlmICh0eXBlb2Yg
Y2FsbGJhY2sgIT09ICJmdW5jdGlvbiIpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJB
cnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7CisKKyAg
ICB2YXIgdGhpc0FyZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5k
ZWZpbmVkOworICAgIAorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAg
ICAgICAgaWYgKCEoaSBpbiBhcnJheSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
aWYgKCFjYWxsYmFjay5AY2FsbCh0aGlzQXJnLCBhcnJheVtpXSwgaSwgYXJyYXkpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRh
Ymxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFi
bGVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zNDFkYmI1ZjkyMjVlMjhhMTJlZDNkMTc5OGZmMTc2OGU0MzY3
MWE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1
aWx0aW5FeGVjdXRhYmxlcy5jcHAKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2lu
Y2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgor
I2luY2x1ZGUgIlBhcnNlci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworQnVpbHRpbkV4ZWN1dGFi
bGVzOjpCdWlsdGluRXhlY3V0YWJsZXMoVk0mIHZtKQorICAgIDogbV92bSh2bSkKKyNkZWZpbmUg
SU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVu
Z3RoKSAsIG1fIyNuYW1lIyNTb3VyY2UobWFrZVNvdXJjZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9t
TGl0ZXJhbChzXyMjbmFtZSwgbGVuZ3RoKSwgU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwo
IjxidWlsdGluPiIpKSkKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOKElOSVRJQUxJWkVfQlVJTFRJ
Tl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJTl9TVFJJTkdTCit7Cit9CisK
K1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUJ1
aWx0aW5FeGVjdXRhYmxlKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgY29uc3QgSWRlbnRpZmll
ciYgbmFtZSkKK3sKKyAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5l
OworICAgIFBhcnNlckVycm9yIGVycm9yOworICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4gcHJvZ3Jh
bSA9IHBhcnNlPFByb2dyYW1Ob2RlPigmbV92bSwgc291cmNlLCAwLCBJZGVudGlmaWVyKCksIEpT
UGFyc2VCdWlsdGluLCBKU1BhcnNlUHJvZ3JhbUNvZGUsIGVycm9yLCAmcG9zaXRpb25CZWZvcmVM
YXN0TmV3bGluZSk7CisKKyAgICBpZiAoIXByb2dyYW0pIHsKKyAgICAgICAgZGF0YUxvZygiRmF0
YWwgZXJyb3IgY29tcGlsaW5nIGJ1aWx0aW4gZnVuY3Rpb24gJyIsIG5hbWUuc3RyaW5nKCksICIn
OiAiLCBlcnJvci5tX21lc3NhZ2UpOworICAgICAgICBDUkFTSCgpOworICAgIH0KKworICAgIFN0
YXRlbWVudE5vZGUqIGV4cHJTdGF0ZW1lbnQgPSBwcm9ncmFtLT5zaW5nbGVTdGF0ZW1lbnQoKTsK
KyAgICBSRUxFQVNFX0FTU0VSVChleHByU3RhdGVtZW50KTsKKyAgICBSRUxFQVNFX0FTU0VSVChl
eHByU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CisgICAgRXhwcmVzc2lvbk5vZGUqIGZ1
bmNFeHByID0gc3RhdGljX2Nhc3Q8RXhwclN0YXRlbWVudE5vZGUqPihleHByU3RhdGVtZW50KS0+
ZXhwcigpOworICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmNFeHByKTsKKyAgICBSRUxFQVNFX0FTU0VS
VChmdW5jRXhwci0+aXNGdW5jRXhwck5vZGUoKSk7CisgICAgRnVuY3Rpb25Cb2R5Tm9kZSogYm9k
eSA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGZ1bmNFeHByKS0+Ym9keSgpOworICAgIFJF
TEVBU0VfQVNTRVJUKCFwcm9ncmFtLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKKyAgICAKKyAg
ICBib2R5LT5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKKyAgICBS
RUxFQVNFX0FTU0VSVChib2R5KTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5LT5pZGVudCgpLmlz
TnVsbCgpKTsKKyAgICAKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgYW4gaW5wdXQgc3Ry
aW5nIHRoYXQgd291bGQgcmVzdWx0IGluIGEgc2luZ2xlIGFub255bW91cyBmdW5jdGlvbiBleHBy
ZXNzaW9uLgorICAgIGJvZHktPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xp
bmUpOworICAgIFJFTEVBU0VfQVNTRVJUKGJvZHkpOworICAgIGZvciAoY29uc3QgYXV0byYgY2xv
c2VkVmFyaWFibGUgOiBwcm9ncmFtLT5jbG9zZWRWYXJpYWJsZXMoKSkgeworICAgICAgICBpZiAo
Y2xvc2VkVmFyaWFibGUgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMuaW1wbCgpKQor
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAgIGlmIChjbG9zZWRWYXJpYWJsZSA9
PSBtX3ZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQuaW1wbCgpKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNsb3NlZFZhcmlhYmxlLT5pc0Vt
cHR5VW5pcXVlKCkpOworICAgIH0KKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVu
Y3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmbV92
bSwgc291cmNlLCBib2R5LCB0cnVlLCBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbik7CisgICAgZnVu
Y3Rpb25FeGVjdXRhYmxlLT5tX25hbWVWYWx1ZS5zZXQobV92bSwgZnVuY3Rpb25FeGVjdXRhYmxl
LCBqc1N0cmluZygmbV92bSwgbmFtZS5zdHJpbmcoKSkpOworICAgIHJldHVybiBmdW5jdGlvbkV4
ZWN1dGFibGU7Cit9CisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwg
ZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWls
dGluRXhlY3V0YWJsZXM6Om5hbWUjI0V4ZWN1dGFibGUoKSBcCit7XAorICAgIGlmICghbV8jI25h
bWUjI0V4ZWN1dGFibGUpXAorICAgICAgICBtXyMjbmFtZSMjRXhlY3V0YWJsZSA9IGNyZWF0ZUJ1
aWx0aW5FeGVjdXRhYmxlKG1fIyNuYW1lIyNTb3VyY2UsIG1fdm0ucHJvcGVydHlOYW1lcy0+ZnVu
Y3Rpb25OYW1lKTtcCisgICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1wKK30K
K0pTQ19GT1JFQUNIX0JVSUxUSU4oREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYg
RVhQT1NFX0JVSUxUSU5fU09VUkNFUworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDlhMTllMjYxNTA3
OTRhNjY5ZWM5OGUzOTliZjY3ZjdmNzEwNjQxOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaApAQCAtMCwwICsxLDY3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBCdWlsdGluRXhlY3V0YWJsZXNfaAorI2RlZmluZSBCdWlsdGluRXhlY3V0YWJsZXNfaAorCisj
aW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKKyNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCisjaW5jbHVk
ZSAiV2Vhay5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIElkZW50aWZpZXI7
CitjbGFzcyBWTTsKKworY2xhc3MgQnVpbHRpbkV4ZWN1dGFibGVzIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc093blB0cjxCdWlsdGluRXhlY3V0YWJsZXM+IGNyZWF0ZShWTSYgdm0pCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEJ1aWx0aW5FeGVjdXRhYmxlcyh2bSkpOwor
ICAgIH0KKyAgICAKKyNkZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVu
Y3Rpb25OYW1lLCBsZW5ndGgpIFwKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuYW1lIyNF
eGVjdXRhYmxlKCk7IFwKK2NvbnN0IFNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIHsgcmV0dXJu
IG1fIyNuYW1lIyNTb3VyY2U7IH0KKyAgICAKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOKEVYUE9T
RV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX1NPVVJDRVMKKyAg
ICAKK3ByaXZhdGU6CisgICAgQnVpbHRpbkV4ZWN1dGFibGVzKFZNJik7CisgICAgVk0mIG1fdm07
CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxl
KGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBJZGVudGlmaWVyJik7CisjZGVmaW5lIERFQ0xBUkVf
QlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aClcCisgICAg
U291cmNlQ29kZSBtXyMjbmFtZSMjU291cmNlOyBcCisgICAgV2VhazxVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZT4gbV8jI25hbWUjI0V4ZWN1dGFibGU7CisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJ
TihERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgREVDTEFSRV9CVUlMVElO
X1NPVVJDRV9NRU1CRVJTCit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBjYjBkYzZmYmYxMzhlZGUzZTdkYmYzNDU1
YzM5YjUxMTJmMzM3YTdhLi44NjAwZjE5YWMyNDdiYWMyYzM1YjFlMGY5NTFiZDkzMDFlYzdkODRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAt
NDMsMTEgKzQzLDEzIEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIK
ICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5j
bHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5j
bHVkZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNsdWRlICJMTEludEVudHJ5cG9pbnQuaCIKICNpbmNs
dWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisjaW5jbHVkZSAiTmF0aXZlRXJyb3JDb25zdHJ1
Y3Rvci5oIgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3BlcmF0
aW9ucy5oIgogI2luY2x1ZGUgIlBvbHltb3JwaGljUHV0QnlJZExpc3QuaCIKICNpbmNsdWRlICJS
ZWR1Y2VXaGl0ZXNwYWNlLmgiCkBAIC0xNTY5LDcgKzE1NzEsNyBAQCBDb2RlQmxvY2s6OkNvZGVC
bG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2Nr
KiB1bmxpbgogCiAgICAgc2V0Q29uc3RhbnRSZWdpc3RlcnModW5saW5rZWRDb2RlQmxvY2stPmNv
bnN0YW50UmVnaXN0ZXJzKCkpOwogICAgIGlmICh1bmxpbmtlZENvZGVCbG9jay0+dXNlc0dsb2Jh
bE9iamVjdCgpKQotICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW3VubGlua2VkQ29kZUJsb2Nr
LT5nbG9iYWxPYmplY3RSZWdpc3RlcigpLm9mZnNldCgpXS5zZXQoKm1fdm0sIG93bmVyRXhlY3V0
YWJsZSwgbV9nbG9iYWxPYmplY3QuZ2V0KCkpOworICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJz
W3VubGlua2VkQ29kZUJsb2NrLT5nbG9iYWxPYmplY3RSZWdpc3RlcigpLnRvQ29uc3RhbnRJbmRl
eCgpXS5zZXQoKm1fdm0sIG93bmVyRXhlY3V0YWJsZSwgbV9nbG9iYWxPYmplY3QuZ2V0KCkpOwog
ICAgIG1fZnVuY3Rpb25EZWNscy5yZXNpemVUb0ZpdCh1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVy
T2ZGdW5jdGlvbkRlY2xzKCkpOwogICAgIGZvciAoc2l6ZV90IGNvdW50ID0gdW5saW5rZWRDb2Rl
QmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpLCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsK
ICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSA9
IHVubGlua2VkQ29kZUJsb2NrLT5mdW5jdGlvbkRlY2woaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggNjhiYzAzNzlmNTc0NGM5YThmNzQzMWRiNjRm
OGFiNTRlNmUxMDUzZi4uNDk5NWM1MmNmOGIyYjFiNGQ2MjgwNDUzZWVkMjdjNzc0YTQ5NTU4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtNTYsNyAr
NTYsNiBAQAogI2luY2x1ZGUgIkhhbmRsZXJJbmZvLmgiCiAjaW5jbHVkZSAiT2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGUuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9u
cy5oIgogI2luY2x1ZGUgIlB1dFByb3BlcnR5U2xvdC5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9u
LmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29u
aW5nV2F0Y2hwb2ludC5jcHAKaW5kZXggOTg2ZTAzZDBjYmE3MTg1YjM5Y2VlMDIzZjRhYjZiYzli
OGNjYjZlNC4uNzBlZjliNDI5MDFjMDU4YmM3MmM5ZGI5MmRjYzMzZDUzZDZiYWFjOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0
dGlzb25pbmdXYXRjaHBvaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uLmgiCiAj
aW5jbHVkZSAiREZHRXhpdFByb2ZpbGUuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCAxZGZiNWFjNmFkOTA5M2Y4ZjgxMTAxZWY3
ZjJlNjEyMzExYWMxOTM5Li40MzM5MGQ5NjVmYzUwMzQwMTZmN2JmZmYyM2U2OGJiMWUwNTQ1NTJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5jcHAKQEAgLTQ5LDkgKzQ5LDkgQEAgY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkUHJv
Z3JhbUNvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrIiwKIGNv
bnN0IENsYXNzSW5mbyBVbmxpbmtlZEV2YWxDb2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2Vk
RXZhbENvZGVCbG9jayIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
VW5saW5rZWRFdmFsQ29kZUJsb2NrKSB9OwogY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2siLCAmQmFz
ZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2spIH07CiAKLXN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1
bmN0aW9uQ29kZUJsb2NrKFZNJiB2bSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2Rl
LCBQYXJzZXJFcnJvciYgZXJyb3IpCitzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayog
Z2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhWTSYgdm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHBy
b2ZpbGVyTW9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgZnVuY3Rpb25LaW5kLCBQYXJzZXJFcnJv
ciYgZXJyb3IpCiB7Ci0gICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGJvZHkgPSBwYXJzZTxG
dW5jdGlvbkJvZHlOb2RlPigmdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+cGFyYW1ldGVycygpLCBl
eGVjdXRhYmxlLT5uYW1lKCksIGV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCkgPyBKU1Bh
cnNlU3RyaWN0IDogSlNQYXJzZU5vcm1hbCwgSlNQYXJzZUZ1bmN0aW9uQ29kZSwgZXJyb3IpOwor
ICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBib2R5ID0gcGFyc2U8RnVuY3Rpb25Cb2R5Tm9k
ZT4oJnZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFt
ZSgpLCBleGVjdXRhYmxlLT50b1N0cmljdG5lc3MoKSwgSlNQYXJzZUZ1bmN0aW9uQ29kZSwgZXJy
b3IpOwogCiAgICAgaWYgKCFib2R5KSB7CiAgICAgICAgIEFTU0VSVChlcnJvci5tX3R5cGUgIT0g
UGFyc2VyRXJyb3I6OkVycm9yTm9uZSk7CkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKFZNJiB2bSwgVW5s
aW5rZWRGdW5jCiAgICAgYm9keS0+ZmluaXNoUGFyc2luZyhleGVjdXRhYmxlLT5wYXJhbWV0ZXJz
KCksIGV4ZWN1dGFibGUtPm5hbWUoKSwgZXhlY3V0YWJsZS0+ZnVuY3Rpb25OYW1lSXNJblNjb3Bl
VG9nZ2xlKCkpOwogICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGJvZHktPmZlYXR1cmVzKCks
IGJvZHktPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpOwogICAgIAotICAgIFVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2sqIHJlc3VsdCA9IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgm
dm0sIEZ1bmN0aW9uQ29kZSwgRXhlY3V0YWJsZUluZm8oYm9keS0+bmVlZHNBY3RpdmF0aW9uKCks
IGJvZHktPnVzZXNFdmFsKCksIGJvZHktPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JD
b25zdHJ1Y3QpKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUoJnZtLCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFi
bGVJbmZvKGJvZHktPm5lZWRzQWN0aXZhdGlvbigpLCBib2R5LT51c2VzRXZhbCgpLCBib2R5LT5p
c1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0g
VW5saW5rZWRCdWlsdGluRnVuY3Rpb24pKTsKICAgICBPd25QdHI8Qnl0ZWNvZGVHZW5lcmF0b3I+
IGdlbmVyYXRvcihhZG9wdFB0cihuZXcgQnl0ZWNvZGVHZW5lcmF0b3Iodm0sIGJvZHkuZ2V0KCks
IHJlc3VsdCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUpKSk7CiAgICAgZXJyb3IgPSBnZW5l
cmF0b3ItPmdlbmVyYXRlKCk7CiAgICAgYm9keS0+ZGVzdHJveURhdGEoKTsKQEAgLTgyLDEzICs4
MiwxNCBAQCB1bnNpZ25lZCBVbmxpbmtlZENvZGVCbG9jazo6YWRkT3JGaW5kQ29uc3RhbnQoSlNW
YWx1ZSB2KQogICAgIHJldHVybiBhZGRDb25zdGFudCh2KTsKIH0KIAotVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSog
bm9kZSwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlKQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSogbm9kZSwgYm9vbCBp
c0Zyb21HbG9iYWxDb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kKQogICAgIDogQmFzZSgq
dm0sIHN0cnVjdHVyZSkKICAgICAsIG1fbnVtQ2FwdHVyZWRWYXJpYWJsZXMobm9kZS0+Y2FwdHVy
ZWRWYXJpYWJsZUNvdW50KCkpCiAgICAgLCBtX2ZvcmNlVXNlc0FyZ3VtZW50cyhub2RlLT51c2Vz
QXJndW1lbnRzKCkpCiAgICAgLCBtX2lzSW5TdHJpY3RDb250ZXh0KG5vZGUtPmlzU3RyaWN0TW9k
ZSgpKQogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhub2RlLT5oYXNDYXB0dXJlZFZhcmlh
YmxlcygpKQogICAgICwgbV9pc0Zyb21HbG9iYWxDb2RlKGlzRnJvbUdsb2JhbENvZGUpCisgICAg
LCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGtpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24pCiAg
ICAgLCBtX25hbWUobm9kZS0+aWRlbnQoKSkKICAgICAsIG1faW5mZXJyZWROYW1lKG5vZGUtPmlu
ZmVycmVkTmFtZSgpKQogICAgICwgbV9wYXJhbWV0ZXJzKG5vZGUtPnBhcmFtZXRlcnMoKSkKQEAg
LTE2Niw3ICsxNjcsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9yKFZNJiB2bSwgY29ucwogICAgICAgICBicmVhazsK
ICAgICB9CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBnZW5lcmF0
ZUZ1bmN0aW9uQ29kZUJsb2NrKHZtLCB0aGlzLCBzb3VyY2UsIHNwZWNpYWxpemF0aW9uS2luZCwg
ZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrKiByZXN1bHQgPSBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKHZtLCB0aGlzLCBz
b3VyY2UsIHNwZWNpYWxpemF0aW9uS2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGlz
QnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9y
bWFsRnVuY3Rpb24sIGVycm9yKTsKICAgICAKICAgICBpZiAoZXJyb3IubV90eXBlICE9IFBhcnNl
ckVycm9yOjpFcnJvck5vbmUpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjEwLDYgKzIxMSw3IEBA
IFVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBDb2RlVHlwZSBjb2RlCiAgICAgLCBtX2lzU3RyaWN0TW9kZShpbmZvLm1faXNT
dHJpY3RNb2RlKQogICAgICwgbV9pc0NvbnN0cnVjdG9yKGluZm8ubV9pc0NvbnN0cnVjdG9yKQog
ICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhmYWxzZSkKKyAgICAsIG1faXNCdWlsdGluRnVu
Y3Rpb24oaW5mby5tX2lzQnVpbHRpbkZ1bmN0aW9uKQogICAgICwgbV9maXJzdExpbmUoMCkKICAg
ICAsIG1fbGluZUNvdW50KDApCiAgICAgLCBtX2VuZENvbHVtbihVSU5UX01BWCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXgg
YjlkYWUyZDVjNjljNzljZWFhYTgwMjNkMmEzYTFmMjZkNDYwOTQzYi4uYWJmNmNmMzViOTMwNmE0
ZjdhMzAxYWIwZGY3NjY2ZWM2MTJlMzc5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTY2LDI2ICs2NiwzNSBAQCB0eXBl
ZGVmIHVuc2lnbmVkIFVubGlua2VkT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7CiB0eXBlZGVmIHVu
c2lnbmVkIFVubGlua2VkTExJbnRDYWxsTGlua0luZm87CiAKIHN0cnVjdCBFeGVjdXRhYmxlSW5m
byB7Ci0gICAgRXhlY3V0YWJsZUluZm8oYm9vbCBuZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2
YWwsIGJvb2wgaXNTdHJpY3RNb2RlLCBib29sIGlzQ29uc3RydWN0b3IpCisgICAgRXhlY3V0YWJs
ZUluZm8oYm9vbCBuZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJpY3RN
b2RlLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24pCiAgICAgICAg
IDogbV9uZWVkc0FjdGl2YXRpb24obmVlZHNBY3RpdmF0aW9uKQogICAgICAgICAsIG1fdXNlc0V2
YWwodXNlc0V2YWwpCiAgICAgICAgICwgbV9pc1N0cmljdE1vZGUoaXNTdHJpY3RNb2RlKQogICAg
ICAgICAsIG1faXNDb25zdHJ1Y3Rvcihpc0NvbnN0cnVjdG9yKQorICAgICAgICAsIG1faXNCdWls
dGluRnVuY3Rpb24oaXNCdWlsdGluRnVuY3Rpb24pCiAgICAgewogICAgIH0KLSAgICBib29sIG1f
bmVlZHNBY3RpdmF0aW9uOwotICAgIGJvb2wgbV91c2VzRXZhbDsKLSAgICBib29sIG1faXNTdHJp
Y3RNb2RlOwotICAgIGJvb2wgbV9pc0NvbnN0cnVjdG9yOworICAgIGJvb2wgbV9uZWVkc0FjdGl2
YXRpb24gOiAxOworICAgIGJvb2wgbV91c2VzRXZhbCA6IDE7CisgICAgYm9vbCBtX2lzU3RyaWN0
TW9kZSA6IDE7CisgICAgYm9vbCBtX2lzQ29uc3RydWN0b3IgOiAxOworICAgIGJvb2wgbV9pc0J1
aWx0aW5GdW5jdGlvbiA6IDE7Cit9OworCitlbnVtIFVubGlua2VkRnVuY3Rpb25LaW5kIHsKKyAg
ICBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLAorICAgIFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLAog
fTsKIAogY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgOiBwdWJsaWMgSlNDZWxsIHsK
IHB1YmxpYzoKKyAgICBmcmllbmQgY2xhc3MgQnVpbHRpbkV4ZWN1dGFibGVzOwogICAgIGZyaWVu
ZCBjbGFzcyBDb2RlQ2FjaGU7CisgICAgZnJpZW5kIGNsYXNzIFZNOwogICAgIHR5cGVkZWYgSlND
ZWxsIEJhc2U7Ci0gICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUo
Vk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUs
IGJvb2wgaXNGcm9tR2xvYmFsQ29kZSA9IGZhbHNlKQorICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBG
dW5jdGlvbkJvZHlOb2RlKiBub2RlLCBib29sIGlzRnJvbUdsb2JhbENvZGUsIFVubGlua2VkRnVu
Y3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25LaW5kKQogICAgIHsKLSAgICAgICAgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLT5oZWFwKSkgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUodm0sIHZtLT51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQo
KSwgc291cmNlLCBub2RlLCBpc0Zyb21HbG9iYWxDb2RlKTsKKyAgICAgICAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLT5oZWFwKSkgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUodm0sIHZtLT51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwg
c291cmNlLCBub2RlLCBpc0Zyb21HbG9iYWxDb2RlLCB1bmxpbmtlZEZ1bmN0aW9uS2luZCk7CiAg
ICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbigqdm0pOwogICAgICAgICByZXR1cm4gaW5z
dGFuY2U7CiAgICAgfQpAQCAtOTksNiArMTA4LDE0IEBAIHB1YmxpYzoKICAgICB9CiAgICAgc2l6
ZV90IHBhcmFtZXRlckNvdW50KCkgY29uc3Q7CiAgICAgYm9vbCBpc0luU3RyaWN0Q29udGV4dCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNJblN0cmljdENvbnRleHQ7IH0KKyAgICBKU1BhcnNlclN0cmlj
dG5lc3MgdG9TdHJpY3RuZXNzKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2lzQnVpbHRp
bkZ1bmN0aW9uKQorICAgICAgICAgICAgcmV0dXJuIEpTUGFyc2VCdWlsdGluOworICAgICAgICBp
ZiAobV9pc0luU3RyaWN0Q29udGV4dCkKKyAgICAgICAgICAgIHJldHVybiBKU1BhcnNlU3RyaWN0
OworICAgICAgICByZXR1cm4gSlNQYXJzZU5vcm1hbDsKKyAgICB9CiAgICAgRnVuY3Rpb25OYW1l
SXNJblNjb3BlVG9nZ2xlIGZ1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZnVuY3Rpb25OYW1lSXNJblNjb3BlVG9nZ2xlOyB9CiAKICAgICB1bnNpZ25lZCBmaXJz
dExpbmVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0TGluZU9mZnNldDsgfQpAQCAtMTQy
LDggKzE1OSwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSW1tb3J0YWxT
dHJ1Y3R1cmUgPSB0cnVlOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKKyAg
ICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5j
dGlvbjsgfQorCiBwcml2YXRlOgotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwg
U3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIEZ1bmN0aW9uQm9keU5vZGUqLCBib29sIGlz
RnJvbUdsb2JhbENvZGUpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwgU3Ry
dWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIEZ1bmN0aW9uQm9keU5vZGUqLCBib29sIGlzRnJv
bUdsb2JhbENvZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kKTsKICAgICBXcml0ZUJhcnJpZXI8VW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV9jb2RlQmxvY2tGb3JDYWxsOwogICAgIFdyaXRlQmFy
cmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdDsK
IApAQCAtMTUyLDYgKzE3MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzSW5TdHJpY3RDb250
ZXh0IDogMTsKICAgICBib29sIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgOiAxOwogICAgIGJvb2wg
bV9pc0Zyb21HbG9iYWxDb2RlIDogMTsKKyAgICBib29sIG1faXNCdWlsdGluRnVuY3Rpb24gOiAx
OwogCiAgICAgSWRlbnRpZmllciBtX25hbWU7CiAgICAgSWRlbnRpZmllciBtX2luZmVycmVkTmFt
ZTsKQEAgLTMxOSw2ICszMzksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc051bWVyaWNDb21w
YXJlRnVuY3Rpb24oYm9vbCBpc051bWVyaWNDb21wYXJlRnVuY3Rpb24pIHsgbV9pc051bWVyaWND
b21wYXJlRnVuY3Rpb24gPSBpc051bWVyaWNDb21wYXJlRnVuY3Rpb247IH0KICAgICBib29sIGlz
TnVtZXJpY0NvbXBhcmVGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNOdW1lcmljQ29tcGFy
ZUZ1bmN0aW9uOyB9CiAKKyAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQorICAgIAogICAgIHZvaWQgc2hyaW5rVG9GaXQoKQog
ICAgIHsKICAgICAgICAgbV9qdW1wVGFyZ2V0cy5zaHJpbmtUb0ZpdCgpOwpAQCAtNTAwLDYgKzUy
Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzU3RyaWN0TW9kZSA6IDE7CiAgICAgYm9vbCBt
X2lzQ29uc3RydWN0b3IgOiAxOwogICAgIGJvb2wgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7
CisgICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2ZpcnN0
TGluZTsKICAgICB1bnNpZ25lZCBtX2xpbmVDb3VudDsKICAgICB1bnNpZ25lZCBtX2VuZENvbHVt
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAKaW5kZXggNjgxMGFiODAwMmNlNmJiOGQ3OGU3ZmYyMjI3ZjRjNmVh
N2I3NThjMi4uZWM1MjFiNTMwNDYzOTIzZTc0YzAxMGZhMjE4ZTU5ZWQyYTlhM2NhZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKQEAgLTE3NSw2ICsxNzUsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9ncmFtTm9kZSogcHJvZ3JhbU5vZGUsIFVubGlua2VkUAog
I2VuZGlmCiAgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQogICAgICwgbV9leHByZXNzaW9u
VG9vRGVlcChmYWxzZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oZmFsc2UpCiB7CiAgICAg
aWYgKG1fc2hvdWxkRW1pdERlYnVnSG9va3MpCiAgICAgICAgIG1fY29kZUJsb2NrLT5zZXROZWVk
c0Z1bGxTY29wZUNoYWluKHRydWUpOwpAQCAtMjIyLDcgKzIyMywxMyBAQCBCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlv
bkJvZHksIFVubAogI2VuZGlmCiAgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQogICAgICwg
bV9leHByZXNzaW9uVG9vRGVlcChmYWxzZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oY29k
ZUJsb2NrLT5pc0J1aWx0aW5GdW5jdGlvbigpKQogeworICAgIGlmIChtX2lzQnVpbHRpbkZ1bmN0
aW9uKSB7CisgICAgICAgIG1fc2hvdWxkRW1pdFByb2ZpbGVIb29rcyA9IGZhbHNlOworICAgICAg
ICBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzID0gZmFsc2U7CisgICAgfQorCiAgICAgaWYgKG1fc2hv
dWxkRW1pdERlYnVnSG9va3MpCiAgICAgICAgIG1fY29kZUJsb2NrLT5zZXROZWVkc0Z1bGxTY29w
ZUNoYWluKHRydWUpOwogCkBAIC00MzgsNiArNDQ1LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxD
b2QKICNlbmRpZgogICAgICwgbV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKICAgICAsIG1fZXhwcmVz
c2lvblRvb0RlZXAoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGZhbHNlKQogewog
ICAgIG1fY29kZUJsb2NrLT5zZXROZWVkc0Z1bGxTY29wZUNoYWluKHRydWUpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKaW5kZXggNGU5ZjIxM2M5YmZhNmNmMTk0YjFhMTRmZTkxOWU4MzMzN2FlMzVkOS4uMTU4NDI3
NGI3OGVhNmMwYmQwZWZiMGI5ODI1YzgxOGJlMGRiYzA2OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNDYx
LDcgKzQ2MSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIHNob3VsZEVtaXREZWJ1
Z0hvb2tzKCkgeyByZXR1cm4gbV9zaG91bGRFbWl0RGVidWdIb29rczsgfQogICAgICAgICAKICAg
ICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNT
dHJpY3RNb2RlKCk7IH0KLQorICAgICAgICAKKyAgICAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KKyAgICAgICAgCiAgICAg
cHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExhYmVsOwogICAgICAgICAKQEAgLTU0Myw3
ICs1NDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBtYWtlRnVuY3Rpb24oRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSkKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
cmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCBib2R5KTsKKyAgICAgICAgICAgIHJl
dHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2Rl
LT5zb3VyY2UoKSwgYm9keSwgZmFsc2UsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1
aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24pOwogICAgICAgICB9CiAKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdEluaXRMYXp5UmVnaXN0ZXIoUmVnaXN0ZXJJRCopOwpAQCAt
Njc3LDYgKzY3OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wgbV91c2VzRXhj
ZXB0aW9uczsKICAgICAgICAgYm9vbCBtX2V4cHJlc3Npb25Ub29EZWVwOworICAgICAgICBib29s
IG1faXNCdWlsdGluRnVuY3Rpb247CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDFmZmQ0ZjMxMTg4
MmQwZWU1YzU1MTRmNWI4YjI1OTM5ZDk3NWUzNzkuLjYyZWNhMzZhMTBkNzcwOGE5MjhkNDNhYzAz
ZjJmYzg2MTVjZWNhNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTI2LDEwICsyNiwxMCBAQAogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKLSNpbmNsdWRlICJOb2RlQ29uc3RydWN0b3Jz
LmgiCiAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkNhbGxGcmFt
ZS5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIu
aCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC0zOCw2ICsz
OCw3IEBACiAjaW5jbHVkZSAiSlNPTk9iamVjdC5oIgogI2luY2x1ZGUgIkxhYmVsU2NvcGUuaCIK
ICNpbmNsdWRlICJMZXhlci5oIgorI2luY2x1ZGUgIk5vZGVDb25zdHJ1Y3RvcnMuaCIKICNpbmNs
dWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiUHJvcGVy
dHlOYW1lQXJyYXkuaCIKQEAgLTUzNSwzNiArNTM2LDM5IEBAIFJlZ2lzdGVySUQqIENhbGxGdW5j
dGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwKICAgICBSZWZQdHI8TGFiZWw+IGVuZCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYmFzZSk7CiAgICAg
Z2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhw
cmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGlu
YXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRp
b24oZHN0KSwgYmFzZS5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5jYWxsKTsKICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5h
dGlvbihkc3QsIGZ1bmN0aW9uLmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1
bmN0aW9uQ2FsbChmdW5jdGlvbi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkpOworICAgIGJvb2wgZW1p
dENhbGxDaGVjayA9ICFnZW5lcmF0b3IuaXNCdWlsdGluRnVuY3Rpb24oKTsKKyAgICBpZiAoZW1p
dENhbGxDaGVjaykKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkNhbGwo
ZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKKwogICAgIHsKICAgICAgICAgaWYgKG1f
YXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcikgewogICAgICAg
ICAgICAgQXJndW1lbnRMaXN0Tm9kZSogb2xkTGlzdCA9IG1fYXJncy0+bV9saXN0Tm9kZTsKICAg
ICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0
OwotCisgICAgICAgICAgICAKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVu
Y3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3Qp
LCBiYXNlLmdldCgpKTsKICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhn
ZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFy
Z3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKICAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBO
b0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsK
LQogICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gb2xkTGlzdDsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5l
cmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgp
KTsKICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1f
YXJncyk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlz
UmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENh
bGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0
aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwot
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChyZWFsQ2FsbC5nZXQoKSk7Ci0gICAgewotICAg
ICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAg
ICAgICBnZW5lcmF0b3IuZW1pdE1vdmUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgYmFz
ZS5nZXQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwg
ZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3Qo
KSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICBpZiAoZW1pdENhbGxDaGVjaykgewor
ICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9y
LmVtaXRMYWJlbChyZWFsQ2FsbC5nZXQoKSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIENhbGxB
cmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CisgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdE1vdmUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQo
KSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1
bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCks
IGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIH0KKyAgICAgICAgZ2VuZXJhdG9y
LmVtaXRMYWJlbChlbmQuZ2V0KCkpOwogICAgIH0KLSAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVu
ZC5nZXQoKSk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlLmdldCgpOwogfQogCkBAIC01ODUsNjUg
KzU4OSw2NyBAQCBSZWdpc3RlcklEKiBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLAogICAgIFJlZlB0cjxMYWJlbD4gZW5k
ID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBn
ZW5lcmF0b3IuZW1pdE5vZGUobV9iYXNlKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25J
bmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVz
c2lvbkVuZCgpKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3Iu
ZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBt
X2lkZW50KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuY3Rpb247CiAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBm
dW5jdGlvbi5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5
KGZ1bmN0aW9uLmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7Ci0gICAgewotICAgICAgICBpZiAobWF5
QmVDYWxsKSB7Ci0gICAgICAgICAgICBpZiAobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+
bV9saXN0Tm9kZS0+bV9leHByKSB7Ci0gICAgICAgICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSog
b2xkTGlzdCA9IG1fYXJncy0+bV9saXN0Tm9kZTsKLSAgICAgICAgICAgICAgICBpZiAobV9hcmdz
LT5tX2xpc3ROb2RlLT5tX25leHQpIHsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fYXJn
cy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHItPmlzU2ltcGxlQXJyYXkoKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIEFTU0VSVCghbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fbmV4dCk7
Ci0gICAgICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IHN0YXRpY19jYXN0PEFy
cmF5Tm9kZSo+KG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHIpLT50b0FyZ3VtZW50
TGlzdChnZW5lcmF0b3Iudm0oKSwgMCwgMCk7Ci0gICAgICAgICAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRl
bXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKLSAgICAgICAgICAgICAgICAgICAgQ2Fs
bEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAgICAgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCks
IG9sZExpc3QtPm1fZXhwcik7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2Fs
bChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rp
b24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0g
ICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xp
c3ROb2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQ7Ci0gICAgICAgICAgICAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2Vu
ZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1Jl
Z2lzdGVyKCksIG9sZExpc3QtPm1fZXhwcik7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVj
dGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RF
bmQoKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0
Tm9kZSA9IG9sZExpc3Q7CisgICAgYm9vbCBlbWl0Q2FsbENoZWNrID0gIWdlbmVyYXRvci5pc0J1
aWx0aW5GdW5jdGlvbigpOworICAgIGlmIChlbWl0Q2FsbENoZWNrKSB7CisgICAgICAgIGZ1bmN0
aW9uID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0
KSwgYmFzZS5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5hcHBseSk7CisgICAgICAg
IGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25BcHBseShmdW5jdGlvbi5nZXQoKSwgcmVh
bENhbGwuZ2V0KCkpOworICAgIH0KKyAgICBpZiAobWF5QmVDYWxsKSB7CisgICAgICAgIGlmICht
X2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpIHsKKyAgICAg
ICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIG9sZExpc3QgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7Cisg
ICAgICAgICAgICBpZiAobV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQpIHsKKyAgICAgICAgICAg
ICAgICBBU1NFUlQobV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwci0+aXNTaW1wbGVB
cnJheSgpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIW1fYXJncy0+bV9saXN0Tm9kZS0+bV9u
ZXh0LT5tX25leHQpOworICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IHN0YXRp
Y19jYXN0PEFycmF5Tm9kZSo+KG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHIpLT50
b0FyZ3VtZW50TGlzdChnZW5lcmF0b3Iudm0oKSwgMCwgMCk7CisgICAgICAgICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0
b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOworICAgICAgICAgICAgICAgIENh
bGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CisgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG9s
ZExpc3QtPm1fZXhwcik7CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVy
blZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2Fs
bEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gbV9hcmdz
LT5tX2xpc3ROb2RlLT5tX25leHQ7CiAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0
aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2Fs
bEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwor
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdp
c3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVu
Y3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBvbGRMaXN0
OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9k
ZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCk7Ci0gICAgICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcHJvZmlsZUhvb2tSZWdpc3RlcjsKLSAgICAgICAgICAgIGlmIChnZW5lcmF0b3Iu
c2hvdWxkRW1pdFByb2ZpbGVIb29rcygpKQotICAgICAgICAgICAgICAgIHByb2ZpbGVIb29rUmVn
aXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1w
RGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gdGhpc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYXJncy0+bV9saXN0Tm9k
ZS0+bV9leHByKTsKLSAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhcmdzUmVnaXN0ZXI7
Ci0gICAgICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBhcmdzID0gbV9hcmdzLT5tX2xpc3ROb2Rl
LT5tX25leHQ7Ci0gICAgICAgICAgICBpZiAoYXJncy0+bV9leHByLT5pc1Jlc29sdmVOb2RlKCkg
JiYgZ2VuZXJhdG9yLndpbGxSZXNvbHZlVG9Bcmd1bWVudHMoc3RhdGljX2Nhc3Q8UmVzb2x2ZU5v
ZGUqPihhcmdzLT5tX2V4cHIpLT5pZGVudGlmaWVyKCkpKQotICAgICAgICAgICAgICAgIGFyZ3NS
ZWdpc3RlciA9IGdlbmVyYXRvci51bmNoZWNrZWRSZWdpc3RlckZvckFyZ3VtZW50cygpOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGFyZ3NSZWdpc3RlciA9IGdlbmVyYXRvci5l
bWl0Tm9kZShhcmdzLT5tX2V4cHIpOwotCi0gICAgICAgICAgICAvLyBGdW5jdGlvbi5wcm90b3R5
cGUuYXBwbHkgaWdub3JlcyBleHRyYSBhcmd1bWVudHMsIGJ1dCB3ZSBzdGlsbAotICAgICAgICAg
ICAgLy8gbmVlZCB0byBldmFsdWF0ZSB0aGVtIGZvciBzaWRlIGVmZmVjdHMuCi0gICAgICAgICAg
ICB3aGlsZSAoKGFyZ3MgPSBhcmdzLT5tX25leHQpKQotICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0Tm9kZShhcmdzLT5tX2V4cHIpOwotCi0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENh
bGxWYXJhcmdzKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdp
c3Rlci5nZXQoKSwgYXJnc1JlZ2lzdGVyLmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCks
IHByb2ZpbGVIb29rUmVnaXN0ZXIuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RF
bmQoKSk7CisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9y
LCBtX2FyZ3MpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMu
dGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRG
dW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKICAgICAgICAgfQotICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBBU1NFUlQobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+
bV9saXN0Tm9kZS0+bV9uZXh0KTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb2ZpbGVI
b29rUmVnaXN0ZXI7CisgICAgICAgIGlmIChnZW5lcmF0b3Iuc2hvdWxkRW1pdFByb2ZpbGVIb29r
cygpKQorICAgICAgICAgICAgcHJvZmlsZUhvb2tSZWdpc3RlciA9IGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVy
YXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkp
OworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLmVt
aXROb2RlKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGFyZ3NSZWdpc3RlcjsKKyAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogYXJncyA9IG1f
YXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OworICAgICAgICBpZiAoYXJncy0+bV9leHByLT5pc1Jl
c29sdmVOb2RlKCkgJiYgZ2VuZXJhdG9yLndpbGxSZXNvbHZlVG9Bcmd1bWVudHMoc3RhdGljX2Nh
c3Q8UmVzb2x2ZU5vZGUqPihhcmdzLT5tX2V4cHIpLT5pZGVudGlmaWVyKCkpKQorICAgICAgICAg
ICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLnVuY2hlY2tlZFJlZ2lzdGVyRm9yQXJndW1lbnRz
KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFyZ3NSZWdpc3RlciA9IGdlbmVyYXRvci5l
bWl0Tm9kZShhcmdzLT5tX2V4cHIpOworCisgICAgICAgIC8vIEZ1bmN0aW9uLnByb3RvdHlwZS5h
cHBseSBpZ25vcmVzIGV4dHJhIGFyZ3VtZW50cywgYnV0IHdlIHN0aWxsCisgICAgICAgIC8vIG5l
ZWQgdG8gZXZhbHVhdGUgdGhlbSBmb3Igc2lkZSBlZmZlY3RzLgorICAgICAgICB3aGlsZSAoKGFy
Z3MgPSBhcmdzLT5tX25leHQpKQorICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGFyZ3Mt
Pm1fZXhwcik7CisKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsVmFyYXJncyhyZXR1cm5WYWx1
ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCB0aGlzUmVnaXN0ZXIuZ2V0KCksIGFyZ3NSZWdp
c3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm9maWxlSG9va1JlZ2lzdGVy
LmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIH0KLSAgICBn
ZW5lcmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKLSAgICB7CisgICAgaWYgKGVtaXRD
YWxsQ2hlY2spIHsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CisgICAg
ICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOwogICAgICAgICBDYWxsQXJn
dW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICBnZW5lcmF0
b3IuZW1pdE1vdmUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7CiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0
KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0KCkp
OwogICAgIH0KLSAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAgcmV0dXJu
IHJldHVyblZhbHVlLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvY3JlYXRlX2hhc2hfdGFibGUgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hf
dGFibGUKaW5kZXggMzk3OTc2YjA2YzdhOWI1ODM2MzMyOTAwYTZlYmI5M2VjNjhiNzQ4Ni4uY2Fk
NjViYzRjYzg4OGUzMTRmODhkNjY1ZGQ0YTZlNjQ1YTA5YTM1NSAxMDA3NTUKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9jcmVhdGVfaGFzaF90YWJsZQpAQCAtMjg5LDcgKzI4OSwxNyBAQCBzdWIgb3V0cHV0KCkg
ewogICAgICAgICAgICAgJGludHJpbnNpYyA9ICJSZWdFeHBUZXN0SW50cmluc2ljIiBpZiAoJGtl
eSBlcSAidGVzdCIpOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKCR2YWx1ZXNbJGldeyJ0eXBl
In0gZXEgIkZ1bmN0aW9uIikgIHsKKyAgICAgICAgICAgIG15ICR0YWJsZUhlYWQgPSAkbmFtZTsK
KyAgICAgICAgICAgICR0YWJsZUhlYWQgPX4gcy9UYWJsZSQvLzsKKyAgICAgICAgICAgIHByaW50
ICIgI2lmIEpTQ19CVUlMVElOX0VYSVNUUygiIC4gdWMoJHRhYmxlSGVhZCAuICRrZXkpIC4iKVxu
IjsKKyAgICAgICAgICAgIHByaW50ICIgICB7IFwiJGtleVwiLCAoKCRhdHRyc1skaV0pICYgfkZ1
bmN0aW9uKSB8IEJ1aWx0aW4sICRpbnRyaW5zaWMsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxCdWls
dGluR2VuZXJhdG9yPigiIC4gJHRhYmxlSGVhZCAuIHVjZmlyc3QoJGtleSkgLiAiQ29kZUdlbmVy
YXRvciksIChpbnRwdHJfdCkkc2Vjb25kVmFsdWUgfSxcbiI7CisgICAgICAgICAgICBwcmludCAi
ICNlbHNlXG4iCisgICAgICAgIH0KICAgICAgICAgcHJpbnQgIiAgIHsgXCIka2V5XCIsICRhdHRy
c1skaV0sICRpbnRyaW5zaWMsIChpbnRwdHJfdCkiIC4gJGZpcnN0Q2FzdFN0ciAuICIoJGZpcnN0
VmFsdWUpLCAoaW50cHRyX3QpIiAuICRzZWNvbmRDYXN0U3RyIC4gIigkc2Vjb25kVmFsdWUpIH0s
XG4iOworICAgICAgICBpZiAoJHZhbHVlc1skaV17InR5cGUifSBlcSAiRnVuY3Rpb24iKSAgewor
ICAgICAgICAgICAgcHJpbnQgIiAjZW5kaWZcbiIKKyAgICAgICAgfQogICAgICAgICAkaSsrOwog
ICAgIH0KICAgICBwcmludCAiICAgeyAwLCAwLCBOb0ludHJpbnNpYywgMCwgMCB9XG4iOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb21pbmF0b3JzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9taW5hdG9ycy5jcHAKaW5kZXggYTVhZTYxNGI5
MTliMGZkNDM0ODJkMDE1Y2MyOTUwODQwZTU0YjI2MS4uMjAwOTZlNzNiMzUxNTljNzQzNGJkMjdh
YjZmNjMzMzdmZTlkZjRhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb21pbmF0b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWlu
YXRvcnMuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJERkdEb21pbmF0b3JzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKIAog
I2lmIEVOQUJMRShERkdfSklUKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2Rl
LmNwcAppbmRleCA5M2M0MWZiZGU0NDc2NGI2YTZmZWUwYjI0YjQ4NDlhZWRiMTE3NGM1Li5kODZh
YzhiNDEzNzMxY2I4ZGJkZjRhZDMzZWZhNWQ3ODUyMDUxYTAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29kZS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoREZH
X0pJVCkKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxp
bmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggMmZmMGMzNDE0NmUyYzBiYTJm
Zjc2YzRkM2Y3YzQ2YmEzZTI1NTE0Ny4uOTA0NGNkYzZiOGMzYWQ0YTFlOTQxODhkZDFkMGUyMDBl
NjlmYjk5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAi
Vk0uaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5l
cy5oIgogI2luY2x1ZGUgIk5hbWVJbnN0YW5jZS5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVj
dG9yLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5zIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dl
bmVyYXRlLWpzLWJ1aWx0aW5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlZTFjN2E3Y2NkZDkzNzY5MjBlNzZkN2Zl
OGQzMGFmOTU1ZjMxYTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Z2VuZXJhdGUtanMtYnVpbHRpbnMKQEAgLTAsMCArMSwzMDQgQEAKKyMhL3Vzci9iaW4vcHl0aG9u
CisjIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisjIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisjIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyMgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCitpbXBvcnQgZmlsZWNtcAoraW1wb3J0IGZubWF0Y2gKK2ltcG9ydCBv
cworaW1wb3J0IHJlCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3lzCitpbXBvcnQgZGF0ZXRpbWUK
K2ltcG9ydCBqc29uCisKK2NvcHlyaWdodFRleHQgPSAiIiIgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqL1xuCisiIiIKKworZ2VuZXJhdG9yU3RyaW5nID0gIi8qIEdlbmVy
YXRlZCBieSAlcyBkbyBub3QgaGFuZCBlZGl0LiAqL1xuIiAlIG9zLnBhdGguYmFzZW5hbWUoX19m
aWxlX18pCisKK2Z1bmN0aW9uSGVhZFJlZ0V4cCA9IHJlLmNvbXBpbGUociJmdW5jdGlvblxzK1x3
K1xzKlwoLio/XCkiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorZnVuY3Rpb25OYW1lUmVnRXhwID0g
cmUuY29tcGlsZShyImZ1bmN0aW9uXHMrKFx3KylccypcKCIsIHJlLk1VTFRJTElORSB8IHJlLlMp
CitmdW5jdGlvblBhcmFtZXRlckZpbmRlciA9IHJlLmNvbXBpbGUociJeZnVuY3Rpb25ccysoPzpc
dyspXHMqXCgoKD86XHMqXHcrKT9ccyooPzpccyosXHMqXHcrKSopP1wpIiwgcmUuTVVMVElMSU5F
IHwgcmUuUykKKworbXVsdGlsaW5lQ29tbWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJcL1wqLio/
XCpcLyIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitzaW5nbGVMaW5lQ29tbWVudFJlZ0V4cCA9IHJl
LmNvbXBpbGUociJcL1wvLio/XG4iLCByZS5NVUxUSUxJTkUgfCByZS5TKQorCitkZWYgZ2V0Q29w
eXJpZ2h0KHNvdXJjZSk6CisgICAgY29weXJpZ2h0QmxvY2sgPSBtdWx0aWxpbmVDb21tZW50UmVn
RXhwLmZpbmRhbGwoc291cmNlKVswXQorICAgIGNvcHlyaWdodEJsb2NrID0gY29weXJpZ2h0Qmxv
Y2tbOmNvcHlyaWdodEJsb2NrLmluZGV4KCJSZWRpc3RyaWJ1dGlvbiIpXQorICAgIGNvcHlSaWdo
dExpbmVzID0gW10KKworICAgIGZvciBsaW5lIGluIGNvcHlyaWdodEJsb2NrLnNwbGl0KCJcbiIp
OgorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIvKiIsICIiKQorICAgICAgICBsaW5lID0g
bGluZS5yZXBsYWNlKCIqLyIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIqIiwg
IiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIkNvcHlyaWdodCIsICIiKQorICAgICAg
ICBsaW5lID0gbGluZS5yZXBsYWNlKCJjb3B5cmlnaHQiLCAiIikKKyAgICAgICAgbGluZSA9IGxp
bmUucmVwbGFjZSgiKEMpIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIihjKSIs
ICIiKQorICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgIGlmIGxlbihsaW5lKSA9
PSAwOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBjb3B5UmlnaHRMaW5lcy5hcHBl
bmQobGluZSkKKyAgICAKKyAgICByZXR1cm4gbGlzdChzZXQoY29weVJpZ2h0TGluZXMpKQorCisK
KworZGVmIGdldEZ1bmN0aW9ucyhzb3VyY2UpOgorCisgICAgc291cmNlID0gbXVsdGlsaW5lQ29t
bWVudFJlZ0V4cC5zdWIoIi8qKi8iLCBzaW5nbGVMaW5lQ29tbWVudFJlZ0V4cC5zdWIoIi8vXG4i
LCBzb3VyY2UpKQorCisgICAgbWF0Y2hlcyA9IFsgZiBmb3IgZiBpbiBmdW5jdGlvbkhlYWRSZWdF
eHAuZmluZGl0ZXIoc291cmNlKV0KKyAgICBmdW5jdGlvbkJvdW5kcyA9IFtdCisgICAgc3RhcnQg
PSAwCisgICAgZW5kID0gMAorICAgIGZvciBtYXRjaCBpbiBtYXRjaGVzOgorICAgICAgICBzdGFy
dCA9IG1hdGNoLnN0YXJ0KCkKKyAgICAgICAgaWYgc3RhcnQgPCBlbmQ6CisgICAgICAgICAgICBj
b250aW51ZQorICAgICAgICBlbmQgPSBtYXRjaC5lbmQoKQorICAgICAgICB3aGlsZSBzb3VyY2Vb
ZW5kXSAhPSAneyc6CisgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgIGRlcHRoID0g
MQorICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgIHdoaWxlIGRlcHRoID4gMDoKKyAgICAg
ICAgICAgIGlmIHNvdXJjZVtlbmRdID09ICd7JzoKKyAgICAgICAgICAgICAgICBkZXB0aCA9IGRl
cHRoICsgMQorICAgICAgICAgICAgZWxpZiBzb3VyY2VbZW5kXSA9PSAnfSc6CisgICAgICAgICAg
ICAgICAgZGVwdGggPSBkZXB0aCAtIDEKKyAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAg
ICAgZnVuY3Rpb25Cb3VuZHMuYXBwZW5kKChzdGFydCwgZW5kKSkKKworICAgIGZ1bmN0aW9ucyA9
IFtzb3VyY2Vbc3RhcnQ6ZW5kXS5zdHJpcCgpIGZvciAoc3RhcnQsIGVuZCkgaW4gZnVuY3Rpb25C
b3VuZHNdCisgICAgcmVzdWx0ID0gW10KKyAgICBmb3IgZnVuY3Rpb24gaW4gZnVuY3Rpb25zOgor
ICAgICAgICBmdW5jdGlvbiA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAuc3ViKCIiLCBmdW5jdGlv
bikKKyAgICAgICAgZnVuY3Rpb25OYW1lID0gZnVuY3Rpb25OYW1lUmVnRXhwLmZpbmRhbGwoZnVu
Y3Rpb24pWzBdCisgICAgICAgIGZ1bmN0aW9uUGFyYW1ldGVycyA9IGZ1bmN0aW9uUGFyYW1ldGVy
RmluZGVyLmZpbmRhbGwoZnVuY3Rpb24pWzBdLnNwbGl0KCcsJykKKyAgICAgICAgaWYgbGVuKGZ1
bmN0aW9uUGFyYW1ldGVyc1swXSkgPT0gMDoKKyAgICAgICAgICAgIGZ1bmN0aW9uUGFyYW1ldGVy
cyA9IFtdCisgICAgICAgICAgICAKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgoZnVuY3Rpb25OYW1l
LCBmdW5jdGlvbiwgZnVuY3Rpb25QYXJhbWV0ZXJzKSkKKyAgICByZXR1cm4gcmVzdWx0CisgICAg
ICAgIAorCitkZWYgZ2VuZXJhdGVDb2RlKHNvdXJjZSk6CisgICAgaW5wdXRGaWxlID0gb3Blbihz
b3VyY2UsICJyIikKKyAgICBiYXNlTmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoc291cmNlKS5yZXBs
YWNlKCIuanMiLCAiIikKKyAgICAKKyAgICBzb3VyY2UgPSAiIgorICAgIGZvciBsaW5lIGluIGlu
cHV0RmlsZToKKyAgICAgICAgc291cmNlID0gc291cmNlICsgbGluZQorICAgIAorICAgIGlmIHN5
cy5wbGF0Zm9ybSA9PSAiY3lnd2luIjoKKyAgICAgICAgc291cmNlID0gc291cmNlLnJlcGxhY2Uo
IlxyXG4iLCAiXG4iKQorICAgIHJldHVybiAoYmFzZU5hbWUsIGdldEZ1bmN0aW9ucyhzb3VyY2Up
LCBnZXRDb3B5cmlnaHQoc291cmNlKSkKKworZGVmIG1hbmdsZU5hbWUob2JqZWN0LCBuYW1lKToK
KyAgICBxTmFtZSA9IG9iamVjdCArICIuIiArIG5hbWUKKyAgICBtYW5nbGVkTmFtZSA9ICIiCisg
ICAgaSA9IDAKKyAgICB3aGlsZSBpIDwgbGVuKHFOYW1lKToKKyAgICAgICAgaWYgcU5hbWVbaV0g
PT0gJy4nOgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZSArIHFOYW1lW2kg
KyAxXS51cHBlcigpCisgICAgICAgICAgICBpID0gaSArIDEKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWUgKyBxTmFtZVtpXQorICAgICAgICBpID0g
aSArIDEKKyAgICByZXR1cm4gbWFuZ2xlZE5hbWUKKworYnVpbHRpbnMgPSBbXQorCitiYXNlTmFt
ZSA9IHN5cy5hcmd2Wy0xXQorYnVpbHRpbl9kZWZpbml0aW9ucyA9IHN5cy5hcmd2WzE6LTFdCiso
b3V0cHV0X2Jhc2UsIF8pID0gb3MucGF0aC5zcGxpdGV4dChzeXMuYXJndlstMV0pCisKK2NvcHly
aWdodHMgPSBbXQorZm9yIGZpbGUgaW4gYnVpbHRpbl9kZWZpbml0aW9uczoKKyAgICBpZiBmbm1h
dGNoLmZubWF0Y2goZmlsZSwgJyouanMnKToKKyAgICAgICAgKGJhc2VOYW1lLCBmdW5jdGlvbnMs
IG9iamVjdENvcHlyaWdodHMpID0gZ2VuZXJhdGVDb2RlKGZpbGUpCisgICAgICAgIGNvcHlyaWdo
dHMuZXh0ZW5kKG9iamVjdENvcHlyaWdodHMpCisgICAgICAgIGJ1aWx0aW5zLmFwcGVuZCgoYmFz
ZU5hbWUsIGZ1bmN0aW9ucykpCisKK2NvcHlyaWdodHMgPSBsaXN0KHNldChjb3B5cmlnaHRzKSkK
KworY29weXJpZ2h0Qm9keSA9ICIiCitmb3IgY29weXJpZ2h0IGluIGNvcHlyaWdodHM6CisgICAg
Y29weXJpZ2h0Qm9keSA9IGNvcHlyaWdodEJvZHkgKyIgKiBDb3B5cmlnaHQgKEMpICIgKyBjb3B5
cmlnaHQgKyAiXG4iCisKK2J1aWx0aW5zSGVhZGVyID0gb3BlbihvdXRwdXRfYmFzZSArICIuaC50
bXAiLCAidyIpCitidWlsdGluc0ltcGxlbWVudGF0aW9uID0gb3BlbihvdXRwdXRfYmFzZSArICIu
Y3BwLnRtcCIsICJ3IikKK2NvcHlyaWdodFRleHQgPSAiLypcbiIgKyBjb3B5cmlnaHRCb2R5ICsg
Y29weXJpZ2h0VGV4dAorYnVpbHRpbnNIZWFkZXIud3JpdGUoIiIiJXMKKyVzCisKKyNpZm5kZWYg
SlNDQnVpbHRpbnNfSAorI2RlZmluZSBKU0NCdWlsdGluc19ICisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CitjbGFzcyBJZGVudGlmaWVyOworY2xhc3MgSlNH
bG9iYWxPYmplY3Q7CitjbGFzcyBTb3VyY2VDb2RlOworY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU7CitjbGFzcyBWTTsKKworRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVCdWlsdGlu
RXhlY3V0YWJsZShWTSYsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwgY29uc3QgU291cmNl
Q29kZSYpOworCisiIiIgJSAoZ2VuZXJhdG9yU3RyaW5nLCBjb3B5cmlnaHRUZXh0KSkKKworY29k
ZVJlZmVyZW5jZXMgPSBbXQorCitmb3IgKG9iamVjdE5hbWUsIGZ1bmN0aW9ucykgaW4gYnVpbHRp
bnM6CisgICAgcHJpbnQoIkdlbmVyYXRpbmcgYmluZGluZ3MgZm9yIHRoZSAlcyBidWlsdGluLiIg
JSBvYmplY3ROYW1lKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIvKiAlcyBmdW5jdGlvbnMg
Ki9cbiIgJSBvYmplY3ROYW1lKQorICAgIGZvciAobmFtZSwgaW1wbGVtZW50YXRpb24sIF8pIGlu
IGZ1bmN0aW9uczoKKyAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVOYW1lKG9iamVjdE5hbWUs
IG5hbWUpCisgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWVbMF0ubG93ZXIoKSArIG1h
bmdsZWROYW1lWzE6XSArICJDb2RlIgorICAgICAgICBjb2RlUmVmZXJlbmNlcy5hcHBlbmQoKG1h
bmdsZWROYW1lLCBuYW1lLCBpbXBsZW1lbnRhdGlvbikpCisgICAgICAgIGJ1aWx0aW5zSGVhZGVy
LndyaXRlKCJleHRlcm4gY29uc3QgY2hhciogc18lcztcbiIgJSBtYW5nbGVkTmFtZSkKKyAgICAg
ICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoImV4dGVybiBjb25zdCBpbnQgc18lc0xlbmd0aDtcbiIg
JSBtYW5nbGVkTmFtZSkKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiXG4iKQorICAgIGJ1aWx0
aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19GT1JFQUNIXyVzX0JVSUxUSU4obWFjcm8pIFxc
XG4iICUgb2JqZWN0TmFtZS5yZXBsYWNlKCIuIiwgIl8iKS51cHBlcigpKQorICAgIGZvciAobmFt
ZSwgaW1wbGVtZW50YXRpb24sIGFyZ3VtZW50cykgaW4gZnVuY3Rpb25zOgorICAgICAgICBtYW5n
bGVkTmFtZSA9IG1hbmdsZU5hbWUob2JqZWN0TmFtZSwgbmFtZSkKKyAgICAgICAgYnVpbHRpbnNI
ZWFkZXIud3JpdGUoIiAgICBtYWNybyglcywgJXMsICVkKSBcXFxuIiAlIChuYW1lLCBtYW5nbGVk
TmFtZSwgbGVuKGFyZ3VtZW50cykpKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJcbiIpCisg
ICAgZm9yIChuYW1lLCBpbXBsZW1lbnRhdGlvbiwgYXJndW1lbnRzKSBpbiBmdW5jdGlvbnM6Cisg
ICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19CVUlMVElOXyVzIDFcbiIg
JSBtYW5nbGVOYW1lKG9iamVjdE5hbWUsIG5hbWUpLnVwcGVyKCkpCisgICAgYnVpbHRpbnNIZWFk
ZXIud3JpdGUoIlxuXG4iKQorbmFtZXMgPSBbXQorYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZp
bmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTihtYWNybylcXFxuIikKK2ZvciAoY29kZVJlZmVyZW5jZSwg
ZnVuY3Rpb25OYW1lLCBzb3VyY2UpIGluIGNvZGVSZWZlcmVuY2VzOgorICAgIGJ1aWx0aW5zSGVh
ZGVyLndyaXRlKCIgICAgbWFjcm8oJXMsICVzLCBzXyVzTGVuZ3RoKSBcXFxuIiAlIChjb2RlUmVm
ZXJlbmNlLCBmdW5jdGlvbk5hbWUsIGNvZGVSZWZlcmVuY2UpKQorICAgIG5hbWVzLmFwcGVuZChm
dW5jdGlvbk5hbWUpCisKK2J1aWx0aW5zSGVhZGVyLndyaXRlKCJcblxuIikKK2J1aWx0aW5zSGVh
ZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNy
bykgXFxcbiIpCitmb3IgbmFtZSBpbiBzb3J0ZWQoc2V0KG5hbWVzKSk6CisgICAgYnVpbHRpbnNI
ZWFkZXIud3JpdGUoIiAgICBtYWNybyglcykgXFxcbiIgJSBuYW1lKQorYnVpbHRpbnNIZWFkZXIu
d3JpdGUoIiIiCisKKyNkZWZpbmUgSlNDX0RFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5h
bWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKKyAgICBGdW5jdGlvbkV4ZWN1dGFi
bGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoVk0mKTsKKworSlNDX0ZPUkVBQ0hfQlVJTFRJTihKU0Nf
REVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBKU0NfREVDTEFSRV9CVUlMVElOX0dF
TkVSQVRPUgorCisjZGVmaW5lIEpTQ19CVUlMVElOX0VYSVNUUyhuYW1lKSBkZWZpbmVkKEpTQ19C
VUlMVElOXyMjbmFtZSkKKworfQorCisjZW5kaWYKKworIiIiKQorCitidWlsdGluc0ltcGxlbWVu
dGF0aW9uLndyaXRlKCIiIiVzCislcworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRl
ICJKU0NCdWlsdGlucy5oIgorCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5j
bHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRl
ICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworIiIiICAlIChnZW5lcmF0b3JTdHJpbmcsIGNv
cHlyaWdodFRleHQpKQorCitmb3IgKGNvZGVSZWZlcmVuY2UsIG5hbWUsIHNvdXJjZSkgaW4gY29k
ZVJlZmVyZW5jZXM6CisgICAgc291cmNlID0gIihmdW5jdGlvbiAiICsgc291cmNlW3NvdXJjZS5p
bmRleCgiKCIpOl0gKyAiKSIKKyAgICBsaW5lcyA9IGpzb24uZHVtcHMoc291cmNlKVsxOi0xXS5z
cGxpdCgiXFxuIikKKyAgICBzb3VyY2VMZW5ndGggPSBsZW4oc291cmNlKQorICAgIHNvdXJjZSA9
ICIiCisgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgIHNvdXJjZSA9IHNvdXJjZSArICgi
ICAgIFwiJXNcXG5cIiBcXFxuIiAlIGxpbmUpCisgICAgYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53
cml0ZSgiY29uc3QgY2hhciogc18lcyA9XG4lcztcblxuIiAlIChjb2RlUmVmZXJlbmNlLCBzb3Vy
Y2UpKQorICAgIGJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoImNvbnN0IGludCBzXyVzTGVu
Z3RoID0gJWQ7XG5cbiIgJSAoY29kZVJlZmVyZW5jZSwgc291cmNlTGVuZ3RoICsgMSkpICMgKyAx
IGZvciBcbgorCitidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIgorRnVuY3Rpb25FeGVj
dXRhYmxlKiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShWTSYgdm0sIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkK
K3sKKyAgICB1bnNpZ25lZCBsaW5lQ291bnQgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPmxpbmVDb3Vu
dCgpOworICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gMTsKKyAgICB1bnNpZ25lZCBzb3VyY2VM
ZW5ndGggPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnNvdXJjZUxlbmd0aCgpOworICAgIGJvb2wgZW5k
Q29sdW1uSXNPblN0YXJ0TGluZSA9ICFsaW5lQ291bnQ7CisgICAgdW5zaWduZWQgZW5kQ29sdW1u
RXhjbHVkaW5nQnJhY2VzID0gdW5saW5rZWRFeGVjdXRhYmxlLT51bmxpbmtlZEJvZHlFbmRDb2x1
bW4oKSArIChlbmRDb2x1bW5Jc09uU3RhcnRMaW5lID8gMCA6IDEpOworICAgIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0ID0gdW5saW5rZWRFeGVjdXRhYmxlLT5zdGFydE9mZnNldCgpOworICAgIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0RXhjbHVkaW5nT3BlbkJyYWNlID0gc3RhcnRPZmZzZXQgKyAxOworICAg
IHVuc2lnbmVkIGVuZE9mZnNldEV4Y2x1ZGluZ0Nsb3NlQnJhY2UgPSBzdGFydE9mZnNldCArIHNv
dXJjZUxlbmd0aCAtIDE7CisgICAgU291cmNlQ29kZSBib2R5U291cmNlKHNvdXJjZS5wcm92aWRl
cigpLCBzdGFydE9mZnNldEV4Y2x1ZGluZ09wZW5CcmFjZSwgZW5kT2Zmc2V0RXhjbHVkaW5nQ2xv
c2VCcmFjZSwgMCwgc3RhcnRDb2x1bW4pOworICAgIHJldHVybiBGdW5jdGlvbkV4ZWN1dGFibGU6
OmNyZWF0ZSh2bSwgYm9keVNvdXJjZSwgdW5saW5rZWRFeGVjdXRhYmxlLCAwLCBsaW5lQ291bnQs
IHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW5FeGNsdWRpbmdCcmFjZXMsIGZhbHNlKTsKK30KKworI2Rl
ZmluZSBKU0NfREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUs
IGFyZ3VtZW50Q291bnQpIFxcCitGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0
b3IoVk0mIHZtKSBcXAoreyBcXAorICAgIHJldHVybiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSh2
bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCksIHZtLmJ1
aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyBcXAorfQorCitKU0NfRk9S
RUFDSF9CVUlMVElOKEpTQ19ERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgSlNDX0RF
RklORV9CVUlMVElOX0dFTkVSQVRPUgorfQorCisiIiIpCisKK2J1aWx0aW5zSGVhZGVyLmNsb3Nl
KCkKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24uY2xvc2UoKQorCitpZiAobm90IG9zLnBhdGguZXhp
c3RzKG91dHB1dF9iYXNlICsgIi5oIikpIG9yIChub3QgZmlsZWNtcC5jbXAob3V0cHV0X2Jhc2Ug
KyAiLmgudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmgiLCBzaGFsbG93PUZhbHNlKSk6CisgICAgb3Mu
cmVuYW1lKG91dHB1dF9iYXNlICsgIi5oLnRtcCIsIG91dHB1dF9iYXNlICsgIi5oIikKK2Vsc2U6
CisgICAgb3MucmVtb3ZlKG91dHB1dF9iYXNlICsgIi5oLnRtcCIpCisKK2lmIChub3Qgb3MucGF0
aC5leGlzdHMob3V0cHV0X2Jhc2UgKyAiLmNwcCIpKSBvciAobm90IGZpbGVjbXAuY21wKG91dHB1
dF9iYXNlICsgIi5jcHAudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmNwcCIsIHNoYWxsb3c9RmFsc2Up
KToKKyAgICBvcy5yZW5hbWUob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCBvdXRwdXRfYmFzZSAr
ICIuY3BwIikKK2Vsc2U6CisgICAgb3MucmVtb3ZlKG91dHB1dF9iYXNlICsgIi5jcHAudG1wIikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxs
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oCmluZGV4
IDJjYTNlOTc5NDBjN2MxMTA2YzFiYWJhMWYzNTRmZTg0N2I0Mzg1YjMuLjMwY2FkMmExNGZmZGJm
YjRkNTdjZjVhMTJmY2I5MDBlMjY0Zjg3NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0NhY2hlZENhbGwuaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgICwgbV9pbnRlcnByZXRlcihjYWxsRnJhbWUtPmludGVycHJldGVyKCkp
CiAgICAgICAgICAgICAsIG1fZW50cnlTY29wZShjYWxsRnJhbWUtPnZtKCksIGZ1bmN0aW9uLT5z
Y29wZSgpLT5nbG9iYWxPYmplY3QoKSkKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKCFm
dW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSk7CisgICAgICAgICAgICBBU1NFUlQoIWZ1bmN0aW9u
LT5pc0hvc3RGdW5jdGlvbk5vbklubGluZSgpKTsKICAgICAgICAgICAgIGlmIChjYWxsRnJhbWUt
PnZtKCkuaXNTYWZlVG9SZWN1cnNlKCkpIHsKICAgICAgICAgICAgICAgICBtX2FyZ3VtZW50cy5y
ZXNpemUoYXJndW1lbnRDb3VudCk7CiAgICAgICAgICAgICAgICAgbV9jbG9zdXJlID0gbV9pbnRl
cnByZXRlci0+cHJlcGFyZUZvclJlcGVhdENhbGwoZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLCBj
YWxsRnJhbWUsICZtX3Byb3RvQ2FsbEZyYW1lLCBmdW5jdGlvbiwgYXJndW1lbnRDb3VudCArIDEs
IGZ1bmN0aW9uLT5zY29wZSgpLCBtX2FyZ3VtZW50cy5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggZmE4OGUwZjJm
NDFhMDk4ZDhmZWM0YjdmYjUzNzRhNDVhMzQyYmM2ZS4uOWQyYzVkNTAwMzhkNGIzNjQ5YjJmMmU5
NmNmMTE4ZDViODMxYTEwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTU3RhY2tJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJK
U1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIkxMSW50Q0xvb3AuaCIKICNpbmNsdWRlICJMTEludFRo
dW5rcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1By
b3RvQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90
b0NhbGxGcmFtZS5jcHAKaW5kZXggZjBlMDJiYTRlNDc2Zjk5Y2M5MTNiMDQ2MmFkMjc5NTAwNjA5
ZmEzYS4uMWMyNDBkY2Q3MWJlNTI5ZDg4Y2JmNDYxZDE4NjhmNWViMmIwMmFkNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuY3Bw
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKIAogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiU3RhY2tBbGlnbm1lbnQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCBjYTdhZDExZjJlMGI4YTNiOGIxODU4OTFkN2U1
MjJiYWU0MDNhMjM2Li5jYjU1MDdiZWFjNTViZjhlYjFiMzdlYzkwZmNhYjE5MzRmYjQ4ZWEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
Q2VsbC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82
NC5jcHAKaW5kZXggOThkMTBhM2Y0ZGNiMTJkODlmMzdhMTJmMjI2MDRiOTQ2ZTA4ZTYyNy4uZGQw
MzUzNzc5ZThiZGY5OGY0NjU4YTMwN2UzMmQwNmU0NzI0NDE1OCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
QXJyYXkuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2Vs
bC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApp
bmRleCA5MjhkZDUwZmIwMTZlMjcxNjQ0YTU3NWUzMGFiNWYyNTE2ZWI1MGVjLi45OWY1ZGIwN2U2
NmI5ZDhjNGIyMzRiOTJhZDUxMTNlMDkxMmY1OWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTQxLDEwICs0MSwxMyBAQAogI2luY2x1ZGUgIkpJ
VC5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbldyYXBwZXJzLmgiCiAjaW5jbHVkZSAiSklUVG9E
RkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5s
aW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUg
IkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1N0YWNrSW5saW5lcy5oIgor
I2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAj
aW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4
IDI2ZGQ0ZDFhZjc0NWFmYTFmYmM1M2E5YzAyM2E2ZTQ3NDFhNjZhMDkuLmRmMWJkM2E5Y2ZhNDAy
YzUyYTUyMTFjZjFhY2NlNjdkNTEyMWI3ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0yOSwxMSArMjksMTMgQEAKICNpbmNsdWRl
ICJKSVQuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50
aWZpZXJzLmgiCiAjaW5jbHVkZSAiR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgiCiAjaW5jbHVkZSAi
R2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVRJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1l
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1ZhcmlhYmxlT2JqZWN0LmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwCmluZGV4IDQwNzg0YjQ5NDMxZmUwMmU4ZTQ1MjJmMTYzMDhjOTAyNDcxNmQyMzYuLjJmNzk1
NTU0YjA5MWRlZWJiYzAzYmYyYmU4Yzc0ZjQxYWU1NDFlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNQcm94
eS5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgogI2lu
Y2x1ZGUgIlN0YWNrVmlzaXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCA2MDRjYzI2M2NmOTdlMDg2ZmVk
MDZlYzkwM2IwZWMxOTgzZTc4MTM3Li44MTY2ZTdmODFmYTg5YTdkNGY1MGM1ZjFhOTRmYTk2OGM1
ZDU3ZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZz
ZXRzRXh0cmFjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRP
ZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkpJVFN0dWJz
LmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgotI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUg
IlZNLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU09iamVjdC5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5k
ZXggNjY0NDRiYWEwOGI1NjJkZDY5N2UwY2NkNzcyMWU1NWMxNWJhNDkxMy4uODNjOThkZmQ2NGIw
ZWM5YWNmYTM5NjNhNjEwN2YxNTUwZDBjZmM4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC00NSw3ICs0NSw3IEBACiAjaW5jbHVkZSAi
SlNOYW1lU2NvcGUuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5j
bHVkZSAiSlNTdGFja0lubGluZXMuaCIKLSNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUg
IkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5jbHVkZSAi
TExJbnRDb21tb24uaCIKICNpbmNsdWRlICJMTEludEV4Y2VwdGlvbnMuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggOGVjMWZkMzJhM2FkYTIyZTEyNTIy
OTU3MGRjZjdmZjI4ZWFiZjFlZC4uNDZhN2M3NmIyZjkwMWZjM2NjMzZkMWNlMGMwNzM1M2ViMDZi
MmY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTg4
OCw5ICs4ODgsOSBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2Fs
bE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbgogICAgIEFTU0VSVChmdW5jLT5p
c0RvdEFjY2Vzc29yTm9kZSgpKTsKICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRpY19j
YXN0PERvdEFjY2Vzc29yTm9kZSo+KGZ1bmMpOwogICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUqIG5v
ZGU7Ci0gICAgaWYgKGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmNh
bGwpCisgICAgaWYgKGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmNh
bGwgfHwgZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y2FsbFByaXZh
dGVOYW1lKQogICAgICAgICBub2RlID0gbmV3IChtX3ZtKSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9k
ZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwg
ZGl2b3RTdGFydCwgZGl2b3RFbmQpOwotICAgIGVsc2UgaWYgKGRvdC0+aWRlbnRpZmllcigpID09
IG1fdm0tPnByb3BlcnR5TmFtZXMtPmFwcGx5KQorICAgIGVsc2UgaWYgKGRvdC0+aWRlbnRpZmll
cigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmFwcGx5IHx8IGRvdC0+aWRlbnRpZmllcigpID09
IG1fdm0tPnByb3BlcnR5TmFtZXMtPmFwcGx5UHJpdmF0ZU5hbWUpCiAgICAgICAgIG5vZGUgPSBu
ZXcgKG1fdm0pIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCks
IGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwog
ICAgIGVsc2UKICAgICAgICAgbm9kZSA9IG5ldyAobV92bSkgRnVuY3Rpb25DYWxsRG90Tm9kZShs
b2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2
b3RTdGFydCwgZGl2b3RFbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9MZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApp
bmRleCBjYTRiYjRmMGFkZThkNmJjODI2OTFhNmMwMDAxNGNmMTk4YmQ4OGJkLi5jY2IwNzlkOTc1
YTE0MWM1YzRiMmQ3YjYyMzEzMDAwNzA5Nzc3ODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0xleGVyLmNwcApAQCAtMjUsMTAgKzI1LDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiTGV4ZXIuaCIKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCisjaW5j
bHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCi0KICNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgotI2luY2x1ZGUgIklkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJOb2RlSW5mby5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSA8
d3RmL2R0b2EuaD4KQEAgLTkwLDYgKzkwLDcgQEAgZW51bSBDaGFyYWN0ZXJUeXBlIHsKIAogICAg
IC8vIE90aGVyIHR5cGVzIChvbmx5IG9uZSBzbyBmYXIpCiAgICAgQ2hhcmFjdGVyV2hpdGVTcGFj
ZSwKKyAgICBDaGFyYWN0ZXJQcml2YXRlSWRlbnRpZmllclN0YXJ0CiB9OwogCiAvLyAyNTYgTGF0
aW4tMSBjb2RlcwpAQCAtMTU4LDcgKzE1OSw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9y
dCB0eXBlc09mTGF0aW4xQ2hhcmFjdGVyc1syNTZdID0gewogLyogIDYxIC0gPSAgICAgICAgICAg
ICAgICAgICovIENoYXJhY3RlckVxdWFsLAogLyogIDYyIC0gPiAgICAgICAgICAgICAgICAgICov
IENoYXJhY3RlckdyZWF0ZXIsCiAvKiAgNjMgLSA/ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFj
dGVyUXVlc3Rpb24sCi0vKiAgNjQgLSBAICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySW52
YWxpZCwKKy8qICA2NCAtIEAgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJQcml2YXRlSWRl
bnRpZmllclN0YXJ0LAogLyogIDY1IC0gQSAgICAgICAgICAgICAgICAgICovIENoYXJhY3Rlcklk
ZW50aWZpZXJTdGFydCwKIC8qICA2NiAtIEIgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJ
ZGVudGlmaWVyU3RhcnQsCiAvKiAgNjcgLSBDICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVy
SWRlbnRpZmllclN0YXJ0LApAQCAtNDg2LDkgKzQ4NywxMCBAQCBzdGF0aWMgY29uc3QgTENoYXIg
c2luZ2xlQ2hhcmFjdGVyRXNjYXBlVmFsdWVzRm9yQVNDSUlbMTI4XSA9IHsKIH07CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotTGV4ZXI8VD46OkxleGVyKFZNKiB2bSkKK0xleGVyPFQ+OjpMZXhl
cihWTSogdm0sIEpTUGFyc2VyU3RyaWN0bmVzcyBzdHJpY3RuZXNzKQogICAgIDogbV9pc1JlcGFy
c2luZyhmYWxzZSkKICAgICAsIG1fdm0odm0pCisgICAgLCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rp
b24oc3RyaWN0bmVzcyA9PSBKU1BhcnNlQnVpbHRpbikKIHsKIH0KIApAQCAtNzUzLDcgKzc1NSwy
NyBAQCBpbmxpbmUgdm9pZCBMZXhlcjxUPjo6cmVjb3JkMTYoaW50IGMpCiAgICAgQVNTRVJUKGMg
PD0gc3RhdGljX2Nhc3Q8aW50PihVU0hSVF9NQVgpKTsKICAgICBtX2J1ZmZlcjE2LmFwcGVuZChz
dGF0aWNfY2FzdDxVQ2hhcj4oYykpOwogfQotCisgICAgCisjaWYgIUFTU0VSVF9ESVNBQkxFRAor
Ym9vbCBpc1NhZmVJZGVudGlmaWVyKFZNJiB2bSwgY29uc3QgSWRlbnRpZmllciogaWRlbnQpCit7
CisgICAgaWYgKCFpZGVudCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgLyogSnVzdCBibG9j
ayBhbnkgdXNlIG9mIHN1c3BpY2lvdXMgaWRlbnRpZmllcnMuICBUaGlzIGlzIGludGVuZGVkIHRv
CisgICAgICogYmUgdXNlZCBhcyBhIHNhZmV0eSBuZXQgd2hpbGUgaW1wbGVtZW50aW5nIGJ1aWx0
aW5zLgorICAgICAqLworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+Y2FsbCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1l
cy0+YXBwbHkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKmlkZW50ID09IHZtLnBy
b3BlcnR5TmFtZXMtPmV2YWwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKmlkZW50
ID09IHZtLnByb3BlcnR5TmFtZXMtPkZ1bmN0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKyAgICAKIHRlbXBsYXRlIDw+CiB0ZW1wbGF0ZSA8
Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExl
eGVyPExDaGFyPjo6cGFyc2VJZGVudGlmaWVyKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEsIHVuc2ln
bmVkIGxleGVyRmxhZ3MsIGJvb2wgc3RyaWN0TW9kZSkKIHsKQEAgLTc2NSw3ICs3ODcsMTEgQEAg
dGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rv
a2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKICAgICAgICAgICAgIHJldHVybiBrZXl3b3JkID09IFJF
U0VSVkVEX0lGX1NUUklDVCAmJiAhc3RyaWN0TW9kZSA/IElERU5UIDoga2V5d29yZDsKICAgICAg
ICAgfQogICAgIH0KLQorICAgIAorICAgIGJvb2wgaXNQcml2YXRlTmFtZSA9IG1fY3VycmVudCA9
PSAnQCcgJiYgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uOworICAgIGlmIChpc1ByaXZhdGVOYW1l
KQorICAgICAgICBzaGlmdCgpOworICAgIAogICAgIGNvbnN0IExDaGFyKiBpZGVudGlmaWVyU3Rh
cnQgPSBjdXJyZW50U291cmNlUHRyKCk7CiAgICAgdW5zaWduZWQgaWRlbnRpZmllckxpbmVTdGFy
dCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKICAgICAKQEAgLTc3OSwxNSArODA1LDI2IEBA
IHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNU
b2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9
IDA7CiAgICAgCi0gICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpIHsKKyAgICBpZiAoc2hv
dWxkQ3JlYXRlSWRlbnRpZmllciB8fCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKICAgICAg
ICAgaW50IGlkZW50aWZpZXJMZW5ndGggPSBjdXJyZW50U291cmNlUHRyKCkgLSBpZGVudGlmaWVy
U3RhcnQ7CiAgICAgICAgIGlkZW50ID0gbWFrZUlkZW50aWZpZXIoaWRlbnRpZmllclN0YXJ0LCBp
ZGVudGlmaWVyTGVuZ3RoKTsKLQorICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9u
KSB7CisgICAgICAgICAgICBpZiAoIWlzU2FmZUlkZW50aWZpZXIoKm1fdm0sIGlkZW50KSAmJiAh
aXNQcml2YXRlTmFtZSkgeworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gbWFr
ZVN0cmluZygiVGhlIHVzZSBvZiAnIiwgaWRlbnQtPnN0cmluZygpLCAiJyBpcyBkaXNhbGxvd2Vk
IGluIGJ1aWx0aW4gZnVuY3Rpb25zLiIpOworICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRP
SzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAg
ICAgICAgICAgIGlkZW50ID0gbV92bS0+cHJvcGVydHlOYW1lcy0+Z2V0UHJpdmF0ZU5hbWUoKmlk
ZW50KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT51bmRlZmluZWRLZXl3b3JkKQorICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAm
bV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZFByaXZhdGVOYW1lOworICAgICAg
ICAgICAgaWYgKCFpZGVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9QUklWQVRF
X05BTUVfRVJST1JUT0s7CisgICAgICAgIH0KICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IGlk
ZW50OwogICAgIH0gZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gMDsKIAotICAgIGlm
IChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICEobGV4ZXJGbGFncyAm
IExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkpIHsKKyAgICBpZiAoVU5MSUtFTFkoKHJl
bWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxhZ3MgJiBMZXhlckZsYWdzSWdu
b3JlUmVzZXJ2ZWRXb3JkcykpICYmICFpc1ByaXZhdGVOYW1lKSB7CiAgICAgICAgIEFTU0VSVChz
aG91bGRDcmVhdGVJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKHJlbWFpbmluZyA8IG1heFRva2Vu
TGVuZ3RoKSB7CiAgICAgICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gbV92bS0+a2V5
d29yZHMtPmdldEtleXdvcmQoKmlkZW50KTsKQEAgLTgxNCw2ICs4NTEsMTAgQEAgdGVtcGxhdGUg
PGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBM
ZXhlcjxVQ2hhcj46OnAKICAgICAgICAgICAgIHJldHVybiBrZXl3b3JkID09IFJFU0VSVkVEX0lG
X1NUUklDVCAmJiAhc3RyaWN0TW9kZSA/IElERU5UIDoga2V5d29yZDsKICAgICAgICAgfQogICAg
IH0KKyAgICAKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJlbnQgPT0gJ0AnICYmIG1f
cGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKKyAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAg
c2hpZnQoKTsKIAogICAgIGNvbnN0IFVDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50U291
cmNlUHRyKCk7CiAgICAgaW50IGlkZW50aWZpZXJMaW5lU3RhcnQgPSBjdXJyZW50TGluZVN0YXJ0
T2Zmc2V0KCk7CkBAIC04MjYsNiArODY3LDcgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRl
SWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAKICAg
ICB9CiAgICAgCiAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudCA9PSAnXFwnKSkgeworICAgICAg
ICBBU1NFUlQoIWlzUHJpdmF0ZU5hbWUpOwogICAgICAgICBzZXRPZmZzZXRGcm9tU291cmNlUHRy
KGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxpbmVTdGFydCk7CiAgICAgICAgIHJldHVybiBw
YXJzZUlkZW50aWZpZXJTbG93Q2FzZTxzaG91bGRDcmVhdGVJZGVudGlmaWVyPih0b2tlbkRhdGEs
IGxleGVyRmxhZ3MsIHN0cmljdE1vZGUpOwogICAgIH0KQEAgLTgzNywxOCArODc5LDI5IEBAIHRl
bXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tl
blR5cGUgTGV4ZXI8VUNoYXI+OjpwCiAKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IDA7
CiAgICAgCi0gICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpIHsKKyAgICBpZiAoc2hvdWxk
Q3JlYXRlSWRlbnRpZmllciB8fCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKICAgICAgICAg
aW50IGlkZW50aWZpZXJMZW5ndGggPSBjdXJyZW50U291cmNlUHRyKCkgLSBpZGVudGlmaWVyU3Rh
cnQ7CiAgICAgICAgIGlmIChpc0FsbDhCaXQpCiAgICAgICAgICAgICBpZGVudCA9IG1ha2VJZGVu
dGlmaWVyTENoYXJGcm9tVUNoYXIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVuZ3RoKTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgaWRlbnQgPSBtYWtlSWRlbnRpZmllcihpZGVudGlm
aWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwotICAgICAgICAKKyAgICAgICAgaWYgKG1fcGFy
c2luZ0J1aWx0aW5GdW5jdGlvbikgeworICAgICAgICAgICAgaWYgKCFpc1NhZmVJZGVudGlmaWVy
KCptX3ZtLCBpZGVudCkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsKKyAgICAgICAgICAgICAgICBtX2xl
eEVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIlRoZSB1c2Ugb2YgJyIsIGlkZW50LT5zdHJpbmco
KSwgIicgaXMgZGlzYWxsb3dlZCBpbiBidWlsdGluIGZ1bmN0aW9ucy4iKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gRVJST1JUT0s7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaXNQ
cml2YXRlTmFtZSkKKyAgICAgICAgICAgICAgICBpZGVudCA9IG1fdm0tPnByb3BlcnR5TmFtZXMt
PmdldFByaXZhdGVOYW1lKCppZGVudCk7CisgICAgICAgICAgICBlbHNlIGlmICgqaWRlbnQgPT0g
bV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCkKKyAgICAgICAgICAgICAgICB0
b2tlbkRhdGEtPmlkZW50ID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmRQ
cml2YXRlTmFtZTsKKyAgICAgICAgICAgIGlmICghaWRlbnQpCisgICAgICAgICAgICAgICAgcmV0
dXJuIElOVkFMSURfUFJJVkFURV9OQU1FX0VSUk9SVE9LOworICAgICAgICB9CiAgICAgICAgIHRv
a2VuRGF0YS0+aWRlbnQgPSBpZGVudDsKICAgICB9IGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5p
ZGVudCA9IDA7CiAgICAgCi0gICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxl
bmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMpKSkg
eworICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICEobGV4
ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlzUHJpdmF0ZU5h
bWUpIHsKICAgICAgICAgQVNTRVJUKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpOwogICAgICAgICBp
ZiAocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHsKICAgICAgICAgICAgIGNvbnN0IEhhc2hF
bnRyeSogZW50cnkgPSBtX3ZtLT5rZXl3b3Jkcy0+Z2V0S2V5d29yZCgqaWRlbnQpOwpAQCAtMTY1
OCw2ICsxNzExLDcgQEAgaW5OdW1iZXJBZnRlckRlY2ltYWxQb2ludDoKICAgICAgICAgQVNTRVJU
KGlzSWRlbnRTdGFydChtX2N1cnJlbnQpKTsKICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2Fz
ZSBDaGFyYWN0ZXJCYWNrU2xhc2g6CisgICAgICAgIHBhcnNlSWRlbnQ6CiAgICAgICAgIGlmIChs
ZXhlckZsYWdzICYgTGV4ZXhGbGFnc0RvbnRCdWlsZEtleXdvcmRzKQogICAgICAgICAgICAgdG9r
ZW4gPSBwYXJzZUlkZW50aWZpZXI8ZmFsc2U+KHRva2VuRGF0YSwgbGV4ZXJGbGFncywgc3RyaWN0
TW9kZSk7CiAgICAgICAgIGVsc2UKQEAgLTE2NzAsNiArMTcyNCwxMSBAQCBpbk51bWJlckFmdGVy
RGVjaW1hbFBvaW50OgogICAgICAgICBtX3Rlcm1pbmF0b3IgPSB0cnVlOwogICAgICAgICBtX2xp
bmVTdGFydCA9IG1fY29kZTsKICAgICAgICAgZ290byBzdGFydDsKKyAgICBjYXNlIENoYXJhY3Rl
clByaXZhdGVJZGVudGlmaWVyU3RhcnQ6CisgICAgICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVu
Y3Rpb24pCisgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnQ7CisKKyAgICAgICAgRkFMTFRIUk9V
R0g7CiAgICAgY2FzZSBDaGFyYWN0ZXJJbnZhbGlkOgogICAgICAgICBtX2xleEVycm9yTWVzc2Fn
ZSA9IGludmFsaWRDaGFyYWN0ZXJNZXNzYWdlKCk7CiAgICAgICAgIHRva2VuID0gRVJST1JUT0s7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKaW5kZXggMjhjNjFiYTE5OGQyYzE1YTQ5
YmIxODUyZWQzMGJlZmViODkwNDAwOC4uYjg4NzNlOTk1MDI4NjQ0YmY4Y2JiM2Q0YzJkYTU2MmU5
M2UwZThlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaApAQCAtNzIsNyArNzIs
NyBAQCBjbGFzcyBMZXhlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKIHB1Ymxp
YzoKLSAgICBMZXhlcihWTSopOworICAgIExleGVyKFZNKiwgSlNQYXJzZXJTdHJpY3RuZXNzKTsK
ICAgICB+TGV4ZXIoKTsKIAogICAgIC8vIENoYXJhY3RlciBtYW5pcHVsYXRpb24gZnVuY3Rpb25z
LgpAQCAtMjM4LDYgKzIzOCw3IEBAIHByaXZhdGU6CiAgICAgSWRlbnRpZmllckFyZW5hKiBtX2Fy
ZW5hOwogCiAgICAgVk0qIG1fdm07CisgICAgYm9vbCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247
CiB9OwogCiB0ZW1wbGF0ZSA8PgpAQCAtMzM1LDYgKzMzNiwxMiBAQCBBTFdBWVNfSU5MSU5FIGNv
bnN0IElkZW50aWZpZXIqIExleGVyPFQ+OjptYWtlTENoYXJJZGVudGlmaWVyKGNvbnN0IFVDaGFy
KiBjaGFyYQogICAgIHJldHVybiAmbV9hcmVuYS0+bWFrZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hh
cihtX3ZtLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOwogfQogCisjaWYgQVNTRVJUX0RJU0FCTEVECitB
TFdBWVNfSU5MSU5FIGJvb2wgaXNTYWZlSWRlbnRpZmllcihWTSYsIGNvbnN0IElkZW50aWZpZXIq
KSB7IHJldHVybiB0cnVlOyB9CisjZWxzZQorYm9vbCBpc1NhZmVJZGVudGlmaWVyKFZNJiwgY29u
c3QgSWRlbnRpZmllciopOworI2VuZGlmCisKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogQUxXQVlT
X0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rva2Vu
KiB0b2tlblJlY29yZCwgdW5zaWduZWQgbGV4ZXJGbGFncywgYm9vbCBzdHJpY3RNb2RlKQogewpA
QCAtMzcwLDEwICszNzcsMTUgQEAgQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6
bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rva2VuKiB0b2tlblJlY29yZCwgdW4KICAgICBBU1NFUlQo
Y3VycmVudE9mZnNldCgpID49IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKSk7CiAKICAgICAvLyBD
cmVhdGUgdGhlIGlkZW50aWZpZXIgaWYgbmVlZGVkCi0gICAgaWYgKGxleGVyRmxhZ3MgJiBMZXhl
eEZsYWdzRG9udEJ1aWxkS2V5d29yZHMpCisgICAgaWYgKGxleGVyRmxhZ3MgJiBMZXhleEZsYWdz
RG9udEJ1aWxkS2V5d29yZHMKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgICYmICFtX3Bh
cnNpbmdCdWlsdGluRnVuY3Rpb24KKyNlbmRpZgorICAgICAgICApCiAgICAgICAgIHRva2VuRGF0
YS0+aWRlbnQgPSAwOwogICAgIGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG1ha2VM
Q2hhcklkZW50aWZpZXIoc3RhcnQsIHB0ciAtIHN0YXJ0KTsKKwogICAgIHRva2VuTG9jYXRpb24t
PmxpbmUgPSBtX2xpbmVOdW1iZXI7CiAgICAgdG9rZW5Mb2NhdGlvbi0+bGluZVN0YXJ0T2Zmc2V0
ID0gY3VycmVudExpbmVTdGFydE9mZnNldCgpOwogICAgIHRva2VuTG9jYXRpb24tPnN0YXJ0T2Zm
c2V0ID0gb2Zmc2V0RnJvbVNvdXJjZVB0cihzdGFydCk7CkBAIC0zODEsNiArMzkzLDEzIEBAIEFM
V0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNU
b2tlbiogdG9rZW5SZWNvcmQsIHVuCiAgICAgQVNTRVJUKHRva2VuTG9jYXRpb24tPnN0YXJ0T2Zm
c2V0ID49IHRva2VuTG9jYXRpb24tPmxpbmVTdGFydE9mZnNldCk7CiAgICAgdG9rZW5SZWNvcmQt
Pm1fc3RhcnRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb247CiAgICAgdG9rZW5SZWNvcmQtPm1fZW5k
UG9zaXRpb24gPSBjdXJyZW50UG9zaXRpb24oKTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAg
aWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgeworICAgICAgICBpZiAoIWlzU2FmZUlkZW50
aWZpZXIoKm1fdm0sIHRva2VuRGF0YS0+aWRlbnQpKQorICAgICAgICAgICAgcmV0dXJuIEVSUk9S
VE9LOworICAgIH0KKyNlbmRpZgorCiAgICAgbV9sYXN0VG9rZW4gPSBJREVOVDsKICAgICByZXR1
cm4gSURFTlQ7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4
IGZjOWNjZDlmNmM1NzZjMWFlZjU0N2YyMTFmZGQ1OTZmNDJlMDU4MDYuLmQ5NTJiYTZhOTRkMmY2
YjQxODIxNTUwMDRkMGE5NzA4NDI5YmQ3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZXMuY3BwCkBAIC0xMzIsNiArMTMyLDEyIEBAIFBhc3NSZWZQdHI8UHJvZ3JhbU5vZGU+IFBy
b2dyYW1Ob2RlOjpjcmVhdGUoVk0qIHZtLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0CiAg
ICAgcmV0dXJuIG5vZGUucmVsZWFzZSgpOwogfQogCisKK3ZvaWQgUHJvZ3JhbU5vZGU6OnNldENs
b3NlZFZhcmlhYmxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmIGNsb3NlZFZh
cmlhYmxlcykKK3sKKyAgICBtX2Nsb3NlZFZhcmlhYmxlcyA9IHN0ZDo6bW92ZShjbG9zZWRWYXJp
YWJsZXMpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXZhbE5vZGUg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogaW5saW5lIEV2YWxOb2RlOjpFdmFsTm9k
ZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVt
ZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0
YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggZDc3OWExNzhkOTU2ZmY5OWZkMGJlZDVkNWY0
NTRhYTNlNmI1MDg3OS4uODE2ZmYwMDFhYmYwMzc2YzY0MmYxYTkzOGQwZTBhOWY1MjljYTZiYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTQzMSw2ICsxNDMxLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbmVlZHNBY3RpdmF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gKGhhc0NhcHR1cmVkVmFyaWFibGVzKCkpIHx8IChtX2ZlYXR1cmVzICYgKEV2YWxGZWF0
dXJlIHwgV2l0aEZlYXR1cmUgfCBDYXRjaEZlYXR1cmUpKTsgfQogICAgICAgICBib29sIGhhc0Nh
cHR1cmVkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gISFtX2NhcHR1cmVkVmFyaWFibGVzLnNp
emUoKTsgfQogICAgICAgICBzaXplX3QgY2FwdHVyZWRWYXJpYWJsZUNvdW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9jYXB0dXJlZFZhcmlhYmxlcy5zaXplKCk7IH0KKyAgICAgICAgY29uc3QgSWRlbnRp
ZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2NhcHR1cmVkVmFy
aWFibGVzOyB9CiAgICAgICAgIGJvb2wgY2FwdHVyZXMoY29uc3QgSWRlbnRpZmllciYgaWRlbnQp
IHsgcmV0dXJuIG1fY2FwdHVyZWRWYXJpYWJsZXMuY29udGFpbnMoaWRlbnQuaW1wbCgpKTsgfQog
CiAgICAgICAgIFZhclN0YWNrJiB2YXJTdGFjaygpIHsgcmV0dXJuIG1fdmFyU3RhY2s7IH0KQEAg
LTE0NDYsNiArMTQ0Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdGF0ZW1lbnROb2Rl
KiBzaW5nbGVTdGF0ZW1lbnQoKSBjb25zdDsKIAogICAgICAgICB2b2lkIGVtaXRTdGF0ZW1lbnRz
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkZXN0aW5hdGlvbik7Cisg
ICAgICAgIAorICAgICAgICB2b2lkIHNldENsb3NlZFZhcmlhYmxlcyhjb25zdCBWZWN0b3I8UmVm
UHRyPFN0cmluZ0ltcGw+PiYmKSB7IH0KIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgdm9pZCBz
ZXRTb3VyY2UoY29uc3QgU291cmNlQ29kZSYgc291cmNlKSB7IG1fc291cmNlID0gc291cmNlOyB9
CkBAIC0xNDc1LDExICsxNDc4LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRp
YyBjb25zdCBib29sIHNjb3BlSXNGdW5jdGlvbiA9IGZhbHNlOwogCisgICAgICAgIHZvaWQgc2V0
Q2xvc2VkVmFyaWFibGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYpOworICAg
ICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYgY2xvc2VkVmFyaWFibGVzKCkg
Y29uc3QgeyByZXR1cm4gbV9jbG9zZWRWYXJpYWJsZXM7IH0KICAgICBwcml2YXRlOgogICAgICAg
ICBQcm9ncmFtTm9kZShWTSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29s
dW1uLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZp
ZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRz
KTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKLQorICAgICAgICBWZWN0b3I8UmVmUHRyPFN0
cmluZ0ltcGw+PiBtX2Nsb3NlZFZhcmlhYmxlczsKICAgICAgICAgdW5zaWduZWQgbV9zdGFydENv
bHVtbjsKICAgICAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CiAgICAgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCAyOTc2NjZlNzI2ZTQ1ZDA4M2VmMTM0OWRk
ZmZkZjM3ZWY4MDBkZjdhLi41MGJlYzc5ZmUzOGFkZjhmM2EwNGY2YjQ2Y2JkMmE1Y2JmY2YyNDZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yMDQsOCArMjA0
LDkgQEAgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlcihWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgRnVuY3Rpb25QYXJhbWV0ZXJzKgogICAgICwgbV9sYXN0SWRlbnRpZmllcigwKQog
ICAgICwgbV9sYXN0RnVuY3Rpb25OYW1lKG51bGxwdHIpCiAgICAgLCBtX3NvdXJjZUVsZW1lbnRz
KDApCisgICAgLCBtX3BhcnNpbmdCdWlsdGluKHN0cmljdG5lc3MgPT0gSlNQYXJzZUJ1aWx0aW4p
CiB7Ci0gICAgbV9sZXhlciA9IGFkb3B0UHRyKG5ldyBMZXhlclR5cGUodm0pKTsKKyAgICBtX2xl
eGVyID0gYWRvcHRQdHIobmV3IExleGVyVHlwZSh2bSwgc3RyaWN0bmVzcykpOwogICAgIG1fYXJl
bmEgPSBtX3ZtLT5wYXJzZXJBcmVuYS5nZXQoKTsKICAgICBtX2xleGVyLT5zZXRDb2RlKHNvdXJj
ZSwgbV9hcmVuYSk7CiAgICAgbV90b2tlbi5tX2xvY2F0aW9uLmxpbmUgPSBzb3VyY2UuZmlyc3RM
aW5lKCk7CkBAIC0yNTYsNiArMjU3LDcgQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUlubmVyKCkKICAgICBJZGVudGlmaWVyU2V0IGNhcHR1cmVkVmFyaWFibGVzOwogICAgIGJvb2wg
bW9kaWZpZWRQYXJhbWV0ZXIgPSBmYWxzZTsKICAgICBzY29wZS0+Z2V0Q2FwdHVyZWRWYXJpYWJs
ZXMoY2FwdHVyZWRWYXJpYWJsZXMsIG1vZGlmaWVkUGFyYW1ldGVyKTsKKyAgICAKICAgICBDb2Rl
RmVhdHVyZXMgZmVhdHVyZXMgPSBjb250ZXh0LmZlYXR1cmVzKCk7CiAgICAgaWYgKHNjb3BlLT5z
dHJpY3RNb2RlKCkpCiAgICAgICAgIGZlYXR1cmVzIHw9IFN0cmljdE1vZGVGZWF0dXJlOwpAQCAt
MjYzLDIxICsyNjUsMzYgQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKCkK
ICAgICAgICAgZmVhdHVyZXMgfD0gU2hhZG93c0FyZ3VtZW50c0ZlYXR1cmU7CiAgICAgaWYgKG1v
ZGlmaWVkUGFyYW1ldGVyKQogICAgICAgICBmZWF0dXJlcyB8PSBNb2RpZmllZFBhcmFtZXRlckZl
YXR1cmU7Ci0KKyAgICAKKyAgICBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiBjbG9zZWRWYXJp
YWJsZXM7CisgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW4pIHsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQoIWNhcHR1cmVkVmFyaWFibGVzLnNpemUoKSk7CisgICAgICAgIElkZW50aWZpZXJTZXQgdXNl
ZFZhcmlhYmxlczsKKyAgICAgICAgc2NvcGUtPmdldFVzZWRWYXJpYWJsZXModXNlZFZhcmlhYmxl
cyk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgdmFyaWFibGUgOiB1c2VkVmFyaWFibGVzKSB7
CisgICAgICAgICAgICBpZiAoc2NvcGUtPmhhc0RlY2xhcmVkVmFyaWFibGUoSWRlbnRpZmllciht
X3ZtLCB2YXJpYWJsZS5nZXQoKSkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBpZiAoc2NvcGUtPmhhc0RlY2xhcmVkUGFyYW1ldGVyKElkZW50
aWZpZXIobV92bSwgdmFyaWFibGUuZ2V0KCkpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIGNsb3NlZFZhcmlhYmxlcy5hcHBlbmQodmFyaWFibGUpOworICAgICAgICB9
CisgICAgfQogICAgIGRpZEZpbmlzaFBhcnNpbmcoc291cmNlRWxlbWVudHMsIGNvbnRleHQudmFy
RGVjbGFyYXRpb25zKCksIGNvbnRleHQuZnVuY0RlY2xhcmF0aW9ucygpLCBmZWF0dXJlcywKLSAg
ICAgICAgY29udGV4dC5udW1Db25zdGFudHMoKSwgY2FwdHVyZWRWYXJpYWJsZXMpOworICAgICAg
ICBjb250ZXh0Lm51bUNvbnN0YW50cygpLCBjYXB0dXJlZFZhcmlhYmxlcywgc3RkOjptb3ZlKGNs
b3NlZFZhcmlhYmxlcykpOwogCiAgICAgcmV0dXJuIHBhcnNlRXJyb3I7CiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+CiB2b2lkIFBhcnNlcjxMZXhlclR5cGU+OjpkaWRGaW5pc2hQ
YXJzaW5nKFNvdXJjZUVsZW1lbnRzKiBzb3VyY2VFbGVtZW50cywgUGFyc2VyQXJlbmFEYXRhPERl
Y2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjaz4qIHZhclN0YWNrLCAKLSAgICBQYXJzZXJBcmVuYURh
dGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KiBmdW5jU3RhY2ssIENvZGVGZWF0
dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRW
YXJzKQorICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFj
az4qIGZ1bmNTdGFjaywgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzLCBJ
ZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcnMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1w
bD4+JiYgY2xvc2VkVmFyaWFibGVzKQogewogICAgIG1fc291cmNlRWxlbWVudHMgPSBzb3VyY2VF
bGVtZW50czsKICAgICBtX3ZhckRlY2xhcmF0aW9ucyA9IHZhclN0YWNrOwogICAgIG1fZnVuY0Rl
Y2xhcmF0aW9ucyA9IGZ1bmNTdGFjazsKICAgICBtX2NhcHR1cmVkVmFyaWFibGVzLnN3YXAoY2Fw
dHVyZWRWYXJzKTsKKyAgICBtX2Nsb3NlZFZhcmlhYmxlcyA9IGNsb3NlZFZhcmlhYmxlczsKICAg
ICBtX2ZlYXR1cmVzID0gZmVhdHVyZXM7CiAgICAgbV9udW1Db25zdGFudHMgPSBudW1Db25zdGFu
dHM7CiB9CkBAIC0yMzQ2LDYgKzIzNjMsMTAgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlw
ZT4gdm9pZCBQYXJzZXI8TGV4ZXJUeXBlPjo6cHJpbnRVbmV4cGVjdGVkVG9rZW5UZXh0KFcKICAg
ICBjYXNlIFJFU0VSVkVEOgogICAgICAgICBvdXQucHJpbnQoIlVuZXhwZWN0ZWQgdXNlIG9mIHJl
c2VydmVkIHdvcmQgJyIsIGdldFRva2VuKCksICInIik7CiAgICAgICAgIHJldHVybjsKKworICAg
IGNhc2UgSU5WQUxJRF9QUklWQVRFX05BTUVfRVJST1JUT0s6CisgICAgICAgIG91dC5wcmludCgi
SW52YWxpZCBwcml2YXRlIG5hbWUgJyIsIGdldFRva2VuKCksICInIik7CisgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIAogICAgIGNhc2UgSURFTlQ6CiAgICAgICAgIG91dC5wcmludCgiVW5l
eHBlY3RlZCBpZGVudGlmaWVyICciLCBnZXRUb2tlbigpLCAiJyIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggYjY5OGVmOTM2OGNiOGM4ZjE5N2NjZDAwMGFjYWE2ZGZi
MTFiYTI0NC4uOTAzMzg1MGM4Yzk3ZjU3ZTIxZGE1ZWVkYjAyZDA0NGY0Yzg5NzhlYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0yMyw2ICsyMyw3IEBACiAjaWZuZGVm
IFBhcnNlcl9oCiAjZGVmaW5lIFBhcnNlcl9oCiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVy
cy5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5o
IgogI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKQEAgLTI1OSw2ICsyNjAsMTAgQEAgc3RydWN0IFNj
b3BlIHsKICAgICAgICAgcmV0dXJuIGlzVmFsaWRTdHJpY3RNb2RlID8gQmluZGluZ1N1Y2NlZWRl
ZCA6IFN0cmljdEJpbmRpbmdGYWlsZWQ7CiAgICAgfQogCisgICAgdm9pZCBnZXRVc2VkVmFyaWFi
bGVzKElkZW50aWZpZXJTZXQmIHVzZWRWYXJpYWJsZXMpCisgICAgeworICAgICAgICB1c2VkVmFy
aWFibGVzLnN3YXAobV91c2VkVmFyaWFibGVzKTsKKyAgICB9CiAKICAgICB2b2lkIHVzZVZhcmlh
YmxlKGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBib29sIGlzRXZhbCkKICAgICB7CkBAIC00MTQs
NiArNDE5LDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFy
c2VyRXJyb3ImKTsKIAogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xp
bmUoKSBjb25zdCB7IHJldHVybiBtX2xleGVyLT5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7
IH0KKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmIGNsb3NlZFZhcmlhYmxl
cygpIHsgcmV0dXJuIHN0ZDo6bW92ZShtX2Nsb3NlZFZhcmlhYmxlcyk7IH0KIAogcHJpdmF0ZToK
ICAgICBzdHJ1Y3QgQWxsb3dJbk92ZXJyaWRlIHsKQEAgLTU0MCw3ICs1NDYsNyBAQCBwcml2YXRl
OgogICAgIFN0cmluZyBwYXJzZUlubmVyKCk7CiAKICAgICB2b2lkIGRpZEZpbmlzaFBhcnNpbmco
U291cmNlRWxlbWVudHMqLCBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OlZhclN0
YWNrPiosIAotICAgICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0
aW9uU3RhY2s+KiwgQ29kZUZlYXR1cmVzLCBpbnQsIElkZW50aWZpZXJTZXQmKTsKKyAgICAgICAg
UGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiosIENvZGVG
ZWF0dXJlcywgaW50LCBJZGVudGlmaWVyU2V0JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJ
bXBsPj4mJik7CiAKICAgICAvLyBVc2VkIHRvIGRldGVybWluZSB0eXBlIG9mIGVycm9yIHRvIHJl
cG9ydC4KICAgICBib29sIGlzRnVuY3Rpb25Cb2R5Tm9kZShTY29wZU5vZGUqKSB7IHJldHVybiBm
YWxzZTsgfQpAQCAtODQwLDkgKzg0NiwxMSBAQCBwcml2YXRlOgogICAgIGNvbnN0IElkZW50aWZp
ZXIqIG1fbGFzdEZ1bmN0aW9uTmFtZTsKICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXJDYWNoZT4g
bV9mdW5jdGlvbkNhY2hlOwogICAgIFNvdXJjZUVsZW1lbnRzKiBtX3NvdXJjZUVsZW1lbnRzOwor
ICAgIGJvb2wgbV9wYXJzaW5nQnVpbHRpbjsKICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRp
b25TdGFja3M6OlZhclN0YWNrPiogbV92YXJEZWNsYXJhdGlvbnM7CiAgICAgUGFyc2VyQXJlbmFE
YXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiogbV9mdW5jRGVjbGFyYXRpb25z
OwogICAgIElkZW50aWZpZXJTZXQgbV9jYXB0dXJlZFZhcmlhYmxlczsKKyAgICBWZWN0b3I8UmVm
UHRyPFN0cmluZ0ltcGw+PiBtX2Nsb3NlZFZhcmlhYmxlczsKICAgICBDb2RlRmVhdHVyZXMgbV9m
ZWF0dXJlczsKICAgICBpbnQgbV9udW1Db25zdGFudHM7CiAgICAgCkBAIC05NTcsNiArOTY1LDEw
IEBAIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gcGFyc2UoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIEZ1bmN0aW9uUGFyYW1ldGVyCiAgICAgICAgIFJlZlB0cjxQYXJzZWROb2RlPiBy
ZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IpOwogICAgICAgICBpZiAocG9z
aXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3RO
ZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKKyAgICAgICAgaWYg
KHN0cmljdG5lc3MgPT0gSlNQYXJzZUJ1aWx0aW4pIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKHJlc3VsdCk7CisgICAgICAgICAgICByZXN1bHQtPnNldENsb3NlZFZhcmlhYmxlcyhzdGQ6
Om1vdmUocGFyc2VyLmNsb3NlZFZhcmlhYmxlcygpKSk7CisgICAgICAgIH0KICAgICAgICAgcmV0
dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiAgICAgfQogICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBh
cnNlcih2bSwgc291cmNlLCBwYXJhbWV0ZXJzLCBuYW1lLCBzdHJpY3RuZXNzLCBwYXJzZXJNb2Rl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAppbmRleCA0ZTlh
MTdjZDIxY2EzNDE0NmJiZDQ4MTU2YTM3MmNkNDA0ZGVmNjBjLi5mN2E3NWJmN2MzNzg1N2U0NGI2
ZDVkNzFmNDUyOWJiMWFjMWNmNWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlck1vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJNb2Rlcy5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1lbnVt
IEpTUGFyc2VyU3RyaWN0bmVzcyB7IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VTdHJpY3QgfTsKK2Vu
dW0gSlNQYXJzZXJTdHJpY3RuZXNzIHsgSlNQYXJzZU5vcm1hbCwgSlNQYXJzZUJ1aWx0aW4sIEpT
UGFyc2VTdHJpY3QgfTsKIGVudW0gSlNQYXJzZXJNb2RlIHsgSlNQYXJzZVByb2dyYW1Db2RlLCBK
U1BhcnNlRnVuY3Rpb25Db2RlIH07CiAKIGVudW0gUHJvZmlsZXJNb2RlIHsgUHJvZmlsZXJPZmYs
IFByb2ZpbGVyT24gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyVG9rZW5zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vu
cy5oCmluZGV4IDgyYTI2NjM5YTc5MjIwYTA4NDQ1NmI0OGYzMjg1MmQxNDNjNzM5ZDAuLjhjODdh
ZDlmYWRiZGM0YWYzOWFjOTlkYjJkODQ0NWUxM2ZmZmQzNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaApAQCAtMTQ5LDYgKzE0OSw3IEBAIGVudW0gSlNU
b2tlblR5cGUgewogICAgIElOVkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LID0gNyB8IEVy
cm9yVG9rZW5GbGFnLAogICAgIFVOVEVSTUlOQVRFRF9TVFJJTkdfTElURVJBTF9FUlJPUlRPSyA9
IDggfCBFcnJvclRva2VuRmxhZyB8IFVudGVybWluYXRlZEVycm9yVG9rZW5GbGFnLAogICAgIElO
VkFMSURfU1RSSU5HX0xJVEVSQUxfRVJST1JUT0sgPSA5IHwgRXJyb3JUb2tlbkZsYWcsCisgICAg
SU5WQUxJRF9QUklWQVRFX05BTUVfRVJST1JUT0sgPSAxMCB8IEVycm9yVG9rZW5GbGFnCiB9Owog
CiBzdHJ1Y3QgSlNUZXh0UG9zaXRpb24gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cmd1bWVudHMuaAppbmRleCAxOGYzODkxNzEzODUyMzYyYzdhNzVhMzA1M2I0NjMxNDE3YmViODFi
Li5mMTZmZDNkZTQwNTU5NzBiYTlkOWM2ZjBhZTYzMThmMjIwNGI2NTRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaApAQCAtMjUsNiArMjUsNyBAQAogI2RlZmlu
ZSBBcmd1bWVudHNfaAogCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgorI2luY2x1ZGUgIkNvbW1v
bklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNE
ZXN0cnVjdGlibGVPYmplY3QuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclBy
b3RvdHlwZS5jcHAKaW5kZXggZGQwODk0ZjE0YTAyMWQ1ZjEyNjU4YWNiMDFlNzIxZmNkNmQzNDhj
Yy4uNWI0YWU4NzE2YjA1NTNiZTQ2MjM5NTVlOTllMWI0M2ViZjE4ZmUyYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9y
UHJvdG90eXBlLmNwcApAQCAtMjYsNyArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmgiCiAKKyNpbmNsdWRlICJDb21tb25J
ZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkpTQXJndW1lbnRzSXRlcmF0b3IuaCIKKyNpbmNsdWRl
ICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IDI3YWM2ZDQ4
YTcxZjc5NTUwMmExMGNlYTY0Nzg2NTQxMzVhNDYzYTAuLjZkYzdiZTU2OTY5ZGU2N2Y2MjEwN2Ji
M2E1MWEzMDhmYTNiYTc2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKSVQuaCIK
ICNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1N0cmluZ0J1aWxkZXIu
aCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJKU1N0cmluZ0pvaW5l
ci5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgpA
QCAtNTYsNyArNTcsNiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJh
eVByb3RvRnVuY1NsaWNlKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTb3J0KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTcGxpY2UoRXhlY1N0YXRlKik7CiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1VuU2hpZnQo
RXhlY1N0YXRlKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVBy
b3RvRnVuY0V2ZXJ5KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b0Z1bmNGb3JFYWNoKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTb21lKEV4ZWNTdGF0ZSopOwogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNJbmRleE9mKEV4
ZWNTdGF0ZSopOwpAQCAtOTU0LDY5ICs5NTQsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGFycmF5UHJvdG9GdW5jTWFwKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdEFycmF5KTsKIH0KIAotLy8gRG9jdW1lbnRhdGlvbiBmb3IgdGhlc2Ug
dGhyZWUgaXMgYXZhaWxhYmxlIGF0OgotLy8gaHR0cDovL2RldmVsb3Blci10ZXN0Lm1vemlsbGEu
b3JnL2VuL2RvY3MvQ29yZV9KYXZhU2NyaXB0XzEuNV9SZWZlcmVuY2U6T2JqZWN0czpBcnJheTpl
dmVyeQotLy8gaHR0cDovL2RldmVsb3Blci10ZXN0Lm1vemlsbGEub3JnL2VuL2RvY3MvQ29yZV9K
YXZhU2NyaXB0XzEuNV9SZWZlcmVuY2U6T2JqZWN0czpBcnJheTpmb3JFYWNoCi0vLyBodHRwOi8v
ZGV2ZWxvcGVyLXRlc3QubW96aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0phdmFTY3JpcHRfMS41X1Jl
ZmVyZW5jZTpPYmplY3RzOkFycmF5OnNvbWUKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvRnVuY0V2ZXJ5KEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBKU09iamVjdCog
dGhpc09iaiA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSku
dG9PYmplY3QoZXhlYyk7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpc09iai0+Z2V0KGV4ZWMs
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpLnRvVUludDMyKGV4ZWMpOwotICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKLQotICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBleGVjLT5hcmd1bWVudCgwKTsK
LSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxE
YXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9u
ZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0KLSAgICBKU1ZhbHVl
IGFwcGx5VGhpcyA9IGV4ZWMtPmFyZ3VtZW50KDEpOwotCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBq
c0Jvb2xlYW4odHJ1ZSk7Ci0KLSAgICB1bnNpZ25lZCBrID0gMDsKLSAgICBpZiAoY2FsbFR5cGUg
PT0gQ2FsbFR5cGVKUyAmJiBpc0pTQXJyYXkodGhpc09iaikpIHsKLSAgICAgICAgSlNGdW5jdGlv
biogZiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZnVuY3Rpb24pOwotICAgICAgICBKU0FycmF5KiBh
cnJheSA9IGFzQXJyYXkodGhpc09iaik7Ci0gICAgICAgIENhY2hlZENhbGwgY2FjaGVkQ2FsbChl
eGVjLCBmLCAzKTsKLSAgICAgICAgZm9yICg7IGsgPCBsZW5ndGggJiYgIWV4ZWMtPmhhZEV4Y2Vw
dGlvbigpOyArK2spIHsKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWSghYXJyYXktPmNhbkdldElu
ZGV4UXVpY2tseShrKSkpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIGNhY2hlZENhbGwuc2V0VGhpcyhhcHBseVRoaXMpOwotICAgICAgICAgICAgY2Fj
aGVkQ2FsbC5zZXRBcmd1bWVudCgwLCBhcnJheS0+Z2V0SW5kZXhRdWlja2x5KGspKTsKLSAgICAg
ICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoMSwganNOdW1iZXIoaykpOwotICAgICAgICAg
ICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudCgyLCB0aGlzT2JqKTsKLSAgICAgICAgICAgIEpTVmFs
dWUgcmVzdWx0ID0gY2FjaGVkQ2FsbC5jYWxsKCk7Ci0gICAgICAgICAgICBpZiAoIXJlc3VsdC50
b0Jvb2xlYW4oZXhlYykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4oZmFsc2UpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBmb3IgKDsgayA8IGxlbmd0
aCAmJiAhZXhlYy0+aGFkRXhjZXB0aW9uKCk7ICsraykgewotICAgICAgICBQcm9wZXJ0eVNsb3Qg
c2xvdCh0aGlzT2JqKTsKLSAgICAgICAgaWYgKCF0aGlzT2JqLT5nZXRQcm9wZXJ0eVNsb3QoZXhl
Yywgaywgc2xvdCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBNYXJrZWRBcmd1
bWVudEJ1ZmZlciBlYWNoQXJndW1lbnRzOwotICAgICAgICBlYWNoQXJndW1lbnRzLmFwcGVuZChz
bG90LmdldFZhbHVlKGV4ZWMsIGspKTsKLSAgICAgICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQoanNO
dW1iZXIoaykpOwotICAgICAgICBlYWNoQXJndW1lbnRzLmFwcGVuZCh0aGlzT2JqKTsKLQotICAg
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCi0gICAgICAgIGJvb2wgcHJlZGljYXRlUmVzdWx0
ID0gY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBhcHBseVRoaXMsIGVh
Y2hBcmd1bWVudHMpLnRvQm9vbGVhbihleGVjKTsKLSAgICAgICAgaWYgKCFwcmVkaWNhdGVSZXN1
bHQpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGpzQm9vbGVhbihmYWxzZSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKLX0KLQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y0ZvckVhY2goRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhl
Yy0+aG9zdFRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVj
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IDUx
MGUzODNmYWU1NzVhYWRhODE3NmMwNDQxZWU3MjViNDNhNGM3MzIuLmQzMDQ4NzdmZTljZGUxYzA5
MTlmZDQ1OTVmODExZWNhYmNlNzcyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29kZUNhY2hlLmNwcApAQCAtMTQ0LDI0ICsxNDQsMjYgQEAgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIENvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUo
Vk0mIHYKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lOwogICAg
IFJlZlB0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9IHBhcnNlPFByb2dyYW1Ob2RlPigmdm0sIHNv
dXJjZSwgMCwgSWRlbnRpZmllcigpLCBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlUHJvZ3JhbUNvZGUs
IGVycm9yLCAmcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CiAgICAgaWYgKCFwcm9ncmFtKSB7
Ci0gICAgICAgIEFTU0VSVChlcnJvci5tX3R5cGUgIT0gUGFyc2VyRXJyb3I6OkVycm9yTm9uZSk7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVycm9yLm1fdHlwZSAhPSBQYXJzZXJFcnJvcjo6RXJy
b3JOb25lKTsKICAgICAgICAgbV9zb3VyY2VDb2RlLnJlbW92ZShhZGRSZXN1bHQuaXRlcmF0b3Ip
OwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGFzc3Vt
ZXMgYW4gaW5wdXQgc3RyaW5nIHRoYXQgd291bGQgcmVzdWx0IGluIGEgc2luZ2xlIGFub255bW91
cyBmdW5jdGlvbiBleHByZXNzaW9uLgogICAgIFN0YXRlbWVudE5vZGUqIGV4cHJTdGF0ZW1lbnQg
PSBwcm9ncmFtLT5zaW5nbGVTdGF0ZW1lbnQoKTsKLSAgICBBU1NFUlQoZXhwclN0YXRlbWVudCk7
Ci0gICAgQVNTRVJUKGV4cHJTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKKyAgICBSRUxF
QVNFX0FTU0VSVChleHByU3RhdGVtZW50KTsKKyAgICBSRUxFQVNFX0FTU0VSVChleHByU3RhdGVt
ZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CiAgICAgRXhwcmVzc2lvbk5vZGUqIGZ1bmNFeHByID0g
c3RhdGljX2Nhc3Q8RXhwclN0YXRlbWVudE5vZGUqPihleHByU3RhdGVtZW50KS0+ZXhwcigpOwot
ICAgIEFTU0VSVChmdW5jRXhwcik7CisgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHIpOwogICAg
IFJFTEVBU0VfQVNTRVJUKGZ1bmNFeHByLT5pc0Z1bmNFeHByTm9kZSgpKTsKICAgICBGdW5jdGlv
bkJvZHlOb2RlKiBib2R5ID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZnVuY0V4cHIpLT5i
b2R5KCk7CisgICAgUkVMRUFTRV9BU1NFUlQoIXByb2dyYW0tPmhhc0NhcHR1cmVkVmFyaWFibGVz
KCkpOworICAgIAogICAgIGJvZHktPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmUpOwotICAgIEFTU0VSVChib2R5KTsKLSAgICBBU1NFUlQoYm9keS0+aWRlbnQoKS5pc051
bGwoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9k
eS0+aWRlbnQoKS5pc051bGwoKSk7CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgm
dm0sIHNvdXJjZSwgYm9keSwgdHJ1ZSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUo
JnZtLCBzb3VyY2UsIGJvZHksIHRydWUsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24pOwogICAgIGZ1
bmN0aW9uRXhlY3V0YWJsZS0+bV9uYW1lVmFsdWUuc2V0KHZtLCBmdW5jdGlvbkV4ZWN1dGFibGUs
IGpzU3RyaW5nKCZ2bSwgbmFtZS5zdHJpbmcoKSkpOwogCiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9IFNvdXJjZUNvZGVWYWx1ZSh2bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBtX3NvdXJj
ZUNvZGUuYWdlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuY3BwCmluZGV4IDNmNWM2NDVjMDk4ZDUyN2ZjMGM3MjU5ZTk0NDdlZmJl
ODg2OGEyOWMuLjJmYzJiNzI3YWZjZWVlMWVjMmM2MjVkZTU2NzViM2JlMWNmNjBkNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5j
cHAKQEAgLTI3LDcgKzI3LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAjZGVmaW5lIElOSVRJQUxJ
WkVfUFJPUEVSVFlfTkFNRShuYW1lKSAsIG5hbWUodm0sICNuYW1lKQogI2RlZmluZSBJTklUSUFM
SVpFX0tFWVdPUkQobmFtZSkgLCBuYW1lIyNLZXl3b3JkKHZtLCAjbmFtZSkKLSNkZWZpbmUgSU5J
VElBTElaRV9QUklWQVRFX05BTUUobmFtZSkgLCBuYW1lIyNQcml2YXRlTmFtZShJZGVudGlmaWVy
Ojpmcm9tKFByaXZhdGVOYW1lKCkpKQorI2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFNRShu
YW1lKSBcCisgICAgLCBuYW1lIyNQcml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tKFByaXZhdGVO
YW1lKCkpKSBcCisgICAgLCBtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpcihuYW1lLCBuYW1lIyNQ
cml2YXRlTmFtZSkgXAorCiAKIENvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyhW
TSogdm0pCiAgICAgOiBudWxsSWRlbnRpZmllcigpCkBAIC0zOCw4ICs0MSwyNiBAQCBDb21tb25J
ZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMoVk0qIHZtKQogICAgICwgaGFzTmV4dElkZW50
aWZpZXIodm0sICJoYXNOZXh0IikKICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZ
V09SRChJTklUSUFMSVpFX0tFWVdPUkQpCiAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNI
X1BST1BFUlRZX05BTUUoSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKQorICAgIEpTQ19GT1JFQUNI
X0JVSUxUSU5fRlVOQ1RJT05fTkFNRShJTklUSUFMSVpFX1BST1BFUlRZX05BTUUpCiAgICAgSlND
X0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpF
X1BSSVZBVEVfTkFNRSkKIHsKIH0KIAorY29uc3QgSWRlbnRpZmllciogQ29tbW9uSWRlbnRpZmll
cnM6OmdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAoreworI2Rl
ZmluZSBSRVRVUk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMobmFtZSkgaWYgKG1fIyNuYW1lIyNQ
dWJsaWNTdHJpbmdQYWlyLmZpcnN0ID09IGlkZW50KSByZXR1cm4gJm1fIyNuYW1lIyNQdWJsaWNT
dHJpbmdQYWlyLnNlY29uZDsKKyAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFD
SF9QUk9QRVJUWV9OQU1FKFJFVFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hFUykKKyN1bmRlZiBS
RVRVUk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMKKyAgICByZXR1cm4gMDsKK30KKworSWRlbnRp
ZmllciBDb21tb25JZGVudGlmaWVyczo6Z2V0UHVibGljTmFtZShjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCkgY29uc3QKK3sKKyNkZWZpbmUgUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRDSEVTKG5h
bWUpIGlmIChtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpci5zZWNvbmQgPT0gaWRlbnQpIHJldHVy
biBtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpci5maXJzdDsKKyAgICBKU0NfQ09NTU9OX1BSSVZB
VEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKFJFVFVSTl9JRl9QUklWQVRFX05BTUVf
TUFUQ0hFUykKKyN1bmRlZiBSRVRVUk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMKKyAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBlbXB0eUlkZW50aWZpZXI7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggZThmOWVkODJiYzc5NDYyMDM4MjY2YjMwMjA3
ODIyNDdiMWZhMjdhMy4uOTI0ZDM2YWM2OTEzNTAzNTdjYjM4MmIxZWYzYjQwYTBhMDhjMGFiYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oCkBAIC0yMiw2ICsyMiw3IEBACiAjZGVmaW5lIENvbW1vbklkZW50aWZpZXJzX2gKIAogI2lu
Y2x1ZGUgIklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgogCiAvLyBNYXJrZWRBcmd1bWVudEJ1ZmZlciBvZiBwcm9wZXJ0
eSBuYW1lcywgcGFzc2VkIHRvIGEgbWFjcm8gc28gd2UgY2FuIGRvIHNldCB0aGVtIHVwIHZhcmlv
dXMKQEAgLTEzMyw4ICsxMzQsMTAgQEAKICAgICBtYWNybyhvc3JFeGl0cykgXAogICAgIG1hY3Jv
KHBhcnNlKSBcCiAgICAgbWFjcm8ocHJvZmlsZWRCeXRlY29kZXMpIFwKKyAgICBtYWNybyhwcm9t
aXNlKSBcCiAgICAgbWFjcm8ocHJvcGVydHlJc0VudW1lcmFibGUpIFwKICAgICBtYWNybyhwcm90
b3R5cGUpIFwKKyAgICBtYWNybyhyZXNvbHZlKSBcCiAgICAgbWFjcm8oc2V0KSBcCiAgICAgbWFj
cm8oc2l6ZSkgXAogICAgIG1hY3JvKHNsaWNlKSBcCkBAIC0xNTUsNyArMTU4LDE0IEBACiAgICAg
bWFjcm8odmFsdWVzKSBcCiAgICAgbWFjcm8odmFsdWVPZikgXAogICAgIG1hY3JvKHdpbmRvdykg
XAotICAgIG1hY3JvKHdyaXRhYmxlKQorICAgIG1hY3JvKHdyaXRhYmxlKSBcCisgICAgbWFjcm8o
aXRlcmF0b3IpIFwKKyAgICBtYWNybyhpdGVyYXRvck5leHQpIFwKKyAgICBtYWNybyhyZWplY3Qp
IFwKKyAgICBtYWNybyhmdWxmaWxsbWVudEhhbmRsZXIpIFwKKyAgICBtYWNybyhyZWplY3Rpb25I
YW5kbGVyKSBcCisgICAgbWFjcm8oZGVmZXJyZWQpIFwKKyAgICBtYWNybyhjb3VudGRvd25Ib2xk
ZXIpIFwKIAogI2RlZmluZSBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZV09SRChtYWNy
bykgXAogICAgIG1hY3JvKGJyZWFrKSBcCkBAIC0yMDMsNyArMjEzLDcgQEAKICAgICBtYWNybyh2
b2lkKSBcCiAgICAgbWFjcm8od2hpbGUpIFwKICAgICBtYWNybyh3aXRoKSBcCi0gICAgbWFjcm8o
eWllbGQpCisgICAgbWFjcm8oeWllbGQpIFwKIAogI2RlZmluZSBKU0NfQ09NTU9OX1BSSVZBVEVf
SURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKG1hY3JvKSBcCiAgICAgbWFjcm8oaXRlcmF0
b3IpIFwKQEAgLTIxNiw3ICsyMjYsMTIgQEAKICAgICBtYWNybyhpbmRleCkgXAogICAgIG1hY3Jv
KHZhbHVlcykgXAogICAgIG1hY3JvKGRlZmVycmVkKSBcCi0gICAgbWFjcm8oY291bnRkb3duSG9s
ZGVyKQorICAgIG1hY3JvKGNvdW50ZG93bkhvbGRlcikgXAorICAgIG1hY3JvKE9iamVjdCkgXAor
ICAgIG1hY3JvKFR5cGVFcnJvcikgXAorICAgIG1hY3JvKHVuZGVmaW5lZEtleXdvcmQpIFwKKyAg
ICBtYWNybyhjYWxsKSBcCisgICAgbWFjcm8oYXBwbHkpCiAKIG5hbWVzcGFjZSBKU0MgewogCkBA
IC0yNDAsMTEgKzI1NSwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjZGVmaW5lIEpT
Q19JREVOVElGSUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwobmFtZSkgY29uc3QgSWRl
bnRpZmllciBuYW1lOwogICAgICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVS
VFlfTkFNRShKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFMKQorICAg
ICAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoSlNDX0lERU5USUZJRVJfREVD
TEFSRV9QUk9QRVJUWV9OQU1FX0dMT0JBTCkKICN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJF
X1BST1BFUlRZX05BTUVfR0xPQkFMCiAKLSNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9Q
UklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSMj
UHJpdmF0ZU5hbWU7CisjZGVmaW5lIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9Q
RVJUWV9OQU1FX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWUjI1ByaXZhdGVOYW1l
OyBjb25zdCBzdGQ6OnBhaXI8SWRlbnRpZmllciwgSWRlbnRpZmllcj4gbV8jI25hbWUjI1B1Ymxp
Y1N0cmluZ1BhaXI7CiAgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNI
X1BST1BFUlRZX05BTUUoSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05B
TUVfR0xPQkFMKQogI3VuZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJU
WV9OQU1FX0dMT0JBTAorICAgICAgICAKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciogZ2V0UHJp
dmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OworICAgICAgICBJZGVudGlmaWVyIGdl
dFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogICAgIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKaW5kZXggMDc1ODc1ZmIyMzE2YTU1NTcwNTBhNjY5MGNkMGY5ODgyNDg0ZjVm
My4uNWFmOTA4NzU0ZTc0N2Y4Y2FlMGNkMDRhZjhkNDkxNTAwNDY4YzJhNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC00MSw3
ICs0MSw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNs
dWRlICJKU0FjdGl2YXRpb24uaCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAi
SlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5o
IgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcAppbmRleCA1NTMzNGJlMmY5ODBhOThmN2ZlYTQy
YTA1YmUwZjIwYzAxOWZmMGRkLi5mYTU3YzAyNjg1ZTUzZDUyNTI4ODA1N2UyMTFkOThiMTA5ODFk
NzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHNFeGNlcHRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcApAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUg
IkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkpJVEV4Y2Vw
dGlvbnMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVu
Y3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKIAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBDb21tb25TbG93UGF0aHMgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCAwNWUxMWUwYjgwYTM0MzBh
ZWFiMjJiMDIyMmEyMTJmNGE4ZTJjNDliLi4zNjRjYzcxNjY2MDhiNTAwN2Q0NzdkODczOTE4YTVk
NjRiMTY4NjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb25IZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb25IZWxwZXJzLmNwcApAQCAtODEsNiArODEsMTEgQEAgSlNPYmplY3QqIGNyZWF0ZVN0YWNr
T3ZlcmZsb3dFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiBKU09iamVjdCog
Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50KQogeworICAgIAorICAgIGlmIChpZGVudC5pbXBsKCktPmlzRW1wdHlVbmlx
dWUoKSkgeworICAgICAgICBTdHJpbmcgbWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBmaW5kIHBy
aXZhdGUgdmFyaWFibGU6IEAiLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2V0UHVibGljTmFtZShp
ZGVudCkuc3RyaW5nKCkpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4
ZWMsIG1lc3NhZ2UpOworICAgIH0KICAgICBTdHJpbmcgbWVzc2FnZShtYWtlU3RyaW5nKCJDYW4n
dCBmaW5kIHZhcmlhYmxlOiAiLCBpZGVudC5zdHJpbmcoKSkpOwogICAgIHJldHVybiBjcmVhdGVS
ZWZlcmVuY2VFcnJvcihleGVjLCBtZXNzYWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCAxOTg5NzZiYjNmZTZlNmU5MTE3OTgxMmQxY2FmOWI4
YmY5YmZkMGJiLi44ZDU5MGVmMGZmYzBlYjkwYWM4ZjlhODFkOWJjMjU3MjFjZDM1YzkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC00ODQsNyArNDg0
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckNvZGUoKTsKIAotICAgIEV4ZWN1dGFibGVJ
bmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNB
Y3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSk7IH0KKyAgICBF
eGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJ
bmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2Us
IGZhbHNlKTsgfQogCiAgICAgdW5zaWduZWQgbnVtVmFyaWFibGVzKCkgeyByZXR1cm4gbV91bmxp
bmtlZEV2YWxDb2RlQmxvY2stPm51bVZhcmlhYmxlcygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVy
T2ZGdW5jdGlvbkRlY2xzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bWJl
ck9mRnVuY3Rpb25EZWNscygpOyB9CkBAIC01NDAsNyArNTQwLDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBjbGVhckNvZGUoKTsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkg
Y29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFs
KCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRh
YmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigp
LCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlKTsgfQogCiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwpAQCAtNjI4LDcgKzYyOCw4IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBiYXNlbGluZUNvZGVCbG9ja0ZvcihraW5k
KTsKICAgICB9Ci0gICAgICAgIAorCisgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpOyB9CiAg
ICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxl
LT5uYW1lKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBpbmZlcnJlZE5hbWUoKSB7IHJldHVy
biBtX3VubGlua2VkRXhlY3V0YWJsZS0+aW5mZXJyZWROYW1lKCk7IH0KICAgICBKU1N0cmluZyog
bmFtZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWVWYWx1
ZSgpOyB9CkBAIC02NzUsMTQgKzY3Niw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2JvZHlJbmNs
dWRlc0JyYWNlczsKIH07CiAKLWlubGluZSBib29sIGlzSG9zdEZ1bmN0aW9uKEpTVmFsdWUgdmFs
dWUsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uKQotewotICAgIEpTRnVuY3Rpb24qIGZ1
bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihnZXRKU0Z1bmN0aW9uKHZhbHVlKSk7Ci0gICAg
aWYgKCFmdW5jdGlvbiB8fCAhZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICByZXR1cm4gZnVuY3Rpb24tPm5hdGl2ZUZ1bmN0aW9uKCkgPT0gbmF0
aXZlRnVuY3Rpb247Ci19Ci0KIGlubGluZSB2b2lkIEV4ZWN1dGFibGVCYXNlOjpjbGVhckNvZGVW
aXJ0dWFsKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKQogewogICAgIHN3aXRjaCAoZXhlY3V0
YWJsZS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKaW5kZXggYzFiMDhh
ZjJkODE4ZGFlNTdlMWIwMGZkYTE3M2E4MTYxMzc1MjliNS4uMTI0OTBjNDBmMzM0MTdlY2E5MjM4
NTBhMGRjNjYyZGJiY2Q0MGYzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcApAQCAtMjIsMTIgKzIyLDEzIEBACiAjaW5jbHVk
ZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1
ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQm91
bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1N0cmlu
Zy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5oIgotI2luY2x1ZGUgIkludGVycHJldGVy
LmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTGV4ZXIuaCIKICNp
bmNsdWRlICJPcGVyYXRpb25zLmgiCiAKQEAgLTEwOCw3ICsxMDksNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVj
KQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlm
ICh0aGlzVmFsdWUuaW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkgewogICAgICAgICBKU0Z1
bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4odGhpc1ZhbHVlKTsKLSAgICAg
ICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpKQorICAgICAgICBpZiAoZnVuY3Rpb24t
PmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgImZ1bmN0aW9uICIsIGZ1bmN0aW9u
LT5uYW1lKGV4ZWMpLCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iKSk7CiAgICAgICAgIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKTsK
ICAgICAgICAgU3RyaW5nIHNvdXJjZVN0cmluZyA9IGV4ZWN1dGFibGUtPnNvdXJjZSgpLnRvU3Ry
aW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2
YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNw
cAppbmRleCA3MmVkMWM3MTI0MDYxMTY4YjBhZGRkMzExNmY3NTVhMTE3YjhmYjkwLi5iMzc0OTQz
MDk5ZTIxNTVhMzk3NzEzMzEzNDcwMmMyYTI0YWNjODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBK
U0FjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKIAogaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZUdldChQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgU3ltYm9sVGFi
bGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVi
bGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+
aW5saW5lR2V0KHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGVudHJ5LmlzTnVsbCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTcyLDcgKzcyLDcgQEAgaW5saW5lIGJvb2wgSlNB
Y3RpdmF0aW9uOjpzeW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QKIAogaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZUdldChQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7
Ci0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChw
cm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0g
c3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGVu
dHJ5LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTg5LDcgKzg5LDcgQEAg
aW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dChFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU4KICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEFT
U0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVh
cCh0aGlzKSk7CiAgICAgCi0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxl
KCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJs
ZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS51aWQo
KSk7CiAgICAgaWYgKGVudHJ5LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aWYgKGVudHJ5LmlzUmVhZE9ubHkoKSkgewpAQCAtMTM2LDcgKzEzNiw3IEBAIGlubGluZSBib29s
IEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyhWTSYgdm0sIFByb3Bl
cnR5TmFtZSBwcm9wCiAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogcmVnOwogICAgIHsK
ICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUoKS0+bV9sb2Nr
KTsKLSAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxl
KCktPmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICAgICAgU3lt
Ym9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlKCktPmZpbmQobG9ja2Vy
LCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZSgp
LT5lbmQobG9ja2VyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgU3ltYm9s
VGFibGVFbnRyeSYgZW50cnkgPSBpdGVyLT52YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5jcHAKaW5kZXggMmZjZjg4MTVj
MDU2ODA1ODEyYTc5OTFhNWZmMDYzZDY4NzM5NzE2NC4uOWE5MjU4M2FhMGVjOTBkYmIzMjhlY2Q1
MGRjMzEzOWFlZjAyNzNiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcmd1bWVudHNJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRl
ICJKU0FyZ3VtZW50c0l0ZXJhdG9yLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNpbmNs
dWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCA5MDA3YjVmN2QzZjEwM2IxZDIx
YjFhMzY1YTI2YzIxNWMzMmI0ZDI4Li5iYTBhMmQzOGU5YzUzZTE1OTM3ZDQ2YTg5NTFhOGM4YzQ1
MDc5MjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAt
MzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJHZXR0ZXJT
ZXR0ZXIuaCIKICNpbmNsdWRlICJJbmRleGluZ0hlYWRlcklubGluZXMuaCIKKyNpbmNsdWRlICJK
U1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1
ZGUgIlJlamVjdC5oIgogI2luY2x1ZGUgPHd0Zi9BVkxUcmVlLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcAppbmRleCBkNTA2YzRlYmQy
NjIwZWZkNzA3OTNhODczZDA4NTJmYmQ5NzgyODU5Li5jZjM3MDk3ZWMwYzY5MjVhODY3YjhjMDEw
YzBlZmM0MDc0NDg1ZjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlJdGVyYXRvci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkpTQ0pT
VmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpT
U3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5j
cHAKaW5kZXggY2NhNjg4OGJmOThhMDI4NjQ2Y2EzZGRkZjM3NjI3Y2UwZTdkOTMwMi4uMzM5YTdh
YjdmNTk1MTVlOTZhZmI3ZWM0Yjg3NDFlN2FhOGUxNjZmOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAgLTMyLDcgKzMyLDkgQEAKICNpbmNsdWRl
ICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJK
U05vdEFuT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
TnVtYmVyT2JqZWN0LmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9N
YXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKaW5kZXggZjdjODQ0NjQ1MDky
YjI1MDgwNWU2ZThkNDgzMmM5OThiZGI4OWI1NC4uZDc5NWRkNTZhOTdkZGI1OTdjMDkwZmMyZTBi
N2YzMDhlMzNlYmNhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bElubGluZXMuaApAQCAtMjcsOCArMjcsMTAgQEAKICNkZWZpbmUgSlNDZWxsSW5saW5lc19oCiAK
ICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgog
I2luY2x1ZGUgIkRlZmVyR0MuaCIKICNpbmNsdWRlICJIYW5kbGUuaCIKKyNpbmNsdWRlICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggMjQxOTY0NjEwYmI0NDI3YjE4NjM3MzM0NmUyNGY1YTgy
ZDBjZGNjNC4uYWNlNmMxNDdlNDk3ZmVlMjAyOTJmYjU1Mzk3NjBkNWQ2OTgyOWNlOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTM0LDcgKzM0
LDggQEAKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdldHRlclNl
dHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKLSNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24u
aCIgCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklu
bGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTm90QW5P
YmplY3QuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtMTA5LDYgKzExMCwxNCBAQCB2
b2lkIEpTRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgTmF0aXZlRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSwgaW50IGxlbmd0aAogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250
RW51bSk7CiB9CiAKK0pTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlv
bihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKK3sKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNyZWF0ZSh2bSwg
ZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBmdW5jdGlvbi0+cHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZygmdm0sIGV4ZWN1dGFibGUtPm5hbWUoKS5z
dHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBmdW5jdGlv
bi0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKGV4ZWN1
dGFibGUtPnBhcmFtZXRlckNvdW50KCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51
bSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uOworfQorCiBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSog
SlNGdW5jdGlvbjo6Y3JlYXRlQWxsb2NhdGlvblByb2ZpbGUoRXhlY1N0YXRlKiBleGVjLCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHkpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTE0Miw3
ICsxNTEsNyBAQCBjb25zdCBTdHJpbmcgSlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1l
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIGV4cGxpY2l0TmFtZTsKICAgICAKICAg
ICBjb25zdCBTdHJpbmcgYWN0dWFsTmFtZSA9IG5hbWUoZXhlYyk7Ci0gICAgaWYgKCFhY3R1YWxO
YW1lLmlzRW1wdHkoKSB8fCBpc0hvc3RGdW5jdGlvbigpKQorICAgIGlmICghYWN0dWFsTmFtZS5p
c0VtcHR5KCkgfHwgaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIGFj
dHVhbE5hbWU7CiAgICAgCiAgICAgcmV0dXJuIGpzRXhlY3V0YWJsZSgpLT5pbmZlcnJlZE5hbWUo
KS5zdHJpbmcoKTsKQEAgLTE1MCwxMCArMTU5LDIwIEBAIGNvbnN0IFN0cmluZyBKU0Z1bmN0aW9u
OjpjYWxjdWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQogCiBjb25zdCBTb3VyY2VD
b2RlKiBKU0Z1bmN0aW9uOjpzb3VyY2VDb2RlKCkgY29uc3QKIHsKLSAgICBpZiAoaXNIb3N0RnVu
Y3Rpb24oKSkKKyAgICBpZiAoaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgcmV0dXJuICZqc0V4ZWN1dGFibGUoKS0+c291cmNlKCk7CiB9CisgICAgCiti
b29sIEpTRnVuY3Rpb246OmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gaXNIb3N0RnVuY3Rpb24oKSB8fCBpc0J1aWx0aW5GdW5jdGlvbigpOworfQorCitib29s
IEpTRnVuY3Rpb246OmlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWlz
SG9zdEZ1bmN0aW9uKCkgJiYganNFeGVjdXRhYmxlKCktPmlzQnVpbHRpbkZ1bmN0aW9uKCk7Cit9
CiAKIHZvaWQgSlNGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogewpAQCAtMjc3LDcgKzI5Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTRnVu
Y3Rpb246OmNhbGxlckdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHNsb3RC
YXNlCiAgICAgaWYgKCFjYWxsZXIuaXNPYmplY3QoKSB8fCAhYXNPYmplY3QoY2FsbGVyKS0+aW5o
ZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjYWxsZXIpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24q
PihjYWxsZXIpOwotICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSB8fCAhZnVuY3Rp
b24tPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkKKyAgICBpZiAoZnVuY3Rpb24tPmlz
SG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgfHwgIWZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKS0+aXNT
dHJpY3RNb2RlKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbGVyKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiRnVuY3Rpb24uY2FsbGVyIHVzZWQgdG8gcmV0cmlldmUgc3RyaWN0IGNhbGxlciIpKSk7CiB9
CkBAIC0yOTksNyArMzE4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNGdW5jdGlvbjo6bmFtZUdldHRl
cihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBzbG90QmFzZSwgRW5jb2QKIGJvb2wgSlNGdW5j
dGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdCk7Ci0g
ICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgaWYgKHRoaXNPYmplY3Qt
PmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBCYXNlOjpnZXRPd25Q
cm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIAogICAg
IGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSkgewpA
QCAtMzYxLDcgKzM4MCw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiB2b2lkIEpTRnVuY3Rp
b246OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1v
ZGUgbW9kZSkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rp
b24qPihvYmplY3QpOwotICAgIGlmICghdGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSAmJiAo
bW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgeworICAgIGlmICghdGhpc09iamVj
dC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSAmJiAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Q
cm9wZXJ0aWVzKSkgewogICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90eXBlIGhhcyBiZWVuIHJl
aWZpZWQuCiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QpOwogICAgICAgICB0
aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwg
ZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgc2xvdCk7CkBAIC0zNzcsNyAr
Mzk2LDcgQEAgdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLAogdm9pZCBKU0Z1bmN0aW9uOjpwdXQoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1bmN0aW9uKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKLSAgICBpZiAodGhpc09iamVj
dC0+aXNIb3N0RnVuY3Rpb24oKSkgeworICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0
aW5GdW5jdGlvbigpKSB7CiAgICAgICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQyNSw3
ICs0NDQsNyBAQCBib29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcAogYm9vbCBKU0Z1bmN0aW9uOjpkZWZp
bmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwg
Ym9vbCB0aHJvd0V4Y2VwdGlvbikKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RGdW5j
dGlvbigpKQorICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQog
ICAgICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKTsKIAogICAgIGlmIChwcm9wZXJ0
eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDdjZDE0YjhjMmQ4MDBmNjFiZGMx
MmVkZDJkZjA0ZDM1ZmEwNjE5YjYuLjliNThiNzQ3Y2UxZjNmMzMyZDBmNzYwYTU3ODViN2FjMTll
YmU5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAg
LTY4LDYgKzY4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rp
b247CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVh
dGVCdWlsdGluRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0dsb2JhbE9iamVj
dCopOworICAgICAgICAKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAg
ICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBuYW1lKEV4ZWNTdGF0ZSop
OwpAQCAtOTcsNyArOTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhlY3V0YWJsZUJh
c2UqIGV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtX2V4ZWN1dGFibGUuZ2V0KCk7IH0KIAog
ICAgICAgICAvLyBUbyBjYWxsIGVpdGhlciBvZiB0aGVzZSBtZXRob2RzIGluY2x1ZGUgRXhlY3V0
YWJsZS5oCi0gICAgICAgIGlubGluZSBib29sIGlzSG9zdEZ1bmN0aW9uKCkgY29uc3Q7CisgICAg
ICAgIGJvb2wgaXNIb3N0RnVuY3Rpb24oKSBjb25zdDsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRh
YmxlKiBqc0V4ZWN1dGFibGUoKSBjb25zdDsKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBj
b25zdCBTb3VyY2VDb2RlKiBzb3VyY2VDb2RlKCkgY29uc3Q7CkBAIC0xNDUsNiArMTQ3LDEwIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1fYWxsb2NhdGlvblByb2ZpbGVX
YXRjaHBvaW50OwogICAgICAgICB9CiAKKyAgICAgICAgYm9vbCBpc0hvc3RPckJ1aWx0aW5GdW5j
dGlvbigpIGNvbnN0OworICAgICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3Q7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBj
b25zdDsKKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW1wbGVtZW50c0hh
c0luc3RhbmNlIHwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3BlcnR5
TmFtZXMgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKQEAgLTE2OSw4ICsxNzUsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9v
bCBpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpIGNvbnN0OwotCiAgICAgICAgIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBhcmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgY2FsbGVyR2V0dGVyKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSwgUHJvcGVydHlOYW1lKTsKICAgICAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGxlbmd0aEdl
dHRlcihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5
TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklu
bGluZXMuaAppbmRleCBmZTRlMTE0YWRiYzIzNjc0ZDNiNjBlNjFmNzFjYjdhMDZjOTQ3ODRkLi42
OWYwZDRmMzk2ZWY5YzJkYTllMGJmNjA4YzI2NDQxNzE3OTliYTUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKQEAgLTUzLDE2ICs1
MywyNCBAQCBpbmxpbmUgYm9vbCBKU0Z1bmN0aW9uOjppc0hvc3RGdW5jdGlvbigpIGNvbnN0CiAK
IGlubGluZSBOYXRpdmVGdW5jdGlvbiBKU0Z1bmN0aW9uOjpuYXRpdmVGdW5jdGlvbigpCiB7Ci0g
ICAgQVNTRVJUKGlzSG9zdEZ1bmN0aW9uKCkpOworICAgIEFTU0VSVChpc0hvc3RGdW5jdGlvbk5v
bklubGluZSgpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TmF0aXZlRXhlY3V0YWJsZSo+KG1f
ZXhlY3V0YWJsZS5nZXQoKSktPmZ1bmN0aW9uKCk7CiB9CiAKIGlubGluZSBOYXRpdmVGdW5jdGlv
biBKU0Z1bmN0aW9uOjpuYXRpdmVDb25zdHJ1Y3RvcigpCiB7Ci0gICAgQVNTRVJUKGlzSG9zdEZ1
bmN0aW9uKCkpOworICAgIEFTU0VSVChpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpKTsKICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8TmF0aXZlRXhlY3V0YWJsZSo+KG1fZXhlY3V0YWJsZS5nZXQoKSkt
PmNvbnN0cnVjdG9yKCk7CiB9CiAKK2lubGluZSBib29sIGlzSG9zdEZ1bmN0aW9uKEpTVmFsdWUg
dmFsdWUsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uKQoreworICAgIEpTRnVuY3Rpb24q
IGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihnZXRKU0Z1bmN0aW9uKHZhbHVlKSk7Cisg
ICAgaWYgKCFmdW5jdGlvbiB8fCAhZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gZnVuY3Rpb24tPm5hdGl2ZUZ1bmN0aW9uKCkgPT0g
bmF0aXZlRnVuY3Rpb247Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gSlNG
dW5jdGlvbklubGluZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJ
bmxpbmVzLmgKaW5kZXggMmRkYzI5ZjcxODk3YmI1MWQzOTBiMDZiMjVhNzM4MzM4NzRiYTBjMS4u
ZWRkMzQ0OWNlNDdiMTczNWU4ZTVkYmIwNWYzMThlM2Q1NWYzYmU2MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1
Y3RvcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCkBAIC0yNiw2ICsyNiw3IEBACiAj
aWZuZGVmIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzX2gKICNkZWZp
bmUgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXNfaAogCisjaW5jbHVk
ZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkpT
QXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVj
dG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IDZkYjg2Mjc0YzNiODc0YWFh
ZGU1MTUxODk4MjY3MjZmYjEzNmMxNzMuLmYyNGVhNzMwM2RmOTY5ZGJkMmRjYTUyYzg2ZDExYzc4
YzAwZGI5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0yNyw2ICsyNyw3IEBA
CiAjZGVmaW5lIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lc19oCiAKICNpbmNsdWRlICJB
cnJheUJ1ZmZlclZpZXcuaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1
ZGUgIkRlZmVyR0MuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhl
bHBlcnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmgKaW5k
ZXggNDU5OTk3YTQ2NGI5MTE5NDc3YjFiZTg0ZTM2YzRlMjk2NmFjZWY4NS4uOGU1ZmY4Mjc5MWU2
ZmY4ZDRlYjljMzczNjkxZTQzM2ViN2QxNmFlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdQcm90b3R5cGVJbmxpbmVzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzX2gKICNkZWZpbmUgSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdQcm90b3R5cGVJbmxpbmVzX2gKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJz
LmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDJjMjc0YzFhN2Q0ODFjMDdkZjBkMmJlYjNiMjkz
MWEzOTA3YTVlNjYuLjA2ZTU0Yzg0ZTc3YjkwMzJiYWExZDJkZjQ3YTFjNzJlODBiN2RlYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
QEAgLTM0Niw3ICszNDYsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHBy
b3RvdHlwZSkKIAogICAgIC8vIENvbnN0cnVjdG9ycwogCi0gICAgSlNDZWxsKiBvYmplY3RDb25z
dHJ1Y3RvciA9IE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIE9iamVjdENvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBt
X29iamVjdFByb3RvdHlwZS5nZXQoKSk7CisgICAgT2JqZWN0Q29uc3RydWN0b3IqIG9iamVjdENv
bnN0cnVjdG9yID0gT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgT2JqZWN0Q29uc3RydWN0
b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSks
IG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKKyAgICBtX29iamVjdENvbnN0cnVjdG9yLnNldCh2
bSwgdGhpcywgb2JqZWN0Q29uc3RydWN0b3IpOwogICAgIEpTQ2VsbCogZnVuY3Rpb25Db25zdHJ1
Y3RvciA9IEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgRnVuY3Rpb25Db25zdHJ1Y3Rv
cjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwg
bV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CiAgICAgSlNDZWxsKiBhcnJheUNvbnN0cnVjdG9y
ID0gQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2FycmF5UHJv
dG90eXBlLmdldCgpKTsKIApAQCAtNDMyLDcgKzQzMywxMCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
OjpyZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKICAgICBHbG9iYWxQcm9wZXJ0eUluZm8gc3RhdGlj
R2xvYmFsc1tdID0gewogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+TmFOLCBqc05hTigpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5JbmZpbml0eSwganNOdW1i
ZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSwgRG9udEVudW0gfCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCwganNVbmRlZmluZWQoKSwgRG9udEVudW0gfCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9w
ZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLCBqc1VuZGVmaW5lZCgpLCBEb250RW51bSB8IERv
bnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9w
ZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkUHJpdmF0ZU5hbWUsIGpzVW5kZWZpbmVkKCksIERv
bnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJ
bmZvKHZtLnByb3BlcnR5TmFtZXMtPk9iamVjdFByaXZhdGVOYW1lLCBvYmplY3RDb25zdHJ1Y3Rv
ciwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+VHlwZUVycm9yUHJpdmF0ZU5hbWUsIG1fdHlwZUVy
cm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KQog
ICAgIH07CiAgICAgYWRkU3RhdGljR2xvYmFscyhzdGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVO
R1RIKHN0YXRpY0dsb2JhbHMpKTsKICAgICAKQEAgLTYwOCw2ICs2MTIsNyBAQCB2b2lkIEpTR2xv
YmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3ludGF4RXJyb3JDb25zdHJ1
Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdHlwZUVycm9yQ29uc3Ry
dWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX1VSSUVycm9yQ29uc3Ry
dWN0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX29iamVjdENvbnN0cnVj
dG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcm9taXNlQ29uc3RydWN0
b3IpOwogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZXZhbEZ1bmN0aW9uKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4
IGIwY2FkM2RjNTQ3MGY3YzdhMGU1NzBiZGNkMmRmZmE4OTVlMmFhMGMuLjNhNjE2YzZmMDVlZGYx
ZDI5NWFmODQ0MWFhNjY1MDBmYjkyYTRhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNjcsNiArNjcsNyBAQCBjbGFzcyBKU1N0YWNr
OwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgTWljcm90YXNrOwogY2xhc3Mg
TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjsKK2NsYXNzIE9iamVjdENvbnN0cnVjdG9yOwogY2xhc3Mg
UHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwogY2xhc3MgUmVnRXhw
Q29uc3RydWN0b3I7CkBAIC0xNTgsNiArMTU5LDcgQEAgcHJvdGVjdGVkOgogICAgIFdyaXRlQmFy
cmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX3R5cGVFcnJvckNvbnN0cnVjdG9yOwogICAg
IFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX1VSSUVycm9yQ29uc3RydWN0
b3I7CiAgICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlzZUNvbnN0cnVjdG9yPiBtX3Byb21pc2VDb25z
dHJ1Y3RvcjsKKyAgICBXcml0ZUJhcnJpZXI8T2JqZWN0Q29uc3RydWN0b3I+IG1fb2JqZWN0Q29u
c3RydWN0b3I7CiAKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9ldmFsRnVuY3Rpb247
CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fY2FsbEZ1bmN0aW9uOwpAQCAtMzMwLDYg
KzMzMiw3IEBAIHB1YmxpYzoKICAgICBSZWdFeHBDb25zdHJ1Y3RvciogcmVnRXhwQ29uc3RydWN0
b3IoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cENvbnN0cnVjdG9yLmdldCgpOyB9CiAKICAgICBF
cnJvckNvbnN0cnVjdG9yKiBlcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJv
ckNvbnN0cnVjdG9yLmdldCgpOyB9CisgICAgT2JqZWN0Q29uc3RydWN0b3IqIG9iamVjdENvbnN0
cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAg
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGV2YWxFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9ldmFsRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgIE5hdGl2ZUVycm9yQ29u
c3RydWN0b3IqIHJhbmdlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2VF
cnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CiAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogcmVm
ZXJlbmNlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlRXJyb3JD
b25zdHJ1Y3Rvci5nZXQoKTsgfQpAQCAtNTgxLDcgKzU4NCw3IEBAIGlubGluZSBib29sIEpTR2xv
YmFsT2JqZWN0OjpoYXNPd25Qcm9wZXJ0eUZvcldyaXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lCiAKIGlubGluZSBib29sIEpTR2xvYmFsT2JqZWN0OjpzeW1ib2xUYWJsZUhhc1Byb3Bl
cnR5KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgU3ltYm9sVGFibGVFbnRyeSBl
bnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgp
KTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0
KHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgcmV0dXJuICFlbnRyeS5pc051bGwoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IDJiNjdhMWQ5
ZWVkODRlOTk1NmY4YmI5NjgzODRjODRjYWVhNTNjZmYuLjJlYTJjMjRlNmVhYjRjZDBkN2ZmZWQ2
NjVlZjRhZTQxYWYwNzUwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGdldENsYXNzUHJv
cGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENsYXNzSW5mbyogY2xhc3MKICAgICAg
ICAgaW50IGhhc2hTaXplTWFzayA9IHRhYmxlLT5jb21wYWN0U2l6ZSAtIDE7CiAgICAgICAgIGNv
bnN0IEhhc2hFbnRyeSogZW50cnkgPSB0YWJsZS0+dGFibGU7CiAgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDw9IGhhc2hTaXplTWFzazsgKytpLCArK2VudHJ5KSB7Ci0gICAgICAgICAgICBpZiAo
ZW50cnktPmtleSgpICYmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwgKG1v
ZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpICYmICEoKGVudHJ5LT5hdHRyaWJ1dGVz
KCkgJiBGdW5jdGlvbikgJiYgZGlkUmVpZnkpKQorICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXko
KSAmJiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IChtb2RlID09IEluY2x1
ZGVEb250RW51bVByb3BlcnRpZXMpKSAmJiAhKChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRp
bk9yRnVuY3Rpb24pICYmIGRpZFJlaWZ5KSkKICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVz
LmFkZChlbnRyeS0+a2V5KCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTYxOCw3ICsxNjE4LDcg
QEAgdm9pZCBKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUoRXhlY1N0YXRl
KiBleGVjKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90
KHRoaXMpOwogICAgICAgICBmb3IgKEhhc2hUYWJsZTo6Q29uc3RJdGVyYXRvciBpdGVyID0gaGFz
aFRhYmxlLT5iZWdpbih2bSk7IGl0ZXIgIT0gaGFzaFRhYmxlLT5lbmQodm0pOyArK2l0ZXIpIHsK
LSAgICAgICAgICAgIGlmIChpdGVyLT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikKKyAgICAgICAg
ICAgIGlmIChpdGVyLT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikKICAgICAgICAg
ICAgICAgICBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhl
YygpLCAqaXRlciwgdGhpcywgSWRlbnRpZmllcigmdm0sIGl0ZXItPmtleSgpKSwgc2xvdCk7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0yMjM2LDYgKzIyMzYsMTYgQEAgdm9pZCBKU09iamVjdDo6cHV0
RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBjb24KICAgICBwdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgZnVuY3Rpb24sIGF0dHJpYnV0
ZXMpOwogfQogCit2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RCdWlsdGluRnVuY3Rpb24oVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3Bl
cnR5TmFtZSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpCit7CisgICAgU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJs
aWNOYW1lKCk7CisgICAgaWYgKCFuYW1lKQorICAgICAgICBuYW1lID0gdm0ucHJvcGVydHlOYW1l
cy0+YW5vbnltb3VzLmltcGwoKTsKKyAgICBBU1NFUlQobmFtZSk7CisgICAgSlNGdW5jdGlvbiog
ZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHN0YXRpY19j
YXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIGdsb2JhbE9iamVj
dCk7CisgICAgcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1dGVz
KTsKK30KKwogdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3Bl
cnR5TmFtZSYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVu
Y3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpCiB7CiAgICAgU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1l
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCAwMmIxMzdi
MzUwYzJmYTgzMjViZDNiOTY0NzExMmFiZTg3NmYzODNmLi5kZGU1OTdlZmZhZWMwZjFiOGQ0NGMy
OTExOTUwMzAxZjA2MDA3ZTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJCdXR0ZXJmbHkuaCIKICNpbmNsdWRl
ICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKLSNpbmNsdWRlICJDb21tb25J
ZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkNvcHlXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlICJE
ZWZlckdDLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgpAQCAtNTgxLDYgKzU4MCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHB1dERpcmVjdFVuZGVmaW5lZChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpIHsgbG9j
YXRpb25Gb3JPZmZzZXQob2Zmc2V0KS0+c2V0VW5kZWZpbmVkKCk7IH0KIAogICAgIHZvaWQgcHV0
RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5
TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2lj
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICB2b2lkIHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlv
bihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgRnVuY3Rpb25FeGVj
dXRhYmxlKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgdm9pZCBwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9w
ZXJ0eU5hbWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24sIEludHJp
bnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rv
ci5jcHAKaW5kZXggNDAyNjE5NjMzZmEwNmZkMjU0YjNmMmE3YThjYzcxZTgwN2FhZjkxMS4uMTdk
MmFiNjVhODhmZmIxM2ZhOWE2YzhmNTgzY2E4NDRhZjgzMjI0MiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcApAQCAt
MzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkpTUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAi
SlNQcm9taXNlRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlUHJvdG90eXBlLmgiCisj
aW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVk
ZSAiTnVtYmVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuY3BwCmlu
ZGV4IGNiYzQyZWI5ZmQ5MjMwZjQ2ZTZmODQ5ZmYxYTc5NTliZDEwNzliZWMuLjQyNzEwYzMwNTQ0
YTExYzc1NDdjM2NmODg4Yjk2YTQ4YzQ2OGEwNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlICJKU1Byb21pc2UuaCIKICNpbmNsdWRlICJKU1Byb21pc2VDb25zdHJ1Y3Rvci5o
IgogI2luY2x1ZGUgIkpTUHJvbWlzZUZ1bmN0aW9ucy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5s
aW5lcy5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlND
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90
b3R5cGUuY3BwCmluZGV4IDlkZjQ1NzgxN2NhODAzZDM3MzI4MjQyZmMzM2VjYTc0NWVkNDA0MzEu
LmU0Y2E1YTQ2ZDkxYmI4MDQyNGI4NjJlOTMyNDkyMzdiZmM1M2U3YWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmNwcApAQCAt
MzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkpTUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAi
SlNQcm9taXNlRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlUmVhY3Rpb24uaCIKKyNp
bmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJNaWNyb3Rhc2suaCIKICNpbmNs
dWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlYWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb21pc2VSZWFjdGlvbi5oCmluZGV4IGZjNzE0NmM1MGU4NDlkMzMwZDg5ZTYz
ZmMxOWNhNjQ5ZDNjMGU4NDguLjQyZDI0OTZhMWZjZGFiYmMxMWRjN2JiMjc3ZGQxMjNlMmE0ZGUy
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJl
YWN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUmVh
Y3Rpb24uaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBKU1Byb21pc2VSZWFjdGlvbl9oCiAK
ICNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNs
dWRlICJTdHJ1Y3R1cmUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCmluZGV4
IDY4YThiZDg3ZDM4YWRiYmI5ZGQyYWM5ZWM0YjQ5ZDVlZjQ1NDlkNTYuLjIzN2M0MmJiMGRhMGYx
NjY3NmViMTFhZGU4MTgwYTdiMDZkOThlYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCkBAIC0yOSw3ICsy
OSw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oIgogCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCmluZGV4IGY0MzYyZmYz
NTRlZTZhNTAyMjFiYjczMWQxYTI2MTFlNmRkNjFiYzAuLmQwNzM3MTlkZTE2MGQyZjI5MjExMGE1
OTZhMTA1ZTJmYTIxMTVmZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKQEAgLTMxLDcgKzMxLDYgQEAKIAogI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKLSNpbmNsdWRlICJPcGVy
YXRpb25zLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKICNpbmNsdWRlIDxtZW1v
cnk+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCmluZGV4IDJiMWNk
ZGRjNTg0MWQ2MGQxNTdhMmU2MWY3MDJiMGVlNWZhMWQ2NzYuLmUzOTM0MTYwYWVhOTI2ZWYxNTkz
MmY4NzkwZTI0YzUyYWYwMmQzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuaApAQCAtMjQsNyArMjQsNiBAQAogI2RlZmluZSBKU1N0cmluZ19oCiAKICNpbmNsdWRl
ICJDYWxsRnJhbWUuaCIKLSNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUg
IklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQcm9wZXJ0eURlc2NyaXB0b3IuaCIKICNpbmNsdWRl
ICJQcm9wZXJ0eVNsb3QuaCIKQEAgLTQ3MiwzMyArNDcxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgaW5saW5lIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBTdHJpbmcmIHMpIHsgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZygmZXhlYy0+dm0oKSwg
cyk7IH0KICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBTdHJpbmcmIHMpIHsgcmV0dXJuIGpzT3duZWRTdHJpbmcoJmV4ZWMtPnZtKCksIHMp
OyB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgSlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5
U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKLSAgICB7Ci0gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJv
cGVydHlOYW1lcygpLmxlbmd0aCkgewotICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBE
b250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSwganNOdW1iZXIobV9sZW5ndGgpKTsKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgdW5zaWduZWQgaSA9
IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7Ci0gICAgICAgIGlmIChpIDwgbV9sZW5ndGgpIHsKLSAg
ICAgICAgICAgIEFTU0VSVChpICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCk7IC8vIE5vIG5l
ZWQgZm9yIGFuIGV4cGxpY2l0IGNoZWNrLCB0aGUgYWJvdmUgdGVzdCB3b3VsZCBhbHdheXMgZmFp
bCEKLSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5
LCBnZXRJbmRleChleGVjLCBpKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
fQotCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgICAgICAgICAKLSAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgSlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQotICAgIHsK
LSAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA8IG1fbGVuZ3RoKSB7Ci0gICAgICAgICAgICBzbG90
LnNldFZhbHVlKHRoaXMsIERvbnREZWxldGUgfCBSZWFkT25seSwgZ2V0SW5kZXgoZXhlYywgcHJv
cGVydHlOYW1lKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KICAgICBpbmxpbmUgYm9vbCBpc0pTU3RyaW5nKEpT
VmFsdWUgdikgeyByZXR1cm4gdi5pc0NlbGwoKSAmJiB2LmFzQ2VsbCgpLT5jbGFzc0luZm8oKSA9
PSBKU1N0cmluZzo6aW5mbygpOyB9CiAKICAgICAvLyAtLS0gSlNWYWx1ZSBpbmxpbmVzIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTUyOCwzMiArNTAwLDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHJldHVybiB0b1dURlN0cmluZ1Nsb3dDYXNlKGV4ZWMpOwogICAgIH0KIAot
ICAgIEFMV0FZU19JTkxJTkUgU3RyaW5nIGlubGluZUpTVmFsdWVOb3RTdHJpbmd0b1N0cmluZyhj
b25zdCBKU1ZhbHVlJiB2YWx1ZSwgRXhlY1N0YXRlKiBleGVjKQotICAgIHsKLSAgICAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzSW50MzIoKSkKLSAgICAgICAg
ICAgIHJldHVybiB2bS5udW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNJbnQzMigpKTsKLSAgICAg
ICAgaWYgKHZhbHVlLmlzRG91YmxlKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0ubnVtZXJpY1N0
cmluZ3MuYWRkKHZhbHVlLmFzRG91YmxlKCkpOwotICAgICAgICBpZiAodmFsdWUuaXNUcnVlKCkp
Ci0gICAgICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+dHJ1ZUtleXdvcmQuc3RyaW5n
KCk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc0ZhbHNlKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0u
cHJvcGVydHlOYW1lcy0+ZmFsc2VLZXl3b3JkLnN0cmluZygpOwotICAgICAgICBpZiAodmFsdWUu
aXNOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+bnVsbEtleXdv
cmQuc3RyaW5nKCk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICAg
ICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQuc3RyaW5nKCk7Ci0g
ICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7Ci0gICAgfQot
Ci0gICAgQUxXQVlTX0lOTElORSBTdHJpbmcgSlNWYWx1ZTo6dG9XVEZTdHJpbmdJbmxpbmUoRXhl
Y1N0YXRlKiBleGVjKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGlzU3RyaW5nKCkpCi0gICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNTdHJpbmcqPihhc0NlbGwoKSktPnZhbHVlKGV4
ZWMpOwotCi0gICAgICAgIHJldHVybiBpbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcoKnRo
aXMsIGV4ZWMpOwotICAgIH0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBKU1N0
cmluZ19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Z0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSW5saW5l
cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM3OGMwNWZjODBkODhlODUzN2M5ZDJhNWVhYjlmZjBiYTliNjBhNzUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Z0lubGluZXMuaApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU1N0cmluZ0lubGluZXNfaAorI2RlZmlu
ZSBKU1N0cmluZ0lubGluZXNfaAorCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKKyNp
bmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitBTFdBWVNfSU5MSU5FIGJvb2wgSlNTdHJpbmc6OmdldFN0cmluZ1By
b3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5sZW5ndGgpIHsKKyAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RW51
bSB8IERvbnREZWxldGUgfCBSZWFkT25seSwganNOdW1iZXIobV9sZW5ndGgpKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUu
YXNJbmRleCgpOworICAgIGlmIChpIDwgbV9sZW5ndGgpIHsKKyAgICAgICAgQVNTRVJUKGkgIT0g
UHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTsgLy8gTm8gbmVlZCBmb3IgYW4gZXhwbGljaXQgY2hl
Y2ssIHRoZSBhYm92ZSB0ZXN0IHdvdWxkIGFsd2F5cyBmYWlsIQorICAgICAgICBzbG90LnNldFZh
bHVlKHRoaXMsIERvbnREZWxldGUgfCBSZWFkT25seSwgZ2V0SW5kZXgoZXhlYywgaSkpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCitB
TFdBWVNfSU5MSU5FIGJvb2wgSlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3Rh
dGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorewor
ICAgIGlmIChwcm9wZXJ0eU5hbWUgPCBtX2xlbmd0aCkgeworICAgICAgICBzbG90LnNldFZhbHVl
KHRoaXMsIERvbnREZWxldGUgfCBSZWFkT25seSwgZ2V0SW5kZXgoZXhlYywgcHJvcGVydHlOYW1l
KSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK0FMV0FZU19JTkxJTkUgU3RyaW5nIGlubGluZUpTVmFsdWVOb3RTdHJpbmd0b1N0cmlu
Zyhjb25zdCBKU1ZhbHVlJiB2YWx1ZSwgRXhlY1N0YXRlKiBleGVjKQoreworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgaWYgKHZhbHVlLmlzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIHZt
Lm51bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZS5hc0ludDMyKCkpOworICAgIGlmICh2YWx1ZS5pc0Rv
dWJsZSgpKQorICAgICAgICByZXR1cm4gdm0ubnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVlLmFzRG91
YmxlKCkpOworICAgIGlmICh2YWx1ZS5pc1RydWUoKSkKKyAgICAgICAgcmV0dXJuIHZtLnByb3Bl
cnR5TmFtZXMtPnRydWVLZXl3b3JkLnN0cmluZygpOworICAgIGlmICh2YWx1ZS5pc0ZhbHNlKCkp
CisgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5mYWxzZUtleXdvcmQuc3RyaW5nKCk7
CisgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1l
cy0+bnVsbEtleXdvcmQuc3RyaW5nKCk7CisgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkKCkpCisg
ICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLnN0cmluZygp
OworICAgIHJldHVybiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7Cit9CisgICAg
CitBTFdBWVNfSU5MSU5FIFN0cmluZyBKU1ZhbHVlOjp0b1dURlN0cmluZ0lubGluZShFeGVjU3Rh
dGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgaWYgKGlzU3RyaW5nKCkpCisgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxKU1N0cmluZyo+KGFzQ2VsbCgpKS0+dmFsdWUoZXhlYyk7CisgICAgCisgICAg
cmV0dXJuIGlubGluZUpTVmFsdWVOb3RTdHJpbmd0b1N0cmluZygqdGhpcywgZXhlYyk7Cit9CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N5bWJvbFRhYmxlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3ltYm9sVGFibGVPYmplY3QuY3BwCmluZGV4IDJhYzI1MjRjNWRmZGEzZDEyMjQ5ZDc3OTBhZGMz
MTI5ZTNjMGU4NzEuLmZiYzhiODk1ZWFlNmFmNzg4ODM5YmViNWU4M2Q3YjZiOTc5MjhmYWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVP
YmplY3QuY3BwCkBAIC02NCw2ICs2NCw4IEBAIHZvaWQgSlNTeW1ib2xUYWJsZU9iamVjdDo6Z2V0
T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0CiAgICAg
ICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCkt
Pm1fbG9jayk7CiAgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGVuZCA9IHRoaXNP
YmplY3QtPnN5bWJvbFRhYmxlKCktPmVuZChsb2NrZXIpOwogICAgICAgICBmb3IgKFN5bWJvbFRh
YmxlOjpNYXA6Oml0ZXJhdG9yIGl0ID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+YmVnaW4o
bG9ja2VyKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBpZiAoaXQtPmtleS0+aXNF
bXB0eVVuaXF1ZSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYg
KCEoaXQtPnZhbHVlLmdldEF0dHJpYnV0ZXMoKSAmIERvbnRFbnVtKSB8fCAobW9kZSA9PSBJbmNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkKICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFk
ZChJZGVudGlmaWVyKGV4ZWMsIGl0LT5rZXkuZ2V0KCkpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCmluZGV4
IGI1YjIwYTg0NWI2YWI2NDQyNGIzN2UzMWIyNzc0ZWY5MDUzNTNmN2YuLmQwM2IyNDUxMWMyZGUx
OTU5ZmI1ZjU2ZDY0OWM2NGQwZWZlMDY4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKQEAgLTcyLDcgKzcyLDcgQEAgaW5s
aW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiB7CiAgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxl
ID0gKm9iamVjdC0+c3ltYm9sVGFibGUoKTsKICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tl
cihzeW1ib2xUYWJsZS5tX2xvY2spOwotICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0
ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7
CisgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQo
bG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxl
LmVuZChsb2NrZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgU3ltYm9sVGFibGVFbnRy
eTo6RmFzdCBlbnRyeSA9IGl0ZXItPnZhbHVlOwpAQCAtODcsNyArODcsNyBAQCBpbmxpbmUgYm9v
bCBzeW1ib2xUYWJsZUdldCgKIHsKICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2Jq
ZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJv
bFRhYmxlLm1fbG9jayk7Ci0gICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5
bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBT
eW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIs
IHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxv
Y2tlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0
IGVudHJ5ID0gaXRlci0+dmFsdWU7CkBAIC0xMDQsNyArMTA0LDcgQEAgaW5saW5lIGJvb2wgc3lt
Ym9sVGFibGVHZXQoCiB7CiAgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gKm9iamVjdC0+
c3ltYm9sVGFibGUoKTsKICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJs
ZS5tX2xvY2spOwotICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xU
YWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9s
VGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9w
ZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBlbnRy
eSA9IGl0ZXItPnZhbHVlOwpAQCAtMTI2LDcgKzEyNiw3IEBAIGlubGluZSBib29sIHN5bWJvbFRh
YmxlUHV0KAogICAgIHsKICAgICAgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gKm9iamVj
dC0+c3ltYm9sVGFibGUoKTsKICAgICAgICAgR0NTYWZlQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIoc3ltYm9sVGFibGUubV9sb2NrLCBleGVjLT52bSgpLmhlYXApOwotICAgICAgICBTeW1ib2xU
YWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3Bl
cnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRv
ciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAg
ICAgICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBib29sIHdhc0ZhdDsKQEAgLTE1OSw3ICsxNTksNyBAQCBp
bmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKAogICAgIHsKICAgICAgICAg
U3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9sVGFibGUoKTsKICAgICAg
ICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICAg
ICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9j
a2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICAgICAgU3ltYm9sVGFibGU6Ok1h
cDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUu
dWlkKCkpOwogICAgICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSYgZW50cnkg
PSBpdGVyLT52YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0xvb2t1cC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCmlu
ZGV4IGE4MDZkZDA1MmEwY2JlZTRjYWMyY2FhNmUwOGM2NzE2MDA1YzI3MGMuLmE5NzY1MjAxYjlm
NTE4NjQxNDIzZGRlMGZlMGUyZTUxYThjZTczYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTG9va3VwLmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIEhhc2hUYWJsZTo6ZGVsZXRl
VGFibGUoKSBjb25zdAogYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0KiB0aGlzT2JqLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgQVNTRVJUKHRoaXNP
YmotPmdsb2JhbE9iamVjdCgpKTsKLSAgICBBU1NFUlQoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEZ1
bmN0aW9uKTsKKyAgICBBU1NFUlQoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0
aW9uKTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7
CiAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gdGhpc09iai0+Z2V0RGlyZWN0T2Zmc2V0KHZt
LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwpAQCAtNzksOSArNzksMTMgQEAgYm9vbCBzZXRV
cFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50
cnksIEpTT2JqZWN0KgogICAgICAgICBpZiAodGhpc09iai0+c3RhdGljRnVuY3Rpb25zUmVpZmll
ZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgICAgICB0aGlzT2JqLT5w
dXREaXJlY3ROYXRpdmVGdW5jdGlvbigKLSAgICAgICAgICAgIHZtLCB0aGlzT2JqLT5nbG9iYWxP
YmplY3QoKSwgcHJvcGVydHlOYW1lLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSwKLSAgICAgICAg
ICAgIGVudHJ5LT5mdW5jdGlvbigpLCBlbnRyeS0+aW50cmluc2ljKCksIGVudHJ5LT5hdHRyaWJ1
dGVzKCkpOworICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW4pCisgICAg
ICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3RCdWlsdGluRnVuY3Rpb24odm0sIHRoaXNPYmotPmds
b2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5idWlsdGluR2VuZXJhdG9yKCkodm0p
LCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aGlz
T2JqLT5wdXREaXJlY3ROYXRpdmVGdW5jdGlvbigKKyAgICAgICAgICAgICAgICB2bSwgdGhpc09i
ai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZW50cnktPmZ1bmN0aW9uTGVuZ3RoKCks
CisgICAgICAgICAgICAgICAgZW50cnktPmZ1bmN0aW9uKCksIGVudHJ5LT5pbnRyaW5zaWMoKSwg
ZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAgICAgIH0KICAgICAgICAgb2Zmc2V0ID0gdGhpc09i
ai0+Z2V0RGlyZWN0T2Zmc2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwogICAgICAg
ICBBU1NFUlQoaXNWYWxpZE9mZnNldChvZmZzZXQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0xvb2t1cC5oCmluZGV4IGJkZTgzZDRhNmZjMzU1Nzc4NTBlMzFlODhiYzM5ZmQw
NWY3YmNlNTIuLmRiYTM4OWU5ZTI0M2RkMGVjYjJiYTk4ZjM5NGQ0MDc5ZjlkZWE5MzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIC8vIGllLiB0eXBlZGVmIEpTVmFsdWUgKCpHZXRGdW5jdGlvbikoRXhl
Y1N0YXRlKiwgSlNPYmplY3QqIGJhc2VPYmplY3QpCiAgICAgdHlwZWRlZiBQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYyBHZXRGdW5jdGlvbjsKICAgICB0eXBlZGVmIFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jIFB1dEZ1bmN0aW9uOworICAgIHR5cGVkZWYgRnVuY3Rpb25FeGVjdXRhYmxl
KiAoKkJ1aWx0aW5HZW5lcmF0b3IpKFZNJik7CiAKICAgICBjbGFzcyBIYXNoRW50cnkgewogICAg
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTY4LDExICs2OSwxMiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2ludHJpbnNpYzsKICAgICAgICAgfQogCisg
ICAgICAgIEJ1aWx0aW5HZW5lcmF0b3IgYnVpbHRpbkdlbmVyYXRvcigpIGNvbnN0IHsgQVNTRVJU
KG1fYXR0cmlidXRlcyAmIEJ1aWx0aW4pOyByZXR1cm4gbV91LmJ1aWx0aW5HZW5lcmF0b3IuZ2Vu
ZXJhdG9yVmFsdWU7IH0KICAgICAgICAgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24oKSBjb25zdCB7
IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBGdW5jdGlvbik7IHJldHVybiBtX3UuZnVuY3Rpb24uZnVu
Y3Rpb25WYWx1ZTsgfQogICAgICAgICB1bnNpZ25lZCBjaGFyIGZ1bmN0aW9uTGVuZ3RoKCkgY29u
c3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pOyByZXR1cm4gc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcj4obV91LmZ1bmN0aW9uLmxlbmd0aCk7IH0KIAotICAgICAgICBHZXRGdW5j
dGlvbiBwcm9wZXJ0eUdldHRlcigpIGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1dGVzICYgRnVu
Y3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0eS5nZXQ7IH0KLSAgICAgICAgUHV0RnVuY3Rpb24g
cHJvcGVydHlQdXR0ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9u
KSk7IHJldHVybiBtX3UucHJvcGVydHkucHV0OyB9CisgICAgICAgIEdldEZ1bmN0aW9uIHByb3Bl
cnR5R2V0dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBCdWlsdGluT3JGdW5j
dGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5LmdldDsgfQorICAgICAgICBQdXRGdW5jdGlvbiBw
cm9wZXJ0eVB1dHRlcigpIGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1dGVzICYgQnVpbHRpbk9y
RnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0eS5wdXQ7IH0KIAogICAgICAgICBpbnRwdHJf
dCBsZXhlclZhbHVlKCkgY29uc3QgeyBBU1NFUlQoIW1fYXR0cmlidXRlcyk7IHJldHVybiBtX3Uu
bGV4ZXIudmFsdWU7IH0KIApAQCAtOTQsNiArOTYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICAgICAgaW50cHRyX3QgbGVuZ3RoOyAvLyBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBm
dW5jdGlvbgogICAgICAgICAgICAgfSBmdW5jdGlvbjsKICAgICAgICAgICAgIHN0cnVjdCB7Cisg
ICAgICAgICAgICAgICAgQnVpbHRpbkdlbmVyYXRvciBnZW5lcmF0b3JWYWx1ZTsKKyAgICAgICAg
ICAgICAgICBpbnRwdHJfdCB1bnVzZWQ7CisgICAgICAgICAgICB9IGJ1aWx0aW5HZW5lcmF0b3I7
CisgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgIEdldEZ1bmN0aW9uIGdldDsK
ICAgICAgICAgICAgICAgICBQdXRGdW5jdGlvbiBwdXQ7CiAgICAgICAgICAgICB9IHByb3BlcnR5
OwpAQCAtMjA5LDcgKzIxNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAg
ICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSGFzaEVudHJ5KiBlbnRyeShQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICBTdHJpbmdJbXBsKiBpbXBs
ID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKTsKKyAgICAgICAgICAgIFN0cmluZ0ltcGwqIGlt
cGwgPSBwcm9wZXJ0eU5hbWUudWlkKCk7CiAgICAgICAgICAgICBpZiAoIWltcGwpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIApAQCAtMjQ5LDcgKzI1NSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBpZiAoIWVudHJ5KSAvLyBub3QgZm91bmQsIGZvcndhcmQgdG8gcGFy
ZW50CiAgICAgICAgICAgICByZXR1cm4gUGFyZW50SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhp
c09iaiwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIAotICAgICAgICBpZiAoZW50cnktPmF0
dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKQorICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAm
IEJ1aWx0aW5PckZ1bmN0aW9uKQogICAgICAgICAgICAgcmV0dXJuIHNldFVwU3RhdGljRnVuY3Rp
b25TbG90KGV4ZWMsIGVudHJ5LCB0aGlzT2JqLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCiAgICAg
ICAgIHNsb3Quc2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXNPYmosIGVudHJ5LT5hdHRyaWJ1dGVzKCks
IGVudHJ5LT5wcm9wZXJ0eUdldHRlcigpKTsKQEAgLTI4Niw3ICsyOTIsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgaWYgKCFlbnRyeSkgLy8gbm90IGZvdW5kLCBmb3J3YXJkIHRvIHBhcmVu
dAogICAgICAgICAgICAgcmV0dXJuIFBhcmVudEltcDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNP
YmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKLSAgICAgICAgQVNTRVJUKCEoZW50cnkt
PmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKSk7CisgICAgICAgIEFTU0VSVCghKGVudHJ5LT5hdHRy
aWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikpOwogCiAgICAgICAgIHNsb3Quc2V0Q2FjaGVh
YmxlQ3VzdG9tKHRoaXNPYmosIGVudHJ5LT5hdHRyaWJ1dGVzKCksIGVudHJ5LT5wcm9wZXJ0eUdl
dHRlcigpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yOTUsNyArMzAxLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgaW5saW5lIHZvaWQgcHV0RW50cnkoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCogYmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogICAgIHsKICAgICAg
ICAgLy8gSWYgdGhpcyBpcyBhIGZ1bmN0aW9uIHB1dCBpdCBhcyBhbiBvdmVycmlkZSBwcm9wZXJ0
eS4KLSAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikgeworICAgICAg
ICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSB7CiAgICAgICAg
ICAgICBpZiAoSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4o
c2xvdC50aGlzVmFsdWUoKSkpCiAgICAgICAgICAgICAgICAgdGhpc09iamVjdC0+cHV0RGlyZWN0
KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUpOwogICAgICAgICB9IGVsc2UgaWYgKCEo
ZW50cnktPmF0dHJpYnV0ZXMoKSAmIFJlYWRPbmx5KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAppbmRleCBk
NWU3MjhjMmNkMTAyMGE0N2U0YWRjZDY0OWNkMWZmZmE1Y2Q2YTgzLi5kY2EyZmQ4ZDFmNmFjMjNi
OGZmODE3Y2JiMThmYWFlN2JjZDU5NzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtMzgsNiArMzgs
MjAgQEAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogfQogCit2b2lkIE5hdGl2ZUVycm9yQ29uc3Ry
dWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sK
KyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgbmFtZSk7CisgICAgQVNTRVJUKGluaGVyaXRz
KGluZm8oKSkpOworICAgIAorICAgIE5hdGl2ZUVycm9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBO
YXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZVN0
cnVjdHVyZSwgbmFtZSwgdGhpcyk7CisgICAgCisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250
RW51bSk7IC8vIEVDTUEgMTUuMTEuNy41CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVu
dW0pOworICAgIG1fZXJyb3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBFcnJvckluc3RhbmNlOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlKSk7CisgICAgQVNTRVJU
KG1fZXJyb3JTdHJ1Y3R1cmUpOworICAgIEFTU0VSVChtX2Vycm9yU3RydWN0dXJlLT5pc09iamVj
dCgpKTsKK30KKwogdm9pZCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgTmF0aXZlRXJyb3JDb25z
dHJ1Y3RvciogdGhpc09iamVjdCA9IGpzQ2FzdDxOYXRpdmVFcnJvckNvbnN0cnVjdG9yKj4oY2Vs
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJv
ckNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJv
ckNvbnN0cnVjdG9yLmgKaW5kZXggNzQwZDNmOTMzMjkyZmQyYWNjYjRiOTkwMzQ0MzEyYjkzMTlh
ZTExMC4uNDM4YTNhZmI5YmIwZjY0MTJjOTc5MzIyMzBjODg3MTA5NjFmNTQ2NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0
b3IuaApAQCAtNTEsMTkgKzUxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0cnVjdHVy
ZSogZXJyb3JTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2Vycm9yU3RydWN0dXJlLmdldCgpOyB9CiAK
ICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwg
Y29uc3QgU3RyaW5nJiBuYW1lKQotICAgICAgICB7Ci0gICAgICAgICAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSwgbmFtZSk7Ci0gICAgICAgICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7
Ci0KLSAgICAgICAgICAgIE5hdGl2ZUVycm9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBOYXRpdmVF
cnJvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZVN0cnVjdHVy
ZSwgbmFtZSwgdGhpcyk7Ci0KLSAgICAgICAgICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVu
dW0pOyAvLyBFQ01BIDE1LjExLjcuNQotICAgICAgICAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwg
RG9udEVudW0pOwotICAgICAgICAgICAgbV9lcnJvclN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEVy
cm9ySW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUp
KTsKLSAgICAgICAgICAgIEFTU0VSVChtX2Vycm9yU3RydWN0dXJlKTsKLSAgICAgICAgICAgIEFT
U0VSVChtX2Vycm9yU3RydWN0dXJlLT5pc09iamVjdCgpKTsKLSAgICAgICAgfQorICAgICAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHByb3Rv
dHlwZVN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKaW5kZXggZDkzOGZhMzE2NDVhZjI2
Yjc1ODUxNGRiNmIyNDc4ZjE4M2U5ZWVlMS4uY2ZlOWM0ZDMyYmE3NjhjNzRlNGZmYmIxOTEzNTI3
OWRlYmYxMTc2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlTbG90LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlT
bG90LmgKQEAgLTQyLDYgKzQyLDggQEAgZW51bSBBdHRyaWJ1dGUgewogICAgIEZ1bmN0aW9uICAg
ICA9IDEgPDwgNCwgIC8vIHByb3BlcnR5IGlzIGEgZnVuY3Rpb24gLSBvbmx5IHVzZWQgYnkgc3Rh
dGljIGhhc2h0YWJsZXMKICAgICBBY2Nlc3NvciAgICAgPSAxIDw8IDUsICAvLyBwcm9wZXJ0eSBp
cyBhIGdldHRlci9zZXR0ZXIKICAgICBDdXN0b21BY2Nlc3NvciA9IDEgPDwgNiwKKyAgICBCdWls
dGluICAgICAgICAgPSAxIDw8IDcsIC8vIHByb3BlcnR5IGlzIGEgYnVpbHRpbiBmdW5jdGlvbiAt
IG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcworICAgIEJ1aWx0aW5PckZ1bmN0aW9uID0g
QnVpbHRpbiB8IEZ1bmN0aW9uLCAvLyBoZWxwZXIgb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFi
bGVzCiB9OwogCiBjbGFzcyBQcm9wZXJ0eVNsb3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCmluZGV4IGJjNTE2YjA2ZDY2NTFm
MGU2ODJhMjAxN2JkZjhiMDNiYWJlZDZlYTIuLjJjMjQzNGI4N2QwNGY3NDljYjEyZTYwMmFiNTQ3
ODQ5NDZhOTFmMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBDb25zdHJ1Y3Rvci5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJSZWdFeHBD
b25zdHJ1Y3Rvci5oIgogCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lu
bGluZXMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUmVnRXhwTWF0Y2hl
c0FycmF5LmgiCiAjaW5jbHVkZSAiUmVnRXhwUHJvdG90eXBlLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAppbmRleCA4OWQ3YWMxYjhj
YmYxZGIwZTEyNmYxZmM3OTZkZmQ1ZmM4NGIyZTU5Li45ZGRhMGJhOGRlMTQxMmVhZjRkMjkxZGNm
MGM2YjM5NjU3ZmI2NzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cFByb3RvdHlwZS5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJBcnJheVBy
b3RvdHlwZS5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgotI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpT
U3RyaW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1
Y3Rvci5jcHAKaW5kZXggYjIwMzg4OGQzYzE2Y2RhM2MwMDM1MDYyMDhhZTA4Njk1ZGM1ZGFhYS4u
ZDAyNjZhNTllZjNmNTVhYTM2OTRmNWY3NDE4Y2Y3OGUwYWUwZDhiMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dC5oIgogI2luY2x1ZGUgIkpTU2V0LmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiTWFwRGF0YS5oIgogI2luY2x1ZGUgIlNldFByb3RvdHlwZS5oIgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAppbmRleCA0NDBhNjA5
NDIxOTMzODAzMWU1OTI3YWY0NmIyODlkYmNmYjVhNzI4Li44MGU3ZWFhOGM0OTFjYjZkNTRhODMy
NGNlNjQ3YTZjZGI3ZTg4NzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ09iamVjdC5jcHAKQEAgLTIyLDcgKzIyLDkgQEAKICNpbmNsdWRlICJTdHJpbmdPYmpl
Y3QuaCIKIAogI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5l
cy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJh
eS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRl
eCAwNDI5MWY3ZThkZDI0ZThhYjMzZDc1YWYxZGE0NTY4ZjJiYzk5ZTY4Li4xZWNhYjg1YzBiZGIy
ODY5ODk0NTc3YTc0MTI1NGUzNjQ0MTQ5ZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTI3LDEyICsyNywxOCBAQAogI2luY2x1ZGUgIlN0cnVj
dHVyZS5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRp
ZmllcnMuaCIKICNpbmNsdWRlICJEdW1wQ29udGV4dC5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGlu
ZXMuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRl
cmF0b3IuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJMb29rdXAu
aCIKKyNpbmNsdWRlICJQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5
TmFtZUFycmF5LmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
U3RydWN0dXJlQ2hhaW4uaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRl
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA1MmNjZjQyM2ExMDQzZTEwNzlmMmQ4YjE4OTQyMTk4
OTBlNzFmMmJjLi4wMjA2OTVmYWM4M2VkNGU1MTg1YjcwZTY5Njk5NjNhMmRlOWEzNjcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiQXJnTGlzdC5oIgogI2luY2x1ZGUgIkFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmgiCiAj
aW5jbHVkZSAiQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgiCisjaW5jbHVkZSAiQnVp
bHRpbkV4ZWN1dGFibGVzLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lSW5saW5lcy5oIgogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVDYWNoZS5oIgpAQCAtNTUsNyArNTYsOSBA
QAogI2luY2x1ZGUgIkpTQVBJVmFsdWVXcmFwcGVyLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9u
LmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgotI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNs
dWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNp
bmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVu
Y3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIK
QEAgLTY4LDEzICs3MSwxNiBAQAogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk1hcERh
dGEuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgorI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUg
IlBhcnNlckFyZW5hLmgiCisjaW5jbHVkZSAiUHJvcGVydHlNYXBIYXNoVGFibGUuaCIKICNpbmNs
dWRlICJSZWdFeHBDYWNoZS5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUg
IlNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU291cmNlUHJvdmlkZXJD
YWNoZS5oIgogI2luY2x1ZGUgIlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiU3Ry
b25nSW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJV
bmxpbmtlZENvZGVCbG9jay5oIgogI2luY2x1ZGUgIldlYWtNYXBEYXRhLmgiCiAjaW5jbHVkZSA8
d3RmL1Byb2Nlc3NJRC5oPgpAQCAtMjI2LDYgKzIzMiw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBl
LCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1faW5EZWZpbmVPd25Qcm9wZXJ0eShmYWxzZSkK
ICAgICAsIG1fY29kZUNhY2hlKENvZGVDYWNoZTo6Y3JlYXRlKCkpCiAgICAgLCBtX2VuYWJsZWRQ
cm9maWxlcihudWxscHRyKQorICAgICwgbV9idWlsdGluRXhlY3V0YWJsZXMoQnVpbHRpbkV4ZWN1
dGFibGVzOjpjcmVhdGUoKnRoaXMpKQogewogICAgIGludGVycHJldGVyID0gbmV3IEludGVycHJl
dGVyKCp0aGlzKTsKICAgICBTdGFja0JvdW5kcyBzdGFjayA9IHd0ZlRocmVhZERhdGEoKS5zdGFj
aygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggNWE4NDEwNWVhZmI3YWJiYTVm
YTQzMWVlZWRkNTVkN2E4OWY1NWNlMi4uNjk1OGFjMzkzYjFhZWZjMGJlZmJmNmU0ZWI4YjY4MjVj
ZjdjOWEwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC00NCw2ICs0NCw3IEBA
CiAjaW5jbHVkZSAiUHJpdmF0ZU5hbWUuaCIKICNpbmNsdWRlICJQcm90b3R5cGVNYXAuaCIKICNp
bmNsdWRlICJTbWFsbFN0cmluZ3MuaCIKKyNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCiAjaW5jbHVk
ZSAiU3Ryb25nLmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAjaW5jbHVkZSAiVHlw
ZWRBcnJheUNvbnRyb2xsZXIuaCIKQEAgLTY5LDYgKzcwLDcgQEAKIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3M7CisgICAgY2xhc3MgQnVpbHRp
bkV4ZWN1dGFibGVzOwogICAgIGNsYXNzIENvZGVCbG9jazsKICAgICBjbGFzcyBDb2RlQ2FjaGU7
CiAgICAgY2xhc3MgQ29tbW9uSWRlbnRpZmllcnM7CkBAIC00OTcsNiArNDk5LDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcmVnaXN0ZXJXYXRjaHBvaW50Rm9ySW1wdXJlUHJvcGVy
dHkoY29uc3QgSWRlbnRpZmllciYsIFdhdGNocG9pbnQqKTsKICAgICAgICAgLy8gRklYTUU6IFVz
ZSBBdG9taWNTdHJpbmcgb25jZSBpdCBnb3QgbWVyZ2VkIHdpdGggSWRlbnRpZmllci4KICAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRJbXB1cmVQcm9wZXJ0eShjb25zdCBTdHJpbmcm
KTsKKyAgICAgICAgCisgICAgICAgIEJ1aWx0aW5FeGVjdXRhYmxlcyogYnVpbHRpbkV4ZWN1dGFi
bGVzKCkgeyByZXR1cm4gbV9idWlsdGluRXhlY3V0YWJsZXMuZ2V0KCk7IH0KIAogICAgIHByaXZh
dGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CkBAIC01Mzcs
MTAgKzU0MSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU1ZhbHVlIG1fZXhjZXB0aW9u
OwogICAgICAgICBib29sIG1faW5EZWZpbmVPd25Qcm9wZXJ0eTsKICAgICAgICAgT3duUHRyPENv
ZGVDYWNoZT4gbV9jb2RlQ2FjaGU7Ci0gICAgICAgIFJlZkNvdW50ZWRBcnJheTxTdGFja0ZyYW1l
PiBtX2V4Y2VwdGlvblN0YWNrOwotCiAgICAgICAgIExlZ2FjeVByb2ZpbGVyKiBtX2VuYWJsZWRQ
cm9maWxlcjsKLQorICAgICAgICBPd25QdHI8QnVpbHRpbkV4ZWN1dGFibGVzPiBtX2J1aWx0aW5F
eGVjdXRhYmxlczsKKyAgICAgICAgUmVmQ291bnRlZEFycmF5PFN0YWNrRnJhbWU+IG1fZXhjZXB0
aW9uU3RhY2s7CiAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8V2F0Y2hwb2ludFNldD4+
IG1faW1wdXJlUHJvcGVydHlXYXRjaHBvaW50U2V0czsKICAgICB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDdjYzY0ODM2YTUwNTEzZDhhZjI4MzllMTJkZDdiODRmNTg1NmIzZDUuLmY2ZGU2
OTM3MzBhMTc0M2EyNDM2NjQxMmYwMTRlODc3OWE3ODE3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC0xMDEsNiArMTAxLDcgQEAgc2V0KFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAg
ICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vQVBJIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
YXNzZW1ibGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0ZWNvZGUiCisgICAgIiR7
SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucyIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L2J5dGVjb21waWxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2RmZyIKICAgICAiJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L2Rpc2Fzc2VtYmxlciIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjcwZmNjMzg0ZThlZGZjMzRiMTQwODNiODY1ZDM3MzgyMGY0MTY1YzQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTU3Ry
aW5nSW5saW5lcy5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9KU1N0cmlu
Z0lubGluZXNfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9KU1N0cmluZ0lubGluZXNfaAorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nSW5saW5lcy5oPgorI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJl
cGxhY2VtZW50LmNwcAppbmRleCAyZWRkY2RiYjlmMDA2Y2E3NjI2NjUwYjQyMDI3ODYyNmI5MjYx
NDE3Li4zYzRlMGQ3YmJiMzFjYWIxMmI1ZTZjOTc1Yzc0ZDNmNDg0ZTljYjE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudC5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZUlubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU1N0cmluZ0lubGluZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwCmluZGV4IDU2
NDljODVjYTA5NTg3NzQ4YTNkYTA2Y2RkZDBjYTk5OWU1MGI4ZTcuLjNmNGQ4ZWZhZWI1N2YzMzAw
M2U3M2E3ZTc4NDJlNDJjNzNjZTY0OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0lEQkFueUN1c3RvbS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJKU0lEQk9i
amVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSlNJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVz
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAKaW5kZXggOWVhZTc1NjljNzA2MDNhNGZl
ZDBhZjE0YzRmODcxOGNkZTY0YTZlMS4uZjQ5ZGZlOTBiNGU4MmQzOWVkY2JmOWJhMjlmMmFlNzk5
YzBkZGYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRh
YmFzZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRh
YmFzZUN1c3RvbS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJJREJPYmplY3RTdG9y
ZS5oIgogI2luY2x1ZGUgIkpTSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vy
cm9yLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUv
SlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAKaW5k
ZXggNzRmZDM1NGIyODYwN2NmNzgyMmY4MDUzNDc5NzBmNWQ3YWM4YzgzMi4uNTQzNGIzYjdkNmM1
NmVjYjBhMDNhMjc5NGM2NzM2YTlhZGZiNzBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNJREJPYmplY3RTdG9yZUN1c3RvbS5jcHAKQEAgLTM2LDcgKzM2LDcg
QEAKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIkpTSURCSW5kZXguaCIK
ICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5o
PgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZp
bHRlckNvbmRpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0
ZXJDb25kaXRpb24uY3BwCmluZGV4IGQxYjQ3MjEzNTFlYjFiMmJmOGNlMGNkNDczZmVlMTQ0OTE0
YzUzYWIuLmYxZGFhOGExMDQ2YjMzZmEzZDM1YTY2YzU1OWVlMGZhZjJhZGU2NDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNw
cApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIk5vZGVGaWx0ZXIuaCIKICNpbmNsdWRlIDxy
dW50aW1lL0Vycm9yLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KKyNpbmNsdWRlIDxy
dW50aW1lL0pTU3RyaW5nSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtl
TGlzdHMudHh0CmluZGV4IGZiNGFkOTUxODBkOGU1OTM3ODJmOGJlYTRhODlmYmU0MzM5ZjllNTYu
LjFiODRmMmI2OGRiMzAzY2QxOGIzNzgwNjQ2MDI1NmQxN2NhNzExZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3Rz
LnR4dApAQCAtNjYsNiArNjYsNyBAQCBzZXQoV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKICAg
ICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L0FQSSIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L2Fzc2VtYmxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J5dGVjb2RlIgorICAgICIk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElS
fS9ieXRlY29tcGlsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9kaXNhc3NlbWJsZXIi
CiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9kZmciCkBAIC03OCw2ICs3OSw3IEBAIHNldChX
ZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcHJv
ZmlsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9ydW50aW1lIgogICAgICIke1dURl9E
SVJ9IgorICAgICIke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9IgogICAgICIk
e0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0iCiAgICAgIiR7REVSSVZFRF9TT1VSQ0VTX0RJ
Un0vRm9yd2FyZGluZ0hlYWRlcnMiCiAgICAgIiR7Q01BS0VfQklOQVJZX0RJUn0iCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtl
TGlzdHMudHh0CmluZGV4IDY3MTgxYzg0ZmZiMTYxNTNmNmMzZTQ4OTg1ZjA5M2VlYjQ4NWFlOGMu
LmRmOGYxMmUzMmUyOGNhNGMzN2Q1MzY4MWMzMWI3MDA1ZGJlZTM1MWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlz
dHMudHh0CkBAIC0xMjEsNiArMTIxLDcgQEAgc2V0KFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklF
UwogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vQVBJIgogICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vYXNzZW1ibGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0ZWNvZGUiCisg
ICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucyIKICAgICAiJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9L2J5dGVjb21waWxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2NvbGxlY3Rv
ci9oYW5kbGVzIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGZnIgpAQCAtMTMzLDYgKzEz
NCw3IEBAIHNldChXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L3J1bnRpbWUiCiAgICAgIiR7V1RGX0RJUn0iCiAgICAgIiR7REVSSVZFRF9TT1VS
Q0VTX0RJUn0iCisgICAgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iCiAg
ICAgIiR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfSIKICAgICAiJHtERVJJVkVEX1NPVVJD
RVNfV0VCS0lUMl9ESVJ9IgogICAgICIke0RFUklWRURfU09VUkNFU19XRUJLSVQyX0RJUn0vaW5j
bHVkZSIKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9ndGVzdC9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9jbWFrZS9ndGVzdC9DTWFrZUxpc3RzLnR4dAppbmRleCA1NmJmNDQ3ODI1MTg2ODc2ZjI1
NzExODYwOWY0MzUyMTgzNGVjOTU5Li43ZjUyMWE4OThiODlkOGRlYjMwOWM2ZTBmYmEwOGEzM2Y2
NWViNWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvZ3Rlc3QvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL2NtYWtlL2d0ZXN0L0NNYWtlTGlzdHMudHh0CkBAIC02LDYgKzYsNyBAQAogaW5j
bHVkZV9kaXJlY3Rvcmllcygke1RISVJEUEFSVFlfRElSfS9ndGVzdAogICAgICR7VEhJUkRQQVJU
WV9ESVJ9L2d0ZXN0L2luY2x1ZGUKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0KKyAgICAke0RF
UklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9CiAgICAgJHtXVEZfRElSfQogKQogCmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0NNYWtlTGlzdHMudHh0CmluZGV4IDdiOGFhMTg0OTZhYjE5N2M2ZDhkZTkz
YTFiN2I5ZTQ0MzgwOWJiZjEuLjU0OWNkNDA1MTQyMjhmOTI3M2YwOGRhMGNlY2QwODg2ZTc2NmVi
ZTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0NNYWtlTGlzdHMudHh0CkBAIC01OCw2ICs1OCw3IEBAIHNl
dChEdW1wUmVuZGVyVHJlZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9L3Byb2ZpbGVyCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3J1bnRpbWUKICAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMKKyAgICAke0RFUklWRURfU09V
UkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9CiAgICAgJHtUT09MU19ESVJ9L0R1bXBSZW5kZXJUcmVl
CiAgICAgJHtXVEZfRElSfQogICAgICR7Q01BS0VfU09VUkNFX0RJUn0vU291cmNlCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dAppbmRleCA1YTM0NmQ3NDA1M2QxNTk1MjMzMTBhZDk2
ZjI3MDZhZWI0NzUwMzllLi5jYjRiMTkxODEzNzA4Y2E0YTJhNzhkNzMyNzgxNjY3ODA1MTRjMjkz
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0CisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQKQEAgLTI4LDYgKzI4LDcgQEAg
c2V0KFdlYktpdFRlc3RSdW5uZXJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICR7V0VCS0lUX1RF
U1RSVU5ORVJfRElSfS9JbmplY3RlZEJ1bmRsZS9hdGsKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0KICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMKKyAgICAke0RF
UklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9CiAgICAgJHtXRUJDT1JFX0RJUn0vZWRp
dGluZwogICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtCiAgICAgJHtXRUJDT1JFX0RJUn0vcGxh
dGZvcm0vZ3JhcGhpY3MKZGlmZiAtLWdpdCBhL1Rvb2xzL1dpbkNFTGF1bmNoZXIvQ01ha2VMaXN0
cy50eHQgYi9Ub29scy9XaW5DRUxhdW5jaGVyL0NNYWtlTGlzdHMudHh0CmluZGV4IDkxNGJiMmJk
Yzk2YjBiNThlNThmMmYzZTViMzM2M2Y4ZDM0ZjMzNWQuLmIxOWZjNjFkNDA0NTc0MzU4OTEzNmE4
ZjBlMWViYzViMGFhMjkxZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dpbkNFTGF1bmNoZXIvQ01ha2VM
aXN0cy50eHQKKysrIGIvVG9vbHMvV2luQ0VMYXVuY2hlci9DTWFrZUxpc3RzLnR4dApAQCAtNiw2
ICs2LDcgQEAgc2V0KFdpbkNFTGF1bmNoZXJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dF
QkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3b3JrIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9y
bS90ZXh0IgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0iCisgICAgIiR7REVSSVZFRF9TT1VS
Q0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iCiAgICAgIiR7V1RGX0RJUn0iCiAgICAgIiR7REVSSVZF
RF9TT1VSQ0VTX0RJUn0iCiAgICAgIiR7Q01BS0VfQklOQVJZX0RJUn0iCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODZiNzU2
ZTlhZWZjODJjNWEzZjliYjk5MGViNzEwMDRhZTZlYTNhZi4uOWJiYzQwZTM2ZTIyOTFmYTRiYTlh
ZThjNzc5YTRkZDRiNmU4MDc1NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE0LTAxLTI5ICBP
bGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJs
ZSB0byBpbXBsZW1lbnQgSlMgYnVpbHRpbnMgaW4gSlMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzg4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgdGhlIHRlc3QgcmVzdWx0cyBmb3IgbmV3
IGVycm9yIG1lc3NhZ2VzIChub3cgdGhhdCB0aGV5J3JlCisgICAgICAgIGFjdHVhbGx5IGhlbHBm
dWwpLCBhbmQgYWRkZWQgYSBqcy1yZWdyZXNzIHRlc3QgdG8gdHJhY2sgcGVyZm9ybWFuY2UuCisK
KyAgICAgICAgKiBqcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvZG9t
L2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9y
ZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGpzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5qczogQWRk
ZWQuCisgICAgICAgICh0ZXN0MSk6CisgICAgICAgICh0ZXN0Mik6CisgICAgICAgICh0ZXN0Myk6
CisKIDIwMTQtMDEtMzEgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CiAKICAgICAg
ICAgW0NTUyBTaGFwZXNdIEltYWdlIHZhbHVlZCBzaGFwZSBjYW4gZmFpbApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMv
YXJyYXktZXZlcnktZXhwZWN0ZWQudHh0CmluZGV4IDU0MWI4YzM1OGYwNjhhMGNlYTg4MmMxMDUx
NzUzMjUxMTRjZDMzZjcuLmNjYTM2M2RjZTU4ZmJhOTVhNThjZTQ2ZmNiNDhjMzhiZjU4YWRmNTkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9qcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQKQEAgLTMwLDEyICszMCwx
MiBAQCBQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoaXNCaWdFbm91Z2hBbmRFeGNlcHRp
b24pIHRocmV3IGV4Y2VwdGlvbiBleGNlcHRpbwogUEFTUyBbMTIsIDU0LCAxOCwgMTMwLCA0NF0u
ZXZlcnkoaXNCaWdFbm91Z2hBbmRFeGNlcHRpb24pIHRocmV3IGV4Y2VwdGlvbiBleGNlcHRpb24g
ZnJvbSBmdW5jdGlvbi4KIAogNS4wIFdyb25nIFR5cGUgZm9yIENhbGxiYWNrIFRlc3QKLVBBU1Mg
WzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSg1KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBU
eXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCd3cm9uZycpIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0
NF0uZXZlcnkobmV3IE9iamVjdCgpKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVy
cm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KG51bGwpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnko
dW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBb
MTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlw
ZSBlcnJvci4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSg1KSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1
bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCd3cm9uZycpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJl
IGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkobmV3IE9iamVjdCgp
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJh
Y2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KG51
bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxs
YmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnko
dW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZl
cnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRd
LmV2ZXJ5KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5
IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KIAogNi4wIEVhcmx5IEV4aXQgKCJTaG9ydCBD
aXJjdWl0aW5nIikKIFBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShpc0JpZ0Vub3VnaFNo
b3J0Q2lyY3VpdCkgaXMgZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9hcnJh
eS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20v
YXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CmluZGV4IDJjMmE2OGNiMTA2
ZGExMGYwODZiMjJjNWJmMmJmNWM4ZmU3OWUzM2UuLjVkOWVjYjc1YThkYTc5YmE2NTYwNWU3ZWI5
Y2Y4ZmMyNWZlMThhZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2RvbS9hcnJheS1wcm90
b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2Fy
cmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApAQCAtMTUsNyArMTUsNyBAQCBQ
QVNTIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHVuZGVmaW5lZCwgMCwgMSkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogdW5kZQogUEFTUyBBcnJheS5wcm90b3R5cGUuc29ydC5jYWxsKHVu
ZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBv
YmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5zb3J0LmNhbGwodW5kZWZpbmVkKScp
LgogUEFTUyBBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwodW5kZWZpbmVkLCAwLCAxKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVh
dGluZyAnQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKHVuZGVmaW5lZCwgMCwgMSknKS4KIFBB
U1MgQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuY2FsbCh1bmRlZmluZWQsIHt9KSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAn
QXJyYXkucHJvdG90eXBlLnVuc2hpZnQuY2FsbCh1bmRlZmluZWQsIHt9KScpLgotUEFTUyBBcnJh
eS5wcm90b3R5cGUuZXZlcnkuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJy
YXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZyknKS4KK1BBU1MgQXJy
YXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZykgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8
IG5vdCBiZSB1bmRlZmluZWQuCiBQQVNTIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwodW5k
ZWZpbmVkLCB0b1N0cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlz
IG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwo
dW5kZWZpbmVkLCB0b1N0cmluZyknKS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLnNvbWUuY2FsbCh1
bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQg
aXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnNvbWUuY2FsbCh1
bmRlZmluZWQsIHRvU3RyaW5nKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxs
KHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5v
dCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwodW5k
ZWZpbmVkLCAwKScpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1w
cm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJh
eS1wcm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyOTBjMGVlZmY4ZGU0
MjE4MzNkOTJkMjdlOTUyNDE5MTc2MDRiOTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMCBAQAorSlNSZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeQorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbCBiL0xheW91dFRlc3Rz
L2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU1Y2Mx
NzFjNDg3NWEzNTg1YmYxNGU1NDE1ZjVjZDBlNTgxZDU0NAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwKQEAgLTAsMCAr
MSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Jl
Z3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyYXkt
cHJvdG90eXBlLWV2ZXJ5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVn
cmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5q
cyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5LXByb3RvdHlwZS1l
dmVyeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yOTRhYTE2MWMwY2U5OGIyYWIxOGEzYTFhMWYwZGZhYWM5ZDdk
MmUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVz
dHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzCkBAIC0wLDAgKzEsMjkgQEAKK3ZhciByZXN1bHQg
PSAwOworZnVuY3Rpb24gdGVzdDEoYSkgeworICAgIHJlc3VsdCA8PCAxOworICAgIHJlc3VsdCsr
OworICAgIHJldHVybiB0cnVlOworfQorZnVuY3Rpb24gdGVzdDIoYSxiKSB7CisgICAgcmVzdWx0
IF49IDM7CisgICAgcmVzdWx0ICo9IDM7CisgICAgcmV0dXJuIHRydWU7Cit9CitmdW5jdGlvbiB0
ZXN0MyhhLGIsYykgeworICAgIHJlc3VsdCBePSByZXN1bHQgPj4gMTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwordmFyIHJlc3VsdCA9IDA7Cit2YXIgYXJyYXkgPSBbXQorZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDAwMDA7ICsraSkKKyAgICBhcnJheVtpXSA9IDE7CisKK2ZvciAodmFyIGkgPSAwOyBp
IDwgMTA7IGkrKykgeworICAgIGFycmF5LmV2ZXJ5KHRlc3QxKTsKKyAgICBhcnJheS5ldmVyeSh0
ZXN0Mik7CisgICAgYXJyYXkuZXZlcnkodGVzdDMpOworfQorCitpZiAocmVzdWx0ICE9IDE0Mjg4
MTA0OTYpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OwpkaWZmIC0t
Z2l0IGEvR05VbWFrZWZpbGUuYW0gYi9HTlVtYWtlZmlsZS5hbQppbmRleCA3M2ZjNDkyOGM0ZGQ0
OWI1NDk4NjliNTA2NzhjNmJkZTc0ZjQ0NzYwLi4wOGM5MTE1NDI2MDUwMGRlM2ZmMDRiMDIwY2Uw
ZDYwZjk4ZThjZmU4IDEwMDY0NAotLS0gYS9HTlVtYWtlZmlsZS5hbQorKysgYi9HTlVtYWtlZmls
ZS5hbQpAQCAtNjgsNiArNjgsNyBAQCBBTExfTU9GSUxFUyA6PQogZG9tX2JpbmRpbmdfaWRscyA6
PQogd3RmX3NvdXJjZXMgOj0KIGphdmFzY3JpcHRjb3JlX2hfYXBpIDo9CitqYXZhc2NyaXB0Y29y
ZV9idWlsdGluc19qc19ub3NvdXJjZXMgOj0KIGphdmFzY3JpcHRjb3JlX2NwcGZsYWdzOj0KIGph
dmFzY3JpcHRjb3JlX2NmbGFncyA6PQogamF2YXNjcmlwdGNvcmVfc291cmNlcyA6PQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222838</attachid>
            <date>2014-01-31 12:50:53 -0800</date>
            <delta_ts>2014-02-11 16:53:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140131125050.patch</filename>
            <type>text/plain</type>
            <size>208359</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
Yzc1MjcwNTQ1OWY5NmM5ODMwYzk3NTQxZmIyZjliMTU2MjJjY2I0Li4yNzhkZmE3Njg0NTQ2NjRi
NGM4M2M5N2QyZWUwOTdiZjIzYzA2NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
VGhlIHJlc3VsdCBvZiB0aGlzIHJlZmFjdG9yaW5nCisgICAgICAgIGlzIHRoYXQgQ29tbW9uSWRl
bnRpZmllcnMsIGFuZCBhIGZldyBvdGhlciBtaXNjZWxsYW5lb3VzIGhlYWRlcnMgbm93CisgICAg
ICAgIG5lZWQgdG8gYmUgaW5jbHVkZWQgZGlyZWN0bHkgYXMgdGhleSB3ZXJlIGZvcm1lcmx5IGNh
cHR1cmVkIHRocm91Z2ggb3RoZXIKKyAgICAgICAgcGF0aHMuCisKKyAgICAgICAgSW4gYWRkaXRp
b24gdGhpcyBhZGRzIGEgZmxhZyB0byB0aGUgTG9va3VwIHRhYmxlJ3MgaGFzaGVudHJ5IHRvIGlu
ZGljYXRlCisgICAgICAgIHRoYXQgYSBzdGF0aWMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgYmFja2Vk
IGJ5IEpTLiBUaGVyZSBpcyB0aGVuIGEgbG90IG9mCisgICAgICAgIGxvZ2ljIHRvIHRocmVhZCB0
aGUgc3BlY2lhbCBuYXR1cmUgb2YgdGhlIGZ1bmN0b24gdG8gd2hlcmUgaXQgbWF0dGVycy4KKyAg
ICAgICAgVGhpcyBhbGxvd3MgdG9TdHJpbmcoKSwgLmNhbGxlciwgZXRjIHRvIG1pbWljIHRoZSBi
ZWhhdmlvdXIgb2YgYSBob3N0CisgICAgICAgIGZ1bmN0aW9uLgorCisgICAgICAgIE5vdGVzIG9u
IHdyaXRpbmcgYnVpbHRpbnM6CisgICAgICAgICAtIEVhY2ggZnVuY3Rpb24gaXMgY29tcGlsZWQg
aW5kZXBlbmRlbnRseSBvZiB0aGUgb3RoZXJzLCBhbmQgdGhvc2UKKyAgICAgICAgICAgaW1wbGVt
ZW50YXRpb25zIGNhbm5vdCBjdXJyZW50bHkgY2FwdHVyZSBhbGwgZ2xvYmFsIHByb3BlcnRpZXMg
KGFzCisgICAgICAgICAgIHRoYXQgY291bGQgYmUgcG90ZW50aWFsbHkgdW5zYWZlKS4gSWYgYSBm
dW5jdGlvbiBkb2VzIGNhcHR1cmUgYQorICAgICAgICAgICBnbG9iYWwgd2Ugd2lsbCBkZWxpYmVy
YXRlbHkgY3Jhc2guCisgICAgICAgICAtIEZvciB0aG9zZSAiZ2xvYmFsIiBwcm9wZXJ0aWVzIHRo
YXQgd2UgZG8gd2FudCBhY2Nlc3MgdG8sIHdlIHVzZQorICAgICAgICAgICB0aGUgQCBwcmVmaXgs
IGUuZy4gT2JqZWN0KHRoaXMpIGJlY29tZXMgQE9iamVjdCh0aGlzKS4gVGhlIEAgaWRlbnRpZmll
cnMKKyAgICAgICAgICAgYXJlIHByaXZhdGUgbmFtZXMsIGFuZCBiZWhhdmUganVzdCBsaWtlIHJl
Z3VsYXIgcHJvcGVydGllcywgb25seQorICAgICAgICAgICB3aXRob3V0IHRoZSByaXNrIG9mIGFk
dWx0ZXJhdGlvbi4gQWdhaW4sIGluIHRoZSBAT2JqZWN0IGNhc2UsIHdlCisgICAgICAgICAgIGV4
cGxpY2l0bHkgZHVwbGljYXRlIHRoZSBPYmplY3RDb25zdHJ1Y3RvciByZWZlcmVuY2Ugb24gdGhl
IEdsb2JhbE9iamVjdAorICAgICAgICAgICBzbyB0aGF0IHdlIGhhdmUgZ3VhcmFudGVlZCBhY2Nl
c3MgdG8gdGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhlCisgICAgICAgICAgIGNvbnN0cnVjdG9y
LgorICAgICAgICAgLSBjYWxsLCBhcHBseSwgZXZhbCwgYW5kIEZ1bmN0aW9uIGFyZSBhbGwgcmVq
ZWN0ZWQgaWRlbnRpZmllcnMsIGFnYWluCisgICAgICAgICAgIHRvIHByZXZlbnQgYW55dGhpbmcg
ZnJvbSBhY2NpZGVudGFsbHkgdXNpbmcgYW4gYWR1bHRlcmF0ZWQgb2JqZWN0LgorICAgICAgICAg
ICBJbnN0ZWFkIEBjYWxsIGFuZCBAYXBwbHkgYXJlIGF2YWlsYWJsZSwgYW5kIGhhcHBpbHkgdGhl
eSBjb21wbGV0ZWx5CisgICAgICAgICAgIGRyb3AgdGhlIG5lcV9wdHIgaW5zdHJ1Y3Rpb24gYXMg
dGhleSdyZSBkZWZpbmVkIGFzIGFsd2F5cyBiZWluZyB0aGUKKyAgICAgICAgICAgb3JpZ2luYWwg
Y2FsbC9hcHBseSBmdW5jdGlvbnMuCisKKyAgICAgICAgVGhlc2UgcmVzdHJpY3Rpb25zIGFyZSBq
dXN0IGludGVuZGVkIHRvIG1ha2UgaXQgaGFyZGVyIHRvIGFjY2lkZW50YWxseQorICAgICAgICBt
YWtlIGNoYW5nZXMgdGhhdCBhcmUgaW5jb3JyZWN0IChmb3IgaW5zdGFuY2UgY2FsbGluZyB3aGF0
ZXZlciBoYXMgYmVlbgorICAgICAgICBhc3NpZ25lZCB0byBnbG9iYWwuT2JqZWN0LCBpbnN0ZWFk
IG9mIHRoZSBvcmlnaW5hbCBjb25zdHJ1Y3RvciBmdW5jdGlvbikuCisgICAgICAgIEhvd2V2ZXIs
IG1ha2luZyBhIG1pc3Rha2UgbGlrZSB0aGlzIHNob3VsZCByZXN1bHQgaW4gYSBwdXJlbHkgc2Vt
YW50aWMKKyAgICAgICAgZXJyb3IgYXMgZnVuZGFtZW50YWxseSB0aGVzZSBmdW5jdGlvbnMgYXJl
IHRyZWF0ZWQgYXMgdGhvdWdoIHRoZXkgd2VyZQorICAgICAgICByZWd1bGFyIEpTIGNvZGUgaW4g
dGhlIGhvc3QgZ2xvYmFsLCBhbmQgaGF2ZSBubyBtb3JlIHByaXZpbGVnZXMgdGhhbgorICAgICAg
ICBhbnkgb3RoZXIgSlMuCisKKyAgICAgICAgVGhlIGluaXRpYWwgcHJvb2Ygb2YgY29uY2VwdCBp
cyBBcnJheS5wcm90b3R5cGUuZXZlcnksIHRoaXMgc2hvd3MgYSA2NSUKKyAgICAgICAgcGVyZm9y
bWFuY2UgaW1wcm92ZW1lbnQsIGFuZCB0aGF0IGltcHJvdmVtZW50IGlzIHNpZ25pZmljYW50bHkg
aHVydCBieQorICAgICAgICBvdXIgcG9vciBvcHRpbWlzYXRpb24gb2Ygb3BfaW4uCisKKyAgICAg
ICAgQXMgdGhpcyBpcyBzdWNoIGEgbGltaXRlZCBmdW5jdGlvbiwgd2UgaGF2ZSBub3QgeWV0IGV4
cG9ydGVkIGFsbCBzeW1ib2xzCisgICAgICAgIHRoYXQgd2UgY291bGQgcG9zc2libHkgbmVlZCwg
YnV0IGFzIHdlIGltcGxlbWVudCBtb3JlLCB0aGUgbGlrZWxpaG9vZAorICAgICAgICBvZiBlbmNv
dW50ZXJpbmcgbWlzc2luZyBmZWF0dXJlcyB3aWxsIHJlZHVjZS4KKworICAgICAgICBUaGlzIGRp
ZCByZXF1aXJlIGJyZWFraW5nIG91dCBhIEpTU3RyaW5nSW5saW5lcyBoZWFkZXIsIGFuZCByZXF1
aXJlZAorICAgICAgICBmaXhpbmcgYSBmZXcgb2JqZWN0cyB0aGF0IHdlcmUgdHJ5aW5nIHRvIHVz
aW5nIFByb3BlcnR5TmFtZTo6cHVibGljTmFtZQorICAgICAgICByYXRoZXIgdGhhbiBQcm9wZXJ0
eU5hbWU6OnVpZC4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6
CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQpOgorICAg
ICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZSk6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGljRnVuY3Rpb25HZXR0
ZXIpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGxiYWNrR2V0
dGVyKToKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy5tYWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
YnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzOgorICAgICAgICAoZXZlcnkpOgorICAgICAgICAq
IGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpC
dWlsdGluRXhlY3V0YWJsZXM6OkJ1aWx0aW5FeGVjdXRhYmxlcyk6CisgICAgICAgIChKU0M6OkJ1
aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ1
aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0
YWJsZXM6OmNyZWF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdX
YXRjaHBvaW50LmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAoSlND
OjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUp
OgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9y
KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToK
KyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpF
eGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OnRvU3RyaWN0bmVzcyk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjppc0J1aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChKU0M6OlVubGlua2Vk
Q29kZUJsb2NrOjppc0J1aWx0aW5GdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzQnVpbHRpbkZ1bmN0aW9u
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Om1ha2VGdW5jdGlvbik6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkNhbGxG
dW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpBcHBseUZ1
bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogY3JlYXRlX2hhc2hf
dGFibGU6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGdlbmVy
YXRlLWpzLWJ1aWx0aW5zOiBBZGRlZC4KKyAgICAgICAgKGdldENvcHlyaWdodCk6CisgICAgICAg
IChnZXRGdW5jdGlvbnMpOgorICAgICAgICAoZ2VuZXJhdGVDb2RlKToKKyAgICAgICAgKG1hbmds
ZU5hbWUpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKElkZW50aWZp
ZXIpOgorICAgICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAgICAgICAoU291cmNlQ29kZSk6Cisg
ICAgICAgIChVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChWTSk6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAqIGludGVycHJldGVy
L1Byb3RvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgICog
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAqIGpzYy5jcHA6CisgICAg
ICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAqIHBhcnNlci9BU1RCdWls
ZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKToK
KyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6TGV4
ZXIpOgorICAgICAgICAoSlNDOjppc1NhZmVJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4
ZXI8TENoYXI+OjpwYXJzZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpMZXhlcjxVQ2hhcj46
OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpsZXgpOgorICAgICAg
ICAqIHBhcnNlci9MZXhlci5oOgorICAgICAgICAoSlNDOjppc1NhZmVJZGVudGlmaWVyKToKKyAg
ICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIpOgorICAgICAgICAqIHBh
cnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpzZXRDbG9zZWRWYXJp
YWJsZXMpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpTY29wZU5v
ZGU6OmNhcHR1cmVkVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6U2NvcGVOb2RlOjpzZXRDbG9z
ZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQcm9ncmFtTm9kZTo6Y2xvc2VkVmFyaWFibGVz
KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OlBhcnNlcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUlubmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmRpZEZpbmlzaFBhcnNp
bmcpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cHJpbnRVbmV4cGVjdGVkVG9r
ZW5UZXh0KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3Bl
OjpnZXRVc2VkVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpjbG9zZWRWYXJpYWJs
ZXMpOgorICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVz
Lmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlclRva2Vucy5oOgorICAgICAgICAqIHJ1bnRpbWUv
QXJnTGlzdC5jcHA6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvQXJndW1lbnRzLmg6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHNJdGVyYXRv
ckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0
RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Q29t
bW9uSWRlbnRpZmllcnMpOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Z2V0UHJp
dmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Z2V0UHVibGljTmFt
ZSk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQ
YXRoc0V4Y2VwdGlvbnMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5j
cHA6CisgICAgICAgIChKU0M6OmNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6
ZXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6ZXhlY3V0
YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmlzQnVpbHRpbkZ1
bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6ZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9K
U0FjdGl2YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxl
R2V0KToKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dCk6CisgICAg
ICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyk6Cisg
ICAgICAgICogcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcDoKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlND
ZWxsSW5saW5lcy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAg
IChKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZSk6CisgICAgICAgIChKU0M6OkpTRnVu
Y3Rpb246OnNvdXJjZUNvZGUpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjppc0hvc3RPckJ1
aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzQnVpbHRpbkZ1bmN0
aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKToKKyAgICAgICAg
KEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVy
dHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmg6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
OjpyZXNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjpvYmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpzeW1ib2xUYWJsZUhhc1Byb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGVsZXRlKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5j
cHA6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAg
ICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmdJbmxpbmVz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90
KToKKyAgICAgICAgKEpTQzo6aW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKToKKyAgICAg
ICAgKEpTQzo6SlNWYWx1ZTo6dG9XVEZTdHJpbmdJbmxpbmUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNTeW1ib2xUYWJsZU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTU3ltYm9sVGFibGVPYmpl
Y3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgICAgIERvbid0IHJlcG9y
dCBwcml2YXRlIG5hbWVzLgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5o
OgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZUdldCk6CisgICAgICAgIChKU0M6OnN5bWJvbFRh
YmxlUHV0KToKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyk6Cisg
ICAgICAgICogcnVudGltZS9Mb29rdXAuY3BwOgorICAgICAgICAoSlNDOjpzZXRVcFN0YXRpY0Z1
bmN0aW9uU2xvdCk6CisgICAgICAgICogcnVudGltZS9Mb29rdXAuaDoKKyAgICAgICAgKEpTQzo6
SGFzaEVudHJ5OjpidWlsdGluR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SGFzaEVudHJ5Ojpw
cm9wZXJ0eUdldHRlcik6CisgICAgICAgIChKU0M6Okhhc2hFbnRyeTo6cHJvcGVydHlQdXR0ZXIp
OgorICAgICAgICAoSlNDOjpIYXNoVGFibGU6OmVudHJ5KToKKyAgICAgICAgKEpTQzo6Z2V0U3Rh
dGljUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6Z2V0U3RhdGljVmFsdWVTbG90KToKKyAg
ICAgICAgKEpTQzo6cHV0RW50cnkpOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaDoK
KyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVn
RXhwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5jcHA6CisgICAgICAgICogcnVudGltZS9T
dHJ1Y3R1cmUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpW
TTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6Vk06OmJ1aWx0
aW5FeGVjdXRhYmxlcyk6CisKIDIwMTQtMDEtMzEgIEdhYm9yIFJhcGNzYW55aSAgPHJnYWJvckB3
ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCB0aGUgQVJNIFRodW1iMiBidWlsZCBhZnRlciBqc0NT
dGFjayBicmFuY2ggbWVyZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiYjEzMDgwODNkMjUyMjY0ZmFjYzIxYTQz
NWM3NzZjNWI5MDdjNzg2Li5mMTlmYzM2ZWE3ZGE0MjNiZjcyZTBkZWMzZTA3MTdmODFhNGExZGE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTQtMDEtMjkgIE9saXZlciBIdW50ICA8
b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVu
dCBKUyBidWlsdGlucyBpbiBKUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI3ODg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRpbmcgZm9yIHRoZSBuZXdseSByZXF1aXJlZCBoZWFkZXJzLgorCisg
ICAgICAgIFRlc3Q6IGpzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwKKworICAg
ICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmg6IEFkZGVk
LgorICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5j
cHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwOgorCiAyMDE0LTAxLTMxICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBJREI6IG9wZW5DdXJzb3IoKSBuZWVk
cyB0byBwcmltZSB0aGUgY3Vyc29yIHdpdGggZmlyc3QgcG9zaXRpb24gdmFsdWVzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5o
CmluZGV4IDViZTA1M2YxZTA4NmI0M2U2ODZjMzY3NGRhZTdjNTE2MDVhMjg2ZTcuLjBlY2VkNTFm
M2UyZDViNjIxZGFkZjA1NzQ5ZjVlNzQ2NmEwNmY1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCkBAIC0xMzYsNyAr
MTM2LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5U2xv
dChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGUKICAgICBKU09iamVjdFJlZiB0aGlzUmVm
ID0gdG9SZWYodGhpc09iamVjdCk7CiAgICAgUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0
eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUu
cHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUu
dWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5j
bGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAg
ICAgICAgICAgIC8vIG9wdGlvbmFsIG9wdGltaXphdGlvbiB0byBieXBhc3MgZ2V0UHJvcGVydHkg
aW4gY2FzZXMgd2hlbiB3ZSBvbmx5IG5lZWQgdG8ga25vdyBpZiB0aGUgcHJvcGVydHkgZXhpc3Rz
CiAgICAgICAgICAgICBpZiAoSlNPYmplY3RIYXNQcm9wZXJ0eUNhbGxiYWNrIGhhc1Byb3BlcnR5
ID0ganNDbGFzcy0+aGFzUHJvcGVydHkpIHsKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcAogICAgIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVm
OwogICAgIEpTVmFsdWVSZWYgdmFsdWVSZWYgPSB0b1JlZihleGVjLCB2YWx1ZSk7CiAgICAgCi0g
ICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7Cisg
ICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAg
Zm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNz
OyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09i
amVjdFNldFByb3BlcnR5Q2FsbGJhY2sgc2V0UHJvcGVydHkgPSBqc0NsYXNzLT5zZXRQcm9wZXJ0
eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lUmVmKQpAQCAtMzQzLDcgKzM0
Myw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvCiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9
IHRvUmVmKHRoaXNPYmplY3QpOwogICAgIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJvcGVydHlO
YW1lUmVmOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1
YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVp
ZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iamVjdC0+Y2xh
c3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAg
ICAgICAgICBpZiAoSlNPYmplY3REZWxldGVQcm9wZXJ0eUNhbGxiYWNrIGRlbGV0ZVByb3BlcnR5
ID0ganNDbGFzcy0+ZGVsZXRlUHJvcGVydHkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXByb3Bl
cnR5TmFtZVJlZikKQEAgLTU2NCw3ICs1NjQsNyBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8
UGFyZW50Pjo6Z2V0U3RhdGljVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcAog
ewogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzKTsKICAgICAKLSAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAo
U3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpT
Q2xhc3NSZWYganNDbGFzcyA9IGNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNz
LT5wYXJlbnRDbGFzcykgewogICAgICAgICAgICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1
ZXNUYWJsZSogc3RhdGljVmFsdWVzID0ganNDbGFzcy0+c3RhdGljVmFsdWVzKGV4ZWMpKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKFN0YXRpY1ZhbHVlRW50cnkqIGVudHJ5ID0gc3RhdGljVmFsdWVz
LT5nZXQobmFtZSkpIHsKQEAgLTYwMCw3ICs2MDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywg
RQogICAgIGlmIChQYXJlbnQ6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QyKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90Mi5n
ZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpKTsKIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1l
ID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1l
ID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNz
ID0gdGhpc09iai0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVu
dENsYXNzKSB7CiAgICAgICAgICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1Rh
YmxlKiBzdGF0aWNGdW5jdGlvbnMgPSBqc0NsYXNzLT5zdGF0aWNGdW5jdGlvbnMoZXhlYykpIHsK
ICAgICAgICAgICAgICAgICBpZiAoU3RhdGljRnVuY3Rpb25FbnRyeSogZW50cnkgPSBzdGF0aWNG
dW5jdGlvbnMtPmdldChuYW1lKSkgewpAQCAtNjI2LDcgKzYyNiw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tHZXR0ZXIoRXhlY1N0YXRlKiBleGVj
LCBFbmNvZGVkCiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmopOwogICAg
IFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwogICAgIAotICAgIGlmIChT
dHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChT
dHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlND
bGFzc1JlZiBqc0NsYXNzID0gdGhpc09iai0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9
IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgICAgICBpZiAoSlNPYmplY3RHZXRQcm9w
ZXJ0eUNhbGxiYWNrIGdldFByb3BlcnR5ID0ganNDbGFzcy0+Z2V0UHJvcGVydHkpIHsKICAgICAg
ICAgICAgICAgICBpZiAoIXByb3BlcnR5TmFtZVJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCAyN2JjNGMxN2YzZGZlZWI2MWQyNTIzMjNmZDg3OGM0NDc4MGY3NGM1Li5i
NDNlMDVjODJiYjk4ZDU4ZWZiYjhjNThhYjlhODNmMWE3NjUxNzc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CkBAIC01LDYgKzUsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfSU5D
TFVERV9ESVJFQ1RPUklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vRm9yd2FyZGluZ0hl
YWRlcnMiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9hc3NlbWJsZXIiCiAgICAgIiR7SkFW
QVNDUklQVENPUkVfRElSfS9iaW5kaW5ncyIKKyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1
aWx0aW5zIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0ZWNvZGUiCiAgICAgIiR7SkFW
QVNDUklQVENPUkVfRElSfS9ieXRlY29tcGlsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElS
fS9kZmciCkBAIC01Miw2ICs1Myw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAg
YmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcAogICAgIGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAog
CisgICAgYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAorCiAgICAgYnl0ZWNvZGUvQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCiAg
ICAgYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcApAQCAtNzA3LDcgKzcxMCw3IEBAIHNl
dChIQVNIX0xVVF9HRU5FUkFUT1IgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2NyZWF0ZV9o
YXNoX3RhYmxlKQogbWFjcm8oR0VORVJBVEVfSEFTSF9MVVQgX2lucHV0IF9vdXRwdXQpCiAgICAg
YWRkX2N1c3RvbV9jb21tYW5kKAogICAgICAgICBPVVRQVVQgJHtfb3V0cHV0fQotICAgICAgICBE
RVBFTkRTICR7SEFTSF9MVVRfR0VORVJBVE9SfSAke19pbnB1dH0KKyAgICAgICAgREVQRU5EUyAk
e0hBU0hfTFVUX0dFTkVSQVRPUn0gJHtfaW5wdXR9ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElS
fS9nZW5lcmF0ZS1qcy1idWlsdGlucwogICAgICAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxF
fSAke0hBU0hfTFVUX0dFTkVSQVRPUn0gJHtfaW5wdXR9IC1pID4gJHtfb3V0cHV0fQogICAgICAg
ICBWRVJCQVRJTSkKICAgICBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTICR7X291
dHB1dH0pCkBAIC03MzYsNiArNzM5LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0ZPUldBUkRJTkdf
SEVBREVSU19ESVJFQ1RPUklFUwogICAgIHlhcnIKIAogICAgIGNvbGxlY3Rvci9oYW5kbGVzCisg
ICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfQogKQogCiBzZXQoSmF2YVNj
cmlwdENvcmVfRk9SV0FSRElOR19IRUFERVJTX0ZJTEVTCkBAIC03NjMsOCArNzY3LDExIEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9GT1JXQVJESU5HX0hFQURFUlNfRklMRVMKICAgICBhc3NlbWJsZXIv
TGlua0J1ZmZlci5oCiAgICAgYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKICAgICBhc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgKKyAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmLmgKICAgICBqaXQvR1BSSW5mby5oCiAgICAgcnVudGltZS9WTS5oCisKKyAgICAke0RF
UklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKICkKIAogCkBA
IC04MTUsMTYgKzgyMiwyNyBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgQ09NTUFORCAke1BZ
VEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0v
Q29kZUdlbmVyYXRvckluc3BlY3Rvci5weSAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09S
RV9ESVJ9L0luc3BlY3RvckpTLmpzb24gLS1vdXRwdXRfaF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0cHV0X2NwcF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0cHV0X2pzX2RpciAiJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfSIgLS1vdXRwdXRfdHlwZSBKYXZhU2NyaXB0IC0td3JpdGVfYWx3
YXlzICYmIG1rZGlyIC1wICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5z
cGVjdG9yICYmIGNwICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVj
dG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09S
RV9ESVJ9L0luc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5oICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaCAke0RFUklWRURf
U09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3RvcgogICAgIFZFUkJBVElNKQogCisj
IEpTQ0J1aWx0aW5zCitmaWxlKEdMT0IgSlNDQnVpbHRpbnNfanNfZmlsZXMgIiR7Q01BS0VfQ1VS
UkVOVF9TT1VSQ0VfRElSfS9idWlsdGlucy8qLmpzIikKK2FkZF9jdXN0b21fY29tbWFuZCgKKyAg
IE9VVFBVVCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5z
LmNwcCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgK
KyAgIE1BSU5fREVQRU5ERU5DWSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZ2VuZXJhdGUt
anMtYnVpbHRpbnMKKyAgIERFUEVORFMgJHtKU0NCdWlsdGluc19qc19maWxlc30KKyAgIENPTU1B
TkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2dlbmVy
YXRlLWpzLWJ1aWx0aW5zICR7SlNDQnVpbHRpbnNfanNfZmlsZXN9ICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaCAke0RFUklWRURfU09VUkNFU19KQVZB
U0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcAorICAgVkVSQkFUSU0pCisKIGxpc3QoQVBQ
RU5EIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NS
SVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmNwcAogICAgICR7REVS
SVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNGcm9udGVuZERpc3Bh
dGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5z
cGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwCisgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQ
VENPUkVfRElSfS9KU0NCdWlsdGlucy5jcHAKICkKIAogbGlzdChBUFBFTkQgSmF2YVNjcmlwdENv
cmVfSEVBREVSUwogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5z
cGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFT
Q1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmgKICAgICAke0RF
UklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTVHlwZUJ1aWxkZXJz
LmgKKyAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5z
LmgKICkKIAogYWRkX2N1c3RvbV9jb21tYW5kKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQppbmRleCAxMTU2ZTk3ZmQ4ODYyNTU3YzljZjhkM2I2OGJmNGQwM2MzZThi
YThmLi5hODNiZGNhZDUxYjA2Njg4NjY3YTZiNzMyMDU3ZTRjZGM4OTYwYTk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjgsOCArMjgsOSBAQCBWUEFU
SCA9IFwKICAgICAkKEphdmFTY3JpcHRDb3JlKSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvcGFy
c2VyIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9ydW50aW1lIFwKLSAgICAkKEphdmFTY3JpcHRD
b3JlKS9pbnRlcnByZXRlciBcCi0gICAgJChKYXZhU2NyaXB0Q29yZSkvaml0IFwKKwkkKEphdmFT
Y3JpcHRDb3JlKS9pbnRlcnByZXRlciBcCisJJChKYXZhU2NyaXB0Q29yZSkvaml0IFwKKwkkKEph
dmFTY3JpcHRDb3JlKS9idWlsdGlucyBcCiAjCiAKIC5QSE9OWSA6IGFsbApAQCAtNTcsOCArNTgs
MTggQEAgYWxsIDogXAogICAgIFJlZ0V4cE9iamVjdC5sdXQuaCBcCiAgICAgU3RyaW5nQ29uc3Ry
dWN0b3IubHV0LmggXAogICAgIHVkaXM4Nl9pdGFiLmggXAorICAgIEpTQ0J1aWx0aW5zIFwKICMK
IAorIyBidWlsdGluIGZ1bmN0aW9ucworLlBIT05ZOiBKU0NCdWlsdGlucworCitKU0NCdWlsdGlu
czogJChKYXZhU2NyaXB0Q29yZSkvZ2VuZXJhdGUtanMtYnVpbHRpbnMgSlNDQnVpbHRpbnMuaCBK
U0NCdWlsdGlucy5jcHAKK0pTQ0J1aWx0aW5zLmg6ICQoSmF2YVNjcmlwdENvcmUpL2dlbmVyYXRl
LWpzLWJ1aWx0aW5zICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zLyouanMKKwlweXRob24gJF4g
JEAKKwkJCQkJCQkJCQkJCQkJCQkJCQkJIAorSlNDQnVpbHRpbnMuY3BwOiBKU0NCdWlsdGlucy5o
CisKICMgbG9va3VwIHRhYmxlcyBmb3IgY2xhc3NlcwogCiAlLmx1dC5oOiBjcmVhdGVfaGFzaF90
YWJsZSAlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
LmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGZlNTQ0OGRk
YzFiY2ZhYTRjNzI5YTFjYzAwZGVhNjI0MzE5MzkwYTIuLjU1NjlmNTAyOGQ4YzNjZGQ1YTA0ZGM5
MzY2YTg0YjA0ZWVjNDgxNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVt
YWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KQEAg
LTUxLDYgKzUxLDcgQEAgamF2YXNjcmlwdGNvcmVfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVycyBcCiAJLUkkKHNyY2Rpcikv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlciBcCiAJ
LUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyIFwKQEAgLTExMCwxMiAr
MTExLDE2IEBAIERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9mZnNl
dHMuaDogJChqYXZhc2NyaXB0Y29yZV9zb3VyY2VzKSAkCiAJJChBTV9WX0dFTikkKFJVQlkpICQo
c3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRf
ZXh0cmFjdG9yLnJiICQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20gJEAKIAkkKEFNX1ZfYXQpdG91Y2ggJEAKIAotJChQcm9ncmFtc19M
TEludE9mZnNldHNFeHRyYWN0b3JfT0JKRUNUUyk6IERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaAorJChQcm9ncmFtc19MTEludE9mZnNldHNFeHRyYWN0
b3JfT0JKRUNUUyk6IERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9m
ZnNldHMuaCAKIAogRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnRBc3NlbWJseS5o
OiBQcm9ncmFtcy9MTEludE9mZnNldHNFeHRyYWN0b3IkKEVYRUVYVCkKIAkkKEFNX1ZfR0VOKSQo
UlVCWSkgJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYiAk
KHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtIFByb2dyYW1zL0xMSW50T2Zmc2V0c0V4dHJhY3RvciQoRVhFRVhUKSAkQAogCSQoQU1fVl9h
dCl0b3VjaCAkQAogCitEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5o
OiBEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5jcHAKK0Rlcml2ZWRT
b3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmNwcDogJChzcmNkaXIpL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucyAkKGphdmFzY3JpcHRjb3JlX2J1aWx0
aW5zX2pzX25vc291cmNlcykKKwkkKEFNX1ZfR0VOKSQoUFlUSE9OKSAkXiAkQAorCiAkKGxpYmph
dmFzY3JpcHRjb3JlZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtf
QVBJX01JTk9SX1ZFUlNJT05AX2xhX09CSkVDVFMpOiBEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0
Q29yZS9MTEludEFzc2VtYmx5LmgKIAoganNjOiAkKGphdmFzY3JpcHRjb3JlX2J1aWx0X25vc291
cmNlcykgUHJvZ3JhbXMvanNjJChFWEVFWFQpCkBAIC0yMTYsNiArMjIxLDcgQEAgRVhUUkFfRElT
VCArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL0tleXdvcmRMb29rdXBHZW5lcmF0b3IucHkg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvS2V5d29yZHMudGFibGUgXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9USEFOS1MgXAorCSQoamF2YXNjcmlwdGNvcmVfYnVpbHRpbnNfanNf
bm9zb3VyY2VzKSBcCiAJJChsbGludF9ub3NvdXJjZXMpIFwKIAkkKG9mZmxpbmVhc21fbm9zb3Vy
Y2VzKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlz
dC5hbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGNk
YjU0MjZiMDZiNTJhOTgyNTZlZTkwNThiYmE4ZjExZWVhNjllZTAuLjk4ZmFhYTdkMTc1YWE2MWYy
MDg5NmNlZWIxMzg2M2UyN2IyNjZjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCkBAIC0yMCw2ICsyMCw4IEBAIGphdmFzY3JpcHRjb3JlX2J1aWx0X25vc291
cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvRXJyb3JQcm90b3R5cGUu
bHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTRGF0YVZpZXdQcm90b3R5
cGUubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0
Lmx1dC5oIFwKKwlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5jcHAg
XAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmggXAogCURlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTT05PYmplY3QubHV0LmggXAogCURlcml2ZWRTb3Vy
Y2VzL0phdmFTY3JpcHRDb3JlL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIFwKIAlEZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU1Byb21pc2VQcm90b3R5cGUubHV0LmggXApAQCAtMzUs
NiArMzcsOSBAQCBqYXZhc2NyaXB0Y29yZV9idWlsdF9ub3NvdXJjZXMgKz0gXAogCURlcml2ZWRT
b3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaCBcCiAJRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnRBc3NlbWJseS5oCiAKK2phdmFzY3JpcHRjb3JlX2J1
aWx0aW5zX2pzX25vc291cmNlcyArPSBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0FycmF5LnByb3RvdHlwZS5qcworCiBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmggXApAQCAtMTAyLDYgKzEwNyw4IEBAIGphdmFzY3Jp
cHRjb3JlX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9T
Y3JpcHRPYmplY3QuaCBcCiAgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1Njcmlw
dFZhbHVlLmNwcCBcCiAgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZh
bHVlLmggXAorICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0
YWJsZXMuY3BwIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheUFsbG9j
YXRpb25Qcm9maWxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5
QWxsb2NhdGlvblByb2ZpbGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Fy
cmF5UHJvZmlsZS5jcHAgXApAQCAtMTI0MSw3ICsxMjQ4LDkgQEAgamF2YXNjcmlwdGNvcmVfc291
cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNGcm9u
dGVuZERpc3BhdGNoZXJzLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5z
cGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuaAorCURlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmggXAorCURlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvSlNDQnVpbHRpbnMuaAogCiBsbGludF9ub3NvdXJjZXMgKz0gXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDVlZGVmZGJlODU1Zjk2YTYyNjhk
ODU3M2JlYzFkMGMzZDg1OGFhNWMuLmExMmRiMTgzNDg2ZGZiYmNhODNmM2E3OGU5Y2Y5ODYzMWIy
NjUzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtMzA5LDYg
KzMwOSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRGdW5j
dGlvbkNhbGwuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2Ny
aXB0T2JqZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNj
cmlwdFZhbHVlLmNwcCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1
aWx0aW5FeGVjdXRhYmxlcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRl
Y29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5UHJvZmlsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxieXRlY29kZVxCeXRlY29kZUJhc2ljQmxvY2suY3BwIiAvPgpAQCAtNzIxLDYgKzcy
Miw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
SW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEluc3BlY3RvckpTRnJvbnRlbmREaXNwYXRj
aGVycy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmNwcCIgLz4KICAgPC9J
dGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcQXJyYXlDb25zdHJ1Y3Rvci5sdXQuaCIgLz4KQEAgLTc1MCw2ICs3
NTIsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XFJlZ0V4cE9iamVjdC5sdXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xSZWdFeHBQcm90b3R5cGUubHV0LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcU3RyaW5nQ29uc3RydWN0b3IubHV0
LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
SlNDQnVpbHRpbnMuaCIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcQVBJQ2FsbGJhY2tGdW5jdGlvbi5oIiAvPgpAQCAtNzk4
LDYgKzgwMSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRG
dW5jdGlvbkNhbGwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNj
cmlwdE9iamVjdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2Ny
aXB0VmFsdWUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0
aW5FeGVjdXRhYmxlcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVc
QXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
Ynl0ZWNvZGVcQXJyYXlQcm9maWxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxi
eXRlY29kZVxCeVZhbEluZm8uaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA4N2UxMmE0NzE1OGJiNjIyNGQ0OWZkNjIyOTc4YzRh
OWM0NDM1YTY1Li44NjljMWY1ODliY2I2ODZlYjljZjIwYzA5NmJlMWI4M2E1NTFlMjRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC03
LDYgKzcsOSBAQAogICAgIDxGaWx0ZXIgSW5jbHVkZT0iYmluZGluZ3MiPgogICAgICAgPFVuaXF1
ZUlkZW50aWZpZXI+ezBiYWNlMTIzLTQ1ODItZWViYy05MzE0LTc4MTliMzc2YzE5OH08L1VuaXF1
ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJidWlsdGlu
cyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57M2I5ZDcyYTUtMTM1Yi00M2IzLWE1MjQtYzZk
MmI5ZDI5ZDM1fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KICAgICA8RmlsdGVy
IEluY2x1ZGU9ImJ5dGVjb2RlIj4KICAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns3NjYwODhhMC0x
MjE2LTQ4NTQtYWE0My01NjBjNWUyODM2Njh9PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmls
dGVyPgpAQCAtMTA4LDYgKzExMSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxhc3Nl
bWJsZXJcTWFjcm9Bc3NlbWJsZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9GaWx0
ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxidWlsdGlu
c1xCdWlsdGluRXhlY3V0YWJsZXMuY3BwIj4KKyAgICAgIDxGaWx0ZXI+YnVpbHRpbnM8L0ZpbHRl
cj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2Rl
XEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0Zp
bHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTEzMjksNiArMTMzNSw5IEBACiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hp
dGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNUeXBlQnVp
bGRlcnMuY3BwIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CiAgICAg
PC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcSlNDQnVpbHRpbnMuY3BwIj4KKyAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9G
aWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEFQSUNhbGxiYWNrRnVuY3Rpb24uaCI+CkBA
IC0xNDU0LDYgKzE0NjMsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVy
XFg4NkFzc2VtYmxlci5oIj4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWlsdGlu
RXhlY3V0YWJsZXMuaCI+CisgICAgICA8RmlsdGVyPmJ1aWx0aW5zPC9GaWx0ZXI+CisgICAgPC9D
bENvbXBpbGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9j
YXRpb25Qcm9maWxlLmgiPgogICAgICAgPEZpbHRlcj5ieXRlY29kZTwvRmlsdGVyPgogICAgIDwv
Q2xJbmNsdWRlPgpAQCAtMjU1MCw2ICsyNTYyLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xBcnJheVByb3RvdHlwZS5sdXQuaCI+CiAgICAgICA8
RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1B
cmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmgi
PgorICAgICAgPEZpbHRlcj5EZXJpdmVkIFNvdXJjZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVk
ZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVk0uaCI+CiAgICAgICA8Rmls
dGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlQ29t
bW9uLnByb3BzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmVDb21tb24ucHJvcHMKaW5kZXggMzYyMmZmYzU3N2M0M2RkZjcwZGE1MWZm
NjhhZDY0NmY2MzA0ZTU2Ny4uYzU4ODg3MGMyZmQxM2Q2MDc2ZDM4ZjUyY2E2MjI1ZGIyODcyYzc4
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmVDb21tb24ucHJvcHMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmVDb21tb24ucHJvcHMKQEAgLTUs
NyArNSw3IEBACiAgIDxQcm9wZXJ0eUdyb3VwIC8+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgog
ICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlw7
Li5cdG9vbHNcOy4uXHJ1bnRpbWVcOy4uXGxsaW50XDsuLlxqaXRcOy4uXGRpc2Fzc2VtYmxlclw7
Li5caGVhcFw7Li5cZGVidWdnZXJcOy4uXGFzc2VtYmxlclw7Li5ccHJvZmlsZXJcOy4uXHlhcnJc
Oy4uXGludGVycHJldGVyXDsuLlxieXRlY29kZVw7Li5cZGZnXDsuLlxieXRlY29tcGlsZXJcOy4u
XHBhcnNlclw7Li5cQVBJXDsuLlxmdGxcOy4uXGJpbmRpbmdzXDsuLlxpbnNwZWN0b3JcOyQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVxKYXZhU2NyaXB0
Q29yZVxEZXJpdmVkU291cmNlc1w7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcOyQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlXDskKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXDskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1
ZGU7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlXHByaXZhdGU7JShBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXDsuLlx0b29sc1w7Li5ccnVudGltZVw7Li5cbGxp
bnRcOy4uXGppdFw7Li5cZGlzYXNzZW1ibGVyXDsuLlxoZWFwXDsuLlxkZWJ1Z2dlclw7Li5cYXNz
ZW1ibGVyXDsuLlxwcm9maWxlclw7Li5ceWFyclw7Li5caW50ZXJwcmV0ZXJcOy4uXGJ5dGVjb2Rl
XDsuLlxidWlsdGluc1w7Li5cZGZnXDsuLlxieXRlY29tcGlsZXJcOy4uXHBhcnNlclw7Li5cQVBJ
XDsuLlxmdGxcOy4uXGJpbmRpbmdzXDsuLlxpbnNwZWN0b3JcOyQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291
cmNlc1w7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcOyQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
aW5jbHVkZVxwcml2YXRlXDskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGU7JChXZWJLaXRfTGli
cmFyaWVzKVxpbmNsdWRlXHByaXZhdGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwv
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICAgIDxGb3JjZWRJbmNsdWRlRmlsZXM+
SUNVVmVyc2lvbi5oOyUoRm9yY2VkSW5jbHVkZUZpbGVzKTwvRm9yY2VkSW5jbHVkZUZpbGVzPgog
ICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovY29weS1maWxlcy5jbWQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9jb3B5LWZpbGVzLmNtZAppbmRleCA5
NDMzNDNhNTY4ZTNlMjk5ODE2YmY2NmYyZWRiNTI0MzU4ZmM1NGU4Li5lMGMxZjI5NjYxOTZiZGEz
MDAzNTk1YzVkZjAzZWVlMDhhMGRhNzhmIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9jb3B5LWZpbGVzLmNtZAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9jb3B5LWZpbGVzLmNtZApAQCAtNDIs
NiArNDIsNyBAQCBmb3IgJSVkIGluICgKICAgICBhc3NlbWJsZXINCiAgICAgYmluZGluZ3MNCiAg
ICAgYnl0ZWNvZGUNCisgICAgYnVpbHRpbnMNCiAgICAgZGZnDQogICAgIGRpc2Fzc2VtYmxlcg0K
ICAgICBoZWFwDQpAQCAtNzIsNiArNzMsOSBAQCB4Y29weSAveSAiJURlcml2ZWRTb3VyY2VzRGly
ZWN0b3J5JVxJbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oIiAiJVByaXZhdGVIZWFkZXJzRAogeGNv
cHkgL3kgIiVEZXJpdmVkU291cmNlc0RpcmVjdG9yeSVcSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0
Y2hlcnMuaCIgIiVQcml2YXRlSGVhZGVyc0RpcmVjdG9yeSUiID5OVUwNCiB4Y29weSAveSAiJURl
cml2ZWRTb3VyY2VzRGlyZWN0b3J5JVxJbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuaCIg
IiVQcml2YXRlSGVhZGVyc0RpcmVjdG9yeSUiID5OVUwNCiANCitlY2hvIENvcHlpbmcgYnVpbHRp
bnMgaGVhZGVyIGFzIGlmIGl0IHdlcmUgYSBwcml2YXRlIGhlYWRlci4uLg0KK3hjb3B5IC95ICIl
RGVyaXZlZFNvdXJjZXNEaXJlY3RvcnklXEpTQ0J1aWx0aW5zLmgiICIlUHJpdmF0ZUhlYWRlcnNE
aXJlY3RvcnklIiA+TlVMDQorDQogZWNobyBDb3B5aW5nIHJlc291cmNlcy4uLg0KIG1rZGlyICIl
UmVzb3VyY2VzRGlyZWN0b3J5JSIgMj5OVUwNCiB4Y29weSAveSAvZCBKYXZhU2NyaXB0Q29yZS5y
ZXNvdXJjZXNcKiAiJVJlc291cmNlc0RpcmVjdG9yeSUiID5OVUwNCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDI3ZTg3Njc0MGE5NjRiMDI4OTg0ZWQ2NzgxNjE4MjBhNWRjZjc3YzQu
LjkxMTU3M2FiMTdkMzM5NzRhYTdjOWEwMTFkYjIwMGIwOWFmNzhiZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC05MjIsNyArOTIyLDYgQEAKIAkJQTUwM0ZBMTkxODhFMEZCMDAw
MTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTMxODhFMEZBRjAwMTEwRjE0IC8qIEphdmFT
Y3JpcHRDYWxsRnJhbWUuY3BwICovOyB9OwogCQlBNTAzRkExQTE4OEUwRkIwMDAxMTBGMTQgLyog
SmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTUwM0ZBMTQxODhFMEZBRjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJh
bWUuaCAqLzsgfTsKIAkJQTUwM0ZBMUIxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENh
bGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNTAzRkExNTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAq
LzsgfTsKLQkJQTUwM0ZBMUMxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFt
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZB
MTYxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQlB
NTAzRkExRDE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNG
QTE3MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3Bw
ICovOyB9OwogCQlBNTAzRkExRTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZy
YW1lUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTAzRkExODE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJv
dG90eXBlLmggKi87IH07CiAJCUE1MDNGQTIxMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRCcmVh
a3BvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NTAzRkExRjE4OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0QnJlYWtwb2ludC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDI0LDYgKzEwMjMsNyBA
QAogCQlBNzBCMDgzMjE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MEIwODMwMTdBMEI3
OUIwMERBRjE0QiAvKiBERkdCaW5hcnlTd2l0Y2guY3BwICovOyB9OwogCQlBNzBCMDgzMzE3QTBC
NzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzBCMDgzMTE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmlu
YXJ5U3dpdGNoLmggKi87IH07CiAJCUE3MTIzNkU1MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNv
ZGVzMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTcxMjM2RTQxMTk1RjMzQzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgKi87IH07
CisJCUE3MURBODBGMTg4MERCQUIwMEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MURBODBFMTg4MERCQUIw
MEQxRjI5OSAvKiBKU1N0cmluZ0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzIwMjhCNjE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVz
dFJ1bm5lclV0aWxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3MjAyOEI0MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3Bw
ICovOyB9OwogCQlBNzIwMjhCODE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIwMjhC
NTE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcyMDI4QkExNzk3NjAzRDAwOTgw
MjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNzIwMjhCOTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklu
bGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMTE1MCw2ICsxMTUwLDEwIEBACiAJCUE3Q0EzQUU4MTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dl
YWtNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
Q0EzQUUyMTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuaCAqLzsgfTsKIAkJQTdDQTNBRUIx
N0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0EzQUU5MTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFr
TWFwRGF0YS5jcHAgKi87IH07CiAJCUE3Q0EzQUVDMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFw
RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdD
QTNBRUExN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmggKi87IH07CisJCUE3RDgwMUE0
MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTExODgwRDY2RTAwMjZDMzlC
IC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi87IH07CisJCUE3RDgwMUE1MTg4MEQ2NkUwMDI2
QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhl
Y3V0YWJsZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlBN0Q4MDFBODE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTYxODgwRDZBODAw
MjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCAqLzsgfTsKKwkJQTdEODAxQTkxODgwRDZBODAwMjZD
MzlCIC8qIEpTQ0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBN0Q4MDFBNzE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBN0Q4OUNGMjE3
QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q4OUNFMzE3QTBCOENDMDA3NzNBRDggLyogREZH
QmFzaWNCbG9jay5jcHAgKi87IH07CiAJCUE3RDg5Q0YzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdC
bG9ja0luc2VydGlvblNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBN0Q4OUNFNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25T
ZXQuY3BwICovOyB9OwogCQlBN0Q4OUNGNDE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNl
cnRpb25TZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3RDg5Q0U1MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNDYyLDYgKzI0
NjYsOCBAQAogCQlBNzEyMzZFNDExOTVGMzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVE9wY29kZXMzMl82NC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MThGNjFBMTE3NTRBMjEwMDI0NjVB
NyAvKiBSZWdFeHBKaXRUYWJsZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVnRXhwSml0VGFibGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MThGODIx
MTE3OEVCNEIwMDI0NjVBNyAvKiBjcmVhdGVfcmVnZXhfdGFibGVzICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IGZpbGVF
bmNvZGluZyA9IDQ7IHBhdGggPSBjcmVhdGVfcmVnZXhfdGFibGVzOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBNzFEQTgwRDE4ODBENzFGMDBEMUYyOTkgLyogZ2VuZXJhdGUtanMtYnVp
bHRpbnMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSAiZ2VuZXJhdGUtanMt
YnVpbHRpbnMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzFEQTgwRTE4ODBEQkFC
MDBEMUYyOTkgLyogSlNTdHJpbmdJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTU3RyaW5nSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NzIwMjhCNDE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI1MTc5NzYwMUUwMDk4MDI4QyAvKiBK
U0NUZXN0UnVubmVyVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlND
VGVzdFJ1bm5lclV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI5
MTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0Z1bmN0aW9uSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjU5MCw2ICsyNTk2LDExIEBACiAJCUE3Q0EzQUUyMTdEQTQxQUUwMDY1MzhB
RiAvKiBKU1dlYWtNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWFr
TWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Q0EzQUU5MTdEQTUxNjgwMDY1
MzhBRiAvKiBXZWFrTWFwRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWFrTWFwRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Q0Ez
QUVBMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWFrTWFwRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBN0Q4MDFBMDE4ODBENjZFMDAyNkMzOUIgLyogQXJyYXkucHJvdG90eXBlLmpzICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gQXJyYXkucHJvdG90eXBlLmpzOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFBMTE4ODBENjZFMDAyNkMzOUIgLyogQnVp
bHRpbkV4ZWN1dGFibGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3
RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVpbHRpbkV4ZWN1dGFibGVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlu
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NCdWlsdGlucy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDgwMUE3MTg4MEQ2QTgwMDI2QzM5
QiAvKiBKU0NCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NC
dWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0Q4OUNFMzE3QTBCOEND
MDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBERkdCYXNpY0Jsb2NrLmNwcDsgcGF0aCA9IGRmZy9ERkdCYXNpY0Jsb2NrLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdEODlDRTQxN0EwQjhDQzAwNzczQUQ4
IC8qIERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcDsgcGF0aCA9IGRmZy9ERkdCbG9ja0lu
c2VydGlvblNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RDg5Q0U1MTdB
MEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNldC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBERkdCbG9ja0luc2VydGlvblNldC5oOyBwYXRoID0gZGZnL0RGR0Js
b2NrSW5zZXJ0aW9uU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTI2LDYg
KzI5MzcsNyBAQAogCQkJCTg2MDRGNEYyMTQzQTZDNDQwMEIyOTVGNSAvKiBDaGFuZ2VMb2cgKi8s
CiAJCQkJRjY5MkE4NTQwMjU1NTk3RDAxRkY2MEY3IC8qIGNyZWF0ZV9oYXNoX3RhYmxlICovLAog
CQkJCUE3MThGODIxMTE3OEVCNEIwMDI0NjVBNyAvKiBjcmVhdGVfcmVnZXhfdGFibGVzICovLAor
CQkJCUE3MURBODBEMTg4MEQ3MUYwMEQxRjI5OSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAqLywK
IAkJCQk0NUUxMkQ4ODA2QTQ5QjBGMDBFOURGODQgLyoganNjLmNwcCAqLywKIAkJCQlGNjhFQkI4
QzAyNTVENEM2MDFGRjYwRjcgLyogY29uZmlnLmggKi8sCiAJCQkJRjVDMjkwRTYwMjg0Rjk4RTAx
ODYzNUNBIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggKi8sCkBAIC0yOTM0LDYgKzI5NDYsNyBA
QAogCQkJCTE0MzJFQkQ3MEEzNENBRDQwMDcxN0I5RiAvKiBBUEkgKi8sCiAJCQkJOTY4OENCMTIw
RUQxMkI0RTAwMUQ2NDlGIC8qIGFzc2VtYmxlciAqLywKIAkJCQlBNTRDRjJFQTE4NEVBNzM5MDAy
MzdGMTkgLyogYmluZGluZ3MgKi8sCisJCQkJQTdEODAxOUYxODgwRDY2RTAwMjZDMzlCIC8qIGJ1
aWx0aW5zICovLAogCQkJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLywK
IAkJCQk3RTM5RDgxRDBFQzM4RUZBMDAzQUYxMUEgLyogYnl0ZWNvbXBpbGVyICovLAogCQkJCTFD
OTA1MTNFMEJBOUU4ODMwMDgxRTlEMCAvKiBDb25maWd1cmF0aW9ucyAqLywKQEAgLTM1MDksNiAr
MzUyMiw4IEBACiAJCTY1MEZERjhEMDlEMEZDQTcwMDc2OUU1NCAvKiBEZXJpdmVkIFNvdXJjZXMg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUE3RDgwMUE2
MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgKi8sCisJCQkJQTdEODAxQTcxODgw
RDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggKi8sCiAJCQkJQkMxOEM1MjMwRTE2RkM4QTAw
QjM0NDYwIC8qIEFycmF5UHJvdG90eXBlLmx1dC5oICovLAogCQkJCUJDRDIwM0U3MEUxNzE4RjQw
MDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmx1dC5oICovLAogCQkJCUE1MTNFNUM2MTg1Rjk0MzYw
MDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICovLApAQCAtMzgxMSw2ICszODI2LDcg
QEAKIAkJCQlBNzkwREQ2QTE4MkY0OTk3MDA1ODg4MDcgLyogSlNTZXRJdGVyYXRvci5oICovLAog
CQkJCUJDMDJFOUI2MEUxODQyRkEwMDBGOTI5NyAvKiBKU1N0cmluZy5jcHAgKi8sCiAJCQkJRjY5
MkE4NjIwMjU1NTk3RDAxRkY2MEY3IC8qIEpTU3RyaW5nLmggKi8sCisJCQkJQTcxREE4MEUxODgw
REJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oICovLAogCQkJCTg2RTg1NTM4MTExQjk5
NjgwMDFBRjUxRSAvKiBKU1N0cmluZ0J1aWxkZXIuaCAqLywKIAkJCQkyNjAwQjVBNDE1MkJBQUE3
MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuY3BwICovLAogCQkJCTI2MDBCNUE1MTUyQkFBQTcw
MDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5oICovLApAQCAtNDU2MSw2ICs0NTc3LDE2IEBACiAJ
CQlwYXRoID0gcmVtb3RlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQTdE
ODAxOUYxODgwRDY2RTAwMjZDMzlCIC8qIGJ1aWx0aW5zICovID0geworCQkJaXNhID0gUEJYR3Jv
dXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlBN0Q4MDFBMDE4ODBENjZFMDAyNkMzOUIgLyogQXJy
YXkucHJvdG90eXBlLmpzICovLAorCQkJCUE3RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWls
dGluRXhlY3V0YWJsZXMuY3BwICovLAorCQkJCUE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBC
dWlsdGluRXhlY3V0YWJsZXMuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gYnVpbHRpbnM7CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8K
IAogLyogQmVnaW4gUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtNDYwNiwxMSAr
NDYzMiwxMSBAQAogCQkJCTg2QUREMTQ1MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVDRUVFMTUxODdGM0JBRDAwRTU1Qzk5IC8qIEluc3Bl
Y3RvckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUMwMjg1RDE3MTc5NjY4MDAzNTFFMzUg
LyogQVJNdjdET3Bjb2RlLmggaW4gSGVhZGVycyAqLywKLSAJCQkJMkE2ODI5NUIxODc1RjgwNTAw
QjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovLAotICAgICAgICAgICAg
ICAgIDJBNEVDOTBDMTg2MEQ2QzIwMDk0Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTJBNjgyOTVCMTg3NUY4MDUwMEI2QzNFMiAvKiBDb3B5V3JpdGVCYXJy
aWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkyQTRFQzkwQzE4NjBENkMyMDA5NEY3ODIgLyogV3Jp
dGVCYXJyaWVyQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTU5MzJBODE4M0M1QTI2MDBB
MUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTMyNDM5MzE4NTY5
NzA5MDAyRUQ2OTIgLyogQ29kZUdlbmVyYXRvckluc3BlY3RvclN0cmluZ3MucHkgaW4gSGVhZGVy
cyAqLywKLSAJCQkJQTUzMjQzOTIxODU2OTcwOTAwMkVENjkyIC8qIENvZGVHZW5lcmF0b3JJbnNw
ZWN0b3IucHkgaW4gSGVhZGVycyAqLywKKwkJCQlBNTMyNDM5MjE4NTY5NzA5MDAyRUQ2OTIgLyog
Q29kZUdlbmVyYXRvckluc3BlY3Rvci5weSBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTRGMTdF
RTI3NDkwMEFCQjIxNyAvKiBUZW1wUmVnaXN0ZXJTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1
MEU0QjY0MTg4MDlERDUwMDY4QTQ2RCAvKiBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkVCNThDMTUxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxp
bmdTY29wZS5oIGluIEhlYWRlcnMgKi8sCkBAIC00NjIyLDcgKzQ2NDgsNyBAQAogCQkJCTBGODMz
NUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNTg0MEUyOTE4N0NBNUU2MDA4NDNCMTAgLyogaW5saW5lLWFuZC1taW5pZnkt
c3R5bGVzaGVldHMtYW5kLXNjcmlwdHMucHkgaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MEUyQjE4
N0NBNzVCMDA4NDNCMTAgLyoganNtaW4ucHkgaW4gSGVhZGVycyAqLywKLSAJCQkJQTUzMjQzOTgx
ODU2QTQ4OTAwMkVENjkyIC8qIEluc3BlY3RvckpTLmpzb24gaW4gSGVhZGVycyAqLywKKwkJCQlB
NTMyNDM5ODE4NTZBNDg5MDAyRUQ2OTIgLyogSW5zcGVjdG9ySlMuanNvbiBpbiBIZWFkZXJzICov
LAogCQkJCUE1ODQwRTJBMTg3Q0E3NTkwMDg0M0IxMCAvKiB4eGQucGwgaW4gSGVhZGVycyAqLywK
IAkJCQlGRUEwODYyMDE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTdBOEFGMzUxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmggaW4gSGVh
ZGVycyAqLywKQEAgLTQ3MzMsNyArNDc1OSw3IEBACiAJCQkJQTFBMDA5QzAxODMxQTIyRDAwQ0Y4
NzExIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUM5REM1
MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY0ODUzMjgxODdERkRFQzAwODNCNjg3IC8qIEZUTEF2YWlsYWJsZVJlY292ZXJ5LmggaW4g
SGVhZGVycyAqLywKLSAgICAgICAgICAgICAgICBBNTkzQ0Y4NzE4NDAzOENBMDBCRkNFMjcgLyog
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU5M0NGODcxODQw
MzhDQTAwQkZDRTI3IC8qIEluc3BlY3RvckFnZW50UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMjU2QzM2MTYyN0IwQUQwMDdGMjc4MyAvKiBERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93
UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5NEIxNEMzQ0QyRjAwN0Mz
REIxIC8qIERGR0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NTgxNEVG
OTBBMjAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTQ4NzIsNiAr
NDg5OCw3IEBACiAJCQkJMEZFQTBBMUQxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVh
cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMUYxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1OTQ1NTkzMTgyNDc0
NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCUE3RDgwMUE5MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZFQTBBMEExNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENhcGFiaWxpdGllcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY0ODUzMkExODdERkRFQzAwODNCNjg3IC8qIEZUTFJlY292ZXJ5
T3Bjb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEEyMzE3MDk2MDY5MDBCQjcyMkMgLyog
RlRMQ29tbW9uVmFsdWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTQ5NDYsNiArNDk3Myw3IEBACiAJ
CQkJQkMxOEM0MEYwRTE2RjVDRDAwQjM0NDYwIC8qIElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUMyNUY4QkNFMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk5MTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ0hl
YWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdEODAxQTUxODgwRDY2RTAwMjZDMzlCIC8qIEJ1
aWx0aW5FeGVjdXRhYmxlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOUExNUVEOEU0NjAw
RjE2N0IyIC8qIEluZGV4aW5nSGVhZGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZC
N0YzOUIxNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZDRUZBQjAxODA1Q0E2RDAwNDcyQ0U0IC8qIEluaXRpYWxpemVMTFZNLmggaW4gSGVhZGVy
cyAqLywKQEAgLTUyMTgsNiArNTI0Niw3IEBACiAJCQkJQTUzMjQzODgxODU2ODMzNTAwMkVENjky
IC8qIEluc3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzE4QzQ1NjBFMTZGNUNEMDBCMzQ0NjAgLyogUHJvdGVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTQ3NEMzM0IxNkFBMkQ5NTAwNjJGMDFEIC8qIFByb3RvdHlwZU1hcC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTcxREE4MEYxODgwREJBQjAwRDFGMjk5IC8qIEpTU3RyaW5nSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQxNENBN0REOTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXREaXJl
Y3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDMDA4Q0U3MTg3NjMxQjYwMDk1NUMy
NCAvKiBNaWNyb3Rhc2suaCBpbiBIZWFkZXJzICovLApAQCAtNTgzNiw2ICs1ODY1LDcgQEAKIAkJ
CQlBN0Q4OUNGMjE3QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNzBCMDgzMjE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDg5Q0YzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9j
a0luc2VydGlvblNldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBN0Q4MDFBNDE4ODBENjZFMDAy
NkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUM5
REM0MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkQ4MkUyMTE0MTcyQ0UzMDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0aWVzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRkZDOTU3MTRFRjkwQTAwMEM3MjUzMiAvKiBERkdDRkFQaGFz
ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU4NTIsNiArNTg4Miw3IEBACiAJCQkJMEZGRkM5NTkx
NEVGOTBBNjAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MkZDNzcyMTZFMTJGNzEwMDM4RDk3NiAvKiBERkdEQ0VQaGFzZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjhGMkI5OTE3MkYwNEZGMDA3REJEQTUgLyogREZHRGVzaXJlZElkZW50aWZpZXJzLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUE3RDgwMUE4MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWls
dGlucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzNFMTMzMDE3OTYyNENEMDBFNERFQTggLyog
REZHRGVzaXJlZFN0cnVjdHVyZUNoYWlucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkMwRjdD
RDE3QkJGQzVCMDA0NjRGRTQgLyogREZHRGVzaXJlZFRyYW5zaXRpb25zLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGRTg1MzRCMTcyM0NEQTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2lu
dHMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC01OTc2LDcgKzYwMDcsNyBAQAogCQkJCTBGNkIxQ0M1
MTg2MkM0NzgwMDg0NUQ5NyAvKiBGVExVbndpbmRJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGOUQzMzlBMTgwM0FEQjcwMDczQzJCQyAvKiBGVExTdGFja01hcHMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEZFQTBBMTYxNzA2QkI5MDAwQkI3MjJDIC8qIEZUTFN0YXRlLmNwcCBpbiBTb3Vy
Y2VzICovLAotIAkJCQk3QzAwOENEMjE4NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9taXNlRnVuY3Rp
b25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDMDA4Q0QyMTg2RjhBOTMwMDk1NUMyNCAvKiBK
U1Byb21pc2VGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2QjFDQjUxODVGQzlF
OTAwODQ1RDk3IC8qIEZUTEpTQ2FsbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJFMTE3
MTc4RTFDMDA2OTBDN0YgLyogRlRMVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1OTND
RjdDMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9B
cnJheS5wcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXku
cHJvdG90eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlYjQyZjVjYzQzM2YxNjM2MzQzYmZjOTgyYWEyYWFm
YjMzNmU5NDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQXJyYXkucHJvdG90eXBlLmpzCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlvbiBldmVyeShjYWxsYmFjayAvKiwg
dGhpc0FyZyAqLykgeworICAgICJ1c2Ugc3RyaWN0IjsKKyAgICBpZiAodGhpcyA9PT0gbnVsbCkK
KyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1
aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCIpOworICAgIAorICAgIGlmICh0aGlzID09PSB1
bmRlZmluZWQpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUu
ZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVmaW5lZCIpOworICAgIAorICAg
IHZhciBhcnJheSA9IEBPYmplY3QodGhpcyk7CisgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0
aCA+Pj4gMDsKKyAgICAKKyAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKQor
ICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxi
YWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOworCisgICAgdmFyIHRoaXNBcmcgPSBhcmd1bWVudHMu
bGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDsKKyAgICAKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmICghKGkgaW4gYXJyYXkpKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghY2FsbGJhY2suQGNhbGwodGhpc0Fy
ZywgYXJyYXlbaV0sIGksIGFycmF5KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQxZGJi
NWY5MjI1ZTI4YTEyZWQzZDE3OThmZjE3NjhlNDM2NzFhNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCkBAIC0w
LDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIK
KworI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisj
aW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKKyNpbmNsdWRlICJQYXJzZXIuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK0J1aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKFZN
JiB2bSkKKyAgICA6IG1fdm0odm0pCisjZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0Vf
TUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgLCBtXyMjbmFtZSMjU291cmNlKG1h
a2VTb3VyY2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoc18jI25hbWUsIGxlbmd0aCks
IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCI8YnVpbHRpbj4iKSkpCisgICAgSlNDX0ZP
UkVBQ0hfQlVJTFRJTihJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYg
RVhQT1NFX0JVSUxUSU5fU1RSSU5HUworeworfQorCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCit7CisgICAgSlNUZXh0UG9z
aXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZTsKKyAgICBQYXJzZXJFcnJvciBlcnJvcjsK
KyAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oJm1f
dm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBKU1BhcnNlQnVpbHRpbiwgSlNQYXJzZVByb2dy
YW1Db2RlLCBlcnJvciwgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOworCisgICAgaWYgKCFw
cm9ncmFtKSB7CisgICAgICAgIGRhdGFMb2coIkZhdGFsIGVycm9yIGNvbXBpbGluZyBidWlsdGlu
IGZ1bmN0aW9uICciLCBuYW1lLnN0cmluZygpLCAiJzogIiwgZXJyb3IubV9tZXNzYWdlKTsKKyAg
ICAgICAgQ1JBU0goKTsKKyAgICB9CisKKyAgICBTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVtZW50
ID0gcHJvZ3JhbS0+c2luZ2xlU3RhdGVtZW50KCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0
YXRlbWVudCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudC0+aXNFeHByU3RhdGVt
ZW50KCkpOworICAgIEV4cHJlc3Npb25Ob2RlKiBmdW5jRXhwciA9IHN0YXRpY19jYXN0PEV4cHJT
dGF0ZW1lbnROb2RlKj4oZXhwclN0YXRlbWVudCktPmV4cHIoKTsKKyAgICBSRUxFQVNFX0FTU0VS
VChmdW5jRXhwcik7CisgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHItPmlzRnVuY0V4cHJOb2Rl
KCkpOworICAgIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkgPSBzdGF0aWNfY2FzdDxGdW5jRXhwck5v
ZGUqPihmdW5jRXhwciktPmJvZHkoKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghcHJvZ3JhbS0+aGFz
Q2FwdHVyZWRWYXJpYWJsZXMoKSk7CisgICAgCisgICAgYm9keS0+c2V0RW5kUG9zaXRpb24ocG9z
aXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keSk7CisgICAg
UkVMRUFTRV9BU1NFUlQoYm9keS0+aWRlbnQoKS5pc051bGwoKSk7CisgICAgCisgICAgLy8gVGhp
cyBmdW5jdGlvbiBhc3N1bWVzIGFuIGlucHV0IHN0cmluZyB0aGF0IHdvdWxkIHJlc3VsdCBpbiBh
IHNpbmdsZSBhbm9ueW1vdXMgZnVuY3Rpb24gZXhwcmVzc2lvbi4KKyAgICBib2R5LT5zZXRFbmRQ
b3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKKyAgICBSRUxFQVNFX0FTU0VSVChi
b2R5KTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNsb3NlZFZhcmlhYmxlIDogcHJvZ3JhbS0+Y2xv
c2VkVmFyaWFibGVzKCkpIHsKKyAgICAgICAgaWYgKGNsb3NlZFZhcmlhYmxlID09IG1fdm0ucHJv
cGVydHlOYW1lcy0+YXJndW1lbnRzLmltcGwoKSkKKyAgICAgICAgY29udGludWU7CisgICAgICAg
IAorICAgICAgICBpZiAoY2xvc2VkVmFyaWFibGUgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT51bmRl
ZmluZWRLZXl3b3JkLmltcGwoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBSRUxF
QVNFX0FTU0VSVChjbG9zZWRWYXJpYWJsZS0+aXNFbXB0eVVuaXF1ZSgpKTsKKyAgICB9CisgICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJm1fdm0sIHNvdXJjZSwgYm9keSwgdHJ1ZSwgVW5s
aW5rZWRCdWlsdGluRnVuY3Rpb24pOworICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+bV9uYW1lVmFs
dWUuc2V0KG1fdm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwganNTdHJpbmcoJm1fdm0sIG5hbWUuc3Ry
aW5nKCkpKTsKKyAgICByZXR1cm4gZnVuY3Rpb25FeGVjdXRhYmxlOworfQorCisjZGVmaW5lIERF
RklORV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpuYW1lIyNFeGVj
dXRhYmxlKCkgXAore1wKKyAgICBpZiAoIW1fIyNuYW1lIyNFeGVjdXRhYmxlKVwKKyAgICAgICAg
bV8jI25hbWUjI0V4ZWN1dGFibGUgPSBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShtXyMjbmFtZSMj
U291cmNlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPmZ1bmN0aW9uTmFtZSk7XAorICAgIHJldHVybiBt
XyMjbmFtZSMjRXhlY3V0YWJsZS5nZXQoKTtcCit9CitKU0NfRk9SRUFDSF9CVUlMVElOKERFRklO
RV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX1NPVVJDRVMKKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRh
Ymxlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQ5YTE5ZTI2MTUwNzk0YTY2OWVjOThlMzk5YmY2N2Y3ZjcxMDY0
MTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbkV4ZWN1dGFibGVzLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQnVpbHRpbkV4ZWN1dGFibGVzX2gKKyNk
ZWZpbmUgQnVpbHRpbkV4ZWN1dGFibGVzX2gKKworI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisj
aW5jbHVkZSAiU291cmNlQ29kZS5oIgorI2luY2x1ZGUgIldlYWsuaCIKKyNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU7CitjbGFzcyBJZGVudGlmaWVyOworY2xhc3MgVk07CisKK2NsYXNzIEJ1aWx0
aW5FeGVjdXRhYmxlcyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8QnVpbHRpbkV4
ZWN1dGFibGVzPiBjcmVhdGUoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBCdWlsdGluRXhlY3V0YWJsZXModm0pKTsKKyAgICB9CisgICAgCisjZGVmaW5lIEVYUE9T
RV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCitjb25zdCBTb3Vy
Y2VDb2RlJiBuYW1lIyNTb3VyY2UoKSB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CisgICAg
CisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTihFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1
bmRlZiBFWFBPU0VfQlVJTFRJTl9TT1VSQ0VTCisgICAgCitwcml2YXRlOgorICAgIEJ1aWx0aW5F
eGVjdXRhYmxlcyhWTSYpOworICAgIFZNJiBtX3ZtOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShjb25zdCBTb3VyY2VDb2RlJiwgY29uc3Qg
SWRlbnRpZmllciYpOworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFt
ZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpXAorICAgIFNvdXJjZUNvZGUgbV8jI25hbWUjI1NvdXJj
ZTsgXAorICAgIFdlYWs8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+IG1fIyNuYW1lIyNFeGVj
dXRhYmxlOworICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4oREVDTEFSRV9CVUlMVElOX1NPVVJDRV9N
RU1CRVJTKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworfTsKKworfQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
aW5kZXggY2IwZGM2ZmJmMTM4ZWRlM2U3ZGJmMzQ1NWMzOWI1MTEyZjMzN2E3YS4uODYwMGYxOWFj
MjQ3YmFjMmMzNWIxZTBmOTUxYmQ5MzAxZWM3ZDg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTQzLDExICs0MywxMyBAQAogI2luY2x1ZGUg
IkpJVC5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgi
Ci0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5j
bHVkZSAiTExJbnRFbnRyeXBvaW50LmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5o
IgorI2luY2x1ZGUgIk5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJPYmplY3RD
b25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQb2x5bW9y
cGhpY1B1dEJ5SWRMaXN0LmgiCiAjaW5jbHVkZSAiUmVkdWNlV2hpdGVzcGFjZS5oIgpAQCAtMTU2
OSw3ICsxNTcxLDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3du
ZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW4KIAogICAgIHNldENvbnN0YW50
UmVnaXN0ZXJzKHVubGlua2VkQ29kZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVycygpKTsKICAgICBp
ZiAodW5saW5rZWRDb2RlQmxvY2stPnVzZXNHbG9iYWxPYmplY3QoKSkKLSAgICAgICAgbV9jb25z
dGFudFJlZ2lzdGVyc1t1bmxpbmtlZENvZGVCbG9jay0+Z2xvYmFsT2JqZWN0UmVnaXN0ZXIoKS5v
ZmZzZXQoKV0uc2V0KCptX3ZtLCBvd25lckV4ZWN1dGFibGUsIG1fZ2xvYmFsT2JqZWN0LmdldCgp
KTsKKyAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1t1bmxpbmtlZENvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0UmVnaXN0ZXIoKS50b0NvbnN0YW50SW5kZXgoKV0uc2V0KCptX3ZtLCBvd25lckV4ZWN1
dGFibGUsIG1fZ2xvYmFsT2JqZWN0LmdldCgpKTsKICAgICBtX2Z1bmN0aW9uRGVjbHMucmVzaXpl
VG9GaXQodW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpKTsKICAgICBm
b3IgKHNpemVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVj
bHMoKSwgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rp
b25EZWNsKGkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmlu
ZGV4IDY4YmMwMzc5ZjU3NDRjOWE4Zjc0MzFkYjY0ZjhhYjU0ZTZlMTA1M2YuLjQ5OTVjNTJjZjhi
MmIxYjRkNjI4MDQ1M2VlZDI3Yzc3NGE0OTU1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTU2LDcgKzU2LDYgQEAKICNpbmNsdWRlICJIYW5kbGVy
SW5mby5oIgogI2luY2x1ZGUgIk9iamVjdEFsbG9jYXRpb25Qcm9maWxlLmgiCiAjaW5jbHVkZSAi
T3B0aW9ucy5oIgotI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQdXRQcm9wZXJ0
eVNsb3QuaCIKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9maWxlZENvZGVC
bG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwCmluZGV4IDk4
NmUwM2QwY2JhNzE4NWIzOWNlZTAyM2Y0YWI2YmM5YjhjY2I2ZTQuLjcwZWY5YjQyOTAxYzA1OGJj
NzJjOWRiOTJkY2MzM2Q1M2Q2YmFhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qcm9maWxlZENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb2ZpbGVkQ29kZUJsb2NrSmV0dGlz
b25pbmdXYXRjaHBvaW50LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9j
ay5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgogI2luY2x1ZGUgIkRGR0V4aXRQcm9maWxlLmgi
CisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAK
aW5kZXggMWRmYjVhYzZhZDkwOTNmOGY4MTEwMWVmN2YyZTYxMjMxMWFjMTkzOS4uNDMzOTBkOTY1
ZmM1MDM0MDE2ZjdiZmZmMjNlNjhiYjFlMDU0NTUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC00OSw5ICs0OSw5
IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s6OnNfaW5mbyA9IHsg
IlVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayIsCiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRFdmFs
Q29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZEV2YWxDb2RlQmxvY2siLCAmQmFzZTo6c19p
bmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlua2VkRXZhbENvZGVCbG9jaykgfTsK
IGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01F
VEhPRF9UQUJMRShVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKSB9OwogCi1zdGF0aWMgVW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhWTSYgdm0sIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgRGVidWdnZXJNb2RlIGRlYnVnZ2Vy
TW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQorc3Rh
dGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2so
Vk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIERlYnVnZ2VyTW9k
ZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFVubGlua2VkRnVuY3Rp
b25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yKQogewotICAgIFJlZlB0cjxG
dW5jdGlvbkJvZHlOb2RlPiBib2R5ID0gcGFyc2U8RnVuY3Rpb25Cb2R5Tm9kZT4oJnZtLCBzb3Vy
Y2UsIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVjdXRh
YmxlLT5pc0luU3RyaWN0Q29udGV4dCgpID8gSlNQYXJzZVN0cmljdCA6IEpTUGFyc2VOb3JtYWws
IEpTUGFyc2VGdW5jdGlvbkNvZGUsIGVycm9yKTsKKyAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9k
ZT4gYm9keSA9IHBhcnNlPEZ1bmN0aW9uQm9keU5vZGU+KCZ2bSwgc291cmNlLCBleGVjdXRhYmxl
LT5wYXJhbWV0ZXJzKCksIGV4ZWN1dGFibGUtPm5hbWUoKSwgZXhlY3V0YWJsZS0+dG9TdHJpY3Ru
ZXNzKCksIEpTUGFyc2VGdW5jdGlvbkNvZGUsIGVycm9yKTsKIAogICAgIGlmICghYm9keSkgewog
ICAgICAgICBBU1NFUlQoZXJyb3IubV90eXBlICE9IFBhcnNlckVycm9yOjpFcnJvck5vbmUpOwpA
QCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJh
dGVGdW5jdGlvbkNvZGVCbG9jayhWTSYgdm0sIFVubGlua2VkRnVuYwogICAgIGJvZHktPmZpbmlz
aFBhcnNpbmcoZXhlY3V0YWJsZS0+cGFyYW1ldGVycygpLCBleGVjdXRhYmxlLT5uYW1lKCksIGV4
ZWN1dGFibGUtPmZ1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZSgpKTsKICAgICBleGVjdXRhYmxl
LT5yZWNvcmRQYXJzZShib2R5LT5mZWF0dXJlcygpLCBib2R5LT5oYXNDYXB0dXJlZFZhcmlhYmxl
cygpKTsKICAgICAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUoJnZtLCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFi
bGVJbmZvKGJvZHktPm5lZWRzQWN0aXZhdGlvbigpLCBib2R5LT51c2VzRXZhbCgpLCBib2R5LT5p
c1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KSk7CisgICAgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3Jl
YXRlKCZ2bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5mbyhib2R5LT5uZWVkc0FjdGl2YXRp
b24oKSwgYm9keS0+dXNlc0V2YWwoKSwgYm9keS0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29k
ZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uKSk7
CiAgICAgT3duUHRyPEJ5dGVjb2RlR2VuZXJhdG9yPiBnZW5lcmF0b3IoYWRvcHRQdHIobmV3IEJ5
dGVjb2RlR2VuZXJhdG9yKHZtLCBib2R5LmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJv
ZmlsZXJNb2RlKSkpOwogICAgIGVycm9yID0gZ2VuZXJhdG9yLT5nZW5lcmF0ZSgpOwogICAgIGJv
ZHktPmRlc3Ryb3lEYXRhKCk7CkBAIC04MiwxMyArODIsMTQgQEAgdW5zaWduZWQgVW5saW5rZWRD
b2RlQmxvY2s6OmFkZE9yRmluZENvbnN0YW50KEpTVmFsdWUgdikKICAgICByZXR1cm4gYWRkQ29u
c3RhbnQodik7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9tR2xvYmFsQ29k
ZSkKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSwgVW5saW5rZWRG
dW5jdGlvbktpbmQga2luZCkKICAgICA6IEJhc2UoKnZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX251
bUNhcHR1cmVkVmFyaWFibGVzKG5vZGUtPmNhcHR1cmVkVmFyaWFibGVDb3VudCgpKQogICAgICwg
bV9mb3JjZVVzZXNBcmd1bWVudHMobm9kZS0+dXNlc0FyZ3VtZW50cygpKQogICAgICwgbV9pc0lu
U3RyaWN0Q29udGV4dChub2RlLT5pc1N0cmljdE1vZGUoKSkKICAgICAsIG1faGFzQ2FwdHVyZWRW
YXJpYWJsZXMobm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkKICAgICAsIG1faXNGcm9tR2xv
YmFsQ29kZShpc0Zyb21HbG9iYWxDb2RlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihraW5k
ID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uKQogICAgICwgbV9uYW1lKG5vZGUtPmlkZW50KCkp
CiAgICAgLCBtX2luZmVycmVkTmFtZShub2RlLT5pbmZlcnJlZE5hbWUoKSkKICAgICAsIG1fcGFy
YW1ldGVycyhub2RlLT5wYXJhbWV0ZXJzKCkpCkBAIC0xNjYsNyArMTY3LDcgQEAgVW5saW5rZWRG
dW5jdGlvbkNvZGVCbG9jayogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNvZGVCbG9ja0Zv
cihWTSYgdm0sIGNvbnMKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayh2bSwgdGhp
cywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2Rl
LCBlcnJvcik7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJh
dGVGdW5jdGlvbkNvZGVCbG9jayh2bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQs
IGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5r
ZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBlcnJvcik7CiAgICAg
CiAgICAgaWYgKGVycm9yLm1fdHlwZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKQogICAgICAg
ICByZXR1cm4gMDsKQEAgLTIxMCw2ICsyMTEsNyBAQCBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5r
ZWRDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZVR5cGUgY29kZQog
ICAgICwgbV9pc1N0cmljdE1vZGUoaW5mby5tX2lzU3RyaWN0TW9kZSkKICAgICAsIG1faXNDb25z
dHJ1Y3RvcihpbmZvLm1faXNDb25zdHJ1Y3RvcikKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJs
ZXMoZmFsc2UpCisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8ubV9pc0J1aWx0aW5GdW5j
dGlvbikKICAgICAsIG1fZmlyc3RMaW5lKDApCiAgICAgLCBtX2xpbmVDb3VudCgwKQogICAgICwg
bV9lbmRDb2x1bW4oVUlOVF9NQVgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IGI5ZGFlMmQ1YzY5Yzc5Y2VhYWE4MDIzZDJh
M2ExZjI2ZDQ2MDk0M2IuLmFiZjZjZjM1YjkzMDZhNGY3YTMwMWFiMGRmNzY2NmVjNjEyZTM3OWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5oCkBAIC02NiwyNiArNjYsMzUgQEAgdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZE9iamVj
dEFsbG9jYXRpb25Qcm9maWxlOwogdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZExMSW50Q2FsbExp
bmtJbmZvOwogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJv
b2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9v
bCBpc0NvbnN0cnVjdG9yKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9u
LCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBi
b29sIGlzQnVpbHRpbkZ1bmN0aW9uKQogICAgICAgICA6IG1fbmVlZHNBY3RpdmF0aW9uKG5lZWRz
QWN0aXZhdGlvbikKICAgICAgICAgLCBtX3VzZXNFdmFsKHVzZXNFdmFsKQogICAgICAgICAsIG1f
aXNTdHJpY3RNb2RlKGlzU3RyaWN0TW9kZSkKICAgICAgICAgLCBtX2lzQ29uc3RydWN0b3IoaXND
b25zdHJ1Y3RvcikKKyAgICAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGlzQnVpbHRpbkZ1bmN0
aW9uKQogICAgIHsKICAgICB9Ci0gICAgYm9vbCBtX25lZWRzQWN0aXZhdGlvbjsKLSAgICBib29s
IG1fdXNlc0V2YWw7Ci0gICAgYm9vbCBtX2lzU3RyaWN0TW9kZTsKLSAgICBib29sIG1faXNDb25z
dHJ1Y3RvcjsKKyAgICBib29sIG1fbmVlZHNBY3RpdmF0aW9uIDogMTsKKyAgICBib29sIG1fdXNl
c0V2YWwgOiAxOworICAgIGJvb2wgbV9pc1N0cmljdE1vZGUgOiAxOworICAgIGJvb2wgbV9pc0Nv
bnN0cnVjdG9yIDogMTsKKyAgICBib29sIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOworfTsKKwor
ZW51bSBVbmxpbmtlZEZ1bmN0aW9uS2luZCB7CisgICAgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwK
KyAgICBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwKIH07CiAKIGNsYXNzIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlIDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6CisgICAgZnJpZW5kIGNsYXNz
IEJ1aWx0aW5FeGVjdXRhYmxlczsKICAgICBmcmllbmQgY2xhc3MgQ29kZUNhY2hlOworICAgIGZy
aWVuZCBjbGFzcyBWTTsKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0YXRpYyBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlLCBib29sIGlzRnJvbUdsb2JhbENvZGUgPSBm
YWxzZSkKKyAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSog
dm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSogbm9kZSwgYm9v
bCBpc0Zyb21HbG9iYWxDb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9u
S2luZCkKICAgICB7Ci0gICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5j
ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
Pih2bS0+aGVhcCkpIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgaXNGcm9tR2xv
YmFsQ29kZSk7CisgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2
bS0+aGVhcCkpIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgaXNGcm9tR2xvYmFs
Q29kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3Jl
YXRpb24oKnZtKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KQEAgLTk5LDYgKzEw
OCwxNCBAQCBwdWJsaWM6CiAgICAgfQogICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0
OwogICAgIGJvb2wgaXNJblN0cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5TdHJp
Y3RDb250ZXh0OyB9CisgICAgSlNQYXJzZXJTdHJpY3RuZXNzIHRvU3RyaWN0bmVzcygpIGNvbnN0
CisgICAgeworICAgICAgICBpZiAobV9pc0J1aWx0aW5GdW5jdGlvbikKKyAgICAgICAgICAgIHJl
dHVybiBKU1BhcnNlQnVpbHRpbjsKKyAgICAgICAgaWYgKG1faXNJblN0cmljdENvbnRleHQpCisg
ICAgICAgICAgICByZXR1cm4gSlNQYXJzZVN0cmljdDsKKyAgICAgICAgcmV0dXJuIEpTUGFyc2VO
b3JtYWw7CisgICAgfQogICAgIEZ1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZSBmdW5jdGlvbk5h
bWVJc0luU2NvcGVUb2dnbGUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZUlzSW5TY29w
ZVRvZ2dsZTsgfQogCiAgICAgdW5zaWduZWQgZmlyc3RMaW5lT2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gbV9maXJzdExpbmVPZmZzZXQ7IH0KQEAgLTE0Miw4ICsxNTksMTAgQEAgcHVibGljOgogICAg
IHN0YXRpYyBjb25zdCBib29sIGhhc0ltbW9ydGFsU3RydWN0dXJlID0gdHJ1ZTsKICAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCisgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KKwogcHJpdmF0ZToKLSAgICBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNv
ZGUmLCBGdW5jdGlvbkJvZHlOb2RlKiwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlKTsKKyAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUm
LCBGdW5jdGlvbkJvZHlOb2RlKiwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlLCBVbmxpbmtlZEZ1bmN0
aW9uS2luZCk7CiAgICAgV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1f
Y29kZUJsb2NrRm9yQ2FsbDsKICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jaz4gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3Q7CiAKQEAgLTE1Miw2ICsxNzEsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9pc0luU3RyaWN0Q29udGV4dCA6IDE7CiAgICAgYm9vbCBtX2hhc0Nh
cHR1cmVkVmFyaWFibGVzIDogMTsKICAgICBib29sIG1faXNGcm9tR2xvYmFsQ29kZSA6IDE7Cisg
ICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKIAogICAgIElkZW50aWZpZXIgbV9uYW1l
OwogICAgIElkZW50aWZpZXIgbV9pbmZlcnJlZE5hbWU7CkBAIC0zMTksNiArMzM5LDggQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0SXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKGJvb2wgaXNOdW1lcmlj
Q29tcGFyZUZ1bmN0aW9uKSB7IG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uID0gaXNOdW1lcmlj
Q29tcGFyZUZ1bmN0aW9uOyB9CiAgICAgYm9vbCBpc051bWVyaWNDb21wYXJlRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQogCisgICAgYm9vbCBp
c0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0K
KyAgICAKICAgICB2b2lkIHNocmlua1RvRml0KCkKICAgICB7CiAgICAgICAgIG1fanVtcFRhcmdl
dHMuc2hyaW5rVG9GaXQoKTsKQEAgLTUwMCw2ICs1MjIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9pc1N0cmljdE1vZGUgOiAxOwogICAgIGJvb2wgbV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICBi
b29sIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgOiAxOworICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5j
dGlvbiA6IDE7CiAgICAgdW5zaWduZWQgbV9maXJzdExpbmU7CiAgICAgdW5zaWduZWQgbV9saW5l
Q291bnQ7CiAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDY4
MTBhYjgwMDJjZTZiYjhkNzhlN2ZmMjIyN2Y0YzZlYTdiNzU4YzIuLmVjNTIxYjUzMDQ2MzkyM2U3
NGMwMTBmYTIxOGU1OWVkMmE5YTNjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0xNzUsNiArMTc1
LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3Jh
bU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFAKICNlbmRpZgogICAgICwgbV91c2VzRXhjZXB0
aW9ucyhmYWxzZSkKICAgICAsIG1fZXhwcmVzc2lvblRvb0RlZXAoZmFsc2UpCisgICAgLCBtX2lz
QnVpbHRpbkZ1bmN0aW9uKGZhbHNlKQogewogICAgIGlmIChtX3Nob3VsZEVtaXREZWJ1Z0hvb2tz
KQogICAgICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNGdWxsU2NvcGVDaGFpbih0cnVlKTsKQEAg
LTIyMiw3ICsyMjMsMTMgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZN
JiB2bSwgRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb25Cb2R5LCBVbmwKICNlbmRpZgogICAgICwg
bV91c2VzRXhjZXB0aW9ucyhmYWxzZSkKICAgICAsIG1fZXhwcmVzc2lvblRvb0RlZXAoZmFsc2Up
CisgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGNvZGVCbG9jay0+aXNCdWlsdGluRnVuY3Rpb24o
KSkKIHsKKyAgICBpZiAobV9pc0J1aWx0aW5GdW5jdGlvbikgeworICAgICAgICBtX3Nob3VsZEVt
aXRQcm9maWxlSG9va3MgPSBmYWxzZTsKKyAgICAgICAgbV9zaG91bGRFbWl0RGVidWdIb29rcyA9
IGZhbHNlOworICAgIH0KKwogICAgIGlmIChtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKQogICAgICAg
ICBtX2NvZGVCbG9jay0+c2V0TmVlZHNGdWxsU2NvcGVDaGFpbih0cnVlKTsKIApAQCAtNDM4LDYg
KzQ0NSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2
YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kCiAjZW5kaWYKICAgICAsIG1fdXNlc0V4
Y2VwdGlvbnMoZmFsc2UpCiAgICAgLCBtX2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQorICAgICwg
bV9pc0J1aWx0aW5GdW5jdGlvbihmYWxzZSkKIHsKICAgICBtX2NvZGVCbG9jay0+c2V0TmVlZHNG
dWxsU2NvcGVDaGFpbih0cnVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDRlOWYyMTNjOWJmYTZjZjE5
NGIxYTE0ZmU5MTllODMzMzdhZTM1ZDkuLjE1ODQyNzRiNzhlYTZjMGJkMGVmYjBiOTgyNWM4MThi
ZTBkYmMwNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ2MSw3ICs0NjEsOSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgYm9vbCBzaG91bGRFbWl0RGVidWdIb29rcygpIHsgcmV0dXJuIG1fc2hvdWxk
RW1pdERlYnVnSG9va3M7IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOyB9Ci0KKyAgICAgICAg
CisgICAgICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVp
bHRpbkZ1bmN0aW9uOyB9CisgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBMYWJlbDsKICAgICAgICAgCkBAIC01NDMsNyArNTQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIAogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbWFrZUZ1bmN0
aW9uKEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5z
b3VyY2UoKSwgYm9keSk7CisgICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIGJvZHksIGZhbHNlLCBp
c0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5v
cm1hbEZ1bmN0aW9uKTsKICAgICAgICAgfQogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbml0
TGF6eVJlZ2lzdGVyKFJlZ2lzdGVySUQqKTsKQEAgLTY3Nyw2ICs2NzksNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBib29sIG1fdXNlc0V4Y2VwdGlvbnM7CiAgICAgICAgIGJvb2wgbV9l
eHByZXNzaW9uVG9vRGVlcDsKKyAgICAgICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9uOwogICAg
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcAppbmRleCAxZmZkNGYzMTE4ODJkMGVlNWM1NTE0ZjViOGIyNTkzOWQ5NzVl
Mzc5Li42MmVjYTM2YTEwZDc3MDhhOTI4ZDQzYWMwM2YyZmM4NjE1Y2VjYTc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBA
IC0yNiwxMCArMjYsMTAgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5vZGVz
LmgiCi0jaW5jbHVkZSAiTm9kZUNvbnN0cnVjdG9ycy5oIgogCiAjaW5jbHVkZSAiQnl0ZWNvZGVH
ZW5lcmF0b3IuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb21tb25JZGVu
dGlmaWVycy5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkpTT05PYmpl
Y3QuaCIKICNpbmNsdWRlICJMYWJlbFNjb3BlLmgiCiAjaW5jbHVkZSAiTGV4ZXIuaCIKKyNpbmNs
dWRlICJOb2RlQ29uc3RydWN0b3JzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1
ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCkBAIC01MzUsMzYg
KzUzNiwzOSBAQCBSZWdpc3RlcklEKiBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgUmVmUHRyPExhYmVsPiBlbmQg
PSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdl
bmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Npb25TdGFydCgpLCBzdWJleHByZXNz
aW9uRW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbiA9IGdlbmVyYXRvci5l
bWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIG1f
aWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0
R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIGdlbmVy
YXRvci5wcm9wZXJ0eU5hbWVzKCkuY2FsbCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVy
blZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBmdW5jdGlvbi5nZXQoKSk7
Ci0gICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkNhbGwoZnVuY3Rpb24uZ2V0KCks
IHJlYWxDYWxsLmdldCgpKTsKKyAgICBib29sIGVtaXRDYWxsQ2hlY2sgPSAhZ2VuZXJhdG9yLmlz
QnVpbHRpbkZ1bmN0aW9uKCk7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2spCisgICAgICAgIGdlbmVy
YXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKGZ1bmN0aW9uLmdldCgpLCByZWFsQ2FsbC5n
ZXQoKSk7CisKICAgICB7CiAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdz
LT5tX2xpc3ROb2RlLT5tX2V4cHIpIHsKICAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIG9s
ZExpc3QgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CiAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5v
ZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKLQorICAgICAgICAgICAgCiAgICAgICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3Zl
KGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAg
ICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG9s
ZExpc3QtPm1fZXhwcik7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFs
dWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJn
dW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7Ci0KICAgICAgICAgICAgIG1fYXJncy0+bV9s
aXN0Tm9kZSA9IG9sZExpc3Q7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50
ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICBDYWxsQXJndW1l
bnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkp
OwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFs
RnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3Qo
KSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
SnVtcChlbmQuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFi
ZWwocmVhbENhbGwuZ2V0KCkpOwotICAgIHsKLSAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJn
dW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNh
bGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwotICAgICAgICBnZW5lcmF0
b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVk
RnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1w
KGVuZC5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkp
OworICAgICAgICB7CisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2Vu
ZXJhdG9yLCBtX2FyZ3MpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1
bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1
bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OworICAgICAgICB9CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAg
ICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0KCkpOwogICAgIHJldHVybiByZXR1
cm5WYWx1ZS5nZXQoKTsKIH0KIApAQCAtNTg1LDY1ICs1ODksNjcgQEAgUmVnaXN0ZXJJRCogQXBw
bHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwKICAgICBSZWZQdHI8TGFiZWw+IGVuZCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwog
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYmFzZSk7
CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwg
c3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0gICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1w
RGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CisgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGZ1bmN0aW9uOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdl
bmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuY3Rpb24uZ2V0KCkpOwotICAgIGdlbmVy
YXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25BcHBseShmdW5jdGlvbi5nZXQoKSwgcmVhbENhbGwu
Z2V0KCkpOwotICAgIHsKLSAgICAgICAgaWYgKG1heUJlQ2FsbCkgewotICAgICAgICAgICAgaWYg
KG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcikgewotICAg
ICAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIG9sZExpc3QgPSBtX2FyZ3MtPm1fbGlzdE5v
ZGU7Ci0gICAgICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KSB7Ci0g
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9l
eHByLT5pc1NpbXBsZUFycmF5KCkpOwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fYXJn
cy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX25leHQpOwotICAgICAgICAgICAgICAgICAgICBtX2Fy
Z3MtPm1fbGlzdE5vZGUgPSBzdGF0aWNfY2FzdDxBcnJheU5vZGUqPihtX2FyZ3MtPm1fbGlzdE5v
ZGUtPm1fbmV4dC0+bV9leHByKS0+dG9Bcmd1bWVudExpc3QoZ2VuZXJhdG9yLnZtKCksIDAsIDAp
OwotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0g
Z2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5n
ZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhn
ZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9k
ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwotICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxG
dW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgp
LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG1fYXJncy0+bV9saXN0Tm9k
ZS0+bV9uZXh0OwotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1
bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0
KSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFy
Z3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIp
OwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0
KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRz
LCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBvbGRMaXN0OworICAgIGJvb2wg
ZW1pdENhbGxDaGVjayA9ICFnZW5lcmF0b3IuaXNCdWlsdGluRnVuY3Rpb24oKTsKKyAgICBpZiAo
ZW1pdENhbGxDaGVjaykgeworICAgICAgICBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJ
ZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIGdlbmVyYXRvci5w
cm9wZXJ0eU5hbWVzKCkuYXBwbHkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1
bmN0aW9uQXBwbHkoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKKyAgICB9CisgICAg
aWYgKG1heUJlQ2FsbCkgeworICAgICAgICBpZiAobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJn
cy0+bV9saXN0Tm9kZS0+bV9leHByKSB7CisgICAgICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBv
bGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9s
aXN0Tm9kZS0+bV9uZXh0KSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0
Tm9kZS0+bV9uZXh0LT5tX2V4cHItPmlzU2ltcGxlQXJyYXkoKSk7CisgICAgICAgICAgICAgICAg
QVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9uZXh0KTsKKyAgICAgICAgICAg
ICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBzdGF0aWNfY2FzdDxBcnJheU5vZGUqPihtX2FyZ3Mt
Pm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByKS0+dG9Bcmd1bWVudExpc3QoZ2VuZXJhdG9yLnZt
KCksIDAsIDApOworICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rp
b24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBi
YXNlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMo
Z2VuZXJhdG9yLCBtX2FyZ3MpOworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShj
YWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOworICAgICAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9u
LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwogICAg
ICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3Iu
ZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKICAg
ICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2Fy
Z3MpOwotICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRo
aXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsK
ICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJl
YWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZv
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgfQorICAgICAgICAg
ICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gb2xkTGlzdDsKICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5t
X25leHQpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb2ZpbGVIb29rUmVnaXN0
ZXI7Ci0gICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLnNob3VsZEVtaXRQcm9maWxlSG9va3MoKSkK
LSAgICAgICAgICAgICAgICBwcm9maWxlSG9va1JlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpOwogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdl
bmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0
KCkpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNSZWdpc3RlciA9IGdlbmVy
YXRvci5lbWl0Tm9kZShtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcik7Ci0gICAgICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gYXJnc1JlZ2lzdGVyOwotICAgICAgICAgICAgQXJndW1lbnRMaXN0
Tm9kZSogYXJncyA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwotICAgICAgICAgICAgaWYg
KGFyZ3MtPm1fZXhwci0+aXNSZXNvbHZlTm9kZSgpICYmIGdlbmVyYXRvci53aWxsUmVzb2x2ZVRv
QXJndW1lbnRzKHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oYXJncy0+bV9leHByKS0+aWRlbnRp
ZmllcigpKSkKLSAgICAgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IudW5jaGVj
a2VkUmVnaXN0ZXJGb3JBcmd1bWVudHMoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKLQot
ICAgICAgICAgICAgLy8gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5IGlnbm9yZXMgZXh0cmEgYXJn
dW1lbnRzLCBidXQgd2Ugc3RpbGwKLSAgICAgICAgICAgIC8vIG5lZWQgdG8gZXZhbHVhdGUgdGhl
bSBmb3Igc2lkZSBlZmZlY3RzLgotICAgICAgICAgICAgd2hpbGUgKChhcmdzID0gYXJncy0+bV9u
ZXh0KSkKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsK
LQotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsVmFyYXJncyhyZXR1cm5WYWx1ZS5nZXQo
KSwgcmVhbEZ1bmN0aW9uLmdldCgpLCB0aGlzUmVnaXN0ZXIuZ2V0KCksIGFyZ3NSZWdpc3Rlci5n
ZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm9maWxlSG9va1JlZ2lzdGVyLmdldCgp
LCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICAgICAgQ2FsbEFy
Z3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5l
ZCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwg
cmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRp
dm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIH0KLSAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJU
KG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCk7CisgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9maWxlSG9va1JlZ2lzdGVyOworICAgICAgICBpZiAo
Z2VuZXJhdG9yLnNob3VsZEVtaXRQcm9maWxlSG9va3MoKSkKKyAgICAgICAgICAgIHByb2ZpbGVI
b29rUmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRl
bXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHRoaXNSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2FyZ3MtPm1fbGlzdE5vZGUt
Pm1fZXhwcik7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhcmdzUmVnaXN0ZXI7CisgICAg
ICAgIEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsK
KyAgICAgICAgaWYgKGFyZ3MtPm1fZXhwci0+aXNSZXNvbHZlTm9kZSgpICYmIGdlbmVyYXRvci53
aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oYXJncy0+bV9l
eHByKS0+aWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIGFyZ3NSZWdpc3RlciA9IGdlbmVyYXRv
ci51bmNoZWNrZWRSZWdpc3RlckZvckFyZ3VtZW50cygpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKKwor
ICAgICAgICAvLyBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkgaWdub3JlcyBleHRyYSBhcmd1bWVu
dHMsIGJ1dCB3ZSBzdGlsbAorICAgICAgICAvLyBuZWVkIHRvIGV2YWx1YXRlIHRoZW0gZm9yIHNp
ZGUgZWZmZWN0cy4KKyAgICAgICAgd2hpbGUgKChhcmdzID0gYXJncy0+bV9uZXh0KSkKKyAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShhcmdzLT5tX2V4cHIpOworCisgICAgICAgIGdlbmVy
YXRvci5lbWl0Q2FsbFZhcmFyZ3MocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQo
KSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBhcmdzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKSwgcHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChyZWFsQ2Fs
bC5nZXQoKSk7Ci0gICAgeworICAgIGlmIChlbWl0Q2FsbENoZWNrKSB7CisgICAgICAgIGdlbmVy
YXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHJl
YWxDYWxsLmdldCgpKTsKICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVy
YXRvciwgbV9hcmdzKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMu
dGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwo
cmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNh
bGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAg
IGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVt
aXRMYWJlbChlbmQuZ2V0KCkpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZS5nZXQoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlCmluZGV4IDM5Nzk3NmIwNmM3YTli
NTgzNjMzMjkwMGE2ZWJiOTNlYzY4Yjc0ODYuLmNhZDY1YmM0Y2M4ODhlMzE0Zjg4ZDY2NWRkNGE2
ZTY0NWEwOWEzNTUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFz
aF90YWJsZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUKQEAg
LTI4OSw3ICsyODksMTcgQEAgc3ViIG91dHB1dCgpIHsKICAgICAgICAgICAgICRpbnRyaW5zaWMg
PSAiUmVnRXhwVGVzdEludHJpbnNpYyIgaWYgKCRrZXkgZXEgInRlc3QiKTsKICAgICAgICAgfQog
CisgICAgICAgIGlmICgkdmFsdWVzWyRpXXsidHlwZSJ9IGVxICJGdW5jdGlvbiIpICB7CisgICAg
ICAgICAgICBteSAkdGFibGVIZWFkID0gJG5hbWU7CisgICAgICAgICAgICAkdGFibGVIZWFkID1+
IHMvVGFibGUkLy87CisgICAgICAgICAgICBwcmludCAiICNpZiBKU0NfQlVJTFRJTl9FWElTVFMo
IiAuIHVjKCR0YWJsZUhlYWQgLiAka2V5KSAuIilcbiI7CisgICAgICAgICAgICBwcmludCAiICAg
eyBcIiRrZXlcIiwgKCgkYXR0cnNbJGldKSAmIH5GdW5jdGlvbikgfCBCdWlsdGluLCAkaW50cmlu
c2ljLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8QnVpbHRpbkdlbmVyYXRvcj4oIiAuICR0YWJsZUhl
YWQgLiB1Y2ZpcnN0KCRrZXkpIC4gIkNvZGVHZW5lcmF0b3IpLCAoaW50cHRyX3QpJHNlY29uZFZh
bHVlIH0sXG4iOworICAgICAgICAgICAgcHJpbnQgIiAjZWxzZVxuIgorICAgICAgICB9CiAgICAg
ICAgIHByaW50ICIgICB7IFwiJGtleVwiLCAkYXR0cnNbJGldLCAkaW50cmluc2ljLCAoaW50cHRy
X3QpIiAuICRmaXJzdENhc3RTdHIgLiAiKCRmaXJzdFZhbHVlKSwgKGludHB0cl90KSIgLiAkc2Vj
b25kQ2FzdFN0ciAuICIoJHNlY29uZFZhbHVlKSB9LFxuIjsKKyAgICAgICAgaWYgKCR2YWx1ZXNb
JGldeyJ0eXBlIn0gZXEgIkZ1bmN0aW9uIikgIHsKKyAgICAgICAgICAgIHByaW50ICIgI2VuZGlm
XG4iCisgICAgICAgIH0KICAgICAgICAgJGkrKzsKICAgICB9CiAgICAgcHJpbnQgIiAgIHsgMCwg
MCwgTm9JbnRyaW5zaWMsIDAsIDAgfVxuIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9taW5hdG9ycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvbWluYXRvcnMuY3BwCmluZGV4IGE1YWU2MTRiOTE5YjBmZDQzNDgyZDAxNWNjMjk1MDg0MGU1
NGIyNjEuLjIwMDk2ZTczYjM1MTU5Yzc0MzRiZDI3YWI2ZjYzMzM3ZmU5ZGY0YWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9taW5hdG9ycy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb21pbmF0b3JzLmNwcApAQCAtMjUsNiArMjUsNyBA
QAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiREZHRG9taW5hdG9ycy5oIgorI2lu
Y2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAKaW5kZXggOTNjNDFmYmRlNDQ3NjRi
NmE2ZmVlMGIyNGI0ODQ5YWVkYjExNzRjNS4uZDg2YWM4YjQxMzczMWNiOGRiZGY0YWQzM2VmYTVk
Nzg1MjA1MWEwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCkBA
IC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKERGR19KSVQpCiAKICNpbmNsdWRlICJDb2RlQmxv
Y2suaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCmluZGV4IDJmZjBjMzQxNDZlMmMwYmEyZmY3NmM0ZDNmN2M0NmJhM2UyNTUxNDcuLjkw
NDRjZGM2YjhjM2FkNGExZTk0MTg4ZGQxZDBlMjAwZTY5ZmI5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1
ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2Nv
cGUuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJOYW1lSW5zdGFu
Y2UuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9wZXJhdGlv
bnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1qcy1idWls
dGlucyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lZWUxYzdhN2NjZGQ5Mzc2OTIwZTc2ZDdmZThkMzBhZjk1NWYzMWE2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5zCkBAIC0w
LDAgKzEsMzA0IEBACisjIS91c3IvYmluL3B5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisjIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorIyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorIyBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisjIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGZp
bGVjbXAKK2ltcG9ydCBmbm1hdGNoCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHNodXRp
bAoraW1wb3J0IHN5cworaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQganNvbgorCitjb3B5cmlnaHRU
ZXh0ID0gIiIiICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi9cbgorIiIi
CisKK2dlbmVyYXRvclN0cmluZyA9ICIvKiBHZW5lcmF0ZWQgYnkgJXMgZG8gbm90IGhhbmQgZWRp
dC4gKi9cbiIgJSBvcy5wYXRoLmJhc2VuYW1lKF9fZmlsZV9fKQorCitmdW5jdGlvbkhlYWRSZWdF
eHAgPSByZS5jb21waWxlKHIiZnVuY3Rpb25ccytcdytccypcKC4qP1wpIiwgcmUuTVVMVElMSU5F
IHwgcmUuUykKK2Z1bmN0aW9uTmFtZVJlZ0V4cCA9IHJlLmNvbXBpbGUociJmdW5jdGlvblxzKyhc
dyspXHMqXCgiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIg
PSByZS5jb21waWxlKHIiXmZ1bmN0aW9uXHMrKD86XHcrKVxzKlwoKCg/OlxzKlx3Kyk/XHMqKD86
XHMqLFxzKlx3KykqKT9cKSIsIHJlLk1VTFRJTElORSB8IHJlLlMpCisKK211bHRpbGluZUNvbW1l
bnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cKi4qP1wqXC8iLCByZS5NVUxUSUxJTkUgfCByZS5T
KQorc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cLy4qP1xuIiwgcmUu
TVVMVElMSU5FIHwgcmUuUykKKworZGVmIGdldENvcHlyaWdodChzb3VyY2UpOgorICAgIGNvcHly
aWdodEJsb2NrID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5maW5kYWxsKHNvdXJjZSlbMF0KKyAg
ICBjb3B5cmlnaHRCbG9jayA9IGNvcHlyaWdodEJsb2NrWzpjb3B5cmlnaHRCbG9jay5pbmRleCgi
UmVkaXN0cmlidXRpb24iKV0KKyAgICBjb3B5UmlnaHRMaW5lcyA9IFtdCisKKyAgICBmb3IgbGlu
ZSBpbiBjb3B5cmlnaHRCbG9jay5zcGxpdCgiXG4iKToKKyAgICAgICAgbGluZSA9IGxpbmUucmVw
bGFjZSgiLyoiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKi8iLCAiIikKKyAg
ICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKiIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5y
ZXBsYWNlKCJDb3B5cmlnaHQiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiY29w
eXJpZ2h0IiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIihDKSIsICIiKQorICAg
ICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIoYykiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUu
c3RyaXAoKQorICAgICAgICBpZiBsZW4obGluZSkgPT0gMDoKKyAgICAgICAgICAgIGNvbnRpbnVl
CisKKyAgICAgICAgY29weVJpZ2h0TGluZXMuYXBwZW5kKGxpbmUpCisgICAgCisgICAgcmV0dXJu
IGxpc3Qoc2V0KGNvcHlSaWdodExpbmVzKSkKKworCisKK2RlZiBnZXRGdW5jdGlvbnMoc291cmNl
KToKKworICAgIHNvdXJjZSA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAuc3ViKCIvKiovIiwgc2lu
Z2xlTGluZUNvbW1lbnRSZWdFeHAuc3ViKCIvL1xuIiwgc291cmNlKSkKKworICAgIG1hdGNoZXMg
PSBbIGYgZm9yIGYgaW4gZnVuY3Rpb25IZWFkUmVnRXhwLmZpbmRpdGVyKHNvdXJjZSldCisgICAg
ZnVuY3Rpb25Cb3VuZHMgPSBbXQorICAgIHN0YXJ0ID0gMAorICAgIGVuZCA9IDAKKyAgICBmb3Ig
bWF0Y2ggaW4gbWF0Y2hlczoKKyAgICAgICAgc3RhcnQgPSBtYXRjaC5zdGFydCgpCisgICAgICAg
IGlmIHN0YXJ0IDwgZW5kOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgZW5kID0gbWF0
Y2guZW5kKCkKKyAgICAgICAgd2hpbGUgc291cmNlW2VuZF0gIT0gJ3snOgorICAgICAgICAgICAg
ZW5kID0gZW5kICsgMQorICAgICAgICBkZXB0aCA9IDEKKyAgICAgICAgZW5kID0gZW5kICsgMQor
ICAgICAgICB3aGlsZSBkZXB0aCA+IDA6CisgICAgICAgICAgICBpZiBzb3VyY2VbZW5kXSA9PSAn
eyc6CisgICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCArIDEKKyAgICAgICAgICAgIGVsaWYg
c291cmNlW2VuZF0gPT0gJ30nOgorICAgICAgICAgICAgICAgIGRlcHRoID0gZGVwdGggLSAxCisg
ICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgIGZ1bmN0aW9uQm91bmRzLmFwcGVuZCgo
c3RhcnQsIGVuZCkpCisKKyAgICBmdW5jdGlvbnMgPSBbc291cmNlW3N0YXJ0OmVuZF0uc3RyaXAo
KSBmb3IgKHN0YXJ0LCBlbmQpIGluIGZ1bmN0aW9uQm91bmRzXQorICAgIHJlc3VsdCA9IFtdCisg
ICAgZm9yIGZ1bmN0aW9uIGluIGZ1bmN0aW9uczoKKyAgICAgICAgZnVuY3Rpb24gPSBtdWx0aWxp
bmVDb21tZW50UmVnRXhwLnN1YigiIiwgZnVuY3Rpb24pCisgICAgICAgIGZ1bmN0aW9uTmFtZSA9
IGZ1bmN0aW9uTmFtZVJlZ0V4cC5maW5kYWxsKGZ1bmN0aW9uKVswXQorICAgICAgICBmdW5jdGlv
blBhcmFtZXRlcnMgPSBmdW5jdGlvblBhcmFtZXRlckZpbmRlci5maW5kYWxsKGZ1bmN0aW9uKVsw
XS5zcGxpdCgnLCcpCisgICAgICAgIGlmIGxlbihmdW5jdGlvblBhcmFtZXRlcnNbMF0pID09IDA6
CisgICAgICAgICAgICBmdW5jdGlvblBhcmFtZXRlcnMgPSBbXQorICAgICAgICAgICAgCisgICAg
ICAgIHJlc3VsdC5hcHBlbmQoKGZ1bmN0aW9uTmFtZSwgZnVuY3Rpb24sIGZ1bmN0aW9uUGFyYW1l
dGVycykpCisgICAgcmV0dXJuIHJlc3VsdAorICAgICAgICAKKworZGVmIGdlbmVyYXRlQ29kZShz
b3VyY2UpOgorICAgIGlucHV0RmlsZSA9IG9wZW4oc291cmNlLCAiciIpCisgICAgYmFzZU5hbWUg
PSBvcy5wYXRoLmJhc2VuYW1lKHNvdXJjZSkucmVwbGFjZSgiLmpzIiwgIiIpCisgICAgCisgICAg
c291cmNlID0gIiIKKyAgICBmb3IgbGluZSBpbiBpbnB1dEZpbGU6CisgICAgICAgIHNvdXJjZSA9
IHNvdXJjZSArIGxpbmUKKyAgICAKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gImN5Z3dpbiI6Cisg
ICAgICAgIHNvdXJjZSA9IHNvdXJjZS5yZXBsYWNlKCJcclxuIiwgIlxuIikKKyAgICByZXR1cm4g
KGJhc2VOYW1lLCBnZXRGdW5jdGlvbnMoc291cmNlKSwgZ2V0Q29weXJpZ2h0KHNvdXJjZSkpCisK
K2RlZiBtYW5nbGVOYW1lKG9iamVjdCwgbmFtZSk6CisgICAgcU5hbWUgPSBvYmplY3QgKyAiLiIg
KyBuYW1lCisgICAgbWFuZ2xlZE5hbWUgPSAiIgorICAgIGkgPSAwCisgICAgd2hpbGUgaSA8IGxl
bihxTmFtZSk6CisgICAgICAgIGlmIHFOYW1lW2ldID09ICcuJzoKKyAgICAgICAgICAgIG1hbmds
ZWROYW1lID0gbWFuZ2xlZE5hbWUgKyBxTmFtZVtpICsgMV0udXBwZXIoKQorICAgICAgICAgICAg
aSA9IGkgKyAxCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmds
ZWROYW1lICsgcU5hbWVbaV0KKyAgICAgICAgaSA9IGkgKyAxCisgICAgcmV0dXJuIG1hbmdsZWRO
YW1lCisKK2J1aWx0aW5zID0gW10KKworYmFzZU5hbWUgPSBzeXMuYXJndlstMV0KK2J1aWx0aW5f
ZGVmaW5pdGlvbnMgPSBzeXMuYXJndlsxOi0xXQorKG91dHB1dF9iYXNlLCBfKSA9IG9zLnBhdGgu
c3BsaXRleHQoc3lzLmFyZ3ZbLTFdKQorCitjb3B5cmlnaHRzID0gW10KK2ZvciBmaWxlIGluIGJ1
aWx0aW5fZGVmaW5pdGlvbnM6CisgICAgaWYgZm5tYXRjaC5mbm1hdGNoKGZpbGUsICcqLmpzJyk6
CisgICAgICAgIChiYXNlTmFtZSwgZnVuY3Rpb25zLCBvYmplY3RDb3B5cmlnaHRzKSA9IGdlbmVy
YXRlQ29kZShmaWxlKQorICAgICAgICBjb3B5cmlnaHRzLmV4dGVuZChvYmplY3RDb3B5cmlnaHRz
KQorICAgICAgICBidWlsdGlucy5hcHBlbmQoKGJhc2VOYW1lLCBmdW5jdGlvbnMpKQorCitjb3B5
cmlnaHRzID0gbGlzdChzZXQoY29weXJpZ2h0cykpCisKK2NvcHlyaWdodEJvZHkgPSAiIgorZm9y
IGNvcHlyaWdodCBpbiBjb3B5cmlnaHRzOgorICAgIGNvcHlyaWdodEJvZHkgPSBjb3B5cmlnaHRC
b2R5ICsiICogQ29weXJpZ2h0IChDKSAiICsgY29weXJpZ2h0ICsgIlxuIgorCitidWlsdGluc0hl
YWRlciA9IG9wZW4ob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgInciKQorYnVpbHRpbnNJbXBsZW1l
bnRhdGlvbiA9IG9wZW4ob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCAidyIpCitjb3B5cmlnaHRU
ZXh0ID0gIi8qXG4iICsgY29weXJpZ2h0Qm9keSArIGNvcHlyaWdodFRleHQKK2J1aWx0aW5zSGVh
ZGVyLndyaXRlKCIiIiVzCislcworCisjaWZuZGVmIEpTQ0J1aWx0aW5zX0gKKyNkZWZpbmUgSlND
QnVpbHRpbnNfSAorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxl
OworY2xhc3MgSWRlbnRpZmllcjsKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OworY2xhc3MgU291cmNl
Q29kZTsKK2NsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgVk07CisKK0Z1
bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUoVk0mLCBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKKworIiIiICUgKGdlbmVyYXRv
clN0cmluZywgY29weXJpZ2h0VGV4dCkpCisKK2NvZGVSZWZlcmVuY2VzID0gW10KKworZm9yIChv
YmplY3ROYW1lLCBmdW5jdGlvbnMpIGluIGJ1aWx0aW5zOgorICAgIHByaW50KCJHZW5lcmF0aW5n
IGJpbmRpbmdzIGZvciB0aGUgJXMgYnVpbHRpbi4iICUgb2JqZWN0TmFtZSkKKyAgICBidWlsdGlu
c0hlYWRlci53cml0ZSgiLyogJXMgZnVuY3Rpb25zICovXG4iICUgb2JqZWN0TmFtZSkKKyAgICBm
b3IgKG5hbWUsIGltcGxlbWVudGF0aW9uLCBfKSBpbiBmdW5jdGlvbnM6CisgICAgICAgIG1hbmds
ZWROYW1lID0gbWFuZ2xlTmFtZShvYmplY3ROYW1lLCBuYW1lKQorICAgICAgICBtYW5nbGVkTmFt
ZSA9IG1hbmdsZWROYW1lWzBdLmxvd2VyKCkgKyBtYW5nbGVkTmFtZVsxOl0gKyAiQ29kZSIKKyAg
ICAgICAgY29kZVJlZmVyZW5jZXMuYXBwZW5kKChtYW5nbGVkTmFtZSwgbmFtZSwgaW1wbGVtZW50
YXRpb24pKQorICAgICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiZXh0ZXJuIGNvbnN0IGNoYXIq
IHNfJXM7XG4iICUgbWFuZ2xlZE5hbWUpCisgICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJl
eHRlcm4gY29uc3QgaW50IHNfJXNMZW5ndGg7XG4iICUgbWFuZ2xlZE5hbWUpCisgICAgYnVpbHRp
bnNIZWFkZXIud3JpdGUoIlxuIikKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiI2RlZmluZSBK
U0NfRk9SRUFDSF8lc19CVUlMVElOKG1hY3JvKSBcXFxuIiAlIG9iamVjdE5hbWUucmVwbGFjZSgi
LiIsICJfIikudXBwZXIoKSkKKyAgICBmb3IgKG5hbWUsIGltcGxlbWVudGF0aW9uLCBhcmd1bWVu
dHMpIGluIGZ1bmN0aW9uczoKKyAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVOYW1lKG9iamVj
dE5hbWUsIG5hbWUpCisgICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIgICAgbWFjcm8oJXMs
ICVzLCAlZCkgXFxcbiIgJSAobmFtZSwgbWFuZ2xlZE5hbWUsIGxlbihhcmd1bWVudHMpKSkKKyAg
ICBidWlsdGluc0hlYWRlci53cml0ZSgiXG4iKQorICAgIGZvciAobmFtZSwgaW1wbGVtZW50YXRp
b24sIGFyZ3VtZW50cykgaW4gZnVuY3Rpb25zOgorICAgICAgICBidWlsdGluc0hlYWRlci53cml0
ZSgiI2RlZmluZSBKU0NfQlVJTFRJTl8lcyAxXG4iICUgbWFuZ2xlTmFtZShvYmplY3ROYW1lLCBu
YW1lKS51cHBlcigpKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJcblxuIikKK25hbWVzID0g
W10KK2J1aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU4obWFj
cm8pXFxcbiIpCitmb3IgKGNvZGVSZWZlcmVuY2UsIGZ1bmN0aW9uTmFtZSwgc291cmNlKSBpbiBj
b2RlUmVmZXJlbmNlczoKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiICAgIG1hY3JvKCVzLCAl
cywgc18lc0xlbmd0aCkgXFxcbiIgJSAoY29kZVJlZmVyZW5jZSwgZnVuY3Rpb25OYW1lLCBjb2Rl
UmVmZXJlbmNlKSkKKyAgICBuYW1lcy5hcHBlbmQoZnVuY3Rpb25OYW1lKQorCitidWlsdGluc0hl
YWRlci53cml0ZSgiXG5cbiIpCitidWlsdGluc0hlYWRlci53cml0ZSgiI2RlZmluZSBKU0NfRk9S
RUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFxcXG4iKQorZm9yIG5hbWUgaW4gc29y
dGVkKHNldChuYW1lcykpOgorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIgICAgbWFjcm8oJXMp
IFxcXG4iICUgbmFtZSkKK2J1aWx0aW5zSGVhZGVyLndyaXRlKCIiIgorCisjZGVmaW5lIEpTQ19E
RUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50
Q291bnQpIFxcCisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKFZN
Jik7CisKK0pTQ19GT1JFQUNIX0JVSUxUSU4oSlNDX0RFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1Ip
CisjdW5kZWYgSlNDX0RFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IKKworI2RlZmluZSBKU0NfQlVJ
TFRJTl9FWElTVFMobmFtZSkgZGVmaW5lZChKU0NfQlVJTFRJTl8jI25hbWUpCisKK30KKworI2Vu
ZGlmCisKKyIiIikKKworYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiIiIlcworJXMKKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKKworI2luY2x1
ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNs
dWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKKyIiIiAgJSAoZ2VuZXJhdG9yU3RyaW5nLCBjb3B5cmlnaHRUZXh0KSkKKworZm9yIChjb2Rl
UmVmZXJlbmNlLCBuYW1lLCBzb3VyY2UpIGluIGNvZGVSZWZlcmVuY2VzOgorICAgIHNvdXJjZSA9
ICIoZnVuY3Rpb24gIiArIHNvdXJjZVtzb3VyY2UuaW5kZXgoIigiKTpdICsgIikiCisgICAgbGlu
ZXMgPSBqc29uLmR1bXBzKHNvdXJjZSlbMTotMV0uc3BsaXQoIlxcbiIpCisgICAgc291cmNlTGVu
Z3RoID0gbGVuKHNvdXJjZSkKKyAgICBzb3VyY2UgPSAiIgorICAgIGZvciBsaW5lIGluIGxpbmVz
OgorICAgICAgICBzb3VyY2UgPSBzb3VyY2UgKyAoIiAgICBcIiVzXFxuXCIgXFxcbiIgJSBsaW5l
KQorICAgIGJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoImNvbnN0IGNoYXIqIHNfJXMgPVxu
JXM7XG5cbiIgJSAoY29kZVJlZmVyZW5jZSwgc291cmNlKSkKKyAgICBidWlsdGluc0ltcGxlbWVu
dGF0aW9uLndyaXRlKCJjb25zdCBpbnQgc18lc0xlbmd0aCA9ICVkO1xuXG4iICUgKGNvZGVSZWZl
cmVuY2UsIHNvdXJjZUxlbmd0aCArIDEpKSAjICsgMSBmb3IgXG4KKworYnVpbHRpbnNJbXBsZW1l
bnRhdGlvbi53cml0ZSgiIiIKK0Z1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1
dGFibGUoVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRh
YmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCit7CisgICAgdW5zaWduZWQgbGluZUNvdW50
ID0gdW5saW5rZWRFeGVjdXRhYmxlLT5saW5lQ291bnQoKTsKKyAgICB1bnNpZ25lZCBzdGFydENv
bHVtbiA9IDE7CisgICAgdW5zaWduZWQgc291cmNlTGVuZ3RoID0gdW5saW5rZWRFeGVjdXRhYmxl
LT5zb3VyY2VMZW5ndGgoKTsKKyAgICBib29sIGVuZENvbHVtbklzT25TdGFydExpbmUgPSAhbGlu
ZUNvdW50OworICAgIHVuc2lnbmVkIGVuZENvbHVtbkV4Y2x1ZGluZ0JyYWNlcyA9IHVubGlua2Vk
RXhlY3V0YWJsZS0+dW5saW5rZWRCb2R5RW5kQ29sdW1uKCkgKyAoZW5kQ29sdW1uSXNPblN0YXJ0
TGluZSA/IDAgOiAxKTsKKyAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IHVubGlua2VkRXhlY3V0
YWJsZS0+c3RhcnRPZmZzZXQoKTsKKyAgICB1bnNpZ25lZCBzdGFydE9mZnNldEV4Y2x1ZGluZ09w
ZW5CcmFjZSA9IHN0YXJ0T2Zmc2V0ICsgMTsKKyAgICB1bnNpZ25lZCBlbmRPZmZzZXRFeGNsdWRp
bmdDbG9zZUJyYWNlID0gc3RhcnRPZmZzZXQgKyBzb3VyY2VMZW5ndGggLSAxOworICAgIFNvdXJj
ZUNvZGUgYm9keVNvdXJjZShzb3VyY2UucHJvdmlkZXIoKSwgc3RhcnRPZmZzZXRFeGNsdWRpbmdP
cGVuQnJhY2UsIGVuZE9mZnNldEV4Y2x1ZGluZ0Nsb3NlQnJhY2UsIDAsIHN0YXJ0Q29sdW1uKTsK
KyAgICByZXR1cm4gRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUodm0sIGJvZHlTb3VyY2UsIHVu
bGlua2VkRXhlY3V0YWJsZSwgMCwgbGluZUNvdW50LCBzdGFydENvbHVtbiwgZW5kQ29sdW1uRXhj
bHVkaW5nQnJhY2VzLCBmYWxzZSk7Cit9CisKKyNkZWZpbmUgSlNDX0RFRklORV9CVUlMVElOX0dF
TkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAorRnVuY3Rp
b25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKFZNJiB2bSkgXFwKK3sgXFwKKyAgICBy
ZXR1cm4gY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygp
LT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5h
bWUjI1NvdXJjZSgpKTsgXFwKK30KKworSlNDX0ZPUkVBQ0hfQlVJTFRJTihKU0NfREVGSU5FX0JV
SUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIEpTQ19ERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKK30K
KworIiIiKQorCitidWlsdGluc0hlYWRlci5jbG9zZSgpCitidWlsdGluc0ltcGxlbWVudGF0aW9u
LmNsb3NlKCkKKworaWYgKG5vdCBvcy5wYXRoLmV4aXN0cyhvdXRwdXRfYmFzZSArICIuaCIpKSBv
ciAobm90IGZpbGVjbXAuY21wKG91dHB1dF9iYXNlICsgIi5oLnRtcCIsIG91dHB1dF9iYXNlICsg
Ii5oIiwgc2hhbGxvdz1GYWxzZSkpOgorICAgIG9zLnJlbmFtZShvdXRwdXRfYmFzZSArICIuaC50
bXAiLCBvdXRwdXRfYmFzZSArICIuaCIpCitlbHNlOgorICAgIG9zLnJlbW92ZShvdXRwdXRfYmFz
ZSArICIuaC50bXAiKQorCitpZiAobm90IG9zLnBhdGguZXhpc3RzKG91dHB1dF9iYXNlICsgIi5j
cHAiKSkgb3IgKG5vdCBmaWxlY21wLmNtcChvdXRwdXRfYmFzZSArICIuY3BwLnRtcCIsIG91dHB1
dF9iYXNlICsgIi5jcHAiLCBzaGFsbG93PUZhbHNlKSk6CisgICAgb3MucmVuYW1lKG91dHB1dF9i
YXNlICsgIi5jcHAudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmNwcCIpCitlbHNlOgorICAgIG9zLnJl
bW92ZShvdXRwdXRfYmFzZSArICIuY3BwLnRtcCIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0NhY2hlZENhbGwuaAppbmRleCAyY2EzZTk3OTQwYzdjMTEwNmMxYmFiYTFm
MzU0ZmU4NDdiNDM4NWIzLi4zMGNhZDJhMTRmZmRiZmI0ZDU3Y2Y1YTEyZmNiOTAwZTI2NGY4NzZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2Fs
bC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgK
QEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAsIG1faW50ZXJw
cmV0ZXIoY2FsbEZyYW1lLT5pbnRlcnByZXRlcigpKQogICAgICAgICAgICAgLCBtX2VudHJ5U2Nv
cGUoY2FsbEZyYW1lLT52bSgpLCBmdW5jdGlvbi0+c2NvcGUoKS0+Z2xvYmFsT2JqZWN0KCkpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCghZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkp
OworICAgICAgICAgICAgQVNTRVJUKCFmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUo
KSk7CiAgICAgICAgICAgICBpZiAoY2FsbEZyYW1lLT52bSgpLmlzU2FmZVRvUmVjdXJzZSgpKSB7
CiAgICAgICAgICAgICAgICAgbV9hcmd1bWVudHMucmVzaXplKGFyZ3VtZW50Q291bnQpOwogICAg
ICAgICAgICAgICAgIG1fY2xvc3VyZSA9IG1faW50ZXJwcmV0ZXItPnByZXBhcmVGb3JSZXBlYXRD
YWxsKGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKSwgY2FsbEZyYW1lLCAmbV9wcm90b0NhbGxGcmFt
ZSwgZnVuY3Rpb24sIGFyZ3VtZW50Q291bnQgKyAxLCBmdW5jdGlvbi0+c2NvcGUoKSwgbV9hcmd1
bWVudHMuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwCmluZGV4IGZhODhlMGYyZjQxYTA5OGQ4ZmVjNGI3ZmI1Mzc0YTQ1YTM0
MmJjNmUuLjlkMmM1ZDUwMDM4ZDRiMzY0OWIyZjJlOTZjZjExOGQ1YjgzMWExMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAt
NTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKICNpbmNs
dWRlICJKU1N0YWNrSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAi
SlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNsdWRlICJM
TEludENMb29wLmgiCiAjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuY3BwCmluZGV4IGYwZTAy
YmE0ZTQ3NmY5OWNjOTEzYjA0NjJhZDI3OTUwMDYwOWZhM2EuLjFjMjQwZGNkNzFiZTUyOWQ4OGNi
ZjQ2MWQxODY4ZjVlYjJiMDJhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1
ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRl
ICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAKIG5h
bWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5k
ZXggY2E3YWQxMWYyZTBiOGEzYjhiMTg1ODkxZDdlNTIyYmFlNDAzYTIzNi4uY2I1NTA3YmVhYzU1
YmY4ZWIxYjM3ZWM5MGZjYWIxOTM0ZmI0OGVhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSGVhcC5oIgogI2lu
Y2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlND
SlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDk4ZDEwYTNmNGRjYjEy
ZDg5ZjM3YTEyZjIyNjA0Yjk0NmUwOGU2MjcuLmRkMDM1Mzc3OWU4YmRmOThmNDY1OGEzMDdlMzJk
MDZlNDcyNDQxNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2RlczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMz
Ml82NC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1
ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9u
LmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggOTI4ZGQ1MGZiMDE2ZTI3MTY0NGE1
NzVlMzBhYjVmMjUxNmViNTBlYy4uOTlmNWRiMDdlNjZiOWQ4YzRiMjM0YjkyYWQ1MTEzZTA5MTJm
NTlkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBA
IC00MSwxMCArNDEsMTMgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRPcGVyYXRp
b25XcmFwcGVycy5oIgogI2luY2x1ZGUgIkpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxi
YWNrLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0
aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5j
bHVkZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgi
CiAjaW5jbHVkZSAiSlNTdGFja0lubGluZXMuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMu
aCIKICNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9y
LmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCAyNmRkNGQxYWY3NDVhZmExZmJjNTNhOWMw
MjNhNmU0NzQxYTY2YTA5Li5kZjFiZDNhOWNmYTQwMmM1MmE1MjExY2YxYWNjZTY3ZDUxMjFiN2Vl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cApAQCAtMjksMTEgKzI5LDEzIEBACiAjaW5jbHVkZSAiSklULmgiCiAKICNpbmNsdWRlICJDb2Rl
QmxvY2suaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkdDQXdh
cmVKSVRTdHViUm91dGluZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUg
IkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJy
YXkuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNW
YXJpYWJsZU9iamVjdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCA0MDc4NGI0OTQzMWZlMDJl
OGU0NTIyZjE2MzA4YzkwMjQ3MTZkMjM2Li4yZjc5NTU1NGIwOTFkZWViYmMwM2JmMmJlOGM3NGY0
MWFlNTQxZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1
ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTUHJveHkuaCIKICNpbmNsdWRlICJKU1N0cmluZy5o
IgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIK
ICNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKICNpbmNsdWRlICJTdGFja1Zpc2l0b3IuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ci5jcHAKaW5kZXggNjA0Y2MyNjNjZjk3ZTA4NmZlZDA2ZWM5MDNiMGVjMTk4M2U3ODEzNy4uODE2
NmU3ZjgxZmE4OWE3ZDRmNTBjNWYxYTk0ZmE5NjhjNWQ1N2UxYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTM1
LDcgKzM1LDcgQEAKICNpbmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIK
ICNpbmNsdWRlICJKU0NlbGwuaCIKLSNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAi
SlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIkpTR2xvYmFs
T2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDY2NDQ0YmFhMDhiNTYyZGQ2OTdlMGNj
ZDc3MjFlNTVjMTViYTQ5MTMuLjgzYzk4ZGZkNjRiMGVjOWFjZmEzOTYzYTYxMDdmMTU1MGQwY2Zj
ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cApAQCAtNDUsNyArNDUsNyBAQAogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAi
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTU3RhY2tJbmxpbmVzLmgiCi0j
aW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNs
dWRlICJKU1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCiAjaW5jbHVkZSAi
TExJbnRFeGNlcHRpb25zLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRl
ci5oCmluZGV4IDhlYzFmZDMyYTNhZGEyMmUxMjUyMjk1NzBkY2Y3ZmYyOGVhYmYxZWQuLjQ2YTdj
NzZiMmY5MDFmYzNjYzM2ZDFjZTBjMDczNTNlYjA2YjJmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC04ODgsOSArODg4LDkgQEAgRXhwcmVzc2lvbk5v
ZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24KICAgICBBU1NFUlQoZnVuYy0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CiAgICAg
RG90QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihmdW5j
KTsKICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKiBub2RlOwotICAgIGlmIChkb3QtPmlkZW50aWZp
ZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5jYWxsKQorICAgIGlmIChkb3QtPmlkZW50aWZp
ZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5jYWxsIHx8IGRvdC0+aWRlbnRpZmllcigpID09
IG1fdm0tPnByb3BlcnR5TmFtZXMtPmNhbGxQcml2YXRlTmFtZSkKICAgICAgICAgbm9kZSA9IG5l
dyAobV92bSkgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBk
b3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKLSAg
ICBlbHNlIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcHBs
eSkKKyAgICBlbHNlIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5hcHBseSB8fCBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcHBs
eVByaXZhdGVOYW1lKQogICAgICAgICBub2RlID0gbmV3IChtX3ZtKSBBcHBseUZ1bmN0aW9uQ2Fs
bERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywg
ZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKICAgICBlbHNlCiAgICAgICAgIG5vZGUgPSBu
ZXcgKG1fdm0pIEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3Qt
PmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKaW5kZXggY2E0YmI0ZjBhZGU4ZDZiYzgyNjkx
YTZjMDAwMTRjZjE5OGJkODhiZC4uY2NiMDc5ZDk3NWExNDFjNWM0YjJkN2I2MjMxMzAwMDcwOTc3
NzgyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKQEAgLTI1LDEwICsy
NSwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxleGVyLmgiCiAKKyNpbmNs
dWRlICJDb21tb25JZGVudGlmaWVycy5oIgorI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgotCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuaCIKLSNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTm9kZUluZm8uaCIK
ICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUgPHd0Zi9kdG9hLmg+CkBAIC05MCw2ICs5MCw3
IEBAIGVudW0gQ2hhcmFjdGVyVHlwZSB7CiAKICAgICAvLyBPdGhlciB0eXBlcyAob25seSBvbmUg
c28gZmFyKQogICAgIENoYXJhY3RlcldoaXRlU3BhY2UsCisgICAgQ2hhcmFjdGVyUHJpdmF0ZUlk
ZW50aWZpZXJTdGFydAogfTsKIAogLy8gMjU2IExhdGluLTEgY29kZXMKQEAgLTE1OCw3ICsxNTks
NyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgdHlwZXNPZkxhdGluMUNoYXJhY3RlcnNb
MjU2XSA9IHsKIC8qICA2MSAtID0gICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJFcXVhbCwK
IC8qICA2MiAtID4gICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJHcmVhdGVyLAogLyogIDYz
IC0gPyAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlclF1ZXN0aW9uLAotLyogIDY0IC0gQCAg
ICAgICAgICAgICAgICAgICovIENoYXJhY3RlckludmFsaWQsCisvKiAgNjQgLSBAICAgICAgICAg
ICAgICAgICAgKi8gQ2hhcmFjdGVyUHJpdmF0ZUlkZW50aWZpZXJTdGFydCwKIC8qICA2NSAtIEEg
ICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCiAvKiAgNjYgLSBC
ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAogLyogIDY3IC0g
QyAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKQEAgLTQ4Niw5
ICs0ODcsMTAgQEAgc3RhdGljIGNvbnN0IExDaGFyIHNpbmdsZUNoYXJhY3RlckVzY2FwZVZhbHVl
c0ZvckFTQ0lJWzEyOF0gPSB7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUxleGVyPFQ+
OjpMZXhlcihWTSogdm0pCitMZXhlcjxUPjo6TGV4ZXIoVk0qIHZtLCBKU1BhcnNlclN0cmljdG5l
c3Mgc3RyaWN0bmVzcykKICAgICA6IG1faXNSZXBhcnNpbmcoZmFsc2UpCiAgICAgLCBtX3ZtKHZt
KQorICAgICwgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKHN0cmljdG5lc3MgPT0gSlNQYXJzZUJ1
aWx0aW4pCiB7CiB9CiAKQEAgLTc1Myw3ICs3NTUsMjcgQEAgaW5saW5lIHZvaWQgTGV4ZXI8VD46
OnJlY29yZDE2KGludCBjKQogICAgIEFTU0VSVChjIDw9IHN0YXRpY19jYXN0PGludD4oVVNIUlRf
TUFYKSk7CiAgICAgbV9idWZmZXIxNi5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KGMpKTsKIH0K
LQorICAgIAorI2lmICFBU1NFUlRfRElTQUJMRUQKK2Jvb2wgaXNTYWZlSWRlbnRpZmllcihWTSYg
dm0sIGNvbnN0IElkZW50aWZpZXIqIGlkZW50KQoreworICAgIGlmICghaWRlbnQpCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIC8qIEp1c3QgYmxvY2sgYW55IHVzZSBvZiBzdXNwaWNpb3VzIGlk
ZW50aWZpZXJzLiAgVGhpcyBpcyBpbnRlbmRlZCB0bworICAgICAqIGJlIHVzZWQgYXMgYSBzYWZl
dHkgbmV0IHdoaWxlIGltcGxlbWVudGluZyBidWlsdGlucy4KKyAgICAgKi8KKyAgICBpZiAoKmlk
ZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmNhbGwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoKmlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmFwcGx5KQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKCppZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5ldmFsKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCppZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5GdW5j
dGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlm
CisgICAgCiB0ZW1wbGF0ZSA8PgogdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmll
cj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmll
cihKU1Rva2VuRGF0YSogdG9rZW5EYXRhLCB1bnNpZ25lZCBsZXhlckZsYWdzLCBib29sIHN0cmlj
dE1vZGUpCiB7CkBAIC03NjUsNyArNzg3LDExIEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0
ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAg
ICAgICAgICAgICByZXR1cm4ga2V5d29yZCA9PSBSRVNFUlZFRF9JRl9TVFJJQ1QgJiYgIXN0cmlj
dE1vZGUgPyBJREVOVCA6IGtleXdvcmQ7CiAgICAgICAgIH0KICAgICB9Ci0KKyAgICAKKyAgICBi
b29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJlbnQgPT0gJ0AnICYmIG1fcGFyc2luZ0J1aWx0aW5G
dW5jdGlvbjsKKyAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgc2hpZnQoKTsKKyAgICAK
ICAgICBjb25zdCBMQ2hhciogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudFNvdXJjZVB0cigpOwog
ICAgIHVuc2lnbmVkIGlkZW50aWZpZXJMaW5lU3RhcnQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0
KCk7CiAgICAgCkBAIC03NzksMTUgKzgwNSwyNiBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVh
dGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAog
CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAwOwogICAgIAotICAgIGlmIChzaG91bGRD
cmVhdGVJZGVudGlmaWVyKSB7CisgICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIgfHwgbV9w
YXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CiAgICAgICAgIGludCBpZGVudGlmaWVyTGVuZ3RoID0g
Y3VycmVudFNvdXJjZVB0cigpIC0gaWRlbnRpZmllclN0YXJ0OwogICAgICAgICBpZGVudCA9IG1h
a2VJZGVudGlmaWVyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCk7Ci0KKyAgICAg
ICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgeworICAgICAgICAgICAgaWYgKCFpc1Nh
ZmVJZGVudGlmaWVyKCptX3ZtLCBpZGVudCkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsKKyAgICAgICAg
ICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIlRoZSB1c2Ugb2YgJyIsIGlk
ZW50LT5zdHJpbmcoKSwgIicgaXMgZGlzYWxsb3dlZCBpbiBidWlsdGluIGZ1bmN0aW9ucy4iKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgICAgICAgICBpZGVudCA9IG1fdm0tPnBy
b3BlcnR5TmFtZXMtPmdldFByaXZhdGVOYW1lKCppZGVudCk7CisgICAgICAgICAgICBlbHNlIGlm
ICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCkKKyAgICAg
ICAgICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVm
aW5lZEtleXdvcmRQcml2YXRlTmFtZTsKKyAgICAgICAgICAgIGlmICghaWRlbnQpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIElOVkFMSURfUFJJVkFURV9OQU1FX0VSUk9SVE9LOworICAgICAgICB9
CiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBpZGVudDsKICAgICB9IGVsc2UKICAgICAgICAg
dG9rZW5EYXRhLT5pZGVudCA9IDA7CiAKLSAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1h
eFRva2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxhZ3MgJiBMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRX
b3JkcykpKSB7CisgICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkg
JiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMpKSAmJiAhaXNQ
cml2YXRlTmFtZSkgewogICAgICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAg
ICAgICAgIGlmIChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgewogICAgICAgICAgICAgY29u
c3QgSGFzaEVudHJ5KiBlbnRyeSA9IG1fdm0tPmtleXdvcmRzLT5nZXRLZXl3b3JkKCppZGVudCk7
CkBAIC04MTQsNiArODUxLDEwIEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZp
ZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+OjpwCiAgICAgICAgICAg
ICByZXR1cm4ga2V5d29yZCA9PSBSRVNFUlZFRF9JRl9TVFJJQ1QgJiYgIXN0cmljdE1vZGUgPyBJ
REVOVCA6IGtleXdvcmQ7CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgYm9vbCBpc1ByaXZh
dGVOYW1lID0gbV9jdXJyZW50ID09ICdAJyAmJiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247Cisg
ICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgIHNoaWZ0KCk7CiAKICAgICBjb25zdCBVQ2hh
ciogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudFNvdXJjZVB0cigpOwogICAgIGludCBpZGVudGlm
aWVyTGluZVN0YXJ0ID0gY3VycmVudExpbmVTdGFydE9mZnNldCgpOwpAQCAtODI2LDYgKzg2Nyw3
IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUg
SlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+OjpwCiAgICAgfQogICAgIAogICAgIGlmIChVTkxJS0VM
WShtX2N1cnJlbnQgPT0gJ1xcJykpIHsKKyAgICAgICAgQVNTRVJUKCFpc1ByaXZhdGVOYW1lKTsK
ICAgICAgICAgc2V0T2Zmc2V0RnJvbVNvdXJjZVB0cihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZp
ZXJMaW5lU3RhcnQpOwogICAgICAgICByZXR1cm4gcGFyc2VJZGVudGlmaWVyU2xvd0Nhc2U8c2hv
dWxkQ3JlYXRlSWRlbnRpZmllcj4odG9rZW5EYXRhLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKTsK
ICAgICB9CkBAIC04MzcsMTggKzg3OSwyOSBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJ
ZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogCiAg
ICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAwOwogICAgIAotICAgIGlmIChzaG91bGRDcmVh
dGVJZGVudGlmaWVyKSB7CisgICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIgfHwgbV9wYXJz
aW5nQnVpbHRpbkZ1bmN0aW9uKSB7CiAgICAgICAgIGludCBpZGVudGlmaWVyTGVuZ3RoID0gY3Vy
cmVudFNvdXJjZVB0cigpIC0gaWRlbnRpZmllclN0YXJ0OwogICAgICAgICBpZiAoaXNBbGw4Qml0
KQogICAgICAgICAgICAgaWRlbnQgPSBtYWtlSWRlbnRpZmllckxDaGFyRnJvbVVDaGFyKGlkZW50
aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGlkZW50ID0gbWFrZUlkZW50aWZpZXIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVuZ3Ro
KTsKLSAgICAgICAgCisgICAgICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKKyAg
ICAgICAgICAgIGlmICghaXNTYWZlSWRlbnRpZmllcigqbV92bSwgaWRlbnQpICYmICFpc1ByaXZh
dGVOYW1lKSB7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5n
KCJUaGUgdXNlIG9mICciLCBpZGVudC0+c3RyaW5nKCksICInIGlzIGRpc2FsbG93ZWQgaW4gYnVp
bHRpbiBmdW5jdGlvbnMuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgICAgICAg
ICAgaWRlbnQgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZXRQcml2YXRlTmFtZSgqaWRlbnQpOwor
ICAgICAgICAgICAgZWxzZSBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVm
aW5lZEtleXdvcmQpCisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9ICZtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkUHJpdmF0ZU5hbWU7CisgICAgICAgICAgICBp
ZiAoIWlkZW50KQorICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEX1BSSVZBVEVfTkFNRV9F
UlJPUlRPSzsKKyAgICAgICAgfQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gaWRlbnQ7CiAg
ICAgfSBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAwOwogICAgIAotICAgIGlmIChV
TkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICEobGV4ZXJGbGFncyAmIExl
eGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkpIHsKKyAgICBpZiAoVU5MSUtFTFkoKHJlbWFp
bmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxhZ3MgJiBMZXhlckZsYWdzSWdub3Jl
UmVzZXJ2ZWRXb3JkcykpICYmICFpc1ByaXZhdGVOYW1lKSB7CiAgICAgICAgIEFTU0VSVChzaG91
bGRDcmVhdGVJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKHJlbWFpbmluZyA8IG1heFRva2VuTGVu
Z3RoKSB7CiAgICAgICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gbV92bS0+a2V5d29y
ZHMtPmdldEtleXdvcmQoKmlkZW50KTsKQEAgLTE2NTgsNiArMTcxMSw3IEBAIGluTnVtYmVyQWZ0
ZXJEZWNpbWFsUG9pbnQ6CiAgICAgICAgIEFTU0VSVChpc0lkZW50U3RhcnQobV9jdXJyZW50KSk7
CiAgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2UgQ2hhcmFjdGVyQmFja1NsYXNoOgorICAg
ICAgICBwYXJzZUlkZW50OgogICAgICAgICBpZiAobGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250
QnVpbGRLZXl3b3JkcykKICAgICAgICAgICAgIHRva2VuID0gcGFyc2VJZGVudGlmaWVyPGZhbHNl
Pih0b2tlbkRhdGEsIGxleGVyRmxhZ3MsIHN0cmljdE1vZGUpOwogICAgICAgICBlbHNlCkBAIC0x
NjcwLDYgKzE3MjQsMTEgQEAgaW5OdW1iZXJBZnRlckRlY2ltYWxQb2ludDoKICAgICAgICAgbV90
ZXJtaW5hdG9yID0gdHJ1ZTsKICAgICAgICAgbV9saW5lU3RhcnQgPSBtX2NvZGU7CiAgICAgICAg
IGdvdG8gc3RhcnQ7CisgICAgY2FzZSBDaGFyYWN0ZXJQcml2YXRlSWRlbnRpZmllclN0YXJ0Ogor
ICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKQorICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50OworCisgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2UgQ2hhcmFjdGVySW52
YWxpZDoKICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBpbnZhbGlkQ2hhcmFjdGVyTWVzc2Fn
ZSgpOwogICAgICAgICB0b2tlbiA9IEVSUk9SVE9LOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9MZXhlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9M
ZXhlci5oCmluZGV4IDI4YzYxYmExOThkMmMxNWE0OWJiMTg1MmVkMzBiZWZlYjg5MDQwMDguLmI4
ODczZTk5NTAyODY0NGJmOGNiYjNkNGMyZGE1NjJlOTNlMGU4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0xleGVyLmgKQEAgLTcyLDcgKzcyLDcgQEAgY2xhc3MgTGV4ZXIgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCiBwdWJsaWM6Ci0gICAgTGV4ZXIoVk0qKTsKKyAgICBM
ZXhlcihWTSosIEpTUGFyc2VyU3RyaWN0bmVzcyk7CiAgICAgfkxleGVyKCk7CiAKICAgICAvLyBD
aGFyYWN0ZXIgbWFuaXB1bGF0aW9uIGZ1bmN0aW9ucy4KQEAgLTIzOCw2ICsyMzgsNyBAQCBwcml2
YXRlOgogICAgIElkZW50aWZpZXJBcmVuYSogbV9hcmVuYTsKIAogICAgIFZNKiBtX3ZtOworICAg
IGJvb2wgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uOwogfTsKIAogdGVtcGxhdGUgPD4KQEAgLTMz
NSw2ICszMzYsMTIgQEAgQUxXQVlTX0lOTElORSBjb25zdCBJZGVudGlmaWVyKiBMZXhlcjxUPjo6
bWFrZUxDaGFySWRlbnRpZmllcihjb25zdCBVQ2hhciogY2hhcmEKICAgICByZXR1cm4gJm1fYXJl
bmEtPm1ha2VJZGVudGlmaWVyTENoYXJGcm9tVUNoYXIobV92bSwgY2hhcmFjdGVycywgbGVuZ3Ro
KTsKIH0KIAorI2lmIEFTU0VSVF9ESVNBQkxFRAorQUxXQVlTX0lOTElORSBib29sIGlzU2FmZUlk
ZW50aWZpZXIoVk0mLCBjb25zdCBJZGVudGlmaWVyKikgeyByZXR1cm4gdHJ1ZTsgfQorI2Vsc2UK
K2Jvb2wgaXNTYWZlSWRlbnRpZmllcihWTSYsIGNvbnN0IElkZW50aWZpZXIqKTsKKyNlbmRpZgor
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8
VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tlbiogdG9rZW5SZWNvcmQsIHVuc2lnbmVkIGxl
eGVyRmxhZ3MsIGJvb2wgc3RyaWN0TW9kZSkKIHsKQEAgLTM3MCwxMCArMzc3LDE1IEBAIEFMV0FZ
U19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tl
biogdG9rZW5SZWNvcmQsIHVuCiAgICAgQVNTRVJUKGN1cnJlbnRPZmZzZXQoKSA+PSBjdXJyZW50
TGluZVN0YXJ0T2Zmc2V0KCkpOwogCiAgICAgLy8gQ3JlYXRlIHRoZSBpZGVudGlmaWVyIGlmIG5l
ZWRlZAotICAgIGlmIChsZXhlckZsYWdzICYgTGV4ZXhGbGFnc0RvbnRCdWlsZEtleXdvcmRzKQor
ICAgIGlmIChsZXhlckZsYWdzICYgTGV4ZXhGbGFnc0RvbnRCdWlsZEtleXdvcmRzCisjaWYgIUFT
U0VSVF9ESVNBQkxFRAorICAgICAgICAmJiAhbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uCisjZW5k
aWYKKyAgICAgICAgKQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gMDsKICAgICBlbHNlCiAg
ICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBtYWtlTENoYXJJZGVudGlmaWVyKHN0YXJ0LCBwdHIg
LSBzdGFydCk7CisKICAgICB0b2tlbkxvY2F0aW9uLT5saW5lID0gbV9saW5lTnVtYmVyOwogICAg
IHRva2VuTG9jYXRpb24tPmxpbmVTdGFydE9mZnNldCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQo
KTsKICAgICB0b2tlbkxvY2F0aW9uLT5zdGFydE9mZnNldCA9IG9mZnNldEZyb21Tb3VyY2VQdHIo
c3RhcnQpOwpAQCAtMzgxLDYgKzM5MywxMyBAQCBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExl
eGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW4qIHRva2VuUmVjb3JkLCB1bgogICAg
IEFTU0VSVCh0b2tlbkxvY2F0aW9uLT5zdGFydE9mZnNldCA+PSB0b2tlbkxvY2F0aW9uLT5saW5l
U3RhcnRPZmZzZXQpOwogICAgIHRva2VuUmVjb3JkLT5tX3N0YXJ0UG9zaXRpb24gPSBzdGFydFBv
c2l0aW9uOwogICAgIHRva2VuUmVjb3JkLT5tX2VuZFBvc2l0aW9uID0gY3VycmVudFBvc2l0aW9u
KCk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rp
b24pIHsKKyAgICAgICAgaWYgKCFpc1NhZmVJZGVudGlmaWVyKCptX3ZtLCB0b2tlbkRhdGEtPmlk
ZW50KSkKKyAgICAgICAgICAgIHJldHVybiBFUlJPUlRPSzsKKyAgICB9CisjZW5kaWYKKwogICAg
IG1fbGFzdFRva2VuID0gSURFTlQ7CiAgICAgcmV0dXJuIElERU5UOwogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCBmYzljY2Q5ZjZjNTc2YzFhZWY1NDdmMjEx
ZmRkNTk2ZjQyZTA1ODA2Li5kOTUyYmE2YTk0ZDJmNmI0MTgyMTU1MDA0ZDBhOTcwODQyOWJkNzhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMTMyLDYgKzEzMiwx
MiBAQCBQYXNzUmVmUHRyPFByb2dyYW1Ob2RlPiBQcm9ncmFtTm9kZTo6Y3JlYXRlKFZNKiB2bSwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydAogICAgIHJldHVybiBub2RlLnJlbGVhc2UoKTsK
IH0KIAorCit2b2lkIFByb2dyYW1Ob2RlOjpzZXRDbG9zZWRWYXJpYWJsZXMoY29uc3QgVmVjdG9y
PFJlZlB0cjxTdHJpbmdJbXBsPj4mJiBjbG9zZWRWYXJpYWJsZXMpCit7CisgICAgbV9jbG9zZWRW
YXJpYWJsZXMgPSBzdGQ6Om1vdmUoY2xvc2VkVmFyaWFibGVzKTsKK30KKwogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV2YWxOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKIGlubGluZSBFdmFsTm9kZTo6RXZhbE5vZGUoVk0qIHZtLCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24s
IHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayog
dmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVy
ZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1
cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmlu
ZGV4IGQ3NzlhMTc4ZDk1NmZmOTlmZDBiZWQ1ZDVmNDU0YWEzZTZiNTA4NzkuLjgxNmZmMDAxYWJm
MDM3NmM2NDJmMWE5MzhkMGUwYTlmNTI5Y2E2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmgKQEAgLTE0MzEsNiArMTQzMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBi
b29sIG5lZWRzQWN0aXZhdGlvbigpIGNvbnN0IHsgcmV0dXJuIChoYXNDYXB0dXJlZFZhcmlhYmxl
cygpKSB8fCAobV9mZWF0dXJlcyAmIChFdmFsRmVhdHVyZSB8IFdpdGhGZWF0dXJlIHwgQ2F0Y2hG
ZWF0dXJlKSk7IH0KICAgICAgICAgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcygpIGNvbnN0IHsg
cmV0dXJuICEhbV9jYXB0dXJlZFZhcmlhYmxlcy5zaXplKCk7IH0KICAgICAgICAgc2l6ZV90IGNh
cHR1cmVkVmFyaWFibGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FwdHVyZWRWYXJpYWJsZXMu
c2l6ZSgpOyB9CisgICAgICAgIGNvbnN0IElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVz
KCkgY29uc3QgeyByZXR1cm4gbV9jYXB0dXJlZFZhcmlhYmxlczsgfQogICAgICAgICBib29sIGNh
cHR1cmVzKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSB7IHJldHVybiBtX2NhcHR1cmVkVmFyaWFi
bGVzLmNvbnRhaW5zKGlkZW50LmltcGwoKSk7IH0KIAogICAgICAgICBWYXJTdGFjayYgdmFyU3Rh
Y2soKSB7IHJldHVybiBtX3ZhclN0YWNrOyB9CkBAIC0xNDQ2LDYgKzE0NDcsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50KCkgY29uc3Q7
CiAKICAgICAgICAgdm9pZCBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogZGVzdGluYXRpb24pOworICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRD
bG9zZWRWYXJpYWJsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJikgeyB9CiAK
ICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZvaWQgc2V0U291cmNlKGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSkgeyBtX3NvdXJjZSA9IHNvdXJjZTsgfQpAQCAtMTQ3NSwxMSArMTQ3OCwxMyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzY29wZUlzRnVuY3Rp
b24gPSBmYWxzZTsKIAorICAgICAgICB2b2lkIHNldENsb3NlZFZhcmlhYmxlcyhjb25zdCBWZWN0
b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmKTsKKyAgICAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxT
dHJpbmdJbXBsPj4mIGNsb3NlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2xvc2VkVmFy
aWFibGVzOyB9CiAgICAgcHJpdmF0ZToKICAgICAgICAgUHJvZ3JhbU5vZGUoVk0qLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWdu
ZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqLCBWYXJT
dGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYs
IENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAgdmlydHVhbCB2b2lk
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJp
ZGU7Ci0KKyAgICAgICAgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4gbV9jbG9zZWRWYXJpYWJs
ZXM7CiAgICAgICAgIHVuc2lnbmVkIG1fc3RhcnRDb2x1bW47CiAgICAgICAgIHVuc2lnbmVkIG1f
ZW5kQ29sdW1uOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAK
aW5kZXggMjk3NjY2ZTcyNmU0NWQwODNlZjEzNDlkZGZmZGYzN2VmODAwZGY3YS4uNTBiZWM3OWZl
MzhhZGY4ZjNhMDRmNmI0NmNiZDJhNWNiZmNmMjQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcApAQCAtMjA0LDggKzIwNCw5IEBAIFBhcnNlcjxMZXhlclR5cGU+OjpQ
YXJzZXIoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uUGFyYW1ldGVy
cyoKICAgICAsIG1fbGFzdElkZW50aWZpZXIoMCkKICAgICAsIG1fbGFzdEZ1bmN0aW9uTmFtZShu
dWxscHRyKQogICAgICwgbV9zb3VyY2VFbGVtZW50cygwKQorICAgICwgbV9wYXJzaW5nQnVpbHRp
bihzdHJpY3RuZXNzID09IEpTUGFyc2VCdWlsdGluKQogewotICAgIG1fbGV4ZXIgPSBhZG9wdFB0
cihuZXcgTGV4ZXJUeXBlKHZtKSk7CisgICAgbV9sZXhlciA9IGFkb3B0UHRyKG5ldyBMZXhlclR5
cGUodm0sIHN0cmljdG5lc3MpKTsKICAgICBtX2FyZW5hID0gbV92bS0+cGFyc2VyQXJlbmEuZ2V0
KCk7CiAgICAgbV9sZXhlci0+c2V0Q29kZShzb3VyY2UsIG1fYXJlbmEpOwogICAgIG1fdG9rZW4u
bV9sb2NhdGlvbi5saW5lID0gc291cmNlLmZpcnN0TGluZSgpOwpAQCAtMjU2LDYgKzI1Nyw3IEBA
IFN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcigpCiAgICAgSWRlbnRpZmllclNl
dCBjYXB0dXJlZFZhcmlhYmxlczsKICAgICBib29sIG1vZGlmaWVkUGFyYW1ldGVyID0gZmFsc2U7
CiAgICAgc2NvcGUtPmdldENhcHR1cmVkVmFyaWFibGVzKGNhcHR1cmVkVmFyaWFibGVzLCBtb2Rp
ZmllZFBhcmFtZXRlcik7CisgICAgCiAgICAgQ29kZUZlYXR1cmVzIGZlYXR1cmVzID0gY29udGV4
dC5mZWF0dXJlcygpOwogICAgIGlmIChzY29wZS0+c3RyaWN0TW9kZSgpKQogICAgICAgICBmZWF0
dXJlcyB8PSBTdHJpY3RNb2RlRmVhdHVyZTsKQEAgLTI2MywyMSArMjY1LDM2IEBAIFN0cmluZyBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcigpCiAgICAgICAgIGZlYXR1cmVzIHw9IFNoYWRv
d3NBcmd1bWVudHNGZWF0dXJlOwogICAgIGlmIChtb2RpZmllZFBhcmFtZXRlcikKICAgICAgICAg
ZmVhdHVyZXMgfD0gTW9kaWZpZWRQYXJhbWV0ZXJGZWF0dXJlOwotCisgICAgCisgICAgVmVjdG9y
PFJlZlB0cjxTdHJpbmdJbXBsPj4gY2xvc2VkVmFyaWFibGVzOworICAgIGlmIChtX3BhcnNpbmdC
dWlsdGluKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFjYXB0dXJlZFZhcmlhYmxlcy5zaXpl
KCkpOworICAgICAgICBJZGVudGlmaWVyU2V0IHVzZWRWYXJpYWJsZXM7CisgICAgICAgIHNjb3Bl
LT5nZXRVc2VkVmFyaWFibGVzKHVzZWRWYXJpYWJsZXMpOworICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIHZhcmlhYmxlIDogdXNlZFZhcmlhYmxlcykgeworICAgICAgICAgICAgaWYgKHNjb3BlLT5o
YXNEZWNsYXJlZFZhcmlhYmxlKElkZW50aWZpZXIobV92bSwgdmFyaWFibGUuZ2V0KCkpKSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHNj
b3BlLT5oYXNEZWNsYXJlZFBhcmFtZXRlcihJZGVudGlmaWVyKG1fdm0sIHZhcmlhYmxlLmdldCgp
KSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBjbG9zZWRWYXJpYWJs
ZXMuYXBwZW5kKHZhcmlhYmxlKTsKKyAgICAgICAgfQorICAgIH0KICAgICBkaWRGaW5pc2hQYXJz
aW5nKHNvdXJjZUVsZW1lbnRzLCBjb250ZXh0LnZhckRlY2xhcmF0aW9ucygpLCBjb250ZXh0LmZ1
bmNEZWNsYXJhdGlvbnMoKSwgZmVhdHVyZXMsCi0gICAgICAgIGNvbnRleHQubnVtQ29uc3RhbnRz
KCksIGNhcHR1cmVkVmFyaWFibGVzKTsKKyAgICAgICAgY29udGV4dC5udW1Db25zdGFudHMoKSwg
Y2FwdHVyZWRWYXJpYWJsZXMsIHN0ZDo6bW92ZShjbG9zZWRWYXJpYWJsZXMpKTsKIAogICAgIHJl
dHVybiBwYXJzZUVycm9yOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdm9p
ZCBQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmluaXNoUGFyc2luZyhTb3VyY2VFbGVtZW50cyogc291
cmNlRWxlbWVudHMsIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+
KiB2YXJTdGFjaywgCi0gICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5j
dGlvblN0YWNrPiogZnVuY1N0YWNrLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25z
dGFudHMsIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFycykKKyAgICBQYXJzZXJBcmVuYURhdGE8
RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KiBmdW5jU3RhY2ssIENvZGVGZWF0dXJl
cyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJz
LCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmIGNsb3NlZFZhcmlhYmxlcykKIHsK
ICAgICBtX3NvdXJjZUVsZW1lbnRzID0gc291cmNlRWxlbWVudHM7CiAgICAgbV92YXJEZWNsYXJh
dGlvbnMgPSB2YXJTdGFjazsKICAgICBtX2Z1bmNEZWNsYXJhdGlvbnMgPSBmdW5jU3RhY2s7CiAg
ICAgbV9jYXB0dXJlZFZhcmlhYmxlcy5zd2FwKGNhcHR1cmVkVmFycyk7CisgICAgbV9jbG9zZWRW
YXJpYWJsZXMgPSBjbG9zZWRWYXJpYWJsZXM7CiAgICAgbV9mZWF0dXJlcyA9IGZlYXR1cmVzOwog
ICAgIG1fbnVtQ29uc3RhbnRzID0gbnVtQ29uc3RhbnRzOwogfQpAQCAtMjM0Niw2ICsyMzYzLDEw
IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+IHZvaWQgUGFyc2VyPExleGVyVHlwZT46
OnByaW50VW5leHBlY3RlZFRva2VuVGV4dChXCiAgICAgY2FzZSBSRVNFUlZFRDoKICAgICAgICAg
b3V0LnByaW50KCJVbmV4cGVjdGVkIHVzZSBvZiByZXNlcnZlZCB3b3JkICciLCBnZXRUb2tlbigp
LCAiJyIpOwogICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIElOVkFMSURfUFJJVkFURV9OQU1F
X0VSUk9SVE9LOgorICAgICAgICBvdXQucHJpbnQoIkludmFsaWQgcHJpdmF0ZSBuYW1lICciLCBn
ZXRUb2tlbigpLCAiJyIpOworICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAKICAgICBjYXNl
IElERU5UOgogICAgICAgICBvdXQucHJpbnQoIlVuZXhwZWN0ZWQgaWRlbnRpZmllciAnIiwgZ2V0
VG9rZW4oKSwgIiciKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGI2
OThlZjkzNjhjYjhjOGYxOTdjY2QwMDBhY2FhNmRmYjExYmEyNDQuLjkwMzM4NTBjOGM5N2Y1N2Uy
MWRhNWVlZGIwMmQwNDRmNGM4OTc4ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaApAQCAtMjMsNiArMjMsNyBAQAogI2lmbmRlZiBQYXJzZXJfaAogI2RlZmluZSBQYXJzZXJf
aAogCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgi
CkBAIC0yNTksNiArMjYwLDEwIEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgIHJldHVybiBpc1Zh
bGlkU3RyaWN0TW9kZSA/IEJpbmRpbmdTdWNjZWVkZWQgOiBTdHJpY3RCaW5kaW5nRmFpbGVkOwog
ICAgIH0KIAorICAgIHZvaWQgZ2V0VXNlZFZhcmlhYmxlcyhJZGVudGlmaWVyU2V0JiB1c2VkVmFy
aWFibGVzKQorICAgIHsKKyAgICAgICAgdXNlZFZhcmlhYmxlcy5zd2FwKG1fdXNlZFZhcmlhYmxl
cyk7CisgICAgfQogCiAgICAgdm9pZCB1c2VWYXJpYWJsZShjb25zdCBJZGVudGlmaWVyKiBpZGVu
dCwgYm9vbCBpc0V2YWwpCiAgICAgewpAQCAtNDE0LDYgKzQxOSw3IEBAIHB1YmxpYzoKICAgICBQ
YXNzUmVmUHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNlckVycm9yJik7CiAKICAgICBKU1RleHRQ
b3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sZXhl
ci0+cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOyB9CisgICAgY29uc3QgVmVjdG9yPFJlZlB0
cjxTdHJpbmdJbXBsPj4mJiBjbG9zZWRWYXJpYWJsZXMoKSB7IHJldHVybiBzdGQ6Om1vdmUobV9j
bG9zZWRWYXJpYWJsZXMpOyB9CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IEFsbG93SW5PdmVycmlk
ZSB7CkBAIC01NDAsNyArNTQ2LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgcGFyc2VJbm5lcigp
OwogCiAgICAgdm9pZCBkaWRGaW5pc2hQYXJzaW5nKFNvdXJjZUVsZW1lbnRzKiwgUGFyc2VyQXJl
bmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjaz4qLCAKLSAgICAgICAgUGFyc2VyQXJl
bmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiosIENvZGVGZWF0dXJlcywg
aW50LCBJZGVudGlmaWVyU2V0Jik7CisgICAgICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlv
blN0YWNrczo6RnVuY3Rpb25TdGFjaz4qLCBDb2RlRmVhdHVyZXMsIGludCwgSWRlbnRpZmllclNl
dCYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYpOwogCiAgICAgLy8gVXNlZCB0
byBkZXRlcm1pbmUgdHlwZSBvZiBlcnJvciB0byByZXBvcnQuCiAgICAgYm9vbCBpc0Z1bmN0aW9u
Qm9keU5vZGUoU2NvcGVOb2RlKikgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTg0MCw5ICs4NDYsMTEg
QEAgcHJpdmF0ZToKICAgICBjb25zdCBJZGVudGlmaWVyKiBtX2xhc3RGdW5jdGlvbk5hbWU7CiAg
ICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyQ2FjaGU+IG1fZnVuY3Rpb25DYWNoZTsKICAgICBTb3Vy
Y2VFbGVtZW50cyogbV9zb3VyY2VFbGVtZW50czsKKyAgICBib29sIG1fcGFyc2luZ0J1aWx0aW47
CiAgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjaz4qIG1fdmFy
RGVjbGFyYXRpb25zOwogICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVu
Y3Rpb25TdGFjaz4qIG1fZnVuY0RlY2xhcmF0aW9uczsKICAgICBJZGVudGlmaWVyU2V0IG1fY2Fw
dHVyZWRWYXJpYWJsZXM7CisgICAgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4gbV9jbG9zZWRW
YXJpYWJsZXM7CiAgICAgQ29kZUZlYXR1cmVzIG1fZmVhdHVyZXM7CiAgICAgaW50IG1fbnVtQ29u
c3RhbnRzOwogICAgIApAQCAtOTU3LDYgKzk2NSwxMCBAQCBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+
IHBhcnNlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRl
cgogICAgICAgICBSZWZQdHI8UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNl
ZE5vZGU+KGVycm9yKTsKICAgICAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAg
ICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lKCk7CisgICAgICAgIGlmIChzdHJpY3RuZXNzID09IEpTUGFyc2VCdWls
dGluKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOworICAgICAgICAgICAg
cmVzdWx0LT5zZXRDbG9zZWRWYXJpYWJsZXMoc3RkOjptb3ZlKHBhcnNlci5jbG9zZWRWYXJpYWJs
ZXMoKSkpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogICAg
IH0KICAgICBQYXJzZXI8TGV4ZXI8VUNoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgcGFyYW1ldGVy
cywgbmFtZSwgc3RyaWN0bmVzcywgcGFyc2VyTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlck1vZGVzLmgKaW5kZXggNGU5YTE3Y2QyMWNhMzQxNDZiYmQ0ODE1NmEzNzJj
ZDQwNGRlZjYwYy4uZjdhNzViZjdjMzc4NTdlNDRiNmQ1ZDcxZjQ1MjliYjFhYzFjZjVmMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaApAQCAtMjksNyArMjks
NyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51bSBKU1BhcnNlclN0cmljdG5lc3MgeyBKU1Bh
cnNlTm9ybWFsLCBKU1BhcnNlU3RyaWN0IH07CitlbnVtIEpTUGFyc2VyU3RyaWN0bmVzcyB7IEpT
UGFyc2VOb3JtYWwsIEpTUGFyc2VCdWlsdGluLCBKU1BhcnNlU3RyaWN0IH07CiBlbnVtIEpTUGFy
c2VyTW9kZSB7IEpTUGFyc2VQcm9ncmFtQ29kZSwgSlNQYXJzZUZ1bmN0aW9uQ29kZSB9OwogCiBl
bnVtIFByb2ZpbGVyTW9kZSB7IFByb2ZpbGVyT2ZmLCBQcm9maWxlck9uIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAppbmRleCA4MmEyNjYzOWE3OTIyMGEw
ODQ0NTZiNDhmMzI4NTJkMTQzYzczOWQwLi44Yzg3YWQ5ZmFkYmRjNGFmMzlhYzk5ZGIyZDg0NDVl
MTNmZmZkMzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
clRva2Vucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5z
LmgKQEAgLTE0OSw2ICsxNDksNyBAQCBlbnVtIEpTVG9rZW5UeXBlIHsKICAgICBJTlZBTElEX05V
TUVSSUNfTElURVJBTF9FUlJPUlRPSyA9IDcgfCBFcnJvclRva2VuRmxhZywKICAgICBVTlRFUk1J
TkFURURfU1RSSU5HX0xJVEVSQUxfRVJST1JUT0sgPSA4IHwgRXJyb3JUb2tlbkZsYWcgfCBVbnRl
cm1pbmF0ZWRFcnJvclRva2VuRmxhZywKICAgICBJTlZBTElEX1NUUklOR19MSVRFUkFMX0VSUk9S
VE9LID0gOSB8IEVycm9yVG9rZW5GbGFnLAorICAgIElOVkFMSURfUFJJVkFURV9OQU1FX0VSUk9S
VE9LID0gMTAgfCBFcnJvclRva2VuRmxhZwogfTsKIAogc3RydWN0IEpTVGV4dFBvc2l0aW9uIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKaW5kZXggMThmMzg5MTcx
Mzg1MjM2MmM3YTc1YTMwNTNiNDYzMTQxN2JlYjgxYi4uZjE2ZmQzZGU0MDU1OTcwYmE5ZDljNmYw
YWU2MzE4ZjIyMDRiNjU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJndW1lbnRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1l
bnRzLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNkZWZpbmUgQXJndW1lbnRzX2gKIAogI2luY2x1ZGUg
IkNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUg
IkpTQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwCmluZGV4IGRkMDg5NGYx
NGEwMjFkNWYxMjY1OGFjYjAxZTcyMWZjZDZkMzQ4Y2MuLjViNGFlODcxNmIwNTUzYmU0NjIzOTU1
ZTk5ZTFiNDNlYmYxOGZlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTI2LDcgKzI2
LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBcmd1bWVudHNJdGVyYXRvclBy
b3RvdHlwZS5oIgogCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJK
U0FyZ3VtZW50c0l0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmNwcAppbmRleCAyN2FjNmQ0OGE3MWY3OTU1MDJhMTBjZWE2NDc4NjU0MTM1
YTQ2M2EwLi42ZGM3YmU1Njk2OWRlNjdmNjIxMDdiYjNhNTFhMzA4ZmEzYmE3NmJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdCdWlsZGVyLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdKb2luZXIuaCIKICNpbmNsdWRlICJMb29rdXAuaCIK
ICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKQEAgLTU2LDcgKzU3LDYgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUq
KTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU29y
dChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5
UHJvdG9GdW5jU3BsaWNlKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNVblNoaWZ0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNFdmVyeShFeGVjU3RhdGUqKTsK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRm9yRWFj
aChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5
UHJvdG9GdW5jU29tZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5UHJvdG9GdW5jSW5kZXhPZihFeGVjU3RhdGUqKTsKQEAgLTk1NCw2OSArOTU0
LDYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY01hcChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHRBcnJheSk7CiB9
CiAKLS8vIERvY3VtZW50YXRpb24gZm9yIHRoZXNlIHRocmVlIGlzIGF2YWlsYWJsZSBhdDoKLS8v
IGh0dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3ppbGxhLm9yZy9lbi9kb2NzL0NvcmVfSmF2YVNjcmlw
dF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6QXJyYXk6ZXZlcnkKLS8vIGh0dHA6Ly9kZXZlbG9wZXIt
dGVzdC5tb3ppbGxhLm9yZy9lbi9kb2NzL0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlOk9i
amVjdHM6QXJyYXk6Zm9yRWFjaAotLy8gaHR0cDovL2RldmVsb3Blci10ZXN0Lm1vemlsbGEub3Jn
L2VuL2RvY3MvQ29yZV9KYXZhU2NyaXB0XzEuNV9SZWZlcmVuY2U6T2JqZWN0czpBcnJheTpzb21l
Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNFdmVyeShFeGVj
U3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNPYmplY3QqIHRoaXNPYmogPSBleGVjLT5ob3N0VGhpc1Zh
bHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOwotICAgIHVuc2ln
bmVkIGxlbmd0aCA9IHRoaXNPYmotPmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVu
Z3RoKS50b1VJbnQzMihleGVjKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KLSAgICBKU1ZhbHVl
IGZ1bmN0aW9uID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0g
ICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwot
ICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMpOwotCi0gICAgSlNWYWx1ZSBhcHBseVRoaXMgPSBleGVjLT5hcmd1bWVu
dCgxKTsKLQotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKHRydWUpOwotCi0gICAgdW5z
aWduZWQgayA9IDA7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlSlMgJiYgaXNKU0FycmF5
KHRoaXNPYmopKSB7Ci0gICAgICAgIEpTRnVuY3Rpb24qIGYgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+
KGZ1bmN0aW9uKTsKLSAgICAgICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KHRoaXNPYmopOwot
ICAgICAgICBDYWNoZWRDYWxsIGNhY2hlZENhbGwoZXhlYywgZiwgMyk7Ci0gICAgICAgIGZvciAo
OyBrIDwgbGVuZ3RoICYmICFleGVjLT5oYWRFeGNlcHRpb24oKTsgKytrKSB7Ci0gICAgICAgICAg
ICBpZiAoVU5MSUtFTFkoIWFycmF5LT5jYW5HZXRJbmRleFF1aWNrbHkoaykpKQotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldFRo
aXMoYXBwbHlUaGlzKTsKLSAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoMCwgYXJy
YXktPmdldEluZGV4UXVpY2tseShrKSk7Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3Vt
ZW50KDEsIGpzTnVtYmVyKGspKTsKLSAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQo
MiwgdGhpc09iaik7Ci0gICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhY2hlZENhbGwuY2Fs
bCgpOwotICAgICAgICAgICAgaWYgKCFyZXN1bHQudG9Cb29sZWFuKGV4ZWMpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgZm9yICg7IGsgPCBsZW5ndGggJiYgIWV4ZWMtPmhhZEV4Y2VwdGlvbigp
OyArK2spIHsKLSAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iaik7Ci0gICAgICAgIGlm
ICghdGhpc09iai0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGssIHNsb3QpKQotICAgICAgICAgICAg
Y29udGludWU7Ci0KLSAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgZWFjaEFyZ3VtZW50czsK
LSAgICAgICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQoc2xvdC5nZXRWYWx1ZShleGVjLCBrKSk7Ci0g
ICAgICAgIGVhY2hBcmd1bWVudHMuYXBwZW5kKGpzTnVtYmVyKGspKTsKLSAgICAgICAgZWFjaEFy
Z3VtZW50cy5hcHBlbmQodGhpc09iaik7Ci0KLSAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
LQotICAgICAgICBib29sIHByZWRpY2F0ZVJlc3VsdCA9IGNhbGwoZXhlYywgZnVuY3Rpb24sIGNh
bGxUeXBlLCBjYWxsRGF0YSwgYXBwbHlUaGlzLCBlYWNoQXJndW1lbnRzKS50b0Jvb2xlYW4oZXhl
Yyk7Ci0gICAgICAgIGlmICghcHJlZGljYXRlUmVzdWx0KSB7Ci0gICAgICAgICAgICByZXN1bHQg
PSBqc0Jvb2xlYW4oZmFsc2UpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci19Ci0KIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNGb3JFYWNoKEV4ZWNTdGF0ZSogZXhlYykK
IHsKICAgICBKU09iamVjdCogdGhpc09iaiA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKS50b1RoaXMo
ZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCA1MTBlMzgzZmFlNTc1YWFkYTgxNzZjMDQ0MWVl
NzI1YjQzYTRjNzMyLi5kMzA0ODc3ZmU5Y2RlMWMwOTE5ZmQ0NTk1ZjgxMWVjYWJjZTc3Mjc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTE0NCwy
NCArMTQ0LDI2IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6OmdldEZ1
bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZNJiB2CiAgICAgSlNUZXh0UG9zaXRpb24g
cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZTsKICAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHByb2dy
YW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oJnZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIoKSwgSlNQ
YXJzZU5vcm1hbCwgSlNQYXJzZVByb2dyYW1Db2RlLCBlcnJvciwgJnBvc2l0aW9uQmVmb3JlTGFz
dE5ld2xpbmUpOwogICAgIGlmICghcHJvZ3JhbSkgewotICAgICAgICBBU1NFUlQoZXJyb3IubV90
eXBlICE9IFBhcnNlckVycm9yOjpFcnJvck5vbmUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChl
cnJvci5tX3R5cGUgIT0gUGFyc2VyRXJyb3I6OkVycm9yTm9uZSk7CiAgICAgICAgIG1fc291cmNl
Q29kZS5yZW1vdmUoYWRkUmVzdWx0Lml0ZXJhdG9yKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBhc3N1bWVzIGFuIGlucHV0IHN0cmluZyB0aGF0IHdv
dWxkIHJlc3VsdCBpbiBhIHNpbmdsZSBhbm9ueW1vdXMgZnVuY3Rpb24gZXhwcmVzc2lvbi4KICAg
ICBTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVtZW50ID0gcHJvZ3JhbS0+c2luZ2xlU3RhdGVtZW50
KCk7Ci0gICAgQVNTRVJUKGV4cHJTdGF0ZW1lbnQpOwotICAgIEFTU0VSVChleHByU3RhdGVtZW50
LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudCk7
CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudC0+aXNFeHByU3RhdGVtZW50KCkpOwog
ICAgIEV4cHJlc3Npb25Ob2RlKiBmdW5jRXhwciA9IHN0YXRpY19jYXN0PEV4cHJTdGF0ZW1lbnRO
b2RlKj4oZXhwclN0YXRlbWVudCktPmV4cHIoKTsKLSAgICBBU1NFUlQoZnVuY0V4cHIpOworICAg
IFJFTEVBU0VfQVNTRVJUKGZ1bmNFeHByKTsKICAgICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwci0+
aXNGdW5jRXhwck5vZGUoKSk7CiAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSA9IHN0YXRpY19j
YXN0PEZ1bmNFeHByTm9kZSo+KGZ1bmNFeHByKS0+Ym9keSgpOworICAgIFJFTEVBU0VfQVNTRVJU
KCFwcm9ncmFtLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKKyAgICAKICAgICBib2R5LT5zZXRF
bmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKLSAgICBBU1NFUlQoYm9keSk7
Ci0gICAgQVNTRVJUKGJvZHktPmlkZW50KCkuaXNOdWxsKCkpOworICAgIFJFTEVBU0VfQVNTRVJU
KGJvZHkpOworICAgIFJFTEVBU0VfQVNTRVJUKGJvZHktPmlkZW50KCkuaXNOdWxsKCkpOwogCi0g
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIGJvZHksIHRydWUpOwor
ICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBib2R5LCB0cnVlLCBV
bmxpbmtlZE5vcm1hbEZ1bmN0aW9uKTsKICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPm1fbmFtZVZh
bHVlLnNldCh2bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBqc1N0cmluZygmdm0sIG5hbWUuc3RyaW5n
KCkpKTsKIAogICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBTb3VyY2VDb2RlVmFsdWUo
dm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwgbV9zb3VyY2VDb2RlLmFnZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcAppbmRleCAz
ZjVjNjQ1YzA5OGQ1MjdmYzBjNzI1OWU5NDQ3ZWZiZTg4NjhhMjljLi4yZmMyYjcyN2FmY2VlZTFl
YzJjNjI1ZGU1Njc1YjNiZTFjZjYwZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCkBAIC0yNyw3ICsyNywxMCBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogI2RlZmluZSBJTklUSUFMSVpFX1BST1BFUlRZX05BTUUobmFtZSkgLCBu
YW1lKHZtLCAjbmFtZSkKICNkZWZpbmUgSU5JVElBTElaRV9LRVlXT1JEKG5hbWUpICwgbmFtZSMj
S2V5d29yZCh2bSwgI25hbWUpCi0jZGVmaW5lIElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKG5hbWUp
ICwgbmFtZSMjUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbShQcml2YXRlTmFtZSgpKSkKKyNk
ZWZpbmUgSU5JVElBTElaRV9QUklWQVRFX05BTUUobmFtZSkgXAorICAgICwgbmFtZSMjUHJpdmF0
ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbShQcml2YXRlTmFtZSgpKSkgXAorICAgICwgbV8jI25hbWUj
I1B1YmxpY1N0cmluZ1BhaXIobmFtZSwgbmFtZSMjUHJpdmF0ZU5hbWUpIFwKKwogCiBDb21tb25J
ZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMoVk0qIHZtKQogICAgIDogbnVsbElkZW50aWZp
ZXIoKQpAQCAtMzgsOCArNDEsMjYgQEAgQ29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZp
ZXJzKFZNKiB2bSkKICAgICAsIGhhc05leHRJZGVudGlmaWVyKHZtLCAiaGFzTmV4dCIpCiAgICAg
SlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQoSU5JVElBTElaRV9LRVlXT1JEKQog
ICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJWkVf
UFJPUEVSVFlfTkFNRSkKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoSU5J
VElBTElaRV9QUk9QRVJUWV9OQU1FKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVS
U19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElaRV9QUklWQVRFX05BTUUpCiB7CiB9CiAKK2Nv
bnN0IElkZW50aWZpZXIqIENvbW1vbklkZW50aWZpZXJzOjpnZXRQcml2YXRlTmFtZShjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK3sKKyNkZWZpbmUgUkVUVVJOX0lGX1BSSVZBVEVfTkFN
RV9NQVRDSEVTKG5hbWUpIGlmIChtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpci5maXJzdCA9PSBp
ZGVudCkgcmV0dXJuICZtXyMjbmFtZSMjUHVibGljU3RyaW5nUGFpci5zZWNvbmQ7CisgICAgSlND
X0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShSRVRVUk5fSUZf
UFJJVkFURV9OQU1FX01BVENIRVMpCisjdW5kZWYgUkVUVVJOX0lGX1BSSVZBVEVfTkFNRV9NQVRD
SEVTCisgICAgcmV0dXJuIDA7Cit9CisKK0lkZW50aWZpZXIgQ29tbW9uSWRlbnRpZmllcnM6Omdl
dFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0Cit7CisjZGVmaW5lIFJF
VFVSTl9JRl9QUklWQVRFX05BTUVfTUFUQ0hFUyhuYW1lKSBpZiAobV8jI25hbWUjI1B1YmxpY1N0
cmluZ1BhaXIuc2Vjb25kID09IGlkZW50KSByZXR1cm4gbV8jI25hbWUjI1B1YmxpY1N0cmluZ1Bh
aXIuZmlyc3Q7CisgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVS
VFlfTkFNRShSRVRVUk5fSUZfUFJJVkFURV9OQU1FX01BVENIRVMpCisjdW5kZWYgUkVUVVJOX0lG
X1BSSVZBVEVfTkFNRV9NQVRDSEVTCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gZW1wdHlJZGVudGlmaWVyOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmlu
ZGV4IGU4ZjllZDgyYmM3OTQ2MjAzODI2NmIzMDIwNzgyMjQ3YjFmYTI3YTMuLjkyNGQzNmFjNjkx
MzUwMzU3Y2IzODJiMWVmM2I0MGEwYTA4YzBhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMjIsNiArMjIsNyBAQAogI2Rl
ZmluZSBDb21tb25JZGVudGlmaWVyc19oCiAKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCisjaW5j
bHVkZSAiSlNDQnVpbHRpbnMuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogLy8g
TWFya2VkQXJndW1lbnRCdWZmZXIgb2YgcHJvcGVydHkgbmFtZXMsIHBhc3NlZCB0byBhIG1hY3Jv
IHNvIHdlIGNhbiBkbyBzZXQgdGhlbSB1cCB2YXJpb3VzCkBAIC0xMzMsOCArMTM0LDEwIEBACiAg
ICAgbWFjcm8ob3NyRXhpdHMpIFwKICAgICBtYWNybyhwYXJzZSkgXAogICAgIG1hY3JvKHByb2Zp
bGVkQnl0ZWNvZGVzKSBcCisgICAgbWFjcm8ocHJvbWlzZSkgXAogICAgIG1hY3JvKHByb3BlcnR5
SXNFbnVtZXJhYmxlKSBcCiAgICAgbWFjcm8ocHJvdG90eXBlKSBcCisgICAgbWFjcm8ocmVzb2x2
ZSkgXAogICAgIG1hY3JvKHNldCkgXAogICAgIG1hY3JvKHNpemUpIFwKICAgICBtYWNybyhzbGlj
ZSkgXApAQCAtMTU1LDcgKzE1OCwxNCBAQAogICAgIG1hY3JvKHZhbHVlcykgXAogICAgIG1hY3Jv
KHZhbHVlT2YpIFwKICAgICBtYWNybyh3aW5kb3cpIFwKLSAgICBtYWNybyh3cml0YWJsZSkKKyAg
ICBtYWNybyh3cml0YWJsZSkgXAorICAgIG1hY3JvKGl0ZXJhdG9yKSBcCisgICAgbWFjcm8oaXRl
cmF0b3JOZXh0KSBcCisgICAgbWFjcm8ocmVqZWN0KSBcCisgICAgbWFjcm8oZnVsZmlsbG1lbnRI
YW5kbGVyKSBcCisgICAgbWFjcm8ocmVqZWN0aW9uSGFuZGxlcikgXAorICAgIG1hY3JvKGRlZmVy
cmVkKSBcCisgICAgbWFjcm8oY291bnRkb3duSG9sZGVyKSBcCiAKICNkZWZpbmUgSlNDX0NPTU1P
Tl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQobWFjcm8pIFwKICAgICBtYWNybyhicmVhaykgXApA
QCAtMjAzLDcgKzIxMyw3IEBACiAgICAgbWFjcm8odm9pZCkgXAogICAgIG1hY3JvKHdoaWxlKSBc
CiAgICAgbWFjcm8od2l0aCkgXAotICAgIG1hY3JvKHlpZWxkKQorICAgIG1hY3JvKHlpZWxkKSBc
CiAKICNkZWZpbmUgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlf
TkFNRShtYWNybykgXAogICAgIG1hY3JvKGl0ZXJhdG9yKSBcCkBAIC0yMTYsNyArMjI2LDEyIEBA
CiAgICAgbWFjcm8oaW5kZXgpIFwKICAgICBtYWNybyh2YWx1ZXMpIFwKICAgICBtYWNybyhkZWZl
cnJlZCkgXAotICAgIG1hY3JvKGNvdW50ZG93bkhvbGRlcikKKyAgICBtYWNybyhjb3VudGRvd25I
b2xkZXIpIFwKKyAgICBtYWNybyhPYmplY3QpIFwKKyAgICBtYWNybyhUeXBlRXJyb3IpIFwKKyAg
ICBtYWNybyh1bmRlZmluZWRLZXl3b3JkKSBcCisgICAgbWFjcm8oY2FsbCkgXAorICAgIG1hY3Jv
KGFwcGx5KQogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMjQwLDExICsyNTUsMTUgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIAogI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BST1BF
UlRZX05BTUVfR0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZTsKICAgICAgICAgSlND
X0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSlNDX0lERU5USUZJRVJfREVD
TEFSRV9QUk9QRVJUWV9OQU1FX0dMT0JBTCkKKyAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9G
VU5DVElPTl9OQU1FKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwp
CiAjdW5kZWYgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJUWV9OQU1FX0dMT0JBTAogCi0j
ZGVmaW5lIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JB
TChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWUjI1ByaXZhdGVOYW1lOworI2RlZmluZSBKU0Nf
SURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwobmFtZSkgY29u
c3QgSWRlbnRpZmllciBuYW1lIyNQcml2YXRlTmFtZTsgY29uc3Qgc3RkOjpwYWlyPElkZW50aWZp
ZXIsIElkZW50aWZpZXI+IG1fIyNuYW1lIyNQdWJsaWNTdHJpbmdQYWlyOwogICAgICAgICBKU0Nf
Q09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKEpTQ19JREVOVElG
SUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9OQU1FX0dMT0JBTCkKICN1bmRlZiBKU0NfSURF
TlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwKKyAgICAgICAgCisg
ICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXIm
KSBjb25zdDsKKyAgICAgICAgSWRlbnRpZmllciBnZXRQdWJsaWNOYW1lKGNvbnN0IElkZW50aWZp
ZXImKSBjb25zdDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDA3NTg3NWZi
MjMxNmE1NTU3MDUwYTY2OTBjZDBmOTg4MjQ4NGY1ZjMuLjVhZjkwODc1NGU3NDdmOGNhZTBjZDA0
YWY4ZDQ5MTUwMDQ2OGMyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgIkpJVC5o
IgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCi0jaW5j
bHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5o
IgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5j
cHAKaW5kZXggNTUzMzRiZTJmOTgwYTk4ZjdmZWE0MmEwNWJlMGYyMGMwMTlmZjBkZC4uZmE1N2Mw
MjY4NWU1M2Q1MjUyODgwNTdlMjExZDk4YjEwOTgxZDczZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5j
cHAKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUg
IkxMSW50Q29tbW9uLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQ29tbW9uU2xvd1Bh
dGhzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlv
bkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5jcHAKaW5kZXggMDVlMTFlMGI4MGEzNDMwYWVhYjIyYjAyMjJhMjEyZjRhOGUyYzQ5Yi4u
MzY0Y2M3MTY2NjA4YjUwMDdkNDc3ZDg3MzkxOGE1ZDY0YjE2ODY1NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKQEAgLTgxLDYg
KzgxLDExIEBAIEpTT2JqZWN0KiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKIAogSlNPYmplY3QqIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJy
b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKIHsKKyAgICAKKyAg
ICBpZiAoaWRlbnQuaW1wbCgpLT5pc0VtcHR5VW5pcXVlKCkpIHsKKyAgICAgICAgU3RyaW5nIG1l
c3NhZ2UobWFrZVN0cmluZygiQ2FuJ3QgZmluZCBwcml2YXRlIHZhcmlhYmxlOiBAIiwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmdldFB1YmxpY05hbWUoaWRlbnQpLnN0cmluZygpKSk7CisgICAgICAg
IHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBtZXNzYWdlKTsKKyAgICB9CiAgICAg
U3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2FuJ3QgZmluZCB2YXJpYWJsZTogIiwgaWRlbnQu
c3RyaW5nKCkpKTsKICAgICByZXR1cm4gY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgbWVzc2Fn
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXgg
MTk4OTc2YmIzZmU2ZTZlOTExNzk4MTJkMWNhZjliOGJmOWJmZDBiYi4uOGQ1OTBlZjBmZmMwZWI5
MGFjOGY5YTgxZDliYzI1NzIxY2QzNWM5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGUuaApAQCAtNDg0LDcgKzQ4NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
Y2xlYXJDb2RlKCk7CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0
IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBp
c1N0cmljdE1vZGUoKSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUlu
Zm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNl
c0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSk7IH0KIAogICAgIHVuc2lnbmVk
IG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJp
YWJsZXMoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mRnVuY3Rpb25EZWNscygpIHsgcmV0dXJu
IG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsgfQpAQCAt
NTQwLDcgKzU0MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJDb2RlKCk7CiAKLSAgICBF
eGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJ
bmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2Up
OyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBF
eGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2Rl
KCksIGZhbHNlLCBmYWxzZSk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU2NyaXB0
RXhlY3V0YWJsZTsKQEAgLTYyOCw3ICs2MjgsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBy
ZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2tGb3Ioa2luZCk7CiAgICAgfQotICAgICAgICAKKworICAg
IGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0
YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUo
KSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZSgpOyB9CiAgICAgY29uc3QgSWRl
bnRpZmllciYgaW5mZXJyZWROYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlu
ZmVycmVkTmFtZSgpOyB9CiAgICAgSlNTdHJpbmcqIG5hbWVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1lVmFsdWUoKTsgfQpAQCAtNjc1LDE0ICs2NzYsNiBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9ib2R5SW5jbHVkZXNCcmFjZXM7CiB9OwogCi1pbmxpbmUg
Ym9vbCBpc0hvc3RGdW5jdGlvbihKU1ZhbHVlIHZhbHVlLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVG
dW5jdGlvbikKLXsKLSAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9u
Kj4oZ2V0SlNGdW5jdGlvbih2YWx1ZSkpOwotICAgIGlmICghZnVuY3Rpb24gfHwgIWZ1bmN0aW9u
LT5pc0hvc3RGdW5jdGlvbigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGZ1
bmN0aW9uLT5uYXRpdmVGdW5jdGlvbigpID09IG5hdGl2ZUZ1bmN0aW9uOwotfQotCiBpbmxpbmUg
dm9pZCBFeGVjdXRhYmxlQmFzZTo6Y2xlYXJDb2RlVmlydHVhbChFeGVjdXRhYmxlQmFzZSogZXhl
Y3V0YWJsZSkKIHsKICAgICBzd2l0Y2ggKGV4ZWN1dGFibGUtPnN0cnVjdHVyZSgpLT50eXBlSW5m
bygpLnR5cGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25Qcm90b3R5cGUuY3BwCmluZGV4IGMxYjA4YWYyZDgxOGRhZTU3ZTFiMDBmZGExNzNhODE2
MTM3NTI5YjUuLjEyNDkwYzQwZjMzNDE3ZWNhOTIzODUwYTBkYzY2MmRiYmNkNDBmMzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5j
cHAKQEAgLTIyLDEyICsyMiwxMyBAQAogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAK
ICNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1
ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1N0cmluZ0J1
aWxkZXIuaCIKLSNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkxleGVyLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCkBA
IC0xMDgsNyArMTA5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBy
b3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKEpTRnVu
Y3Rpb246OmluZm8oKSkpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8
SlNGdW5jdGlvbio+KHRoaXNWYWx1ZSk7Ci0gICAgICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0RnVu
Y3Rpb24oKSkKKyAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigp
KQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3Ry
aW5nKGV4ZWMsICJmdW5jdGlvbiAiLCBmdW5jdGlvbi0+bmFtZShleGVjKSwgIigpIHtcbiAgICBb
bmF0aXZlIGNvZGVdXG59IikpOwogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUgPSBmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCk7CiAgICAgICAgIFN0cmluZyBzb3VyY2VTdHJp
bmcgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS50b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKaW5kZXggNzJlZDFjNzEyNDA2MTE2OGIw
YWRkZDMxMTZmNzU1YTExN2I4ZmI5MC4uYjM3NDk0MzA5OWUyMTU1YTM5NzcxMzMxMzQ3MDJjMmEy
NGFjYzg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3Rp
dmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRp
b24uY3BwCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgSlNBY3RpdmF0aW9uOjp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAKIGlubGluZSBib29sIEpTQWN0
aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJs
ZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFi
bGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlk
KCkpOwogICAgIGlmIChlbnRyeS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC03Miw3ICs3Miw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQo
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90CiAKIGlubGluZSBib29sIEpT
QWN0aXZhdGlvbjo6c3ltYm9sVGFibGVHZXQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50
cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7
CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChw
cm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChlbnRyeS5pc051bGwoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkBAIC04OSw3ICs4OSw3IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6
c3ltYm9sVGFibGVQdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOCiAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8
IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwogICAgIAotICAgIFN5bWJv
bFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1l
LnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxl
KCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChlbnRyeS5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChlbnRyeS5pc1JlYWRPbmx5KCkpIHsK
QEAgLTEzNiw3ICsxMzYsNyBAQCBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxl
UHV0V2l0aEF0dHJpYnV0ZXMoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcAogICAgIFdyaXRlQmFy
cmllckJhc2U8VW5rbm93bj4qIHJlZzsKICAgICB7CiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2Nr
ZXIgbG9ja2VyKHN5bWJvbFRhYmxlKCktPm1fbG9jayk7Ci0gICAgICAgIFN5bWJvbFRhYmxlOjpN
YXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZSgpLT5maW5kKGxvY2tlciwgcHJvcGVydHlO
YW1lLnB1YmxpY05hbWUoKSk7CisgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0
ZXIgPSBzeW1ib2xUYWJsZSgpLT5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAg
ICAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUoKS0+ZW5kKGxvY2tlcikpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5ID0gaXRlci0+
dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3Vt
ZW50c0l0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1l
bnRzSXRlcmF0b3IuY3BwCmluZGV4IDJmY2Y4ODE1YzA1NjgwNTgxMmE3OTkxYTVmZjA2M2Q2ODcz
OTcxNjQuLjlhOTI1ODNhYTBlYzkwZGJiMzI4ZWNkNTBkYzMxMzlhZWYwMjczYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3Iu
Y3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiSlNBcmd1bWVudHNJdGVyYXRvci5oIgog
CiAjaW5jbHVkZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
IAogbmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5jcHAKaW5kZXggOTAwN2I1ZjdkM2YxMDNiMWQyMWIxYTM2NWEyNmMyMTVjMzJiNGQyOC4uYmEw
YTJkMzhlOWM1M2UxNTkzN2Q0NmE4OTUxYThjOGM0NTA3OTI2NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJF
eGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSW5kZXhp
bmdIZWFkZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKICNpbmNsdWRlICJSZWplY3QuaCIKICNpbmNsdWRlIDx3
dGYvQVZMVHJlZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXlJdGVyYXRvci5jcHAKaW5kZXggZDUwNmM0ZWJkMjYyMGVmZDcwNzkzYTg3M2QwODUyZmJkOTc4
Mjg1OS4uY2YzNzA5N2VjMGM2OTI1YTg2N2I4YzAxMGMwZWZjNDA3NDQ4NWYxZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRl
ICJTbG90VmlzaXRvcklubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCmluZGV4IGNjYTY4ODhiZjk4YTAyODY0
NmNhM2RkZGYzNzYyN2NlMGU3ZDkzMDIuLjMzOWE3YWI3ZjU5NTE1ZTk2YWZiN2VjNGI4NzQxZTdh
YThlMTY2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
Y3BwCkBAIC0zMiw3ICszMiw5IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNOb3RBbk9iamVjdC5oIgorI2luY2x1ZGUg
IkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk51bWJlck9iamVjdC5oIgorI2luY2x1ZGUg
Ik9wZXJhdGlvbnMuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0
Zi9TdHJpbmdFeHRyYXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsSW5saW5lcy5oCmluZGV4IGY3Yzg0NDY0NTA5MmIyNTA4MDVlNmU4ZDQ4MzJjOTk4YmRiODli
NTQuLmQ3OTVkZDU2YTk3ZGRiNTk3YzA5MGZjMmUwYjdmMzA4ZTMzZWJjYTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKQEAgLTI3LDggKzI3LDEw
IEBACiAjZGVmaW5lIEpTQ2VsbElubGluZXNfaAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisj
aW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJEZWZlckdDLmgiCiAjaW5j
bHVkZSAiSGFuZGxlLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRl
ICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDI0
MTk2NDYxMGJiNDQyN2IxODYzNzMzNDZlMjRmNWE4MmQwY2RjYzQuLmFjZTZjMTQ3ZTQ5N2ZlZTIw
MjkyZmI1NTM5NzYwZDVkNjk4MjljZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0zNCw3ICszNCw4IEBACiAjaW5jbHVkZSAiRnVuY3Rpb25Q
cm90b3R5cGUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJKU0FycmF5
LmgiCi0jaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiIAorI2luY2x1ZGUgIkpTQm91bmRGdW5j
dGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3QuaCIKICNpbmNsdWRlICJKU05vdEFuT2JqZWN0LmgiCiAjaW5jbHVkZSAiSW50ZXJw
cmV0ZXIuaCIKQEAgLTEwOSw2ICsxMTAsMTQgQEAgdm9pZCBKU0Z1bmN0aW9uOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGludCBsZW5ndGgKICAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIobGVuZ3Ro
KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogCitKU0Z1bmN0aW9uKiBK
U0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgSlNG
dW5jdGlvbiogZnVuY3Rpb24gPSBjcmVhdGUodm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCk7
CisgICAgZnVuY3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNT
dHJpbmcoJnZtLCBleGVjdXRhYmxlLT5uYW1lKCkuc3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkgfCBEb250RW51bSk7CisgICAgZnVuY3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcihleGVjdXRhYmxlLT5wYXJhbWV0ZXJDb3VudCgpKSwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHJldHVybiBmdW5jdGlvbjsK
K30KKwogT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUqIEpTRnVuY3Rpb246OmNyZWF0ZUFsbG9jYXRp
b25Qcm9maWxlKEV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IGlubGluZUNhcGFjaXR5KQogewogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC0xNDIsNyArMTUxLDcgQEAgY29uc3QgU3RyaW5nIEpT
RnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAg
IHJldHVybiBleHBsaWNpdE5hbWU7CiAgICAgCiAgICAgY29uc3QgU3RyaW5nIGFjdHVhbE5hbWUg
PSBuYW1lKGV4ZWMpOwotICAgIGlmICghYWN0dWFsTmFtZS5pc0VtcHR5KCkgfHwgaXNIb3N0RnVu
Y3Rpb24oKSkKKyAgICBpZiAoIWFjdHVhbE5hbWUuaXNFbXB0eSgpIHx8IGlzSG9zdE9yQnVpbHRp
bkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBhY3R1YWxOYW1lOwogICAgIAogICAgIHJldHVy
biBqc0V4ZWN1dGFibGUoKS0+aW5mZXJyZWROYW1lKCkuc3RyaW5nKCk7CkBAIC0xNTAsMTAgKzE1
OSwyMCBAQCBjb25zdCBTdHJpbmcgSlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKEV4
ZWNTdGF0ZSogZXhlYykKIAogY29uc3QgU291cmNlQ29kZSogSlNGdW5jdGlvbjo6c291cmNlQ29k
ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKGlzSG9zdEZ1bmN0aW9uKCkpCisgICAgaWYgKGlzSG9zdE9y
QnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiAmanNFeGVj
dXRhYmxlKCktPnNvdXJjZSgpOwogfQorICAgIAorYm9vbCBKU0Z1bmN0aW9uOjppc0hvc3RPckJ1
aWx0aW5GdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzSG9zdEZ1bmN0aW9uKCkgfHwg
aXNCdWlsdGluRnVuY3Rpb24oKTsKK30KKworYm9vbCBKU0Z1bmN0aW9uOjppc0J1aWx0aW5GdW5j
dGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuICFpc0hvc3RGdW5jdGlvbigpICYmIGpzRXhlY3V0
YWJsZSgpLT5pc0J1aWx0aW5GdW5jdGlvbigpOworfQogCiB2b2lkIEpTRnVuY3Rpb246OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKQEAgLTI3Nyw3
ICsyOTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIoRXhlY1N0
YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBzbG90QmFzZQogICAgIGlmICghY2FsbGVyLmlzT2Jq
ZWN0KCkgfHwgIWFzT2JqZWN0KGNhbGxlciktPmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbGVyKTsKICAgICBKU0Z1bmN0aW9u
KiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2FsbGVyKTsKLSAgICBpZiAoZnVuY3Rp
b24tPmlzSG9zdEZ1bmN0aW9uKCkgfHwgIWZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJp
Y3RNb2RlKCkpCisgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpIHx8
ICFmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxlcik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkZ1bmN0aW9uLmNhbGxlciB1c2VkIHRv
IHJldHJpZXZlIHN0cmljdCBjYWxsZXIiKSkpOwogfQpAQCAtMjk5LDcgKzMxOCw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTRnVuY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFs
dWUgc2xvdEJhc2UsIEVuY29kCiBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RG
dW5jdGlvbigpKQorICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigp
KQogICAgICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpIHsKQEAgLTM2MSw3ICszODAsNyBAQCBib29sIEpT
RnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5Tgogdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJh
eSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7CiAgICAgSlNGdW5jdGlv
biogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsKLSAgICBpZiAoIXRo
aXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkgJiYgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJv
cGVydGllcykpIHsKKyAgICBpZiAoIXRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9u
KCkgJiYgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpIHsKICAgICAgICAgLy8g
TWFrZSBzdXJlIHByb3RvdHlwZSBoYXMgYmVlbiByZWlmaWVkLgogICAgICAgICBQcm9wZXJ0eVNs
b3Qgc2xvdCh0aGlzT2JqZWN0KTsKICAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+
Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5wcm90b3R5cGUsIHNsb3QpOwpAQCAtMzc3LDcgKzM5Niw3IEBAIHZvaWQgSlNGdW5jdGlvbjo6
Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywKIHZvaWQgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0
aW9uKj4oY2VsbCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkpIHsKKyAg
ICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkgewogICAgICAgICBC
YXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MjUsNyArNDQ0LDcgQEAgYm9vbCBKU0Z1bmN0aW9u
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3AKIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQ
cm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CiAg
ICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsK
LSAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICBpZiAodGhpc09iamVj
dC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIEJhc2U6OmRlZmlu
ZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJv
d0V4Y2VwdGlvbik7CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5wcm90b3R5cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uaAppbmRleCA3Y2QxNGI4YzJkODAwZjYxYmRjMTJlZGQyZGYwNGQzNWZhMDYxOWI2Li45YjU4
Yjc0N2NlMWYzZjMzMmQwZjc2MGE1Nzg1YjdhYzE5ZWJlOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC02OCw2ICs2OCw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uOwogICAgICAgICB9CiAgICAgICAgIAor
ICAgICAgICBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlQnVpbHRpbkZ1bmN0aW9uKFZNJiwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiwgSlNHbG9iYWxPYmplY3QqKTsKKyAgICAgICAgCiAgICAgICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAgIAogICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBTdHJpbmcgbmFtZShFeGVjU3RhdGUqKTsKQEAgLTk3LDcgKzk5LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9leGVjdXRhYmxlLmdldCgpOyB9CiAKICAgICAgICAgLy8gVG8gY2FsbCBlaXRoZXIg
b2YgdGhlc2UgbWV0aG9kcyBpbmNsdWRlIEV4ZWN1dGFibGUuaAotICAgICAgICBpbmxpbmUgYm9v
bCBpc0hvc3RGdW5jdGlvbigpIGNvbnN0OworICAgICAgICBib29sIGlzSG9zdEZ1bmN0aW9uKCkg
Y29uc3Q7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSoganNFeGVjdXRhYmxlKCkgY29uc3Q7
CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgU291cmNlQ29kZSogc291cmNlQ29k
ZSgpIGNvbnN0OwpAQCAtMTQ1LDYgKzE0NywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIHJldHVybiBtX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDsKICAgICAgICAgfQogCisg
ICAgICAgIGJvb2wgaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSBjb25zdDsKKyAgICAgICAgYm9v
bCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBi
b29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CisKICAgICBwcm90ZWN0ZWQ6CiAg
ICAgICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dl
dE93blByb3BlcnR5U2xvdCB8IEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IE92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVy
ZUZsYWdzOwogCkBAIC0xNjksOCArMTc1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0
ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAg
Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUo
KSBjb25zdDsKLQogICAgICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgYXJndW1lbnRzR2V0dGVy
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1l
KTsKICAgICAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGNhbGxlckdldHRlcihFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CiAgICAgICAg
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKaW5kZXggZmU0ZTExNGFkYmMy
MzY3NGQzYjYwZTYxZjcxY2I3YTA2Yzk0Nzg0ZC4uNjlmMGQ0ZjM5NmVmOWMyZGE5ZTBiZjYwOGMy
NjQ0MTcxNzk5YmE1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uSW5saW5lcy5oCkBAIC01MywxNiArNTMsMjQgQEAgaW5saW5lIGJvb2wgSlNGdW5j
dGlvbjo6aXNIb3N0RnVuY3Rpb24oKSBjb25zdAogCiBpbmxpbmUgTmF0aXZlRnVuY3Rpb24gSlNG
dW5jdGlvbjo6bmF0aXZlRnVuY3Rpb24oKQogewotICAgIEFTU0VSVChpc0hvc3RGdW5jdGlvbigp
KTsKKyAgICBBU1NFUlQoaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSk7CiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PE5hdGl2ZUV4ZWN1dGFibGUqPihtX2V4ZWN1dGFibGUuZ2V0KCkpLT5mdW5jdGlv
bigpOwogfQogCiBpbmxpbmUgTmF0aXZlRnVuY3Rpb24gSlNGdW5jdGlvbjo6bmF0aXZlQ29uc3Ry
dWN0b3IoKQogewotICAgIEFTU0VSVChpc0hvc3RGdW5jdGlvbigpKTsKKyAgICBBU1NFUlQoaXNI
b3N0RnVuY3Rpb25Ob25JbmxpbmUoKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5hdGl2ZUV4
ZWN1dGFibGUqPihtX2V4ZWN1dGFibGUuZ2V0KCkpLT5jb25zdHJ1Y3RvcigpOwogfQogCitpbmxp
bmUgYm9vbCBpc0hvc3RGdW5jdGlvbihKU1ZhbHVlIHZhbHVlLCBOYXRpdmVGdW5jdGlvbiBuYXRp
dmVGdW5jdGlvbikKK3sKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0
aW9uKj4oZ2V0SlNGdW5jdGlvbih2YWx1ZSkpOworICAgIGlmICghZnVuY3Rpb24gfHwgIWZ1bmN0
aW9uLT5pc0hvc3RGdW5jdGlvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJu
IGZ1bmN0aW9uLT5uYXRpdmVGdW5jdGlvbigpID09IG5hdGl2ZUZ1bmN0aW9uOworfQorCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTRnVuY3Rpb25JbmxpbmVzX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3JJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCmluZGV4IDJkZGMyOWY3MTg5
N2JiNTFkMzkwYjA2YjI1YTczODMzODc0YmEwYzEuLmVkZDM0NDljZTQ3YjE3MzVlOGU1ZGJiMDVm
MzE4ZTNkNTVmM2JlNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rv
cklubGluZXMuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBKU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0NvbnN0cnVjdG9ySW5saW5lc19oCiAjZGVmaW5lIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3JJbmxpbmVzX2gKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAj
aW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAi
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lu
bGluZXMuaAppbmRleCA2ZGI4NjI3NGMzYjg3NGFhYWRlNTE1MTg5ODI2NzI2ZmIxMzZjMTczLi5m
MjRlYTczMDNkZjk2OWRiZDJkY2E1MmM4NmQxMWM3OGMwMGRiOWVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0lubGluZXMuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBKU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0lubGluZXNfaAogCiAjaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCisjaW5jbHVk
ZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJEZWZlckdDLmgiCiAjaW5jbHVkZSAi
RXJyb3IuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlw
ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oCmluZGV4IDQ1OTk5N2E0NjRiOTExOTQ3N2IxYmU4
NGUzNmM0ZTI5NjZhY2VmODUuLjhlNWZmODI3OTFlNmZmOGQ0ZWI5YzM3MzY5MWU0MzNlYjdkMTZh
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oCkBAIC0y
Niw2ICsyNiw3IEBACiAjaWZuZGVmIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5s
aW5lc19oCiAjZGVmaW5lIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lc19o
CiAKKyNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRl
eCAyYzI3NGMxYTdkNDgxYzA3ZGYwZDJiZWIzYjI5MzFhMzkwN2E1ZTY2Li4wNmU1NGM4NGU3N2I5
MDMyYmFhMWQyZGY0N2ExYzcyZTgwYjdkZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0zNDYsNyArMzQ2LDggQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAKICAgICAvLyBDb25zdHJ1
Y3RvcnMKIAotICAgIEpTQ2VsbCogb2JqZWN0Q29uc3RydWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rv
cjo6Y3JlYXRlKHZtLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwor
ICAgIE9iamVjdENvbnN0cnVjdG9yKiBvYmplY3RDb25zdHJ1Y3RvciA9IE9iamVjdENvbnN0cnVj
dG9yOjpjcmVhdGUodm0sIE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7
CisgICAgbV9vYmplY3RDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIG9iamVjdENvbnN0cnVjdG9y
KTsKICAgICBKU0NlbGwqIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBGdW5jdGlvbkNvbnN0cnVjdG9y
OjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkp
OwogICAgIEpTQ2VsbCogYXJyYXlDb25zdHJ1Y3RvciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0
ZSh2bSwgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0
aW9uUHJvdG90eXBlLmdldCgpKSwgbV9hcnJheVByb3RvdHlwZS5nZXQoKSk7CiAKQEAgLTQzMiw3
ICs0MzMsMTAgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgR2xvYmFsUHJvcGVydHlJbmZvIHN0YXRpY0dsb2JhbHNbXSA9IHsKICAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPk5hTiwganNOYU4oKSwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+SW5maW5pdHksIGpzTnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91
YmxlPjo6aW5maW5pdHkoKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKLSAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdv
cmQsIGpzVW5kZWZpbmVkKCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KQorICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29y
ZCwganNVbmRlZmluZWQoKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29y
ZFByaXZhdGVOYW1lLCBqc1VuZGVmaW5lZCgpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFk
T25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5PYmpl
Y3RQcml2YXRlTmFtZSwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PlR5cGVFcnJvclByaXZhdGVOYW1lLCBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250
RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSkKICAgICB9OwogICAgIGFkZFN0YXRpY0dsb2Jh
bHMoc3RhdGljR2xvYmFscywgV1RGX0FSUkFZX0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CiAgICAg
CkBAIC02MDgsNiArNjEyLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX3N5bnRheEVycm9yQ29uc3RydWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX3R5cGVFcnJvckNvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9VUklFcnJvckNvbnN0cnVjdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9vYmplY3RDb25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fcHJvbWlzZUNvbnN0cnVjdG9yKTsKIAogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX2V2YWxGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBiMGNhZDNkYzU0NzBmN2M3YTBlNTcwYmRj
ZDJkZmZhODk1ZTJhYTBjLi4zYTYxNmM2ZjA1ZWRmMWQyOTVhZjg0NDFhYTY2NTAwZmI5MmE0YTQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
QEAgLTY3LDYgKzY3LDcgQEAgY2xhc3MgSlNTdGFjazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKIGNsYXNzIE1pY3JvdGFzazsKIGNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I7Citj
bGFzcyBPYmplY3RDb25zdHJ1Y3RvcjsKIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBQ
cm9ncmFtRXhlY3V0YWJsZTsKIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yOwpAQCAtMTU4LDYgKzE1
OSw3IEBAIHByb3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
cj4gbV90eXBlRXJyb3JDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JD
b25zdHJ1Y3Rvcj4gbV9VUklFcnJvckNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxKU1By
b21pc2VDb25zdHJ1Y3Rvcj4gbV9wcm9taXNlQ29uc3RydWN0b3I7CisgICAgV3JpdGVCYXJyaWVy
PE9iamVjdENvbnN0cnVjdG9yPiBtX29iamVjdENvbnN0cnVjdG9yOwogCiAgICAgV3JpdGVCYXJy
aWVyPEpTRnVuY3Rpb24+IG1fZXZhbEZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0
aW9uPiBtX2NhbGxGdW5jdGlvbjsKQEAgLTMzMCw2ICszMzIsNyBAQCBwdWJsaWM6CiAgICAgUmVn
RXhwQ29uc3RydWN0b3IqIHJlZ0V4cENvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWdF
eHBDb25zdHJ1Y3Rvci5nZXQoKTsgfQogCiAgICAgRXJyb3JDb25zdHJ1Y3RvciogZXJyb3JDb25z
dHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQorICAg
IE9iamVjdENvbnN0cnVjdG9yKiBvYmplY3RDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1f
b2JqZWN0Q29uc3RydWN0b3IuZ2V0KCk7IH0KICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBl
dmFsRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXZhbEVycm9yQ29uc3RydWN0
b3IuZ2V0KCk7IH0KICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiByYW5nZUVycm9yQ29uc3Ry
dWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQog
ICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHJlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IoKSBj
b25zdCB7IHJldHVybiBtX3JlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KQEAgLTU4
MSw3ICs1ODQsNyBAQCBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6aGFzT3duUHJvcGVydHlG
b3JXcml0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZQogCiBpbmxpbmUgYm9vbCBKU0ds
b2JhbE9iamVjdDo6c3ltYm9sVGFibGVIYXNQcm9wZXJ0eShQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxp
bmVHZXQocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBl
bnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAg
IHJldHVybiAhZW50cnkuaXNOdWxsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmNwcAppbmRleCAyYjY3YTFkOWVlZDg0ZTk5NTZmOGJiOTY4Mzg0Yzg0Y2Fl
YTUzY2ZmLi4yZWEyYzI0ZTZlYWI0Y2QwZDdmZmVkNjY1ZWY0YWU0MWFmMDc1MGYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC04Nyw3ICs4Nyw3IEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCBnZXRDbGFzc1Byb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBDbGFzc0luZm8qIGNsYXNzCiAgICAgICAgIGludCBoYXNoU2l6ZU1hc2sgPSB0YWJs
ZS0+Y29tcGFjdFNpemUgLSAxOwogICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gdGFi
bGUtPnRhYmxlOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8PSBoYXNoU2l6ZU1hc2s7ICsr
aSwgKytlbnRyeSkgewotICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkoKSAmJiAoIShlbnRyeS0+
YXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3Bl
cnRpZXMpKSAmJiAhKChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pICYmIGRpZFJlaWZ5
KSkKKyAgICAgICAgICAgIGlmIChlbnRyeS0+a2V5KCkgJiYgKCEoZW50cnktPmF0dHJpYnV0ZXMo
KSAmIERvbnRFbnVtKSB8fCAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgJiYg
ISgoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSAmJiBkaWRSZWlmeSkp
CiAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZW50cnktPmtleSgpKTsKICAgICAg
ICAgfQogICAgIH0KQEAgLTE2MTgsNyArMTYxOCw3IEBAIHZvaWQgSlNPYmplY3Q6OnJlaWZ5U3Rh
dGljRnVuY3Rpb25zRm9yRGVsZXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzKTsKICAgICAgICAgZm9yIChIYXNo
VGFibGU6OkNvbnN0SXRlcmF0b3IgaXRlciA9IGhhc2hUYWJsZS0+YmVnaW4odm0pOyBpdGVyICE9
IGhhc2hUYWJsZS0+ZW5kKHZtKTsgKytpdGVyKSB7Ci0gICAgICAgICAgICBpZiAoaXRlci0+YXR0
cmlidXRlcygpICYgRnVuY3Rpb24pCisgICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygp
ICYgQnVpbHRpbk9yRnVuY3Rpb24pCiAgICAgICAgICAgICAgICAgc2V0VXBTdGF0aWNGdW5jdGlv
blNsb3QoZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgKml0ZXIsIHRoaXMsIElkZW50aWZp
ZXIoJnZtLCBpdGVyLT5rZXkoKSksIHNsb3QpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjIzNiw2
ICsyMjM2LDE2IEBAIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uCiAgICAgcHV0RGlyZWN0KHZtLCBw
cm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsKIH0KIAordm9pZCBKU09iamVjdDo6
cHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZnVuY3Rpb25FeGVjdXRhYmxlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQoreworICAgIFN0cmlu
Z0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOworICAgIGlmICghbmFtZSkK
KyAgICAgICAgbmFtZSA9IHZtLnByb3BlcnR5TmFtZXMtPmFub255bW91cy5pbXBsKCk7CisgICAg
QVNTRVJUKG5hbWUpOworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3Jl
YXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihm
dW5jdGlvbkV4ZWN1dGFibGUpLCBnbG9iYWxPYmplY3QpOworICAgIHB1dERpcmVjdCh2bSwgcHJv
cGVydHlOYW1lLCBmdW5jdGlvbiwgYXR0cmlidXRlcyk7Cit9CisKIHZvaWQgSlNPYmplY3Q6OnB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgdW5z
aWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRy
aW5zaWMgaW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIFN0cmluZ0ltcGwq
IG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmgKaW5kZXggMDJiMTM3YjM1MGMyZmE4MzI1YmQzYjk2NDcxMTJhYmU4
NzZmMzgzZi4uZGRlNTk3ZWZmYWVjMGYxYjhkNDRjMjkxMTk1MDMwMWYwNjAwN2U5OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC0yOSw3ICsyOSw2IEBACiAj
aW5jbHVkZSAiQnV0dGVyZmx5LmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAi
Q2xhc3NJbmZvLmgiCi0jaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJD
b3B5V3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSAiRGVmZXJHQy5oIgogI2luY2x1ZGUgIkhlYXAu
aCIKQEAgLTU4MSw2ICs1ODAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXREaXJlY3RVbmRlZmlu
ZWQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSB7IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNl
dFVuZGVmaW5lZCgpOyB9CiAKICAgICB2b2lkIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxl
bmd0aCwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7Cisg
ICAgdm9pZCBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNv
bnN0IFByb3BlcnR5TmFtZSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpOwogICAgIHZvaWQgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rp
b25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMp
OwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3Jp
cHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCmluZGV4IDQwMjYxOTYzM2ZhMDZm
ZDI1NGIzZjJhN2E4Y2M3MWU4MDdhYWY5MTEuLjE3ZDJhYjY1YTg4ZmZiMTNmYTlhNmM4ZjU4M2Nh
ODQ0YWY4MzIyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvbWlzZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJK
U1Byb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZUZ1bmN0aW9ucy5oIgogI2lu
Y2x1ZGUgIkpTUHJvbWlzZVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5o
IgogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk51bWJlck9iamVjdC5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmNwcAppbmRleCBjYmM0MmViOWZkOTIzMGY0NmU2Zjg0
OWZmMWE3OTU5YmQxMDc5YmVjLi40MjcxMGMzMDU0NGExMWM3NTQ3YzNjZjg4OGI5NmE0OGM0Njhh
MDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VE
ZWZlcnJlZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNl
RGVmZXJyZWQuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSlNQcm9taXNlLmgiCiAj
aW5jbHVkZSAiSlNQcm9taXNlQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU1Byb21pc2VGdW5j
dGlvbnMuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJTbG90Vmlz
aXRvcklubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUHJvdG90eXBlLmNwcAppbmRleCA5ZGY0NTc4MTdj
YTgwM2QzNzMyODI0MmZjMzNlY2E3NDVlZDQwNDMxLi5lNGNhNWE0NmQ5MWJiODA0MjRiODYyZTkz
MjQ5MjM3YmZjNTNlN2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb21pc2VQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvbWlzZVByb3RvdHlwZS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJK
U1Byb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZUZ1bmN0aW9ucy5oIgogI2lu
Y2x1ZGUgIkpTUHJvbWlzZVJlYWN0aW9uLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiTWljcm90YXNrLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VSZWFj
dGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUmVhY3Rpb24u
aAppbmRleCBmYzcxNDZjNTBlODQ5ZDMzMGQ4OWU2M2ZjMTljYTY0OWQzYzBlODQ4Li40MmQyNDk2
YTFmY2RhYmJjMTFkYzdiYjI3N2RkMTIzZTJhNGRlMjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VSZWFjdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlYWN0aW9uLmgKQEAgLTI3LDYgKzI3LDcgQEAK
ICNkZWZpbmUgSlNQcm9taXNlUmVhY3Rpb25faAogCiAjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5j
bHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAKIG5hbWVz
cGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAppbmRleCA2OGE4YmQ4N2QzOGFkYmJiOWRkMmFjOWVj
NGI0OWQ1ZWY0NTQ5ZDU2Li4yMzdjNDJiYjBkYTBmMTY2NzZlYjExYWRlODE4MGE3YjA2ZDk4ZWI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmNwcApAQCAtMjksNyArMjksOSBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKIAorI2luY2x1ZGUgIkpTQ0pT
VmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJP
cGVyYXRpb25zLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaAppbmRleCBmNDM2MmZmMzU0ZWU2YTUwMjIxYmI3MzFkMWEyNjExZTZk
ZDYxYmMwLi5kMDczNzE5ZGUxNjBkMmYyOTIxMTBhNTk2YTEwNWUyZmEyMTE1ZmZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oCkBAIC0zMSw3ICszMSw2IEBACiAKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1
ZGUgIkpTU3RyaW5nLmgiCi0jaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlByb3Bl
cnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCAyYjFjZGRkYzU4NDFkNjBkMTU3YTJlNjFmNzAyYjBl
ZTVmYTFkNjc2Li5lMzkzNDE2MGFlYTkyNmVmMTU5MzJmODc5MGUyNGM1MmFmMDJkMzVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKQEAgLTI0LDcgKzI0LDYgQEAK
ICNkZWZpbmUgSlNTdHJpbmdfaAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAi
Q29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
UHJvcGVydHlEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCkBAIC00NzIs
MzMgKzQ3MSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGlubGluZSBKU1N0cmluZyoganNOb250
cml2aWFsU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBq
c05vbnRyaXZpYWxTdHJpbmcoJmV4ZWMtPnZtKCksIHMpOyB9CiAgICAgaW5saW5lIEpTU3RyaW5n
KiBqc093bmVkU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKSB7IHJldHVy
biBqc093bmVkU3RyaW5nKCZleGVjLT52bSgpLCBzKTsgfQogCi0gICAgQUxXQVlTX0lOTElORSBi
b29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi0gICAgewotICAgICAg
ICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKLSAg
ICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVh
ZE9ubHksIGpzTnVtYmVyKG1fbGVuZ3RoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgfQotCi0gICAgICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOwot
ICAgICAgICBpZiAoaSA8IG1fbGVuZ3RoKSB7Ci0gICAgICAgICAgICBBU1NFUlQoaSAhPSBQcm9w
ZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOyAvLyBObyBuZWVkIGZvciBhbiBleHBsaWNpdCBjaGVjaywg
dGhlIGFib3ZlIHRlc3Qgd291bGQgYWx3YXlzIGZhaWwhCi0gICAgICAgICAgICBzbG90LnNldFZh
bHVlKHRoaXMsIERvbnREZWxldGUgfCBSZWFkT25seSwgZ2V0SW5kZXgoZXhlYywgaSkpOwotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotICAgICAgICAgICAgCi0gICAgQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpn
ZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKLSAgICB7Ci0gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUg
PCBtX2xlbmd0aCkgewotICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRl
IHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIHByb3BlcnR5TmFtZSkpOwotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
CiAgICAgaW5saW5lIGJvb2wgaXNKU1N0cmluZyhKU1ZhbHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxs
KCkgJiYgdi5hc0NlbGwoKS0+Y2xhc3NJbmZvKCkgPT0gSlNTdHJpbmc6OmluZm8oKTsgfQogCiAg
ICAgLy8gLS0tIEpTVmFsdWUgaW5saW5lcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBA
IC01MjgsMzIgKzUwMCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gdG9XVEZT
dHJpbmdTbG93Q2FzZShleGVjKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIFN0cmluZyBp
bmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcoY29uc3QgSlNWYWx1ZSYgdmFsdWUsIEV4ZWNT
dGF0ZSogZXhlYykKLSAgICB7Ci0gICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgICAg
IGlmICh2YWx1ZS5pc0ludDMyKCkpCi0gICAgICAgICAgICByZXR1cm4gdm0ubnVtZXJpY1N0cmlu
Z3MuYWRkKHZhbHVlLmFzSW50MzIoKSk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc0RvdWJsZSgpKQot
ICAgICAgICAgICAgcmV0dXJuIHZtLm51bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZS5hc0RvdWJsZSgp
KTsKLSAgICAgICAgaWYgKHZhbHVlLmlzVHJ1ZSgpKQotICAgICAgICAgICAgcmV0dXJuIHZtLnBy
b3BlcnR5TmFtZXMtPnRydWVLZXl3b3JkLnN0cmluZygpOwotICAgICAgICBpZiAodmFsdWUuaXNG
YWxzZSgpKQotICAgICAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPmZhbHNlS2V5d29y
ZC5zdHJpbmcoKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQotICAgICAgICAgICAgcmV0
dXJuIHZtLnByb3BlcnR5TmFtZXMtPm51bGxLZXl3b3JkLnN0cmluZygpOwotICAgICAgICBpZiAo
dmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVz
LT51bmRlZmluZWRLZXl3b3JkLnN0cmluZygpOwotICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgU3RyaW5n
IEpTVmFsdWU6OnRvV1RGU3RyaW5nSW5saW5lKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKLSAgICB7
Ci0gICAgICAgIGlmIChpc1N0cmluZygpKQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEpTU3RyaW5nKj4oYXNDZWxsKCkpLT52YWx1ZShleGVjKTsKLQotICAgICAgICByZXR1cm4gaW5s
aW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKCp0aGlzLCBleGVjKTsKLSAgICB9Ci0KIH0gLy8g
bmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gSlNTdHJpbmdfaApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzhjMDVmYzgw
ZDg4ZTg1MzdjOWQyYTVlYWI5ZmYwYmE5YjYwYTc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgKQEAgLTAsMCArMSw5MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgSlNTdHJpbmdJbmxpbmVzX2gKKyNkZWZpbmUgSlNTdHJpbmdJbmxpbmVzX2gKKworI2lu
Y2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworQUxXQVlTX0lO
TElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAg
aWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CisgICAg
ICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHks
IGpzTnVtYmVyKG1fbGVuZ3RoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAK
KyAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAgICBpZiAoaSA8IG1f
bGVuZ3RoKSB7CisgICAgICAgIEFTU0VSVChpICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCk7
IC8vIE5vIG5lZWQgZm9yIGFuIGV4cGxpY2l0IGNoZWNrLCB0aGUgYWJvdmUgdGVzdCB3b3VsZCBh
bHdheXMgZmFpbCEKKyAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVh
ZE9ubHksIGdldEluZGV4KGV4ZWMsIGkpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKworQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5n
OjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBpZiAocHJvcGVydHlOYW1lIDwgbV9s
ZW5ndGgpIHsKKyAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVhZE9u
bHksIGdldEluZGV4KGV4ZWMsIHByb3BlcnR5TmFtZSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCitBTFdBWVNfSU5MSU5FIFN0cmlu
ZyBpbmxpbmVKU1ZhbHVlTm90U3RyaW5ndG9TdHJpbmcoY29uc3QgSlNWYWx1ZSYgdmFsdWUsIEV4
ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGlmICh2YWx1
ZS5pc0ludDMyKCkpCisgICAgICAgIHJldHVybiB2bS5udW1lcmljU3RyaW5ncy5hZGQodmFsdWUu
YXNJbnQzMigpKTsKKyAgICBpZiAodmFsdWUuaXNEb3VibGUoKSkKKyAgICAgICAgcmV0dXJuIHZt
Lm51bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZS5hc0RvdWJsZSgpKTsKKyAgICBpZiAodmFsdWUuaXNU
cnVlKCkpCisgICAgICAgIHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT50cnVlS2V5d29yZC5zdHJp
bmcoKTsKKyAgICBpZiAodmFsdWUuaXNGYWxzZSgpKQorICAgICAgICByZXR1cm4gdm0ucHJvcGVy
dHlOYW1lcy0+ZmFsc2VLZXl3b3JkLnN0cmluZygpOworICAgIGlmICh2YWx1ZS5pc051bGwoKSkK
KyAgICAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPm51bGxLZXl3b3JkLnN0cmluZygpOwor
ICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1cm4gdm0ucHJvcGVydHlO
YW1lcy0+dW5kZWZpbmVkS2V5d29yZC5zdHJpbmcoKTsKKyAgICByZXR1cm4gdmFsdWUudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpOworfQorICAgIAorQUxXQVlTX0lOTElORSBTdHJpbmcgSlNW
YWx1ZTo6dG9XVEZTdHJpbmdJbmxpbmUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIGlm
IChpc1N0cmluZygpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNTdHJpbmcqPihhc0Nl
bGwoKSktPnZhbHVlKGV4ZWMpOworICAgIAorICAgIHJldHVybiBpbmxpbmVKU1ZhbHVlTm90U3Ry
aW5ndG9TdHJpbmcoKnRoaXMsIGV4ZWMpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAppbmRl
eCAyYWMyNTI0YzVkZmRhM2QxMjI0OWQ3NzkwYWRjMzEyOWUzYzBlODcxLi5mYmM4Yjg5NWVhZTZh
Zjc4ODgzOWJlYjVlODNkN2I2Yjk3OTI4ZmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcApAQCAtNjQsNiArNjQsOCBA
QCB2b2lkIEpTU3ltYm9sVGFibGVPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdAogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxv
Y2tlcih0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5tX2xvY2spOwogICAgICAgICBTeW1ib2xU
YWJsZTo6TWFwOjppdGVyYXRvciBlbmQgPSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5lbmQo
bG9ja2VyKTsKICAgICAgICAgZm9yIChTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdCA9IHRo
aXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPmJlZ2luKGxvY2tlcik7IGl0ICE9IGVuZDsgKytpdCkg
eworICAgICAgICAgICAgaWYgKGl0LT5rZXktPmlzRW1wdHlVbmlxdWUoKSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmICghKGl0LT52YWx1ZS5nZXRBdHRyaWJ1dGVz
KCkgJiBEb250RW51bSkgfHwgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpCiAg
ICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcihleGVjLCBpdC0+a2V5
LmdldCgpKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAppbmRleCBiNWIyMGE4NDViNmFiNjQ0MjRiMzdlMzFi
Mjc3NGVmOTA1MzUzZjdmLi5kMDNiMjQ1MTFjMmRlMTk1OWZiNWY1NmQ2NDljNjRkMGVmZTA2ODU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxl
T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJs
ZU9iamVjdC5oCkBAIC03Miw3ICs3Miw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAog
ewogICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7
CiAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAg
ICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2Nr
ZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0
ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgp
KTsKICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1
ZTsKQEAgLTg3LDcgKzg3LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiB7CiAgICAg
U3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9sVGFibGUoKTsKICAgICBD
b25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2spOwotICAgIFN5bWJv
bFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJv
cGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3Ig
aXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAg
IGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgU3ltYm9sVGFibGVFbnRyeTo6RmFzdCBlbnRyeSA9IGl0ZXItPnZhbHVlOwpAQCAt
MTA0LDcgKzEwNCw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogewogICAgIFN5bWJv
bFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgQ29uY3Vy
cmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICBTeW1ib2xUYWJs
ZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5
TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIg
PSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAo
aXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1ZTsKQEAgLTEyNiw3
ICsxMjYsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dCgKICAgICB7CiAgICAgICAgIFN5
bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgICAg
IEdDU2FmZUNvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jaywgZXhl
Yy0+dm0oKS5oZWFwKTsKLSAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9
IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAg
ICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQo
bG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgICAgICBpZiAoaXRlciA9PSBzeW1ib2xU
YWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYm9v
bCB3YXNGYXQ7CkBAIC0xNTksNyArMTU5LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRX
aXRoQXR0cmlidXRlcygKICAgICB7CiAgICAgICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9
ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9j
a2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJh
dG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05h
bWUoKSk7CisgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xU
YWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICAgICAgaWYgKGl0ZXIg
PT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5ID0gaXRlci0+dmFsdWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAppbmRleCBhODA2ZGQwNTJhMGNiZWU0Y2FjMmNh
YTZlMDhjNjcxNjAwNWMyNzBjLi5hOTc2NTIwMWI5ZjUxODY0MTQyM2RkZTBmZTBlMmU1MWE4Y2U3
M2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKQEAgLTY4LDcg
KzY4LDcgQEAgdm9pZCBIYXNoVGFibGU6OmRlbGV0ZVRhYmxlKCkgY29uc3QKIGJvb2wgc2V0VXBT
dGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoRW50cnkqIGVudHJ5
LCBKU09iamVjdCogdGhpc09iaiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIEFTU0VSVCh0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSk7Ci0gICAg
QVNTRVJUKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbik7CisgICAgQVNTRVJUKGVudHJ5
LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbik7CiAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCA9IHRoaXNPYmotPmdldERpcmVjdE9mZnNldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVz
KTsKQEAgLTc5LDkgKzc5LDEzIEBAIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCoKICAgICAgICAgaWYg
KHRoaXNPYmotPnN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAKLSAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oCi0g
ICAgICAgICAgICB2bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZW50
cnktPmZ1bmN0aW9uTGVuZ3RoKCksCi0gICAgICAgICAgICBlbnRyeS0+ZnVuY3Rpb24oKSwgZW50
cnktPmludHJpbnNpYygpLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAgICAgICAgaWYgKGVudHJ5
LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluKQorICAgICAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0
QnVpbHRpbkZ1bmN0aW9uKHZtLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1l
LCBlbnRyeS0+YnVpbHRpbkdlbmVyYXRvcigpKHZtKSwgZW50cnktPmF0dHJpYnV0ZXMoKSk7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b24oCisgICAgICAgICAgICAgICAgdm0sIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0
eU5hbWUsIGVudHJ5LT5mdW5jdGlvbkxlbmd0aCgpLAorICAgICAgICAgICAgICAgIGVudHJ5LT5m
dW5jdGlvbigpLCBlbnRyeS0+aW50cmluc2ljKCksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAg
ICAgICB9CiAgICAgICAgIG9mZnNldCA9IHRoaXNPYmotPmdldERpcmVjdE9mZnNldCh2bSwgcHJv
cGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKICAgICAgICAgQVNTRVJUKGlzVmFsaWRPZmZzZXQob2Zm
c2V0KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TG9va3VwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAppbmRleCBi
ZGU4M2Q0YTZmYzM1NTc3ODUwZTMxZTg4YmMzOWZkMDVmN2JjZTUyLi5kYmEzODllOWUyNDNkZDBl
Y2IyYmE5OGYzOTRkNDA3OWY5ZGVhOTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Mb29rdXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9M
b29rdXAuaApAQCAtNDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAvLyBpZS4gdHlw
ZWRlZiBKU1ZhbHVlICgqR2V0RnVuY3Rpb24pKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBiYXNlT2Jq
ZWN0KQogICAgIHR5cGVkZWYgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgR2V0RnVuY3Rpb247
CiAgICAgdHlwZWRlZiBQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYyBQdXRGdW5jdGlvbjsK
KyAgICB0eXBlZGVmIEZ1bmN0aW9uRXhlY3V0YWJsZSogKCpCdWlsdGluR2VuZXJhdG9yKShWTSYp
OwogCiAgICAgY2xhc3MgSGFzaEVudHJ5IHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CkBAIC02OCwxMSArNjksMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1
cm4gbV9pbnRyaW5zaWM7CiAgICAgICAgIH0KIAorICAgICAgICBCdWlsdGluR2VuZXJhdG9yIGJ1
aWx0aW5HZW5lcmF0b3IoKSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBCdWlsdGluKTsg
cmV0dXJuIG1fdS5idWlsdGluR2VuZXJhdG9yLmdlbmVyYXRvclZhbHVlOyB9CiAgICAgICAgIE5h
dGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgRnVu
Y3Rpb24pOyByZXR1cm4gbV91LmZ1bmN0aW9uLmZ1bmN0aW9uVmFsdWU7IH0KICAgICAgICAgdW5z
aWduZWQgY2hhciBmdW5jdGlvbkxlbmd0aCgpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAm
IEZ1bmN0aW9uKTsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KG1fdS5mdW5jdGlv
bi5sZW5ndGgpOyB9CiAKLSAgICAgICAgR2V0RnVuY3Rpb24gcHJvcGVydHlHZXR0ZXIoKSBjb25z
dCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVy
dHkuZ2V0OyB9Ci0gICAgICAgIFB1dEZ1bmN0aW9uIHByb3BlcnR5UHV0dGVyKCkgY29uc3QgeyBB
U1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5LnB1
dDsgfQorICAgICAgICBHZXRGdW5jdGlvbiBwcm9wZXJ0eUdldHRlcigpIGNvbnN0IHsgQVNTRVJU
KCEobV9hdHRyaWJ1dGVzICYgQnVpbHRpbk9yRnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0
eS5nZXQ7IH0KKyAgICAgICAgUHV0RnVuY3Rpb24gcHJvcGVydHlQdXR0ZXIoKSBjb25zdCB7IEFT
U0VSVCghKG1fYXR0cmlidXRlcyAmIEJ1aWx0aW5PckZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJv
cGVydHkucHV0OyB9CiAKICAgICAgICAgaW50cHRyX3QgbGV4ZXJWYWx1ZSgpIGNvbnN0IHsgQVNT
RVJUKCFtX2F0dHJpYnV0ZXMpOyByZXR1cm4gbV91LmxleGVyLnZhbHVlOyB9CiAKQEAgLTk0LDYg
Kzk2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIGludHB0cl90IGxlbmd0
aDsgLy8gbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgZnVuY3Rpb24KICAgICAgICAgICAgIH0gZnVu
Y3Rpb247CiAgICAgICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgICAgIEJ1aWx0aW5HZW5l
cmF0b3IgZ2VuZXJhdG9yVmFsdWU7CisgICAgICAgICAgICAgICAgaW50cHRyX3QgdW51c2VkOwor
ICAgICAgICAgICAgfSBidWlsdGluR2VuZXJhdG9yOworICAgICAgICAgICAgc3RydWN0IHsKICAg
ICAgICAgICAgICAgICBHZXRGdW5jdGlvbiBnZXQ7CiAgICAgICAgICAgICAgICAgUHV0RnVuY3Rp
b24gcHV0OwogICAgICAgICAgICAgfSBwcm9wZXJ0eTsKQEAgLTIwOSw3ICsyMTUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IEhh
c2hFbnRyeSogZW50cnkoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKICAgICAgICAg
ewotICAgICAgICAgICAgU3RyaW5nSW1wbCogaW1wbCA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1l
KCk7CisgICAgICAgICAgICBTdHJpbmdJbXBsKiBpbXBsID0gcHJvcGVydHlOYW1lLnVpZCgpOwog
ICAgICAgICAgICAgaWYgKCFpbXBsKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICAKQEAgLTI0OSw3ICsyNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaWYgKCFlbnRy
eSkgLy8gbm90IGZvdW5kLCBmb3J3YXJkIHRvIHBhcmVudAogICAgICAgICAgICAgcmV0dXJuIFBh
cmVudEltcDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiAKLSAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikKKyAg
ICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikKICAgICAg
ICAgICAgIHJldHVybiBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChleGVjLCBlbnRyeSwgdGhpc09i
aiwgcHJvcGVydHlOYW1lLCBzbG90KTsKIAogICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1c3Rv
bSh0aGlzT2JqLCBlbnRyeS0+YXR0cmlidXRlcygpLCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSk7
CkBAIC0yODYsNyArMjkyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGlmICghZW50cnkp
IC8vIG5vdCBmb3VuZCwgZm9yd2FyZCB0byBwYXJlbnQKICAgICAgICAgICAgIHJldHVybiBQYXJl
bnRJbXA6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogCi0gICAgICAgIEFTU0VSVCghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikp
OworICAgICAgICBBU1NFUlQoIShlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rp
b24pKTsKIAogICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqLCBlbnRyeS0+
YXR0cmlidXRlcygpLCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSk7CiAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtMjk1LDcgKzMwMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGlubGluZSB2b2lk
IHB1dEVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmpl
Y3QqIGJhc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKICAgICB7CiAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBmdW5jdGlv
biBwdXQgaXQgYXMgYW4gb3ZlcnJpZGUgcHJvcGVydHkuCi0gICAgICAgIGlmIChlbnRyeS0+YXR0
cmlidXRlcygpICYgRnVuY3Rpb24pIHsKKyAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkg
JiBCdWlsdGluT3JGdW5jdGlvbikgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHNsb3QudGhpc1ZhbHVlKCkpKQogICAgICAg
ICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlKTsKICAgICAgICAgfSBlbHNlIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBSZWFk
T25seSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUVycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0
aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZDVlNzI4YzJjZDEwMjBhNDdlNGFkY2Q2NDlj
ZDFmZmZhNWNkNmE4My4uZGNhMmZkOGQxZjZhYzIzYjhmZjgxN2NiYjE4ZmFhZTdiY2Q1OTcwMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTM4LDYgKzM4LDIwIEBAIE5hdGl2ZUVycm9yQ29uc3RydWN0
b3I6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
IHsKIH0KIAordm9pZCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogcHJvdG90eXBlU3Ry
dWN0dXJlLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0sIG5hbWUpOworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICAKKyAgICBOYXRp
dmVFcnJvclByb3RvdHlwZSogcHJvdG90eXBlID0gTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5hbWUsIHRoaXMpOworICAg
IAorICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigx
KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOyAvLyBFQ01BIDE1LjExLjcuNQor
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUs
IERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBtX2Vycm9yU3RydWN0dXJl
LnNldCh2bSwgdGhpcywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSkpOworICAgIEFTU0VSVChtX2Vycm9yU3RydWN0dXJlKTsKKyAgICBB
U1NFUlQobV9lcnJvclN0cnVjdHVyZS0+aXNPYmplY3QoKSk7Cit9CisKIHZvaWQgTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogewogICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCmluZGV4IDc0MGQz
ZjkzMzI5MmZkMmFjY2I0Yjk5MDM0NDMxMmI5MzE5YWUxMTAuLjQzOGEzYWZiOWJiMGY2NDEyYzk3
OTMyMjMwYzg4NzEwOTYxZjU0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKQEAgLTUxLDE5ICs1MSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlKCkgeyByZXR1
cm4gbV9lcnJvclN0cnVjdHVyZS5nZXQoKTsgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkKLSAgICAg
ICAgewotICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIG5hbWUpOwotICAgICAg
ICAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwotCi0gICAgICAgICAgICBOYXRpdmVFcnJv
clByb3RvdHlwZSogcHJvdG90eXBlID0gTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5hbWUsIHRoaXMpOwotCi0gICAgICAg
ICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSks
IERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsgLy8gRUNNQSAxNS4xMS43LjUKLSAg
ICAgICAgICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90
b3R5cGUsIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKLSAgICAgICAgICAgIG1f
ZXJyb3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBFcnJvckluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlKSk7Ci0gICAgICAgICAgICBBU1NFUlQobV9l
cnJvclN0cnVjdHVyZSk7Ci0gICAgICAgICAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZS0+aXNP
YmplY3QoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
KFZNJiwgU3RydWN0dXJlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eVNsb3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5U2xvdC5oCmluZGV4IGQ5MzhmYTMxNjQ1YWYyNmI3NTg1MTRkYjZiMjQ3OGYxODNlOWVlZTEu
LmNmZTljNGQzMmJhNzY4Yzc0ZTRmZmJiMTkxMzUyNzlkZWJmMTE3NjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCkBAIC00Miw2ICs0Miw4IEBAIGVu
dW0gQXR0cmlidXRlIHsKICAgICBGdW5jdGlvbiAgICAgPSAxIDw8IDQsICAvLyBwcm9wZXJ0eSBp
cyBhIGZ1bmN0aW9uIC0gb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCiAgICAgQWNjZXNz
b3IgICAgID0gMSA8PCA1LCAgLy8gcHJvcGVydHkgaXMgYSBnZXR0ZXIvc2V0dGVyCiAgICAgQ3Vz
dG9tQWNjZXNzb3IgPSAxIDw8IDYsCisgICAgQnVpbHRpbiAgICAgICAgID0gMSA8PCA3LCAvLyBw
cm9wZXJ0eSBpcyBhIGJ1aWx0aW4gZnVuY3Rpb24gLSBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0
YWJsZXMKKyAgICBCdWlsdGluT3JGdW5jdGlvbiA9IEJ1aWx0aW4gfCBGdW5jdGlvbiwgLy8gaGVs
cGVyIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogfTsKIAogY2xhc3MgUHJvcGVydHlT
bG90IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0
cnVjdG9yLmNwcAppbmRleCBiYzUxNmIwNmQ2NjUxZjBlNjgyYTIwMTdiZGY4YjAzYmFiZWQ2ZWEy
Li4yYzI0MzRiODdkMDRmNzQ5Y2IxMmU2MDJhYjU0Nzg0OTQ2YTkxZjFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCkBAIC0y
Myw2ICsyMyw3IEBACiAjaW5jbHVkZSAiUmVnRXhwQ29uc3RydWN0b3IuaCIKIAogI2luY2x1ZGUg
IkVycm9yLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0
aW9ucy5oIgogI2luY2x1ZGUgIlJlZ0V4cE1hdGNoZXNBcnJheS5oIgogI2luY2x1ZGUgIlJlZ0V4
cFByb3RvdHlwZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cFByb3RvdHlwZS5jcHAKaW5kZXggODlkN2FjMWI4Y2JmMWRiMGUxMjZmMWZjNzk2ZGZkNWZjODRi
MmU1OS4uOWRkYTBiYThkZTE0MTJlYWY0ZDI5MWRjZjBjNmIzOTY1N2ZiNjc3YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCkBAIC0y
NCw3ICsyNCw3IEBACiAjaW5jbHVkZSAiQXJyYXlQcm90b3R5cGUuaCIKICNpbmNsdWRlICJFcnJv
ci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5j
bHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5j
bHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCmluZGV4IGIyMDM4ODhkM2Mx
NmNkYTNjMDAzNTA2MjA4YWUwODY5NWRjNWRhYWEuLmQwMjY2YTU5ZWYzZjU1YWEzNjk0ZjVmNzQx
OGNmNzhlMGFlMGQ4YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NldENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
ZXRDb25zdHJ1Y3Rvci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJKU0NlbGxJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU1NldC5oIgor
I2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk1hcERhdGEuaCIKICNpbmNs
dWRlICJTZXRQcm90b3R5cGUuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ09iamVjdC5jcHAKaW5kZXggNDQwYTYwOTQyMTkzMzgwMzFlNTkyN2FmNDZiMjg5ZGJj
ZmI1YTcyOC4uODBlN2VhYThjNDkxY2I2ZDU0YTgzMjRjZTY0N2E2Y2RiN2U4ODc4MSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCkBAIC0yMiw3
ICsyMiw5IEBACiAjaW5jbHVkZSAiU3RyaW5nT2JqZWN0LmgiCiAKICNpbmNsdWRlICJFcnJvci5o
IgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3QuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0lubGluZXMuaCIKICNpbmNsdWRlICJPcGVyYXRpb25z
LmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggMDQyOTFmN2U4ZGQyNGU4YWIzM2Q3NWFm
MWRhNDU2OGYyYmM5OWU2OC4uMWVjYWI4NWMwYmRiMjg2OTg5NDU3N2E3NDEyNTRlMzY0NDE0OWQ4
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0y
NywxMiArMjcsMTggQEAKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKIAogI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAiRHVtcENv
bnRleHQuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNPYmplY3Qu
aCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdHJp
bmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCisjaW5jbHVkZSAiUHJvcGVydHlNYXBI
YXNoVGFibGUuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgorI2luY2x1ZGUgIlNs
b3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCisjaW5jbHVk
ZSAiU3RydWN0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVJhcmVEYXRhSW5saW5l
cy5oIgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZExlYWtDb3VudGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXgg
NTJjY2Y0MjNhMTA0M2UxMDc5ZjJkOGIxODk0MjE5ODkwZTcxZjJiYy4uMDIwNjk1ZmFjODNlZDRl
NTE4NWI3MGU2OTY5OTYzYTJkZTlhMzY3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKICNpbmNsdWRlICJB
cml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5oIgogI2luY2x1ZGUgIkFycmF5QnVmZmVyTmV1dGVy
aW5nV2F0Y2hwb2ludC5oIgorI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgogI2luY2x1
ZGUgIkNhbGxGcmFtZUlubGluZXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRl
ICJDb2RlQ2FjaGUuaCIKQEAgLTU1LDcgKzU2LDkgQEAKICNpbmNsdWRlICJKU0FQSVZhbHVlV3Jh
cHBlci5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIK
LSNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
KyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMu
aCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTG9j
ay5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCkBAIC02OCwxMyArNzEsMTYgQEAKICNpbmNs
dWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJNYXBEYXRhLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIK
KyNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRlICJQYXJzZXJBcmVuYS5oIgorI2luY2x1ZGUg
IlByb3BlcnR5TWFwSGFzaFRhYmxlLmgiCiAjaW5jbHVkZSAiUmVnRXhwQ2FjaGUuaCIKICNpbmNs
dWRlICJSZWdFeHBPYmplY3QuaCIKICNpbmNsdWRlICJTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIlNvdXJjZVByb3ZpZGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTdHJpY3RF
dmFsQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKKyNpbmNsdWRlICJT
dHJ1Y3R1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKICNpbmNs
dWRlICJXZWFrTWFwRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KQEAgLTIyNiw2
ICsyMzIsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAg
LCBtX2luRGVmaW5lT3duUHJvcGVydHkoZmFsc2UpCiAgICAgLCBtX2NvZGVDYWNoZShDb2RlQ2Fj
aGU6OmNyZWF0ZSgpKQogICAgICwgbV9lbmFibGVkUHJvZmlsZXIobnVsbHB0cikKKyAgICAsIG1f
YnVpbHRpbkV4ZWN1dGFibGVzKEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlKCp0aGlzKSkKIHsK
ICAgICBpbnRlcnByZXRlciA9IG5ldyBJbnRlcnByZXRlcigqdGhpcyk7CiAgICAgU3RhY2tCb3Vu
ZHMgc3RhY2sgPSB3dGZUaHJlYWREYXRhKCkuc3RhY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCmluZGV4IDVhODQxMDVlYWZiN2FiYmE1ZmE0MzFlZWVkZDU1ZDdhODlmNTVjZTIuLjY5
NThhYzM5M2IxYWVmYzBiZWZiZjZlNGViOGI2ODI1Y2Y3YzlhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlByaXZhdGVOYW1lLmgi
CiAjaW5jbHVkZSAiUHJvdG90eXBlTWFwLmgiCiAjaW5jbHVkZSAiU21hbGxTdHJpbmdzLmgiCisj
aW5jbHVkZSAiU291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlN0cm9uZy5oIgogI2luY2x1ZGUgIlRo
dW5rR2VuZXJhdG9ycy5oIgogI2luY2x1ZGUgIlR5cGVkQXJyYXlDb250cm9sbGVyLmgiCkBAIC02
OSw2ICs3MCw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFyaXR5Q2hlY2tGYWls
UmV0dXJuVGh1bmtzOworICAgIGNsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlczsKICAgICBjbGFzcyBD
b2RlQmxvY2s7CiAgICAgY2xhc3MgQ29kZUNhY2hlOwogICAgIGNsYXNzIENvbW1vbklkZW50aWZp
ZXJzOwpAQCAtNDk3LDYgKzQ5OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHJl
Z2lzdGVyV2F0Y2hwb2ludEZvckltcHVyZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImLCBXYXRj
aHBvaW50Kik7CiAgICAgICAgIC8vIEZJWE1FOiBVc2UgQXRvbWljU3RyaW5nIG9uY2UgaXQgZ290
IG1lcmdlZCB3aXRoIElkZW50aWZpZXIuCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
YWRkSW1wdXJlUHJvcGVydHkoY29uc3QgU3RyaW5nJik7CisgICAgICAgIAorICAgICAgICBCdWls
dGluRXhlY3V0YWJsZXMqIGJ1aWx0aW5FeGVjdXRhYmxlcygpIHsgcmV0dXJuIG1fYnVpbHRpbkV4
ZWN1dGFibGVzLmdldCgpOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwpAQCAtNTM3LDEwICs1NDEsOSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgSlNWYWx1ZSBtX2V4Y2VwdGlvbjsKICAgICAgICAgYm9vbCBtX2luRGVmaW5l
T3duUHJvcGVydHk7CiAgICAgICAgIE93blB0cjxDb2RlQ2FjaGU+IG1fY29kZUNhY2hlOwotICAg
ICAgICBSZWZDb3VudGVkQXJyYXk8U3RhY2tGcmFtZT4gbV9leGNlcHRpb25TdGFjazsKLQogICAg
ICAgICBMZWdhY3lQcm9maWxlciogbV9lbmFibGVkUHJvZmlsZXI7Ci0KKyAgICAgICAgT3duUHRy
PEJ1aWx0aW5FeGVjdXRhYmxlcz4gbV9idWlsdGluRXhlY3V0YWJsZXM7CisgICAgICAgIFJlZkNv
dW50ZWRBcnJheTxTdGFja0ZyYW1lPiBtX2V4Y2VwdGlvblN0YWNrOwogICAgICAgICBIYXNoTWFw
PFN0cmluZywgUmVmUHRyPFdhdGNocG9pbnRTZXQ+PiBtX2ltcHVyZVByb3BlcnR5V2F0Y2hwb2lu
dFNldHM7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA3Y2M2NDgzNmE1MDUxM2Q4
YWYyODM5ZTEyZGQ3Yjg0ZjU4NTZiM2Q1Li5mNmRlNjkzNzMwYTE3NDNhMjQzNjY0MTJmMDE0ZTg3
NzlhNzgxN2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTAxLDYgKzEwMSw3IEBAIHNldChX
ZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L0FQ
SSIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2Fzc2VtYmxlciIKICAgICAiJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L2J5dGVjb2RlIgorICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRp
bnMiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9ieXRlY29tcGlsZXIiCiAgICAgIiR7SkFW
QVNDUklQVENPUkVfRElSfS9kZmciCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9kaXNhc3Nl
bWJsZXIiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50
aW1lL0pTU3RyaW5nSW5saW5lcy5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMv
cnVudGltZS9KU1N0cmluZ0lubGluZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MGZjYzM4NGU4ZWRmYzM0YjE0
MDgzYjg2NWQzNzM4MjBmNDE2NWM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaApAQCAtMCwwICsxLDQg
QEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSlNTdHJpbmdJbmxpbmVzX2gKKyNkZWZpbmUgV2ViQ29y
ZV9GV0RfSlNTdHJpbmdJbmxpbmVzX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmlu
Z0lubGluZXMuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
bHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAKaW5kZXggMmVkZGNk
YmI5ZjAwNmNhNzYyNjY1MGI0MjAyNzg2MjZiOTI2MTQxNy4uM2M0ZTBkN2JiYjMxY2FiMTJiNWU2
Yzk3NWM3NGQzZjQ4NGU5Y2IxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
bHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwCkBAIC00Niw2
ICs0Niw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pT
VmFsdWVJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdJbmxpbmVz
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSURCQW55Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSURCQW55Q3VzdG9tLmNwcAppbmRleCA1NjQ5Yzg1Y2EwOTU4Nzc0OGEzZGEwNmNkZGQw
Y2E5OTllNTBiOGU3Li4zZjRkOGVmYWViNTdmMzMwMDNlNzNhN2U3ODQyZTQyYzczY2U2NDkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkFueUN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJBbnlDdXN0b20uY3BwCkBAIC00
Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiSlNJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIkpT
SURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNp
bmNsdWRlIDxydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlND
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNl
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0
b20uY3BwCmluZGV4IDllYWU3NTY5YzcwNjAzYTRmZWQwYWYxNGM0Zjg3MThjZGU2NGE2ZTEuLmY0
OWRmZTkwYjRlODJkMzllZGNiZjliYTI5ZjJhZTc5OWMwZGRmMjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwCkBAIC0zNyw3ICsz
Nyw3IEBACiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJKU0lEQk9iamVj
dFN0b3JlLmgiCiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgotI2luY2x1ZGUgPHJ1bnRpbWUv
SlNTdHJpbmcuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwCmluZGV4IDc0ZmQzNTRiMjg2MDdjZjc4MjJmODA1
MzQ3OTcwZjVkN2FjOGM4MzIuLjU0MzRiM2I3ZDZjNTZlY2IwYTAzYTI3OTRjNjczNmE5YWRmYjcw
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3Rv
cmVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCT2JqZWN0
U3RvcmVDdXN0b20uY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiSURCT2JqZWN0U3Rv
cmUuaCIKICNpbmNsdWRlICJKU0lEQkluZGV4LmgiCiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5o
PgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmcuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTU3Ry
aW5nSW5saW5lcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcAppbmRleCBkMWI0
NzIxMzUxZWIxYjJiZjhjZTBjZDQ3M2ZlZTE0NDkxNGM1M2FiLi5mMWRhYThhMTA0NmIzM2ZhM2Qz
NWE2NmM1NTllZTBmYWYyYWRlNjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNs
dWRlICJOb2RlRmlsdGVyLmgiCiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgogI2luY2x1ZGUg
PHJ1bnRpbWUvSlNMb2NrLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZ0lubGluZXMuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCBmYjRhZDk1MTgw
ZDhlNTkzNzgyZjhiZWE0YTg5ZmJlNDMzOWY5ZTU2Li4xYjg0ZjJiNjhkYjMwM2NkMThiMzc4MDY0
NjAyNTZkMTdjYTcxMWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAgLTY2LDYgKzY2LDcgQEAgc2V0
KFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9B
UEkiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9hc3NlbWJsZXIiCiAgICAgIiR7SkFWQVND
UklQVENPUkVfRElSfS9ieXRlY29kZSIKKyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0
aW5zIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0ZWNvbXBpbGVyIgogICAgICIke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vZGlzYXNzZW1ibGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vZGZnIgpAQCAtNzgsNiArNzksNyBAQCBzZXQoV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMK
ICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3Byb2ZpbGVyIgogICAgICIke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vcnVudGltZSIKICAgICAiJHtXVEZfRElSfSIKKyAgICAiJHtERVJJVkVEX1NPVVJD
RVNfSkFWQVNDUklQVENPUkVfRElSfSIKICAgICAiJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9E
SVJ9IgogICAgICIke0RFUklWRURfU09VUkNFU19ESVJ9L0ZvcndhcmRpbmdIZWFkZXJzIgogICAg
ICIke0NNQUtFX0JJTkFSWV9ESVJ9IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAppbmRleCA2NzE4MWM4NGZm
YjE2MTUzZjZjM2U0ODk4NWYwOTNlZWI0ODVhZThjLi5kZjhmMTJlMzJlMjhjYTRjMzdkNTM2ODFj
MzFiNzAwNWRiZWUzNTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAtMTIxLDYgKzEyMSw3IEBA
IHNldChXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L0FQSSIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2Fzc2VtYmxlciIKICAgICAiJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L2J5dGVjb2RlIgorICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
YnVpbHRpbnMiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9ieXRlY29tcGlsZXIiCiAgICAg
IiR7SkFWQVNDUklQVENPUkVfRElSfS9jb2xsZWN0b3IvaGFuZGxlcyIKICAgICAiJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L2RmZyIKQEAgLTEzMyw2ICsxMzQsNyBAQCBzZXQoV2ViS2l0Ml9JTkNMVURF
X0RJUkVDVE9SSUVTCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9ydW50aW1lIgogICAgICIk
e1dURl9ESVJ9IgogICAgICIke0RFUklWRURfU09VUkNFU19ESVJ9IgorICAgICIke0RFUklWRURf
U09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9IgogICAgICIke0RFUklWRURfU09VUkNFU19XRUJD
T1JFX0RJUn0iCiAgICAgIiR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJfRElSfSIKICAgICAiJHtE
RVJJVkVEX1NPVVJDRVNfV0VCS0lUMl9ESVJ9L2luY2x1ZGUiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Y21ha2UvZ3Rlc3QvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvY21ha2UvZ3Rlc3QvQ01ha2VMaXN0
cy50eHQKaW5kZXggNTZiZjQ0NzgyNTE4Njg3NmYyNTcxMTg2MDlmNDM1MjE4MzRlYzk1OS4uN2Y1
MjFhODk4Yjg5ZDhkZWIzMDljNmUwZmJhMDhhMzNmNjVlYjVkNSAxMDA2NDQKLS0tIGEvU291cmNl
L2NtYWtlL2d0ZXN0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9jbWFrZS9ndGVzdC9DTWFr
ZUxpc3RzLnR4dApAQCAtNiw2ICs2LDcgQEAKIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtUSElSRFBB
UlRZX0RJUn0vZ3Rlc3QKICAgICAke1RISVJEUEFSVFlfRElSfS9ndGVzdC9pbmNsdWRlCiAgICAg
JHtKQVZBU0NSSVBUQ09SRV9ESVJ9CisgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENP
UkVfRElSfQogICAgICR7V1RGX0RJUn0KICkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4
dAppbmRleCA3YjhhYTE4NDk2YWIxOTdjNmQ4ZGU5M2ExYjdiOWU0NDM4MDliYmYxLi41NDljZDQw
NTE0MjI4ZjkyNzNmMDhkYTBjZWNkMDg4NmU3NjZlYmU2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9DTWFr
ZUxpc3RzLnR4dApAQCAtNTgsNiArNTgsNyBAQCBzZXQoRHVtcFJlbmRlclRyZWVfSU5DTFVERV9E
SVJFQ1RPUklFUwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9wcm9maWxlcgogICAgICR7SkFW
QVNDUklQVENPUkVfRElSfS9ydW50aW1lCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L0Zvcndh
cmRpbmdIZWFkZXJzCisgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfQog
ICAgICR7VE9PTFNfRElSfS9EdW1wUmVuZGVyVHJlZQogICAgICR7V1RGX0RJUn0KICAgICAke0NN
QUtFX1NPVVJDRV9ESVJ9L1NvdXJjZQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQK
aW5kZXggNWEzNDZkNzQwNTNkMTU5NTIzMzEwYWQ5NmYyNzA2YWViNDc1MDM5ZS4uY2I0YjE5MTgx
MzcwOGNhNGEyYTc4ZDczMjc4MTY2NzgwNTE0YzI5MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NN
YWtlTGlzdHMudHh0CkBAIC0yOCw2ICsyOCw3IEBAIHNldChXZWJLaXRUZXN0UnVubmVyX0lOQ0xV
REVfRElSRUNUT1JJRVMKICAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vSW5qZWN0ZWRCdW5k
bGUvYXRrCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L0ZvcndhcmRpbmdIZWFkZXJzCisgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENP
UkVfRElSfQogICAgICR7V0VCQ09SRV9ESVJ9L2VkaXRpbmcKICAgICAke1dFQkNPUkVfRElSfS9w
bGF0Zm9ybQogICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzCmRpZmYgLS1naXQg
YS9Ub29scy9XaW5DRUxhdW5jaGVyL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvV2luQ0VMYXVuY2hl
ci9DTWFrZUxpc3RzLnR4dAppbmRleCA5MTRiYjJiZGM5NmIwYjU4ZTU4ZjJmM2U1YjMzNjNmOGQz
NGYzMzVkLi5iMTlmYzYxZDQwNDU3NDM1ODkxMzZhOGYwZTFlYmM1YjBhYTI5MWU1IDEwMDY0NAot
LS0gYS9Ub29scy9XaW5DRUxhdW5jaGVyL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1dpbkNF
TGF1bmNoZXIvQ01ha2VMaXN0cy50eHQKQEAgLTYsNiArNiw3IEBAIHNldChXaW5DRUxhdW5jaGVy
X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29y
ayIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vdGV4dCIKICAgICAiJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9IgorICAgICIke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9Igog
ICAgICIke1dURl9ESVJ9IgogICAgICIke0RFUklWRURfU09VUkNFU19ESVJ9IgogICAgICIke0NN
QUtFX0JJTkFSWV9ESVJ9IgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg2Yjc1NmU5YWVmYzgyYzVhM2Y5YmI5OTBlYjcxMDA0
YWU2ZWEzYWYuLjliYmM0MGUzNmUyMjkxZmE0YmE5YWU4Yzc3OWE0ZGQ0YjZlODA3NTcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMiBAQAorMjAxNC0wMS0yOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUu
Y29tPgorCisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gaW1wbGVtZW50IEpTIGJ1aWx0aW5z
IGluIEpTCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
Mjc4ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGVkIHRoZSB0ZXN0IHJlc3VsdHMgZm9yIG5ldyBlcnJvciBtZXNzYWdlcyAobm93IHRoYXQg
dGhleSdyZQorICAgICAgICBhY3R1YWxseSBoZWxwZnVsKSwgYW5kIGFkZGVkIGEganMtcmVncmVz
cyB0ZXN0IHRvIHRyYWNrIHBlcmZvcm1hbmNlLgorCisgICAgICAgICoganMvYXJyYXktZXZlcnkt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGll
cy1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZl
cnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL2FycmF5LXByb3Rv
dHlwZS1ldmVyeS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0
cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuanM6IEFkZGVkLgorICAgICAgICAodGVzdDEpOgorICAg
ICAgICAodGVzdDIpOgorICAgICAgICAodGVzdDMpOgorCiAyMDE0LTAxLTMxICBIYW5zIE11bGxl
ciAgPGhtdWxsZXJAYWRvYmUuY29tPgogCiAgICAgICAgIFtDU1MgU2hhcGVzXSBJbWFnZSB2YWx1
ZWQgc2hhcGUgY2FuIGZhaWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dApp
bmRleCA1NDFiOGMzNThmMDY4YTBjZWE4ODJjMTA1MTc1MzI1MTE0Y2QzM2Y3Li5jY2EzNjNkY2U1
OGZiYTk1YTU4Y2U0NmZjYjQ4YzM4YmY1OGFkZjU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9q
cy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyYXktZXZl
cnktZXhwZWN0ZWQudHh0CkBAIC0zMCwxMiArMzAsMTIgQEAgUEFTUyBbMTIsIDUsIDgsIDEzMCwg
NDRdLmV2ZXJ5KGlzQmlnRW5vdWdoQW5kRXhjZXB0aW9uKSB0aHJldyBleGNlcHRpb24gZXhjZXB0
aW8KIFBBU1MgWzEyLCA1NCwgMTgsIDEzMCwgNDRdLmV2ZXJ5KGlzQmlnRW5vdWdoQW5kRXhjZXB0
aW9uKSB0aHJldyBleGNlcHRpb24gZXhjZXB0aW9uIGZyb20gZnVuY3Rpb24uCiAKIDUuMCBXcm9u
ZyBUeXBlIGZvciBDYWxsYmFjayBUZXN0Ci1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnko
NSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4
LCAxMzAsIDQ0XS5ldmVyeSgnd3JvbmcnKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBl
IGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KG5ldyBPYmplY3QoKSkgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAs
IDQ0XS5ldmVyeShudWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgot
UEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSgp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIFsxMiwgNSwgOCwg
MTMwLCA0NF0uZXZlcnkoNSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90
eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAx
MzAsIDQ0XS5ldmVyeSgnd3JvbmcnKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5w
cm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUs
IDgsIDEzMCwgNDRdLmV2ZXJ5KG5ldyBPYmplY3QoKSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KK1BB
U1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShudWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgor
UEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5j
dGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSgpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rp
b24uCiAKIDYuMCBFYXJseSBFeGl0ICgiU2hvcnQgQ2lyY3VpdGluZyIpCiBQQVNTIFsxMiwgNSwg
OCwgMTMwLCA0NF0uZXZlcnkoaXNCaWdFbm91Z2hTaG9ydENpcmN1aXQpIGlzIGZhbHNlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVz
LWV4cGVjdGVkLnR4dAppbmRleCAyYzJhNjhjYjEwNmRhMTBmMDg2YjIyYzViZjJiZjVjOGZlNzll
MzNlLi41ZDllY2I3NWE4ZGE3OWJhNjU2MDVlN2ViOWNmOGZjMjVmZTE4YWZiIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9qcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1l
eHBlY3RlZC50eHQKQEAgLTE1LDcgKzE1LDcgQEAgUEFTUyBBcnJheS5wcm90b3R5cGUuc2xpY2Uu
Y2FsbCh1bmRlZmluZWQsIDAsIDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGUKIFBB
U1MgQXJyYXkucHJvdG90eXBlLnNvcnQuY2FsbCh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5w
cm90b3R5cGUuc29ydC5jYWxsKHVuZGVmaW5lZCknKS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLnNw
bGljZS5jYWxsKHVuZGVmaW5lZCwgMCwgMSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5k
ZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5zcGxp
Y2UuY2FsbCh1bmRlZmluZWQsIDAsIDEpJykuCiBQQVNTIEFycmF5LnByb3RvdHlwZS51bnNoaWZ0
LmNhbGwodW5kZWZpbmVkLCB7fSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVk
IGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS51bnNoaWZ0LmNh
bGwodW5kZWZpbmVkLCB7fSknKS4KLVBBU1MgQXJyYXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwodW5k
ZWZpbmVkLCB0b1N0cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlz
IG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5ldmVyeS5jYWxsKHVu
ZGVmaW5lZCwgdG9TdHJpbmcpJykuCitQQVNTIEFycmF5LnByb3RvdHlwZS5ldmVyeS5jYWxsKHVu
ZGVmaW5lZCwgdG9TdHJpbmcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3Rv
dHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkLgogUEFTUyBB
cnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5n
ICdBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpJykuCiBQ
QVNTIEFycmF5LnByb3RvdHlwZS5zb21lLmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZykgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRp
bmcgJ0FycmF5LnByb3RvdHlwZS5zb21lLmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZyknKS4KIFBB
U1MgQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbCh1bmRlZmluZWQsIDApIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdB
cnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKHVuZGVmaW5lZCwgMCknKS4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xMjkwYzBlZWZmOGRlNDIxODMzZDkyZDI3ZTk1MjQxOTE3NjA0Yjk2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5
cGUtZXZlcnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9hcnJheS1w
cm90b3R5cGUtZXZlcnkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8g
ZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJv
dG90eXBlLWV2ZXJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlw
ZS1ldmVyeS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlNWNjMTcxYzQ4NzVhMzU4NWJmMTRlNTQxNWY1Y2Qw
ZTU4MWQ1NDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5
LXByb3RvdHlwZS1ldmVyeS5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Njcmlw
dC10ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuanMgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3NjcmlwdC10ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZlcnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjk0YWEx
NjFjMGNlOThiMmFiMThhM2ExYTFmMGRmYWFjOWQ3ZDJlMgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5q
cwpAQCAtMCwwICsxLDI5IEBACit2YXIgcmVzdWx0ID0gMDsKK2Z1bmN0aW9uIHRlc3QxKGEpIHsK
KyAgICByZXN1bHQgPDwgMTsKKyAgICByZXN1bHQrKzsKKyAgICByZXR1cm4gdHJ1ZTsKK30KK2Z1
bmN0aW9uIHRlc3QyKGEsYikgeworICAgIHJlc3VsdCBePSAzOworICAgIHJlc3VsdCAqPSAzOwor
ICAgIHJldHVybiB0cnVlOworfQorZnVuY3Rpb24gdGVzdDMoYSxiLGMpIHsKKyAgICByZXN1bHQg
Xj0gcmVzdWx0ID4+IDE7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZhciByZXN1bHQgPSAwOwor
dmFyIGFycmF5ID0gW10KK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpCisgICAgYXJy
YXlbaV0gPSAxOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHsKKyAgICBhcnJheS5l
dmVyeSh0ZXN0MSk7CisgICAgYXJyYXkuZXZlcnkodGVzdDIpOworICAgIGFycmF5LmV2ZXJ5KHRl
c3QzKTsKK30KKworaWYgKHJlc3VsdCAhPSAxNDI4ODEwNDk2KQorICAgIHRocm93ICJFcnJvcjog
YmFkIHJlc3VsdDogIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxlLmFtIGIvR05V
bWFrZWZpbGUuYW0KaW5kZXggNzNmYzQ5MjhjNGRkNDliNTQ5ODY5YjUwNjc4YzZiZGU3NGY0NDc2
MC4uMDhjOTExNTQyNjA1MDBkZTNmZjA0YjAyMGNlMGQ2MGY5OGU4Y2ZlOCAxMDA2NDQKLS0tIGEv
R05VbWFrZWZpbGUuYW0KKysrIGIvR05VbWFrZWZpbGUuYW0KQEAgLTY4LDYgKzY4LDcgQEAgQUxM
X01PRklMRVMgOj0KIGRvbV9iaW5kaW5nX2lkbHMgOj0KIHd0Zl9zb3VyY2VzIDo9CiBqYXZhc2Ny
aXB0Y29yZV9oX2FwaSA6PQoramF2YXNjcmlwdGNvcmVfYnVpbHRpbnNfanNfbm9zb3VyY2VzIDo9
CiBqYXZhc2NyaXB0Y29yZV9jcHBmbGFnczo9CiBqYXZhc2NyaXB0Y29yZV9jZmxhZ3MgOj0KIGph
dmFzY3JpcHRjb3JlX3NvdXJjZXMgOj0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223913</attachid>
            <date>2014-02-11 16:54:11 -0800</date>
            <delta_ts>2014-02-11 17:17:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-127887-20140211165409.patch</filename>
            <type>text/plain</type>
            <size>184548</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzOTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
NjljZDVhMzY1ZTYwYzM1NTdjYmNjNjlmMmViYmRmOTA1MjJhOGExLi40OGMxZjg5ZWIxMzZkMTc1
NGQ1MjE4NTEyYTgzYjM3NzUxY2ZmNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMjcgQEAKKzIwMTQtMDItMTEgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
VGhlIHJlc3VsdCBvZiB0aGlzIHJlZmFjdG9yaW5nCisgICAgICAgIGlzIHRoYXQgQ29tbW9uSWRl
bnRpZmllcnMsIGFuZCBhIGZldyBvdGhlciBtaXNjZWxsYW5lb3VzIGhlYWRlcnMgbm93CisgICAg
ICAgIG5lZWQgdG8gYmUgaW5jbHVkZWQgZGlyZWN0bHkgYXMgdGhleSB3ZXJlIGZvcm1lcmx5IGNh
cHR1cmVkIHRocm91Z2ggb3RoZXIKKyAgICAgICAgcGF0aHMuCisKKyAgICAgICAgSW4gYWRkaXRp
b24gdGhpcyBhZGRzIGEgZmxhZyB0byB0aGUgTG9va3VwIHRhYmxlJ3MgaGFzaGVudHJ5IHRvIGlu
ZGljYXRlCisgICAgICAgIHRoYXQgYSBzdGF0aWMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgYmFja2Vk
IGJ5IEpTLiBUaGVyZSBpcyB0aGVuIGEgbG90IG9mCisgICAgICAgIGxvZ2ljIHRvIHRocmVhZCB0
aGUgc3BlY2lhbCBuYXR1cmUgb2YgdGhlIGZ1bmN0b24gdG8gd2hlcmUgaXQgbWF0dGVycy4KKyAg
ICAgICAgVGhpcyBhbGxvd3MgdG9TdHJpbmcoKSwgLmNhbGxlciwgZXRjIHRvIG1pbWljIHRoZSBi
ZWhhdmlvdXIgb2YgYSBob3N0CisgICAgICAgIGZ1bmN0aW9uLgorCisgICAgICAgIE5vdGVzIG9u
IHdyaXRpbmcgYnVpbHRpbnM6CisgICAgICAgICAtIEVhY2ggZnVuY3Rpb24gaXMgY29tcGlsZWQg
aW5kZXBlbmRlbnRseSBvZiB0aGUgb3RoZXJzLCBhbmQgdGhvc2UKKyAgICAgICAgICAgaW1wbGVt
ZW50YXRpb25zIGNhbm5vdCBjdXJyZW50bHkgY2FwdHVyZSBhbGwgZ2xvYmFsIHByb3BlcnRpZXMg
KGFzCisgICAgICAgICAgIHRoYXQgY291bGQgYmUgcG90ZW50aWFsbHkgdW5zYWZlKS4gSWYgYSBm
dW5jdGlvbiBkb2VzIGNhcHR1cmUgYQorICAgICAgICAgICBnbG9iYWwgd2Ugd2lsbCBkZWxpYmVy
YXRlbHkgY3Jhc2guCisgICAgICAgICAtIEZvciB0aG9zZSAiZ2xvYmFsIiBwcm9wZXJ0aWVzIHRo
YXQgd2UgZG8gd2FudCBhY2Nlc3MgdG8sIHdlIHVzZQorICAgICAgICAgICB0aGUgQCBwcmVmaXgs
IGUuZy4gT2JqZWN0KHRoaXMpIGJlY29tZXMgQE9iamVjdCh0aGlzKS4gVGhlIEAgaWRlbnRpZmll
cnMKKyAgICAgICAgICAgYXJlIHByaXZhdGUgbmFtZXMsIGFuZCBiZWhhdmUganVzdCBsaWtlIHJl
Z3VsYXIgcHJvcGVydGllcywgb25seQorICAgICAgICAgICB3aXRob3V0IHRoZSByaXNrIG9mIGFk
dWx0ZXJhdGlvbi4gQWdhaW4sIGluIHRoZSBAT2JqZWN0IGNhc2UsIHdlCisgICAgICAgICAgIGV4
cGxpY2l0bHkgZHVwbGljYXRlIHRoZSBPYmplY3RDb25zdHJ1Y3RvciByZWZlcmVuY2Ugb24gdGhl
IEdsb2JhbE9iamVjdAorICAgICAgICAgICBzbyB0aGF0IHdlIGhhdmUgZ3VhcmFudGVlZCBhY2Nl
c3MgdG8gdGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhlCisgICAgICAgICAgIGNvbnN0cnVjdG9y
LgorICAgICAgICAgLSBjYWxsLCBhcHBseSwgZXZhbCwgYW5kIEZ1bmN0aW9uIGFyZSBhbGwgcmVq
ZWN0ZWQgaWRlbnRpZmllcnMsIGFnYWluCisgICAgICAgICAgIHRvIHByZXZlbnQgYW55dGhpbmcg
ZnJvbSBhY2NpZGVudGFsbHkgdXNpbmcgYW4gYWR1bHRlcmF0ZWQgb2JqZWN0LgorICAgICAgICAg
ICBJbnN0ZWFkIEBjYWxsIGFuZCBAYXBwbHkgYXJlIGF2YWlsYWJsZSwgYW5kIGhhcHBpbHkgdGhl
eSBjb21wbGV0ZWx5CisgICAgICAgICAgIGRyb3AgdGhlIG5lcV9wdHIgaW5zdHJ1Y3Rpb24gYXMg
dGhleSdyZSBkZWZpbmVkIGFzIGFsd2F5cyBiZWluZyB0aGUKKyAgICAgICAgICAgb3JpZ2luYWwg
Y2FsbC9hcHBseSBmdW5jdGlvbnMuCisKKyAgICAgICAgVGhlc2UgcmVzdHJpY3Rpb25zIGFyZSBq
dXN0IGludGVuZGVkIHRvIG1ha2UgaXQgaGFyZGVyIHRvIGFjY2lkZW50YWxseQorICAgICAgICBt
YWtlIGNoYW5nZXMgdGhhdCBhcmUgaW5jb3JyZWN0IChmb3IgaW5zdGFuY2UgY2FsbGluZyB3aGF0
ZXZlciBoYXMgYmVlbgorICAgICAgICBhc3NpZ25lZCB0byBnbG9iYWwuT2JqZWN0LCBpbnN0ZWFk
IG9mIHRoZSBvcmlnaW5hbCBjb25zdHJ1Y3RvciBmdW5jdGlvbikuCisgICAgICAgIEhvd2V2ZXIs
IG1ha2luZyBhIG1pc3Rha2UgbGlrZSB0aGlzIHNob3VsZCByZXN1bHQgaW4gYSBwdXJlbHkgc2Vt
YW50aWMKKyAgICAgICAgZXJyb3IgYXMgZnVuZGFtZW50YWxseSB0aGVzZSBmdW5jdGlvbnMgYXJl
IHRyZWF0ZWQgYXMgdGhvdWdoIHRoZXkgd2VyZQorICAgICAgICByZWd1bGFyIEpTIGNvZGUgaW4g
dGhlIGhvc3QgZ2xvYmFsLCBhbmQgaGF2ZSBubyBtb3JlIHByaXZpbGVnZXMgdGhhbgorICAgICAg
ICBhbnkgb3RoZXIgSlMuCisKKyAgICAgICAgVGhlIGluaXRpYWwgcHJvb2Ygb2YgY29uY2VwdCBp
cyBBcnJheS5wcm90b3R5cGUuZXZlcnksIHRoaXMgc2hvd3MgYSA2NSUKKyAgICAgICAgcGVyZm9y
bWFuY2UgaW1wcm92ZW1lbnQsIGFuZCB0aGF0IGltcHJvdmVtZW50IGlzIHNpZ25pZmljYW50bHkg
aHVydCBieQorICAgICAgICBvdXIgcG9vciBvcHRpbWlzYXRpb24gb2Ygb3BfaW4uCisKKyAgICAg
ICAgQXMgdGhpcyBpcyBzdWNoIGEgbGltaXRlZCBmdW5jdGlvbiwgd2UgaGF2ZSBub3QgeWV0IGV4
cG9ydGVkIGFsbCBzeW1ib2xzCisgICAgICAgIHRoYXQgd2UgY291bGQgcG9zc2libHkgbmVlZCwg
YnV0IGFzIHdlIGltcGxlbWVudCBtb3JlLCB0aGUgbGlrZWxpaG9vZAorICAgICAgICBvZiBlbmNv
dW50ZXJpbmcgbWlzc2luZyBmZWF0dXJlcyB3aWxsIHJlZHVjZS4KKworCisgICAgICAgICogQVBJ
L0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09i
amVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OnB1dCk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8
UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmdldFN0YXRpY1ZhbHVlKToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpzdGF0aWNGdW5jdGlvbkdldHRlcik6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tHZXR0ZXIpOgorICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZp
bGUuYW06CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZUNvbW1vbi5wcm9wczoKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL2NvcHktZmlsZXMuY21kOgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnVp
bHRpbnMvQXJyYXkucHJvdG90eXBlLmpzOgorICAgICAgICAoZXZlcnkpOgorICAgICAgICAqIGJ1
aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCdWls
dGluRXhlY3V0YWJsZXM6OkJ1aWx0aW5FeGVjdXRhYmxlcyk6CisgICAgICAgIChKU0M6OkJ1aWx0
aW5FeGVjdXRhYmxlczo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ1aWx0
aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0YWJs
ZXM6OmNyZWF0ZSk6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpCdWlsdGluTmFtZXM6OkJ1aWx0aW5OYW1lcyk6CisgICAgICAgIChKU0M6
OkJ1aWx0aW5OYW1lczo6Z2V0UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpCdWlsdGluTmFt
ZXM6OmdldFB1YmxpY05hbWUpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2Rl
QmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6Y29kZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6
OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnRvU3RyaWN0bmVzcyk6CisgICAgICAg
IChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjppc0J1aWx0aW5GdW5jdGlvbik6Cisg
ICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjppc0J1aWx0aW5GdW5jdGlvbik6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKiBieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
Om1ha2VGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6
CisgICAgICAgIChKU0M6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgICogY3JlYXRlX2hhc2hfdGFibGU6CisgICAgICAgICogZ2VuZXJhdGUtanMtYnVpbHRp
bnM6IEFkZGVkLgorICAgICAgICAoZ2V0Q29weXJpZ2h0KToKKyAgICAgICAgKGdldEZ1bmN0aW9u
cyk6CisgICAgICAgIChnZW5lcmF0ZUNvZGUpOgorICAgICAgICAobWFuZ2xlTmFtZSk6CisgICAg
ICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSWRlbnRpZmllcik6CisgICAgICAg
IChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChTb3VyY2VDb2RlKToKKyAgICAgICAgKFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKFZNKToKKyAgICAgICAgKiBpbnRlcnBy
ZXRlci9DYWNoZWRDYWxsLmg6CisgICAgICAgIChKU0M6OkNhY2hlZENhbGw6OkNhY2hlZENhbGwp
OgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpMZXhlcjxUPjo6TGV4ZXIpOgorICAgICAgICAoSlNDOjppc1NhZmVJZGVu
dGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8TENoYXI+OjpwYXJzZUlkZW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpMZXhlcjxVQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChK
U0M6OkxleGVyPFQ+OjpsZXgpOgorICAgICAgICAqIHBhcnNlci9MZXhlci5oOgorICAgICAgICAo
SlNDOjppc1NhZmVJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleEV4cGVj
dElkZW50aWZpZXIpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6
OlByb2dyYW1Ob2RlOjpzZXRDbG9zZWRWYXJpYWJsZXMpOgorICAgICAgICAqIHBhcnNlci9Ob2Rl
cy5oOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OmNhcHR1cmVkVmFyaWFibGVzKToKKyAgICAg
ICAgKEpTQzo6U2NvcGVOb2RlOjpzZXRDbG9zZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQ
cm9ncmFtTm9kZTo6Y2xvc2VkVmFyaWFibGVzKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OlBhcnNlcik6CisgICAgICAgIChK
U0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OmRpZEZpbmlzaFBhcnNpbmcpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6cHJpbnRVbmV4cGVjdGVkVG9rZW5UZXh0KToKKyAgICAgICAgKiBwYXJzZXIvUGFy
c2VyLmg6CisgICAgICAgIChKU0M6OlNjb3BlOjpnZXRVc2VkVmFyaWFibGVzKToKKyAgICAgICAg
KEpTQzo6UGFyc2VyOjpjbG9zZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpwYXJzZSk6Cisg
ICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlclRv
a2Vucy5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRGdW5j
dGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpDb21tb25J
ZGVudGlmaWVycyk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjp+Q29tbW9uSWRl
bnRpZmllcnMpOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Z2V0UHJpdmF0ZU5h
bWUpOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Z2V0UHVibGljTmFtZSk6Cisg
ICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAoSlNDOjpDb21t
b25JZGVudGlmaWVyczo6YnVpbHRpbk5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlv
bkhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9y
KToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6RXZhbEV4
ZWN1dGFibGU6OmV4ZWN1dGFibGVJbmZvKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFi
bGU6OmV4ZWN1dGFibGVJbmZvKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpp
c0J1aWx0aW5GdW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpz
eW1ib2xUYWJsZUdldCk6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQ
dXQpOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJp
YnV0ZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVu
Y3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246
OnNvdXJjZUNvZGUpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjppc0hvc3RPckJ1aWx0aW5G
dW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzQnVpbHRpbkZ1bmN0aW9uKToK
KyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKToKKyAgICAgICAgKEpTQzo6
SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlv
bjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlv
bjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5j
dGlvbklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6bmF0aXZlRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpuYXRpdmVDb25zdHJ1Y3Rvcik6CisgICAgICAg
IChKU0M6OmlzSG9zdEZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlc2V0KToKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om9iamVjdENvbnN0
cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJv
cGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpn
ZXRDbGFzc1Byb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cmVpZnlTdGF0
aWNGdW5jdGlvbnNGb3JEZWxldGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0
QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAg
ICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTeW1i
b2xUYWJsZU9iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBy
dW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVH
ZXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dCk6CisgICAgICAgIChKU0M6OnN5bWJv
bFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMpOgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmNwcDoK
KyAgICAgICAgKEpTQzo6c2V0VXBTdGF0aWNGdW5jdGlvblNsb3QpOgorICAgICAgICAqIHJ1bnRp
bWUvTG9va3VwLmg6CisgICAgICAgIChKU0M6Okhhc2hFbnRyeTo6YnVpbHRpbkdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6Okhhc2hFbnRyeTo6cHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAoSlND
OjpIYXNoRW50cnk6OnByb3BlcnR5UHV0dGVyKToKKyAgICAgICAgKEpTQzo6SGFzaFRhYmxlOjpl
bnRyeSk6CisgICAgICAgIChKU0M6OmdldFN0YXRpY1Byb3BlcnR5U2xvdCk6CisgICAgICAgIChK
U0M6OmdldFN0YXRpY1ZhbHVlU2xvdCk6CisgICAgICAgIChKU0M6OnB1dEVudHJ5KToKKyAgICAg
ICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpO
YXRpdmVFcnJvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNs
b3QuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToK
KyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjpidWlsdGluRXhlY3V0
YWJsZXMpOgorCiAyMDE0LTAyLTExICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYiBSZXBsYXk6IHVwc3RyZWFtIHJlcGxheSBpbnB1dCBjb2RlIGdlbmVyYXRvciBh
bmQgRW5jb2RlZFZhbHVlIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCmluZGV4IDBlYmU3ZGQ4YmVhNTUwMmFmNDRh
ZmJlOWNkOTkwMDEyY2ZmOTk5ZDUuLjVjMDViZjExNWRjZjdjNDM0ODg5MzE4ZmQxNDc3ZDAwOWI1
MGZiZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09i
amVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdEZ1bmN0aW9ucy5oCkBAIC0xMzYsNyArMTM2LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGUKICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CiAgICAg
UmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0Ns
YXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNz
ID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIC8vIG9wdGlvbmFsIG9wdGlt
aXphdGlvbiB0byBieXBhc3MgZ2V0UHJvcGVydHkgaW4gY2FzZXMgd2hlbiB3ZSBvbmx5IG5lZWQg
dG8ga25vdyBpZiB0aGUgcHJvcGVydHkgZXhpc3RzCiAgICAgICAgICAgICBpZiAoSlNPYmplY3RI
YXNQcm9wZXJ0eUNhbGxiYWNrIGhhc1Byb3BlcnR5ID0ganNDbGFzcy0+aGFzUHJvcGVydHkpIHsK
QEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcAogICAgIFJlZlB0cjxP
cGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwogICAgIEpTVmFsdWVSZWYgdmFsdWVSZWYg
PSB0b1JlZihleGVjLCB2YWx1ZSk7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBw
cm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBw
cm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0
aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50
Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdFNldFByb3BlcnR5Q2FsbGJhY2sgc2V0
UHJvcGVydHkgPSBqc0NsYXNzLT5zZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIGlmICgh
cHJvcGVydHlOYW1lUmVmKQpAQCAtMzQzLDcgKzM0Myw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvCiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmplY3QpOwogICAgIFJl
ZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwogICAgIAotICAgIGlmIChTdHJp
bmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJp
bmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFz
c1JlZiBqc0NsYXNzID0gdGhpc09iamVjdC0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9
IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgICAgICBpZiAoSlNPYmplY3REZWxldGVQ
cm9wZXJ0eUNhbGxiYWNrIGRlbGV0ZVByb3BlcnR5ID0ganNDbGFzcy0+ZGVsZXRlUHJvcGVydHkp
IHsKICAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5TmFtZVJlZikKQEAgLTU2NCw3ICs1NjQs
NyBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0U3RhdGljVmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcAogewogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYg
PSB0b1JlZih0aGlzKTsKICAgICAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5
TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5
TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IGNsYXNzUmVm
KCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAg
ICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZSogc3RhdGljVmFsdWVzID0ganND
bGFzcy0+c3RhdGljVmFsdWVzKGV4ZWMpKSB7CiAgICAgICAgICAgICAgICAgaWYgKFN0YXRpY1Zh
bHVlRW50cnkqIGVudHJ5ID0gc3RhdGljVmFsdWVzLT5nZXQobmFtZSkpIHsKQEAgLTYwMCw3ICs2
MDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1
bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSgogICAgIGlmIChQYXJlbnQ6OmdldE93blBy
b3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QyKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90Mi5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUp
KTsKIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUo
KSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CiAg
ICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iai0+Y2xhc3NSZWYoKTsganND
bGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgICAgICBpZiAo
T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlKiBzdGF0aWNGdW5jdGlvbnMgPSBqc0Ns
YXNzLT5zdGF0aWNGdW5jdGlvbnMoZXhlYykpIHsKICAgICAgICAgICAgICAgICBpZiAoU3RhdGlj
RnVuY3Rpb25FbnRyeSogZW50cnkgPSBzdGF0aWNGdW5jdGlvbnMtPmdldChuYW1lKSkgewpAQCAt
NjI2LDcgKzYyNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6
Y2FsbGJhY2tHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjCiAgICAgSlNPYmplY3RSZWYg
dGhpc1JlZiA9IHRvUmVmKHRoaXNPYmopOwogICAgIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJv
cGVydHlOYW1lUmVmOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlO
YW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlO
YW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iai0+
Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAg
ICAgICAgICAgICBpZiAoSlNPYmplY3RHZXRQcm9wZXJ0eUNhbGxiYWNrIGdldFByb3BlcnR5ID0g
anNDbGFzcy0+Z2V0UHJvcGVydHkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5TmFt
ZVJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5NjlkNmJlYTYyNjFm
MDFjMjcwYTJkZDMxZWZmZDdiMTM4MjZiYTc5Li5lYTIxNmUyZThjYzQ5MmM4YjA2MmE1YWZjZGQx
YzQ3MTJiNzFmMmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01LDYg
KzUsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMiCiAgICAgIiR7SkFWQVNDUklQVENP
UkVfRElSfS9hc3NlbWJsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9iaW5kaW5ncyIK
KyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zIgogICAgICIke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vYnl0ZWNvZGUiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9ieXRlY29tcGls
ZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9kZmciCkBAIC01Miw2ICs1Myw4IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcAog
ICAgIGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAogCisgICAgYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcAorCiAgICAgYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAKICAg
ICBieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Js
b2NrLmNwcApAQCAtNzE5LDcgKzcyMiw3IEBAIHNldChIQVNIX0xVVF9HRU5FUkFUT1IgJHtDTUFL
RV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2NyZWF0ZV9oYXNoX3RhYmxlKQogbWFjcm8oR0VORVJBVEVf
SEFTSF9MVVQgX2lucHV0IF9vdXRwdXQpCiAgICAgYWRkX2N1c3RvbV9jb21tYW5kKAogICAgICAg
ICBPVVRQVVQgJHtfb3V0cHV0fQotICAgICAgICBERVBFTkRTICR7SEFTSF9MVVRfR0VORVJBVE9S
fSAke19pbnB1dH0KKyAgICAgICAgREVQRU5EUyAke0hBU0hfTFVUX0dFTkVSQVRPUn0gJHtfaW5w
dXR9ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucwogICAg
ICAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke0hBU0hfTFVUX0dFTkVSQVRPUn0gJHtf
aW5wdXR9IC1pID4gJHtfb3V0cHV0fQogICAgICAgICBWRVJCQVRJTSkKICAgICBsaXN0KEFQUEVO
RCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTICR7X291dHB1dH0pCkBAIC03NDgsNiArNzUxLDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX0ZPUldBUkRJTkdfSEVBREVSU19ESVJFQ1RPUklFUwogICAgIHlh
cnIKIAogICAgIGNvbGxlY3Rvci9oYW5kbGVzCisgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVND
UklQVENPUkVfRElSfQogKQogCiBzZXQoSmF2YVNjcmlwdENvcmVfRk9SV0FSRElOR19IRUFERVJT
X0ZJTEVTCkBAIC03NzUsOCArNzc5LDExIEBAIHNldChKYXZhU2NyaXB0Q29yZV9GT1JXQVJESU5H
X0hFQURFUlNfRklMRVMKICAgICBhc3NlbWJsZXIvTGlua0J1ZmZlci5oCiAgICAgYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyLmgKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgK
KyAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgKICAgICBqaXQvR1BSSW5mby5o
CiAgICAgcnVudGltZS9WTS5oCisKKyAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09S
RV9ESVJ9L0pTQ0J1aWx0aW5zLmgKICkKIAogCkBAIC04MjgsMTYgKzgzNSwyNyBAQCBhZGRfY3Vz
dG9tX2NvbW1hbmQoCiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3Jp
cHRDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0vQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTLmpzb24gLS1v
dXRwdXRfaF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0
cHV0X2NwcF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0
cHV0X2pzX2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIgLS1vdXRw
dXRfdHlwZSBKYXZhU2NyaXB0IC0td3JpdGVfYWx3YXlzICYmIG1rZGlyIC1wICR7REVSSVZFRF9T
T1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yICYmIGNwICR7REVSSVZFRF9TT1VS
Q0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTRnJvbnRlbmRE
aXNwYXRjaGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVj
dG9ySlNUeXBlQnVpbGRlcnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9
L2luc3BlY3RvcgogICAgIFZFUkJBVElNKQogCisjIEpTQ0J1aWx0aW5zCitmaWxlKEdMT0IgSlND
QnVpbHRpbnNfanNfZmlsZXMgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9idWlsdGlucy8q
LmpzIikKK2FkZF9jdXN0b21fY29tbWFuZCgKKyAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19K
QVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcCAke0RFUklWRURfU09VUkNFU19KQVZB
U0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKKyAgIE1BSU5fREVQRU5ERU5DWSAke0NNQUtF
X0NVUlJFTlRfU09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMKKyAgIERFUEVORFMgJHtK
U0NCdWlsdGluc19qc19maWxlc30KKyAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtD
TUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zICR7SlNDQnVpbHRp
bnNfanNfZmlsZXN9ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVp
bHRpbnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5z
LmNwcAorICAgVkVSQkFUSU0pCisKIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMK
ICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTQmFj
a2VuZERpc3BhdGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0vSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9T
T1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwCisg
ICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5jcHAK
ICkKIAogbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUwogICAgICR7REVSSVZFRF9T
T1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMu
aAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNG
cm9udGVuZERpc3BhdGNoZXJzLmgKICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09S
RV9ESVJ9L0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgKKyAgICAke0RFUklWRURfU09VUkNFU19K
QVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKICkKIAogYWRkX2N1c3RvbV9jb21tYW5k
KApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2Ug
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA2MDI3NDY2
MzA5YmNhZmMxMTI2MzM3ZmEzMTgzZmZhZmY3MzBmMGY1Li40MzU0MDU2NGMwMGViZmMzNWQ5Zjg5
M2EyMmU0MzM5N2RhZDZhYzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQpAQCAtMjgsOCArMjgsOSBAQCBWUEFUSCA9IFwKICAgICAkKEphdmFTY3JpcHRDb3Jl
KSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvcGFyc2VyIFwKICAgICAkKEphdmFTY3JpcHRDb3Jl
KS9ydW50aW1lIFwKLSAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnRlcnByZXRlciBcCi0gICAgJChK
YXZhU2NyaXB0Q29yZSkvaml0IFwKKwkkKEphdmFTY3JpcHRDb3JlKS9pbnRlcnByZXRlciBcCisJ
JChKYXZhU2NyaXB0Q29yZSkvaml0IFwKKwkkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucyBcCiAj
CiAKIC5QSE9OWSA6IGFsbApAQCAtNTcsOCArNTgsMTggQEAgYWxsIDogXAogICAgIFJlZ0V4cE9i
amVjdC5sdXQuaCBcCiAgICAgU3RyaW5nQ29uc3RydWN0b3IubHV0LmggXAogICAgIHVkaXM4Nl9p
dGFiLmggXAorICAgIEpTQ0J1aWx0aW5zIFwKICMKIAorIyBidWlsdGluIGZ1bmN0aW9ucworLlBI
T05ZOiBKU0NCdWlsdGlucworCitKU0NCdWlsdGluczogJChKYXZhU2NyaXB0Q29yZSkvZ2VuZXJh
dGUtanMtYnVpbHRpbnMgSlNDQnVpbHRpbnMuaCBKU0NCdWlsdGlucy5jcHAKK0pTQ0J1aWx0aW5z
Lmg6ICQoSmF2YVNjcmlwdENvcmUpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zICQoSmF2YVNjcmlwdENv
cmUpL2J1aWx0aW5zLyouanMKKwlweXRob24gJF4gJEAKKwkJCQkJCQkJCQkJCQkJCQkJCQkJIAor
SlNDQnVpbHRpbnMuY3BwOiBKU0NCdWlsdGlucy5oCisKICMgbG9va3VwIHRhYmxlcyBmb3IgY2xh
c3NlcwogCiAlLmx1dC5oOiBjcmVhdGVfaGFzaF90YWJsZSAlLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0dOVW1ha2VmaWxlLmFtCmluZGV4IGNjM2JjMTkwYjc5ZGRjNDE3ZTc0OGFkNzEwNWIxODEzNTE4
MjIwNTIuLmFkNzNiNzhkNTU4NDgxMGQ2MzU3ZDAxODVmNDVkMDIxYWFkZjE1MjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTUxLDYgKzUxLDcgQEAgamF2YXNjcmlwdGNv
cmVfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Gb3J3
YXJkaW5nSGVhZGVycyBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
YmxlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzIFwKKwkt
SSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMgXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyIFwKQEAgLTExMCwxMiArMTExLDE2IEBAIERlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaDogJChqYXZhc2NyaXB0Y29yZV9zb3Vy
Y2VzKSAkCiAJJChBTV9WX0dFTikkKFJVQlkpICQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiICQoc3JjZGlyKS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gJEAKIAkkKEFN
X1ZfYXQpdG91Y2ggJEAKIAotJChQcm9ncmFtc19MTEludE9mZnNldHNFeHRyYWN0b3JfT0JKRUNU
Uyk6IERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaAor
JChQcm9ncmFtc19MTEludE9mZnNldHNFeHRyYWN0b3JfT0JKRUNUUyk6IERlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaCAKIAogRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvTExJbnRBc3NlbWJseS5oOiBQcm9ncmFtcy9MTEludE9mZnNldHNFeHRy
YWN0b3IkKEVYRUVYVCkKIAkkKEFNX1ZfR0VOKSQoUlVCWSkgJChzcmNkaXIpL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYiAkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIFByb2dyYW1zL0xMSW50T2Zmc2V0c0V4
dHJhY3RvciQoRVhFRVhUKSAkQAogCSQoQU1fVl9hdCl0b3VjaCAkQAogCitEZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5oOiBEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0
Q29yZS9KU0NCdWlsdGlucy5jcHAKK0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1
aWx0aW5zLmNwcDogJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1qcy1i
dWlsdGlucyAkKGphdmFzY3JpcHRjb3JlX2J1aWx0aW5zX2pzX25vc291cmNlcykKKwkkKEFNX1Zf
R0VOKSQoUFlUSE9OKSAkXiAkQAorCiAkKGxpYmphdmFzY3JpcHRjb3JlZ3RrX0BXRUJLSVRHVEtf
QVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX09CSkVD
VFMpOiBEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9MTEludEFzc2VtYmx5LmgKIAoganNj
OiAkKGphdmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcykgUHJvZ3JhbXMvanNjJChFWEVFWFQp
CkBAIC0yMTcsNiArMjIyLDcgQEAgRVhUUkFfRElTVCArPSBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL0tleXdvcmRMb29rdXBHZW5lcmF0b3IucHkgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvS2V5d29yZHMudGFibGUgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9USEFOS1MgXAor
CSQoamF2YXNjcmlwdGNvcmVfYnVpbHRpbnNfanNfbm9zb3VyY2VzKSBcCiAJJChsbGludF9ub3Nv
dXJjZXMpIFwKIAkkKG9mZmxpbmVhc21fbm9zb3VyY2VzKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDg4Mjk0YjcwYzc2MzA5NmExODMwYTg0OTE3NTk5
MzAxNjg3MzUxZDkuLjZkMWJlNjQ1ZTM2OTM5MWNhYTEyM2IzNmM3YjVhYTE1NDkyNGI1MzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yMCw2ICsyMCw4
IEBAIGphdmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvRXJyb3JQcm90b3R5cGUubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL0pTRGF0YVZpZXdQcm90b3R5cGUubHV0LmggXAogCURlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0Lmx1dC5oIFwKKwlEZXJpdmVkU291cmNlcy9K
YXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5jcHAgXAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL0pTQ0J1aWx0aW5zLmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pT
T05PYmplY3QubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTUHJvbWlz
ZUNvbnN0cnVjdG9yLmx1dC5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU1By
b21pc2VQcm90b3R5cGUubHV0LmggXApAQCAtMzUsNiArMzcsOSBAQCBqYXZhc2NyaXB0Y29yZV9i
dWlsdF9ub3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50
RGVzaXJlZE9mZnNldHMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnRB
c3NlbWJseS5oCiAKK2phdmFzY3JpcHRjb3JlX2J1aWx0aW5zX2pzX25vc291cmNlcyArPSBcCisJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcworCiBqYXZh
c2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNh
bGxiYWNrRnVuY3Rpb24uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0Lmgg
XApAQCAtMTAyLDYgKzEwNyw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogICAgIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRPYmplY3QuaCBcCiAgICAgU291cmNl
L0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcCBcCiAgICAgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmggXAorICAgIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIFwKKyAgICBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAgXApAQCAtMTI3MCw3
ICsxMjc3LDkgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcCBcCiAJRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJz
LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpTVHlwZUJ1aWxk
ZXJzLmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNUeXBl
QnVpbGRlcnMuaAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpTVHlw
ZUJ1aWxkZXJzLmggXAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5z
LmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNDQnVpbHRpbnMuaAogCiBs
bGludF9ub3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qCmluZGV4IGYyMzZmNzI5MWYwMzM1MTA4NjgzYmJlZDVhYWZjYjBkZjJhZmY3NTguLjlkMGQz
YzNmNTUyMDYxMTdmZmVkYzUyMjQ0YTAwMjY1YWNkYWQ2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvagpAQCAtMzA5LDYgKzMwOSw3IEBACiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0T2JqZWN0LmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdFZhbHVlLmNwcCIgLz4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxl
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5UHJvZmls
ZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeXRlY29kZUJh
c2ljQmxvY2suY3BwIiAvPgpAQCAtNzMyLDYgKzczMyw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hl
cnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEluc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNUeXBlQnVpbGRl
cnMuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEpTQ0J1aWx0aW5zLmNwcCIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcQXJyYXlDb25z
dHJ1Y3Rvci5sdXQuaCIgLz4KQEAgLTc2MSw2ICs3NjMsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFJlZ0V4cE9iamVjdC5sdXQuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xSZWdFeHBQcm90
b3R5cGUubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcU3RyaW5nQ29uc3RydWN0b3IubHV0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuaCIgLz4KICAgPC9JdGVt
R3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcQVBJ
Q2FsbGJhY2tGdW5jdGlvbi5oIiAvPgpAQCAtODA5LDYgKzgxMiw3IEBACiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdE9iamVjdC5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0VmFsdWUuaCIgLz4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxlcy5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlQcm9maWxlLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeVZhbEluZm8uaCIgLz4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCBi
OWVhNTY2YWFmNjJjZGZiN2EzMDQ2YmVkZjhkZmUzZGQwY2Q5NDNjLi5kNGM3ZjZlYTViN2M1MGQw
MTE3ZDNkZGQ4ZDRmZWRhYjc2OWNiODhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC03LDYgKzcsOSBAQAogICAgIDxGaWx0ZXIgSW5j
bHVkZT0iYmluZGluZ3MiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezBiYWNlMTIzLTQ1ODIt
ZWViYy05MzE0LTc4MTliMzc2YzE5OH08L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+
CisgICAgPEZpbHRlciBJbmNsdWRlPSJidWlsdGlucyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmll
cj57M2I5ZDcyYTUtMTM1Yi00M2IzLWE1MjQtYzZkMmI5ZDI5ZDM1fTwvVW5pcXVlSWRlbnRpZmll
cj4KKyAgICA8L0ZpbHRlcj4KICAgICA8RmlsdGVyIEluY2x1ZGU9ImJ5dGVjb2RlIj4KICAgICAg
IDxVbmlxdWVJZGVudGlmaWVyPns3NjYwODhhMC0xMjE2LTQ4NTQtYWE0My01NjBjNWUyODM2Njh9
PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgpAQCAtMTA4LDYgKzExMSw5IEBACiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcTWFjcm9Bc3NlbWJsZXIuY3BwIj4K
ICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWlsdGluRXhlY3V0YWJsZXMuY3BwIj4K
KyAgICAgIDxGaWx0ZXI+YnVpbHRpbnM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3Bw
Ij4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAg
LTEzMjksNiArMTMzNSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwIj4KICAgICAgIDxGaWx0ZXI+
RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuY3BwIj4KKyAg
ICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAg
IDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
QVBJXEFQSUNhbGxiYWNrRnVuY3Rpb24uaCI+CkBAIC0xNDU0LDYgKzE0NjMsOSBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXFg4NkFzc2VtYmxlci5oIj4KICAgICAgIDxG
aWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWlsdGluRXhlY3V0YWJsZXMuaCI+CisgICAgICA8Rmls
dGVyPmJ1aWx0aW5zPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmgiPgogICAgICAgPEZp
bHRlcj5ieXRlY29kZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMjU1Niw2ICsyNTY4
LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xB
cnJheVByb3RvdHlwZS5sdXQuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmls
dGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmgiPgorICAgICAgPEZpbHRlcj5EZXJpdmVkIFNv
dXJjZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcVk0uaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlQ29tbW9uLnByb3BzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmVDb21tb24ucHJvcHMK
aW5kZXggMzYyMmZmYzU3N2M0M2RkZjcwZGE1MWZmNjhhZDY0NmY2MzA0ZTU2Ny4uYzU4ODg3MGMy
ZmQxM2Q2MDc2ZDM4ZjUyY2E2MjI1ZGIyODcyYzc4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmVDb21tb24ucHJv
cHMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmVDb21tb24ucHJvcHMKQEAgLTUsNyArNSw3IEBACiAgIDxQcm9wZXJ0eUdyb3Vw
IC8+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlw7Li5cdG9vbHNcOy4uXHJ1bnRpbWVcOy4uXGxs
aW50XDsuLlxqaXRcOy4uXGRpc2Fzc2VtYmxlclw7Li5caGVhcFw7Li5cZGVidWdnZXJcOy4uXGFz
c2VtYmxlclw7Li5ccHJvZmlsZXJcOy4uXHlhcnJcOy4uXGludGVycHJldGVyXDsuLlxieXRlY29k
ZVw7Li5cZGZnXDsuLlxieXRlY29tcGlsZXJcOy4uXHBhcnNlclw7Li5cQVBJXDsuLlxmdGxcOy4u
XGJpbmRpbmdzXDsuLlxpbnNwZWN0b3JcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBs
YXRmb3JtQXJjaGl0ZWN0dXJlKVxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1w7JChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNs
dWRlXEphdmFTY3JpcHRDb3JlXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2
YXRlXDskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGU7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNs
dWRlXHByaXZhdGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4u
XDsuLlx0b29sc1w7Li5ccnVudGltZVw7Li5cbGxpbnRcOy4uXGppdFw7Li5cZGlzYXNzZW1ibGVy
XDsuLlxoZWFwXDsuLlxkZWJ1Z2dlclw7Li5cYXNzZW1ibGVyXDsuLlxwcm9maWxlclw7Li5ceWFy
clw7Li5caW50ZXJwcmV0ZXJcOy4uXGJ5dGVjb2RlXDsuLlxidWlsdGluc1w7Li5cZGZnXDsuLlxi
eXRlY29tcGlsZXJcOy4uXHBhcnNlclw7Li5cQVBJXDsuLlxmdGxcOy4uXGJpbmRpbmdzXDsuLlxp
bnNwZWN0b3JcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1w7JChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXGluY2x1ZGVcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRD
b3JlXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXDskKFdlYktpdF9M
aWJyYXJpZXMpXGluY2x1ZGU7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlXHByaXZhdGU7JShB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cz4KICAgICAgIDxGb3JjZWRJbmNsdWRlRmlsZXM+SUNVVmVyc2lvbi5oOyUoRm9yY2VkSW5jbHVk
ZUZpbGVzKTwvRm9yY2VkSW5jbHVkZUZpbGVzPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5r
PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovY29weS1maWxlcy5jbWQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9jb3B5LWZpbGVzLmNtZAppbmRleCA5NDMzNDNhNTY4ZTNlMjk5ODE2YmY2NmYyZWRi
NTI0MzU4ZmM1NGU4Li5lMGMxZjI5NjYxOTZiZGEzMDAzNTk1YzVkZjAzZWVlMDhhMGRhNzhmIDEw
MDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9j
b3B5LWZpbGVzLmNtZAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9jb3B5LWZpbGVzLmNtZApAQCAtNDIsNiArNDIsNyBAQCBmb3IgJSVkIGluICgKICAg
ICBhc3NlbWJsZXINCiAgICAgYmluZGluZ3MNCiAgICAgYnl0ZWNvZGUNCisgICAgYnVpbHRpbnMN
CiAgICAgZGZnDQogICAgIGRpc2Fzc2VtYmxlcg0KICAgICBoZWFwDQpAQCAtNzIsNiArNzMsOSBA
QCB4Y29weSAveSAiJURlcml2ZWRTb3VyY2VzRGlyZWN0b3J5JVxJbnNwZWN0b3JKU1R5cGVCdWls
ZGVycy5oIiAiJVByaXZhdGVIZWFkZXJzRAogeGNvcHkgL3kgIiVEZXJpdmVkU291cmNlc0RpcmVj
dG9yeSVcSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCIgIiVQcml2YXRlSGVhZGVyc0Rp
cmVjdG9yeSUiID5OVUwNCiB4Y29weSAveSAiJURlcml2ZWRTb3VyY2VzRGlyZWN0b3J5JVxJbnNw
ZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuaCIgIiVQcml2YXRlSGVhZGVyc0RpcmVjdG9yeSUi
ID5OVUwNCiANCitlY2hvIENvcHlpbmcgYnVpbHRpbnMgaGVhZGVyIGFzIGlmIGl0IHdlcmUgYSBw
cml2YXRlIGhlYWRlci4uLg0KK3hjb3B5IC95ICIlRGVyaXZlZFNvdXJjZXNEaXJlY3RvcnklXEpT
Q0J1aWx0aW5zLmgiICIlUHJpdmF0ZUhlYWRlcnNEaXJlY3RvcnklIiA+TlVMDQorDQogZWNobyBD
b3B5aW5nIHJlc291cmNlcy4uLg0KIG1rZGlyICIlUmVzb3VyY2VzRGlyZWN0b3J5JSIgMj5OVUwN
CiB4Y29weSAveSAvZCBKYXZhU2NyaXB0Q29yZS5yZXNvdXJjZXNcKiAiJVJlc291cmNlc0RpcmVj
dG9yeSUiID5OVUwNCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc5Nzk2NGJhNmM2
NDJlYTM0Y2EzNzQ4YzA1ZDhmMDFmZTgwZTNmNWIuLmRjYWJlMTA0NGU2MmVmNWQ4MzA5MmI3NDc2
MjIxOTYyMmRmZTlmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTAwLDYg
KzExMDAsNyBAQAogCQlBNzRERUY5NTE4MkQ5OTE0MDA1MjJDMjIgLyogSlNNYXBJdGVyYXRvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzRERUY4
RjE4MkQ5OTE0MDA1MjJDMjIgLyogSlNNYXBJdGVyYXRvci5jcHAgKi87IH07CiAJCUE3NERFRjk2
MTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzRERUY5MDE4MkQ5OTE0MDA1MjJDMjIgLyogSlNN
YXBJdGVyYXRvci5oICovOyB9OwogCQlBNzU3MDZERTExOEEyQkNGMDA1N0Y4OEYgLyogSklUQXJp
dGhtZXRpYzMyXzY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3NTcwNkREMTE4QTJCQ0YwMDU3Rjg4RiAvKiBKSVRBcml0aG1ldGljMzJfNjQuY3Bw
ICovOyB9OworCQlBNzVFRTlCMjE4QUFCN0UyMDBBQUQwNDMgLyogQnVpbHRpbk5hbWVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzVFRTlCMDE4QUFC
N0UyMDBBQUQwNDMgLyogQnVpbHRpbk5hbWVzLmggKi87IH07CiAJCUE3NjE0MENEMTgyOTgyQ0Iw
MDc1MDYyNCAvKiBBcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NjE0MEM3MTgyOTgyQ0IwMDc1MDYy
NCAvKiBBcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKIAkJQTc2MTQwQ0Ux
ODI5ODJDQjAwNzUwNjI0IC8qIEFyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NjE0MEM4MTgyOTgyQ0Iw
MDc1MDYyNCAvKiBBcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmggKi87IH07CiAJCUE3NjE0
MENGMTgyOTgyQ0IwMDc1MDYyNCAvKiBBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzYxNDBDOTE4Mjk4
MkNCMDA3NTA2MjQgLyogQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwICovOyB9OwpAQCAt
MTE4Niw2ICsxMTg3LDEwIEBACiAJCUE3Q0EzQUU4MTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtN
YXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0Ez
QUUyMTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuaCAqLzsgfTsKIAkJQTdDQTNBRUIxN0RB
NTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0EzQUU5MTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFw
RGF0YS5jcHAgKi87IH07CiAJCUE3Q0EzQUVDMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0
YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDQTNB
RUExN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmggKi87IH07CisJCUE3RDgwMUE0MTg4
MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTExODgwRDY2RTAwMjZDMzlCIC8q
IEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi87IH07CisJCUE3RDgwMUE1MTg4MEQ2NkUwMDI2QzM5
QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0
YWJsZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlBN0Q4MDFBODE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTYxODgwRDZBODAwMjZD
MzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCAqLzsgfTsKKwkJQTdEODAxQTkxODgwRDZBODAwMjZDMzlC
IC8qIEpTQ0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBN0Q4MDFBNzE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCAqLzsgfTsK
IAkJQTdEODlDRjIxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jhc2ljQmxvY2suY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODlDRTMxN0EwQjhDQzAw
NzczQUQ4IC8qIERGR0Jhc2ljQmxvY2suY3BwICovOyB9OwogCQlBN0Q4OUNGMzE3QTBCOENDMDA3
NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODlDRTQxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Js
b2NrSW5zZXJ0aW9uU2V0LmNwcCAqLzsgfTsKIAkJQTdEODlDRjQxN0EwQjhDQzAwNzczQUQ4IC8q
IERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBN0Q4OUNFNTE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRp
b25TZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMjE0NSw3ICsyMTUwLDcgQEAKIAkJMTREODU3NzQwQTQ2OTZDODAwMzIxNDZDIC8qIHRlc3Rh
cGkuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSB0ZXN0YXBpLmpz
OyBwYXRoID0gQVBJL3Rlc3RzL3Rlc3RhcGkuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTE0REE4MThFMEQ5OUZEMjAwMEIwQTRGQiAvKiBKU0FjdGl2YXRpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBY3RpdmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTE0REE4MThGMEQ5OUZEMjAwMEIwQTRGQiAvKiBKU0FjdGl2YXRpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBY3RpdmF0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMTRERTBENjgwRDAyNDMxNDAwQUFDQ0EyIC8q
IEpTR2xvYmFsT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTR2xvYmFsT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRERTBE
NjgwRDAyNDMxNDAwQUFDQ0EyIC8qIEpTR2xvYmFsT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBKU0dsb2JhbE9iamVjdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmll
ciA9IHhjb2RlLmxhbmcuY3BwOyB9OwogCQkxNERGMDREOTE2QjM5OTZEMDAxNkE1MTMgLyogU3Rh
dGljUHJvcGVydHlBbmFseXNpcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dGF0aWNQcm9wZXJ0eUFuYWx5c2lzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0
RTg0Rjk5MTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFrQmxvY2suY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2Vha0Jsb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMTRFODRGOUExNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtCbG9jay5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrQmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIyMjcsNyArMjIzMiw3IEBACiAJCTY1RkI1MTE1MTg0RUU4RjgwMEMxMkI3
MCAvKiBQcm90b0NhbGxGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
cm90b0NhbGxGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUZCNTExNjE4
NEVFOUJDMDBDMTJCNzAgLyogUHJvdG9DYWxsRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUHJvdG9DYWxsRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MDRGRDM1MzA1Njk3RTZEMDAzREJFRDkgLyogQm9vbGVhbk9iamVjdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCb29sZWFu
T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKLQkJN0Mw
MDhDRDAxODZGOEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Byb21pc2VGdW5jdGlvbnMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzAwOENEMDE4NkY4QTkzMDA5NTVDMjQgLyogSlNQ
cm9taXNlRnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbGluZUVu
ZGluZyA9IDA7IHBhdGggPSBKU1Byb21pc2VGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLmNw
cDsgfTsKIAkJN0MwMDhDRDExODZGOEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb21pc2VGdW5jdGlvbnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMDhDRDgxODcxMjRCQjAwOTU1QzI0IC8q
IEpTUHJvbWlzZURlZmVycmVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTUHJvbWlzZURlZmVycmVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0MwMDhDRDkxODcxMjRCQjAwOTU1QzI0IC8qIEpTUHJvbWlzZURlZmVycmVkLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvbWlzZURlZmVycmVkLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yMjM2LDkgKzIyNDEsOSBAQAogCQk3QzAwOENFNTE4NzYzMUI2
MDA5NTVDMjQgLyogTWljcm90YXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1pY3JvdGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzE4NEUxODE3QkVE
QkQzMDA3Q0I2M0EgLyogSlNQcm9taXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTUHJvbWlzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
MTg0RTE5MTdCRURCRDMwMDdDQjYzQSAvKiBKU1Byb21pc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNQcm9taXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTdDMTg0RTFDMTdCRUUyMkUwMDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQcm9taXNlUHJvdG90eXBlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MxODRFMUMxN0JFRTIyRTAwN0NCNjNBIC8q
IEpTUHJvbWlzZVByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGxp
bmVFbmRpbmcgPSAwOyBwYXRoID0gSlNQcm9taXNlUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFu
Zy5jcHA7IH07CiAJCTdDMTg0RTFEMTdCRUUyMkUwMDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5
cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9taXNlUHJvdG90eXBl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDMTg0RTIwMTdCRUUyNDAwMDdDQjYz
QSAvKiBKU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdDMTg0RTIwMTdCRUUyNDAwMDdDQjYzQSAvKiBKU1Byb21pc2VDb25zdHJ1Y3Rv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBwYXRo
ID0gSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xh
bmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKIAkJN0Mx
ODRFMjExN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvbWlzZUNvbnN0cnVjdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMTg0RTI0MTdCRkZBMzYwMDdDQjYzQSAvKiBKU1Byb21p
c2VDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9taXNlQ29uc3RydWN0b3Iu
bHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMTg0RTI1MTdCRkZBMzYwMDdD
QjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvbWlz
ZVByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1MzksNiAr
MjU0NCw3IEBACiAJCUE3MTIzNkU0MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUT3Bjb2RlczMyXzY0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxOEY2MUExMTc1NEEyMTAwMjQ2
NUE3IC8qIFJlZ0V4cEppdFRhYmxlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZWdFeHBKaXRUYWJsZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxOEY4
MjExMTc4RUI0QjAwMjQ2NUE3IC8qIGNyZWF0ZV9yZWdleF90YWJsZXMgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgZmls
ZUVuY29kaW5nID0gNDsgcGF0aCA9IGNyZWF0ZV9yZWdleF90YWJsZXM7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUE3MURBODBEMTg4MEQ3MUYwMEQxRjI5OSAvKiBnZW5lcmF0ZS1qcy1i
dWlsdGlucyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9ICJnZW5lcmF0ZS1q
cy1idWlsdGlucyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI0MTc5NzYw
MUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNDVGVzdFJ1bm5lclV0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTcyMDI4QjUxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJV
dGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NUZXN0UnVubmVyVXRp
bHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyMDI4QjkxNzk3NjAzRDAwOTgw
MjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTRnVuY3Rpb25JbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
NTc4LDkgKzI1ODQsMTAgQEAKIAkJQTc0REVGOEYxODJEOTkxNDAwNTIyQzIyIC8qIEpTTWFwSXRl
cmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNYXBJdGVy
YXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3NERFRjkwMTgyRDk5MTQw
MDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTTWFwSXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc1NzA2
REQxMThBMkJDRjAwNTdGODhGIC8qIEpJVEFyaXRobWV0aWMzMl82NC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRBcml0aG1ldGljMzJfNjQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBNzVFRTlCMDE4QUFCN0UyMDBBQUQwNDMgLyogQnVpbHRp
bk5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1aWx0aW5OYW1lcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzYxNDBDNzE4Mjk4MkNCMDA3NTA2MjQg
LyogQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc2MTQwQzgxODI5ODJDQjAwNzUwNjI0IC8qIEFyZ3Vt
ZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlBNzYxNDBDOTE4Mjk4MkNCMDA3NTA2MjQgLyogQXJndW1lbnRzSXRlcmF0b3JQcm90
b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJndW1lbnRz
SXRlcmF0b3JQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzYx
NDBDOTE4Mjk4MkNCMDA3NTA2MjQgLyogQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9IEFyZ3Vt
ZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5n
dWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5jcHA7IH07CiAJCUE3NjE0
MENBMTgyOTgyQ0IwMDc1MDYyNCAvKiBBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzYxNDBDQjE4Mjk4MkNCMDA3NTA2MjQg
LyogSlNBcmd1bWVudHNJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTc2MTQwQ0MxODI5ODJDQjAwNzUwNjI0IC8qIEpTQXJndW1lbnRzSXRlcmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcmd1bWVudHNJdGVyYXRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY0NSw5ICsyNjUyLDkgQEAKIAkJQTdCNEFD
QUUxNDg0QzlDRTAwQjM4QTM2IC8qIEpTRXhwb3J0TWFjcm9zLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTRXhwb3J0TWFjcm9zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE3QkRBRUMwMTdGNEVBMTQwMEY2MTQwQyAvKiBBcnJheUl0ZXJhdG9yQ29uc3RydWN0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlJdGVyYXRv
ckNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdCREFFQzEx
N0Y0RUExNDAwRjYxNDBDIC8qIEFycmF5SXRlcmF0b3JDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUl0ZXJhdG9yQ29uc3RydWN0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTdCREFFQzIxN0Y0RUExNDAwRjYxNDBDIC8qIEFycmF5
SXRlcmF0b3JQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE3QkRBRUMyMTdGNEVBMTQwMEY2MTQwQyAvKiBBcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBB
cnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5n
dWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5jcHA7IH07CiAJCUE3QkRB
RUMzMTdGNEVBMTQwMEY2MTQwQyAvKiBBcnJheUl0ZXJhdG9yUHJvdG90eXBlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5SXRlcmF0b3JQcm90b3R5cGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTdCREFFQzQxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJy
YXlJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Fy
cmF5SXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0JEQUVDNDE3
RjRFQTE0MDBGNjE0MEMgLyogSlNBcnJheUl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBKU0FycmF5SXRlcmF0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIg
PSB4Y29kZS5sYW5nLmNwcDsgfTsKIAkJQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJy
YXlJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FycmF5SXRl
cmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdCRkYzQkYxNzk4Njg5NDAw
MDJGNDYyIC8qIERGR0ZpbHRyYXRpb25SZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gREZHRmlsdHJhdGlvblJlc3VsdC5oOyBwYXRoID0gZGZnL0RGR0ZpbHRyYXRpb25S
ZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdDMEM0QUExNjdDMDhDRDAw
MTcwMTFEIC8qIEpTU2NyaXB0UmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTU2NyaXB0UmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2
NjcsNiArMjY3NCwxMSBAQAogCQlBN0NBM0FFMjE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFw
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2Vha01hcC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBN0NBM0FFOTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01h
cERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vha01hcERh
dGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0NBM0FFQTE3REE1MTY4MDA2
NTM4QUYgLyogV2Vha01hcERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2Vha01hcERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTAxODgw
RDY2RTAwMjZDMzlCIC8qIEFycmF5LnByb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
amF2YXNjcmlwdDsgcGF0aCA9IEFycmF5LnByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTdEODAxQTExODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxl
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCdWlsdGluRXhlY3V0
YWJsZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFBMjE4ODBENjZF
MDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEJ1aWx0aW5FeGVjdXRhYmxlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBN0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDQnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFBNzE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRp
bnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDQnVpbHRpbnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdEODlDRTMxN0EwQjhDQzAwNzczQUQ4IC8qIERG
R0Jhc2ljQmxvY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZH
QmFzaWNCbG9jay5jcHA7IHBhdGggPSBkZmcvREZHQmFzaWNCbG9jay5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE3RDg5Q0U0MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0lu
c2VydGlvblNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdC
bG9ja0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHQmxvY2tJbnNlcnRpb25TZXQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0Q4OUNFNTE3QTBCOENDMDA3NzNBRDgg
LyogREZHQmxvY2tJbnNlcnRpb25TZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gREZHQmxvY2tJbnNlcnRpb25TZXQuaDsgcGF0aCA9IGRmZy9ERkdCbG9ja0luc2VydGlvblNl
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjg2OSw3ICsyODgxLDcgQEAKIAkJ
RjVCQjJCQzUwMzBGNzcyMTAxRkNGRTFEIC8qIENvbXBsZXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcGxldGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCUY1QzI5MEU2MDI4NEY5OEUwMTg2
MzVDQSAvKiBKYXZhU2NyaXB0Q29yZVByZWZpeC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKYXZhU2NyaXB0Q29yZVByZWZpeC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCUY2OEVCQjhDMDI1NUQ0QzYwMUZG
NjBGNyAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgfTsKLQkJRjY5MkE4NEQwMjU1NTk3RDAxRkY2MEY3IC8qIEFycmF5UHJvdG90eXBlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFy
cmF5UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9
OworCQlGNjkyQTg0RDAyNTU1OTdEMDFGRjYwRjcgLyogQXJyYXlQcm90b3R5cGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBsaW5lRW5kaW5nID0g
MDsgcGF0aCA9IEFycmF5UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFi
V2lkdGggPSA4OyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5n
LmNwcDsgfTsKIAkJRjY5MkE4NEUwMjU1NTk3RDAxRkY2MEY3IC8qIEFycmF5UHJvdG90eXBlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5
UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJ
RjY5MkE4NTAwMjU1NTk3RDAxRkY2MEY3IC8qIEJvb2xlYW5PYmplY3QuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQm9vbGVhbk9iamVj
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJRjY5MkE4
NTQwMjU1NTk3RDAxRkY2MEY3IC8qIGNyZWF0ZV9oYXNoX3RhYmxlICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgcGF0aCA9IGNyZWF0ZV9oYXNoX3RhYmxlOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CkBAIC0zMDA3LDYgKzMwMTks
NyBAQAogCQkJCTg2MDRGNEYyMTQzQTZDNDQwMEIyOTVGNSAvKiBDaGFuZ2VMb2cgKi8sCiAJCQkJ
RjY5MkE4NTQwMjU1NTk3RDAxRkY2MEY3IC8qIGNyZWF0ZV9oYXNoX3RhYmxlICovLAogCQkJCUE3
MThGODIxMTE3OEVCNEIwMDI0NjVBNyAvKiBjcmVhdGVfcmVnZXhfdGFibGVzICovLAorCQkJCUE3
MURBODBEMTg4MEQ3MUYwMEQxRjI5OSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAqLywKIAkJCQk0
NUUxMkQ4ODA2QTQ5QjBGMDBFOURGODQgLyoganNjLmNwcCAqLywKIAkJCQlGNjhFQkI4QzAyNTVE
NEM2MDFGRjYwRjcgLyogY29uZmlnLmggKi8sCiAJCQkJRjVDMjkwRTYwMjg0Rjk4RTAxODYzNUNB
IC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggKi8sCkBAIC0zMDE1LDYgKzMwMjgsNyBAQAogCQkJ
CTE0MzJFQkQ3MEEzNENBRDQwMDcxN0I5RiAvKiBBUEkgKi8sCiAJCQkJOTY4OENCMTIwRUQxMkI0
RTAwMUQ2NDlGIC8qIGFzc2VtYmxlciAqLywKIAkJCQlBNTRDRjJFQTE4NEVBNzM5MDAyMzdGMTkg
LyogYmluZGluZ3MgKi8sCisJCQkJQTdEODAxOUYxODgwRDY2RTAwMjZDMzlCIC8qIGJ1aWx0aW5z
ICovLAogCQkJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLywKIAkJCQk3
RTM5RDgxRDBFQzM4RUZBMDAzQUYxMUEgLyogYnl0ZWNvbXBpbGVyICovLAogCQkJCTFDOTA1MTNF
MEJBOUU4ODMwMDgxRTlEMCAvKiBDb25maWd1cmF0aW9ucyAqLywKQEAgLTM1OTksNiArMzYxMyw4
IEBACiAJCTY1MEZERjhEMDlEMEZDQTcwMDc2OUU1NCAvKiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUE3RDgwMUE2MTg4MEQ2
QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgKi8sCisJCQkJQTdEODAxQTcxODgwRDZBODAw
MjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggKi8sCiAJCQkJQkMxOEM1MjMwRTE2RkM4QTAwQjM0NDYw
IC8qIEFycmF5UHJvdG90eXBlLmx1dC5oICovLAogCQkJCUJDRDIwM0U3MEUxNzE4RjQwMDJDN0U4
MiAvKiBEYXRlUHJvdG90eXBlLmx1dC5oICovLAogCQkJCUE1MTNFNUM2MTg1Rjk0MzYwMDdFOTVB
RCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICovLApAQCAtNDcwMSw2ICs0NzE3LDE3IEBACiAJ
CQlwYXRoID0gcmVtb3RlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQTdE
ODAxOUYxODgwRDY2RTAwMjZDMzlCIC8qIGJ1aWx0aW5zICovID0geworCQkJaXNhID0gUEJYR3Jv
dXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlBN0Q4MDFBMDE4ODBENjZFMDAyNkMzOUIgLyogQXJy
YXkucHJvdG90eXBlLmpzICovLAorCQkJCUE3RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWls
dGluRXhlY3V0YWJsZXMuY3BwICovLAorCQkJCUE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBC
dWlsdGluRXhlY3V0YWJsZXMuaCAqLywKKwkJCQlBNzVFRTlCMDE4QUFCN0UyMDBBQUQwNDMgLyog
QnVpbHRpbk5hbWVzLmggKi8sCisJCQkpOworCQkJcGF0aCA9IGJ1aWx0aW5zOworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIC8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCiAKIC8q
IEJlZ2luIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTQ5MDksNiArNDkzNiw3
IEBACiAJCQkJMEZEODFBRDMxNTRGQjRGMDAwOTgzRTcyIC8qIERGR0RvbWluYXRvcnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMUUzQTQ3MTUzNENCQjkwMDBGOTQ1NiAvKiBERkdEb3VibGVGb3Jt
YXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEM0M4MjgxNDExNUQ0RjAwRkQ4MUNCIC8q
IERGR0RyaXZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTc1RUU5QjIxOEFBQjdFMjAwQUFEMDQz
IC8qIEJ1aWx0aW5OYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2NkUxNkMxNERGM0YxNjAw
QjdCMkU0IC8qIERGR0VkZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDlBMjk2MTdBMEJDNzQw
MEVFMjYxOCAvKiBERkdFZGdlRG9taW5hdGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzk4NkQ1
NzE3QTBCQjFFMDBBOTVERDAgLyogREZHRWRnZVVzZXNTdHJ1Y3R1cmUuaCBpbiBIZWFkZXJzICov
LApAQCAtNTAyMyw2ICs1MDUxLDcgQEAKIAkJCQkwRkVBMEExRDE3MDhCMDA3MDBCQjcyMkMgLyog
RlRMQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEExRjE3MDhCMDA3MDBC
QjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTU5NDU1OTMxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTdEODAxQTkxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5z
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEEwQTE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ2Fw
YWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyQTE4N0RGREVDMDA4M0I2ODcg
LyogRlRMUmVjb3ZlcnlPcGNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTIzMTcwOTYw
NjkwMEJCNzIyQyAvKiBGVExDb21tb25WYWx1ZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNTA5OSw2
ICs1MTI4LDcgQEAKIAkJCQlCQzE4QzQwRjBFMTZGNUNEMDBCMzQ0NjAgLyogSWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQzI1RjhCQ0UxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVu
dGFsU3dlZXBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTkxNUVEOEU0NjAwRjE2N0Iy
IC8qIEluZGV4aW5nSGVhZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0Q4MDFBNTE4ODBENjZF
MDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3
RjM5QTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXJJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkI3RjM5QjE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdUeXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkNFRkFCMDE4MDVDQTZEMDA0NzJDRTQgLyogSW5pdGlhbGl6ZUxM
Vk0uaCBpbiBIZWFkZXJzICovLApAQCAtNjAwMyw2ICs2MDMzLDcgQEAKIAkJCQlBN0Q4OUNGMjE3
QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
NzBCMDgzMjE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE3RDg5Q0YzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNl
dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBN0Q4MDFBNDE4ODBENjZFMDAyNkMzOUIgLyogQnVp
bHRpbkV4ZWN1dGFibGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUM5REM0MTMyOERGODIw
MDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4
MkUyMTE0MTcyQ0UzMDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRkZDOTU3MTRFRjkwQTAwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTYwMTksNiArNjA1MCw3IEBACiAJCQkJMEZGRkM5NTkxNEVGOTBBNjAwQzcy
NTMyIC8qIERGR0NTRVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkZDNzcyMTZFMTJG
NzEwMDM4RDk3NiAvKiBERkdEQ0VQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhGMkI5
OTE3MkYwNEZGMDA3REJEQTUgLyogREZHRGVzaXJlZElkZW50aWZpZXJzLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUE3RDgwMUE4MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBNzNFMTMzMDE3OTYyNENEMDBFNERFQTggLyogREZHRGVzaXJlZFN0
cnVjdHVyZUNoYWlucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkMwRjdDRDE3QkJGQzVCMDA0
NjRGRTQgLyogREZHRGVzaXJlZFRyYW5zaXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RTg1MzRCMTcyM0NEQTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJy
YXkucHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnBy
b3RvdHlwZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZWI0MmY1Y2M0MzNmMTYzNjM0M2JmYzk4MmFhMmFhZmIz
MzZlOTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0FycmF5LnByb3RvdHlwZS5qcwpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVuY3Rpb24gZXZlcnkoY2FsbGJhY2sgLyosIHRo
aXNBcmcgKi8pIHsKKyAgICAidXNlIHN0cmljdCI7CisgICAgaWYgKHRoaXMgPT09IG51bGwpCisg
ICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWly
ZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwiKTsKKyAgICAKKyAgICBpZiAodGhpcyA9PT0gdW5k
ZWZpbmVkKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2
ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSB1bmRlZmluZWQiKTsKKyAgICAKKyAgICB2
YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMpOworICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGgg
Pj4+IDA7CisgICAgCisgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9uIikKKyAg
ICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFj
ayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKKworICAgIHZhciB0aGlzQXJnID0gYXJndW1lbnRzLmxl
bmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7CisgICAgCisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoIShpIGluIGFycmF5KSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoIWNhbGxiYWNrLkBjYWxsKHRoaXNBcmcs
IGFycmF5W2ldLCBpLCBhcnJheSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIAorICAgIHJldHVybiB0cnVlOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1Y2YxNDkz
OGNkNjBjMWNhYmU3MmQ0OTI0MTA0MGFjZmY3ZjFhZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApAQCAtMCww
ICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisK
KyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5j
bHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCisj
aW5jbHVkZSAiUGFyc2VyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitCdWlsdGluRXhlY3V0YWJs
ZXM6OkJ1aWx0aW5FeGVjdXRhYmxlcyhWTSYgdm0pCisgICAgOiBtX3ZtKHZtKQorI2RlZmluZSBJ
TklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5n
dGgpICwgbV8jI25hbWUjI1NvdXJjZShtYWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21M
aXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgpLCBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgi
PGJ1aWx0aW4+IikpKQorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4oSU5JVElBTElaRV9CVUlMVElO
X1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX1NUUklOR1MKK3sKK30KKwor
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlQnVp
bHRpbkV4ZWN1dGFibGUoY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBjb25zdCBJZGVudGlmaWVy
JiBuYW1lKQoreworICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmU7
CisgICAgUGFyc2VyRXJyb3IgZXJyb3I7CisgICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFt
ID0gcGFyc2U8UHJvZ3JhbU5vZGU+KCZtX3ZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIoKSwgSlNQ
YXJzZUJ1aWx0aW4sIEpTUGFyc2VQcm9ncmFtQ29kZSwgZXJyb3IsICZwb3NpdGlvbkJlZm9yZUxh
c3ROZXdsaW5lKTsKKworICAgIGlmICghcHJvZ3JhbSkgeworICAgICAgICBkYXRhTG9nKCJGYXRh
bCBlcnJvciBjb21waWxpbmcgYnVpbHRpbiBmdW5jdGlvbiAnIiwgbmFtZS5zdHJpbmcoKSwgIic6
ICIsIGVycm9yLm1fbWVzc2FnZSk7CisgICAgICAgIENSQVNIKCk7CisgICAgfQorCisgICAgU3Rh
dGVtZW50Tm9kZSogZXhwclN0YXRlbWVudCA9IHByb2dyYW0tPnNpbmdsZVN0YXRlbWVudCgpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4
cHJTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKKyAgICBFeHByZXNzaW9uTm9kZSogZnVu
Y0V4cHIgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVtZW50Tm9kZSo+KGV4cHJTdGF0ZW1lbnQpLT5l
eHByKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZnVuY0V4cHIpOworICAgIFJFTEVBU0VfQVNTRVJU
KGZ1bmNFeHByLT5pc0Z1bmNFeHByTm9kZSgpKTsKKyAgICBGdW5jdGlvbkJvZHlOb2RlKiBib2R5
ID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZnVuY0V4cHIpLT5ib2R5KCk7CisgICAgUkVM
RUFTRV9BU1NFUlQoIXByb2dyYW0tPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpOworICAgIAorICAg
IGJvZHktPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOworICAgIFJF
TEVBU0VfQVNTRVJUKGJvZHkpOworICAgIFJFTEVBU0VfQVNTRVJUKGJvZHktPmlkZW50KCkuaXNO
dWxsKCkpOworICAgIAorICAgIC8vIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBhbiBpbnB1dCBzdHJp
bmcgdGhhdCB3b3VsZCByZXN1bHQgaW4gYSBzaW5nbGUgYW5vbnltb3VzIGZ1bmN0aW9uIGV4cHJl
c3Npb24uCisgICAgYm9keS0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGlu
ZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoYm9keSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBjbG9z
ZWRWYXJpYWJsZSA6IHByb2dyYW0tPmNsb3NlZFZhcmlhYmxlcygpKSB7CisgICAgICAgIGlmIChj
bG9zZWRWYXJpYWJsZSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cy5pbXBsKCkpCisg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgaWYgKGNsb3NlZFZhcmlhYmxlID09
IG1fdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZC5pbXBsKCkpCisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2xvc2VkVmFyaWFibGUtPmlzRW1w
dHlVbmlxdWUoKSk7CisgICAgfQorICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5j
dGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZtX3Zt
LCBzb3VyY2UsIGJvZHksIHRydWUsIFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uKTsKKyAgICBmdW5j
dGlvbkV4ZWN1dGFibGUtPm1fbmFtZVZhbHVlLnNldChtX3ZtLCBmdW5jdGlvbkV4ZWN1dGFibGUs
IGpzU3RyaW5nKCZtX3ZtLCBuYW1lLnN0cmluZygpKSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uRXhl
Y3V0YWJsZTsKK30KKworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBm
dW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0
aW5FeGVjdXRhYmxlczo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK3tcCisgICAgaWYgKCFtXyMjbmFt
ZSMjRXhlY3V0YWJsZSlcCisgICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gY3JlYXRlQnVp
bHRpbkV4ZWN1dGFibGUobV8jI25hbWUjI1NvdXJjZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5mdW5jdGlvbk5hbWUoKSk7XAorICAgIHJldHVybiBtXyMjbmFtZSMjRXhlY3V0
YWJsZS5nZXQoKTtcCit9CitKU0NfRk9SRUFDSF9CVUlMVElOKERFRklORV9CVUlMVElOX0VYRUNV
VEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX1NPVVJDRVMKKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ5YTE5ZTI2MTUwNzk0YTY2OWVjOThlMzk5YmY2N2Y3ZjcxMDY0MTkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVz
LmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgQnVpbHRpbkV4ZWN1dGFibGVzX2gKKyNkZWZpbmUgQnVpbHRpbkV4
ZWN1dGFibGVzX2gKKworI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisjaW5jbHVkZSAiU291cmNl
Q29kZS5oIgorI2luY2x1ZGUgIldlYWsuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7Citj
bGFzcyBJZGVudGlmaWVyOworY2xhc3MgVk07CisKK2NsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlcyB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8QnVpbHRpbkV4ZWN1dGFibGVzPiBjcmVh
dGUoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBCdWlsdGluRXhl
Y3V0YWJsZXModm0pKTsKKyAgICB9CisgICAgCisjZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNV
VEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCitjb25zdCBTb3VyY2VDb2RlJiBuYW1lIyNT
b3VyY2UoKSB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CisgICAgCisgICAgSlNDX0ZPUkVB
Q0hfQlVJTFRJTihFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRlZiBFWFBPU0VfQlVJ
TFRJTl9TT1VSQ0VTCisgICAgCitwcml2YXRlOgorICAgIEJ1aWx0aW5FeGVjdXRhYmxlcyhWTSYp
OworICAgIFZNJiBtX3ZtOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVC
dWlsdGluRXhlY3V0YWJsZShjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYpOwor
I2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1l
LCBsZW5ndGgpXAorICAgIFNvdXJjZUNvZGUgbV8jI25hbWUjI1NvdXJjZTsgXAorICAgIFdlYWs8
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+IG1fIyNuYW1lIyNFeGVjdXRhYmxlOworICAgIEpT
Q19GT1JFQUNIX0JVSUxUSU4oREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVm
IERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworfTsKKworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
ODFhYjZlNzczM2NmNmY0MGZlZDQwMzY0YWRkMzc5YzlhZjBlOTcyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC0wLDAg
KzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEJ1aWx0aW5OYW1lc19oCisjZGVmaW5lIEJ1aWx0aW5OYW1lc19oCisKKyNpbmNsdWRl
ICJDb21tb25JZGVudGlmaWVycy5oIgorI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisKK25hbWVz
cGFjZSBKU0MgeworICAgIAorI2RlZmluZSBJTklUSUFMSVNFX0JVSUxUSU5fTkFNRVMobmFtZSkg
LCBtXyMjbmFtZSh2bSwgI25hbWUpLCBtXyMjbmFtZSMjUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6
ZnJvbShQcml2YXRlTmFtZSgpKSkKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX05BTUVTKG5hbWUp
IGNvbnN0IElkZW50aWZpZXIgbV8jI25hbWU7IGNvbnN0IElkZW50aWZpZXIgbV8jI25hbWUjI1By
aXZhdGVOYW1lOzsKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1Io
bmFtZSkgXAorICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUoKSBjb25zdCB7IHJldHVybiBtXyMj
bmFtZTsgfSBcCisgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSMjUHJpdmF0ZU5hbWUoKSBjb25z
dCB7IHJldHVybiBtXyMjbmFtZSMjUHJpdmF0ZU5hbWU7IH0KKworI2RlZmluZSBJTklUSUFMSVNF
X1BSSVZBVEVfVE9fUFVCTElDX0VOVFJZKG5hbWUpIG1fcHJpdmF0ZVRvUHVibGljTWFwLmFkZCht
XyMjbmFtZSMjUHJpdmF0ZU5hbWUuaW1wbCgpLCAmbV8jI25hbWUpOworI2RlZmluZSBJTklUSUFM
SVNFX1BVQkxJQ19UT19QUklWQVRFX0VOVFJZKG5hbWUpIG1fcHVibGljVG9Qcml2YXRlTWFwLmFk
ZChtXyMjbmFtZS5pbXBsKCksICZtXyMjbmFtZSMjUHJpdmF0ZU5hbWUpOworICAgIAorY2xhc3Mg
QnVpbHRpbk5hbWVzIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCdWlsdGluTmFtZXMpOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICAKK3B1YmxpYzoKKyAgICBCdWlsdGluTmFtZXMo
Vk0qIHZtLCBDb21tb25JZGVudGlmaWVycyogY29tbW9uSWRlbnRpZmllcnMpCisgICAgICAgIDog
bV9lbXB0eUlkZW50aWZpZXIoY29tbW9uSWRlbnRpZmllcnMtPmVtcHR5SWRlbnRpZmllcikKKyAg
ICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJU0VfQlVJTFRJ
Tl9OQU1FUykKKyAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJP
UEVSVFlfTkFNRShJTklUSUFMSVNFX0JVSUxUSU5fTkFNRVMpCisgICAgeworICAgICAgICBKU0Nf
Rk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoSU5JVElBTElTRV9QUklWQVRFX1RPX1BVQkxJ
Q19FTlRSWSkKKyAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJP
UEVSVFlfTkFNRShJTklUSUFMSVNFX1BSSVZBVEVfVE9fUFVCTElDX0VOVFJZKQorICAgICAgICBK
U0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoSU5JVElBTElTRV9QVUJMSUNfVE9fUFJJ
VkFURV9FTlRSWSkKKyAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hf
UFJPUEVSVFlfTkFNRShJTklUSUFMSVNFX1BVQkxJQ19UT19QUklWQVRFX0VOVFJZKQorICAgIH0K
KworICAgIGNvbnN0IElkZW50aWZpZXIqIGdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXIm
KSBjb25zdDsKKyAgICBjb25zdCBJZGVudGlmaWVyJiBnZXRQdWJsaWNOYW1lKGNvbnN0IElkZW50
aWZpZXImKSBjb25zdDsKKyAgICAKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05B
TUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCisgICAgSlNDX0NPTU1PTl9Q
UklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShERUNMQVJFX0JVSUxUSU5fSURF
TlRJRklFUl9BQ0NFU1NPUikKKworcHJpdmF0ZToKKyAgICBJZGVudGlmaWVyIG1fZW1wdHlJZGVu
dGlmaWVyOworICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JV
SUxUSU5fTkFNRVMpCisgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJP
UEVSVFlfTkFNRShERUNMQVJFX0JVSUxUSU5fTkFNRVMpCisgICAgdHlwZWRlZiBIYXNoTWFwPFJl
ZlB0cjxTdHJpbmdJbXBsPiwgY29uc3QgSWRlbnRpZmllciosIElkZW50aWZpZXJSZXBIYXNoPiBC
dWlsdGluTmFtZXNNYXA7CisgICAgQnVpbHRpbk5hbWVzTWFwIG1fcHVibGljVG9Qcml2YXRlTWFw
OworICAgIEJ1aWx0aW5OYW1lc01hcCBtX3ByaXZhdGVUb1B1YmxpY01hcDsKK307CisKKyN1bmRl
ZiBERUNMQVJFX0JVSUxUSU5fTkFNRVMKKyN1bmRlZiBJTklUSUFMSVNFX0JVSUxUSU5fTkFNRVMK
KyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUgorCisKK2lubGluZSBj
b25zdCBJZGVudGlmaWVyKiBCdWlsdGluTmFtZXM6OmdldFByaXZhdGVOYW1lKGNvbnN0IElkZW50
aWZpZXImIGlkZW50KSBjb25zdAoreworICAgIGF1dG8gaXRlciA9IG1fcHVibGljVG9Qcml2YXRl
TWFwLmZpbmQoaWRlbnQuaW1wbCgpKTsKKyAgICBpZiAoaXRlciAhPSBtX3B1YmxpY1RvUHJpdmF0
ZU1hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlOworICAgIHJldHVybiAwOwor
fQorCitpbmxpbmUgY29uc3QgSWRlbnRpZmllciYgQnVpbHRpbk5hbWVzOjpnZXRQdWJsaWNOYW1l
KGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAoreworICAgIGF1dG8gaXRlciA9IG1fcHJp
dmF0ZVRvUHVibGljTWFwLmZpbmQoaWRlbnQuaW1wbCgpKTsKKyAgICBpZiAoaXRlciAhPSBtX3By
aXZhdGVUb1B1YmxpY01hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuICppdGVyLT52YWx1ZTsKKyAg
ICByZXR1cm4gbV9lbXB0eUlkZW50aWZpZXI7Cit9CisKKyAgICAKK30KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGIyZDUyMzQ1
Y2RhZmY4MzI2NTZiYjI3OGYyZWVjZGFhNTBjOGRkMDkuLmM2YmJlZTFlNzFkZmE1Mzg5ZjE5M2E3
MzY0Yzk5NzVjZTJkMGMzZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCkBAIC0xNTk0LDcgKzE1OTQsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhT
Y3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxp
bgogCiAgICAgc2V0Q29uc3RhbnRSZWdpc3RlcnModW5saW5rZWRDb2RlQmxvY2stPmNvbnN0YW50
UmVnaXN0ZXJzKCkpOwogICAgIGlmICh1bmxpbmtlZENvZGVCbG9jay0+dXNlc0dsb2JhbE9iamVj
dCgpKQotICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW3VubGlua2VkQ29kZUJsb2NrLT5nbG9i
YWxPYmplY3RSZWdpc3RlcigpLm9mZnNldCgpXS5zZXQoKm1fdm0sIG93bmVyRXhlY3V0YWJsZSwg
bV9nbG9iYWxPYmplY3QuZ2V0KCkpOworICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW3VubGlu
a2VkQ29kZUJsb2NrLT5nbG9iYWxPYmplY3RSZWdpc3RlcigpLnRvQ29uc3RhbnRJbmRleCgpXS5z
ZXQoKm1fdm0sIG93bmVyRXhlY3V0YWJsZSwgbV9nbG9iYWxPYmplY3QuZ2V0KCkpOwogICAgIG1f
ZnVuY3Rpb25EZWNscy5yZXNpemVUb0ZpdCh1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5j
dGlvbkRlY2xzKCkpOwogICAgIGZvciAoc2l6ZV90IGNvdW50ID0gdW5saW5rZWRDb2RlQmxvY2st
Pm51bWJlck9mRnVuY3Rpb25EZWNscygpLCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSA9IHVubGlu
a2VkQ29kZUJsb2NrLT5mdW5jdGlvbkRlY2woaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCBkODgzNzI3ZjExZjEz
YWM3N2FmZDMzMzA1MDhhYjYxMDE5MzIzYTAxLi5jZGFkNGEyN2IyOGUxZjk5ZDZjMTVjNTJlNTMx
YjAxNzA3ZjU0YTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTQ5LDkgKzQ5LDkgQEAgY29uc3QgQ2xhc3NJbmZv
IFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jazo6c19pbmZvID0geyAiVW5saW5rZWRQcm9ncmFtQ29k
ZUJsb2NrIiwKIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEV2YWxDb2RlQmxvY2s6OnNfaW5mbyA9
IHsgIlVubGlua2VkRXZhbENvZGVCbG9jayIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9N
RVRIT0RfVEFCTEUoVW5saW5rZWRFdmFsQ29kZUJsb2NrKSB9OwogY29uc3QgQ2xhc3NJbmZvIFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OnNfaW5mbyA9IHsgIlVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2siLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2spIH07CiAKLXN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KiBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKFZNJiB2bSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUg
cHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IpCitzdGF0aWMgVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhWTSYgdm0sIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJv
ZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgZnVuY3Rpb25LaW5k
LCBQYXJzZXJFcnJvciYgZXJyb3IpCiB7Ci0gICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGJv
ZHkgPSBwYXJzZTxGdW5jdGlvbkJvZHlOb2RlPigmdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+cGFy
YW1ldGVycygpLCBleGVjdXRhYmxlLT5uYW1lKCksIGV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250
ZXh0KCkgPyBKU1BhcnNlU3RyaWN0IDogSlNQYXJzZU5vcm1hbCwgSlNQYXJzZUZ1bmN0aW9uQ29k
ZSwgZXJyb3IpOworICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBib2R5ID0gcGFyc2U8RnVu
Y3Rpb25Cb2R5Tm9kZT4oJnZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhl
Y3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT50b1N0cmljdG5lc3MoKSwgSlNQYXJzZUZ1bmN0
aW9uQ29kZSwgZXJyb3IpOwogCiAgICAgaWYgKCFib2R5KSB7CiAgICAgICAgIEFTU0VSVChlcnJv
ci5tX3R5cGUgIT0gUGFyc2VyRXJyb3I6OkVycm9yTm9uZSk7CkBAIC02Myw3ICs2Myw3IEBAIHN0
YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2Nr
KFZNJiB2bSwgVW5saW5rZWRGdW5jCiAgICAgYm9keS0+ZmluaXNoUGFyc2luZyhleGVjdXRhYmxl
LT5wYXJhbWV0ZXJzKCksIGV4ZWN1dGFibGUtPm5hbWUoKSwgZXhlY3V0YWJsZS0+ZnVuY3Rpb25N
b2RlKCkpOwogICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGJvZHktPmZlYXR1cmVzKCksIGJv
ZHktPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpOwogICAgIAotICAgIFVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2sqIHJlc3VsdCA9IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmdm0s
IEZ1bmN0aW9uQ29kZSwgRXhlY3V0YWJsZUluZm8oYm9keS0+bmVlZHNBY3RpdmF0aW9uKCksIGJv
ZHktPnVzZXNFdmFsKCksIGJvZHktPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25z
dHJ1Y3QpKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUoJnZtLCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFibGVJ
bmZvKGJvZHktPm5lZWRzQWN0aXZhdGlvbigpLCBib2R5LT51c2VzRXZhbCgpLCBib2R5LT5pc1N0
cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5s
aW5rZWRCdWlsdGluRnVuY3Rpb24pKTsKICAgICBPd25QdHI8Qnl0ZWNvZGVHZW5lcmF0b3I+IGdl
bmVyYXRvcihhZG9wdFB0cihuZXcgQnl0ZWNvZGVHZW5lcmF0b3Iodm0sIGJvZHkuZ2V0KCksIHJl
c3VsdCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0
b3ItPmdlbmVyYXRlKCk7CiAgICAgYm9keS0+ZGVzdHJveURhdGEoKTsKQEAgLTgyLDEzICs4Miwx
NCBAQCB1bnNpZ25lZCBVbmxpbmtlZENvZGVCbG9jazo6YWRkT3JGaW5kQ29uc3RhbnQoSlNWYWx1
ZSB2KQogICAgIHJldHVybiBhZGRDb25zdGFudCh2KTsKIH0KIAotVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSogbm9k
ZSwgYm9vbCBpc0Zyb21HbG9iYWxDb2RlKQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSogbm9kZSwgYm9vbCBpc0Zy
b21HbG9iYWxDb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kKQogICAgIDogQmFzZSgqdm0s
IHN0cnVjdHVyZSkKICAgICAsIG1fbnVtQ2FwdHVyZWRWYXJpYWJsZXMobm9kZS0+Y2FwdHVyZWRW
YXJpYWJsZUNvdW50KCkpCiAgICAgLCBtX2ZvcmNlVXNlc0FyZ3VtZW50cyhub2RlLT51c2VzQXJn
dW1lbnRzKCkpCiAgICAgLCBtX2lzSW5TdHJpY3RDb250ZXh0KG5vZGUtPmlzU3RyaWN0TW9kZSgp
KQogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhub2RlLT5oYXNDYXB0dXJlZFZhcmlhYmxl
cygpKQogICAgICwgbV9pc0Zyb21HbG9iYWxDb2RlKGlzRnJvbUdsb2JhbENvZGUpCisgICAgLCBt
X2lzQnVpbHRpbkZ1bmN0aW9uKGtpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24pCiAgICAg
LCBtX25hbWUobm9kZS0+aWRlbnQoKSkKICAgICAsIG1faW5mZXJyZWROYW1lKG5vZGUtPmluZmVy
cmVkTmFtZSgpKQogICAgICwgbV9wYXJhbWV0ZXJzKG5vZGUtPnBhcmFtZXRlcnMoKSkKQEAgLTE2
Niw3ICsxNjcsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6Y29kZUJsb2NrRm9yKFZNJiB2bSwgY29ucwogICAgICAgICBicmVhazsKICAg
ICB9CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBnZW5lcmF0ZUZ1
bmN0aW9uQ29kZUJsb2NrKHZtLCB0aGlzLCBzb3VyY2UsIHNwZWNpYWxpemF0aW9uS2luZCwgZGVi
dWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGVycm9yKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrKiByZXN1bHQgPSBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKHZtLCB0aGlzLCBzb3Vy
Y2UsIHNwZWNpYWxpemF0aW9uS2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGlzQnVp
bHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFs
RnVuY3Rpb24sIGVycm9yKTsKICAgICAKICAgICBpZiAoZXJyb3IubV90eXBlICE9IFBhcnNlckVy
cm9yOjpFcnJvck5vbmUpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjEwLDYgKzIxMSw3IEBAIFVu
bGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBDb2RlVHlwZSBjb2RlCiAgICAgLCBtX2lzU3RyaWN0TW9kZShpbmZvLm1faXNTdHJp
Y3RNb2RlKQogICAgICwgbV9pc0NvbnN0cnVjdG9yKGluZm8ubV9pc0NvbnN0cnVjdG9yKQogICAg
ICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhmYWxzZSkKKyAgICAsIG1faXNCdWlsdGluRnVuY3Rp
b24oaW5mby5tX2lzQnVpbHRpbkZ1bmN0aW9uKQogICAgICwgbV9maXJzdExpbmUoMCkKICAgICAs
IG1fbGluZUNvdW50KDApCiAgICAgLCBtX2VuZENvbHVtbihVSU5UX01BWCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggYjEx
YWIwZWExODVmYTIzODk3OTRiNjdmZTMxYmQwNWEyZGFkMThkMy4uMDMwOGIxNjhkYThlZTUyYzA2
MGRiZDY4ODNlODQwNzZhYmI1M2Y0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTY2LDI2ICs2NiwzNSBAQCB0eXBlZGVm
IHVuc2lnbmVkIFVubGlua2VkT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7CiB0eXBlZGVmIHVuc2ln
bmVkIFVubGlua2VkTExJbnRDYWxsTGlua0luZm87CiAKIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7
Ci0gICAgRXhlY3V0YWJsZUluZm8oYm9vbCBuZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2YWws
IGJvb2wgaXNTdHJpY3RNb2RlLCBib29sIGlzQ29uc3RydWN0b3IpCisgICAgRXhlY3V0YWJsZUlu
Zm8oYm9vbCBuZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJpY3RNb2Rl
LCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24pCiAgICAgICAgIDog
bV9uZWVkc0FjdGl2YXRpb24obmVlZHNBY3RpdmF0aW9uKQogICAgICAgICAsIG1fdXNlc0V2YWwo
dXNlc0V2YWwpCiAgICAgICAgICwgbV9pc1N0cmljdE1vZGUoaXNTdHJpY3RNb2RlKQogICAgICAg
ICAsIG1faXNDb25zdHJ1Y3Rvcihpc0NvbnN0cnVjdG9yKQorICAgICAgICAsIG1faXNCdWlsdGlu
RnVuY3Rpb24oaXNCdWlsdGluRnVuY3Rpb24pCiAgICAgewogICAgIH0KLSAgICBib29sIG1fbmVl
ZHNBY3RpdmF0aW9uOwotICAgIGJvb2wgbV91c2VzRXZhbDsKLSAgICBib29sIG1faXNTdHJpY3RN
b2RlOwotICAgIGJvb2wgbV9pc0NvbnN0cnVjdG9yOworICAgIGJvb2wgbV9uZWVkc0FjdGl2YXRp
b24gOiAxOworICAgIGJvb2wgbV91c2VzRXZhbCA6IDE7CisgICAgYm9vbCBtX2lzU3RyaWN0TW9k
ZSA6IDE7CisgICAgYm9vbCBtX2lzQ29uc3RydWN0b3IgOiAxOworICAgIGJvb2wgbV9pc0J1aWx0
aW5GdW5jdGlvbiA6IDE7Cit9OworCitlbnVtIFVubGlua2VkRnVuY3Rpb25LaW5kIHsKKyAgICBV
bmxpbmtlZE5vcm1hbEZ1bmN0aW9uLAorICAgIFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLAogfTsK
IAogY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgOiBwdWJsaWMgSlNDZWxsIHsKIHB1
YmxpYzoKKyAgICBmcmllbmQgY2xhc3MgQnVpbHRpbkV4ZWN1dGFibGVzOwogICAgIGZyaWVuZCBj
bGFzcyBDb2RlQ2FjaGU7CisgICAgZnJpZW5kIGNsYXNzIFZNOwogICAgIHR5cGVkZWYgSlNDZWxs
IEJhc2U7Ci0gICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0q
IHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJv
b2wgaXNGcm9tR2xvYmFsQ29kZSA9IGZhbHNlKQorICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogY3JlYXRlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5j
dGlvbkJvZHlOb2RlKiBub2RlLCBib29sIGlzRnJvbUdsb2JhbENvZGUsIFVubGlua2VkRnVuY3Rp
b25LaW5kIHVubGlua2VkRnVuY3Rpb25LaW5kKQogICAgIHsKLSAgICAgICAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLT5oZWFwKSkgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUodm0sIHZtLT51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwg
c291cmNlLCBub2RlLCBpc0Zyb21HbG9iYWxDb2RlKTsKKyAgICAgICAgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLT5oZWFwKSkgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUodm0sIHZtLT51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgc291
cmNlLCBub2RlLCBpc0Zyb21HbG9iYWxDb2RlLCB1bmxpbmtlZEZ1bmN0aW9uS2luZCk7CiAgICAg
ICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbigqdm0pOwogICAgICAgICByZXR1cm4gaW5zdGFu
Y2U7CiAgICAgfQpAQCAtMTAwLDYgKzEwOSwxNCBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IHBhcmFt
ZXRlckNvdW50KCkgY29uc3Q7CiAgICAgYm9vbCBpc0luU3RyaWN0Q29udGV4dCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNJblN0cmljdENvbnRleHQ7IH0KICAgICBGdW5jdGlvbk1vZGUgZnVuY3Rpb25N
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbk1vZGU7IH0KKyAgICBKU1BhcnNlclN0cmlj
dG5lc3MgdG9TdHJpY3RuZXNzKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2lzQnVpbHRp
bkZ1bmN0aW9uKQorICAgICAgICAgICAgcmV0dXJuIEpTUGFyc2VCdWlsdGluOworICAgICAgICBp
ZiAobV9pc0luU3RyaWN0Q29udGV4dCkKKyAgICAgICAgICAgIHJldHVybiBKU1BhcnNlU3RyaWN0
OworICAgICAgICByZXR1cm4gSlNQYXJzZU5vcm1hbDsKKyAgICB9CiAKICAgICB1bnNpZ25lZCBm
aXJzdExpbmVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0TGluZU9mZnNldDsgfQogICAg
IHVuc2lnbmVkIGxpbmVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUNvdW50OyB9CkBAIC0x
NDIsOCArMTU5LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJbW1vcnRh
bFN0cnVjdHVyZSA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAor
ICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1
bmN0aW9uOyB9CisKIHByaXZhdGU6Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0q
LCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGJvb2wg
aXNGcm9tR2xvYmFsQ29kZSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBT
dHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGJvb2wgaXNG
cm9tR2xvYmFsQ29kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQpOwogICAgIFdyaXRlQmFycmllcjxV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX2NvZGVCbG9ja0ZvckNhbGw7CiAgICAgV3JpdGVC
YXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fY29kZUJsb2NrRm9yQ29uc3RydWN0
OwogCkBAIC0xNTIsNiArMTcxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNJblN0cmljdENv
bnRleHQgOiAxOwogICAgIGJvb2wgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgYm9v
bCBtX2lzRnJvbUdsb2JhbENvZGUgOiAxOworICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlvbiA6
IDE7CiAKICAgICBJZGVudGlmaWVyIG1fbmFtZTsKICAgICBJZGVudGlmaWVyIG1faW5mZXJyZWRO
YW1lOwpAQCAtMzE4LDYgKzMzOCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzTnVtZXJpY0Nv
bXBhcmVGdW5jdGlvbihib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbikgeyBtX2lzTnVtZXJp
Y0NvbXBhcmVGdW5jdGlvbiA9IGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQogICAgIGJvb2wg
aXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc051bWVyaWNDb21w
YXJlRnVuY3Rpb247IH0KIAorICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CisgICAgCiAgICAgdm9pZCBzaHJpbmtUb0ZpdCgp
CiAgICAgewogICAgICAgICBtX2p1bXBUYXJnZXRzLnNocmlua1RvRml0KCk7CkBAIC01MDAsNiAr
NTIyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNTdHJpY3RNb2RlIDogMTsKICAgICBib29s
IG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAgYm9vbCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIDog
MTsKKyAgICBib29sIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1fZmly
c3RMaW5lOwogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50OwogICAgIHVuc2lnbmVkIG1fZW5kQ29s
dW1uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCAwOTFmZDAwOGM3YTFiYTc2YmQyMDNmODgzNzI1OGNj
NThmNTE1ODUzLi5hMGYzNmM0M2Q1YzgxZTU3ZDg3ZWQwNzVjNzgzYjk0OTFlOTliODYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcApAQCAtMTgyLDYgKzE4Miw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRl
Y29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQ
CiAjZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAgICAgLCBtX2V4cHJlc3Np
b25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihmYWxzZSkKIHsKICAg
ICBtX2NvZGVCbG9jay0+c2V0TnVtUGFyYW1ldGVycygxKTsgLy8gQWxsb2NhdGUgc3BhY2UgZm9y
ICJ0aGlzIgogCkBAIC0yMjUsNyArMjI2LDEzIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9uQm9keSwgVW5sCiAj
ZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAgICAgLCBtX2V4cHJlc3Npb25U
b29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihjb2RlQmxvY2stPmlzQnVp
bHRpbkZ1bmN0aW9uKCkpCiB7CisgICAgaWYgKG1faXNCdWlsdGluRnVuY3Rpb24pIHsKKyAgICAg
ICAgbV9zaG91bGRFbWl0UHJvZmlsZUhvb2tzID0gZmFsc2U7CisgICAgICAgIG1fc2hvdWxkRW1p
dERlYnVnSG9va3MgPSBmYWxzZTsKKyAgICB9CisKICAgICBtX3N5bWJvbFRhYmxlLT5zZXRVc2Vz
Tm9uU3RyaWN0RXZhbChjb2RlQmxvY2stPnVzZXNFdmFsKCkgJiYgIWNvZGVCbG9jay0+aXNTdHJp
Y3RNb2RlKCkpOwogICAgIFZlY3RvcjxJZGVudGlmaWVyPiBib3VuZFBhcmFtZXRlclByb3BlcnRp
ZXM7CiAgICAgRnVuY3Rpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzID0gKmZ1bmN0aW9uQm9keS0+
cGFyYW1ldGVycygpOwpAQCAtNDMzLDYgKzQ0MCw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRl
Y29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBldmFsTm9kZSwgVW5saW5rZWRFdmFsQ29k
CiAjZW5kaWYKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAgICAgLCBtX2V4cHJlc3Np
b25Ub29EZWVwKGZhbHNlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihmYWxzZSkKIHsKICAg
ICBtX3N5bWJvbFRhYmxlLT5zZXRVc2VzTm9uU3RyaWN0RXZhbChjb2RlQmxvY2stPnVzZXNFdmFs
KCkgJiYgIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOwogICAgIG1fY29kZUJsb2NrLT5zZXRO
dW1QYXJhbWV0ZXJzKDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGQ2MWJmZmMyYzIyNTRjNGIzNjE1MGFj
YjQwMzM1MDM0Y2I3NWI2NmMuLmUxZTU0NTliM2IyMTc3NGEzNTdmMWY3OGRhYjc0N2QyZGFhMjJk
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ2Miw3ICs0NjIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgYm9vbCBzaG91bGRFbWl0RGVidWdIb29rcygpIHsgcmV0dXJuIG1fc2hvdWxkRW1pdERl
YnVnSG9va3M7IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpOyB9Ci0KKyAgICAgICAgCisgICAg
ICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1
bmN0aW9uOyB9CisgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBM
YWJlbDsKICAgICAgICAgCkBAIC01NDQsNyArNTQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIAogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbWFrZUZ1bmN0aW9uKEZ1
bmN0aW9uQm9keU5vZGUqIGJvZHkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2Uo
KSwgYm9keSk7CisgICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIGJvZHksIGZhbHNlLCBpc0J1aWx0
aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1
bmN0aW9uKTsKICAgICAgICAgfQogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbml0TGF6eVJl
Z2lzdGVyKFJlZ2lzdGVySUQqKTsKQEAgLTY3OCw2ICs2ODAsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICBib29sIG1fdXNlc0V4Y2VwdGlvbnM7CiAgICAgICAgIGJvb2wgbV9leHByZXNz
aW9uVG9vRGVlcDsKKyAgICAgICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9uOwogICAgIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcAppbmRleCBjMmNlMmFhNzg2NDQ2YjMwODdiODcxOWE2MjBkZmM4ZmYyYzY0ODJiLi44
YjdhZDExYWM0ZjllNDQ2Yjk4NGVhOTU3YTlhMGRjZGQ0NTdmNGZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC01MzUs
MzYgKzUzNSwzOSBAQCBSZWdpc3RlcklEKiBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgUmVmUHRyPExhYmVsPiBl
bmQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9
IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lv
bkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Npb25TdGFydCgpLCBzdWJleHBy
ZXNzaW9uRW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbiA9IGdlbmVyYXRv
ci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCks
IG1faWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbiA9IGdlbmVyYXRvci5l
bWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIGdl
bmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuY2FsbCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJl
dHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBmdW5jdGlvbi5nZXQo
KSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkNhbGwoZnVuY3Rpb24uZ2V0
KCksIHJlYWxDYWxsLmdldCgpKTsKKyAgICBib29sIGVtaXRDYWxsQ2hlY2sgPSAhZ2VuZXJhdG9y
LmlzQnVpbHRpbkZ1bmN0aW9uKCk7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2spCisgICAgICAgIGdl
bmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKGZ1bmN0aW9uLmdldCgpLCByZWFsQ2Fs
bC5nZXQoKSk7CisKICAgICB7CiAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9h
cmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpIHsKICAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUq
IG9sZExpc3QgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CiAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlz
dE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKLQorICAgICAgICAgICAgCiAgICAg
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRN
b3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAg
ICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCks
IG9sZExpc3QtPm1fZXhwcik7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJu
VmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxs
QXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7Ci0KICAgICAgICAgICAgIG1fYXJncy0+
bV9saXN0Tm9kZSA9IG9sZExpc3Q7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRv
ci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICBDYWxsQXJn
dW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVk
KCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBy
ZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0SnVtcChlbmQuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0
TGFiZWwocmVhbENhbGwuZ2V0KCkpOwotICAgIHsKLSAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxs
QXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3Zl
KGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwotICAgICAgICBnZW5l
cmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVj
dGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RF
bmQoKSk7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRK
dW1wKGVuZC5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0
KCkpOworICAgICAgICB7CisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMo
Z2VuZXJhdG9yLCBtX2FyZ3MpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxB
cmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3Rl
ZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOworICAgICAgICB9CisgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsK
ICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0KCkpOwogICAgIHJldHVybiBy
ZXR1cm5WYWx1ZS5nZXQoKTsKIH0KIApAQCAtNTg1LDY1ICs1ODgsNjcgQEAgUmVnaXN0ZXJJRCog
QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwKICAgICBSZWZQdHI8TGFiZWw+IGVuZCA9IGdlbmVyYXRvci5uZXdMYWJlbCgp
OwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYmFz
ZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3Qo
KSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0gICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50
ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CisgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IGZ1bmN0aW9uOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9
IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuY3Rpb24uZ2V0KCkpOwotICAgIGdl
bmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25BcHBseShmdW5jdGlvbi5nZXQoKSwgcmVhbENh
bGwuZ2V0KCkpOwotICAgIHsKLSAgICAgICAgaWYgKG1heUJlQ2FsbCkgewotICAgICAgICAgICAg
aWYgKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcikgewot
ICAgICAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIG9sZExpc3QgPSBtX2FyZ3MtPm1fbGlz
dE5vZGU7Ci0gICAgICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KSB7
Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+
bV9leHByLT5pc1NpbXBsZUFycmF5KCkpOwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIW1f
YXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX25leHQpOwotICAgICAgICAgICAgICAgICAgICBt
X2FyZ3MtPm1fbGlzdE5vZGUgPSBzdGF0aWNfY2FzdDxBcnJheU5vZGUqPihtX2FyZ3MtPm1fbGlz
dE5vZGUtPm1fbmV4dC0+bV9leHByKS0+dG9Bcmd1bWVudExpc3QoZ2VuZXJhdG9yLnZtKCksIDAs
IDApOwotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9u
ID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFz
ZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50
cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwotICAg
ICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJl
YWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZv
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG1fYXJncy0+bV9saXN0
Tm9kZS0+bV9uZXh0OwotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVh
bEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24o
ZHN0KSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2Fs
bEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAgICAgICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4
cHIpOwotICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUu
Z2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1l
bnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBvbGRMaXN0OworICAgIGJv
b2wgZW1pdENhbGxDaGVjayA9ICFnZW5lcmF0b3IuaXNCdWlsdGluRnVuY3Rpb24oKTsKKyAgICBp
ZiAoZW1pdENhbGxDaGVjaykgeworICAgICAgICBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0
QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIGdlbmVyYXRv
ci5wcm9wZXJ0eU5hbWVzKCkuYXBwbHkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5v
dEZ1bmN0aW9uQXBwbHkoZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKKyAgICB9Cisg
ICAgaWYgKG1heUJlQ2FsbCkgeworICAgICAgICBpZiAobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1f
YXJncy0+bV9saXN0Tm9kZS0+bV9leHByKSB7CisgICAgICAgICAgICBBcmd1bWVudExpc3ROb2Rl
KiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgICAgICAgICAgaWYgKG1fYXJncy0+
bV9saXN0Tm9kZS0+bV9uZXh0KSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9s
aXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHItPmlzU2ltcGxlQXJyYXkoKSk7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9uZXh0KTsKKyAgICAgICAg
ICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBzdGF0aWNfY2FzdDxBcnJheU5vZGUqPihtX2Fy
Z3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByKS0+dG9Bcmd1bWVudExpc3QoZ2VuZXJhdG9y
LnZtKCksIDAsIDApOworICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVu
Y3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3Qp
LCBiYXNlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVu
dHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9k
ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOworICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0
aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRp
dm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0Owog
ICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0
b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsK
ICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBt
X2FyZ3MpOwotICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRz
LnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHBy
KTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCks
IHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBk
aXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgfQorICAgICAg
ICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gb2xkTGlzdDsKICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2Rl
LT5tX25leHQpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb2ZpbGVIb29rUmVn
aXN0ZXI7Ci0gICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLnNob3VsZEVtaXRQcm9maWxlSG9va3Mo
KSkKLSAgICAgICAgICAgICAgICBwcm9maWxlSG9va1JlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpOwogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9
IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2Uu
Z2V0KCkpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNSZWdpc3RlciA9IGdl
bmVyYXRvci5lbWl0Tm9kZShtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcik7Ci0gICAgICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gYXJnc1JlZ2lzdGVyOwotICAgICAgICAgICAgQXJndW1lbnRM
aXN0Tm9kZSogYXJncyA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwotICAgICAgICAgICAg
aWYgKGFyZ3MtPm1fZXhwci0+aXNSZXNvbHZlTm9kZSgpICYmIGdlbmVyYXRvci53aWxsUmVzb2x2
ZVRvQXJndW1lbnRzKHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oYXJncy0+bV9leHByKS0+aWRl
bnRpZmllcigpKSkKLSAgICAgICAgICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IudW5j
aGVja2VkUmVnaXN0ZXJGb3JBcmd1bWVudHMoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsK
LQotICAgICAgICAgICAgLy8gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5IGlnbm9yZXMgZXh0cmEg
YXJndW1lbnRzLCBidXQgd2Ugc3RpbGwKLSAgICAgICAgICAgIC8vIG5lZWQgdG8gZXZhbHVhdGUg
dGhlbSBmb3Igc2lkZSBlZmZlY3RzLgotICAgICAgICAgICAgd2hpbGUgKChhcmdzID0gYXJncy0+
bV9uZXh0KSkKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHBy
KTsKLQotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsVmFyYXJncyhyZXR1cm5WYWx1ZS5n
ZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCB0aGlzUmVnaXN0ZXIuZ2V0KCksIGFyZ3NSZWdpc3Rl
ci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm9maWxlSG9va1JlZ2lzdGVyLmdl
dCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICAgICAgQ2Fs
bEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVm
aW5lZCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQo
KSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMs
IGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIH0KLSAgICAgICAg
Z2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNT
RVJUKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCk7Cisg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9maWxlSG9va1JlZ2lzdGVyOworICAgICAgICBp
ZiAoZ2VuZXJhdG9yLnNob3VsZEVtaXRQcm9maWxlSG9va3MoKSkKKyAgICAgICAgICAgIHByb2Zp
bGVIb29rUmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9y
LnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHRoaXNSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2FyZ3MtPm1fbGlzdE5v
ZGUtPm1fZXhwcik7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhcmdzUmVnaXN0ZXI7Cisg
ICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4
dDsKKyAgICAgICAgaWYgKGFyZ3MtPm1fZXhwci0+aXNSZXNvbHZlTm9kZSgpICYmIGdlbmVyYXRv
ci53aWxsUmVzb2x2ZVRvQXJndW1lbnRzKHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oYXJncy0+
bV9leHByKS0+aWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIGFyZ3NSZWdpc3RlciA9IGdlbmVy
YXRvci51bmNoZWNrZWRSZWdpc3RlckZvckFyZ3VtZW50cygpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsK
KworICAgICAgICAvLyBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkgaWdub3JlcyBleHRyYSBhcmd1
bWVudHMsIGJ1dCB3ZSBzdGlsbAorICAgICAgICAvLyBuZWVkIHRvIGV2YWx1YXRlIHRoZW0gZm9y
IHNpZGUgZWZmZWN0cy4KKyAgICAgICAgd2hpbGUgKChhcmdzID0gYXJncy0+bV9uZXh0KSkKKyAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShhcmdzLT5tX2V4cHIpOworCisgICAgICAgIGdl
bmVyYXRvci5lbWl0Q2FsbFZhcmFyZ3MocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5n
ZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBhcmdzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKSwgcHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChyZWFs
Q2FsbC5nZXQoKSk7Ci0gICAgeworICAgIGlmIChlbWl0Q2FsbENoZWNrKSB7CisgICAgICAgIGdl
bmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVs
KHJlYWxDYWxsLmdldCgpKTsKICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdl
bmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVu
dHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdENh
bGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24s
IGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAg
ICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9y
LmVtaXRMYWJlbChlbmQuZ2V0KCkpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZS5nZXQoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlCmluZGV4IDM5Nzk3NmIwNmM3
YTliNTgzNjMzMjkwMGE2ZWJiOTNlYzY4Yjc0ODYuLmYwZjZhOTBmYWQxNGI0MGUzZGNjYmE0OTkz
MWZjNDNkNjI3YmI5NWYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVf
aGFzaF90YWJsZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUK
QEAgLTI0OCw3ICsyNDgsOSBAQCBzdWIgb3V0cHV0KCkgewogICAgIG15ICRuYW1lRW50cmllcyA9
ICIke25hbWV9VmFsdWVzIjsKICAgICAkbmFtZUVudHJpZXMgPX4gcy86L18vZzsKIAorICAgIHBy
aW50ICJcbiNpbmNsdWRlIFwiSlNDQnVpbHRpbnMuaFwiXG4iOwogICAgIHByaW50ICJcbiNpbmNs
dWRlIFwiTG9va3VwLmhcIlxuIiBpZiAoJGluY2x1ZGVsb29rdXApOworCiAgICAgaWYgKCR1c2VO
YW1lU3BhY2UpIHsKICAgICAgICAgcHJpbnQgIlxubmFtZXNwYWNlICR7dXNlTmFtZVNwYWNlfSB7
XG4iOwogICAgICAgICBwcmludCAiXG51c2luZyBuYW1lc3BhY2UgSlNDO1xuIjsKQEAgLTI4OSw3
ICsyOTEsMTcgQEAgc3ViIG91dHB1dCgpIHsKICAgICAgICAgICAgICRpbnRyaW5zaWMgPSAiUmVn
RXhwVGVzdEludHJpbnNpYyIgaWYgKCRrZXkgZXEgInRlc3QiKTsKICAgICAgICAgfQogCisgICAg
ICAgIGlmICgkdmFsdWVzWyRpXXsidHlwZSJ9IGVxICJGdW5jdGlvbiIpICB7CisgICAgICAgICAg
ICBteSAkdGFibGVIZWFkID0gJG5hbWU7CisgICAgICAgICAgICAkdGFibGVIZWFkID1+IHMvVGFi
bGUkLy87CisgICAgICAgICAgICBwcmludCAiICNpZiBKU0NfQlVJTFRJTl9FWElTVFMoIiAuIHVj
KCR0YWJsZUhlYWQgLiAka2V5KSAuIilcbiI7CisgICAgICAgICAgICBwcmludCAiICAgeyBcIiRr
ZXlcIiwgKCgkYXR0cnNbJGldKSAmIH5GdW5jdGlvbikgfCBCdWlsdGluLCAkaW50cmluc2ljLCAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8QnVpbHRpbkdlbmVyYXRvcj4oIiAuICR0YWJsZUhlYWQgLiB1
Y2ZpcnN0KCRrZXkpIC4gIkNvZGVHZW5lcmF0b3IpLCAoaW50cHRyX3QpJHNlY29uZFZhbHVlIH0s
XG4iOworICAgICAgICAgICAgcHJpbnQgIiAjZWxzZVxuIgorICAgICAgICB9CiAgICAgICAgIHBy
aW50ICIgICB7IFwiJGtleVwiLCAkYXR0cnNbJGldLCAkaW50cmluc2ljLCAoaW50cHRyX3QpIiAu
ICRmaXJzdENhc3RTdHIgLiAiKCRmaXJzdFZhbHVlKSwgKGludHB0cl90KSIgLiAkc2Vjb25kQ2Fz
dFN0ciAuICIoJHNlY29uZFZhbHVlKSB9LFxuIjsKKyAgICAgICAgaWYgKCR2YWx1ZXNbJGldeyJ0
eXBlIn0gZXEgIkZ1bmN0aW9uIikgIHsKKyAgICAgICAgICAgIHByaW50ICIgI2VuZGlmXG4iCisg
ICAgICAgIH0KICAgICAgICAgJGkrKzsKICAgICB9CiAgICAgcHJpbnQgIiAgIHsgMCwgMCwgTm9J
bnRyaW5zaWMsIDAsIDAgfVxuIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9n
ZW5lcmF0ZS1qcy1idWlsdGlucyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1qcy1i
dWlsdGlucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42MTNhMjA3YjEzM2I4NDc1N2ZlZTcxMjlhNTA4MWJhZDYwY2Qx
YzA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWpz
LWJ1aWx0aW5zCkBAIC0wLDAgKzEsMzA0IEBACisjIS91c3IvYmluL3B5dGhvbgorIyBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisjIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorIyBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorIyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisjIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworaW1wb3J0IGZpbGVjbXAKK2ltcG9ydCBmbm1hdGNoCitpbXBvcnQgb3MKK2ltcG9ydCBy
ZQoraW1wb3J0IHNodXRpbAoraW1wb3J0IHN5cworaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQganNv
bgorCitjb3B5cmlnaHRUZXh0ID0gIiIiICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi9cbgorIiIiCisKK2dlbmVyYXRvclN0cmluZyA9ICIvKiBHZW5lcmF0ZWQgYnkgJXMg
ZG8gbm90IGhhbmQgZWRpdC4gKi9cbiIgJSBvcy5wYXRoLmJhc2VuYW1lKF9fZmlsZV9fKQorCitm
dW5jdGlvbkhlYWRSZWdFeHAgPSByZS5jb21waWxlKHIiZnVuY3Rpb25ccytcdytccypcKC4qP1wp
IiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK2Z1bmN0aW9uTmFtZVJlZ0V4cCA9IHJlLmNvbXBpbGUo
ciJmdW5jdGlvblxzKyhcdyspXHMqXCgiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorZnVuY3Rpb25Q
YXJhbWV0ZXJGaW5kZXIgPSByZS5jb21waWxlKHIiXmZ1bmN0aW9uXHMrKD86XHcrKVxzKlwoKCg/
OlxzKlx3Kyk/XHMqKD86XHMqLFxzKlx3KykqKT9cKSIsIHJlLk1VTFRJTElORSB8IHJlLlMpCisK
K211bHRpbGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cKi4qP1wqXC8iLCByZS5N
VUxUSUxJTkUgfCByZS5TKQorc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIi
XC9cLy4qP1xuIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKKworZGVmIGdldENvcHlyaWdodChzb3Vy
Y2UpOgorICAgIGNvcHlyaWdodEJsb2NrID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5maW5kYWxs
KHNvdXJjZSlbMF0KKyAgICBjb3B5cmlnaHRCbG9jayA9IGNvcHlyaWdodEJsb2NrWzpjb3B5cmln
aHRCbG9jay5pbmRleCgiUmVkaXN0cmlidXRpb24iKV0KKyAgICBjb3B5UmlnaHRMaW5lcyA9IFtd
CisKKyAgICBmb3IgbGluZSBpbiBjb3B5cmlnaHRCbG9jay5zcGxpdCgiXG4iKToKKyAgICAgICAg
bGluZSA9IGxpbmUucmVwbGFjZSgiLyoiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFj
ZSgiKi8iLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKiIsICIiKQorICAgICAg
ICBsaW5lID0gbGluZS5yZXBsYWNlKCJDb3B5cmlnaHQiLCAiIikKKyAgICAgICAgbGluZSA9IGxp
bmUucmVwbGFjZSgiY29weXJpZ2h0IiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2Uo
IihDKSIsICIiKQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIoYykiLCAiIikKKyAgICAg
ICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgICAgICBpZiBsZW4obGluZSkgPT0gMDoKKyAgICAg
ICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgY29weVJpZ2h0TGluZXMuYXBwZW5kKGxpbmUpCisg
ICAgCisgICAgcmV0dXJuIGxpc3Qoc2V0KGNvcHlSaWdodExpbmVzKSkKKworCisKK2RlZiBnZXRG
dW5jdGlvbnMoc291cmNlKToKKworICAgIHNvdXJjZSA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAu
c3ViKCIvKiovIiwgc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAuc3ViKCIvL1xuIiwgc291cmNlKSkK
KworICAgIG1hdGNoZXMgPSBbIGYgZm9yIGYgaW4gZnVuY3Rpb25IZWFkUmVnRXhwLmZpbmRpdGVy
KHNvdXJjZSldCisgICAgZnVuY3Rpb25Cb3VuZHMgPSBbXQorICAgIHN0YXJ0ID0gMAorICAgIGVu
ZCA9IDAKKyAgICBmb3IgbWF0Y2ggaW4gbWF0Y2hlczoKKyAgICAgICAgc3RhcnQgPSBtYXRjaC5z
dGFydCgpCisgICAgICAgIGlmIHN0YXJ0IDwgZW5kOgorICAgICAgICAgICAgY29udGludWUKKyAg
ICAgICAgZW5kID0gbWF0Y2guZW5kKCkKKyAgICAgICAgd2hpbGUgc291cmNlW2VuZF0gIT0gJ3sn
OgorICAgICAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICBkZXB0aCA9IDEKKyAgICAgICAg
ZW5kID0gZW5kICsgMQorICAgICAgICB3aGlsZSBkZXB0aCA+IDA6CisgICAgICAgICAgICBpZiBz
b3VyY2VbZW5kXSA9PSAneyc6CisgICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCArIDEKKyAg
ICAgICAgICAgIGVsaWYgc291cmNlW2VuZF0gPT0gJ30nOgorICAgICAgICAgICAgICAgIGRlcHRo
ID0gZGVwdGggLSAxCisgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgIGZ1bmN0aW9u
Qm91bmRzLmFwcGVuZCgoc3RhcnQsIGVuZCkpCisKKyAgICBmdW5jdGlvbnMgPSBbc291cmNlW3N0
YXJ0OmVuZF0uc3RyaXAoKSBmb3IgKHN0YXJ0LCBlbmQpIGluIGZ1bmN0aW9uQm91bmRzXQorICAg
IHJlc3VsdCA9IFtdCisgICAgZm9yIGZ1bmN0aW9uIGluIGZ1bmN0aW9uczoKKyAgICAgICAgZnVu
Y3Rpb24gPSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLnN1YigiIiwgZnVuY3Rpb24pCisgICAgICAg
IGZ1bmN0aW9uTmFtZSA9IGZ1bmN0aW9uTmFtZVJlZ0V4cC5maW5kYWxsKGZ1bmN0aW9uKVswXQor
ICAgICAgICBmdW5jdGlvblBhcmFtZXRlcnMgPSBmdW5jdGlvblBhcmFtZXRlckZpbmRlci5maW5k
YWxsKGZ1bmN0aW9uKVswXS5zcGxpdCgnLCcpCisgICAgICAgIGlmIGxlbihmdW5jdGlvblBhcmFt
ZXRlcnNbMF0pID09IDA6CisgICAgICAgICAgICBmdW5jdGlvblBhcmFtZXRlcnMgPSBbXQorICAg
ICAgICAgICAgCisgICAgICAgIHJlc3VsdC5hcHBlbmQoKGZ1bmN0aW9uTmFtZSwgZnVuY3Rpb24s
IGZ1bmN0aW9uUGFyYW1ldGVycykpCisgICAgcmV0dXJuIHJlc3VsdAorICAgICAgICAKKworZGVm
IGdlbmVyYXRlQ29kZShzb3VyY2UpOgorICAgIGlucHV0RmlsZSA9IG9wZW4oc291cmNlLCAiciIp
CisgICAgYmFzZU5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHNvdXJjZSkucmVwbGFjZSgiLmpzIiwg
IiIpCisgICAgCisgICAgc291cmNlID0gIiIKKyAgICBmb3IgbGluZSBpbiBpbnB1dEZpbGU6Cisg
ICAgICAgIHNvdXJjZSA9IHNvdXJjZSArIGxpbmUKKyAgICAKKyAgICBpZiBzeXMucGxhdGZvcm0g
PT0gImN5Z3dpbiI6CisgICAgICAgIHNvdXJjZSA9IHNvdXJjZS5yZXBsYWNlKCJcclxuIiwgIlxu
IikKKyAgICByZXR1cm4gKGJhc2VOYW1lLCBnZXRGdW5jdGlvbnMoc291cmNlKSwgZ2V0Q29weXJp
Z2h0KHNvdXJjZSkpCisKK2RlZiBtYW5nbGVOYW1lKG9iamVjdCwgbmFtZSk6CisgICAgcU5hbWUg
PSBvYmplY3QgKyAiLiIgKyBuYW1lCisgICAgbWFuZ2xlZE5hbWUgPSAiIgorICAgIGkgPSAwCisg
ICAgd2hpbGUgaSA8IGxlbihxTmFtZSk6CisgICAgICAgIGlmIHFOYW1lW2ldID09ICcuJzoKKyAg
ICAgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWUgKyBxTmFtZVtpICsgMV0udXBwZXIo
KQorICAgICAgICAgICAgaSA9IGkgKyAxCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtYW5n
bGVkTmFtZSA9IG1hbmdsZWROYW1lICsgcU5hbWVbaV0KKyAgICAgICAgaSA9IGkgKyAxCisgICAg
cmV0dXJuIG1hbmdsZWROYW1lCisKK2J1aWx0aW5zID0gW10KKworYmFzZU5hbWUgPSBzeXMuYXJn
dlstMV0KK2J1aWx0aW5fZGVmaW5pdGlvbnMgPSBzeXMuYXJndlsxOi0xXQorKG91dHB1dF9iYXNl
LCBfKSA9IG9zLnBhdGguc3BsaXRleHQoc3lzLmFyZ3ZbLTFdKQorCitjb3B5cmlnaHRzID0gW10K
K2ZvciBmaWxlIGluIGJ1aWx0aW5fZGVmaW5pdGlvbnM6CisgICAgaWYgZm5tYXRjaC5mbm1hdGNo
KGZpbGUsICcqLmpzJyk6CisgICAgICAgIChiYXNlTmFtZSwgZnVuY3Rpb25zLCBvYmplY3RDb3B5
cmlnaHRzKSA9IGdlbmVyYXRlQ29kZShmaWxlKQorICAgICAgICBjb3B5cmlnaHRzLmV4dGVuZChv
YmplY3RDb3B5cmlnaHRzKQorICAgICAgICBidWlsdGlucy5hcHBlbmQoKGJhc2VOYW1lLCBmdW5j
dGlvbnMpKQorCitjb3B5cmlnaHRzID0gbGlzdChzZXQoY29weXJpZ2h0cykpCisKK2NvcHlyaWdo
dEJvZHkgPSAiIgorZm9yIGNvcHlyaWdodCBpbiBjb3B5cmlnaHRzOgorICAgIGNvcHlyaWdodEJv
ZHkgPSBjb3B5cmlnaHRCb2R5ICsiICogQ29weXJpZ2h0IChDKSAiICsgY29weXJpZ2h0ICsgIlxu
IgorCitidWlsdGluc0hlYWRlciA9IG9wZW4ob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgInciKQor
YnVpbHRpbnNJbXBsZW1lbnRhdGlvbiA9IG9wZW4ob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCAi
dyIpCitjb3B5cmlnaHRUZXh0ID0gIi8qXG4iICsgY29weXJpZ2h0Qm9keSArIGNvcHlyaWdodFRl
eHQKK2J1aWx0aW5zSGVhZGVyLndyaXRlKCIiIiVzCislcworCisjaWZuZGVmIEpTQ0J1aWx0aW5z
X0gKKyNkZWZpbmUgSlNDQnVpbHRpbnNfSAorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRnVu
Y3Rpb25FeGVjdXRhYmxlOworY2xhc3MgSWRlbnRpZmllcjsKK2NsYXNzIEpTR2xvYmFsT2JqZWN0
OworY2xhc3MgU291cmNlQ29kZTsKK2NsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOwor
Y2xhc3MgVk07CisKK0Z1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUo
Vk0mLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKKwor
IiIiICUgKGdlbmVyYXRvclN0cmluZywgY29weXJpZ2h0VGV4dCkpCisKK2NvZGVSZWZlcmVuY2Vz
ID0gW10KKworZm9yIChvYmplY3ROYW1lLCBmdW5jdGlvbnMpIGluIGJ1aWx0aW5zOgorICAgIHBy
aW50KCJHZW5lcmF0aW5nIGJpbmRpbmdzIGZvciB0aGUgJXMgYnVpbHRpbi4iICUgb2JqZWN0TmFt
ZSkKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiLyogJXMgZnVuY3Rpb25zICovXG4iICUgb2Jq
ZWN0TmFtZSkKKyAgICBmb3IgKG5hbWUsIGltcGxlbWVudGF0aW9uLCBfKSBpbiBmdW5jdGlvbnM6
CisgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlTmFtZShvYmplY3ROYW1lLCBuYW1lKQorICAg
ICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lWzBdLmxvd2VyKCkgKyBtYW5nbGVkTmFtZVsx
Ol0gKyAiQ29kZSIKKyAgICAgICAgY29kZVJlZmVyZW5jZXMuYXBwZW5kKChtYW5nbGVkTmFtZSwg
bmFtZSwgaW1wbGVtZW50YXRpb24pKQorICAgICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiZXh0
ZXJuIGNvbnN0IGNoYXIqIHNfJXM7XG4iICUgbWFuZ2xlZE5hbWUpCisgICAgICAgIGJ1aWx0aW5z
SGVhZGVyLndyaXRlKCJleHRlcm4gY29uc3QgaW50IHNfJXNMZW5ndGg7XG4iICUgbWFuZ2xlZE5h
bWUpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuIikKKyAgICBidWlsdGluc0hlYWRlci53
cml0ZSgiI2RlZmluZSBKU0NfRk9SRUFDSF8lc19CVUlMVElOKG1hY3JvKSBcXFxuIiAlIG9iamVj
dE5hbWUucmVwbGFjZSgiLiIsICJfIikudXBwZXIoKSkKKyAgICBmb3IgKG5hbWUsIGltcGxlbWVu
dGF0aW9uLCBhcmd1bWVudHMpIGluIGZ1bmN0aW9uczoKKyAgICAgICAgbWFuZ2xlZE5hbWUgPSBt
YW5nbGVOYW1lKG9iamVjdE5hbWUsIG5hbWUpCisgICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRl
KCIgICAgbWFjcm8oJXMsICVzLCAlZCkgXFxcbiIgJSAobmFtZSwgbWFuZ2xlZE5hbWUsIGxlbihh
cmd1bWVudHMpKSkKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgiXG4iKQorICAgIGZvciAobmFt
ZSwgaW1wbGVtZW50YXRpb24sIGFyZ3VtZW50cykgaW4gZnVuY3Rpb25zOgorICAgICAgICBidWls
dGluc0hlYWRlci53cml0ZSgiI2RlZmluZSBKU0NfQlVJTFRJTl8lcyAxXG4iICUgbWFuZ2xlTmFt
ZShvYmplY3ROYW1lLCBuYW1lKS51cHBlcigpKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJc
blxuIikKK25hbWVzID0gW10KK2J1aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lIEpTQ19GT1JF
QUNIX0JVSUxUSU4obWFjcm8pXFxcbiIpCitmb3IgKGNvZGVSZWZlcmVuY2UsIGZ1bmN0aW9uTmFt
ZSwgc291cmNlKSBpbiBjb2RlUmVmZXJlbmNlczoKKyAgICBidWlsdGluc0hlYWRlci53cml0ZSgi
ICAgIG1hY3JvKCVzLCAlcywgc18lc0xlbmd0aCkgXFxcbiIgJSAoY29kZVJlZmVyZW5jZSwgZnVu
Y3Rpb25OYW1lLCBjb2RlUmVmZXJlbmNlKSkKKyAgICBuYW1lcy5hcHBlbmQoZnVuY3Rpb25OYW1l
KQorCitidWlsdGluc0hlYWRlci53cml0ZSgiXG5cbiIpCitidWlsdGluc0hlYWRlci53cml0ZSgi
I2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFxcXG4iKQor
Zm9yIG5hbWUgaW4gc29ydGVkKHNldChuYW1lcykpOgorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRl
KCIgICAgbWFjcm8oJXMpIFxcXG4iICUgbmFtZSkKK2J1aWx0aW5zSGVhZGVyLndyaXRlKCIiIgor
CisjZGVmaW5lIEpTQ19ERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlv
bk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFt
ZSMjR2VuZXJhdG9yKFZNJik7CisKK0pTQ19GT1JFQUNIX0JVSUxUSU4oSlNDX0RFQ0xBUkVfQlVJ
TFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgSlNDX0RFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IKKwor
I2RlZmluZSBKU0NfQlVJTFRJTl9FWElTVFMobmFtZSkgZGVmaW5lZCBKU0NfQlVJTFRJTl8gIyMg
bmFtZQorCit9CisKKyNlbmRpZgorCisiIiIpCisKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24ud3Jp
dGUoIiIiJXMKKyVzCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkpTQ0J1aWx0
aW5zLmgiCisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJFeGVj
dXRhYmxlLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlZNLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCisiIiIgICUgKGdlbmVyYXRvclN0cmluZywgY29weXJpZ2h0VGV4
dCkpCisKK2ZvciAoY29kZVJlZmVyZW5jZSwgbmFtZSwgc291cmNlKSBpbiBjb2RlUmVmZXJlbmNl
czoKKyAgICBzb3VyY2UgPSAiKGZ1bmN0aW9uICIgKyBzb3VyY2Vbc291cmNlLmluZGV4KCIoIik6
XSArICIpIgorICAgIGxpbmVzID0ganNvbi5kdW1wcyhzb3VyY2UpWzE6LTFdLnNwbGl0KCJcXG4i
KQorICAgIHNvdXJjZUxlbmd0aCA9IGxlbihzb3VyY2UpCisgICAgc291cmNlID0gIiIKKyAgICBm
b3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgc291cmNlID0gc291cmNlICsgKCIgICAgXCIlc1xc
blwiIFxcXG4iICUgbGluZSkKKyAgICBidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCJjb25z
dCBjaGFyKiBzXyVzID1cbiVzO1xuXG4iICUgKGNvZGVSZWZlcmVuY2UsIHNvdXJjZSkpCisgICAg
YnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiY29uc3QgaW50IHNfJXNMZW5ndGggPSAlZDtc
blxuIiAlIChjb2RlUmVmZXJlbmNlLCBzb3VyY2VMZW5ndGggKyAxKSkgIyArIDEgZm9yIFxuCisK
K2J1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoIiIiCitGdW5jdGlvbkV4ZWN1dGFibGUqIGNy
ZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKFZNJiB2bSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IHVubGlua2VkRXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQoreworICAgIHVu
c2lnbmVkIGxpbmVDb3VudCA9IHVubGlua2VkRXhlY3V0YWJsZS0+bGluZUNvdW50KCk7CisgICAg
dW5zaWduZWQgc3RhcnRDb2x1bW4gPSAxOworICAgIHVuc2lnbmVkIHNvdXJjZUxlbmd0aCA9IHVu
bGlua2VkRXhlY3V0YWJsZS0+c291cmNlTGVuZ3RoKCk7CisgICAgYm9vbCBlbmRDb2x1bW5Jc09u
U3RhcnRMaW5lID0gIWxpbmVDb3VudDsKKyAgICB1bnNpZ25lZCBlbmRDb2x1bW5FeGNsdWRpbmdC
cmFjZXMgPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnVubGlua2VkQm9keUVuZENvbHVtbigpICsgKGVu
ZENvbHVtbklzT25TdGFydExpbmUgPyAwIDogMSk7CisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQg
PSB1bmxpbmtlZEV4ZWN1dGFibGUtPnN0YXJ0T2Zmc2V0KCk7CisgICAgdW5zaWduZWQgc3RhcnRP
ZmZzZXRFeGNsdWRpbmdPcGVuQnJhY2UgPSBzdGFydE9mZnNldCArIDE7CisgICAgdW5zaWduZWQg
ZW5kT2Zmc2V0RXhjbHVkaW5nQ2xvc2VCcmFjZSA9IHN0YXJ0T2Zmc2V0ICsgc291cmNlTGVuZ3Ro
IC0gMTsKKyAgICBTb3VyY2VDb2RlIGJvZHlTb3VyY2Uoc291cmNlLnByb3ZpZGVyKCksIHN0YXJ0
T2Zmc2V0RXhjbHVkaW5nT3BlbkJyYWNlLCBlbmRPZmZzZXRFeGNsdWRpbmdDbG9zZUJyYWNlLCAw
LCBzdGFydENvbHVtbik7CisgICAgcmV0dXJuIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZt
LCBib2R5U291cmNlLCB1bmxpbmtlZEV4ZWN1dGFibGUsIDAsIGxpbmVDb3VudCwgc3RhcnRDb2x1
bW4sIGVuZENvbHVtbkV4Y2x1ZGluZ0JyYWNlcywgZmFsc2UpOworfQorCisjZGVmaW5lIEpTQ19E
RUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRD
b3VudCkgXFwKK0Z1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihWTSYgdm0p
IFxcCit7IFxcCisgICAgcmV0dXJuIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKHZtLCB2bS5idWls
dGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKSwgdm0uYnVpbHRpbkV4ZWN1
dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IFxcCit9CisKK0pTQ19GT1JFQUNIX0JVSUxU
SU4oSlNDX0RFRklORV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBKU0NfREVGSU5FX0JVSUxU
SU5fR0VORVJBVE9SCit9CisKKyIiIikKKworYnVpbHRpbnNIZWFkZXIuY2xvc2UoKQorYnVpbHRp
bnNJbXBsZW1lbnRhdGlvbi5jbG9zZSgpCisKK2lmIChub3Qgb3MucGF0aC5leGlzdHMob3V0cHV0
X2Jhc2UgKyAiLmgiKSkgb3IgKG5vdCBmaWxlY21wLmNtcChvdXRwdXRfYmFzZSArICIuaC50bXAi
LCBvdXRwdXRfYmFzZSArICIuaCIsIHNoYWxsb3c9RmFsc2UpKToKKyAgICBvcy5yZW5hbWUob3V0
cHV0X2Jhc2UgKyAiLmgudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmgiKQorZWxzZToKKyAgICBvcy5y
ZW1vdmUob3V0cHV0X2Jhc2UgKyAiLmgudG1wIikKKworaWYgKG5vdCBvcy5wYXRoLmV4aXN0cyhv
dXRwdXRfYmFzZSArICIuY3BwIikpIG9yIChub3QgZmlsZWNtcC5jbXAob3V0cHV0X2Jhc2UgKyAi
LmNwcC50bXAiLCBvdXRwdXRfYmFzZSArICIuY3BwIiwgc2hhbGxvdz1GYWxzZSkpOgorICAgIG9z
LnJlbmFtZShvdXRwdXRfYmFzZSArICIuY3BwLnRtcCIsIG91dHB1dF9iYXNlICsgIi5jcHAiKQor
ZWxzZToKKyAgICBvcy5yZW1vdmUob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgKaW5kZXggMmNhM2U5Nzk0
MGM3YzExMDZjMWJhYmExZjM1NGZlODQ3YjQzODViMy4uMzBjYWQyYTE0ZmZkYmZiNGQ1N2NmNWEx
MmZjYjkwMGUyNjRmODc2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0NhY2hlZENhbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvQ2FjaGVkQ2FsbC5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgLCBtX2ludGVycHJldGVyKGNhbGxGcmFtZS0+aW50ZXJwcmV0ZXIoKSkKICAgICAgICAg
ICAgICwgbV9lbnRyeVNjb3BlKGNhbGxGcmFtZS0+dm0oKSwgZnVuY3Rpb24tPnNjb3BlKCktPmds
b2JhbE9iamVjdCgpKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoIWZ1bmN0aW9uLT5p
c0hvc3RGdW5jdGlvbigpKTsKKyAgICAgICAgICAgIEFTU0VSVCghZnVuY3Rpb24tPmlzSG9zdEZ1
bmN0aW9uTm9uSW5saW5lKCkpOwogICAgICAgICAgICAgaWYgKGNhbGxGcmFtZS0+dm0oKS5pc1Nh
ZmVUb1JlY3Vyc2UoKSkgewogICAgICAgICAgICAgICAgIG1fYXJndW1lbnRzLnJlc2l6ZShhcmd1
bWVudENvdW50KTsKICAgICAgICAgICAgICAgICBtX2Nsb3N1cmUgPSBtX2ludGVycHJldGVyLT5w
cmVwYXJlRm9yUmVwZWF0Q2FsbChmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCksIGNhbGxGcmFtZSwg
Jm1fcHJvdG9DYWxsRnJhbWUsIGZ1bmN0aW9uLCBhcmd1bWVudENvdW50ICsgMSwgZnVuY3Rpb24t
PnNjb3BlKCksIG1fYXJndW1lbnRzLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvQVNUQnVpbGRlci5oCmluZGV4IDhlYzFmZDMyYTNhZGEyMmUxMjUyMjk1NzBkY2Y3ZmYyOGVh
YmYxZWQuLjQ2YTdjNzZiMmY5MDFmYzNjYzM2ZDFjZTBjMDczNTNlYjA2YjJmNWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC04ODgsOSArODg4LDkgQEAg
RXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24KICAgICBBU1NFUlQoZnVuYy0+aXNEb3RBY2Nlc3Nvck5v
ZGUoKSk7CiAgICAgRG90QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nv
ck5vZGUqPihmdW5jKTsKICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKiBub2RlOwotICAgIGlmIChk
b3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5jYWxsKQorICAgIGlmIChk
b3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5jYWxsIHx8IGRvdC0+aWRl
bnRpZmllcigpID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmNhbGxQcml2YXRlTmFtZSkKICAgICAg
ICAgbm9kZSA9IG5ldyAobV92bSkgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRv
dC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRp
dm90RW5kKTsKLSAgICBlbHNlIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5hcHBseSkKKyAgICBlbHNlIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5hcHBseSB8fCBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5hcHBseVByaXZhdGVOYW1lKQogICAgICAgICBub2RlID0gbmV3IChtX3ZtKSBBcHBs
eUZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZp
ZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKICAgICBlbHNlCiAgICAg
ICAgIG5vZGUgPSBuZXcgKG1fdm0pIEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+
YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90
RW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKaW5kZXggNDQxNGJmZjU1
NmNmNGQ0ZTlmNTRlMzBkNzA5OTIwNGM1MGQxNzFmZS4uYWI3NWM1YTRkMzY4YmIzOTNjNDE4ODQ2
NTY5Y2YwZmVhNTk5MDgxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAK
QEAgLTkxLDYgKzkxLDcgQEAgZW51bSBDaGFyYWN0ZXJUeXBlIHsKIAogICAgIC8vIE90aGVyIHR5
cGVzIChvbmx5IG9uZSBzbyBmYXIpCiAgICAgQ2hhcmFjdGVyV2hpdGVTcGFjZSwKKyAgICBDaGFy
YWN0ZXJQcml2YXRlSWRlbnRpZmllclN0YXJ0CiB9OwogCiAvLyAyNTYgTGF0aW4tMSBjb2RlcwpA
QCAtMTU5LDcgKzE2MCw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCB0eXBlc09mTGF0
aW4xQ2hhcmFjdGVyc1syNTZdID0gewogLyogIDYxIC0gPSAgICAgICAgICAgICAgICAgICovIENo
YXJhY3RlckVxdWFsLAogLyogIDYyIC0gPiAgICAgICAgICAgICAgICAgICovIENoYXJhY3Rlckdy
ZWF0ZXIsCiAvKiAgNjMgLSA/ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyUXVlc3Rpb24s
Ci0vKiAgNjQgLSBAICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKKy8qICA2
NCAtIEAgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJQcml2YXRlSWRlbnRpZmllclN0YXJ0
LAogLyogIDY1IC0gQSAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFy
dCwKIC8qICA2NiAtIEIgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3Rh
cnQsCiAvKiAgNjcgLSBDICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0
YXJ0LApAQCAtNDg3LDkgKzQ4OCwxMCBAQCBzdGF0aWMgY29uc3QgTENoYXIgc2luZ2xlQ2hhcmFj
dGVyRXNjYXBlVmFsdWVzRm9yQVNDSUlbMTI4XSA9IHsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotTGV4ZXI8VD46OkxleGVyKFZNKiB2bSkKK0xleGVyPFQ+OjpMZXhlcihWTSogdm0sIEpT
UGFyc2VyU3RyaWN0bmVzcyBzdHJpY3RuZXNzKQogICAgIDogbV9pc1JlcGFyc2luZyhmYWxzZSkK
ICAgICAsIG1fdm0odm0pCisgICAgLCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24oc3RyaWN0bmVz
cyA9PSBKU1BhcnNlQnVpbHRpbikKIHsKIH0KIApAQCAtNzU0LDcgKzc1NiwyNyBAQCBpbmxpbmUg
dm9pZCBMZXhlcjxUPjo6cmVjb3JkMTYoaW50IGMpCiAgICAgQVNTRVJUKGMgPD0gc3RhdGljX2Nh
c3Q8aW50PihVU0hSVF9NQVgpKTsKICAgICBtX2J1ZmZlcjE2LmFwcGVuZChzdGF0aWNfY2FzdDxV
Q2hhcj4oYykpOwogfQotCisgICAgCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorYm9vbCBpc1NhZmVJ
ZGVudGlmaWVyKFZNJiB2bSwgY29uc3QgSWRlbnRpZmllciogaWRlbnQpCit7CisgICAgaWYgKCFp
ZGVudCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgLyogSnVzdCBibG9jayBhbnkgdXNlIG9m
IHN1c3BpY2lvdXMgaWRlbnRpZmllcnMuICBUaGlzIGlzIGludGVuZGVkIHRvCisgICAgICogYmUg
dXNlZCBhcyBhIHNhZmV0eSBuZXQgd2hpbGUgaW1wbGVtZW50aW5nIGJ1aWx0aW5zLgorICAgICAq
LworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+Y2FsbCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmICgqaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+YXBwbHkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKmlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMt
PmV2YWwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKmlkZW50ID09IHZtLnByb3Bl
cnR5TmFtZXMtPkZ1bmN0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisjZW5kaWYKKyAgICAKIHRlbXBsYXRlIDw+CiB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRD
cmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6
cGFyc2VJZGVudGlmaWVyKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEsIHVuc2lnbmVkIGxleGVyRmxh
Z3MsIGJvb2wgc3RyaWN0TW9kZSkKIHsKQEAgLTc2Niw3ICs3ODgsMTEgQEAgdGVtcGxhdGUgPGJv
b2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhl
cjxMQ2hhcj46OnAKICAgICAgICAgICAgIHJldHVybiBrZXl3b3JkID09IFJFU0VSVkVEX0lGX1NU
UklDVCAmJiAhc3RyaWN0TW9kZSA/IElERU5UIDoga2V5d29yZDsKICAgICAgICAgfQogICAgIH0K
LQorICAgIAorICAgIGJvb2wgaXNQcml2YXRlTmFtZSA9IG1fY3VycmVudCA9PSAnQCcgJiYgbV9w
YXJzaW5nQnVpbHRpbkZ1bmN0aW9uOworICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICBz
aGlmdCgpOworICAgIAogICAgIGNvbnN0IExDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50
U291cmNlUHRyKCk7CiAgICAgdW5zaWduZWQgaWRlbnRpZmllckxpbmVTdGFydCA9IGN1cnJlbnRM
aW5lU3RhcnRPZmZzZXQoKTsKICAgICAKQEAgLTc4MCwxNSArODA2LDI2IEBAIHRlbXBsYXRlIDxi
b29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4
ZXI8TENoYXI+OjpwCiAKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IDA7CiAgICAgCi0g
ICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpIHsKKyAgICBpZiAoc2hvdWxkQ3JlYXRlSWRl
bnRpZmllciB8fCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKICAgICAgICAgaW50IGlkZW50
aWZpZXJMZW5ndGggPSBjdXJyZW50U291cmNlUHRyKCkgLSBpZGVudGlmaWVyU3RhcnQ7CiAgICAg
ICAgIGlkZW50ID0gbWFrZUlkZW50aWZpZXIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVu
Z3RoKTsKLQorICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CisgICAgICAg
ICAgICBpZiAoIWlzU2FmZUlkZW50aWZpZXIoKm1fdm0sIGlkZW50KSAmJiAhaXNQcml2YXRlTmFt
ZSkgeworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZygiVGhl
IHVzZSBvZiAnIiwgaWRlbnQtPnN0cmluZygpLCAiJyBpcyBkaXNhbGxvd2VkIGluIGJ1aWx0aW4g
ZnVuY3Rpb25zLiIpOworICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPSzsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICAgICAgICAgIGlk
ZW50ID0gbV92bS0+cHJvcGVydHlOYW1lcy0+Z2V0UHJpdmF0ZU5hbWUoKmlkZW50KTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRL
ZXl3b3JkKQorICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAmbV92bS0+cHJvcGVy
dHlOYW1lcy0+dW5kZWZpbmVkUHJpdmF0ZU5hbWU7CisgICAgICAgICAgICBpZiAoIWlkZW50KQor
ICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzsKKyAg
ICAgICAgfQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gaWRlbnQ7CiAgICAgfSBlbHNlCiAg
ICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAwOwogCi0gICAgaWYgKFVOTElLRUxZKChyZW1haW5p
bmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJl
c2VydmVkV29yZHMpKSkgeworICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5M
ZW5ndGgpICYmICEobGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkg
JiYgIWlzUHJpdmF0ZU5hbWUpIHsKICAgICAgICAgQVNTRVJUKHNob3VsZENyZWF0ZUlkZW50aWZp
ZXIpOwogICAgICAgICBpZiAocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHsKICAgICAgICAg
ICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSBtX3ZtLT5rZXl3b3Jkcy0+Z2V0S2V5d29yZCgq
aWRlbnQpOwpAQCAtODE1LDYgKzg1MiwxMCBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJ
ZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAg
ICAgICAgICAgcmV0dXJuIGtleXdvcmQgPT0gUkVTRVJWRURfSUZfU1RSSUNUICYmICFzdHJpY3RN
b2RlID8gSURFTlQgOiBrZXl3b3JkOwogICAgICAgICB9CiAgICAgfQorICAgIAorICAgIGJvb2wg
aXNQcml2YXRlTmFtZSA9IG1fY3VycmVudCA9PSAnQCcgJiYgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0
aW9uOworICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICBzaGlmdCgpOwogCiAgICAgY29u
c3QgVUNoYXIqIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKICAgICBpbnQg
aWRlbnRpZmllckxpbmVTdGFydCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKQEAgLTgyNyw2
ICs4NjgsNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNf
SU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAgIH0KICAgICAKICAgICBpZiAo
VU5MSUtFTFkobV9jdXJyZW50ID09ICdcXCcpKSB7CisgICAgICAgIEFTU0VSVCghaXNQcml2YXRl
TmFtZSk7CiAgICAgICAgIHNldE9mZnNldEZyb21Tb3VyY2VQdHIoaWRlbnRpZmllclN0YXJ0LCBp
ZGVudGlmaWVyTGluZVN0YXJ0KTsKICAgICAgICAgcmV0dXJuIHBhcnNlSWRlbnRpZmllclNsb3dD
YXNlPHNob3VsZENyZWF0ZUlkZW50aWZpZXI+KHRva2VuRGF0YSwgbGV4ZXJGbGFncywgc3RyaWN0
TW9kZSk7CiAgICAgfQpAQCAtODM4LDE4ICs4ODAsMjkgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxk
Q3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46
OnAKIAogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gMDsKICAgICAKLSAgICBpZiAoc2hv
dWxkQ3JlYXRlSWRlbnRpZmllcikgeworICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyIHx8
IG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgewogICAgICAgICBpbnQgaWRlbnRpZmllckxlbmd0
aCA9IGN1cnJlbnRTb3VyY2VQdHIoKSAtIGlkZW50aWZpZXJTdGFydDsKICAgICAgICAgaWYgKGlz
QWxsOEJpdCkKICAgICAgICAgICAgIGlkZW50ID0gbWFrZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hh
cihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBpZGVudCA9IG1ha2VJZGVudGlmaWVyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmll
ckxlbmd0aCk7Ci0gICAgICAgIAorICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9u
KSB7CisgICAgICAgICAgICBpZiAoIWlzU2FmZUlkZW50aWZpZXIoKm1fdm0sIGlkZW50KSAmJiAh
aXNQcml2YXRlTmFtZSkgeworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gbWFr
ZVN0cmluZygiVGhlIHVzZSBvZiAnIiwgaWRlbnQtPnN0cmluZygpLCAiJyBpcyBkaXNhbGxvd2Vk
IGluIGJ1aWx0aW4gZnVuY3Rpb25zLiIpOworICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRP
SzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAg
ICAgICAgICAgIGlkZW50ID0gbV92bS0+cHJvcGVydHlOYW1lcy0+Z2V0UHJpdmF0ZU5hbWUoKmlk
ZW50KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT51bmRlZmluZWRLZXl3b3JkKQorICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAm
bV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkUHJpdmF0ZU5hbWU7CisgICAgICAgICAgICBp
ZiAoIWlkZW50KQorICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEX1BSSVZBVEVfTkFNRV9F
UlJPUlRPSzsKKyAgICAgICAgfQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gaWRlbnQ7CiAg
ICAgfSBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAwOwogICAgIAotICAgIGlmIChV
TkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICEobGV4ZXJGbGFncyAmIExl
eGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkpIHsKKyAgICBpZiAoVU5MSUtFTFkoKHJlbWFp
bmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxhZ3MgJiBMZXhlckZsYWdzSWdub3Jl
UmVzZXJ2ZWRXb3JkcykpICYmICFpc1ByaXZhdGVOYW1lKSB7CiAgICAgICAgIEFTU0VSVChzaG91
bGRDcmVhdGVJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKHJlbWFpbmluZyA8IG1heFRva2VuTGVu
Z3RoKSB7CiAgICAgICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gbV92bS0+a2V5d29y
ZHMtPmdldEtleXdvcmQoKmlkZW50KTsKQEAgLTE2NTksNiArMTcxMiw3IEBAIGluTnVtYmVyQWZ0
ZXJEZWNpbWFsUG9pbnQ6CiAgICAgICAgIEFTU0VSVChpc0lkZW50U3RhcnQobV9jdXJyZW50KSk7
CiAgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2UgQ2hhcmFjdGVyQmFja1NsYXNoOgorICAg
ICAgICBwYXJzZUlkZW50OgogICAgICAgICBpZiAobGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250
QnVpbGRLZXl3b3JkcykKICAgICAgICAgICAgIHRva2VuID0gcGFyc2VJZGVudGlmaWVyPGZhbHNl
Pih0b2tlbkRhdGEsIGxleGVyRmxhZ3MsIHN0cmljdE1vZGUpOwogICAgICAgICBlbHNlCkBAIC0x
NjcxLDYgKzE3MjUsMTEgQEAgaW5OdW1iZXJBZnRlckRlY2ltYWxQb2ludDoKICAgICAgICAgbV90
ZXJtaW5hdG9yID0gdHJ1ZTsKICAgICAgICAgbV9saW5lU3RhcnQgPSBtX2NvZGU7CiAgICAgICAg
IGdvdG8gc3RhcnQ7CisgICAgY2FzZSBDaGFyYWN0ZXJQcml2YXRlSWRlbnRpZmllclN0YXJ0Ogor
ICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKQorICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50OworCisgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2UgQ2hhcmFjdGVySW52
YWxpZDoKICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBpbnZhbGlkQ2hhcmFjdGVyTWVzc2Fn
ZSgpOwogICAgICAgICB0b2tlbiA9IEVSUk9SVE9LOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9MZXhlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9M
ZXhlci5oCmluZGV4IDJlOTIyYmIwYjhiMGVjN2FhOWNjMTY3NmJlZmZiN2IxY2YyNDk0YzguLmVj
YzliNTQ0M2ZkY2EwZjY4Yjg4OWZkOTIwNWFkMzNmNjdlNDBiMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0xleGVyLmgKQEAgLTcxLDcgKzcxLDcgQEAgY2xhc3MgTGV4ZXIgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCiBwdWJsaWM6Ci0gICAgTGV4ZXIoVk0qKTsKKyAgICBM
ZXhlcihWTSosIEpTUGFyc2VyU3RyaWN0bmVzcyk7CiAgICAgfkxleGVyKCk7CiAKICAgICAvLyBD
aGFyYWN0ZXIgbWFuaXB1bGF0aW9uIGZ1bmN0aW9ucy4KQEAgLTIzNyw2ICsyMzcsNyBAQCBwcml2
YXRlOgogICAgIElkZW50aWZpZXJBcmVuYSogbV9hcmVuYTsKIAogICAgIFZNKiBtX3ZtOworICAg
IGJvb2wgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uOwogfTsKIAogdGVtcGxhdGUgPD4KQEAgLTMz
NSw2ICszMzYsMTIgQEAgQUxXQVlTX0lOTElORSBjb25zdCBJZGVudGlmaWVyKiBMZXhlcjxUPjo6
bWFrZUxDaGFySWRlbnRpZmllcihjb25zdCBVQ2hhciogY2hhcmEKICAgICByZXR1cm4gJm1fYXJl
bmEtPm1ha2VJZGVudGlmaWVyTENoYXJGcm9tVUNoYXIobV92bSwgY2hhcmFjdGVycywgbGVuZ3Ro
KTsKIH0KIAorI2lmIEFTU0VSVF9ESVNBQkxFRAorQUxXQVlTX0lOTElORSBib29sIGlzU2FmZUlk
ZW50aWZpZXIoVk0mLCBjb25zdCBJZGVudGlmaWVyKikgeyByZXR1cm4gdHJ1ZTsgfQorI2Vsc2UK
K2Jvb2wgaXNTYWZlSWRlbnRpZmllcihWTSYsIGNvbnN0IElkZW50aWZpZXIqKTsKKyNlbmRpZgor
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8
VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tlbiogdG9rZW5SZWNvcmQsIHVuc2lnbmVkIGxl
eGVyRmxhZ3MsIGJvb2wgc3RyaWN0TW9kZSkKIHsKQEAgLTM3MCwxMCArMzc3LDE1IEBAIEFMV0FZ
U19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tl
biogdG9rZW5SZWNvcmQsIHVuCiAgICAgQVNTRVJUKGN1cnJlbnRPZmZzZXQoKSA+PSBjdXJyZW50
TGluZVN0YXJ0T2Zmc2V0KCkpOwogCiAgICAgLy8gQ3JlYXRlIHRoZSBpZGVudGlmaWVyIGlmIG5l
ZWRlZAotICAgIGlmIChsZXhlckZsYWdzICYgTGV4ZXhGbGFnc0RvbnRCdWlsZEtleXdvcmRzKQor
ICAgIGlmIChsZXhlckZsYWdzICYgTGV4ZXhGbGFnc0RvbnRCdWlsZEtleXdvcmRzCisjaWYgIUFT
U0VSVF9ESVNBQkxFRAorICAgICAgICAmJiAhbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uCisjZW5k
aWYKKyAgICAgICAgKQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gMDsKICAgICBlbHNlCiAg
ICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBtYWtlTENoYXJJZGVudGlmaWVyKHN0YXJ0LCBwdHIg
LSBzdGFydCk7CisKICAgICB0b2tlbkxvY2F0aW9uLT5saW5lID0gbV9saW5lTnVtYmVyOwogICAg
IHRva2VuTG9jYXRpb24tPmxpbmVTdGFydE9mZnNldCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQo
KTsKICAgICB0b2tlbkxvY2F0aW9uLT5zdGFydE9mZnNldCA9IG9mZnNldEZyb21Tb3VyY2VQdHIo
c3RhcnQpOwpAQCAtMzgxLDYgKzM5MywxMyBAQCBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExl
eGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW4qIHRva2VuUmVjb3JkLCB1bgogICAg
IEFTU0VSVCh0b2tlbkxvY2F0aW9uLT5zdGFydE9mZnNldCA+PSB0b2tlbkxvY2F0aW9uLT5saW5l
U3RhcnRPZmZzZXQpOwogICAgIHRva2VuUmVjb3JkLT5tX3N0YXJ0UG9zaXRpb24gPSBzdGFydFBv
c2l0aW9uOwogICAgIHRva2VuUmVjb3JkLT5tX2VuZFBvc2l0aW9uID0gY3VycmVudFBvc2l0aW9u
KCk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rp
b24pIHsKKyAgICAgICAgaWYgKCFpc1NhZmVJZGVudGlmaWVyKCptX3ZtLCB0b2tlbkRhdGEtPmlk
ZW50KSkKKyAgICAgICAgICAgIHJldHVybiBFUlJPUlRPSzsKKyAgICB9CisjZW5kaWYKKwogICAg
IG1fbGFzdFRva2VuID0gSURFTlQ7CiAgICAgcmV0dXJuIElERU5UOwogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCAxMzRjMWQxY2U0NGJlYzkzM2Q2NGRiNzc3
YzUyY2IzM2YxZmY0YjFmLi4yZGExNDhmNzczNmMxNjk5NDE2ZTc4NGQyOTQ0YzQ4MGJkNGM3YTgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMTMyLDYgKzEzMiwx
MiBAQCBQYXNzUmVmUHRyPFByb2dyYW1Ob2RlPiBQcm9ncmFtTm9kZTo6Y3JlYXRlKFZNKiB2bSwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydAogICAgIHJldHVybiBub2RlLnJlbGVhc2UoKTsK
IH0KIAorCit2b2lkIFByb2dyYW1Ob2RlOjpzZXRDbG9zZWRWYXJpYWJsZXMoY29uc3QgVmVjdG9y
PFJlZlB0cjxTdHJpbmdJbXBsPj4mJiBjbG9zZWRWYXJpYWJsZXMpCit7CisgICAgbV9jbG9zZWRW
YXJpYWJsZXMgPSBzdGQ6Om1vdmUoY2xvc2VkVmFyaWFibGVzKTsKK30KKwogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV2YWxOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKIGlubGluZSBFdmFsTm9kZTo6RXZhbE5vZGUoVk0qIHZtLCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24s
IHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayog
dmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVy
ZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1
cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmlu
ZGV4IDc4MzI4MmIzNGE3MTYyMzc5M2UzMWQxZjVmN2VjMzQ2OTU1ZThjMjcuLjY2NWNjODQ1MmQx
NDBkM2ExMDJkYWUzOTY2ZWY0YzE1YjkxZWYzNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmgKQEAgLTE0MzEsNiArMTQzMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBi
b29sIG5lZWRzQWN0aXZhdGlvbigpIGNvbnN0IHsgcmV0dXJuIChoYXNDYXB0dXJlZFZhcmlhYmxl
cygpKSB8fCAobV9mZWF0dXJlcyAmIChFdmFsRmVhdHVyZSB8IFdpdGhGZWF0dXJlIHwgQ2F0Y2hG
ZWF0dXJlKSk7IH0KICAgICAgICAgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcygpIGNvbnN0IHsg
cmV0dXJuICEhbV9jYXB0dXJlZFZhcmlhYmxlcy5zaXplKCk7IH0KICAgICAgICAgc2l6ZV90IGNh
cHR1cmVkVmFyaWFibGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FwdHVyZWRWYXJpYWJsZXMu
c2l6ZSgpOyB9CisgICAgICAgIGNvbnN0IElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVz
KCkgY29uc3QgeyByZXR1cm4gbV9jYXB0dXJlZFZhcmlhYmxlczsgfQogICAgICAgICBib29sIGNh
cHR1cmVzKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSB7IHJldHVybiBtX2NhcHR1cmVkVmFyaWFi
bGVzLmNvbnRhaW5zKGlkZW50LmltcGwoKSk7IH0KIAogICAgICAgICBWYXJTdGFjayYgdmFyU3Rh
Y2soKSB7IHJldHVybiBtX3ZhclN0YWNrOyB9CkBAIC0xNDQ2LDYgKzE0NDcsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50KCkgY29uc3Q7
CiAKICAgICAgICAgdm9pZCBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogZGVzdGluYXRpb24pOworICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRD
bG9zZWRWYXJpYWJsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJikgeyB9CiAK
ICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZvaWQgc2V0U291cmNlKGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSkgeyBtX3NvdXJjZSA9IHNvdXJjZTsgfQpAQCAtMTQ3NSwxMSArMTQ3OCwxMyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzY29wZUlzRnVuY3Rp
b24gPSBmYWxzZTsKIAorICAgICAgICB2b2lkIHNldENsb3NlZFZhcmlhYmxlcyhjb25zdCBWZWN0
b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmKTsKKyAgICAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxT
dHJpbmdJbXBsPj4mIGNsb3NlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2xvc2VkVmFy
aWFibGVzOyB9CiAgICAgcHJpdmF0ZToKICAgICAgICAgUHJvZ3JhbU5vZGUoVk0qLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWdu
ZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqLCBWYXJT
dGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYs
IENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAgdmlydHVhbCB2b2lk
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJp
ZGU7Ci0KKyAgICAgICAgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4gbV9jbG9zZWRWYXJpYWJs
ZXM7CiAgICAgICAgIHVuc2lnbmVkIG1fc3RhcnRDb2x1bW47CiAgICAgICAgIHVuc2lnbmVkIG1f
ZW5kQ29sdW1uOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAK
aW5kZXggMjZiMDMwYjdjODg4ZGQyYWE5ZWI3NTBlNGRlNGU0YzAyMmFiYmM1My4uZTkxNWEyZjNm
NjFlNTE0YWYwNGI5NTI2NjhjYjY5NTg3YjhmNTU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcApAQCAtMjA1LDggKzIwNSw5IEBAIFBhcnNlcjxMZXhlclR5cGU+OjpQ
YXJzZXIoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uUGFyYW1ldGVy
cyoKICAgICAsIG1fbGFzdElkZW50aWZpZXIoMCkKICAgICAsIG1fbGFzdEZ1bmN0aW9uTmFtZShu
dWxscHRyKQogICAgICwgbV9zb3VyY2VFbGVtZW50cygwKQorICAgICwgbV9wYXJzaW5nQnVpbHRp
bihzdHJpY3RuZXNzID09IEpTUGFyc2VCdWlsdGluKQogewotICAgIG1fbGV4ZXIgPSBhZG9wdFB0
cihuZXcgTGV4ZXJUeXBlKHZtKSk7CisgICAgbV9sZXhlciA9IGFkb3B0UHRyKG5ldyBMZXhlclR5
cGUodm0sIHN0cmljdG5lc3MpKTsKICAgICBtX2FyZW5hID0gbV92bS0+cGFyc2VyQXJlbmEuZ2V0
KCk7CiAgICAgbV9sZXhlci0+c2V0Q29kZShzb3VyY2UsIG1fYXJlbmEpOwogICAgIG1fdG9rZW4u
bV9sb2NhdGlvbi5saW5lID0gc291cmNlLmZpcnN0TGluZSgpOwpAQCAtMjcxLDYgKzI3Miw3IEBA
IFN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcigpCiAgICAgSWRlbnRpZmllclNl
dCBjYXB0dXJlZFZhcmlhYmxlczsKICAgICBib29sIG1vZGlmaWVkUGFyYW1ldGVyID0gZmFsc2U7
CiAgICAgc2NvcGUtPmdldENhcHR1cmVkVmFyaWFibGVzKGNhcHR1cmVkVmFyaWFibGVzLCBtb2Rp
ZmllZFBhcmFtZXRlcik7CisgICAgCiAgICAgQ29kZUZlYXR1cmVzIGZlYXR1cmVzID0gY29udGV4
dC5mZWF0dXJlcygpOwogICAgIGlmIChzY29wZS0+c3RyaWN0TW9kZSgpKQogICAgICAgICBmZWF0
dXJlcyB8PSBTdHJpY3RNb2RlRmVhdHVyZTsKQEAgLTI3OCwyMSArMjgwLDM2IEBAIFN0cmluZyBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcigpCiAgICAgICAgIGZlYXR1cmVzIHw9IFNoYWRv
d3NBcmd1bWVudHNGZWF0dXJlOwogICAgIGlmIChtb2RpZmllZFBhcmFtZXRlcikKICAgICAgICAg
ZmVhdHVyZXMgfD0gTW9kaWZpZWRQYXJhbWV0ZXJGZWF0dXJlOwotCisgICAgCisgICAgVmVjdG9y
PFJlZlB0cjxTdHJpbmdJbXBsPj4gY2xvc2VkVmFyaWFibGVzOworICAgIGlmIChtX3BhcnNpbmdC
dWlsdGluKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFjYXB0dXJlZFZhcmlhYmxlcy5zaXpl
KCkpOworICAgICAgICBJZGVudGlmaWVyU2V0IHVzZWRWYXJpYWJsZXM7CisgICAgICAgIHNjb3Bl
LT5nZXRVc2VkVmFyaWFibGVzKHVzZWRWYXJpYWJsZXMpOworICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIHZhcmlhYmxlIDogdXNlZFZhcmlhYmxlcykgeworICAgICAgICAgICAgaWYgKHNjb3BlLT5o
YXNEZWNsYXJlZFZhcmlhYmxlKElkZW50aWZpZXIobV92bSwgdmFyaWFibGUuZ2V0KCkpKSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHNj
b3BlLT5oYXNEZWNsYXJlZFBhcmFtZXRlcihJZGVudGlmaWVyKG1fdm0sIHZhcmlhYmxlLmdldCgp
KSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBjbG9zZWRWYXJpYWJs
ZXMuYXBwZW5kKHZhcmlhYmxlKTsKKyAgICAgICAgfQorICAgIH0KICAgICBkaWRGaW5pc2hQYXJz
aW5nKHNvdXJjZUVsZW1lbnRzLCBjb250ZXh0LnZhckRlY2xhcmF0aW9ucygpLCBjb250ZXh0LmZ1
bmNEZWNsYXJhdGlvbnMoKSwgZmVhdHVyZXMsCi0gICAgICAgIGNvbnRleHQubnVtQ29uc3RhbnRz
KCksIGNhcHR1cmVkVmFyaWFibGVzKTsKKyAgICAgICAgY29udGV4dC5udW1Db25zdGFudHMoKSwg
Y2FwdHVyZWRWYXJpYWJsZXMsIHN0ZDo6bW92ZShjbG9zZWRWYXJpYWJsZXMpKTsKIAogICAgIHJl
dHVybiBwYXJzZUVycm9yOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdm9p
ZCBQYXJzZXI8TGV4ZXJUeXBlPjo6ZGlkRmluaXNoUGFyc2luZyhTb3VyY2VFbGVtZW50cyogc291
cmNlRWxlbWVudHMsIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+
KiB2YXJTdGFjaywgCi0gICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5j
dGlvblN0YWNrPiogZnVuY1N0YWNrLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25z
dGFudHMsIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFycykKKyAgICBQYXJzZXJBcmVuYURhdGE8
RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KiBmdW5jU3RhY2ssIENvZGVGZWF0dXJl
cyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJz
LCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmIGNsb3NlZFZhcmlhYmxlcykKIHsK
ICAgICBtX3NvdXJjZUVsZW1lbnRzID0gc291cmNlRWxlbWVudHM7CiAgICAgbV92YXJEZWNsYXJh
dGlvbnMgPSB2YXJTdGFjazsKICAgICBtX2Z1bmNEZWNsYXJhdGlvbnMgPSBmdW5jU3RhY2s7CiAg
ICAgbV9jYXB0dXJlZFZhcmlhYmxlcy5zd2FwKGNhcHR1cmVkVmFycyk7CisgICAgbV9jbG9zZWRW
YXJpYWJsZXMgPSBjbG9zZWRWYXJpYWJsZXM7CiAgICAgbV9mZWF0dXJlcyA9IGZlYXR1cmVzOwog
ICAgIG1fbnVtQ29uc3RhbnRzID0gbnVtQ29uc3RhbnRzOwogfQpAQCAtMjM2Miw2ICsyMzc5LDEw
IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+IHZvaWQgUGFyc2VyPExleGVyVHlwZT46
OnByaW50VW5leHBlY3RlZFRva2VuVGV4dChXCiAgICAgY2FzZSBSRVNFUlZFRDoKICAgICAgICAg
b3V0LnByaW50KCJVbmV4cGVjdGVkIHVzZSBvZiByZXNlcnZlZCB3b3JkICciLCBnZXRUb2tlbigp
LCAiJyIpOwogICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIElOVkFMSURfUFJJVkFURV9OQU1F
X0VSUk9SVE9LOgorICAgICAgICBvdXQucHJpbnQoIkludmFsaWQgcHJpdmF0ZSBuYW1lICciLCBn
ZXRUb2tlbigpLCAiJyIpOworICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAKICAgICBjYXNl
IElERU5UOgogICAgICAgICBvdXQucHJpbnQoIlVuZXhwZWN0ZWQgaWRlbnRpZmllciAnIiwgZ2V0
VG9rZW4oKSwgIiciKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGI2
OThlZjkzNjhjYjhjOGYxOTdjY2QwMDBhY2FhNmRmYjExYmEyNDQuLmQ2OTg4ZTdlYTYzNzAyNzcy
NTVjMDgzOTAwYzkxZmI2OTFiY2I4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaApAQCAtMjU5LDYgKzI1OSwxMCBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICByZXR1cm4g
aXNWYWxpZFN0cmljdE1vZGUgPyBCaW5kaW5nU3VjY2VlZGVkIDogU3RyaWN0QmluZGluZ0ZhaWxl
ZDsKICAgICB9CiAKKyAgICB2b2lkIGdldFVzZWRWYXJpYWJsZXMoSWRlbnRpZmllclNldCYgdXNl
ZFZhcmlhYmxlcykKKyAgICB7CisgICAgICAgIHVzZWRWYXJpYWJsZXMuc3dhcChtX3VzZWRWYXJp
YWJsZXMpOworICAgIH0KIAogICAgIHZvaWQgdXNlVmFyaWFibGUoY29uc3QgSWRlbnRpZmllciog
aWRlbnQsIGJvb2wgaXNFdmFsKQogICAgIHsKQEAgLTQxNCw2ICs0MTgsNyBAQCBwdWJsaWM6CiAg
ICAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYpOwogCiAgICAgSlNU
ZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bGV4ZXItPnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsgfQorICAgIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8U3RyaW5nSW1wbD4+JiYgY2xvc2VkVmFyaWFibGVzKCkgeyByZXR1cm4gc3RkOjptb3Zl
KG1fY2xvc2VkVmFyaWFibGVzKTsgfQogCiBwcml2YXRlOgogICAgIHN0cnVjdCBBbGxvd0luT3Zl
cnJpZGUgewpAQCAtNTQwLDcgKzU0NSw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIHBhcnNlSW5u
ZXIoKTsKIAogICAgIHZvaWQgZGlkRmluaXNoUGFyc2luZyhTb3VyY2VFbGVtZW50cyosIFBhcnNl
ckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+KiwgCi0gICAgICAgIFBhcnNl
ckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qLCBDb2RlRmVhdHVy
ZXMsIGludCwgSWRlbnRpZmllclNldCYpOworICAgICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFy
YXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KiwgQ29kZUZlYXR1cmVzLCBpbnQsIElkZW50aWZp
ZXJTZXQmLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmKTsKIAogICAgIC8vIFVz
ZWQgdG8gZGV0ZXJtaW5lIHR5cGUgb2YgZXJyb3IgdG8gcmVwb3J0LgogICAgIGJvb2wgaXNGdW5j
dGlvbkJvZHlOb2RlKFNjb3BlTm9kZSopIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC04NDAsOSArODQ1
LDExIEBAIHByaXZhdGU6CiAgICAgY29uc3QgSWRlbnRpZmllciogbV9sYXN0RnVuY3Rpb25OYW1l
OwogICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlckNhY2hlPiBtX2Z1bmN0aW9uQ2FjaGU7CiAgICAg
U291cmNlRWxlbWVudHMqIG1fc291cmNlRWxlbWVudHM7CisgICAgYm9vbCBtX3BhcnNpbmdCdWls
dGluOwogICAgIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+KiBt
X3ZhckRlY2xhcmF0aW9uczsKICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6
OkZ1bmN0aW9uU3RhY2s+KiBtX2Z1bmNEZWNsYXJhdGlvbnM7CiAgICAgSWRlbnRpZmllclNldCBt
X2NhcHR1cmVkVmFyaWFibGVzOworICAgIFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+IG1fY2xv
c2VkVmFyaWFibGVzOwogICAgIENvZGVGZWF0dXJlcyBtX2ZlYXR1cmVzOwogICAgIGludCBtX251
bUNvbnN0YW50czsKICAgICAKQEAgLTk1Nyw2ICs5NjQsMTIgQEAgUGFzc1JlZlB0cjxQYXJzZWRO
b2RlPiBwYXJzZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25QYXJh
bWV0ZXIKICAgICAgICAgUmVmUHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQ
YXJzZWROb2RlPihlcnJvcik7CiAgICAgICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5l
KQogICAgICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRp
b25CZWZvcmVMYXN0TmV3bGluZSgpOworICAgICAgICBpZiAoc3RyaWN0bmVzcyA9PSBKU1BhcnNl
QnVpbHRpbikgeworICAgICAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICAgICAgV1RG
OjpkYXRhTG9nKCJFcnJvciBjb21waWxpbmcgYnVpbHRpbjogIiwgZXJyb3IubV9tZXNzYWdlLCAi
XG4iKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgICAgICAgICBy
ZXN1bHQtPnNldENsb3NlZFZhcmlhYmxlcyhzdGQ6Om1vdmUocGFyc2VyLmNsb3NlZFZhcmlhYmxl
cygpKSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiAgICAg
fQogICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBwYXJhbWV0ZXJz
LCBuYW1lLCBzdHJpY3RuZXNzLCBwYXJzZXJNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyTW9kZXMuaAppbmRleCA1N2M5ZmZiNjFjYTI1OWFkMzc0MjZhNGQ4ZDk2Zjdl
MjQ2MmFhYmNjLi45MzE0YjE5NzkwYTBkNTU4YWU0ZDI0ZjFmYzYyMTE3NWZmZmQ0MjdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCkBAIC0zMSw3ICszMSw3
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1lbnVtIEpTUGFyc2VyU3RyaWN0bmVzcyB7IEpTUGFy
c2VOb3JtYWwsIEpTUGFyc2VTdHJpY3QgfTsKK2VudW0gSlNQYXJzZXJTdHJpY3RuZXNzIHsgSlNQ
YXJzZU5vcm1hbCwgSlNQYXJzZUJ1aWx0aW4sIEpTUGFyc2VTdHJpY3QgfTsKIGVudW0gSlNQYXJz
ZXJNb2RlIHsgSlNQYXJzZVByb2dyYW1Db2RlLCBKU1BhcnNlRnVuY3Rpb25Db2RlIH07CiAKIGVu
dW0gUHJvZmlsZXJNb2RlIHsgUHJvZmlsZXJPZmYsIFByb2ZpbGVyT24gfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCmluZGV4IDgyYTI2NjM5YTc5MjIwYTA4
NDQ1NmI0OGYzMjg1MmQxNDNjNzM5ZDAuLjhjODdhZDlmYWRiZGM0YWYzOWFjOTlkYjJkODQ0NWUx
M2ZmZmQzNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
VG9rZW5zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMu
aApAQCAtMTQ5LDYgKzE0OSw3IEBAIGVudW0gSlNUb2tlblR5cGUgewogICAgIElOVkFMSURfTlVN
RVJJQ19MSVRFUkFMX0VSUk9SVE9LID0gNyB8IEVycm9yVG9rZW5GbGFnLAogICAgIFVOVEVSTUlO
QVRFRF9TVFJJTkdfTElURVJBTF9FUlJPUlRPSyA9IDggfCBFcnJvclRva2VuRmxhZyB8IFVudGVy
bWluYXRlZEVycm9yVG9rZW5GbGFnLAogICAgIElOVkFMSURfU1RSSU5HX0xJVEVSQUxfRVJST1JU
T0sgPSA5IHwgRXJyb3JUb2tlbkZsYWcsCisgICAgSU5WQUxJRF9QUklWQVRFX05BTUVfRVJST1JU
T0sgPSAxMCB8IEVycm9yVG9rZW5GbGFnCiB9OwogCiBzdHJ1Y3QgSlNUZXh0UG9zaXRpb24gewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmlu
ZGV4IDEzZDc4M2NhNmQxNmMxNDMyMDA2NmJmM2FlMWE1ZDZjYjE4ZDgxYzEuLmM1NWNjMWUzMTRl
NWMxNzIyMWE1ZTcwYjU4ZmNlYzM1MzRlMDZlNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTU2LDcgKzU2LDYgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTbGljZShFeGVjU3Rh
dGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5j
U29ydChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFy
cmF5UHJvdG9GdW5jU3BsaWNlKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNVblNoaWZ0KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNFdmVyeShFeGVjU3RhdGUq
KTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRm9y
RWFjaChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFy
cmF5UHJvdG9GdW5jU29tZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jSW5kZXhPZihFeGVjU3RhdGUqKTsKQEAgLTk1NSw2OSAr
OTU0LDYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY01hcChF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHRBcnJheSk7
CiB9CiAKLS8vIERvY3VtZW50YXRpb24gZm9yIHRoZXNlIHRocmVlIGlzIGF2YWlsYWJsZSBhdDoK
LS8vIGh0dHA6Ly9kZXZlbG9wZXItdGVzdC5tb3ppbGxhLm9yZy9lbi9kb2NzL0NvcmVfSmF2YVNj
cmlwdF8xLjVfUmVmZXJlbmNlOk9iamVjdHM6QXJyYXk6ZXZlcnkKLS8vIGh0dHA6Ly9kZXZlbG9w
ZXItdGVzdC5tb3ppbGxhLm9yZy9lbi9kb2NzL0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNl
Ok9iamVjdHM6QXJyYXk6Zm9yRWFjaAotLy8gaHR0cDovL2RldmVsb3Blci10ZXN0Lm1vemlsbGEu
b3JnL2VuL2RvY3MvQ29yZV9KYXZhU2NyaXB0XzEuNV9SZWZlcmVuY2U6T2JqZWN0czpBcnJheTpz
b21lCi0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNFdmVyeShF
eGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNPYmplY3QqIHRoaXNPYmogPSBleGVjLT5ob3N0VGhp
c1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOwotICAgIHVu
c2lnbmVkIGxlbmd0aCA9IHRoaXNPYmotPmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
bGVuZ3RoKS50b1VJbnQzMihleGVjKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KLSAgICBKU1Zh
bHVlIGZ1bmN0aW9uID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgQ2FsbERhdGEgY2FsbERhdGE7
Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEp
OwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOwotCi0gICAgSlNWYWx1ZSBhcHBseVRoaXMgPSBleGVjLT5hcmd1
bWVudCgxKTsKLQotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKHRydWUpOwotCi0gICAg
dW5zaWduZWQgayA9IDA7Ci0gICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlSlMgJiYgaXNKU0Fy
cmF5KHRoaXNPYmopKSB7Ci0gICAgICAgIEpTRnVuY3Rpb24qIGYgPSBqc0Nhc3Q8SlNGdW5jdGlv
bio+KGZ1bmN0aW9uKTsKLSAgICAgICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KHRoaXNPYmop
OwotICAgICAgICBDYWNoZWRDYWxsIGNhY2hlZENhbGwoZXhlYywgZiwgMyk7Ci0gICAgICAgIGZv
ciAoOyBrIDwgbGVuZ3RoICYmICFleGVjLT5oYWRFeGNlcHRpb24oKTsgKytrKSB7Ci0gICAgICAg
ICAgICBpZiAoVU5MSUtFTFkoIWFycmF5LT5jYW5HZXRJbmRleFF1aWNrbHkoaykpKQotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWNoZWRDYWxsLnNl
dFRoaXMoYXBwbHlUaGlzKTsKLSAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoMCwg
YXJyYXktPmdldEluZGV4UXVpY2tseShrKSk7Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFy
Z3VtZW50KDEsIGpzTnVtYmVyKGspKTsKLSAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1l
bnQoMiwgdGhpc09iaik7Ci0gICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhY2hlZENhbGwu
Y2FsbCgpOwotICAgICAgICAgICAgaWYgKCFyZXN1bHQudG9Cb29sZWFuKGV4ZWMpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgZm9yICg7IGsgPCBsZW5ndGggJiYgIWV4ZWMtPmhhZEV4Y2VwdGlv
bigpOyArK2spIHsKLSAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iaik7Ci0gICAgICAg
IGlmICghdGhpc09iai0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGssIHNsb3QpKQotICAgICAgICAg
ICAgY29udGludWU7Ci0KLSAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgZWFjaEFyZ3VtZW50
czsKLSAgICAgICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQoc2xvdC5nZXRWYWx1ZShleGVjLCBrKSk7
Ci0gICAgICAgIGVhY2hBcmd1bWVudHMuYXBwZW5kKGpzTnVtYmVyKGspKTsKLSAgICAgICAgZWFj
aEFyZ3VtZW50cy5hcHBlbmQodGhpc09iaik7Ci0KLSAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKLQotICAgICAgICBib29sIHByZWRpY2F0ZVJlc3VsdCA9IGNhbGwoZXhlYywgZnVuY3Rpb24s
IGNhbGxUeXBlLCBjYWxsRGF0YSwgYXBwbHlUaGlzLCBlYWNoQXJndW1lbnRzKS50b0Jvb2xlYW4o
ZXhlYyk7Ci0gICAgICAgIGlmICghcHJlZGljYXRlUmVzdWx0KSB7Ci0gICAgICAgICAgICByZXN1
bHQgPSBqc0Jvb2xlYW4oZmFsc2UpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci19Ci0KIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNGb3JFYWNoKEV4ZWNTdGF0ZSogZXhl
YykKIHsKICAgICBKU09iamVjdCogdGhpc09iaiA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKS50b1Ro
aXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCAzY2FlZTMyM2JhYjI4OTU0ZWVlNGE2MTQ1
ZjcwN2ZmMTM4YzNhYjNmLi42ZGUxMDQ0NGNhOTNhYjdlODBmNjUzYmRiOGM2OGI1ZDcwMjI3ZDli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTE0
NCwyNCArMTQ0LDI2IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6Omdl
dEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZNJiB2CiAgICAgSlNUZXh0UG9zaXRp
b24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZTsKICAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHBy
b2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oJnZtLCBzb3VyY2UsIDAsIElkZW50aWZpZXIoKSwg
SlNQYXJzZU5vcm1hbCwgSlNQYXJzZVByb2dyYW1Db2RlLCBlcnJvciwgJnBvc2l0aW9uQmVmb3Jl
TGFzdE5ld2xpbmUpOwogICAgIGlmICghcHJvZ3JhbSkgewotICAgICAgICBBU1NFUlQoZXJyb3Iu
bV90eXBlICE9IFBhcnNlckVycm9yOjpFcnJvck5vbmUpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VChlcnJvci5tX3R5cGUgIT0gUGFyc2VyRXJyb3I6OkVycm9yTm9uZSk7CiAgICAgICAgIG1fc291
cmNlQ29kZS5yZW1vdmUoYWRkUmVzdWx0Lml0ZXJhdG9yKTsKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBhc3N1bWVzIGFuIGlucHV0IHN0cmluZyB0aGF0
IHdvdWxkIHJlc3VsdCBpbiBhIHNpbmdsZSBhbm9ueW1vdXMgZnVuY3Rpb24gZXhwcmVzc2lvbi4K
ICAgICBTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVtZW50ID0gcHJvZ3JhbS0+c2luZ2xlU3RhdGVt
ZW50KCk7Ci0gICAgQVNTRVJUKGV4cHJTdGF0ZW1lbnQpOwotICAgIEFTU0VSVChleHByU3RhdGVt
ZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVu
dCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZXhwclN0YXRlbWVudC0+aXNFeHByU3RhdGVtZW50KCkp
OwogICAgIEV4cHJlc3Npb25Ob2RlKiBmdW5jRXhwciA9IHN0YXRpY19jYXN0PEV4cHJTdGF0ZW1l
bnROb2RlKj4oZXhwclN0YXRlbWVudCktPmV4cHIoKTsKLSAgICBBU1NFUlQoZnVuY0V4cHIpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmNFeHByKTsKICAgICBSRUxFQVNFX0FTU0VSVChmdW5jRXhw
ci0+aXNGdW5jRXhwck5vZGUoKSk7CiAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSA9IHN0YXRp
Y19jYXN0PEZ1bmNFeHByTm9kZSo+KGZ1bmNFeHByKS0+Ym9keSgpOworICAgIFJFTEVBU0VfQVNT
RVJUKCFwcm9ncmFtLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKKyAgICAKICAgICBib2R5LT5z
ZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKLSAgICBBU1NFUlQoYm9k
eSk7Ci0gICAgQVNTRVJUKGJvZHktPmlkZW50KCkuaXNOdWxsKCkpOworICAgIFJFTEVBU0VfQVNT
RVJUKGJvZHkpOworICAgIFJFTEVBU0VfQVNTRVJUKGJvZHktPmlkZW50KCkuaXNOdWxsKCkpOwog
Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIGJvZHksIHRydWUp
OworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBib2R5LCB0cnVl
LCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uKTsKICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPm1fbmFt
ZVZhbHVlLnNldCh2bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBqc1N0cmluZygmdm0sIG5hbWUuc3Ry
aW5nKCkpKTsKIAogICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBTb3VyY2VDb2RlVmFs
dWUodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwgbV9zb3VyY2VDb2RlLmFnZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcAppbmRl
eCAzZjVjNjQ1YzA5OGQ1MjdmYzBjNzI1OWU5NDQ3ZWZiZTg4NjhhMjljLi41NmRmMzQ1MDI4N2Zm
OTk5YTM4ZmNmNGNiNzE1MGU4NjFhNTY0M2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCkBAIC0yMSwxMyArMjEsMTUgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogCisj
aW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKICNpbmNs
dWRlICJQcml2YXRlTmFtZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogI2RlZmluZSBJTklUSUFM
SVpFX1BST1BFUlRZX05BTUUobmFtZSkgLCBuYW1lKHZtLCAjbmFtZSkKICNkZWZpbmUgSU5JVElB
TElaRV9LRVlXT1JEKG5hbWUpICwgbmFtZSMjS2V5d29yZCh2bSwgI25hbWUpCi0jZGVmaW5lIElO
SVRJQUxJWkVfUFJJVkFURV9OQU1FKG5hbWUpICwgbmFtZSMjUHJpdmF0ZU5hbWUoSWRlbnRpZmll
cjo6ZnJvbShQcml2YXRlTmFtZSgpKSkKKyNkZWZpbmUgSU5JVElBTElaRV9QUklWQVRFX05BTUUo
bmFtZSkgLCBuYW1lIyNQcml2YXRlTmFtZShtX2J1aWx0aW5OYW1lcy0+bmFtZSMjUHJpdmF0ZU5h
bWUoKSkKIAogQ29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZNKiB2bSkKICAg
ICA6IG51bGxJZGVudGlmaWVyKCkKQEAgLTM1LDExICszNywyNiBAQCBDb21tb25JZGVudGlmaWVy
czo6Q29tbW9uSWRlbnRpZmllcnMoVk0qIHZtKQogICAgICwgdW5kZXJzY29yZVByb3RvKHZtLCAi
X19wcm90b19fIikKICAgICAsIHRoaXNJZGVudGlmaWVyKHZtLCAidGhpcyIpCiAgICAgLCB1c2VT
dHJpY3RJZGVudGlmaWVyKHZtLCAidXNlIHN0cmljdCIpCi0gICAgLCBoYXNOZXh0SWRlbnRpZmll
cih2bSwgImhhc05leHQiKQorICAgICwgbV9idWlsdGluTmFtZXMobmV3IEJ1aWx0aW5OYW1lcyh2
bSwgdGhpcykpCiAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQoSU5JVElB
TElaRV9LRVlXT1JEKQogICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9O
QU1FKElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRSkKICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURF
TlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKQogewog
fQogCitDb21tb25JZGVudGlmaWVyczo6fkNvbW1vbklkZW50aWZpZXJzKCkKK3sKK30KKworY29u
c3QgSWRlbnRpZmllciogQ29tbW9uSWRlbnRpZmllcnM6OmdldFByaXZhdGVOYW1lKGNvbnN0IElk
ZW50aWZpZXImIGlkZW50KSBjb25zdAoreworICAgIHJldHVybiBtX2J1aWx0aW5OYW1lcy0+Z2V0
UHJpdmF0ZU5hbWUoaWRlbnQpOworfQorICAgIAorSWRlbnRpZmllciBDb21tb25JZGVudGlmaWVy
czo6Z2V0UHVibGljTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9idWlsdGluTmFtZXMtPmdldFB1YmxpY05hbWUoaWRlbnQpOworfQorCisKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmgKaW5kZXggMTdhNzE4OGNlYTc3NmIzYTllOGMwNmYxYWM1OTRmOWQzNTI4
MTUzMi4uZTJlYTJiMzkyYjk5YTg3OTJiNmMyOTU5ZTQ5NTk4M2YzMDUyYjJmNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0y
MDcsNiArMjA3LDggQEAKICAgICBtYWNybyh5aWVsZCkKIAogI2RlZmluZSBKU0NfQ09NTU9OX1BS
SVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKG1hY3JvKSBcCisgICAgbWFjcm8o
YXBwbHkpIFwKKyAgICBtYWNybyhjYWxsKSBcCiAgICAgbWFjcm8oaXRlcmF0b3IpIFwKICAgICBt
YWNybyhpdGVyYXRvck5leHQpIFwKICAgICBtYWNybyhyZXNvbHZlKSBcCkBAIC0yMTcsMjMgKzIx
OSwzMyBAQAogICAgIG1hY3JvKGluZGV4KSBcCiAgICAgbWFjcm8odmFsdWVzKSBcCiAgICAgbWFj
cm8oZGVmZXJyZWQpIFwKLSAgICBtYWNybyhjb3VudGRvd25Ib2xkZXIpCisgICAgbWFjcm8oY291
bnRkb3duSG9sZGVyKSBcCisgICAgbWFjcm8oT2JqZWN0KSBcCisgICAgbWFjcm8oVHlwZUVycm9y
KSBcCisgICAgbWFjcm8odW5kZWZpbmVkKQogCiBuYW1lc3BhY2UgSlNDIHsKLQorICAgIAorICAg
IGNsYXNzIEJ1aWx0aW5OYW1lczsKKyAgICAKICAgICBjbGFzcyBDb21tb25JZGVudGlmaWVycyB7
CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvbW1vbklkZW50aWZpZXJzKTsgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHJpdmF0ZToKICAgICAgICAgQ29tbW9uSWRlbnRpZmll
cnMoVk0qKTsKKyAgICAgICAgfkNvbW1vbklkZW50aWZpZXJzKCk7CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBWTTsKLQorICAgICAgICAKICAgICBwdWJsaWM6CisgICAgICAgIGNvbnN0IEJ1aWx0aW5O
YW1lcyYgYnVpbHRpbk5hbWVzKCkgY29uc3QgeyByZXR1cm4gKm1fYnVpbHRpbk5hbWVzOyB9CiAg
ICAgICAgIGNvbnN0IElkZW50aWZpZXIgbnVsbElkZW50aWZpZXI7CiAgICAgICAgIGNvbnN0IElk
ZW50aWZpZXIgZW1wdHlJZGVudGlmaWVyOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyIHVuZGVy
c2NvcmVQcm90bzsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciB0aGlzSWRlbnRpZmllcjsKICAg
ICAgICAgY29uc3QgSWRlbnRpZmllciB1c2VTdHJpY3RJZGVudGlmaWVyOwotICAgICAgICBjb25z
dCBJZGVudGlmaWVyIGhhc05leHRJZGVudGlmaWVyOworICAgIHByaXZhdGU6CisgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxCdWlsdGluTmFtZXM+IG1fYnVpbHRpbk5hbWVzOworCisgICAgcHVibGlj
OgogICAgICAgICAKICNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9LRVlXT1JEX05BTUVf
R0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSMjS2V5d29yZDsKICAgICAgICAgSlND
X0NPTU1PTl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQoSlNDX0lERU5USUZJRVJfREVDTEFSRV9L
RVlXT1JEX05BTUVfR0xPQkFMKQpAQCAtMjQ2LDYgKzI1OCw5IEBAIG5hbWVzcGFjZSBKU0Mgewog
I2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9C
QUwobmFtZSkgY29uc3QgSWRlbnRpZmllciBuYW1lIyNQcml2YXRlTmFtZTsKICAgICAgICAgSlND
X0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShKU0NfSURFTlRJ
RklFUl9ERUNMQVJFX1BSSVZBVEVfUFJPUEVSVFlfTkFNRV9HTE9CQUwpCiAjdW5kZWYgSlNDX0lE
RU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVfR0xPQkFMCisgICAgICAgIAor
ICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVy
JikgY29uc3Q7CisgICAgICAgIElkZW50aWZpZXIgZ2V0UHVibGljTmFtZShjb25zdCBJZGVudGlm
aWVyJikgY29uc3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IDU1NjNi
ZTZiYjMzNTY1NjhhNTNlODIxNWIyMmNlM2M0Zjc2ZTdjMjIuLjJiNjExODMzMjdjNjQzMTBjZTIy
ODU4YmE0MjJlNThhNWUxNTUyMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC04MSw2ICs4MSwxMSBAQCBKU09iamVjdCog
Y3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAK
IEpTT2JqZWN0KiBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7CisgICAgCisgICAgaWYgKGlkZW50LmltcGwoKS0+
aXNFbXB0eVVuaXF1ZSgpKSB7CisgICAgICAgIFN0cmluZyBtZXNzYWdlKG1ha2VTdHJpbmcoIkNh
bid0IGZpbmQgcHJpdmF0ZSB2YXJpYWJsZTogQCIsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZXRQ
dWJsaWNOYW1lKGlkZW50KS5zdHJpbmcoKSkpOworICAgICAgICByZXR1cm4gY3JlYXRlUmVmZXJl
bmNlRXJyb3IoZXhlYywgbWVzc2FnZSk7CisgICAgfQogICAgIFN0cmluZyBtZXNzYWdlKG1ha2VT
dHJpbmcoIkNhbid0IGZpbmQgdmFyaWFibGU6ICIsIGlkZW50LnN0cmluZygpKSk7CiAgICAgcmV0
dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIG1lc3NhZ2UpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IDU3ZTZhZTM1YTg1ZmQ3ODAxNGVm
MjlkNzQxNjFkYzc5MjhkODllY2YuLmZiMDVlNWFjYjBlMjE1NThmZWQyMDI1NTdlNjVlYTY4ODQ1
MWQ4NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAg
LTQ4NCw3ICs0ODQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyQ29kZSgpOwogCi0gICAg
RXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxl
SW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNl
KTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4g
RXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9k
ZSgpLCBmYWxzZSwgZmFsc2UpOyB9CiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJl
dHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNp
Z25lZCBudW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVC
bG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KQEAgLTU0MCw3ICs1NDAsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGNsZWFyQ29kZSgpOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0
YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24o
KSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJ
bmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNB
Y3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UpOyB9
CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CkBAIC02MzAs
NiArNjMwLDcgQEAgcHVibGljOgogICAgIH0KICAgICAgICAgCiAgICAgRnVuY3Rpb25Nb2RlIGZ1
bmN0aW9uTW9kZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5mdW5jdGlvbk1vZGUo
KTsgfQorICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlu
a2VkRXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKTsgfQogICAgIGNvbnN0IElkZW50aWZp
ZXImIG5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZSgpOyB9CiAgICAg
Y29uc3QgSWRlbnRpZmllciYgaW5mZXJyZWROYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1
dGFibGUtPmluZmVycmVkTmFtZSgpOyB9CiAgICAgSlNTdHJpbmcqIG5hbWVWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1lVmFsdWUoKTsgfQpAQCAtNjc3LDE0
ICs2NzgsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kaWRQYXJzZUZvclRoZUZpcnN0VGltZTsK
IH07CiAKLWlubGluZSBib29sIGlzSG9zdEZ1bmN0aW9uKEpTVmFsdWUgdmFsdWUsIE5hdGl2ZUZ1
bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uKQotewotICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganND
YXN0PEpTRnVuY3Rpb24qPihnZXRKU0Z1bmN0aW9uKHZhbHVlKSk7Ci0gICAgaWYgKCFmdW5jdGlv
biB8fCAhZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXR1cm4gZnVuY3Rpb24tPm5hdGl2ZUZ1bmN0aW9uKCkgPT0gbmF0aXZlRnVuY3Rpb247
Ci19Ci0KIGlubGluZSB2b2lkIEV4ZWN1dGFibGVCYXNlOjpjbGVhckNvZGVWaXJ0dWFsKEV4ZWN1
dGFibGVCYXNlKiBleGVjdXRhYmxlKQogewogICAgIHN3aXRjaCAoZXhlY3V0YWJsZS0+c3RydWN0
dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKaW5kZXggMzZjYjEzNzYwM2M2NmU2MjU2
MTNmOWYxZTg0YWJmMjQ2NjY1YmQ3MS4uYTYyM2NmMzk5YzEzNGYxNTBhMjc2NjljOWI4ZGM3Y2Ux
ZjAyNjJlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25Qcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUHJvdG90eXBlLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNW
YWx1ZS5pbmhlcml0cyhKU0Z1bmN0aW9uOjppbmZvKCkpKSB7CiAgICAgICAgIEpTRnVuY3Rpb24q
IGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPih0aGlzVmFsdWUpOwotICAgICAgICBpZiAo
ZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0
T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiZnVuY3Rpb24gIiwgZnVuY3Rpb24tPm5hbWUo
ZXhlYyksICIoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKTsKICAgICAgICAgRnVuY3Rpb25F
eGVjdXRhYmxlKiBleGVjdXRhYmxlID0gZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpOwogICAgICAg
ICBTdHJpbmcgc291cmNlU3RyaW5nID0gZXhlY3V0YWJsZS0+c291cmNlKCkudG9TdHJpbmcoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCmluZGV4
IGUxNzcxOTQ2ZDY1OTc3OTBjMTUxZGNhYWQ5ZWIzZWUzOTdlYWE3ZDYuLmNhNGMwMTQ3ZjQ2Nzc2
ODcyZmQ2NzEzNzAwNTBiYzRkNzllY2IxZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIEpTQWN0aXZh
dGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
CiBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICBTeW1ib2xUYWJsZUVudHJ5
IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1l
KCkpOworICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVH
ZXQocHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoZW50cnkuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIApAQCAtNzIsNyArNzIsNyBAQCBpbmxpbmUgYm9vbCBKU0FjdGl2YXRp
b246OnN5bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dAogCiBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlR2V0KFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKLSAgICBT
eW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5
TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xU
YWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoZW50cnkuaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtODksNyArODksNyBAQCBpbmxpbmUg
Ym9vbCBKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TgogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgQVNTRVJUKCFI
ZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMp
KTsKICAgICAKLSAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5s
aW5lR2V0KHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlRW50cnkg
ZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQocHJvcGVydHlOYW1lLnVpZCgpKTsKICAg
ICBpZiAoZW50cnkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoZW50
cnkuaXNSZWFkT25seSgpKSB7CkBAIC0xMzYsNyArMTM2LDcgQEAgaW5saW5lIGJvb2wgSlNBY3Rp
dmF0aW9uOjpzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKFZNJiB2bSwgUHJvcGVydHlOYW1l
IHByb3AKICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiByZWc7CiAgICAgewogICAgICAg
ICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZSgpLT5tX2xvY2spOwotICAg
ICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUoKS0+Zmlu
ZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgICAgICBTeW1ib2xUYWJs
ZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUoKS0+ZmluZChsb2NrZXIsIHByb3Bl
cnR5TmFtZS51aWQoKSk7CiAgICAgICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlKCktPmVuZChs
b2NrZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBTeW1ib2xUYWJsZUVu
dHJ5JiBlbnRyeSA9IGl0ZXItPnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcAppbmRleCBiZGM0NWM1MjU1ZGIxMzJhZDJhMjA0NTExNjQ3MzYzODkz
MDI5ZDVmLi41YWM4NGVkOWYxODg3YWFmYmJmOWY5MTFmN2NiNmJkODg2N2UyMDUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtMzMsNyArMzMs
OCBAQAogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0
dGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgotI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5o
IiAKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNOYW1lU2Nv
cGUuaCIgCiAjaW5jbHVkZSAiSlNOb3RBbk9iamVjdC5oIgpAQCAtMTE5LDYgKzEyMCwxNCBAQCB2
b2lkIEpTRnVuY3Rpb246OmFkZE5hbWVTY29wZUlmTmVlZGVkKFZNJiB2bSkKICAgICBtX3Njb3Bl
LnNldCh2bSwgdGhpcywgSlNOYW1lU2NvcGU6OmNyZWF0ZSh2bSwgbV9zY29wZS0+Z2xvYmFsT2Jq
ZWN0KCksIGV4ZWN1dGFibGUtPm5hbWUoKSwgdGhpcywgUmVhZE9ubHkgfCBEb250RGVsZXRlLCBt
X3Njb3BlLmdldCgpKSk7CiB9CiAKK0pTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0
aW5GdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNy
ZWF0ZSh2bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBmdW5jdGlvbi0+cHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc1N0cmluZygmdm0sIGV4ZWN1dGFibGUt
Pm5hbWUoKS5zdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAg
ICBmdW5jdGlvbi0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVt
YmVyKGV4ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkg
fCBEb250RW51bSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uOworfQorCiBPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZSogSlNGdW5jdGlvbjo6Y3JlYXRlQWxsb2NhdGlvblByb2ZpbGUoRXhlY1N0YXRlKiBl
eGVjLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
QEAgLTE1Miw3ICsxNjEsNyBAQCBjb25zdCBTdHJpbmcgSlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERp
c3BsYXlOYW1lKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIGV4cGxpY2l0TmFtZTsK
ICAgICAKICAgICBjb25zdCBTdHJpbmcgYWN0dWFsTmFtZSA9IG5hbWUoZXhlYyk7Ci0gICAgaWYg
KCFhY3R1YWxOYW1lLmlzRW1wdHkoKSB8fCBpc0hvc3RGdW5jdGlvbigpKQorICAgIGlmICghYWN0
dWFsTmFtZS5pc0VtcHR5KCkgfHwgaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAg
cmV0dXJuIGFjdHVhbE5hbWU7CiAgICAgCiAgICAgcmV0dXJuIGpzRXhlY3V0YWJsZSgpLT5pbmZl
cnJlZE5hbWUoKS5zdHJpbmcoKTsKQEAgLTE2MCwxMCArMTY5LDIwIEBAIGNvbnN0IFN0cmluZyBK
U0Z1bmN0aW9uOjpjYWxjdWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQogCiBjb25z
dCBTb3VyY2VDb2RlKiBKU0Z1bmN0aW9uOjpzb3VyY2VDb2RlKCkgY29uc3QKIHsKLSAgICBpZiAo
aXNIb3N0RnVuY3Rpb24oKSkKKyAgICBpZiAoaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuICZqc0V4ZWN1dGFibGUoKS0+c291cmNlKCk7CiB9
CisgICAgCitib29sIEpTRnVuY3Rpb246OmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gaXNIb3N0RnVuY3Rpb24oKSB8fCBpc0J1aWx0aW5GdW5jdGlvbigpOwor
fQorCitib29sIEpTRnVuY3Rpb246OmlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gIWlzSG9zdEZ1bmN0aW9uKCkgJiYganNFeGVjdXRhYmxlKCktPmlzQnVpbHRpbkZ1bmN0
aW9uKCk7Cit9CiAKIHZvaWQgSlNGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewpAQCAtMjg3LDcgKzMwNiw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTRnVuY3Rpb246OmNhbGxlckdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBz
bG90QmFzZSwgRW5jCiAgICAgaWYgKCFjYWxsZXIuaXNPYmplY3QoKSB8fCAhYXNPYmplY3QoY2Fs
bGVyKS0+aW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShjYWxsZXIpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpT
RnVuY3Rpb24qPihjYWxsZXIpOwotICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSB8
fCAhZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkKKyAgICBpZiAoZnVu
Y3Rpb24tPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgfHwgIWZ1bmN0aW9uLT5qc0V4ZWN1dGFi
bGUoKS0+aXNTdHJpY3RNb2RlKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2Fs
bGVyKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiRnVuY3Rpb24uY2FsbGVyIHVzZWQgdG8gcmV0cmlldmUgc3RyaWN0IGNhbGxl
ciIpKSk7CiB9CkBAIC0zMDksNyArMzI4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNGdW5jdGlvbjo6
bmFtZUdldHRlcihFeGVjU3RhdGUqLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1YKIGJv
b2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9i
amVjdCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgaWYgKHRo
aXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBCYXNl
OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90
KTsKIAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3Rv
dHlwZSkgewpAQCAtMzcxLDcgKzM5MCw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVy
dHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiB2b2lk
IEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVt
ZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICghdGhpc09iamVjdC0+aXNIb3N0RnVuY3Rp
b24oKSAmJiAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgeworICAgIGlmICgh
dGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSAmJiAobW9kZSA9PSBJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKSkgewogICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90eXBlIGhh
cyBiZWVuIHJlaWZpZWQuCiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QpOwog
ICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhp
c09iamVjdCwgZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgc2xvdCk7CkBA
IC0zODcsNyArNDA2LDcgQEAgdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLAogdm9pZCBKU0Z1bmN0aW9u
OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1
bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKLSAgICBpZiAo
dGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSkgeworICAgIGlmICh0aGlzT2JqZWN0LT5pc0hv
c3RPckJ1aWx0aW5GdW5jdGlvbigpKSB7CiAgICAgICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTQzNSw3ICs0NTQsNyBAQCBib29sIEpTRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcAogYm9vbCBKU0Z1bmN0
aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICh0aGlzT2JqZWN0LT5p
c0hvc3RGdW5jdGlvbigpKQorICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5j
dGlvbigpKQogICAgICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKTsKIAogICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IGEyNDhlMTZmZGNk
ODMwZGY4MmEyNDc3NmM1ZjQ1MGNjOWJmYWFkZmEuLmY3YjdmMTYzM2NkODcxYzY3YmNmMjVhMDA0
OWQ3OTNjYmNiNjdlYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmgKQEAgLTY4LDYgKzY4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1
cm4gZnVuY3Rpb247CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHN0YXRpYyBKU0Z1bmN0
aW9uKiBjcmVhdGVCdWlsdGluRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU0ds
b2JhbE9iamVjdCopOworICAgICAgICAKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0Nl
bGwqKTsKICAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBuYW1lKEV4
ZWNTdGF0ZSopOwpAQCAtMTQ2LDYgKzE0OCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIHJldHVybiBtX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDsKICAgICAgICAgfQogCisg
ICAgICAgIGJvb2wgaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSBjb25zdDsKKyAgICAgICAgYm9v
bCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBi
b29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CisKICAgICBwcm90ZWN0ZWQ6CiAg
ICAgICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dl
dE93blByb3BlcnR5U2xvdCB8IEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IE92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVy
ZUZsYWdzOwogCkBAIC0xNzAsOCArMTc2LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0
ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAg
Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUo
KSBjb25zdDsKLQogICAgICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgYXJndW1lbnRzR2V0dGVy
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CiAg
ICAgICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjYWxsZXJHZXR0ZXIoRXhlY1N0YXRlKiwgSlNP
YmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKICAgICAgICAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIGxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBKU09iamVjdCosIEVuY29kZWRK
U1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKaW5kZXggZmU0ZTExNGFkYmMyMzY3NGQzYjYwZTYxZjcx
Y2I3YTA2Yzk0Nzg0ZC4uNjlmMGQ0ZjM5NmVmOWMyZGE5ZTBiZjYwOGMyNjQ0MTcxNzk5YmE1MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5l
cy5oCkBAIC01MywxNiArNTMsMjQgQEAgaW5saW5lIGJvb2wgSlNGdW5jdGlvbjo6aXNIb3N0RnVu
Y3Rpb24oKSBjb25zdAogCiBpbmxpbmUgTmF0aXZlRnVuY3Rpb24gSlNGdW5jdGlvbjo6bmF0aXZl
RnVuY3Rpb24oKQogewotICAgIEFTU0VSVChpc0hvc3RGdW5jdGlvbigpKTsKKyAgICBBU1NFUlQo
aXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5hdGl2
ZUV4ZWN1dGFibGUqPihtX2V4ZWN1dGFibGUuZ2V0KCkpLT5mdW5jdGlvbigpOwogfQogCiBpbmxp
bmUgTmF0aXZlRnVuY3Rpb24gSlNGdW5jdGlvbjo6bmF0aXZlQ29uc3RydWN0b3IoKQogewotICAg
IEFTU0VSVChpc0hvc3RGdW5jdGlvbigpKTsKKyAgICBBU1NFUlQoaXNIb3N0RnVuY3Rpb25Ob25J
bmxpbmUoKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5hdGl2ZUV4ZWN1dGFibGUqPihtX2V4
ZWN1dGFibGUuZ2V0KCkpLT5jb25zdHJ1Y3RvcigpOwogfQogCitpbmxpbmUgYm9vbCBpc0hvc3RG
dW5jdGlvbihKU1ZhbHVlIHZhbHVlLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbikKK3sK
KyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZ2V0SlNGdW5j
dGlvbih2YWx1ZSkpOworICAgIGlmICghZnVuY3Rpb24gfHwgIWZ1bmN0aW9uLT5pc0hvc3RGdW5j
dGlvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGZ1bmN0aW9uLT5uYXRp
dmVGdW5jdGlvbigpID09IG5hdGl2ZUZ1bmN0aW9uOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MK
IAogI2VuZGlmIC8vIEpTRnVuY3Rpb25JbmxpbmVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBiZjgzYjhhNmVjMjMxNTE5YTU2
YmQ5MjU2NmYwYjFhNjQ1ODljYWJiLi5mOTAxNTk3M2M3M2RhZTdkOTllYjFlMGVhYTdkNGExYzBi
M2E4N2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCkBAIC0zNTMsNyArMzUzLDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQo
SlNWYWx1ZSBwcm90b3R5cGUpCiAKICAgICAvLyBDb25zdHJ1Y3RvcnMKIAotICAgIEpTQ2VsbCog
b2JqZWN0Q29uc3RydWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBPYmplY3RD
b25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBl
LmdldCgpKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOworICAgIE9iamVjdENvbnN0cnVjdG9y
KiBvYmplY3RDb25zdHJ1Y3RvciA9IE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIE9iamVj
dENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5
cGUuZ2V0KCkpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9vYmplY3RDb25zdHJ1
Y3Rvci5zZXQodm0sIHRoaXMsIG9iamVjdENvbnN0cnVjdG9yKTsKICAgICBKU0NlbGwqIGZ1bmN0
aW9uQ29uc3RydWN0b3IgPSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEZ1bmN0aW9u
Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlw
ZS5nZXQoKSksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwogICAgIEpTQ2VsbCogYXJyYXlD
b25zdHJ1Y3RvciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgQXJyYXlDb25zdHJ1Y3Rv
cjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwg
bV9hcnJheVByb3RvdHlwZS5nZXQoKSk7CiAKQEAgLTQzOSw3ICs0NDAsMTAgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgR2xvYmFsUHJvcGVydHlJ
bmZvIHN0YXRpY0dsb2JhbHNbXSA9IHsKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPk5hTiwganNOYU4oKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9u
bHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+SW5maW5p
dHksIGpzTnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSksIERv
bnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJ
bmZvKHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQsIGpzVW5kZWZpbmVkKCksIERv
bnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KQorICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCwganNVbmRlZmluZWQoKSwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkUHJpdmF0ZU5hbWUsIGpzVW5kZWZpbmVkKCks
IERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPk9iamVjdFByaXZhdGVOYW1lLCBvYmplY3RDb25zdHJ1
Y3RvciwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+VHlwZUVycm9yUHJpdmF0ZU5hbWUsIG1fdHlw
ZUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KQogICAgIH07CiAgICAgYWRkU3RhdGljR2xvYmFscyhzdGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlf
TEVOR1RIKHN0YXRpY0dsb2JhbHMpKTsKICAgICAKQEAgLTYxNSw2ICs2MTksNyBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3ludGF4RXJyb3JDb25z
dHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdHlwZUVycm9yQ29u
c3RydWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX1VSSUVycm9yQ29u
c3RydWN0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX29iamVjdENvbnN0
cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcm9taXNlQ29uc3Ry
dWN0b3IpOwogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZXZhbEZ1bmN0aW9u
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmlu
ZGV4IGY5ODdlNGEwMDk3NDhiMzk0Nzc3MmM1NTQ5Y2IwNDNjMzIwYmU4NjEuLjZlOTQ5Mjk2MTli
NjQ0MDA0ZjA3ZWI5MWY0N2FiZGE2Y2NmMmVhOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNjgsNiArNjgsNyBAQCBjbGFzcyBKU1N0
YWNrOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgTWljcm90YXNrOwogY2xh
c3MgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjsKK2NsYXNzIE9iamVjdENvbnN0cnVjdG9yOwogY2xh
c3MgUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwogY2xhc3MgUmVn
RXhwQ29uc3RydWN0b3I7CkBAIC0xNTksNiArMTYwLDcgQEAgcHJvdGVjdGVkOgogICAgIFdyaXRl
QmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX3R5cGVFcnJvckNvbnN0cnVjdG9yOwog
ICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX1VSSUVycm9yQ29uc3Ry
dWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlzZUNvbnN0cnVjdG9yPiBtX3Byb21pc2VD
b25zdHJ1Y3RvcjsKKyAgICBXcml0ZUJhcnJpZXI8T2JqZWN0Q29uc3RydWN0b3I+IG1fb2JqZWN0
Q29uc3RydWN0b3I7CiAKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9ldmFsRnVuY3Rp
b247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fY2FsbEZ1bmN0aW9uOwpAQCAtMzM1
LDYgKzMzNyw3IEBAIHB1YmxpYzoKICAgICBSZWdFeHBDb25zdHJ1Y3RvciogcmVnRXhwQ29uc3Ry
dWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cENvbnN0cnVjdG9yLmdldCgpOyB9CiAKICAg
ICBFcnJvckNvbnN0cnVjdG9yKiBlcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9l
cnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CisgICAgT2JqZWN0Q29uc3RydWN0b3IqIG9iamVjdENv
bnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RDb25zdHJ1Y3Rvci5nZXQoKTsgfQog
ICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGV2YWxFcnJvckNvbnN0cnVjdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9ldmFsRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgIE5hdGl2ZUVycm9y
Q29uc3RydWN0b3IqIHJhbmdlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFu
Z2VFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CiAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvciog
cmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlRXJy
b3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQpAQCAtNTkxLDcgKzU5NCw3IEBAIGlubGluZSBib29sIEpT
R2xvYmFsT2JqZWN0OjpoYXNPd25Qcm9wZXJ0eUZvcldyaXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lCiAKIGlubGluZSBib29sIEpTR2xvYmFsT2JqZWN0OjpzeW1ib2xUYWJsZUhhc1By
b3BlcnR5KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgU3ltYm9sVGFibGVFbnRy
eSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFt
ZSgpKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5l
R2V0KHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgcmV0dXJuICFlbnRyeS5pc051bGwoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IGZmMmM1
Y2ZmMTFmNGNjNzFhZjZjNGU0NGYxNWQzYWRjNzliNmU1ZmYuLjk3Y2QzZGVkNjQ3ODY0NTQ1NDY3
NzQyMjc4OTAxZjRhNGI2NzgzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGdldENsYXNz
UHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENsYXNzSW5mbyogY2xhc3MKICAg
ICAgICAgaW50IGhhc2hTaXplTWFzayA9IHRhYmxlLT5jb21wYWN0U2l6ZSAtIDE7CiAgICAgICAg
IGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSB0YWJsZS0+dGFibGU7CiAgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDw9IGhhc2hTaXplTWFzazsgKytpLCArK2VudHJ5KSB7Ci0gICAgICAgICAgICBp
ZiAoZW50cnktPmtleSgpICYmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBEb250RW51bSkgfHwg
KG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpICYmICEoKGVudHJ5LT5hdHRyaWJ1
dGVzKCkgJiBGdW5jdGlvbikgJiYgZGlkUmVpZnkpKQorICAgICAgICAgICAgaWYgKGVudHJ5LT5r
ZXkoKSAmJiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IChtb2RlID09IElu
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpKSAmJiAhKChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVp
bHRpbk9yRnVuY3Rpb24pICYmIGRpZFJlaWZ5KSkKICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5h
bWVzLmFkZChlbnRyeS0+a2V5KCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTYxOCw3ICsxNjE4
LDcgQEAgdm9pZCBKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUoRXhlY1N0
YXRlKiBleGVjKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIFByb3BlcnR5U2xvdCBz
bG90KHRoaXMpOwogICAgICAgICBmb3IgKEhhc2hUYWJsZTo6Q29uc3RJdGVyYXRvciBpdGVyID0g
aGFzaFRhYmxlLT5iZWdpbih2bSk7IGl0ZXIgIT0gaGFzaFRhYmxlLT5lbmQodm0pOyArK2l0ZXIp
IHsKLSAgICAgICAgICAgIGlmIChpdGVyLT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikKKyAgICAg
ICAgICAgIGlmIChpdGVyLT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikKICAgICAg
ICAgICAgICAgICBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChnbG9iYWxPYmplY3QoKS0+Z2xvYmFs
RXhlYygpLCAqaXRlciwgdGhpcywgSWRlbnRpZmllcigmdm0sIGl0ZXItPmtleSgpKSwgc2xvdCk7
CiAgICAgICAgIH0KICAgICB9CkBAIC0yMjM2LDYgKzIyMzYsMTYgQEAgdm9pZCBKU09iamVjdDo6
cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb24KICAgICBwdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgZnVuY3Rpb24sIGF0dHJp
YnV0ZXMpOwogfQogCit2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RCdWlsdGluRnVuY3Rpb24oVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIHBy
b3BlcnR5TmFtZSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpCit7CisgICAgU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5w
dWJsaWNOYW1lKCk7CisgICAgaWYgKCFuYW1lKQorICAgICAgICBuYW1lID0gdm0ucHJvcGVydHlO
YW1lcy0+YW5vbnltb3VzLmltcGwoKTsKKyAgICBBU1NFUlQobmFtZSk7CisgICAgSlNGdW5jdGlv
biogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHN0YXRp
Y19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIGdsb2JhbE9i
amVjdCk7CisgICAgcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1
dGVzKTsKK30KKwogdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFBy
b3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0aCwgTmF0aXZl
RnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMpCiB7CiAgICAgU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNO
YW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCAzMTEx
NzFjMTEzMDJkNmZiNDYzYWNjZWMwMGQ0ZjVhNGVmODM2ZTBmLi5jODcyZjYyYTQ5ZWVmODI4MTQx
OTcyNTE3NWJlMDllOTdkMzdhNTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgKQEAgLTU4MSw2ICs1ODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXREaXJlY3RV
bmRlZmluZWQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KSB7IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNl
dCktPnNldFVuZGVmaW5lZCgpOyB9CiAKICAgICB2b2lkIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
KFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCB1bnNpZ25lZCBmdW5j
dGlvbkxlbmd0aCwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRl
cyk7CisgICAgdm9pZCBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVj
dCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHVuc2lnbmVkIGF0
dHJpYnV0ZXMpOwogICAgIHZvaWQgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgdW5zaWduZWQg
ZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJv
cGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5
RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAppbmRleCBiNzI3ZTU0NWJl
NTAyOWIzNzU0NmU5NmIwMmUwNmY4MmEyMjRiZDlkLi43ZWZjNzZhOTAwZGRjZmU4MGViODJkMTlj
OWFjYTU4YjhjZDgyNzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcApAQCAtNjQsNiArNjQsOCBAQCB2b2lkIEpTU3lt
Ym9sVGFibGVPYmplY3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdAogICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcih0aGlzT2Jq
ZWN0LT5zeW1ib2xUYWJsZSgpLT5tX2xvY2spOwogICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjpp
dGVyYXRvciBlbmQgPSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5lbmQobG9ja2VyKTsKICAg
ICAgICAgZm9yIChTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdCA9IHRoaXNPYmplY3QtPnN5
bWJvbFRhYmxlKCktPmJlZ2luKGxvY2tlcik7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAg
ICAgaWYgKGl0LT5rZXktPmlzRW1wdHlVbmlxdWUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIGlmICghKGl0LT52YWx1ZS5nZXRBdHRyaWJ1dGVzKCkgJiBEb250RW51
bSkgfHwgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpCiAgICAgICAgICAgICAg
ICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcihleGVjLCBpdC0+a2V5LmdldCgpKSk7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3lt
Ym9sVGFibGVPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9s
VGFibGVPYmplY3QuaAppbmRleCBiNWIyMGE4NDViNmFiNjQ0MjRiMzdlMzFiMjc3NGVmOTA1MzUz
ZjdmLi5kMDNiMjQ1MTFjMmRlMTk1OWZiNWY1NmQ2NDljNjRkMGVmZTA2ODU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCkBA
IC03Miw3ICs3Miw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogewogICAgIFN5bWJv
bFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgQ29uY3Vy
cmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICBTeW1ib2xUYWJs
ZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5
TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIg
PSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAo
aXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1ZTsKQEAgLTg3LDcg
Kzg3LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVHZXQoCiB7CiAgICAgU3ltYm9sVGFibGUm
IHN5bWJvbFRhYmxlID0gKm9iamVjdC0+c3ltYm9sVGFibGUoKTsKICAgICBDb25jdXJyZW50SklU
TG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2spOwotICAgIFN5bWJvbFRhYmxlOjpNYXA6
Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1
YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJv
bFRhYmxlLmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIGlmIChpdGVyID09
IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgU3lt
Ym9sVGFibGVFbnRyeTo6RmFzdCBlbnRyeSA9IGl0ZXItPnZhbHVlOwpAQCAtMTA0LDcgKzEwNCw3
IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0KAogewogICAgIFN5bWJvbFRhYmxlJiBzeW1i
b2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgQ29uY3VycmVudEpJVExvY2tl
ciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsKLSAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVy
YXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNO
YW1lKCkpOworICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJs
ZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICBpZiAoaXRlciA9PSBzeW1i
b2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFN5bWJvbFRh
YmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52YWx1ZTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBp
bmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dCgKICAgICB7CiAgICAgICAgIFN5bWJvbFRhYmxlJiBz
eW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxlKCk7CiAgICAgICAgIEdDU2FmZUNvbmN1
cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jaywgZXhlYy0+dm0oKS5oZWFw
KTsKLSAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxl
LmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICAgICAgU3ltYm9s
VGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2VyLCBwcm9w
ZXJ0eU5hbWUudWlkKCkpOwogICAgICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9j
a2VyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYm9vbCB3YXNGYXQ7CkBA
IC0xNTksNyArMTU5LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRl
cygKICAgICB7CiAgICAgICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5
bWJvbFRhYmxlKCk7CiAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRh
YmxlLm1fbG9jayk7Ci0gICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBz
eW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAg
ICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxv
Y2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFi
bGUuZW5kKGxvY2tlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIFN5bWJv
bFRhYmxlRW50cnkmIGVudHJ5ID0gaXRlci0+dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTG9va3VwLmNwcAppbmRleCBmNmRkY2I1NzlkODI1NTk2ZDY5ZTBhNzFmYTk2NTdhNjAx
NmVlNmJmLi4xOTdkODQ3OTQwMmJlMjdiNWJhYTYxOWU4MDE3NmNmZWYxZjFmNDVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9p
ZCBIYXNoVGFibGU6OmRlbGV0ZVRhYmxlKCkgY29uc3QKIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlv
blNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCog
dGhpc09iaiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIEFTU0VSVCh0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSk7Ci0gICAgQVNTRVJUKGVudHJ5
LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbik7CisgICAgQVNTRVJUKGVudHJ5LT5hdHRyaWJ1dGVz
KCkgJiBCdWlsdGluT3JGdW5jdGlvbik7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICB1
bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHRoaXNPYmot
PmdldERpcmVjdE9mZnNldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKQEAgLTc5LDkg
Kzc5LDEzIEBAIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCoKICAgICAgICAgaWYgKHRoaXNPYmotPnN0
YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAK
LSAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oCi0gICAgICAgICAgICB2
bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZW50cnktPmZ1bmN0aW9u
TGVuZ3RoKCksCi0gICAgICAgICAgICBlbnRyeS0+ZnVuY3Rpb24oKSwgZW50cnktPmludHJpbnNp
YygpLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVz
KCkgJiBCdWlsdGluKQorICAgICAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0QnVpbHRpbkZ1bmN0
aW9uKHZtLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBlbnRyeS0+YnVp
bHRpbkdlbmVyYXRvcigpKHZtKSwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oCisgICAgICAg
ICAgICAgICAgdm0sIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5
LT5mdW5jdGlvbkxlbmd0aCgpLAorICAgICAgICAgICAgICAgIGVudHJ5LT5mdW5jdGlvbigpLCBl
bnRyeS0+aW50cmluc2ljKCksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAgICAgICB9CiAgICAg
ICAgIG9mZnNldCA9IHRoaXNPYmotPmdldERpcmVjdE9mZnNldCh2bSwgcHJvcGVydHlOYW1lLCBh
dHRyaWJ1dGVzKTsKICAgICAgICAgQVNTRVJUKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAppbmRleCBiZGU4M2Q0YTZmYzM1
NTc3ODUwZTMxZTg4YmMzOWZkMDVmN2JjZTUyLi5kYmEzODllOWUyNDNkZDBlY2IyYmE5OGYzOTRk
NDA3OWY5ZGVhOTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9M
b29rdXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaApAQCAt
NDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAvLyBpZS4gdHlwZWRlZiBKU1ZhbHVl
ICgqR2V0RnVuY3Rpb24pKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBiYXNlT2JqZWN0KQogICAgIHR5
cGVkZWYgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgR2V0RnVuY3Rpb247CiAgICAgdHlwZWRl
ZiBQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYyBQdXRGdW5jdGlvbjsKKyAgICB0eXBlZGVm
IEZ1bmN0aW9uRXhlY3V0YWJsZSogKCpCdWlsdGluR2VuZXJhdG9yKShWTSYpOwogCiAgICAgY2xh
c3MgSGFzaEVudHJ5IHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC02OCwx
MSArNjksMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbV9pbnRyaW5z
aWM7CiAgICAgICAgIH0KIAorICAgICAgICBCdWlsdGluR2VuZXJhdG9yIGJ1aWx0aW5HZW5lcmF0
b3IoKSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBCdWlsdGluKTsgcmV0dXJuIG1fdS5i
dWlsdGluR2VuZXJhdG9yLmdlbmVyYXRvclZhbHVlOyB9CiAgICAgICAgIE5hdGl2ZUZ1bmN0aW9u
IGZ1bmN0aW9uKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pOyByZXR1
cm4gbV91LmZ1bmN0aW9uLmZ1bmN0aW9uVmFsdWU7IH0KICAgICAgICAgdW5zaWduZWQgY2hhciBm
dW5jdGlvbkxlbmd0aCgpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKTsg
cmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KG1fdS5mdW5jdGlvbi5sZW5ndGgpOyB9
CiAKLSAgICAgICAgR2V0RnVuY3Rpb24gcHJvcGVydHlHZXR0ZXIoKSBjb25zdCB7IEFTU0VSVCgh
KG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVydHkuZ2V0OyB9Ci0g
ICAgICAgIFB1dEZ1bmN0aW9uIHByb3BlcnR5UHV0dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0
dHJpYnV0ZXMgJiBGdW5jdGlvbikpOyByZXR1cm4gbV91LnByb3BlcnR5LnB1dDsgfQorICAgICAg
ICBHZXRGdW5jdGlvbiBwcm9wZXJ0eUdldHRlcigpIGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1
dGVzICYgQnVpbHRpbk9yRnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5wcm9wZXJ0eS5nZXQ7IH0KKyAg
ICAgICAgUHV0RnVuY3Rpb24gcHJvcGVydHlQdXR0ZXIoKSBjb25zdCB7IEFTU0VSVCghKG1fYXR0
cmlidXRlcyAmIEJ1aWx0aW5PckZ1bmN0aW9uKSk7IHJldHVybiBtX3UucHJvcGVydHkucHV0OyB9
CiAKICAgICAgICAgaW50cHRyX3QgbGV4ZXJWYWx1ZSgpIGNvbnN0IHsgQVNTRVJUKCFtX2F0dHJp
YnV0ZXMpOyByZXR1cm4gbV91LmxleGVyLnZhbHVlOyB9CiAKQEAgLTk0LDYgKzk2LDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIGludHB0cl90IGxlbmd0aDsgLy8gbnVtYmVy
IG9mIGFyZ3VtZW50cyBmb3IgZnVuY3Rpb24KICAgICAgICAgICAgIH0gZnVuY3Rpb247CiAgICAg
ICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgICAgIEJ1aWx0aW5HZW5lcmF0b3IgZ2VuZXJh
dG9yVmFsdWU7CisgICAgICAgICAgICAgICAgaW50cHRyX3QgdW51c2VkOworICAgICAgICAgICAg
fSBidWlsdGluR2VuZXJhdG9yOworICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAg
ICBHZXRGdW5jdGlvbiBnZXQ7CiAgICAgICAgICAgICAgICAgUHV0RnVuY3Rpb24gcHV0OwogICAg
ICAgICAgICAgfSBwcm9wZXJ0eTsKQEAgLTIwOSw3ICsyMTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBwcml2YXRlOgogICAgICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IEhhc2hFbnRyeSogZW50
cnkoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKICAgICAgICAgewotICAgICAgICAg
ICAgU3RyaW5nSW1wbCogaW1wbCA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CisgICAgICAg
ICAgICBTdHJpbmdJbXBsKiBpbXBsID0gcHJvcGVydHlOYW1lLnVpZCgpOwogICAgICAgICAgICAg
aWYgKCFpbXBsKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAKQEAgLTI0OSw3
ICsyNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaWYgKCFlbnRyeSkgLy8gbm90IGZv
dW5kLCBmb3J3YXJkIHRvIHBhcmVudAogICAgICAgICAgICAgcmV0dXJuIFBhcmVudEltcDo6Z2V0
T3duUHJvcGVydHlTbG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKLSAg
ICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikKKyAgICAgICAgaWYgKGVu
dHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JGdW5jdGlvbikKICAgICAgICAgICAgIHJldHVy
biBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChleGVjLCBlbnRyeSwgdGhpc09iaiwgcHJvcGVydHlO
YW1lLCBzbG90KTsKIAogICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqLCBl
bnRyeS0+YXR0cmlidXRlcygpLCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSk7CkBAIC0yODYsNyAr
MjkyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGlmICghZW50cnkpIC8vIG5vdCBmb3Vu
ZCwgZm9yd2FyZCB0byBwYXJlbnQKICAgICAgICAgICAgIHJldHVybiBQYXJlbnRJbXA6OmdldE93
blByb3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCi0gICAg
ICAgIEFTU0VSVCghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbikpOworICAgICAgICBB
U1NFUlQoIShlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pKTsKIAogICAg
ICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqLCBlbnRyeS0+YXR0cmlidXRlcygp
LCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjk1
LDcgKzMwMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGlubGluZSB2b2lkIHB1dEVudHJ5KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqIGJhc2UsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKICAgICB7CiAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBmdW5jdGlvbiBwdXQgaXQgYXMg
YW4gb3ZlcnJpZGUgcHJvcGVydHkuCi0gICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYg
RnVuY3Rpb24pIHsKKyAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBCdWlsdGluT3JG
dW5jdGlvbikgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU09iamVjdCo+KHNsb3QudGhpc1ZhbHVlKCkpKQogICAgICAgICAgICAgICAgIHRo
aXNPYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKICAg
ICAgICAgfSBlbHNlIGlmICghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBSZWFkT25seSkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggOGRjNGEwMmJkMmY2OTk1NzVmYWQxOWU5NjFlMWExZTA0M2Y0ODVk
MC4uNjI2MDA1NTViNGM2MmNkMGM1ZjNmNDNmOGIxNTJmMzk0NzVjZGVmYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTM4LDYgKzM4LDIwIEBAIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6Ok5hdGl2ZUVy
cm9yQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAordm9p
ZCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25z
dCBTdHJpbmcmIG5hbWUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIG5hbWUpOwor
ICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICAKKyAgICBOYXRpdmVFcnJvclByb3Rv
dHlwZSogcHJvdG90eXBlID0gTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5hbWUsIHRoaXMpOworICAgIAorICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOyAvLyBFQ01BIDE1LjExLjcuNQorICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUg
fCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBtX2Vycm9yU3RydWN0dXJlLnNldCh2bSwgdGhp
cywgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSkpOworICAgIEFTU0VSVChtX2Vycm9yU3RydWN0dXJlKTsKKyAgICBBU1NFUlQobV9lcnJv
clN0cnVjdHVyZS0+aXNPYmplY3QoKSk7Cit9CisKIHZvaWQgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
cjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewog
ICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8TmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvcio+KGNlbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCmluZGV4IDc0MGQzZjkzMzI5MmZkMmFj
Y2I0Yjk5MDM0NDMxMmI5MzE5YWUxMTAuLjQzOGEzYWZiOWJiMGY2NDEyYzk3OTMyMjMwYzg4NzEw
OTYxZjU0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUVycm9yQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
YXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKQEAgLTUxLDE5ICs1MSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlKCkgeyByZXR1cm4gbV9lcnJvclN0
cnVjdHVyZS5nZXQoKTsgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBw
cm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSkKLSAgICAgICAgewotICAgICAg
ICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIG5hbWUpOwotICAgICAgICAgICAgQVNTRVJU
KGluaGVyaXRzKGluZm8oKSkpOwotCi0gICAgICAgICAgICBOYXRpdmVFcnJvclByb3RvdHlwZSog
cHJvdG90eXBlID0gTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5hbWUsIHRoaXMpOwotCi0gICAgICAgICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIERvbnREZWxldGUg
fCBSZWFkT25seSB8IERvbnRFbnVtKTsgLy8gRUNNQSAxNS4xMS43LjUKLSAgICAgICAgICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnRE
ZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKLSAgICAgICAgICAgIG1fZXJyb3JTdHJ1Y3R1
cmUuc2V0KHZtLCB0aGlzLCBFcnJvckluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlKSk7Ci0gICAgICAgICAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVy
ZSk7Ci0gICAgICAgICAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVyZS0+aXNPYmplY3QoKSk7Ci0g
ICAgICAgIH0KKyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKFZNJiwgU3RydWN0
dXJlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eVNsb3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCmlu
ZGV4IDMzOGVkNDJlYjk2YmE3NzhlNmQyMjc0ZmI0NGI3NmNiNWZiMWE5MmEuLjFiMTRhNGFlYjRh
MGFmMWJhNGYzNzJlNmQxZDI1ZTVhYjg4YzVjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCkBAIC00Myw2ICs0Myw4IEBAIGVudW0gQXR0cmlidXRl
IHsKICAgICBGdW5jdGlvbiAgICAgPSAxIDw8IDQsICAvLyBwcm9wZXJ0eSBpcyBhIGZ1bmN0aW9u
IC0gb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCiAgICAgQWNjZXNzb3IgICAgID0gMSA8
PCA1LCAgLy8gcHJvcGVydHkgaXMgYSBnZXR0ZXIvc2V0dGVyCiAgICAgQ3VzdG9tQWNjZXNzb3Ig
PSAxIDw8IDYsCisgICAgQnVpbHRpbiAgICAgICAgID0gMSA8PCA3LCAvLyBwcm9wZXJ0eSBpcyBh
IGJ1aWx0aW4gZnVuY3Rpb24gLSBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKKyAgICBC
dWlsdGluT3JGdW5jdGlvbiA9IEJ1aWx0aW4gfCBGdW5jdGlvbiwgLy8gaGVscGVyIG9ubHkgdXNl
ZCBieSBzdGF0aWMgaGFzaHRhYmxlcwogfTsKIAogY2xhc3MgUHJvcGVydHlTbG90IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA3NGJiZDIwYzQ0YzA4Y2VjOTljMDZmNzg5
ODdjMTZmYzY5MmU4MjJiLi44YzEyMDVjMGZmZWU2NmI3OGFkNTk5MjNjZGM4YTQ0NzViNWM3NzAx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiQXJnTGlzdC5oIgogI2luY2x1ZGUgIkFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtz
LmgiCiAjaW5jbHVkZSAiQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgiCisjaW5jbHVk
ZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVk
ZSAiQ29kZUNhY2hlLmgiCiAjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKQEAgLTY4LDEz
ICs2OSwxNiBAQAogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk1hcERhdGEuaCIKICNp
bmNsdWRlICJOb2Rlcy5oIgorI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlBhcnNlckFy
ZW5hLmgiCisjaW5jbHVkZSAiUHJvcGVydHlNYXBIYXNoVGFibGUuaCIKICNpbmNsdWRlICJSZWdF
eHBDYWNoZS5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlNpbXBsZVR5
cGVkQXJyYXlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU291cmNlUHJvdmlkZXJDYWNoZS5oIgog
I2luY2x1ZGUgIlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5l
cy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJVbmxpbmtlZENv
ZGVCbG9jay5oIgogI2luY2x1ZGUgIldlYWtNYXBEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL1Byb2Nl
c3NJRC5oPgpAQCAtMjI2LDYgKzIzMCw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlw
ZSBoZWFwVHlwZSkKICAgICAsIG1faW5EZWZpbmVPd25Qcm9wZXJ0eShmYWxzZSkKICAgICAsIG1f
Y29kZUNhY2hlKENvZGVDYWNoZTo6Y3JlYXRlKCkpCiAgICAgLCBtX2VuYWJsZWRQcm9maWxlcihu
dWxscHRyKQorICAgICwgbV9idWlsdGluRXhlY3V0YWJsZXMoQnVpbHRpbkV4ZWN1dGFibGVzOjpj
cmVhdGUoKnRoaXMpKQogewogICAgIGludGVycHJldGVyID0gbmV3IEludGVycHJldGVyKCp0aGlz
KTsKICAgICBTdGFja0JvdW5kcyBzdGFjayA9IHd0ZlRocmVhZERhdGEoKS5zdGFjaygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggNWE4NDEwNWVhZmI3YWJiYTVmYTQzMWVlZWRk
NTVkN2E4OWY1NWNlMi4uNjk1OGFjMzkzYjFhZWZjMGJlZmJmNmU0ZWI4YjY4MjVjZjdjOWEwYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVk
ZSAiUHJpdmF0ZU5hbWUuaCIKICNpbmNsdWRlICJQcm90b3R5cGVNYXAuaCIKICNpbmNsdWRlICJT
bWFsbFN0cmluZ3MuaCIKKyNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU3Ryb25n
LmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheUNv
bnRyb2xsZXIuaCIKQEAgLTY5LDYgKzcwLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3M7CisgICAgY2xhc3MgQnVpbHRpbkV4ZWN1dGFi
bGVzOwogICAgIGNsYXNzIENvZGVCbG9jazsKICAgICBjbGFzcyBDb2RlQ2FjaGU7CiAgICAgY2xh
c3MgQ29tbW9uSWRlbnRpZmllcnM7CkBAIC00OTcsNiArNDk5LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZvaWQgcmVnaXN0ZXJXYXRjaHBvaW50Rm9ySW1wdXJlUHJvcGVydHkoY29uc3Qg
SWRlbnRpZmllciYsIFdhdGNocG9pbnQqKTsKICAgICAgICAgLy8gRklYTUU6IFVzZSBBdG9taWNT
dHJpbmcgb25jZSBpdCBnb3QgbWVyZ2VkIHdpdGggSWRlbnRpZmllci4KICAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBhZGRJbXB1cmVQcm9wZXJ0eShjb25zdCBTdHJpbmcmKTsKKyAgICAg
ICAgCisgICAgICAgIEJ1aWx0aW5FeGVjdXRhYmxlcyogYnVpbHRpbkV4ZWN1dGFibGVzKCkgeyBy
ZXR1cm4gbV9idWlsdGluRXhlY3V0YWJsZXMuZ2V0KCk7IH0KIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CkBAIC01MzcsMTAgKzU0MSw5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU1ZhbHVlIG1fZXhjZXB0aW9uOwogICAgICAg
ICBib29sIG1faW5EZWZpbmVPd25Qcm9wZXJ0eTsKICAgICAgICAgT3duUHRyPENvZGVDYWNoZT4g
bV9jb2RlQ2FjaGU7Ci0gICAgICAgIFJlZkNvdW50ZWRBcnJheTxTdGFja0ZyYW1lPiBtX2V4Y2Vw
dGlvblN0YWNrOwotCiAgICAgICAgIExlZ2FjeVByb2ZpbGVyKiBtX2VuYWJsZWRQcm9maWxlcjsK
LQorICAgICAgICBPd25QdHI8QnVpbHRpbkV4ZWN1dGFibGVzPiBtX2J1aWx0aW5FeGVjdXRhYmxl
czsKKyAgICAgICAgUmVmQ291bnRlZEFycmF5PFN0YWNrRnJhbWU+IG1fZXhjZXB0aW9uU3RhY2s7
CiAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8V2F0Y2hwb2ludFNldD4+IG1faW1wdXJl
UHJvcGVydHlXYXRjaHBvaW50U2V0czsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21h
a2UvZ3Rlc3QvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvY21ha2UvZ3Rlc3QvQ01ha2VMaXN0cy50
eHQKaW5kZXggNTZiZjQ0NzgyNTE4Njg3NmYyNTcxMTg2MDlmNDM1MjE4MzRlYzk1OS4uN2Y1MjFh
ODk4Yjg5ZDhkZWIzMDljNmUwZmJhMDhhMzNmNjVlYjVkNSAxMDA2NDQKLS0tIGEvU291cmNlL2Nt
YWtlL2d0ZXN0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9jbWFrZS9ndGVzdC9DTWFrZUxp
c3RzLnR4dApAQCAtNiw2ICs2LDcgQEAKIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtUSElSRFBBUlRZ
X0RJUn0vZ3Rlc3QKICAgICAke1RISVJEUEFSVFlfRElSfS9ndGVzdC9pbmNsdWRlCiAgICAgJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9CisgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVf
RElSfQogICAgICR7V1RGX0RJUn0KICkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDBiYzY5YjVkY2IyODU5YjZhY2RiMDFlMjBiMWUzN2NjNmQ4
OTk4YjIuLjBiODFiYzYzZmUyOWY5MjM1ZTM3Y2NlZmJlM2ExOTY2ZThmZmY2NDEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBA
QAorMjAxNC0wMi0xMSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAg
IE1ha2UgaXQgcG9zc2libGUgdG8gaW1wbGVtZW50IEpTIGJ1aWx0aW5zIGluIEpTCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc4ODcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDTWFrZSB1cGRhdGVzCisK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdpbkNFTGF1bmNoZXIvQ01h
a2VMaXN0cy50eHQ6CisKIDIwMTQtMDItMTEgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+
CiAKICAgICAgICAgV2ViIFJlcGxheTogdXBzdHJlYW0gcmVwbGF5IGlucHV0IGNvZGUgZ2VuZXJh
dG9yIGFuZCBFbmNvZGVkVmFsdWUgY2xhc3MKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvQ01ha2VMaXN0cy50eHQK
aW5kZXggN2I4YWExODQ5NmFiMTk3YzZkOGRlOTNhMWI3YjllNDQzODA5YmJmMS4uNTQ5Y2Q0MDUx
NDIyOGY5MjczZjA4ZGEwY2VjZDA4ODZlNzY2ZWJlNiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvQ01ha2VM
aXN0cy50eHQKQEAgLTU4LDYgKzU4LDcgQEAgc2V0KER1bXBSZW5kZXJUcmVlX0lOQ0xVREVfRElS
RUNUT1JJRVMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcHJvZmlsZXIKICAgICAke0pBVkFT
Q1JJUFRDT1JFX0RJUn0vcnVudGltZQogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9Gb3J3YXJk
aW5nSGVhZGVycworICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0KICAg
ICAke1RPT0xTX0RJUn0vRHVtcFJlbmRlclRyZWUKICAgICAke1dURl9ESVJ9CiAgICAgJHtDTUFL
RV9TT1VSQ0VfRElSfS9Tb3VyY2UKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
Q01ha2VMaXN0cy50eHQgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IDVhMzQ2ZDc0MDUzZDE1OTUyMzMxMGFkOTZmMjcwNmFlYjQ3NTAzOWUuLmNiNGIxOTE4MTM3
MDhjYTRhMmE3OGQ3MzI3ODE2Njc4MDUxNGMyOTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFr
ZUxpc3RzLnR4dApAQCAtMjgsNiArMjgsNyBAQCBzZXQoV2ViS2l0VGVzdFJ1bm5lcl9JTkNMVURF
X0RJUkVDVE9SSUVTCiAgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L0luamVjdGVkQnVuZGxl
L2F0awogICAgICR7SkFWQVNDUklQVENPUkVfRElSfQogICAgICR7SkFWQVNDUklQVENPUkVfRElS
fS9Gb3J3YXJkaW5nSGVhZGVycworICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0KICAgICAke1dFQkNPUkVfRElSfS9lZGl0aW5nCiAgICAgJHtXRUJDT1JFX0RJUn0vcGxh
dGZvcm0KICAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2luQ0VMYXVuY2hlci9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1dpbkNFTGF1bmNoZXIv
Q01ha2VMaXN0cy50eHQKaW5kZXggOTE0YmIyYmRjOTZiMGI1OGU1OGYyZjNlNWIzMzYzZjhkMzRm
MzM1ZC4uYjE5ZmM2MWQ0MDQ1NzQzNTg5MTM2YThmMGUxZWJjNWIwYWEyOTFlNSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2luQ0VMYXVuY2hlci9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9XaW5DRUxh
dW5jaGVyL0NNYWtlTGlzdHMudHh0CkBAIC02LDYgKzYsNyBAQCBzZXQoV2luQ0VMYXVuY2hlcl9J
TkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsi
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL3RleHQiCiAgICAgIiR7SkFWQVNDUklQVENP
UkVfRElSfSIKKyAgICAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIKICAg
ICAiJHtXVEZfRElSfSIKICAgICAiJHtERVJJVkVEX1NPVVJDRVNfRElSfSIKICAgICAiJHtDTUFL
RV9CSU5BUllfRElSfSIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiYTFjNzI1NDU1NWJmMzNjYTZkMWMxZDY5OGI5ZTBhNDU2
MjgzNjA4Li4xZWJjODJhZDNmOWZiNGVhZDgzZWY2MWNmODg3NDk1YWNhMGYzNDM3IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTQtMDItMTEgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNv
bT4KKworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBp
biBKUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3
ODg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBk
YXRlZCB0aGUgdGVzdCByZXN1bHRzIGZvciBuZXcgZXJyb3IgbWVzc2FnZXMgKG5vdyB0aGF0IHRo
ZXkncmUKKyAgICAgICAgYWN0dWFsbHkgaGVscGZ1bCksIGFuZCBhZGRlZCBhIGpzLXJlZ3Jlc3Mg
dGVzdCB0byB0cmFjayBwZXJmb3JtYW5jZS4KKworICAgICAgICAqIGpzL2FycmF5LWV2ZXJ5LWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9hcnJheS1wcm90b3R5
cGUtZXZlcnkuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMv
YXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QxKToKKyAgICAg
ICAgKHRlc3QyKToKKyAgICAgICAgKHRlc3QzKToKKwogMjAxNC0wMi0xMCAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIENvbnZlcnQgcG9zaXRpb246
c3RpY2t5IGFuZCBwb3NpdGlvbjpmaXhlZCBwcm9wZXJ0aWVzIHRvIHBvc2l0aW9uOnN0YXRpYyBh
bmQgcG9zaXRpb246YWJzb2x1dGUgdXBvbiBjb3B5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJheS1ldmVyeS1l
eHBlY3RlZC50eHQKaW5kZXggNTQxYjhjMzU4ZjA2OGEwY2VhODgyYzEwNTE3NTMyNTExNGNkMzNm
Ny4uY2NhMzYzZGNlNThmYmE5NWE1OGNlNDZmY2I0OGMzOGJmNThhZGY1OSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVkLnR4dApAQCAtMzAsMTIgKzMwLDEyIEBAIFBBU1MgWzEy
LCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShpc0JpZ0Vub3VnaEFuZEV4Y2VwdGlvbikgdGhyZXcgZXhj
ZXB0aW9uIGV4Y2VwdGlvCiBQQVNTIFsxMiwgNTQsIDE4LCAxMzAsIDQ0XS5ldmVyeShpc0JpZ0Vu
b3VnaEFuZEV4Y2VwdGlvbikgdGhyZXcgZXhjZXB0aW9uIGV4Y2VwdGlvbiBmcm9tIGZ1bmN0aW9u
LgogCiA1LjAgV3JvbmcgVHlwZSBmb3IgQ2FsbGJhY2sgVGVzdAotUEFTUyBbMTIsIDUsIDgsIDEz
MCwgNDRdLmV2ZXJ5KDUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1Q
QVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoJ3dyb25nJykgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShuZXcg
T2JqZWN0KCkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsx
MiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkobnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
VHlwZSBlcnJvci4KLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSh1bmRlZmluZWQpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMw
LCA0NF0uZXZlcnkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFT
UyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KDUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNT
IFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoJ3dyb25nJykgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4K
K1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShuZXcgT2JqZWN0KCkpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEg
ZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkobnVsbCkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUg
YSBmdW5jdGlvbi4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSh1bmRlZmluZWQpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBt
dXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVz
dCBiZSBhIGZ1bmN0aW9uLgogCiA2LjAgRWFybHkgRXhpdCAoIlNob3J0IENpcmN1aXRpbmciKQog
UEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KGlzQmlnRW5vdWdoU2hvcnRDaXJjdWl0KSBp
cyBmYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2FycmF5LXByb3RvdHlwZS1w
cm9wZXJ0aWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9hcnJheS1wcm90b3R5
cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQKaW5kZXggMmMyYTY4Y2IxMDZkYTEwZjA4NmIyMmM1
YmYyYmY1YzhmZTc5ZTMzZS4uNWQ5ZWNiNzVhOGRhNzliYTY1NjA1ZTdlYjljZjhmYzI1ZmUxOGFm
YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0
aWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vYXJyYXktcHJvdG90eXBl
LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CkBAIC0xNSw3ICsxNSw3IEBAIFBBU1MgQXJyYXkucHJv
dG90eXBlLnNsaWNlLmNhbGwodW5kZWZpbmVkLCAwLCAxKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiB1bmRlCiBQQVNTIEFycmF5LnByb3RvdHlwZS5zb3J0LmNhbGwodW5kZWZpbmVkKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVh
dGluZyAnQXJyYXkucHJvdG90eXBlLnNvcnQuY2FsbCh1bmRlZmluZWQpJykuCiBQQVNTIEFycmF5
LnByb3RvdHlwZS5zcGxpY2UuY2FsbCh1bmRlZmluZWQsIDAsIDEpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5w
cm90b3R5cGUuc3BsaWNlLmNhbGwodW5kZWZpbmVkLCAwLCAxKScpLgogUEFTUyBBcnJheS5wcm90
b3R5cGUudW5zaGlmdC5jYWxsKHVuZGVmaW5lZCwge30pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5
cGUudW5zaGlmdC5jYWxsKHVuZGVmaW5lZCwge30pJykuCi1QQVNTIEFycmF5LnByb3RvdHlwZS5l
dmVyeS5jYWxsKHVuZGVmaW5lZCwgdG9TdHJpbmcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUu
ZXZlcnkuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKScpLgorUEFTUyBBcnJheS5wcm90b3R5cGUu
ZXZlcnkuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVm
aW5lZC4KIFBBU1MgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbCh1bmRlZmluZWQsIHRvU3Ry
aW5nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVj
dCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbCh1bmRlZmluZWQsIHRv
U3RyaW5nKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUuc29tZS5jYWxsKHVuZGVmaW5lZCwgdG9T
dHJpbmcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2Jq
ZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUuc29tZS5jYWxsKHVuZGVmaW5lZCwgdG9T
dHJpbmcpJykuCiBQQVNTIEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwodW5kZWZpbmVkLCAw
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAo
ZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbCh1bmRlZmluZWQsIDApJyku
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVy
eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1l
dmVyeS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTI5MGMwZWVmZjhkZTQyMTgzM2Q5MmQyN2U5
NTI0MTkxNzYwNGI5NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
YXJyYXktcHJvdG90eXBlLWV2ZXJ5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitKU1Jl
Z3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5odG1sIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9h
cnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTVjYzE3MWM0ODc1YTM1ODVi
ZjE0ZTU0MTVmNWNkMGU1ODFkNTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVncmVzcy1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJheS1wcm90b3R5cGUtZXZl
cnkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXBvc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzIGIvTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjI5NGFhMTYxYzBjZTk4YjJhYjE4YTNhMWExZjBkZmFhYzlkN2QyZTIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJheS1wcm90
b3R5cGUtZXZlcnkuanMKQEAgLTAsMCArMSwyOSBAQAordmFyIHJlc3VsdCA9IDA7CitmdW5jdGlv
biB0ZXN0MShhKSB7CisgICAgcmVzdWx0IDw8IDE7CisgICAgcmVzdWx0Kys7CisgICAgcmV0dXJu
IHRydWU7Cit9CitmdW5jdGlvbiB0ZXN0MihhLGIpIHsKKyAgICByZXN1bHQgXj0gMzsKKyAgICBy
ZXN1bHQgKj0gMzsKKyAgICByZXR1cm4gdHJ1ZTsKK30KK2Z1bmN0aW9uIHRlc3QzKGEsYixjKSB7
CisgICAgcmVzdWx0IF49IHJlc3VsdCA+PiAxOworICAgIHJldHVybiB0cnVlOworfQorCit2YXIg
cmVzdWx0ID0gMDsKK3ZhciBhcnJheSA9IFtdCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsg
KytpKQorICAgIGFycmF5W2ldID0gMTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7
CisgICAgYXJyYXkuZXZlcnkodGVzdDEpOworICAgIGFycmF5LmV2ZXJ5KHRlc3QyKTsKKyAgICBh
cnJheS5ldmVyeSh0ZXN0Myk7Cit9CisKK2lmIChyZXN1bHQgIT0gMTQyODgxMDQ5NikKKyAgICB0
aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CmRpZmYgLS1naXQgYS9DaGFuZ2VM
b2cgYi9DaGFuZ2VMb2cKaW5kZXggMGJhMzYxNDFjMGZhMmMxY2Y4ODVmZGQ0MzZjZDk2N2UyNjVl
NTU5Ni4uOWM2NjZhMWQ3ZWNkNjk2NTZiYzlkZWUzY2Q2YmEwNzA0ZDg0NjcyOSAxMDA2NDQKLS0t
IGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE0LTAyLTEx
ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3Nz
aWJsZSB0byBpbXBsZW1lbnQgSlMgYnVpbHRpbnMgaW4gSlMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzg4NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICog
U291cmNlL2NtYWtlL2d0ZXN0L0NNYWtlTGlzdHMudHh0OgorCiAyMDE0LTAyLTEwICBLcnp5c3p0
b2YgV29sYW5za2kgIDxrLndvbGFuc2tpQHNhbXN1bmcuY29tPgogCiAgICAgICAgIEFkZCB0aGUg
Q1NTX1NIQVBFX0lOU0lERSB0byBDTWFrZSBmZWF0dXJlIGxpc3QKZGlmZiAtLWdpdCBhL0dOVW1h
a2VmaWxlLmFtIGIvR05VbWFrZWZpbGUuYW0KaW5kZXggNzNmYzQ5MjhjNGRkNDliNTQ5ODY5YjUw
Njc4YzZiZGU3NGY0NDc2MC4uMDhjOTExNTQyNjA1MDBkZTNmZjA0YjAyMGNlMGQ2MGY5OGU4Y2Zl
OCAxMDA2NDQKLS0tIGEvR05VbWFrZWZpbGUuYW0KKysrIGIvR05VbWFrZWZpbGUuYW0KQEAgLTY4
LDYgKzY4LDcgQEAgQUxMX01PRklMRVMgOj0KIGRvbV9iaW5kaW5nX2lkbHMgOj0KIHd0Zl9zb3Vy
Y2VzIDo9CiBqYXZhc2NyaXB0Y29yZV9oX2FwaSA6PQoramF2YXNjcmlwdGNvcmVfYnVpbHRpbnNf
anNfbm9zb3VyY2VzIDo9CiBqYXZhc2NyaXB0Y29yZV9jcHBmbGFnczo9CiBqYXZhc2NyaXB0Y29y
ZV9jZmxhZ3MgOj0KIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgOj0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223919</attachid>
            <date>2014-02-11 17:17:59 -0800</date>
            <delta_ts>2014-02-11 17:59:46 -0800</delta_ts>
            <desc>fix release builds</desc>
            <filename>bug-127887-20140211171756.patch</filename>
            <type>text/plain</type>
            <size>184513</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzOTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
NjljZDVhMzY1ZTYwYzM1NTdjYmNjNjlmMmViYmRmOTA1MjJhOGExLi40OGMxZjg5ZWIxMzZkMTc1
NGQ1MjE4NTEyYTgzYjM3NzUxY2ZmNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMjcgQEAKKzIwMTQtMDItMTEgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBK
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3ODg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBpdCBwb3NzaWJsZSB0byB3cml0ZSBidWlsdGluIGZ1bmN0aW9ucyBpbiBKUy4K
KyAgICAgICAgVGhlIGJpbmRpbmdzLCBnZW5lcmF0b3JzLCBhbmQgZGVmaW5pdGlvbnMgYXJlIGFs
bCBjcmVhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgYmFzZWQgb24ganMgZmlsZXMgaW4gdGhl
IGJ1aWx0aW5zLyBkaXJlY3RvcnkuICBUaGlzIHBhdGNoIGluY2x1ZGVzIG9uZQorICAgICAgICBz
dWNoIGNhc2U6IEFycmF5LnByb3RvdHlwZS5qcyB3aXRoIGFuIGltcGxlbWVudGF0aW9uIG9mIGV2
ZXJ5KCkuCisKKyAgICAgICAgVGhlcmUncyBhIGxvdCBvZiByZWZhY3RvcmluZyB0byBtYWtlIGl0
IHBvc3NpYmxlIGZvciBDb21tb25JZGVudGlmaWVycworICAgICAgICB0byBpbmNsdWRlIHRoZSBv
dXRwdXQgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcyAoRGVyaXZlZFNvdXJjZXMvSlNDQnVpbHRpbnMu
e2gsY3BwfSkKKyAgICAgICAgd2l0aG91dCBicmVha2luZyB0aGUgb2Zmc2V0IGV4dHJhY3Rvci4g
VGhlIHJlc3VsdCBvZiB0aGlzIHJlZmFjdG9yaW5nCisgICAgICAgIGlzIHRoYXQgQ29tbW9uSWRl
bnRpZmllcnMsIGFuZCBhIGZldyBvdGhlciBtaXNjZWxsYW5lb3VzIGhlYWRlcnMgbm93CisgICAg
ICAgIG5lZWQgdG8gYmUgaW5jbHVkZWQgZGlyZWN0bHkgYXMgdGhleSB3ZXJlIGZvcm1lcmx5IGNh
cHR1cmVkIHRocm91Z2ggb3RoZXIKKyAgICAgICAgcGF0aHMuCisKKyAgICAgICAgSW4gYWRkaXRp
b24gdGhpcyBhZGRzIGEgZmxhZyB0byB0aGUgTG9va3VwIHRhYmxlJ3MgaGFzaGVudHJ5IHRvIGlu
ZGljYXRlCisgICAgICAgIHRoYXQgYSBzdGF0aWMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgYmFja2Vk
IGJ5IEpTLiBUaGVyZSBpcyB0aGVuIGEgbG90IG9mCisgICAgICAgIGxvZ2ljIHRvIHRocmVhZCB0
aGUgc3BlY2lhbCBuYXR1cmUgb2YgdGhlIGZ1bmN0b24gdG8gd2hlcmUgaXQgbWF0dGVycy4KKyAg
ICAgICAgVGhpcyBhbGxvd3MgdG9TdHJpbmcoKSwgLmNhbGxlciwgZXRjIHRvIG1pbWljIHRoZSBi
ZWhhdmlvdXIgb2YgYSBob3N0CisgICAgICAgIGZ1bmN0aW9uLgorCisgICAgICAgIE5vdGVzIG9u
IHdyaXRpbmcgYnVpbHRpbnM6CisgICAgICAgICAtIEVhY2ggZnVuY3Rpb24gaXMgY29tcGlsZWQg
aW5kZXBlbmRlbnRseSBvZiB0aGUgb3RoZXJzLCBhbmQgdGhvc2UKKyAgICAgICAgICAgaW1wbGVt
ZW50YXRpb25zIGNhbm5vdCBjdXJyZW50bHkgY2FwdHVyZSBhbGwgZ2xvYmFsIHByb3BlcnRpZXMg
KGFzCisgICAgICAgICAgIHRoYXQgY291bGQgYmUgcG90ZW50aWFsbHkgdW5zYWZlKS4gSWYgYSBm
dW5jdGlvbiBkb2VzIGNhcHR1cmUgYQorICAgICAgICAgICBnbG9iYWwgd2Ugd2lsbCBkZWxpYmVy
YXRlbHkgY3Jhc2guCisgICAgICAgICAtIEZvciB0aG9zZSAiZ2xvYmFsIiBwcm9wZXJ0aWVzIHRo
YXQgd2UgZG8gd2FudCBhY2Nlc3MgdG8sIHdlIHVzZQorICAgICAgICAgICB0aGUgQCBwcmVmaXgs
IGUuZy4gT2JqZWN0KHRoaXMpIGJlY29tZXMgQE9iamVjdCh0aGlzKS4gVGhlIEAgaWRlbnRpZmll
cnMKKyAgICAgICAgICAgYXJlIHByaXZhdGUgbmFtZXMsIGFuZCBiZWhhdmUganVzdCBsaWtlIHJl
Z3VsYXIgcHJvcGVydGllcywgb25seQorICAgICAgICAgICB3aXRob3V0IHRoZSByaXNrIG9mIGFk
dWx0ZXJhdGlvbi4gQWdhaW4sIGluIHRoZSBAT2JqZWN0IGNhc2UsIHdlCisgICAgICAgICAgIGV4
cGxpY2l0bHkgZHVwbGljYXRlIHRoZSBPYmplY3RDb25zdHJ1Y3RvciByZWZlcmVuY2Ugb24gdGhl
IEdsb2JhbE9iamVjdAorICAgICAgICAgICBzbyB0aGF0IHdlIGhhdmUgZ3VhcmFudGVlZCBhY2Nl
c3MgdG8gdGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhlCisgICAgICAgICAgIGNvbnN0cnVjdG9y
LgorICAgICAgICAgLSBjYWxsLCBhcHBseSwgZXZhbCwgYW5kIEZ1bmN0aW9uIGFyZSBhbGwgcmVq
ZWN0ZWQgaWRlbnRpZmllcnMsIGFnYWluCisgICAgICAgICAgIHRvIHByZXZlbnQgYW55dGhpbmcg
ZnJvbSBhY2NpZGVudGFsbHkgdXNpbmcgYW4gYWR1bHRlcmF0ZWQgb2JqZWN0LgorICAgICAgICAg
ICBJbnN0ZWFkIEBjYWxsIGFuZCBAYXBwbHkgYXJlIGF2YWlsYWJsZSwgYW5kIGhhcHBpbHkgdGhl
eSBjb21wbGV0ZWx5CisgICAgICAgICAgIGRyb3AgdGhlIG5lcV9wdHIgaW5zdHJ1Y3Rpb24gYXMg
dGhleSdyZSBkZWZpbmVkIGFzIGFsd2F5cyBiZWluZyB0aGUKKyAgICAgICAgICAgb3JpZ2luYWwg
Y2FsbC9hcHBseSBmdW5jdGlvbnMuCisKKyAgICAgICAgVGhlc2UgcmVzdHJpY3Rpb25zIGFyZSBq
dXN0IGludGVuZGVkIHRvIG1ha2UgaXQgaGFyZGVyIHRvIGFjY2lkZW50YWxseQorICAgICAgICBt
YWtlIGNoYW5nZXMgdGhhdCBhcmUgaW5jb3JyZWN0IChmb3IgaW5zdGFuY2UgY2FsbGluZyB3aGF0
ZXZlciBoYXMgYmVlbgorICAgICAgICBhc3NpZ25lZCB0byBnbG9iYWwuT2JqZWN0LCBpbnN0ZWFk
IG9mIHRoZSBvcmlnaW5hbCBjb25zdHJ1Y3RvciBmdW5jdGlvbikuCisgICAgICAgIEhvd2V2ZXIs
IG1ha2luZyBhIG1pc3Rha2UgbGlrZSB0aGlzIHNob3VsZCByZXN1bHQgaW4gYSBwdXJlbHkgc2Vt
YW50aWMKKyAgICAgICAgZXJyb3IgYXMgZnVuZGFtZW50YWxseSB0aGVzZSBmdW5jdGlvbnMgYXJl
IHRyZWF0ZWQgYXMgdGhvdWdoIHRoZXkgd2VyZQorICAgICAgICByZWd1bGFyIEpTIGNvZGUgaW4g
dGhlIGhvc3QgZ2xvYmFsLCBhbmQgaGF2ZSBubyBtb3JlIHByaXZpbGVnZXMgdGhhbgorICAgICAg
ICBhbnkgb3RoZXIgSlMuCisKKyAgICAgICAgVGhlIGluaXRpYWwgcHJvb2Ygb2YgY29uY2VwdCBp
cyBBcnJheS5wcm90b3R5cGUuZXZlcnksIHRoaXMgc2hvd3MgYSA2NSUKKyAgICAgICAgcGVyZm9y
bWFuY2UgaW1wcm92ZW1lbnQsIGFuZCB0aGF0IGltcHJvdmVtZW50IGlzIHNpZ25pZmljYW50bHkg
aHVydCBieQorICAgICAgICBvdXIgcG9vciBvcHRpbWlzYXRpb24gb2Ygb3BfaW4uCisKKyAgICAg
ICAgQXMgdGhpcyBpcyBzdWNoIGEgbGltaXRlZCBmdW5jdGlvbiwgd2UgaGF2ZSBub3QgeWV0IGV4
cG9ydGVkIGFsbCBzeW1ib2xzCisgICAgICAgIHRoYXQgd2UgY291bGQgcG9zc2libHkgbmVlZCwg
YnV0IGFzIHdlIGltcGxlbWVudCBtb3JlLCB0aGUgbGlrZWxpaG9vZAorICAgICAgICBvZiBlbmNv
dW50ZXJpbmcgbWlzc2luZyBmZWF0dXJlcyB3aWxsIHJlZHVjZS4KKworCisgICAgICAgICogQVBJ
L0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09i
amVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OnB1dCk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8
UGFyZW50Pjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmdldFN0YXRpY1ZhbHVlKToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpzdGF0aWNGdW5jdGlvbkdldHRlcik6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tHZXR0ZXIpOgorICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZp
bGUuYW06CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZUNvbW1vbi5wcm9wczoKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL2NvcHktZmlsZXMuY21kOgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnVp
bHRpbnMvQXJyYXkucHJvdG90eXBlLmpzOgorICAgICAgICAoZXZlcnkpOgorICAgICAgICAqIGJ1
aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCdWls
dGluRXhlY3V0YWJsZXM6OkJ1aWx0aW5FeGVjdXRhYmxlcyk6CisgICAgICAgIChKU0M6OkJ1aWx0
aW5FeGVjdXRhYmxlczo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ1aWx0
aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0YWJs
ZXM6OmNyZWF0ZSk6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpCdWlsdGluTmFtZXM6OkJ1aWx0aW5OYW1lcyk6CisgICAgICAgIChKU0M6
OkJ1aWx0aW5OYW1lczo6Z2V0UHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpCdWlsdGluTmFt
ZXM6OmdldFB1YmxpY05hbWUpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2Rl
QmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6Y29kZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6
OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnRvU3RyaWN0bmVzcyk6CisgICAgICAg
IChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjppc0J1aWx0aW5GdW5jdGlvbik6Cisg
ICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjppc0J1aWx0aW5GdW5jdGlvbik6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKiBieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmlzQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
Om1ha2VGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6
CisgICAgICAgIChKU0M6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgICogY3JlYXRlX2hhc2hfdGFibGU6CisgICAgICAgICogZ2VuZXJhdGUtanMtYnVpbHRp
bnM6IEFkZGVkLgorICAgICAgICAoZ2V0Q29weXJpZ2h0KToKKyAgICAgICAgKGdldEZ1bmN0aW9u
cyk6CisgICAgICAgIChnZW5lcmF0ZUNvZGUpOgorICAgICAgICAobWFuZ2xlTmFtZSk6CisgICAg
ICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSWRlbnRpZmllcik6CisgICAgICAg
IChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChTb3VyY2VDb2RlKToKKyAgICAgICAgKFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKFZNKToKKyAgICAgICAgKiBpbnRlcnBy
ZXRlci9DYWNoZWRDYWxsLmg6CisgICAgICAgIChKU0M6OkNhY2hlZENhbGw6OkNhY2hlZENhbGwp
OgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpMZXhlcjxUPjo6TGV4ZXIpOgorICAgICAgICAoSlNDOjppc1NhZmVJZGVu
dGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8TENoYXI+OjpwYXJzZUlkZW50aWZpZXIpOgor
ICAgICAgICAoSlNDOjpMZXhlcjxVQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChK
U0M6OkxleGVyPFQ+OjpsZXgpOgorICAgICAgICAqIHBhcnNlci9MZXhlci5oOgorICAgICAgICAo
SlNDOjppc1NhZmVJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleEV4cGVj
dElkZW50aWZpZXIpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6
OlByb2dyYW1Ob2RlOjpzZXRDbG9zZWRWYXJpYWJsZXMpOgorICAgICAgICAqIHBhcnNlci9Ob2Rl
cy5oOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OmNhcHR1cmVkVmFyaWFibGVzKToKKyAgICAg
ICAgKEpTQzo6U2NvcGVOb2RlOjpzZXRDbG9zZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpQ
cm9ncmFtTm9kZTo6Y2xvc2VkVmFyaWFibGVzKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OlBhcnNlcik6CisgICAgICAgIChK
U0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OmRpZEZpbmlzaFBhcnNpbmcpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6cHJpbnRVbmV4cGVjdGVkVG9rZW5UZXh0KToKKyAgICAgICAgKiBwYXJzZXIvUGFy
c2VyLmg6CisgICAgICAgIChKU0M6OlNjb3BlOjpnZXRVc2VkVmFyaWFibGVzKToKKyAgICAgICAg
KEpTQzo6UGFyc2VyOjpjbG9zZWRWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpwYXJzZSk6Cisg
ICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlclRv
a2Vucy5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRGdW5j
dGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpDb21tb25J
ZGVudGlmaWVycyk6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjp+Q29tbW9uSWRl
bnRpZmllcnMpOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Z2V0UHJpdmF0ZU5h
bWUpOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Z2V0UHVibGljTmFtZSk6Cisg
ICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAoSlNDOjpDb21t
b25JZGVudGlmaWVyczo6YnVpbHRpbk5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlv
bkhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9y
KToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6RXZhbEV4
ZWN1dGFibGU6OmV4ZWN1dGFibGVJbmZvKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFi
bGU6OmV4ZWN1dGFibGVJbmZvKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpp
c0J1aWx0aW5GdW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpz
eW1ib2xUYWJsZUdldCk6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQ
dXQpOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnN5bWJvbFRhYmxlUHV0V2l0aEF0dHJp
YnV0ZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVu
Y3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246
OnNvdXJjZUNvZGUpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjppc0hvc3RPckJ1aWx0aW5G
dW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzQnVpbHRpbkZ1bmN0aW9uKToK
KyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKToKKyAgICAgICAgKEpTQzo6
SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlv
bjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlv
bjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5j
dGlvbklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6bmF0aXZlRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpuYXRpdmVDb25zdHJ1Y3Rvcik6CisgICAgICAg
IChKU0M6OmlzSG9zdEZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlc2V0KToKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om9iamVjdENvbnN0
cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJv
cGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpn
ZXRDbGFzc1Byb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cmVpZnlTdGF0
aWNGdW5jdGlvbnNGb3JEZWxldGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0
QnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAg
ICogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTeW1i
b2xUYWJsZU9iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBy
dW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVH
ZXQpOgorICAgICAgICAoSlNDOjpzeW1ib2xUYWJsZVB1dCk6CisgICAgICAgIChKU0M6OnN5bWJv
bFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMpOgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmNwcDoK
KyAgICAgICAgKEpTQzo6c2V0VXBTdGF0aWNGdW5jdGlvblNsb3QpOgorICAgICAgICAqIHJ1bnRp
bWUvTG9va3VwLmg6CisgICAgICAgIChKU0M6Okhhc2hFbnRyeTo6YnVpbHRpbkdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6Okhhc2hFbnRyeTo6cHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAoSlND
OjpIYXNoRW50cnk6OnByb3BlcnR5UHV0dGVyKToKKyAgICAgICAgKEpTQzo6SGFzaFRhYmxlOjpl
bnRyeSk6CisgICAgICAgIChKU0M6OmdldFN0YXRpY1Byb3BlcnR5U2xvdCk6CisgICAgICAgIChK
U0M6OmdldFN0YXRpY1ZhbHVlU2xvdCk6CisgICAgICAgIChKU0M6OnB1dEVudHJ5KToKKyAgICAg
ICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpO
YXRpdmVFcnJvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNs
b3QuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToK
KyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjpidWlsdGluRXhlY3V0
YWJsZXMpOgorCiAyMDE0LTAyLTExICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYiBSZXBsYXk6IHVwc3RyZWFtIHJlcGxheSBpbnB1dCBjb2RlIGdlbmVyYXRvciBh
bmQgRW5jb2RlZFZhbHVlIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCmluZGV4IDBlYmU3ZGQ4YmVhNTUwMmFmNDRh
ZmJlOWNkOTkwMDEyY2ZmOTk5ZDUuLjVjMDViZjExNWRjZjdjNDM0ODg5MzE4ZmQxNDc3ZDAwOWI1
MGZiZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09i
amVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdEZ1bmN0aW9ucy5oCkBAIC0xMzYsNyArMTM2LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGUKICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CiAgICAg
UmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgCi0gICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0Ns
YXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNz
ID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgICAgIC8vIG9wdGlvbmFsIG9wdGlt
aXphdGlvbiB0byBieXBhc3MgZ2V0UHJvcGVydHkgaW4gY2FzZXMgd2hlbiB3ZSBvbmx5IG5lZWQg
dG8ga25vdyBpZiB0aGUgcHJvcGVydHkgZXhpc3RzCiAgICAgICAgICAgICBpZiAoSlNPYmplY3RI
YXNQcm9wZXJ0eUNhbGxiYWNrIGhhc1Byb3BlcnR5ID0ganNDbGFzcy0+aGFzUHJvcGVydHkpIHsK
QEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcAogICAgIFJlZlB0cjxP
cGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwogICAgIEpTVmFsdWVSZWYgdmFsdWVSZWYg
PSB0b1JlZihleGVjLCB2YWx1ZSk7CiAgICAgCi0gICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBw
cm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSB7CisgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBw
cm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0
aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50
Q2xhc3MpIHsKICAgICAgICAgICAgIGlmIChKU09iamVjdFNldFByb3BlcnR5Q2FsbGJhY2sgc2V0
UHJvcGVydHkgPSBqc0NsYXNzLT5zZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIGlmICgh
cHJvcGVydHlOYW1lUmVmKQpAQCAtMzQzLDcgKzM0Myw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvCiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmplY3QpOwogICAgIFJl
ZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwogICAgIAotICAgIGlmIChTdHJp
bmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJp
bmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFz
c1JlZiBqc0NsYXNzID0gdGhpc09iamVjdC0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9
IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgICAgICBpZiAoSlNPYmplY3REZWxldGVQ
cm9wZXJ0eUNhbGxiYWNrIGRlbGV0ZVByb3BlcnR5ID0ganNDbGFzcy0+ZGVsZXRlUHJvcGVydHkp
IHsKICAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5TmFtZVJlZikKQEAgLTU2NCw3ICs1NjQs
NyBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0U3RhdGljVmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcAogewogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYg
PSB0b1JlZih0aGlzKTsKICAgICAKLSAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5
TmFtZS5wdWJsaWNOYW1lKCkpIHsKKyAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5
TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IGNsYXNzUmVm
KCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICAg
ICAgaWYgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZSogc3RhdGljVmFsdWVzID0ganND
bGFzcy0+c3RhdGljVmFsdWVzKGV4ZWMpKSB7CiAgICAgICAgICAgICAgICAgaWYgKFN0YXRpY1Zh
bHVlRW50cnkqIGVudHJ5ID0gc3RhdGljVmFsdWVzLT5nZXQobmFtZSkpIHsKQEAgLTYwMCw3ICs2
MDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1
bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSgogICAgIGlmIChQYXJlbnQ6OmdldE93blBy
b3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QyKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90Mi5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUp
KTsKIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnB1YmxpY05hbWUo
KSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CiAg
ICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iai0+Y2xhc3NSZWYoKTsganND
bGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgICAgICBpZiAo
T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlKiBzdGF0aWNGdW5jdGlvbnMgPSBqc0Ns
YXNzLT5zdGF0aWNGdW5jdGlvbnMoZXhlYykpIHsKICAgICAgICAgICAgICAgICBpZiAoU3RhdGlj
RnVuY3Rpb25FbnRyeSogZW50cnkgPSBzdGF0aWNGdW5jdGlvbnMtPmdldChuYW1lKSkgewpAQCAt
NjI2LDcgKzYyNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6
Y2FsbGJhY2tHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjCiAgICAgSlNPYmplY3RSZWYg
dGhpc1JlZiA9IHRvUmVmKHRoaXNPYmopOwogICAgIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJv
cGVydHlOYW1lUmVmOwogICAgIAotICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlO
YW1lLnB1YmxpY05hbWUoKSkgeworICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlO
YW1lLnVpZCgpKSB7CiAgICAgICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iai0+
Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAg
ICAgICAgICAgICBpZiAoSlNPYmplY3RHZXRQcm9wZXJ0eUNhbGxiYWNrIGdldFByb3BlcnR5ID0g
anNDbGFzcy0+Z2V0UHJvcGVydHkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5TmFt
ZVJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5NjlkNmJlYTYyNjFm
MDFjMjcwYTJkZDMxZWZmZDdiMTM4MjZiYTc5Li5lYTIxNmUyZThjYzQ5MmM4YjA2MmE1YWZjZGQx
YzQ3MTJiNzFmMmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01LDYg
KzUsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMiCiAgICAgIiR7SkFWQVNDUklQVENP
UkVfRElSfS9hc3NlbWJsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9iaW5kaW5ncyIK
KyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zIgogICAgICIke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vYnl0ZWNvZGUiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9ieXRlY29tcGls
ZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9kZmciCkBAIC01Miw2ICs1Myw4IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvU2NyaXB0T2JqZWN0LmNwcAog
ICAgIGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAogCisgICAgYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcAorCiAgICAgYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAKICAg
ICBieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Js
b2NrLmNwcApAQCAtNzE5LDcgKzcyMiw3IEBAIHNldChIQVNIX0xVVF9HRU5FUkFUT1IgJHtDTUFL
RV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2NyZWF0ZV9oYXNoX3RhYmxlKQogbWFjcm8oR0VORVJBVEVf
SEFTSF9MVVQgX2lucHV0IF9vdXRwdXQpCiAgICAgYWRkX2N1c3RvbV9jb21tYW5kKAogICAgICAg
ICBPVVRQVVQgJHtfb3V0cHV0fQotICAgICAgICBERVBFTkRTICR7SEFTSF9MVVRfR0VORVJBVE9S
fSAke19pbnB1dH0KKyAgICAgICAgREVQRU5EUyAke0hBU0hfTFVUX0dFTkVSQVRPUn0gJHtfaW5w
dXR9ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucwogICAg
ICAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke0hBU0hfTFVUX0dFTkVSQVRPUn0gJHtf
aW5wdXR9IC1pID4gJHtfb3V0cHV0fQogICAgICAgICBWRVJCQVRJTSkKICAgICBsaXN0KEFQUEVO
RCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTICR7X291dHB1dH0pCkBAIC03NDgsNiArNzUxLDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX0ZPUldBUkRJTkdfSEVBREVSU19ESVJFQ1RPUklFUwogICAgIHlh
cnIKIAogICAgIGNvbGxlY3Rvci9oYW5kbGVzCisgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVND
UklQVENPUkVfRElSfQogKQogCiBzZXQoSmF2YVNjcmlwdENvcmVfRk9SV0FSRElOR19IRUFERVJT
X0ZJTEVTCkBAIC03NzUsOCArNzc5LDExIEBAIHNldChKYXZhU2NyaXB0Q29yZV9GT1JXQVJESU5H
X0hFQURFUlNfRklMRVMKICAgICBhc3NlbWJsZXIvTGlua0J1ZmZlci5oCiAgICAgYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyLmgKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgK
KyAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgKICAgICBqaXQvR1BSSW5mby5o
CiAgICAgcnVudGltZS9WTS5oCisKKyAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09S
RV9ESVJ9L0pTQ0J1aWx0aW5zLmgKICkKIAogCkBAIC04MjgsMTYgKzgzNSwyNyBAQCBhZGRfY3Vz
dG9tX2NvbW1hbmQoCiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3Jp
cHRDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0vQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weSAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTLmpzb24gLS1v
dXRwdXRfaF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0
cHV0X2NwcF9kaXIgIiR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0iIC0tb3V0
cHV0X2pzX2RpciAiJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSIgLS1vdXRw
dXRfdHlwZSBKYXZhU2NyaXB0IC0td3JpdGVfYWx3YXlzICYmIG1rZGlyIC1wICR7REVSSVZFRF9T
T1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yICYmIGNwICR7REVSSVZFRF9TT1VS
Q0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTRnJvbnRlbmRE
aXNwYXRjaGVycy5oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVj
dG9ySlNUeXBlQnVpbGRlcnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9
L2luc3BlY3RvcgogICAgIFZFUkJBVElNKQogCisjIEpTQ0J1aWx0aW5zCitmaWxlKEdMT0IgSlND
QnVpbHRpbnNfanNfZmlsZXMgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9idWlsdGlucy8q
LmpzIikKK2FkZF9jdXN0b21fY29tbWFuZCgKKyAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19K
QVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcCAke0RFUklWRURfU09VUkNFU19KQVZB
U0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKKyAgIE1BSU5fREVQRU5ERU5DWSAke0NNQUtF
X0NVUlJFTlRfU09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMKKyAgIERFUEVORFMgJHtK
U0NCdWlsdGluc19qc19maWxlc30KKyAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtD
TUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zICR7SlNDQnVpbHRp
bnNfanNfZmlsZXN9ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVp
bHRpbnMuaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5z
LmNwcAorICAgVkVSQkFUSU0pCisKIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMK
ICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luc3BlY3RvckpTQmFj
a2VuZERpc3BhdGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0vSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcAogICAgICR7REVSSVZFRF9T
T1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwCisg
ICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5jcHAK
ICkKIAogbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUwogICAgICR7REVSSVZFRF9T
T1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMu
aAogICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5zcGVjdG9ySlNG
cm9udGVuZERpc3BhdGNoZXJzLmgKICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09S
RV9ESVJ9L0luc3BlY3RvckpTVHlwZUJ1aWxkZXJzLmgKKyAgICAke0RFUklWRURfU09VUkNFU19K
QVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKICkKIAogYWRkX2N1c3RvbV9jb21tYW5k
KApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2Ug
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA2MDI3NDY2
MzA5YmNhZmMxMTI2MzM3ZmEzMTgzZmZhZmY3MzBmMGY1Li40MzU0MDU2NGMwMGViZmMzNWQ5Zjg5
M2EyMmU0MzM5N2RhZDZhYzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQpAQCAtMjgsOCArMjgsOSBAQCBWUEFUSCA9IFwKICAgICAkKEphdmFTY3JpcHRDb3Jl
KSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvcGFyc2VyIFwKICAgICAkKEphdmFTY3JpcHRDb3Jl
KS9ydW50aW1lIFwKLSAgICAkKEphdmFTY3JpcHRDb3JlKS9pbnRlcnByZXRlciBcCi0gICAgJChK
YXZhU2NyaXB0Q29yZSkvaml0IFwKKwkkKEphdmFTY3JpcHRDb3JlKS9pbnRlcnByZXRlciBcCisJ
JChKYXZhU2NyaXB0Q29yZSkvaml0IFwKKwkkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucyBcCiAj
CiAKIC5QSE9OWSA6IGFsbApAQCAtNTcsOCArNTgsMTggQEAgYWxsIDogXAogICAgIFJlZ0V4cE9i
amVjdC5sdXQuaCBcCiAgICAgU3RyaW5nQ29uc3RydWN0b3IubHV0LmggXAogICAgIHVkaXM4Nl9p
dGFiLmggXAorICAgIEpTQ0J1aWx0aW5zIFwKICMKIAorIyBidWlsdGluIGZ1bmN0aW9ucworLlBI
T05ZOiBKU0NCdWlsdGlucworCitKU0NCdWlsdGluczogJChKYXZhU2NyaXB0Q29yZSkvZ2VuZXJh
dGUtanMtYnVpbHRpbnMgSlNDQnVpbHRpbnMuaCBKU0NCdWlsdGlucy5jcHAKK0pTQ0J1aWx0aW5z
Lmg6ICQoSmF2YVNjcmlwdENvcmUpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zICQoSmF2YVNjcmlwdENv
cmUpL2J1aWx0aW5zLyouanMKKwlweXRob24gJF4gJEAKKwkJCQkJCQkJCQkJCQkJCQkJCQkJIAor
SlNDQnVpbHRpbnMuY3BwOiBKU0NCdWlsdGlucy5oCisKICMgbG9va3VwIHRhYmxlcyBmb3IgY2xh
c3NlcwogCiAlLmx1dC5oOiBjcmVhdGVfaGFzaF90YWJsZSAlLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0dOVW1ha2VmaWxlLmFtCmluZGV4IGNjM2JjMTkwYjc5ZGRjNDE3ZTc0OGFkNzEwNWIxODEzNTE4
MjIwNTIuLmFkNzNiNzhkNTU4NDgxMGQ2MzU3ZDAxODVmNDVkMDIxYWFkZjE1MjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTUxLDYgKzUxLDcgQEAgamF2YXNjcmlwdGNv
cmVfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Gb3J3
YXJkaW5nSGVhZGVycyBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
YmxlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzIFwKKwkt
SSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMgXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyIFwKQEAgLTExMCwxMiArMTExLDE2IEBAIERlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaDogJChqYXZhc2NyaXB0Y29yZV9zb3Vy
Y2VzKSAkCiAJJChBTV9WX0dFTikkKFJVQlkpICQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiICQoc3JjZGlyKS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gJEAKIAkkKEFN
X1ZfYXQpdG91Y2ggJEAKIAotJChQcm9ncmFtc19MTEludE9mZnNldHNFeHRyYWN0b3JfT0JKRUNU
Uyk6IERlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaAor
JChQcm9ncmFtc19MTEludE9mZnNldHNFeHRyYWN0b3JfT0JKRUNUUyk6IERlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlL0xMSW50RGVzaXJlZE9mZnNldHMuaCAKIAogRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvTExJbnRBc3NlbWJseS5oOiBQcm9ncmFtcy9MTEludE9mZnNldHNFeHRy
YWN0b3IkKEVYRUVYVCkKIAkkKEFNX1ZfR0VOKSQoUlVCWSkgJChzcmNkaXIpL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYiAkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIFByb2dyYW1zL0xMSW50T2Zmc2V0c0V4
dHJhY3RvciQoRVhFRVhUKSAkQAogCSQoQU1fVl9hdCl0b3VjaCAkQAogCitEZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5oOiBEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0
Q29yZS9KU0NCdWlsdGlucy5jcHAKK0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1
aWx0aW5zLmNwcDogJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1qcy1i
dWlsdGlucyAkKGphdmFzY3JpcHRjb3JlX2J1aWx0aW5zX2pzX25vc291cmNlcykKKwkkKEFNX1Zf
R0VOKSQoUFlUSE9OKSAkXiAkQAorCiAkKGxpYmphdmFzY3JpcHRjb3JlZ3RrX0BXRUJLSVRHVEtf
QVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX09CSkVD
VFMpOiBEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9MTEludEFzc2VtYmx5LmgKIAoganNj
OiAkKGphdmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcykgUHJvZ3JhbXMvanNjJChFWEVFWFQp
CkBAIC0yMTcsNiArMjIyLDcgQEAgRVhUUkFfRElTVCArPSBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL0tleXdvcmRMb29rdXBHZW5lcmF0b3IucHkgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvS2V5d29yZHMudGFibGUgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9USEFOS1MgXAor
CSQoamF2YXNjcmlwdGNvcmVfYnVpbHRpbnNfanNfbm9zb3VyY2VzKSBcCiAJJChsbGludF9ub3Nv
dXJjZXMpIFwKIAkkKG9mZmxpbmVhc21fbm9zb3VyY2VzKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDg4Mjk0YjcwYzc2MzA5NmExODMwYTg0OTE3NTk5
MzAxNjg3MzUxZDkuLjZkMWJlNjQ1ZTM2OTM5MWNhYTEyM2IzNmM3YjVhYTE1NDkyNGI1MzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yMCw2ICsyMCw4
IEBAIGphdmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvRXJyb3JQcm90b3R5cGUubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL0pTRGF0YVZpZXdQcm90b3R5cGUubHV0LmggXAogCURlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0Lmx1dC5oIFwKKwlEZXJpdmVkU291cmNlcy9K
YXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5jcHAgXAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL0pTQ0J1aWx0aW5zLmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pT
T05PYmplY3QubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTUHJvbWlz
ZUNvbnN0cnVjdG9yLmx1dC5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU1By
b21pc2VQcm90b3R5cGUubHV0LmggXApAQCAtMzUsNiArMzcsOSBAQCBqYXZhc2NyaXB0Y29yZV9i
dWlsdF9ub3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0xMSW50
RGVzaXJlZE9mZnNldHMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTExJbnRB
c3NlbWJseS5oCiAKK2phdmFzY3JpcHRjb3JlX2J1aWx0aW5zX2pzX25vc291cmNlcyArPSBcCisJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcworCiBqYXZh
c2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNh
bGxiYWNrRnVuY3Rpb24uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0Lmgg
XApAQCAtMTAyLDYgKzEwNyw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogICAgIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRPYmplY3QuaCBcCiAgICAgU291cmNl
L0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcCBcCiAgICAgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmggXAorICAgIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIFwKKyAgICBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAgXApAQCAtMTI3MCw3
ICsxMjc3LDkgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmNwcCBcCiAJRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJz
LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpTVHlwZUJ1aWxk
ZXJzLmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9ySlNUeXBl
QnVpbGRlcnMuaAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0luc3BlY3RvckpTVHlw
ZUJ1aWxkZXJzLmggXAorCURlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5z
LmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNDQnVpbHRpbnMuaAogCiBs
bGludF9ub3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qCmluZGV4IGYyMzZmNzI5MWYwMzM1MTA4NjgzYmJlZDVhYWZjYjBkZjJhZmY3NTguLjlkMGQz
YzNmNTUyMDYxMTdmZmVkYzUyMjQ0YTAwMjY1YWNkYWQ2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvagpAQCAtMzA5LDYgKzMwOSw3IEBACiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0T2JqZWN0LmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdFZhbHVlLmNwcCIgLz4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxl
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5UHJvZmls
ZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeXRlY29kZUJh
c2ljQmxvY2suY3BwIiAvPgpAQCAtNzMyLDYgKzczMyw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hl
cnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEluc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNUeXBlQnVpbGRl
cnMuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEpTQ0J1aWx0aW5zLmNwcCIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0
Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcQXJyYXlDb25z
dHJ1Y3Rvci5sdXQuaCIgLz4KQEAgLTc2MSw2ICs3NjMsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFJlZ0V4cE9iamVjdC5sdXQuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xSZWdFeHBQcm90
b3R5cGUubHV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcU3RyaW5nQ29uc3RydWN0b3IubHV0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuaCIgLz4KICAgPC9JdGVt
R3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcQVBJ
Q2FsbGJhY2tGdW5jdGlvbi5oIiAvPgpAQCAtODA5LDYgKzgxMiw3IEBACiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXFNjcmlwdE9iamVjdC5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0VmFsdWUuaCIgLz4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGJ1aWx0aW5zXEJ1aWx0aW5FeGVjdXRhYmxlcy5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQXJyYXlQcm9maWxlLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeVZhbEluZm8uaCIgLz4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCBi
OWVhNTY2YWFmNjJjZGZiN2EzMDQ2YmVkZjhkZmUzZGQwY2Q5NDNjLi5kNGM3ZjZlYTViN2M1MGQw
MTE3ZDNkZGQ4ZDRmZWRhYjc2OWNiODhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC03LDYgKzcsOSBAQAogICAgIDxGaWx0ZXIgSW5j
bHVkZT0iYmluZGluZ3MiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezBiYWNlMTIzLTQ1ODIt
ZWViYy05MzE0LTc4MTliMzc2YzE5OH08L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+
CisgICAgPEZpbHRlciBJbmNsdWRlPSJidWlsdGlucyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmll
cj57M2I5ZDcyYTUtMTM1Yi00M2IzLWE1MjQtYzZkMmI5ZDI5ZDM1fTwvVW5pcXVlSWRlbnRpZmll
cj4KKyAgICA8L0ZpbHRlcj4KICAgICA8RmlsdGVyIEluY2x1ZGU9ImJ5dGVjb2RlIj4KICAgICAg
IDxVbmlxdWVJZGVudGlmaWVyPns3NjYwODhhMC0xMjE2LTQ4NTQtYWE0My01NjBjNWUyODM2Njh9
PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgpAQCAtMTA4LDYgKzExMSw5IEBACiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcTWFjcm9Bc3NlbWJsZXIuY3BwIj4K
ICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWlsdGluRXhlY3V0YWJsZXMuY3BwIj4K
KyAgICAgIDxGaWx0ZXI+YnVpbHRpbnM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3Bw
Ij4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAg
LTEzMjksNiArMTMzNSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSW5zcGVjdG9ySlNUeXBlQnVpbGRlcnMuY3BwIj4KICAgICAgIDxGaWx0ZXI+
RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVj
dHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNDQnVpbHRpbnMuY3BwIj4KKyAg
ICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAg
IDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
QVBJXEFQSUNhbGxiYWNrRnVuY3Rpb24uaCI+CkBAIC0xNDU0LDYgKzE0NjMsOSBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXFg4NkFzc2VtYmxlci5oIj4KICAgICAgIDxG
aWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxidWlsdGluc1xCdWlsdGluRXhlY3V0YWJsZXMuaCI+CisgICAgICA8Rmls
dGVyPmJ1aWx0aW5zPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxieXRlY29kZVxBcnJheUFsbG9jYXRpb25Qcm9maWxlLmgiPgogICAgICAgPEZp
bHRlcj5ieXRlY29kZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMjU1Niw2ICsyNTY4
LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xB
cnJheVByb3RvdHlwZS5sdXQuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmls
dGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmgiPgorICAgICAgPEZpbHRlcj5EZXJpdmVkIFNv
dXJjZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcVk0uaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlQ29tbW9uLnByb3BzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmVDb21tb24ucHJvcHMK
aW5kZXggMzYyMmZmYzU3N2M0M2RkZjcwZGE1MWZmNjhhZDY0NmY2MzA0ZTU2Ny4uYzU4ODg3MGMy
ZmQxM2Q2MDc2ZDM4ZjUyY2E2MjI1ZGIyODcyYzc4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmVDb21tb24ucHJv
cHMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmVDb21tb24ucHJvcHMKQEAgLTUsNyArNSw3IEBACiAgIDxQcm9wZXJ0eUdyb3Vw
IC8+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlw7Li5cdG9vbHNcOy4uXHJ1bnRpbWVcOy4uXGxs
aW50XDsuLlxqaXRcOy4uXGRpc2Fzc2VtYmxlclw7Li5caGVhcFw7Li5cZGVidWdnZXJcOy4uXGFz
c2VtYmxlclw7Li5ccHJvZmlsZXJcOy4uXHlhcnJcOy4uXGludGVycHJldGVyXDsuLlxieXRlY29k
ZVw7Li5cZGZnXDsuLlxieXRlY29tcGlsZXJcOy4uXHBhcnNlclw7Li5cQVBJXDsuLlxmdGxcOy4u
XGJpbmRpbmdzXDsuLlxpbnNwZWN0b3JcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBs
YXRmb3JtQXJjaGl0ZWN0dXJlKVxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1w7JChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNs
dWRlXEphdmFTY3JpcHRDb3JlXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2
YXRlXDskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGU7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNs
dWRlXHByaXZhdGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4u
XDsuLlx0b29sc1w7Li5ccnVudGltZVw7Li5cbGxpbnRcOy4uXGppdFw7Li5cZGlzYXNzZW1ibGVy
XDsuLlxoZWFwXDsuLlxkZWJ1Z2dlclw7Li5cYXNzZW1ibGVyXDsuLlxwcm9maWxlclw7Li5ceWFy
clw7Li5caW50ZXJwcmV0ZXJcOy4uXGJ5dGVjb2RlXDsuLlxidWlsdGluc1w7Li5cZGZnXDsuLlxi
eXRlY29tcGlsZXJcOy4uXHBhcnNlclw7Li5cQVBJXDsuLlxmdGxcOy4uXGJpbmRpbmdzXDsuLlxp
bnNwZWN0b3JcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1w7JChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXGluY2x1ZGVcOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRD
b3JlXDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXDskKFdlYktpdF9M
aWJyYXJpZXMpXGluY2x1ZGU7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRlXHByaXZhdGU7JShB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cz4KICAgICAgIDxGb3JjZWRJbmNsdWRlRmlsZXM+SUNVVmVyc2lvbi5oOyUoRm9yY2VkSW5jbHVk
ZUZpbGVzKTwvRm9yY2VkSW5jbHVkZUZpbGVzPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5r
PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovY29weS1maWxlcy5jbWQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9jb3B5LWZpbGVzLmNtZAppbmRleCA5NDMzNDNhNTY4ZTNlMjk5ODE2YmY2NmYyZWRi
NTI0MzU4ZmM1NGU4Li5lMGMxZjI5NjYxOTZiZGEzMDAzNTk1YzVkZjAzZWVlMDhhMGRhNzhmIDEw
MDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9j
b3B5LWZpbGVzLmNtZAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9jb3B5LWZpbGVzLmNtZApAQCAtNDIsNiArNDIsNyBAQCBmb3IgJSVkIGluICgKICAg
ICBhc3NlbWJsZXINCiAgICAgYmluZGluZ3MNCiAgICAgYnl0ZWNvZGUNCisgICAgYnVpbHRpbnMN
CiAgICAgZGZnDQogICAgIGRpc2Fzc2VtYmxlcg0KICAgICBoZWFwDQpAQCAtNzIsNiArNzMsOSBA
QCB4Y29weSAveSAiJURlcml2ZWRTb3VyY2VzRGlyZWN0b3J5JVxJbnNwZWN0b3JKU1R5cGVCdWls
ZGVycy5oIiAiJVByaXZhdGVIZWFkZXJzRAogeGNvcHkgL3kgIiVEZXJpdmVkU291cmNlc0RpcmVj
dG9yeSVcSW5zcGVjdG9ySlNCYWNrZW5kRGlzcGF0Y2hlcnMuaCIgIiVQcml2YXRlSGVhZGVyc0Rp
cmVjdG9yeSUiID5OVUwNCiB4Y29weSAveSAiJURlcml2ZWRTb3VyY2VzRGlyZWN0b3J5JVxJbnNw
ZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuaCIgIiVQcml2YXRlSGVhZGVyc0RpcmVjdG9yeSUi
ID5OVUwNCiANCitlY2hvIENvcHlpbmcgYnVpbHRpbnMgaGVhZGVyIGFzIGlmIGl0IHdlcmUgYSBw
cml2YXRlIGhlYWRlci4uLg0KK3hjb3B5IC95ICIlRGVyaXZlZFNvdXJjZXNEaXJlY3RvcnklXEpT
Q0J1aWx0aW5zLmgiICIlUHJpdmF0ZUhlYWRlcnNEaXJlY3RvcnklIiA+TlVMDQorDQogZWNobyBD
b3B5aW5nIHJlc291cmNlcy4uLg0KIG1rZGlyICIlUmVzb3VyY2VzRGlyZWN0b3J5JSIgMj5OVUwN
CiB4Y29weSAveSAvZCBKYXZhU2NyaXB0Q29yZS5yZXNvdXJjZXNcKiAiJVJlc291cmNlc0RpcmVj
dG9yeSUiID5OVUwNCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc5Nzk2NGJhNmM2
NDJlYTM0Y2EzNzQ4YzA1ZDhmMDFmZTgwZTNmNWIuLmRjYWJlMTA0NGU2MmVmNWQ4MzA5MmI3NDc2
MjIxOTYyMmRmZTlmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTAwLDYg
KzExMDAsNyBAQAogCQlBNzRERUY5NTE4MkQ5OTE0MDA1MjJDMjIgLyogSlNNYXBJdGVyYXRvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzRERUY4
RjE4MkQ5OTE0MDA1MjJDMjIgLyogSlNNYXBJdGVyYXRvci5jcHAgKi87IH07CiAJCUE3NERFRjk2
MTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzRERUY5MDE4MkQ5OTE0MDA1MjJDMjIgLyogSlNN
YXBJdGVyYXRvci5oICovOyB9OwogCQlBNzU3MDZERTExOEEyQkNGMDA1N0Y4OEYgLyogSklUQXJp
dGhtZXRpYzMyXzY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3NTcwNkREMTE4QTJCQ0YwMDU3Rjg4RiAvKiBKSVRBcml0aG1ldGljMzJfNjQuY3Bw
ICovOyB9OworCQlBNzVFRTlCMjE4QUFCN0UyMDBBQUQwNDMgLyogQnVpbHRpbk5hbWVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzVFRTlCMDE4QUFC
N0UyMDBBQUQwNDMgLyogQnVpbHRpbk5hbWVzLmggKi87IH07CiAJCUE3NjE0MENEMTgyOTgyQ0Iw
MDc1MDYyNCAvKiBBcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NjE0MEM3MTgyOTgyQ0IwMDc1MDYy
NCAvKiBBcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKIAkJQTc2MTQwQ0Ux
ODI5ODJDQjAwNzUwNjI0IC8qIEFyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NjE0MEM4MTgyOTgyQ0Iw
MDc1MDYyNCAvKiBBcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmggKi87IH07CiAJCUE3NjE0
MENGMTgyOTgyQ0IwMDc1MDYyNCAvKiBBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzYxNDBDOTE4Mjk4
MkNCMDA3NTA2MjQgLyogQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwICovOyB9OwpAQCAt
MTE4Niw2ICsxMTg3LDEwIEBACiAJCUE3Q0EzQUU4MTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtN
YXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0Ez
QUUyMTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuaCAqLzsgfTsKIAkJQTdDQTNBRUIxN0RB
NTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Q0EzQUU5MTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFw
RGF0YS5jcHAgKi87IH07CiAJCUE3Q0EzQUVDMTdEQTUxNjgwMDY1MzhBRiAvKiBXZWFrTWFwRGF0
YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDQTNB
RUExN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmggKi87IH07CisJCUE3RDgwMUE0MTg4
MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTExODgwRDY2RTAwMjZDMzlCIC8q
IEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi87IH07CisJCUE3RDgwMUE1MTg4MEQ2NkUwMDI2QzM5
QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0
YWJsZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlBN0Q4MDFBODE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODAxQTYxODgwRDZBODAwMjZD
MzlCIC8qIEpTQ0J1aWx0aW5zLmNwcCAqLzsgfTsKKwkJQTdEODAxQTkxODgwRDZBODAwMjZDMzlC
IC8qIEpTQ0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBN0Q4MDFBNzE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCAqLzsgfTsK
IAkJQTdEODlDRjIxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Jhc2ljQmxvY2suY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODlDRTMxN0EwQjhDQzAw
NzczQUQ4IC8qIERGR0Jhc2ljQmxvY2suY3BwICovOyB9OwogCQlBN0Q4OUNGMzE3QTBCOENDMDA3
NzNBRDggLyogREZHQmxvY2tJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEODlDRTQxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Js
b2NrSW5zZXJ0aW9uU2V0LmNwcCAqLzsgfTsKIAkJQTdEODlDRjQxN0EwQjhDQzAwNzczQUQ4IC8q
IERGR0Jsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBN0Q4OUNFNTE3QTBCOENDMDA3NzNBRDggLyogREZHQmxvY2tJbnNlcnRp
b25TZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMjE0NSw3ICsyMTUwLDcgQEAKIAkJMTREODU3NzQwQTQ2OTZDODAwMzIxNDZDIC8qIHRlc3Rh
cGkuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSB0ZXN0YXBpLmpz
OyBwYXRoID0gQVBJL3Rlc3RzL3Rlc3RhcGkuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTE0REE4MThFMEQ5OUZEMjAwMEIwQTRGQiAvKiBKU0FjdGl2YXRpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBY3RpdmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTE0REE4MThGMEQ5OUZEMjAwMEIwQTRGQiAvKiBKU0FjdGl2YXRpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBY3RpdmF0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMTRERTBENjgwRDAyNDMxNDAwQUFDQ0EyIC8q
IEpTR2xvYmFsT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTR2xvYmFsT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRERTBE
NjgwRDAyNDMxNDAwQUFDQ0EyIC8qIEpTR2xvYmFsT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBKU0dsb2JhbE9iamVjdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmll
ciA9IHhjb2RlLmxhbmcuY3BwOyB9OwogCQkxNERGMDREOTE2QjM5OTZEMDAxNkE1MTMgLyogU3Rh
dGljUHJvcGVydHlBbmFseXNpcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dGF0aWNQcm9wZXJ0eUFuYWx5c2lzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0
RTg0Rjk5MTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFrQmxvY2suY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2Vha0Jsb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMTRFODRGOUExNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtCbG9jay5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrQmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIyMjcsNyArMjIzMiw3IEBACiAJCTY1RkI1MTE1MTg0RUU4RjgwMEMxMkI3
MCAvKiBQcm90b0NhbGxGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
cm90b0NhbGxGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUZCNTExNjE4
NEVFOUJDMDBDMTJCNzAgLyogUHJvdG9DYWxsRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUHJvdG9DYWxsRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MDRGRDM1MzA1Njk3RTZEMDAzREJFRDkgLyogQm9vbGVhbk9iamVjdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCb29sZWFu
T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKLQkJN0Mw
MDhDRDAxODZGOEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Byb21pc2VGdW5jdGlvbnMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzAwOENEMDE4NkY4QTkzMDA5NTVDMjQgLyogSlNQ
cm9taXNlRnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbGluZUVu
ZGluZyA9IDA7IHBhdGggPSBKU1Byb21pc2VGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLmNw
cDsgfTsKIAkJN0MwMDhDRDExODZGOEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb21pc2VGdW5jdGlvbnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMDhDRDgxODcxMjRCQjAwOTU1QzI0IC8q
IEpTUHJvbWlzZURlZmVycmVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTUHJvbWlzZURlZmVycmVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0MwMDhDRDkxODcxMjRCQjAwOTU1QzI0IC8qIEpTUHJvbWlzZURlZmVycmVkLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvbWlzZURlZmVycmVkLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yMjM2LDkgKzIyNDEsOSBAQAogCQk3QzAwOENFNTE4NzYzMUI2
MDA5NTVDMjQgLyogTWljcm90YXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1pY3JvdGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzE4NEUxODE3QkVE
QkQzMDA3Q0I2M0EgLyogSlNQcm9taXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTUHJvbWlzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
MTg0RTE5MTdCRURCRDMwMDdDQjYzQSAvKiBKU1Byb21pc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNQcm9taXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTdDMTg0RTFDMTdCRUUyMkUwMDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQcm9taXNlUHJvdG90eXBlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MxODRFMUMxN0JFRTIyRTAwN0NCNjNBIC8q
IEpTUHJvbWlzZVByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGxp
bmVFbmRpbmcgPSAwOyBwYXRoID0gSlNQcm9taXNlUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFu
Zy5jcHA7IH07CiAJCTdDMTg0RTFEMTdCRUUyMkUwMDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5
cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9taXNlUHJvdG90eXBl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDMTg0RTIwMTdCRUUyNDAwMDdDQjYz
QSAvKiBKU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdDMTg0RTIwMTdCRUUyNDAwMDdDQjYzQSAvKiBKU1Byb21pc2VDb25zdHJ1Y3Rv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBwYXRo
ID0gSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xh
bmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKIAkJN0Mx
ODRFMjExN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvbWlzZUNvbnN0cnVjdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMTg0RTI0MTdCRkZBMzYwMDdDQjYzQSAvKiBKU1Byb21p
c2VDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9taXNlQ29uc3RydWN0b3Iu
bHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMTg0RTI1MTdCRkZBMzYwMDdD
QjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvbWlz
ZVByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1MzksNiAr
MjU0NCw3IEBACiAJCUE3MTIzNkU0MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUT3Bjb2RlczMyXzY0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxOEY2MUExMTc1NEEyMTAwMjQ2
NUE3IC8qIFJlZ0V4cEppdFRhYmxlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZWdFeHBKaXRUYWJsZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxOEY4
MjExMTc4RUI0QjAwMjQ2NUE3IC8qIGNyZWF0ZV9yZWdleF90YWJsZXMgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgZmls
ZUVuY29kaW5nID0gNDsgcGF0aCA9IGNyZWF0ZV9yZWdleF90YWJsZXM7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUE3MURBODBEMTg4MEQ3MUYwMEQxRjI5OSAvKiBnZW5lcmF0ZS1qcy1i
dWlsdGlucyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9ICJnZW5lcmF0ZS1q
cy1idWlsdGlucyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI0MTc5NzYw
MUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNDVGVzdFJ1bm5lclV0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTcyMDI4QjUxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJV
dGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NUZXN0UnVubmVyVXRp
bHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyMDI4QjkxNzk3NjAzRDAwOTgw
MjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTRnVuY3Rpb25JbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
NTc4LDkgKzI1ODQsMTAgQEAKIAkJQTc0REVGOEYxODJEOTkxNDAwNTIyQzIyIC8qIEpTTWFwSXRl
cmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNYXBJdGVy
YXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3NERFRjkwMTgyRDk5MTQw
MDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTTWFwSXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc1NzA2
REQxMThBMkJDRjAwNTdGODhGIC8qIEpJVEFyaXRobWV0aWMzMl82NC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRBcml0aG1ldGljMzJfNjQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBNzVFRTlCMDE4QUFCN0UyMDBBQUQwNDMgLyogQnVpbHRp
bk5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1aWx0aW5OYW1lcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzYxNDBDNzE4Mjk4MkNCMDA3NTA2MjQg
LyogQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc2MTQwQzgxODI5ODJDQjAwNzUwNjI0IC8qIEFyZ3Vt
ZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlBNzYxNDBDOTE4Mjk4MkNCMDA3NTA2MjQgLyogQXJndW1lbnRzSXRlcmF0b3JQcm90
b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJndW1lbnRz
SXRlcmF0b3JQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzYx
NDBDOTE4Mjk4MkNCMDA3NTA2MjQgLyogQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9IEFyZ3Vt
ZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5n
dWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5jcHA7IH07CiAJCUE3NjE0
MENBMTgyOTgyQ0IwMDc1MDYyNCAvKiBBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzYxNDBDQjE4Mjk4MkNCMDA3NTA2MjQg
LyogSlNBcmd1bWVudHNJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTc2MTQwQ0MxODI5ODJDQjAwNzUwNjI0IC8qIEpTQXJndW1lbnRzSXRlcmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcmd1bWVudHNJdGVyYXRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY0NSw5ICsyNjUyLDkgQEAKIAkJQTdCNEFD
QUUxNDg0QzlDRTAwQjM4QTM2IC8qIEpTRXhwb3J0TWFjcm9zLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTRXhwb3J0TWFjcm9zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE3QkRBRUMwMTdGNEVBMTQwMEY2MTQwQyAvKiBBcnJheUl0ZXJhdG9yQ29uc3RydWN0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlJdGVyYXRv
ckNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdCREFFQzEx
N0Y0RUExNDAwRjYxNDBDIC8qIEFycmF5SXRlcmF0b3JDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUl0ZXJhdG9yQ29uc3RydWN0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTdCREFFQzIxN0Y0RUExNDAwRjYxNDBDIC8qIEFycmF5
SXRlcmF0b3JQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE3QkRBRUMyMTdGNEVBMTQwMEY2MTQwQyAvKiBBcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBB
cnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5n
dWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5jcHA7IH07CiAJCUE3QkRB
RUMzMTdGNEVBMTQwMEY2MTQwQyAvKiBBcnJheUl0ZXJhdG9yUHJvdG90eXBlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5SXRlcmF0b3JQcm90b3R5cGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTdCREFFQzQxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJy
YXlJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Fy
cmF5SXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0JEQUVDNDE3
RjRFQTE0MDBGNjE0MEMgLyogSlNBcnJheUl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBKU0FycmF5SXRlcmF0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIg
PSB4Y29kZS5sYW5nLmNwcDsgfTsKIAkJQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJy
YXlJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FycmF5SXRl
cmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdCRkYzQkYxNzk4Njg5NDAw
MDJGNDYyIC8qIERGR0ZpbHRyYXRpb25SZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gREZHRmlsdHJhdGlvblJlc3VsdC5oOyBwYXRoID0gZGZnL0RGR0ZpbHRyYXRpb25S
ZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdDMEM0QUExNjdDMDhDRDAw
MTcwMTFEIC8qIEpTU2NyaXB0UmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTU2NyaXB0UmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2
NjcsNiArMjY3NCwxMSBAQAogCQlBN0NBM0FFMjE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFw
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2Vha01hcC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBN0NBM0FFOTE3REE1MTY4MDA2NTM4QUYgLyogV2Vha01h
cERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vha01hcERh
dGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0NBM0FFQTE3REE1MTY4MDA2
NTM4QUYgLyogV2Vha01hcERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2Vha01hcERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdEODAxQTAxODgw
RDY2RTAwMjZDMzlCIC8qIEFycmF5LnByb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
amF2YXNjcmlwdDsgcGF0aCA9IEFycmF5LnByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTdEODAxQTExODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxl
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCdWlsdGluRXhlY3V0
YWJsZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFBMjE4ODBENjZF
MDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEJ1aWx0aW5FeGVjdXRhYmxlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBN0Q4MDFBNjE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDQnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBN0Q4MDFBNzE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRp
bnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDQnVpbHRpbnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdEODlDRTMxN0EwQjhDQzAwNzczQUQ4IC8qIERG
R0Jhc2ljQmxvY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZH
QmFzaWNCbG9jay5jcHA7IHBhdGggPSBkZmcvREZHQmFzaWNCbG9jay5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE3RDg5Q0U0MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0lu
c2VydGlvblNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdC
bG9ja0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHQmxvY2tJbnNlcnRpb25TZXQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0Q4OUNFNTE3QTBCOENDMDA3NzNBRDgg
LyogREZHQmxvY2tJbnNlcnRpb25TZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gREZHQmxvY2tJbnNlcnRpb25TZXQuaDsgcGF0aCA9IGRmZy9ERkdCbG9ja0luc2VydGlvblNl
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjg2OSw3ICsyODgxLDcgQEAKIAkJ
RjVCQjJCQzUwMzBGNzcyMTAxRkNGRTFEIC8qIENvbXBsZXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcGxldGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCUY1QzI5MEU2MDI4NEY5OEUwMTg2
MzVDQSAvKiBKYXZhU2NyaXB0Q29yZVByZWZpeC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKYXZhU2NyaXB0Q29yZVByZWZpeC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCUY2OEVCQjhDMDI1NUQ0QzYwMUZG
NjBGNyAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgfTsKLQkJRjY5MkE4NEQwMjU1NTk3RDAxRkY2MEY3IC8qIEFycmF5UHJvdG90eXBlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFy
cmF5UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9
OworCQlGNjkyQTg0RDAyNTU1OTdEMDFGRjYwRjcgLyogQXJyYXlQcm90b3R5cGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBsaW5lRW5kaW5nID0g
MDsgcGF0aCA9IEFycmF5UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFi
V2lkdGggPSA4OyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5n
LmNwcDsgfTsKIAkJRjY5MkE4NEUwMjU1NTk3RDAxRkY2MEY3IC8qIEFycmF5UHJvdG90eXBlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5
UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJ
RjY5MkE4NTAwMjU1NTk3RDAxRkY2MEY3IC8qIEJvb2xlYW5PYmplY3QuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQm9vbGVhbk9iamVj
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJRjY5MkE4
NTQwMjU1NTk3RDAxRkY2MEY3IC8qIGNyZWF0ZV9oYXNoX3RhYmxlICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgcGF0aCA9IGNyZWF0ZV9oYXNoX3RhYmxlOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CkBAIC0zMDA3LDYgKzMwMTks
NyBAQAogCQkJCTg2MDRGNEYyMTQzQTZDNDQwMEIyOTVGNSAvKiBDaGFuZ2VMb2cgKi8sCiAJCQkJ
RjY5MkE4NTQwMjU1NTk3RDAxRkY2MEY3IC8qIGNyZWF0ZV9oYXNoX3RhYmxlICovLAogCQkJCUE3
MThGODIxMTE3OEVCNEIwMDI0NjVBNyAvKiBjcmVhdGVfcmVnZXhfdGFibGVzICovLAorCQkJCUE3
MURBODBEMTg4MEQ3MUYwMEQxRjI5OSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAqLywKIAkJCQk0
NUUxMkQ4ODA2QTQ5QjBGMDBFOURGODQgLyoganNjLmNwcCAqLywKIAkJCQlGNjhFQkI4QzAyNTVE
NEM2MDFGRjYwRjcgLyogY29uZmlnLmggKi8sCiAJCQkJRjVDMjkwRTYwMjg0Rjk4RTAxODYzNUNB
IC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggKi8sCkBAIC0zMDE1LDYgKzMwMjgsNyBAQAogCQkJ
CTE0MzJFQkQ3MEEzNENBRDQwMDcxN0I5RiAvKiBBUEkgKi8sCiAJCQkJOTY4OENCMTIwRUQxMkI0
RTAwMUQ2NDlGIC8qIGFzc2VtYmxlciAqLywKIAkJCQlBNTRDRjJFQTE4NEVBNzM5MDAyMzdGMTkg
LyogYmluZGluZ3MgKi8sCisJCQkJQTdEODAxOUYxODgwRDY2RTAwMjZDMzlCIC8qIGJ1aWx0aW5z
ICovLAogCQkJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLywKIAkJCQk3
RTM5RDgxRDBFQzM4RUZBMDAzQUYxMUEgLyogYnl0ZWNvbXBpbGVyICovLAogCQkJCTFDOTA1MTNF
MEJBOUU4ODMwMDgxRTlEMCAvKiBDb25maWd1cmF0aW9ucyAqLywKQEAgLTM1OTksNiArMzYxMyw4
IEBACiAJCTY1MEZERjhEMDlEMEZDQTcwMDc2OUU1NCAvKiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUE3RDgwMUE2MTg4MEQ2
QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgKi8sCisJCQkJQTdEODAxQTcxODgwRDZBODAw
MjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggKi8sCiAJCQkJQkMxOEM1MjMwRTE2RkM4QTAwQjM0NDYw
IC8qIEFycmF5UHJvdG90eXBlLmx1dC5oICovLAogCQkJCUJDRDIwM0U3MEUxNzE4RjQwMDJDN0U4
MiAvKiBEYXRlUHJvdG90eXBlLmx1dC5oICovLAogCQkJCUE1MTNFNUM2MTg1Rjk0MzYwMDdFOTVB
RCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICovLApAQCAtNDcwMSw2ICs0NzE3LDE3IEBACiAJ
CQlwYXRoID0gcmVtb3RlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQTdE
ODAxOUYxODgwRDY2RTAwMjZDMzlCIC8qIGJ1aWx0aW5zICovID0geworCQkJaXNhID0gUEJYR3Jv
dXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlBN0Q4MDFBMDE4ODBENjZFMDAyNkMzOUIgLyogQXJy
YXkucHJvdG90eXBlLmpzICovLAorCQkJCUE3RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWls
dGluRXhlY3V0YWJsZXMuY3BwICovLAorCQkJCUE3RDgwMUEyMTg4MEQ2NkUwMDI2QzM5QiAvKiBC
dWlsdGluRXhlY3V0YWJsZXMuaCAqLywKKwkJCQlBNzVFRTlCMDE4QUFCN0UyMDBBQUQwNDMgLyog
QnVpbHRpbk5hbWVzLmggKi8sCisJCQkpOworCQkJcGF0aCA9IGJ1aWx0aW5zOworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIC8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCiAKIC8q
IEJlZ2luIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTQ5MDksNiArNDkzNiw3
IEBACiAJCQkJMEZEODFBRDMxNTRGQjRGMDAwOTgzRTcyIC8qIERGR0RvbWluYXRvcnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMUUzQTQ3MTUzNENCQjkwMDBGOTQ1NiAvKiBERkdEb3VibGVGb3Jt
YXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEM0M4MjgxNDExNUQ0RjAwRkQ4MUNCIC8q
IERGR0RyaXZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTc1RUU5QjIxOEFBQjdFMjAwQUFEMDQz
IC8qIEJ1aWx0aW5OYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2NkUxNkMxNERGM0YxNjAw
QjdCMkU0IC8qIERGR0VkZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDlBMjk2MTdBMEJDNzQw
MEVFMjYxOCAvKiBERkdFZGdlRG9taW5hdGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzk4NkQ1
NzE3QTBCQjFFMDBBOTVERDAgLyogREZHRWRnZVVzZXNTdHJ1Y3R1cmUuaCBpbiBIZWFkZXJzICov
LApAQCAtNTAyMyw2ICs1MDUxLDcgQEAKIAkJCQkwRkVBMEExRDE3MDhCMDA3MDBCQjcyMkMgLyog
RlRMQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEExRjE3MDhCMDA3MDBC
QjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTU5NDU1OTMxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTdEODAxQTkxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5z
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEEwQTE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ2Fw
YWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyQTE4N0RGREVDMDA4M0I2ODcg
LyogRlRMUmVjb3ZlcnlPcGNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTIzMTcwOTYw
NjkwMEJCNzIyQyAvKiBGVExDb21tb25WYWx1ZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNTA5OSw2
ICs1MTI4LDcgQEAKIAkJCQlCQzE4QzQwRjBFMTZGNUNEMDBCMzQ0NjAgLyogSWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQzI1RjhCQ0UxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVu
dGFsU3dlZXBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTkxNUVEOEU0NjAwRjE2N0Iy
IC8qIEluZGV4aW5nSGVhZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlBN0Q4MDFBNTE4ODBENjZF
MDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3
RjM5QTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXJJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkI3RjM5QjE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdUeXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkNFRkFCMDE4MDVDQTZEMDA0NzJDRTQgLyogSW5pdGlhbGl6ZUxM
Vk0uaCBpbiBIZWFkZXJzICovLApAQCAtNjAwMyw2ICs2MDMzLDcgQEAKIAkJCQlBN0Q4OUNGMjE3
QTBCOENDMDA3NzNBRDggLyogREZHQmFzaWNCbG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
NzBCMDgzMjE3QTBCNzlCMDBEQUYxNEIgLyogREZHQmluYXJ5U3dpdGNoLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE3RDg5Q0YzMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdCbG9ja0luc2VydGlvblNl
dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBN0Q4MDFBNDE4ODBENjZFMDAyNkMzOUIgLyogQnVp
bHRpbkV4ZWN1dGFibGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUM5REM0MTMyOERGODIw
MDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4
MkUyMTE0MTcyQ0UzMDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRkZDOTU3MTRFRjkwQTAwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTYwMTksNiArNjA1MCw3IEBACiAJCQkJMEZGRkM5NTkxNEVGOTBBNjAwQzcy
NTMyIC8qIERGR0NTRVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkZDNzcyMTZFMTJG
NzEwMDM4RDk3NiAvKiBERkdEQ0VQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhGMkI5
OTE3MkYwNEZGMDA3REJEQTUgLyogREZHRGVzaXJlZElkZW50aWZpZXJzLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUE3RDgwMUE4MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBNzNFMTMzMDE3OTYyNENEMDBFNERFQTggLyogREZHRGVzaXJlZFN0
cnVjdHVyZUNoYWlucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkMwRjdDRDE3QkJGQzVCMDA0
NjRGRTQgLyogREZHRGVzaXJlZFRyYW5zaXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RTg1MzRCMTcyM0NEQTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJy
YXkucHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnBy
b3RvdHlwZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZWI0MmY1Y2M0MzNmMTYzNjM0M2JmYzk4MmFhMmFhZmIz
MzZlOTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0FycmF5LnByb3RvdHlwZS5qcwpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVuY3Rpb24gZXZlcnkoY2FsbGJhY2sgLyosIHRo
aXNBcmcgKi8pIHsKKyAgICAidXNlIHN0cmljdCI7CisgICAgaWYgKHRoaXMgPT09IG51bGwpCisg
ICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWly
ZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwiKTsKKyAgICAKKyAgICBpZiAodGhpcyA9PT0gdW5k
ZWZpbmVkKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2
ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSB1bmRlZmluZWQiKTsKKyAgICAKKyAgICB2
YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMpOworICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGgg
Pj4+IDA7CisgICAgCisgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9uIikKKyAg
ICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFj
ayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKKworICAgIHZhciB0aGlzQXJnID0gYXJndW1lbnRzLmxl
bmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7CisgICAgCisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoIShpIGluIGFycmF5KSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoIWNhbGxiYWNrLkBjYWxsKHRoaXNBcmcs
IGFycmF5W2ldLCBpLCBhcnJheSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIAorICAgIHJldHVybiB0cnVlOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5MDA4MTM4
YTRlNDJiNTUwNWI0MmRkMzhmNGM0OWNkODQ3NjhlNjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApAQCAtMCww
ICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisK
KyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIlBhcnNlci5oIgorCituYW1lc3BhY2UgSlND
IHsKKworQnVpbHRpbkV4ZWN1dGFibGVzOjpCdWlsdGluRXhlY3V0YWJsZXMoVk0mIHZtKQorICAg
IDogbV92bSh2bSkKKyNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5h
bWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSAsIG1fIyNuYW1lIyNTb3VyY2UobWFrZVNvdXJjZShT
dHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChzXyMjbmFtZSwgbGVuZ3RoKSwgU3RyaW5nSW1w
bDo6Y3JlYXRlRnJvbUxpdGVyYWwoIjxidWlsdGluPiIpKSkKKyAgICBKU0NfRk9SRUFDSF9CVUlM
VElOKElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBFWFBPU0VfQlVJ
TFRJTl9TVFJJTkdTCit7Cit9CisKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGlu
RXhlY3V0YWJsZXM6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSkKK3sKKyAgICBKU1RleHRQb3NpdGlvbiBwb3Np
dGlvbkJlZm9yZUxhc3ROZXdsaW5lOworICAgIFBhcnNlckVycm9yIGVycm9yOworICAgIFJlZlB0
cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9IHBhcnNlPFByb2dyYW1Ob2RlPigmbV92bSwgc291cmNl
LCAwLCBJZGVudGlmaWVyKCksIEpTUGFyc2VCdWlsdGluLCBKU1BhcnNlUHJvZ3JhbUNvZGUsIGVy
cm9yLCAmcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CisKKyAgICBpZiAoIXByb2dyYW0pIHsK
KyAgICAgICAgZGF0YUxvZygiRmF0YWwgZXJyb3IgY29tcGlsaW5nIGJ1aWx0aW4gZnVuY3Rpb24g
JyIsIG5hbWUuc3RyaW5nKCksICInOiAiLCBlcnJvci5tX21lc3NhZ2UpOworICAgICAgICBDUkFT
SCgpOworICAgIH0KKworICAgIFN0YXRlbWVudE5vZGUqIGV4cHJTdGF0ZW1lbnQgPSBwcm9ncmFt
LT5zaW5nbGVTdGF0ZW1lbnQoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChleHByU3RhdGVtZW50KTsK
KyAgICBSRUxFQVNFX0FTU0VSVChleHByU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7Cisg
ICAgRXhwcmVzc2lvbk5vZGUqIGZ1bmNFeHByID0gc3RhdGljX2Nhc3Q8RXhwclN0YXRlbWVudE5v
ZGUqPihleHByU3RhdGVtZW50KS0+ZXhwcigpOworICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmNFeHBy
KTsKKyAgICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwci0+aXNGdW5jRXhwck5vZGUoKSk7CisgICAg
RnVuY3Rpb25Cb2R5Tm9kZSogYm9keSA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGZ1bmNF
eHByKS0+Ym9keSgpOworICAgIFJFTEVBU0VfQVNTRVJUKCFwcm9ncmFtLT5oYXNDYXB0dXJlZFZh
cmlhYmxlcygpKTsKKyAgICAKKyAgICBib2R5LT5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9y
ZUxhc3ROZXdsaW5lKTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5KTsKKyAgICBSRUxFQVNFX0FT
U0VSVChib2R5LT5pZGVudCgpLmlzTnVsbCgpKTsKKyAgICAKKyAgICAvLyBUaGlzIGZ1bmN0aW9u
IGFzc3VtZXMgYW4gaW5wdXQgc3RyaW5nIHRoYXQgd291bGQgcmVzdWx0IGluIGEgc2luZ2xlIGFu
b255bW91cyBmdW5jdGlvbiBleHByZXNzaW9uLgorICAgIGJvZHktPnNldEVuZFBvc2l0aW9uKHBv
c2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOworICAgIFJFTEVBU0VfQVNTRVJUKGJvZHkpOworICAg
IGZvciAoY29uc3QgYXV0byYgY2xvc2VkVmFyaWFibGUgOiBwcm9ncmFtLT5jbG9zZWRWYXJpYWJs
ZXMoKSkgeworICAgICAgICBpZiAoY2xvc2VkVmFyaWFibGUgPT0gbV92bS5wcm9wZXJ0eU5hbWVz
LT5hcmd1bWVudHMuaW1wbCgpKQorICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAg
IGlmIChjbG9zZWRWYXJpYWJsZSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdv
cmQuaW1wbCgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGNsb3NlZFZhcmlhYmxlLT5pc0VtcHR5VW5pcXVlKCkpOworICAgIH0KKyAgICBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OmNyZWF0ZSgmbV92bSwgc291cmNlLCBib2R5LCB0cnVlLCBVbmxpbmtlZEJ1aWx0
aW5GdW5jdGlvbik7CisgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5tX25hbWVWYWx1ZS5zZXQobV92
bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBqc1N0cmluZygmbV92bSwgbmFtZS5zdHJpbmcoKSkpOwor
ICAgIHJldHVybiBmdW5jdGlvbkV4ZWN1dGFibGU7Cit9CisKKyNkZWZpbmUgREVGSU5FX0JVSUxU
SU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKK1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6Om5hbWUjI0V4ZWN1dGFibGUoKSBc
Cit7XAorICAgIGlmICghbV8jI25hbWUjI0V4ZWN1dGFibGUpXAorICAgICAgICBtXyMjbmFtZSMj
RXhlY3V0YWJsZSA9IGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKG1fIyNuYW1lIyNTb3VyY2UsIG1f
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZnVuY3Rpb25OYW1lKCkpO1wKKyAgICBy
ZXR1cm4gbV8jI25hbWUjI0V4ZWN1dGFibGUuZ2V0KCk7XAorfQorSlNDX0ZPUkVBQ0hfQlVJTFRJ
TihERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJTl9TT1VS
Q0VTCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluRXhlY3V0YWJsZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
RXhlY3V0YWJsZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOWExOWUyNjE1MDc5NGE2NjllYzk4ZTM5OWJmNjdm
N2Y3MTA2NDE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEJ1aWx0aW5FeGVjdXRhYmxl
c19oCisjZGVmaW5lIEJ1aWx0aW5FeGVjdXRhYmxlc19oCisKKyNpbmNsdWRlICJKU0NCdWlsdGlu
cy5oIgorI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKKyNpbmNsdWRlICJXZWFrLmgiCisjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgSWRlbnRpZmllcjsKK2NsYXNzIFZNOworCitjbGFz
cyBCdWlsdGluRXhlY3V0YWJsZXMgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEJ1
aWx0aW5FeGVjdXRhYmxlcz4gY3JlYXRlKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgQnVpbHRpbkV4ZWN1dGFibGVzKHZtKSk7CisgICAgfQorICAgIAorI2RlZmlu
ZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkg
XAorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5hbWUjI0V4ZWN1dGFibGUoKTsgXAorY29u
c3QgU291cmNlQ29kZSYgbmFtZSMjU291cmNlKCkgeyByZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsg
fQorICAgIAorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4oRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJM
RVMpCisjdW5kZWYgRVhQT1NFX0JVSUxUSU5fU09VUkNFUworICAgIAorcHJpdmF0ZToKKyAgICBC
dWlsdGluRXhlY3V0YWJsZXMoVk0mKTsKKyAgICBWTSYgbV92bTsKKyAgICBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUoY29uc3QgU291cmNlQ29kZSYs
IGNvbnN0IElkZW50aWZpZXImKTsKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1C
RVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKVwKKyAgICBTb3VyY2VDb2RlIG1fIyNuYW1l
IyNTb3VyY2U7IFwKKyAgICBXZWFrPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPiBtXyMjbmFt
ZSMjRXhlY3V0YWJsZTsKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOKERFQ0xBUkVfQlVJTFRJTl9T
T1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKK307
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bk5hbWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjgxYWI2ZTc3MzNjZjZmNDBmZWQ0MDM2NGFkZDM3OWM5YWYw
ZTk3MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9C
dWlsdGluTmFtZXMuaApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBCdWlsdGluTmFtZXNfaAorI2RlZmluZSBCdWls
dGluTmFtZXNfaAorCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKKyNpbmNsdWRlICJK
U0NCdWlsdGlucy5oIgorCituYW1lc3BhY2UgSlNDIHsKKyAgICAKKyNkZWZpbmUgSU5JVElBTElT
RV9CVUlMVElOX05BTUVTKG5hbWUpICwgbV8jI25hbWUodm0sICNuYW1lKSwgbV8jI25hbWUjI1By
aXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb20oUHJpdmF0ZU5hbWUoKSkpCisjZGVmaW5lIERFQ0xB
UkVfQlVJTFRJTl9OQU1FUyhuYW1lKSBjb25zdCBJZGVudGlmaWVyIG1fIyNuYW1lOyBjb25zdCBJ
ZGVudGlmaWVyIG1fIyNuYW1lIyNQcml2YXRlTmFtZTs7CisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJ
Tl9JREVOVElGSUVSX0FDQ0VTU09SKG5hbWUpIFwKKyAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1l
KCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWU7IH0gXAorICAgIGNvbnN0IElkZW50aWZpZXImIG5h
bWUjI1ByaXZhdGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWUjI1ByaXZhdGVOYW1lOyB9
CisKKyNkZWZpbmUgSU5JVElBTElTRV9QUklWQVRFX1RPX1BVQkxJQ19FTlRSWShuYW1lKSBtX3By
aXZhdGVUb1B1YmxpY01hcC5hZGQobV8jI25hbWUjI1ByaXZhdGVOYW1lLmltcGwoKSwgJm1fIyNu
YW1lKTsKKyNkZWZpbmUgSU5JVElBTElTRV9QVUJMSUNfVE9fUFJJVkFURV9FTlRSWShuYW1lKSBt
X3B1YmxpY1RvUHJpdmF0ZU1hcC5hZGQobV8jI25hbWUuaW1wbCgpLCAmbV8jI25hbWUjI1ByaXZh
dGVOYW1lKTsKKyAgICAKK2NsYXNzIEJ1aWx0aW5OYW1lcyB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoQnVpbHRpbk5hbWVzKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgCitwdWJs
aWM6CisgICAgQnVpbHRpbk5hbWVzKFZNKiB2bSwgQ29tbW9uSWRlbnRpZmllcnMqIGNvbW1vbklk
ZW50aWZpZXJzKQorICAgICAgICA6IG1fZW1wdHlJZGVudGlmaWVyKGNvbW1vbklkZW50aWZpZXJz
LT5lbXB0eUlkZW50aWZpZXIpCisgICAgICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05f
TkFNRShJTklUSUFMSVNFX0JVSUxUSU5fTkFNRVMpCisgICAgICAgIEpTQ19DT01NT05fUFJJVkFU
RV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElTRV9CVUlMVElOX05BTUVT
KQorICAgIHsKKyAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJ
QUxJU0VfUFJJVkFURV9UT19QVUJMSUNfRU5UUlkpCisgICAgICAgIEpTQ19DT01NT05fUFJJVkFU
RV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElTRV9QUklWQVRFX1RPX1BV
QkxJQ19FTlRSWSkKKyAgICAgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElO
SVRJQUxJU0VfUFVCTElDX1RPX1BSSVZBVEVfRU5UUlkpCisgICAgICAgIEpTQ19DT01NT05fUFJJ
VkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElTRV9QVUJMSUNfVE9f
UFJJVkFURV9FTlRSWSkKKyAgICB9CisKKyAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2YXRl
TmFtZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CisgICAgY29uc3QgSWRlbnRpZmllciYgZ2V0
UHVibGljTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CisgICAgCisgICAgSlNDX0ZPUkVB
Q0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VT
U09SKQorICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05B
TUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCisKK3ByaXZhdGU6CisgICAg
SWRlbnRpZmllciBtX2VtcHR5SWRlbnRpZmllcjsKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZV
TkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX05BTUVTKQorICAgIEpTQ19DT01NT05fUFJJVkFU
RV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoREVDTEFSRV9CVUlMVElOX05BTUVTKQor
ICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIGNvbnN0IElkZW50aWZpZXIq
LCBJZGVudGlmaWVyUmVwSGFzaD4gQnVpbHRpbk5hbWVzTWFwOworICAgIEJ1aWx0aW5OYW1lc01h
cCBtX3B1YmxpY1RvUHJpdmF0ZU1hcDsKKyAgICBCdWlsdGluTmFtZXNNYXAgbV9wcml2YXRlVG9Q
dWJsaWNNYXA7Cit9OworCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX05BTUVTCisjdW5kZWYgSU5J
VElBTElTRV9CVUlMVElOX05BTUVTCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJf
QUNDRVNTT1IKKworCitpbmxpbmUgY29uc3QgSWRlbnRpZmllciogQnVpbHRpbk5hbWVzOjpnZXRQ
cml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK3sKKyAgICBhdXRvIGl0
ZXIgPSBtX3B1YmxpY1RvUHJpdmF0ZU1hcC5maW5kKGlkZW50LmltcGwoKSk7CisgICAgaWYgKGl0
ZXIgIT0gbV9wdWJsaWNUb1ByaXZhdGVNYXAuZW5kKCkpCisgICAgICAgIHJldHVybiBpdGVyLT52
YWx1ZTsKKyAgICByZXR1cm4gMDsKK30KKworaW5saW5lIGNvbnN0IElkZW50aWZpZXImIEJ1aWx0
aW5OYW1lczo6Z2V0UHVibGljTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK3sK
KyAgICBhdXRvIGl0ZXIgPSBtX3ByaXZhdGVUb1B1YmxpY01hcC5maW5kKGlkZW50LmltcGwoKSk7
CisgICAgaWYgKGl0ZXIgIT0gbV9wcml2YXRlVG9QdWJsaWNNYXAuZW5kKCkpCisgICAgICAgIHJl
dHVybiAqaXRlci0+dmFsdWU7CisgICAgcmV0dXJuIG1fZW1wdHlJZGVudGlmaWVyOworfQorCisg
ICAgCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAppbmRleCBiMmQ1MjM0NWNkYWZmODMyNjU2YmIyNzhmMmVlY2RhYTUwYzhkZDA5Li5j
NmJiZWUxZTcxZGZhNTM4OWYxOTNhNzM2NGM5OTc1Y2UyZDBjM2ZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTU5NCw3ICsxNTk0LDcgQEAg
Q29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBV
bmxpbmtlZENvZGVCbG9jayogdW5saW4KIAogICAgIHNldENvbnN0YW50UmVnaXN0ZXJzKHVubGlu
a2VkQ29kZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVycygpKTsKICAgICBpZiAodW5saW5rZWRDb2Rl
QmxvY2stPnVzZXNHbG9iYWxPYmplY3QoKSkKLSAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1t1
bmxpbmtlZENvZGVCbG9jay0+Z2xvYmFsT2JqZWN0UmVnaXN0ZXIoKS5vZmZzZXQoKV0uc2V0KCpt
X3ZtLCBvd25lckV4ZWN1dGFibGUsIG1fZ2xvYmFsT2JqZWN0LmdldCgpKTsKKyAgICAgICAgbV9j
b25zdGFudFJlZ2lzdGVyc1t1bmxpbmtlZENvZGVCbG9jay0+Z2xvYmFsT2JqZWN0UmVnaXN0ZXIo
KS50b0NvbnN0YW50SW5kZXgoKV0uc2V0KCptX3ZtLCBvd25lckV4ZWN1dGFibGUsIG1fZ2xvYmFs
T2JqZWN0LmdldCgpKTsKICAgICBtX2Z1bmN0aW9uRGVjbHMucmVzaXplVG9GaXQodW5saW5rZWRD
b2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpKTsKICAgICBmb3IgKHNpemVfdCBjb3Vu
dCA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSwgaSA9IDA7IGkg
PCBjb3VudDsgKytpKSB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxp
bmtlZEV4ZWN1dGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5j
cHAKaW5kZXggZDg4MzcyN2YxMWYxM2FjNzdhZmQzMzMwNTA4YWI2MTAxOTMyM2EwMS4uY2RhZDRh
MjdiMjhlMWY5OWQ2YzE1YzUyZTUzMWIwMTcwN2Y1NGE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC00OSw5ICs0
OSw5IEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s6OnNfaW5mbyA9
IHsgIlVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayIsCiBjb25zdCBDbGFzc0luZm8gVW5saW5rZWRF
dmFsQ29kZUJsb2NrOjpzX2luZm8gPSB7ICJVbmxpbmtlZEV2YWxDb2RlQmxvY2siLCAmQmFzZTo6
c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFVubGlua2VkRXZhbENvZGVCbG9jaykg
fTsKIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpzX2luZm8gPSB7
ICJVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRF
X01FVEhPRF9UQUJMRShVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKSB9OwogCi1zdGF0aWMgVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhWTSYgdm0s
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgRGVidWdnZXJNb2RlIGRlYnVn
Z2VyTW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQor
c3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlRnVuY3Rpb25Db2RlQmxv
Y2soVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIERlYnVnZ2Vy
TW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsIFVubGlua2VkRnVu
Y3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwgUGFyc2VyRXJyb3ImIGVycm9yKQogewotICAgIFJlZlB0
cjxGdW5jdGlvbkJvZHlOb2RlPiBib2R5ID0gcGFyc2U8RnVuY3Rpb25Cb2R5Tm9kZT4oJnZtLCBz
b3VyY2UsIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVj
dXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpID8gSlNQYXJzZVN0cmljdCA6IEpTUGFyc2VOb3Jt
YWwsIEpTUGFyc2VGdW5jdGlvbkNvZGUsIGVycm9yKTsKKyAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5
Tm9kZT4gYm9keSA9IHBhcnNlPEZ1bmN0aW9uQm9keU5vZGU+KCZ2bSwgc291cmNlLCBleGVjdXRh
YmxlLT5wYXJhbWV0ZXJzKCksIGV4ZWN1dGFibGUtPm5hbWUoKSwgZXhlY3V0YWJsZS0+dG9TdHJp
Y3RuZXNzKCksIEpTUGFyc2VGdW5jdGlvbkNvZGUsIGVycm9yKTsKIAogICAgIGlmICghYm9keSkg
ewogICAgICAgICBBU1NFUlQoZXJyb3IubV90eXBlICE9IFBhcnNlckVycm9yOjpFcnJvck5vbmUp
OwpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2Vu
ZXJhdGVGdW5jdGlvbkNvZGVCbG9jayhWTSYgdm0sIFVubGlua2VkRnVuYwogICAgIGJvZHktPmZp
bmlzaFBhcnNpbmcoZXhlY3V0YWJsZS0+cGFyYW1ldGVycygpLCBleGVjdXRhYmxlLT5uYW1lKCks
IGV4ZWN1dGFibGUtPmZ1bmN0aW9uTW9kZSgpKTsKICAgICBleGVjdXRhYmxlLT5yZWNvcmRQYXJz
ZShib2R5LT5mZWF0dXJlcygpLCBib2R5LT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKTsKICAgICAK
LSAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9u
Q29kZUJsb2NrOjpjcmVhdGUoJnZtLCBGdW5jdGlvbkNvZGUsIEV4ZWN1dGFibGVJbmZvKGJvZHkt
Pm5lZWRzQWN0aXZhdGlvbigpLCBib2R5LT51c2VzRXZhbCgpLCBib2R5LT5pc1N0cmljdE1vZGUo
KSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKCZ2bSwgRnVu
Y3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5mbyhib2R5LT5uZWVkc0FjdGl2YXRpb24oKSwgYm9keS0+
dXNlc0V2YWwoKSwgYm9keS0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVj
dCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uKSk7CiAgICAgT3duUHRy
PEJ5dGVjb2RlR2VuZXJhdG9yPiBnZW5lcmF0b3IoYWRvcHRQdHIobmV3IEJ5dGVjb2RlR2VuZXJh
dG9yKHZtLCBib2R5LmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlKSkp
OwogICAgIGVycm9yID0gZ2VuZXJhdG9yLT5nZW5lcmF0ZSgpOwogICAgIGJvZHktPmRlc3Ryb3lE
YXRhKCk7CkBAIC04MiwxMyArODIsMTQgQEAgdW5zaWduZWQgVW5saW5rZWRDb2RlQmxvY2s6OmFk
ZE9yRmluZENvbnN0YW50KEpTVmFsdWUgdikKICAgICByZXR1cm4gYWRkQ29uc3RhbnQodik7CiB9
CiAKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSkKK1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uQm9k
eU5vZGUqIG5vZGUsIGJvb2wgaXNGcm9tR2xvYmFsQ29kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQg
a2luZCkKICAgICA6IEJhc2UoKnZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX251bUNhcHR1cmVkVmFy
aWFibGVzKG5vZGUtPmNhcHR1cmVkVmFyaWFibGVDb3VudCgpKQogICAgICwgbV9mb3JjZVVzZXNB
cmd1bWVudHMobm9kZS0+dXNlc0FyZ3VtZW50cygpKQogICAgICwgbV9pc0luU3RyaWN0Q29udGV4
dChub2RlLT5pc1N0cmljdE1vZGUoKSkKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMobm9k
ZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkKICAgICAsIG1faXNGcm9tR2xvYmFsQ29kZShpc0Zy
b21HbG9iYWxDb2RlKQorICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihraW5kID09IFVubGlua2Vk
QnVpbHRpbkZ1bmN0aW9uKQogICAgICwgbV9uYW1lKG5vZGUtPmlkZW50KCkpCiAgICAgLCBtX2lu
ZmVycmVkTmFtZShub2RlLT5pbmZlcnJlZE5hbWUoKSkKICAgICAsIG1fcGFyYW1ldGVycyhub2Rl
LT5wYXJhbWV0ZXJzKCkpCkBAIC0xNjYsNyArMTY3LDcgQEAgVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jayogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNvZGVCbG9ja0ZvcihWTSYgdm0sIGNv
bnMKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
ayogcmVzdWx0ID0gZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jayh2bSwgdGhpcywgc291cmNlLCBz
cGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7Cisg
ICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVGdW5jdGlvbkNv
ZGVCbG9jayh2bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9k
ZSwgcHJvZmlsZXJNb2RlLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVu
Y3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBlcnJvcik7CiAgICAgCiAgICAgaWYgKGVy
cm9yLm1fdHlwZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKQogICAgICAgICByZXR1cm4gMDsK
QEAgLTIxMCw2ICsyMTEsNyBAQCBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2so
Vk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZVR5cGUgY29kZQogICAgICwgbV9pc1N0
cmljdE1vZGUoaW5mby5tX2lzU3RyaWN0TW9kZSkKICAgICAsIG1faXNDb25zdHJ1Y3RvcihpbmZv
Lm1faXNDb25zdHJ1Y3RvcikKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMoZmFsc2UpCisg
ICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8ubV9pc0J1aWx0aW5GdW5jdGlvbikKICAgICAs
IG1fZmlyc3RMaW5lKDApCiAgICAgLCBtX2xpbmVDb3VudCgwKQogICAgICwgbV9lbmRDb2x1bW4o
VUlOVF9NQVgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5oCmluZGV4IGIxMWFiMGVhMTg1ZmEyMzg5Nzk0YjY3ZmUzMWJkMDVhMmRhZDE4
ZDMuLjAzMDhiMTY4ZGE4ZWU1MmMwNjBkYmQ2ODgzZTg0MDc2YWJiNTNmNDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC02
NiwyNiArNjYsMzUgQEAgdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlOwogdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZExMSW50Q2FsbExpbmtJbmZvOwogCiBz
dHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3Rp
dmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVj
dG9yKQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNF
dmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRp
bkZ1bmN0aW9uKQogICAgICAgICA6IG1fbmVlZHNBY3RpdmF0aW9uKG5lZWRzQWN0aXZhdGlvbikK
ICAgICAgICAgLCBtX3VzZXNFdmFsKHVzZXNFdmFsKQogICAgICAgICAsIG1faXNTdHJpY3RNb2Rl
KGlzU3RyaWN0TW9kZSkKICAgICAgICAgLCBtX2lzQ29uc3RydWN0b3IoaXNDb25zdHJ1Y3RvcikK
KyAgICAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGlzQnVpbHRpbkZ1bmN0aW9uKQogICAgIHsK
ICAgICB9Ci0gICAgYm9vbCBtX25lZWRzQWN0aXZhdGlvbjsKLSAgICBib29sIG1fdXNlc0V2YWw7
Ci0gICAgYm9vbCBtX2lzU3RyaWN0TW9kZTsKLSAgICBib29sIG1faXNDb25zdHJ1Y3RvcjsKKyAg
ICBib29sIG1fbmVlZHNBY3RpdmF0aW9uIDogMTsKKyAgICBib29sIG1fdXNlc0V2YWwgOiAxOwor
ICAgIGJvb2wgbV9pc1N0cmljdE1vZGUgOiAxOworICAgIGJvb2wgbV9pc0NvbnN0cnVjdG9yIDog
MTsKKyAgICBib29sIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOworfTsKKworZW51bSBVbmxpbmtl
ZEZ1bmN0aW9uS2luZCB7CisgICAgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwKKyAgICBVbmxpbmtl
ZEJ1aWx0aW5GdW5jdGlvbiwKIH07CiAKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
IDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6CisgICAgZnJpZW5kIGNsYXNzIEJ1aWx0aW5FeGVj
dXRhYmxlczsKICAgICBmcmllbmQgY2xhc3MgQ29kZUNhY2hlOworICAgIGZyaWVuZCBjbGFzcyBW
TTsKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogY3JlYXRlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5j
dGlvbkJvZHlOb2RlKiBub2RlLCBib29sIGlzRnJvbUdsb2JhbENvZGUgPSBmYWxzZSkKKyAgICBz
dGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25Cb2R5Tm9kZSogbm9kZSwgYm9vbCBpc0Zyb21HbG9i
YWxDb2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCkKICAgICB7
Ci0gICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVhcCkp
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgaXNGcm9tR2xvYmFsQ29kZSk7Cisg
ICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVhcCkpIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgaXNGcm9tR2xvYmFsQ29kZSwgdW5saW5r
ZWRGdW5jdGlvbktpbmQpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oKnZtKTsK
ICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KQEAgLTEwMCw2ICsxMDksMTQgQEAgcHVi
bGljOgogICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0OwogICAgIGJvb2wgaXNJblN0
cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0OyB9CiAgICAg
RnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25Nb2Rl
OyB9CisgICAgSlNQYXJzZXJTdHJpY3RuZXNzIHRvU3RyaWN0bmVzcygpIGNvbnN0CisgICAgewor
ICAgICAgICBpZiAobV9pc0J1aWx0aW5GdW5jdGlvbikKKyAgICAgICAgICAgIHJldHVybiBKU1Bh
cnNlQnVpbHRpbjsKKyAgICAgICAgaWYgKG1faXNJblN0cmljdENvbnRleHQpCisgICAgICAgICAg
ICByZXR1cm4gSlNQYXJzZVN0cmljdDsKKyAgICAgICAgcmV0dXJuIEpTUGFyc2VOb3JtYWw7Cisg
ICAgfQogCiAgICAgdW5zaWduZWQgZmlyc3RMaW5lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9m
aXJzdExpbmVPZmZzZXQ7IH0KICAgICB1bnNpZ25lZCBsaW5lQ291bnQoKSBjb25zdCB7IHJldHVy
biBtX2xpbmVDb3VudDsgfQpAQCAtMTQyLDggKzE1OSwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IGNvbnN0IGJvb2wgaGFzSW1tb3J0YWxTdHJ1Y3R1cmUgPSB0cnVlOwogICAgIHN0YXRpYyB2b2lk
IGRlc3Ryb3koSlNDZWxsKik7CiAKKyAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQorCiBwcml2YXRlOgotICAgIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIEZ1
bmN0aW9uQm9keU5vZGUqLCBib29sIGlzRnJvbUdsb2JhbENvZGUpOworICAgIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIEZ1bmN0
aW9uQm9keU5vZGUqLCBib29sIGlzRnJvbUdsb2JhbENvZGUsIFVubGlua2VkRnVuY3Rpb25LaW5k
KTsKICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV9jb2RlQmxv
Y2tGb3JDYWxsOwogICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiBt
X2NvZGVCbG9ja0ZvckNvbnN0cnVjdDsKIApAQCAtMTUyLDYgKzE3MSw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2lzSW5TdHJpY3RDb250ZXh0IDogMTsKICAgICBib29sIG1faGFzQ2FwdHVyZWRW
YXJpYWJsZXMgOiAxOwogICAgIGJvb2wgbV9pc0Zyb21HbG9iYWxDb2RlIDogMTsKKyAgICBib29s
IG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogCiAgICAgSWRlbnRpZmllciBtX25hbWU7CiAgICAg
SWRlbnRpZmllciBtX2luZmVycmVkTmFtZTsKQEAgLTMxOCw2ICszMzgsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRJc051bWVyaWNDb21wYXJlRnVuY3Rpb24oYm9vbCBpc051bWVyaWNDb21wYXJl
RnVuY3Rpb24pIHsgbV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb24gPSBpc051bWVyaWNDb21wYXJl
RnVuY3Rpb247IH0KICAgICBib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CiAKKyAgICBib29sIGlzQnVpbHRp
bkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQorICAgIAog
ICAgIHZvaWQgc2hyaW5rVG9GaXQoKQogICAgIHsKICAgICAgICAgbV9qdW1wVGFyZ2V0cy5zaHJp
bmtUb0ZpdCgpOwpAQCAtNTAwLDYgKzUyMiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzU3Ry
aWN0TW9kZSA6IDE7CiAgICAgYm9vbCBtX2lzQ29uc3RydWN0b3IgOiAxOwogICAgIGJvb2wgbV9o
YXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CisgICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDog
MTsKICAgICB1bnNpZ25lZCBtX2ZpcnN0TGluZTsKICAgICB1bnNpZ25lZCBtX2xpbmVDb3VudDsK
ICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggMDkxZmQwMDhj
N2ExYmE3NmJkMjAzZjg4MzcyNThjYzU4ZjUxNTg1My4uYTBmMzZjNDNkNWM4MWU1N2Q4N2VkMDc1
Yzc4M2I5NDkxZTk5Yjg2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTE4Miw2ICsxODIsNyBAQCBC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9ncmFtTm9kZSog
cHJvZ3JhbU5vZGUsIFVubGlua2VkUAogI2VuZGlmCiAgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZh
bHNlKQogICAgICwgbV9leHByZXNzaW9uVG9vRGVlcChmYWxzZSkKKyAgICAsIG1faXNCdWlsdGlu
RnVuY3Rpb24oZmFsc2UpCiB7CiAgICAgbV9jb2RlQmxvY2stPnNldE51bVBhcmFtZXRlcnMoMSk7
IC8vIEFsbG9jYXRlIHNwYWNlIGZvciAidGhpcyIKIApAQCAtMjI1LDcgKzIyNiwxMyBAQCBCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbkJvZHlOb2Rl
KiBmdW5jdGlvbkJvZHksIFVubAogI2VuZGlmCiAgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNl
KQogICAgICwgbV9leHByZXNzaW9uVG9vRGVlcChmYWxzZSkKKyAgICAsIG1faXNCdWlsdGluRnVu
Y3Rpb24oY29kZUJsb2NrLT5pc0J1aWx0aW5GdW5jdGlvbigpKQogeworICAgIGlmIChtX2lzQnVp
bHRpbkZ1bmN0aW9uKSB7CisgICAgICAgIG1fc2hvdWxkRW1pdFByb2ZpbGVIb29rcyA9IGZhbHNl
OworICAgICAgICBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzID0gZmFsc2U7CisgICAgfQorCiAgICAg
bV9zeW1ib2xUYWJsZS0+c2V0VXNlc05vblN0cmljdEV2YWwoY29kZUJsb2NrLT51c2VzRXZhbCgp
ICYmICFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKICAgICBWZWN0b3I8SWRlbnRpZmllcj4g
Ym91bmRQYXJhbWV0ZXJQcm9wZXJ0aWVzOwogICAgIEZ1bmN0aW9uUGFyYW1ldGVycyYgcGFyYW1l
dGVycyA9ICpmdW5jdGlvbkJvZHktPnBhcmFtZXRlcnMoKTsKQEAgLTQzMyw2ICs0NDAsNyBAQCBC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZh
bE5vZGUsIFVubGlua2VkRXZhbENvZAogI2VuZGlmCiAgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZh
bHNlKQogICAgICwgbV9leHByZXNzaW9uVG9vRGVlcChmYWxzZSkKKyAgICAsIG1faXNCdWlsdGlu
RnVuY3Rpb24oZmFsc2UpCiB7CiAgICAgbV9zeW1ib2xUYWJsZS0+c2V0VXNlc05vblN0cmljdEV2
YWwoY29kZUJsb2NrLT51c2VzRXZhbCgpICYmICFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsK
ICAgICBtX2NvZGVCbG9jay0+c2V0TnVtUGFyYW1ldGVycygxKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBk
NjFiZmZjMmMyMjU0YzRiMzYxNTBhY2I0MDMzNTAzNGNiNzViNjZjLi5lMWU1NDU5YjNiMjE3NzRh
MzU3ZjFmNzhkYWI3NDdkMmRhYTIyZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC00NjIsNyArNDYyLDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgc2hvdWxkRW1pdERlYnVnSG9va3MoKSB7
IHJldHVybiBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzOyB9CiAgICAgICAgIAogICAgICAgICBib29s
IGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUo
KTsgfQotCisgICAgICAgIAorICAgICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQorICAgICAgICAKICAgICBwcml2YXRlOgog
ICAgICAgICBmcmllbmQgY2xhc3MgTGFiZWw7CiAgICAgICAgIApAQCAtNTQ0LDcgKzU0Niw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIG1ha2VGdW5jdGlvbihGdW5jdGlvbkJvZHlOb2RlKiBib2R5KQogICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3Zt
LCBtX3Njb3BlTm9kZS0+c291cmNlKCksIGJvZHkpOworICAgICAgICAgICAgcmV0dXJuIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgp
LCBib2R5LCBmYWxzZSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0
aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbik7CiAgICAgICAgIH0KIAogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0SW5pdExhenlSZWdpc3RlcihSZWdpc3RlcklEKik7CkBAIC02NzgsNiArNjgw
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBtX3VzZXNFeGNlcHRpb25zOwog
ICAgICAgICBib29sIG1fZXhwcmVzc2lvblRvb0RlZXA7CisgICAgICAgIGJvb2wgbV9pc0J1aWx0
aW5GdW5jdGlvbjsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggYzJjZTJhYTc4NjQ0NmIzMDg3Yjg3
MTlhNjIwZGZjOGZmMmM2NDgyYi4uOGI3YWQxMWFjNGY5ZTQ0NmI5ODRlYTk1N2E5YTBkY2RkNDU3
ZjRmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcApAQCAtNTM1LDM2ICs1MzUsMzkgQEAgUmVnaXN0ZXJJRCogQ2FsbEZ1bmN0
aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LAogICAgIFJlZlB0cjxMYWJlbD4gZW5kID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9iYXNlKTsKICAgICBn
ZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHBy
ZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5h
dGlvbihkc3QpLCBiYXNlLmdldCgpLCBtX2lkZW50KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
ZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlv
bihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmNhbGwpOwogICAg
IFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0
aW9uKGRzdCwgZnVuY3Rpb24uZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVu
Y3Rpb25DYWxsKGZ1bmN0aW9uLmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7CisgICAgYm9vbCBlbWl0
Q2FsbENoZWNrID0gIWdlbmVyYXRvci5pc0J1aWx0aW5GdW5jdGlvbigpOworICAgIGlmIChlbWl0
Q2FsbENoZWNrKQorICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQ2FsbChm
dW5jdGlvbi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkpOworCiAgICAgewogICAgICAgICBpZiAobV9h
cmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKSB7CiAgICAgICAg
ICAgICBBcmd1bWVudExpc3ROb2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2RlOwogICAg
ICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQ7
Ci0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5j
dGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCks
IGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdl
bmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJn
dW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwogICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5v
RXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOwot
CiAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBvbGRMaXN0OwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVy
YXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkp
OwogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9h
cmdzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNS
ZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2Fs
bChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rp
b24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0g
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKICAgICAgICAgfQogICAg
IH0KLSAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKLSAgICB7Ci0gICAg
ICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7Ci0gICAg
ICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNl
LmdldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBm
dW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgp
LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIGlmIChlbWl0Q2FsbENoZWNrKSB7Cisg
ICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOworICAgICAgICBnZW5lcmF0b3Iu
ZW1pdExhYmVsKHJlYWxDYWxsLmdldCgpKTsKKyAgICAgICAgeworICAgICAgICAgICAgQ2FsbEFy
Z3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgp
KTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVu
Y3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwg
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgfQorICAgICAgICBnZW5lcmF0b3Iu
ZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5k
LmdldCgpKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWUuZ2V0KCk7CiB9CiAKQEAgLTU4NSw2NSAr
NTg4LDY3IEBAIFJlZ2lzdGVySUQqIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgUmVmUHRyPExhYmVsPiBlbmQg
PSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdl
bmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Npb25TdGFydCgpLCBzdWJleHByZXNz
aW9uRW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbiA9IGdlbmVyYXRvci5l
bWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIG1f
aWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jdGlvbjsKICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGZ1
bmN0aW9uLmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHko
ZnVuY3Rpb24uZ2V0KCksIHJlYWxDYWxsLmdldCgpKTsKLSAgICB7Ci0gICAgICAgIGlmIChtYXlC
ZUNhbGwpIHsKLSAgICAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5t
X2xpc3ROb2RlLT5tX2V4cHIpIHsKLSAgICAgICAgICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBv
bGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2RlOwotICAgICAgICAgICAgICAgIGlmIChtX2FyZ3Mt
Pm1fbGlzdE5vZGUtPm1fbmV4dCkgewotICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9hcmdz
LT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwci0+aXNTaW1wbGVBcnJheSgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9uZXh0KTsK
LSAgICAgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gc3RhdGljX2Nhc3Q8QXJy
YXlOb2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwciktPnRvQXJndW1lbnRM
aXN0KGdlbmVyYXRvci52bSgpLCAwLCAwKTsKLSAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVt
cERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBDYWxs
QXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAgICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwg
b2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxs
KHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlv
biwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlz
dE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKLSAgICAgICAgICAgICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5l
cmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAgICAgICAg
ICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwotICAg
ICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVn
aXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0
ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3RO
b2RlID0gb2xkTGlzdDsKKyAgICBib29sIGVtaXRDYWxsQ2hlY2sgPSAhZ2VuZXJhdG9yLmlzQnVp
bHRpbkZ1bmN0aW9uKCk7CisgICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKKyAgICAgICAgZnVuY3Rp
b24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3Qp
LCBiYXNlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmFwcGx5KTsKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KGZ1bmN0aW9uLmdldCgpLCByZWFs
Q2FsbC5nZXQoKSk7CisgICAgfQorICAgIGlmIChtYXlCZUNhbGwpIHsKKyAgICAgICAgaWYgKG1f
YXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcikgeworICAgICAg
ICAgICAgQXJndW1lbnRMaXN0Tm9kZSogb2xkTGlzdCA9IG1fYXJncy0+bV9saXN0Tm9kZTsKKyAg
ICAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCkgeworICAgICAgICAgICAg
ICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByLT5pc1NpbXBsZUFy
cmF5KCkpOworICAgICAgICAgICAgICAgIEFTU0VSVCghbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25l
eHQtPm1fbmV4dCk7CisgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gc3RhdGlj
X2Nhc3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwciktPnRv
QXJndW1lbnRMaXN0KGdlbmVyYXRvci52bSgpLCAwLCAwKTsKKyAgICAgICAgICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRv
ci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgQ2Fs
bEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICAgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgb2xk
TGlzdC0+bV9leHByKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJu
VmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxs
QXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBtX2FyZ3Mt
Pm1fbGlzdE5vZGUtPm1fbmV4dDsKICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
cmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRp
b24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxs
QXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7Cisg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lz
dGVyKCksIG9sZExpc3QtPm1fZXhwcik7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRD
YWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5j
dGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsK
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9sZExpc3Q7
CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9hcmdzLT5tX2xpc3ROb2Rl
ICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KTsKLSAgICAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBwcm9maWxlSG9va1JlZ2lzdGVyOwotICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5z
aG91bGRFbWl0UHJvZmlsZUhvb2tzKCkpCi0gICAgICAgICAgICAgICAgcHJvZmlsZUhvb2tSZWdp
c3RlciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBE
ZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKLSAgICAgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiB0aGlzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9hcmdzLT5tX2xpc3ROb2Rl
LT5tX2V4cHIpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGFyZ3NSZWdpc3RlcjsK
LSAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MgPSBtX2FyZ3MtPm1fbGlzdE5vZGUt
Pm1fbmV4dDsKLSAgICAgICAgICAgIGlmIChhcmdzLT5tX2V4cHItPmlzUmVzb2x2ZU5vZGUoKSAm
JiBnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50cyhzdGF0aWNfY2FzdDxSZXNvbHZlTm9k
ZSo+KGFyZ3MtPm1fZXhwciktPmlkZW50aWZpZXIoKSkpCi0gICAgICAgICAgICAgICAgYXJnc1Jl
Z2lzdGVyID0gZ2VuZXJhdG9yLnVuY2hlY2tlZFJlZ2lzdGVyRm9yQXJndW1lbnRzKCk7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLmVt
aXROb2RlKGFyZ3MtPm1fZXhwcik7Ci0KLSAgICAgICAgICAgIC8vIEZ1bmN0aW9uLnByb3RvdHlw
ZS5hcHBseSBpZ25vcmVzIGV4dHJhIGFyZ3VtZW50cywgYnV0IHdlIHN0aWxsCi0gICAgICAgICAg
ICAvLyBuZWVkIHRvIGV2YWx1YXRlIHRoZW0gZm9yIHNpZGUgZWZmZWN0cy4KLSAgICAgICAgICAg
IHdoaWxlICgoYXJncyA9IGFyZ3MtPm1fbmV4dCkpCi0gICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXROb2RlKGFyZ3MtPm1fZXhwcik7Ci0KLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2Fs
bFZhcmFyZ3MocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgdGhpc1JlZ2lz
dGVyLmdldCgpLCBhcmdzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwg
cHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3Is
IG1fYXJncyk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50
aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1
bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OwogICAgICAgICB9Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOworICAg
IH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5t
X2xpc3ROb2RlLT5tX25leHQpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvZmlsZUhv
b2tSZWdpc3RlcjsKKyAgICAgICAgaWYgKGdlbmVyYXRvci5zaG91bGRFbWl0UHJvZmlsZUhvb2tz
KCkpCisgICAgICAgICAgICBwcm9maWxlSG9va1JlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJh
dG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7
CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1p
dE5vZGUobV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIpOworICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gYXJnc1JlZ2lzdGVyOworICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBhcmdzID0gbV9h
cmdzLT5tX2xpc3ROb2RlLT5tX25leHQ7CisgICAgICAgIGlmIChhcmdzLT5tX2V4cHItPmlzUmVz
b2x2ZU5vZGUoKSAmJiBnZW5lcmF0b3Iud2lsbFJlc29sdmVUb0FyZ3VtZW50cyhzdGF0aWNfY2Fz
dDxSZXNvbHZlTm9kZSo+KGFyZ3MtPm1fZXhwciktPmlkZW50aWZpZXIoKSkpCisgICAgICAgICAg
ICBhcmdzUmVnaXN0ZXIgPSBnZW5lcmF0b3IudW5jaGVja2VkUmVnaXN0ZXJGb3JBcmd1bWVudHMo
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXJnc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLmVt
aXROb2RlKGFyZ3MtPm1fZXhwcik7CisKKyAgICAgICAgLy8gRnVuY3Rpb24ucHJvdG90eXBlLmFw
cGx5IGlnbm9yZXMgZXh0cmEgYXJndW1lbnRzLCBidXQgd2Ugc3RpbGwKKyAgICAgICAgLy8gbmVl
ZCB0byBldmFsdWF0ZSB0aGVtIGZvciBzaWRlIGVmZmVjdHMuCisgICAgICAgIHdoaWxlICgoYXJn
cyA9IGFyZ3MtPm1fbmV4dCkpCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+
bV9leHByKTsKKworICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxWYXJhcmdzKHJldHVyblZhbHVl
LmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJnc1JlZ2lz
dGVyLmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb2ZpbGVIb29rUmVnaXN0ZXIu
Z2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgfQotICAgIGdl
bmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOwotICAgIHsKKyAgICBpZiAoZW1pdENh
bGxDaGVjaykgeworICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChyZWFsQ2FsbC5nZXQoKSk7CiAgICAgICAgIENhbGxBcmd1
bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgpKTsKICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQo
KSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7
CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICByZXR1cm4g
cmV0dXJuVmFsdWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9jcmVhdGVfaGFzaF90YWJsZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90
YWJsZQppbmRleCAzOTc5NzZiMDZjN2E5YjU4MzYzMzI5MDBhNmViYjkzZWM2OGI3NDg2Li5mMGY2
YTkwZmFkMTRiNDBlM2RjY2JhNDk5MzFmYzQzZDYyN2JiOTVmIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2NyZWF0ZV9oYXNoX3RhYmxlCkBAIC0yNDgsNyArMjQ4LDkgQEAgc3ViIG91dHB1dCgpIHsK
ICAgICBteSAkbmFtZUVudHJpZXMgPSAiJHtuYW1lfVZhbHVlcyI7CiAgICAgJG5hbWVFbnRyaWVz
ID1+IHMvOi9fL2c7CiAKKyAgICBwcmludCAiXG4jaW5jbHVkZSBcIkpTQ0J1aWx0aW5zLmhcIlxu
IjsKICAgICBwcmludCAiXG4jaW5jbHVkZSBcIkxvb2t1cC5oXCJcbiIgaWYgKCRpbmNsdWRlbG9v
a3VwKTsKKwogICAgIGlmICgkdXNlTmFtZVNwYWNlKSB7CiAgICAgICAgIHByaW50ICJcbm5hbWVz
cGFjZSAke3VzZU5hbWVTcGFjZX0ge1xuIjsKICAgICAgICAgcHJpbnQgIlxudXNpbmcgbmFtZXNw
YWNlIEpTQztcbiI7CkBAIC0yODksNyArMjkxLDE3IEBAIHN1YiBvdXRwdXQoKSB7CiAgICAgICAg
ICAgICAkaW50cmluc2ljID0gIlJlZ0V4cFRlc3RJbnRyaW5zaWMiIGlmICgka2V5IGVxICJ0ZXN0
Iik7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoJHZhbHVlc1skaV17InR5cGUifSBlcSAiRnVu
Y3Rpb24iKSAgeworICAgICAgICAgICAgbXkgJHRhYmxlSGVhZCA9ICRuYW1lOworICAgICAgICAg
ICAgJHRhYmxlSGVhZCA9fiBzL1RhYmxlJC8vOworICAgICAgICAgICAgcHJpbnQgIiAjaWYgSlND
X0JVSUxUSU5fRVhJU1RTKCIgLiB1YygkdGFibGVIZWFkIC4gJGtleSkgLiIpXG4iOworICAgICAg
ICAgICAgcHJpbnQgIiAgIHsgXCIka2V5XCIsICgoJGF0dHJzWyRpXSkgJiB+RnVuY3Rpb24pIHwg
QnVpbHRpbiwgJGludHJpbnNpYywgKGludHB0cl90KXN0YXRpY19jYXN0PEJ1aWx0aW5HZW5lcmF0
b3I+KCIgLiAkdGFibGVIZWFkIC4gdWNmaXJzdCgka2V5KSAuICJDb2RlR2VuZXJhdG9yKSwgKGlu
dHB0cl90KSRzZWNvbmRWYWx1ZSB9LFxuIjsKKyAgICAgICAgICAgIHByaW50ICIgI2Vsc2VcbiIK
KyAgICAgICAgfQogICAgICAgICBwcmludCAiICAgeyBcIiRrZXlcIiwgJGF0dHJzWyRpXSwgJGlu
dHJpbnNpYywgKGludHB0cl90KSIgLiAkZmlyc3RDYXN0U3RyIC4gIigkZmlyc3RWYWx1ZSksIChp
bnRwdHJfdCkiIC4gJHNlY29uZENhc3RTdHIgLiAiKCRzZWNvbmRWYWx1ZSkgfSxcbiI7CisgICAg
ICAgIGlmICgkdmFsdWVzWyRpXXsidHlwZSJ9IGVxICJGdW5jdGlvbiIpICB7CisgICAgICAgICAg
ICBwcmludCAiICNlbmRpZlxuIgorICAgICAgICB9CiAgICAgICAgICRpKys7CiAgICAgfQogICAg
IHByaW50ICIgICB7IDAsIDAsIE5vSW50cmluc2ljLCAwLCAwIH1cbiI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjEzYTIwN2IxMzNiODQ3
NTdmZWU3MTI5YTUwODFiYWQ2MGNkMWMwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucwpAQCAtMCwwICsxLDMwNCBAQAorIyEvdXNy
L2Jpbi9weXRob24KKyMgQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorIyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyMgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorIyBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBmaWxlY21wCitpbXBvcnQgZm5tYXRj
aAoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzeXMKK2ltcG9y
dCBkYXRldGltZQoraW1wb3J0IGpzb24KKworY29weXJpZ2h0VGV4dCA9ICIiIiAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovXG4KKyIiIgorCitnZW5lcmF0b3JTdHJpbmcg
PSAiLyogR2VuZXJhdGVkIGJ5ICVzIGRvIG5vdCBoYW5kIGVkaXQuICovXG4iICUgb3MucGF0aC5i
YXNlbmFtZShfX2ZpbGVfXykKKworZnVuY3Rpb25IZWFkUmVnRXhwID0gcmUuY29tcGlsZShyImZ1
bmN0aW9uXHMrXHcrXHMqXCguKj9cKSIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitmdW5jdGlvbk5h
bWVSZWdFeHAgPSByZS5jb21waWxlKHIiZnVuY3Rpb25ccysoXHcrKVxzKlwoIiwgcmUuTVVMVElM
SU5FIHwgcmUuUykKK2Z1bmN0aW9uUGFyYW1ldGVyRmluZGVyID0gcmUuY29tcGlsZShyIl5mdW5j
dGlvblxzKyg/Olx3KylccypcKCgoPzpccypcdyspP1xzKig/OlxzKixccypcdyspKik/XCkiLCBy
ZS5NVUxUSUxJTkUgfCByZS5TKQorCittdWx0aWxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGls
ZShyIlwvXCouKj9cKlwvIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK3NpbmdsZUxpbmVDb21tZW50
UmVnRXhwID0gcmUuY29tcGlsZShyIlwvXC8uKj9cbiIsIHJlLk1VTFRJTElORSB8IHJlLlMpCisK
K2RlZiBnZXRDb3B5cmlnaHQoc291cmNlKToKKyAgICBjb3B5cmlnaHRCbG9jayA9IG11bHRpbGlu
ZUNvbW1lbnRSZWdFeHAuZmluZGFsbChzb3VyY2UpWzBdCisgICAgY29weXJpZ2h0QmxvY2sgPSBj
b3B5cmlnaHRCbG9ja1s6Y29weXJpZ2h0QmxvY2suaW5kZXgoIlJlZGlzdHJpYnV0aW9uIildCisg
ICAgY29weVJpZ2h0TGluZXMgPSBbXQorCisgICAgZm9yIGxpbmUgaW4gY29weXJpZ2h0QmxvY2su
c3BsaXQoIlxuIik6CisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIi8qIiwgIiIpCisgICAg
ICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIiovIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJl
cGxhY2UoIioiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiQ29weXJpZ2h0Iiwg
IiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoImNvcHlyaWdodCIsICIiKQorICAgICAg
ICBsaW5lID0gbGluZS5yZXBsYWNlKCIoQykiLCAiIikKKyAgICAgICAgbGluZSA9IGxpbmUucmVw
bGFjZSgiKGMpIiwgIiIpCisgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgaWYg
bGVuKGxpbmUpID09IDA6CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIGNvcHlSaWdo
dExpbmVzLmFwcGVuZChsaW5lKQorICAgIAorICAgIHJldHVybiBsaXN0KHNldChjb3B5UmlnaHRM
aW5lcykpCisKKworCitkZWYgZ2V0RnVuY3Rpb25zKHNvdXJjZSk6CisKKyAgICBzb3VyY2UgPSBt
dWx0aWxpbmVDb21tZW50UmVnRXhwLnN1YigiLyoqLyIsIHNpbmdsZUxpbmVDb21tZW50UmVnRXhw
LnN1YigiLy9cbiIsIHNvdXJjZSkpCisKKyAgICBtYXRjaGVzID0gWyBmIGZvciBmIGluIGZ1bmN0
aW9uSGVhZFJlZ0V4cC5maW5kaXRlcihzb3VyY2UpXQorICAgIGZ1bmN0aW9uQm91bmRzID0gW10K
KyAgICBzdGFydCA9IDAKKyAgICBlbmQgPSAwCisgICAgZm9yIG1hdGNoIGluIG1hdGNoZXM6Cisg
ICAgICAgIHN0YXJ0ID0gbWF0Y2guc3RhcnQoKQorICAgICAgICBpZiBzdGFydCA8IGVuZDoKKyAg
ICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGVuZCA9IG1hdGNoLmVuZCgpCisgICAgICAgIHdo
aWxlIHNvdXJjZVtlbmRdICE9ICd7JzoKKyAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAg
ICAgZGVwdGggPSAxCisgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgd2hpbGUgZGVwdGgg
PiAwOgorICAgICAgICAgICAgaWYgc291cmNlW2VuZF0gPT0gJ3snOgorICAgICAgICAgICAgICAg
IGRlcHRoID0gZGVwdGggKyAxCisgICAgICAgICAgICBlbGlmIHNvdXJjZVtlbmRdID09ICd9JzoK
KyAgICAgICAgICAgICAgICBkZXB0aCA9IGRlcHRoIC0gMQorICAgICAgICAgICAgZW5kID0gZW5k
ICsgMQorICAgICAgICBmdW5jdGlvbkJvdW5kcy5hcHBlbmQoKHN0YXJ0LCBlbmQpKQorCisgICAg
ZnVuY3Rpb25zID0gW3NvdXJjZVtzdGFydDplbmRdLnN0cmlwKCkgZm9yIChzdGFydCwgZW5kKSBp
biBmdW5jdGlvbkJvdW5kc10KKyAgICByZXN1bHQgPSBbXQorICAgIGZvciBmdW5jdGlvbiBpbiBm
dW5jdGlvbnM6CisgICAgICAgIGZ1bmN0aW9uID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5zdWIo
IiIsIGZ1bmN0aW9uKQorICAgICAgICBmdW5jdGlvbk5hbWUgPSBmdW5jdGlvbk5hbWVSZWdFeHAu
ZmluZGFsbChmdW5jdGlvbilbMF0KKyAgICAgICAgZnVuY3Rpb25QYXJhbWV0ZXJzID0gZnVuY3Rp
b25QYXJhbWV0ZXJGaW5kZXIuZmluZGFsbChmdW5jdGlvbilbMF0uc3BsaXQoJywnKQorICAgICAg
ICBpZiBsZW4oZnVuY3Rpb25QYXJhbWV0ZXJzWzBdKSA9PSAwOgorICAgICAgICAgICAgZnVuY3Rp
b25QYXJhbWV0ZXJzID0gW10KKyAgICAgICAgICAgIAorICAgICAgICByZXN1bHQuYXBwZW5kKChm
dW5jdGlvbk5hbWUsIGZ1bmN0aW9uLCBmdW5jdGlvblBhcmFtZXRlcnMpKQorICAgIHJldHVybiBy
ZXN1bHQKKyAgICAgICAgCisKK2RlZiBnZW5lcmF0ZUNvZGUoc291cmNlKToKKyAgICBpbnB1dEZp
bGUgPSBvcGVuKHNvdXJjZSwgInIiKQorICAgIGJhc2VOYW1lID0gb3MucGF0aC5iYXNlbmFtZShz
b3VyY2UpLnJlcGxhY2UoIi5qcyIsICIiKQorICAgIAorICAgIHNvdXJjZSA9ICIiCisgICAgZm9y
IGxpbmUgaW4gaW5wdXRGaWxlOgorICAgICAgICBzb3VyY2UgPSBzb3VyY2UgKyBsaW5lCisgICAg
CisgICAgaWYgc3lzLnBsYXRmb3JtID09ICJjeWd3aW4iOgorICAgICAgICBzb3VyY2UgPSBzb3Vy
Y2UucmVwbGFjZSgiXHJcbiIsICJcbiIpCisgICAgcmV0dXJuIChiYXNlTmFtZSwgZ2V0RnVuY3Rp
b25zKHNvdXJjZSksIGdldENvcHlyaWdodChzb3VyY2UpKQorCitkZWYgbWFuZ2xlTmFtZShvYmpl
Y3QsIG5hbWUpOgorICAgIHFOYW1lID0gb2JqZWN0ICsgIi4iICsgbmFtZQorICAgIG1hbmdsZWRO
YW1lID0gIiIKKyAgICBpID0gMAorICAgIHdoaWxlIGkgPCBsZW4ocU5hbWUpOgorICAgICAgICBp
ZiBxTmFtZVtpXSA9PSAnLic6CisgICAgICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1l
ICsgcU5hbWVbaSArIDFdLnVwcGVyKCkKKyAgICAgICAgICAgIGkgPSBpICsgMQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZSArIHFOYW1lW2ldCisg
ICAgICAgIGkgPSBpICsgMQorICAgIHJldHVybiBtYW5nbGVkTmFtZQorCitidWlsdGlucyA9IFtd
CisKK2Jhc2VOYW1lID0gc3lzLmFyZ3ZbLTFdCitidWlsdGluX2RlZmluaXRpb25zID0gc3lzLmFy
Z3ZbMTotMV0KKyhvdXRwdXRfYmFzZSwgXykgPSBvcy5wYXRoLnNwbGl0ZXh0KHN5cy5hcmd2Wy0x
XSkKKworY29weXJpZ2h0cyA9IFtdCitmb3IgZmlsZSBpbiBidWlsdGluX2RlZmluaXRpb25zOgor
ICAgIGlmIGZubWF0Y2guZm5tYXRjaChmaWxlLCAnKi5qcycpOgorICAgICAgICAoYmFzZU5hbWUs
IGZ1bmN0aW9ucywgb2JqZWN0Q29weXJpZ2h0cykgPSBnZW5lcmF0ZUNvZGUoZmlsZSkKKyAgICAg
ICAgY29weXJpZ2h0cy5leHRlbmQob2JqZWN0Q29weXJpZ2h0cykKKyAgICAgICAgYnVpbHRpbnMu
YXBwZW5kKChiYXNlTmFtZSwgZnVuY3Rpb25zKSkKKworY29weXJpZ2h0cyA9IGxpc3Qoc2V0KGNv
cHlyaWdodHMpKQorCitjb3B5cmlnaHRCb2R5ID0gIiIKK2ZvciBjb3B5cmlnaHQgaW4gY29weXJp
Z2h0czoKKyAgICBjb3B5cmlnaHRCb2R5ID0gY29weXJpZ2h0Qm9keSArIiAqIENvcHlyaWdodCAo
QykgIiArIGNvcHlyaWdodCArICJcbiIKKworYnVpbHRpbnNIZWFkZXIgPSBvcGVuKG91dHB1dF9i
YXNlICsgIi5oLnRtcCIsICJ3IikKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24gPSBvcGVuKG91dHB1
dF9iYXNlICsgIi5jcHAudG1wIiwgInciKQorY29weXJpZ2h0VGV4dCA9ICIvKlxuIiArIGNvcHly
aWdodEJvZHkgKyBjb3B5cmlnaHRUZXh0CitidWlsdGluc0hlYWRlci53cml0ZSgiIiIlcworJXMK
KworI2lmbmRlZiBKU0NCdWlsdGluc19ICisjZGVmaW5lIEpTQ0J1aWx0aW5zX0gKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIElkZW50aWZpZXI7
CitjbGFzcyBKU0dsb2JhbE9iamVjdDsKK2NsYXNzIFNvdXJjZUNvZGU7CitjbGFzcyBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIFZNOworCitGdW5jdGlvbkV4ZWN1dGFibGUqIGNy
ZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKFZNJiwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqLCBj
b25zdCBTb3VyY2VDb2RlJik7CisKKyIiIiAlIChnZW5lcmF0b3JTdHJpbmcsIGNvcHlyaWdodFRl
eHQpKQorCitjb2RlUmVmZXJlbmNlcyA9IFtdCisKK2ZvciAob2JqZWN0TmFtZSwgZnVuY3Rpb25z
KSBpbiBidWlsdGluczoKKyAgICBwcmludCgiR2VuZXJhdGluZyBiaW5kaW5ncyBmb3IgdGhlICVz
IGJ1aWx0aW4uIiAlIG9iamVjdE5hbWUpCisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIi8qICVz
IGZ1bmN0aW9ucyAqL1xuIiAlIG9iamVjdE5hbWUpCisgICAgZm9yIChuYW1lLCBpbXBsZW1lbnRh
dGlvbiwgXykgaW4gZnVuY3Rpb25zOgorICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZU5hbWUo
b2JqZWN0TmFtZSwgbmFtZSkKKyAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZVswXS5s
b3dlcigpICsgbWFuZ2xlZE5hbWVbMTpdICsgIkNvZGUiCisgICAgICAgIGNvZGVSZWZlcmVuY2Vz
LmFwcGVuZCgobWFuZ2xlZE5hbWUsIG5hbWUsIGltcGxlbWVudGF0aW9uKSkKKyAgICAgICAgYnVp
bHRpbnNIZWFkZXIud3JpdGUoImV4dGVybiBjb25zdCBjaGFyKiBzXyVzO1xuIiAlIG1hbmdsZWRO
YW1lKQorICAgICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiZXh0ZXJuIGNvbnN0IGludCBzXyVz
TGVuZ3RoO1xuIiAlIG1hbmdsZWROYW1lKQorICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJcbiIp
CisgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0ZPUkVBQ0hfJXNfQlVJTFRJ
TihtYWNybykgXFxcbiIgJSBvYmplY3ROYW1lLnJlcGxhY2UoIi4iLCAiXyIpLnVwcGVyKCkpCisg
ICAgZm9yIChuYW1lLCBpbXBsZW1lbnRhdGlvbiwgYXJndW1lbnRzKSBpbiBmdW5jdGlvbnM6Cisg
ICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlTmFtZShvYmplY3ROYW1lLCBuYW1lKQorICAgICAg
ICBidWlsdGluc0hlYWRlci53cml0ZSgiICAgIG1hY3JvKCVzLCAlcywgJWQpIFxcXG4iICUgKG5h
bWUsIG1hbmdsZWROYW1lLCBsZW4oYXJndW1lbnRzKSkpCisgICAgYnVpbHRpbnNIZWFkZXIud3Jp
dGUoIlxuIikKKyAgICBmb3IgKG5hbWUsIGltcGxlbWVudGF0aW9uLCBhcmd1bWVudHMpIGluIGZ1
bmN0aW9uczoKKyAgICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0JVSUxU
SU5fJXMgMVxuIiAlIG1hbmdsZU5hbWUob2JqZWN0TmFtZSwgbmFtZSkudXBwZXIoKSkKKyAgICBi
dWlsdGluc0hlYWRlci53cml0ZSgiXG5cbiIpCituYW1lcyA9IFtdCitidWlsdGluc0hlYWRlci53
cml0ZSgiI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOKG1hY3JvKVxcXG4iKQorZm9yIChjb2Rl
UmVmZXJlbmNlLCBmdW5jdGlvbk5hbWUsIHNvdXJjZSkgaW4gY29kZVJlZmVyZW5jZXM6CisgICAg
YnVpbHRpbnNIZWFkZXIud3JpdGUoIiAgICBtYWNybyglcywgJXMsIHNfJXNMZW5ndGgpIFxcXG4i
ICUgKGNvZGVSZWZlcmVuY2UsIGZ1bmN0aW9uTmFtZSwgY29kZVJlZmVyZW5jZSkpCisgICAgbmFt
ZXMuYXBwZW5kKGZ1bmN0aW9uTmFtZSkKKworYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuXG4iKQor
YnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElP
Tl9OQU1FKG1hY3JvKSBcXFxuIikKK2ZvciBuYW1lIGluIHNvcnRlZChzZXQobmFtZXMpKToKKyAg
ICBidWlsdGluc0hlYWRlci53cml0ZSgiICAgIG1hY3JvKCVzKSBcXFxuIiAlIG5hbWUpCitidWls
dGluc0hlYWRlci53cml0ZSgiIiIKKworI2RlZmluZSBKU0NfREVDTEFSRV9CVUlMVElOX0dFTkVS
QVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAorICAgIEZ1bmN0
aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihWTSYpOworCitKU0NfRk9SRUFDSF9C
VUlMVElOKEpTQ19ERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIEpTQ19ERUNMQVJF
X0JVSUxUSU5fR0VORVJBVE9SCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fRVhJU1RTKG5hbWUpIGRl
ZmluZWQgSlNDX0JVSUxUSU5fICMjIG5hbWUKKworfQorCisjZW5kaWYKKworIiIiKQorCitidWls
dGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIiVzCislcworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgorCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFi
bGVzLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMu
aCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworIiIiICAlIChnZW5lcmF0
b3JTdHJpbmcsIGNvcHlyaWdodFRleHQpKQorCitmb3IgKGNvZGVSZWZlcmVuY2UsIG5hbWUsIHNv
dXJjZSkgaW4gY29kZVJlZmVyZW5jZXM6CisgICAgc291cmNlID0gIihmdW5jdGlvbiAiICsgc291
cmNlW3NvdXJjZS5pbmRleCgiKCIpOl0gKyAiKSIKKyAgICBsaW5lcyA9IGpzb24uZHVtcHMoc291
cmNlKVsxOi0xXS5zcGxpdCgiXFxuIikKKyAgICBzb3VyY2VMZW5ndGggPSBsZW4oc291cmNlKQor
ICAgIHNvdXJjZSA9ICIiCisgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgIHNvdXJjZSA9
IHNvdXJjZSArICgiICAgIFwiJXNcXG5cIiBcXFxuIiAlIGxpbmUpCisgICAgYnVpbHRpbnNJbXBs
ZW1lbnRhdGlvbi53cml0ZSgiY29uc3QgY2hhciogc18lcyA9XG4lcztcblxuIiAlIChjb2RlUmVm
ZXJlbmNlLCBzb3VyY2UpKQorICAgIGJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoImNvbnN0
IGludCBzXyVzTGVuZ3RoID0gJWQ7XG5cbiIgJSAoY29kZVJlZmVyZW5jZSwgc291cmNlTGVuZ3Ro
ICsgMSkpICMgKyAxIGZvciBcbgorCitidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIgor
RnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShWTSYgdm0sIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSkKK3sKKyAgICB1bnNpZ25lZCBsaW5lQ291bnQgPSB1bmxpbmtlZEV4ZWN1dGFi
bGUtPmxpbmVDb3VudCgpOworICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gMTsKKyAgICB1bnNp
Z25lZCBzb3VyY2VMZW5ndGggPSB1bmxpbmtlZEV4ZWN1dGFibGUtPnNvdXJjZUxlbmd0aCgpOwor
ICAgIGJvb2wgZW5kQ29sdW1uSXNPblN0YXJ0TGluZSA9ICFsaW5lQ291bnQ7CisgICAgdW5zaWdu
ZWQgZW5kQ29sdW1uRXhjbHVkaW5nQnJhY2VzID0gdW5saW5rZWRFeGVjdXRhYmxlLT51bmxpbmtl
ZEJvZHlFbmRDb2x1bW4oKSArIChlbmRDb2x1bW5Jc09uU3RhcnRMaW5lID8gMCA6IDEpOworICAg
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gdW5saW5rZWRFeGVjdXRhYmxlLT5zdGFydE9mZnNldCgp
OworICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0RXhjbHVkaW5nT3BlbkJyYWNlID0gc3RhcnRPZmZz
ZXQgKyAxOworICAgIHVuc2lnbmVkIGVuZE9mZnNldEV4Y2x1ZGluZ0Nsb3NlQnJhY2UgPSBzdGFy
dE9mZnNldCArIHNvdXJjZUxlbmd0aCAtIDE7CisgICAgU291cmNlQ29kZSBib2R5U291cmNlKHNv
dXJjZS5wcm92aWRlcigpLCBzdGFydE9mZnNldEV4Y2x1ZGluZ09wZW5CcmFjZSwgZW5kT2Zmc2V0
RXhjbHVkaW5nQ2xvc2VCcmFjZSwgMCwgc3RhcnRDb2x1bW4pOworICAgIHJldHVybiBGdW5jdGlv
bkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgYm9keVNvdXJjZSwgdW5saW5rZWRFeGVjdXRhYmxlLCAw
LCBsaW5lQ291bnQsIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW5FeGNsdWRpbmdCcmFjZXMsIGZhbHNl
KTsKK30KKworI2RlZmluZSBKU0NfREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBm
dW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCitGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVO
YW1lIyNHZW5lcmF0b3IoVk0mIHZtKSBcXAoreyBcXAorICAgIHJldHVybiBjcmVhdGVCdWlsdGlu
RXhlY3V0YWJsZSh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRh
YmxlKCksIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyBcXAor
fQorCitKU0NfRk9SRUFDSF9CVUlMVElOKEpTQ19ERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisj
dW5kZWYgSlNDX0RFRklORV9CVUlMVElOX0dFTkVSQVRPUgorfQorCisiIiIpCisKK2J1aWx0aW5z
SGVhZGVyLmNsb3NlKCkKK2J1aWx0aW5zSW1wbGVtZW50YXRpb24uY2xvc2UoKQorCitpZiAobm90
IG9zLnBhdGguZXhpc3RzKG91dHB1dF9iYXNlICsgIi5oIikpIG9yIChub3QgZmlsZWNtcC5jbXAo
b3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmgiLCBzaGFsbG93PUZhbHNl
KSk6CisgICAgb3MucmVuYW1lKG91dHB1dF9iYXNlICsgIi5oLnRtcCIsIG91dHB1dF9iYXNlICsg
Ii5oIikKK2Vsc2U6CisgICAgb3MucmVtb3ZlKG91dHB1dF9iYXNlICsgIi5oLnRtcCIpCisKK2lm
IChub3Qgb3MucGF0aC5leGlzdHMob3V0cHV0X2Jhc2UgKyAiLmNwcCIpKSBvciAobm90IGZpbGVj
bXAuY21wKG91dHB1dF9iYXNlICsgIi5jcHAudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmNwcCIsIHNo
YWxsb3c9RmFsc2UpKToKKyAgICBvcy5yZW5hbWUob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCBv
dXRwdXRfYmFzZSArICIuY3BwIikKK2Vsc2U6CisgICAgb3MucmVtb3ZlKG91dHB1dF9iYXNlICsg
Ii5jcHAudG1wIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9DYWNoZWRDYWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVk
Q2FsbC5oCmluZGV4IDJjYTNlOTc5NDBjN2MxMTA2YzFiYWJhMWYzNTRmZTg0N2I0Mzg1YjMuLjMw
Y2FkMmExNGZmZGJmYjRkNTdjZjVhMTJmY2I5MDBlMjY0Zjg3NmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaApAQCAtNDMsNyArNDMsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICwgbV9pbnRlcnByZXRlcihjYWxsRnJhbWUtPmlu
dGVycHJldGVyKCkpCiAgICAgICAgICAgICAsIG1fZW50cnlTY29wZShjYWxsRnJhbWUtPnZtKCks
IGZ1bmN0aW9uLT5zY29wZSgpLT5nbG9iYWxPYmplY3QoKSkKICAgICAgICAgewotICAgICAgICAg
ICAgQVNTRVJUKCFmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSk7CisgICAgICAgICAgICBBU1NF
UlQoIWZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbk5vbklubGluZSgpKTsKICAgICAgICAgICAgIGlm
IChjYWxsRnJhbWUtPnZtKCkuaXNTYWZlVG9SZWN1cnNlKCkpIHsKICAgICAgICAgICAgICAgICBt
X2FyZ3VtZW50cy5yZXNpemUoYXJndW1lbnRDb3VudCk7CiAgICAgICAgICAgICAgICAgbV9jbG9z
dXJlID0gbV9pbnRlcnByZXRlci0+cHJlcGFyZUZvclJlcGVhdENhbGwoZnVuY3Rpb24tPmpzRXhl
Y3V0YWJsZSgpLCBjYWxsRnJhbWUsICZtX3Byb3RvQ2FsbEZyYW1lLCBmdW5jdGlvbiwgYXJndW1l
bnRDb3VudCArIDEsIGZ1bmN0aW9uLT5zY29wZSgpLCBtX2FyZ3VtZW50cy5kYXRhKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCA4ZWMxZmQzMmEzYWRh
MjJlMTI1MjI5NTcwZGNmN2ZmMjhlYWJmMWVkLi40NmE3Yzc2YjJmOTAxZmMzY2MzNmQxY2UwYzA3
MzUzZWIwNmIyZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FT
VEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIu
aApAQCAtODg4LDkgKzg4OCw5IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRnVu
Y3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uCiAgICAgQVNTRVJU
KGZ1bmMtPmlzRG90QWNjZXNzb3JOb2RlKCkpOwogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0g
c3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4oZnVuYyk7CiAgICAgRnVuY3Rpb25DYWxsRG90
Tm9kZSogbm9kZTsKLSAgICBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlO
YW1lcy0+Y2FsbCkKKyAgICBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlO
YW1lcy0+Y2FsbCB8fCBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5j
YWxsUHJpdmF0ZU5hbWUpCiAgICAgICAgIG5vZGUgPSBuZXcgKG1fdm0pIENhbGxGdW5jdGlvbkNh
bGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3Ms
IGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7Ci0gICAgZWxzZSBpZiAoZG90LT5pZGVudGlm
aWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXBwbHkpCisgICAgZWxzZSBpZiAoZG90LT5p
ZGVudGlmaWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXBwbHkgfHwgZG90LT5pZGVudGlm
aWVyKCkgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXBwbHlQcml2YXRlTmFtZSkKICAgICAgICAg
bm9kZSA9IG5ldyAobV92bSkgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3Qt
PmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZv
dEVuZCk7CiAgICAgZWxzZQogICAgICAgICBub2RlID0gbmV3IChtX3ZtKSBGdW5jdGlvbkNhbGxE
b3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRp
dm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4
ZXIuY3BwCmluZGV4IDQ0MTRiZmY1NTZjZjRkNGU5ZjU0ZTMwZDcwOTkyMDRjNTBkMTcxZmUuLmFi
NzVjNWE0ZDM2OGJiMzkzYzQxODg0NjU2OWNmMGZlYTU5OTA4MWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC05MSw2ICs5MSw3IEBAIGVudW0gQ2hhcmFjdGVyVHlw
ZSB7CiAKICAgICAvLyBPdGhlciB0eXBlcyAob25seSBvbmUgc28gZmFyKQogICAgIENoYXJhY3Rl
cldoaXRlU3BhY2UsCisgICAgQ2hhcmFjdGVyUHJpdmF0ZUlkZW50aWZpZXJTdGFydAogfTsKIAog
Ly8gMjU2IExhdGluLTEgY29kZXMKQEAgLTE1OSw3ICsxNjAsNyBAQCBzdGF0aWMgY29uc3QgdW5z
aWduZWQgc2hvcnQgdHlwZXNPZkxhdGluMUNoYXJhY3RlcnNbMjU2XSA9IHsKIC8qICA2MSAtID0g
ICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJFcXVhbCwKIC8qICA2MiAtID4gICAgICAgICAg
ICAgICAgICAqLyBDaGFyYWN0ZXJHcmVhdGVyLAogLyogIDYzIC0gPyAgICAgICAgICAgICAgICAg
ICovIENoYXJhY3RlclF1ZXN0aW9uLAotLyogIDY0IC0gQCAgICAgICAgICAgICAgICAgICovIENo
YXJhY3RlckludmFsaWQsCisvKiAgNjQgLSBAICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVy
UHJpdmF0ZUlkZW50aWZpZXJTdGFydCwKIC8qICA2NSAtIEEgICAgICAgICAgICAgICAgICAqLyBD
aGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCiAvKiAgNjYgLSBCICAgICAgICAgICAgICAgICAgKi8g
Q2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAogLyogIDY3IC0gQyAgICAgICAgICAgICAgICAgICov
IENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKQEAgLTQ4Nyw5ICs0ODgsMTAgQEAgc3RhdGljIGNv
bnN0IExDaGFyIHNpbmdsZUNoYXJhY3RlckVzY2FwZVZhbHVlc0ZvckFTQ0lJWzEyOF0gPSB7CiB9
OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUxleGVyPFQ+OjpMZXhlcihWTSogdm0pCitMZXhl
cjxUPjo6TGV4ZXIoVk0qIHZtLCBKU1BhcnNlclN0cmljdG5lc3Mgc3RyaWN0bmVzcykKICAgICA6
IG1faXNSZXBhcnNpbmcoZmFsc2UpCiAgICAgLCBtX3ZtKHZtKQorICAgICwgbV9wYXJzaW5nQnVp
bHRpbkZ1bmN0aW9uKHN0cmljdG5lc3MgPT0gSlNQYXJzZUJ1aWx0aW4pCiB7CiB9CiAKQEAgLTc1
NCw3ICs3NTYsMjcgQEAgaW5saW5lIHZvaWQgTGV4ZXI8VD46OnJlY29yZDE2KGludCBjKQogICAg
IEFTU0VSVChjIDw9IHN0YXRpY19jYXN0PGludD4oVVNIUlRfTUFYKSk7CiAgICAgbV9idWZmZXIx
Ni5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KGMpKTsKIH0KLQorICAgIAorI2lmICFBU1NFUlRf
RElTQUJMRUQKK2Jvb2wgaXNTYWZlSWRlbnRpZmllcihWTSYgdm0sIGNvbnN0IElkZW50aWZpZXIq
IGlkZW50KQoreworICAgIGlmICghaWRlbnQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIC8q
IEp1c3QgYmxvY2sgYW55IHVzZSBvZiBzdXNwaWNpb3VzIGlkZW50aWZpZXJzLiAgVGhpcyBpcyBp
bnRlbmRlZCB0bworICAgICAqIGJlIHVzZWQgYXMgYSBzYWZldHkgbmV0IHdoaWxlIGltcGxlbWVu
dGluZyBidWlsdGlucy4KKyAgICAgKi8KKyAgICBpZiAoKmlkZW50ID09IHZtLnByb3BlcnR5TmFt
ZXMtPmNhbGwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKmlkZW50ID09IHZtLnBy
b3BlcnR5TmFtZXMtPmFwcGx5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCppZGVu
dCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5ldmFsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCppZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5GdW5jdGlvbikKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisgICAgCiB0ZW1wbGF0ZSA8Pgog
dGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rv
a2VuVHlwZSBMZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcihKU1Rva2VuRGF0YSogdG9rZW5E
YXRhLCB1bnNpZ25lZCBsZXhlckZsYWdzLCBib29sIHN0cmljdE1vZGUpCiB7CkBAIC03NjYsNyAr
Nzg4LDExIEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19J
TkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAgICAgICAgICAgICByZXR1cm4ga2V5
d29yZCA9PSBSRVNFUlZFRF9JRl9TVFJJQ1QgJiYgIXN0cmljdE1vZGUgPyBJREVOVCA6IGtleXdv
cmQ7CiAgICAgICAgIH0KICAgICB9Ci0KKyAgICAKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSBt
X2N1cnJlbnQgPT0gJ0AnICYmIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKKyAgICBpZiAoaXNQ
cml2YXRlTmFtZSkKKyAgICAgICAgc2hpZnQoKTsKKyAgICAKICAgICBjb25zdCBMQ2hhciogaWRl
bnRpZmllclN0YXJ0ID0gY3VycmVudFNvdXJjZVB0cigpOwogICAgIHVuc2lnbmVkIGlkZW50aWZp
ZXJMaW5lU3RhcnQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CiAgICAgCkBAIC03ODAsMTUg
KzgwNiwyNiBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNf
SU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAogCiAgICAgY29uc3QgSWRlbnRpZmll
ciogaWRlbnQgPSAwOwogICAgIAotICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyKSB7Cisg
ICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIgfHwgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9u
KSB7CiAgICAgICAgIGludCBpZGVudGlmaWVyTGVuZ3RoID0gY3VycmVudFNvdXJjZVB0cigpIC0g
aWRlbnRpZmllclN0YXJ0OwogICAgICAgICBpZGVudCA9IG1ha2VJZGVudGlmaWVyKGlkZW50aWZp
ZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCk7Ci0KKyAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0
aW5GdW5jdGlvbikgeworICAgICAgICAgICAgaWYgKCFpc1NhZmVJZGVudGlmaWVyKCptX3ZtLCBp
ZGVudCkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsKKyAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVz
c2FnZSA9IG1ha2VTdHJpbmcoIlRoZSB1c2Ugb2YgJyIsIGlkZW50LT5zdHJpbmcoKSwgIicgaXMg
ZGlzYWxsb3dlZCBpbiBidWlsdGluIGZ1bmN0aW9ucy4iKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gRVJST1JUT0s7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaXNQcml2YXRlTmFt
ZSkKKyAgICAgICAgICAgICAgICBpZGVudCA9IG1fdm0tPnByb3BlcnR5TmFtZXMtPmdldFByaXZh
dGVOYW1lKCppZGVudCk7CisgICAgICAgICAgICBlbHNlIGlmICgqaWRlbnQgPT0gbV92bS0+cHJv
cGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCkKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEt
PmlkZW50ID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZFByaXZhdGVOYW1lOworICAg
ICAgICAgICAgaWYgKCFpZGVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9QUklW
QVRFX05BTUVfRVJST1JUT0s7CisgICAgICAgIH0KICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9
IGlkZW50OwogICAgIH0gZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gMDsKIAotICAg
IGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICEobGV4ZXJGbGFn
cyAmIExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSkpIHsKKyAgICBpZiAoVU5MSUtFTFko
KHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhKGxleGVyRmxhZ3MgJiBMZXhlckZsYWdz
SWdub3JlUmVzZXJ2ZWRXb3JkcykpICYmICFpc1ByaXZhdGVOYW1lKSB7CiAgICAgICAgIEFTU0VS
VChzaG91bGRDcmVhdGVJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKHJlbWFpbmluZyA8IG1heFRv
a2VuTGVuZ3RoKSB7CiAgICAgICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gbV92bS0+
a2V5d29yZHMtPmdldEtleXdvcmQoKmlkZW50KTsKQEAgLTgxNSw2ICs4NTIsMTAgQEAgdGVtcGxh
dGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlw
ZSBMZXhlcjxVQ2hhcj46OnAKICAgICAgICAgICAgIHJldHVybiBrZXl3b3JkID09IFJFU0VSVkVE
X0lGX1NUUklDVCAmJiAhc3RyaWN0TW9kZSA/IElERU5UIDoga2V5d29yZDsKICAgICAgICAgfQog
ICAgIH0KKyAgICAKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJlbnQgPT0gJ0AnICYm
IG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKKyAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAg
ICAgc2hpZnQoKTsKIAogICAgIGNvbnN0IFVDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50
U291cmNlUHRyKCk7CiAgICAgaW50IGlkZW50aWZpZXJMaW5lU3RhcnQgPSBjdXJyZW50TGluZVN0
YXJ0T2Zmc2V0KCk7CkBAIC04MjcsNiArODY4LDcgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3Jl
YXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAK
ICAgICB9CiAgICAgCiAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudCA9PSAnXFwnKSkgeworICAg
ICAgICBBU1NFUlQoIWlzUHJpdmF0ZU5hbWUpOwogICAgICAgICBzZXRPZmZzZXRGcm9tU291cmNl
UHRyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxpbmVTdGFydCk7CiAgICAgICAgIHJldHVy
biBwYXJzZUlkZW50aWZpZXJTbG93Q2FzZTxzaG91bGRDcmVhdGVJZGVudGlmaWVyPih0b2tlbkRh
dGEsIGxleGVyRmxhZ3MsIHN0cmljdE1vZGUpOwogICAgIH0KQEAgLTgzOCwxOCArODgwLDI5IEBA
IHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNU
b2tlblR5cGUgTGV4ZXI8VUNoYXI+OjpwCiAKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9
IDA7CiAgICAgCi0gICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpIHsKKyAgICBpZiAoc2hv
dWxkQ3JlYXRlSWRlbnRpZmllciB8fCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKICAgICAg
ICAgaW50IGlkZW50aWZpZXJMZW5ndGggPSBjdXJyZW50U291cmNlUHRyKCkgLSBpZGVudGlmaWVy
U3RhcnQ7CiAgICAgICAgIGlmIChpc0FsbDhCaXQpCiAgICAgICAgICAgICBpZGVudCA9IG1ha2VJ
ZGVudGlmaWVyTENoYXJGcm9tVUNoYXIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVuZ3Ro
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaWRlbnQgPSBtYWtlSWRlbnRpZmllcihpZGVu
dGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwotICAgICAgICAKKyAgICAgICAgaWYgKG1f
cGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgeworICAgICAgICAgICAgaWYgKCFpc1NhZmVJZGVudGlm
aWVyKCptX3ZtLCBpZGVudCkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsKKyAgICAgICAgICAgICAgICBt
X2xleEVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIlRoZSB1c2Ugb2YgJyIsIGlkZW50LT5zdHJp
bmcoKSwgIicgaXMgZGlzYWxsb3dlZCBpbiBidWlsdGluIGZ1bmN0aW9ucy4iKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gRVJST1JUT0s7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
aXNQcml2YXRlTmFtZSkKKyAgICAgICAgICAgICAgICBpZGVudCA9IG1fdm0tPnByb3BlcnR5TmFt
ZXMtPmdldFByaXZhdGVOYW1lKCppZGVudCk7CisgICAgICAgICAgICBlbHNlIGlmICgqaWRlbnQg
PT0gbV92bS0+cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCkKKyAgICAgICAgICAgICAg
ICB0b2tlbkRhdGEtPmlkZW50ID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZFByaXZh
dGVOYW1lOworICAgICAgICAgICAgaWYgKCFpZGVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4g
SU5WQUxJRF9QUklWQVRFX05BTUVfRVJST1JUT0s7CisgICAgICAgIH0KICAgICAgICAgdG9rZW5E
YXRhLT5pZGVudCA9IGlkZW50OwogICAgIH0gZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50
ID0gMDsKICAgICAKLSAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3Ro
KSAmJiAhKGxleGVyRmxhZ3MgJiBMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpKSB7Cisg
ICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIShsZXhlckZs
YWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMpKSAmJiAhaXNQcml2YXRlTmFtZSkg
ewogICAgICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChy
ZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgewogICAgICAgICAgICAgY29uc3QgSGFzaEVudHJ5
KiBlbnRyeSA9IG1fdm0tPmtleXdvcmRzLT5nZXRLZXl3b3JkKCppZGVudCk7CkBAIC0xNjU5LDYg
KzE3MTIsNyBAQCBpbk51bWJlckFmdGVyRGVjaW1hbFBvaW50OgogICAgICAgICBBU1NFUlQoaXNJ
ZGVudFN0YXJ0KG1fY3VycmVudCkpOwogICAgICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNlIENo
YXJhY3RlckJhY2tTbGFzaDoKKyAgICAgICAgcGFyc2VJZGVudDoKICAgICAgICAgaWYgKGxleGVy
RmxhZ3MgJiBMZXhleEZsYWdzRG9udEJ1aWxkS2V5d29yZHMpCiAgICAgICAgICAgICB0b2tlbiA9
IHBhcnNlSWRlbnRpZmllcjxmYWxzZT4odG9rZW5EYXRhLCBsZXhlckZsYWdzLCBzdHJpY3RNb2Rl
KTsKICAgICAgICAgZWxzZQpAQCAtMTY3MSw2ICsxNzI1LDExIEBAIGluTnVtYmVyQWZ0ZXJEZWNp
bWFsUG9pbnQ6CiAgICAgICAgIG1fdGVybWluYXRvciA9IHRydWU7CiAgICAgICAgIG1fbGluZVN0
YXJ0ID0gbV9jb2RlOwogICAgICAgICBnb3RvIHN0YXJ0OworICAgIGNhc2UgQ2hhcmFjdGVyUHJp
dmF0ZUlkZW50aWZpZXJTdGFydDoKKyAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlv
bikKKyAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudDsKKworICAgICAgICBGQUxMVEhST1VHSDsK
ICAgICBjYXNlIENoYXJhY3RlckludmFsaWQ6CiAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0g
aW52YWxpZENoYXJhY3Rlck1lc3NhZ2UoKTsKICAgICAgICAgdG9rZW4gPSBFUlJPUlRPSzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAppbmRleCAyZTkyMmJiMGI4YjBlYzdhYTljYzE2
NzZiZWZmYjdiMWNmMjQ5NGM4Li5lY2M5YjU0NDNmZGNhMGY2OGI4ODlmZDkyMDVhZDMzZjY3ZTQw
YjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCkBAIC03MSw3ICs3MSw3IEBA
IGNsYXNzIExleGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAogcHVibGljOgot
ICAgIExleGVyKFZNKik7CisgICAgTGV4ZXIoVk0qLCBKU1BhcnNlclN0cmljdG5lc3MpOwogICAg
IH5MZXhlcigpOwogCiAgICAgLy8gQ2hhcmFjdGVyIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMuCkBA
IC0yMzcsNiArMjM3LDcgQEAgcHJpdmF0ZToKICAgICBJZGVudGlmaWVyQXJlbmEqIG1fYXJlbmE7
CiAKICAgICBWTSogbV92bTsKKyAgICBib29sIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKIH07
CiAKIHRlbXBsYXRlIDw+CkBAIC0zMzUsNiArMzM2LDEyIEBAIEFMV0FZU19JTkxJTkUgY29uc3Qg
SWRlbnRpZmllciogTGV4ZXI8VD46Om1ha2VMQ2hhcklkZW50aWZpZXIoY29uc3QgVUNoYXIqIGNo
YXJhCiAgICAgcmV0dXJuICZtX2FyZW5hLT5tYWtlSWRlbnRpZmllckxDaGFyRnJvbVVDaGFyKG1f
dm0sIGNoYXJhY3RlcnMsIGxlbmd0aCk7CiB9CiAKKyNpZiBBU1NFUlRfRElTQUJMRUQKK0FMV0FZ
U19JTkxJTkUgYm9vbCBpc1NhZmVJZGVudGlmaWVyKFZNJiwgY29uc3QgSWRlbnRpZmllciopIHsg
cmV0dXJuIHRydWU7IH0KKyNlbHNlCitib29sIGlzU2FmZUlkZW50aWZpZXIoVk0mLCBjb25zdCBJ
ZGVudGlmaWVyKik7CisjZW5kaWYKKwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBBTFdBWVNfSU5M
SU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW4qIHRv
a2VuUmVjb3JkLCB1bnNpZ25lZCBsZXhlckZsYWdzLCBib29sIHN0cmljdE1vZGUpCiB7CkBAIC0z
NzAsMTAgKzM3NywxNSBAQCBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhF
eHBlY3RJZGVudGlmaWVyKEpTVG9rZW4qIHRva2VuUmVjb3JkLCB1bgogICAgIEFTU0VSVChjdXJy
ZW50T2Zmc2V0KCkgPj0gY3VycmVudExpbmVTdGFydE9mZnNldCgpKTsKIAogICAgIC8vIENyZWF0
ZSB0aGUgaWRlbnRpZmllciBpZiBuZWVkZWQKLSAgICBpZiAobGV4ZXJGbGFncyAmIExleGV4Rmxh
Z3NEb250QnVpbGRLZXl3b3JkcykKKyAgICBpZiAobGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250
QnVpbGRLZXl3b3JkcworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgJiYgIW1fcGFyc2lu
Z0J1aWx0aW5GdW5jdGlvbgorI2VuZGlmCisgICAgICAgICkKICAgICAgICAgdG9rZW5EYXRhLT5p
ZGVudCA9IDA7CiAgICAgZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gbWFrZUxDaGFy
SWRlbnRpZmllcihzdGFydCwgcHRyIC0gc3RhcnQpOworCiAgICAgdG9rZW5Mb2NhdGlvbi0+bGlu
ZSA9IG1fbGluZU51bWJlcjsKICAgICB0b2tlbkxvY2F0aW9uLT5saW5lU3RhcnRPZmZzZXQgPSBj
dXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CiAgICAgdG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZzZXQg
PSBvZmZzZXRGcm9tU291cmNlUHRyKHN0YXJ0KTsKQEAgLTM4MSw2ICszOTMsMTMgQEAgQUxXQVlT
X0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rva2Vu
KiB0b2tlblJlY29yZCwgdW4KICAgICBBU1NFUlQodG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZzZXQg
Pj0gdG9rZW5Mb2NhdGlvbi0+bGluZVN0YXJ0T2Zmc2V0KTsKICAgICB0b2tlblJlY29yZC0+bV9z
dGFydFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbjsKICAgICB0b2tlblJlY29yZC0+bV9lbmRQb3Np
dGlvbiA9IGN1cnJlbnRQb3NpdGlvbigpOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBpZiAo
bV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CisgICAgICAgIGlmICghaXNTYWZlSWRlbnRpZmll
cigqbV92bSwgdG9rZW5EYXRhLT5pZGVudCkpCisgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7
CisgICAgfQorI2VuZGlmCisKICAgICBtX2xhc3RUb2tlbiA9IElERU5UOwogICAgIHJldHVybiBJ
REVOVDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggMTM0
YzFkMWNlNDRiZWM5MzNkNjRkYjc3N2M1MmNiMzNmMWZmNGIxZi4uMmRhMTQ4Zjc3MzZjMTY5OTQx
NmU3ODRkMjk0NGM0ODBiZDRjN2E4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5jcHAKQEAgLTEzMiw2ICsxMzIsMTIgQEAgUGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4gUHJvZ3Jh
bU5vZGU6OmNyZWF0ZShWTSogdm0sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQKICAgICBy
ZXR1cm4gbm9kZS5yZWxlYXNlKCk7CiB9CiAKKwordm9pZCBQcm9ncmFtTm9kZTo6c2V0Q2xvc2Vk
VmFyaWFibGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiYgY2xvc2VkVmFyaWFi
bGVzKQoreworICAgIG1fY2xvc2VkVmFyaWFibGVzID0gc3RkOjptb3ZlKGNsb3NlZFZhcmlhYmxl
cyk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFdmFsTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBpbmxpbmUgRXZhbE5vZGU6OkV2YWxOb2RlKFZN
KiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRz
KiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ss
IElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCA3ODMyODJiMzRhNzE2MjM3OTNlMzFkMWY1ZjdlYzM0
Njk1NWU4YzI3Li42NjVjYzg0NTJkMTQwZDNhMTAyZGFlMzk2NmVmNGMxNWI5MWVmMzcyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xNDMxLDYgKzE0MzEsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBuZWVkc0FjdGl2YXRpb24oKSBjb25zdCB7IHJldHVy
biAoaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkgfHwgKG1fZmVhdHVyZXMgJiAoRXZhbEZlYXR1cmUg
fCBXaXRoRmVhdHVyZSB8IENhdGNoRmVhdHVyZSkpOyB9CiAgICAgICAgIGJvb2wgaGFzQ2FwdHVy
ZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiAhIW1fY2FwdHVyZWRWYXJpYWJsZXMuc2l6ZSgp
OyB9CiAgICAgICAgIHNpemVfdCBjYXB0dXJlZFZhcmlhYmxlQ291bnQoKSBjb25zdCB7IHJldHVy
biBtX2NhcHR1cmVkVmFyaWFibGVzLnNpemUoKTsgfQorICAgICAgICBjb25zdCBJZGVudGlmaWVy
U2V0JiBjYXB0dXJlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2FwdHVyZWRWYXJpYWJs
ZXM7IH0KICAgICAgICAgYm9vbCBjYXB0dXJlcyhjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgeyBy
ZXR1cm4gbV9jYXB0dXJlZFZhcmlhYmxlcy5jb250YWlucyhpZGVudC5pbXBsKCkpOyB9CiAKICAg
ICAgICAgVmFyU3RhY2smIHZhclN0YWNrKCkgeyByZXR1cm4gbV92YXJTdGFjazsgfQpAQCAtMTQ0
Niw2ICsxNDQ3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIHNp
bmdsZVN0YXRlbWVudCgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgZW1pdFN0YXRlbWVudHNCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9uKTsKKyAgICAg
ICAgCisgICAgICAgIHZvaWQgc2V0Q2xvc2VkVmFyaWFibGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8
U3RyaW5nSW1wbD4+JiYpIHsgfQogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2b2lkIHNldFNv
dXJjZShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpIHsgbV9zb3VyY2UgPSBzb3VyY2U7IH0KQEAg
LTE0NzUsMTEgKzE0NzgsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIGNv
bnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9uID0gZmFsc2U7CiAKKyAgICAgICAgdm9pZCBzZXRDbG9z
ZWRWYXJpYWJsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJik7CisgICAgICAg
IGNvbnN0IFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+JiBjbG9zZWRWYXJpYWJsZXMoKSBjb25z
dCB7IHJldHVybiBtX2Nsb3NlZFZhcmlhYmxlczsgfQogICAgIHByaXZhdGU6CiAgICAgICAgIFBy
b2dyYW1Ob2RlKFZNKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4s
IFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNl
dCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwog
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwotCisgICAgICAgIFZlY3RvcjxSZWZQdHI8U3RyaW5n
SW1wbD4+IG1fY2xvc2VkVmFyaWFibGVzOwogICAgICAgICB1bnNpZ25lZCBtX3N0YXJ0Q29sdW1u
OwogICAgICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDI2YjAzMGI3Yzg4OGRkMmFhOWViNzUwZTRkZTRl
NGMwMjJhYmJjNTMuLmU5MTVhMmYzZjYxZTUxNGFmMDRiOTUyNjY4Y2I2OTU4N2I4ZjU1N2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTIwNSw4ICsyMDUsOSBA
QCBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBGdW5jdGlvblBhcmFtZXRlcnMqCiAgICAgLCBtX2xhc3RJZGVudGlmaWVyKDApCiAgICAg
LCBtX2xhc3RGdW5jdGlvbk5hbWUobnVsbHB0cikKICAgICAsIG1fc291cmNlRWxlbWVudHMoMCkK
KyAgICAsIG1fcGFyc2luZ0J1aWx0aW4oc3RyaWN0bmVzcyA9PSBKU1BhcnNlQnVpbHRpbikKIHsK
LSAgICBtX2xleGVyID0gYWRvcHRQdHIobmV3IExleGVyVHlwZSh2bSkpOworICAgIG1fbGV4ZXIg
PSBhZG9wdFB0cihuZXcgTGV4ZXJUeXBlKHZtLCBzdHJpY3RuZXNzKSk7CiAgICAgbV9hcmVuYSA9
IG1fdm0tPnBhcnNlckFyZW5hLmdldCgpOwogICAgIG1fbGV4ZXItPnNldENvZGUoc291cmNlLCBt
X2FyZW5hKTsKICAgICBtX3Rva2VuLm1fbG9jYXRpb24ubGluZSA9IHNvdXJjZS5maXJzdExpbmUo
KTsKQEAgLTI3MSw2ICsyNzIsNyBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5u
ZXIoKQogICAgIElkZW50aWZpZXJTZXQgY2FwdHVyZWRWYXJpYWJsZXM7CiAgICAgYm9vbCBtb2Rp
ZmllZFBhcmFtZXRlciA9IGZhbHNlOwogICAgIHNjb3BlLT5nZXRDYXB0dXJlZFZhcmlhYmxlcyhj
YXB0dXJlZFZhcmlhYmxlcywgbW9kaWZpZWRQYXJhbWV0ZXIpOworICAgIAogICAgIENvZGVGZWF0
dXJlcyBmZWF0dXJlcyA9IGNvbnRleHQuZmVhdHVyZXMoKTsKICAgICBpZiAoc2NvcGUtPnN0cmlj
dE1vZGUoKSkKICAgICAgICAgZmVhdHVyZXMgfD0gU3RyaWN0TW9kZUZlYXR1cmU7CkBAIC0yNzgs
MjEgKzI4MCwzNiBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoKQogICAg
ICAgICBmZWF0dXJlcyB8PSBTaGFkb3dzQXJndW1lbnRzRmVhdHVyZTsKICAgICBpZiAobW9kaWZp
ZWRQYXJhbWV0ZXIpCiAgICAgICAgIGZlYXR1cmVzIHw9IE1vZGlmaWVkUGFyYW1ldGVyRmVhdHVy
ZTsKLQorICAgIAorICAgIFZlY3RvcjxSZWZQdHI8U3RyaW5nSW1wbD4+IGNsb3NlZFZhcmlhYmxl
czsKKyAgICBpZiAobV9wYXJzaW5nQnVpbHRpbikgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
Y2FwdHVyZWRWYXJpYWJsZXMuc2l6ZSgpKTsKKyAgICAgICAgSWRlbnRpZmllclNldCB1c2VkVmFy
aWFibGVzOworICAgICAgICBzY29wZS0+Z2V0VXNlZFZhcmlhYmxlcyh1c2VkVmFyaWFibGVzKTsK
KyAgICAgICAgZm9yIChjb25zdCBhdXRvJiB2YXJpYWJsZSA6IHVzZWRWYXJpYWJsZXMpIHsKKyAg
ICAgICAgICAgIGlmIChzY29wZS0+aGFzRGVjbGFyZWRWYXJpYWJsZShJZGVudGlmaWVyKG1fdm0s
IHZhcmlhYmxlLmdldCgpKSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGlmIChzY29wZS0+aGFzRGVjbGFyZWRQYXJhbWV0ZXIoSWRlbnRpZmll
cihtX3ZtLCB2YXJpYWJsZS5nZXQoKSkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgY2xvc2VkVmFyaWFibGVzLmFwcGVuZCh2YXJpYWJsZSk7CisgICAgICAgIH0KKyAg
ICB9CiAgICAgZGlkRmluaXNoUGFyc2luZyhzb3VyY2VFbGVtZW50cywgY29udGV4dC52YXJEZWNs
YXJhdGlvbnMoKSwgY29udGV4dC5mdW5jRGVjbGFyYXRpb25zKCksIGZlYXR1cmVzLAotICAgICAg
ICBjb250ZXh0Lm51bUNvbnN0YW50cygpLCBjYXB0dXJlZFZhcmlhYmxlcyk7CisgICAgICAgIGNv
bnRleHQubnVtQ29uc3RhbnRzKCksIGNhcHR1cmVkVmFyaWFibGVzLCBzdGQ6Om1vdmUoY2xvc2Vk
VmFyaWFibGVzKSk7CiAKICAgICByZXR1cm4gcGFyc2VFcnJvcjsKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIExleGVyVHlwZT4KIHZvaWQgUGFyc2VyPExleGVyVHlwZT46OmRpZEZpbmlzaFBhcnNp
bmcoU291cmNlRWxlbWVudHMqIHNvdXJjZUVsZW1lbnRzLCBQYXJzZXJBcmVuYURhdGE8RGVjbGFy
YXRpb25TdGFja3M6OlZhclN0YWNrPiogdmFyU3RhY2ssIAotICAgIFBhcnNlckFyZW5hRGF0YTxE
ZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qIGZ1bmNTdGFjaywgQ29kZUZlYXR1cmVz
IGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcnMp
CisgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiog
ZnVuY1N0YWNrLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMsIElkZW50
aWZpZXJTZXQmIGNhcHR1cmVkVmFycywgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4m
JiBjbG9zZWRWYXJpYWJsZXMpCiB7CiAgICAgbV9zb3VyY2VFbGVtZW50cyA9IHNvdXJjZUVsZW1l
bnRzOwogICAgIG1fdmFyRGVjbGFyYXRpb25zID0gdmFyU3RhY2s7CiAgICAgbV9mdW5jRGVjbGFy
YXRpb25zID0gZnVuY1N0YWNrOwogICAgIG1fY2FwdHVyZWRWYXJpYWJsZXMuc3dhcChjYXB0dXJl
ZFZhcnMpOworICAgIG1fY2xvc2VkVmFyaWFibGVzID0gY2xvc2VkVmFyaWFibGVzOwogICAgIG1f
ZmVhdHVyZXMgPSBmZWF0dXJlczsKICAgICBtX251bUNvbnN0YW50cyA9IG51bUNvbnN0YW50czsK
IH0KQEAgLTIzNjIsNiArMjM3OSwxMCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPiB2
b2lkIFBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRUb2tlblRleHQoVwogICAgIGNh
c2UgUkVTRVJWRUQ6CiAgICAgICAgIG91dC5wcmludCgiVW5leHBlY3RlZCB1c2Ugb2YgcmVzZXJ2
ZWQgd29yZCAnIiwgZ2V0VG9rZW4oKSwgIiciKTsKICAgICAgICAgcmV0dXJuOworCisgICAgY2Fz
ZSBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzoKKyAgICAgICAgb3V0LnByaW50KCJJbnZh
bGlkIHByaXZhdGUgbmFtZSAnIiwgZ2V0VG9rZW4oKSwgIiciKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgCiAgICAgY2FzZSBJREVOVDoKICAgICAgICAgb3V0LnByaW50KCJVbmV4cGVj
dGVkIGlkZW50aWZpZXIgJyIsIGdldFRva2VuKCksICInIik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaAppbmRleCBiNjk4ZWY5MzY4Y2I4YzhmMTk3Y2NkMDAwYWNhYTZkZmIxMWJh
MjQ0Li5kNjk4OGU3ZWE2MzcwMjc3MjU1YzA4MzkwMGM5MWZiNjkxYmNiOGQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTI1OSw2ICsyNTksMTAgQEAgc3RydWN0IFNj
b3BlIHsKICAgICAgICAgcmV0dXJuIGlzVmFsaWRTdHJpY3RNb2RlID8gQmluZGluZ1N1Y2NlZWRl
ZCA6IFN0cmljdEJpbmRpbmdGYWlsZWQ7CiAgICAgfQogCisgICAgdm9pZCBnZXRVc2VkVmFyaWFi
bGVzKElkZW50aWZpZXJTZXQmIHVzZWRWYXJpYWJsZXMpCisgICAgeworICAgICAgICB1c2VkVmFy
aWFibGVzLnN3YXAobV91c2VkVmFyaWFibGVzKTsKKyAgICB9CiAKICAgICB2b2lkIHVzZVZhcmlh
YmxlKGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBib29sIGlzRXZhbCkKICAgICB7CkBAIC00MTQs
NiArNDE4LDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFy
c2VyRXJyb3ImKTsKIAogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xp
bmUoKSBjb25zdCB7IHJldHVybiBtX2xleGVyLT5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7
IH0KKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiYmIGNsb3NlZFZhcmlhYmxl
cygpIHsgcmV0dXJuIHN0ZDo6bW92ZShtX2Nsb3NlZFZhcmlhYmxlcyk7IH0KIAogcHJpdmF0ZToK
ICAgICBzdHJ1Y3QgQWxsb3dJbk92ZXJyaWRlIHsKQEAgLTU0MCw3ICs1NDUsNyBAQCBwcml2YXRl
OgogICAgIFN0cmluZyBwYXJzZUlubmVyKCk7CiAKICAgICB2b2lkIGRpZEZpbmlzaFBhcnNpbmco
U291cmNlRWxlbWVudHMqLCBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OlZhclN0
YWNrPiosIAotICAgICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0
aW9uU3RhY2s+KiwgQ29kZUZlYXR1cmVzLCBpbnQsIElkZW50aWZpZXJTZXQmKTsKKyAgICAgICAg
UGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiosIENvZGVG
ZWF0dXJlcywgaW50LCBJZGVudGlmaWVyU2V0JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHJpbmdJ
bXBsPj4mJik7CiAKICAgICAvLyBVc2VkIHRvIGRldGVybWluZSB0eXBlIG9mIGVycm9yIHRvIHJl
cG9ydC4KICAgICBib29sIGlzRnVuY3Rpb25Cb2R5Tm9kZShTY29wZU5vZGUqKSB7IHJldHVybiBm
YWxzZTsgfQpAQCAtODQwLDkgKzg0NSwxMSBAQCBwcml2YXRlOgogICAgIGNvbnN0IElkZW50aWZp
ZXIqIG1fbGFzdEZ1bmN0aW9uTmFtZTsKICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXJDYWNoZT4g
bV9mdW5jdGlvbkNhY2hlOwogICAgIFNvdXJjZUVsZW1lbnRzKiBtX3NvdXJjZUVsZW1lbnRzOwor
ICAgIGJvb2wgbV9wYXJzaW5nQnVpbHRpbjsKICAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRp
b25TdGFja3M6OlZhclN0YWNrPiogbV92YXJEZWNsYXJhdGlvbnM7CiAgICAgUGFyc2VyQXJlbmFE
YXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiogbV9mdW5jRGVjbGFyYXRpb25z
OwogICAgIElkZW50aWZpZXJTZXQgbV9jYXB0dXJlZFZhcmlhYmxlczsKKyAgICBWZWN0b3I8UmVm
UHRyPFN0cmluZ0ltcGw+PiBtX2Nsb3NlZFZhcmlhYmxlczsKICAgICBDb2RlRmVhdHVyZXMgbV9m
ZWF0dXJlczsKICAgICBpbnQgbV9udW1Db25zdGFudHM7CiAgICAgCkBAIC05NTcsNiArOTY0LDEy
IEBAIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gcGFyc2UoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIEZ1bmN0aW9uUGFyYW1ldGVyCiAgICAgICAgIFJlZlB0cjxQYXJzZWROb2RlPiBy
ZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IpOwogICAgICAgICBpZiAocG9z
aXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3RO
ZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKKyAgICAgICAgaWYg
KHN0cmljdG5lc3MgPT0gSlNQYXJzZUJ1aWx0aW4pIHsKKyAgICAgICAgICAgIGlmICghcmVzdWx0
KQorICAgICAgICAgICAgICAgIFdURjo6ZGF0YUxvZygiRXJyb3IgY29tcGlsaW5nIGJ1aWx0aW46
ICIsIGVycm9yLm1fbWVzc2FnZSwgIlxuIik7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChy
ZXN1bHQpOworICAgICAgICAgICAgcmVzdWx0LT5zZXRDbG9zZWRWYXJpYWJsZXMoc3RkOjptb3Zl
KHBhcnNlci5jbG9zZWRWYXJpYWJsZXMoKSkpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBy
ZXN1bHQucmVsZWFzZSgpOwogICAgIH0KICAgICBQYXJzZXI8TGV4ZXI8VUNoYXI+PiBwYXJzZXIo
dm0sIHNvdXJjZSwgcGFyYW1ldGVycywgbmFtZSwgc3RyaWN0bmVzcywgcGFyc2VyTW9kZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKaW5kZXggNTdjOWZmYjYx
Y2EyNTlhZDM3NDI2YTRkOGQ5NmY3ZTI0NjJhYWJjYy4uOTMxNGIxOTc5MGEwZDU1OGFlNGQyNGYx
ZmM2MjExNzVmZmZkNDI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
TW9kZXMuaApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51bSBKU1Bh
cnNlclN0cmljdG5lc3MgeyBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlU3RyaWN0IH07CitlbnVtIEpT
UGFyc2VyU3RyaWN0bmVzcyB7IEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VCdWlsdGluLCBKU1BhcnNl
U3RyaWN0IH07CiBlbnVtIEpTUGFyc2VyTW9kZSB7IEpTUGFyc2VQcm9ncmFtQ29kZSwgSlNQYXJz
ZUZ1bmN0aW9uQ29kZSB9OwogCiBlbnVtIFByb2ZpbGVyTW9kZSB7IFByb2ZpbGVyT2ZmLCBQcm9m
aWxlck9uIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
clRva2Vucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaApp
bmRleCA4MmEyNjYzOWE3OTIyMGEwODQ0NTZiNDhmMzI4NTJkMTQzYzczOWQwLi44Yzg3YWQ5ZmFk
YmRjNGFmMzlhYzk5ZGIyZDg0NDVlMTNmZmZkMzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKQEAgLTE0OSw2ICsxNDksNyBAQCBlbnVtIEpTVG9rZW5U
eXBlIHsKICAgICBJTlZBTElEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSyA9IDcgfCBFcnJvclRv
a2VuRmxhZywKICAgICBVTlRFUk1JTkFURURfU1RSSU5HX0xJVEVSQUxfRVJST1JUT0sgPSA4IHwg
RXJyb3JUb2tlbkZsYWcgfCBVbnRlcm1pbmF0ZWRFcnJvclRva2VuRmxhZywKICAgICBJTlZBTElE
X1NUUklOR19MSVRFUkFMX0VSUk9SVE9LID0gOSB8IEVycm9yVG9rZW5GbGFnLAorICAgIElOVkFM
SURfUFJJVkFURV9OQU1FX0VSUk9SVE9LID0gMTAgfCBFcnJvclRva2VuRmxhZwogfTsKIAogc3Ry
dWN0IEpTVGV4dFBvc2l0aW9uIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcAppbmRleCAxM2Q3ODNjYTZkMTZjMTQzMjAwNjZiZjNhZTFhNWQ2
Y2IxOGQ4MWMxLi5jNTVjYzFlMzE0ZTVjMTcyMjFhNWU3MGI1OGZjZWMzNTM0ZTA2ZTY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBA
IC01Niw3ICs1Niw2IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5
UHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheVByb3RvRnVuY1NvcnQoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NwbGljZShFeGVjU3RhdGUqKTsKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVW5TaGlmdChF
eGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJv
dG9GdW5jRXZlcnkoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheVByb3RvRnVuY0ZvckVhY2goRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NvbWUoRXhlY1N0YXRlKik7CiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0luZGV4T2YoRXhl
Y1N0YXRlKik7CkBAIC05NTUsNjkgKzk1NCw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlQcm90b0Z1bmNNYXAoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0QXJyYXkpOwogfQogCi0vLyBEb2N1bWVudGF0aW9uIGZvciB0aGVzZSB0
aHJlZSBpcyBhdmFpbGFibGUgYXQ6Ci0vLyBodHRwOi8vZGV2ZWxvcGVyLXRlc3QubW96aWxsYS5v
cmcvZW4vZG9jcy9Db3JlX0phdmFTY3JpcHRfMS41X1JlZmVyZW5jZTpPYmplY3RzOkFycmF5OmV2
ZXJ5Ci0vLyBodHRwOi8vZGV2ZWxvcGVyLXRlc3QubW96aWxsYS5vcmcvZW4vZG9jcy9Db3JlX0ph
dmFTY3JpcHRfMS41X1JlZmVyZW5jZTpPYmplY3RzOkFycmF5OmZvckVhY2gKLS8vIGh0dHA6Ly9k
ZXZlbG9wZXItdGVzdC5tb3ppbGxhLm9yZy9lbi9kb2NzL0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVm
ZXJlbmNlOk9iamVjdHM6QXJyYXk6c29tZQotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5UHJvdG9GdW5jRXZlcnkoRXhlY1N0YXRlKiBleGVjKQotewotICAgIEpTT2JqZWN0KiB0
aGlzT2JqID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50
b09iamVjdChleGVjKTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzT2JqLT5nZXQoZXhlYywg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkudG9VSW50MzIoZXhlYyk7Ci0gICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwotCi0gICAgSlNWYWx1ZSBmdW5jdGlvbiA9IGV4ZWMtPmFyZ3VtZW50KDApOwot
ICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERh
dGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25l
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLQotICAgIEpTVmFsdWUg
YXBwbHlUaGlzID0gZXhlYy0+YXJndW1lbnQoMSk7Ci0KLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
Qm9vbGVhbih0cnVlKTsKLQotICAgIHVuc2lnbmVkIGsgPSAwOwotICAgIGlmIChjYWxsVHlwZSA9
PSBDYWxsVHlwZUpTICYmIGlzSlNBcnJheSh0aGlzT2JqKSkgewotICAgICAgICBKU0Z1bmN0aW9u
KiBmID0ganNDYXN0PEpTRnVuY3Rpb24qPihmdW5jdGlvbik7Ci0gICAgICAgIEpTQXJyYXkqIGFy
cmF5ID0gYXNBcnJheSh0aGlzT2JqKTsKLSAgICAgICAgQ2FjaGVkQ2FsbCBjYWNoZWRDYWxsKGV4
ZWMsIGYsIDMpOwotICAgICAgICBmb3IgKDsgayA8IGxlbmd0aCAmJiAhZXhlYy0+aGFkRXhjZXB0
aW9uKCk7ICsraykgewotICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFhcnJheS0+Y2FuR2V0SW5k
ZXhRdWlja2x5KGspKSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgY2FjaGVkQ2FsbC5zZXRUaGlzKGFwcGx5VGhpcyk7Ci0gICAgICAgICAgICBjYWNo
ZWRDYWxsLnNldEFyZ3VtZW50KDAsIGFycmF5LT5nZXRJbmRleFF1aWNrbHkoaykpOwotICAgICAg
ICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudCgxLCBqc051bWJlcihrKSk7Ci0gICAgICAgICAg
ICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDIsIHRoaXNPYmopOwotICAgICAgICAgICAgSlNWYWx1
ZSByZXN1bHQgPSBjYWNoZWRDYWxsLmNhbGwoKTsKLSAgICAgICAgICAgIGlmICghcmVzdWx0LnRv
Qm9vbGVhbihleGVjKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihmYWxzZSkpOwotICAgICAgICB9Ci0gICAgfQotICAgIGZvciAoOyBrIDwgbGVuZ3Ro
ICYmICFleGVjLT5oYWRFeGNlcHRpb24oKTsgKytrKSB7Ci0gICAgICAgIFByb3BlcnR5U2xvdCBz
bG90KHRoaXNPYmopOwotICAgICAgICBpZiAoIXRoaXNPYmotPmdldFByb3BlcnR5U2xvdChleGVj
LCBrLCBzbG90KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyIGVhY2hBcmd1bWVudHM7Ci0gICAgICAgIGVhY2hBcmd1bWVudHMuYXBwZW5kKHNs
b3QuZ2V0VmFsdWUoZXhlYywgaykpOwotICAgICAgICBlYWNoQXJndW1lbnRzLmFwcGVuZChqc051
bWJlcihrKSk7Ci0gICAgICAgIGVhY2hBcmd1bWVudHMuYXBwZW5kKHRoaXNPYmopOwotCi0gICAg
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KLSAgICAgICAgYm9vbCBwcmVkaWNhdGVSZXN1bHQg
PSBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGFwcGx5VGhpcywgZWFj
aEFyZ3VtZW50cykudG9Cb29sZWFuKGV4ZWMpOwotICAgICAgICBpZiAoIXByZWRpY2F0ZVJlc3Vs
dCkgewotICAgICAgICAgICAgcmVzdWx0ID0ganNCb29sZWFuKGZhbHNlKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwotfQotCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5j
Rm9yRWFjaChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNPYmplY3QqIHRoaXNPYmogPSBleGVj
LT5ob3N0VGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggM2Nh
ZWUzMjNiYWIyODk1NGVlZTRhNjE0NWY3MDdmZjEzOGMzYWIzZi4uNmRlMTA0NDRjYTkzYWI3ZTgw
ZjY1M2JkYjhjNjhiNWQ3MDIyN2Q5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29kZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlQ2FjaGUuY3BwCkBAIC0xNDQsMjQgKzE0NCwyNiBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogQ29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShW
TSYgdgogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmU7CiAgICAg
UmVmUHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KCZ2bSwgc291
cmNlLCAwLCBJZGVudGlmaWVyKCksIEpTUGFyc2VOb3JtYWwsIEpTUGFyc2VQcm9ncmFtQ29kZSwg
ZXJyb3IsICZwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKICAgICBpZiAoIXByb2dyYW0pIHsK
LSAgICAgICAgQVNTRVJUKGVycm9yLm1fdHlwZSAhPSBQYXJzZXJFcnJvcjo6RXJyb3JOb25lKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXJyb3IubV90eXBlICE9IFBhcnNlckVycm9yOjpFcnJv
ck5vbmUpOwogICAgICAgICBtX3NvdXJjZUNvZGUucmVtb3ZlKGFkZFJlc3VsdC5pdGVyYXRvcik7
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gYXNzdW1l
cyBhbiBpbnB1dCBzdHJpbmcgdGhhdCB3b3VsZCByZXN1bHQgaW4gYSBzaW5nbGUgYW5vbnltb3Vz
IGZ1bmN0aW9uIGV4cHJlc3Npb24uCiAgICAgU3RhdGVtZW50Tm9kZSogZXhwclN0YXRlbWVudCA9
IHByb2dyYW0tPnNpbmdsZVN0YXRlbWVudCgpOwotICAgIEFTU0VSVChleHByU3RhdGVtZW50KTsK
LSAgICBBU1NFUlQoZXhwclN0YXRlbWVudC0+aXNFeHByU3RhdGVtZW50KCkpOworICAgIFJFTEVB
U0VfQVNTRVJUKGV4cHJTdGF0ZW1lbnQpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4cHJTdGF0ZW1l
bnQtPmlzRXhwclN0YXRlbWVudCgpKTsKICAgICBFeHByZXNzaW9uTm9kZSogZnVuY0V4cHIgPSBz
dGF0aWNfY2FzdDxFeHByU3RhdGVtZW50Tm9kZSo+KGV4cHJTdGF0ZW1lbnQpLT5leHByKCk7Ci0g
ICAgQVNTRVJUKGZ1bmNFeHByKTsKKyAgICBSRUxFQVNFX0FTU0VSVChmdW5jRXhwcik7CiAgICAg
UkVMRUFTRV9BU1NFUlQoZnVuY0V4cHItPmlzRnVuY0V4cHJOb2RlKCkpOwogICAgIEZ1bmN0aW9u
Qm9keU5vZGUqIGJvZHkgPSBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihmdW5jRXhwciktPmJv
ZHkoKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghcHJvZ3JhbS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMo
KSk7CisgICAgCiAgICAgYm9keS0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZSk7Ci0gICAgQVNTRVJUKGJvZHkpOwotICAgIEFTU0VSVChib2R5LT5pZGVudCgpLmlzTnVs
bCgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5KTsKKyAgICBSRUxFQVNFX0FTU0VSVChib2R5
LT5pZGVudCgpLmlzTnVsbCgpKTsKIAotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBm
dW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2
bSwgc291cmNlLCBib2R5LCB0cnVlKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgm
dm0sIHNvdXJjZSwgYm9keSwgdHJ1ZSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbik7CiAgICAgZnVu
Y3Rpb25FeGVjdXRhYmxlLT5tX25hbWVWYWx1ZS5zZXQodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwg
anNTdHJpbmcoJnZtLCBuYW1lLnN0cmluZygpKSk7CiAKICAgICBhZGRSZXN1bHQuaXRlcmF0b3It
PnZhbHVlID0gU291cmNlQ29kZVZhbHVlKHZtLCBmdW5jdGlvbkV4ZWN1dGFibGUsIG1fc291cmNl
Q29kZS5hZ2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5jcHAKaW5kZXggM2Y1YzY0NWMwOThkNTI3ZmMwYzcyNTllOTQ0N2VmYmU4
ODY4YTI5Yy4uNTZkZjM0NTAyODdmZjk5OWEzOGZjZjRjYjcxNTBlODYxYTU2NDNlOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNw
cApAQCAtMjEsMTMgKzIxLDE1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29t
bW9uSWRlbnRpZmllcnMuaCIKIAorI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgorI2luY2x1ZGUg
IkpTQ0J1aWx0aW5zLmgiCiAjaW5jbHVkZSAiUHJpdmF0ZU5hbWUuaCIKIAogbmFtZXNwYWNlIEpT
QyB7CiAKICNkZWZpbmUgSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKG5hbWUpICwgbmFtZSh2bSwg
I25hbWUpCiAjZGVmaW5lIElOSVRJQUxJWkVfS0VZV09SRChuYW1lKSAsIG5hbWUjI0tleXdvcmQo
dm0sICNuYW1lKQotI2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFNRShuYW1lKSAsIG5hbWUj
I1ByaXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb20oUHJpdmF0ZU5hbWUoKSkpCisjZGVmaW5lIElO
SVRJQUxJWkVfUFJJVkFURV9OQU1FKG5hbWUpICwgbmFtZSMjUHJpdmF0ZU5hbWUobV9idWlsdGlu
TmFtZXMtPm5hbWUjI1ByaXZhdGVOYW1lKCkpCiAKIENvbW1vbklkZW50aWZpZXJzOjpDb21tb25J
ZGVudGlmaWVycyhWTSogdm0pCiAgICAgOiBudWxsSWRlbnRpZmllcigpCkBAIC0zNSwxMSArMzcs
MjYgQEAgQ29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZNKiB2bSkKICAgICAs
IHVuZGVyc2NvcmVQcm90byh2bSwgIl9fcHJvdG9fXyIpCiAgICAgLCB0aGlzSWRlbnRpZmllcih2
bSwgInRoaXMiKQogICAgICwgdXNlU3RyaWN0SWRlbnRpZmllcih2bSwgInVzZSBzdHJpY3QiKQot
ICAgICwgaGFzTmV4dElkZW50aWZpZXIodm0sICJoYXNOZXh0IikKKyAgICAsIG1fYnVpbHRpbk5h
bWVzKG5ldyBCdWlsdGluTmFtZXModm0sIHRoaXMpKQogICAgIEpTQ19DT01NT05fSURFTlRJRklF
UlNfRUFDSF9LRVlXT1JEKElOSVRJQUxJWkVfS0VZV09SRCkKICAgICBKU0NfQ09NTU9OX0lERU5U
SUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpFX1BST1BFUlRZX05BTUUpCiAgICAg
SlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFM
SVpFX1BSSVZBVEVfTkFNRSkKIHsKIH0KIAorQ29tbW9uSWRlbnRpZmllcnM6On5Db21tb25JZGVu
dGlmaWVycygpCit7Cit9CisKK2NvbnN0IElkZW50aWZpZXIqIENvbW1vbklkZW50aWZpZXJzOjpn
ZXRQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9idWlsdGluTmFtZXMtPmdldFByaXZhdGVOYW1lKGlkZW50KTsKK30KKyAgICAKK0lkZW50
aWZpZXIgQ29tbW9uSWRlbnRpZmllcnM6OmdldFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYg
aWRlbnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYnVpbHRpbk5hbWVzLT5nZXRQdWJsaWNOYW1l
KGlkZW50KTsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDE3YTcxODhjZWE3NzZi
M2E5ZThjMDZmMWFjNTk0ZjlkMzUyODE1MzIuLmUyZWEyYjM5MmI5OWE4NzkyYjZjMjk1OWU0OTU5
ODNmMzA1MmIyZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaApAQCAtMjA3LDYgKzIwNyw4IEBACiAgICAgbWFjcm8oeWllbGQpCiAK
ICNkZWZpbmUgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFN
RShtYWNybykgXAorICAgIG1hY3JvKGFwcGx5KSBcCisgICAgbWFjcm8oY2FsbCkgXAogICAgIG1h
Y3JvKGl0ZXJhdG9yKSBcCiAgICAgbWFjcm8oaXRlcmF0b3JOZXh0KSBcCiAgICAgbWFjcm8ocmVz
b2x2ZSkgXApAQCAtMjE3LDIzICsyMTksMzMgQEAKICAgICBtYWNybyhpbmRleCkgXAogICAgIG1h
Y3JvKHZhbHVlcykgXAogICAgIG1hY3JvKGRlZmVycmVkKSBcCi0gICAgbWFjcm8oY291bnRkb3du
SG9sZGVyKQorICAgIG1hY3JvKGNvdW50ZG93bkhvbGRlcikgXAorICAgIG1hY3JvKE9iamVjdCkg
XAorICAgIG1hY3JvKFR5cGVFcnJvcikgXAorICAgIG1hY3JvKHVuZGVmaW5lZCkKIAogbmFtZXNw
YWNlIEpTQyB7Ci0KKyAgICAKKyAgICBjbGFzcyBCdWlsdGluTmFtZXM7CisgICAgCiAgICAgY2xh
c3MgQ29tbW9uSWRlbnRpZmllcnMgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb21t
b25JZGVudGlmaWVycyk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHByaXZhdGU6CiAg
ICAgICAgIENvbW1vbklkZW50aWZpZXJzKFZNKik7CisgICAgICAgIH5Db21tb25JZGVudGlmaWVy
cygpOwogICAgICAgICBmcmllbmQgY2xhc3MgVk07Ci0KKyAgICAgICAgCiAgICAgcHVibGljOgor
ICAgICAgICBjb25zdCBCdWlsdGluTmFtZXMmIGJ1aWx0aW5OYW1lcygpIGNvbnN0IHsgcmV0dXJu
ICptX2J1aWx0aW5OYW1lczsgfQogICAgICAgICBjb25zdCBJZGVudGlmaWVyIG51bGxJZGVudGlm
aWVyOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyIGVtcHR5SWRlbnRpZmllcjsKICAgICAgICAg
Y29uc3QgSWRlbnRpZmllciB1bmRlcnNjb3JlUHJvdG87CiAgICAgICAgIGNvbnN0IElkZW50aWZp
ZXIgdGhpc0lkZW50aWZpZXI7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIgdXNlU3RyaWN0SWRl
bnRpZmllcjsKLSAgICAgICAgY29uc3QgSWRlbnRpZmllciBoYXNOZXh0SWRlbnRpZmllcjsKKyAg
ICBwcml2YXRlOgorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QnVpbHRpbk5hbWVzPiBtX2J1aWx0
aW5OYW1lczsKKworICAgIHB1YmxpYzoKICAgICAgICAgCiAjZGVmaW5lIEpTQ19JREVOVElGSUVS
X0RFQ0xBUkVfS0VZV09SRF9OQU1FX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWUj
I0tleXdvcmQ7CiAgICAgICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKEpT
Q19JREVOVElGSUVSX0RFQ0xBUkVfS0VZV09SRF9OQU1FX0dMT0JBTCkKQEAgLTI0Niw2ICsyNTgs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklW
QVRFX1BST1BFUlRZX05BTUVfR0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSMjUHJp
dmF0ZU5hbWU7CiAgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BS
T1BFUlRZX05BTUUoSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1BST1BFUlRZX05BTUVf
R0xPQkFMKQogI3VuZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9QUk9QRVJUWV9O
QU1FX0dMT0JBTAorICAgICAgICAKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciogZ2V0UHJpdmF0
ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OworICAgICAgICBJZGVudGlmaWVyIGdldFB1
YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogICAgIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0
aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmNwcAppbmRleCA1NTYzYmU2YmIzMzU2NTY4YTUzZTgyMTViMjJjZTNjNGY3NmU3YzIy
Li4yYjYxMTgzMzI3YzY0MzEwY2UyMjg1OGJhNDIyZTU4YTVlMTU1MjAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAtODEs
NiArODEsMTEgQEAgSlNPYmplY3QqIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogCiBKU09iamVjdCogY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVF
cnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogeworICAgIAor
ICAgIGlmIChpZGVudC5pbXBsKCktPmlzRW1wdHlVbmlxdWUoKSkgeworICAgICAgICBTdHJpbmcg
bWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBmaW5kIHByaXZhdGUgdmFyaWFibGU6IEAiLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuZ2V0UHVibGljTmFtZShpZGVudCkuc3RyaW5nKCkpKTsKKyAgICAg
ICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIG1lc3NhZ2UpOworICAgIH0KICAg
ICBTdHJpbmcgbWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBmaW5kIHZhcmlhYmxlOiAiLCBpZGVu
dC5zdHJpbmcoKSkpOwogICAgIHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBtZXNz
YWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRl
eCA1N2U2YWUzNWE4NWZkNzgwMTRlZjI5ZDc0MTYxZGM3OTI4ZDg5ZWNmLi5mYjA1ZTVhY2IwZTIx
NTU4ZmVkMjAyNTU3ZTY1ZWE2ODg0NTFkODQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC00ODQsNyArNDg0LDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBjbGVhckNvZGUoKTsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29u
c3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCks
IGlzU3RyaWN0TW9kZSgpLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxl
SW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1
c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlKTsgfQogCiAgICAgdW5zaWdu
ZWQgbnVtVmFyaWFibGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bVZh
cmlhYmxlcygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCkgeyByZXR1
cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpOyB9CkBA
IC01NDAsNyArNTQwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckNvZGUoKTsKIAotICAg
IEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJs
ZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxz
ZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJu
IEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1v
ZGUoKSwgZmFsc2UsIGZhbHNlKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBTY3Jp
cHRFeGVjdXRhYmxlOwpAQCAtNjMwLDYgKzYzMCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgICAg
IAogICAgIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUoKSB7IHJldHVybiBtX3VubGlua2VkRXhl
Y3V0YWJsZS0+ZnVuY3Rpb25Nb2RlKCk7IH0KKyAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0aW9uKCk7
IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1
dGFibGUtPm5hbWUoKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIGluZmVycmVkTmFtZSgpIHsg
cmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pbmZlcnJlZE5hbWUoKTsgfQogICAgIEpTU3Ry
aW5nKiBuYW1lVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFt
ZVZhbHVlKCk7IH0KQEAgLTY3NywxNCArNjc4LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZGlk
UGFyc2VGb3JUaGVGaXJzdFRpbWU7CiB9OwogCi1pbmxpbmUgYm9vbCBpc0hvc3RGdW5jdGlvbihK
U1ZhbHVlIHZhbHVlLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbikKLXsKLSAgICBKU0Z1
bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZ2V0SlNGdW5jdGlvbih2YWx1
ZSkpOwotICAgIGlmICghZnVuY3Rpb24gfHwgIWZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uLT5uYXRpdmVGdW5jdGlv
bigpID09IG5hdGl2ZUZ1bmN0aW9uOwotfQotCiBpbmxpbmUgdm9pZCBFeGVjdXRhYmxlQmFzZTo6
Y2xlYXJDb2RlVmlydHVhbChFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSkKIHsKICAgICBzd2l0
Y2ggKGV4ZWN1dGFibGUtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCmlu
ZGV4IDM2Y2IxMzc2MDNjNjZlNjI1NjEzZjlmMWU4NGFiZjI0NjY2NWJkNzEuLmE2MjNjZjM5OWMx
MzRmMTUwYTI3NjY5YzliOGRjN2NlMWYwMjYyZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKQEAgLTEwOCw3ICsxMDgsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmco
RXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNW
YWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkg
ewogICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4odGhp
c1ZhbHVlKTsKLSAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpKQorICAgICAg
ICBpZiAoZnVuY3Rpb24tPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgImZ1bmN0
aW9uICIsIGZ1bmN0aW9uLT5uYW1lKGV4ZWMpLCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0i
KSk7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGZ1bmN0aW9uLT5q
c0V4ZWN1dGFibGUoKTsKICAgICAgICAgU3RyaW5nIHNvdXJjZVN0cmluZyA9IGV4ZWN1dGFibGUt
PnNvdXJjZSgpLnRvU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FjdGl2YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBY3RpdmF0aW9uLmNwcAppbmRleCBlMTc3MTk0NmQ2NTk3NzkwYzE1MWRjYWFkOWViM2VlMzk3
ZWFhN2Q2Li5jYTRjMDE0N2Y0Njc3Njg3MmZkNjcxMzcwMDUwYmM0ZDc5ZWNiMWUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKQEAgLTU4LDcg
KzU4LDcgQEAgdm9pZCBKU0FjdGl2YXRpb246OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKIAogaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xU
YWJsZUdldChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
Ci0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChw
cm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0g
c3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGVu
dHJ5LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTcyLDcgKzcyLDcgQEAg
aW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZUdldChQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QKIAogaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1i
b2xUYWJsZUdldChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCiB7Ci0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxl
KCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJs
ZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHByb3BlcnR5TmFtZS51aWQo
KSk7CiAgICAgaWYgKGVudHJ5LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAg
LTg5LDcgKzg5LDcgQEAgaW5saW5lIGJvb2wgSlNBY3RpdmF0aW9uOjpzeW1ib2xUYWJsZVB1dChF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU4KICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1
ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CiAgICAgCi0gICAgU3ltYm9sVGFibGVFbnRyeSBlbnRy
eSA9IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsK
KyAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS0+aW5saW5lR2V0KHBy
b3BlcnR5TmFtZS51aWQoKSk7CiAgICAgaWYgKGVudHJ5LmlzTnVsbCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgaWYgKGVudHJ5LmlzUmVhZE9ubHkoKSkgewpAQCAtMTM2LDcgKzEzNiw3
IEBAIGlubGluZSBib29sIEpTQWN0aXZhdGlvbjo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRl
cyhWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wCiAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3du
PiogcmVnOwogICAgIHsKICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9s
VGFibGUoKS0+bV9sb2NrKTsKLSAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRl
ciA9IHN5bWJvbFRhYmxlKCktPmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgp
KTsKKyAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxl
KCktPmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgICAgICBpZiAoaXRlciA9
PSBzeW1ib2xUYWJsZSgpLT5lbmQobG9ja2VyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSYgZW50cnkgPSBpdGVyLT52YWx1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggYmRjNDVjNTI1NWRi
MTMyYWQyYTIwNDUxMTY0NzM2Mzg5MzAyOWQ1Zi4uNWFjODRlZDlmMTg4N2FhZmJiZjlmOTExZjdj
YjZiZDg4NjdlMjA1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAKQEAgLTMzLDcgKzMzLDggQEAKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5o
IgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKLSNpbmNs
dWRlICJKU0JvdW5kRnVuY3Rpb24uaCIgCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCisj
aW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5o
IgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiIAogI2luY2x1ZGUgIkpTTm90QW5PYmplY3QuaCIK
QEAgLTExOSw2ICsxMjAsMTQgQEAgdm9pZCBKU0Z1bmN0aW9uOjphZGROYW1lU2NvcGVJZk5lZWRl
ZChWTSYgdm0pCiAgICAgbV9zY29wZS5zZXQodm0sIHRoaXMsIEpTTmFtZVNjb3BlOjpjcmVhdGUo
dm0sIG1fc2NvcGUtPmdsb2JhbE9iamVjdCgpLCBleGVjdXRhYmxlLT5uYW1lKCksIHRoaXMsIFJl
YWRPbmx5IHwgRG9udERlbGV0ZSwgbV9zY29wZS5nZXQoKSkpOwogfQogCitKU0Z1bmN0aW9uKiBK
U0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgSlNG
dW5jdGlvbiogZnVuY3Rpb24gPSBjcmVhdGUodm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCk7
CisgICAgZnVuY3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNT
dHJpbmcoJnZtLCBleGVjdXRhYmxlLT5uYW1lKCkuc3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkgfCBEb250RW51bSk7CisgICAgZnVuY3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcihleGVjdXRhYmxlLT5wYXJhbWV0ZXJDb3VudCgpKSwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHJldHVybiBmdW5jdGlvbjsK
K30KKwogT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUqIEpTRnVuY3Rpb246OmNyZWF0ZUFsbG9jYXRp
b25Qcm9maWxlKEV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IGlubGluZUNhcGFjaXR5KQogewogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC0xNTIsNyArMTYxLDcgQEAgY29uc3QgU3RyaW5nIEpT
RnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAg
IHJldHVybiBleHBsaWNpdE5hbWU7CiAgICAgCiAgICAgY29uc3QgU3RyaW5nIGFjdHVhbE5hbWUg
PSBuYW1lKGV4ZWMpOwotICAgIGlmICghYWN0dWFsTmFtZS5pc0VtcHR5KCkgfHwgaXNIb3N0RnVu
Y3Rpb24oKSkKKyAgICBpZiAoIWFjdHVhbE5hbWUuaXNFbXB0eSgpIHx8IGlzSG9zdE9yQnVpbHRp
bkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBhY3R1YWxOYW1lOwogICAgIAogICAgIHJldHVy
biBqc0V4ZWN1dGFibGUoKS0+aW5mZXJyZWROYW1lKCkuc3RyaW5nKCk7CkBAIC0xNjAsMTAgKzE2
OSwyMCBAQCBjb25zdCBTdHJpbmcgSlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKEV4
ZWNTdGF0ZSogZXhlYykKIAogY29uc3QgU291cmNlQ29kZSogSlNGdW5jdGlvbjo6c291cmNlQ29k
ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKGlzSG9zdEZ1bmN0aW9uKCkpCisgICAgaWYgKGlzSG9zdE9y
QnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiAmanNFeGVj
dXRhYmxlKCktPnNvdXJjZSgpOwogfQorICAgIAorYm9vbCBKU0Z1bmN0aW9uOjppc0hvc3RPckJ1
aWx0aW5GdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzSG9zdEZ1bmN0aW9uKCkgfHwg
aXNCdWlsdGluRnVuY3Rpb24oKTsKK30KKworYm9vbCBKU0Z1bmN0aW9uOjppc0J1aWx0aW5GdW5j
dGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuICFpc0hvc3RGdW5jdGlvbigpICYmIGpzRXhlY3V0
YWJsZSgpLT5pc0J1aWx0aW5GdW5jdGlvbigpOworfQogCiB2b2lkIEpTRnVuY3Rpb246OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKQEAgLTI4Nyw3
ICszMDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuYwogICAgIGlmICghY2FsbGVyLmlzT2Jq
ZWN0KCkgfHwgIWFzT2JqZWN0KGNhbGxlciktPmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbGVyKTsKICAgICBKU0Z1bmN0aW9u
KiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2FsbGVyKTsKLSAgICBpZiAoZnVuY3Rp
b24tPmlzSG9zdEZ1bmN0aW9uKCkgfHwgIWZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJp
Y3RNb2RlKCkpCisgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpIHx8
ICFmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxlcik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkZ1bmN0aW9uLmNhbGxlciB1c2VkIHRv
IHJldHJpZXZlIHN0cmljdCBjYWxsZXIiKSkpOwogfQpAQCAtMzA5LDcgKzMyOCw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTRnVuY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiwgSlNPYmplY3QqIHNs
b3RCYXNlLCBFbmNvZGVkSlNWCiBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwotICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RG
dW5jdGlvbigpKQorICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigp
KQogICAgICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpIHsKQEAgLTM3MSw3ICszOTAsNyBAQCBib29sIEpT
RnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5Tgogdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJh
eSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7CiAgICAgSlNGdW5jdGlv
biogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsKLSAgICBpZiAoIXRo
aXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkgJiYgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJv
cGVydGllcykpIHsKKyAgICBpZiAoIXRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9u
KCkgJiYgKG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpIHsKICAgICAgICAgLy8g
TWFrZSBzdXJlIHByb3RvdHlwZSBoYXMgYmVlbiByZWlmaWVkLgogICAgICAgICBQcm9wZXJ0eVNs
b3Qgc2xvdCh0aGlzT2JqZWN0KTsKICAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+
Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5wcm90b3R5cGUsIHNsb3QpOwpAQCAtMzg3LDcgKzQwNiw3IEBAIHZvaWQgSlNGdW5jdGlvbjo6
Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywKIHZvaWQgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0
aW9uKj4oY2VsbCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdEZ1bmN0aW9uKCkpIHsKKyAg
ICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkgewogICAgICAgICBC
YXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MzUsNyArNDU0LDcgQEAgYm9vbCBKU0Z1bmN0aW9u
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3AKIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQ
cm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CiAg
ICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsK
LSAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICBpZiAodGhpc09iamVj
dC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIEJhc2U6OmRlZmlu
ZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJv
d0V4Y2VwdGlvbik7CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5wcm90b3R5cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uaAppbmRleCBhMjQ4ZTE2ZmRjZDgzMGRmODJhMjQ3NzZjNWY0NTBjYzliZmFhZGZhLi5mN2I3
ZjE2MzNjZDg3MWM2N2JjZjI1YTAwNDlkNzkzY2JjYjY3ZWI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC02OCw2ICs2OCw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uOwogICAgICAgICB9CiAgICAgICAgIAor
ICAgICAgICBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlQnVpbHRpbkZ1bmN0aW9uKFZNJiwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiwgSlNHbG9iYWxPYmplY3QqKTsKKyAgICAgICAgCiAgICAgICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAgIAogICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBTdHJpbmcgbmFtZShFeGVjU3RhdGUqKTsKQEAgLTE0Niw2ICsxNDgsMTAgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbV9hbGxvY2F0aW9uUHJvZmlsZVdhdGNo
cG9pbnQ7CiAgICAgICAgIH0KIAorICAgICAgICBib29sIGlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9u
KCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdDsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpIGNvbnN0
OworCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbXBsZW1lbnRzSGFzSW5z
dGFuY2UgfCBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1l
cyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIApAQCAtMTcwLDggKzE3Niw2IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CiAgICAgICAgIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlz
SG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7Ci0KICAgICAgICAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIGFyZ3VtZW50c0dldHRlcihFeGVjU3RhdGUqLCBKU09iamVjdCosIEVuY29kZWRKU1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgY2FsbGVy
R2V0dGVyKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFt
ZSk7CiAgICAgICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0YXRl
KiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCmluZGV4IGZlNGUx
MTRhZGJjMjM2NzRkM2I2MGU2MWY3MWNiN2EwNmM5NDc4NGQuLjY5ZjBkNGYzOTZlZjljMmRhOWUw
YmY2MDhjMjY0NDE3MTc5OWJhNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaApAQCAtNTMsMTYgKzUzLDI0IEBAIGlubGluZSBib29s
IEpTRnVuY3Rpb246OmlzSG9zdEZ1bmN0aW9uKCkgY29uc3QKIAogaW5saW5lIE5hdGl2ZUZ1bmN0
aW9uIEpTRnVuY3Rpb246Om5hdGl2ZUZ1bmN0aW9uKCkKIHsKLSAgICBBU1NFUlQoaXNIb3N0RnVu
Y3Rpb24oKSk7CisgICAgQVNTRVJUKGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkpOwogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxOYXRpdmVFeGVjdXRhYmxlKj4obV9leGVjdXRhYmxlLmdldCgpKS0+
ZnVuY3Rpb24oKTsKIH0KIAogaW5saW5lIE5hdGl2ZUZ1bmN0aW9uIEpTRnVuY3Rpb246Om5hdGl2
ZUNvbnN0cnVjdG9yKCkKIHsKLSAgICBBU1NFUlQoaXNIb3N0RnVuY3Rpb24oKSk7CisgICAgQVNT
RVJUKGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxO
YXRpdmVFeGVjdXRhYmxlKj4obV9leGVjdXRhYmxlLmdldCgpKS0+Y29uc3RydWN0b3IoKTsKIH0K
IAoraW5saW5lIGJvb2wgaXNIb3N0RnVuY3Rpb24oSlNWYWx1ZSB2YWx1ZSwgTmF0aXZlRnVuY3Rp
b24gbmF0aXZlRnVuY3Rpb24pCit7CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8
SlNGdW5jdGlvbio+KGdldEpTRnVuY3Rpb24odmFsdWUpKTsKKyAgICBpZiAoIWZ1bmN0aW9uIHx8
ICFmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiBmdW5jdGlvbi0+bmF0aXZlRnVuY3Rpb24oKSA9PSBuYXRpdmVGdW5jdGlvbjsKK30K
KwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBKU0Z1bmN0aW9uSW5saW5lc19oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5k
ZXggYmY4M2I4YTZlYzIzMTUxOWE1NmJkOTI1NjZmMGIxYTY0NTg5Y2FiYi4uZjkwMTU5NzNjNzNk
YWU3ZDk5ZWIxZTBlYWE3ZDRhMWMwYjNhODdkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMzUzLDcgKzM1Myw4IEBAIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQogCiAgICAgLy8gQ29uc3Ry
dWN0b3JzCiAKLSAgICBKU0NlbGwqIG9iamVjdENvbnN0cnVjdG9yID0gT2JqZWN0Q29uc3RydWN0
b3I6OmNyZWF0ZSh2bSwgT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsK
KyAgICBPYmplY3RDb25zdHJ1Y3Rvciogb2JqZWN0Q29uc3RydWN0b3IgPSBPYmplY3RDb25zdHJ1
Y3Rvcjo6Y3JlYXRlKHZtLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkp
OworICAgIG1fb2JqZWN0Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBvYmplY3RDb25zdHJ1Y3Rv
cik7CiAgICAgSlNDZWxsKiBmdW5jdGlvbkNvbnN0cnVjdG9yID0gRnVuY3Rpb25Db25zdHJ1Y3Rv
cjo6Y3JlYXRlKHZtLCBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgp
KTsKICAgICBKU0NlbGwqIGFycmF5Q29uc3RydWN0b3IgPSBBcnJheUNvbnN0cnVjdG9yOjpjcmVh
dGUodm0sIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5j
dGlvblByb3RvdHlwZS5nZXQoKSksIG1fYXJyYXlQcm90b3R5cGUuZ2V0KCkpOwogCkBAIC00Mzks
NyArNDQwLDEwIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBl
KQogICAgIEdsb2JhbFByb3BlcnR5SW5mbyBzdGF0aWNHbG9iYWxzW10gPSB7CiAgICAgICAgIEds
b2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5OYU4sIGpzTmFOKCksIERvbnRFbnVt
IHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPkluZmluaXR5LCBqc051bWJlcihzdGQ6Om51bWVyaWNfbGltaXRzPGRv
dWJsZT46OmluZmluaXR5KCkpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCi0g
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3
b3JkLCBqc1VuZGVmaW5lZCgpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSkKKyAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdv
cmQsIGpzVW5kZWZpbmVkKCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZFByaXZh
dGVOYW1lLCBqc1VuZGVmaW5lZCgpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSks
CisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5PYmplY3RQcml2
YXRlTmFtZSwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPlR5cGVF
cnJvclByaXZhdGVOYW1lLCBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLmdldCgpLCBEb250RW51bSB8
IERvbnREZWxldGUgfCBSZWFkT25seSkKICAgICB9OwogICAgIGFkZFN0YXRpY0dsb2JhbHMoc3Rh
dGljR2xvYmFscywgV1RGX0FSUkFZX0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CiAgICAgCkBAIC02
MTUsNiArNjE5LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX3N5bnRheEVycm9yQ29uc3RydWN0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX3R5cGVFcnJvckNvbnN0cnVjdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9VUklFcnJvckNvbnN0cnVjdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9vYmplY3RDb25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fcHJvbWlzZUNvbnN0cnVjdG9yKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX2V2YWxGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBmOTg3ZTRhMDA5NzQ4YjM5NDc3NzJjNTU0OWNiMDQz
YzMyMGJlODYxLi42ZTk0OTI5NjE5YjY0NDAwNGYwN2ViOTFmNDdhYmRhNmNjZjJlYTliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTY4
LDYgKzY4LDcgQEAgY2xhc3MgSlNTdGFjazsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
IGNsYXNzIE1pY3JvdGFzazsKIGNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I7CitjbGFzcyBP
YmplY3RDb25zdHJ1Y3RvcjsKIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBQcm9ncmFt
RXhlY3V0YWJsZTsKIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yOwpAQCAtMTU5LDYgKzE2MCw3IEBA
IHByb3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV90
eXBlRXJyb3JDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1
Y3Rvcj4gbV9VUklFcnJvckNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VD
b25zdHJ1Y3Rvcj4gbV9wcm9taXNlQ29uc3RydWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPE9iamVj
dENvbnN0cnVjdG9yPiBtX29iamVjdENvbnN0cnVjdG9yOwogCiAgICAgV3JpdGVCYXJyaWVyPEpT
RnVuY3Rpb24+IG1fZXZhbEZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBt
X2NhbGxGdW5jdGlvbjsKQEAgLTMzNSw2ICszMzcsNyBAQCBwdWJsaWM6CiAgICAgUmVnRXhwQ29u
c3RydWN0b3IqIHJlZ0V4cENvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBDb25z
dHJ1Y3Rvci5nZXQoKTsgfQogCiAgICAgRXJyb3JDb25zdHJ1Y3RvciogZXJyb3JDb25zdHJ1Y3Rv
cigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQorICAgIE9iamVj
dENvbnN0cnVjdG9yKiBvYmplY3RDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0
Q29uc3RydWN0b3IuZ2V0KCk7IH0KICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBldmFsRXJy
b3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXZhbEVycm9yQ29uc3RydWN0b3IuZ2V0
KCk7IH0KICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiByYW5nZUVycm9yQ29uc3RydWN0b3Io
KSBjb25zdCB7IHJldHVybiBtX3JhbmdlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQogICAgIE5h
dGl2ZUVycm9yQ29uc3RydWN0b3IqIHJlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7
IHJldHVybiBtX3JlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KQEAgLTU5MSw3ICs1
OTQsNyBAQCBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6aGFzT3duUHJvcGVydHlGb3JXcml0
ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZQogCiBpbmxpbmUgYm9vbCBKU0dsb2JhbE9i
amVjdDo6c3ltYm9sVGFibGVIYXNQcm9wZXJ0eShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQog
ewotICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZSgpLT5pbmxpbmVHZXQo
cHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9
IHN5bWJvbFRhYmxlKCktPmlubGluZUdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwogICAgIHJldHVy
biAhZW50cnkuaXNOdWxsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmNwcAppbmRleCBmZjJjNWNmZjExZjRjYzcxYWY2YzRlNDRmMTVkM2FkYzc5YjZlNWZm
Li45N2NkM2RlZDY0Nzg2NDU0NTQ2Nzc0MjI3ODkwMWY0YTRiNjc4MzIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRp
YyBpbmxpbmUgdm9pZCBnZXRDbGFzc1Byb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBDbGFzc0luZm8qIGNsYXNzCiAgICAgICAgIGludCBoYXNoU2l6ZU1hc2sgPSB0YWJsZS0+Y29t
cGFjdFNpemUgLSAxOwogICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gdGFibGUtPnRh
YmxlOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8PSBoYXNoU2l6ZU1hc2s7ICsraSwgKytl
bnRyeSkgewotICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkoKSAmJiAoIShlbnRyeS0+YXR0cmli
dXRlcygpICYgRG9udEVudW0pIHx8IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMp
KSAmJiAhKChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pICYmIGRpZFJlaWZ5KSkKKyAg
ICAgICAgICAgIGlmIChlbnRyeS0+a2V5KCkgJiYgKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIERv
bnRFbnVtKSB8fCAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgJiYgISgoZW50
cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0aW5PckZ1bmN0aW9uKSAmJiBkaWRSZWlmeSkpCiAgICAg
ICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZW50cnktPmtleSgpKTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTE2MTgsNyArMTYxOCw3IEBAIHZvaWQgSlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVu
Y3Rpb25zRm9yRGVsZXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzKTsKICAgICAgICAgZm9yIChIYXNoVGFibGU6
OkNvbnN0SXRlcmF0b3IgaXRlciA9IGhhc2hUYWJsZS0+YmVnaW4odm0pOyBpdGVyICE9IGhhc2hU
YWJsZS0+ZW5kKHZtKTsgKytpdGVyKSB7Ci0gICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRl
cygpICYgRnVuY3Rpb24pCisgICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygpICYgQnVp
bHRpbk9yRnVuY3Rpb24pCiAgICAgICAgICAgICAgICAgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3Qo
Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgKml0ZXIsIHRoaXMsIElkZW50aWZpZXIoJnZt
LCBpdGVyLT5rZXkoKSksIHNsb3QpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjIzNiw2ICsyMjM2
LDE2IEBAIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uCiAgICAgcHV0RGlyZWN0KHZtLCBwcm9wZXJ0
eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsKIH0KIAordm9pZCBKU09iamVjdDo6cHV0RGly
ZWN0QnVpbHRpbkZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVu
Y3Rpb25FeGVjdXRhYmxlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQoreworICAgIFN0cmluZ0ltcGwq
IG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOworICAgIGlmICghbmFtZSkKKyAgICAg
ICAgbmFtZSA9IHZtLnByb3BlcnR5TmFtZXMtPmFub255bW91cy5pbXBsKCk7CisgICAgQVNTRVJU
KG5hbWUpOworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlQnVp
bHRpbkZ1bmN0aW9uKHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihmdW5jdGlv
bkV4ZWN1dGFibGUpLCBnbG9iYWxPYmplY3QpOworICAgIHB1dERpcmVjdCh2bSwgcHJvcGVydHlO
YW1lLCBmdW5jdGlvbiwgYXR0cmlidXRlcyk7Cit9CisKIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgdW5zaWduZWQg
ZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMg
aW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIFN0cmluZ0ltcGwqIG5hbWUg
PSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgKaW5kZXggMzExMTcxYzExMzAyZDZmYjQ2M2FjY2VjMDBkNGY1YTRlZjgzNmUw
Zi4uYzg3MmY2MmE0OWVlZjgyODE0MTk3MjUxNzViZTA5ZTk3ZDM3YTU1NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC01ODEsNiArNTgxLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcHV0RGlyZWN0VW5kZWZpbmVkKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgeyBs
b2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5zZXRVbmRlZmluZWQoKTsgfQogCiAgICAgdm9pZCBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVy
dHlOYW1lJiwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5z
aWMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgIHZvaWQgcHV0RGlyZWN0QnVpbHRpbkZ1bmN0
aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCBGdW5jdGlvbkV4
ZWN1dGFibGUqLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICB2b2lkIHB1dERpcmVjdE5hdGl2
ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFBy
b3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50
cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVj
dC5jcHAKaW5kZXggYjcyN2U1NDViZTUwMjliMzc1NDZlOTZiMDJlMDZmODJhMjI0YmQ5ZC4uN2Vm
Yzc2YTkwMGRkY2ZlODBlYjgyZDE5YzlhY2E1OGI4Y2Q4MjcxMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKQEAgLTY0
LDYgKzY0LDggQEAgdm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXQKICAgICAgICAgQ29uY3VycmVudEpJ
VExvY2tlciBsb2NrZXIodGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+bV9sb2NrKTsKICAgICAg
ICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgZW5kID0gdGhpc09iamVjdC0+c3ltYm9sVGFi
bGUoKS0+ZW5kKGxvY2tlcik7CiAgICAgICAgIGZvciAoU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0
b3IgaXQgPSB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5iZWdpbihsb2NrZXIpOyBpdCAhPSBl
bmQ7ICsraXQpIHsKKyAgICAgICAgICAgIGlmIChpdC0+a2V5LT5pc0VtcHR5VW5pcXVlKCkpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoIShpdC0+dmFsdWUuZ2V0
QXR0cmlidXRlcygpICYgRG9udEVudW0pIHx8IChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3Bl
cnRpZXMpKQogICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhl
YywgaXQtPmtleS5nZXQoKSkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgKaW5kZXggYjViMjBhODQ1YjZhYjY0
NDI0YjM3ZTMxYjI3NzRlZjkwNTM1M2Y3Zi4uZDAzYjI0NTExYzJkZTE5NTlmYjVmNTZkNjQ5YzY0
ZDBlZmUwNjg1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
eW1ib2xUYWJsZU9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3ltYm9sVGFibGVPYmplY3QuaApAQCAtNzIsNyArNzIsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xU
YWJsZUdldCgKIHsKICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1i
b2xUYWJsZSgpOwogICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1f
bG9jayk7Ci0gICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxl
LmZpbmQobG9ja2VyLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJs
ZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5
TmFtZS51aWQoKSk7CiAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0g
aXRlci0+dmFsdWU7CkBAIC04Nyw3ICs4Nyw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlR2V0
KAogewogICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9ICpvYmplY3QtPnN5bWJvbFRhYmxl
KCk7CiAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUubV9sb2NrKTsK
LSAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChs
b2NrZXIsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOworICAgIFN5bWJvbFRhYmxlOjpNYXA6
Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVp
ZCgpKTsKICAgICBpZiAoaXRlciA9PSBzeW1ib2xUYWJsZS5lbmQobG9ja2VyKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIFN5bWJvbFRhYmxlRW50cnk6OkZhc3QgZW50cnkgPSBpdGVyLT52
YWx1ZTsKQEAgLTEwNCw3ICsxMDQsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZUdldCgKIHsK
ICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwog
ICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jayk7Ci0gICAg
U3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLmZpbmQobG9ja2Vy
LCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKKyAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVy
YXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7
CiAgICAgaWYgKGl0ZXIgPT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBTeW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gaXRlci0+dmFsdWU7
CkBAIC0xMjYsNyArMTI2LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoCiAgICAgewog
ICAgICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgp
OwogICAgICAgICBHQ1NhZmVDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5t
X2xvY2ssIGV4ZWMtPnZtKCkuaGVhcCk7Ci0gICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJh
dG9yIGl0ZXIgPSBzeW1ib2xUYWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnB1YmxpY05h
bWUoKSk7CisgICAgICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzeW1ib2xU
YWJsZS5maW5kKGxvY2tlciwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICAgICAgaWYgKGl0ZXIg
PT0gc3ltYm9sVGFibGUuZW5kKGxvY2tlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIGJvb2wgd2FzRmF0OwpAQCAtMTU5LDcgKzE1OSw3IEBAIGlubGluZSBib29sIHN5bWJv
bFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoCiAgICAgewogICAgICAgICBTeW1ib2xUYWJsZSYgc3lt
Ym9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBDb25jdXJyZW50SklU
TG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS5tX2xvY2spOwotICAgICAgICBTeW1ib2xUYWJsZTo6
TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFt
ZS5wdWJsaWNOYW1lKCkpOworICAgICAgICBTeW1ib2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVy
ID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHByb3BlcnR5TmFtZS51aWQoKSk7CiAgICAgICAg
IGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZChsb2NrZXIpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5JiBlbnRyeSA9IGl0ZXItPnZhbHVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKaW5kZXggZjZkZGNiNTc5ZDgy
NTU5NmQ2OWUwYTcxZmE5NjU3YTYwMTZlZTZiZi4uMTk3ZDg0Nzk0MDJiZTI3YjViYWE2MTllODAx
NzZjZmVmMWYxZjQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TG9va3VwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3Bw
CkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgSGFzaFRhYmxlOjpkZWxldGVUYWJsZSgpIGNvbnN0CiBi
b29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVu
dHJ5KiBlbnRyeSwgSlNPYmplY3QqIHRoaXNPYmosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBBU1NFUlQodGhpc09iai0+Z2xvYmFsT2JqZWN0
KCkpOwotICAgIEFTU0VSVChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pOworICAgIEFT
U0VSVChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pOwogICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQgPSB0aGlzT2JqLT5nZXREaXJlY3RPZmZzZXQodm0sIHByb3BlcnR5TmFtZSwg
YXR0cmlidXRlcyk7CkBAIC03OSw5ICs3OSwxMyBAQCBib29sIHNldFVwU3RhdGljRnVuY3Rpb25T
bG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqCiAg
ICAgICAgIGlmICh0aGlzT2JqLT5zdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgICAgIHRoaXNPYmotPnB1dERpcmVjdE5hdGl2ZUZ1
bmN0aW9uKAotICAgICAgICAgICAgdm0sIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0
eU5hbWUsIGVudHJ5LT5mdW5jdGlvbkxlbmd0aCgpLAotICAgICAgICAgICAgZW50cnktPmZ1bmN0
aW9uKCksIGVudHJ5LT5pbnRyaW5zaWMoKSwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAgICAg
IGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbikKKyAgICAgICAgICAgIHRoaXNPYmot
PnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbih2bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHBy
b3BlcnR5TmFtZSwgZW50cnktPmJ1aWx0aW5HZW5lcmF0b3IoKSh2bSksIGVudHJ5LT5hdHRyaWJ1
dGVzKCkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdE5h
dGl2ZUZ1bmN0aW9uKAorICAgICAgICAgICAgICAgIHZtLCB0aGlzT2JqLT5nbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSwKKyAgICAgICAgICAgICAg
ICBlbnRyeS0+ZnVuY3Rpb24oKSwgZW50cnktPmludHJpbnNpYygpLCBlbnRyeS0+YXR0cmlidXRl
cygpKTsKKyAgICAgICAgfQogICAgICAgICBvZmZzZXQgPSB0aGlzT2JqLT5nZXREaXJlY3RPZmZz
ZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CiAgICAgICAgIEFTU0VSVChpc1ZhbGlk
T2Zmc2V0KG9mZnNldCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0xvb2t1cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3Vw
LmgKaW5kZXggYmRlODNkNGE2ZmMzNTU3Nzg1MGUzMWU4OGJjMzlmZDA1ZjdiY2U1Mi4uZGJhMzg5
ZTllMjQzZGQwZWNiMmJhOThmMzk0ZDQwNzlmOWRlYTkzNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTG9va3VwLmgKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
Ly8gaWUuIHR5cGVkZWYgSlNWYWx1ZSAoKkdldEZ1bmN0aW9uKShFeGVjU3RhdGUqLCBKU09iamVj
dCogYmFzZU9iamVjdCkKICAgICB0eXBlZGVmIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIEdl
dEZ1bmN0aW9uOwogICAgIHR5cGVkZWYgUHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmMgUHV0
RnVuY3Rpb247CisgICAgdHlwZWRlZiBGdW5jdGlvbkV4ZWN1dGFibGUqICgqQnVpbHRpbkdlbmVy
YXRvcikoVk0mKTsKIAogICAgIGNsYXNzIEhhc2hFbnRyeSB7CiAgICAgICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwpAQCAtNjgsMTEgKzY5LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgcmV0dXJuIG1faW50cmluc2ljOwogICAgICAgICB9CiAKKyAgICAgICAgQnVpbHRpbkdl
bmVyYXRvciBidWlsdGluR2VuZXJhdG9yKCkgY29uc3QgeyBBU1NFUlQobV9hdHRyaWJ1dGVzICYg
QnVpbHRpbik7IHJldHVybiBtX3UuYnVpbHRpbkdlbmVyYXRvci5nZW5lcmF0b3JWYWx1ZTsgfQog
ICAgICAgICBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmli
dXRlcyAmIEZ1bmN0aW9uKTsgcmV0dXJuIG1fdS5mdW5jdGlvbi5mdW5jdGlvblZhbHVlOyB9CiAg
ICAgICAgIHVuc2lnbmVkIGNoYXIgZnVuY3Rpb25MZW5ndGgoKSBjb25zdCB7IEFTU0VSVChtX2F0
dHJpYnV0ZXMgJiBGdW5jdGlvbik7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPiht
X3UuZnVuY3Rpb24ubGVuZ3RoKTsgfQogCi0gICAgICAgIEdldEZ1bmN0aW9uIHByb3BlcnR5R2V0
dGVyKCkgY29uc3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBGdW5jdGlvbikpOyByZXR1cm4g
bV91LnByb3BlcnR5LmdldDsgfQotICAgICAgICBQdXRGdW5jdGlvbiBwcm9wZXJ0eVB1dHRlcigp
IGNvbnN0IHsgQVNTRVJUKCEobV9hdHRyaWJ1dGVzICYgRnVuY3Rpb24pKTsgcmV0dXJuIG1fdS5w
cm9wZXJ0eS5wdXQ7IH0KKyAgICAgICAgR2V0RnVuY3Rpb24gcHJvcGVydHlHZXR0ZXIoKSBjb25z
dCB7IEFTU0VSVCghKG1fYXR0cmlidXRlcyAmIEJ1aWx0aW5PckZ1bmN0aW9uKSk7IHJldHVybiBt
X3UucHJvcGVydHkuZ2V0OyB9CisgICAgICAgIFB1dEZ1bmN0aW9uIHByb3BlcnR5UHV0dGVyKCkg
Y29uc3QgeyBBU1NFUlQoIShtX2F0dHJpYnV0ZXMgJiBCdWlsdGluT3JGdW5jdGlvbikpOyByZXR1
cm4gbV91LnByb3BlcnR5LnB1dDsgfQogCiAgICAgICAgIGludHB0cl90IGxleGVyVmFsdWUoKSBj
b25zdCB7IEFTU0VSVCghbV9hdHRyaWJ1dGVzKTsgcmV0dXJuIG1fdS5sZXhlci52YWx1ZTsgfQog
CkBAIC05NCw2ICs5NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBpbnRw
dHJfdCBsZW5ndGg7IC8vIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGZ1bmN0aW9uCiAgICAgICAg
ICAgICB9IGZ1bmN0aW9uOwogICAgICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICBC
dWlsdGluR2VuZXJhdG9yIGdlbmVyYXRvclZhbHVlOworICAgICAgICAgICAgICAgIGludHB0cl90
IHVudXNlZDsKKyAgICAgICAgICAgIH0gYnVpbHRpbkdlbmVyYXRvcjsKKyAgICAgICAgICAgIHN0
cnVjdCB7CiAgICAgICAgICAgICAgICAgR2V0RnVuY3Rpb24gZ2V0OwogICAgICAgICAgICAgICAg
IFB1dEZ1bmN0aW9uIHB1dDsKICAgICAgICAgICAgIH0gcHJvcGVydHk7CkBAIC0yMDksNyArMjE1
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgQUxXQVlTX0lOTElO
RSBjb25zdCBIYXNoRW50cnkqIGVudHJ5KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0
CiAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cmluZ0ltcGwqIGltcGwgPSBwcm9wZXJ0eU5hbWUu
cHVibGljTmFtZSgpOworICAgICAgICAgICAgU3RyaW5nSW1wbCogaW1wbCA9IHByb3BlcnR5TmFt
ZS51aWQoKTsKICAgICAgICAgICAgIGlmICghaW1wbCkKICAgICAgICAgICAgICAgICByZXR1cm4g
MDsKICAgICAgICAgCkBAIC0yNDksNyArMjU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IGlmICghZW50cnkpIC8vIG5vdCBmb3VuZCwgZm9yd2FyZCB0byBwYXJlbnQKICAgICAgICAgICAg
IHJldHVybiBQYXJlbnRJbXA6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqLCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogCi0gICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgRnVu
Y3Rpb24pCisgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rp
b24pCiAgICAgICAgICAgICByZXR1cm4gc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoZXhlYywgZW50
cnksIHRoaXNPYmosIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICAgICAgc2xvdC5zZXRDYWNo
ZWFibGVDdXN0b20odGhpc09iaiwgZW50cnktPmF0dHJpYnV0ZXMoKSwgZW50cnktPnByb3BlcnR5
R2V0dGVyKCkpOwpAQCAtMjg2LDcgKzI5Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBp
ZiAoIWVudHJ5KSAvLyBub3QgZm91bmQsIGZvcndhcmQgdG8gcGFyZW50CiAgICAgICAgICAgICBy
ZXR1cm4gUGFyZW50SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iaiwgZXhlYywgcHJvcGVy
dHlOYW1lLCBzbG90KTsKIAotICAgICAgICBBU1NFUlQoIShlbnRyeS0+YXR0cmlidXRlcygpICYg
RnVuY3Rpb24pKTsKKyAgICAgICAgQVNTRVJUKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEJ1aWx0
aW5PckZ1bmN0aW9uKSk7CiAKICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09i
aiwgZW50cnktPmF0dHJpYnV0ZXMoKSwgZW50cnktPnByb3BlcnR5R2V0dGVyKCkpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTI5NSw3ICszMDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBp
bmxpbmUgdm9pZCBwdXRFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50
cnksIEpTT2JqZWN0KiBiYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiAgICAgewogICAgICAgICAvLyBJZiB0aGlzIGlz
IGEgZnVuY3Rpb24gcHV0IGl0IGFzIGFuIG92ZXJyaWRlIHByb3BlcnR5LgotICAgICAgICBpZiAo
ZW50cnktPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKSB7CisgICAgICAgIGlmIChlbnRyeS0+YXR0
cmlidXRlcygpICYgQnVpbHRpbk9yRnVuY3Rpb24pIHsKICAgICAgICAgICAgIGlmIChKU09iamVj
dCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPihzbG90LnRoaXNWYWx1ZSgp
KSkKICAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgcHJv
cGVydHlOYW1lLCB2YWx1ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIShlbnRyeS0+YXR0cmlidXRl
cygpICYgUmVhZE9ubHkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IDhkYzRhMDJiZDJmNjk5NTc1
ZmFkMTllOTYxZTFhMWUwNDNmNDg1ZDAuLjYyNjAwNTU1YjRjNjJjZDBjNWYzZjQzZjhiMTUyZjM5
NDc1Y2RlZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUVycm9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCkBAIC0zOCw2ICszOCwyMCBAQCBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCiB7CiB9CiAKK3ZvaWQgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHBy
b3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtLCBuYW1lKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAg
CisgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90
eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1lLCB0
aGlzKTsKKyAgICAKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwg
anNOdW1iZXIoMSksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsgLy8gRUNNQSAx
NS4xMS43LjUKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
cHJvdG90eXBlLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgbV9lcnJv
clN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEVycm9ySW5zdGFuY2U6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUpKTsKKyAgICBBU1NFUlQobV9lcnJvclN0cnVjdHVy
ZSk7CisgICAgQVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOworfQorCiB2b2lk
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqPihjZWxsKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaApp
bmRleCA3NDBkM2Y5MzMyOTJmZDJhY2NiNGI5OTAzNDQzMTJiOTMxOWFlMTEwLi40MzhhM2FmYjli
YjBmNjQxMmM5NzkzMjIzMGM4ODcxMDk2MWY1NDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCkBAIC01MSwxOSAr
NTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVy
ZSgpIHsgcmV0dXJuIG1fZXJyb3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KIAogICAgIHByb3RlY3RlZDoK
LSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBTdHJpbmcmIG5h
bWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBuYW1l
KTsKLSAgICAgICAgICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKLQotICAgICAgICAgICAg
TmF0aXZlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IE5hdGl2ZUVycm9yUHJvdG90eXBlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1lLCB0aGlzKTsK
LQotICAgICAgICAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpz
TnVtYmVyKDEpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7IC8vIEVDTUEgMTUu
MTEuNy41Ci0gICAgICAgICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgcHJvdG90eXBlLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Ci0gICAg
ICAgICAgICBtX2Vycm9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgRXJyb3JJbnN0YW5jZTo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSkpOwotICAgICAgICAgICAg
QVNTRVJUKG1fZXJyb3JTdHJ1Y3R1cmUpOwotICAgICAgICAgICAgQVNTRVJUKG1fZXJyb3JTdHJ1
Y3R1cmUtPmlzT2JqZWN0KCkpOwotICAgICAgICB9CisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBj
b25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgTmF0aXZlRXJyb3JD
b25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eVNsb3QuaAppbmRleCAzMzhlZDQyZWI5NmJhNzc4ZTZkMjI3NGZiNDRiNzZj
YjVmYjFhOTJhLi4xYjE0YTRhZWI0YTBhZjFiYTRmMzcyZTZkMWQyNWU1YWI4OGM1YzIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaApAQCAtNDMsNiAr
NDMsOCBAQCBlbnVtIEF0dHJpYnV0ZSB7CiAgICAgRnVuY3Rpb24gICAgID0gMSA8PCA0LCAgLy8g
cHJvcGVydHkgaXMgYSBmdW5jdGlvbiAtIG9ubHkgdXNlZCBieSBzdGF0aWMgaGFzaHRhYmxlcwog
ICAgIEFjY2Vzc29yICAgICA9IDEgPDwgNSwgIC8vIHByb3BlcnR5IGlzIGEgZ2V0dGVyL3NldHRl
cgogICAgIEN1c3RvbUFjY2Vzc29yID0gMSA8PCA2LAorICAgIEJ1aWx0aW4gICAgICAgICA9IDEg
PDwgNywgLy8gcHJvcGVydHkgaXMgYSBidWlsdGluIGZ1bmN0aW9uIC0gb25seSB1c2VkIGJ5IHN0
YXRpYyBoYXNodGFibGVzCisgICAgQnVpbHRpbk9yRnVuY3Rpb24gPSBCdWlsdGluIHwgRnVuY3Rp
b24sIC8vIGhlbHBlciBvbmx5IHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMKIH07CiAKIGNsYXNz
IFByb3BlcnR5U2xvdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNzRi
YmQyMGM0NGMwOGNlYzk5YzA2Zjc4OTg3YzE2ZmM2OTJlODIyYi4uOGMxMjA1YzBmZmVlNjZiNzhh
ZDU5OTIzY2RjOGE0NDc1YjVjNzcwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKICNpbmNsdWRlICJBcml0
eUNoZWNrRmFpbFJldHVyblRodW5rcy5oIgogI2luY2x1ZGUgIkFycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludC5oIgorI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgogI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVDYWNoZS5oIgogI2luY2x1ZGUgIkNvbW1vbklk
ZW50aWZpZXJzLmgiCkBAIC02OCwxMyArNjksMTYgQEAKICNpbmNsdWRlICJMb29rdXAuaCIKICNp
bmNsdWRlICJNYXBEYXRhLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKKyNpbmNsdWRlICJQYXJzZXIu
aCIKICNpbmNsdWRlICJQYXJzZXJBcmVuYS5oIgorI2luY2x1ZGUgIlByb3BlcnR5TWFwSGFzaFRh
YmxlLmgiCiAjaW5jbHVkZSAiUmVnRXhwQ2FjaGUuaCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3Qu
aCIKICNpbmNsdWRlICJTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNv
dXJjZVByb3ZpZGVyQ2FjaGUuaCIKICNpbmNsdWRlICJTdHJpY3RFdmFsQWN0aXZhdGlvbi5oIgog
I2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKICNpbmNsdWRlICJXZWFrTWFwRGF0YS5o
IgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KQEAgLTIyNiw2ICsyMzAsNyBAQCBWTTo6Vk0o
Vk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2luRGVmaW5lT3duUHJv
cGVydHkoZmFsc2UpCiAgICAgLCBtX2NvZGVDYWNoZShDb2RlQ2FjaGU6OmNyZWF0ZSgpKQogICAg
ICwgbV9lbmFibGVkUHJvZmlsZXIobnVsbHB0cikKKyAgICAsIG1fYnVpbHRpbkV4ZWN1dGFibGVz
KEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlKCp0aGlzKSkKIHsKICAgICBpbnRlcnByZXRlciA9
IG5ldyBJbnRlcnByZXRlcigqdGhpcyk7CiAgICAgU3RhY2tCb3VuZHMgc3RhY2sgPSB3dGZUaHJl
YWREYXRhKCkuc3RhY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDVhODQx
MDVlYWZiN2FiYmE1ZmE0MzFlZWVkZDU1ZDdhODlmNTVjZTIuLjY5NThhYzM5M2IxYWVmYzBiZWZi
ZjZlNGViOGI2ODI1Y2Y3YzlhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAt
NDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlByaXZhdGVOYW1lLmgiCiAjaW5jbHVkZSAiUHJvdG90
eXBlTWFwLmgiCiAjaW5jbHVkZSAiU21hbGxTdHJpbmdzLmgiCisjaW5jbHVkZSAiU291cmNlQ29k
ZS5oIgogI2luY2x1ZGUgIlN0cm9uZy5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgog
I2luY2x1ZGUgIlR5cGVkQXJyYXlDb250cm9sbGVyLmgiCkBAIC02OSw2ICs3MCw3IEBACiBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzOworICAg
IGNsYXNzIEJ1aWx0aW5FeGVjdXRhYmxlczsKICAgICBjbGFzcyBDb2RlQmxvY2s7CiAgICAgY2xh
c3MgQ29kZUNhY2hlOwogICAgIGNsYXNzIENvbW1vbklkZW50aWZpZXJzOwpAQCAtNDk3LDYgKzQ5
OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHJlZ2lzdGVyV2F0Y2hwb2ludEZv
ckltcHVyZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImLCBXYXRjaHBvaW50Kik7CiAgICAgICAg
IC8vIEZJWE1FOiBVc2UgQXRvbWljU3RyaW5nIG9uY2UgaXQgZ290IG1lcmdlZCB3aXRoIElkZW50
aWZpZXIuCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkSW1wdXJlUHJvcGVydHko
Y29uc3QgU3RyaW5nJik7CisgICAgICAgIAorICAgICAgICBCdWlsdGluRXhlY3V0YWJsZXMqIGJ1
aWx0aW5FeGVjdXRhYmxlcygpIHsgcmV0dXJuIG1fYnVpbHRpbkV4ZWN1dGFibGVzLmdldCgpOyB9
CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwpAQCAtNTM3LDEwICs1NDEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNWYWx1
ZSBtX2V4Y2VwdGlvbjsKICAgICAgICAgYm9vbCBtX2luRGVmaW5lT3duUHJvcGVydHk7CiAgICAg
ICAgIE93blB0cjxDb2RlQ2FjaGU+IG1fY29kZUNhY2hlOwotICAgICAgICBSZWZDb3VudGVkQXJy
YXk8U3RhY2tGcmFtZT4gbV9leGNlcHRpb25TdGFjazsKLQogICAgICAgICBMZWdhY3lQcm9maWxl
ciogbV9lbmFibGVkUHJvZmlsZXI7Ci0KKyAgICAgICAgT3duUHRyPEJ1aWx0aW5FeGVjdXRhYmxl
cz4gbV9idWlsdGluRXhlY3V0YWJsZXM7CisgICAgICAgIFJlZkNvdW50ZWRBcnJheTxTdGFja0Zy
YW1lPiBtX2V4Y2VwdGlvblN0YWNrOwogICAgICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdh
dGNocG9pbnRTZXQ+PiBtX2ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludFNldHM7CiAgICAgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL2d0ZXN0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL2Nt
YWtlL2d0ZXN0L0NNYWtlTGlzdHMudHh0CmluZGV4IDU2YmY0NDc4MjUxODY4NzZmMjU3MTE4NjA5
ZjQzNTIxODM0ZWM5NTkuLjdmNTIxYTg5OGI4OWQ4ZGViMzA5YzZlMGZiYTA4YTMzZjY1ZWI1ZDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9ndGVzdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvY21ha2UvZ3Rlc3QvQ01ha2VMaXN0cy50eHQKQEAgLTYsNiArNiw3IEBACiBpbmNsdWRlX2Rp
cmVjdG9yaWVzKCR7VEhJUkRQQVJUWV9ESVJ9L2d0ZXN0CiAgICAgJHtUSElSRFBBUlRZX0RJUn0v
Z3Rlc3QvaW5jbHVkZQogICAgICR7SkFWQVNDUklQVENPUkVfRElSfQorICAgICR7REVSSVZFRF9T
T1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0KICAgICAke1dURl9ESVJ9CiApCiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwYmM2OWI1ZGNiMjg1
OWI2YWNkYjAxZTIwYjFlMzdjYzZkODk5OGIyLi4wYjgxYmM2M2ZlMjlmOTIzNWUzN2NjZWZiZTNh
MTk2NmU4ZmZmNjQxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTQtMDItMTEgIE9saXZlciBIdW50ICA8b2xpdmVy
QGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBi
dWlsdGlucyBpbiBKUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI3ODg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQ01ha2UgdXBkYXRlcworCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBXaW5DRUxhdW5jaGVyL0NNYWtlTGlzdHMudHh0OgorCiAyMDE0LTAyLTExICBCcmlhbiBC
dXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBSZXBsYXk6IHVwc3RyZWFtIHJl
cGxheSBpbnB1dCBjb2RlIGdlbmVyYXRvciBhbmQgRW5jb2RlZFZhbHVlIGNsYXNzCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL0NNYWtlTGlzdHMudHh0CmluZGV4IDdiOGFhMTg0OTZhYjE5N2M2ZDhkZTkzYTFiN2I5
ZTQ0MzgwOWJiZjEuLjU0OWNkNDA1MTQyMjhmOTI3M2YwOGRhMGNlY2QwODg2ZTc2NmViZTYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0NNYWtlTGlzdHMudHh0CkBAIC01OCw2ICs1OCw3IEBAIHNldChEdW1w
UmVuZGVyVHJlZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L3Byb2ZpbGVyCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3J1bnRpbWUKICAgICAke0pBVkFT
Q1JJUFRDT1JFX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMKKyAgICAke0RFUklWRURfU09VUkNFU19K
QVZBU0NSSVBUQ09SRV9ESVJ9CiAgICAgJHtUT09MU19ESVJ9L0R1bXBSZW5kZXJUcmVlCiAgICAg
JHtXVEZfRElSfQogICAgICR7Q01BS0VfU09VUkNFX0RJUn0vU291cmNlCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9DTWFrZUxpc3RzLnR4dAppbmRleCA1YTM0NmQ3NDA1M2QxNTk1MjMzMTBhZDk2ZjI3MDZh
ZWI0NzUwMzllLi5jYjRiMTkxODEzNzA4Y2E0YTJhNzhkNzMyNzgxNjY3ODA1MTRjMjkzIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQKQEAgLTI4LDYgKzI4LDcgQEAgc2V0KFdl
YktpdFRlc3RSdW5uZXJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICR7V0VCS0lUX1RFU1RSVU5O
RVJfRElSfS9JbmplY3RlZEJ1bmRsZS9hdGsKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0KICAg
ICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMKKyAgICAke0RFUklWRURf
U09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9CiAgICAgJHtXRUJDT1JFX0RJUn0vZWRpdGluZwog
ICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtCiAgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0v
Z3JhcGhpY3MKZGlmZiAtLWdpdCBhL1Rvb2xzL1dpbkNFTGF1bmNoZXIvQ01ha2VMaXN0cy50eHQg
Yi9Ub29scy9XaW5DRUxhdW5jaGVyL0NNYWtlTGlzdHMudHh0CmluZGV4IDkxNGJiMmJkYzk2YjBi
NThlNThmMmYzZTViMzM2M2Y4ZDM0ZjMzNWQuLmIxOWZjNjFkNDA0NTc0MzU4OTEzNmE4ZjBlMWVi
YzViMGFhMjkxZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dpbkNFTGF1bmNoZXIvQ01ha2VMaXN0cy50
eHQKKysrIGIvVG9vbHMvV2luQ0VMYXVuY2hlci9DTWFrZUxpc3RzLnR4dApAQCAtNiw2ICs2LDcg
QEAgc2V0KFdpbkNFTGF1bmNoZXJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVf
RElSfS9wbGF0Zm9ybS9uZXR3b3JrIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS90ZXh0
IgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0iCisgICAgIiR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0iCiAgICAgIiR7V1RGX0RJUn0iCiAgICAgIiR7REVSSVZFRF9TT1VS
Q0VTX0RJUn0iCiAgICAgIiR7Q01BS0VfQklOQVJZX0RJUn0iCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYmExYzcyNTQ1NTVi
ZjMzY2E2ZDFjMWQ2OThiOWUwYTQ1NjI4MzYwOC4uMWViYzgyYWQzZjlmYjRlYWQ4M2VmNjFjZjg4
NzQ5NWFjYTBmMzQzNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE0LTAyLTExICBPbGl2ZXIg
SHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBp
bXBsZW1lbnQgSlMgYnVpbHRpbnMgaW4gSlMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNzg4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgdGhlIHRlc3QgcmVzdWx0cyBmb3IgbmV3IGVycm9y
IG1lc3NhZ2VzIChub3cgdGhhdCB0aGV5J3JlCisgICAgICAgIGFjdHVhbGx5IGhlbHBmdWwpLCBh
bmQgYWRkZWQgYSBqcy1yZWdyZXNzIHRlc3QgdG8gdHJhY2sgcGVyZm9ybWFuY2UuCisKKyAgICAg
ICAgKiBqcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvZG9tL2FycmF5
LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9yZWdyZXNz
L2FycmF5LXByb3RvdHlwZS1ldmVyeS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpz
L3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpz
L3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5LXByb3RvdHlwZS1ldmVyeS5qczogQWRkZWQuCisg
ICAgICAgICh0ZXN0MSk6CisgICAgICAgICh0ZXN0Mik6CisgICAgICAgICh0ZXN0Myk6CisKIDIw
MTQtMDItMTAgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAg
ICAgICBDb252ZXJ0IHBvc2l0aW9uOnN0aWNreSBhbmQgcG9zaXRpb246Zml4ZWQgcHJvcGVydGll
cyB0byBwb3NpdGlvbjpzdGF0aWMgYW5kIHBvc2l0aW9uOmFic29sdXRlIHVwb24gY29weQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvanMvYXJyYXktZXZlcnktZXhwZWN0ZWQudHh0CmluZGV4IDU0MWI4YzM1OGYwNjhhMGNl
YTg4MmMxMDUxNzUzMjUxMTRjZDMzZjcuLmNjYTM2M2RjZTU4ZmJhOTVhNThjZTQ2ZmNiNDhjMzhi
ZjU4YWRmNTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2FycmF5LWV2ZXJ5LWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJheS1ldmVyeS1leHBlY3RlZC50eHQKQEAgLTMw
LDEyICszMCwxMiBAQCBQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkoaXNCaWdFbm91Z2hB
bmRFeGNlcHRpb24pIHRocmV3IGV4Y2VwdGlvbiBleGNlcHRpbwogUEFTUyBbMTIsIDU0LCAxOCwg
MTMwLCA0NF0uZXZlcnkoaXNCaWdFbm91Z2hBbmRFeGNlcHRpb24pIHRocmV3IGV4Y2VwdGlvbiBl
eGNlcHRpb24gZnJvbSBmdW5jdGlvbi4KIAogNS4wIFdyb25nIFR5cGUgZm9yIENhbGxiYWNrIFRl
c3QKLVBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSg1KSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCd3cm9u
ZycpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwg
OCwgMTMwLCA0NF0uZXZlcnkobmV3IE9iamVjdCgpKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBUeXBlIGVycm9yLgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KG51bGwpIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFsxMiwgNSwgOCwgMTMwLCA0
NF0uZXZlcnkodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9y
LgotUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogVHlwZSBlcnJvci4KK1BBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeSg1KSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVz
dCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRdLmV2ZXJ5KCd3cm9uZycp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFj
ayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0NF0uZXZlcnkobmV3
IE9iamVjdCgpKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuZXZl
cnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgsIDEzMCwgNDRd
LmV2ZXJ5KG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFycmF5LnByb3RvdHlwZS5l
dmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIFsxMiwgNSwgOCwgMTMwLCA0
NF0uZXZlcnkodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90
b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBbMTIsIDUsIDgs
IDEzMCwgNDRdLmV2ZXJ5KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90
eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4KIAogNi4wIEVhcmx5IEV4aXQg
KCJTaG9ydCBDaXJjdWl0aW5nIikKIFBBU1MgWzEyLCA1LCA4LCAxMzAsIDQ0XS5ldmVyeShpc0Jp
Z0Vub3VnaFNob3J0Q2lyY3VpdCkgaXMgZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9qcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CmluZGV4IDJj
MmE2OGNiMTA2ZGExMGYwODZiMjJjNWJmMmJmNWM4ZmU3OWUzM2UuLjVkOWVjYjc1YThkYTc5YmE2
NTYwNWU3ZWI5Y2Y4ZmMyNWZlMThhZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2RvbS9h
cnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
anMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApAQCAtMTUsNyAr
MTUsNyBAQCBQQVNTIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHVuZGVmaW5lZCwgMCwgMSkg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZQogUEFTUyBBcnJheS5wcm90b3R5cGUuc29y
dC5jYWxsKHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlz
IG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5zb3J0LmNhbGwodW5k
ZWZpbmVkKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwodW5kZWZpbmVkLCAw
LCAxKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVj
dCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKHVuZGVmaW5lZCwgMCwg
MSknKS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuY2FsbCh1bmRlZmluZWQsIHt9KSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZh
bHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuY2FsbCh1bmRlZmluZWQsIHt9KScpLgot
UEFTUyBBcnJheS5wcm90b3R5cGUuZXZlcnkuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVh
dGluZyAnQXJyYXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZyknKS4K
K1BBU1MgQXJyYXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZykgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRo
YXQgfHRoaXN8IG5vdCBiZSB1bmRlZmluZWQuCiBQQVNTIEFycmF5LnByb3RvdHlwZS5mb3JFYWNo
LmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5k
ZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5mb3JF
YWNoLmNhbGwodW5kZWZpbmVkLCB0b1N0cmluZyknKS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLnNv
bWUuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1
bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnNv
bWUuY2FsbCh1bmRlZmluZWQsIHRvU3RyaW5nKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUuaW5k
ZXhPZi5jYWxsKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZp
bmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5pbmRleE9m
LmNhbGwodW5kZWZpbmVkLCAwKScpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9hcnJheS1wcm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyOTBj
MGVlZmY4ZGU0MjE4MzNkOTJkMjdlOTUyNDE5MTc2MDRiOTYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL2FycmF5LXByb3RvdHlwZS1ldmVyeQorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJheS1wcm90b3R5cGUtZXZlcnkuaHRtbCBiL0xh
eW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU1Y2MxNzFjNDg3NWEzNTg1YmYxNGU1NDE1ZjVjZDBlNTgxZDU0NAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyYXktcHJvdG90eXBlLWV2ZXJ5Lmh0bWwK
QEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVz
dHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5LXByb3RvdHlw
ZS1ldmVyeS5qcyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2FycmF5LXBy
b3RvdHlwZS1ldmVyeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTRhYTE2MWMwY2U5OGIyYWIxOGEzYTFhMWYw
ZGZhYWM5ZDdkMmUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvYXJyYXktcHJvdG90eXBlLWV2ZXJ5LmpzCkBAIC0wLDAgKzEsMjkgQEAKK3Zh
ciByZXN1bHQgPSAwOworZnVuY3Rpb24gdGVzdDEoYSkgeworICAgIHJlc3VsdCA8PCAxOworICAg
IHJlc3VsdCsrOworICAgIHJldHVybiB0cnVlOworfQorZnVuY3Rpb24gdGVzdDIoYSxiKSB7Cisg
ICAgcmVzdWx0IF49IDM7CisgICAgcmVzdWx0ICo9IDM7CisgICAgcmV0dXJuIHRydWU7Cit9Citm
dW5jdGlvbiB0ZXN0MyhhLGIsYykgeworICAgIHJlc3VsdCBePSByZXN1bHQgPj4gMTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwordmFyIHJlc3VsdCA9IDA7Cit2YXIgYXJyYXkgPSBbXQorZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkKKyAgICBhcnJheVtpXSA9IDE7CisKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMTA7IGkrKykgeworICAgIGFycmF5LmV2ZXJ5KHRlc3QxKTsKKyAgICBhcnJh
eS5ldmVyeSh0ZXN0Mik7CisgICAgYXJyYXkuZXZlcnkodGVzdDMpOworfQorCitpZiAocmVzdWx0
ICE9IDE0Mjg4MTA0OTYpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0
OwpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDBiYTM2MTQxYzBmYTJj
MWNmODg1ZmRkNDM2Y2Q5NjdlMjY1ZTU1OTYuLjljNjY2YTFkN2VjZDY5NjU2YmM5ZGVlM2NkNmJh
MDcwNGQ4NDY3MjkgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxNC0wMi0xMSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gaW1wbGVtZW50IEpTIGJ1aWx0aW5zIGluIEpT
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc4ODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9ndGVzdC9DTWFrZUxpc3RzLnR4dDoK
KwogMjAxNC0wMi0xMCAgS3J6eXN6dG9mIFdvbGFuc2tpICA8ay53b2xhbnNraUBzYW1zdW5nLmNv
bT4KIAogICAgICAgICBBZGQgdGhlIENTU19TSEFQRV9JTlNJREUgdG8gQ01ha2UgZmVhdHVyZSBs
aXN0CmRpZmYgLS1naXQgYS9HTlVtYWtlZmlsZS5hbSBiL0dOVW1ha2VmaWxlLmFtCmluZGV4IDcz
ZmM0OTI4YzRkZDQ5YjU0OTg2OWI1MDY3OGM2YmRlNzRmNDQ3NjAuLjA4YzkxMTU0MjYwNTAwZGUz
ZmYwNGIwMjBjZTBkNjBmOThlOGNmZTggMTAwNjQ0Ci0tLSBhL0dOVW1ha2VmaWxlLmFtCisrKyBi
L0dOVW1ha2VmaWxlLmFtCkBAIC02OCw2ICs2OCw3IEBAIEFMTF9NT0ZJTEVTIDo9CiBkb21fYmlu
ZGluZ19pZGxzIDo9CiB3dGZfc291cmNlcyA6PQogamF2YXNjcmlwdGNvcmVfaF9hcGkgOj0KK2ph
dmFzY3JpcHRjb3JlX2J1aWx0aW5zX2pzX25vc291cmNlcyA6PQogamF2YXNjcmlwdGNvcmVfY3Bw
ZmxhZ3M6PQogamF2YXNjcmlwdGNvcmVfY2ZsYWdzIDo9CiBqYXZhc2NyaXB0Y29yZV9zb3VyY2Vz
IDo9Cg==
</data>
<flag name="review"
          id="247992"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>